19.10.2019 MẬT MÃ ỨNG DỤNG TRONG ATTT Bài 04 Hàm băm mật mã khóa cơng khai Hàm băm Tấn cơng từ điển Một số thuật tốn mật mã khóa cơng khai điển hình Giới thiệu hàm băm • Giá trị băm “đại diện” cho thông báo (văn bản) dài Hàm băm Tấn cơng từ điển Một số thuật tốn mật mã khóa cơng khai điển hình – Có thể gọi “bản tóm lược” thơng báo (message digest) • Một tóm lược thơng báo `` dấu vân tay số digital fingerprint'' tài liệu gốc Tóm lược thơng báo có độ dài tùy ý thành tóm lược có độ dài cố định h = H(M) Tính chất hàm băm Tính chất hàm băm • Băm mã hóa • Hàm nghiền Xin chào Đây ví dụ mã hóa Hàm băm hàm “nghiền” hay “tóm lược” ke NhbXBsZSBzZW50ZW5jZS B0byBzaG93IEVuY3J5cHR pb24KsZSBzZ E kd Xin chào Đây ví dụ mã hóa D NhbXBsZSBzZW50ZW5jZS B0byBzaG93IEVuY3J5cHR pb24KsZSBzZ Mã hóa hai chiều, yêu cầu khóa để mã hóa/giải mã Đây rõ dễ dàng đọc mà khơng cần dùng khóa Các câu dài văn nhiều h 52f21cf7c7034a20 17a21e17e061a863 – Băm chiều Khơng có khả tính ngược lại ( no 'de-hashing’) 19.10.2019 Tính chất hàm băm Có độ dài cố định Hàm băm Tấn cơng từ điển Một số thuật tốn mật mã khóa cơng khai điển hình Kháng tiền ảnh: Kháng tiền ảnh thứ hai: Kháng va chạm: Tấn công từ điển Tấn cơng từ điển 10 Tấn cơng từ ñiển Password mimoza violet210 luckyday mysecret vietninja p@$$w0rd khongbiet Tấn cơng từ điển Password mimoza violet210 luckyday p@$$w0rd p@$$w0rd p@$$w0rd khongbiet Hash 0xe3bca98abcd 0x938ff302c906 0xf2357adef39c 0x03aa8c0ff391 0xff0cea390de9 0x930000b8ca8 0xe3bca98abcd 0xac0bb81ca83 Precomputed Hash Table 11 Salt 0x7381a0f10c3 0xa0c110f139d 0x30ea0fd1d2f 0x31ffac10ca0 0xffa0cc103e1 0x00a10fc13d 0xd103c3f13f1 Hash 0x938ff3a2c906 0xf23e7adef39c 0x03aa8c01f391 0xff0cea3d0de9 0x930e00b8ca8 0xe3bc098abcd 0xac0bb80ca83 Sử dụng Salt chống lại Precomputed Hash Table 12 19.10.2019 Tấn cơng từ điển Sử dụng salt ngăn chặn việc dùng Precomputed Hash Table không ngăn Hàm băm Tấn công từ điển Một số thuật tốn mật mã khóa cơng khai điển hình chặn việc sử dụng từ điển Để chống lại công từ điển cần sử dụng mật khơng có từ điển! 13 Hàm băm ứng dụng Hàm băm ứng dụng Cơ sở toán học Cơ sở toán học Thuật toán Diffie-Hellman Thuật toán Diffie-Hellman Thuật toán El-Gamal Thuật toán El-Gamal Thuật tốn RSA Thuật tốn RSA 15 Nhóm hữu hạn Nhóm Nhóm (G, *) tập hợp G, với phép tốn hai ngơi * thỏa mãn: Tính đóng a, b ∈ G ⇒ a * b ∈ G Ví dụ: (Z, +) Tính kết hợp (a * b) * c = a *(b * c) ∀a, b, c ∈ G 16 nhóm Tồn phần tử trung hòa ∃e ∈ G : a * e = e * a = a ∀a ∈ G Nhóm hữu hạn nhóm có số phần tử hữu hạn |G| = q Nhóm cộng Zn G = {0, 1, 2, , n-1} Nhóm nhân Z*n Tồn phần tử nghịch đảo ∀a ∈ G ∃b ∈ G : a * b = b * a = e 17 18 19.10.2019 Phần tử sinh nhóm cyclic Phần tử sinh nhóm cyclic Nhóm cyclic nhóm mà tồn phần tử g, cho áp dụng liên tiếp phép toán * lên phần tử g thu tất phần tử khác nhóm Ví dụ 1: Z5 = {{0, 1, 2, 3, 4}, +} 2+2 2+2+2 2+2+2+2 2+2+2+2+2 2+2+2+2+2+2 = = = = = (mod (mod (mod (mod (mod 5) 5) 5) 5) 5) Ví dụ 2: Z*5 = {{1, 2, 3, 4}, ×} 3 3 ×3 ×3×3 ×3×3×3 ^1 = = = = (mod (mod (mod (mod 5) 5) 5) 5) Nếu n = 2, 4, pk, 2pk (p số ngun tố lẻ) Z*n nhóm cyclic 19 Phần tử g gọi phần tử sinh hay nguyên thủy 20 Thuật toán Diffie-Hellman Hàm băm ứng dụng Cơ sở toán học Thuật toán Diffie-Hellman Thuật toán El-Gamal Thuật toán RSA 22 21 Thuật toán Diffie-Hellman Hàm băm ứng dụng Cơ sở toán học Thuật toán Diffie-Hellman Thuật toán El-Gamal Thuật toán RSA 23 24 19.10.2019 Thuật tốn mã hóa ElGamal Thuật tốn mã hóa ElGamal Sinh cặp khóa cho Alice: Chọn số nguyên tố p, phần tử sinh g Z*p Chọn ngẫu nhiên x ∈ [1, p-1] Tính h = gx Khóa bí mật KSA = (p, g, x) Khóa cơng khai KPA = (p, g, h) Ví dụ: Thuật tốn mã hóa ElGamal Là thuật tốn mật mã khóa cơng khai * G = Z 29 ; q = 28; g = x = 15; h = g x = 815 = 21( mod 29 ) 25 Thuật tốn mã hóa ElGamal Mã hóa (thơng điệp m gửi cho Alice) Biết khóa cơng khai KPA = (p, g, h) Chọn ngẫu nhiên y ∈ [1, p-1] Tính khóa chung s = hy Bản mã: c = (c1, c2) = (gy, m⋅⋅s) Ví dụ: KS A = ( 29,8,15 ) ; c = (17, ) ; y = 7; s = h y = 217 = 12 s = c1x = 1715 = 12; c1 = g = = 17; c2 = ms = 10 ⋅12 = c = ( c1 , c2 ) = (17, ) 26 Thuật toán mã hóa ElGamal Giải mã (bởi Alice) Bản mã c = (c1, c2) Dùng khóa bí mật KSA = (p, g, x) Tính khóa chung s = c1x Bản rõ: m = c2⋅s-1 Ví dụ: KPA = ( 29,8, 21) ; m = 10; y KS A = ( 29,8,15 ) ; KPA = ( 29,8, 21) s −1 = 17; m = c2 s −1 = ⋅17 = 10 ( mod 29 ) 27 Lược đồ kí số ElGamal 28 Lược đồ kí số ElGamal Sinh cặp khóa cho Alice: Chọn số nguyên tố p, phần tử sinh g Z*p Chọn ngẫu nhiên x ∈ [1, p-1] Tính h = gx Khóa bí mật KSA = (p, g, x) Khóa cơng khai KPA = (p, g, h) Ví dụ: Lược đồ kí số ElGamal Tuy tên với thuật tốn mã hóa ElGamal chất thuật toán khác biệt * G = Z 29 ; q = 28; g = x = 15; h = g x = 815 = 21( mod 29 ) 29 KS A = ( 29,8,15 ) ; KPA = ( 29,8, 21) 30 19.10.2019 Lược ñồ kí số ElGamal Lược đồ kí số ElGamal Kiểm tra chữ kí (bởi ai) Thơng điệp m, sử dụng KPA = (p, g, h) Kiểm tra: 0< r