Tìm hiểu và khai thác các công cụ kẻ khóa md5, des, và thám mã 3 vòng
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG KHOA CÔNG NGHỆ THÔNG TIN -0O0 -0O0 0O0
ĐỀ ÁN: Môn Bảo Mật thông TinTÌM HIỂU HỆ MÃ CHUẨN CÀI ĐẶT MD5, DES VÀ THÁM MÃ 3 VÒNG
Trang 2MỤC LỤC
Trang 3
TÌM HỂU VÀ KHAI THÁC CÔNG CỤ KẺ KHÓA MD5,
DES, 3DES
1 Lời nói đầu
Trước khi các bạn tạo một chương trình bẻ khóa nhằm vào số serial của
chương trình (còn gọi là keygen), ngoài việc biết code bằng một ngôn ngữ lập trình nào đó, các bạn nên học qua các thuật toán mã hóa Vì việc học cho tốt ngôn ngữ lập trình chưa chắc các bạn đã tạo được một keygen Luyện đọc code cho tốt là một việc nên làm, nhưng chưa chắc bạn đã nắm hết ý nghĩa của đoạn code đó Vì các phần mềm mới sau này họ dùng các cách mã hóa làm phức tạp quá trình bẻ khóa Khi ta không nắm vững một số thuật toán mã hóa, thì dù bạn có thiệt là giỏi, bạn cũng mất nhiều thòi gian để bẻ khóa Nhưng nếu bạn nắm vững được thuật toán mã hóa của nó thì “chuyện nhỏ”
Học thuật toán chúng ta sẽ học được rất nhiều điều Nó giống như việc học
bảng cửu chương vậy Chúng ta phải học thuộc các loại thuật toán mã hóa, quen với nó, thấy nó làm việc, thân thiết với nó để khi gặp nó, hay “hậu duệ” của nó hoặc cái gì đó gần giống nó chúng ta sẽ không phải bỡ ngỡ
Mỗi người chúng ta đều có một dấu vân tay riêng, không ai giống ai Chính tạo hóa đã tạo ra chúng, từ những ý tưởng đó, con người mới nghĩ ra việc: tại sao
chúng ta không tự tạo ra một “dấu vân tay” cho một cái gì đó để phân biệt chúng với nhau Ví dụ như tên người chẳng hạn (tên là chuỗi các kí tự được gọi là String)
Do vậy trong lĩnh vực công nghệ thông tin người ta bắt đầu nghiên cứu các cách để tạo ra “dấu vân tay” cho các chuỗi String Một trong những cách đó là thuật toán
Trang 4MD5 mà chúng tôi sẽ nói ở dưới đây.
“dấu vân tay” do thuật toán MD5 tạo ra từ một String gọi là message digest
(gọi tắt là md) hay còn gọi là “MD5 hashes” (gọi tắt là hashes)
Bản báo cáo này chỉ tìm hiểu cách thực hiện của MD5, nguyên lý cũng như
thuật toán cụ thể Từ đó giúp chúng ta nhận dạng ra các chương trình sử dụng MD5 Giờ chúng ta bắt đầu tìm hiểu về MD5
2 Giới thiệu về MD5(Message-Digest algorithm)
2.1 Giới thiệu:
Từ ý tưởng mỗi người có một dấu vân tay riêng để phân biệt mọi người với nhau
Ronald Rivest đã tạo ra MD5 như một công nghệ tạo dấu vân tay(fingerprint) cho
1 cái gì đó(văn bản,password…)để phân biệt chúng với nhau
-MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là
128bit Từng được xem là một chuẩn trên Internet, MD5 đã được sử dụng rộng rãi trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2)
2.2 Ứng dụng quan trọng:
1/ MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo rằng tập tin tải về không bị hỏng Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5.(ví dụ:khi người sư dụng download một file trên mạng nhà phát triển ứng dụng sẽ tạo ra một mã MD5 cho file đó.khi chúng ta vừa tải về thì sẽ có một mã MD5.nếu 2 mã này trùng nhau thì file đó an toàn ngược lại thì có thể file download
có virut hoặc cái gì đó)Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà
Trang 5nó phân phối, trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba.
2/ MD5 được dùng để mã hóa mật khẩu Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker)
2.3 Đặc điểm của MD5
- Từ một đoạn văn bản đầu vào sẽ tạo ra một string gọi là Message Degist
Hay còn gọi là MD5 hash có độ dài cố định được mã hóa dưới dạng hexa
-Từ một đọan văn bản đầu vào sẽ tạo ra duy nhất một hash đầu ra không bao giờ
có 2 hash cho 1 văn bản
- Từ một hash đầu ra ta sẽ không bao giờ có thể suy ngược lại được plantext ban đầu
Trang 6+Trước tiên nó sẽ chèn bit 1 vào cuối thông điệp.
+Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của
Trang 7-MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits
Trang 83.2 Giải thuật
Thuật toán chính của MD5 hoạt động trên một bộ 128 bit Chia nhỏ nó ra thành 4 từ 32 bit, kí hiệu là A,B,C và D Các giá trị này là các hằng số cố định
Sau đó thuật toán chính sẻ luân phiên hoạt động trên các khối 512 bit Mỗi khối sẽ phối hợp với một bộ Quá trình xữ lý một khối thông điệp bao gồm 4 bước tương tự nhau, gọi là vòng (“round”) Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái…
Hình bên dưới mô tả một quá trình trong một vòng
Trang 9
Quá trình xử lý của một block
Có 4 hàm một chiều F
có thể sử dụng Mỗi vòng sử dụng một hàm khác nhau
Trang 10Đây là quá trình thực hiện xử lý của 4 hàm F, G, H, I ở trên:
Vòng 1 (Round 1):
Ký hiệu [abcd k s t] là bước thực hiện của phép toán
a = b + ((a + F(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước sau:
[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] Giải thích:
Ví dụ biểu thức thứ 2 là [DABC 1 12 2], tương đương với:
D = A + ((D + F(A,B,C) + X[1] + T[2]) <<< 12) Nhận xét: Vòng 1 dùng hàm
F, Với giá trị t từ 1 -> 16 và k từ 1 -> 15
Vòng 2 (Round 2):
Tương tự, ký hiệu [abcd k s t] là của biểu thức :
a = b + ((a + G(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước :[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]
Nhận xét: Vòng 2 dùng hàm G, với t từ 17 -> 32 và k = 1 + 5k mod 16
Vòng 3 (Round 3):
Tương tự, ký hiệu [abcd k s t] là của biểu thức :
a = b + ((a + H(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước:[ABCD 5 4 33] [DABC 8 11 34] [CDAB 1 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 5 16 47] [BCDA 2 23 48]
Nhận xét: Vòng 3 dùng hàm H, với t từ 33 -> 48 và k =5 + 3k mod 16
Vòng 4(Round 4):
Tương tự, ký hiệu [abcd k s t] là của biểu thức:
a = b + ((a + I(b,c,d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước :
Trang 11[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]
[ABCDb 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
Nhận xét: Vòng 4 dùng hàm I, với t từ 49 -> 64 và k =7k mod 16
/* Sau đó làm các phép cộng sau ( Nghĩa là cộng vào mỗi thanh ghi giá trị của
nó trước khi vào vòng lặp xử lý block tiếp theo) */
Hàm băm MD5 ( còn được gọi là hàm tóm tắt thông điệp – masage degests) sẽ trả về một chuổi số thập lục phân gồm 32 số liên tiếp Dưới đây là các ví dụ
mô tả các kết quả thu được sau khi băm
MD5("The quick brown fox jumps over the lazy dog") =
9e107d9d372bb6826bd81d3542a419d6
Trang 12Chỉ cần một thay đổi nhỏ cũng làm thay đổi hoàn toàn chuỗi đầu ra
MD5("The quick brown fox jumps over the lazy
cog") = 1055d3e698d289f2af8663725127bd4b
Ngay cả một chuổi rổng cũng cho ra một kết quả phức tạp:
MD5("") = d41d8cd98f00b204e9800998ecf8427e
Mã hóa bằng giải thuật MD5
private string EncodeMD5(string pass)
Trang 13ràng lắm nhưng các chuyên gia mã hóa đã nghĩ đến việc phải đưa ra một thuật giải khác, như là SHA-1…
MD5 được thiết kế bởi Ron Rivet Từ khi thuật toán này được công bố đã
có một số điểm yếu đã được tìm thấy năm 1993 B.den Boer and A Bosselaers đã tìm ra một sự va chạm của MD5 và từ đó một loạt các điểm yếu của MD5 đã được tìm ra
Mọi chuyện bắt đầu từ khi nhà khoa học máy tính người Pháp Antoine
Joux phát hiện ra một lỗ hổng trong thuật toán phổ biến MD5, thường dùng trong công nghệ chữ ký điện tử Ngay sau đó, bốn nhà nghiên cứu người
Trung Quốc lại phát hành công trình nghiên cứu chỉ ra cách xuyên phá thuật toán thứ hai có tên SHA-0
Tuy chỉ mới ở giai đoạn nghiên cứu sơ bộ song những phát hiện này có thể tạo điều kiện để kẻ xấu cài những chương trình cửa sau (backdoor) bí mật vào trong mã máy tính, hoặc giả mạo chữ ký điện tử Trừ phi một thuật toán mới, bảo mật hơn được xây dựng và đưa vào sử dụng!
Một phát hiện thứ ba, được đón đợi và đánh giá rất cao được công bố
trong hội thảo Crypto Hai nhà nghiên cứu Eli Biham và Rafi Chen của
Viện Công nghệ Israel đã diễn thuyết về cách nhận dạng các hình thức tấn công vào chức năng bảo mật của thuật toán SHA-0, một thuật toán có sơ hở
Những lỗ hổng bảo mật được cho là "nghiêm trọng" bên trong thuật toán SHA-0 và SHA-1, tuỳ thuộc vào mức độ chi tiết của phần trình bày, có thể làm chấn động cả ngành bảo mật Từ trước tới nay, SHA-1 vẫn được coi là chuẩn mực "vàng"về thuật toán Nó được tích hợp bên trong rất nhiều chương trình thông dụng như PGP và SSL, được chứng thực bởi Viện Chuẩn Công nghệ Quốc gia và là thuật toán chữ ký điện tử duy nhất được Cơ quan Chuẩn Chữ ký Số của chính phủ Mỹ phê chuẩn
Cả ba thuật toán MD5, SHA-0 và SHA-1 đều được giới khoa học máy tính coi là"đa chức năng" Chúng có thể nhận mọi dạng dữ liệu đầu vào, từ tin nhắn email cho đến hạt nhân (kernel) của hệ điều hành, cũng như tạo ra một dấu vân tay số duy nhất Chỉ thay đổi một ký tự bất kỳ bên trong file đầu vào cũng tạo ra những dấu vân tay hoàn toàn khác nhau Các ứng dụng bảo mật đều dựa vào tính năng "dấu vân tay duy nhất" này làm nền Tuy nhiên, nếu kẻ tấn công có thể tạo ra một dấu vân tay "Dolly" với một dòng dữ liệu đầu vào khác, dấu vân tay "sinh sản vô tính" này sẽ khiến phần mềm bị gài backdoor
Trang 14khoản ngân hàng của người sử dụng khơng may.
tốc độ giả mạo một dấu vân tay sẽ được đẩy nhanh lên 500 triệu lần, hồn tồn trong tầm tay của một mạng máy tính tốc độ cao.
Tuy mức độ tác hại ít trầm trọng hơn song sơ hở bảo mật trong thuật tốn MD5 cĩ lẽ lại gây hậu quả ngay tức thì Sản phẩm máy chủ Apache Web
nguồn mở đang sử dụng MD5 để kiểm duyệt những website cĩ mã nguồn chưa
bị chỉnh sửa, từ đĩ sẽ an tồn khi chạy trong máy Tương tự, sẽ là cơ sở dữ liệu Solaris của Sun Microsystems, với khả năng mà theo hãng tự nhận là "xác minh một file đích thực chứ khơng phải phiên bản bị điều chỉnh để hạ gục hệ thơng bảo mật''
Lỗ hổng mới phát hiện trong MD5 sẽ cho phép kẻ tấn cơng tạo ra file giả mạo chỉ trong vài giờ với một máy tính đạt chuẩn "Giờ đây, người ta đã chứng minh được các thuật tốn này cĩ lỗ hổng Trước khi kẻ tấn cơng lợi dụng khai thác được, đã đến lúc phải thơi dần việc sử dụng MD5.'' - nhà phân tích Hughes của Viện Chuẩn Cơng nghệ Quốc gia nhận định
I LẬP MÃ DES
Đây là ví dụ về việc lập mã sử dụng DES Giả sử ta mã hóa bản rõ sau trong dạng thập lục phân (Hexadecimal)
0123456789ABCDEF sử dụng khóa thập lục phân
133457799BBCDFF1 Khóa trong dạng nhị phân không có các bit kiểm tra sẽ là:
00010010011010010101101111001001101101111011011111111000.
Aùp dụng IP, ta nhận được L 0 và R 0 (trong dạng nhị phân) :
Trang 1511110000101010101111000010101 010
16 vòng lập mã được thể hiện như sau:
00011011000000101110111111111100011100000111
0010 01100001000101111011101010000110011001010010 0111
01011100100000101011010110010111 00100011010010101010100110111011 11101111010010100110010101000100
01111001101011101101100111011011110010011110 0101
00001100010001001000110111101011011000111110 1100
11111000110100000011101010101110
Trang 1600111100101010111000011110100011 11001100000000010111011100001001
0101010111111100100010100100001011001111100110 01
1011000001111100100010001111100000100111110010 10
00100111000100001110000101101111 01001101000101100110111010110000 10100010010111000000101111110100
0111001010101101110101101101101100110101000111 01
0010001011101111001011101101111001001010101101 00
00100001111011011001111100111010 10111011001000110111011101001100 011101110
Trang 170111110011101100000001111110101101010011101010 00
1100011000000101000000111110101101010001101000 10
01010000110010000011000111101011 00101000000100111010110111000011 10001010010011111010011000110111
0110001110100101001111100101000001111011001011 11
1010011011100111011000011000000010111010100000 00
01000001111100110100110000111101 10011110010001011100110100101100 11101001011001111100110101101001
11101100100001001011011111110110000110001011110 0
Trang 1800010000011101010100000010101101 10001100000001010001110000100111 00000110010010101011101000010000
1111011110001010001110101100000100111011111110 11
1111011101001000011011111001111001111011010110 11
01101100000110000111110010101110 00111100000011101000011011111001 11010101011010010100101110010000
1110000011011011111010111110110111100111100000 01
1000101001110000101110010100100010011011001000 00
00010001000011000101011101110111 00100010001101100111110001101010
Trang 191011000111110011010001111011101001000110010011 11
1010000101110000101111101101101010000101101110 11
11011010000001000101001001110101 01100010101111001001110000100010 10110111110101011101011110110010 E(R 10 )
0010000101011111110100111101111011010011100001 10
0111101110100001011110000011010000101110001000 11
01110011000001011101000100000001 11100001000001001111101000000010 11000101011110000011110001111000
E(R 11 )
K 12
0110000010101011111100000001111110000011111100 01
Trang 2001111011100010110010011000110101 11000010011010001100111111101010 01110101101111010001100001011000
1001011111000101110100011111101010111010010000 01
1010110101111000001010110111010110111000101100 01
10011010110100011000101101001111 11011101101110110010100100100010 00011000110000110001010101011010
0101111101000011101101111111001011100111001110 10
0101000001010101101100010111100001001101110011 10
01100100011110011001101011110001
Trang 2110110111001100011000111001010101 11000010100011001001011000001101
1011111110010001100011010011110100111111000010 10
0101111111000101110101000111011111111111010100 01
10110010111010001000110100111100 01011011100000010010011101101110 01000011010000100011001000110100
1100101100111101100010110000111000010111111101 01
1110101101010111100011110001010001010110010111 01
10100111100000110010010000101001 11001000110000000100111110011000 00001010010011001101100110010101
Cuối cùng, áp dụng IP -1 cho R 16 L 16 ta nhận được bản mã trong dạng thập lục
Trang 22II THÁM MÃ DES
Một phương pháp rất nổi tiếng trong thám mã DES là “thám mã vi sai“ (differential cryptanalysic) do Biham và Shamir đề xuất Đó là phương pháp thám với bản rõ được chọn Nó không được sử dụng trong thực tế để thám mã DES 16 vòng, mà chỉ được sử dụng để thám các hệ DES có ít vòng hơn.
Bây giờ ta sẽ mô tả những ý tưởng cơ bản của kỹ thuật này Để đạt mục đích thám mã, ta có thể bỏ qua hoán vị khởi tạo IP và hoán vị đảo của nó (bởi vì điều đó không cần thiết cho việc thám mã) Như đã nhận xét ở trên, ta xét các hệ DES n vòng, với n ≤ 16 Trong cài đặt ta có thể coi L 0 R 0 là bản rõ và L n R n như là bản mã
Thám mã vi sai đòi hỏi phải so sánh or (exclusive-or) của hai bản rõ với
x-or của hai bản mã tương ứng Nói chung, ta sẽ quan sát hai bản rõ L 0 R 0 và L 0*R 0* với trị x-or được đặc tả L 0 ’R 0 ’ = L 0 R 0 ⊕ L 0*R 0* Trong những thảo luận sau ta sẽ sử dụng ký hiệu (‘) để chỉ x-or của hai xâu bit.
Định nghĩa 3.1: Cho Sj là một S-hộp (1 ≤ j ≤ 8) Xét một cặp xâu 6-bit là (B j ,B j*) Ta nói rằng, xâu nhập x-or (của S j ) là B j ⊕ B j* và xâu xuất x-or (của S j ) là
S j (B j ) ⊕ S j (B j*).
Chú ý là xâu nhập x-or là xâu bit có độ dài 6, còn xâu xuất x-or có độ dài 4.
Định nghĩa 3.2: Với bất kỳ Bj ’ ∈ (Z 2 ) 6 , ta định nghĩa tập ∆ (B j ’) gồm các cặp (B j ,B j*) có x-or nhập là B j ’.
Dễ dàng thấy rằng, bất kỳ tập ∆ (B j ’) nào cũng có 2 6 = 64 cặp, và do đó
∆ (B j ’) = {(B j , B j ⊕ B j ’) : B j ∈ (Z 2 ) 6 }
Trang 23Với mỗi cặp trong ∆ (B j ’), ta có thể tính xâu x-or xuất của S j và lập được phân bố kết quả Có 64 xâu xuất x-or, được phân bố trong 2 4 = 16 giá trị có thể có Tính không đồng đều của các phân bố đó là cơ sở để mã thám.
Ví dụ 3.1: Giả sử ta xét S1 là S-hộp đầu tiên và xâu nhập x-or là 110100 Khi đó
∆ (110100) = {(000000, 110100), (000001, 110101), , (111111, 001011)} Với mỗi cặp trong tập ∆ (110100), ta tính xâu xuất x-or của S 1 Chẳng hạn,
S 1 (000000) = E 16 = 1110, S 1 (110100) = 1001, như vậy xâu xuất x-or cho cặp (000000,110100) là 0111
Nếu thực hiện điều đó cho 64 cặp trong ∆ (110100) thì ta nhận được phân bố của các xâu x-or xuất sau:
010 0
010 1
011 0
011 1
100 0
100 1
101 0
101 1
110 0
110 1
111 0
111 1
Trong ví dụ 3.1, chỉ có 8 trong số 16 xâu x-or xuất có thể có xuất hiện thật sự Ví dụ cụ thể này đã chỉ ra sự phân bố rất không đều của các xâu x-or xuất Nói chung, nếu ta cố định S-hộp S j và xâu nhập x-or B j ’, thì trung bình có khoảng 75 - 80% các xâu x-or xuất có thể có xuất hiện thực sự.
Để mô tả các phân bô đó ta đưa ra định nghĩa sau.
Định nghĩa 3.3: Với 1 ≤ j ≤ 8 và với các xâu bit B j ’ độ dài 6 và Cj’ độ dài 4,
ta định nghĩa:
IN j (B j ’,C j ’) = {B j ∈ (Z 2 ) 6 : S j (B j ) ⊕ S j (B j ⊕ B j ’) = C j ’}
và
Trang 24Bảng sau sẽ cho các xâu nhập có thể có với xâu x-or nhập 110100
Xâu xuất x-or Các xâu nhập có thể có 0000
0001 000011, 001111, 011110,
011111
101010, 101011, 110111, 111011
0010
000100, 000101, 001110, 010001
010010, 010100, 011010, 011011
100000, 100101, 010110, 101110
101111, 110000, 110001, 111010
0011 000001, 000010, 010101,
100001
110101, 110110
0100 010011, 100111 0101
0110
0111
000000, 001000, 001101, 010111
011000, 011101, 100011,
Trang 25101100, 110100, 111001, 111100
1000 001001, 001100, 011001,
101101
111000, 111101 1001
1010 1011 1100
1101 000110, 010000, 010110,
011100
110010, 100100, 101000, 110010
1110
1111 000111, 001010, 001011,
110011
111110, 111111
N j (B j ’, C j ’) tính số các cặp với xâu nhập x-or bằng B j ’ có xâu xuất x-or bằng
C j ’ với S-hộp S j Các cặp đó có các xâu nhập x-or được đặc tả và đưa ra cách tính các xâu xuất x-or có thể nhận được từ tập IN j (B j ’, C j ’) Để ý rằng, tập này có thể phân thành N j (B j ’, C j ’) /2 cặp, mỗi cặp có xâu x-or nhập bằng B j ’.
Phân bố trong ví dụ 3.1 chứa các trị N 1 (110100, C 1 ’), C 1 ’ ∈ (Z 2 ) 4 Trong bảng trên chứa các tập IN(110100, C 1 ’).
Trang 26Với mỗi tám S-hộp, có 64 xâu nhập x-or có thể có Như vậy, có 512 phân bố có thể tính được Nhắc lại là, xâu nhập cho S-hộp ở vòng thứ i là B= E ⊕ J, với E = E(R i-1 ) là mở rộng của R i-1 và J = K i gồm các bit khóa của vòng i Bây giờ xâu nhập x-or (cho tất cả tám S-hộp) có thể tính được như sau:
E j ⊕ J j ∈ IN j (E j ’, C j ’), với E j ’ = E j ⊕ E j*.
Định nghĩa 3.4: Giả sử E j và E j * là các xâu bit độ dài 6, và C j ’ là xâu bit độ 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 ’) }, với E j ’ = E j⊕ E j * .
Trang 27Nếu ta có một bộ ba thứ hai như thế E 1 , E 1*, C 1 ’, khi đó ta sẽ nhận được tập
thứ hai test 1 của các trị cho các bit khóa trong J 1 Trị đúng của J 1 cần phải nằm trong giao của các S-hộp Nếu ta có một vài bộ ba như vậy, khi đó ta có thể mau chóng tìm được các bit khóa trong J 1 Một cách rõ ràng hơn để thực hiện điều đó là lập một bảng của 64 bộ đếm biểu diễn cho 64 khả năng của của 6 khóa bit trong J 1 Bộ
đếm sẽ tăng mỗi lần, tương ứng với sự xuất hiện của các bit khóa trong tập test 1 cho một bộ ba cụ thể Cho t bộ ba, ta hy vọng tìm được duy nhất một bộ đếm có trị t; trị đó sẽ tương ứng với trị đúng của các bit khóa trong J 1
1 Thám mã hệ DES - 3 vòng
Bây giờ ta sẽ xét ý tưởng vừa trình bày cho việc thám mã hệ DES - ba vòng
Ta sẽ bắt đầu với cặp bản rõ và các bản mã tương ứng: L 0 R 0 , L 0*R 0*, L 3 R 3 và L 3*R 3*
Ta có thể biểu diễn 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 )
R 3 * có thể biểu diễn một cách tương tự , do vậy:
Trang 28Bây giờ, giả sử ta đã chọn được các bản rõ sao cho R 0 = R 0 , chẳng hạn:
R 0 ’ = 00 0 Khi đó f(R 0 , K 1 ) = f(R 0*, K 1 ), và do đó:
P(C) ⊕ P(C * ) = R 3 ’ ⊕ L 0 ’ và kết quả là:
C’ = C ⊕ C* = P -1 (R 3 ’ ⊕ L 0 ’) (1) Đó là xâu xuất x-or cho tám S-hộp trong vòng ba.
Bây giờ, R 2 = L3 và R2* = L3* là đã biết (chúng là một phần của các bản mã) Từ đây ta có thể tính:
Trang 29Input: L 0 R 0 , L 0*R 0*, L 3 R 3 và L 3*R 3*, với R 0 = R 0*
Bây giờ ta sẽ minh họa điều đó qua ví dụ sau.
03C70306D8A09F10 78560A0960E6D4CB 486911026ACDFF31
375BD31F6ACDFF31
45FA285BE5ADC730 134F7915AC253457 357418DA013FEC86
12549847013FEC86
D8A31B2F28BBC5CF 0F317AC2B23CB944
Từ cặp đầu tiên ta tính các xâu nhập của S-hộp (cho vòng 3) từ các phương trình (2) và (3) Chúng là:
Trang 30E = 101111110000001010101100000001010100000001010010
Xâu xuất x-or của S-hộp được tính bằng phương trình (1) sẽ là:
C’ = 10010110010111010101101101100111 Từ cặp thứ hai, ta tính được các xâu nhập cho S-hộp là:
E 1 ’= 101111 và C 1 ’ = 1001 Tập:
IN 1 (101111, 1001) = {000000, 000111, 101000, 101111}
Do E 1 = 000000 ta có:
J 1 ∈ test 1(000000, 101111, 1001) = {000000, 000111, 101000, 101111}
Do đó ta tăng các trị 0, 7, 40 và 47 trong các mảng đếm cho J 1
Cuối cùng ta sẽ trình bày các bảng Nếu ta xem các xâu bit độ dài 6 như là biểu diễn của các số nguyên trong khoảng 0-63, thì 64 trị sẽ tương ứng với 0, 1, ,
63 Các mảng đếm sẽ là như sau:
Trang 33ba Suy ra là K có dạng:
Trang 342 Thám mã hệ DES 6-vòng
Bây giờ ta sẽ mô tả việc mở rộng ý tưởng trên cho việc thám mã trên hệ DES vòng Ý tưỏng ở đây là lựa chọn một cách cẩn thận cặp bản rõ với xâu x-or đặc thù và sau đó xác định các xác suất của các dãy đặc thù của các xâu x-or qua các vòng lập mã Bây giờ ta cần định nghĩa một khái niệm quan trọng sau.
6-Định nghĩa 3.5: Cho n ≥ 1 là số nguyên Đặc trưng của vòng thứ n là một danh sách các dạng
L 0 ’, R 0 ’, L 1 ’, R 1 ’, p 1 , , L n ’, R n ’, p n thỏa mãn các điều kiện sau:
1 L i ’ = R i-1 ’ với 1 ≤ i ≤ n
2 Cho 1 ≤ i ≤ n và L i-1 , R i-1 và L *
i-1 , R * i-1 là đã được chọn sao cho L i-1 ⊕ L *
i-1 = L’ i-1 và R i-1 ⊕ R *
i-1 = R’ i-1 Giả sử L i , R i và L i* , R i* là tính được nhờ việc áp dụng một vòng lập mã DES Khi đó xác suất để L i ⊕ L *
i = L i ’ và R i ⊕ R *
i = R i ’ chính xác bằng
p i (Chú ý là, xác suất này được tính trên tất cả các bộ có thể có của J = J 1 J 8 )
Xác suất đặc trưng được định nghĩa bằng tích p = p 1 × × p n
Nhận xét: Giả sử ta chọn L0, R 0 và L 0*, R 0* sao cho L 0 ⊕ L 0* = L 0 ’ và R 0 ⊕ R 0*= R 0 ’ và ta áp dụng n vòng lập mã của DES, nhận được L 1 , L n và R 1 , , R n Khi đó ta không thể đòi hỏi xác suất để L i ⊕ L i* = L i ’ và R i ⊕ R i* = R i ’ cho tất cả i ( 1 ≤ i ≤ n) là
p 1 × × p n Bởi vì các bộ -48 trong lịch khóa K 1 , , K n không phải là độc lập lẫn nhau (Nếu n bộ-48 này đuợc chọn độc lập một cách ngẫu nhiên, thì điều xác nhận là đúng) Nhưng ta sẽ coi rằng p 1 × × p n chính xác là xác xuất đó.
Ta còn cần xác nhận là, các xác suất p i trong đặc trưng là các cặp bản rõ được xác định tùy ý (nhưng cố định) được đặc tả bằng xâu x-or, với 48 bit khóa cho một vòng lập mã DES là có 2 48 khả năng Do đó việc thám mã sẽ nhằm vào việc xác định khóa cố định (nhưng chưa biết) Do đó cần cố chọn các bản mã ngẫu nhiên (nhưng chúng có các xâu x-or được đặc tả), hy vọng rằng các xác suất để các xâu x-or trong
n vòng lập mã trùng hợp với các xâu x-or, được đặc tả trong đặc trưng, từng đôi một
p 1 , , p n tương ứng.
Trang 35Trong ví dụ sau đây, ta sẽ trình bày đặc trưng vòng 1 để làm cơ sở cho việc thám mã DES ba vòng trong hình sau (như ở trên, ta sẽ sử dụng cách biểu diễn theo hệ thập lục phân)
L’ 0 = bất kỳ R’ 0 = 00000000 1
6 L’ 1 = 00000000 1
000000 Các xâu xuất x-or cho S 2 đến S 8 đều là 0000 Xâu xuất x-or cho S 1 là 1110 với xác suất 14/64 (do N1(001100, 1110) = 14) Nên ta nhận được:
C’ = 11100000000000000000000000000000 với xác suất 14/64 Aùp dụng P, ta nhận được:
Trang 36trong dạng thập lục phân sẽ là 00808200 16 Khi xâu này cộng x-or với L 0 ’, ta nhận được R 1 ’ với xác suất 14/64 Do đó L 1 ’ = R 0 ’.
Việc thám mã DES sáu vòng dựa trên đặc trưng ba vòng được cho trong hình sau Trong thám mã 6-vòng, ta bắt đầu với L 0 R 0 L 0*R 0*, L 6 R 6 và L 6*R 6*, mà ta phải chọn bản rõ sao cho L 0 ’= 40080000 16 và R 0 ’= 04000000 16 , ta có thể biểu diễn R 0 như sau:
04000000 1 6
00000000 1 6
04000000 1 6
00000000 1 6
04000000 1 6
40080000 1 6
p = 1/4
p = 1
p = 1/4
R 6 = L 5 ⊕ f(R 5 , K 6 ) = R 4 ⊕ f(R 5 , K 6 ) = L 3 ⊕ f(R 3 , K 4 ) ⊕ f(R 5 , K 6 )
R 6* cũng có thể biểu diễn tương tự, ta có
R 0 ’ = L 3 ’ ⊕ f(R 3 , K 4 ) ⊕ f(R 3*, K 4 ) ⊕ f(R 5 , K 6 ) ⊕ f(R 5*, K 6 ) (4)
(Để ý là tương tự như thám mã 3-vòng)
R 6 ’ là được biết Từ đặc trưng ta tính L 3 ’ = 04000000 16 và R 3 ’ = 40080000 16 với xác suất 1/16 Nếu như vậy, thì xâu nhập x-or cho S-hộp trong vòng 4 có thể tính được nhờ hàm mở rộng phải là:
Trang 37001000000000000001010000 0 Các xâu x-or cho S 2 , S 5 , S 6 , S 7 và S 8 tất cả đều bằng 000000, và vì thế xâu xuất x-or là 0000 cho tất cả năm S-hộp đó trong vòng 4 Điều này có nghĩa là, ta có thể tính được các xâu xuất x-or cho năm S-hộp đó trong vòng 6 nhờ phương trình (4) Do đó giả sử ta tính:
C 1 ’C 2 ’C 3 ’C 4 ’C 5 ’C 6 ’C 7 ’C 8 ’ = P -1 (R 6 ’ ⊕ 04000000)
mỗi C i là xâu bit có độ dài 4 Khi đó với xác suất 1/16, thì sẽ dẫn đến là C 2 ’, C 5 ’,
C 6 ’, C 7 ’ và C 8 ’ tương ứng là các xâu x-or xuất của S 2 , S 5 , S 6 , S 7 và S 8 trong vòng 6 Các xâu nhập cho các S-hộp đó trong vòng 6 có thể tính được là E 2 , E 5 , E 6 , E 7 và E 8 ; và E 2*, E 5*, E 6*, E 7* và E 8*, với
E 1 E 2 E 3 E 4 E 5 E 6 E 7 E 8 = E(R 5 ) = E(L 6 )
và
E 1*E 2*E 3*E 4*E 5*E 6*E 7*E 8* = E(R 5*) = E(L 6*)
có thể tính được từ các bản rõ như sau:
Input: L 0 R 0 , L 0*R 0*, L 6 R 6 và L 6*R 6*; với L 0 ’ = 40080000 16
Trang 383-1/16 Còn 15/16 phần còn lại ta sẽ thường nhận được những xâu vô dụng ngẫu nhiên hơn là các bit khóa.
Định nghĩa 3.6: Giả sử L0⊕ L 0* = L 0 ’ và R 0 ⊕ R 0*= R 0 ’ Ta nói rằng, cặp bản rõ L 0 R 0 và L 0* R 0* là đúng (right) ứng với đặc trưng nếu L i ⊕ L i* = L i ’ và R i ⊕ R i*= R i ’ cho mọi i,
1 ≤ i ≤ n Cặp trái với cặp được định nghĩa gọi là cặp sai (wrong).
Ta mong rằng, khoảng 1/16 số cặp của ta là đúng, còn các cặp còn lại là cặp sai ứng với đặc trưng vòng ba của ta.
Chiến lược của ta là tính E j E j* và C j’như đã mô tả ở trên và sau đó xác định testj (E j ,
E j*, C j ’) với j = 2,5,6,7,8 Nếu ta bắt đầu với một cặp đúng, thì thì các bit khóa chính xác cho mỗi J j sẽ nằm trong tập testj Nếu cặp là sai, thì trị C j ’ sẽ không đúng, và đó
là nguyên do để giả định rằng, mỗi tập testj thực chất là ngẫu nhiên.
Ta có thể nhận ra cặp đúng theo phương pháp sau: Nếu testj = 0, với bất kỳ j ∈
{2,5,6,7,8}, khi đó ta tất yếu có được cặp đúng Bây giờ cho một cặp sai, ta có thể
hy vọng rằng, xác suất để testj = 0 cho một j cụ thể là xấp xỉ 1/5 Đó là lý do để giả định là, N j (E j ’, C j ’) = testj và như đã nhận xét từ trước, xác suất để N j (E j ’, C j ’)
= 0 là xấp xỉ 1/5 Xác suất để cả năm testj đều dương là vào khoảng 0.8 5 ≈ 0.33,
quả vậy xác suất để ít nhất một testj bằng 0 là vào khoảng 0.67 Nên ta có khoảng
2/3 số cặp là sai, nhờ vào một nhận xét đơn giản, được gọi là phép lọc (filtering
operation) Tỷ số của các cặp đúng trên các cặp còn lại sau phép lọc là vào khoảng:
6 1 3 1 16 15 16 1
16 1
=
× +
Ví dụ 3.4: Giả sử ta có cặp bản rõ - bản mã sau:
86FA1C2B1F51D3BE 1E23ED7F2F553971
Trang 39111100 111101 011010 101111 111110
010010 111100 000101 010110 101100
1101 0001 0010 1100 1101
Khi đó các tập testj sẽ là như sau:
2 14, 15,26, 30, 32, 33, 48, 52 5
6 7, 24, 36, 41, 54, 59 7
Trang 40Ta thấy rằng, hai tập test5 và test7 là rỗng , nên cặp này là cặp sai và nó bị loại bỏ bằng phép lọc.
Bây giờ giả sử ta có cặp sao cho testj > 0 với j = 2,5,6,7,8 là những tập còn lại sau phép lọc.(Bởi vì ta không biết được là cặp nào đúng, cặp nào sai.) Ta nói rằng, xâu bit J 2 J 5 J 6 J 7 J 8 độ dài 30 là được đề xuất bởi cặp nếu J j ∈ testj với j = 2,5,6,7,8 Số các cặp được đề xuất là:
∏
∈ 2 , 5 , 6 , 7 , 8
j
jtest
Đó là bình thường với số xâu bit được đề xuất là khá lớn (Chẳng hạn lớn hơn 80000)
Giả sử, ta lập bảng cho tất cả các xâu được đề xuất nhận được từ N cặp, mà không
bị loại bởi phép lọc Với mỗi cặp đúng, thì xâu bit đúng J 2 J 5 J 6 J 7 J 8 sẽ là xâu được đề xuất Xâu bit đúng sẽ được tính khoảng 3N/16 lần Xâu bit sai thường xuất hiện ít hơn, bởi vì chúng xuất hiện ngẫu nhiên và có khoảng 2 30 khả năng (Là một số rất lớn.)
Ta nhận được một bảng cực lớn tất cả các xâu được đề xuất, nên ta sử dụng một thuật toán chỉ đòi hỏi một không gian và thời gian ít nhất Ta có thể mã hóa
bất kỳ một tập testj nào thành một véc tơ T j có độ dài 64, với tọa độ thứ i của T j được đặt bằng 1 (0 ≤ i ≤ 63), nếu xâu bit độ dài 6 là biểu diễn của i ở trong tập test j ; và tọa độ thứ i được đặt bằng 0 trong trường hợp ngược lại ( điều này giống như mảng các bộ đếm mà ta đã sử dụng trong thám mã DES ba vòng).
Với mỗi cặp còn lại, ta xây dựng các véc tơ như trên và gọi chúng là T ji, j=2,5,6,7,8; 1 ≤ i ≤ N Với I ⊆ {1, , N} ta nói rằng I là chấp nhận được (allowable)
nếu với mỗi j ∈ {2,5,6,7,8} có ít nhất một tọa độ bằng I trong véc tơ
∑
∈I i
i j
T