🔙 Quay lại trang tải sách pdf ebook Giáo trình An Toàn Bảo Mật Dữ Liệu Ebooks Nhóm Zalo i * G T . 0000026899 ĐẠI HỌC THÁI NGUYÊN : CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TRÀN ĐỨC Sự (Chủ biên) - NGUYỄN VĂN TẢO, TRÀN THỊ LƯỢNG Giáo trình I I NGUYỄN )C LIỆU III i l ì NHÀ XUẤT BẢN ĐẠI HỌC THÁI NGUYÊN ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRƯYÈN THÔNG TRÀN ĐỨ C S ự (Chủ biên) NGUYÊN VĂN TẢ O , TRẦN THỊ LƯỢNG GIÁO TRÌNH AN TOÀN BẢO MẬT DỮ LIỆU NHÀ XU ÁT BẢN ĐẠI HỌC THÁI NGUYÊN NĂM 2015 - , 0 2 -35 • Mà SÓ :------— ------ V - '-..H MA í'O K ĐHTN- 2015 Biên mục trên xuất bản phẩm của Trung tâm Học liệu - Đại học Thái Nguyên Trần, Đức Sự (chủ biên) Giáo trình an toàn và bảo mật dữ liệu / Trần Đức Sự (chủ biên), Nguyễn Văn Tảo, Trần Thị Lượng. - Thái Nguyên: Đại học Thái Nguyên , 2015. - 236 tr.; 24 cm. ISBN: 978-604-915-250-4 l.An toàn thông tin - Giáo trình. 2. An toàn dữ liệu - Giáo trình. 3. Mật mã khoá bí mật - Thuật toán. 4. Mật mã khóa công khai - Thuật toán. I. Nguyễn, Văn Tảo. II Trần, Thị Lượng. 005.8-d cl4 2 MỤC LỤC DANH MỤC TỪ NGỮ VIẾT TẨT 7 DANH MỤC BÀNG........................................................................................ 8 DANH MỤC HỈNH VẼ 8 LÒI NÓI Đ Ầ U .................................................................................................10 Chưcmg 1. GIỚI THIỆU CHUNG 12 1.1. Hệ thống thông tin và các hình thức tấn công hệ thống thông tin 12 1.1.1 Thông tin và hệ thống thông tin ...................................................12 1.1.2. Ba thuộc tính cơ bản của thông tin 13 1.1.3. Các hình thức tấn công vào hệ thống thông tin..........................14 1.2. Mật mã và an toàn thông tin 19 1.2.1. Các ứng dụng cùa mật mã 19 1.2.2. Vai trò của mật mã trong bảo đảm an toàn thông tin..................21 1.3. Sơ lược về mật mã học 22 1.3.1. Các khái niệm cơ bản......................................................................23 1.3 .2. Các kiểu tấn công vào hệ mật m ã................................................. 25 1.3.3. Phân loại các thuật toán mật mã....................................................... 26 1.4. Cơ sở toán học của lý thuyết mật mã 28 1.4.1. Kiến thức về độ phức tạp tính toán............................................... 28 1.4 2. Kiến thức về lý thuyết số ............................................................... 33 1.5. Bài tập......................................................................................................52 Chương 2. HỆ MẬT Mà KHÓA BÍ MẬT 55 2.1. Giới thiệu.................................................................................................55 2.2. Mật mã cổ điển.......................................................................................57 2.2.1. Mã dịch chuyển............................................................................... 57 2.2.2. Mã thay thế.......................................................................................58 2.2.3. Mã hoán vị.................................................................................. . 59 2.2.4. Mã Affine.................................................................................. 61 2.2.5. Mã Vigenère....................................................................................66 2.2.6. Hệ mật Hill................................................................................. 68 2.2.7. Hệ mật mã Playfair..................................................................... 73 2.3. Mã dòng.............................................................................................. 76 2.4. Mã khối........................................................................................... 78 2.4.1. Giới thiệu chung............................................................................78 2 4.2. Các khái niệm cơ bản................................................................. 79 2.4.3. Các chế độ hoạt động cùa mã khối (Modes of operation) 83 2 4 4 Chuẩn mã dữ liệu (DES)................................................................93 2.4.5. Chuẩn mã dữ liệu tiên tiến (AES) 123 2.5. Bài tập.............................................................................................. . 128 Chương 3. MẬT MẢ KHÓA CÔNG KHAI 132 3.1. Giói thiệu chung 132 3.2. Hệ mật RSA 135 3.2.1. Thuật toán mã hóa, giải mãRSA 138 3.2.2 Kiểm tra qui tắc giải mã 139 3.2.3. Độ an toàn của hệ RSA................................................................ 140 3.2.4. Thực hiện RSA........................................................................... 141 3.2.5. Vấn đề điểm bất động trong RSA 141 3.3. Hệ mật Rabin.................................................................................... 142 3.3.1. Tạo khóa......................................................................................142 3.3 .2. Mã hóa và giải mã của hệ mật Rabin 143 3.3.3. Ví d ụ ......................................................................................... . 143 3.3.4 Đánh giá hiệu quả....................................................................... 144 3.4. Hệ mật Elgamal................................................................................144 3.4.1. Bài toán logarit rời rạc............................................................... 144 3.4.2. Mã hóa, gi ái mã Klgamal 155 3.4.3. Tham số cùa hệ m ật....................................................................... 156 3.5. Một số hệ mã khóa công khai khác 158 3.5.1. Bài toán xếp ba lô và hệ mật Merkle - Hellman 158 3.5.2. Hệ mật Chor - Rivest (CR) 161 3.5.3. Bài toán mã sửa sai và hệ mật McElice 166 3.5.4. Hệ mật trên đường cong elliptic 172 3.6. Ưu, nhược điểm của hệ mật khóa công khai 181 3.7. Bài tập 181 Chương 4. HÀM BĂM VÀ CHỮ KÍ SỐ 184 4.1. Giới thiệu về hàm băm 184 4.1.1. Khái niệm và phân loại hàm băm 185 4.1.2. Các tính chất cơ bản 187 4.2. Các hàm băm không có khóa 191 4.2.1 MDC độ dài đơn 193 4.2.2. MDC độ dài kép: MDC -2 và MDC - 4 194 4.3. Các hàm băm có khóa (MAC) 196 4.3.1. MAC dựa trên các mật mã khối 197 4.3.2. Xây dựng MAC từ M DC..............................................................198 4.4. Chữ kí số................................................................................................200 4.4.1. Khái niệm chữ ký số..................................................................... 200 4.4.2. Phân loại chữ ký số.......................................................................202 4 4.3. Xác thực giữa những người sù dụng 206 4.4.4. Kết hợp chữ ký số và mã hoá.......................................................206 4.5. Các lược đồ chữ ký số thông dụng 207 4.5.1. Lược đồ RSA 207 4.5.2. Lược đồ Elgamal 208 4.5.3. Lược đồ chữ ký số chuẩn DSS 209 5 4.5 4 Lược đồ chữ ký số trên EC................................. 210 4.6. Một số lược đồ chữ ký khác 213 4 6.1. Sơ đồ Shamir............................................................................. 213 4.6.2. Sơ đồ Ong - Schnorr - Shamir 219 4.6.3. Các chữ ký số có nén.................................................................... 222 4.7. ứng dụng của chữ ký số 226 4 7.1. ứng dụng của chữ ký số.............................................................. 226 4.7.2. Luật về chữ ký số cùa một số nước trên thế giới.......................226 4.7.3. Chữ ký số tại Việt Nam 228 4.8. Bài tập 229 TÀI LIỆU THAM KIIẢO 234 6 DANH MỤC TỪ NGỮ VIÉT TẮT ATTT An toàn thông tin AES Advanced Chuẩn mã dữ liệu tiên tiến Encryption Standard CBC Cipher Block Chaining Chế độ liên kết khối mã CFB Cipher Feedback Chế độ phản hồi mã CRHF Collission Resistant Hash Hàm băm kháng va chạm Function DES Data Encryption Standard Chuẩn mã dữ liệu DSS Digital Signature Standard Chuẩn chữ kí số ECB Electronic Code Book Chế độ quyển mã điệííi tủ LAN Local Area Network Mạng cục bộ LFSR Linear Feedback Sequence Thanh ghi hồi tiếp tuyến tính Register LSB Least Signification Bit Bít thấp nhất (có giá trị nhỏ nhất) MAC Massage Authentication Code Mã xác thực thông báo MDC' Manipulation Detection Code Mã phát hiện sự sửa đổi MDV Mã dịch vòng MHV Mã hoán vị MTT Mã thay thế OWHF One Way Hash Function Hàm băm một chiều. OTP One Time Pad Hệ mật khóa dùng một lần RSA Rivest - Shamir - Adleman Thuật toán RSA EC Elliptic Curve Đường cong elliptic 7 DANH MỤC BẢNG Bảng 1.1. Thuật toán Euclide mờ rộng và các giá trị vào a = 4864, b = 3458.........38 Bảng 1.2. Cấp của các phần tử trong z*2/..............................................41 Bảng 1.3. Các lũy thừa của 6 .........................................................................42 Báng 1.4. Tính 5596 mod 1234..................................................................... 44 Bảng 1.5 Độ phức tạp bit cùa các phép toán cơ bản ừong Z n ............... 45 Bảng 1.6. Các ký hiệu Jacobi của các phần tử trong ..........................49 Bảng 2.1. Số các vòng mã hóa của A ES....................................................124 Bảng 3.1. Kết quả tính bước 3 của thuật toán Pollard.............................. 136 Bảng 3.2. Giải lôgarit red rạc bằng thuật toán p-pollard........................... 148 Bảng 3.3. Một số số nguyên tố dạng p=2q+l............................................ 157 Bảng 3.4. Giá trị y tương ứng với X trên Z23..............................................174 Bảng 3.5. Bảng tính kP................................................................................ 177 DANH MỤC HÌNH VẺ Hình 1.1. Mối quan hệ giữa ba tính chất cơ bản của T T............................ 14 Hình 1.2. Sơ đồ tổng quát hệ thống thông tin viễn thông và các hiểm hoạ ATTT đi kèm .................................................................................................. 15 Hỉnh 1.3. Các hình thức tấn công đối với thông tin trên m ạng................. 16 Hình 1.4. Các tấn công bị động và chủ đ ộ n g ................................................ 17 Hình 1.5. Sơ đồ khối của một hệ thống thông tin số.................................. 22 Hình 1.6 . Sơ đồ hệ thống thông tin m ật...................................................... 24 Hình 1.7. Lược đồ các thành phần mật mã cơ bản..................................... 27 Hình 2.1. Sơ đồ khối cùa hệ truyền tin mật................................................. 55 Hinh 2.2. Mã dịch vòng.................................................................................57 Hinh 2.3. Mã Affine...................................................................................... 65 Hình 2.4. Mã Vigenère..................................................................................66 Hình 2.5. Bảng mã Vigenère........................................................................ 67 Hình 2.6. Mật mã H ill................................................................................... 73 Hình 2.7. Bốn kiểu hoạt động của mã khối..................................................85 Hinh 2 8 Một vòng của D E S........................................................................ 94 Hình 2.9 Hàm f của DES...............................................................................96 Hình 2.10. Tính bảng khóa D E S.............................................................. 100 Hình 2.11. Chế độ ECB..............................................................................115 Hình 2.12. Chế độ CBC..............................................................................116 Hình 2.13. Chế độ CFB..............................................................................117 Hinh2 14 Chế độ OFB..............................................................................117 Hinh 2 15. DES bội h a i..............................................................................119 Hình 2.16. Mã hóa và giải mã TDES với hai khóa...................................120 Hình 2.17. Thuật toán mã hóa GDES......................................................... 122 Hình 3 1 Hệ mật Mc Elice.......................................................................170 Hình 3.2. Các đường cong y2 = X3 + 2x + 5 và y2 = X3 - 2 x + 1 ...........172 Hình 3.3. Nhóm E23(l, 1)......................................................................... 175 Hình 4.1 Phân loại các hàm băm mật mã và ứng dụng.........................186 Hình 4.2. MDC độ dài đơn........................................................................ 193 Hình 4.3. Thuật toán MDC - 2..................................................................195 Hình 4.4. Thuật toán MDC - 4 ..................................................................196 Hình 4.5. Thuật toán MAC dùng CBC.....................................................198 Hỉnh 4.6. Lược đồ chữ ký số với phần đính kèm..................................... 204 Hình 4.7. Lược đồ chữ ký số khôi phục thông điệp.................................204 Hình 4.8. Xác thực thông báo dùng sơ đồ chữ k í..................................... 214 Hình 4.9. Vòng nén chữ k í........................................................................ 222 Hình 4 10 Sơ đồ chữ kí D - L (đầu phát)............................................... 224 Hình 4.11. Kiểm tra chữ kí D - L (đầu thu)............................................ 225 9 LỜI NÓI ĐÀU Trong thế giới hiện đại, vai trò của máy tính và hệ thống thông tin điện tử ngày càng quan trọng, càng ngày càng có nhiều nhu cầu truyền dẫn, lưu trữ và thậm chí là thực hiện các giao dịch nghiệp vụ trên các hệ thống thông tin điện tử. Trong xã hội bùng nổ thông tin, khi mà thông tin có vai trò và giá trị vượt trội quyết định đến sự thành bại của công tác nghiệp vụ, từ các doanh nghiệp vừa và nhỏ đến các tập đoàn lớn xuyên quốc gia, các cơ quan an ninh, các tổ chức chính trị, xã hội cho đến các trường học, viện nghiên cứu thì vấn đề đảm bảo được an ninh thông tin là một vấn đề được đặt lên hàng đầu. Do vậy, một ứng dụng công nghệ thông tin ngoài việc đáp ứng đầy đủ các yêu cầu nghiệp vụ còn đòi hỏi phải đảm bảo đuợc tính an toàn cho thông tin và dữ liệu trong quá trình xử lý và lưu trữ, tức là phải đảm bảo được các đặc tính: - Tinh bí mật (Confidential) - Tính xác thực (Authentication) - Tính toàn vẹn (Intergrity) của thông tin. Để đảm bảo được các đặc tính này của thông tin, hệ thống thông tin và người quản trị hệ thống cần thực hiện rất nhiều quy tắc và phương pháp khác nhau, từ đảm bảo an toàn vật lý cho đến đảm bảo an toàn người dùng.. và đặc biệt quan trọng nhất là đảm bảo an toàn dữ liệu khi lưu trữ và truyền dẫn. vấn đế an toàn và bảo mật thông tin cũng liên quan rất nhiều đến các ngành khoa học khác đặc biệt là Toán học, do vậy việc trình bày đầy đủ mọi khía cạnh của nó trong khuôn khổ một giáo trình là một điều khó có thể làm được. Chính vi lý do đó, trong Giáo trình An toàn bảo mật dữ liệu này các vấn đề về đảm bảo an toàn vật lý và người dùng cũng như các vấn đề liên quan đến kỹ thuật và quy tắc sẽ không được nhắc đến nhiều. Nội dung chính trong giáo trình chỉ chủ yếu đề cập đến vấn đề bảo đảm an toàn thông tin bằng các giao thức và thuật 10 toán mật mã - một công cụ vốn đã xuất hiện và được sử dụng từ rất sớm để bao đam tính bí mật cho thông tin. Giáo trình An toàn bảo mật dữ liệu được biên soạn phục vụ cho sinh viên đại học, cao học các ngành Công nghệ thông tin hoặc Khoa học máy tính như là một giáo trình cơ sở giúp cho sinh viên bước đầu tim hiểu các vấn đề và các thuật toán cơ bản trong mật mã trong việc đảm bảo an toàn và bảo mật dữ liệu. Nội dung giáo trình bao gồm 4 chương: Chưí/ng 1. Giới thiệu chung: Trinh bày một số khái niệm, định nghĩa cơ bản và cơ sở lý thuyết thông tin áp dụng cho các hệ mật. Chưimg 2. Mật mã khóa bí mật: Trình bày các thuật toán mật mã khoá bí mật bao gồm các thuật toán hoán vị, thay thế và các thuật toán kết hợp mà chủ yếu là DES và AES. Chương 3. Mật mã khóa công khai: Trình bày các thuật toán cơ bản trong mật mã khóa công khai bao gồm các các hệ mật RSA, Merkle Hellman, Rabin, ElGamal, hệ mật trên đường cong Elliptic và hệ mật McEliece. Chương 4. Hàm hăm và chữ ký sổ: Trình bày khái niệm hàm băm và các úng dụng trong việc xác thực và đảm bảo tính toàn vẹn của dữ liệu. Sau mỗi chương đều có các bài tập nhằm giúp cho sinh viên có thể nam vững, hiểu cụ thể và sâu sắc hơn các vấn đề lý thuyết được trình bày. Việc biên soạn giáo trình không thể tránh khỏi các thiếu sót nhất định. Nhóm tác giả rất mong nhận được các ý kiến đóng góp quý báu của các quý đồng nghiệp, quý độc giả và các em học viên, sinh viên để cho lần tái bản sau cùa giáo trình được hoàn thiện hơn. CÁC TÁC GIA TRÀN ĐỨC S ự NGUYÊN VĂN TẢO TRÀN THỊ LƯỢNG 11 C hương 1 GIỚI THIỆU CHUNG 1.1. Hệ thống thông tín và các hình thức tấn công hệ thống thông tin 1.1.1. Thông tin và hệ thống thông tin Trên quan điểm an toàn thông tin người ta định nghĩa thông tin như sau: Định nghĩa 1.1. Thông tin là tập hợp các dữ liệu (các tin tức) về thế giới xung quanh chúng ta (các sự kiện, các cá nhân, các hiện tượng, các quá trình, các nhân tố và các mối liên hệ giữa chúng), đuực thể hiện trong dạng thức phù hợp cho việc truyền đi bởi những người này và tiếp nhận bới những người kia và được sử dụng với mục đích thu nhận kiến thức (các tri thúc) và đưa ra những quyết định. Ngày nay thông tin được hình thành, tồn tại và vận động trong các hệ thống thông tin - viễn thông. Chúng ta cần định nghĩa rõ về khái niệm hệ thống thông tin - viễn thông. Định nghĩa 1.2. Hệ thống thông tin - viễn thông là tập hợp các thiết bị kỹ thuật và bào đàm phần mềm, liên hệ với nhau bằng các kênh truyền và nhận thông tin. Từ các yếu tố ngăn cách nhau về vị trí địa lý, chúng liên kết chặt chẽ với nhau thành một thế thống nhất nhằm mục đích bảo đảm chu trình công nghệ xử lý thông tin (tìm kiếm, lưu trữ, bảo vệ, xử lý, hiện đính) và cung cắp cho người dùng kết quà cua sự xư lý này ở dạng đòi hỏi (yêu cầu). Tóm lại, hệ thống thông tin - viễn thông bao gồm các mạng máy tính, các bảo đảm toán học (các phần mềm) và hệ thống liên lạc. Như vậy, ta thấy thông tin là các tri thức trong ý nghĩa rộng nhất của từ này. Vì rằng thông tin phản ánh các thuộc tính của các đối tượng vật chất và mối quan hệ giữa chúng, nên theo các khái niệm cơ bản cùa triết học, thông tin có thể coi là đối tượng cùa nhận thức. 12 Suy cho cùng, bảo đảm thông tin là cơ sở cho bất kỳ hoạt động nào của con người. Thông tin trở thành một trong những phương tiện cơ bản để giải quyết các vấn đề và các nhiệm vụ của một quốc gia, của các đảng chính trị và các nhà lãnh đạo cùa các cơ quan thương mại khác nhau và của cá nhân con người. Ngày nay, kinh tế thế giới phát triển ở mức độ cao, khoa học công nghệ đã đưa tới sự ra đời của nền kinh tế tri thức. Lượng thông tin tích luỹ được về mọi khía cạnh của cuộc sống xã hội hiện đại trở nên khổng lồ. Các thông tin mới được sáng tạo ra với tốc độ ngày càng cao. Nhưng mặt khác, việc thu nhận thông tin bằng con đường nghiên cứu, khào sát riêng (của cá nhân hoặc của tập thể) ngày càng trở nên đắt giá, tốn kém và khó khăn. Cho nên việc thu lượm thông tin bằng con đường rẻ hơn nhưng bất hợp pháp (tức là lấy cắp thông tin) ngày càng trở nên thường xuyên và mở rộng hơn bao giờ hết. Trong bối cảnh đó, nhiệm vụ bảo vệ an ninh thông tin trong tất cả các lĩnh vực hoạt động của con người đang ngày càng trở nên cấp thiết: trong phục vụ các cơ quan Nhà nước (lãnh đạo, chi huy, an ninh, quốc phòng, đối ngoại); trong thương mại, kinh doanh; trong hoạt động khoa học công nghệ, trong sản xuất và thậm chí trong đời sống riêng tư của các cá nhân. Sự cạnh tranh thường xuyên giữa các phương pháp lấy cắp thòriR tin (và các phương tiện thực hiện chúng) với các phương pháp (phương tiện) bảo vệ thông tin đã dẫn đến sự xuất hiện trên thị trường rất nhiều chủng loại thiết bị bảo vệ thông tin, và cũng đã xuất hiện vấn đề lựa chọn chúng sao cho tối ưu và sử dụng cho hiệu quả trong những điều kiện cụ thể. Để làm rõ vấn đề bảo vệ an ninh thông tin, ta đi vào ba thuộc tính cơ bản cùa thông tin dưới đây. 1.1.2. Ba thuộc tính cơ bản của thông tin Chúng ta định nghĩa ba thuộc tính cơ bản cùa thông tin như đối tuợng cần bảo vệ. Đó là tính bí mật, tính toàn vẹn và tinh san sàng dịch vụ của thông tin. Trên thực tế khó phân biệt ranh giới giữa chúng. Ba phạm trù này có những miền giao nhau. Dễ thấy rằng, có những thông tin 13 mật dành riêng cho một đối tượng dùng mà việc đáp ứng tính bí mật đã bao hàm cả sự toàn vẹn và sẵn sàng phục vụ rồi. Có thể miêu tả quan hệ giữa ba tính chất cơ bản của thông tin trong sơ đồ sau: Hình 1.1. Mối quan hệ giữa ba tính chất cơ bản cùa TT > Đảm bảo tính bí mật (Confidentiality): có nghĩa là ngăn chặn/phát hiện/cản trơ những truy nhập thông tin ừái phép. Nói chung, tính bí mật được sử dụng để bảo vệ dữ liệu trong những môi trường bảo mật cao như các trung tâm quân sự hay kinh tế quan trọng, bảo vệ tính riêng tư cùa dữ liệu. > Đảm bảo tính toàn vẹn (Integrity): có nghĩa là ngăn chặn/phát hiện/cản trở các sửa đổi thông tin trái phép. > Đảm bảo tính sẵn sàng (Availability): có nghĩa là ngăn chặn/phát hiện/cản trở sự từ chối trái phép các truy nhập hợp pháp đến dịch vụ trong hệ thống. Như vậy vấn đề an toàn thông tin có thể được hiểu là vấn đề đảm bảo ba thuộc tính cơ bản của thông tin là: tính toàn vẹn, tính bí mật và tính sẵn sàng. Ba thuộc tính này cùa thông tin có thể bị tác động và ảnh hưởng bởi các hình thức tấn công hệ thống thông tin mà ta quan tâm dưới đây. 1.1.3. Các hình thức tấn công vào hệ thống thông tin An toàn thông tin (ATTT) là một nhu cầu rất quan trọng đối với các cá nhân cũng như các tổ chức xã hội và các quốc gia trên thế giới. Trước 14 khi sử dụng máy tính và mạng máy tính, an toàn thông tin được tiến hành thông qua các phương pháp vật lý và hành chính. Từ khi ra đời cho đến nay mạng máy tính đã đem lại hiệu quả vô cùng to lớn trong tất cả các lĩnh vực của đời sống kinh tế, chính trị, xã hội. Bên cạnh đó người sử dụng mạng phải đối mặt với các hiểm họa do thông tin trên mạng cùa họ bị tấn công. An toàn thông tin trên mạng máy tính bao gồm các phương pháp nhằm báo vệ thông tin được lưu giữ và truyền trên mạng. An toàn thông tin trên mạng máy tính là một lĩnh vực đang được đặc biệt quan tâm đồng thời cũng là một công việc hết sức khó khăn và phức tạp. Có rất nhiều các sự kiện thực tế để chứng tỏ rằng có một tỉnh trạng rất đáng lo ngại về các tấn công thông tin trong quá trình xử lý, truyền và lưu giữ thông tin Những tác động bất hợp pháp lên thông tin với mục đích làm tổn thất, sai lạc, lấy cắp các tệp lưu giữ tin, sao chép các thông tin mật, giả mạo người được phép sử dụng thông tin trong các mạng máy tính. Hiện nay, có nhiều phương pháp khác nhau được sử dụng để có thể đưa ra các hiểm hoạ ATTT đối với một hệ thốngthông tin - viễn thông, ví dụ nhu: phương pháp liệt kê, phương pháp cây hiểm hoạ, phương pháp phân loại học... Các phương pháp này đều sử dụng các sơ đồ, bảng biểu... Dưới đây là một sơ đồ tổng quát của hệ thống thông tin và các hiểm họa ATTT đi kèm với nó. Hình 1.2. Sơ đồ tống quát hệ thống thông tin viễn thông và các hiểm hoạ A 777 đi kèm 15 Trên mạng máy tính, thông tin bao gồm nhiều loại khác nhau như: văn bản, hình ảnh, âm thanh. Chúng được lưu giữ trong các thiết bị như: ổ đĩa, băng từ... hoặc được truyền qua kênh công khai. Những thông tin có giá trị luôn luôn gặp những mối đe dọa của những người không có thẩm quyền biết nội dung thông tin. Họ có thể là những người dùng bất hợp pháp hoặc thậm chí là những người dùng trong nội bộ của cơ quan, tổ chức. Trên đường truyền công khai, thông tin có thể bị tấn công bởi những người không được uỷ quyền nhận tin, ta gọi là kẻ tấn công. Các tấn công đối với thông tin trên mạng bao gồm: 1.1.3.1. Ngăn chặn thông tin (Interruption) Tài nguyên thông tin bị phá huỷ, không sẵn sàng phục vụ hoặc không sử dụng được Đây là hình thức tấn công làm mất khá năng sẵn sàng phục vụ của thông tin. Những ví dụ về kiểu tấn công này là phá huỷ đĩa cứng, cắt đứt đường truyền tin, vô hiệu hoá hệ thống quản lý tệp. 1.1.3.2. Chặn bắt thông tin (Interception) Kẻ tấn công có thể truy nhập tới tài nguyên thông tin. Đây là hình thức tấn công vào tính bí mật của thông tin. Trong một số tình huống kẻ tấn công được thay thế bởi một chương trình hoặc một máy tính. Việc chặn bắt thông tin có thể là nghe trộm để thu tin trên mạng và sao chép bất hợp pháp các tệp hoặc các chương trình. o ---------------■ o thâng ân tbtegtan (a)LuÀng bành Ihường ° ố ~ ° Hình 1.3. Các hình thức tấn công đối với thông tin trên mạng 1.3.3. Sửa đối thông tin (Modification) cẻ tấn công truy nhập, chỉnh sửa thông tin trên mạng. Đây là hình thức ấn công lên tính toàn vẹn của thông tin. Kẻ tấn công có thể thay đổi giá tr trong tệp dữ liệu, sửa đổi một chương trình để nó vận hành khác đi và sìa đổi nội dung các thông báo truyền trên mạng. '.1.3.4. Chèn thông tin già (Fabrication) Kẻ tấn công chèn các thông tin và dữ liệu giả vào hệ thống. Đây là hình hức tấn công lên tính xác thực của thông tin. Nó có thể là việc chèn các nông báo giả mạo vào mạng hay thêm các bản ghi vào tệp. Các kiểu tấn công trên được phân chia thành hai lớp cơ bản là tấn công chủ động và bị động. Hình 1.4 chi ra các các kiểu tấn công thuộc các líp tấn công chủ động, tấn công bị động tương ứng. • Tấn công bi đôns A kiểu tấn công chặn bắt thông tin như: nghe trộm và quan sát truyèĩ tin. Mục đích của kẻ tấn công là biết được thông tin truyền trên rnạnị.. Có hai kiểu tấn công bị động là khám phá nội dung thông báo và phân tích luồng thông tin. Hình ỉ. 4. Các tấn công bị động và chủ động ’ẽẠiKỌOTKẤĩMGUVạì 17 K i r ó M H ọ c a ậ i ị Việc khám phá nội dung có thể được thực hiện bằng cách nghe trộm các cuộc nói chuyện điện thoại, đọc trộm thư điện tử hoặc xem trộm nội dung tệp tin rõ . Trong kiểu phân tích luồng thông tin, kẻ tấn công thu các thông báo được truyền trên mạng và tìm cách khám phá thông tin. Nếu nội dung các thông báo bị mã hoá thì đối phương có thể quan sát các mẫu thông báo đế xác định vị trí và định danh của máy tính liên lạc và có thể quan sát tần số và độ dài thông báo được trao đổi, từ đó đoán ra bản chất của các cuộc liên lạc. Tấn công bị động rất khó bị phát hiện vi nó không làm thay đổi số liệu và không để lại dấu vết rõ ràng. Biện pháp hữu hiệu để chống lại kiểu tấn công này là ngăn chặn chứ không phải là phát hiện. • Tấn cône chù đông Là các tấn công sửa đổi luồng dữ liệu hay tạo ra luồng dữ liệu già và có thể được chia làm bốn loại nhỏ sau : - Đóng già (Masquerade)'. Một thực thể (người dùng, máy tính, chương trình, ...) đóng giả thực thể khác. - Dùng lại (Replay)-. Thụ động bắt các thông báo và sau đó truyền lại nó nhằm đạt được mục đích bất hợp pháp. - Sưa đổi thông báo (Modification o f messages) . Một bộ phận của thông báo hợp lệ bị sửa đối hoặc các thông báo bị làm trễ và thay đổi trật tự để đạt được mục đích bất hợp pháp. - Từ ch ố i cu n g c ấ p d ịc h vụ (Denial o f S ervice). Ngăn h oặc cấm v iệ c sử dụng bỉnh thường hoặc quản lý các tiện ích truyền thông. Tấn công này có thể có chủ ý cụ thể, ví dụ một kẻ tấn công có thể ngăn cản tất cả các thông báo được chuyển tới một đích nào đó (như dịch vụ kiểm tra an toàn chang hạn), vô hiệu hoá một mạng hoặc tạo ra tình trạng quá tải với các thông báo của họ làm giảm hiệu năng mạng. Chúng ta thấy rằng hai kiểu tấn công chủ động và bị động có những đặc trưng khác nhau. Kiểu tấn công bị động khó phát hiện nhưng có biện 18 pháp để ngăn chặn thành công. Ngược lại, kiểu tấn công chủ động dễ phát hiện nhưng lại rất khó ngăn chặn tuyệt đối, nó cũng đòi hỏi phải bảo vệ vật lý đối với tất cả các phương tiện truyền thông ở mọi lúc, mọi nơi. Giải pháp để chống lại kiểu tấn công này là phát hiện chúng và khôi phục mạng sau khi mạng bị tấn công và thông tin bị trễ. 1.2. Mật mã và an toàn thông tin 1.2.1. Các ứng dụng của mật mã 1.1.2.1. ưng dụng trong đời sống thông tin, kinh tế, xã hội Sự phát triển lớn mạnh của công nghệ thông tin trong những năm vừa qua, đặc biệt là sự bùng nổ của mạng Internet đã dẫn đến việc sử dụng rộng rãi hệ thống máy tính trong mọi tổ chức, cá nhân và công cộng. Các hoạt động thông tin, kinh tế, xã hội cũng đang được áp dụng, triển khai rộng rãi qua mạng Internet. Từ đó cũng đã làm xuất hiện một nền kinh tế mới, nền kinh tế thương mại điện tử, nơi mà các hoạt động mua bán và dịch vụ đều dựa trên hệ thống mạng Internet. Hệ thống World Wide Web trước kia sử dụng giao thức HTTP đế đảm bảo cho việc truyền nhận thông tin tới các đối tượng, nhưng lại không thể đảm bảo bí mật cho các thông tin đó khi truyền đi, thì ngày nay đã đuợc thay thế bằng giao thức HTTPS, ngoài việc đảm bảo truyền nhận thông thường thì nội dung thông tin cũng được đảm bảo giữ bí mật. Khi các hàm băm chưa được sử dụng, các ngân hàng lưu trữ thông tin thẻ tín dụng ở dạng clear-text (gồm: tên chủ thẻ, số tài khoản, mã PIN, ngày hết hạn, V.V.. ) Điều này tạo ra nguy cơ bị lộ toàn bộ thông tin thẻ tín dụng, khi kẻ tấn công có thể truy cập và đọc được nội dung những trường hoặc file lưu trữ của cơ sờ dữ liệu đó (thông qua một số kiểu tấn công như SQL Injection chẳng hạn). Ngày nay mối lo ngại này đã được loại bỏ, các thông tin bí mật sẽ không được lưu trữ một cách trực tiếp, mà được thay thế bằng giá trị băm của thông tin đó, nên cho dù kẻ tấn công có thể đọc được giá trị băm, thì cũng rất khó để tìm ra thông tin bí mật trước khi bị băm là thông tin gi. 19 Các hoạt động xã hội trước kia, nhu: nộp thuế, kê khai thuế, vốn yêu cầu những văn bản có giá trị pháp lý cao, bắt buộc phải có chữ ký (hoặc dấu vân tay) của người nộp, kẽ khai thuế. Ngày nay, hình thức đó đã dần được chuyển sang bằng một phương pháp mới, đó là sử dụng chữ ký số để thay thế. Chữ ký số đã được chứng minh là an toàn về mặt tính toán, tóc thời gian để có thể tạo ra chữ ký số giả một cách hợp lệ với kẽ tấn công có năng lực tính toán hạn chế sẽ là rất lớn. Ví dụ, để phá RSA với độ dài khóa 1024 bít, độ phức tạp tính toán là 3.10*1 MIPS, còn với RSA 2048 bít, độ phức tạp tính toán là 3.1020 MIPS, với ECC độ dài khóa 234 bít, độ phức tạp tính toán là 1.6.1028 MIPS (1 MIPS = 1 triệu tập lệnh trên một giây). 1.1.2.2. ứng dụng trong an ninh, quốc phòng Ngay từ khi mới ra đời, đối tượng chủ yếu của mật mă là những người có liên quan đến quân đội, ngoại giao và chính phủ nói chung. Từ đó cho đến nay, mật mã đã được sử dụng như một loại công cụ, vũ khí đế bảo vệ các chiến lược và bí mật của quốc gia. Trong suốt thời kỳ trước và trong chiến tranh Thế giới lần thú II, nhằm bảo vệ bí mật quân sự, không để lộ ý đồ tác chiến, Quân đội Đức đã mã hóa hầu hết các chi thị và mệnh lệnh của họ. Chiếc máy mã Enigma có cơ chế mã hóa phức tạp hơn bất cứ loại mật mã nào từng biết đến trong lịch sử trước đó, và trong suốt quá trình sử dụng nó cũng liên tục được cải tiến, ngày càng phức tạp hơn, khiến cho người Đức luôn tin rằng “Enigma là bất khả xâm phạm”. Thế nhưng, từ đầu những năm 1933, các nhà toán học của Cục mật mã Ba Lan đã có thể giải được toàn bộ điện mật của Đức.Và với sự giúp đỡ của Ba Lan, người Anh và pháp đã đọc được các bức điện mật của Đức. Nhiều nhà sử học đã đánh giá rằng, nhờ công trình giải mã bằng máy mã Enigma mà Thế chiến thứ II đã “ngắn đi đến hai năm". Sau chiến tranh thế giới thứ II, công nghệ mật mã tiếp tục được giới quân sự các nước đầu tư nghiên cứu và phát triển. Một số quốc gia có những cơ quan chuyên nghiên cứu về những công nghệ này, ví dụ như 20 Cơ quan An ninh Quốc gia Hoa Kỳ/Cục An ninh Trung ương (NSA/CSS - National Security Agency/Central Security Service). NSA có liên quan rất nhiều đến tranh cãi xung quanh quá trình hình thành Chuẩn mã hóa dữ liệu (DES), một chuẩn mã khối dùng cho chính phủ. Trong suốt quá trình thiết kế DES tại IBM vào thập kỷ 1970, NSA đã đề xuất những thay đổi trong thuật toán. Vì thế, nhiều người nghi ngờ NSA đã cố tỉnh làm yếu thuật toán để có thể phá vỡ khi cần thiết. Nghi ngờ tập trung chủ yếu vào một thành phần quan trọng của thuật toán, S-box. Đây có thể là một cổng sau để NSA có thể dễ dàng đọc được các thông tin đã được mã hóa. Ngoài ra độ dài khóa cũng bị rút ngắn, tạo điều kiện cho NSA có thể phá vỡ hệ thống với hệ thống siêu máy tính của mình. Khi kỹ thuật phân tích mã lượng sai được tỉm ra thì những nghi ngờ này có phần được giảm bớt. S-box đã được sửa đổi có khả năng chống lại dạng tấn công này. Vì thế nhiều khả năng NSA đã biết đến phân tích mã lượng sai vào thời điểm thiết kế DES, trước khi kỹ thuật này được độc lập phát hiện vài thập kỷ sau đó. Tuy nhiên việc can thiệp để giảm độ dài khóa DES từ 128 (theo đề nghị của IBM) xuống còn 56 bít thì chỉ có thể giải thích rằng đây là cố gắng làm yếu thuật toán để NSA với công suất tính toán vượt trội của mình có thể tấn công duyệt toàn bộ để giải mã trong trường hợp cần thiết. NSA cũng là yếu tố quan trọng trong những tranh cãi hồi cuối thập kỷ 1990 trong vấn đề xuất khẩu công nghệ mật mã. Từ lâu, phần cứng và phần mềm mật mã được xếp cùng hạng với máy bay chiến đấu, xe tăng, pháo và bom nguyên tử. Tại nhiều thời điểm, NSA/CSS đã cố gang hạn chế việc xuất bản các tài liệu nghiên cứu về mật mã học. 1.2.2. Vai trò cùa mật mã trong bảo đảm an toàn thông tin Ờ trên ta đã xem xét một cách tổng quan về vai trò và ứng dụng của mật mã nói chung. Nhưng vai trò này tác động lên khâu nào của hệ thống thông tin và tác động nhu thế nào. vấn đề này sẽ được xem xét ở mục này. Trước hết, ta xem xét mô hình chung nhất của một hệ thống thông tin và vị trí, vai trò của mật mã trong hệ thống này, dưới đây là sơ đồ khối cùa một hệ thống thông tin số: 21 Đẩu vào rõ Bản rõ Bản má Hình 1.5. Sơ đồ khối của một hệ thống thông tin số Trường hợp nguồn tin đầu vào là nguồn tín số thì không cần bộ biến đổi A/D ở đầu vào và bộ biến đổi D/A ở đầu ra. Trong hệ thống này khối mã bảo mật có chức năng bảo vệ cho thông tin không bị khai thác bất hợp pháp, chống lại các tấn công sửa đổi, đánh cắp và giả mạo thông tin. Trong khuôn khổ của cuốn giáo trình này, tác giả sẽ tập trung trình bày về việc đảm bảo an toàn và bảo mật dữ liệu này bằng các thuật toán mật mã. 1.3. Sơ lược về mật mã học Khoa học mật mã đã ra đời từ hàng nghìn năm. Tuy nhiên, trong suốt nhiều thế kỷ, các kết quả của lĩnh vực này hầu như không được ứng đụng trong các lĩnh vực dân sự thông thường của đời sống - xã hội mà chù yếu được sử dụng trong lĩnh vực quân sự, chính trị, ngoại giao... Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quốc phòng.. cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng... Từ thời xa xưa, để tỏ lòng tôn kính những người đã chết, người Ai Cập đã khắc những mã tượng hình lên các ngôi mộ. Qua nhiều thế kỷ, phương pháp mật mã cũng đã có nhiều biến đổi. Chúng ta tạm phân mật mã làm hai phần, mật mã cổ điển và mật mã “hiện đại". Mật mã hiện đại gồm mật mã đối xứng và mật mã bất đối xứng. Mật mã hiện nay đang phát triển rất mạnh với rất nhiều thuật toán mã nổi bật như: DES, 3DES, 22 IDEA, Feal, AES, RSA Còn mật mã cô điên là mật mã được mã hoá và giải mã bằng thủ công. Mật mã loại này ra đời sớm nhất, nó được sử dụng lâu đời và là cơ sở, nền tảng để phát triển mật mã hiện đại. 1.3.1. Các khái niệm cơ bản Khoa học về mật mã (cryptology) bao gồm: - Mật mã học (cryptography): là khoa học nghiên cứu cách ghi bí mật thông tin nhằm biến bản tin rõ thành các bản mã. - Phán tích mật mã (cryptanalysis) hay mã thám: là khoa học nghiên cứu cách phá các hệ mật nhằm phục hồi bản rõ ban đầu từ bản mã. Các bản tin rõ và bản tin mã được định nghĩa như sau: Bơn tin rõ (Plain text): Bản tin rõ tức là một bản tin có mang nội dung thông tin mà người đọc có thể hiểu được nó nói cái gì hoặc là nó có ý nghĩa rõ ràng. Bán tin rõ có thể tồn tại dưới dạng chữ viết, tiếng nói, hình vẽ, biểu bảng... tương ứng ta sẽ có khái niệm mã ký tự, mã thoại, mã fax, mã dữ liệu, ... Bán mã mật (Cipher text): Bản mã mật thường được biểu diễn dưới dạng một dãy các ký hiệu hoặc có thể cũng thuộc bàng chữ cái những không theo một quy tắc cú pháp nào cả. Có thể xem đó là dãy ngẫu nhiên. Mục tiêu cơ bản của mật mã là cho phép hai người, thường được đề cập tới như Alice và Bob, liên lạc trên kênh không an toàn theo cách mà đối thủ Oscar không thể hiểu cái gi đang được nói. Kênh này có thể là đương diện thoại hoạc mây tinh chảng hạn. Thòng tin mà Alice muốn gùi tới cho Bob sẽ được gọi là “thông báo rõ”. Nó có thể là bài tiếng Anh, dữ liệu số v.v... Cấu trúc của nó hoàn toàn tuỳ ý. Alice mã thông báo rõ bằng cách dùng khoá xác định trước, và gửi thông báo mã thu được trên kênh không an toàn. Oscar, dù thấy thông báo mã này trên kênh không an toàn bằng cách nghe trộm, cũng không xác định được thông báo rõ là gi; nhưng Bob, người biết khoá mã, có thể giải thông báo mã và thiết lập thông báo rõ. Dùng quan niệm toán học ta sẽ mô tả khái niệm này hình thức hơn. tìịnh nghĩa 1.3. ịHệ mật mã) Hệ mật hay hệ mật mã là một bộ 5 thành phần (P, c, K, E, D) thoa mãn các điểu kiện sau đây: 23 I / p là tập hữu hạn các bàn rõ có thể. 2/ c là tập hữu hạn các bàn mã có thể. 3/ K là lập hữu hạn các khoá có thế (không gian khoá). 4/ Với mỗi k e K, ton tại một quy tắc mã ek e E và một quy tắc giải mã tương ứng dk £ D. Mỗi ek: p c và dk: c -ỳ p thoả mãn: dk (ek(x)) = X v ớ i m ỗ i b ả n r õ x e p . Alice và Bob sẽ thực hiện giao thức sau đây để sử dụng một hệ mật Trước hết, họ chọn khoá ngẫu nhiên k thuộc K. Họ làm điều này theo một cách an toàn, chẳng hạn khi họ ở cùng một chỗ và không bị Oscar quan sát hoặc họ dùng một kênh an toàn khi ờ xa nhau để trao đổi và thỏa thuận khóa mật k. Sau đó, giả sử Alice muốn gửi một thông báo tới Bob trên kênh không an toàn. Thông báo đó là dòng: X = X1 X2 ...X„ n > \ , x , e P , \ < j < n Alice tính: y, = ek(x,), 1 0 sao cho với n đù lớn. Các hàm f[ n ] và g[n] đểu dương thì /[n ] < Cg[n\. 29 Ví dụ 1.1. 1. Giả s ử /[n ]là đa thức: / [ n ] = a dn d + a d - lnd 1 + — + a 1n + a0 trong đó ad > 0 . Dễ chứng minh /[n] = oỊndj 2. Nếu / [ n ] = 0 ( g [n ] ), / 2 [n] = 0 (g [n ]) thì / j + / 2 = 0 ( g ) 3.U /j = 0 ( g l), / 2 = 0 ( g 2 ) thi / j/ 2 = 0 ( g lg2 ). 4. Tồn tại giới hạn hữu hạn: / [ n] n-»oo hnL Mg [n j thì/ = 0 ( g ) 5. Mọi số £ > 0 , logn = o Ị n '1 Định nghĩa 1.5. Một thuật toán được gọi là có độ phức tạp đa thức hoặc có thời gian đa thức, nếu số các phép tính cần thiết đế thực hiện th u ậ t to á n k h ô n g vư ợ t q u á O ( l o g ứn), tro n g đ ó n là đ ộ lớ n c ù a đ ầ u và o và d là số nguyên dương nào đó. Nói cách khác nếu đầu vào là các số k bít thỉ thời gian thực hiện thuật toán 1 0 (kd), tức là tương đuơng với một đa thức của k. Các thuật toán với thời gian o |n a j, a > 0 được gọi là thuật toán với độ phức tạp mũ hoặc thời gian mũ. Chú ý rằng nếu một thuật toán nào đó có độ phức tạp o ( g ) thì cũng có thể nói nó có độ phức tạp o ( h ) với mọi hàm h > g . Tuy nhiên ta luôn luôn cố gắng tìm ước lượng tốt nhất có thể để tránh hiểu sai về độ phức tạp thực sự của thuật toán. Cũng có những thuật toán có độ phức tạp trung gian giữa đa thúc và mũ. Ta thường gọi đó là thuật toán dưới mũ. Chẳng hạn thuật toán nhanh 30 nhắt được biết hiện nay để phân tích một số nguyên n ra thừa số là thuật toán có độ phức tạp: expG/ĩõgĩĩĩõgĩõgn) Khi giải một bài toán không những ta chi cố gắng tìm ra một thuật toán nào đó, mà còn muốn tìm ra thuật toán “tốt n h ấ t Đánh giá độ phức tạp là một trong những cách để phân tích, so sánh và tỉm ra thuật toán tối ưu Tuy nhiên độ phức tạp không phải là tiêu chuẩn duy nhất để đánh giá thuật toán. Có những thuật toán về lý thuyết thì có độ phức tạp cao hơn một thuật toán khác, nhưng khi sử dụng lại có kết quả (gần đúng) nhanh hơn nhiều. Điều này còn tùy thuộc những bài toán cụ thể, những mục tiêu cụ thể và cả kinh nghiệm của người sử dụng. 1.4.1.3. Lcrp phức tạp Ta xét một vài lớp các bài toán được xác định theo độ phức tạp tính toán của chúng. Trước hết, ta định nghĩa p là lớp tất cả các bài toán có thế giải được bởi thuật toán trong thời gian đa thức. Giả sử cho hai bài toán Pi, p2 với các tập dữ liệu trong hai bảng kí tự tương ứng là Xi và £ 2- Một thuật toán f: Zi*->X2* được gọi là một phép quy dẫn bài toán Pi về bài toán P2, nếu nó biến mỗi dữ liệu X của bài toán Pi thành một dữ liệu f(x) cùa bài toán p2, và sao cho câu hỏi cúa P| trên X có trả lời đúng khi và chỉ khi câu hỏi của P2 trên f(x) cũng có trả lời đúng. Ta nói bài toán Pi quy dân được vế bài toán P2 trong thời gian đa thúc, và kí hiệu Pi a P2, nếu có thuật toán f với độ phức tạp thời gian đa thức quy dẫn bài toán Pi về bài toán P2. Ta dễ dàng thấy rằng, nếu Pi a P2 và P2 e p thì cũng có Pi e p. Một lớp quan trọng các bài toán đã được nghiên cứu nhiều là lớp các bài toán khá thường gặp trong thực tế nhưng cho đến nay chưa có khả năng nào chứng tỏ là chúng có thể giải đuợc trong thời gian đa thức. Đó là lớp các bài toán NP đầy đù được trình bày sau đây: Cùng với khái niệm thuật toán tất định thông thường (có thể mô tả chỉnh xác chẳng hạn bời máy Turing tất định), ta xét khái niệm thuật toán 31 không đcm định với một ít thay đổi như sau: nếu đối với máy Turing tất định, khi máy đang ở một trạng thái q và đang đọc kí tự a thì cặp (q, a) xác định duy nhất một hành động kế tiếp của máy, còn đối với máy Turing không đơn định, ta quy ước rằng (q, a) xác định không phải duy nhất mà là một tập hữu hạn các hành động kế tiếp, máy có thể thực hiện trong bước kế tiếp một trong các hành động đó. Như vậy, đối với một dữ liệu vào X, một thuật toán không đơn định (được xác định chẳng hạn bởi một máy Turing không đơn định) không phải chỉ có một tiến trình tính toán duy nhất, mà có thể có một số hữu hạn những tiến trình tính toán khác nhau. Ta nói thuật toán không đơn định A chấp n h ậ n dữ liệu X, nếu với dữ liệu vào X thuật toán A có ít nhất một tiến trình tính toán kết thúc ở trạng thái chấp nhận (tức với kết quả đúng). Một bài toán p được gọi là giải được bời thuật toán không đơn định trong thời gian đa thức nếu có một thuật toán không đơn định A và một đa thức p(n) sao cho với mọi dữ liệu vào X có độ dài n, X e p (tức câu hỏi của p có trả lời đúng trên x) khi và chỉ khi thuật toán A chấp nhận X bởi một tiến trình tính toán có độ phức tạp thời gian < p(n). Ta kí hiệu lớp tất cả các bài toán giải được bời thuật toán không đơn định trong thời gian đa thức là NP. Nguời ta đã chứng tỏ được rằng tất cả những bài toán trong các thí dụ kể trên và rất nhiều các bài toán tổ hợp thường gặp khác đều thuộc lớp NP, dù rằng hầu hết chúng để chưa được chứng tỏ là thuộc p. Một bài toán p được gọi là NP - đầy đù, nếu p e N Pvà với mọi Q e NP đều có Q a P Lớp NP có một số tính chất sau đây: - P c N P - Nếu p ta p2 và P2Ể NP thì Pi e NP - Nếu Pi, P2G NP, P ia P2 và Pi là NP đầy đù, thì P2 cũng là NP đầy đủ - Nếu có p sao cho p là NP đầy đù và p eP, thì p = NP Từ các tính chất đó ta có thể xem rằng trong lớp NP, p là lớp con các bài toán “dễ” nhất, còn các bài toán NP đầy đù là các bài toán “khó” 32 nhất, nếu có ít nhất một bài toán NP đầy đù được chứng minh là thuộc p thì lập tức suy ra p = NP, dù rằng cho đến nay tuy đã có nhiều cố gắng nhưng toán học vẫn chưa tìm được con đường nào hi vọng đi đến giải quyết vấn đề [P = NP?], thậm chí vấn đề đó còn được xem là một trong bảy vấn đề khó nhất của toán học trong thiên niên ki mới! 1.4.2. Kiến thức về lý thuyết số ỉ.4.2.1. S ố h ọ c m o d u lo v à đ ồ n g d ư Tập các số nguyên —3, —2, — 1 ,0 ,1 ,2 ,3 ,...} = z Định nghĩa 1.6. Ước số Cho a ,b e z, a là ước của b nếu 3c E Z: b = a. c. Ký hiệu a\b Định nghĩa 1 .7. (Phép chia các số nguyên) Nếu a và b là các số nguyên với b > 1 thì a = qb + r, 0 < r < b q và r là duy n h ấ t. Phần dư cùa phép chia avàb được ký hiệu a m od b = r Thương cùa phép chia avàb được kỳ hiệu a div b = q Ta có a div b = p , a mod b = a — b M LbJ LbJ Ví dụ 1.2. a = 73, b = 17. 73 div 17 = 4 , 73 mod 17 = 5 Định nghĩa 1.8. Ước chung. c là ước chung cùa a và b nếu c\a & c\b Định nghĩa 1.9. Ước chung lớn nhất (ƯCLN) Số nguyên dương d là ƯCLN cùa các số nguyên a và b (Ký hiệu d = (a, b)) nếu: (i) d là ước chung cùa a và b. (ii) Nếu có c\a và c\b thì c\d. 33 Như vậy (a, b) là số nguyên dương lớn nhất ước của cả a và b không kể (0, 0) = 0 . Ví dụ 1.3. Các ước chung của 12 và 18 là {±1, ±2, ±3, ± 6 } (12,18) = 6 Để xác định ƯCLN cùa hai số ta thường sừ dụng thuật toán Euclide dưới đây Thuât toán Euclide Tính ƯCLN của 2 số nguyên VÀO: Hai số nguyên không âm a và b với a > b RA: ƯCLN của a và b. (1) Whileb # Odo r «- a mod b, a «- b, b «- r (2) Return (a). Định lý 1.1. Thuật toán trên có thời gian chạy chừng 0((lg rì)2) các phép toán bit. Ví dụ 1.4. Sau đây là các bước chia của thuật toán trên khi tính: (4864,3458) =38 4864 = 1.3458 +1406 3458 = 2 1406 + 646 1406 = 2.646 +76 646 =2.114 +38 76 = 3.38 + 0 Thuật toán trên có thể được mở rộng để không những chi tính được ƯCLN của 2 số nguyên a và b mà còn tính được các số nguyên X và y thoả mãn ax + by = d mà ta sẽ xem xét ờ phần dưới (thuật toán Euclide mờ rộng). Định nghĩa 1.10. Bội chung nhỏ nhất (BCNN) Số nguyên dương d là BCNN của các số nguyên a và b (Ký hiệu d=BCNN (a,b) ) nếu: (i) a\ d, b\d. (ii) Neu có a\ c, b\c thì d\c. Như vậy d là số nguyên dương nhỏ nhất là bội của cả a và b. Tính chẩt a. b BCNN (a, b) = 7—^r (a, b) Ví dụ 1.5. (12,18) = 6 => BCNN(12,18) = — = 36 6 Định nghĩa 1.11. Hai số nguyên dương a và b được gọi là nguyên tố cùng nhau nếu: (a,b) = 1 Định nghĩa 1.12. Số nguyên p > 2 được gọi là số nguyên tố nếu các ước dương cùa nó chi là 1 và p. Nguực lại p được gọi là hợp số. Định lý 1.2. (Định lý cư bản của số học) Với mỗi số nguyên n > 2 ta luôn phân tích được dưới dạng tích cua ỉuỹ thừa cùa các số nguyên tố. n = P il P22 - P k k I r o n g đ ó Pi là c á c s ố n g u yê n tó k h á c n h au v à e t Ià c á c s ổ n g u yên dưutig. Hơn nữa phân tích trên là duy nhất. Định nghĩa 1.13. Với n > 2, hàm{n) được xác định là số các số nguyên trong khoáng [1, n] nguyên tố cùng nhau với n. Các tính chất của hàm 0 ( n ) (1) Nếu p là các số nguyên tố thì (m). 5: 4>(n) > -7^— 6lnlnn Định nghĩa 1.14. Neu a và b là các số nguyên thì a được gọi là đồng dư với b theo modulo (ký hiệu là a = b mod n ) nếu n |(a — b). S ố n g u yên n đ ư ợ c g ọ i là m o d u lo đ ồ n g dư. Ví dụ 1.6. 24 = 9 mod 5 vì 24 - 9 = 3.5 -1 1 = 17 mod 7 vì - 1 1 - 17 = -4 .7 Các tính chất: Đối với a, alt b, ba , c e z ta có: ( 1) a = b (mod n) nếu và chỉ nếu a và b cũng có phần dư khi chia cho n. (2) Tính phản xạ: a = a (mod n) (3) Tính đối xứng: Nếu a = b (mod n) thì b = a (mod n) (4) Tính bắc cầu: Nếu a = b (mod n) và b= c (mod n) thì a = c (mod n) (5) Nếu a = aa (mod n) và b = ba (mod n) thì a + b = + bj (mod n) và a. b = a!, bi (mod n) Lớp tương đương của một số nguyên a là tập các số nguyên đồng dư với a modulo n. Từ các tính chất (2), (3) và (5) ờ trên ta có thể thấy rằng đối với n cố định, quan hệ đồng dư theo modulo n sẽ phân hoạch z thành các lớp tương đương. Nếu a = q. n + rvớiO b RA: d = UCLN(a, b) và các số nguyên X và y thoả mãn ax + by = d. 37 (1) Nếu b = 0 thì đặt d «- a ,x «- 1 ,y <- 0 và return (d ,x ,y ) (2) Đặt x2 «- 1, X 1 «- 0 ,y 2 <- 0 , y 1 <- 1 (3) While b > 0 do 3.1. q «- la/b j , r <- a - qb, X <- x2 - qXi , y <- y2 - qyt 3.2. a <- b ,b «- r,x2 <- Xị Xi «- x , y 2 «- Y i.y i «- y (4) Đặt d <- a , X <- x2 , y «- y2 và return (d, X, y) Định ỉỷ 1.5. Thuật toán trên có thời gian chạy cỡ 0 ((lg n )2) các phép toán bit. Ví dụ 1.9. Bảng 1.2 sau chỉ ra các bước của thuật toán trên với các giá trị vào a = 4864 và b = 3458 Bảng 1.1. Thuật toán Euclide mở rộng và các giá trị vào a = 4 8 6 4 , b = 3 4 5 8 Q r X y a b x2 X| y2 yi - - - - 4864 3458 1 0 0 1 1 1406 1 -1 3458 1406 0 1 1 -1 2 646 -2 3 1406 646 1 -2 -1 3 2 114 5 -7 646 114 -2 5 3 -7 5 76 -27 38 114 76 5 -27 -7 38 1 38 32 -45 76 38 -27 32 38 -45 2 0 -91 128 38 0 32 -91 -45 128 Bời vậy ta có UCLN(4864, 3458) = 38 và (4864)(32) + (3 4 5 8 )(-4 5 ) = 38 Thuật toán tính nghịch đảo trong z„ VÀO: a e z n RA: a-1 mod n (nếu tồn tại). (1 ) Dùng thuật toán Euclide mở rộng để tìm các số nguyên X v à y sao cho ax + ny = d trong đó d = (a, n ). (2) Nếu d > 1 thi a -1 mod n không tồn tại. Ngược lại retum(x). Bây giờ ta xét các phương trình đồng dư tuyến tính. ax=b (mod n) (1.1) trong đó a,b,n là các số nguyên, n>0, và X là ẩn số. tìịnh lý 1.6. Cho d. = (a, ri). Phương trình đồng dư ax = b (mod n) có nghiệm X nếu v à c h i nếu d\b, trong tr ư ờ n g hợp này c ó đúng d n g h iệm n ằ m giữa 0 và n-I, những nghiệm này là tắt cà các đồng dư theo modulo n\d . Định lý 1.7. (Phần dư Trung hoa). Nếu các số nguyên n 1,n 2, .....n k là nguyên tố cùng nhau từng đôi một thi hệ các phương trình đồng dư: X = aj(m od r^) X = a 2(mod n 2) X = ak(m od rik) sẽ có nghiệm duy nhất theo modulo n n = (n 1.n 2..... ri|< ) Thuật toán Gausse. Nghiệm X của hệ phương trình đồng dư trong định lý phần dư China có thể được tính bằng: k i=l Trong đó Nj = n/rij và Mj = Nj 1mod rij 39 Các tính toán này có thể được thực hiện trong 0 ((lg n )2) các phép toán trên bit. Ví dụ 1.10. Cặp phương trình đồng du X = 3 (mod 7), X = 7 (mod 13) có nghiệm duy nhất X = 59 (mod 91) Định lý 1.8. Nếu (n1( n2) = 1 thì cặp phương trình đồng dư. X = a (mod rij),X = a (mod n2) có một nghiệm duy nhất X = a (mod ni.112) Định nghĩa 1.18. Nhóm nhân cùa Zn là Z’ = {a e Zn |(a, n) = 1 } Đặc biệt, nếu n là số nguyên tố thì z* = {a| 1 < a < n — 1} Định nghĩa 1.19. Cấp cùa Z* là số các phần từ trong Z' (ký hiệu |Z“ [) Theo định nghĩa cùa hàm Phi-Euler ta thấy: |Z*| = c|>(n) Cần để ý rằng nếu a G z„ và b e z„ thì a b G z ’n và bời vậy z*n là đóng đối với phép nhân. Định lý 1.9. (1) Định lý Euler: Nếu a e Z’ thì = 1 (m od rì) . (2) Nếu n là tích cùa các số nguyên khác nhau và nếu r = 5 (mod 4>(n)) thì a r = a s (m od n) đối với mọi số nguyên a Nói một cách khác khi làm việc với modulo n thì các số mũ có thể đtrợc rút gọn theo modulo 4>(n) . Định lý 1.10. Cho p là một số nguyên tố: (1) Định lý Ferma: Neu (a, p)= 1 thì ap~1 = 1 (mod p) . 40 (2) Nếu r = s (mod p - 1) thì a r = as (mod p) đối với mọi số nguvên a. Nói một cách khác khi làm việc với modulo cùa một so nguyên tố p thì các luỹ thừa có thế được rút gọn theo modulo p-1. (3) Đặc biệt a p = a (mod p ) với mọi so nguyên a. Định nghĩa 1.20. Cho a e Z * . c ấ p cùa a (ký hiệu là ord(a)) là số nguyên dương nhò n h a i t sao ch o a { = 1 (m od rì) . Định nghĩa 1.21. Cho aeZ’, ord(a)=t và as = 1 (mod rì) khi đó t là ước cùa s. Đặc biệt t|«í>(n). Ví dụ 1.11. Cho n=21, khi đó Z'2l = {1,2,4,5,8,10,11,13,16,17,19,20} Chú ý rằng (21) = = IZ2J . cấp của các phần tử trong ZJj được nêu trong bảng sau: Bảng 1.2. Cấp của các phần tử trong z 21 a e Z jị 1 2 4 5 8 10 11 13 16 17 19 20 o rd (a) 1 6 3 6 2 6 6 2 3 6 6 2 Định nghĩa 1.22. Cho a 6 Z'n. Nếu cấp cùa a là í>(n) thì a được gọi là phần từ sinh hay phần tử nguyên thuỳ cùa Zn Nếu Z ’n có một phần tử sinh thì Z ' được gọi là cyclic. Các tính chất cùa các phần tử sinh của Z ‘n ( 1) z„ có phần tử sinh nếu và chi nếu n = 2,4, pk hoặc là 2 pk, trong đó p là một số nguyên tố lẻ và k > 1 Đặc biệt, nếu p là một số nguyên tố thì Zn có phần từ sinh. (2) Nếu a là một phần tử sinh của z„ thì: Z’ = {a‘ mod n|0 < i < — 1} (3) Giả sử rằng a là một phần tử sinh của z„ khi đó b = a' mod n cũng là một phần tử sinh của z„ nếu và chỉ nếu (i, i ’Cn) = 1). Từ đó ta rút ra rằng nếu Z* là cyclic thì số các phần tử sinh là ($(n)). (4) a e z„ là một phần tử sinh của z„ nếu và chi nếu a cí>^ /p 1 (mod n) đối với mỗi nguyên tố p cùa trong đó Pi là các số nguyên tố lẻ phân biệt và ej > 1 . Nếu a E Qn thì có đúng 2k căn bậc hai khác nhau theo modulo n. Ví dụ 1.15. Các căn bậc 2 của 12 mod 37 là 7 và 30. Các căn bậc 2 của 121 mod 315 là 11, 74, 101, 151, 164,214, 241 và 304. Phép luỹ thừa theo modulo có thể được thực hiện có hiệu quả bằng thuật toán nhân và bình phương có lặp. Đây là một thuật toán rất quan trọng trong nhiều thủ tục mật mã. Cho biểu diễn nhị phân của k là: £•_(, ki2l trong đó mỗi kị 6 {0 ,1} khi đó a k = n l o « ki2l = (a2°)k°(a2l)kl... ( a 2t) k( 43 Thuật toán nhân và bình phương có lặp để lấy luỹ thừa trong zw VÀO: a e z n và số nguyên k, (0 < k < n) có biểu diễn nhị phân: k=EÍ=0ki2‘ RA : ak mod n (1) Đặt b «- 1. Nếu k = 0 thỉ return (b) (2) Đặt A <- a. (3) Nếu k0 = 1 thì đặt b «- a. (4) F o r i fro m 1 to t do 4.1. Đặt A «- A2 mod n . 4.2. Nếu kị = 1 thỉ đặt b ♦- A. b mod n (5) Return (b) Ví dụ 1.16. Bảng 1.4 sau chi ra các bước tính toán 5596 mod 1234 = 1013 Bảng 1.4. Tính 5596 mod 1234 i 0 1 2 3 4 5 6 7 8 9 k, 0 0 1 0 1 0 1 0 0 1 A 5 25 625 681 1011 369 421 779 947 925 b 1 1 625 625 67 67 1059 1059 1059 1013 Số các phép toán bit đối với phép toán cơ bản trong zn được tóm lược trong bảng 1.5. 44 Báng 1.5. Độ phức tạp bit của các phép toán cơ bản trong Z n Phép toán Độ phức tạp bit Cộng module a+b 0(lg n) Trừ modulo a-b 0(lg n) Nhân modulo a.b 0 ((lg n )2) Nghịch đảo modulo a 1mo d n Luỹ thừa modulo akmod n , k < n 1.4.2.2. Các kí hiệu Legendre và Jacobi Định nghĩa 1.25. 0 ((lg n )2) 0 ((lg n )3) Cho p là một số nguyên tố lè và a là một số nguyên. Ký hiệu Legendre a vP được xác định như sau: 0 p|a = j l aeQp V ) -1 aeQp Các tinh chất cúa ki hiệu Legendre: Chu p lù mội só nguyên ló lẻ và a,b e z . Khi đó ký hiệu Legendre có các tính chất sau: (1) - = a ~ ( m o d p). Đặc b i ệ t - = 1 và ( — - = (—1 ) ~ ) Bởi vậy — 1 e Qp nếu p = 1 (mod 4) và —l e Qp nếu p = 3 (mod 4) <2> i f ) - (p ) • (p ) Bởi vậy nếu 3 e ZP thì ( 7 = 0 (3) Nếu a = b (mod p) thì (4 ) ị = ( - 1) ^ . Bời vậy Q ) = 1 nếu p - 1 hoặc 7(mod 8 ) và = —1 nếu p = 3 hoặc 5(mod 8 ) 45 (5) Luật thuận nghịch bậc 2: ghịch bậc 2 : Giả sử p là một số nguyên tố lẻ khác với q, khi đó: ố nguyên tố lẻ khác với q, khi (q) = (p)(- 1) 3 là các số nguyên lẻ có phân tích e ( n = Pi P2 Pk • Khi đó ký hiệu Jacobi I — I được định nghĩa !à a j _ a I a I f a I p 2J " i P k > Ta thấy rằng nếu n là một số nguyên tố thỉ ký hiệu Jacobi ký hiệu Legendre Các tính chất của kí hiệu Jacobi chính là Cho n > 3 là các số nguyên lẻ a,beZ. Khi đó ký hiệu Jacobi có các tính chất sau: (1) = 0 ’ 1 hoặc — 1. Hơn nữa [ — 1 = 0 nếu và chỉ nếu UCLN (a, n ) ^ 1. = 1 46 ( a.b ^ M (2) — = — •Bởi vậy a e Z n thì ---- V n J I n ) V n J c \ a M A I v m -n J 3ln, (3) (4) Neu a = b mod n thi' a ì f b ' v n / v n ; (5) v n y = 1 (6) r P V n , ( 2 \ ( n - l ) / 2 . Bởi vậy = 1 nếu n = l(rnod4) I l ì — — = —1 nếu n 3 3 (m o d 4 ) V n ) \(n2- i)/8 (7) - = ( - l f < 2 ' Bởi vậy — U y f n Ọ = 1 nếu n = lhoặc 7 (m o d 8 ) f — 1 = — 1 nếu n = 3 hoặc 5(m od8) ^_jym-lXn-l)/4 (8)< n )=viriy ( rr0 _ f n ^ • • X X X Nói một cách khác — = — trừ phi cả hai sô m và n đêu đông dư với 3 (m o d 4 ), trong trường hợp này = - s 1 < n , ) Tứ các tính chât của ký hiệu Jacobi ta thấy rằng n lẻ và a = 2e âị trong đó Si ị là một số lẻ thì: 47 Ị 'a J = = ^ 2 J ' n m o d a . j ^ 1y.,-iKn-i)/4 Từ công thức này ta có thể xây dựng thuật toán đệ quy sau để tính f a>l A X X — mà không cân phải phân tích n ra các thừa sô nguyên tô. v n / Thuật toán tính toán kí hiệu Jacobi (và kí hiệu Legendre): JACOBI (a, n) VÀO: Số nguyên lẻ n > 3 số nguyên a , ( 0 < a < n ) f . RA: Ký hiệu Jacobia 'i ____ . — (Sẽ là ký hiệu Legendre khi n là sô n ) nguyên tố) (1) Nếu a=0 thì retum(O) (2) Nếu a= 1 thỉ retum(l) (3) Viết a = 2e a , , trong đó aj là một số lẻ (4) Nếu e chẵn thì đặt s <- 1 . Ngược lại hãy đặt s <- 1 nếu n =1 hoặc 7 mod 8 (5) Nếu n = 3 (mod 4) và a! = 3 (mod 4) thi đặt s *-----s (6) Đặt n x «- n m od a! (7) Return (s.JACBI( n-L Oj)) Thuật toán trên có thời gian chạy chừng 0((lg TÌ)2') các phép toán bit. Nhận xét (tìm các thặng dư bậc hai theo modulo của sổ nguyên tốp): Cho p là một số nguyên tố lẻ. Mặc dù đã biết rằng một nửa các phần tử trong Zp là các thặng dư không bậc hai theo modulo p nhưng không có một thuật toán xác định theo thời gian đa thúc nào được biết để tỉm Một thuật toán ngẫu nhiên tìm một thặng dư không bậc hai là chọn ngẫu nhiên các số nguyên a E Zp cho tới khi số đó thoả mãn = — 1. 48 Phép lặp đối với số được chọn trước khi tìm được một thặng dư bậc hai là 2 và bởi vậy thuật toán được thực hiện theo thời gian đa thức. Ví dụ 1.17. Tính toán kí hiệu Jacobi: Cho a=158 và n=235. Thuật toán trên tính ) như sau: 79 ( - 1),78.234/4 7779 235 - l á Ằ í - i - ' > .7 7 . 1 Khác với ký hiệu Legendre, ký hiệu Jacobi không cho biết liệu a có phải là một thặng dư bậc 2 theo modulo n hay không. Sự thực là { a \ f a \ nếu a 6 Q n thì — = 1 Tuy nhiên — = 1 thi không có nghĩa là V n J v n j aeQn Ví dụ 1.18. (các thặng dư bậc 2 và không thặng dư bậc 2): Báng 1.6. Các ký hiệu Jacobi cùa các phần tử trong Zj! a E Z*2Ì 1 2 4 5 8 10 11 13 16 17 19 20 a 2 m o d n1 4 16 4 1 16 16 1 4 16 4 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 ( ! ) 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 ( ? ) 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 ( ả ) 49 Bảng 1.6 liệt kê các phần tử trong z*2]và các ký hiệu Jacobi của chúng. Từ ví dụ trong phần c ta có Q 21 = {1.4,16} Xa thấy rằng ^ 2 ~ĩJ = 1 nhưng 5 £ Q 21 . Định nghĩa 1.27. Cho n > 3 là các số nguyên tố lẻ và cho J n = ị a e Z* |Ị^—j = l ị tập các thặng dư già bậc 2 theo modulo n (Ký hiệu Q nJ được định nghĩa là tập J n — Q n. Định lí 1.14: Cho n = p .q là tích của hai số nguyên tố lè khác nhau. Khi đó |QnI = Qn| = (p - lXq ~ 1)/4 tức là một nứa các phần tử trong Jn là c á c th ặ n g d ư g iả b ậ c hai. 1.4.2.3. Căn nguyên thủy • Thuật toán tính căn bậc hai modulo số nguyên tố p: VÀO: số nguyên tố lẻ p và số nguyên a, 1 < a < p - 1 RA: hai căn bậc hai của a modulo p, giả thiết rằng a là thặng dư bình phương modulo p 1. Tính kí hiệu Legendre -- . Nếu — = -1 thỉ trả về “a không có \ P J \ P J căn bậc hai modulo p” và dừng , , , , ( b) 2. Chọn ngâu nhiên b, 1 < b < p - 1 cho đên khi tìm được b với — '\PJ = -1 (b là không thặng dư bình phương modulo p) 3. Bằng cách chia liên tiếp cho 2, viết p - 1 = 2st với t lẻ 4. Tính a' 1 mod p bằng thuật toán Euclide mở rộng 5. c <- b‘ mod p và r <- a(t+iy2 mod p 50 6 . For i from 1 to s - 1 do 7. Tính d = (r2 a 1 )2” ' mod p 8 . Neu d = -1 mod p thì đặt r <- r.c mod p 9. Đặt c <- c2 mod p 10. Return (r, -r) ■ Thuật toán tính căn bậc hai modulo p khi p = 3 mod 4 VÀO: số nguyên tố lẻ p với p = 3 mod 4 và a G Qp RA: hai căn bậc hai của a modulo p 1. Tính r = a(p 1) 4 mod p 2. Return (r, -r) ■ Thuật toán tính căn bậc hai modulo p khi p s 5 mod 8 VÀO: số nguyên tố lẻ p với p = 5 mod 8 và a e Qp RA: hai căn bậc hai của a modulo p 1. Tính d = a(p’1) 4 mod p 2. Nếu d = 1 thì r = a(p+3>/8 mod p 3. Nếu d = -1 thì r = 2a(4a)(p'5)/8 mod p 4. Return (r, -r) ■ Tliuật toán tính căn bậc liai modulo II, với II là hựp số VÀO: số nguyên n, các nhân tủ nguyên tố của nó p và q (trong đó p = 3 mod 4, q = 3 mod 4), ce Qn RA: bốn căn bậc hai của c modulo n 1. Dùng thuật toán Euclide mở rộng tim a, b: ap + bq = 1 2. Tính r = c(p+1)/4mod p s = c(q+l)/4mod p X = (aps + bqr) mod n y = (aps - bqr) mod n 3. Return (±x, ±y) 1.4.2.3. Các số nguyên Blum Định nghĩa 1.28. Số nguyên Blum là một hợp số có dạng 1Ĩ= p.q, trong đó p và q là c á c s ố n g u yên to kh á c n hau và th o à m ãn: p = 3 m od 4 q s 3 m od 4 Định lý 1.15: Cho n= p.q là một số nguyên Blum và cho a 6 Qn. Khi đó a có đúng 4 căn bậc hai modulo n và chi có một số nằm trong. Qn Định nghĩa 1.29. Cho lì là một số nguyên Blum và cho. a Ẽ Qn Căn bậc hai duy nhất cùa a nằm trong Qn được gọi là căn bậc hai chính a mod n. Ví dụ 1.19. (Số nguyên Blum). Đối với số nguyên Blum n= 21. Ta có Jn = {1,4,5,16,17,20} và ọ„={5,17,20} . Bốn căn bậc 2 của a = 4 là 2, 5, 16 và 19, trong đó chỉ có 16 là cũng nằmg trong Qn. Bởi vậy 16 là căn bậc 2 chính của 4 m o d 21 Định lý 1.16: Nếu n = p.q là m ột số nguyên Dlurn thì ánh xạ. f: Qn -» Qn được xác định bởi/ 0 0 = X2 mod. n là một phép hoán vị. Ảnh xạ ngược của f là: / _1CO = x^p~1^q~1^+^ mod n . 1.5. Bài tập 1. Sử dụng thuật toán Euclide mờ rộng để tìm ước chung lớn nhất của hai số a = 1573, b = 308. 2. Hãy tính 3 m od23 bàng cách dùng thuật toán nhân và bình phương có lặp. 3 . Hãy tính các căn bậc hai của 12 m od 3 7 . 52 4. Tỉm tất cả các phần tử nguyên thuỷ của nhóm nhân Z |9 . 5. Tìm phân tử nghịch đảo của 3 trong Z 31. 6. Với m ,n ,se N và P ị là các số nguyên tố. Hãy chứng minh các tính chất sau của hàm (p-Euler i. trong đó m = P j1...P r ’ là phân tích của m thành tích của thừa số nguyên tố. 7. Hãy tính cp(490) và ọ ( 7 6 8 ) . 8 . Giải hệ phương trinh đồng dư sau: 5x = 20 mod 6 6 x = 6 mod 5 4 x s 5 mod 77 9 Hãy dùng thuật toán Euclide mở rộng để tính các phần tử nghịch đảo sau: a. I T 1 mod 101 b. 3 5 7 1 mod 1234 c. 3125-1 mod 9987 10. Ta nghiên cứu một số tính chất của các phần từ nguyên thuỷ: (a) 97 là một số nguyên tố. Hãy chứng minh rằng X * 0 là một phần tử nguyên thuỷ theo m o d u lo 97 khi và chi khi: -ị 1 mod 97 và X48 ì 1 mod 97 (b) Hãy dùng phương pháp này để tìm phần tử nguyên thuỷ nhỏ nhất theo modulo 97. 53 (c) Giả sử p là một số nguyên tố và p - 1 có phân tích ra luỹ thừcủa các nguyên tố sau: P - I - Í M i=l Ở đây Pị là các số nguyên tố khác nhau. Hãy chứng tỏ rằng X * 0 là một phần tử nguyên thuỷ theo m odulo p khi và chỉ khi x(p O/Pi -É 1 m odp với 1 < i < n 54 Chương 2 HỆ M ẬT Mà K H Ó A BÍ M ẬT 2.1. Giói thiệu Mật mã khoá bí mật hay còn gọi là mật mã đối xứng ra đời tò rất sớm. Từ khi máy tính chưa ra đời, mật mã khoá bí mật đã đóng vai trò quan trọng trong việc mã hoá thông tin. Mật mã khóa bí mật yêu cầu người gửi và nguời nhận phải thỏa thuận một khóa truớc khi thông báo được gửi, và khóa này phải được cất giữ bí mật. Độ an toàn cùa thuật toán này vẫn phụ thuộc vào khóa, nếu để lộ ra khóa này nghĩa là bất ki người nào cũng có thể mã hóa và giải mã hệ thống mật mã. Hình 2.1. Sơ đồ khối của hệ truyền tin mật Tại nơi gửi (nguồn thông báo) có một bản rõ R được sinh ra. Để mã R cần có một khoá K. Nếu K được sinh tại nguồn thông báo thì nó phải được chuyển tới đích thòng báo theo một kênh an toàn. Hoặc một bên thứ ba có thể sinh khoá và chuyển một cách an toàn tới cả nguồn và đích. Với thông báo R và khoá mã K, thuật toán mã E sẽ tạo ra bản mã M = Ek(R). 55 Tại nơi nhận (đích thông báo) với bản mã M và khoá mã K, thuật toán giải mã D sẽ tạo ra bản rõ R = D k(M). Một kẻ tấn công thu được M nhưng không có khoá K, anh ta phải cố gắng khôi phục R hoặc khoá K. Thừa nhận rằng kẻ tấn công biết thuật toán mã E và thuật toán giải mã D. Nếu kẻ tấn công chi quan tâm đến nội dung thông báo, họ cố khôi phục R bằng việc sinh ra một ước lượng R' của R. Tuy nhiên thường kẻ tấn công mong muốn tìm ra khoá K để giải mã các thông báo tiếp theo, bằng cách sinh ra một khoá ước lượng K' cùa K. Độ bảo mật của mật mã khóa bí mật là thước đo mức độ khó khăn của việc tìm ra thông báo rõ hoặc khoá khi biết bản mã. Ưu điểm của mật mã khóa bí mật là tốc độ mã hóa và giải mã nhanh Tuy nhiên, mật mã khóa bí mật lại có khá nhiều nhuợc điểm: - Trong phương pháp mã này, cả người mã hóa và người giải mã phải cùng chung một khóa mật. Khóa này phải được gửi đi trên kênh an toàn. Do đó nhất thiết phải duy trì một kênh an toàn đề truyền khóa. Trên thực tế, công việc này rất khó khăn và tốn kém. - Hệ mã hóa đối xứng không bảo vệ đuợc sự an toàn nếu có xác suất cao khóa người gửi bị lộ. - Vấn đề quản lý và phân phối khóa là khó khăn và phức tạp khi sử dụng. Người gửi và người nhận luôn luôn phải thống nhất với nhau về vấn đề khóa. Việc thay đổi khóa là rất khó và rất dễ bị lộ. - Khuynh hướng cung cấp khóa dài mà nó phải được thay đổi thường xuyên cho mọi người trong khi vẫn duy trì cả tính an toàn lẫn hiệu quả, chi phí sẽ cản trờ rất nhiều tới sự phát triển của hệ mật mã này. - Nếu có N thực thể muốn liên lạc theo cặp thì cần N(N-l)/2 khoá bí m ật cần truyền trên nhiều kênh an toàn, s ố lư ợng này là k h ôn g n h ỏ để c ó thể quản lý và kiểm soát an toàn. Trong mật mã khóa bí mật hay mật mã khóa đối xứng, chúng ta xét đến mật mã cổ điển, mã khối và mã dòng. Sau đây, chúng ta sẽ lần lượt tìm hiểu các loại mã này. 56 2.2. Mật mã cổ điển Trong suốt một thời gian lịch sử dài từ thời cổ đại cho đến vài ba thập niên gần đây, các phương pháp mật mã được sử dụng trong thực tế đều là mật n ã khóa đối xứng, từ hệ mật mã Ceasar đã được dùng hơn nghìn năm trước cho đến các hệ mật mã hiện đại ngày nay. Trong phần này, ta sẽ tìm hiểu một số hệ mật mã cổ điển và cách thám các hệ mã này. 2.2.1. M ã dịch chuyến Để sử dụng mật mã dịch chuyển hay còn gọi là mã dịch vòng (MDV) cho văn bản tiếng Anh, người ta quy ước bảng 26 chữ cái tiếng Anh với các mã tương ứng nhu sau: Kí tự A B c D E F G H I J K L M Mã tương ứng 0 1 2 3 4 5 6 7 8 9 10 11 12 Kí tụ N 0 p Q R s T u V w X Y z Mã tương ứng 13 14 15 16 17 18 19 20 21 22 23 24 25 Quy tắc của MDV được cho trong hình dưới đây: G iả sử

