KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP MÔN AN TOÀN MẠNG MÁY TÍNH ĐỀ TÀI TÌM HIỂU ỨNG DỤNG CỦA HÀM BĂM VÀ XÂY DỰNG DEMO MỤC LỤC Chương 1 TỔNG QUAN VỀ HÀM BĂM 1 1 Định nghĩa hàm băm 1 1 2 Tính chất cơ.
KHOA CÔNG NGHỆ - THÔNG TIN BÁO CÁO BÀI TẬP MƠN AN TỒN MẠNG MÁY TÍNH ĐỀ TÀI TÌM HIỂU ỨNG DỤNG CỦA HÀM BĂM VÀ XÂY DỰNG DEMO MỤC LỤ Chương TỔNG QUAN VỀ HÀM BĂM 1.1 Định nghĩa hàm băm 1.2 Tính chất hàm băm 1.3 Vai trò hàm băm mật mã đại 1.4 Phân loại hàm băm 1.5 Một số giải thuật Băm thông dụng 1.5.1 Thuật toán MD5 (Message-Digest algorithm 5) 1.5.2 Thuật toán hàm băm SHA-1 .9 1.5.3 So sánh phương thức mã hóa MD5 SHA1 11 Chương ỨNG DỤNG CỦA HÀM BĂM 2.1 Xác thực mật 13 2.2 Xác thực thông điệp (Message authentication - Thơng điệp tóm tắt -message digests) 13 2.3 Bảo vệ tính tồn vẹn tập tin, thông điệp gửi qua mạng 13 2.3.1 Tạo chữ ký điện tử (Digital signatures) 14 Chương XÂY DỰNG DEMO 3.1 Mã hóa liệu 15 3.2 Tạo chữ ký số 17 TÀI LIỆU THAM KHẢO 21 DAH MỤC TỪ VIẾT TẮT STT Từ viết tắt RSA SHA MD5 DSS PKI Logs MD Nội dung Rivest Shamir Adleman Secure Hash Algorithm Message Digest Digital Signature Standard Public Key Infrastructure Log-in MD buffer Chương TỔNG QUAN VỀ HÀM BĂM 1.1 Định nghĩa hàm băm Hàm băm (Hash function) hàm toán học chuyển đổi thơng điệp đầu vào có độ dài thành dãy bit có độ dài cố định (tuỳ thuộc vào thuật toán băm) Dãy bit gọi thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu [9] Hàm băm (hash function) hàm chiều mà đưa lượng liệu qua hàm cho chuỗi có độ dài cố định đầu Hình 1.1 Ví dụ mơ tả hàm băm 1.2 Tính chất hàm băm Tính đụng độ: Theo ngun lý Diricle: Nếu có (n+1) thỏ bỏ vào n chuồng phải tồn chuồng mà có hai thỏ chung Rõ ràng với không gian giá trị băm nhỏ nhiều so với khơng gian tin mặt kích thước chắn tồn đụng độ, nghĩa có hai tin x # x’ mà giá trị băm chúng giống nhau, tức h(x) = h(x’) Sau xét dạng cơng có, từ rút tính chất hàm băm: - Tính chất 1: Hàm băm khơng va chạm yếu Hàm băm h không va chạm yếu cho trước điện x, tiến hành mặt tính tốn để tìm điện x’ ^ x mà h(x’) = h(x) Ví dụ: Người A gửi cho B (x, y) với y = SigA(h(x)) Nhưng đường truyền, tin bị lấy trộm Tên trộm, cách tìm thơng điệp x’ có h(x’) = h(x) mà x’ ^ x Sau đó, tên trộm đưa x’ thay x truyền tiếp cho người B Người B nhận xác thực thông tin đắn Để tránh công trên, hàm băm phải không va chạm yếu - Tính chất 2: Hàm băm khơng va chạm mạnh Hàm băm h không va chạm mạnh khơng có khả tính tốn để tìm hai thông điệp x x’ mà x ^ x’ h(x) = h(x’) Ví du: Đầu tiên, tên giả mạo tìm hai thơng điệp x’ x (x’ ^ x) mà có h(x’) = h(x) (ta coi thơng điệp x hợp lệ, cịn x’ giả mạo) Tiếp theo, tên trộm đưa cho ông A thuyết phuc ông kí vào tóm lược h(x) để nhận y Khi (x’, y) điện giả mạo hợp lệ Để tránh kiểu công này, hàm h phải thỏa mãn tính khơng va chạm mạnh - Tính chất 3: Hàm băm chiều Hàm băm h chiều cho trước tóm lược thơng báo z, khơng thể thực mặt tính tốn để tìm điện x cho h(x) = z Việc giả mạo chữ kí tóm lược thơng báo z ngẫu nhiên thường xảy với sơ đồ chữ kí Giả sử tên giả mạo tính chữ kí tóm lược thơng báo z ngẫu nhiên Sau tìm x cho z = h(x) Nếu làm (x,y) điện giả mạo hợp lệ Để tránh công này, h cần thoả mãn tính chất chiều [4] 1.3 Vai trò hàm băm mật mã đại Vai trò hàm băm mật mã giá trị băm coi ảnh đại diện thu gọn, gọi dấu vết (imprint), vân tay số (digital fingerprint), tóm lược thơng báo (message digest) xâu đầu vào, dùng định danh với xâu Các hàm băm thường dùng cho tồn vẹn liệu kết hợp với lược đồ chữ kí số Một lớp hàm băm riêng gọi mã xác thực thông báo (MAC) cho phép xác thực thông báo kĩ thuật mã đối xứng Các hàm băm lấy thông báo đầu vào tạo đầu xem là: - Mã băm (hash code) - Kết băm (hash result) - Hoặc giá trị băm (hash value) [9] 1.4 Phân loại hàm băm Hình 1.2 Phân loại hàm băm Danh sách hàm băm mật mã học: Bảng 3.1 Danh sách hàm băm mật mã học Thuật toán HAVAL Kích thước đầu 256/224/192 /160/128 Kích thước Kích trạng thái thước khối 256 1024 Độ dài 64 Kích thước world Xung đột 32 Có MD2 128 384 128 không khả lớn MD4 128 128 512 64 32 Có MD5 128 128 512 64 32 Có PANAMA 256 8736 256 khơng 32 Có lỗi RIPEMD 128 128 512 64 32 Có RIPEMD128/256 128/256 128/256 512 64 32 Không RIPEMD160/320 160/320 160/320 512 64 32 Không SHA-0 160 160 512 64 32 Không SHA-1 160 160 512 64 32 Có lỗi SHA-256/224 256/224 256 512 64 32 Không SHA-512/384 512/384 512 1024 128 64 Không Tiger192/160/128 192/160/128 192 512 64 64 Không WHIRL POOL 512 512 512 256 Không 1.5 Một số giải thuật Băm thơng dụng 1.5.1 Thuật tốn MD5 (Message-Digest algorithm 5) 1.5.1.1 Giới thiệu giải thuật MD5 MD5 hàm băm mật mã học sử dụng phổ biến với giá trị Hash dài 128-bit Là chuẩn Internet (RFC 1321), MD5 dùng nhiều ứng dụng bảo mật, dùng phổ biến để kiểm tra tính toàn vẹn tập tin Một bảng băm MD5 thường diễn tả số hệ thập lục phân 32 ký tự MD5 thiết kế Ronald Rivest vào năm 1991 để thay cho hàm băm trước đó, MD4 Vào năm 1996, người ta phát lỗ hổng MD5; chưa biết có phải lỗi nghiêm trọng hay khơng, chuyên gia mã hóa bắt đầu đề nghị sử dụng giải thuật khác, SHA-1 (khi bị xem khơng an tồn) Trong năm 2004, nhiều lỗ hổng bị khám phá khiến cho việc sử dụng giải thuật cho mục đích bảo mật bị đặt nghi vấn 1.5.1.2 Nguyên lý thuật toán MD5 [5] - 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 Hình 1.3 Nhồi liệu - 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) Hình 1.4 Thêm vào độ dài - 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 32-bit 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 - Bước 4: Xử lý khối liệu 512-bit 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 × abs(sin(i)), I tính theo radian Kết vòng cộng (theo modul 232 với đầu vào CVq để tạo CVq+1 Hình 1.5 Xử lý khối liệu 512-bit Bảng 3.2 Các giá trị T - 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 - 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 modul 232 1.5.2 Thuật toán hàm băm SHA-1 1.5.2.1 Giới thiệu hàm băm SHA-1 [1] Năm 1990, Ron Rivest sáng tạo hàm băm MD4 Sau năm 1992, ơng cải tiến MD4 phát triển hàm băm khác MD5 Năm 1993, Cơ quan An ninh Quốc gia Hoa Kỳ/Cục An ninh Trung ương (NSA) công bố,một hàm băm giống với MD5 gọi SHA Vào năm 1995, sau việc khắc phục lỗ hổng kỹ thuật, NSA thay đổi SHA trở thành hàm băm mật mã khác gọi SHA-1 SHA-1 (Sercue Hash Algorithm) thuật toán xây dựng thuật toán MD4, sử dụng rộng rãi Thuật toán SHA-1 tạo chuỗi mã băm có chiều dài cố định 160 bit từ chuỗi bit liệu đầu vào x có chiều dài tùy ý 1.5.2.2 Thuật tốn SHA-1 Input thơng điệp với độ dài tối đa 264 bits Output thông điệp rút gọn (message digest) có độ dài 160 bits Giải thuật gồm bước khối 512 bits: - Bước Nhồi liệu: Thông điệp nhồi thêm bit cho độ dài L mod 512 đồng dư 448 Thông điệp luôn nhồi thêm bit Số bit nhồi thêm phải nằm khoảng 1-512 Phần thêm vào cuối liệu gồm bit theo sau bit - Bước Thêm độ dài: Độ dài khối liệu ban đầu biểu diễn dạng nhị phân 64 bit thêm cuối chuỗi nhị phân mà ta thu bước Độ dài biểu diễn dạng nhị phân 64 bit không dấu Kết thu từ bước khối liệu có độ dài bội số 512 (Với 512 bit khối liệu) - Bước Khởi tạo đệm MD (MD buffer): Một đệm 160 bit dùng để lưu trữ giá trị băm trung gian kết Bộ đệm biểu diễn ghi 32-bit với giá trị khởi tạo dạng big-endian (byte có trọng số lớn từ nằm địa thấp nhất) có hai đệm Năm ghi đệm đánh đặt tên A, B,C,D,E tương tự cho đệm thứ hai H0, H1, H2, H3, H4 Có giá trị sau (Theo dạng Hex): H0=67452301 H2=EFCDAB89 H3= 98BADCFE H4= 10325476 H5= C3D2E1F0 - Bước Xử lý khối liệu 512 bit: + Trọng tâm giải thuật bao gồm bốn vòng lặp thực tất 80 bước + Bốn vòng lặp có cấu trúc nhau, khác hàm logic Ft Bảng 3.3 Hàm logic Ft Bước (0 ≤ t ≤ 19) Hàm Ft =F(B, C, Giá trị (B AND C) OR ((NOT B) AND D) D) (20 ≤ t ≤ 39) Ft =F(B, C, B XOR C XOR D D) (40 ≤ t ≤ 59) Ft =F(B, C, D) (60 ≤ t ≤ 79) Ft =F(B, C, (B AND C) OR (B AND D) OR (C AND D) B XOR C XOR D D) Mỗi vịng có đầu vào gồm khối 512-bit thời điệm 160 bit A, C, B, D, E Các thao tác cập nhật giá trị đệm Chia khối liệu nhồi thêm (cuối bước 2) thành 16 nhóm (mỗi nhóm gồm 32 bit) đặt theo thứ tự W0,W1, W15 Mở rộng từ 16 nhóm 32bit lên đến 80 nhóm 32 bit vịng lặp: For 16 to 79 let Wt= S1 (Wt - XOR Wt - XOR Wt - 14 XOR Wt - 16 ) Gán A=H0, B=H1, C=H2, D=H3, E=H4 Mỗi vòng lặp sử dụng theo công thức chung với số Kt = (0≤ t ≤ 79) sau: For t= to 79 TEMP= S5 (A)+Ft(B,C,D)+ E + Wt + Kt E=D; D=C; C= S30(B); B=A; A= TEMP Với: Kt = 5A827999(0 ≤ t ≤ 19) Kt = 6ED9EBA1(20 ≤ t ≤ 39) Kt = 8F1BBCDC(40 ≤ t ≤ 59) Kt = CA62C1D6(60 ≤ t ≤ 79) 10 Đầu vòng (bước 80) cộng với giá trị đệm để tạo chuỗi kết dài 160 bit H0 = H0 + A H1 = H1 + B H2 = H2 + C H3 = H3 + D H4 = H4 + E - Bước Xuất kết quả: Sau thao tác toàn N khối liệu (blocks) Kết khối thứ N chuỗi băm 160 bit H= H0 H1 H2 H3 H4 1.5.3 So sánh phương thức mã hóa MD5 SHA1 Giống nhau: Cả hai thuật tốn MD5, SHA1 giới khoa học máy tính coi "đa chức năng" Chúng nhận dạng liệu đầu vào, từ tin nhắn email hạt nhân (kernel) hệ điều hành, tạo dấu vân tay số Chỉ thay đổi ký tự bên file đầu vào tạo dấu vân tay hoàn toàn khác Các ứng dụng bảo mật dựa vào tính "dấu vân tay nhất" làm Tuy nhiên, kẻ cơng tạo dấu vân tay "Dolly" với dòng liệu đầu vào khác, dấu vân tay "sinh sản vô tính" khiến phần mềm bị gài backdoor nhận dạng nhầm Kết chúng tạo chữ ký giả để vét tài khoản ngân hàng người sử dụng không may MD5 SHA1 cộng thêm bit “giả” để tạo thành khối chia hết cho 512 bit, SHA1 sử dụng hàm phi tuyến f cho bốn vòng Cả MD5 SHA1 thuật toán gồm bước là: nhồi liệu, thêm độ dài, khởi tạo đệm, xử lí khối liệu 512 bits, xuất kết Tính đơn giản: hai mơ tả đơn giản dễ dàng cài đặt phần cứng phần mềm [10] Khác nhau: Thuật toán - MD5 sử dụng số cho bước biến đổi, SHA sử dụng số cho vòng biến đổi, số dịch số nguyên tố độ lớn từ (giống với MD4) - Trong hàm phi tuyến thứ MD5 có cải tiến so với MD4, SHA sử dụng lại hàm phi tuyến MD4, tức (X and Y) or (X and Z) or (Y and Z) - Trong MD5 với bước cộng kết bước trước Sự khác biệt SHA cột thứ cộng (không phải b, c hay d 11 MD5), điều làm cho phương pháp công Boer-Bosselaers SHA bị thất bại (Den Boer Bosselaers hai người phá thành cơng vịng cuối MD4) Input: MD5 chuỗi có độ dài cịn SHA1 chuỗi có độ dài tối đa 64 bits - Hao tốn tài nguyên - Tốc độ - Cả hai dựa phép toán 32 bit, thực tốt kiến trúc 32 bit - SHA1 thực nhiều 16 bước thao tác ghi 160 bit nên tốt độ thực chậm - Độ an tồn (khả chống cơng) - Để tạo thơng điệp có giá trị băm cho trước, cần 2128 thao tác với MD5 2160 với SHA1 - Để tìm thơng điệp có giá trị băm, cần 264 thao tác với MD5 280 với SHA1 [10] 12 Chương ỨNG DỤNG CỦA HÀM BĂM 2.1 Xác thực mật Mật thường không lưu dạng văn rõ (clear text), mà dạng tóm tắt Để xác thực người dùng, mật người nhập vào băm hàm Hash so sánh với kết băm lưu trữ 2.2 Xác thực thông điệp (Message authentication - Thông điệp tóm tắt -message digests) Giá trị đầu vào (tin nhắn, liệu ) bị thay đổi tương ứng giá trị băm bị thay đổi Do kẻ cơng phá hoại, chỉnh sửa liệu server biết [9] 2.3 Bảo vệ tính tồn vẹn tập tin, thơng điệp gửi qua mạng Hàm băm mật mã có tính chất hàm chiều Từ khối liệu hay giá trị đầu vào đưa giá trị băm Như biết tính chất hàm chiều Một người dù bắt giá trị băm họ suy ngược lại giá trị, đoạn tin nhắn băm khởi điểm Ví dụ việc xác định xem file hay thơng điệp có bị sửa đổi hay khơng thực cách so sánh tóm tắt tính trước sau gửi (hoặc kiện đó) Cịn dùng tóm tắt thông điệp làm phương tiện đáng tin cậy cho việc nhận dạng file Hàm băm thường dùng bảng băm nhằm giảm chi phí tính tốn tìm khối liệu tập hợp Giá trị băm đóng vai trị gần khóa để phân biệt khối liệu [9] 13 2.4 Tạo chữ ký điện tử (Digital signatures) Chữ ký số có cách đem mã hố tóm tắt thơng điệp khố bí mật người ký: Hình 2.6 Quy trình tạo chữ ký điện tử có kết hợp hàm băm Chứng thực: Chứng thực chữ ký điện tử Nếu kết băm giống nhau, thông điệp xác thực bit M hay SIG bị thay đổi, kết băm khác 14 Chương XÂY DỰNG DEMO Sử dụng chương trình Demo minh họa hàm thuật toán dùng chữ ký điện tử 3.1 Mã hóa liệu Bước 1: Nhấn vào nút “Mã hóa MD5 SHA1” Bước 2: Tại form “Mã hóa MD5 SHA1” nhập vào chuỗi muốn mã hóa 15 Bước 3: Chọn kiểu mã hóa số lần mã hóa Bước 4: Bấm vào nút “encrypt” để thực mã hóa 16 3.2 Tạo chữ ký số Người gửi: - Tạo khóa bí mật, khóa cơng khai, gửi khóa cơng khai cho người nhận Bước 1: Nhấn vào button “Chữ ký số” Bước 2: Nhập vào cặp số p, q với p, q hai số nguyên tố p > q Bước 3: Bấm vào nút tạo khóa Chương trình xử lý tạo số D, N, E, cặp (D, N) khóa bí mật mã hóa thơng điệp Cặp (N, E) khóa cơng khai để giải mã 17 ... TỔNG QUAN VỀ HÀM BĂM 1.1 Định nghĩa hàm băm 1.2 Tính chất hàm băm 1.3 Vai trò hàm băm mật mã đại 1.4 Phân loại hàm băm 1.5 Một số giải thuật Băm thông dụng ... là: - Mã băm (hash code) - Kết băm (hash result) - Hoặc giá trị băm (hash value) [9] 1.4 Phân loại hàm băm Hình 1.2 Phân loại hàm băm Danh sách hàm băm mật mã học: Bảng 3.1 Danh sách hàm băm mật... 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 modul 232 1.5.2 Thuật toán hàm băm SHA-1 1.5.2.1 Giới thiệu hàm băm SHA-1 [1]