(NB) Bài giảng An toàn và bảo mật thông tin: Phần 1 - Trần Văn Minh tập trung trình bày các vấn đề cơ bản về giới thiệu về an toàn và bảo mật thông tin; mã hóa đối xứng căn bản; mã hóa đối xứng hiện đại;... Mời các bạn cùng tìm hiểu và tham khảo nội dung thông tin tài liệu.
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN - - BÀI GIẢNG AN TỒN VÀ BẢO MẬT THƠNG TIN (Lưu hành nội bộ) Nha Trang, tháng năm 2008 BÀI GIẢNG AN TỒN VÀ BẢO MẬT THƠNG TIN Biên soạn: Trần Minh Văn (Tài liệu tham khảo chính: Cryptography and Network Security Principles and Practices, 4th Edition William Stallings Prentice Hall 2005) MỤC LỤC CHƢƠNG GIỚI THIỆU VỀ AN TOÀN VÀ BẢO MẬT THÔNG TIN 1.1 Giới thiệu 1.2 Bảo vệ thông tin q trình truyền thơng tin mạng 1.2.1 1.2.2 1.2.3 1.2.4 Các loại hình công Yêu cầu hệ truyền thông tin an toàn bảo mật 10 Vai trò mật mã việc bảo mật thông tin mạng 11 Các giao thức (protocol) thực bảo mật 11 1.3 Bảo vệ hệ thống khỏi xâm nhập phá hoại từ bên 11 1.4 Câu hỏi ôn tập 13 CHƢƠNG MÃ HÓA ĐỐI XỨNG CĂN BẢN 14 2.1 Mã hóa Ceasar 14 2.2 Mơ hình mã hóa đối xứng (Symmetric Ciphers) 15 2.3 Mã hóa thay đơn bảng (Monoalphabetic Substitution Cipher) 17 2.4 Mã hóa thay đa ký tự 19 2.4.1 2.4.2 Mã Playfair 19 Mã Hill 20 2.5 Mã hóa thay đa bảng (Polyalphabetic Substitution Cipher) 21 2.6 One-Time Pad 23 2.7 Mã hoán vị (Permutation Cipher) 24 2.8 Tổng kết 25 2.9 Câu hỏi ôn tập 27 2.10 Bài Tập 27 2.11 Bài Tập Thực Hành 28 CHƢƠNG MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI 30 3.1 Mã dòng (Stream Cipher) 31 3.1.1 3.1.2 3.2 Mã khối (Block Cipher) 37 3.2.1 3.2.2 3.2.3 3.3 A5/1 32 RC4 34 Mã khối an toàn lý tưởng 37 Mạng SPN 38 Mơ hình mã Feistel 38 Mã TinyDES 40 3.3.1 Các vòng TinyDES 40 3.3.2 3.3.3 3.3.4 3.4 Mã DES (Data Encryption Standard) 43 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.5 Hoán vị khởi tạo hoán vị kết thúc: 44 Các vòng DES 45 Thuật tốn sinh khóa DES 46 Hiệu ứng lan truyền (Avalanche Effect) 47 Độ an toàn DES 48 Một số phương pháp mã khối khác 49 3.5.1 3.5.2 3.6 Thuật tốn sinh khóa TinyDES 42 Ví dụ TinyDES 42 Khả chống phá mã known-plaintext TinyDES 42 Triple DES 49 Advanced Encryption Standard (AES) 49 Các mô hình ứng dụng mã khối 50 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 Electronic Codebook – ECB 50 Cipher Block Chaining – CBC 51 Counter – CTR 53 Output Feedback – OFB 53 Cipher Feedback – CFB 54 3.7 Tính chứng thực (authentication) mã hóa đối xứng 55 3.8 Tính khơng thối thác (non-repudiation) mã hóa đối xứng 56 3.9 Trao đổi khóa bí mật trung tâm phân phối khóa 56 3.10 Câu hỏi ôn tập 58 3.11 Bài tập 58 3.12 Bài tập thực hành 59 CHƢƠNG MÃ HĨA KHĨA CƠNG KHAI 61 4.1 Lý thuyết số 63 4.1.1 4.1.2 4.1.3 4.2 RSA 66 4.2.1 4.2.2 4.3 Nguyên tắc thực RSA 66 Ví dụ RSA 67 Độ phức tạp tính toán RSA 68 4.3.1 4.3.2 4.4 Một số khái niệm 63 Định lý Fermat 64 Phép logarit rời rạc 64 Phép tính mã hóa/giải mã 68 Phép tính sinh khóa 70 Độ an toàn RSA 70 4.5 Bảo mật, chứng thực khơng thối thác với mã hóa khóa cơng khai 71 4.6 Trao đổi khóa 72 4.6.1 4.6.2 Trao đổi khóa cơng khai 73 Dùng mã hóa khóa cơng khai để trao đổi khóa bí mật 74 4.7 Phương pháp trao đổi khóa Diffie – Hellman 75 4.8 Câu hỏi ôn tập 76 4.9 Bài tập 77 4.10 Bài tập thực hành 77 CHƢƠNG MÃ CHỨNG THỰC THÔNG ĐIỆP, HÀM BĂM 79 5.1 Mã chứng thực thông điệp 80 5.2 Hàm băm – Hash function 82 5.2.1 5.2.2 5.2.3 Bài toán ngày sinh nhật 82 Hàm băm MD5 SHA-1 84 HMAC 92 5.3 Hàm băm chữ ký điện tử 95 5.4 Một số ứng dụng khác hàm băm 92 5.4.1 5.4.2 5.4.3 Lưu trữ mật 92 Đấu giá trực tuyến 93 Download file 94 5.5 Câu hỏi ôn tập 96 5.6 Bài tập 97 5.7 Bài tập thực hành 97 CHƢƠNG GIAO THỨC 100 6.1 Phát lại thông điệp (Replay Attack) 100 6.2 Giao thức bảo mật 101 6.2.1 6.2.2 Định danh trao đổi khóa phiên dùng mã hóa đối xứng với KDC 101 Định danh trao đổi khóa phiên dùng mã hóa khóa cơng khai 102 6.3 Câu hỏi ôn tập 103 6.4 Bài tập 103 CHƢƠNG MỘT SỐ ỨNG DỤNG THỰC TIỄN 105 7.1 Giới thiệu 105 7.2 Chứng thực X.509 105 7.2.1 7.2.2 7.2.3 Cấu trúc chứng thực 105 Phân cấp chứng thực 108 Các định dạng file chứng X.509 109 7.3 Giao thức bảo mật web Secure Socket Layer version - SSLv3 110 7.3.1 7.3.2 7.3.3 7.4 Giao thức bắt tay - SSL Handshaking Protocol 113 Giao thức truyền số liệu - SSL Record Protocol 116 SSL Session SSL Connection 117 Giao thức bảo mật mạng cục Keberos 117 7.4.1 Keberos version 117 7.5 Câu hỏi ôn tập 119 7.6 Bài tập thực hành 120 CHƢƠNG PHÁ MÃ VI SAI VÀ PHÁ MÃ TUYẾN TÍNH 121 8.1 Phá mã vi sai (Differential Cryptanalysis) 121 8.2 Phá mã tuyến tính (Linear Cryptanalysis) 126 8.3 Kết luận nguyên tắc thiết kế mã khối 128 CHƢƠNG ADVANCED ENCRYPTION STANDARD – AES 129 9.1 Nhóm, vành, trường 129 9.1.1 9.1.2 9.1.3 Nhóm (Group) 129 Vành (Ring) 130 Trường (Field) 130 9.2 Số học modulo trường hữu hạn GF(p) 131 9.3 Số học đa thức trường hữu hạn GF(2n) 132 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.3.7 9.4 Phép tốn đa thức thơng thường 132 Đa thức định nghĩa tập Zp 133 Phép modulo đa thức 134 Trường hữu hạn GF(2n) 134 Ứng dụng GF(2n) mã hóa 136 Tính toán GF(2n) 137 Tính tốn GF(2n) với phần tử sinh 138 Mã hóa AES 139 9.4.1 9.4.2 9.4.3 9.4.4 9.4.5 9.4.6 Substitute bytes 141 Shift rows 145 Mix columns 145 Add row key 147 Expand key 147 Kết luận 148 CHƢƠNG 10 MÃ HÓA ĐƢỜNG CONG ELLIPTIC 149 10.1 Đường cong Elliptic số thực 149 10.2 Đường cong Elliptic trường Zp 152 10.3 Đường cong Elliptic trường GF(2m) 155 10.4 Đường cong Elliptic mã hóa - ECC 156 10.4.1 Trao đổi khóa EC Diffie-Hellman 156 10.4.2 Mã hóa giải mã EC 157 10.4.3 Độ an toàn ECC so với RSA 158 10.5 Chuẩn chữ ký điện tử (Digital Signature Standard – DSS) 158 CHƢƠNG 11 MỘT SỐ VẤN ĐỀ AN TOÀN BẢO MẬT 161 11.1 Giấu tin ảnh số 161 11.2 Lỗi phần mềm 162 11.2.1 Tràn đệm (Buffer Overflow) 162 11.2.2 Chèn câu lệnh SQL (SQL Injection) 166 11.2.3 Chèn câu lệnh script (Cross-site Scripting XSS) 168 11.3 Bài tập thực hành 170 PHỤ LỤC 172 Chi Tiết S-box mã hóa DES 172 PHỤ LỤC 174 Thuật toán Euclid 174 Phương pháp kiểm tra số nguyên tố lớn Miller-Rabin 176 Định lý số dư Trung Hoa 179 Cài đặt giao thức SSL cho Web server IIS 181 TÀI LIỆU THAM KHẢO 182 CHƢƠNG GIỚI THIỆU VỀ AN TOÀN VÀ BẢO MẬT THÔNG TIN 1.1 Giới thiệu Trước cơng nghệ máy tính chưa phát triển, nói đến vấn đề an tồn bảo mật thơng tin (Information Security), thường hay nghĩ đến biện pháp nhằm đảm bảo cho thông tin trao đổi hay cất giữ cách an tồn bí mật Chẳng hạn biện pháp như: Đóng dấu ký niêm phong thư để biết thư có chuyển ngun vẹn đến người nhận hay khơng Dùng mật mã mã hóa thơng điệp để có người gửi người nhận hiểu thơng điệp Phương pháp thường sử dụng trị quân (xem chương 2) Lưu giữ tài liệu mật két sắt có khóa, nơi bảo vệ nghiêm ngặt, có người cấp quyền xem tài liệu Với phát triển mạnh mẽ công nghệ thông tin, đặt biệt phát triển mạng Internet, ngày có nhiều thơng tin lưu giữ máy vi tính gửi mạng Internet Và xuất nhu cầu an tồn bảo mật thơng tin máy tính Có thể phân loại mơ hình an tồn bảo mật thơng tin máy tính theo hai hướng sau: 1) Bảo vệ thơng tin q trình truyền thơng tin mạng (Network Security) 2) Bảo vệ hệ thống máy tính, mạng máy tính, khỏi xâm nhập phá hoại từ bên (System Security) Phần sau trình bày đặc điểm hai mơ hình 1.2 Bảo vệ thơng tin q trình truyền thơng tin mạng 1.2.1 Các loại hình công Để xem xét vấn đề bảo mật liên quan đến truyền thông mạng, lấy bối cảnh sau: có ba nhân vật tên Alice, Bob Trudy, Alice Bob thực trao đổi thơng tin với nhau, cịn Trudy kẻ xấu, đặt thiết bị can thiệp vào kênh truyền tin Alice Bob Sau loại hành động công Trudy mà ảnh hưởng đến trình truyền tin Alice Bob: 1) Xem trộm thông tin (Release of Message Content) Trong trường hợp Trudy chặn thông điệp Alice gửi cho Bob, xem nội dung thông điệp Trudy Đọc nội dung thông điệp Alice Network Alice Bob Hình 1-1 Xem trộm thơng điệp 2) Thay đổi thơng điệp (Modification of Message) Trudy chặn thông điệp Alice gửi cho Bob ngăn không cho thông điệp đến đích Sau Trudy thay đổi nội dung thông điệp gửi tiếp cho Bob Bob nghĩ nhận thông điệp nguyên ban đầu Alice mà chúng bị sửa đổi Trudy Sửa thông điệp Alice gửi cho Bob Network Alice Bob Hình 1-2 Sửa thơng điệp 3) Mạo danh (Masquerade) Trong trường hợp Trudy giả Alice gửi thông điệp cho Bob Bob điều nghĩ thông điệp Alice Trudy Trudy giả Alice gởi thông điệp cho Bob Network Alice Bob Hình 1-3 Mạo danh 4) Phát lại thơng điệp (Replay) Trudy chép lại thông điệp Alice gửi cho Bob Sau thời gian Trudy gửi chép cho Bob Bob tin thông điệp thứ hai từ Alice, nội dung hai thông điệp giống Thoạt đầu nghĩ việc phát lại vô hại, nhiên nhiều trường hợp gây tác hại không so với việc giả mạo thơng điệp Xét tình sau: giả sử Bob ngân hàng Alice khách hàng Alice gửi thông điệp đề nghị Bob chuyển cho Trudy 1000$ Alice có áp dụng biện pháp chữ ký điện tử với mục đích khơng cho Trudy mạo danh sửa thông điệp Tuy nhiên Trudy chép phát lại thơng điệp biện pháp bảo vệ khơng có ý nghĩa Bob tin Alice gửi tiếp thông điệp để chuyển thêm cho Trudy 1000$ Trudy Sao chép thông điệp Alice gửi lại sau cho Bob Network Alice Bob Hình 1-4 Phát lại thơng điệp 1.2.2 u cầu hệ truyền thơng tin an tồn bảo mật Phần trình bày hình thức công, hệ truyền tin gọi an tồn bảo mật phải có khả chống lại hình thức cơng Như hệ truyền tin phải có đặt tính sau: 1) Tính bảo mật (Confidentiality): Ngăn chặn vấn đề xem trộm thơng điệp 2) Tính chứng thực (Authentication): Nhằm đảm bảo cho Bob thông điệp mà Bob nhận thực gửi từ Alice, không bị thay đổi trình truyền tin Như tính chứng thực ngăn chặn hình thức cơng sửa thông điệp, mạo danh, phát lại thông điệp 3) Tính khơng từ chối (Nonrepudiation): xét tình sau: Giả sử Bob nhân viên mơi giới chứng khốn Alice Alice gởi thông điệp yêu cầu Bob mua cổ phiếu công ty Z Ngày hôm sau, giá cổ phiếu công ty giảm 50% Thấy bị thiệt hại, Alice nói Alice khơng gửi thơng điệp quy trách nhiệm cho Bob Bob phải có chế để xác định Alice người gởi mà Alice từ chối trách nhiệm Khái niệm chữ ký giấy mà người sử dụng ngày chế để bảo đảm tính chứng thực tính khơng từ chối Và lĩnh vực máy tính, người ta thiết lập chế vậy, chế gọi chữ ký điện tử 10 N x 512 bít 64 bít Message 512 bít 512 bít M1 M2 512 IV (H0) 128 F 128 100…00 Length 512 bít MN … … 512 512 ⊞ H1 F 128 N block ⊞ H2 … HN-1 F 128 ⊞ HN Hash value Trước tiên thông điệp thêm dãy bit padding 100….00 Sau thêm vào chiều dài (trước padding) thơng điệp biểu diễn 64 bít Như chiều dài dãy bít padding chọn cho cuối thơng điệp chia thành N block 512 bít M1, M2, … , MN Q trình tính giá trị băm thơng điệp q trình lũy tiến Trước tiên block M1 kết hợp với giá trị khởi tạo H0 thơng qua hàm F để tính giá trị hash H1 Sau block M2 kết hợp với H1 giá trị hash H2 Block M3 kết hợp với H2 cho giá trị H3 Cứ block MN ta có giá trị băm tồn thơng điệp HN H0 dãy 128 bít chia thành từ 32 bít, ký hiệu từ 32 bít abcd a, b, c, d số sau (viết dạng thập lục phân): a = 01234567 b = 89abcdef c = fedbca98 d = 76543210 Tiếp theo ta tìm hiểu cấu trúc hàm F 85 512 Hi-1 128 Mi Message Schedule a 32 b c d 32 Round W0 K0 … a 32 b c d 32 Round 63 W63 ⊞ ⊞ ⊞ K63 ⊞ Hi 128 Tại bước lũy tiến, giá trị abcd giá trị hash Hi-1 biến đổi qua 64 vòng từ đến 63 Tại vịng thứ j có tham số Kj Wj có kích thước 32 bít Các số Kj tính từ cơng thức: Kj phần nguyên số n với i biểu diễn theo radian Giá trị block Mi 512 bít biến đổi qua hàm message schedule cho 64 giá trị W0, W1,…, W63 giá trị 32 bít Block Mi 512 bít chia thành 16 block 32 bít ứng với giá trị W0, W1, …, W15 (16×32=512) Tiếp theo, 16 giá trị lặp lại lần tạo thành dãy 64 giá trị Sau vòng cuối cùng, giá trị abcde cộng với giá trị abcd Hi-1 giá trị abcd Hi Phép cộng phép cộng modulo 232 Tiếp theo ta tìm hiểu cấu trúc vòng Việc biến đổi giá trị abcd vòng thứ i thể hình bên 86 a b ⊞ Wj ⊞ Kj ⊞ c d c d f ROTL ⊞ a b Ở bc, cd, da Giá trị b tính qua hàm: , s) Trong đó: Hàm f(x, y, z): vòng đến 15 vòng 16 đến 31 vòng 32 đến 48 vòng 49 đến 63 Hàm ROTL(t, s): t dịch vịng trái s bít, với s số cho vòng thứ i sau: i 0, 4, 8, 12 1, 5, 9, 13 2, 6,10, 14 3, 7, 11, 15 16, 20, 24, 28 17, 21, 25, 29 18, 22, 26, 30 19, 23, 27, 31 32, 36, 40, 44 33, 37, 41, 45 34, 38, 42, 46 35, 39, 43, 47 48, 52, 56, 60 49, 53, 57, 61 50, 54, 58, 62 51, 55, 59, 63 s 12 17 22 14 20 11 16 23 10 15 21 Phép + (hay ⊞) phép cộng modulo 232 b) SHA-1 87 Hàm băm SHA-1 với giá trị băm có kích thước 160 bít, dùng để tính giá trị băm thơng điệp có kích thước tối đa 264 bít Sơ đồ tổng thể SHA1 giống MD5, có điểm khác kích thước giá trị hash bước 160 bít N x 512 bít 64 bít Message 512 bít 512 bít M1 M2 512 IV (H0) 160 F 160 100…00 Length 512 bít MN … … 512 512 ⊞ H1 F 160 N block ⊞ H2 … HN-1 F 160 ⊞ HN Hash value H0 dãy 160 bít chia thành từ 32 bít, ký hiệu từ 32 bít abcde a, b, c, d, e số sau: a = 67452301 b = efcdab89 c = 98badcfe d = 10325476 e = c3d2e1f0 Cấu trúc hàm F SHA tương tự MD5, nhiên thực 80 vòng 88 512 Mi 160 Message Schedule a b 32 Hi-1 c d e 32 Round W0 K0 … a b 32 c d e 32 Round 79 W79 K79 ⊞ ⊞ ⊞ ⊞ ⊞ 160 Hi Giá trị K0, K1,…, K79 số sau: Ki = 5A827999 với ≤ i ≤ 19 Ki = 6ED9EBA1 với 20 ≤ i ≤ 39 Ki = 8F1BBCDC với 40 ≤ i ≤ 59 Ki = CA62C1D6 với 60 ≤ i ≤ 79 Giá trị block Mi 512 bít biến đổi qua hàm message schedule cho 80 giá trị W0, W1,…, W80 giá trị 32 bít, theo quy tắc: Trước tiên block Mi 512 bít chia thành 16 block 32 bít ứng với giá trị W0, W1, …, W15 (16×32=512) Các giá trị Wt (16 t 79) tính theo công thức: với phép cộng modulo 232 Việc biến đổi giá trị abcde vòng thứ i thể hình bên 89 a b c d e ⊞ f ⊞ ROTL ROTL a b c d ⊞ Wi ⊞ Ki e Ở ab, cd, de Giá trị a c tính qua hàm: Trong đó, hàm f(x, y ,z): vòng đến 19 vòng 20 đến 39 vòng 40 đến 59 vòng 60 đến 79 Ý nghĩa hàm Maj hàm Ch: Hàm Maj: giả sử xi, yi, zi bít thứ i x, y, z, bít thứ i hàm Maj giá trị chiếm đa số, hay (giống hàm maj định nghĩa phần thuật toán A5/1) Hàm Ch: bít thứ i hàm Ch phép chọn: if xi then yi else zi c) SHA-512 Phương pháp SHA-512 có cấu trúc gần giống SHA-1, nhiên khối tính tốn có số bít lớn Bên sơ đồ tổng thể SHA-512 N x 1024 bít 128 bít Message 1024 bít 1024 bít M1 512 90 F 512 Length 1024 bít M2 1024 IV (H0) 100…00 MN … … 1024 1024 ⊞ H1 F 512 N block ⊞ H2 … HN-1 F 512 ⊞ HN Hash value Thơng điệp padding chia thành khối 1024 bít Giá trị hash mơi bước có kích thước 512 bít H0 chia thành từ 64 bít abcdefgh a, b, c, d, e, f, g, h lấy từ phần thập phân bậc số nguyên tố (ví dụ a có giá trị hexa 6A09E667F3BCC908) Cấu trúc hàm F giống hàm F SHA-1 1024 Mi 512 Message Schedule a b c 64 Hi-1 d e f g h 64 Round W0 K0 … a 64 b c d e f g h 64 Round 79 W79 K79 ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ 512 Hi Hai tham số Ki Wi có kích thước 64 bít Giá trị K0, K1,…, K80 lấy từ phần thập phân bậc 80 số nguyên tố Cịn W0, W1,…, W79 tính từ Mi sau: Trước tiên block Mi 1024 bít chia thành 16 block 64 bít ứng với giá trị W0, W1, …, W15 (16×64=1024) Các giá trị Wt (16 t 79) tính theo cơng thức: Với: 19 61 Trong đó: : hàm dịch phải i bít số x 64 bít : hàm dịch vịng phải i bít số x 64 bít Phép cộng phép modulo 264 Cấu trúc vòng: 91 a b c d e f h ⊞ Ch Maj 0 g ⊞ 1 ⊞ ⊞ ⊞ Wi ⊞ Ki ⊞ a b c d e f g h Ở gh, fg, ef, cd, bc, ab Giá trị a e tính qua hàm: ∑ ∑ a = T0 + T1 e = d + T1 Trong đó, hàm ∑ ∑ : ∑ 28 34 39 ∑ 14 18 41 5.2.3 HMAC Hàm băm dùng để tính MAC cách truyền thêm khóa bí mật K vào hàm băm Lúc này, giá trị kết xuất gọi HMAC 5.3 Một số ứng dụng hàm băm 5.3.1 Lƣu trữ mật Hầu hết ứng dụng phần mềm ngày nay, dù máy đơn hay web, có chứng thực người sử dụng Nghĩa để sử dụng ứng dụng, người sử dụng phải qua chế chứng thực username mật khẩu, từ cung cấp quyền sử dụng phần mềm khác Do vấn đề bảo mật mật vấn đề quan trọng phần mềm Mật người sử dụng thường gồm chữ thường hoa, cộng thêm chữ số Giả sử mật lưu trữ dạng thường, khơng mã hóa, nơi máy tính cá nhân hay máy chủ, file liệu hay hệ quản trị sở liệu Như xuất nguy có người khác, người quản trị administrator, hacker, mở file liệu sở liệu, xem trộm mật Như mật khơng thể giữ bí mật tuyệt đối Một phương pháp để bảo vệ mật dùng mã hóa, chương trình phần mềm dùng khóa bí mật để mã hóa mật trước lưu mật xuống file hay sở liệu Do tránh vấn đề xem trộm mật Tuy nhiên phương pháp có yếu 92 điểm lại phải lo bảo vệ khóa bí mật Nếu khóa bí mật bị lộ việc mã hóa khơng cịn ý nghĩa Phương pháp bảo vệ mật hiệu dùng hàm băm Khi người sử dụng đăng ký mật khẩu, giá trị băm mật tính hàm băm (MD5 hay SHA-1,…) Giá trị băm lưu trữ vào file hay sở liệu Vì hàm băm chiều, nên dù biết giá trị băm loại hàm băm, hacker suy mật Khi người sử dụng đăng nhập, mật đăng nhập tính giá trị băm so sánh với giá trị băm lưu trữ Do tính chống trùng, có mật có giá trị băm tương ứng, nên khơng khác ngồi người sử dụng có mật đăng nhập ứng dụng m Tính Hash h Lưu trữ a) Lưu trữ mật Lưu trữ h m' Tính Hash h' So sánh b) Chứng thực mật khẩu, theo tính chống trùng, h’=h m’=m Hình 5-5 Dùng hàm Hash để lưu trữ mật Lưu trữ password không mã hóa Lưu trữ password mã hóa hàm hash MD5 5.3.2 Đấu giá trực tuyến Phương pháp lưu trữ mật giá trị Hash áp dụng tương tự cho việc đấu giá trực tuyến hình thức đấu giá bít mật Giả sử Alice, Bob Trudy tham gia đấu giá, họ cung cấp mức giá cho trọng tài Các mức giá giữ bí mật ba nộp xong Nếu người đưa mức giá cao thắng thầu Điểm quan trọng phương pháp đấu giá giá Alice, Bob, Trudy phải giữ bí mật trước cơng bố Giả sử mức giá Alice 100, mức giá Bob 93 110, Trudy thông đồng với trọng tài biết giá Alice Bob, Trudy đưa mức giá 111 thắng thầu Có thể tránh hình thức lừa đảo cách sử dụng hàm băm Từ mức giá bỏ thầu, Alice Bob tính giá trị băm tương ứng cung cấp cho trọng tài giá trị băm Vì hàm băm chiều, trọng tài Trudy bắt tay khơng thể biết giá Alice Bob Đến công bố, Alice, Bob Trudy đưa mức giá Trọng tài tính giá trị băm tương ứng so sánh với giá trị băm nộp để bảo đảm mức Alice, Bob Trudy với ý định ban đầu họ Vì tính chống trùng hàm băm nên Alice, Bob Trudy thay đổi giá so với ý định ban đầu Ngƣời đấu giá Trọng tài t1 Nộp giá giá h Tính Hash So sánh Đối chiếu giá t2>t1 giá Tính Hash Hình 5-6 Đấu giá bí mật 5.3.3 Download file 94 h' Khi download file từ mạng internet, chất lượng mạng khơng tốt xảy lỗi trình download làm cho file máy client khác với file server Hàm băm giúp phát trường hợp bị lỗi Gọi file cần download server X, giá trị hash theo MD5 file X mà server tính sẵn cung cấp trang web HX (có thể xem mắt) Gọi Y file mà người sử dụng download máy Người sử dụng tính giá trị MD5 HY cho file Y Như HX = HY theo tính chống trùng hàm hash, file Y hồn tồn giống file X q trình download không xảy lỗi File X File Y download Internet HX HY so sánh mắt, theo tính chất hàm băm, HX=HY FileX=FileY 5.4 Hàm băm chữ ký điện tử Trong phần tìm hiểu cách thức ứng dụng hàm băm vào vấn đề chứng thực mà ta gọi chữ ký điện tử Việc sử dụng khóa bí mật chung cho người gửi người nhận mã chứng thực thông điệp MAC gặp phải vấn đề tính khơng từ chối tương tự mã hóa đối xứng Dùng hàm băm mã hóa khóa cơng khai khắc phục vấn đề Trước tiên xét mơ hình đơn giản: Bên gửi Bên nhận M M Tính Hash HA M Tính Hash HB So sánh 95 Trong mơ hình Alice tính giá trị băm thông điệp cần gửi gửi kèm cho Bob Bob tính lại giá trị băm thông điệp nhận so sánh với giá trị băm Alice Tương tự vấn đề download file, Trudy sửa thơng điệp M HB ≠ HA Bob phát Tuy nhiên, Trudy sửa giá trị băm HA Alice gửi Bob phát Để tránh vấn đề cần sử dụng mã hóa khóa cơng khai để chứng thực HA theo mơ hình sau: Bên gửi Bên nhận M M M DS Tính Hash HA Mã hóa Giải mã HA Tính Hash HB So sánh KRA KUA Bộ sinh khóa DS: Data signature – chữ ký điện tử Hình 5-6 Mơ hình chữ ký điện tử Trong mơ hình này, Alice sau tính giá trị hash HA cho thơng điệp M mã hóa HA khóa riêng Alice để tạo thành chữ ký điện tử DS Alice gửi kèm DS theo M cho Bob Bob dùng khóa cơng khai Alice để giải mã chữ ký điện tử DS có giá trị hash HA Alice Vì Trudy khơng có KRA nên khơng thể sửa HA Ngồi ra, Alice người có KRA, nên có Alice tạo DS từ M Do Alice từ chối gửi tin Vậy dùng chữ ký điện tử có ưu điểm so với cách dùng checksum mơ hình hình 5-2? Chữ ký điện tử cần mã hóa giá trị hash mà khơng cần mã hóa tồn thơng điệp M Vì phương pháp mã hóa khóa cơng khai tốn thời gian nên M thơng điệp dài, việc khơng mã hóa M giúp tiết kiệm nhiều thời gian 5.5 Câu hỏi ôn tập Để bảo đảm tính chứng thực dùng mã hóa đối xứng hay mã hóa khóa cơng khai, rõ phải có tính chất gì? Tại sao? Nếu rõ dãy bít ngẫu nhiên, cần làm để rõ trở thành có cấu trúc? Sử dụng MAC để chứng thực có ưu điểm so với chứng thực mã hóa đối xứng? Về mặt lý thuyết, giá trị Hash trùng khơng? Vậy nói giá trị Hash xem “dấu vân tay thông điệp”? Tại để chứng thực thông điệp M, người ta cần mã hóa khóa cơng khai giá trị Hash M đủ? Thực có lợi ích so với cách thức mã hóa tồn M 96 5.6 Bài tập Với số chia phép tính checksum CRC 11001, bạn tìm số mà có CRC giống với số 11101101 Hãy xem xét hàm hash sau Thơng điệp có dạng dãy số thập phân M = ∑ (a1, a2, …, an) Hàm hash tính cơng thức: Hàm hash có thỏa mãn tính chất hàm hash nêu phần 5.2 hay khơng? Giải thích lý ∑ Thực tương tự câu với hàm hash Giả sử Alice Bob muốn tung đồng xu qua mạng (Alice tung Bob đoán) Giao thức thực sau: i ii iii iv v vi vii Alice chọn giá trị X=0 hay Alice sinh khóa K ngẫu nhiên gồm 256 bít Dùng AES, Alice tính Y = E(X||R, K) R gồm 255 bít Alice gửi Y cho Bob Bob đoán Z hay gửi Z cho Alice Alice gửi khóa K cho Bob để Bob tính X||R = D(Y, K) Nếu X=Z, Bob đốn trúng Nếu khơng Bob đốn sai Chứng tỏ Alice lừa Bob (chẳng hạn, Alice chọn X=1, thấy Bob đốn Z=1 Alice lừa để Bob giải mã Y có X=0) Dùng hàm hash, sửa đoạn giao thức để Alice lừa 5.7 Bài tập thực hành Tìm hiểu phương pháp sử dụng hàm hash MD5 SHA thư viện mã hóa NET Áp dụng viết chương trình mã hóa password lưu trữ kiểm tra password trình bày phần 5.3.1 Gần đây, người ta phát điểm yếu hàm hash MD5, tức tìm hai thơng điệp có giá trị hash MD5 Bạn tìm bít khác thơng điệp bên dùng thư viện NET Java để tính giá trị hash MD5 chúng Thơng điệp (dạng số thập lục phân): d1 2f 55 08 96 35 75 ed 31 ca ad 51 0b 73 27 74 dd b5 34 25 1d 9a 7f cb 02 87 06 e8 d1 c7 79 dd c5 12 09 f7 dc f0 30 5f e6 46 f4 cd 41 eb d5 c5 ee 7e b3 c9 7b fd 5c d3 c4 ab 02 9f 9c 0c eb 6d 69 40 83 d9 e4 30 22 b1 3d 04 e4 1d d8 29 e8 9b 9a 58 88 bd 97 f1 ad 0a 06 3e 83 f2 f4 66 ba d8 98 b8 25 80 5a d1 79 35 af fb 71 37 65 09 cc cc f9 7f 41 3c 55 b1 15 a7 5c 89 5a 5b d5 8f 5c e3 69 40 83 d9 e4 3d 04 e4 1d d8 9a 58 88 bd 97 06 3e 83 72 f4 98 b8 25 80 5a af fb f1 37 65 f9 7f 41 3c 55 5c 89 5a 5b d5 Thông điệp (dạng số thập lục phân): d1 2f 55 08 96 31 ca ad 51 0b dd b5 34 25 1d 02 07 06 e8 d1 c5 12 09 f7 dc e6 46 f4 cd 41 ee 7e b3 c9 7b c4 ab 02 9f 9c 97 35 73 9a 47 f0 eb fd 0c 30 29 f1 66 d1 09 b1 8f 75 27 7f 79 30 d5 5c eb 22 e8 ad ba 79 4c 15 5c ed 74 cb dd 5f c5 d3 6d b1 9b 0a 58 35 cc a7 e3 Viết chương trình tính giá trị MD5 cho file máy tính tương tự hình đây: Một giải pháp dùng để chống lại tình trạng vi phạm quyền, chép phần mềm mà không đồng ý tác giả, thực sau: a Sau cài đặt, phần mềm lấy thông tin ID CPU (hay ID đĩa cứng) máy người mua phần mềm gửi cho nhà cung cấp phần mềm b Dùng chữ ký điện tử, nhà cung cấp phần mềm ký vào ID CPU (hay ID đĩa cứng) người mua, sau gửi lại nội dung ký cho người mua c Mỗi chạy chương trình, phần mềm giải mã chữ ký nhà cung cấp để lấy ID CPU ký, đồng thời lấy lại thông tin ID CPU máy chạy Nếu hai ID khơng khớp, nghĩa phần mềm bị chép vào máy tính khác khơng có quyền Dùng chữ ký điện tử RSA (hoặc chữ ký điện tử DSS – xem chương 10), viết chương trình thực chế chống vi phạm quyền nói cho phần mềm bạn 98 99 ... 011 1 10 00 10 01 1 010 10 11 110 0 11 01 111 0 11 11 b0b5 \ 00 11 10 010 0 11 01 00 01 0 010 11 11 1 011 10 00 0 011 10 10 011 0 11 00 010 1 10 01 0000 011 1 01 0000 11 11 011 1 010 0 11 10 0 010 11 01 00 01 1 010 011 0 11 00... 11 00 10 11 10 01 010 1 0 011 10 00 10 010 0 00 01 111 0 10 00 11 01 011 0 0 010 10 11 111 1 11 00 10 01 011 1 0 011 10 10 010 1 0000 11 11 11 110 0 10 00 0 010 010 0 10 01 00 01 011 1 010 1 10 11 0 011 11 10 10 10 0000 011 0 11 01. .. 011 1 010 0 11 10 0 010 11 01 00 01 1 010 011 0 11 00 10 11 10 01 010 1 0 011 10 00 10 010 0 00 01 111 0 10 00 11 01 011 0 0 010 10 11 111 1 11 00 10 01 011 1 0 011 10 10 010 1 0000 11 11 11 110 0 10 00 0 010 010 0 10 01 0001