Lời giới thiệu Mật mã (Cryptography) là ngành khoa học là ngành nghiên cứu các kỹ thuật toán học nhằm cung cấp các dịch vụ bảo vệ thông tin [44]. Đây là ngành khoa học quan trọng, có nhiều ứng dụng trong đời sống – xã hội.
Lời giới thiệu Mật mã (Cryptography) ngành khoa học ngành nghiên cứu kỹ thuật toán học nhằm cung cấp dịch vụ bảo vệ thông tin [44] Đây ngành khoa học quan trọng, có nhiều ứng dụng đời sống – xã hội Khoa học mật mã đời từ hàng nghìn năm Tuy nhiên, suốt nhiều kỷ, kết lĩnh vực không ứng dụng lĩnh vực dân thông thường đời sống – xã hội mà chủ yếu sử dụng lĩnh vực quân sự, trị, ngoại giao Ngày nay, ứng dụng mã hóa bảo mật thơng tin sử dụng ngày phổ biến lĩnh vực khác giới, từ lĩnh vực an ninh, quân sự, quốc phòng…, lĩnh vực dân thương mại điện tử, ngân hàng… Với phát triển ngày nhanh chóng Internet ứng dụng giao dịch điện tử mạng, nhu cầu bảo vệ thông tin hệ thống ứng dụng điện tử ngày quan tâm có ý nghĩa quan trọng Các kết khoa học mật mã ngày triển khai nhiều lĩnh vực khác đời sống – xã hội, phải kể đến nhiều ứng dụng đa dạng lĩnh vực dân sự, thương mại Các ứng dụng mã hóa thơng tin cá nhân, trao đổi thông tin kinh doanh, thực giao dịch điện tử qua mạng trở nên gần gũi quen thuộc với người Cùng với phát triển khoa học máy tính Internet, nghiên cứu ứng dụng mật mã học ngày trở nên đa dạng hơn, mở nhiều hướng nghiên cứu chuyên sâu vào lĩnh vực ứng dụng đặc thù với đặc trưng riêng Ứng dụng khoa học mật mã không đơn mã hóa giải mã thơng tin mà cịn bao gồm nhiều vấn đề khác cần nghiên cứu giải quyết, ví dụ chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực người sở hữu mã khóa (chứng nhận khóa cơng cộng), quy trình giúp trao đổi thơng tin thực giao dịch điện tử an toàn mạng Các ứng dụng mật mã học khoa học bảo vệ thông tin đa dạng phong phú; tùy vào tính đặc thù hệ thống bảo vệ thơng tin mà ứng dụng có tính với đặc trưng riêng Trong đó, kể số tính hệ thống bảo vệ thơng tin: • Tính bảo mật thơng tin: hệ thống đảm bảo thơng tin giữ bí mật Thơng tin bị phát hiện, ví dụ q trình truyền nhận, người cơng khơng thể hiểu nội dung thông tin bị đánh cắp • Tính tồn vẹn thơng tin: hệ thống bảo đảm tính tồn vẹn thơng tin liên lạc giúp phát thơng tin bị sửa đổi • Xác thực đối tác liên lạc xác thực nội dung thơng tin liên lạc • Chống lại thoái thác trách nhiệm: hệ thống đảm bảo đối tác hệ thống từ chối trách nhiệm hành động mà thực Những kết nghiên cứu mật mã đưa vào hệ thống phức tạp hơn, kết hợp với kỹ thuật khác để đáp ứng yêu cầu đa dạng hệ thống ứng dụng khác thực tế, ví dụ hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ đa phương tiện mạng với yêu cầu cung cấp dịch vụ bảo vệ quyền sở hữu trí tuệ thông tin số Khi biên soạn tập sách này, nhóm tác giả chúng tơi mong muốn giới thiệu với quý độc giả kiến thức tổng quan mã hóa ứng dụng, đồng thời trình bày phân tích số phương pháp mã hóa quy trình bảo vệ thơng tin an tồn hiệu thực tế Bên cạnh phương pháp mã hóa kinh điển tiếng sử dụng rộng rãi nhiều thập niên qua DES, RSA, MD5…, giới thiệu với bạn đọc phương pháp mới, có độ an tồn cao chuẩn mã hóa AES, phương pháp ECC, chuẩn hàm băm mật mã SHA224/256/384/512… Các mơ hình quy trình chứng nhận khóa cơng cộng trình bày tập sách Nội dung sách gồm 10 chương Sau phần giới thiệu tổng quan mật mã học khái niệm hệ thống mã hóa chương 1, từ chương đến chương 5, sâu vào tìm hiểu hệ thống mã hóa quy ước, từ khái niệm bản, phương pháp đơn giản, đến phương pháp Rijndael thuật toán ứng cử viên AES Nội dung chương giới thiệu hệ thống mã hóa khóa cơng cộng phương pháp RSA Chương trình bày khái niệm chữ ký điện tử với số phương pháp phổ biến RSA, DSS, ElGamal Các kết nghiên cứu ứng dụng lý thuyết đường cong elliptic trường hữu hạn vào mật mã học trình bày chương Chương giới thiệu hàm băm mật mã sử dụng phổ biến MD5, SHS với phương pháp công bố thời gian gần SHA-256/384/512 Trong chương 10, tìm hiểu hệ thống chứng nhận khóa cơng cộng, từ mơ hình đến quy trình thực tế hệ thống chứng nhận khóa cơng cộng, với ví dụ việc kết hợp hệ thống mã hóa quy ước, hệ thống mã hóa khóa cơng cộng chứng nhận khóa cơng cộng để xây dựng hệ thống thư điện tử an toàn Với bố cục nội dung nêu trên, hi vọng kiến thức trình bày tập sách nguồn tham khảo hữu ích cho quý độc giả quan tâm đến lĩnh vực mã hóa ứng dụng Mặc dù cố gắng hoàn thành sách với tất nỗ lực chắn chúng tơi cịn thiếu sót định Kính mong cảm thơng góp ý q độc giả NHÓM TÁC GIẢ: TS Dương Anh Đức - ThS Trần Minh Triết với đóng góp sinh viên Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia thành phố Hồ Chí Minh Văn Đức Phương Hồng Phan Thị Minh Đức Nguyễn Minh Huy Lương Vĩ Minh Nguyễn Ngọc Tùng Thành phố Hồ Chí Minh, tháng 01 năm 2005 Mục lục Chương Tổng quan 15 1.1 Mật mã học 15 1.2 Hệ thống mã hóa (cryptosystem) 16 1.3 Hệ thống mã hóa quy ước (mã hóa đối xứng) 18 1.4 Hệ thống mã hóa khóa cơng cộng (mã hóa bất đối xứng) 19 1.5 Kết hợp mã hóa quy ước mã hóa khóa cơng cộng 19 Chương Một số phương pháp mã hóa quy ước 20 2.1 Hệ thống mã hóa quy ước 20 2.2 Phương pháp mã hóa dịch chuyển 21 2.3 Phương pháp mã hóa thay 22 2.4 Phương pháp Affine 23 2.5 Phương pháp Vigenere 28 2.6 Phương pháp Hill 29 2.7 Phương pháp mã hóa hốn vị 30 2.8 Phương pháp mã hóa phép nhân 2.8.1 Phương pháp mã hóa phép nhân 2.8.2 Xử lý số học 2.9 Phương pháp DES (Data Encryption Standard) 2.9.1 Phương pháp DES 2.9.2 Nhận xét 2.10 Phương pháp chuẩn mã hóa nâng cao AES 31 31 32 33 33 36 37 Chương Phương pháp mã hóa Rijndael 39 3.1 Giới thiệu 39 3.2 Tham số, ký hiệu, thuật ngữ hàm 40 3.3 Một số khái niệm toán học 42 3.4 3.5 3.6 3.7 3.8 3.3.1 Phép cộng 3.3.2 Phép nhân 3.3.3 Đa thức với hệ số GF(28) Phương pháp Rijndael 3.4.1 Quy trình mã hóa 3.4.2 Kiến trúc thuật toán Rijndael 3.4.3 Phép biến đổi SubBytes 3.4.4 Phép biến đổi ShiftRows 3.4.5 Phép biến đổi MixColumns 3.4.6 Thao tác AddRoundKey Phát sinh khóa chu kỳ 3.5.1 Xây dựng bảng khóa mở rộng 3.5.2 Xác định khóa chu kỳ Quy trình giải mã 3.6.1 Phép biến đổi InvShiftRows 3.6.2 Phép biến đổi InvSubBytes 3.6.3 Phép biến đổi InvMixColumns 3.6.4 Quy trình giải mã tương đương Các vấn đề cài đặt thuật toán 3.7.1 Nhận xét Kết thử nghiệm 3.9 Kết luận 3.9.1 Khả an toàn 3.9.2 Đánh giá 43 43 46 49 50 52 53 55 56 58 59 59 61 62 63 64 66 67 69 72 73 74 74 75 Chương Phương pháp Rijndael mở rộng 77 4.1 Nhu cầu mở rộng phương pháp mã hóa Rijndael 77 4.2 Phiên mở rộng 256/384/512-bit 4.2.1 Quy trình mã hóa 4.2.2 Phát sinh khóa chu kỳ 4.2.3 Quy trình giải mã 4.2.4 Quy trình giải mã tương đương 4.3 Phiên mở rộng 512/768/1024-bit 78 79 86 88 93 94 4.4 Phân tích mật mã vi phân phân tích mật mã tuyến tính 4.4.1 Phân tích mật mã vi phân 4.4.2 Phân tích mật mã tuyến tính 95 95 96 4.4.3 Branch Number 4.4.4 Sự lan truyền mẫu 4.4.5 Trọng số vết vi phân vết tuyến tính 4.5 Khảo sát tính an tồn phương pháp cơng khác 4.5.1 Tính đối xứng khóa yếu DES 4.5.2 Phương pháp cơng Square 4.5.3 Phương pháp nội suy 4.5.4 Các khóa yếu IDEA 4.5.5 Phương pháp cơng khóa liên quan 4.6 Kết thử nghiệm 98 99 107 108 108 109 109 110 110 111 4.7 Kết luận 113 Chương Các thuật toán ứng cử viên AES 5.1 Phương pháp mã hóa MARS 5.1.1 Quy trình mã hóa 5.1.2 S–box 5.1.3 Khởi tạo phân bố khóa 5.1.4 Quy trình mã hóa 5.1.5 Quy trình giải mã 5.2 Phương pháp mã hóa RC6 5.2.1 Khởi tạo phân bố khóa 5.2.2 Quy trình mã hóa 5.2.3 Quy trình giải mã 5.3 Phương pháp mã hóa Serpent 5.3.1 Thuật tốn SERPENT 5.3.2 Khởi tạo phân bố khóa 5.3.3 S–box 5.3.4 Quy trình mã hóa 5.3.5 Quy trình giải mã 5.4 Phương pháp mã hóa TwoFish 5.4.1 Khởi tạo phân bố khóa 5.4.2 Quy trình mã hóa 5.4.3 Quy trình giải mã 5.5 Kết luận 115 115 116 117 118 123 135 137 138 139 143 144 144 144 147 148 153 154 154 163 169 169 Chương Một số hệ thống mã hóa khóa cơng cộng 172 6.1 Hệ thống mã hóa khóa cơng cộng 172 6.2 Phương pháp RSA 6.2.1 Phương pháp RSA 6.2.2 Một số phương pháp công giải thuật RSA 6.2.3 Sự che dấu thông tin hệ thống RSA 6.2.4 Vấn đề số nguyên tố 6.2.5 Thuật toán Miller-Rabin 6.2.6 Xử lý số học 6.3 Mã hóa quy ước mã hóa khóa cơng cộng 174 174 175 182 183 184 186 186 Chương Chữ ký điện tử 191 7.1 Giới thiệu 191 7.2 Phương pháp chữ ký điện tử RSA 192 7.3 Phương pháp chữ ký điện tử ElGamal 7.3.1 Bài toán logarit rời rạc 7.3.2 Phương pháp ElGamal 7.4 Phương pháp Digital Signature Standard 193 193 194 194 Chương Phương pháp ECC 197 8.1 Lý thuyết đường cong elliptic 197 8.1.1 Công thức Weierstrasse đường cong elliptic 198 8.1.2 Đường cong elliptic trường R2 199 8.1.3 Đường cong elliptic trường hữu hạn 204 8.1.4 Bài toán logarit rời rạc đường cong elliptic 212 8.1.5 Áp dụng lý thuyết đường cong elliptic vào mã hóa 213 8.2 Mã hóa liệu 213 8.2.1 Thao tác mã hóa 214 8.2.2 Kết hợp ECES với thuật tốn Rijndael thuật toán mở rộng 215 8.2.3 Thao tác giải mã 215 8.3 Trao đổi khóa theo phương pháp Diffie - Hellman sử dụng lý thuyết đường cong elliptic (ECDH) 216 8.3.1 Mơ hình trao đổi khóa Diffie-Hellman 216 8.3.2 Mơ hình trao đổi khóa Elliptic Curve Diffie - Hellman 217 8.4 Kết luận 218 Chương Hàm băm mật mã 222 9.1 Giới thiệu 222 9.1.1 Đặt vấn đề 222 9.1.2 Hàm băm mật mã 223 9.1.3 Cấu trúc hàm băm 225 9.1.4 Tính an toàn hàm băm tượng đụng độ 226 9.1.5 Tính chiều 226 9.2 Hàm băm MD5 227 9.2.1 Giới thiệu MD5 227 9.2.2 Nhận xét 231 9.3 Phương pháp Secure Hash Standard (SHS) 232 9.3.1 Nhận xét 235 9.4 Hệ thống chuẩn hàm băm mật mã SHA 236 9.4.1 Ý tưởng thuật toán hàm băm SHA 236 9.4.2 Khung thuật toán chung hàm băm SHA 237 9.4.3 Nhận xét 240 9.5 Kiến trúc hàm băm Davies-Mayer ứng dụng thuật toán Rijndael phiên mở rộng vào hàm băm 241 9.5.1 Kiến trúc hàm băm Davies-Mayer 241 9.5.2 Hàm AES-Hash 242 9.5.3 Hàm băm Davies-Mayer AES-Hash 244 9.6 Xây dựng hàm băm sử dụng thuật toán mở rộng dựa thuật toán Rijndael 245 Chương 10 Chứng nhận khóa cơng cộng 246 10.1 Giới thiệu 246 10.2 Các loại giấy chứng nhận khóa cơng cộng 10.2.1 Chứng nhận X.509 10.2.2 Chứng nhận chất lượng 10.2.3 Chứng nhận PGP 10.2.4 Chứng nhận thuộc tính 10.3 Sự chứng nhận kiểm tra chữ ký 250 250 252 253 253 254 10.4 Các thành phần cở sở hạ tầng khóa cơng cộng 10.4.1 Tổ chức chứng nhận – Certificate Authority (CA) 10.4.2 Tổ chức đăng ký chứng nhận – Registration Authority (RA) 257 257 258 10.4.3 Kho lưu trữ chứng nhận – Certificate Repository (CR) 10.5 Chu trình quản lý giấy chứng nhận 10.5.1 Khởi tạo 10.5.2 Yêu cầu giấy chứng nhận 10.5.3 Tạo lại chứng nhận 10.5.4 Hủy bỏ chứng nhận 10.5.5 Lưu trữ khơi phục khóa 10.6 Các mơ hình CA 10.6.1 Mơ hình tập trung 10.6.2 Mơ hình phân cấp 10.6.3 Mơ hình “Web of Trust” 10.7 Ứng dụng “Hệ thống bảo vệ thư điện tử” 10.7.1 Đặt vấn đề 10.7.2 Quy trình mã hóa thư điện tử 10.7.3 Quy trình giải mã thư điện tử 10.7.4 Nhận xét – Đánh giá 259 259 259 259 262 262 264 264 264 265 266 268 268 269 270 271 Phụ lục A S-box thuật toán MARS 272 Phụ lục B Các hoán vị sử dụng thuật toán Serpent 275 Phụ lục C S-box sử dụng thuật toán Serpent 276 Phụ lục D S-box thuật toán Rijndael 277 Phụ lục E Hằng số giá trị khởi tạo SHA 279 E.1 Hằng số sử dụng SHA E.1.1 Hằng số SHA-1 E.1.2 Hằng số SHA-224 SHA-256 E.1.3 Hằng số SHA-384 SHA-512 E.2 Giá trị khởi tạo SHA Tài liệu tham khảo 10 279 279 279 280 281 284 Chương Z m có phần tử đơn vị 1, ∀a, b ∈ Z m , a ×1 = 1× a = a 10 Tính phân phối phép nhân phép cộng, ∀a, b, c ∈ Z m , ( a + b) × c = a × c + b × c Z m có tính chất 1, – nên tạo thành nhóm Do Z m có tính chất nên tạo thành nhóm Abel Z m có tính chất (1) – (10) nên tạo thành vành 1.3 Hệ thống mã hóa quy ước (mã hóa đối xứng) Trong hệ thống mã hóa quy ước, q trình mã hóa giải mã thơng điệp sử dụng mã khóa gọi khóa bí mật (secret key) hay khóa đối xứng (symmetric key) Do đó, vấn đề bảo mật thơng tin mã hóa hồn tồn phụ thuộc vào việc giữ bí mật nội dung mã khóa sử dụng Với tốc độ khả xử lý ngày nâng cao vi xử lý nay, phương pháp mã hóa chuẩn (Data Encryption Standard – DES) trở nên khơng an tồn bảo mật thơng tin Do đó, Viện Tiêu chuẩn Cơng nghệ Quốc gia Hoa Kỳ (National Institute of Standards and Technology – NIST) định chọn chuẩn mã hóa với độ an toàn cao nhằm phục vụ nhu cầu bảo mật thơng tin liên lạc phủ Hoa Kỳ ứng dụng dân Thuật toán Rijndael Vincent Rijmen Joan Daeman thức chọn trở thành chuẩn mã hóa nâng cao (Advanced Encryption Standard – AES) từ 02 tháng 10 năm 2000 18 Tổng quan 1.4 Hệ thống mã hóa khóa cơng cộng (mã hóa bất đối xứng) Nếu vấn đề khó khăn đặt phương pháp mã hóa quy ước tốn trao đổi mã khóa ngược lại, phương pháp mã hóa khóa cơng cộng giúp cho việc trao đổi mã khóa trở nên dễ dàng Nội dung khóa cơng cộng (public key) khơng cần phải giữ bí mật khóa bí mật phương pháp mã hóa quy ước Sử dụng khóa cơng cộng, thiết lập quy trình an tồn để truy đổi khóa bí mật sử dụng hệ thống mã hóa quy ước Trong năm gần đây, phương pháp mã hóa khóa cơng cộng, đặc biệt phương pháp RSA [45], sử dụng ngày nhiều ứng dụng mã hóa giới xem phương pháp chuẩn sử dụng phổ biến Internet, ứng dụng việc bảo mật thông tin liên lạc lĩnh vực thương mại điện tử 1.5 Kết hợp mã hóa quy ước mã hóa khóa cơng cộng Các phương pháp mã hóa quy ước có ưu điểm xử lý nhanh khả bảo mật cao so với phương pháp mã hóa khóa cơng cộng lại gặp phải vấn đề khó khăn việc trao đổi mã khóa Ngược lại, phương pháp mã hóa khóa cơng cộng xử lý thơng tin chậm lại cho phép người sử dụng trao đổi mã khóa dễ dàng Do đó, ứng dụng thực tế, cần phối hợp ưu điểm phương pháp mã hóa để xây dựng hệ thống mã hóa bảo mật thơng tin hiệu an toàn 19 Chương Chương Một số phương pháp mã hóa quy ước " Trong chương 1, tìm hiểu tổng quan mật mã học hệ thống mã hóa Nội dung chương giới thiệu chi tiết hệ thống mã hóa quy ước (hay cịn gọi hệ thống mã hóa đối xứng) Một số phương pháp mã hóa quy ước kinh điển phương pháp dịch chuyển, phương pháp thay thế… với phương pháp mã hóa theo khối sử dụng phổ biến thập niên gần DES, Tripple DES, AES giới thiệu chương 2.1 Hệ thống mã hóa quy ước Hệ thống mã hóa quy ước hệ thống mã hóa quy trình mã hóa giải mã sử dụng chung khố - khóa bí mật Việc bảo mật thơng tin phụ thuộc vào việc bảo mật khóa Trong hệ thống mã hóa quy ước, thơng điệp nguồn mã hóa với mã khóa k thống trước người gửi A người nhận B Người A sử dụng 20 Một số phương pháp mã hóa quy ước mã khóa k để mã hóa thơng điệp x thành thơng điệp y gửi y cho người B; người B sử dụng mã khóa k để giải mã thơng điệp y Vấn đề an tồn bảo mật thơng tin mã hóa phụ thuộc vào việc giữ bí mật nội dung mã khóa k Nếu người C biết mã khóa k C “mở khóa” thơng điệp mã hóa mà người A gửi cho người B Khóa bí mật Thơng điệp nguồn Mã hóa Thơng điệp mã hóa Giải mã Thơng điệp giải mã Hình 2.1 Mơ hình hệ thống mã hóa quy ước 2.2 Phương pháp mã hóa dịch chuyển Phương pháp mã hóa dịch chuyển phương pháp lâu đời sử dụng để mã hóa Thơng điệp mã hóa cách dịch chuyển xoay vịng ký tự k vị trí bảng chữ Trong trường hợp đặc biệt k = , phương pháp mã hóa dịch chuyển gọi phương pháp mã hóa Caesar 21 Chương Thuật tốn 2.1 Phương pháp mã hóa dịch chuyển Cho P = C = K = Z n Với khóa k ∈ K , định nghĩa: ek ( x) = ( x + k ) mod n d k ( y) = ( y − k ) mod n với x, y ∈ Z n E = {ek , k ∈ K } D = {d k , k ∈ K } Mã hóa dịch chuyển phương pháp mã hóa đơn giản, thao tác xử lý mã hóa giải mã thực nhanh chóng Tuy nhiên, thực tế, phương pháp dễ dàng bị phá vỡ cách thử khả khóa k ∈ K Điều hồn tồn thực khơng gian khóa K có n phần tử để chọn lựa Ví dụ: Để mã hóa thơng điệp biểu diễn chữ từ A đến Z (26 chữ cái), ta sử dụng P = C = K = Z 26 Khi đó, thơng điệp mã hóa khơng an tồn dễ dàng bị giải mã cách thử 26 giá trị khóa k ∈ K Tính trung bình, thơng điệp mã hóa bị giải mã sau khoảng n / lần thử khóa k ∈ K 2.3 Phương pháp mã hóa thay Phương pháp mã hóa thay (Substitution Cipher) phương pháp mã hóa tiếng sử dụng từ hàng trăm năm Phương pháp thực việc mã hóa thơng điệp cách hốn vị phần tử bảng chữ hay tổng quát hoán vị phần tử tập nguồn P 22 Một số phương pháp mã hóa quy ước Thuật tốn 2.2 Phương pháp mã hóa thay Cho P = C = Zn K tập hợp tất hoán vị n phần tử 0,1, , n − Như vậy, khóa π ∈ K hoán vị n phần tử 0,1, , n − Với khóa π ∈ K , định nghĩa: e ( x) = π( x) d ( y ) = π -1 ( y ) với x, y ∈ Z n π π E = {eπ , π ∈ K } D = { Dπ , π ∈ K } Đây phương pháp đơn giản, thao tác mã hóa giải mã thực nhanh chóng Phương pháp khắc phục điểm hạn chế phương pháp mã hóa dịch chuyển có khơng gian khóa K nhỏ nên dễ dàng bị giải mã cách thử nghiệm n giá trị khóa k ∈ K Trong phương pháp mã hóa thay có khơng gian khóa K lớn với n! phần tử nên bị giải mã cách “vét cạn” trường hợp khóa k Tuy nhiên, thực tế thơng điệp mã hóa phương pháp bị giải mã thiết lập bảng tần số xuất ký tự thông điệp hay nắm số từ, ngữ thông điệp nguồn ban đầu! 2.4 Phương pháp Affine Nếu phương pháp mã hóa dịch chuyển trường hợp đặc biệt phương pháp mã hóa thay thế, sử dụng n giá trị khóa k số n! phần tử, phương pháp Affine lại trường hợp đặc biệt khác mã hóa thay 23 Chương Thuật toán 2.3 Phương pháp Affine Cho P = C = Zn K = {( a, b ) ∈ Z n × Z n : gcd ( a, n ) = 1} Với khóa k = (a, b) ∈ K , định nghĩa: ek ( x ) = ( ax + b) mod n d k ( x) = (a −1 ( y − b)) mod n với x, y ∈ Z n E = {ek , k ∈ K } D = { Dk , k ∈ K } Để giải mã xác thơng tin mã hóa hàm ek ∈ E ek phải song ánh Như vậy, với giá trị y ∈ Z n , phương trình ax + b ≡ y (mod n) phải có nghiệm x ∈ Z n Phương trình ax + b ≡ y (mod n) tương đương với ax ≡ ( y − b)(mod n) Vậy, ta cần khảo sát phương trình ax ≡ ( y − b)(mod n) Định lý 2.1: Phương trình ax + b ≡ y (mod n) có nghiệm x ∈ Z n với giá trị b ∈ Z n a n nguyên tố Vậy, điều kiện a n nguyên tố bảo đảm thơng tin mã hóa hàm ek giải mã giải mã cách xác Gọi φ (n) số lượng phần tử thuộc Z n nguyên tố với n 24 Một số phương pháp mã hóa quy ước Định lý 2.2: Nếu n = m ∏ pie i với pi số nguyên tố khác ei ∈ Z + , i =1 ≤ i ≤ m φ (n ) = ∏ (pie m i ) − piei −1 i =1 Trong phương pháp mã hóa Affine, ta có n khả chọn giá trị b, φ (n) khả chọn giá trị a Vậy, khơng gian khóa K có tất nφ (n) phần tử Vấn đề đặt cho phương pháp mã hóa Affine để giải mã thơng tin mã hóa cần phải tính giá trị phần tử nghịch đảo a −1 ∈ Z n Thuật tốn Euclide mở rộng giải trọn vẹn vấn đề [45] Trước tiên, cần khảo sát thuật toán Euclide (ở dạng bản) sử dụng việc tìm ước số chung lớn hai số nguyên dương r0 r1 với r0 > r1 Thuật toán Euclide bao gồm dãy phép chia: r0 = q1r1 + r2 , < r2 < r1 r1 = q2 r2 + r3 , < r3 < r2 … rm − = qm −1rm −1 + rm , < rm < rm −1 rm −1 = qm rm (2.1) Dễ dàng nhận thấy rằng: gcd( r0 , r1 ) = gcd(r1 , r2 ) = = gcd(rm −1 , rm ) = rm Như vậy, ước số chung lớn r0 r1 rm 25 Chương Xây dựng dãy số t0 , t1 , , tm theo công thức truy hồi sau: t0 = t1 = t j = (t j − − q j −1t j −1 ) mod r0 với j ≥ (2.2) Định lý 2.3: Với j, ≤ j ≤ m , ta có rj ≡ t j r1 (mod r0 ) , với q j rj xác định theo thuật toán Euclide t j xác định theo công thức truy hồi nêu Định lý 2.4: Nếu r0 r1 nguyên tố (với r0 > r1 ) tm phần tử nghịch đảo r1 Z r gcd(r0 , r1 ) = ⇒ tm = r1−1 mod r0 (2.3) Trong thuật toán Euclide, dãy số{t j } tính đồng thời với dãy số {q j } và{rj } Thuật toán Euclide mở rộng sử dụng để xác định phần tử nghịch đảo (nếu có) số ngun dương a (modulo n) Trong thuật tốn khơng cần sử dụng đến cấu trúc liệu mảng để lưu giá trị dãy số {t j } ,{q j } hay {rj } thời điểm, ta cần quan tâm đến giá trị hai phần tử cuối dãy thời điểm xét 26 Một số phương pháp mã hóa quy ước Thuật toán 2.4 Thuật toán Euclide mở rộng xác định phần tử nghịch đảo a (modulo n) n0 = n a0 = a t0 = t =1 ⎡n ⎤ q=⎢ 0⎥ ⎣ a0 ⎦ r = n0 − qa0 while r > temp = t0 − qt if temp ≥ then temp = temp mod n end if if temp < then temp = n − ((−temp ) mod n) end if t0 = t t = temp n0 = a0 a0 = r ⎡n ⎤ q=⎢ 0⎥ ⎣ a0 ⎦ r = n0 − qa0 end while if a0 ≠ then a khơng có phần tử nghịch đảo modulo n else a −1 = t mod n end if 27 Chương 2.5 Phương pháp Vigenere Trong phương pháp mã hóa thay trường hợp đặc biệt phương pháp (mã hóa dịch chuyển, mã hóa Affine,…), ứng với khóa k chọn, phần tử x ∈ P ánh xạ vào phần tử y ∈ C Nói cách khác, ứng với khóa k ∈ K , song ánh thiết lập từ P vào C Khác với hướng tiếp cận này, phương pháp Vigenere sử dụng từ khóa có độ dài m Có thể xem phương pháp mã hóa Vigenere Cipher bao gồm m phép mã hóa dịch chuyển áp dụng luân phiên theo chu kỳ Khơng gian khóa K phương pháp Vigenere Cipher có số phần tử n m , lớn hẳn phương pháp số lượng phần tử khơng gian khóa K phương pháp mã hóa dịch chuyển Do đó, việc tìm mã khóa k để giải mã thơng điệp mã hóa khó khăn phương pháp mã hóa dịch chuyển Thuật tốn 2.5 Phương pháp mã hóa Vigenere Chọn số nguyên dương m Định nghĩa P = C = K = (Z n )m { K = (k0 , k1 , , kr −1 ) ∈ (Z n )r } Với khóa k = (k0 , k1 , , k r −1 ) ∈ K , định nghĩa: ek ( x1 , x2 , , xm ) = (( x1 + k1 ) mod n, ( x2 + k2 ) mod n, , ( xm + km ) mod n) d k ( y1 , y2 , , ym ) = (( y1 − k1 ) mod n,( y2 − k2 ) mod n, , ( ym − km ) mod n) với x, y ∈ (Z n ) m 28 Một số phương pháp mã hóa quy ước 2.6 Phương pháp Hill Phương pháp Hill Lester S Hill công bố năm 1929: Cho số nguyên dương m, định nghĩa P = C = (Z n ) m Mỗi phần tử x ∈ P m thành phần, thành phần thuộc Z n Ý tưởng phương pháp sử dụng m tổ hợp tuyến tính m thành phần phần tử x ∈ P để phát sinh m thành phần tạo thành phần tử y ∈ C Thuật toán 2.6 Phương pháp mã hóa Hill Chọn số nguyên dương m Định nghĩa: P = C = (Z n ) m K tập hợp ma trận m × m khả nghịch ⎛ k1,1 ⎜ ⎜ k 2,1 Với khóa k = ⎜ # ⎜ ⎜k ⎝ m,1 k1, " # k m,2 ⎛ k1,1 ⎜ ⎜ k 2,1 ek (x ) = xk = ( x1 , x , , x m )⎜ # ⎜ ⎜k ⎝ m,1 k1,m ⎞ ⎟ " k 2,m ⎟ ∈ K , định nghĩa: # ⎟ ⎟ " k m,m ⎟⎠ " k1, " # k m, k1,m ⎞ ⎟ " k 2, m ⎟ với x = ( x1 , x2 , , xm ) ∈ P # ⎟ ⎟ " k m,m ⎟⎠ " d k ( y ) = yk −1 với y ∈ C Mọi phép toán số học thực Z n 29 Chương 2.7 Phương pháp mã hóa hốn vị Những phương pháp mã hóa nêu dựa ý tưởng chung: thay ký tự thông điệp nguồn ký tự khác để tạo thành thơng điệp mã hóa Ý tưởng phương pháp mã hóa hốn vị (Permutation Cipher) giữ nguyên ký tự thơng điệp nguồn mà thay đổi vị trí ký tự; nói cách khác thơng điệp nguồn mã hóa cách xếp lại ký tự Thuật tốn 2.7 Phương pháp mã hóa hốn vị Chọn số nguyên dương m Định nghĩa: P = C = (Z n ) m K tập hợp hoán vị m phần tử {1, 2, , m} Với khóa π ∈ K , định nghĩa: ( ) eπ ( x1 , x2 , , xm ) = xπ (1) , xπ ( 2) , , xπ ( m) ( d π ( y1 , y2 , , ym ) = yπ−1 (1) , yπ −1 ( 2) , , yπ−1 ( m ) ) với π–1 hoán vị ngược π Phương pháp mã hóa hốn vị trường hợp đặc biệt phương pháp Hill Với hoán vị π tập hợp {1, 2, , m} , ta xác định ma trận kπ = (ki , j ) theo cơng thức sau: ⎧⎪1, i = π ( j ) ki , j = ⎨ ⎪⎩0, trường hợp ngược lại 30 (2.4) Một số phương pháp mã hóa quy ước Ma trận k π ma trận mà dịng cột có phần tử mang giá trị 1, phần tử lại ma trận Ma trận thu cách hoán vị hàng hay cột ma trận đơn vị I m nên k π ma trận khả nghịch Rõ ràng, mã hóa phương pháp Hill với ma trận k π hồn tồn tương đương với mã hóa phương pháp hoán vị với hoán vị π 2.8 2.8.1 Phương pháp mã hóa phép nhân Phương pháp mã hóa phép nhân Thuật tốn 2.8 Phương pháp mã hóa phép nhân Cho P = C = (Z n ) m , K = {k ∈ Z n : gcd( k , n) = 1} Với khóa k ∈ Z n , định nghĩa: ek ( x) = k x mod n d k ( y ) = k −1 y mod n với x, y ∈ Z n Phương pháp mã hóa phép nhân (Multiplicative Cipher) phương pháp mã hóa đơn giản Khơng gian khóa K có tất φ (n) phần tử Tuy nhiên, việc chọn khóa k = ∈ K khơng có ý nghĩa việc mã hóa thơng nên số lượng phần tử thật sử dụng K φ (n) − Vấn đề đặt độ an toàn phương pháp phụ thuộc vào số lượng phần tử tập khóa K Nếu giá trị φ (n) − khơng đủ lớn thơng tin mã hóa bị giải mã cách thử toàn khóa k ∈ K Để nâng 31 Chương cao độ an toàn phương pháp này, giá trị n sử dụng phải có φ (n) đủ lớn hay giá trị n phải đủ lớn Khi đó, vấn đề đặt làm thực cách nhanh chóng phép toán số nguyên lớn 2.8.2 Xử lý số học Trong phương pháp mã hóa này, nhu cầu tính giá trị biểu thức z = (a × b) mod n đặt thao tác mã hóa giải mã Nếu thực việc tính giá trị theo cách thơng thường rõ ràng khơng hiệu thời gian xử lý lớn Sử dụng thuật tốn phép nhân Ấn Độ, ta sử dụng để tính giá trị biểu thức z = (a × b) mod n cách nhanh chóng hiệu Thuật toán 2.9 Thuật toán phép nhân Ấn Độ để tính giá trị z = (a × b) mod n z=0 a = a mod n b = b mod n Biểu diễn b dạng nhị phân bl −1 , bl − , , b2 , b1 , bi ∈ {0,1} , ≤ i < l for i = to l − if bi = then z = ( z + a ) mod n end if a = (2a) mod n end for z = ( z + a ) mod n 32 ... mã hóa 5.3.5 Quy trình giải mã 5.4 Phương pháp mã hóa TwoFish 5.4 .1 Khởi tạo phân bố khóa 5.4.2 Quy trình mã hóa 5.4.3 Quy trình giải mã 5.5 Kết luận 11 5 11 5 11 6 11 7 11 8 12 3 13 5 13 7 13 8 13 9 14 3... 10 9 11 0 11 0 11 1 4.7 Kết luận 11 3 Chương Các thuật tốn ứng cử viên AES 5 .1 Phương pháp mã hóa MARS 5 .1. 1 Quy trình mã hóa 5 .1. 2 S–box 5 .1. 3 Khởi tạo phân bố khóa 5 .1. 4 Quy trình mã hóa 5 .1. 5 Quy... tháng 01 năm 2005 Mục lục Chương Tổng quan 15 1. 1 Mật mã học 15 1. 2 Hệ thống mã hóa (cryptosystem) 16 1. 3 Hệ thống mã hóa quy ước (mã hóa đối xứng) 18 1. 4 Hệ thống mã hóa khóa cơng cộng (mã hóa