CHƯƠNG 1: TỔNG QUAN VỀ MÃ MD51.1 Những khái niệm về mật mã hóa Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm mục đíchkhông cho người khác có thể nắm bắt được n
Trang 1………
………
………
………
………
………
………
………
………
………
………
………
Điểm:……….( bằng chữ ………).
Ngày ………tháng ………năm……….
Giảng viên hướng dẫn
TS.Đặng Hoài Bắc
Trang 2Lời đầu tiên em xin được bày tỏ lòng biết ơn sâu sắc tới thầy giáo Th.S Lê Xuân Thành, thầy đã tận tình dạy dỗ và hướng dẫn em trong suốt mấy năm học vừa qua.
Em xin cảm ơn thầy giáo Đặng Hoài Bắc đã hướng dẫn, giúp đỡ em hoàn thành đồ án tốt nghiệp.
Em xin cảm ơn các thầy cô giáo trong khoa Điện Tử 1, Học Viện Công Nghệ Bưu Chính Viễn Thông Các thầy cô đã nhiệt tình dạy bảo, giúp đỡ chúng
Trang 3CHƯƠNG 1: TỔNG QUAN VỀ MÃ MD5 8
1.1 Những khái niệm về mật mã hóa 8
1.2 Các thuật toán mã hóa 9
1.2.1 Mã hóa đối xứng 9
1.2.2 Mã hóa bất đối xứng 10
1.3 Giới thiệu về hàm băm và mật mã 11
1.3.1 Tính chất 11
1.3.2 Ứng dụng 12
1.4 Hàm băm dựa trên mã khối 13
1.5 Hàm băm mật mã 14
1.6 Cấu trúc hàm băm 14
1.7 Ghép hàm băm mật mã 15
1.8 Hàm băm MD5 15
1.8.1 Giới thiệu 15
1.8.2 Khái niệm 15
1.8.3 Ứng dụng 16
1.8.4 Thuật giải 16
1.9 Mã MD5 (Message Digest) 17
1.9.1 Mô tả 17
1.9.2 Cách thực hiện 20
CHƯƠNG 2: TỔNG QUAN VỀ GIAO THỨC SIP 24
2.1 Giao thức SIP 24
2.2 Sự phát triển của giao thức SIP 24
2.3 Các thành phần trong mạng của SIP 25
2.3.1 Thành phần của SIP : 25
Bao gồm SIP User Agent ( UA ) và SIP server 25
2.3.1.1 SIP User Agent ( người dùng Agent) 25
2.3.1.2 SIP Server: 25
2.3.2 Các bản tin SIP mào đầu và đánh số 26
2.3.3 Khuôn dạng thông điệp 27
2.3.3.1 SIP response 27
2.3.3.2 SIP reques 31
2.3.4 Chức năng của SIP 31
2.3.4.1 Thiết lập và sửa đổi kết thúc phiên 31
2.3.4.2 Tính di động của người sử dụng 32
2.3.5 Thiết lập và hủy cuộc gọi 33
2.4 Ứng dụng của giao thức SIP 34
2.4.1 Ứng dụng SIP trong quá trình hội tụ mạng cố định và di động 34
2.4.1.1 Dịch vụ IPTV 34
2.4.1.2 Dịch vụ Precense 35
2.4.2 Ứng dụng an toàn SIP về bảo vệ lưu lượng VoIP 36
CHƯƠNG 3: ỨNG DỤNG CỦA MD5 TRONG GIAO THỨC SIP 39
3.1 Bảo mật trong SIP 39
3.1.1 Lỗ hổng trong SIP 39
3.1.1.1 Cướp đăng ký 39
3.1.1.2 Giả địa chỉ IP ,giả cuộc gọi 39
3.1.1.3 Tràn ngập thông điệp 40
3.1.1.4 Từ chối dịch vụ DoS 40
3.1.1.5 Spam qua điện thoại Internet Spam over Internet Telephony 40
Trang 43.1.2.2 Tính nguyên vẹn 41
3.1.2.3 Tính đảm bảo 41
3.2 MD5 trong SIP 42
3.2.1 HTTP Digest 42
3.2.2 S/MIME 46
3.2.2.1 Ký hiệu số 46
3.2.2.2 Kỹ thuật S/MIME 47
3.2.3 TLS 50
3.2.3.1 Ngăn xếp TLS 50
3.2.3.2 TLS Handshake (thủ tục bắt tay TLS) 51
3.2.3.3 Hoạt động của giao thức bản ghi TLS 54
3.2.3.4 Một số thí dụ về an ninh SIP kết hợp với TLS 55
3.2.4 IPSec 59
3.3 Lỗ hổng trong MD5 và cách khắc phục 61
3.3.1 Lỗ hổng trong MD5 61
3.3.2Cách khắc phục 61
3.3.2.1 Tổng quan 61
3.3.2.2 Brute forcing MD5 hashes 62
KẾT LUẬN 1
DANH MỤC TÀI LIỆU THAM KHẢO 2
Trang 5DANH MỤC CÁC KÝ HIỆU VÀ CHỮ KÝ VIẾT TẮT
Từ viết
tắt
HMAC Hash Message Authentication
Code
Mã nhận thực bản tin băm
IETF Internet Engineering Task Force Tổ chức đặc trách về kỹ thuật
Internet
IPTV Internet Protcol Television Giao thức truyền hình Internet
MAC Message Authentication Code Mã nhận thực bản tin
MIME Multipurpose Internet Mail
Extension
Mở rộng thư internet đa mục đích
RSAS/MIME Secure/ Multipurpose Internet
Mail Extension
MIME đảm bảo
SDP Session Description Protocol Giao thức mô tả phiên
SIP Session Initiation Protocol Giao thức khởi tạo phiên
SPIT Spam over Internet Telephony Spam qua thoại internet
TCP Transmission Control Protocol Giao thức điều khiển truyền tảiTLS Transmission Layer Security An ninh lớp truyền dẫn
Trang 6UAS User Agent Người dùng Agent Server
UDP User Datagram Protocol Giao thức dữ liệu đồ người sử
dụng URI Uniform Resourse Indicator Chỉ thị dạng thức tài nguyên
XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng
Trang 7DANH MỤC BẢNG
Bảng 3.1 Các thông số của header WWW-Authenticate 3
Bảng 3.2 Các thông sô trong heard Authorization 3
Bảng 3.3 Các thông số của header Authentication-Info 3
Bảng 3.4 Các header dùng với MIME 3
Bảng 3.5 Định nghĩa các thực thể trong S/MIME 3
Bảng 3.6 Giá trị thông số smime-type 3
Bảng 3.7 Các thông số bản tin ClientHello 3
Bảng 3.8 Mô tả thuật một số thuật toán trao đổi khóa dùng trong TLS 3
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Nguyên lý của hệ thống mã hóa đối xứng 3
Hình 1.2 Kênh nguyên lý trong hệ thống mã hóa đối xứng 3
Hình 1.3 Mô tả tóm tắt quá trình mật mã RSA 3
Hinh 1.4 Quá trình trong một vòng MD5 3
Hình 1.5 Sơ đồ vòng lặp chính của MD5 3
Hình 1.6 Sơ đồ 1 vòng lặp của MD5 3
Hình 1.7 Một ví dụ về mã MD5 3
Hinh 2.1 Chuyển hướng máy chủ 3
Hình 2.2 Những bản tin trao đổi giữa A và B để thiết lập một phiên 3
Hình 2.3 SIP reponse 3
Hình 2.4 SIP request 3
Hinh 2.5 Hoạt động của máy chủ Proxy sever 3
Hinh 2.6 Hoạt động của Redirect Server 3
Hình 2.7 Precense 3
Hinh 2.8 Kiểu kiến trúc dựa trên mạng SIP 3
Hình 3.1 Hoạt động nhận thực trong SIP 3
Hình 3.2 Mã hóa và kiểm tra kí hiệu số 3
Hình 3.3 Ngăn xếp giao thức TLS 3
Hình 3.4 Các bản tin trong handshake 3
Hình 3.5 Quá trình chia mảnh 3
Hình 3.6 TLS được dùng giữa 2 SIP UA trong các miền khác nhau 3
Hình 3.7 Kịch bản đăng kí SIP UA 3
Hình 3.8 Kịch bản lời mời giữa hai SIP UA trong các miền khác nhau 3
Hình 3.9 Kịch bản SIP UA mời một SIP UA theo kiểu peer-to-peer 3
Hình 3.10 Sử dụng Ipsec trong SIP 3
Hình 3.11 Các kích cỡ mật khẩu với thời gian tương ứng tìm ra nó 3
Hinh 3.12 Chi phí cho Brute Force với MD5 digest 3
Trang 9LỜI MỞ ĐẦU
Từ giữa đến cuối thập kỷ 90 SIP đơn thuần là một giao thức thiết lập phiênquảng bá cho internet sau đó người ta đã phát hiện ra rằng SIP rất thích hợp trong liênlạc cá nhân SIP còn cho phép thực hiện truyền thông liên doanh nghiệp đa phươngtiện, nó còn được sử dụng để hội tụ nhiều ứng dụng, thiết bị và cách thức truyền thôngmới để tạo ra những tính năng và khả năng mới
Ngày nay, các ứng dụng Công nghệ thông tin đã và đang ngày càng phổ biếnrộng rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống, kinh tế, xã hội Mọi côngviệc hàng ngày của chúng ta đều có thể thực hiện được từ xa với sự hổ trợ của máy vitính và mạng internet (từ việc học tập, giao dịch,… đến việc gửi thư) Tất cả thông tinliên quan đến những công việc này đều do máy vi tính quản lý và truyền đi trên hệthống mạng nên vấn để bảo mật được đưa lên hàng đầu Do đó em đã chọn đề tài “tìmhiểu thuật toán MD5 và ứng dụng trong giao thức SIP” với các nội dung:
Chương 1 : Tổng quan về mã MD5
Chương 2 : Tổng quan về giao thức SIP
Chương 3 : Ứng dụng của mã MD5 trong giao thức SIP
Hà nội, ngày 6 tháng 11 năm 2012
Sinh viên thực hiên
Đỗ Xuân Tân
Trang 10Đỗ Xuân Tân – D08XLTH1 Page 6
Trang 12CHƯƠNG 1: TỔNG QUAN VỀ MÃ MD5
1.1 Những khái niệm về mật mã hóa
Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm mục đíchkhông cho người khác có thể nắm bắt được nếu thiếu hiểu biết về khóa (key) để dịchngược
Với sự phát triển mạnh mẽ của mình, hầu hết các kênh thông tin đều lấy Internetlàm nền tảng để phát triển Điều tất yếu sẽ nảy sinh là vấn đề về bảo mật, một ngàynào đó, bạn bỗng nhận ra rằng, thông tin của bạn đang bị theo dõi Bạn sẽ ra sao nếubạn gửi một bức thư cho một người bạn của mình lại bị một kẻ lạ mặt nào đó xem trộm
và sửa đổi bức thư theo một nội dung khác, và còn tai hại hơn nữa nếu đó là một hợpđồng mang giá trị lớn Rất có thể tình cảm, tiền bạc hay nói rộng hơn là cả sự nghiệpcủa bạn đều sẽ bị đe dọa nếu thông tin không được đảm bảo Để vừa đảm bảo thông tinluôn kết nối, vừa đảm bảo yếu tố bảo mật của thông tin thì phương pháp tốt nhất là mãhoá thông tin Ngày nay việc mã hoá đã trở nên phổ cập, các quốc gia hay là các công
ty lớn đều có chính sách phát triển công cụ mã hoá riêng biệt để bảo vệ cho chínhthông tin của họ
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc Cácthuộc tính được yêu cầu là:
Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thôngtin chứa đựng trong dạng đã mật mã hóa của nó Nói khác đi, nó không thể cho phépthu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp
Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thayđổi trong quá trình truyền thông hay không
Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xemngười gửi đó có thực sự gửi thông tin đi hay không
Trang 131.2 Các thuật toán mã hóa
Hình 1.1 Nguyên lý của hệ thống mã hóa đối xứng.
Nguyên lý cơ bản của hệ thống mã hoá khoá đối xứng được chỉ ra trong (hình 1.1) Có thểthấy rằng bản chất của mã hoá đối xứng là cả phía thu và phía phát đều sử dụng cùng mộtkhoá bí mật (SK), và thuật toán ở cả hai phía cũng đều giống nhau Mã hoá đối xứng nhưtrên dựa vào việc phân phối khoá một cách bảo mật giữa cả hai phía Nhưng thực tế là khoá
chung đó lại phân phối tới tất cả mọi người trong mạng, và vấn đề “kênh bảo mật” đã làm
đau đầu những nhà quản trị mạng Điều nguy hiểm nhất là bất cứ ai chiếm được khoá trongquá trình phân phối cũng có toàn quyền truy nhập tới dữ liệu do khoá đó bảo vệ Do đó, quá
trình phân phối khoá phải trên “kênh bảo mật”, bất kể là kênh logic hay kênh vật lý
Hình 1.2 Kênh nguyên lý trong hệ thống mã hóa đối xứng.
Trang 141.2.2 Mã hóa bất đối xứng
Ngược lại với mã hoá đối xứng, thuật toán bất đối xứng hoạt động theo ít nhất
là hai khoá, hay chính xác hơn là một cặp khoá Khoá sử dụng được biết đến như là
khoá bí mật và khoá công khai và do đó có khái niệm mã hoá khoá công khai Mỗi
khoá được sử dụng để mã hoá hay giải mã, nhưng khác với thuật toán đối xứng, giá trịcủa khoá ở mỗi phía là khác nhau
Trong hệ thống RSA, dữ liệu được mã hoá bằng khoá bí mật (KXu) và chỉ cóthể giải mã được bằng khoá công khai của cặp khoá đó Cặp khoá này được tạo racùng nhau và do đó có liên quan trực tiếp với nhau Mặc dù có quan hệ với nhaunhưng nếu biết hay truy nhập được khoá công khai thì cũng không thể tính toán đượcgiá trị của khoá bí mật Do đó, công khai khoá mã cũng không làm ảnh hưởng tới tínhbảo mật của hệ thống, nó cũng chỉ như một địa chỉ thư tín còn khoá bí mật vẫn luônđược giữ kín Bản chất của mã hoá khoá công khai RSA là bất cứ bản tin mật mã nàođều có thể được nhận thực nếu như nó được mã hoá bằng khoá bí mật còn giải mãbằng khoá công khai Từ đó, phía thu còn xác định được cả nguồn gốc của bản tin Bất
cứ người nào giữ khoá công khai đều có thể nghe trộm bản tin mật
Mật mã RSA, được bắt đầu bằng thực hiện các phép tính để tạo ra một cặp khóa
mã sau đó thực hiện mã hóa và giải mã Bước đầu tiên trong việc tính các khóa là tìmhai số nguyên tố có kích cỡ đủ lớn phù hợp với ứng dụng Ta có bản tóm tắt quá trìnhmật mã RSA
m
e
me
Các số nguyên tố: p,q
m = p.qCác khóa mã d,e nguyên tố với p-1, q-1
d.e = 1 (module k)
k = BSCNN (p-1, q-1)Đoạn tin x
Hình 1.3 Mô tả tóm tắt quá trình mật mã RSA.
Thí dụ: Bên nhận chọn hai số nguyên tố là p = 5 ; q = 7
Tính m = p.q = 35
Tính p-1 và q-1 : p-1 = 4
Trang 15q-1 = 6
k = BSCNN (4,6) = 12
Chọn cặp mã e, d : Chọn 133 = e.d (modulo k) = e.d (modulo 12) = 1
Ta chọn e = 19 ; d = 7 Bên gửi mã hóa x và gửi cho người nhận y = xe (modulo m) Ta giả sử x = 2 ,thì ta tính được y = 219 (modulo 35) = 524288 = 23 Giá trị y=23 này được gửi cho bênnhận
Bên nhận giải mã bản tin nhận được:
x = yd (modulo 35) Thay số ta có mã giải được là x = 237 (modulo 35)=
3404825447(modulo 35) = 2
Như vậy kết quả giải mã hoàn toàn chính xác với kết quả đã gửi
1.3 Giới thiệu về hàm băm và mật mã
Hàm băm mật mã là một thủ tục tất định có đầu vào là khối dữ liệu bất kỳ và trả
về một xâu bit có độ dài cố định, gọi là giá trị băm (mật mã), mà bất kỳ sự thay đổi vôtình hay các ý trên dữ liệu sẽ thay đổi giá trị băm Dữ liệu đem mã hóa thường được gọi
là thông điệp (message), và giá trị băm đôi khi còn được gọi là tóm lược thông điệp(message digest) hay giá trị tóm lược (digest)
Hàm băm mật mã lý tưởng có 4 tính chất chính sau:
• Dễ dàng tính giá trị băm với bất kỳ thông điệp cho trước nào,
• Không thể tìm được một thông điệp từ một giá trị băm cho trước,
• Không thể sửa được một thông điệp mà không làm thay đổi giá trị băm của nó,
• Không thể tìm ra 2 thông điệp khác nhau mà có cùng giá trị băm
Hàm băm mật mã có rất nhiều ứng dụng trong an toàn thông tin, nhất là cho chữ
ký điện tử (Digital Signatures), mã nhận thực thông điệp (MACs – MessageAuthentication Codes), và một số dạng nhận thực khác Chúng cũng có thể sử dụngnhư các hàm băm thông thường, để đánh chỉ số dữ liệu trong bảng băm: như điểm chỉ,
để nhận diện dữ liệu lặp hay xác định tệp dữ liệu duy nhất: hay như checksums đểnhận biết sự thay đổi dữ liệu
1.3.1 Tính chất
Hầu hết các hàm băm mật mã được thiết kế với đầu xâu đầu vào có độ dài tùy ý
và kết quả đầu ra là một giá trị băm có độ dài cố định Hàm băm mật mã phải có thểchống lại được tất cả các kiểu tấn công phân tích đã biết Tối thiểu, nó phải có các tínhchất sau:
Trang 16Kháng tiền ảnh (Preimage resistance): cho trước một giá trị băm h, khó tìm rathông điệp m thỏa mã h = hash(m) Khái niệm như là hàm một chiều (one wayfunction) Các hàm thiếu tính chất này sẽ bị tổn thương bởi các tấn công tiền ảnh(preimage attacks).
Kháng tiền ảnh thứ 2 (Second preimage resistance): cho trước một đầu vào m1,khó có thể tìm ra đầu vào m2 khác (không bằng m1) thỏa mãn hash(m1) = hash(m2).Tính chất này đôi khi như là kháng va chạm yếu (weak collision resistance) Các hàmthiếu tính chất này sẽ bị tổn thương bởi các tấn công tiền ảnh thứ 2 (second preimageattacks)
Kháng va chạm (Collision resistance): khó có thể tìm ra 2 thông điệp m1 và m2 thỏamãn hash(m1) = hash(m2) Một cặp như vậy được gọi là một va chạm băm (mật mã),
và tính chất này đôi khi như là kháng va chạm mạnh (strong collision resistance) Tínhchất này yêu cầu rằng một giá trị băm tối thiểu cũng mạnh hơn yêu cầu kháng tiền ảnh,hơn nữa các va chạm có thể tìm được bởi tấn công ngày sinh (birthday attack)
Các tính chất trên nói lên rằng đối phương ác ý không thể thay hoặc sửa dữ liệuđầu vào mà không làm thay đổi giá trị tóm lược của nó Do đó, nếu 2 xâu có cùng mộtgiá trị tóm lược, thì người ta tin tưởng rằng chúng là giống nhau Một hàm có các tiêuchí này vẫn có thể có các tính chất không mong muốn Hiện tại các hàm băm mật mãthông thường vẫn bị tổn thương bởi các tấn công mở rộng độ dài (length-extensionattacks): cho trước h(m) và len(m) nhưng không biết m, bằng cách chọn m’ hợp lý, kẻtấn công có thể tính h(m || m’), với || ký hiệu là phép ghép xâu Tính chất này có thểđược sử dụng để phá vỡ các lược đồ xác thực đơn giản dựa vào hàm băm Cấu trúcHMAC (Hash Message Authentication Code) gặp phải các vấn đề như vậy
Về mặt lý tưởng, người ta có thể muốn các điều kiện mạnh hơn Kẻ tấn côngkhông thể tìm ra 2 thông điệp có các giá trị tóm lược gần giống nhau; hoặc luận ra bất
kỳ thông tin có ích nào về dữ liệu, mà chỉ cho trước giá trị tóm lược Do đó, hàm bămmật mã phải tiến gần tới hàm ngẫu nhiên (đến mức có thể) mà vẫn là tất định và tínhtoán hiệu quả
Thuật toán checksum, như là CRC32 và các CRC (Cyclic Redundancy Check)khác, được thiết kế nhiều yêu cầu yếu hơn, và nói chung không giống như là các hàmbăm mật mã Ví dụ, có một CRC đã được sử dụng kiểm tra tính toàn vẹn trong chuẩn
mã WEP (Wired Equivalent Privacy), nhưng đã có một tấn công khai thác tính tuyếntính của checksum
1.3.2 Ứng dụng
Một ứng dụng tiêu biểu của hàm băm mật mã sẽ như sau: Alice đặt ra một bàitoán khó cho Bob, và tuyên bố rằng cô ta đã giải được Bob sẽ phải cố gắng tự thựchiện, nhưng chưa dám chắc rằng Alice không giải sai Do đó, Alice viết ra lời giải của
Trang 17mình, gắn thêm một giá trị nonce ngẫu nhiên, tính giá trị băm của nó và cho Bob biếtgiá trị băm đó (giữ bí mật lời giải và giá trị nonce) Bằng cách này, khi Bob tìm ra lờigiải của mình vài ngày sau đó, Alice có thể chứng minh rằng cô ta có lời giải sớm hơnbằng cách tiết lộ giá trị nonce cho Bob (Đây là một ví dụ về một lược đồ cam kết đơngiản trong thực tế, vai trò của Alice và Bob thường sẽ là các chương trình máy tính, và
bí mật sẽ là một cái gì đó dễ dàng giả mạo hơn là một bài toán đó theo yêu cầu)
Một ứng dụng quan trọng của băm an toàn là xác minh tính toàn vẹn của thôngđiệp Xác định liệu có thay đổi nào đã được thực hiện đối với thông điệp (hoặc một tậptin), ví dụ, có thể được thực hiện bằng cách so sánh các giá trị tóm lược thông điệp đãtính toán trước, và sau đó, truyền đi (hoặc sự kiện nào đó)
Một giá trị tóm lược thông điệp cũng có thể phục vụ như là một phương tiệnnhận dạng một tập tin đáng tin cậy một số hệ thống quản lý mã nguồn, bao gồm Git,Mercurial và Monotone, sử dụng giá trị sha1sum của nhiều dạng nội dung khác nhau(nội dung tập tin, cây thư mục, vv) để nhận dạng chúng một cách duy nhất duynhất.Một ứng dụng khác liên quan tới việc xác thực mật khẩu Mật khẩu thường khôngđược lưu trữ dạng văn bản rõ, với các lý do hiển nhiên, mà thay bằng dạng giá trị tómlược Để xác thực người dùng, mật khẩu đại diện cho người sử dụng được băm và sosánh với giá trị băm lưu trữ Điều này đôi khi được gọi là phép mã hóa một chiều (one-way encryption) Đối với cả hai lý do bảo mật và hiệu suất, hầu hết các thuật toán chữ
ký số chỉ định rằng chỉ giá trị tóm lược của thông báo được "ký", chứ không phải toàn
bộ thông báo Các hàm băm cũng có thể được sử dụng trong việc tạo các bit giả ngẫunhiên (pseudorandom) Các giá trị băm còn được sử dụng để nhận dạng tập tin trênmạng chia sẻ peer-to-peer Ví dụ, trong một liên kết ed2k, một giá trị băm MD4-biếnthể được kết hợp với kích thước tập tin, cung cấp đủ thông tin để định vị các nguồn tậptin, tải các tập tin và xác nhận nội dung của nó (Trong máy tính, các liên kết ed2k làcác hyperlinks được sử dụng để biểu thị các tập tin được lưu trữ trong mạng eDonkeyP2P.) Các liên kết Magnet là một ví dụ khác Các giá trị băm tập tin như vậy thường làbăm đầu danh sách băm hoặc cây băm để có thêm nhiều tiện lợi
1.4 Hàm băm dựa trên mã khối
Có một số phương pháp sử dụng thuật toán mã khối để xây dựng một hàm bămmật mã, cụ thể nó là hàm nén một chiều (one-way compression function).Các phương pháp tương tự như các chế độ hoạt động của mã khối sử dụng cho phép
mã Tất cả các hàm băm đã biết, bao gồm MD4, MD5, SHA-1 và SHA-2 được xâydựng từ các thành phần giống mã khối, chúng được thiết kế riêng cho mục đích này,với thông tin phản hồi để bảo đảm rằng các hàm nhận được là không song ánh
Một thuật toán mật mã khối chuẩn như AES có thể được sử dụng thay chonhững thuật toán mật mã khối tùy chỉnh điều này thường phải trả giá về hiệu năng,nhưng có thể được thuận lợi khi hệ thống cần thực hiện băm mật mã và chức năng mật
Trang 18mã khác như mã hóa đều có thể sử dụng chung một thuật toán mã khối, nhưng bị hạnchế ở kích thước mã hoặc phần cứng phải phù hợp với nó, chẳng hạn như trong một số
hệ thống nhúng như thẻ thông minh
1.5 Hàm băm mật mã
Hàm băm mật mã là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳthành một dãy bit có độ dài cố định (tùy thuộc vào thuật toán băm) Dãy bit này đượcgọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện chothông điệp ban đầu Dễ dàng nhận thấy rằng hàm băm h không phải là một song ánh
Do đó, với thông điệp x bất kỳ, tồn tại thông điệp x’ ≠ x sao cho h(x)= h(x’) Lúc này,
ta nói rằng “có sự đụng độ xảy ra” Một hàm băm h được gọi là an toàn (hay “ít bịđụng độ”) khi không thể xác định được (bằng cách tính toán) cặp thông điệp x và x’thỏa mãn x≠x’ và h(x) = h(x’) Trên thực tế, các thuật toán băm là hàm một chiều, do
đó, rất khó để xây dựng lại thông điệp ban đầu từ thông điệp rút gọn Hàm băm giúpxác định được tính toàn vẹn dữ liệu của thông tin: mọi thay đổi, dù là rất nhỏ, trênthông điệp cho trước, ví dụ như đổi giá trị 1 bit, đều làm thay đổi thông điệp rút gọntương ứng Tính chất này hữu ích trong việc phát sinh, kiểm tra chữ ký điện tử, cácđoạn mã chứng nhận thông điệp, phát sinh số ngẫu nhiên, tạo ra khóa cho quá trình mãhóa…
Hàm băm là nền tảng cho nhiều ứng dụng mã hóa Có nhiều thuật toán để thựchiện hàm băm, trong số đó, phương pháp SHA-1 và MD5 thường được sử dụng kháphổ biến từ thập niên 1990 đến nay
Hàm băm MD4 (Message Digest 4) và MD5 (Message Digest 5):
• Hàm băm MD4 được Giáo sư Ron Rivest đề nghị vào năm 1990 Vào năm
1992, phiên bản cải tiến MD5 của thuật toán này ra đời
• Thông điệp rút gọn có độ dài 128 bit
• Năm 1995, Hans Dobbertin đã chỉ ra sự đụng độ ngay chính trong bản thânhàm nén của giải thuật (mặc dù chưa thật sự phá vỡ được giải thuật) Năm 2004, nhómtác giả Xiaoyun Wang, Dengguo Feng, Xuejia Lai và Hongbo Yu đã công bố kết quả
về việc phá vỡ thuật toán MD4 và MD5 bằng phương pháp tấn công đụng độ
1.6 Cấu trúc hàm băm
Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật như sau:
Cho trước một thông điệp M có độ dài bất kỳ Tùy theo thuật toán được sửdụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được thôngđiệp có độ dài là bội số của một hằng số cho trước Chia nhỏ thông điệp thành từngkhối có kích thước bằng nhau: M1, M2, …Ms
Trang 19Gọi H là trạng thái có kích thước n bit, f là “hàm nén” thực hiện thao tác trộnkhối dữ liệu với trạng thái hiện hành Khởi gán H0 bằng một vector khởi tạo nào đó Hi
= f(Hi-1,M) với i = 1, 2, 3, …, s Hs chính là thông điệp rút gọn của thông điệp M banđầu
1.7 Ghép hàm băm mật mã
Ghép các kết quả đầu ra từ nhiều hàm băm tạo ra tính kháng va chạm tối thiểucũng tốt như là độ mạnh nhất của thuật toán trong các kết nối Ví dụ, SSL sử dụngghép nối MD5 và SHA-1 để đảm bảo giao thức đó sẽ vẫn an toàn thậm chí nếu mộthàm băm bị phá vỡ
Tuy nhiên, với các hàm băm Merkle-Damgård, hàm ghép nối chỉ mạnh như các thànhphần tốt nhất, chứ không mạnh hơn Joux chỉ ra rằng 2-va chạm dẫn đến n-va chạmnếu dễ dàng tìm ra 2 thông điệp có cùng giá trị băm MD5, thì không khó để tìm thấynhiều thông điệp khi kẻ tấn công muốn lấy các giá trị băm MD5 giống nhau Trong số
n thông điệp với cùng giá trị băm MD5, có khả năng có được một va chạm SHA-1.Nhưng công việc cần thực hiện thêm là tìm va chạm SHA-1 (làm sao để tốt hơn tìmkiếm ngày sinh) là đa thức Lập luận này được tổng kết bởi Finney
Thông điệp ban đầu x sẽ được mở rộng thành dãy bit X có độ dài là bội số của
512 Một bit 1 được thêm vào sau dãy bit x, tiếp đến là dãy gồm d bit 0 và cuối cùng làdãy 64 bit l biểu diễn độ dài của thông điệp x Dãy gồm d bit 0 được thêm vào sao chodãy X có độ dài là bội số 512
1.8.2 Khái niệm
MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm
là 128bit Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụng rộng rảitrong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tínhnguyên vẹn của tập tin
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm bămtrước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2)
Trang 201.8.3 Ứng dụng
Md5 có 2 ứng dụng quan trọng:
MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo rằng tậptin tải về không bị hỏng Người sử dụng có thể so sánh giữa thông số kiểm tra phầnmềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5 Hệđiều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi hệ điềuhành Windows sử dụng phần mềm của hãng thứ ba
MD5 được dùng để mã hóa mật khẩu Mục đích của việc mã hóa này làbiến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó khôngthể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể hoặc phải mất mộtkhoãng thời gian vô tận (đủ để làm nản lòng các hacker)
1.8.4 Thuật giải
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước
cố định 128 bits Thông điệp đưa vào sẻ được cắt thành các khối 512 bits Thông điệpđược đưa vào bộ đệm để chiều dài của nó sẻ chia hết cho 512 Bộ đệm hoạt động nhưsau:
- Trước tiên chèn bit 1 vào cuối thông điệp
- Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit
- Phần còn lại sẽ được lấp đầy bởi một số nguyên 64 bit biểu diển chiều dài ban đầucủa thông điệp Thuật toán chính của MD5 hoạt động trên một bộ 128 bit Chia nhỏ nó
ra thành 4 từ 32 bit, kí hiệu là A,B,C và D Các giá trị này là các hằng số cố định Sau
đó thuật toán chính sẻ luân phiên hoạt động trên các khối 512 bit Mỗi khối sẻ phốihợp với một bộ Quá tŕnh xữ lư một khối thông điệp bao gồm 4 bước tương tự nhau,gọi là vòng (“round”) Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm mộtchiều F, phép cộng module và phép xoay trái…
Hình bên dưới mô tả một quá trình trong một vòng Có 4 hàm một chiều F cóthể sử dụng Mỗi vòng sử dụng một hàm khác nhau
Trang 21Hinh 1.4 Quá trình trong một vòng MD5
1.9.1 Mô tả
Đầu vào là những khối 512-bit, được chia cho 16 khối con 32-bit Đầu ra củathuật toán là một thiết lập của 4 khối 32-bit để tạo thành một hàm Băm 128-bit duynhất Đầu tiên, ta chia bức điện thành các khối 512-bit, với khối cuối cùng (đặt là x và
x <512-bit) của bức điện, chúng ta cộng thêm một bit 1 vào cuối của x, theo sau đó làcác bit 0 để được độ dài cần thiết (512 bit) Kết quả là bức điện vào là một chuỗi M
có độ dài chia hết cho 512, vì vậy ta có thể chia M ra thành các N word 32-bit (Nword này sẽ chia hết cho 16)
Bây giờ, ta bắt đầu tìm cốt của bức điện với 4 khối 32-bit A, B, C và D (đượcxem như thanh ghi) :
Trang 22Khối của bức điện
A B C D
Bức điện được chia ra thành nhiều khối 512-bit, mỗi khối 512-bit lại được chia
ra 16 khối 32-bit đi vào bốn vòng lặp của MD5 Giả sử ta đặt a, b, c và d thay cho A,
B, C và D đối với khối 512-bit đầu tiên của bức điện Bốn vòng lặp trong MD5 đều
có cấu trúc giống nhau Mỗi vòng thực hiện 16 lần biến đổi: thực hiện với một hàmphi tuyến của 3 trong 4 giá trị a, b, c và d sau đó nó cộng kết quả đến giá trị thứ 4,tiếp đó cộng với một khối con 32-bit và một hằng số Sau đó, nó dịch trái một lượngbit thay đổi và cộng kết quả vào một trong 4 giá trị a, b, c hay d Kết quả cuối cùng
là một giá trị mới được thay thế một trong 4 giá trị a, b, c hay d
Hình 1.5 Sơ đồ vòng lặp chính của MD5
Trang 23X Y Phép toán AND trên bit giữa X và Y
X Y Phép toán OR trên bit giữa X và Y
X Y Phép toán XOR trên bit giữa X và Y
¬Z))X Phép toán NOT trên bit của X
X + Y Phép cộng (modulo 232
)
X <<< s Các bit của X được dịch chuyển xoay vòng sang trái s vị trí (0 ≤ s < 32)
Những hàm này được thiết kế sao cho các bit tương ứng của X, Y và Z là độclập và không ưu tiên, và mỗi bit của kết quả cũng độc lập và ngang bằng nhau
Nếu Mj là một biểu diễn của khối con thứ j (j = 16) và <<<s là phép dịch tráicủa s bit, thì các vòng lặp có thể biểu diễn như sau:
FF(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + F(b,c,d) + Mj + ti)<<<s)
GG(a,b,c,d,Mj,s,ti)được biểu diễn a=b + ((a + G(b,c,d) + Mj + ti) <<<s)
HH(a,b,c,d,Mj,s,ti) được biểu diễn a=b+ ((a+H(b,c,d) + Mj + ti) <<< s)
Trang 24II(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + I(b,c,d) + Mj + ti) <<< s).
Trang 26Hình 1.7 Một ví dụ về mã MD5
Trang 28CHƯƠNG 2: TỔNG QUAN VỀ GIAO THỨC SIP
2.1 Giao thức SIP
Giao thức SIP (Secssion Initiation Protocol ) là giao thức báo hiệu điều khiển lớpứng dụng được dùng để thiết lập , duy trì , kết thúc các phiên truyền thông đa phươngtiện ( multimedia ) có một hoặc nhiều người tham gia Các phiên multimedia bao gồmthoại internet , hội nghị và các ứng dụng tương tự có liên quan đến các phương tiệntruyền đạt ( media ) như âm thanh , hình ảnh và dữ liệu SIP sử dụng các bản tin mời( INVITE ) để thiết lập các phiên và để mang các thông tin mô tả phiên truyền dẫn SIP
hỗ trợ các phiên đơn bá ( unicast ) và quảng bá( multicast ) tương ứng các cuộc gọiđiểm tới điểm và cuộc gọi đa điểm SIP là một giao thức để thiết lập các phiên truyềnthông Các phiên SIP baogồm :
− Hội họp đa phương tiện qua internet
− Các cuộc gọi điện thoại qua internet
− Các phiên video qua internet
− Phân phối đa phuong tiên
Các phần tử của SIP có thể liên lạc thông qua :
SIP là một giao thức mở rộng đơn giản
− Các phương tiện ( Methods ) – Định nghĩa về phiên truyền thông
− Khối mào đầu ( Headers ) – Mô tả về phiên truyền thông
− Phần thông tin báo ( Message Body ) – SDP , kư tự , XML
2.2 Sự phát triển của giao thức SIP
Đầu tiên SIP chỉ đơn thuần là một giao thức dùng để thiết lập phiên quảng báchoInternet2 ( từ giữa đến cuối thập kỉ 90 ) SIP được phát triển bởi SIP WorkingGrouptrong IETF Phiên bản đầu tiên được ban hành vào tháng 3 năm 1999 trong tài liệuRFC 2543 Sau đó, SIP trải qua nhiều thay đổi và cải tiến Phiên bản mới nhất hiện nayđược ban hành trong IETF RFC 3261 RFC 3261 hoàn toàn tương thích ngược với
Trang 29RFC 2543, do đó các hệ thống thực thi theo RFC 2543 hoàn toàn có thể sử dụng vớicác hệ thống theo RFC 3261.
Một bản tin SIP có hai phần, phần mào đầu và phần thân Phần thân cho phép phục
vụ các ứng dụng khác nhau một cách linh hoạt Ban đầu phần thân chỉ dùng để chuyểntải các tham số miêu tả phiên SDP như codec, địa chỉ IP đầu cuối, Phần thân được
sử dụng để mở rộng các ứng dụng của khác nhau của SIP ví dụ như SIP-T cho liên vậnPSTN-SIP-PSTN hoặc MSCML (Media Server Control MarkupLanguage) cho dịch
vụ hội nghị
2.3 Các thành phần trong mạng của SIP
2.3.1 Thành phần của SIP :
Bao gồm SIP User Agent ( UA ) và SIP server
2.3.1.1 SIP User Agent ( người dùng Agent)
SIP UA hoặc thiết bị đầu cuối là điểm cuối của dialog : SIP UA gửi và nhận cácyêu cầu và trả lời của SIP , nó là điểm cuối của luồng đa phương tiện và nó luôn làNgười dùng Equiment ( UE ) – bao gồm ứng dụng trong thiết bị đầu cuối hoặc ứngdụng phần cứng chuyên dụng UA gồm hai phần :
− Người dùng Agent Client ( UAC ) : ứng dụng của người gọi – khởi tạorequest
− Người dùng Agent Server ( UAS ) : chấp nhận , gửi lại , từ chối request
và gửi trả lời cho request đến thay mặt cho người sử dụng UA là thực thể SIP màtương tác với với người sử dụng Nó thường xuyên sử dụng giao diện với người sửdụng
Tuy nhiên , một vài hệ thống sử dụng SIP không trực tiếp kết nối với người sửdụng Ví dụ : B có thể gửi lại tất cả lời mời vào phiên được nhận từ nửa đêm đến 7 giờsáng đến máy trả lời SIP của B > máy này tự động thiết lập phiên trong thông điệp bảnghi
Nó cũng chứa UA – mà không nhất thiết lập duy trì tương tác với người sửdụng , nhưng vẫn trả lời mời hoặc chuyển lời mời trên dại diện của B
2.3.1.2 SIP Server:
SIP server : Cần phân biệt SIP Server và UA server cũng như mô hình server Ở đây , SIP server là một thực thể luận lý , một SIP server có thể có chức năngcủa nhiều loại server hay nói cách khác một SIP Server có thể hoạt động như cácserver khác nhau trong các trường hợp khác nhau Trong SIP Server có các thànhphần quan trọng như : Proxy Server , Redỉect Server , Location Server ,RegistrarServer , …
Trang 30client-Truy nhập dữ liệu và dịch vụ định vị để tìm địa chỉ của user và gửi trả về bảntin lớp 300 để thông báo thiết bị chuyển hướng bản tin tới địa chỉ khác – tự liên lạcthông qua địa chỉ trả về
c Registrar Sever : là sever nhận bản tin SIP REGISTER yêu cầu và cập nhậtthông tin từ bản tin request vào “ location database “ nằm trong Location Sever
d Location Sever Lưu thông tin trạng thái hiện tại của người dùng trong mạngSIP
Hinh 2.1 Chuyển hướng máy chủ
2.3.2 Các bản tin SIP mào đầu và đánh số
Dưới đây là các bản tin của SIP :
INVITE : bắt đầu thiết lập cuộc gọi bằng cách gửi bản tin mời đầu cuối khác tham gia.ACK : bản tin này khẳng định máy trạm đã nhận được bản tin trả lời bản tin
INVITEBYE BYE : bắt đầu kết thúc cuộc gọi
CANCEL : hủy yêu cầu nằm trong hàng đợi
REGISTER : đầu cuối SIP sử dụng bản tin này để đăng ký với máy chủ đăng ký.OPTION : sử dụng để xác định năng lực của máy chủ
Trang 31INFO : sử dụng để tải các thông tin như âm báo DTMF.
Hình 2.2 Những bản tin trao đổi giữa A và B để thiết lập một phiên
2.3.3 Khuôn dạng thông điệp
Thông điệp SIP gồm 3 phần: start line, header của thông điệp và body
Client gửi yêu cầu (request) và server trả lời bằng response Giao dịch SIP baogồm yêu cầu từ client, 0 hoặc nhiều provisional response và final response từ server
2.3.3.1 SIP response
Status line là dòng bắt đầu của response
Các bản tin đáp ứng được chia thành thành hai nhóm bao gồm 6 loại bản tin,mỗi bản dùng một mã trạng thái nằm trong một dải mã
More Ringing messages until user B answes…
INVITE100TRYING108RINGING
200 OKACKRTP voice call
BYE
…now user A decides to hang up
200 OK
Trang 32Hình 2.3 SIP reponse
• Provisional (1xx): Bản tin này dùng để chỉ thị tiến trình nhưng không kết thúc giao
dịch SIP (tìm kiếm, rung chuông, xếp hàng)
• Final (2xx, 3xx, 4xx, 5xx, 6xx): Bản tin này chỉ thị kết thúc giao dịch SIP.
1xx : Provisional – đã nhận yêu cầu và đang tiếp tục xử lý yêu cầu Tìm kiếm, rung
chuông, xếp hàng đợi, nó được phát khi quá trình xử lý chưa thể kết thúc ngay được.Phía phát cần phải dừng quá trình truyền các yêu cầu khi nhận được bản tin này
2xx : Success – Các yầu đã được xử lý thành công (nhận, hiểu và đã được tiếp nhận) 3xx: Redirection – Cần tiến hành thêm các hoạt động để có thể đáp ứng được các yêu
cầu Chúng được gửi bởi các Redirect Server
4xx: Client Error – Lỗi do phía Client, các yêu cầu sai cú pháp hoặc không đáp ứng
đúng yêu cầu của Server
5xx: Server Error – Lỗi phía Server, server bị sự cố và không đáp ứng được các yêu
cầu hợp lệ
Trang 336xx: Global Failure – Lỗi tổng thể, các yêu cầu không thể được đáp ứng tại bất kỳ
server nào
cụ thể :
1xx: Phản hồi thông tin :
100: Đang thử : Máy đựợc gọi đã tiếp nhận được yêu cầu bên gọi và gửi bản tin nàymang tính chất phản hồi để thử
180: Đổ chuông : Máy được gọi đổ chuông, và gửi bản tin chuông về cho bên gọi.181: Cuộc gọi đang chuyển hướng: Máy được gọi lập trình chuyển hướng đến mộtmáy khác trong khi nó đang bận hoặc không xử lý cuộc gọi của bên gọi
182 : Đang xếp hàng đợi : Chờ đợi vì có nhiều yêu cầu đến cùng lúc
183: Phiên đang tiến hành: Có phiên cuộc gọi khác đang đựơc tiến hành với máy đựợcgọi
3xx: Phản hồi chuyền hướng
300: Có nhiều lựa chọn
301: Đã dời đi vĩnh viễn
302: Tạm thời dời đi
305: Dùng proxy
380: Dịch vụ thay thế
4xx: Yêu cầu thất bại
400: Yêu cầu sai
401: Không được quyền: chỉ dùng với cơ quan đăng kiểm , các proxy phải dùng yêucầu cấp phép cho proxy 407
402: Yêu cầu trả tiền :Dự trữ để phòng trong tương lai: Ví dụ khi bạn dung điện thoại
di động, tiền trong tài khoản của bạn gần hết, trước khi thiết lập cuộc gọi theo yêu cầucủa bạn thì tổng đài sẽ thêm một thông báo:"Tài khoản của bạn sắp hết , xin vui lòngnạp thêm để có thê tiếp tục sử dụng"
403: Cấm
Trang 34404: Không tìm thấy người dùng:"Thuê bao quý khách vừa gọi Không có,xin vui lòngthử lại"
405: Phương thức không được phép
406: Không được chấp nhận
407: Cần có sự cấp phép cho proxy
408: Yêu cầu bị hết giờ : Không tìm thấy người dùng trong thời gian cho phép
410: Đã không còn , người dùng đã từng tồn tại nhưng bây giờ không còn được sửdụng nữa:"Thuê bao quý khách vừa gọi hiện đang tạm khóa, mong quý khách vui lònggọi lại sau"
413: Đơn vị yêu cầu quá lớn: "cuộc gọi không thể thực hiện được"
414: URI của yêu cầu quá tải :"mạng quá tải"415: kiểu phương tiện không được hỗtrợ: ví dụ : tin nhắn đa phương tiện không thể gửi đến và nhận từ một số máy di độngkhông hỗ trơn GPRS
416: Giản đồ URI không được hỗ trợ
420: Phần mở rộng không đúng: Sử dụng phần mở rộng của giao thức SIP không đúngnên máy chủ không hiểu được
421: Yêu cầu có phần mở rộng
423: Quãng quá ngắn
480: Tạm thời không hoạt động
481: Cuộc gọi/giao dịch không tồn tại
482: Phát hiện thấy lặp
483: Quá nhiều chặng trung tuyến
484: Địa chỉ không hoàn chỉnh
485: Tối nghĩa486: đang bận
487: Yêu cầu bị chấm dứt
488: Không được chấp nhận tại đây
491: Yêu cầu đang chờ
493: Không thể giải mã được : Không thể giải mă phần thân của S/MIME
5xx: Lỗi máy chủ
500: Lỗi bên trong máy chủ
501: Chưa khai báo: Phương thức yêu cầu SIP này chưa đựơc khai báo ở đây
502: Gateway sai
503: Dịch vụ không có
505: Phiên bản không được hỗ trợ: Máy chủ không hỗ trợ giao thức SIP này
513: Thông điệp quá lớn
Trang 35Hình 2.4 SIP request
Các trường header
Khuôn dạng của các trường header:
Tên của trường header: giá trị của trường header
Có các trường header bắt buộc và tùy chọn trong mỗi thông điệp Có 6 trườngheader có tính bắt buộc trong mỗi SIP thông điệp: To, From, Cseq, Call-ID, Max-Forward, Via
2.3.4 Chức năng của SIP
2.3.4.1 Thiết lập và sửa đổi kết thúc phiên
SIP độc lập với kiểu của phiên đa phương tiện được điều khiển và kỹ thuật sửdụng để mô tả phiên Nó rất hữu ích cho hội nghị, cuộc gọi audio, whiteboard đượcchia sẻ và các phiên chơi game Các phiên bao gồm các luồng RTP (Real