Giáo trình An toàn và bảo mật thông tin

doc 94 trang phuongnguyen 3930
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình An toàn và bảo mật thông tin", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docgiao_trinh_mon_hoc_an_toan_va_bao_mat_thong_tin_nghe_quan_tr.doc

Nội dung text: Giáo trình An toàn và bảo mật thông tin

  1. BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Môn học: An toàn và bảo mật thông tin NGHỀ: QUẢN TRỊ MẠNG TRÌNH ĐỘ: CAO ĐẲNG NGHỀ ( Ban hành kèm theo Quyết định số: 120/QĐ-TCDN ngày 25/02/2013 của Tổng cục trưởng Tổng cục dạy nghề) Hà Nội, năm 2013
  2. TUYÊN BỐ BẢN QUYỀN: Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. MÃ TÀI LIỆU: MH25
  3. 1 LỜI GIỚI THIỆU Gần đây, môn học “An toàn và bảo mật thông tin” đã được đưa vào giảng dạy tại hầu hết các Khoa Công nghệ Thông tin của các trường đại học và cao đẳng. Do các ứng dụng trên mạng internet ngày các phát triển và mở rộng, nên an toàn thông tin trên mạng đã trở thành nhu cầu bắt buộc cho mọi hệ thống ứng dụng. Giáo trình gồm 6 chương. Chương đầu nêu tổng quan về bảo mật, chương 2 tóm tắt sơ lược về mã cổ điển, chương 3 trình bày về chứng thực, chương 4 giới thiệu về mã khối và chuẩn mã dữ liệu, chương 5 nêu các vấn đề về xâm nhập và phát hiện xâm nhập và cuối cùng, chương 6 giới thiệu ứng dụng về an toàn Web và IP. Hà Nội, ngày 25 tháng 2 năm 2013 Tham gia biên soạn Chủ biên Th.S Trương Văn Hòa
  4. 2 MỤC LỤC LỜI GIỚI THIỆU 1 CHƯƠNG 1 TỔNG QUAN VỀ AN TOÀN VÀ BẢO MẬT THÔNG TIN 7 1.1. Nội dung của an toàn và bảo mật thông tin 7 1.2. Các chiến lượt an toàn hệ thống 8 1.2.1 Giới hạn quyền hạn tối thiểu (Last Privilege) 8 1.2.2. Bảo vệ theo chiều sâu (Defence In Depth) 8 1.2.3. Nút thắt (Choke Point) 8 1.2.4. Điểm nối yếu nhất (Weakest Link) 8 1.2.5. Tính toàn cục 9 1.2.6. Tính đa dạng bảo vệ 9 1.3 Các mức bảo vệ trên mạng 9 1.3.1. Quyền truy nhập 9 1.3.2. Đăng ký tên và mật khẩu. 9 1.3.3. Mã hoá dữ liệu 10 1.3.4. Bảo vệ vật lý 10 1.3.5. Tường lửa 10 1.3.6. Quản trị mạng 10 1.4. An toàn thông tin bằng mật mã 10 1.5. Vai trò của hệ mật mã 11 1.6. Phân loại hệ mật mã 12 1.7. Tiêu chuẩn đánh giá hệ mật mã 12 1.7.1. Độ an toàn 12 1.7.2. Tốc độ mã và giải mã 13 1.7.3. Phân phối khóa 13 CHƯƠNG 2 CÁC PHƯƠNG PHÁP MÃ HÓA CỔ ĐIỂN 14 2.1. Các hệ mật mã cổ điển 14 2.1.1. Mã dịch vòng ( shift cipher) 14 2.1.2. Mã thay thế 15 2.1.3. Mã Affine 16 2.1.4. Mã Vigenère 19 2.1.5. Mật mã Hill 19 2.2. Mã thám các hệ mã cổ điển 20 2.2.1. Thám hệ mã Affine 21 2.2.2. Thám hệ mã thay thế 23 2.2.3. Thám hệ mã Vigenère 26 CHƯƠNG 3 CHỨNG THỰC 28 3.1 Các định nghĩa 28 3.2. Sơ đồ chữ kí ELGAMAL 30 3.3. Chuẩn chữ kí số 30 3.4 Xác thực mẫu tin 31 3.4.1 Các khái niệm 31
  5. 3 3.4.2 Mã mẫu tin 32 3.4.3 Mã xác thực mẫu tin (MAC – Message Authentication Code) 32 3.4 4 Sử dụng mã đối xứng cho MAC 33 3.5 Các hàm Hash (hay còn gọi là hàm băm) 34 3.5.1 Các yêu cầu 34 3.5.2 Các hàm hash đơn giản 34 3.5.3 Tính an toàn của hàm Hash và MAC. 35 3.6 Các thuật toán Hash và MAC 36 3.6.1 Các thuật toán Hash và MAC 36 3.6.2 Thuật toán Hash an toàn SHA (Secure Hash Algorithm) 36 3.7 Các ứng dụng xác thực 41 3.7.1 Kerberos 41 3.7.2 Dịch vụ xác thực X.509 45 3.8. Bài tập 47 CHƯƠNG 4 MÃ KHỐI VÀ CHUẨN MÃ DỮ LIỆU DES 49 3.1. Giới thiệu chung về DES 49 3.2. Mô tả thuật toán 49 3.3. Hoán vị khởi đầu 50 3.4. Khoá chuyển đổi 50 3.5. Hoán vị mở rộng 51 3.6. Hộp thay thế S 51 3.7. Hộp hoán vị P 52 3.8. Hoán vị cuối cùng 52 3.9. Giải mã DES 52 3.10. Phần cứng và phần mềm thực hiện DES 53 3.11. Sự an toàn của DES 53 3.12. Tranh luận về DES. 54 3.13. DES trong thực tế 55 3.14. Các chế độ hoạt động của DES. 56 CHƯƠNG 5 PHÁT HIỆN XÂM NHẬP 58 5.1 Kẻ xâm nhập 58 5.1.1 Khái niệm 58 5.1.2 Các kỹ thuật xâm phạm 58 5.1.3 Đoán mật khẩu 59 5.1.4 Phát hiện xâm nhập 59 5.1.5 Quản trị mật khẩu 62 5.2 Phần mềm có hại 63 5.2 1 Các kiểu phần mềm có hại khác ngoài Virus 63 5.2.2. Cửa sau hoặc cửa sập 63 5.2.3. Bom logic 63 5.2.4. Ngựa thành Tơ roa 64 5.2.5. Zombie 64 5.3. Virus 64 5.3.1. Macro Virus 65 5.3.2. Virus email 65
  6. 4 5.3.3. Sâu 65 5.3.4. Các biện pháp chống Virus 67 5.3.5. Phần mềm chống Virus 67 5.3.6. Kỹ thuật chống Virus nâng cao 67 5.3.7 Phần mềm ngăn chặn hành vi 68 5.3.8 Tràn bộ đệm 68 5.3.9. Tấn công tràn bộ nhớ. 69 5.3.10 Code che đậy (Shellcode) 70 5.3.11 Bảo vệ tràn bộ nhớ 70 5.4 Bức tường lửa 72 5.4.1 Mở đầu 72 5.4.2 Bức tường lửa – các lọc gói 73 5.4.3 Bức tường lửa – cổng giao tiếp ở tầng ứng dụng (hoặc proxy) 73 5.4.4 Bức tường lửa - cổng giao tiếp mức mạch vòng 74 5.4.5 Máy chủ Bastion 74 5.4.6 Kiểm soát truy cập 74 5.4.7 Các hệ thống máy tính tin cậy 74 5.4.8 Mô hình Bell LaPadula 74 5.4.9 Tiêu chuẩn chung 75 5.5 Bài tập 76 CHƯƠNG 6 AN TOÀN IP VÀ WEB 77 6.1 An toàn IP 77 6.1.1 IPSec 77 6.1.2 Kiến trúc an toàn IP 77 6.2 An toàn Web 80 6.2.1 SSL (Secure Socket Layer) 80 6.2.2 Xác thực người dùng RADIUS 82 6.3 Thanh toán điện tử an toàn 84 6.3.1 Yêu cầu 84 6.3.2 Thanh toán điện tử an toàn 84 6.3.3 Chữ ký kép 85 6.3.3 Yêu cầu trả tiền 85 6.3.4 Giấy phép cổng trả tiền 85 6.3.5 Nhận trả tiền 86 6.4 An toàn thư điện tử 86 6.4.1 Dịch vụ PGP 86 6.4.2 Mở rộng thư Internet đa mục đích/an toàn S/MIME 88 6.5. Bài tập 89 CÁC THUẬT NGỮ CHUYÊN MÔN 90 TÀI LIỆU THAM KHẢO 91
  7. 5 MÔN HỌC AN TOÀN VÀ BẢO MẬT THÔNG TIN Mã môn học: MH 25 Vị trí, tính chất, ý nghĩa và vai trò của môn học: Môn học được bố trí sau khi sinh viên học xong mô đun: Mạng máy tính và Quản trị mạng 1. Là môn học chuyên môn nghề. Mục tiêu của môn học: - Trình bày được các nguy cơ đối với dữ liệu, các phương pháp đảm bảo an toàn dữ liệu. - Ghi nhớ kiến thức về mật mã, mã hóa, và bảo mật dữ liệu (khái niệm, yêu cầu, chỉ dẫn, dịch vụ, kỹ thuật, thuật toán, ). - Trình bày được quy trình khóa và chứng thực (khóa cơ sở dữ liệu / thư mục,chữ ký số, định danh, ). - Trình bày chức năng an ninh mạng, trình bày được quy trình bảo mật thư điện tử và mã hóa thông điệp. - Trình bày được những kiến thức về hệ thống thương mại điện tử (thanh toán tự động, đặt chỗ tự động, mô hình giao dịch mạng, bảo mật giao dịch điện tử ) Thời lượng Mã Loại bài Địa Tên chương mục Tổng Lý Thực Kiểm chương dạy điểm số thuyết hành Tra* Chương Tổng quan về an toàn LT Lớp học 7 7 0 0 1 và bảo mật thông tin Chương Các phương pháp mã LT Lớp học 8 7 0 1 2 hóa cổ điển Chương Chứng thực LT+TH Lớp học 12 4 8 0 3 Chương Mã khối và chuẩn dữ LT Lớp học 6 6 0 0 4 liệu DES Chương Phát hiện xâm nhập và LT+TH Lớp học 14 3 10 1 5 tường lửa Chương An toàn IP và Web LT+TH Lớp học 13 3 9 1 6
  8. 6 YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNH MÔN HỌC/MÔ ĐUN 1. Phương pháp đánh giá + Hình thức kiểm tra hết môn có thể chọn một trong các hình thức sau: - Đối với lý thuyết :Viết, vấn đáp, trắc nghiệm - Đối với thực hành : Bài tập thực hành trên máy tính. + Thời gian kiểm tra: - Lý thuyết: Không quá 150 phút - Thực hành: Không quá 4 giờ + Thực hiện theo đúng qui chế thi, kiểm tra và công nhận tốt nghiệp trong dạy nghề hệ chính qui ở quyết định 14/2007/BLĐTB&XH ban hành ngày 24/05/2007 của Bộ trưởng Bộ LĐ-TB&XH. 2. Nội dung đánh giá + Về kiến thức: Được đánh giá qua bài kiểm tra viết, trắc nghiệm đạt được các yêu cầu sau: - Xác định được các thành phần cần bảo mật cho một hệ thống - Trình bày được các hình thức tấn công vào hệ thống mạng - Liệt kê được các tình huống tấn công mạng - Mô tả được cách thức mã hoá thông tin - Mô tả được xây dựng kiến trúc mạng sử dụng tường lửa - Mô tả kiến trúc mạng có sử dụng tường lửa - Phân loại được các loại virus thông dung và phương pháp phòng chông virus + Về kỹ năng: - Thiết lập được các cách thức bảo mật - Cấu hình và xây dựng được các chính sách bảo mật - Thiết lập tường lửa bảo vệ mạng - Cài đặt được các phần mềm chống virus và thiết lập cấu hình các phần mềm đó + Về thái độ: Cẩn thận, tự giác.
  9. 7 CHƯƠNG 1 TỔNG QUAN VỀ AN TOÀN VÀ BẢO MẬT THÔNG TIN Mã chương: MH25-01 Mục tiêu: - Trình bày được nội dung tổng quan an toàn và bảo mật thông tin. - Xác định được các mức bảo vệ hệ thống. - Thực hiện các thao tác an toàn với máy tính bằng mật mã. Nội dung chính: 1.1. Nội dung của an toàn và bảo mật thông tin Mục tiêu: Trình bày được tổng quan về an toàn và bảo mật thông tin. Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ về điện tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới. Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu. Các phương pháp bảo vệ an toàn thông tin dữ liệu có thể được quy tụ vào ba nhóm sau: - Bảo vệ an toàn thông tin bằng các biện pháp hành chính. - Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng). - Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm). Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp. Môi trường khó bảo vệ an toàn thông tin nhất và cũng là môi trường đối phương dễ xân nhập nhất đó là môi trường mạng và truyền tin. Biện pháp hiệu quả nhất và kinh tế nhất hiện nay trên mạng truyền tin và mạng máy tính là biện pháp thuật toán. An toàn thông tin bao gồm các nội dung sau: - Tính bí mật: tính kín đáo riêng tư của thông tin - Tính xác thực của thông tin, bao gồm xác thực đối tác( bài toán nhận danh), xác thực thông tin trao đổi. - Tính trách nhiệm: đảm bảo người gửi thông tin không thể thoái thác trách nhiệm về thông tin mà mình đã gửi. Để đảm bảo an toàn thông tin dữ liệu trên đường truyền tin và trên mạng máy tính có hiệu quả thì điều trước tiên là phải lường trước hoặc dự đoán trước các khả năng không an toàn, khả năng xâm phạm, các sự cố rủi ro có thể xảy ra đối với thông tin dữ liệu được lưu trữ và trao đổi trên đường truyền tin cũng như
  10. 8 trên mạng. Xác định càng chính xác các nguy cơ nói trên thì càng quyết định được tốt các giải pháp để giảm thiểu các thiệt hại. Có hai loại hành vi xâm phạm thông tin dữ liệu đó là: vi phạm chủ động và vi phạm thụ động. Vi phạm thụ động chỉ nhằm mục đích cuối cùng là nắm bắt được thông tin (đánh cắp thông tin). Việc làm đó có khi không biết được nội dung cụ thể nhưng có thể dò ra được người gửi, người nhận nhờ thông tin điều khiển giao thức chứa trong phần đầu các gói tin. Kẻ xâm nhập có thể kiểm tra được số lượng, độ dài và tần số trao đổi. Vì vậy vi pham thụ động không làm sai lệch hoặc hủy hoại nội dung thông tin dữ liệu được trao đổi. Vi phạm thụ động thường khó phát hiện nhưng có thể có những biện pháp ngăn chặn hiệu quả. Vi phạm chủ động là dạng vi phạm có thể làm thay đổi nội dung, xóa bỏ, làm trễ, xắp xếp lại thứ tự hoặc làm lặp lại gói tin tại thời điểm đó hoặc sau đó một thời gian. Vi phạm chủ động có thể thêm vào một số thông tin ngoại lai để làm sai lệch nội dung thông tin trao đổi. Vi phạm chủ động dễ phát hiện nhưng để ngăn chặn hiệu quả thì khó khăn hơn nhiều. Một thực tế là không có một biện pháp bảo vệ an toàn thông tin dữ liệu nào là an toàn tuyệt đối. Một hệ thống dù được bảo vệ chắc chắn đến đâu cũng không thể đảm bảo là an toàn tuyệt đối. 1.2. Các chiến lượt an toàn hệ thống Mục tiêu: Trình bày được các chiến lược bảo vệ an toàn cho mạng. 1.2.1 Giới hạn quyền hạn tối thiểu (Last Privilege) Đây là chiến lược cơ bản nhất theo nguyên tắc này bất kỳ một đối tượng nào cùng chỉ có những quyền hạn nhất định đối với tài nguyên mạng, khi thâm nhập vào mạng đối tượng đó chỉ được sử dụng một số tài nguyên nhất định. 1.2.2. Bảo vệ theo chiều sâu (Defence In Depth) Nguyên tắc này nhắc nhở chúng ta : Không nên dựa vào một chế độ an toàn nào dù cho chúng rất mạnh, mà nên tạo nhiều cơ chế an toàn để tương hỗ lẫn nhau. 1.2.3. Nút thắt (Choke Point) Tạo ra một “cửa khẩu” hẹp, và chỉ cho phép thông tin đi vào hệ thống của mình bằng con đường duy nhất chính là “cửa khẩu” này. => phải tổ chức một cơ cấu kiểm soát và điều khiển thông tin đi qua cửa này. 1.2.4. Điểm nối yếu nhất (Weakest Link) Chiến lược này dựa trên nguyên tắc: “ Một dây xích chỉ chắc tại mắt duy nhất, một bức tường chỉ cứng tại điểm yếu nhất” Kẻ phá hoại thường tìm những chỗ yếu nhất của hệ thống để tấn công, do đó ta cần phải gia cố các yếu điểm của hệ thống. Thông thường chúng ta chỉ
  11. 9 quan tâm đến kẻ tấn công trên mạng hơn là kẻ tiếp cận hệ thống, do đó an toàn vật lý được coi là yếu điểm nhất trong hệ thống của chúng ta. 1.2.5. Tính toàn cục Các hệ thống an toàn đòi hỏi phải có tính toàn cục của các hệ thống cục bộ. Nếu có một kẻ nào đó có thể bẻ gãy một cơ chế an toàn thì chúng có thể thành công bằng cách tấn công hệ thống tự do của ai đó và sau đó tấn công hệ thống từ nội bộ bên trong. 1.2.6. Tính đa dạng bảo vệ Cần phải sử dụng nhiều biện pháp bảo vệ khác nhau cho hệ thống khác nhau, nếu không có kẻ tấn công vào được một hệ thống thì chúng cũng dễ dàng tấn công vào các hệ thống khác. 1.3 Các mức bảo vệ trên mạng Mục tiêu: Hiểu rõ và xác định được các mức bảo vệ hệ thống mạng. Vì không thể có một giải pháp an toàn tuyệt đối nên người ta thường phải sử dụng đồng thời nhiều mức bảo vệ khác nhau tạo thành nhiều hàng rào chắn đối với các hoạt động xâm phạm. Việc bảo vệ thông tin trên mạng chủ yếu là bảo vệ thông tin cất giữ trong máy tính, đặc biệt là các server trên mạng. Bởi thế ngoài một số biện pháp nhằm chống thất thoát thông tin trên đường truyền mọi cố gắng tập trung vào việc xây dựng các mức rào chắn từ ngoài vào trong cho các hệ thống kết nối vào mạng. Thông thường bao gồm các mức bảo vệ sau: 1.3.1. Quyền truy nhập Lớp bảo vệ trong cùng là quyền truy nhập nhằm kiểm soát các tài nguyên của mạng và quyền hạn trên tài nguyên đó. Dĩ nhiên là kiểm soát được các cấu trúc dữ liệu càng chi tiết càng tốt. Hiện tại việc kiểm soát thường ở mức tệp. 1.3.2. Đăng ký tên và mật khẩu. Thực ra đây cũng là kiểm soát quyền truy nhập, nhưng không phải truy nhập ở mức thông tin mà ở mức hệ thống. Đây là phương pháp bảo vệ phổ biến nhất vì nó đơn giản ít phí tổn và cũng rất hiệu quả. Mỗi người sử dụng muốn được tham gia vào mạng để sử dụng tài nguyên đều phải có đăng ký tên và mật khẩu trước. Người quản trị mạng có trách nhiệm quản lý, kiểm soát mọi hoạt động của mạng và xác định quyền truy nhập của những người sử dụng khác theo thời gian và không gian (nghĩa là người sử dụng chỉ được truy nhập trong một khoảng thời gian nào đó tại một vị trí nhất định nào đó). Về lý thuyết nếu mọi người đều giữ kín được mật khẩu và tên đăng ký của mình thì sẽ không xảy ra các truy nhập trái phép. Song điều đó khó đảm bảo trong thực tế vì nhiều nguyên nhân rất đời thường làm giảm hiệu quả của lớp bảo vệ này. Có thể khắc phục bằng cách người quản mạng chịu trách nhiệm đặt mật khẩu hoặc thay đổi mật khẩu theo thời gian.
  12. 10 1.3.3. Mã hoá dữ liệu Để bảo mật thông tin trên đường truyền người ta sử dụng các phương pháp mã hoá. Dữ liệu bị biến đổi từ dạng nhận thức được sang dạng không nhận thức được theo một thuật toán nào đó và sẽ được biến đổi ngược lại ở trạm nhận (giải mã). Đây là lớp bảo vệ thông tin rất quan trọng. 1.3.4. Bảo vệ vật lý Ngăn cản các truy nhập vật lý vào hệ thống. Thường dùng các biện pháp truyền thống như ngăn cấm tuyệt đối người không phận sự vào phòng đặt máy mạng, dùng ổ khoá trên máy tính hoặc các máy trạm không có ổ mềm. 1.3.5. Tường lửa Ngăn chặn thâm nhập trái phép và lọc bỏ các gói tin không muốn gửi hoặc nhận vì các lý do nào đó để bảo vệ một máy tính hoặc cả mạng nội bộ (intranet) 1.3.6. Quản trị mạng Trong thời đại phát triển của công nghệ thông tin, mạng máy tính quyết định toàn bộ hoạt động của một cơ quan, hay một công ty xí nghiệp. Vì vậy việc bảo đảm cho hệ thống mạng máy tính hoạt động một cách an toàn, không xảy ra sự cố là một công việc cấp thiết hàng đầu. Công tác quản trị mạng máy tính phải được thực hiện một cách khoa học đảm bảo các yêu cầu sau : - Toàn bộ hệ thống hoạt động bình thường trong giờ làm việc. - Có hệ thống dự phòng khi có sự cố về phần cứng hoặc phần mềm xảy ra. - Backup dữ liệu quan trọng theo định kỳ. - Bảo dưỡng mạng theo định kỳ. - Bảo mật dữ liệu, phân quyền truy cập, tổ chức nhóm làm việc trên mạng. 1.4. An toàn thông tin bằng mật mã Mục tiêu: Trình bày được cách bảo mật an toàn thông tin bằng mật mã. Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin bí mật. Mật mã bao gồm : Lập mã và phá mã. Lập mã bao gồm hai quá trình: mã hóa và giải mã. Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng nhận thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá trình này được gọi là mã hoá thông tin (encryption), ở trạm nhận phải thực hiện quá trình ngược lại, tức là biến đổi thông tin từ dạng không nhận thức được (dữ liệu đã được mã hoá) về dạng nhận thức được (dạng gốc), quá trình này được gọi là giải mã. Đây là một lớp bảo vệ thông tin rất quan trọng và được sử dụng rộng rãi trong môi trường mạng.
  13. 11 Để bảo vệ thông tin bằng mật mã người ta thường tiếp cận theo hai hướng: - Theo đường truyền (Link_Oriented_Security). - Từ nút đến nút (End_to_End). Theo cách thứ nhất thông tin được mã hoá để bảo vệ trên đường truyền giữa hai nút mà không quan tâm đến nguồn và đích của thông tin đó. Ở đây ta lưu ý rằng thông tin chỉ được bảo vệ trên đường truyền, tức là ở mỗi nút đều có quá trình giải mã sau đó mã hoá để truyền đi tiếp, do đó các nút cần phải được bảo vệ tốt. Ngược lại theo cách thứ hai thông tin trên mạng được bảo vệ trên toàn đường truyền từ nguồn đến đích. Thông tin sẽ được mã hoá ngay sau khi mới tạo ra và chỉ được giải mã khi về đến đích. Cách này mắc phải nhược điểm là chỉ có dữ liệu của người ung thì mới có thể mã hóa được còn dữ liệu điều khiển thì giữ nguyên để có thể xử lý tại các nút. 1.5. Vai trò của hệ mật mã Mục tiêu: phân tích được vai trò của hệ mật mã. Các hệ mật mã phải thực hiện được các vai trò sau: - Hệ mật mã phải che dấu được nội dung của văn bản rõ (PlainText) để đảm bảo sao cho chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin (Secrety), hay nói cách khác là chống truy nhập không đúng quyền hạn. - Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống đến người nhận hợp pháp là xác thực (Authenticity). - Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo, mạo danh để gửi thông tin trên mạng. Ưu điểm lớn nhất của bất kỳ hệ mật mã nào đó là có thể đánh giá được độ phức tạp tính toán mà “kẻ địch” phải giải quyết bài toán để có thể lấy được thông tin của dữ liệu đã được mã hoá. Tuy nhiên mỗi hệ mật mã có một số ưu và nhược điểm khác nhau, nhưng nhờ đánh giá được độ phức tạp tính toán mà ta có thể áp dụng các thuật toán mã hoá khác nhau cho từng ứng dụng cụ thể tuỳ theo dộ yêu cầu về đọ an toàn. Các thành phần của một hệ mật mã : Định nghĩa: một hệ mật là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau: - P là một tập hợp hữu hạn các bản rõ (PlainText), nó được gọi là không gian bản rõ.
  14. 12 - C là tập các hữu hạn các bản mã (Crypto), nó còn được gọi là không gian các bản mã. Mỗi phần tử của C có thể nhận được bằng cách áp dụng phép mã hoá Ek lên một phần tử của P, với k K. - K là tập hữu hạn các khoá hay còn gọi là không gian khoá. Đối với mỗi phần tử k của K được gọi là một khoá (Key). Số lượng của không gian khoá phải đủ lớn để “kẻ địch” không có đủ thời gian để thử mọi khoá có thể (phương pháp vét cạn). - Đối với mỗi k K có một quy tắc mã eK: P → C và một quy tắc giải mã tương ứng dk D. Mỗi eK: P → C và dk: C → P là những hàm mà: dK (ek(x))=x với mọi bản rõ x P. 1.6. Phân loại hệ mật mã Mục tiêu: Biết phân loại các hệ mật mã khác nhau, so sánh được điểm ưu, nhược của từng hệ mật mã. Có nhiều cách để phân loại hệ mật mã. Dựa vào cách truyền khóa có thể phân các hệ mật mã thành hai loại: - Hệ mật đối xứng (hay còn gọi là mật mã khóa bí mật): là những hệ mật dung chung một khoá cả trong quá trình mã hoá dữ liệu và giải mã dữ liệu. Do đó khoá phải được giữ bí mật tuyệt đối. - Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai) : Hay còn gọi là hệ mật mã công khai, các hệ mật này dùng một khoá để mã hoá sau đó dùng một khoá khác để giải mã, nghĩa là khoá để mã hoá và giải mã là khác nhau. Các khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khoá nào có thể suy được từ khoá kia. Khoá dùng để mã hoá có thể công khai nhưng khoá dùng để giải mã phải giữ bí mật. Ngoài ra nếu dựa vào thời gian đưa ra hệ mật mã ta còn có thể phân làm hai loại: Mật mã cổ điển (là hệ mật mã ra đời trước năm 1970) và mật mã hiện đại (ra đời sau năm 1970). Còn nếu dựa vào cách thức tiến hành mã thì hệ mật mã còn được chia làm hai loại là mã dòng (tiến hành mã từng khối dữ liệu, mỗi khối lại dựa vào các khóa khác nhau, các khóa này được sinh ra từ hàm sinh khóa, được gọi là dòng khóa ) và mã khối (tiến hành mã từng khối dữ liệu với khóa như nhau) 1.7. Tiêu chuẩn đánh giá hệ mật mã Mục tiêu: đánh giá được một hệ mật mã người ta thường đánh giá thông qua các tính chất như độ an toà, tốc độ giải mã, cách phân phối khóa. 1.7.1. Độ an toàn Một hệ mật được đưa vào sử dụng điều đầu tiên phải có độ an toàn cao. Ưu điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn
  15. 13 tính toán mà không cần phải cài đặt. Một hệ mật được coi là an toàn nếu để phá hệ mật mã này phải dùng n phép toán. Mà để giải quyết n phép toán cần thời gian vô cùng lớn, không thể chấp nhận được. Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau: - Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khoá, công khai thuật toán. - Khi cho khoá công khai ek và bản rõ P thì chúng ta dễ dàng tính được ek(P) = C. Ngược lại khi cho dk và bản mã C thì dễ dàng tính được dk(M)=P. Khi không biết dK thì không có khả năng để tìm được M từ C, nghĩa là khi cho hàm f: X → Y thì việc tính y=f(x) với mọi x X là dễ còn việc tìm x khi biết y lại là vấn đề khó và nó được gọi là hàm một chiều. - Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ. 1.7.2. Tốc độ mã và giải mã Khi đánh giá hệ mật mã chúng ta phải chú ý đến tốc độ mã và giải mã. Hệ mật tốt thì thời gian mã và giải mã nhanh. 1.7.3. Phân phối khóa Một hệ mật mã phụ thuộc vào khóa, khóa này được truyền công khai hay truyền khóa bí mật. Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ mật có khóa công khai. Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã.
  16. 14 CHƯƠNG 2 CÁC PHƯƠNG PHÁP MÃ HÓA CỔ ĐIỂN Mã chương: MH25-02 Mục tiêu: - Trình bày được PKI, chữ ký số, chứng chỉ số, CA, CRL; - Xây dựng một PKI trên ứng dụng cụ thể; - Thực hiện các thao tác an toàn với máy tính. Nội dung chính: 2.1. Các hệ mật mã cổ điển Mục tiêu: Trình bày được các hệ mật mã cổ điển. 2.1.1. Mã dịch vòng ( shift cipher) Phần này sẽ mô tả mã dịch (MD) dựa trên số học theo modulo. Trước tiên sẽ điểm qua một số định nghĩa cơ bản của số học này. Các định nghĩa Giả sử a và b là các số nguyên và m là một số nguyên dương. Khi đó ta viết a ≡ b (mod m) nếu m chia hết cho b-a. Mệnh đề a ≡ b (mod m) được gọi là " a đồng dư với b theo modulo m". Số nguyên m được gọi là mudulus. Giả sử chia a và b cho m và ta thu được phần thương nguyên và phần dư, các phần dư nằm giữa 0 và m-1, nghĩa là a = q1m + r1 và b = q2m + r2 trong đó 0 ≤ r1≤ m-1 và 0 ≤ r2≤ m-1. Khi đó có thể dễ dàng thấy rằng a ≡ b (mod m) khi và chỉ khi r1 = r2 . Ta sẽ dùng ký hiệu a mod m (không dùng các dấu ngoặc) để xác định phần dư khi a được chia cho m (chính là giá trị r1ở trên). Như vậy: a ≡ b (mod m) khi và chỉ khi a mod m = b mod m. Nếu thay a bằng a mod m thì ta nói rằng a được rút gọn theo modulo m. Nhận xét: Nhiều ngôn ngữ lập trình của máy tính xác định a mod m là phần dư trong dải - m+1, ., m-1 có cùng dấu với a. Ví dụ -18 mod 7 sẽ là -4, giá trị này khác với giá trị 3 là giá trị được xác định theo công thức trên. Tuy nhiên, để thuận tiện ta sẽ xác định a mod m luôn là một số không âm. Bây giờ ta có thể định nghĩa số học modulo m: Z m được coi là tập hợp {0,1,. . .,m-1} có trang bị hai phép toán cộng và nhân. Việc cộng và nhân trong Zm được thực hiện giống như cộng và nhân các số thực ngoài trừ một điểm là các kết quả được rút gọn theo modulo m. Ví dụ tính 11× 13 trong Z 16. Tương tự như với các số nguyên ta có 11 ×13 = 143. Để rút gọn 143 theo modulo 16, ta thực hiện phép chia bình thường: 143 = 8 × 16 + 15, bởi vậy 143 mod 16 = 15 trong Z16.
  17. 15 Giả sử P = C = K = Z26 với 0 ≤ k ≤ 25 , định nghĩa: Ek(x) = x +K mod 26 và (x,y Z26) Nhận xét: Trong trường hợp K = 3, hệ mật thường được gọi là mã Caesar đã từng được Julius Caesar sử dụng. Ta sẽ sử dụng MDV (với modulo 26) để mã hoá một văn bản tiếng Anh thông thường bằng cách thiết lập sự tương ứng giữa các kí tự và các thặng dư theo modulo 26 như sau: A ↔ 0,B ↔ 1, . . ., Z ↔ 25. Vì phép tương ứng này còn dùng trong một vài ví dụ nên ta sẽ ghi lại để còn tiện dùng sau này: Ví dụ: Cho bản mã JBCRCLQRWCRVNBJENBWRWN ta sẽ thử liên tiếp các khoá giải mã d0 ,d1 . và y thu được: j b c r c l q r w c r v n b j e n b w r w n i a b q b k p q v b q u m a i d m a v q v m h z a p a j o p u a p t l z h c l z u p u l g y z o z i n o t z o s k y g b k y t o t k j x y n y h m n s y n r j e x f a j x s n s j e w x m x g l m r x m q i w e z i w r m r i d v w l w f k l q w l p h v o d y h v q l q h c u v k v e j k p v k o g u c x g u p k p g b t u j u d i j o u j n f t b w f o j o f a s t i t c h i n t i m e s a v e s n i n e Tới đây ta đã xác định được bản rõ và dừng lại. Khoá tương ứng K = 9. Trung bình có thể tính được bản rõ sau khi thử 26/2 = 13 quy tắc giải mã. Như đã chỉ ra trong ví dụ trên, điều kiện để một hệ mật an toàn là phép tìm khoá vét cạn phải không thể thực hiện được, tức không gian khoá phải rất lớn. Tuy nhiên, một không gian khoá lớn vẫn chưa đủ đảm bảo độ mật. 2.1.2. Mã thay thế Một hệ mật nổi tiếng khác là hệ mã thay thế. Hệ mật này đã được sử dụng hàng trăm năm. Trò chơi đố chữ "cryptogram" trong các bài báo là những ví dụ về MTT.
  18. 16 Trên thực tế MTT có thể lấy cả P và C đều là bộ chữ cái tiếng anh, gồm 26 chữ cái. Ta dùng Z26 trong MDV vì các phép mã và giải mã đều là các phép toán đại số. Tuy nhiên, trong MTT, thích hợp hơn là xem phép mã và giải mã như các hoán vị của các kí tự. Mã thay thế Cho P =C = Z26 . K chứa mọi hoán vị có thể của 26 kí hiệu 0,1, . . . ,25 Với mỗi phép hoán vị π K , ta định nghĩa: eπ(x) = π(x) và dπ(y) = π -1(y) trong đó π -1 là hoán vị ngược của π. Sau đây là một ví dụ về phép hoán vị ngẫu nhiên π tạo nên một hàm mã hoá (cũng như trước, các ký hiệu của bản rõ được viết bằng chữ thường còn các ký hiệu của bản mã là chữ in hoa). Như vậy, eπ (a) = X, eπ (b) = N,. . . . Hàm giải mã là phép hoán vị ngược. Điều này được thực hiện bằng cách viết hàng thứ hai lên trước rồi sắp xếp theo thứ tự chữ cái. Ta nhận được: Bởi vậy dπ (A) = d, dπ(B) = 1, . . . Ví dụ: Hãy giải mã bản mã: M G Z V Y Z L G H C M H J M Y X S S E M N H A H Y C D L M H A. Mỗi khoá của MTT là một phép hoán vị của 26 kí tự. Số các hoán vị này là 26!, lớn hơn 4 ×1026 là một số rất lớn. Bởi vậy, phép tìm khoá vét cạn không thể thực hiện được, thậm chí bằng máy tính. Tuy nhiên, sau này sẽ thấy rằng MTT có thể dễ dàng bị thám bằng các phương pháp khác. 2.1.3. Mã Affine MDV là một trường hợp đặc biệt của MTT chỉ gồm 26 trong số 26! Các hoán vị có thể của 26 phần tử. Một trường hợp đặc biệt khác của MTT là mã Affine được mô tả dưới đây. 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 Z26 . Các hàm này được gọi là các hàm Affine (chú ý rằng khi a = 1, ta có MDV). Để 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)
  19. 17 phải có nghiệm x duy nhất. Đồng dư thức này tương đương với: ax ≡ y-b (mod 26) Vì y thay đổi trên Z26 nên y-b cũng thay đổi trên Z26 . Bởi vậy, ta chỉ cần nghiên cứu phương trình đồng dư: ax ≡ y (mod 26) (y Z26). Ta biết rằng, phương trình này có một nghiệm duy nhất đối với mỗi y khi và chỉ khi UCLN(a,26) = 1 (ở đâ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 Z26 là x = 0 và x = 26/d. Trong trườ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ụ, do UCLN(4,26) = 2 nên 4x +7 không là hàm mã hoá hợp lệ: x và x+13 sẽ mã hoá thành cùng một giá trị đối với bất kì x Z26 . Ta giả thiết UCLN(a,26) = 1. Giả sử với x1 và x2 nào đó thảo mãn: ax1≡ ax2 (mod 26) Khi đó a(x1- x2) ≡ 0(mod 26) bởi vậy 26 | a(x1- x2) 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)=1 và a bc thì a c. Vì 26 a(x1- x2) và UCLN(a,26) = 1 nên ta có: 26 (x1- x2) tức là x1≡ 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 Z26 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ơí số 26 trong khẳng định này. Bởi vậy, bằng cách tương tự ta có thể chứng minh được kết quả sau: * Định lí Đồng dư thức ax ≡ b mod m chỉ có một nghiệm duy nhất x Z m với mọi b Zm khi và chỉ khi UCLN(a,m) = 1.
  20. 18 Vì 26 = 2 ×13 nên các giá trị a Z26 thoả mãn UCLN(a,26) = 1 là a = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23 và 25. Tham số b có thể là một phần tử bất kỳ trong Z26. Như vậy, mã Affine có 12 × 26 = 312 khoá có thể (dĩ nhiên con số này 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ố. Định nghĩa Giả sử a ≥ 1 và m ≥ 2 là các số nguyên. UCLN(a,m) = 1 thì ta nói rằng a và m là nguyên tố cùng nhau. Số các số nguyên trong Z m nguyên tố cùng nhau với m thường được ký hiệu là φ(m) (hàm này được gọi là hàm 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ột số nguyên p >1 là số nguyên tố nếu nó không có ước dương nào khác ngoài 1 và p. 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 = 23× 3 × 5 và 98 = 2 × 72). Số khoá trong mã Affine trên Zm bằng φ(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, φ(60)=φ(5.22.3)=φ(5). φ(22). φ(3) = 2 × 2 × 4 = 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) = 1. Để giải mã cần giải phương 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 Z 26 . 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 modulo sẽ cung cấp một thuật toán giải mã hữu hiệu cần tìm. Các định nghĩa trên phép cộng và phép nhân Zm thảo mãn hầu hết các quy tắc quen thuộc trong số học. Sau đây ta sẽ liệt kê mà không chứng minh các tính chất này: 1. Phép cộng là đóng, tức với bất kì a,b Zm ,a +b Zm 2. Phép cộng là giao hoán, tức là với a,b bất kì Zm a+b = b+a 3. Phép cộng là kết hợp, tức là với bất kì a,b,c Zm (a+b)+c = a+(b+c) 4. 0 là phần tử đơn vị của phép cộng, có nghĩa là với a bất kì Zm a+0 = 0+a = a 5. Phần tử nghịch đảo của phép cộng của phần tử bất kì (a Z m ) là m-a, nghĩa là a+(m-a) = (m-a)+a = 0 với bất kì a Zm .
  21. 19 6. Phép nhân là đóng , tức là với a,b bất kì Zm , ab Zm . 7. Phép nhân là giao hoán , nghĩa là với a,b bất kì Zm , ab = ba 8. Phép nhân là kết hợp, nghĩa là với a,b,c Zm , (ab)c = a(cb) 9. 1 là phần tử đơn vị của phép nhân, tức là với bất kỳ a Zm a×1 = 1×a = a 10. Phép nhân có tính chất phân phối đối với phép cộng, tức là đối với a,b,c Zm, (a+b)c = (ac)+(bc) và a(b+c) = (ab) + (ac) Các tính chất 1,3-5 nói lên rằng Z m lâp nên một cấu trúc đại số được gọi là một nhóm theo phép cộng. Vì có thêm tính chất 4 nhóm được gọi là nhóm Aben (hay nhóm giao hoán). Các tính chất 1-10 sẽ thiết lập nên một vành Z m. Một số ví dụ quen thuộc của vành là các số nguyên Z, các số thực R và các số phức C. Tuy nhiên các vành này đều vô hạn, còn mối quan tâm của chúng ta chỉ giới hạn trên các vành hữu hạn. Vì phần tử ngược của phép cộng tồn tại trong Z m nên cũng có thể trừ các phần tử trong Zm. Ta định nghĩa a-b trong Zm là a+m-b mod m. Một cách tương tự có thể tính số nguyên a-b rồi rút gon theo modulo m. Ví dụ : Để tính 11-18 trong Z 31, ta tính 11+31 – 18 mod 31= 11+13 mod 31= 24. Ngược lại, có thể lấy 11-18 được -7 rồi sau đó tính -7 mod 31 =31-7= 24. Mã dịch vòng được xác định trên Z 26 (do có 26 chữ cái trên bảng chữ cái tiếng Anh) mặc dù có thể xác định nó trên Z m với modulus m tuỳ ý. Dễ dàng thấy rằng, MDV sẽ tạo nên một hệ mật như đã xác định ở trên, tức là dK(eK(x)) = x với mọi x Z26 . Ta có sơ đồ mã như sau: 2.1.4. Mã Vigenère Trong cả hai hệ MDV và MTT (một khi khoá đã được chọn) mỗi ký tự sẽ được ánh xạ vào một ký tự duy nhất. Vì lý do đó, các hệ mật còn được gọi hệ thay thế đơn biểu. Bây giờ ta sẽ trình bày một hệ mật không phải là bộ chữ đơn, đó là hệ mã Vigenère nổi tiếng. Mật mã này lấy tên của Blaise de Vigenère sống vào thế kỷ XVI. Sử dụng phép tương ứng A 0, B 1, . . . , Z 25 mô tả ở trên, ta có thể gắn cho mỗi khóa K với 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 đương với m ký tự. 2.1.5. Mật mã Hill
  22. 20 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 P = C = (Z 26)m . Ý tưởng ở đây là lấy m tổ hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của bản mã. 2.2. Mã thám các hệ mã cổ điển Mục tiêu: Trình bày được mã thám các mật mã cổ điển Trong phần này ta sẽ bàn tới một vài kỹ thuật mã thám. Giả thiết chung ở đây là luôn coi đối phương Oscar đã biết hệ mật đang dùng. Giả thiết này được gọi là nguyên lý Kerekhoff. Dĩ nhiên, nếu Oscar không biết hệ mật được dùng thì nhiệm vụ của anh ta sẽ khó khăn hơn. Tuy nhiên ta không muốn độ mật của một hệ mật lại dựa trên một giả thiết không chắc chắn là Oscar không biết hệ mật được sử dụng. Do đó, mục tiêu trong thiết kế một hệ mật là phải đạt được độ mật dưới giả thiết Kerekhoff. Trước tiên ta phân biệt các mức độ tấn công khác nhau vào các hệ mật. Sau đây là một số loại thông dụng nhất. Chỉ có bản mã: Thám mã chỉ có xâu bản mã y. Bản rõ đã biết: Thám mã có xâu bản rõ x và xâu bản mã tương ứng y. Bản rõ được lựa chọn: Thám mã đã nhận được quyền truy nhập tạm thời vào cơ chế mã hoá. Bởi vậy, thám mã có thể chọn một xâu bản rõ x và tạo nên xâu bản mã y tương ứng. Bản mã được lựa chọn: Thám mã có được quyền truy nhập tạm thời vào cơ chế giải mã. Bởi vậy thám mã có thể chọn một bản mã y và tạo nên xâu bản rõ x tương ứng. Trong mỗi trường hợp trên, đối tượng cần phải xác định chính là khoá đã sử dụng. Rõ ràng là 4 mức tấn công trên đã được liệt kê theo độ tăng của sức mạnh tấn công. Nhận thấy rằng, tấn công theo bản mã được lựa chọn là thích hợp với các hệ mật khoá công khai mà ta sẽ nói tới ở chương sau. Trước tiên, ta sẽ xem xét cách tấn công yếu nhất, đó là tấn công chỉ có bản mã. Giả sử rằng, xâu bản rõ là một văn bản tiếng Anh thông thường không có chấm câu hoặc khoảng trống (mã thám sẽ khó khăn hơn nếu mã cả dấu chấm câu và khoảng trống). Có nhiều kỹ thuật thám mã sử dụng các tính chất thống kê của ngôn ngữ
  23. 21 tiếng Anh. Nhiều tác giả đã ước lượng tần số tương đối của 26 chữ cái theo các tính toán thống kê từ nhiều tiểu thuyết, tạp chí và báo. Các ước lượng trong bảng dưới đây lấy theo tài liệu của Beker và Piper. Xác suất xuất hiện của 26 chữ cái: Xác Xác Xác Ký tự Ký tự Ký tự suất suất suất A .082 J .002 S .063 B .015 K .008 T .091 C .028 L .040 U .028 D .043 M .024 V .010 E .0127 N .067 W .023 F .022 O .075 X .001 G .020 P .019 Y .020 H .061 Q .001 Z .001 I .070 R .060 Từ bảng trên, Beker và Piper phân 26 chữ cái thành 5 nhóm như sau: 1. E: có xác suất khoảng 1,120 2. T, A, O, I, N, S, H, R : mỗi ký tự có xac suất khoảng 0,06 đến 0,09 3. D, L : mỗi ký tự có xác suất chừng 0,04 4. C, U, M, W, F, G, Y, P, B: mỗi ký tự có xác suất khoảng 0,015 đến 0,023 5. V, K, J, X, Q, Z mỗi ký tự có xác suất nhỏ hơn 0,01 Việc xem xét các dãy gồm 2 hoặc 3 ký tự liên tiếp (được gọi là bộ đôi-diagrams và bộ ba – Trigrams) cũng rất hữu ích. 30 bộ đôi thông dụng nhất (theo thứ tự giảm dần) là: TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA, ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE, HI và OF. 12 bộ ba thông dụng nhất (theo thứ tự giảm dần) là: THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS, ETH, FOR và DTH. 2.2.1. Thám hệ mã Affine
  24. 22 Mật mã Affine là một ví dụ đơn giản cho ta thấy cách thám hệ mã nhờ dùng các số liệu thống kê. Giả sử Oscar đã thu trộm được bản mã sau: Tần Tần Tần Tần Ký tự Ký tự Ký tự Ký tự suất suất suất suất A 2 H 5 O 1 U 2 B 1 I 0 P 3 V 4 C 0 J 0 Q 0 W 0 D 6 K 5 R 8 X 2 E 5 L 2 S 3 Y 1 F 4 M 2 T 0 Z 0 G 0 N 1 Bản mã nhận được từ mã Affine: FMXVEDRAPHFERBNDKRXRSREFMORUDSDKDVSHVUFEDKPK DLYEVLRHHRH Phân tích tần suất của bản mã này được cho ở bảng dưới Bản mã chỉ có 57 ký tự. Tuy nhiên độ dài này cũng đủ phân tích thám mã đối với hệ Affine. Các ký tự có tần suất cao nhất trong bản mã là: R (8 lần xuất hiện), D (6 lần xuất hiện ), E, H, K (mỗi ký tự 5 lần ) và F, S, V ( mỗi ký tự 4 lần). Trong phỏng đoán ban đầu, ta giả thiết rằng R là ký tự mã của chữ e và D là kí tự mã của t, vì e và t tương ứng là 2 chữ cái thông dụng nhất. Biểu thị bằng số ta có: eK(4) = 17 và eK(19) = 3. Nhớ lại rằng eK(x) = ax +b trong đó a và b là các số chưa biết. Bởi vậy ta có hai phương trình tuyến tính hai ẩn: 4a +b = 17 19a + b = 3 Hệ này có duy nhất nghiệm a = 6 và b = 19 ( trong Z26). Tuy nhiên đây là một khoá không hợp lệ do UCLN(a,26) = 2. Bởi vậy giả thiết của ta là không đúng. Phỏng đoán tiếp theo của ta là: R là ký tự mã của e và E là mã của t. Thực hiện như trên, ta thu được a =13 và đây cũng là một khoá không hợp lệ. Bởi vậy ta phải thử một lần nữa: ta coi rằng R là mã hoá của e và H là mã hoá của t. Điều này dẫn tới a = 8 và đây cũng là một khoá không hợp lệ. Tiếp tục, giả sử rằng R
  25. 23 là mã hoá của e và K là mã hoá của t. Theo giả thiết này ta thu được a = 3 và b = 5 là khóa hợp lệ. Ta sẽ tính toán hàm giải mã ứng với K = (3,5) và giải mã bản mã để xem liệu có nhận được xâu tiếng Anh có nghĩa hay không. Điều này sẽ khẳng định tính hợp lệ của khoá (3,5). auk hi thực hiện các phép toán này, ta có dK (y) = 9y – 19 và giải mã bản mã đã cho, ta được: Algorithmsarequitegeneraldefinitionsofarithmeticprocesses Như vậy khoá xác định trên là khoá đúng. 2.2.2. Thám hệ mã thay thế Sau đây ta phân tích một tình huống phức tạp hơn, đó là thay thế bản mã sau: Ví dụ: Bản mã nhận được từ MTT là: YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ NZUCDRJXỷYMTMEYIFZWDYVZVYFZUMRZCRWNZDZJT XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDINZDIR Phân tích tần suất của bản mã này được cho ở bảng dưới đây: Tần suất xuất hiện của 26 chữ cái trong bản mã. Tần Tần Tần Tần Ký tự Ký tự Ký tự Ký tự suất suất suất suất A 0 H 4 O 0 U 5 B 1 I 5 P 1 V 5 C 15 J 11 Q 4 W 8 D 13 K 1 R 10 X 6 E 7 L 0 S 3 Y 10 F 11 M 16 T 2 Z 20 G 1 N 9 Do Z xuất hiện nhiều hơn nhiều so với bất kỳ một ký tự nào khác trong bản mã nên có thể phỏng đoán rằng, dZ(Z) = e. các ký tự còn lại xuất hiện ít nhất 10 lần ( mỗi ký tự ) là C, D, F, J, R, M, Y. Ta hy vọng rằng, các ký tự này là mã khoá của (một tập con trong) t, a, c, o, i, n, s, h, r, tuy nhiên sự khác biệt về tần suất không đủ cho ta có được sự phỏng đoán thích hợp.
  26. 24 Tới lúc này ta phải xem xét các bộ đôi, đặc biệt là các bộ đôi có dạng -Z hoặc Z- do ta đã giả sử rằng Z sẽ giải mã thành e. Nhận thấy rằng các bộ đôi thường gặp nhất ở dạng này là DZ và ZW ( 4 lần mỗi bộ ); NZ và ZU ( 3 lần mỗi bộ ); và RZ, HZ, XZ, FZ, ZR, ZV, ZC, ZD và ZJ ( 2 lần mỗi bộ ). Vì ZW xuất hiện 4 lần còn WZ không xuất hiện lần nào và nói chung W xuất hiện ít hơn so với nhiều ký tự khác, nên ta có thể phỏng đoán là dK(W) = d. Vì DZ xuất hiện 4 lần và ZD xuất hiện 2 lần nên ta có thể nghĩ rằng dK(D) {r,s,t}, tuy nhiên vẫn còn chưa rõ là ký tự nào trong 3 ký tự này là ký tự đúng. Nêu tiến hành theo giả thiết dK(Z) = e và dK(W) = d thì ta phải nhìn trở lại bản mã và thấy rằng cả hai bộ ba ZRW và RZW xuất hiện ở gần đầu của bản mã và RW xuất hiện lại sau đó vì R thường xuất hiện trong bản mã và nd là một bộ đôi thường gặp nên ta nên thử dK(R) = n xem là một khả năng thích hợp nhất. Tới lúc này ta có: - - - - - - end - - - - - - - - - e - - - - ned- - - e - - - - - - - - - YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ - - - - - - - - e- - - - e - - - - - - - - n - - d - - - en - - - - e - - - -e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ - e - - - n - - - - - n - - - - - - ed - - - e - - - - - - ne - nd- e- e - - NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ - ed - - - - - n - - - - - - - - - - e - - - ed - - - - - - - d - - - e - - n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Bước tiếp theo là thử dK(N) = h vì NZ là một bộ đôi thường gặp còn ZN không xuất hiện. Nếu điều này đúng thì đoạn sau của bản rõ ne - ndhe sẽ gợi ý rằng dK(C) = a. Kết hợp các giả định này, ta có: - - - - - -end- - - - - a- - -e -a - - nedh- -e- - - - - -a - - - - - YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ h - - - - - - - a- - - e - a- - - a - - - nhad - a - -en -a - e - h- -e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ he - a - n- - - - - - n - - - - - - ed - - - e- - - e - - neandhe -e - - NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ - ed - a - - -nh - - - ha - - - a- e - - - - ed - - - - -a -d - - he- -n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Bây giờ ta xét tới M là ký tự thường gặp nhất sau Z. Đoạn bản mã RNM mà ta tin là sẽ giải mã thành nh- gợi ý rằng h- sẽ bắt đầu một từ, bởi vậy chắc là
  27. 25 M sẽ biểu thị một nguyên âm. Ta đã sử dụng a và e, bởi vậy, phỏng đoán rằng dK(M) = i hoặc o. Vì ai là bộ đôi thường gặp hơn ao nên bộ đôi CM trong bản mã gợi ý rằng, trước tiên nên thử dK(M) = i. Khi đó ta có: - - - - -iend- - - - - a -i - e -a -inedhi - e- - - - - -a - - -i - YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ h - - - - - i - ea - i - e -a - - -a - i -nhad -a - en - -a - e -hi -e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ he - a - n - - - - -in -i - - - - ed - - -e - - - e - ineandhe - e - - NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ - ed - a - - inhi - - hai - - a - e - i- -ed- - - - - a - d - - he - -n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Tiếp theo thử xác định xem chữ nào được mã hoá thành o. Vì o là một chữ thường gặp nên giả định rằng chữ cái tương ứng trong bản mã là một trong các ký tự D,F,J,Y. Y có vẻ thích hợp nhất, nếu không ta sẽ có các xâu dài các nguyên âm, chủ yếu là aoi ( từ CFM hoặc CJM ). Bởi vậy giả thiết rằng dK(Y) =o. Ba ký tự thường gặp nhất còn lại trong bản mã là D,F,J, ta phán đoán sẽ giải mã thành r,s,t theo thứ tự nào đó. Hai lần xuất hiện của bộ ba NMD gợi ý rằng dK(D) = s ứng với bộ ba his trong bản rõ (điều này phù hợp với giả định trước kia là dK(D) ∈{r,s,t} ). Đoạn HNCMF có thể là bản mã của chair, điều này sẽ cho dK(F) = r (và dK(H) = c ) và bởi vậy (bằng cách loại trừ ) sẽ có dK(J) = t. Ta có: o- r - riend - ro - - arise - a - inedhise - - t - - - ass - it YIFQFMZRWQFYVECFMDZPCVMRZNMDZVEJBTXCDDUMJ hs - r - riseasi - e - a - orationhadta - - en - -ace - hi - e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREZCHZUNMXZ he - asnt - oo - in - i - o - redso - e - ore - ineandhesett NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ - ed - ac - inhischair - aceti - ted - - to - ardsthes - n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Bây giờ việc xác định bản rõ và khoá cho ở ví dụ trên không còn gì khó khăn nữa. Bản rõ hoàn chỉnh như sau:
  28. 26 Our friend from Pais examined his empty glass with surprise, as if evaporation had taen place while he wasn't looking. I poured some more wine and he settled back in his chair, face tilted up towards the sun. 2.2.3. Thám hệ mã Vigenère Trong phần này chúng ta sẽ mô tả một số phương pháp thám hệ mã Vigenère. Bước đầu tiên là phải xác định độ dài từ khoá mà ta ký hiệu là m. ở đây dùng hai kỹ thuật. Kỹ thuật thứ nhất là phép thử Kasiski và kỹ thuật thứ hai sử dụng chỉ số trùng hợp. Phép thử Kasiski lần đầu tiên được Kasiski Friendrich mô tả vào năm 1863. Kỹ thuật này được xây dựng trên nhận xét là: hai đoạn giống nhau của bản rõ sẽ được mã hoá thành cùng một bản mã khi chúng xuất hiện trong bản rõ cách nhau x vị trí, trong đó x ≡ o mod m. Ngược lại, nếu ta thấy hai đoạn giống nhau của bản mã (mỗi đoạn có độ dài ít nhất là 3) thì đó là một dấu hiệu tốt để nói rằng chúng tương ứng với các đoạn bản rõ giống nhau. Phép thử Kasiski như sau. Ta tìm trong bản mã các cặp gồm các đoạn như nhau có độ dài tối thiểu là 3 và ghi lại khoảng cách giữa các vị trí bắt đầu của hai đoạn. Nếu thu được một vài giá trị d1, d2,. . . thì có thể hy vọng rằng m sẽ chia hết cho ước chung lớn nhất của các di. Việc xác minh tiếp cho giá trị của m có thể nhận được bằng chỉ số trùng hợp. Khái niệm này đã được Wolfe Friedman đưa ra vào 1920 như sau: Định nghĩa: Giả sử x = x1x2 . . . xn là một xâu ký tự. Chỉ số trùng hợp của x (ký hiệu là Ic(x)) được định nghĩa là xác suất để hai phần tử ngẫu nhiên của x là đồng nhất. Nếu ký hiệu các tần suất của A,B,C,. . . ,Z trong x tương ứng là f0,f1 ,. . . f25 , có thể chọn hai phần tử của x theo ??? cách. Với mỗi i, 0 ≤ i ≤ 25, có ??? cách chọn hai phần tử là i. Bây giờ, giả sử x là một xâu văn bản tiếng Anh. Ta kí hiệu các xác suất xuất hiện của các kí tự A,B,. . .,Z trong bảng 1.1 là p0, p25. Khi đó: do xác suất để hai phần tử ngẫu nhiên đều là A là p02, xác suất để cả hai phần tử này đều bằng B bằng p12 . . . Tình hình tương tự cũng xảy ra nếu x là một bản mã nhận được theo một hệ mã thay thế đơn bất kì. Trong trường hợp này, từng xác suất riêng rẽ sẽ bị hoán vị nhưng tổng ??? sẽ không thay đổi. Bây giờ giả sử có một bản mã y = y1y2. . .ynđược cấu trúc theo mật mã Vigenère. Ta xác định các xâu con m của y(y1,y2,. . .,ym) bằng cách viết ra bản mã thành một hình chữ nhật có kích thước m×(n/m). Các hàng của ma trận này là các xâu con yi, 1 ≤ i ≤ m. Nếu m thực sự là độ dài khoá thì mỗi Ic(yi) phải xấp xỉ bằng 0,065. Ngược lại, nếu m không phải là độ dài khoá thì các xâu con yi sẽ có vẻ ngẫu nhiên hơn vì chúng nhận được bằng cách mã dịch vòng với các khoá khác nhau. Xét thấy rằng, một xâu hoàn toàn ngẫu nhiên sẽ có:
  29. 27 Hai giá trị 0,065 và 0,038 đủ cách xa nhau để có thể xác định được độ dài từ khoá đúng (hoặc xác nhận giả thuyết đã được làm theo phép thử Kasiski). Hai kỹ thuật này sẽ được minh hoạ qua ví dụ dưới đây: Ví dụ: Bản mã nhận được từ mật mã Vigenère. CHEEVOAHMAERATBTAXXWTNXBEEOPHBSBQMQEQERBW RVXUOAKXAOSXXWEAHBWGJMMQMNKGRFVGXWTRZXWIAK LXFPSKAUTEMNDCMGTSXMXBTUIADNGMGPSRELXNJELX RVPRTULHDNQWTWDTYGBPHXTFEALJHASVBFXNGLLCHR ZBWELEKMSJIKNBHWRJGNMGJSGLXFEYPHAGNRBIEQJT MRVLCRRREMNDGLXRRIMGNSNRWCHRQHAEYEVTAQEBBI EEWEVKAKOEWADREMXMTBHHCHRTKDNVRZCHRCLQOHP WQAIIWXNRMGWOIIFKEE Trước tiên, ta hãy thử bằng phép thử Kasiski xâu bản mã CHR xuất hiện ở bốn vị trí trong bản mã, bắt đầu ở các vị trí 1, 166,236 và 286. Khoảng cách từ lần xuất hiện đầu tiên tới 3 lần xuất hiện còn lại tương ứng là 165,235 và 285. UCLN của 3 số nguyên này là 5, bởi vậy giá trị này rất có thể là độ dài từ khoá. Ta hãy xét xem liệu việc tính các chỉ số trùng hợp có cho kết luận tương tự không. Với m = 1 chỉ số trùng hợp là 0,045. Với m = 2, có 2 chỉ số là 0,046 và 0,041. Với m = 3 ta có 0,043; 0,050; 0,047. Với m = 4 các chỉ số là 0,042; 0,039; 0,046; 0,040. Với m = 5 ta có các giá trị 0,063; 0,068; 0,069; 0,061 và 0,072. Điều này càng chứng tỏ rằng độ dại từ khoá là 5.
  30. 28 CHƯƠNG 3 CHỨNG THỰC Mã chương: MH25-03 Mục tiêu: - Trình bày được chứng thực : chữ ký số, mật khẩu, sinh học; Nội dung chính: Giới thiệu: Trong chương này, chúng ta xem xét các sơ đồ chữ kí số (còn được gọi là chữ kí số). Chữ kí viết tay thông thường trên tài liệu thường được dùng để xác người kí nó. Chữ kí được dùng hàng ngày chẳng hạn như trên một bức thư nhận tiền từ nhà băng, kí hợp đồng Sơ đồ chữ kí là phương pháp kí một bức điện lưu dưới dạng điện tử. Chẳng hạn một bức điện có ký hiệu được truyền trên mạng máy tinh. Chương này trình bày một vài sơ đồ chữ kí số. Ta sẽ thảo luận trên một vài khác biệt cơ bản giữa các chữ kí thông thường và chữ kí số. Đầu tiên là một vấn đề kí một tài liệu. Với chữ kí thông thường, nó là một phần vật lý của tài liệu. Tuy nhiên, một chữ kí số không gắn theo kiểu vật lý vào bức điện nên thuật toán được dùng phải “không nhìn thấy” theo cách nào đó trên bức điện. Thứ hai là vấn đề về kiểm tra. Chữ kí thông thường được kiểm tra bằng cách so sánh nó với các chữ kí xác thực khác. Ví dụ, ai đó kí một tấm séc để mua hàng, người bán phải so sánh chữ kí trên mảnh giấy với chữ kí nằm ở mặt sau của thẻ tín dụng để kiểm tra. Dĩ nhiên, đây không phải là phươg pháp an toàn vì nó dể dàng giả mạo. Mắt khác, các chữ kí số có thể được kiểm tra nhờ dùng một thuật toán kiểm tra công khai. Như vậy, bất kỳ ai cũng có thể kiểm tra dược chữ kí số. Việc dùng một sơ đồ chữ kí an toàn có thể sẽ ngăn chặn được khả năng giả mạo. Sự khác biệt cơ bản khác giữa chữ kí số và chữ kí thông thường bản copy tài liệu được kí băng chữ kí số đồng nhất với bản gốc, còn copy tài liệu có chữ kí trên giấy thường có thể khác với bản gốc. Điều này có nghĩa là phải cẩn thận ngăn chăn một bức kí số khỏi bị dung lại. Vì thế, bản thân bức điện cần chứa thông tin (chẳng hạn như ngày tháng) để ngăn nó khỏi bị dùng lại. Một sơ đồ chữ kí số thường chứa hai thành phần: thuật toán kí và thuật toán xác minh. Bob có thể kí bức điện x dùng thuật toán kí an toàn. Chữ kí y=sig(x) nhận được có thể kiểm tra bằng thuật toán xác minh công khai ver(x,y). Khi cho trước cặp (x,y), thuật toán xác minh có giá trị TRUE hay FALSE tuỳ thuộc vào chữ kí được thực như thế nào. Dưới đây là định nghĩa hình thức của chữ kí: 3.1 Các định nghĩa Mục tiêu: Hiểu và trình bày được các định nghĩa.
  31. 29 Một sơ đồ chữ kí số là bộ 5( P, A, K, S, V) thoả mãn các điều kiện dưới đây: 1. P là tập hữu hạn các bức điện có thể. 2. A là tập hữu hạn các chữ kí có thể. 3. K không gian khoá là tập hữu hạn các khoá có thể. 4. Với mỗi k thuộc K tồn tại một thuật toán kí sigk S và là một thuật toán xác minh verk V. Mỗi sigk: P→ A và ver k: P×a →{true,false} là những hàm sao cho mỗi bức điện x P và mối chữ kí y A thoả mãn phương trình dưới đây. True nếu y=sig(x) verk False nếu y# sig(x) Với mỗi k thuộc K hàm sigk và verk là các hàm thời than đa thức. Verk sẽ là hàm công khai sigk là mật. Không thể dể dàng tính toán để giả mạo chữ kí của Bob trên bức điện x. Nghĩa là x cho trước, chỉ có Bob mới có thể tính được y để verk = True. Một sơ đồ chữ kí không thể an toàn vô điều kiện vì Oscar có thể kiểm tra tất cả các chữ số y có thể có trên bức điện x nhờ ung thuật toán ver công khai cho đến khi anh ta tìm thấy một chữ kí đúng. Vì thế, nếu có đủ thời gian. Oscar luôn luôn có thể giả mạo chữ kí của Bob. Như vậy, giống như trường hợp hệ thống mã khoá công khai, mục đích của chúng ta là tìm các sơ đồ chữ kí số an toan về mặt tính toán. Xem thấy rằng, hệ thống mã khoá công khai RSA có thể ung làm sơ đồ chữ kí số. Như vậy, Bob kí bức điện x dùng qui tắc giải mã RSA là dk. Bob là người tạo ra chữ kí vì dk = sig k là mật. Thuật toán xác minh dùng qui tắc mã RSA ek. Bất kì ai cũng có thể xác minh chữ kí vi ekđược công khai. Chú ý rằng, ai đó có thể giả mạo chữ kí của Bob trên một bức điện “ ngẫu nhiên” x bằng cách tìm x=ek(y) với y nào đó, khi đó y= sig k(x). Một giải pháp xung quanh vấn đề khó khăn này là yêu cầu bức điện chưa đủ phần dư để chữ kí giả mạo kiểu này không tương ứng với bức điện. Nghĩa là x trừ một xác suất rất bé. Có thể dùng các hàm hash trong việc kết nối với các sơ đồ chữ kí số sẽ loại trừ được phương pháp giả mạo này. Sơ đồ chữ kí RSA Cho n= p.q, p và q là các số nguyên tố. Cho P =A= Zn ab ≡ 1(mod(φ (n))). Các giá trị n và b là công khai, a giữ bí mật.
  32. 30 Hàm kí: a sigk(x)= x mod n và kiểm tra chữ kí: b verk (x,y)= true x ≡ y (mod n) (x,y Zn) 3.2. Sơ đồ chữ kí ELGAMAL Mục tiêu : Mô tả được sơ đồ chữ ký Elgamal Sau đây ta sẽ mô tả sơ đồ chữ kí Elgamal đã từng giới thiệu trong bài báo năm 1985. Bản cả tiến của sơ đồ này đã được Viện Tiêu chuẩn và Công Nghệ Quốc Gia Mỹ (NIST) chấp nhận làm chữ kí số. Sơ đồ Elgamal (E.) được thiết kế với mục đích dành riêng cho chữ kí số, khác sơ đồ RSA dùng cho cả hệ thống mã khoá công khai lẫn chữ kí số. Sơ đồ E, là không tất định giống như hệ thống mã khoá công khai Elgamal. Điều này có nghĩa là có nhiều chữ kí hợp lệ trên bức điện cho trước bất kỳ. Thuật toán xác minh phải có khả năng chấp nhận bất kì chữ kí hợp lệ khi xác thực. Nếu chữ kí được thiết lập đúng khi xác minh sẽ thành công vì : βγ γδ ≡ αaγ αkγ(mod p) ≡ αx(mod p) là ở đây ta dùng hệ thức : a γ+ k δ ≡ x (mod p-1) Sơ đồ chữ kí số Elgamal. Cho p là số nguyên tố sao cho bài toán logarit rời rạc trên Zp là khó và giả sử α Znlà phần tử nguyên thuỷ p = Zp* , a = Zp*× Zp-1 và định nghĩa: K ={(p,α ,a,β ):β ≡ αa(mod p)}. Giá trị p,α ,β là công khai, còn a là mật. Với K = (p, α , a, β ) và một số ngẫu nhiên (mật) k Zp-1. định nghĩa : Sigk(x,y) =(γ ,δ), trong đó γ = αk mod p và δ =(x-a) k-1 mod (p-1). Với x,γ Zp và δ Zp-1 , ta định nghĩa : Ver(x,γ ,δ ) = true βγ γδ ≡ αx(mod p). 3.3. Chuẩn chữ kí số. Mục tiêu : Trình bày được chuẩn chữ ký số.
  33. 31 Chuẩn chữ kí số(DSS) là phiên bản cải tiến của sơ đồ chữ kí Elgamal. Nó được công bố trong Hồ Sơ trong liên bang vào ngày 19/5/94 và được làm chuẩn voà 1/12/94 tuy đã được đề xuất từ 8/91. Trước hết ta sẽ nêu ra những thay đổi của nó so với sơ đồ Elgamal và sau đó sẽ mô tả cách thực hiện nó.Trong nhiều tinh huống, thông báo có thể mã và giải mã chỉ một lần nên nó phù hợp cho việc dùng với hệ mật bất kì (an toàn tại thời điểm được mã). Song trên thực tế, nhiều khi một bức điện được dùng làm một tài liệu đối chứng, chẳng hạn như bản hợp đồng hay một chúc thư và vì thế cần xác minh chữ kí sau nhiều năm kể từ lúc bức điện được kí. Bởi vậy, điều quan trọng là có phương án dự phòng liên quan đến sự an toàn của sơ đồ chữ kí khi đối mặt với hệ thống mã. Vì sơ đồ Elgamal không an toàn hơn bài toán logarithm rời rạc nên cần dung modulo p lớn. Chắc chắn p cần ít nhất là 512 bít và nhiều người nhất trí là p nên lấy p=1024 bít để có độ an toàn tốt. 3.4 Xác thực mẫu tin Mục tiêu: Trình bày được các khái niêm liên quan đến xác thực mẫu tin. 3.4.1 Các khái niệm Xác thực mẫu tin liên quan đến các khía cạnh sau khi truyền tin trên mạng o Bảo vệ tính toàn vẹn của mẫu tin: bảo vệ mẫu tin không bị thay đổi hoặc có các biện pháp phát hiện nếu mẫu tin bị thay đổi trên đường truyền. o Kiểm chứng danh tính và nguồn gốc: xem xét mẫu tin có đúng do người xưng tên gửi không hay một kẻ mạo danh nào khác gửi. o Không chối từ bản gốc: trong trường hợp cần thiết, bản thân mẫu tin chứa các thông tin chứng tỏ chỉ có người xưng danh gửi, không một ai khác có thể làm điều đó. Như vậy người gửi không thể từ chối hành động gửi, thời gian gửi và nội dung của mẫu tin. Ngoài ra có thể xem xét bổ sung thêm các yêu cầu bảo mật như mã hoá. Với mong muốn đáp ứng các yêu cầu trên, có 3 hàm lựa chọn sau đây được sử dụng: o Mã mẫu tin bằng mã đối xứng hoặc mã công khai. o Mã xác thực mẫu tin (MAC): dùng khoá và một hàm nén mẫu tin cần gửi để nhận được một đặc trưng đính kèm với mẫu tin và người gửi đó. o Hàm hash (hàm băm) là hàm nén mẫu tin tạo thành “dấu vân tay” cho mẫu tin. Các yêu cầu bảo mật khi truyền mẫu tin trên mạng. Tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau: o Để lộ bí mật: giữ bí mật nội dung mẫu tin, chỉ cho người có quyền biết.
  34. 32 o Thám mã đường truyền: không cho theo dõi hoặc làm trì hoãn việc truyền tin. o Giả mạo: lấy danh nghĩa người khác để gửi tin. o Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin. o Thay đổi trình tự các gói tin nhỏ của mẫu tin truyền. o Sửa đổi thời gian: làm trì hoãn mẫu tin. o Từ chối gốc: không cho phép người gửi từ chối trách nhiệm của tác giả mẫu tin. o Từ chối đích: không cho phép người nhận phủ định sự tồn tại và đến đích của mẫu tin đã gửi. 3.4.2 Mã mẫu tin • Mã mẫu tin bản thân đã cung cấp một phần tính xác thực, vì khoá được chia sẻ giữa người gửi và người nhận cũng như việc thay đổi nội dung cũng không dễ dàng thực hiện nếu không có khoá. • Cụ thể nếu mã đối xứng được sử dụng thì người nhận biết người gửi phải tạo ra mẫu tin, vì chỉ có người gửi và người nhận biết được khoá sử dụng. Người nhận có thể biết nội dung không bị sửa đổi, nếu mẫu tin có cấu trúc phù hợp, tính dư thừa và tổng kiểm tra để phát hiện bất cứ thay đổi nào. • Nếu khoá công khai được sử dụng thì mã cung cấp không đủ độ tin cậy về người gửi, vì mọi người đều có thể biết khoá công khai của người nhận. Tuy nhiên nếu người gửi ký mẫu tin sử dụng khoá riêng của họ và sau đó mã với khoá công khai của người nhận, thì khi đó đảm bảo cả tính bảo mật và xác thực của mẫu tin. Cần phải bổ sung các biện pháp để phát hiện các mẫu tin đã bị làm hỏng. Việc sử dụng khoá riêng của người gửi kết hợp với khoá công khai của người nhận có nhiều ưu việt, nhưng với giá phải trả là chậm do dùng 2 mã khoá công khai trên mẫu tin. 3.4.3 Mã xác thực mẫu tin (MAC – Message Authentication Code) Sinh ra bởi một thuật toán mà tạo ra một khối thông tin nhỏ có kích thước cố định o Phụ thuộc vào cả mẫu tin và khoá nào đó. o Giống như mã nhưng không cần phải giải mã. • Bổ sung vào mẫu tin như chữ ký để gửi kèm theo làm bằng chứng xác thực. • Người nhận thực hiện tính toán nào đó trên mẫu tin và kiểm tra xem nó có phù hợp với MAC đính kèm không. • Tạo niềm tin rằng mẫu tin không bị thay đổi và đến từ người gửi.
  35. 33 Các mã xác thực mẫu tin MAC cung cấp sự tin cậy cho người nhận là mẫu tin không bị thay đổi và từ đích danh người gửi. Cũng có thể sử dụng mã xác thực MAC kèm theo với việc mã hoá để bảo mật. Nói chung người ta sử dụng các khoá riêng biệt cho mỗi MAC và có thể tính MAC trước hoặc sau mã hoá, tốt hơn là thực hiện MAC trước và mã hoá sau. Sử dụng MAC có nhược điểm là MAC phụ thuộc vào cả mẫu tin và cả người gửi, nhưng đôi khi chỉ cần xác thực mẫu tin và thông tin xác thực đó chỉ phụ thuộc mẫu tin để lưu trữ làm bằng chứng cho tính toàn vẹn của nó. Khi đó người ta sử dụng hàm Hash thay vì MAC. Cần lưu ý rằng MAC không phải là chữ ký điện tử, vì cả người gửi và người nhận đều biết thông tin về khoá. Các tính chất của MAC MAC là thông tin nén của mẫu tin kết hợp với khoá MAC = CK(M) o Nén bản tin M có độ dài tùy ý o Sử dụng khoá mật K o Tạo nên dấu xác thực có độ dài cố định o Là hàm nhiều - một, nghĩa là có nhiều bản tin khác nhau nhưng có cùng MAC. Tuy nhiên ta phải lựa chọn hàm MAC sao cho xác suất để các mẫu tin có ý nghĩa có MAC trùng nhau là rất nhỏ. Việc tìm được các mẫu tin như vậy là rất khó khăn Yêu cầu đối với MAC Tuỳ thuộc vào kiểu tấn công mà MAC phải có các tính chất khác nhau để chống đối lại. Nhưng nói chung MAC phải thỏa mãn các điều sau o Biết mẫu tin và MAC, không thể tìm được mẫu tin khác có cùng MAC. o Các MAC cần phải phân bố đều o MAC phải phụ thuộc như nhau vào tất cả các bit trong mẫu tin. Tức là khi thay đổi một bit thông tin nào đó, MAC sẽ có những thay đổi kéo theo. 3.4.4 Sử dụng mã đối xứng cho MAC • Có thể dùng mã khối với chế độ chuỗi móc nối bất kỳ và sử dụng khối cuối cùng của mã khối làm MAC của mẫu tin. • Thuật toán xác thực dữ liệu (DAA – Data Authentication Algorithm) là MAC được sử dụng rộng rãi dựa trên chế độ DES-CBC, trong đó o Sử dụng véc tơ ban đầu IV = 0 và bộ đệm 0 của block cuối cùng o Và mã mẫu tin sử dụng chuẩn mã dữ liệu DES trong chế độ CBC o Gửi lấy block cuối cùng như là MAC của cả mẫu tin
  36. 34 Nhưng bây giờ MAC cuối cùng với kích thước 64 bit cũng là quá nhỏ để đảm bảo an toàn. Do đó người ta tìm cách tạo nên các MAC có kích thước lớn hơn. 3.5 Các hàm Hash (hay còn gọi là hàm băm). Mục tiêu: Trình bày được các tính chất và an toàn của hàm băm. 3.5.1 Các yêu cầu Nén mẫu tin bất kỳ về kích thước cố định. Và giả thiết là hàm hash là công khai và không dùng khoá. Hash chỉ phụ thuộc mẫu tin, còn MAC phụ thuộc thêm cả vào khoá. Hash được sử dụng để phát hiện thay đổi của mẫu tin. Hash có thể sử dụng nhiều cách khác nhau với mẫu tin, Hash thường được kết hợp dùng để tạo chữ ký trên mẫu tin. Các tính chất của hàm Hash Hàm Hash tạo nên dấu vân tay (tức là thông tin đặc trưng) của một tệp, mẫu tin hay dữ liệu h = H(M) Nén mẫu tin có kích thước tùy ý về dấu vân tay có kích thước cố định. Hàm Hash được giả thiết là công khai, mọi người đều biết cách sử dụng Các yêu cầu của hàm Hash Có thể áp dụng cho mọi mẫu tin có kích thước tuỳ ý. Tuy nhiên phải tạo đầu ra h có kích thước cố định, thường là 128 bit đến 1024 bit. Dễ tính h = H(M)cho mọi mẫu tin M, hàm H tính toán nhanh, hiệu quả phụ thuộc chặt vào mẫu tin M và không tính toán ngược lại. Cho trước h không thể tìm được (rất khó) x sao cho H(x) = h. Tính chất này gọi là tính chất một chiều, chiều tìm nghịch ảnh rất khó khăn, tuy chiều tìm ảnh lại dễ dàng. Cho x không thể tìm được y sao cho H(y) = H(x). Đây là tính chất chống đỡ va chạm yếu, không tìm được mẫu tin có cùng Hash với mẫu tin đã cho. Và không thể tìm được x, y sao cho H(y) = H(x). Đây gọi là tính chất chống đỡ va chạm mạnh, đây là yêu cầu cao hơn tính chống đỡ va chạm yếu. 3.5.2 Các hàm hash đơn giản Có một số đề xuất cho một số hàm hash đơn giản. Chẳng hạn biểu diễn mẫu tin dưới dạng bit sau đó chia chúng thành các khối bit có kích thước bằng kích thước mong muốn của Hash. Rồi dựa trên phép toán XOR các bit thông tin
  37. 35 ở cùng vị trí tương ứng của các khối, kết quả nhận được là Hash của cả mẫu tin. Hàm hash trên là không an toàn vì đối với mẫu tin bất kỳ có thể tìm được mẫu tin mà có cùng hàm hash. Có thể nghĩ hash 64 bit là an toàn, có nghĩa là khó tìm được bản tin có cùng hash. Nhưng không phải vậy vì nghịch lý ngày sinh nhật như sau: trong lớp có ít nhất bao nhiêu sinh viên, để xác suất có ít nhất 2 sinh viên trùng ngày sinh nhật là lớn hớn 0.5. Theo lý thuyết xác suất thống kê gọi số sinh viên ít nhất trong lớp là k, khi đó xác suất q để không có 2 người nào trùng ngày sinh là tỷ số giữa cách chọn k ngày khác nhau trong 365 ngày trên số cách chọn k ngày bất kỳ trong 365 ngày. Vậy q = Ck365 / 365k Do đó, xác suất p để có ít nhất 2 người trùng ngày sinh là p = 1 – q = 1 - Ck365 / 365k Để p > 0.5 thì k > 22 hay k =23, cụ thể khi đó p = 0.5073. Khi chưa tính toán chi tiết chúng ta nghĩ là trong lớp phải có ít nhất khoảng 365/2 tức là 184 sinh viên. Nhưng trên thực tế con số đó ít hơn rất nhiều chỉ cần 23 sinh viên, chính vì vậy ta gọi đây là nghịch lý ngày sinh nhật. Điều đó muốn nói lên rằng, trong nhiều trường hợp xác suất để hai mẫu tin có cùng bản Hash là không nhỏ như chúng ta tưởng. 3.5.3 Tính an toàn của hàm Hash và MAC. Giống như đối với mã khối, hàm hash cũng có tấn công vét cạn, cụ thể: Hash chống va chạm mạnh có giá 2m/2, có nghĩa là với m là độ dài mã hash thì 2m/2 xác định sức mạnh của nó chống đối lại tấn công vét cạn. Ta cần lựa chọn m đủ lớn để việc duỵêt tìm 2m/2 phương án là không khả thi. Có đề xuất Hash 128 bit cho MD5 phần cứng. Nhưng có thể tìm được va chạm sau 24 ngày. Do đó có thể coi là hash 128 bit có thể có lỗ hổng, không an toàn, tốt hơn dùng hash 160 bit. Tấn công vét cạn trên MAC khó hơn, vì chúng đòi hỏi một cặp MAC của mẫu tin đã biết, do nó phụ thuộc thêm vào khoá. Có thể tấn công vào không gian khoá (như là tìm khoá) hoặc MAC. Độ dài ít nhất 128 bit MAC là cần thiết để đảm bảo an toàn Thám mã tấn công có cấu trúc Giống như mã khối muốn dùng tấn công vét cạn, có một số các tấn công thám mã là lựa chọn tốt nhất hiện có. Chẳng hạn . Nếu CVi = f[CVi-1, Mi]; H(M)=CVN . Thì ở đây thông thường khai thác sự va chạm của hàm f . Giống mã khối thường gồm một số vòng lặp
  38. 36 . Khi đó tân công sử dụng các tính chất của các hàm vòng. 3.6 Các thuật toán Hash và MAC Mục tiêu:Trình bày được và thực hiện được các thuật toán hash và mac. 3.6.1 Các thuật toán Hash và MAC Hàm Hash: thực hiện việc nén mẫu tin vê kích thước cố định bằng cách xử lý mẫu tin theo từng khối kết hợp dùng một hàm nén nào đó và có thể sử dụng mã khối. Mã xác thực mẫu tin (MAC): thực hiện tạo phần xác thực cho mẫu tin có kích thước cố định, để cung cấp tính toàn vẹn của mẫu tin và tính xác thực thông qua việc sử dụng khoá. Có thể tiíen hành bằng cách sử dụng mã khối với chế độ móc nối hoặc hàm Hash. 3.6.2 Thuật toán Hash an toàn SHA (Secure Hash Algorithm) SHA có nguồn gốc từ Viện chuẩn công nghệ quốc gia Hoa kỳ - NIST & NSA vào năm 1993, sau đó được nâng cấp vào 1995 theo chuẩn US và chuẩn là FIPS 180-1 1995 và Internet RFC3174, được nhắc đến như SHA-1. Nó được sử dụng với sơ đồ chữ ký điện tử DSA (Digital Signature Algorithm). Thuật toán là SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trị Hash 160 bit. Các kết quả nghiên cứu 2005 về an toàn của SHA-1 đề xuất sử dụng nó trong tương lai. Sau đây ta mô tả chi tiết thuật toán SHA-1 và MD5: a. Thuật toán SHA-1 Mô tả thụât toán Đầu vào của thuật toán là một thông điệp có chiều dài bất kỳ nhỏ hơn 264 bit, SHA-1 cho ra kết quả là một thông điệp rút gọn có độ dài là 160 bit Mở rộng thông điệp: f(t;B,C,D) được định nghĩa như sau. f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0≤t≤19) f(t;B,C,D) = B XOR C XOR D (20≤t≤39) f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40≤t≤59) f(t;B,C,D) = B XOR C XOR D (60≤t≤79). Thông điệp M được mở rộng trước khi thực hiện băm. Mục đích của việc mở rộng này là để đảm bảo cho thông điệp mở rộng có độ dài là bội số của 512.
  39. 37 Giả sử độ dài của thông điệp là l bit. Thêm bit 1 vào cuối thông điệp, theo sau là k bit 0 (k là số dương không âm nhỏ nhất sao cho l+1+k=448 (mod512)) . Sau đó thêm khối 64 bit là biểu diễn nhị phân của l. Phân tích thông điệp mở rộng: Sau khi thông điệp đã được mở rộng, thông điệp mở rộng được phân tích thành N khối 512 bit M(1),M(2), ,M(N). Trong đó 512 bit của khối dữ liệu đầu vào có thể được thể hiện bằng 16 từ 32 bit, Khởi tạo giá trị băm: Giá trị băm là một chuỗi bit có kích thước bằng kích thước của thông điệp băm (trừ SHA-384) gồm các từ ghép lại. Trong đó Hj(i) là từ j trong giá trị băm ở lần lặp i với 0≤i≤N (số block có được sau khi chia văn bản được đệm) và 0≤j≤(số từ trong giá trị băm -1).Trước khi thực hiện giá trị băm, với mỗi thuật toán băm an toàn, giá trị băm ban đầu H(0) phải được thiết lập. Kích thước và số lượng từ trong H(0) tuỳ thuộc vào kích thước thông điệp rút gọn. SHA-1 sử dụng dãy các hằng số K(0), K(79) có giá trị như sau: K(t) = 5A827999 ( 0 >32-n). X > có nghĩa là loại bỏ từ phải qua trái n bit và thêm vào kết quả n số 0 vào bên trái.
  40. 38 Khởi tạo H H0 = 67452301 ; H1 = EFCDAB89 H2 = 98BADCFE ; H3 = 10325476 H4 = C3D2E1F0. Chia M(i) thành 16 từ W(0), W(1), ,W(15) For t = 16 to 79 - W(t) = S^1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)). - Đặt a=H0 , b=H1,c=H2,d=H3,e=H4 For t = 0 to 79 do - TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t); - e = d; d = c; c = S^30(b); b = a; a = TEMP; - Đặt H0 = H0 + a,H1 = H1 + b,H2 = H2 + c,H3 = H3 + d,H4 = H4+ e. Sau khi tính toán được hết M(n), thông điệp rút gọn là một chuỗi 160 bit là biểu diễn của 5 từ: H0 H1 H2 H3 H4 Đánh giá thuật toán - SHA-1 được xem là an toàn đối với hiện tượng đụng độ vì rất khó tìm được hai thông điệp khác nhau có giá trị băm giống nhau. - SHA-1 được coi là chuẩn của việc bảo vệ các kênh liên lạc trực tuyến tồn tại trong 9 năm qua. - SHA-1 được thiết kế cho bộ xử lý 32 bit, thế hệ sắp tới của máy tính dùng các bộ xử lý 64 bit mà SHA-1 không hiệu quả trên bộ xử lý này. - Tháng 2 năm 2005 SHA-1 bị tấn công bời 3 chuyên gia người Trung Quốc. Thuật toán này đã bị giải mã thông qua phương pháp tính phân bổ. b. Thuật toán MD5 Mô tả thuật toán Thuật toán có đầu vào là một thông điệp có độ dài tuỳ ý và có đầu ra là một chuỗi có độ dài cố định là 128 bit. Thuật toán được thiết kế để chạy trên các máy tính 32 bit. Thuật toán: Thông điệp đầu vào có độ dài b bit bất kỳ. Biểu diễn các bit dưới dạng như sau: m[0] m[1] m[2] m[b-1] Bước1: Các bit gắn thêm : Thông điệp được mở rộng, thêm bit vào phía sau sao cho độ dài của nó (bit) đồng dư với 448 theo môđun 512. Nghĩa là thông điệp được mở rộng sao cho nó còn thiếu 64 bit nữa thì sẽ có một độ dài chia hết
  41. 39 cho 512. Việc thêm bit này được thực hiện như sau: một bit ‘1’ được thêm vào sau thông điệp, sau đó các bit ‘0’ được thêm vào để có một độ dài đồng dư với 448 môđun 512. Bước 2: Gắn thêm độ dài: Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả của bước 1. Bước 3: Khởi tạo bộ đệm MD: Một bộ đệm 4 từ (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá trị hex sau : A=0x01234567 B=0x89abcdef C=0xfedcba98 D=0x76543210 Bước 4 :Xử lý thông điệp theo từng khối 16 từ. Định nghĩa các hàm phụ, các hàm này nhận giá trị đầu vào là 3 từ 32 bit và tạo tạo ra một word 32 bit. F(X,Y,Z) = XY v not(X) Z G(X,Y,Z)= XZ v Y not(Z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(Z)) Bước này sử dụng một bảng 64 giá trị T[1 64] được tạo ra từ hàm sin. Gọi T là phần tử thứ i của bảng, thì T là phần nguyên của 4294967296*|sin(i)| , i được tính theo radian. Thuật toán /* Xử lý với mỗi khối 16 bit từ */ For i = 0 to N/16-1 do /* Sao khối i vào X. */ For j = 0 to 15 do Set X[j] to M[i*16+j]. end AA = A BB = B CC = C DD = D /* Vòng 1: Ký hiệu [abcd k s i] là thao tác sau a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
  42. 40 /* Làm 16 thao tác sau đây*/ [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] /* Vòng 2: Ký hiệu [abcd k s i] là thao tác sau đây a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ /* Làm 16 thao tác sau đây*/ [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] /* Vòng 3: Ký hiệu [abcd k s t] là thao tác sau đây a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ /* Làm 16 thao tác sau đây*/ [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48] /* Vòng 4: Ký hiệu [abcd k s t] là thao tác sau đây a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ /* Làm 16 thao tác sau đây*/ [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] /* Tính */ A = A + AA B = B + BB C = C + CC D = D + DD
  43. 41 end /* Kêt thúc vòng lặp trên i*/ Bước 5: Thông điệp rút gọn = A||B||C||D. Đánh giá thuật toán MD5 Về tốc độ sinh ra chuỗi cốt yếu thì MD5 chậm hơn so với MD4 nhưng nó lại an toàn hơn rất nhiều so với MD4. Thuật toán số hóa thông điệp MD5 khá đơn giản để thực hiện, cung cấp một giá trị băm của thông điệp với độ dài tuỳ ý. Người ta cho rằng độ khó để tìm được 2 thông điệp có cùng giá trị băm là khoảng 264 bước tính, và độ khó để tìm được một thông điệp với giá trị băm cho trước là 2128 bước tính. Tuy nhiên lỗ hổng mới phát hiện trong thuật toán MD5 sẽ cho phép kẻ tấn công có thể tạo ra file giả mạo trong vòng vài giờ với loại máy tính đạt chuẩn. Chuẩn Hash an toàn nâng cao Viện chuẩn công nghệ quốc gia NIST xuất bản bản sửa FIPS 180-2 vào năm 2002, đề nghị bổ sung 3 phiên bản mới của SHA: SHA-256, SHA-384, SHA-512. Các phiên bản trên được thiết kế tương thích với việc tăng độ an toàn được cung cấp bởi chuẩn mã nâng cao AES. Về cấu trúc và chi tiết giống SHA- 1, suy ra việc phân tích cũng tương tự, nhưng mức độ an toàn cao hơn nhiều so với SHA-1. SHA-512 là trọng tâm của thuật toán. Ở đây xử lý mẫu tin với các khối 1024 bit và bao gồm 80 vòng cập nhật bộ đệm 512 bit. Sử dụng giá trị Wt 64 bit được lấy ra từ block hiện tại của mẫu tin và hằng số quay vòng dựa trên căn bậc ba của 80 số nguyên tố đầu tiên 3.7 Các ứng dụng xác thực Mục tiêu: Trình bày được các ứng dụng xác thực. Chúng ta sẽ xem xét các hàm xác thực được phát triển để hỗ trợ xác thực mức ứng dụng và chữ ký điện tử. Đồng thời cũng xem xét dịch vụ xác thực dùng khoá riêng Kerrberros. Và sau đó xét dịch vụ xác thực dùng khoá công khai X.509. 3.7.1 Kerberos Đây là mô hình Hệ thống khoá máy chủ tin cậy của MIT (Trường Đại học Kỹ thuật Massachusetts) để cung cấp xác thực có bên thứ ba dùng khoá riêng và tập trung. Cho phép người sử dụng truy cập vào các dịch vụ phân tán trong mạng. Tuy nhiên không cần thiết phải tin cậy mọi máy trạm, thay vì đó chỉ cần tin cậy máy chủ xác thực trung tâm. Đã có hai phiên bản đang sử dụng là: Kerberos 4 và Kerberos 5. a. Các yêu cầu của Kerrberos Báo cáo đầu tiên của: Kerberos nêu các yêu cầu sau o An toàn
  44. 42 o Tin cậy o Trong suốt o Có thể mở rộng Ở đây cài đặt sử dụng thủ tục xác thực Needham-Schroeder. b.Tổng quan Kerberos 4 Là sơ đồ xác thực dùng bên thứ ba cơ bản và có máy chủ xác thực (AS – Authentication Server). Người dùng thỏa thuận với AS về danh tính của mình, AS cung cấp sự tin cậy xác thực thông qua thẻ cấp thẻ TGT (Ticket Granting Ticket) và máy chủ cung cấp thẻ (TGS – Ticket Granting Server). Người sử dụng thường xuyên yêu cầu TGS cho truy cập đến các dịch vụ khác dựa trên thẻ cấp thẻ TGT của người sử dụng. c.Trao đổi Kerberos 4 Người sử dụng nhận thẻ được cấp từ máy chủ xác thực AS, mỗi thẻ cho một phiên làm việc và cũng nhận thẻ cấp dùng dịch vụ (service granting ticket) từ TGT. Mỗi thẻ dùng cho một dịch vụ khác nhau được yêu cầu, thông qua việc trao đổi giữa máy chủ/trạm để nhận được dịch vụ. d. Các lãnh địa Kerberos Môi trường Kerberos bao gồm: máy chủ Kerberos, một số máy trạm đã được đăng ký với máy chủ, các máy chủ ứng dụng chia sẻ khoá với máy chủ. Một hệ thống như vậy được gọi là một lãnh địa Kerberos. Thông thường là một miền hành chính duy nhất. Nếu có nhiều lãnh địa, thì các máy chủ Kerberos cần phải chia sẻ khoá và tin cậy nhau. e. Kerberos phiên bản 5 Kerberos 5 được phát triển vào giữa những năm 1990, được thiết kế theo chuẩn RFC 1510. Nó cung cấp những cải tiến so với phiên bản 4, cụ thể hướng tới các thiếu xót về môi trường, thuật toán mã, thủ tục mạng thứ tự byte, thời gian sử dụng thẻ, truyền tiếp xác thực, xác thực lãnh địa con. Và các sự khác biệt về kỹ thuật như: mã kép, các dạng sử dụng không chuẩn, khoá phiên, chống tấn công mật khẩu. Kerberos là một giao thức xác thực mạng, nó cho phép các cá nhân giao tiếp với nhau trên một mạng không an toàn bằng cách xác thực người dùng này với người dùng khác theo một cơ chế bảo mật và an toàn. Kerberos ngăn chặn việc nghe trộm thông tin cũng như tấn công thay thế và đảm bảo tính toàn vẹn của dữ liệu. Kerberos hoạt động theo mô hình máy trạm/máy chủ và nó thực hiện quá trình xác thực 2 chiều - cả người dùng và dịch vụ xác thực lẫn nhau. Kerberos được xây dựng dựa trên mô hình mã hóa khóa đối xứng và đòi hỏi một thành phần thứ ba tin cậy tham gia vào quá trình xác thực.
  45. 43 Kerberos sử dụng một đối tác tin cậy thứ ba để thực hiện quá trình chứng thực được gọi là Trung tâm phân phối khóa bao gồm 2 phần riêng biệt: một máy chủ chứng thực (AS) và một máy chủ cấp thẻ (TGS). Kerberos làm việc dựa trên các thẻ để thực hiện quá trình chứng thực người dùng. Kerberos duy trì một cơ sở dữ liệu chứa các khoá bí mật. Mỗi thực thể trên mạng (máy trạm hoặc máy chủ) đều chia sẽ một khoá bí mật chỉ giữa bản thân nó với Kerberos. Để thực hiện quá trình giao tiếp giữa 2 thực thể, Kerberos tạo ra một khoá phiên. Khóa này dùng để bảo mật quá trình tương tác giữa các thực thể với nhau. Hoạt động của Kerberos: Quá trình hoạt động của giao thức (AS = Máy chủ xác thực, TGS = Máy chủ cấp thẻ, C = Máy trạm, S = Dịch vụ): + Người dùng nhập vào tên truy cập và mật khẩu ở phía máy trạm. + Máy trạm thực hiện thuật toán băm một chiều trên mật khẩu được nhập vào và nó trở thành khoá bí mật của máy trạm. + Máy trạm gởi một thông điệp dưới dạng bản rõ đến AS để yêu cầu dịch vụ. Không có khoá bí mật cũng như mật khẩu nào được gởi đến AS. + AS kiểm tra xem có tồn tại người dùng C trong cở sở dữ liệu của nó hay không. Nếu có, nó gởi ngược lại cho máy trạm 2 thông điệp: Thông điệp A: chứa khoá phiên Máy trạm/TGS được mã hóa bởi khoá bí mật của người dùng. Thông điệp B: chứa Thẻ (bao gồm ID của máy trạm, địa chỉ mạng của máy trạm, kỳ hạn thẻ có giá trị và một khoá phiên máy trạm/TGS) được mã hóa sử dụng khoá bí mật của TGS. + Khi máy trạm nhận được thông điệp A và B, nó giải mã thông điệp A để lấy khoá phiên máy trạm/TGS. Khoá phiên này được sử dụng cho quá trình giao đổi tiếp theo với TGS. Ở đây máy trạm không thể giải mã thông điệp B bởi vì nó được mã hóa bởi khoá bí mật của TGS. + Khi yêu cầu dịch vụ (S), máy trạm gởi 2 thông điệp sau đến TGS: - Thông điệp C: Gồm thông điệp B và ID của dịch vụ được yêu cầu - Thông điệp D: chứa Authenticator (gồm ID máy trạm và nhãn thời gian -timestamp) được mã hóa bởi khoá phiên Máy trạm/TGS. + Khi nhận được thông điệp C và D, TGS giải mã thông điệp D sử dụng khoá phiên máy trạm/TGS và gởi 2 thông điệp ngược lại cho máy trạm: - Thông điệp E: chứa thẻ (máy trạm đến máy chủ) (bao gồm ID máy trạm, địa chỉ mạng của máy trạm, kỳ hạn thẻ có giá trị và một khoá phiên máy trạm/dịch vụ) được mã hóa bởi khoá bí mật của dịch vụ.
  46. 44 - Thông điệp F: chứa khoá phiên của máy trạm/máy chủ được mã hóa bởi khoá phiên máy trạm/TGS. + Khi nhận được thông điệp E và F, máy trạm sau đó gởi một Authenticator mới và một thẻ (máy trạm đến máy chủ) đến máy chủ chứa dịch vụ được yêu cầu. - Thông điệp G: chứa thẻ (máy trạm đến máy chủ) được mã hóa sử dụng khoá bí mật của máy chủ. - Thông điệp H: một Authenticator mới chứa ID máy trạm, Timestamp và được mã hóa sử dụng khoá phiên máy trạm/máy chủ. + Sau đó, máy chủ giải mã thẻ sử dụng khoá bí mật của chính nó, và gởi một thông điệp cho máy trạm để xác nhận tính hợp lệ thực sự của máy trạm và sự sẵn sàng cung cấp dịch vụ cho máy trạm. - Thông điệp I: chứa giá trị Timestamp trong Authenticator được gởi bởi máy trạm sẽ được cộng thêm 1, được mã hóa bởi khoá phiên máy trạm/máy chủ. + Máy trạm sẽ giải mã sự xác nhận này sử dụng khóa chia sẽ giữa nó với máy chủ, và kiểm tra xem giá trị timestamp có được cập nhật đúng hay không. Nếu đúng, máy trạm có thể tin tưởng máy chủ và bắt đầu đưa ra các yêu cầu dịch vụ gởi đến máy chủ. + Máy chủ cung cấp dịch vụ được yêu cầu đến máy trạm. Hạn chế của Kerberos Kerberos thích hợp cho việc cung cấp các dịch vụ xác thực, phân quyền và bảo đảm tính mật của thông tin trao đổi trong phạm vi một mạng hay một tập hợp nhỏ các mạng. Tuy nhiên, nó không thật thích hợp cho một số chức năng khác, chẳng hạn như ký điện tử (yêu cầu đáp ứng cả hai nhu cầu xác thực và bảo đảm không chối cãi được). Một trong những giả thiết quan trọng của giao thức Kerberos là các máy chủ trên mạng cần phải tin cậy được. Ngoài ra, nếu người dùng chọn những mật khẩu dễ đoán thì hệ thống dễ bị mất an toàn trước kiểu tấn công từ điển, tức là kẻ tấn công sẽ sử dụng phương thức đơn giản là thử nhiều mật khẩu khác nhau cho đến khi tìm được giá trị đúng. Do hệ thống hoàn toàn dựa trên mật khẩu để xác thực người dùng, nếu bản thân các mật khẩu bị đánh cắp thì khả năng tấn công hệ thống là không có giới hạn. Điều này dẫn đến một yêu cầu rất căn bản là Trung tâm phân phối khóa cần được bảo vệ nghiêm ngặt. Nếu không thì toàn bộ hệ thống sẽ trở nên mất an toàn. Toàn vẹn dữ liệu Đối với mỗi hệ bảo mật toàn vẹn dữ liệu là một yêu cầu không thể thiếu, để đảm bảo tính toàn vẹn dữ liệu thực sự, các thuật mã hoá như mã hoá băm, mã
  47. 45 xác nhận thông điệp (MAC) và chữ ký điện tử có thể cùng được triển khai đồng loạt. Về cơ bản, những biện pháp này sử dụng các hàm một chiều, nghĩa là dữ liệu không thể bị giải mã ngay cả khi đã biết khoá để mã hoá nó. 3.7.2 Dịch vụ xác thực X.509 Dịch vụ xác thực X.509 là một phần của chuẩn dịch vụ thư mục CCITT X.500. Ở đây các máy chủ phân tán bảo trì cơ sở dữ liệu thông tin của người sử dụng và xác định khung cho các dịch vụ xác thực. Thư mục chứa các chứng nhận khoá công khai, khoá công khai của người sử dụng được ký bởi chủ quyền chứng nhận. Để thống nhất dịch vụ cũng xác định các thủ tục xác thực, sử dụng mã khoá công khai và chữ ký điện tử. Tuy thuật toán không chuẩn nhưng được RSA đề xuất. Các chứng nhận X.509 được sử dụng rộng rãi. 1. Các chứng nhận X.509 Được phát hành bởi Chủ quyền chứng nhận (Certification Authority – CA) bao gồm: o Các phiên bản 1,2 hoặc 3 o Số sổ (duy nhất với CA) xác định chứng nhận o Thuật toán xác định chữ ký o Xuất bản tên X.500 (CA) o Chu kỳ hiệu lực (từ-đến ngày) o Đối tượng của tên X.500 (tên của người sở hữu) o Đối tượng thông tin khoá công khai (thuật toán, các tham số,khoá) o Định danh duy nhất xuất bản (phiên bản 2+) o Định danh duy nhất đối tượng (phiên bản 2+) o Các trường mở rộng (phiên bản 3) o Chữ ký (hoặc hash của các trường trong chứng nhận) Ký hiệu CA > là chứng nhận cho A được ký bởi CA 2. Nhận chứng nhận Người sử dụng bất kỳ có thể trao đổi với CA để nhận được chứng nhận. Chỉ CA có thể sửa chứng nhận. Vì không thể bị giả mạo nên chứng nhận có thể được đặt trong thư mục công cộng. 3. Sơ đồ phân cấp CA Nếu cả hai người sử dụng chia sẻ chung CA thì họ được giả thiết là biết khoá công khai của CA đó. Ngược lại các CA cần tạo nên sơ đồ phân cấp để trao đổi chứng nhận với nhau. Sử dụng chứng nhận liên kết các thành viên của sơ đồ để có được chứng nhận của các CA khác. Mỗi CA có thể gửi tiếp (forward) các
  48. 46 chứng nhận của mình cho clients và có thể gửi lại (backward) chứng nhận của mình cho cha của nó. Mỗi client tin tưởng các chứng nhận của cha. Có thể kiểm chứng chứng nhận bất kỳ của một CA cho người sử dụng bằng các CA khác trong sơ đồ phân cấp. 4. Sự thu hồi chứng nhận Giấy chứng nhận có chu kỳ sử dụng, có thể thu hồi trước thời hạn trong những trường hợp cần thiết như: khoá riêng của người sử dụng bị lộ, người dùng không tiếp tục được chứng nhận bởi CA đó, Giấy chứng nhận của CA bị làm hại. Nói chung CA bảo trì danh sách các chứng nhận bị thu hôì (CRL – Certificate Revocation List). Người sử dụng có thể kiểm tra lại các chứng nhận đã bị thu hồi. 5. Các thủ tục xác thực X.509 bao gồm ba thủ tục xác thực tùy chọn: xác thực một chiều, xác thực hai chiều và xác thực ba chiều. Mọi thủ tục trên đều sử dụng các chữ ký khoá công khai. Xác thực một chiều Một chiều A->B được sử dụng để thiết lập o Danh tính của A và rằng mẩu tin là từ A o Mẩu tin được gửi cho B o Tính toàn vẹn và gốc gác của mẩu tin Mẩu tin có thể bao gồm cả nhãn thời gian, ký hiệu đặc trưng của mẩu tin (nonce), danh tính của B và nó được ký bởi A. Có thể bao gồm một số thông tin bổ sung cho B như khoá phiên. Xác thực hai chiều Hai mẩu tin A->B và B->A được thiết lập, ngoài mẩu tin từ A đến B như trên còn có: o Danh tính của B và trả lời từ B o Trả lời này dành cho A o Tính toàn vẹn và gốc gác của trả lời Trả lời bao gồm cả ký hiệu đặc trưng của mẩu tin (nonce) từ A, cả nhãn thời gian và ký hiệu đặc trưng trả lời từ B. Có thể bao gồm một số thông tin bổ sung cho A. Xác thực ba chiều Ba mẩu tin A->B, B->A và A->B được thiết lập như trên mà không có đồng hồ đồng bộ. Ngoài 2 chiều như trên còn có trả lời lại từ A đến B chứa bản sao nonce của trả lời từ B, nghĩa là các nhãn thời gian mà không cần kiểm tra.
  49. 47 X.509 phiên bản 3 Trong phiên bản 3 được bổ sung một số thông tin cần thiết trong giấy chứng nhận như: Email/URL, chi tiết về đợt phát hành, các ràng buộc sử dụng. Tốt hơn hết là đặt tên tường minh cho các cột mới xác định trong phương pháp mở rộng tổng quát. Các mở rộng bao gồm: o Danh tính mở rộng o Chỉ dẫn tính quan trọng o Giá trị mở rộng Các mở rộng xác thực Khoá và các thông tin đợt phát hành o Bao trùm thông tin về đối tượng, khoá người phát hành, chỉ thị kiểu phát hành, chứng nhận Đối tượng chứng nhận và các thuộc tính người phát hành o Hỗ trợ có tên phụ, định dạng phụ cho các đối tượng và người phát hành Chứng nhận các ràng buộc phát hành o Cho phép sử dụng các ràng buộc trong chứng nhận bởi các CA khác 3.8. Bài tập Mục tiêu: Củng cố lại kiến thức lý thuyết, hình thành kỹ năng từ việc áp dụng các kiến thức để giải bài tập. 1. Chữ ký điện tử DSA: Cho p = 23, q = 11, h=3 Tính g NSA A chọn khoá riêng xA = 7, tính khoá công khai của yA của A Cho bản Hash của M là H(M) = 15 Chọn số ngẫu nhiên k = 6 Tính chữ ký điện tử của A: (r, s) Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M. 2. Chữ ký điện tử DSA: Cho p = 53, q = 13, h=5 Tính g
  50. 48 NSA A chọn khoá riêng xA = 11, tính khoá công khai của yA của A Cho bản Hash của M là H(M) = 17 Chọn số ngẫu nhiên k = 9 Tính chữ ký điện tử của A: (r, s) Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M. 3. Hãy cho biết các phương pháp phân phối khoá công khai. Và các cách trao đổi công khai khoá mật giữa hai người sử dụng 4. Nêu sự khác biệt giữa MAC và Hash và nêu tác dụng của chúng. Cho một số ví dụ về các hàm MAC và Hash. 5. Cho biết HMAC là gì, sử dụng chúng vào mục đích nào. 6. Nêu một số cách tạo và kiểm chứng chữ ký điện tử 7. Chứng minh “Nghịch lý Ngày sinh nhật”, tức là có ít nhất 23 người, thì xác suất để có hai người trùng ngày sinh nhật sẽ lớn hơn hoặc bằng 0.5. 8. Các hàm số học và logic cơ bản nào dùng trong MD5? 9. Các hàm số học và logic cơ bản nào dùng trong SHA-1? 10. Các hàm số học và logic cơ bản nào dùng trong RIPEMD-160? 11. Trình bày hoạt động của các giao thức xác thực trên mô hình Kerberos. 12. Nêu nội dung dịch vụ xác thực X.509.
  51. 49 CHƯƠNG 4 MÃ KHỐI VÀ CHUẨN MÃ DỮ LIỆU DES Mã chương: MH25-04 Mục tiêu: - Trình bày được các chuẩn mã dữ liệu DES; - Xác định được các thành phần của một hệ thống bảo mật. - Thực hiện các thao tác an toàn với máy tính. Nội dung chính: 3.1. Giới thiệu chung về DES Mục tiêu: Trình bày về các chuẩn mã hóa dữ liệu. Chuẩn mã hoá dữ liệu DES được Văn phòng tiêu chuẩn của Mỹ (U.S National Bureau for Standards) công bố năm 1971 để sử dụng trong các cơ quan chính phủ liên bang. Giải thuật được phát triển tại Công ty IBM dựa trên hệ mã hoá LUCIFER của Feistel. DES là thuật toán mã hoá khối (block algrithm), với cỡ của một khối là 64 bít. Một khối 64 bít bản rõ được đưa vào, sau khi mã hoá dữ liệu đưa ra là một khối bản mã 64 bít. Cả mã hoá và giải mã đều sử dụng cùng một thuật toán và khoá. Khoá mã có độ dài 64 bít, trong đó có 8 bít chẵn lẻ được sử dụng để kiểm soát lỗi. Các bít chẵn lẻ nằm ở các vị trí 8, 16, 24, , 64. Tức là cứ 8 bít khoá thì trong đó có 1 bít kiểm soát lỗi, bít này qui định số bít có giá trị “1” của khối 8 bít đó theo tính bù chẵn. Nền tảng để xây dựng khối của DES là sự kết hợp đơn giản của các kỹ thuật thay thế và hoán vị bản rõ dựa trên khoá. Đó là các vòng lặp. DES sử dụng 16 vòng lặp, nó áp dụng cùng một kiểu kết hợp của các kỹ thuật trên khối bản rõ 16 lần (Như hình vẽ) Thuật toán chỉ sử dụng các phép toán số học và lôgíc trên các số 64 bít, vì vậy nó dễ dàng thực hiện vào những năm 1970 trong điều kiện về công nghệ phần cứng lúc bấy giờ. Ban đầu, sự thực hiện các phần mềm kiểu này rất thô sơ, nhưng hiện tại thì việc đó đã tốt hơn, và với đặc tính lặp đi lặp lại của thuật toán đã tạo nên ý tưởng sử dụng chíp với mục đích đặc biệt này. Tóm lại DES có một số đặc điểm sau: ♦ Sử dụng khoá 56 bít. ♦ Xử lý khối vào 64 bít, biến đổi khối vào thành khối ra 64 bít. ♦ Mã hoá và giải mã được sử dụng cùng một khoá. ♦ DES được thiết kế để chạy trên phần cứng. DES thường được sử dụng để mã hoá các dòng dữ liệu mạng và mã hoá dữ liệu được lưu trữ trên đĩa. 3.2. Mô tả thuật toán
  52. 50 Mục tiêu: Mô tả được thuật toán DES. DES thực hiện trên từng khối 64 bít bản rõ. Sau khi thực hiện hoán vị khởi đầu, khối dữ liệu được chia làm hai nửa trái và phải, mỗi nửa 32 bít. Tiếp đó, có 16 vòng lặp giống hệt nhau được thực hiện, được gọi là các hàm ƒ, trong đó dữ liệu được kết hợp với khoá. Sau 16 vòng lặp, hai nửa trái và phải được kết hợp lại và hoán vị cuối cùng (hoán vị ngược) sẽ kết thúc thuật toán. Trong mỗi vòng lặp, các bít của khoá được dịch đi và có 48 bít được chọn ra từ 56 bít của khoá. Nửa phải của dữ liệu được mở rộng thành 48 bít bằng một phép hoán vị mở rộng, tiếp đó khối 48 bít này được kết hợp với khối 48 bít đã được thay đổi và hoán vị của khoá bằng toán tử XOR. Khối kết quả của phép tính XOR được lựa chọn ra 32 bít bằng cách sử dụng thuật toán thay thế và hoán vị lần nữa. Đó là bốn thao tác tạo nên hàm ƒ. Tiếp đó, đầu racủa hàm ƒ được kết hợp với nửa trái bằng một toán tử XOR. Kết quả của các bước thực hiện này trở thành nửa phải mới; nửa phải cũ trở thành nửa trái mới. Sự thực hiện này được lặp lại 16 lần, tạo thành 16 vòng của DES. Nếu Bi là kết quả của vòng thứ i, Li và Ri là hai nửa trái và phải của Bi, Ki là khoá 48 bít của vòng thứ i, và ƒ là hàm thực hiện thay thế, hoán vị và XOR với khoá. 3.3. Hoán vị khởi đầu Mục tiêu: Trình bày được hoán vị khởi đầu. Hoán vị khởi đầu đổi chỗ khối dữ liệu vào, thay đổi vị trí của các bít trong khối dữ liệu vào, như được mô tả trong Bảng 1. Bảng này, và tất cả các bảng khác sau này, được đọc từ trái qua phải, từ trên xuống dưới. Ví dụ, hoán vị khởi đầu chuyển bít 1 thành bít 58, bít 2 thành bít 50, bít 3 thành bít 42, 3.4. Khoá chuyển đổi Mục tiêu: Trình bày được khóa chuyển đổi. Đầu tiên, khoá 64 bít được giảm xuống thành một khoá 56 bít bằng cách bỏ qua 8 bít chẵn lẻ. Sự loại bỏ được thực hiện theo Bảng sau: Các bít chẵn lẻ này có thể được sử dụng để đảm bảo rằng không có lỗi nào xảy ra khi đưa khoá vào. Sau khi khoá 56 bít được trích ra, một khoá khác 48 bít được sinh ra cho mỗi vòng của DES. Những khoá này, ki, được xác định bằng cách: + Đầu tiên, khoá 56 bít được chia làm hai phần mỗi phần 28 bít. Sau đó, các phần này được dịch trái một hoặc hai bít, phụ thuộc vào vòng đó. + Sau khi được dịch, 48 bít được lựa chọn ra từ 56 bít. Bởi vì sự thực hiện này đổi chỗ thứ tự các bít như là sự lựa chọn một tập con các bít, nó được gọi là hoán vị nén (compression permutation), hoặc hoán vị lựa chọn (permuted choice). Sự thực hiện này cung cấp một tập hợp các bít cùng cỡ với đầu ra của
  53. 51 hoán vị mở rộng. Bảng 4 định nghĩa hoán vị nén (cũng gọi là hoán vị lựa chọn). Ví dụ, bít ở vị trí 33 của khoá dịch được chuyển tới vị trí 35 của đầu ra, và bít ở vị trí 18 của khoá dịch bị bỏ qua. 3.5. Hoán vị mở rộng Mục tiêu: Trình bày được hoán vị mở rộng. Ở thao tác này, nửa phải của dữ liệu, Ri, được mở rộng từ 32 bít thành 48 bít. Bởi vì sự thực hiện này thay đổi thứ tự của các bít bằng cách lặp lại một bít nào đó, nó được hiểu như là một sự hoán vị mở rộng. Sự thực hiện này nhằm mục đích tạo ra kết quả là dữ liệu cùng cỡ với khoá để thực hiện thao tác XOR. Định nghĩa hoán vị mở rộng - hộp E. Với mỗi bộ 4 bít của khối dữ liệu vào, bít đầu tiên và bít thứ tư mỗi bít tương ứng với 2 bít của khối dữ liệu ra, trong khi bít thứ hai và bít thứ ba mỗi bít tương ứng với một bít của khối dữ liệu ra. Bảng dưới mô tả vị trí của các bít trong khối dữ liệu ra theo khối dữ liệu vào. Ví dụ, bít ở vị trí thứ 3 của khối dữ liệu vào được chuyển tới vị trí thứ 4 trong khối dữ liệu ra. Và bít ở vị trí 21 của khối dữ liệu vào được chuyển tới vị trí 30 và 32 trong khối dữ liệu ra. 3.6. Hộp thay thế S Mục tiêu: Giải thích được thế nào là thay thế S. Sau khi được nén, khoá được XOR với khối mở rộng, 48 bít kết quả được chuyển sang giai đoạn thay thế. Sự thay thế được thực hiện bởi 8 hộp thay thế (substitution boxes, S-boxes). Khối 48 bít được chia thành 8 khối 6 bít. Mỗi khối được thực hiện trên một hộp S riêng biệt (separate S-box): khối được thực hiện trên hộp S1, khối 2 được thực hiện trên hộp S2, , khối 8 được thực hiện trên hộp S8. Mỗi hộp S là một bảng gồm 4 hàng và 16 cột. Mỗi phần tử của hộp là một số 4 bít. Sáu bít vào hộp S sẽ xác định số hàng và số cột để tìm kết quả ra. Bảng 6 biểu diễn 8 hộp S. Những bít vào xác định một phần tử trong hộp S một cách riêng biệt. Sáu bít vào của hộp được ký hiệu là b1, b2, b3, b4, b5 và b6. Bít b1 và b6 được kết hợp thành một số 2 bít, nhận giá trị từ 0 đến 3, tương ứng với một hàng trong bảng. Bốn bít ở giữa, từ b2 tới b5, được kết hợp thành một số 4 bít, nhận giá trị từ 0 đến 15, tương ứng với một cột trong bảng. Ví dụ, giả sử ta đưa dữ liệu vào hộp S thứ 6 (bít 31 tới bít 36 của hàm XOR) là 110010. Bít đầu tiên và bít cuối cùng kết hợp thành 10, tương ứng với hàng thứ 3 của hộp S thứ 6. Bốn bít giữa kết hợp thành 1001, tương ứng với cột thứ 10 của hộp S thứ 6. Phần tử hàng 3 cột 9 của hộp S thứ 6 là 0. Giá trị 0000 được thay thế cho 110010.
  54. 52 Kết quả của sự thay thế là 8 khối 4 bít, và chúng được kết hợp lại thành một khối 32 bít. Khối này được chuyển tới bước tiếp theo: hộp hoán vị P (P- box permutation). 3.7. Hộp hoán vị P Mục tiêu: Giải thích được thế nào là hoán vị S. Khối dữ liệu 32 bít ra của hộp thay thế S được hoán vị tiếp trong hộp P. Sự hoán vị này ánh xạ mỗi bít dữ liệu vào tới một vị trí trong khối dữ liệu ra; không bít nào được sử dụng hai lần và cũng không bít nào bị bỏ qua. Nó đượcgọi là hoán vị trực tiếp (straight permutation). Bảng hoán vị cho ta vị trí của mỗi bí cần chuyển. Ví dụ, bít 4 chuyển tới bít 21, trong khi bít 32 chuyển tới bít 4. Cuối cùng, kết quả của hộp hoá vị P được XOR với nửa trái của khối 64 bít khởi đầu. Sau đó, nửa trái và phải được chuyển đổi cho nhau và một vòng mới được tiếp tục. 3.8. Hoán vị cuối cùng Mục tiêu: Thực hiện được hoán vị cuối cùng. Hoán vị cuối cùng là nghịch đảo của hoán vị khởi đầu, và nó được mô tả trong bảng dưới. Chú ý rằng nửa trái và nửa phải không được tráo đổi sau vòng cuối cùng của DES; thay vào đó khối nối R16L16được sử dụng như khối dữ liệu ra của hoán vị cuối cùng. Không có gì đưa ra ở đây; tráo đổi các nửa và dịch vòng hoán vị sẽ cho chính xác như kết quả trước; điều đó có nghĩa là thuật toán có thể được sử dụng cho cả mã hoá và giải mã. Bảng hoán vị cuối cùng: 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 3.9. Giải mã DES Mục tiêu: Giải mã được DES. Sau khi thay đổi, hoán vị, XOR, và dịch vòng, chúng ta có thể nghĩ rằng thuật toán giải mã phức tạp, khó hiểu như thuật toán mã hoá và hoàn toàn khác thuật toán mã hoá. Trái lại, sự hoạt động được lựa chọn để đưa ra một đặc tính hữu ích: cùng thuật toán làm việc cho cả mã hoá và giải mã. Với DES, có thể sử dụng cùng chức năng để giải mã hoặc mã hoá một khối. Chỉ có sự khác nhau đó là các khoá phải được sử dụng theo thứ tự ngược lại. Nghĩa là, nếu các khoá mã hoá cho mỗi vòng là k1, k2, k3 , , k15, k16 thì các khoá giải là k16, k15, , k3, k2, k1. Giải thuật để tổng hợp khoá cho mỗi
  55. 53 vòng cũng tương tự. Có khác là các khoá được dịch phải và số vị trí bit để dịch được lấy theo chiều ngược lại. 3.10. Phần cứng và phần mềm thực hiện DES Mục tiêu: Trình bày được vai trò của phần cứng và phần mềm trong quá trình thực hiện DES. Việc mô tả DES khá dài dòng song việc thực hiện DES rất hữu hiệu bằng cả phần cứng lẫn phần mềm. Các phép tính số học duy nhất được thực hiện là phép XOR các xâu bít. Hàm mở rộng E, các hộp S, các hoán vị khởi đầu IP, hoán vị cuối cùng IP-1 và việc tính toán các khoá k1, k2, , k16 đều có thể thực hiện được cùng lúc bằng tra bảng (trong phần mềm) hoặc bằng cách nối cứng chúng thành mạch. Một phần mềm DES trên máy tính lớn IBM 3090 có thể thực hiện32.000 phép tính mã hoá trong một giây. Với máy vi tính thì tốc độ thấp hơn. (Chú ý : Phần mềm này được viết trên C và Assembler, và có thể mua được từ Utimaco-Belgium, Interleuvenlaan 62A, B-300 leuven, Belgium. Cỡ mã xấp xỉ 64K. ANSI C thực hiện chậm hơn khoảng 20%.) Một ứng dụng rất quan trọng của DES là trong giao dịch ngân hàng Mỹ. DES được dùng để mã hoá các số định danh các nhân (PIN) và việc chuyển tài khoản được thực hiện bằng máy thủ quỹ tự động (ATM). DES còn được sử dụng rộng dãi trong các tổ chức chính phủ. 3.11. Sự an toàn của DES Mục tiêu: Chứng minh được sự an toàn khi sử dụng mã DES. Đã có rất nhiều sự nghiên cứu về độ dài của khoá, số vòng lặp, và thiết kế của hộp S (S-boxes). Hộp S có đặc điểm là khó hiểu, không có bất cứ sự rõ ang nào như tại sao chúng phải như vậy. Mọi tính toán trong DES ngoại trừ các hộp S đều tuyến tính, tức việc tính XOR của hai đầu ra cũng giống như phép XOR hai đầu vào rồi tính toán đầu ra. Các hộp S chứa đựng thành phần phi tuyến của hệ là yếu tố quan trọng nhất đối với sự an toàn của hệ thống. Tính bảo mật của một hệ mã hoá đối xứng là một hàm hai tham số: độ phức tạp của thuật toán và độ dài của khoá. Giả sử rằng tính bảo mật chỉ phụ thuộc vào độ phức tạp của thuật toán. Có nghĩa rằng sẽ không có phương pháp nào để phá vỡ hệ thống mật mã hơn là cố gắng thử mọi khoá có thể, phương pháp đó được gọi là brute-force attack. Nếu khoá có độ dài 8 bít, suy ra sẽ có 28=256 khoá. Vì vậy, sẽ mất nhiều nhất 256 lần thử để tìm ra khoá đúng. Nếu khoá có độ dài 56 bít, thì sẽ có 256 khoá có thể sử dụng. Giả sử một Suppercomputer có thể thử một triệu khoá trong một giây, thì nó sẽ cần 2000 năm để tìm ra khoá đúng. Nếu khoá có độ dài 64 bít, thì với chiếc máy trên sẽ cần 600,000 năm để tìm ra khoá đúng trong số 264 khoá. Nếu khoá có độ dài 128 bít, thì sẽ mất 1025 năm để tìm ra khoá đúng. Vũ trụ chỉ
  56. 54 mới tồn tại 1010 năm, vì vậy 1025 thì một thời gian quá dài. Với một khoá 2048 bít, một máy tính song song thực hiện hàng tỉ tỉ phép thử trong một giây sẽ tiêu tốn một khoảng thời gian là 10597 năm để tìm ra khoá. Lúc đố vũ trụ có lẽ không còn tồn tại nữa. Khi IBM đưa ra thiết kế đầu tiên của hệ mã hoá LUCIFER, nó có khoá dài 128 bít. Ngày nay, DES đã trở thành một chuẩn về mã hoá dữ liệu sử dụng khoá 56 bít, tức kích thước không gian khoá là 256. Rất nhiều nhà mã hoá hiện đang tranh luận về một khoá dài hơn của DES. Nhiều thiết bị chuyên dụng đã được đề xuất nhằm phục vụ cho việc tấn công DES với bản rõ đã biết. Sự tấn công này chủ yếu thực hiện tìm khoá theo phương pháp vét cạn. Tức với bản rõ X 64 bít và bản mã Y tương ứng, mỗi khoá có thể đều được kiểm tra cho tới khi tìm được một khoá k thoả mãn Ek(X)=Y (có thể có nhiều hơn một khoá k như vậy). Vào năm 1979, Diffie và Hellman tuyên bố rằng với một máy tính chuyên dụng bản mã hoá DES có thể được phá bằng cách thử mọi trường hợp của khoá trong vòng một ngày – giá của máy tính đó là 20 triệu đôla. Vào năm 1981, Diffie đã tăng lên là cần hai ngày để tìm kiếm và giá của chiếc máy tính đó là 50 triệu đôla. 3.12. Tranh luận về DES. Mục tiêu: Phân tích được ưu, nhược điểm của mã DES Khi DES được đề xuất như một chuẩn mật mã, đã có rất nhiều ý kiến phê phán. Một lý do phản đối DES có liên quan đến các hộp S. Mọi tính toán liên quan đến DES ngoại trừ các hộp S đều tuyến tính, tức việc tính phép hoặc loại trừ của hai đầu ra cũng giống như phép hoặc loại trừ của hai đầu vào rồi tính tóan đầu ra. Các hộp S – chứa đựng thành phần phi tuyến của hệ mật là yếu tố quan trong nhất đối với độ mật của hệ thống( Ta đã thấy trong chương 1 là các hệ mật tuyến tính – chẳng hạn như Hill – có thể dễ dàng bị mã thám khi bị tấn công bằng bản rõ đã biết). Tuy nhiên tiêu chuẩn xây dựng các hộp S không được biết đầy đủ. Một số người đã gợi ý là các hộp S phải chứa các “cửa sập” được dấu kín, cho phép Cục An ninh Quốc gia Mỹ (NSA) giải mã được các thông báo nhưng vẫn giữ được mức độ an toàn của DES. Dĩ nhiên ta không thể bác bỏ được khẳng định này, tuy nhiên không có một chứng cớ nào được đưa ra để chứng tỏ rằng trong thực tế có các cửa sập như vậy. Năm 1976 NSA đã khẳng định rằng, các tính chất sau của hộp S là tiêu chuẩn thiết kế: P0 Mỗi hàng trong mỗi hộp S là một hoán vị của các số nguyên 0, 1, . . . , 15. P1 Không một hộp S nào là một hàm Affine hoặc tuyến tính các đầu vào của nó. P2 Việc thay đổi một bít vào của S phải tạo nên sự thay đổi ít nhất là hai bít ra. P3 Đối với hộp S bất kì và với đầu vào x bất kì S(x) và S(x 001100) phải khác nhau tối thiểu là hai bít ( trong đó x là xâu bít độ dài 6 ).