Vietebooks Nguyn Hong Cng Trang 25 và viết B * , E * ,J * theo cách tơng tự. Nếu biết các giá trị E j và E j * với j nào đó, 1 j 8, và giá trị XOR ra ( của S j ) là C j ' = S j (B j ) S j (B j * ). Khi đó chắc chắn rằng: E j J j IN j (E j ',C j ' ) trong đó E j ' = E j E j * . Giả sử ta xác định tập test j nh sau: Định nghĩa 3.4. Giả sử E j và E j * là các xâu bít độ dài 6 và C j ' là xâu bít độ dài 4. Ta định nghĩa: test j (E j , E j * , C j ' ) = {B j E j : B j IN j (E j ',C j ')} trong đó E j ' = E j E j * Nghĩa là lấy XOR E j với mỗi phần tử của tập IN j (E j ',C j '). Kết quả sau đây là một hệ quả trực tiếp rút ra từ suy luận ở trên. Định lý 3.1 Giả sử E j và E j * là hai xâu vào của hộp S j còn XOR ra của S j là C j . Kí hiệu E j ' = E j E j * . Khi đó các bít khoá J j sẽ nằm trong tập test j (E j , E j * , C j '). Nhận thấy rằng có đúng N j (E j ',C j ' ) xâu bít độ dài 6 trong tập test j (E j ,E j * ,C j '); giá trị đúng của J j phải là một trong các khả năng này. Ví dụ 3.2. Giả sử E 1 = 000001, E 1 * = 110101 và C 1 ' = 1101. Vì N 1 (110100,1101) = 8 nên có đúng 8 xâu bít trong tập test 1 (000001,110101,1101). Từ hình 3.8 ta thấy rằng: IN 1 (110100,1101) = {000110,010000,010110,011100,100010,100100,101000,110010} Bởi vậy test 1 (000001,110101,1101) = {000111,010001,010111,011101,100011,100101,101001,110011}. Nếu ta có một bộ ba E 1 ,E 1 * ,C 1 ' thứ hai nh vậy thì có thể thu đợc tập test 1 thứ hai chứa các giá trị có thể chứa các bít khoá trong J 1 . Giá trị đúng của J 1 phải nằm trong phần giao của hai tập này. Nếu ta có vài bộ ba nh vậy thì có thể nhanh chóng xác định đợc các bít khoá trong J 1 . Phơng pháp đơn giản để làm điều này là tạo một dãy 64 bộ đếm biểu diễn 64 khả năng của 6 bít khoá trong J 1 . Bộ đếm sẽ đếm tăng mỗi khi các bít khoá tơng ứng xuất Vietebooks Nguyn Hong Cng Trang 26 hiện trong tập test 1 với một bộ ba cụ thể. Với t bộ ba, ta tin rằng sẽ tìm đợc bộ đếm duy nhất có giá trị t tơng ứng với giá trị đúng của các bít khoá trong J 1 . 3.6.1. Tấn công DES 3 vòng Bây giờ ta xét xem việc ứng dụng các ý tởng của phần trớc trong phép tấn công bản rõ chọn lọc lên một hệ DES 3 vòng. Ta bắt đầu ằng một cặp các bản rõ và bản mã tơng ứng L 0 R 0 , L 0 * R 0 * ,L 3 R 3 , và L 3 * R 3 * . Có thể biểu thị R 3 nh sau: R 3 = L 2 f (R 2 ,K 3 ) = R 1 f (R 2 ,K 3 ) = L 0 f (R 0 ,K 1 ) f (R 2 ,K 3 ) Biểu diễn R 3 * theo cách tơng tự nh vậy R 3 ' = L 0 ' f (R 0 ,K 1 ) f(R 0 * ,K 1 ) f (R 2 ,K 3 ) f (R 2 * ,K 3 ) Bây giờ, giả sử ta đã chọn đợc các bản rõ sao cho R 0 = R 0 * , nghĩa là để R 0 ' = 00. . .0 Khi đó f (R 0 ,K 1 ) = f (R 0 * ,K 1 ) và nh vậy: R 3 ' = L 0 ' f(R 2 ,K 3 ) f(R 2 * ,K 3 ). Lúc này R 3 ' đã biết vì có thể tính đợc nó từ hai bản mã. L 0 ' cũng đã biết do có thể tính đợc nó từ hai bản rõ. Điều này có nghiã là ta có thể tính f(R 2 ,K 3 )f(R 2 * ,K 3 ) từ phơng trình: f(R 2 ,K 3 )f(R 2 * ,K 3 ) = R 3 ' L 0 ' Bây giờ ta có f(R 2 ,K 3 ) = P(C) và f(R 2 * ,K 3 ) = P(C * ), trong đó C và C * ký hiệu tơng ứng 2 dãy ra của 8 hộp S ( hãy nhớ lại rằng P là một phép hoán vị cố định công khai ). Bởi vậy: P(C) P(C * ) = R 3 ' L 0 ' và do đó: C' = C C * = P -1 (R 3 ' L 0 ') (3.1) Đây là XOR ra của 8 hộp S ở vòng thứ 3. Vietebooks Nguyn Hong Cng Trang 27 Bây giờ R 2 = L 3 và R 2 * = L 3 * cũng đã biết ( chúng là một phần của các bản mã). Bởi vậy, có thể tính E = E(L 3 ) (3.2) và E * = E(L 3 * ) (3.3) bằng cách dùng hàm mở rộng E đợc biết công khai. Đây là các mẫu vào các hột S ở vòng thứ 3. Nh thế ta đã biết E và E * và C ' của vòng thứ 3 và có thể thực hiện ( nh ở phần trớc) để xây dựng các tệp test 1 , . , test 8 chứa các giá trị có thể của các bít trong J 1 ,. . .,J 8 . Mô tả dạng giả mã của thuật toán này đợc cho ở hình 3.9. Hình 3.9. Cách tấn công DC lên DES 3 vòng. Đầu vào L 0 R 0 ,L 0 * R 0 * , L 3 R 3 và L 3 * R 3 * , trong đó R 0 = R 0 * 1. Tính C ' = P -1 (R 3 ' L 0 ') 2. Tính E = E(L 3 ) và E * = E(L 3 * ) 3. For j = 1 to 8 do Tính test j (E j , E j * , C j ') Trong phơng pháp tấn công này sẽ phải dùng một số bộ ba E, E * ,C ' nh vậy, Ta phải thiết lập 8 dãy bộ đếm và nhờ vậy xác định đợc 48 bít trong khoá K 3 ( khoá của vòng thứ 3). Sau đó tính 56 bít trong khóa theo cách tìm kiếm vét cạn trong 2 8 = 256 khả năng cho 8 bít khoá còn lại. Ta sẽ xem xét một ví dụ để minh hoạ. Ví dụ 3.3. Giả sử ta có 3 cặp các bản rõ và các bản mã, trong đó các bản rõ có các phép XOR xác định, chúng đợc mã hoá bằng cùng một khoá. Để cho gọn ta sẽ biểu thị dới dạng mã Hexa: Bản rõ Bản mã 748502CD38451097 03C70306D8AO9F10 3874756438451097 78560A960E6D4CB 486911026ACDFF31 45FA285BE5ADC730 375BD31F6ACDFF31 134F7915AC253457 357418DA013FEC86 D8A31B2F28BBC5CF 12549847013FEC86 0F317AC2B23CB944 Vietebooks Nguyn Hong Cng Trang 28 Từ cặp đầu tiên, tính các đầu vào của hộp S ( cho vòng 3 ) theo các phơng trình (3.2) và (3.3). Ta có: E = 000000000111111000001110100000000110100000001100 E * = 101111110000001010101100000001010100000001010010 XOR ra của các hộp S đợc tính theo phơng trình (3.1) là: C' = 10010110010111010101101101100111 Từ cặp thứ hai, ta tính đợc các đầu vào của các hộp S là: E = 101000001011111111110100000101010000001011110110 E * = 000001011110100110100010101111110101011000000100 và XOR ra của các hộp S là: C' = 11010101011101011101101100101011 Tiếp theo, lập bảng các giá trị trong 8 dãy bộ đếm cho từng cặp. Minh hoạ thủ tục này với dãy bộ đếm cho J 1 theo cặp đầu tiên. Trong cặp này ta có: E' = 101111 và C' = 1001. Khi đó tập: IN 1 (101111,1001) = {000000,000111,101000,101111} vì E 1 = 000000 nê ta có: J 1 test 1 (000000,101111,1001) = {000000,000111,101000,101111} Bởi vậy ta sẽ tăng các giá trị 0,7,40 và 47 trong dãy bộ đếm cho J 1 . Bây giờ sẽ trình bày các bảng cuối cùng. Nếu coi một xâu bít độ dài 6 nh biểu diễn nhị phân của một số nguyên nằm giữa 0 và 63 thì 64 giá trị tơng ứng là 0,1,. . . ,63. Các mảng bộ đếm sẽ nh sau: J 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 Vietebooks Nguyễn Hoàng Cương Trang 29 J 2 0 0 0 1 0 3 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 2 0 0 0 J 3 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 J 4 3 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 J 5 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 2 0 J 6 1 0 0 1 1 0 0 3 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 J 7 0 0 2 1 0 3 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 2 0 0 0 2 0 0 0 0 1 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 Vietebooks Nguyn Hong Cng Trang 30 J 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 3 0 0 0 0 1 0 0 0 0 0 0 0 0 1 Trong số 8 mảng bộ đếm ( trong 8 mangt ở trên) có duy nhất một bộ đếm có giá trị 3, các vị trí của các bộ đếm này sẽ đợc xác định các bít khoá trong J 1 , ., J 8 . Các vị trí này tơng ứng là 47,5,19,0,24,7,7,49. Đổi các số nguyên sang dạng nhị phân ta nhận đợc J 1 , . . .,J 8 : J 1 = 101111 J 2 = 000101 J 3 = 010011 J 4 = 000000 J 5 = 011000 J 6 = 000111 J 7 = 000111 J 8 = 110001 Bây giờ ta có thể xây dựng 48 bít của khoá bằng cách nhìn vào bảng khoá đối với vòng 3. Khi đó K có dạng: 0001101 0110001 01?01?0 1?00100 0101001 0000??0 111?11? ?100011 ở đây ta đã bỏ qua các bít kiểm tra chặn lẻ và"?" chỉ bít khoá cha biết. Khóa đầy đủ ( ở dạng hexa gồm cả bít kiểm tra chặn lẻ) là: 1A624C89520DEC46 3.6.2. Tấn công DES 6 vòng Trong mục này ta sẽ mở rộng các ý tởng ở trên cho phép tấn công xác suất đối DES 6 vòng. ý tởng ở đây là phải chọn cẩn thận một acặp bản rõ với một phép XOR chỉ ra trớc rồi xác định các xác suất của một dãy xác định các XOR qua các vong mã. Bây giờ ta sẽ định nghiã một khái niệm quan trọng. Định nghĩa 3.5. Cho n 1 là một số nguyên. Một đặc trng n vòng là một danh sách có dạng: L 0 ',R 0 ',L 1 ',R 1 ',p 1 . . . L n ',R n ',p n . 74 850 2CD38 451 097 03C70306D8AO9F10 3874 756 438 451 097 7 856 0A960E6D4CB 486911026ACDFF31 45FA285BE5ADC730 375BD31F6ACDFF31 134F7915AC 253 457 357 418DA013FEC86 D8A31B2F28BBC5CF 1 254 9847013FEC86 0F317AC2B23CB944. các bản rõ và các bản mã, trong đó các bản rõ có các phép XOR xác định, chúng đợc mã hoá bằng cùng một khoá. Để cho gọn ta sẽ biểu thị dới dạng mã Hexa: Bản rõ Bản mã 74 850 2CD38 451 097 03C70306D8AO9F10. Vietebooks Nguyn Hong Cng Trang 25 và viết B * , E * ,J * theo cách tơng tự. Nếu biết các giá trị E j và E j * với j nào đó, 1 j 8, và giá trị XOR ra ( của S j ) là C j ' =