Báo cáo môn cơ sở lý thuyết mật mã hàm băm MD5 và ứng dụng
Học viện Kĩ thuật Mật ma Báo cáo môn Cơ sở lí thuyết mật ma Hàm Băm MD5 Ứng Dụng Giáo viên: Hoàng Thu Phương Sinh viên: Lê Minh Tân Phạm Văn Thanh Trương Hồng Thanh Đặng Tiến Thành Tạ Việt Thảo Hà Nội 17/10/2013 Cơ sở lý thuyết Mật Ma Hàm Băm MD5 Ứng Dụng Nội dung I.Hàm băm chữ kí số II.Hàm băm MD5 Ứng dụng III.Thuật toán MD5 IV Tổng kết Hàm Băm MD5 Ứng Dụng I.Hàm băm chữ kí số Giới thiệu hàm băm Hàm băm các thuật toán khơng sử dụng khóa để ma hóa,nó có nhiệm vụ “lọc” (băm) thông điệp đưa vào theo thuật toán h chiều đó, đưa băm – văn đại diện – có kích thước cố định Do người nhận khơng biết nội dung hay độ dài ban đầu thông điệp đa băm hàm băm - - Giá trị hàm băm nhất, suy ngược lại nội dung thông điệp từ giá trị băm Việc sử dụng các hệ mật ma các sơ đồ chữ ký số, thường ma hóa ký số bit thơng tin, tỷ lệ với thời gian để ma hóa dung lượng thơng tin Thêm vào xảy trường hợp: Với nhiều thông điệp đầu vào khác nhau, sử dụng hệ mật ma, sơ đồ ký số giống (có thể khác nhau) cho kết ma, ký số giống (ánh xạ N-1: nhiều – một) Điều dẫn đến số rắc rối sau cho việc xác thực thông tin X Hệ mật ma hay Sơ đồ chữ kí số Bản ma hay Bản kí số Y Nguồn Đích Hình 1: Nhiều thơng điệp nguồn cho kết sau ma hóa/ ký số Vì vậy,giải pháp cho các vấn đề vướng mắc đến chữ ký số dùng hàm băm để trợ giúp cho việc ký số Các thuật toán băm với đầu vào các thơng điệp có dung lượng, kích thước tùy ý (vài KB đến vài chục MB thậm chí nữa) – các thơng điệp dạng văn bản, hình ảnh, âm thanh, file ứng dụng v.v… - với các thuật toán băm: MD2, MD4, MD5, SHA cho các băm đầu có kích thước cố định: 128 bit với dòng MD, 160 bit với SHA Như vậy, thông điệp kích thước tùy ý sau băm thu gọn thành băm – gọi các “văn đại diện” – có kích thước cố định (128 bit 160 bit) Đặc điểm: - Với thông điệp đầu vào tính văn đại diện – giá trị băm tương ứng – - Hai thơng điệp khác chắn có hai văn đại diện khác Khi đa có văn đại diện cho thông điệp, áp dụng các sơ đồ chữ ký số ký văn đại diện Tính chất hàm băm: Tính chất 1: Hàm hash h hàm không va chạm yếu nếu cho trước điện x, tiến hành mặt tính toán để tìm điện x ≠ x’ cho h (x’) = h(x) Tính chất 2: Hàm Hash h không va chạm mạnh nếu khơng có khả tính toán để tìm điênk x x’ cho x ≠ x’ h(x) = h(x’) Tính chất 3: Hàm Hash h chiều nếu cho trước tóm lược thơng báo z, khơng thể thực mặt tính toán để tìm điện x cho h(x) = z Chữ kí số Chữ kí số giao thức tạo hiệu tương tự chữ kí thực: - Nó dấu hiệu mà có người gửi tạo người khác nhận thấy người gửi Giống chữ kí thực, chữ kí số dùng để xác nhận nội dung thông bá Chữ kí số phải thỏa man điều kiện sau đây: - - Không thể giả mạo: Nếu P kí thông báo M chữ kí S(P, M) khơng tạo cặp [M, S(M,P)] Xác thực: Nếu R nhận cặp [M, S(M,P)] coi P R kiểm tra chữ kí có thực P hay khơng Chỉ P tạo chữ kí chữ kí “gắn chặt” với M Không thể thay đổi: sau phát M bị thay đổi bởi S, R bởi kẻ thu trộm Không thể sử dụng lại: Một thơng báo trước đa đưa lập tức bị R phát Cách tạo chữ kí số: Hình 2: Tạo chữ kí số - Cách thẩm định chữ kí số: Hình 3: Thẩm định chữ kí số II.Hàm băm MD5 Ứng dụng MD5 (Message-Digest algorithm 5) hàm băm để ma hóa với giá trị băm 128bit Từng xem chuẩn Internet, MD5 đa sử dụng rộng rai các chương trình an ninh mạng, thường dùng để kiểm tra tính nguyên vẹn tập tin Nó đa sử dụng rộng rai các chương trình an ninh mạng, thường dùng để kiểm tra tính nguyên vẹn tập tin MD5 thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước MD4 Có ứng dụng quan trọng : - MD5 sử dụng rộng rai thế giới phần mềm để đảm bảo tập tin tải không bị hỏng Người sử dụng so sánh thơng số kiểm tra phần mềm MD5 công bố với thông số kiểm tra phần mềm tải MD5 Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà phân phối, hệ điều hành Windows sử dụng phần mềm hang thứ ba - MD5 dùng để ma hóa mật Mục đích việc ma hóa biến đởi chuỗi mật thành đoạn ma khác, cho từ đoạn ma khơng thể lần trở lại mật Có nghĩa việc giải ma phải khoảng thời gian vô tận (đủ để làm nản lòng các hacker) III Thuật toán MD5 MD5 biến đởi thơng điệp có chiều dài thành khối có kích thước cố định 128 bits Thông điệp đưa vào sẻ cắt thành các khối 512 bits Thông điệp đưa vào đệm để chiều dài sẻ chia hết cho 512 Bộ đệm hoạt động sau: - Trước tiên chèn bit vào cuối thơng điệp - Tiếp hàng loạt bit Zero chiều dài nhỏ bội số 512 khoảng 64 bit - Phần lại sẻ lấp đầy bởi số nguyên 64 bit biểu diển chiều dài ban đầu thông điệp Thuật toán chính MD5 hoạt động 128 bit Chia nhỏ thành từ 32 bit, kí hiệu A,B,C D Các giá trị các số cố định Sau thuật toán chính sẻ luân phiên hoạt động các khối 512 bit Mỗi khối phối hợp với Quá trình xữ lý khối thơng điệp bao gồm bước tương tự nhau, gọi vòng (“round”) Mỗi vòng lại gồm 16 quá trình tương tự dựa hàm chiều F, phép cộng module phép xoay trái… Đây hình mơ tả quá trình vịng Có hàm chiều F sử dụng Mỗi vòng sử dụng hàm khác Hình 4: Quá trình vịng Mặc dù MD4 chưa bị phá, song các phiên yếu cho phép bỏ qua vòng thứ hay thứ ba bị phá khơng khó khăn Nghĩa dễ dàng tìm thấy các va chạm các phiên có hai vịng Phiên mạnh dịng MD MD5 cơng bố năm 1991 MD5 dùng bốn vòng thay cho ba chậm 30% so với MD4 (khoảng 0,9 MB/giây máy) Mơ tả tḥt tốn Input : Thơng điệp (văn bản) có độ dài tùy ý Output : Bản băm, đại diện cho thông điệp gốc, đồ dài cố định 128 bit Giả sử đầu vào xâu a có độ dài b bit (b 0) Bước 1: Khởi tạo các ghi Có ghi sử dụng để tính toán nhằm đưa các đoạn ma: A, B, C, D Bản tóm lược thông điệp xây dựng kết nối các ghi Mỗi ghi có độ dài 32 bit Các ghi khởi tạo giá trị hecxa word word word word A := 67 B := EF C := 98 D := 10 45 23 01 CD AB 89 BA DC FE 32 54 76 Bước 2+3: Xử lý thông điệp a 16 khối word, có nghĩa xử lý lúc 16 word = 512 bit (chia mảng M thành các khối 512 bit, đưa khối 512 bit vào mảng T[j]) Mỗi lần xử lý khối 512 bit Lặp lại N/16 lần Bước 4: Thực bốn vòng băm Các vòng 1, 2, dùng tương ứng ba hàm F, G, H I Mỗi hàm hàm boolean tính theo bit Chúng xác định sau: ∧ ∨ ∧ ∨ F(X, Y, Z) = (X Y) (( ¬ X) G(X, Y, Z) = (X Z) ⊕ ∧ ¬ Z) (Y ( Z)) ⊕ H(X, Y, Z) = X Y Z ⊕ ∧ ∨ ¬ I(X, Y, Z) = Y (X ( Z)) Hình 5: Quá trình tạo băm MD5 Bảng 1: Thuật toán MD5 A := 67 45 23 01 B := ef cd ab 89 C := 98 ba dc fe D := 10 32 54 76 for i := to n/16 - { for j := to 15 T[j] = M[16i + j]; AA := A; Mỗi lần xử lý 16 từ, từ 32 bit, tl: 512 bit BB := B; CC := C; DD := D; round_1(); round_2(); round_3(); round_4(); A = A + AA B = B + BB C = C + CC D = D + DD } Hình 6: Lược đồ thuật toán MD5 Bốn vòng MD5 hồn tồn khác Mỗi vịng (5, 6, 7, 8) gồm 16 word T MD5 sử dụng thêm mảng S[1 … 64] xây dựng từ hàm sin Với S[i], giá trị phần tử thứ i mảng S, tương đương với phần nguyên 4294967296 × abs(sin(i)), với i tính theo radian Vịng sử dụng giá trị mảng S[1 … 16] Vòng sử dụng giá trị mảng S[17 … 32] Vòng sử dụng giá trị mảng S[33 … 48] Vòng sử dụng giá trị mảng S[49 … 64] Ta có mảng S[1 … 64] sau (tất để ở hệ số 16): D76AA478 17 F61E2562 33 FFFA3942 49 F4292244 E8C7B756 18 D040B340 34 8771F681 50 432AFF97 242070DB 19 265E5A51 35 6D9D6122 51 AB9423A7 C1BDCEEE 20 E9B6C7AA 36 FDE5390C 52 FC93A039 F57C0FAF 21 D62F105D 37 A4BEEA44 53 655B59C3 4787C62A 22 02441453 38 4BDECFA9 54 8F0CCC92 A8304613 23 D8A1E681 39 F6BB4B60 55 FFEFF47D FD469501 24 E7D3FBC 40 BEBFBC70 56 85845DD1 698098D8 25 21E1CDE6 41 289B7EC6 57 6FA87E4F 10 8B44F7AF 26 C33707D6 42 EAA127FA 58 FE2CE6E0 11 FFFF5BB1 27 F4D50D87 43 D4EF3085 59 A3014314 12 895CD7BE 28 455A14ED 44 04881D05 60 4E0811A1 13 6B901122 29 A9E3E905 45 D9D4D039 61 F7537E82 14 FD987193 30 FCEFA3F8 46 E6DB99E5 62 BD3AF235 15 A679438E 31 676F02D9 47 1FA27CF8 63 2AD7D2BB 16 49B40821 32 8D2A4C8A 48 D4AC5665 64 EB86D391 Bảng 2: Giá trị số mảng S có 64 phần tử Các phép toán thực bốn vòng tạo các giá trị bốn ghi Cuối cùng, bốn ghi cập nhật ở 3.5 cách cộng ngược các giá trị lưu trước ở 2.3 Phép cộng xác định cộng các số nguyên dương, rút gọn theo modulo 232 Vòng (round_1()) Vòng (round_2()) A = (A + G(B, C, D) + T[1] + S[17]