xm) - (Xn(i), ..., Xn(m)) 59 dn(yi,..., ym)= Với ft' 1 là phép thế ngược của 71. Ví dụ 2.3. m = 6 và rl 2 3 4 5 61 b 5 1 6 4 2J Cần mã thông báo: hoofchisminh Trước tiên, ta gom thành nhóm 6 phần tử; hoofch isminh Xi = h, x2 = o, x3 = o, x4 = f, X5 = c, x 6= h Khi đó nhóm thứ nhất đuợc mã thành X3X5X1X6X4X2 = o ch h fo Tương tự, bản mã cùa nhóm thứ hai là: mnihis Vậy thông báo mã toàn bộ là: ochhfo mnihis Ta có: , 1 1 2 3 4 5 61 13 6 1 5 4 2 I Áp dụng 7T 1 cho thông báo mã toàn bộ “ochhfo mnihis”, sẽ thu lại đuợc thông báo rõ ban đầu. Thật ra, ta có thể mã nhanh hơn như sau: đặt dòng thứ hai của 7Ĩ"1 dưới bản rõ: hoofch isminh 361524 361524 Sau đó ta sắp xếp lại trong từng nhóm theo thứ tự số tăng dần và được: ochhfo mnihis Bây giờ việc dịch chì đặt hàng thứ hai của 71 dưới bản mã: 60 ochhfo mnihis 351642 351642 rồi sấp theo thứ tự tăng dần: hoofch isminh 2.2.4. M ã Affine Trong mã Affine, ta giới hạn chỉ xét các hàm mã có dạng: e(x) = ax + b mod 26 .a, b e z 26 Các hàm này được gọi là các hàm Affine (chú ý rằng khi a = 1, ta có MDV). Đe việc giải mã có thể thực hiện được, yêu cầu cần thiết là hàm Affine phải là đơn ánh. Nói cách khác, với bất kỳ y £ z 26, ta muốn có đồng nhất thức sau: ax + b = y (mod 26) phải có nghiệm X duy nhất. Đồng dư thức này tương đương với: ax = y — b (m od 26) Vì y thay đổi trên z 26 nên y - b cũng thay đổi trên z 26. Bởi vậy, ta chì cần nghiên cứu phương trinh đồng dư: ax = y (mod 2 6 ) y G z 26 Ta biét làng, pliưung tiỉnli này có một nghiệm duy nhất đối với mỗi y khi và chi khi UCLN(a,26)=l (ờ đây hàm UCLN là ước chung lớn nhất của các biến của nó). Trước tiên ta giả sử rằng, UCLN(a,26)= d >1. Khi đó, đồng dư thức ax = 0 (mod 26) sẽ có ít nhất hai nghiệm phân biệt trong z 26 là x=0 và ,x=26/d Trong truờng hợp này, e(x)=ax + b mod 26 không phải là một hàm đơn ánh và bởi vậy nó không thể là hàm mã hoá hợp lệ. Ví dụ 2.4. Do UCLN(4,26)=2 nên 4x + 7 không là hàm mã hoá hợp lệ: X và 4x + 13 sẽ mã hoá thành cùng m ột giá trị đối với bất kì X E z 26 Ta giả thiết. UCLN(a,26)=l Giả sừ với Xị và X2 nào đó thoả mãn: 61 aXj = ax2 (mod 26) Khi đó: a(xt — x2) = 0 (mod 26) bởi vậy 261 a(xj - x 2) Bây giờ ta sẽ sử dụng một tính chất của phép chia sau: Nếu UCLN(a,b)=l và a I b c thì a I c . Vì 26 I a(xj - x 2 ) và UCLN(a,26) =1 nên ta có: 261 ( x j - x 2) tức là Xj = x2 (mod 26) Tới đây ta đã chứng tỏ rằng, nếu UCLN (a,26) = 1 thì một đồng dư thức dạng ax = y (mod 26) chì có (nhiều nhất) một nghiệm trong. z 26 Do đó, nếu ta cho X thay đổi trên z 26 thỉ ax(mod 26) sẽ nhận được 26 giá trị khác nhau theo modulo 26 và đồng dư thức ax = y (mod 26) chỉ có một nghiệm y duy nhất. Không có gì đặc biệt đối với số 26 trong khẳng định này. Bởi vậy, hằng cách tirorng tự, ta có thể chứng minh được kết quả sau: Định lý 2.1. Đổng dư thức ax = b (mod m) chỉ có một nghiệm duy nhất X 6 z m với mọi b e z m khi và chi khi ,UCLN(a, m) =1 Vì 26 = 2 x 13 nên các giá trị a e Zm thoả mãn UCLN(a,26)=l là a = 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 và 25. Tham số b có thể là một phần từ bất kỳ trong. z 26 Như vậy , mã Affine có 1 2 x 2 6 = 312 khoá có thể (dĩ nhiên, con số này là quá nhỏ để bảo đảm an toàn). Bây giờ, ta sẽ xét bài toán chung với modulo m. Ta cần một định nghĩa khác trong lý thuyết số. 62 Định nghĩa 2.1. Giả sư a > 1 và m > 2 là các số nguyên. ƯCLN(a,m)=l thì ta nói rang a vàm là nguyên to cùng nhau . số các so nguyên trong Zm nguyên to cùng nhau với m thường được kỳ hiệu là (p(m) (hàm này được gọi là hàm phi-Euler) . Một kết quả quan trọng trong lý thuyết số cho ta giá trị của <ị)(m) theo các thùa số trong phép phân tích theo luỹ thừa các số nguyên tố của m. Mọi số nguyên m > 1 có thể phân tích được thành tích của các luỹ thùa các số nguyên tố theo cách duy nhất. Ví dụ 60 = 23x3x5 và 98 = 2 X 72). Ta sẽ ghi lại công thức cho ộ (m ) trong định lí sau: Định lý 2.2. n Già sử m = Ị - Ị p ° ‘ i=i (2.1) Trong đó các số nguyên tố Pi khác nhau và e, > 0,1 < i < n. Khi đó : (m) = J - Ị ( p f ễ - p f i_1) i=l (2.2) Định lý này cho thấy rằng, số khoá trong mã Affine trên Zm bằng m(|)(m), trong đó <ị>(m) được cho theo công thức trên. (Số các phép chọn của b là m và số các phép chọn của a là <ị)(m) với hàm mã hoá là e(x ) = ax + b ) Ví dụ, khi m -60, 4»(60) = 2x2x4 = 16 và số các khoá trong mã Affine là 960. Bây giờ, ta sẽ xét xem các phép toán giải mã trong mật mã Affine với modulo m = 26. Giả sử UCLN(a,26)=l. Để giải mã cần giải phương 63 trình đồng dư y = ax + b (mod 26) theo X. Từ thảo luận trên thấy rằng, phương trình này có một nghiệm duy nhất trong. z26 Tuy nhiên, ta vẫn chưa biết một phương pháp hữu hiệu để tìm nghiệm. Điều cần thiết ờ đây là có một thuật toán hữu hiệu để làm việc đó. Rất may là một số kết quả tiếp sau v ề số h ọ c m o d u lo sẽ cu n g cấ p m ộ t th uật to án g iả i m ã hữu h iệu cần tìm. Bằng các lý luận tương tự như trên, có thể chứng tỏ rằng a có nghịch đảo theo modulo m khi và chi khi, UCLN(a,m)=l và nếu nghịch đảo này tồn tại thì nó phải là duy nhất. Ta cũng thấy rằng, nếu b = a 1 thì a = b 1 . Nếu p là số nguyên tố thỉ mọi phần tử khác không của . Zp đều có nghịch đảo. Một vành trong đó mọi phần tử khác 0 đều có nghịch đảo được gọi là một trường. Trong [3] có một thuật toán hữu hiệu để tính các nghịch đảo cùa . zm với m tuỳ ý. Tuy nhiên, trong . z26 chi bằng phương pháp thử và sai cũng có thể tìm được các nghịch đảo của các phần từ nguyên tố cùng nhau với 26: 1 =1, 3"1 =9, 5"1 =21, 7_1 =15, ì r 1 = 1 9 ,17-1 =23, 25"1 =25. (Có thể dễ dàng kiểm chứng lại điều này, ví dụ: 7 x 5 = 105 = 1 (mod 26) hỏi vậy 7_1 = 15 Xét phương trình đồng dư y = ax + b (mod 26). Phương trình này tương đương với ax = y - b (mod 26) Vì UCLN (a,26) = 1 nên a có nghịch đảo theo modulo 26. Nhân cả hai vế của đồng dư thức với a , ta có: a _1( a x ) s a _1( y - b ) (mod 26) Áp dụng tính kết hợp của phép nhân modulo: 64 Kết quả là x = a ’(y -b )(m o d 26) Đây là một công thức tường minh cho X . Như vậy hàm giải mã là: d(y) = a -1 (y - b) mod 26 Hình 2.3 cho mô tả đầy đù về mã Affine. Cho

