Tài Liệu - Võ Tấn Dũng (votandung) chuong 4- ham bam tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớ...
HÀM BĂM HASH FUNCTIONS Giáo viên: Phạm Nguyên Khang pnkhang@cit.ctu.edu.vn Tổng quan Mục tiêu: hàm băm (H) tạo nhận dạng (fingerprint) cho tập tin, thông điệp hay khối liệu truyền nhằm kiểm tra tính tồn vẹn Các đặc điểm H áp dụng khối liệu có độ dài H tạo đầu có độ dài cố định H(x) tính tốn x tương đối dễ dàng, tạo điều kiện cho việc cài đặt phần cứng lẫn phần mềm thiết thực Với giá trị băm h, khơng thể tính x cho H(x)=h Hay H gọi hàm chiều Tính bền xung đột yếu (weak collision resistance): với giá trị x, khơng thể tính y ≠ x cho H(y) = H(x) Tính bền xung đột mạnh (strong collision resistance): Khơng thể tính cặp (x, y) cho H(x) = H(y) Giải thuật MD5 Phát triển Ron Rivest đại học MIT Input: thông điệp với độ dài Output: giá trị băm (message digest) 128 bits Giải thuật gồm bước thao tác khối 512 bits Giải thuật MD5 – Nguyên lý Bước 1: nhồi liệu Nhồi thêm bits cho liệu có độ dài l ≡ 448 mod 512 hay l = n * 512 + 448 (n,l nguyên) Luôn thực nhồi liệu liệu ban đầu có độ dài mong muốn Ví dụ, liệu có độ dài 448 nhồi thêm 512 bits để độ dài 960 bits Số lượng bit nhồi thêm nằm khoảng đến 512 Các bit nhồi gồm bit “1” bit theo sau Giải thuật MD5 – Nguyên lý Bước 2: thêm vào độ dài Độ dài khối liệu ban đầu biểu diễn dạng nhị phân 64-bit thêm vào cuối chuỗi nhị phân kết bước Nếu độ dài khối liệu ban đầu > 264, 64 bits thấp sử dụng, nghĩa giá trị thêm vào K mod 264 Kết có từ bước đầu khối liệu có độ dài bội số 512 Khối liệu biểu diễn: Bằng dãy L khối 512-bit Y0, Y1,…, YL-1 Bằng dãy N từ (word) 32-bit M0, M1, MN-1 Vậy N = L x 16 (32 x 16 = 512) Giải thuật MD5 – Nguyên lý Bước 3: khởi tạo đệm MD (MD buffer) Một đệm 128-bit dùng lưu trữ giá trị băm trung gian kết Bộ đệm biểu diễn ghi 32bit với giá trị khởi tạo dạng little-endian (byte có trọng số nhỏ từ nằm địa thấp nhất) sau: A = 67 45 23 01 B = EF CD AB 89 C = 98 BA DC FE D = 10 32 54 76 Các giá trị tương đương với từ 32-bit sau: A = 01 23 45 67 B = 89 AB CD EF C = FE DC BA 98 D = 76 54 32 10 Giải thuật MD5 – Nguyên lý Bước 4: xử lý khối liệu 512bit Trọng tâm giải thuật hàm nén (compression function) gồm “vòng” xử lý Các vòng có cấu trúc giống sử dụng hàm luận lý khác gồm F, G, H I F(X,Y,Z) = X ˄ Y ˅ ̚ X ˄ Z G(X,Y,Z) = X ˄ Z ˅ Y ˄ ̚ Z H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X ˅ ̚ Z) Mảng 64 phần tử tính theo cơng thức: T[i] = 232 x abs(sin(i)), i tính theo radian Kết vòng cộng (theo modulo 232 với đầu vào CVq để tạo CVq+1 Giải thuật MD5 – Nguyên lý Các giá trị bảng T T[1] = d76aa478 T[2] = e8c7b756 T[3] = 242070db T[4] = c1bdceee T[5] = f57c0faf T[6] = 4787c62a T[7] = a8304613 T[8] = fd469501 T[9] = 698098d8 T[10] = 8b44f7af T[11] = ffff5bb1 T[12] = 895cd7be T[13] = 6b901122 T[14] = fd987193 T[15] = a679438e T[16] = 49b40821 T[17] = T[18] = T[19] = T[20] = T[21] = T[22] = T[23] = T[24] = T[25] = T[26] = T[27] = T[28] = T[29] = T[30] = T[31] = T[32] = f61e2562 c040b340 265e5a51 e9b6c7aa d62f105d 2441453 d8a1e681 e7d3fbc8 21e1cde6 c33707d6 f4d50d87 455a14ed a9e3e905 fcefa3f8 676f02d9 8d2a4c8a T[33] = T[34] = T[35] = T[36] = T[37] = T[38] = T[39] = T[40] = T[41] = T[42] = T[43] = T[44] = T[45] = T[46] = T[47] = T[48] = fffa3942 8771f681 6d9d6122 fde5380c a4beea44 4bdecfa9 f6bb4b60 bebfbc70 289b7ec6 eaa127fa d4ef3085 4881d05 d9d4d039 e6db99e5 1fa27cf8 c4ac5665 T[49] = T[50] = T[51] = T[52] = T[53] = T[54] = T[55] = T[56] = T[57] = T[58] = T[59] = T[60] = T[61] = T[62] = T[63] = T[64] = f4292244 432aff97 ab9423a7 fc93a039 655b59c3 8f0ccc92 ffeff47d 85845dd1 6fa87e4f fe2ce6e0 a3014314 4e0811a1 f7537e82 bd3af235 2ad7d2bb eb86d391 Giải thuật MD5 – Nguyên lý Bước 5: Xuất kết Sau xử lý hết L khối 512-bit, đầu lần xử lý thứ L giá trị băm 128 bits Giải thuật MD5 tóm tắt sau: CV0 = IV CVq+1 = SUM32[CVq,RFI(Yq,RFH(Yq,RFG(Yq,RFF(Yq,CVq))))] MD = CVL-1 Với tham số IV: đệm gồm ghi ABCD Yq: khối liệu thứ q gồm 512 bits L: số khối 512-bit sau nhồi liệu CVq: đầu khối thứ q sau áp dụng hàm nén RFx: hàm luận lý sử dụng “vòng” (F,G,H,I) MD: message digest – giá trị băm SUM32: cộng modulo 232 Giải thuật MD5 – Hàm nén Mỗi vòng thực 16 bước, bước thực phép toán để cập nhật giá trị buffer ABCD, bước mô tả sau A B + ((A + F(B,C,D) + X[k] + T[i])