Đồ án Môn học bảo mật thông tin - Mã hóa đối xứng

Mã hóa đối xứng I .Quá trình mã hóa tổ hợp và DES 3 lớp . DES 2 lớp DES 3 lớp với 2 khóa mã . DES 3 lớp với 3 khóa II.Chế độ hoạt động của kiểu mã hóa theo khối Kiểu Electronic Codebook (ECB) . . Kiểu mã hóa chuỗi khối (CBC) . Kiểu phản hồi mã hóa (CFB) . Kiểu phản hồi đầu ra (OFB). Kiểu máy đếm (CTR) . III.Mã hóa dòng và RC4 Cấu trúc mã hóa dòng Thuật toán RC4 IV.Giới thiệu sách đọc và Website V. Thuật ngữ then chốt, câu hỏi ôn tập, và vấn đề Thuật ngữ then chốt . Câu hỏi ôn tập Bài toán

doc45 trang | Chia sẻ: lvcdongnoi | Lượt xem: 5338 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Đồ án Môn học bảo mật thông tin - Mã hóa đối xứng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO _____?˜®™@_____ ĐỒ ÁN MÔN HỌC BẢO MẬT THÔNG TIN CHƯƠNG 6: Mà HÓA ĐỐI XỨNG Sinh viên thực hiện: Trần Thị Huyền 08110227 Nguyễn MinhNhật 08110168 Tp. Hồ Chí Minh Tháng 04/2011 Tóm tắt chương: Hệ DES Des được xem như là chuẩn mã hóa dữ liệu cho các ứng dụng. Song căn cứ vào lỗ hổng tiềm năng của DES đối với việc tấn công hàng loạt, đã tạo ra một sự quan tâm đáng kể về việc tìm một giải pháp thay thế đó là sử dụng nhiều mã hoá với DES và nhiều khóa mã: DES 2 lớp, DES 3 lớp 2 khóa mã, DES 3 lớp 3 khóa mã. DES 2 lớp có thể bị thám mã bằng việc tấn công dùng xác suất. 3DES với 2 khóa mã là phương án thay thế khá thông dụng cho DES. Trong thực tế người sử dụng 3 DES với 2 khóa cảm thấy một vài lo âu. Vì vậy, nhiều nhà nghiên cứu ngày nay cảm thấy sử dụng 3DES 3 khóa là giải pháp thay thế ưa thích hơn. Chế độ hoạt động mã hóa theo khối Chế độ hoạt động mã hóa theo khối có 5 kiểu điển hình: kiểu electric codebook, kiểu chuỗi khối mã hóa, kiểu phản hồi mã hóa, kiểu phản hồi đầu ra, và kiểu máy đếm. Kiểu electric codebook (ECB): Thông điệp được chia thành các khối độc lập, được mã hóa riêng rẽ. Các khối hoàn toàn độc lập với nhau. Kiểu mã hóa chuỗi khối (CBC): Thông điệp cũng được chia thành các khối nhưng có liên kết với nhau trong qui trình mã hóa. Các khối mã hóa có liên kết với chuỗi văn bản nguồn. Sử dụng vector khởi tạo IV nhằm không để kẻ thứ 3 đoán được thông điệp gửi và nhận. Kiểu phản hồi mã hóa (CFB): Thông điệp cũng được chia thành các khối, kết quả được dùng làm đầu vào cho vòng sau. Nếu lỗi xảy ra sẽ lan truyền cho các khối sau đó. Kiểu phản hồi đầu ra (OFB): Thông điệp cũng được chia thành các khối có liên kết với nhau, sử dụng thanh ghi dịch. Nếu lỗi xảy ra sẽ không ảnh hưởng đến khối kế tiếp. Kiểu máy đếm (CTR): Máy đếm được mã hóa và sau đó XOR với bản nguồn để tạo ra bản mã, sử dụng tính năng song song. Phương thức mã hóa dòng (stream cipher) Phương thức mã hóa dữ liệu theo từng bit. Một mã dòng điển hình sẽ mã hóa bản rõ mỗi lần được 1 byte mặc dù mã dòng có thể được thiết kế để hoạt động mỗi lần trên 1 bit hay trên những đơn vị lớn hơn 1 byte. Trong cấu trúc này, một khóa được đưa vào một bộ sinh chuỗi bit ngẫu nhiên giả mà tạo ra được một dòng những bộ đếm 8 bit bề ngoài có vẻ như ngẫu nhiên. Dữ liệu ra của bộ sinh, được gọi là dòng khóa, kết hợp mỗi lần 1 byte với dòng plaintext sử dụng phép toán đảo bit loại trừ OR (XOR). Thuật toán RC4 RC4 là loại mã dòng được Ron Rivest thiết kế cho RSA Security. RC4 là mã dòng với độ dài khóa không cố định cùng những thao tác định hướng byte. Thuật toán dựa trên cách sử dụng phép hoán vị ngẫu nhiên. Thuật toán đối xứng RC4 được ứng dụng trong WEP cung cấp bảo mật cho dữ liệu trên mạng không dây. Chương 6: Mã hóa đối xứng 6.1 Quá trình mã hóa tổ hợp và DES 3 lớp……………………………...Trang 5 DES 2 lớp…………………………………………………………Trang 5 DES 3 lớp với 2 khóa mã................................................................Trang 10 DES 3 lớp với 3 khóa……………………………………………..Trang 15 6.2 Chế độ hoạt động của kiểu mã hóa theo khối……………………….Trang 16 Kiểu Electronic Codebook (ECB)….……………………………...Trang 17 Kiểu mã hóa chuỗi khối (CBC)…………………………………...Trang 19 Kiểu phản hồi mã hóa (CFB)……………………………………...Trang 21 Kiểu phản hồi đầu ra (OFB).……………………………………....Trang 24 Kiểu máy đếm (CTR)..…………………………………………….Trang 25 6.3 Mã hóa dòng và RC4………………………………………………....Trang 27 Cấu trúc mã hóa dòng……………………………………………..Trang 27 Thuật toán RC4……………………………………………………Trang 31 6.4 Giới thiệu sách đọc và Website………………………………………Trang 36 6.5. Thuật ngữ then chốt, câu hỏi ôn tập, và vấn đề………………………Trang 37 Thuật ngữ then chốt………………………………………………...Trang 37 Câu hỏi ôn tập………………………………………………………Trang 38 Bài toán……………………………………………………………..Trang 38 “ Tôi gần như quen với tất cả các dạng của viết bảo mật, và chính tôi là tác giả của những nghiên cứu vặt theo chủ đề, trong đó tôi phân tích 160 mã hóa riêng biệt”, theo Holmes. Cuộc phiêu lưu của những người khiêu vũ, Arthur Conan Doyle. Trọng tâm: Mã hóa tổ hợp là kỹ thuật trong đó thuật toán mã háo được dùng nhiều thời gian. Trong giải pháp đầu tiên, bản nguồn được chuyển thành bản mã sử dụng thuật toán mã hóa. Bản mã này sau đó được dùng như đầu vào và thuật toán được áp dụng lại. Tiến trình này được lặp đi lặp lại cho bất kì giai đoạn nào. DES 3 lớp sử dụng 3 giai đoạn trong thuật toán DES, dùng tổng cộng 2 hoặc 3 khóa riêng biệt. Kiểu hoạt động là kỹ thuật cải tiến hiệu quả của giải thuật mã hóa hay tương thích giải thuật cho ứng dụng, như là đưa mã háo theo khối đến chuỗi dữ liệu khối hoặc dữ liệu dòng. 5 kiểu hoạt động được chuẩn hóa cho việc sử dụng mã hóa khối đối xứng như là: kiểu electric codebook, kiểu chuỗi khối mã hóa, kiểu phản hồi mã hóa, kiểu phản hồi đầu ra, và kiểu máy đếm. Mã hóa theo luồng là thuật toán mã hoá đối xứng, trong đó đầu ra mã hóa được tạo ra từng bit một, hoặc từng byte một cho luồng đầu vào văn bản nguồn, được sử dụng rộng rãi như thuật mã hóa là RC4. Chương này tiếp tục cho chúng ta thảo luận về mã hóa đối xứng, bắt đầu với chủ đề mã háo tổ hợp, được sử dụng rộng rãi nhất trong qui trinh mã hóa tổ hợp là DES 3 lớp. Chương tiếp theo đề cập đến chế độ hoạt động của kiểu mã hóa theo khối, chúng ta nhận thấy 3 cách khác nhau để đưa mã hóa theo khối đến bản nguồn với mỗi ưu điểm riêng và ứng dụng cụ thể. Cuối cùng, chương này phát biểu chủ đề mã hóa luồng đối xứng, khác với cách mã hóa khối đối xứng, chúng ta cũng thấy quan trọng nhất như mã hóa, RC4. 6.1. Quá trình mã hóa tổ hợp và DES 3 lớp Căn cứ vào lỗ hổng tiềm năng của DES đối với việc tấn công hàng loạt, đã tạo ra một sự quan tâm đáng kể về việc tìm một giải pháp thay thế. Một phương pháp đó là thiết kế một thuật toán mới hoàn toàn, mà AES là ví dụ tiêu biểu. Một giải pháp khác, sẽ bảo tồn đầu tư hiện có trong phần mềm và thiết bị, đó là sử dụng nhiều mã hoá với DES (Chuẩn mã hoá dữ liệu) và nhiều khóa mã. Chúng ta bắt đầu bằng cách kiểm tra ví dụ đơn giản nhất của giải pháp thứ hai này. Sau đó chúng ta xét về phương pháp chuẩn hóa dữ liệu 3 lớp (3DES) được chấp nhận rộng rãi. DES 2 lớp Hình thức đơn giản nhất của quá trình mã hóa tổ hợp có hai giai đoạn mã hóa và hai khóa (Hình6.1a). Cho một bản nguồn (plaintext) P thô và hai khóa mã hóa K1 và K2, bản mã (ciphertext) C được tạo ra như sau C = E(K2, E(K1, P)) Hình 6.1. Mã hoá tổ hợp Quá trình giải mã đòi hỏi những khóa mã phải được áp dụng theo trật tự ngược lại: P = D (K1, D (K2, C)) Đối với DES thì nhìn bề ngoài, giản đồ này có chứa độ dài của khóa mã 56 x 2 = 112 bits, dẫn đến việc độ dài ghi mã sẽ tăng lên đáng kể. Tuy nhiên ta cũng cần nghiên cứu kĩ lưỡng hơn về thuật toán này. Giảm thiểu đến từng giai đoạn đơn lẻ (Reduction to a Single Stage) Giả sử điều đó là đúng cho DES, với mọi giá trị khóa 56 bits, dựa vào bất kì 2 khóa K1, K2 nào thì cũng sẽ tìm được 1 khóa mã K3 tương ứng. Phương trình 6 – 1: E (K2, E(K1, P)) = E (K3, P) Nếu thuộc trường hợp này thì quá trình mã hóa đôi và thực ra là bất kì giai đoạn nào của quá trình mã hóa tổ hợp bằng DES cũng sẽ trở nên vô ích, bởi kết quả cũng sẽ tương đương với một quá trình mã hóa đơn bằng một khóa mã đơn 56 bit. Xét theo bề ngoài thì Phương trình (6.1) có vẻ không cố định được. Hãy xét đến việc mã hóa bằng DES là một phép ánh xạ các khối kí hiệu 64 bit đến các khối 64 bit. Thực ra, phép ánh xạ có thể xem như một sự hoán vị. Nghĩa là, nếu chúng ta xem xét tất cả 264 khối dữ liệu vào có thể thì mã hóa DES với một khóa mã cụ thể sẽ ánh xạ từng khối vào một khối độc nhất 64 bit. Mặt khác, nếu hai khối dữ liệu vào đã cho được ánh xạ đến cùng một khối dữ liệu xuất thì sau đó quá trình giải mã sẽ không thể khôi phục lại đoạn văn bản gốc. Với 264 dữ liệu vào có thể, thì sẽ có bao nhiêu phép ánh xạ khác nhau để tạo ra một sự hoán vị cho những khối dữ liệu vào? Ta có thể dễ dàng nhận thấy trị số sẽ là: Mặt khác, DES xác định một phép ánh xạ khác nhau cho mỗi mã khóa khác nhau, đối với tổng cộng số cách gán: 256 > 1017 Vì thế, cũng hợp lý khi giả định rằng nếu DES được sử dụng 2 lần bằng 2 khóa mã khác nhau thì sẽ tạo ra một trong số nhiều phép ánh xạ mà không hề được xác định bởi ứng dụng đơn lẻ của DES. Mặc dù có nhiều bằng chứng ủng hộ cho giả thuyết này nhưng mãi đến năm 1992 thì điều này mới được chứng minh [CAMP92]. Tấn công dùng xác suất (Meet-in-the-middle attack) Như vậy, việc sử dụng DES 2 lớp dẫn đến một phép ánh xạ không tương đương với một thuật mã hóa đơn DES. Tuy nhiên có một cách để thâm nhập hệ thống này, một cách mà không lệ thuộc vào bất kì đặc tính riêng biệt nào của DES nhưng lại sẽ hoạt động chống lại bất kì mật mã mã hóa khối. Thuật toán được biết đến như là một dạng tấn công dùng xác suất, lần đầu tiên được mô tả trong [DIF77], dựa trên sự quan sát như sau, nếu ta có C = E(K2, E(K1,P)) Thì (xem biểu đồ 6.1a) X = E(K1, P) = D(K2, P) Dựa vào một cặp đã biết, (P, C), quá trình thâm nhập tiến hành như sau. Đầu tiên, mã hóa P cho tất cả 256 giá trị có thể có của K1. Lưu lại những kết quả này trên 1 bảng biểu, rồi phân loại bảng này dựa trên những giá trị của X. Tiếp đó giải mã C, sử dụng tất cả 256 giá trị có thể của K2. Khi mỗi quá trình giải mã được tạo ra, kiểm tra kết quả với bảng biểu xem có khớp hay không. Nếu khớp thì thử hai khóa mã kết quả với một cặp văn bản rõ – bản mã đã biết mới. Nếu hai khóa đó tạo ra bản mã đúng thì chấp nhận chúng là những khóa mã đúng. Đối với bất kì bản nguồn (plaintext) đã cho P nào, DES 2 lớp cũng có thể tạo ra 264 giá trị bản mã. Thực vậy, DES đôi sử dụng một khóa dài 112 bit, để có được 2112 khóa mã có thể có. Vì thế, trung bình đối với 1 văn bản gốc đã cho P, số khóa mã 112 bit sẽ tạo ra 1 bản mã đã cho C là 2112/ 264 = 248. Như vậy, quá trình nói trên sẽ tạo ra khoảng 248 báo động giả trên cặp đầu tiên (P, C). Một lý luận tương tự cũng chỉ ra rằng bằng mỗi 64 bit bổ sung của văn bản rõ và bản mã đã biết thì tỉ lệ báo động giả được giảm đến 248-64 = 2-16. Nói cách khác, nếu tấn công bằng xác suất được thực hiện trên hai khối của bản ró – bản mã đã biết thì khả năng mà khóa mã đúng sẽ được xác định là 2-16. Kết quả là việc tấn công một bản rõ đã biết sẽ thành công dựa trên DES đôi có kích thước khóa 112 bit, với nỗ lực trên bậc 256, không nhiều hơn bậc 255 đòi hỏi đối với DES đơn. DES ba lớp với 2 khóa mã (Triple DES with Two Keys) Một cách đếm hiển nhiên trong tấn công bằng xác suất là sử dụng ba giai đoạn của quá trình mã hóa với ba khóa khác nhau. Việc này làm tăng hao phí của tấn công văn bản rõ đã biết tới 2112, quá mức cái gọi là thực tiễn hiện tại và xa trong tương lai. Tuy nhiên, nó cũng có nhược điểm của việc đòi hỏi độ dài khóa 56 x 3 = 118 bit là hơi khó điều khiển. Để thay thế, Tuchman đã đề ra phương thức mã hóa ba lần mà chỉ sử dụng có 2 khóa [TUCH79]. Vận hành theo chuỗi mã hóa – giải mã – mã hóa (EDE) (Sơ đồ 6.1b): C = E(K1, D(K2, E(K1, P))) Không hề có ý nghĩa về mặt mật mã nào khi sử dụng quá trình giải mã cho giai đoạn thứ 2. Lợi ích duy nhất của việc đó là cho phép người sử dụng 3DES giải mã dữ liệu đã được mã hóa bởi người sử dụng DES đơn trước đây: C = E(K1, D(K1, E(K1, P))) = E(K1, P) 3DES với 2 khóa mã là phương án thay thế khá thông dụng cho DES và đã được đưa vào sử dụng trong tiêu chuẩn quản lý khóa mã ANS X9.17 và ISO 8732[1] [1] (ANS) American National Standard: Financial Institution Key Management (Wholesale). Cái tên X9.17 có vẻ là một tiêu chuẩn ít người biết đến. Tuy nhiên, một số phương pháp kí thuật được định rõ trong tiêu chuẩn này đã được đưa và sử dụng trong những ứng dụng và tiểu chuẩn khác như chúng ta sẽ thấy rõ xuyên suốt cuốn sách. Hiện tại không có tấn công mang tính thực tiễn nào đến 3DES. Coppersmith [COPP94] nhận thấy rằng hao phí của tìm kiếm khóa bằng bạo lực trên 3DES là ở bậc 2112 (5 x 1033) và ước đoán rằng hao phí của phá mã vi sai tăng theo số mũ vượt quá 1052 so với DES đơn. Nhiều tấn công 3DES được đề ra cũng đáng phải xem xét, dù không mang tính thực tiễn, tăng thêm hứng thú cho những kiểu tấn công đã được xem xét và có thể hình thành nền tảng cho những tấn công thành công hơn trong tương lai. Đề xuất nghiêm túc đầu tiên là từ Merkle và Hellman [MERK81]. Đề án của họ liên quan đến việc tìm kiếm những giá trị văn bản rõ mà tạo ra giá trị tức thời đầu tiên A = 0 (Hình 6.1b) rồi sử dụng trong tấn công xác suất để xác định ra 2 khóa. Cấp độ nỗ lực là 256, nhưng cách thức đòi hỏi 256 cặp bản nguồn – bản mã được chọn, một số lượng mà người nắm giữ khóa mã không thể cung cấp được. Một cách tấn công bản nguồn đã biết được phác thảo trong [VANO90]. Kế hoạch của họ bao gồm tìm giá trị bản nguồn (plaintext) để tạo ra giá trị trung gian đầu tiên A = 0 ( Hình 6.1 b ) rồi sử dụng tấn công dùng xác suất tấn công để xác định hai khóa. Mức độ nỗ lực là 256, nhưng kỹ thuật đòi hỏi 256 cho việc chọn cặp plaintext ( bản nguồn) - ciphertext (bản mã hoá) , một số không để được cung cấp bởi người nắm giữ khóa. Việc tấn công một bản nguồn đã biết đã được tóm lược trong [VANO90]. Cách thức này là phương thức cải tiến phương thức tiếp cận văn bản rõ đã chọn nhưng đòi hỏi nhiều nỗ lực hơn. Loại tấn công này dựa trên sự quan sát nếu chúng ta biết A và C (Hình 6.1b) thì vấn đề giảm bớt đi cho một cuộc tấn công vào DES 2 lớp. Tất nhiên, kẻ tấn công không biết A, thậm chí P và C được biết, văn bản nguồn vẫn được an toàn khi chúng chưa biết rõ 2 khóa. Tuy nhiên, kẻ tấn công có thể chọn giá trị tiềm năng của rồi cố gắng tìm cặp ( P, C ) mà tạo ra A. Kẻ tấn công thu được như sau: 1. Đạt được cặp n ( P, C ). Đây là văn bản gốc đã biết. Đặt những bảng này ( Bảng 1 ) sắp xếp theo giá trị của P ( Hình 6.2 b ). Hình 6.2. Biết - Tấn công vào bản nguồn đã biết trên DES 3 lớp 2. Chọn giá trị tùy ý cho A, và tạo một bảng thứ 2 ( Hình 6.2 c ) với khoản mục được định nghĩa trong trang sau. Đối với mỗi khóa trong 256 khóa then chốt K1 = i, ước tính giá trị plaintext P1 tạo ra a: Pi = D(i, a) Với mỗi pi được đánh dấu trong mục của bảng 1(Table 1), tạo khoản mục trong bảng 2 bao gồm giá trị K1và giá trị của B được tạo ra cho cặp ( P, C ) từ bảng 1, giả sử như giá trị của K1 : B = D ( i, C ) Bước cuối cùng, sắp xếp Bảng 2 dựa theo giá trị của B. 3. Hiện tại chúng ta có một số giá trị ứng cử viên K1 trong Bảng 2 và ở vị trí để tìm kiếm giá trị của K2. Đối với mỗi một trong 256 khoá then chốt K2 = j, ước tính giá trị trung gian thứ 2 cho giá trị mà chúng ta đã chọn của a: Bj = D ( j, a ) Ở mỗi bước, tìm Bj trong Bảng 2. Nếu có trùng khớp, thì khoá i tương ứng từ Bảng 2 cộng giá trị này của j là ứng của giá trị cho khoá chưa biết rõ (K1, K2 ). Tại sao? Bởi vì chúng ta đã tìm được cặpkhóa ( i, j ) tạo ra cặp ( P, C ) đã biết ( Hình 6.2a ). 4. Kiểm tra mỗi ứng cử viên cặp khoá ( i, j ) trên một vài cặp văn bản gốc - văn bản mã hoá khác. Nếu cặp khoá tạo ra văn bản mã mong muốn, nhiệm vụ được hoàn thành. Nếu không thành công, lặp lại từ bước 1với giá trị mới của a. Giả sử cho ( P, C ) đã biết, khả năng có thể xảy ra cho việc chọn giá trị duy nhất dẫn đến thành công là 1 / 264. Vì vậy, dựa vào cặp n ( P, C ), khả năng có thể xảy ra thành công cho môt giá trị đơn được chọn là n / 264. Xác suất một kết quả cơ bản tạo ra từ lý thuyết là con số mong đợi của draws yêu cầu phải rút một quả bóng màu đỏ ra khỏi thùng chứa n quả bóng đỏ và N n quả bóng xanh là ( N + 1 ) / ( n + 1 ) nếu những quả bóng không được thay thế. Vậy là con số mong đợi của giá trị cho việc đó là phải thử với một số lượng lớn n. Vì vậy, thời gian mong đợi thực hiện của cuộc tấn công là khoảng : DES 3 lớp với 3 khóa (Triple DES with Three Keys) Mặc dù các cuộc tấn công chỉ mô tả xuất hiện không thực tế, bất kỳ ai sử dụng hai khoá - 3DES then chốt có thể cảm thấy một vài sự lo âu. Vì vậy,nhiều nhà nghiên cứu ngày nay cảm thấy ba khoá - 3DES là giải pháp thay thế được ưa thích hơn ( chẳng hạn như,[ KALI96a ] ). Ba khoá - 3DES có chiều dài khoá nổi bật của 168 bit và được định nghĩa là như sau : C = E (K3, D (K2, E (K1, P ) ) ) Ngược lại tính tương thích với DES được cung cấp bởi đặt K3 = K2 hoặc K1 = K2. Một số ứng dụng Internet cơ bản đã chấp nhận ba khoá- 3DES, bao gồm PGP và S / Dùng điệu bộ, cả hai được thảo luận trong Chương 15. 6.2 Chế độ hoạt động của kiểu mã hóa theo khối Thuật toán mã hoá theo khối là một khối cấu trúc cơ bản cung cấp bảo mật dữ liệu. Mã hóa khối được áp dụng trong nhiều trường hợp, bốn " chế độ hoạt động " đã được định nghĩa bởi NIST ( FIPS 81 ). Về bản chất, chế độ hoạt động là kỹ thuật để cải tiến hiệu quả của thuật toán mã hoá hay thích ứng thuật toán cho ứng dụng, như là đưa mã hoá khối vào chuỗi dữ liệu khối hay luồng dữ liệu. Bốn chế độ này hướng đến để bao gồm hầu như tất cả ứng dụng khả thi của việc mã hóa để mà mã hóa khối có thể được dùng. Khi có những yêu cầu và ứng dụng mới, NIST mở rộng danh sách chế độ yêu cầu lên năm trong ấn phẩm đặc biệt 800 - 38A. Những chế độ này là nhằm để dùng bất kì mã hóa khối đối xứng nào, bao gồm AES và DES 3 lớp. Chế độ được tóm tắt trong bảng 6.1 và mô tả ngắn gọn trong phần còn lại của phần này. Bảng 6.1. Chế độ hoạt động của kiểu mã hóa theo khối Chế độ Mô tả Ứng dụng tiêu biểu Electronic Codebook (ECB) Mỗi khối của 64 bit văn bản gốc được mã hoá độc lập dùng khóa giống nhau. Những giá trị đơn của việc truyền tải bảo mật ( e. g., khóa mã hóa ) Cipher Block Chaining (CBC) Đầu vào cho thuật toán mã hóa được XOR 64 bit kế tiếp của văn bản gốc và 64 bit có trước của văn bản mã hoá. Truyền khối hướng truyền đa năng Tiến trình thẩm định quyền Cipher Feedback (CFB) Đầu vào được xử lí j bit đồng thời.Văn bản mã hoá có trước được dùng như đầu vào cho thuật toán mã hóa để tạo đầu ra ngẫu nhiên, được XOR với văn bản gốc để tạo ra đơn vị kế tiếp của văn bản mã hoá. Truyền theo dòng có hướng đa năng Tiến trình thẩm định quyền Output Feedback (OFB) Giống với CFB, ngoại trừ đầu vào cho thuật toán mã hóa là đầu ra DES có trước (Chuẩn mã hoá dữ liệu). Truyền theo hướng luồng trên kênh có nhiễu ( ví dụ: liên lạc vệ tinh) Counter (CTR) Mỗi khối của văn bản gốc đươc XOR với bộ đếm mã hoá. Bộ đếm được tăng đến khối tiếp theo. Truyền theo hướng khối truyền đa năng Có ích cho yêu cầu tốc độ cao Kiểu Electronic Codebook Kiểu đơn giản nhất là kiểu electronic codebook ( ECB ), trong đó văn bản gốc được xử lý từng khối một và mỗi khối được mã hóa bằng khóa giống nhau ( Hình 6.3 ). Thuật ngữ codebook được sử dụng vì, 1 khóa được đưa ra, có 1 văn bản mã duy nhất cho mỗi khối b - bit của văn bản gốc. Do đó, chúng ta có thể tưởng tượng 1 codebook khổng lồ trong đó có đầu vào cho mẫu văn bản gốc b - bit hợp lý mô tả văn bản mã hoá tương ứng của nó. Hình 6.3. Kiểu Electronic Codebook ( ECB ) Ví dụ: 1 thông điệp dài hơn b bit, thủ tục thì đơn giản để chia thông điệp thành khối b- bit, bổ sung (padding) khối cuối cùng nếu có. Việc giải mã được thực hiện trên từng khối, luôn dùng 1 khóa chung. Ở hình 6.3, văn bản gốc (được bổ sung khi cần ) gồm 1 dãy các khối b- bit, , ,., ; tương ứng dãy các khối văn bản mã hoá là , ,., . Phương pháp ECB là ý tưởng dùng cho một lượng dữ liệu ngắn, chẳng hạn 1 khóa mã hóa. Vì vậy, nếu bạn muốn truyền khóa DES an toàn, ECB là kiểu thích hợp để dùng. Đặc trưng quan trọng nhất của ECB là khối b- bit giống nhau của văn bản gốc, nếu nó xuất hiện hơn một lần trong thông điệp, luôn tạo ra văn bản mã giống nhau. Ví dụ: Những thông báo dài, kiểu ECB có lẽ không bảo mật. Nếu thông điệp có cấu trúc cao, sẽ có lợi cho người giải mã khai thác qui luật này. Chẳng hạn như, nếu thông điệp luôn bắt đầu với trường chắc chắn được xác định trước, thì người giải mã sẽ có 1 cặp văn bản gốc - văn bản mã để nhận dạng. Nếu 1thông điệp có những yếu tố lặp lại, với sự lặp lại nhiều khối b bit, thì các nhà phân tích có thể xác định được những yếu tố này. Điều này có thể trợ giúp trong phân tích hay tạo cơ hội cho việc thay thế hoặc sắp xếp lại khối. Kiểu mã hóa chuỗi khối (CBC) Để khắc phục những khiếm khuyết bảo mật của ECB, chúng tôi giới thiệu kỹ thuật trong đó khối văn bản gốc giống nhau, nếu lặp lại, tạo ra khối văn bản mã khác nhau. Một cách đơn giản để đáp ứng yêu cầu này là kiểu mã hóa chuỗi khối (CBC) ( Hình 6.4 ). Trong kiểu này, đầu vào thuật toán mã hóa là XOR các khối văn bản gốc hiện tại và khối văn bản mã trước đó; khóa giống nhau được dùng cho mỗi khối. Trong thực tế, chúng ta có thể liên kết chuỗi khối văn bản gốc với nhau. Đầu vào hàm mã hoá cho mỗi khối văn bản gốc sinh ra không có mối liên hệ cố định với khối văn bản mã . Do đó, mẫu lặp lại của b bit không được lộ ra. Hình 6.4. Kiểu mã hóa chuỗi khối ( CBC ) Đối với việc giải mã, mỗi khối mã đã được giải thông qua thuật toán giải mã. Kết quả được XOR với khối văn bản mã có trước để tạo ra khối văn bản gốc. Để xem công việc này, chúng ta có thể viết Thì Để tạo ra khối đầu tiên của văn bản mã, vector khởi tạo ( IV ) được XOR với khối đầu tiên của văn bản nguồn. Trong việc giải mã, IV XOR với đầu ra của thuật toán giải mã để phục hồi khối đầu tiên của văn bản nguồn. IV là khối dữ liệu có kích thước giống như khối mã. Vector khởi tạo (IV) đều nhằm tới cả bên gửi và bên nhận nhưng không để kẻ thứ 3 đoán được. Để tính an toàn cao, Vector khởi tạo (IV) nên được bảo vệ khỏi những thay đổi trái phép. Người ta làm điều này bằng việc sử dụng mã hóa ECB để gửi cho vector khởi tạo (IV) . Một lý do cần bảo vệ vector khởi tạo (IV) là: Nếu đối thủ có thể qua mắt (fool) bên nhận để dùng giá trị khác cho IV, thì đối thủ có thể đảo bit được chọn trong khối đầu tiên của văn bản nguồn. Để thấy được điều này, xem ví dụ dưới đây: Bây giờ sử dụng kí hiệu X [ i ] thể hiện i bit của lượng b-bit X. Thì Sau đó, dùng thuộc tính của XOR, chúng ta có thể thấy Ở đây kí hiệu đầu tiên thể hiện bit bổ sung. Điều này nghĩa là nếu đối thủ có thể dự đoán được thay đổi bit ở IV, bit tương ứng của giá trị nhận của P1 sẽ thay đổi theo. Cho những tấn công khác có thể dựa trên kiến thức về IV, xem [ VOYD83 ]. Tóm lại, vì cơ chế chuỗi của CBC, nó là kiểu thích hợp cho mã hoá chiều dài thông điệp lớn hơn b bit. Ngoài sử dụng của nó để đạt được bảo mật, chế độ CBC có thể được dùng để xác thực. Được mô tả trong phần 2. Kiểu phản hồi mã hóa (Cipher Feedback Mode) Qui trình DES chủ yếu là kỹ thuật mã hoá theo khối, sử dụng khối b- bit. Tuy nhiên, có thể chuyển DES thành mã hóa theo luồng, sử dụng như phản hồi mã hóa ( CFB) hoặc kiểu phản hồi đầu ra. Mã hóa theo luồng loại bỏ nhu cầu thêm thông điệp để được số nguyên của khối. Nó cũng có thể thực thi theo thời gian thực. Vì vậy, nếu luồng ký tự được truyền, mỗi kí tự có thể được mã hoá và truyền ngay lập tức sử dụng mã hóa theo luồng hướng kí tự. Một tính chất đáng có của mã hóa theo luồng là bản mã hoá có chiều dài bằng văn bản nguồn. Vì vậy, nếu kí tự 8 bit đang được truyền, mỗi kí tự nên được mã hoá để tạo ra đầu ra văn bản mã 8 bit. Nếu nhiều hơn 8 bit được tạo ra, dung lượng truyền bị phí phạm. Hình 6.5 mô tả qui trình CFB. Ở hình vẽ, đơn vị truyền là s bit ; giá trị chung là s = 8. Cũng như với CBC, đơn vị của bản nguồn được mắc xích với nhau, sao cho văn bản mã hoá của bất kỳ đơn vị văn bản nguồn là 1 chức năng của tất cả văn bản nguồn trước. Trong trường hợp này, không những đơn vị của b bit, văn bản nguồn được chia thành đoạn ( segments) của s bit. Hình 6.5. Kiểu phản hồi mã hóa s-bit ( CFB) Trước tiên, xét việc mã hoá. Đầu vào đến hàm mã hoá là thanh ghi dịch b- bit mà trước tiên khởi tạo 1 số vector khởi tạo (IV ). Cực trái ( quan trọng nhất ) s bit của đầu ra của hàm mã hoá được XOR với phân đoạn đầu tiên của văn bản gốc để tạo ra đơn vị đầu tiên của bản mã , sau đó được truyền. Ngoài ra, nội dung của thanh ghi dịch chuyển được dịch trái s bit và được đặt vào trong cực phải ( ít đáng kể nhất ) s bit của thanh ghi dịch. Tiến trình này tiếp tục cho đến khi tất cả đơn vị văn bản nguồn đã được mã hoá. Đối với việc giải mã, qui trình tương tự được sử dụng, ngoại trừ đơn vị bản mã được nhận thì XOR với đầu ra của hàm mã hoá để tạo ra đơn vị văn bản nguồn. Lưu ý rằng đó là hàm mã hoá được sử dụng, không phải là hàm giải mã. Điều này dễ dàng được giải thích. Để (X ) được định nghĩa là s bit quan trọng nhất của X. Thì Hơn nữa Lập luận tương tự cho các bước kế tiếp trong tiến trình. Kiểu phản hồi đầu ra (Output Feedback Mode) Kiểu phản hồi đầu ra (OFB ) tương tự như trong cấu trúc của CFB, như minh họa trong Hình 6.6. Khi có thể xem, đó là đầu ra của hàm mã hoá được phản hồi đến thanh ghi dịch trong OFB, trong khi ở CFB đơn vị bản mã được phản hồi đến thanh ghi dịch. Hình 6.6. Kiểu phản hồi đầu ra s- bit (OFB) Một thuận lợi của phương pháp OFB là bit lỗi trong việc truyền tải không truyền đi. Chẳng hạn như, nếu lỗi bit xảy ra trong chỉ giá trị phục hồi của bị ảnh hưởng ; đơn vị văn bản nguồn tiếp theo không bị hỏng. Với CFB, cũng dùng như đầu vào thanh ghi dịch và vì vậy gây thêm sai lệch luồng. Điều bất lợi của OFB đó là dễ bị tấn công đối với 1 cuộc tấn công thay đổi luồng thông điệp hơn là CFB. Nhận thấy rằng việc bổ sung 1 bit trong bản mã thì cũng bổ sung bit tương ứng trong bản nguồn được phục hồi. Vì vậy, có thể tạo ra những thay đổi điều khiển trong bản nguồn được khôi phục. Điều này có thể tạo điều kiện cho đối thủ, bằng cách tạo ra những thay đổi cần thiết đến một đoạn tổng kiểm tra của thông điệp cũng như đoạn dữ liệu, để biến đổi bản mã bằng cách thì mã sửa lỗi sẽ không phát hiện ra. Để bàn luận nhiều hơn, xem [VOYD83] Kiểu máy đếm (Counter Mode) Mặc dù quan tâm kiểu máy đếm (CTR) tăng lên gần đây, với các ứng dụng cho máy ATM (kiểu chuyển giao không đồng bộ) bảo mật mạng và IPSec (bảo mật IP ), kiểu này đã được đề xuất sớm (…, [DIFF79]). Hình 6.7 miêu tả phương pháp CTR. Một máy đếm, bằng kích thước khối văn bản nguồn được sử dụng. Yêu cầu duy nhất được thông báo ở SP 800-38 A là giá trị máy đếm đó phải khác với mỗi khối văn bản nguồn mà đã được mã hóa. Điển hình, máy đếm được khởi tạo tới giá trị nào đó và sau đó được tăng lên 1 cho mỗi khối kế tiếp ( modulo với b là kích thước khối). Đối với mã hóa, máy đếm được mã hóa và sau đó XOR với khối văn bản nguồn để tạo ra khối văn bản mã; không có sự móc nối. Đối với giải mã, cùng 1 chuỗi những giá trị máy đếm được sử dụng, với mỗi máy đếm được mã hóa XOR với khối văn bản mã để khôi phục khối văn bản nguồn tương ứng. Hình 6.7.Kiểu Máy đếm (CTR) [LIPM00] liệt kê những ưu điểm của kiểu CTR: Hiệu quả phần cứng: Không giống như 3 kiểu mắc xích, sự mã hóa (hay sự giải mã ) trong kiểu CTR. có thể được làm song song trên nhiều khối (của) văn bản nguồn hay văn bản mã. Với những kiểu mắc xích này, giải thuật phải hoàn thành tính toán trên một khối trước khi bắt đầu trên khối tiếp theo. Điều này. giới hạn lưu lượng cực đại của giải thuật tới hàm thuận nghịch của thời gian cho một thực hiện của khối mã hóa hay giải mã . Trong kiểu CTR, lưu lượng thì chỉ hạn chế bởi số lượng của tính song song mà được đạt được. Hiệu quả phần mềm: Tương tự, do những cơ hội cho việc thực hiện song song trong kiểu CTR, bộ xử lý hỗ trợ tính năng song song, như dây chuyền linh hoạt,gửi nhiều lệnh đi mỗi chu kỳ đồng hồ, nhiều thanh ghi, và lệnh SIMD, có thể sử dụng 1 cách hiệu quả. Tiền xử lí: Việc thực thi thuật toán mã hóa cơ bản không tùy thuộc van đầu vào của bản nguồn hay bản mã. Do đó, nếu bộ nhớ sẵn sàng và bảo mật được duy trì, tiền xử lí có thể được dùng để chuẩn bị đầu ra của hộp mã hóa gớp phần vào hàm XOR trong Hình 6.7. Khi đầu vào của bản nguồn hay bản mã hóa được hiện diện, thì việc tính toán duy nhất là một loạt XOR.Chiến lược như vậy cải tiến được dung lượng. Truy xuất ngẫu nhiên: Khối i của bản nguồn hay bản mã có thể được xử lý trong truy xuất ngẫu nhiên. Với kiểu mắc xích, khối không thể được tính toán cho đến khối i- 1 được tính toán. Có thể có những ứng dụng trong đó một bản mã được lưu trữ và nó được đòi hỏi để giải mã chỉ một khối; trong ứng dụng như vậy, tính năng truy xuất ngẫu nhiên thì hấp dẫn. Bảo mật có thể chứng minh: CTR ít nhất cũng bảo mật như những kiểu khác được thảo luận trong phần này. Tính đơn giản: Không giống như kiểu ECB và CBC, CTR yêu cầu chỉ sự thực thi của giải thuật mã hóa và không phải giải mã giải thuật. Những vấn đề này đa số khi sự giải mã giải thuật khác đáng kể so với giải thuật mã hóa, như nó làm cho AES. Ngoài ra, khóa giải mã không cần được thực thi. 6.3. Mã hóa dòng và RC4 Trong phần này chúng ta sẽ xem xét loại mã dòng đối xứng có lẽ là thông dụng nhất, RC4. Chúng ta sẽ bắt đầu khái quát chung về cấu trúc mã hóa dòng rồi nghiên cứu về RC4. Cấu trúc mã hóa dòng Một mã dòng điển hình sẽ mã hóa bản rõ mỗi lần được 1 byte mặc dù mã dòng có thể được thiết kế để hoạt động mỗi lần trên 1 bit hay trên những đơn vị lớn hơn 1 byte. Sơ đồ 6.8 là biểu đồ biểu diễn cấu trúc mã hóa dòng. Trong cấu trúc này, một khóa được đưa vào một bộ sinh chuỗi bit ngẫu nhiên giả mà tạo ra được một dòng những bộ đếm 8 bit bề ngoài có vẻ như ngẫu nhiên. Chúng ta sẽ bàn luận về bộ sinh số chuỗi ngẫu nhiên giả trong chương 7. Còn bây giờ, chúng ta đơn giản nói rằng một dòng chuỗi ngẫu nhiên giả thì không thể đoán trước được nếu không biết về khóa vào. Dữ liệu ra của bộ sinh, được gọi là dòng khóa, kết hợp mỗi lần 1 byte với dòng plaintext sử dụng phép toán đảo bit loại trừ OR (XOR). Ví dụ, nếu byte tiếp theo được tạo ra bởi bộ sinh là 01101100 còn byte plaintext kế tiếp là 11001100 thì dẫn đến byte bản mã sẽ là: Quá trình giải mã đòi hỏi phải sử dụng cùng một chuỗi ngẫu nhiên giả. Hình 6.8. Biểu đồ Mật mã luồng ( Mục này được hiển thị trên trang 189 trong bản in ) Mã hóa dòng cũng tương tự như mật mã khóa sử dụng 1 lần (one-time pad) được nói đến ở chương 2. Khác nhau ở chỗ là one-time pad sử dụng dòng số ngẫu nhiên có thực trong khi mã hóa dòng sử dụng dòng số theo chuỗi ngẫu nhiên giả. [KUMA97] liệt kê những chú ý quan trọng về thiết kế đối với mã hóa dòng như sau: Chuỗi mã hóa nên có chu kì lớn. Bộ sinh chuỗi số ngẫu nhiên giả sử dụng cấu trúc tạo ra dòng bit tất định mà sau cũng cũng sẽ lặp lại. Chu kì lặp lại càng dài thì càng khó phân tích giải mã. Đây cũng là lưu ý cần thiết khi bàn về mã Vigenere, đó là từ khóa càng dài thì càng khó giải mã. Dòng khóa nên xấp xỉ càng gần với những tính chất của một dòng số ngẫu nhiên đích thực càng tốt. Ví dụ, nên có một số xấp xỉ bằng 1s và 0s. Nếu dòng khóa được xem như là 1 dòng bytes thì tất cả 256 giá trị byte có thể nên thường xuyên xuất hiện xấp xỉ tương đương. Dòng khóa xuất hiện càng ngẫu nhiên thì càng ngẫu nhiên hóa bản mã, làm cho việc giải mã càng khó hơn. Chú ý ở hình 6.8, đầu ra của bộ phát chuỗi số ngẫu nhiên giả phụ thuộc vào giá trị của khóa vào. Để bảo vệ chống lại những tấn công dùng bạo lực thì khóa cần phải đủ dài. Những chú ý giống vậy khi áp dụng cho mã khối cũng có tác dụng ở đây. Như vậy, với công nghệ hiện tại thì độ dài khóa ít nhất 128 bit là thỏa đáng. Với bộ sinh chuỗi số ngẫu nhiên giả được thiết kế hợp lí, một mã hóa dòng có thể an toàn ngang với mã khối với độ dài khóa so sánh được. Ưu điểm chính của 1 mã hóa dòng là những mã dòng hầu như lúc nào cũng nhanh hơn và sử dụng ít mã số hơn nhiều so với mã khối. Ví dụ trong phần này, RC4 có được thực thi chỉ bằng một vài dòng mật mã. Bảng 6.2 sử dụng dữ liệu từ [RESC01] so sánh thời gian thực hiện của RC4 với ba mã khối đối xứng nổi tiếng. Ưu điểm của mã khối là có thể sử dụng lại khóa. Tuy nhiên, nếu 2 bản gốc được mã hóa với cùng 1 khóa dùng mã dòng thì việc phân tích giải mã thường khá đơn giản [DAWS96]. Nếu 2 dòng bản mã được cùng sử dụng phép XOR thì kế quả là phép XOR của văn bản rõ gốc. Nếu bản rõ gồm những chuỗi văn bản, số thẻ tín dụng hay những dòng byte với tính chất đã biết thì việc phân tích giải mã có khả năng thành công. Hình 6.2.So sánh tốc độ của thuật toán mã cân đối trên Pentium II Cipher Key Length Speed (Mbps) DES 56 9 3DES 168 3 RC2 variable 0.9 RC4 variable 45 Đối với những chương trình ứng dụng đòi hỏi việc hóa mã/ giải mã của một dòng dữ liệu như trên kênh thông tin dữ liệu hay một link trình duyệt/ web, thì mã hóa dòng có lẽ là cách thay thế tốt hơn cả, Đối với những ứng dụng xử lý những khối dữ liệu, như chuyển tải tài liệu, e-mail và cơ sở dữ liệu thì có lẽ mã khối thích hợp hơn. Tuy nhiên, loại mã nào cũng có thể sử dụng hầu hết trong các ứng dụng. Thuật toán RC4 RC4 là loại mã dòng được Ron Rivest thiết kế cho RSA Security. RC4 là mã dòng với độ dài khóa không cố định cùng những thao tác định hướng byte. Thuật toán dựa trên cách sử dụng phép hoán vị ngẫu nhiên. Phân tích chỉ ra rằng chu kì của mã có khả năng lớn hơn 10100 [ROBS95a]. Mỗi byte dữ liệu ra cần 8 đến 16 thao tác máy, và mã có thể vận hành rất nhanh trong phần mềm. RC4 được sử dụng trong những tiêu chuẩn SSL/ TLS (Lớp ổ cắm an toàn/ An toàn lớp truyền dẫn) được xác định cho liên lạc giữa những trình duyệt web và máy chủ. RC4 cũng được dùng trong giao thức WEP (Wired Equivalent Privacy) và giao thức mới hơn là WiFi Protected Access (WPA), một phần của tiêu chuẩn IEEE 802.11wireless LAN. RSA Security giữ RC4 như là một bí mật thương nghiệp. Vào tháng 9 năm 1994, thuật toán RC4 bị gửi nặc danh trên Internet trên danh sách Cypherpunks anonymous remailers. Thuật toán RC4 cực kì đơn giản và khá dễ giải thích. Một khóa có độ dài không cố định từ 1 đến 256 bytes (8 đến 2048 bits) được dùng để khởi tạo một vector trạng thái S với phần tử S[0], S[1],…S[255]. S luôn luôn chứa phép hoán dụ của tất cả những số 8 bit từ 0 đến 255. Đối với việc mã hóa và giải mã, 1 byte k (xem sơ đồ 6.8) được phát ra từ S bằng cách chọn lựa 1 trong 255 lối vào trong một kiểu hệ thống. Khi mỗi giá trị k được tạo ra, lối đến S lại một lần nữa được hoán vị. Khởi tạo S (Initialization of S): Để bắt đầu, mọi đầu vào của S được gán những giá trị đều nhau từ 0 đến 255 theo thứ tự tăng dần là S[0] = 0, S[1] = 1,…, S[255] = 255. Một vector tạm thời là T cũng được tạo ra, Nếu độ dài của khóa K là 256 bytes thì K được chuyển thành T. Nếu chiều dài của khóa K là 256 bytes, thì K được truyền đến T. Mặt khác, với chiều dài khóa của byte keylen, phần tử keylen đầu tiên của T được sao chép từ K rồi K là lặp lại nhiều lần để làm đầy T (nếu cần thiết). Những thao tác sơ bộ này có thể tóm tắt như sau : / * Sự khởi tạo * / for i = 0 to 255 do S[i] = i; T[i] = K[i mod keylen]; Kế đến, chúng ta dùng T để tạo ra phép hoán vị ban đầu của S. Điều này bao gồm với việc bắt đầu với S [ 0 ] và cho đến S [ 255 ], và, với mỗi S[i], hoán vị S[i] với những byte khác trong S theo kế hoạch đọc bởi T[i]: / * Phép hoán vị Ban đầu của S * / j = 0; for i = 0 to 255 do j = (j + S[i] + T[i]) mod 256; Swap (S[i], S[j]); Vì thao tác duy nhất trên S là hoán vị,khả năng tác động duy nhất là phép hoán vị. S còn chứa tất cả số từ 0 đến 255. Sự phát sinh luồng (Stream Generation) Véc tơ S được khởi tạo chỉ một lần duy nhất, khóa đầu vào không được sử dụng. Sự phát sinh luồng bao gồm chu kì đi xuyên suốt qua tất cả phần tử của S [ i ], và, với mỗi S [ i], hoán vị S [ i] với một byte khác trong S theo kế hoạch đọc bằng cấu hình hiện hành của S. Khi đạt đến S [ 255 ], quy trình tiếp tục, bắt đầu lại lại S [ 0 ] : /* Sự phát sinh luồng */ i, j = 0; while (true) i = (i + 1) mod 256; j = (j + S[i]) mod 256; Swap (S[i], S[j]); t = (S[i] + S[j]) mod 256; k = S[t]; Để mã hoá, XOR giá trị k với byte tiếp theo của bản nguồn(plaintext. Để giải mật mã, XOR giá trị k với byte tiếp theo của văn bản mã. Hình 6.9 Minh họa nguyên lý RC4 . Hình 6.9. RC4 ( Mục này được hiển thị trên trang 193 trong bản in ) Thế mạnh của RC4 (Strength of RC4) Một số bài báo đã phát hành có phân tích về phương pháp tấn công RC4 [ chẳng hạn như, [ KNUD98 ],[ MIST98 ], [ FLUH00 ], [ MANT01 ] ). Không một bài báo nào trong đó có đề cập đến việc thực hành chống lại RC4 với độ dài khóa hợp lý, như là 128 bit. Nhiều vấn đề nghiêm trọng hơn được báo cáo trong [FLUH01]. Tác giả chứng minh rằng giao thức WEP dự kiến để cung cấp bảo mật trên mạng LAN không dây 802.11, dễ bị lừa dối vì phương pháp tấn công cụ thể. Về bản chất, vấn đề không phải là ở bản thân RC4 nhưng các khoá được tạo ra dùng như đầu vào cho RC4. Vấn đề cụ thể này hầu như là không liên quan đến ứng dụng khác sử dụng RC4 và có thể được khắc phục trong WEP bằng cách thay đổi cách mà khoá được tạo ra. Vấn đề này chỉ ra sự khó khăn trong việc thiết kế một hệ thống bảo mật bao gồm cả chức năng mã hoá lẫn giao thức tạo ra sử dụng chúng. 6.4 Giới thiệu sách đọc và Website [SCHN96] cung cấp rất nhiều chi tiết về mật mã khối đối xứng cũng như một số thuật toán mã hóa theo luồng. [ROBS95b] là một xét nghiệm thú vị và đáng giá của các vấn đề thiết kế liên quan đến khối mã hóa đối xứng. [KUMA97] chứa đựng một thảo luận tuyệt vời và dài những nguyên lý thiết kế mã hóa theo luồng.Một sự luận bàn khác, hoàn toàn toán học, [RUEP92]. [ROBS95a] là một kỳ thi thú vị và đáng giá của nhiều vấn đề thiết kế liên quan đến những mã hóa theo luồng.. KUMA97. KUMA97 Kumar, I. Cryptology. Laguna Hills, CA: Aegean Park Press, 1997. ROBS95a Robshaw, M. Stream Ciphers. RSA Laboratories Technical Report TR-701, July 1995. ROBS95b Robshaw, M. Block Ciphers. RSA Laboratories Technical Report TR-601, August 1995. RUEP92 Rueppel, T. "Stream Ciphers." In [SIMM92]. SCHN96 Schneier, B. Applied Cryptography. New York: Wiley, 1996. SIMM92 Simmons, G., ed. Contemporary Cryptology: The Science of Information Integrity. Piscataway, NJ: IEEE Press, 1992. Giới thiệu website Những phương pháp làm việc của mã hóa theo khối: trang NIST với thông tin đầy đủ trên NIST- chấp thuận phương thức hoạt động. 6.5. Thuật ngữ then chốt, câu hỏi ôn tập, và vấn đề Thuật ngữ then chốt Chế độ hoạt động của kiểu mã hóa theo khối Kiểu chuỗi khối mã hóa (CBC) Kiểu phản hồi mã hóa (CFB) Tấn công dùng xác suất Kiểu máy đếm (CTR) Kiểu sách mã hóa điện (ECB) Kiểu phản hồi đầu ra (OFB) RC4 Mã hóa theo luồng DES 3 lớp (3DES) Câu hỏi ôn tập 6.1 Mã hóa 3 lớp là gì? 6.2 Tấn công dùng xác suất là gì? 6.3 Có bao nhiêu khóa được dùng trong mã hóa 3 lớp? 6.4 Tại sao phần giữa của 3DES giải mã hơn là mã hóa? 6.5 Liệt kê những lưu ý thiết kế quan trọng cho mã hóa theo luồng. 6.6 Tại sao không thể sử dụng lại khóa mã hóa theo luồng? 6.7 Những thao tác cổ được dùng trong RC4? 6.8 Tại sao chế độ hoạt động của kiểu mã hóa theo khối chỉ sử dụng việc mã hóa trong khi những kiểu khác lại sử dụng cả mã hóa và giải mã? Bài toán 6.1 Bạn muốn xây dựng 1 thiết bị phần cứng để thực hiện việc mã hóa khối trong kiểu chuỗi khối giải mã (CBC) dùng giải thuật mạnh hơn DES. 3DES là phương pháp tối ưu. Hình 6.10 chỉ 2 khả năng, cả 2 đi từ định nghĩa của CBC. Bạn sẽ chọn phương pháp nào trong 2: a. Bảo mật? b. Hiệu năng? Hình 6.10. Việc sử dụng DES lặp 3 lần trong kiểu CBC (b) CBC lặp 3 lần. 6.2 Bạn có thể đề xuất cải tiến bảo mật hoặc tùy chọn trong hình 6.10 sử dụng chỉ chip DES 3 lần và một số hàm XOR? Bạn chỉ được dùng 2 khóa 6.3 Kiểu tấn công Merkle-Hellman trên 3DES bắt đầu bằng việc giả sử A= 0( Hình 6.1 b ). Sau đó, cho khả năng giá trị văn bản nguốc P tạo ra A= 0 được xác định. Mô tả phần còn lại thuật toán. 6.4 Với kiểu ECB của DES ), nếu có lỗi trong khối của bản mã được truyền, chỉ khối văn bản nguồn tương ứng bị ảnh hưởng. Tuy nhiên, trong kiểu CBC, lỗi trong được truyền( Hình 6.4 ) rõ ràng hỏng và . a. Bất kì khóa nào gần cũng bị ảnh hưởng? b. Giả dụ như có lỗi bit trong nguồn phiên bản . Vậy có bao nhiêu khối văn bản mã có lỗi truyền? Hiệu ứng của bên nhận là gì? 6.5 Nếu lỗi bit xảy ra trong việc truyền của kí tự bản nguồn kiểu CFB 8 bit, lỗi truyền xảy ra bao xa? 6.6 Điền vào phần còn trống trong bảng sau: KIỂU Mà HÓA GIẢI Mà ECB Cj=E( K, Pj)=1,…,N Pj=D( K, Cj)=1,…,N CBC C1=E(K, [P1 IV]) Cj=E(K, [Pj Cj-1])j=2,…,N P1=D(K, C1 ) IV Pj=E(K, Cj ) Cj-1j=2,…,N CFB OFB CTR 6.7 CBC - Pad là chế độ hoạt động của kiểu mã hóa theo khối được dùng trong RC5 mã hoá khối, nhưng có thể là được dùng trong bất kì mã hoá khối nào. CBC - Pad xử lý văn bản nguồn của bất kì chiều dài nào. Văn bản mã hoá thì dài hơn sau đó văn bản nguồn bằng tối đa kích thước của khối duy nhất. Việc thêm vào được dùng để đảm bảo đầu vào văn bản nguồn là nhiều chiều dài khối. Nó là cho rằng văn bản nguồn là số nguyên của byte. Văn bản gốc này là lót ở cuối bằng từ 1 đến bb byte, nơi bb sánh bằng với cỡ khối về byte. Byte nệm đều giống nhau cả và ấn định thành byte đại diện cho số của byte của chêm. Chẳng hạn như, nếu có 8 byte của thêm, mỗi byte có khuôn mẫu bit 00001000. Tại sao không cố gắng thêm vào? 6.8 Việc thêm vào không phải lúc nào cũng thích hợp. Chẳng hạn như, có thể lưu trữ dữ liệu mã hoá trong vùng đệm bộ nhớ mà ban đầu chứa văn bản gốc. Trong trường hợp đó, văn bản mã hoá phải là giống nhau chiều dài như ban đầu văn bản nguồn. Đó là kiểu đánh cắp bản mã (CTS). Hình 6.11a cho thấy triển khai chế độ này. a. Giải thích nó hoạt động như thế nào. b. Mô tả làm thế nào để mã hóa và . 6.9 Hình 6.11b cho thấy sự thay thế CTS để tạo ra bản mã có chiều dài bằng với bản nguồn khi bản nguồn không có nhiều số nguyên cho kích cỡ khối. a. Giải thích thuật toán b. Giải thích tại sao CTS lại thích hợp hơn phương pháp này được mình họa trong Hình 6.11b Hình 6.11b Kiểu giải mã khối cho bản nguồn không sử dụng nhiều kích thước khối 6.10 Giá trị khóa RC4 nào sẽ rời khỏi S mà không bị thay đổi trong quá trình khởi tạo? Vậy là, sau phép hoán vị ban đầu của S, entries ( viêc nhập liêu vào máy tính) của S sẽ bằng giá trị từ 0 đến 255 theo thứ tự tăng dần. 6.11 RC4 có một trạng thái bí mật bên trong là phép hoán vị của tất cả giá trị có thể có của vector S và hai chỉ mục i và j. a. Có bao nhiêu bit được dùng khi Sử dụng một chương trình đơn giản để lưu trữ trạng thái bên trong? b. Giả sử như chúng ta nghĩ về nó từ góc độ thì có bao nhiêu thông tin được biểu diễn bằng trạng thái. Trong trường hợp đó, chúng ta cần phải xác định có bao nhiêu trạng thái , còn hơn là lấy các bản ghi vào base 2 để tìm ra có bao nhiêu bit thông tin này đại diện. Có bao nhiêu bit cần thiết phải biểu diễn trạng thái bằng việc sử dụng phương pháp này? 6.12 Alice và Bob đồng ý giao tiếp riêng thông qua email bằng cách sử dụng một chương trình dựa trên RC4, nhưng muốn tránh sử dụng một chìa khóa bí mật mới để truyền tải cho nhau. Alice và Bob thỏa thuận riêng tư với nhau về một k gồm 128 bit. Để mã hóa một thông điệp m, bao gồm một chuỗi các bit, các thủ tục sau đây được sử dụng: 1. Chọn giá trị 128 bit bất kỳ v 2. Tạo ra các bản mã c = RC4 (v | | k) m 3. Gửi chuỗi bit (v | | C) a. Giả sử Alice sử dụng thủ tục này để gửi một thông điệp m cho Bob. Mô tả làm thế nào Bob có thể phục hồi các tin nhắn từ m (v | | C) sử dụng k. b. Nếu một kẻ địch quan sát một số giá trị (v1 | | C1), (v2 | | C2), ... truyền giữa Alice và Bob, làm thế nào anh / cô ấy có thể xác định khi nào mà luồng khóa giống nhau đã được sử dụng để mã hóa 2 thông điệp? c. Có khoảng bao nhiêu thông điệp Alice có thể mong đợi để gửi trước luồng khoá giống nhau sẽ được dùng hai lần? Sử dụng kết quả từ sự ra đời nghịch đựoc mô tả trong Phụ lục 11A [ Equation ( 11.7 ) ]. d. Ngụ ý về sự tồn tại của khoá k ( nghĩa là, số thông điệp có thể được mã hoá khi sử dụng k ) là gì? Những vấn đề về việc lập trình 6.13 Tạo phần mềm có thể mã hóa và giải mã trong Chuỗi Khối Thuật Toán Mã bằng cách sử dụng một trong những thuật toán mật mã sau đây: afin modulo 256, Hill modulo 256, S-DES, DES. Kiểm tra dữ liệu cho S-DES: sử dụng một vector khởi tạo nhị phân của 1010 1010, một bản nguồn nhị phân của 0000 0001 0010 0011 mã hóa với khóa nhị phân của 01111 11101 sẽ đưa ra một bản mã nhị phân của 1111 0100 0000 1011. Giải mã sẽ làm việc tương ứng 6.14 Tạo phần mềm có thể mã hóa và giải mã trong kiểu phản hồi đầu ra 4 bit dùng 1 trong những thuật giải mã sau: additive modulo 256, affine modulo 256, S-DES; hoặc kiểu phản hồi đầu ra 8 bit dùng 1 trong những thuật giải mã sau: 2 x 2 Hill modulo 256. Kiểm tra dữ liệu cho S-DES: dùng vector khởi tạo nhị phân 1010 1011, bản nguồn nhị phân 0001 0010 0011 0100 được mã hóa với khóa nhị phân 01111 11101 nên đưa ra bản nguồn nhị phân 1110 1100 1111 1010. Hãy giải mã tiếp. 6.15 Tạo phần mềm có thể mã hóa và giải mã trong kiểu phản hồi đầu ra 4 bit dùng 1 trong những thuật giải mã sau: additive modulo 256, affine modulo 256, S-DES; hoặc kiểu phản hồi đầu ra 8 bit dùng 1 trong những thuật giải mã sau: 2 x 2 Hill modulo 256. 6.16 Tạo 1 phần mềm có thể thực hiện việc mã hóa và giải mã trong kiểu máy đếm, dùng 1 trong những mã hóa sau đây: mô phỏng modulo 256, Hill modulo 256, S-DES. Kiểm tra dữ liệu cho S-DES: dùng máy đếm bắt đầu 0000 0000, bản nguồn nhị phân 0000 0001 0000 0010 0000 0100 được mã hóa với khóa nhị phân 01111 11101 nên đưa bản nguồn nhị phân là 0011 1000 0100 1111 0011 0010. Hãy giải mã tiếp. 6.17 Thực thi tấn công giải mã khác nhau cho S-DES 3 vòng.

Các file đính kèm theo tài liệu này:

  • docĐồ án môn học bảo mật thông tin -mã hóa đối xứng (Bản dịch full từ Cryptography and Network Security).doc