0, B <-» 1, ...,z «-» 25 mô tả ở trên, ta có thể gắn cho mỗi khoá k một chuỗi ký tự có độ dài m, được gọi là từ khoá. Mật mã Vigenère sẽ mã hoá đồng thòi m ký tự: mỗi phần tử cùa bản rõ tư ơ ng đ ư ơ n g vớ i m k ý tự. Ta có thể mô tả mật mã Vigenère như sau: Cho m là một số nguyên dương cố định nào đó. Ta định nghĩa P = c = -K = ( z 26r Với khóa k = (k x, k 2, ..., km) ta xác định được: (^1> *2' I XỵjÌ) + /Cị, ■+■ kii ... > x m + km) và dk = (y !.y 2..... ym) = ừ i - k lty2 - k2,...,y m - km) Trong đó tất cả các phép toán được thực hiện trong z 25 Hình 2.4. Mã Vigenère 66 Ví dụ 2.5. in = 6, từ khoá k = CIPHER = (2, 8, 15, 7, 4, 17) Thông báo rõ: thiscryptosystemisnotsecure Ta hãy chuyển thành số: 19 7 8 18 2 17 24 15 19 14 18 2 8 15 7 4 17 2 8 15 7 4 21 15 23 25 6 8 0 23 8 21 22 18 19 4 12 8 18 13 14 19 18 4 2 20 17 4 2 8 15 7 4 17 2 8 15 7 4 17 2 8 15 20 1 19 19 12 9 15 22 8 25 8 9 22 25 19 Lại đưa về chữ: VPXZGI AXIVWP UBTTMJ PWIZIT WZT Thông thường, người ta lập bảng để giúp cho việc mã hoá, giải mã được dễ dàng. Bảng này được gọi là bảng Vigenere (xem bảng dưới đây). Khi đó quá trình mã và dịch không cần số hoá nữa. ĩữ X Y T u V u X u V u X Y U V W X Y Z A B ct> KF G H I J K L M N O P V W X Y Z A B C D K F G H I J K L M N O p Q W X Y Z A B CD B F G H I J K L M N O P Q R Hình 2.5. Bảng mã Vigenère 67 Lưu ỷ Để giải mã, ta có thể dùng cùng từ khoá nhưng thay cho cộng, ta trừ nó theo modulo 26. Ta thấy rằng, số các từ khoá có thể với độ dài m trong mật mã Vigenère là26m Bởi vậy, thậm chí với m khá nhỏ, phương pháp tìm kiếm vét cạn cũng yêu cầu thời gian khá lớn. Ví dụ, với m = 6 thỉ không gian khoá cũng có kích thước lớn hơn 3 .108 khoá. 2.2.6. Hệ mật Hill Trong phần này sẽ mô tả một hệ mật thay thế đa biểu khác được gọi là mật mã Hill. Mật mã này do Lester S.Hill đưa ra năm 1929. Giả sứ m là một số nguyên dương, đặt

yỉ). Ở đây, yj cũng như đều là một tổ hợp tuyến tính của X| và *2 Chẳng hạn, có thể lấy: yj = 1 lxj + 3x 2 y 2 = 8 x j + 7 x 2 Tất nhiên có thể viết gọn hơn theo ký hiệu ma trận như sau: •>ym) = ( x .>" •>x m) k 2 m, z... k mm,m J 68 Nói cách khác, y = xk Chúng ta nói rằng bản mã nhận được từ bản rõ nhờ phép biến đổi tuyến tính. Ta sẽ xét xem phải thực hiện giải mã như thế nào, tức là làm thế nào để tính X từ y. Bạn đọc đã làm quen với đại số tuyến tính sẽ thấy rằng phải dùng ma trận nghịch đảo k-1 để giải mã. Bản mã được giải mã bằng công thức X = y k - 1 . Sau đây là một số định nghĩa về những khái niệm cần thiết lấy từ đại số tuyến tính. Nếu A = (Xj j) là một ma trận cấp 1X m và B = (b j k) là một ma trận cấp m.n thì tích ma trận AB = (cj k) được định nghĩa theo công thức : m j=i với 1 < i < 1 và 1 < k < 1 Tức là các phần tử ở hàng i và cột thứ k cùa AB được tạo ra bằng cách lấy hàng thứ i của A và cột thứ k của B, sau đó nhân tuơng ứng các phần tử với nhau và cộng lại. cần để ý rằng AB là một ma trận cấp 1X n . Theo định nghĩa này, phép nhân ma trận là kết hợp (túc (A B )C = a (b c )) nhưng nói chung là không giao hoán (không phải lúc nào A B=B A , thậm chí đối với ma trận vuông A và B). Ma trận dưn vị m X 111 (ký hiệu là Im) là ma trận cấp m X m có các Số ] nằm ờ đường chéo chính, và các số 0 ở vị trí còn lại. Như vậy, ma trận đơn vị 2x2 là: Imđược gọi là ma trận đơn vị vì AIm = A với mọi ma trận cấp 1X m và BIm = B với mọi ma trận cấp m X n Ma trận nghịch đảo của ma trận A cấp m xm (nếu tồn tại) là ma trận A~x sao cho AA~1=A~1.A = Im. Không phải mọi ma trận đều có nghịch đảo, nhưng nếu tồn tại thì nó duy nhất. 69 Với các định nghĩa trên, có thể dễ dàng xây dựng công thức giải mã đã nêu: Vỉ y = x k , ta có thể nhân cả hai vế của đẳng thức y k -1 = (x k )k -1 = x(kk_1)= x lm = X (Chú ý: sừ dụng tính chất kết hợp) Có thể thấy rằng, ma trận mã hoá ở trên có nghịch đảo trong Z26 - 1 í 11 8Ì 00 u^23 l l j VI 00' 7 18' "11x7 + 8x23 l l x l 8 + 8 x i r u 1) ,23 11, ^ 3 x 7 + 7x23 3 X18 + 7 X11 ^ "261 2 8 6 ' ' l 0" 00 k_1 = (l 1 24) Như vậy, Bob đã nhận được bản đúng. Cho tới lúc này, ta đã chỉ ra rằng có thể thực hiện phép giải mã nếu k có một nghịch đảo. Trên thực tế, để phép giải mã là có thể thực hiện được, điều kiện cẩn là k phải có nghịch đảo. (Điều này dễ dàng rút ra từ đại số tuyến tính sơ cấp, tuy nhiên sẽ không chứng minh ở đây). Bởi vậy, ta chì quan tâm tới các ma trận k khả nghịch. Tính khả nghịch của một ma trận vuông phụ thuộc vào giá trị định thức của nó. Để tránh sự tổng quát hoá không cần thiết, ta chỉ giới hạn trong trường hợp 2x2. Định nghĩa 2.3. Định thức cùa ma trận A = (a, j ) cấp 2 X 2 là giá trị det A = a tj a 2 2 -ai 2^2,1 Nhận xét: Định thức của một ma trận vuông cap m X m có thể được tín h th e o c á c p h é p to án h à n g sơ c ấ p (h ã y x e m m ộ t g iá o trình b ất kỳ về đai số tuyến tính). Hai tính chất quan trọng của định thức là d e t\m = 1 và quy tắc nhân det(AB)=detA X detB. Một ma trận thực k là có nghịch đảo khi và chỉ khi định thức của nó khác 0. Tuy nhiên, điều quan trọng cần nhớ là ta đang làm việc trên Z26Kết quả tương ứng là ma trận k có nghịch đảo theo modulo 26 khi và chi khi ƯCLN(detk, 26)= 1. Sau đây sẽ chứng minh ngắn gọn kết quả này. Trước tiên, giả sử rằng UCLN(detk, 26)= 1. Khi đó detk có nghịch đảo trong. z 26 Với 1 < i < m , 1 < j < m , định nghĩa k jj là ma trận thu được từ k bằng cách loại bỏ hàng thứ i và cột thứ j. Và định nghĩa ma 71 trận k có phần từ (i, j)của nó nhận giá trị (- lý +^ det kjj (k được gọi là ma trận bù đại số cùa k). Khi đó, có thể chứng tỏ rằng: k -1 = (d e tk )- 1 k* Bời vậy k là khả nghịch. Ngược lại, k có nghịch đảo k *. Theo quy tắc nhân của định thức: 1 = det I = d e t(k k -1)= det k det k _1 Bời vậy detk có nghịch đảo trong. z 26 Nhận xét Công thức đối với /í-1 ở trên không phải là một công thứ c tín h to án c ó h iệ u q u ả trừ c á c trư ờ n g hợp m n h ỏ (c h ẳ n g h ạn m = 2, 3). Với m lớn, phương pháp thích hợp để tính các ma trận nghịch đảo phải dựa vào các phép toán hàng sơ cấp. Trong trường hợp 2 X 2, ta có công thức sau: Định lý 2.3. Già sử A = (a ,j) là một ma trận cấp 2 x 2 trên . z 26 sao cho det A = aj ja 2 2 - a l 2a 2 1 rá nghịch đào. Khi đó: A _1 = (det A )_1a 2,2 - a 2,l - a l,2 a l,l Trở lại ví dụ đã xét ở trên. Trước hết ta có: det11 8 >3 7 V J ' J= 11x7-8x3 mod 2 = 7 7 - 2 4 mod 26 = 53 mod 26 = 1 Vì 1 1 m od 26 = 1 nên ma trận nghịch đảo là: 72 ^11 8 A 1 3 7 ' 7 18^ 23 11 Đây chính là ma trận đã có ở trên Bây giờ ta sẽ mô tả chính xác mật mã Hill trên Z26 (hình 2.6). Cho m là một số nguyên dương cố định. Cho (P = c = ( Z 26) m và cho: 7C = {các ma trận khả nghịch cấp m x m trên z 26} Với một khóa k 6 % ta xác định: ek(x) = x k Hình 2.6. Mật mã Hill 2.2.7. Hệ mật mã Playfair Mật mã Playfair hay hinh vuông Playfair là một kĩ thuật mã hoá đối xứng thù công và là thuật toán thay thế chữ ghép đầu tiên. Hệ mật này được Charles Wheatstone phát minh ra năm 1854 nhưng lại được gọi theo tên của Lord Playfair người đã phổ biến để sử dụng làm mật mã. Kĩ thuật này mã hoá từng cặp kí tự (bộ ghép) thay cho các kí tự đơn trong m ã hoá thay the đơn và cách sử dụng phức tạp hơn mã hoá Vigenere. Tấn công Playfair khó vì việc phân tích tần suất vẫn thường sử dụng cho mật mã thay thế đơn không dùng được, tuy nhiên phân tích tần suất các bộ chữ ghép thì vẫn có thể nhưng khó hơn nhiều và nói chung phải cần số lượng bản mã rất lớn. Cách dùng Playfair Playfair dùng một bảng 5 x 5 chứa từ hoặc cụm từ khóa. Ta cần phải nhớ từ khóa và 4 quy tắc thực hiện. Tạo bảng khóa chứa 25 chữ cái khác nhau (bỏ chữ “Q” trong bảng chữ cái hoặc phiên bản khác thì coi chữ ‘T ’ và chữ “J” thuộc cùng một ô trong bảng khóa), trước tiên lấp đầy bảng bởi các chữ cái của từ khóa (bỏ các chữ cái lặp lại) rồi lấp các chữ cái còn lại của bảng chữ cái vào các chỗ trống của bảng khóa theo thứ tự. Khóa có thể đuợc viết ở các hàng đầu của bảng, từ trái qua phải. Mã hóa thông điệp, tách thông điệp thành các nhóm gồm 2 kí tự rồi ánh xạ chúng vào bảng khóa. Bổn quy tắc: 1) Xen chữ “X” vào giữa hai chữ cái giống nhau (hoặc chèn vào sau nếu chỉ còn lại một chữ cái cuối cùng) của bản rõ rồi mã hóa cặp mới và tiếp tục thực hiện. Chú ý: Phiên bàn khác thì chèn chữ “Q” thay cho chữ “X”. 2) Nếu hai chữ cái của một cặp xuất hiện trên cùng một hàng của khóa thì thay thế chúng bằng các chữ cái ở ngay bên phải tương ứng (nếu chữ cái nằm ở tận cùng bên phải của hàng thì thay bằng chữ cái đầu tiên c ủ a hàng đó) 3) Nếu hai chữ cái của cặp xuất hiện trên cùng một cột của khóa thì thay thế chúng bởi các chữ ở ngay dưới tương ứng (nếu chữ cái nằm ở tận cùng bên dưới của cột thỉ thay thế bởi chữ cái đầu tiên cùa cột đó) 4) Nếu hai chữ cái của cặp không cùng hàng và cột thì thay thế chúng bởi các chữ cái trên cùng hàng tương ứng và ở các góc cùa hình chữ nhật mà hai chữ cái cùa cặp này tạo nên trên khóa. Ví dụ 2.7. Dùng khóa “playfair example” để mã hóa bản rõ “Hide the gold in the tree stump”. Khóa sẽ được bố trí nhu sau: PLAYF IREXM BCDGH JKNOS T U V W Z 74 ớ đây các kí tự lặp lại sẽ bị bỏ đi, sau đó thêm các chữ cái trong bảng chữ cái mà chưa xuất hiện trong khóa sau khi đã bỏ các chữ lặp lại vào để lấp đầy ô trống của bảng khóa 5x5. Bán rõ được tách như sau: HI DE TH EG OL DI NT HE TR EE ST UM p Nhưng có cặp EE thì ta phải xen chữ X vào giữa, kết quả được là: HI DE TH EG OL DI NT HE TR EX ES TU MP M ã hóa: Chiếu từng cặp của bản rõ sau khi đã tách vào bảng khóa theo các quy tác mã hóa ta được: HI-> BM (Khác hàng, khác cột) DE->ND (Cùng cột) TH->ZB (Khác hàng, khác cột) EG-^XD (Khác hàng, khác cột) OL->KY (Khác hàng, khác cột) DI->BE (Khác hàng, khác cột) NT->JV (Khác hàng, khác cột) HE->DM (Khác hàng, khác cột) TR->UI (Khác hàng, khác cột) EX-»XM (Cùng hàng) ES->MN (Khác hàng, khác cột) TU->UV (Cùng hàng) MP->IF (Khác hàng, khác cột) Vậy bản mã là: "BMNDZBXDKYBEJVDMUIXMMNUVIF” Giải mã: vẫn dùng khóa giống như mã hóa còn 4 quy tắc thì thay thế theo chiều ngược lại. Thám mã Playfair Việc lấy được khóa là tương đối dễ nếu biết cà bản rõ và bản mã. Nếu chỉ biết bản mã thì phương pháp giải mã theo vét cạn bao gồm việc tìm kiếm qua không gian khóa và phân tích tần suất của các chữ ghép trong ngôn ngữ giả định của thông điệp gốc. 75 Giải mã Playfair dựa vào sự liên quan của các chữ cái nên việc xác định các xâu bản rõ ứng cử viên dễ dàng hơn. Đặc biệt là chữ ghép Playfair và ngược của chữ ghép đó (ví dụ AB và BA) sẽ giải mã thành cùng một kiểu mẫu chữ cái trong bản rõ (Ví dụ RE và ER). Trong tiếng Anh, có rất nhiều tò chứa những bộ chữ ghép ngược này như REceivER và DEpartED. Việc xác định những bộ chữ ghép ngược mà gần nhau trong bản mã và ghép kiểu mẫu thành một danh sách các từ rõ đã biết chứa kiểu mẫu là đơn giản từ đó đưa ra được các xâu bản rõ có thể rồi sẽ xác định khóa. Một cách tiếp cận khác là phương pháp Shotgun hill climbing. Bắt đầu với hình vuông các chữ cải ngẫu nhiên sau đó thực hiện những sự thay đổi nhỏ (ví dụ nhu chuyển các chữ cái, các hàng hay phản xạ toàn bộ hình vuông) để thấy được nếu bản rõ ứng cử viên giống bản rõ chuẩn hơn so với trước khi thay đổi (có thể bằng cách so sánh các nhóm ba thành lược đồ tần suất đã biết). Neu hình vuông mới có sự cải tiến thi nó sẽ đ u ợ c ch ấp nhận và sau sẽ đượ c b iến đ ổi thêm đ ể tìm ra m ộ t ứ n g cử viên tốt hơn. Cuối cùng là dù chọn phương pháp phân loại nào thì cũng tìm ra bản rõ hoặc một văn bản rất gần bản rõ với khả năng đúng là lớn nhất. Máy tính có thể chấp nhận thuật toán này để phá các mật mã Playfair với số lượng văn bản tương đối nhỏ. Phuơng pháp Playfair thường được áp dung trong việc giải các trò chơi đố các ô chữ. 2.3. Mã dòng Trong các hệ mật trên, các phần tử rõ được mã hoá bằng cách dùng cùng một khoák: y = yi y2 ... yn = ek(xi) ek(x2) ... eic(xn) Ở đây X , có thể là một hoặc một dãy ký tự. Hệ mật loại này đuợc gọi là mật mã khối, hay đơn giản là mã khối.Bây giờ ta nghiên cứu mật mã dòng. Ý tưởng cơ bản là sinh dòng khoá: z = Z\ z2 ... và mã hóa dòng rõ X = Xi X2 ... theo cách: 76 y = y. y2... = eIx ( x ,K 2(x2)... Mật mã dòng hoạt động như sau: + Giả sử k là khoá và Xi X2 ... là dòng rõ, fj là hàm của k và i - 1 đặc trưng rõ: Zj = fi(k, Xi,, Xi+i), Xiđược chọn trước bởi hai bên. y,= ^ (*,),! = 2,3,... D o đó để mã hóa dòng rõ Xi x 2..., ta tính liên tiếp: Z|, yi, z2, y2... Việc giải mã được làm tương tự: Zl, Xi, z2, x 2... Nếu Zj = k với mọi i, thỉ ta có thể nghĩ mật mã khối như trường hợp đặc biệt của mật mã dòng. Sau đây là một số trường hợp đặc biệt nhưng quan trọng của mật mã dòng: - Mật mã đồng bộ: Zj = fj(k) i = l , 2 , ... - Mật mã tuần hoàn với chu kỳ d: Zj+d = Zj, với mọi i >= 1 Mật mã dòng được chú ý nhiều là trường hợp p = c = Z2 Khi đó phép mã hoá và giải mã là cộng theo modulo 2: ez(x) = X + z mod 2 d z(x) = y + z m o d 2 Khoá được sinh theo phương pháp ghi dịch phản hồi. - Mật mã khoá tự động: p = c = K = z 26 Zi = k, Zj = Xj_Ị (i > = 2) ez(x) = X + z mod 2 dz(x) = y - z mod 2; với X, y e z 26 Ví dụ: K = 8, thông báo cần mã là: hairphongf 77 Trước tiên, chuyển thông báo rõ thành dãy số nguyên: 7 0 8 17 15 7 14 13 6 5 Dòng khoá như sau: 8 7 0 8 17 15 7 14 13 6 5 Cộng dãy khoá và dãy rõ theo qui tắc: yj =Xj + Zi mod 26 i = 1, 2,... ta đuợc: 15 7 8 25 6 22 21 1 19 11 và chuyển thành chữ: phizgwvbtl Với bản mã này và k = 8, ta giải mã như sau: - Chuyển dãy mã thành số và trừ lần luợt 15 7 8 25 6 22 21 1 19 11 8 7 0 8 17 15 7 14 13 6 7 0 8 17 15 7 14 13 6 3 - Chuyển dãy số thành dãy chữ: hairphongf 2.4. Mã khối 2.4.1. Giới thiệu chung Các hệ mật khóa bí mật thường đuợc chia thành các hệ mã khối và hệ mã dòng. Đối với mã khối bản rõ có dạng các khối "lớn" (chẳng hạn 128-bit) và dãy các khối đều được mã bởi cùng một hàm mã hóa, tức là bộ mã hóa là một hàm không nhớ. Trong mã dòng, bản rõ thuờng là dãy các khối "nhỏ" (thường là 1 -bit) và được biến đổi bới một bộ mã hóa có nhớ. Các hệ mã khối có ưu điểm là chúng có thể được chuẩn hóa một cách dễ dàng, bởi vì các đơn vị xử lý thông tin hiện này thường có dạng block như bytes hoặc words. Nhược điểm lớn nhất cùa mã khối là phép mã hóa không che giấu được các mẫu dữ liệu: các khối mã giống nhau sẽ suy ra các khối rõ cũng giống nhau. Tuy nhiên nhược điểm này có thể được khắc phục bằng cách 78