II.3.2. Thám mã hệ DES 6-vòng

Một phần của tài liệu Đồ án bảo mật thông tin: Tìm hiểu về hệ mã chuẩn cài đặt DES và thám mã 3 vòng (Trang 27)

I.3 THÁM MÃ DES

II.3.2. Thám mã hệ DES 6-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.

Đị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

L0’, R0’, L1’, R1’, p1, ..., Ln’, Rn’, pn

thỏa mãn các điều kiện sau: 1. Li’ = Ri-1’ với 1  i  n

2. Cho 1  i  n và Li-1, Ri-1 và L* i-1, R*

i-1 là đã được chọn sao cho Li-1 L*

i-1 = L’i-1

và Ri-1 R*i-1 = R’i-1. Giả sử Li, Ri và Li* , Ri* là tính được nhờ việc áp dụng một vòng lập mã DES. Khi đó xác suất để Li L*

i = Li’ và Ri R*

i = Ri’ chính xác bằng pi. (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 = J1...J8) .

Nhận xét: Giả sử ta chọn L0, R0 và L0*, R0* sao cho L0 L0* = L0’ và R0 R0*= R0’ và ta áp dụng n vòng lập mã của DES, nhận được L1. ..., Ln và R1, ..., Rn. Khi đó ta không thể đòi hỏi xác suất để Li Li* = Li’ và Ri Ri* = Ri’ cho tất cả i ( 1  i  n) là p1 ... pn. Bởi vì các bộ -48 trong lịch khóa K1, ..., Kn 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 p1 ...  pn 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 pi 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ó 248 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 p1, ..., pn tương ứng. Trong 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 = 0000000016

L’1 = 0000000016 R’1 = L’0 p = 1 Ta cũng sẽ mô tả một đặc trưng vòng 1 khác như sau

L’0 = 0000000016 R’0 = 6000000016

L’1 = 6000000016 R’1 = 0080820016 p = 14/64

Ta hãy xét đặc trưng sau một cách chi tiết hơn. Khi f(R0, K1) và f(R0*, K1) được tính, bước đầu tiên là mở rộng R0 và R0*. Xâu x-or kết quả của hai mở rộng là:

001100...0

Tức là xâu x-or nhập cho S1 là 001100 và các xâu x-or cho bảy S-hộp khác đều là 000000. Các xâu xuất x-or cho S2 đến S8 đều là 0000. Xâu xuất x-or cho S1 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:

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 L0R0. L0*R0*, L6R6 và L6*R6*, mà ta phải chọn bản rõ sao cho L0’= 4008000016 và R.0’= 0400000016, ta có thể biểu diễn R0 như sau:

L0’ L1’ L2’ L3’ = = = = 4008000016 0400000016 0000000016 0400000016 R0’ R1’ R2’ R3’ = = = = 0400000016 0000000016 0400000016 4008000016 p = 1/4 p = 1 p = 1/4 R6 = L5 f(R5, K6) = R4 f(R5, K6) = L3 f(R3, K4)  f(R5, K6) R6* cũng có thể biểu diễn tương tự, ta có

R0’ = L3’  f(R3, K4)  f(R3*, K4)  f(R5, K6)  f(R5*, K6) (4) (Để ý là tương tự như thám mã 3-vòng)

R6’ là được biết. Từ đặc trưng ta tính L3’ = 0400000016 và R3’ = 4008000016 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à:

001000000000000001010000...0

Các xâu x-or cho S2, S5, S6, S7 và S8 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:

C1’C2’C3’C4’C5’C6’C7’C8’ = P-1(R6’  04000000)

mỗi Ci là xâu bit có độ dài 4. Khi đó với xác suất 1/16, thì sẽ dẫn đến là C2’, C5’, C6’, C7’ và C8’ tương ứng là các xâu x-or xuất của S2, S5, S6, S7 và S8 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à E2, E5, E6, E7 và E8; và E2*, E5*, E6*, E7* và E8*, với

E1E2E3E4E5E6E7E8 = E(R5) = E(L6) và

E1*E2*E3*E4*E5*E6*E7*E8* = E(R5*) = E(L6*) có thể tính được từ các bản rõ như sau:

Input: L0R0, L0*R0*, L6R6 và L6*R6*; với L0’ = 4008000016 và R0’ = 0400000016. 1. Tính C’ = P-1(R6’  0400000016) 2. Tính E = E(L6) và E* = E(L6*) 3. for j  {2,5,6,7,8} do tính testj( Ej, Ej*, Cj’) (adsbygoogle = window.adsbygoogle || []).push({});

Ta cũng sẽ xác định 30 bit khóa trong J2, J5, J6, J7 và J8 như trong thám mã 3- vòng. Bài toán, để xâu xuất x-or giả định cho vòng 6 là chính xác chỉ với xác suất 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 L0* = L0’ và R0 R0*= R0’. Ta nói rằng, cặp bản rõ L0R0

và L0* R0* là đúng (right) ứng với đặc trưng nếu Li Li* = Li’ và Ri  Ri*= Ri’ 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 Ej. Ej* và Cj’như đã mô tả ở trên và sau đó xác định testj(Ej, Ej*, Cj’) 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 Jj sẽ nằm trong tập testj. Nếu cặp là sai, thì trị Cj’ 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à, Nj(Ej’, Cj’) = testj và như đã nhận xét từ trước, xác suất để Nj(Ej’, Cj’) = 0 là xấp xỉ 1/5. Xác suất để cả năm testj đều dương là vào khoảng 0.85 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: Bản rõ Bản mã 86FA1C2B1F51D3BE C6F21C2B1B51D3BE 1E23ED7F2F553971 296DE2B687AC6340

Chú ý là, L0’ = 4008000016 và R0’ = 0400000016. Xâu nhập và xâu xuất của S-hộp cho vòng 6 được tính như sau:

6 7 8 011010 101111 111110 000101 010110 101100 0010 1100 1101 Khi đó các tập testj sẽ là như sau:

j testj 2 14, 15,26, 30, 32, 33, 48, 52 5 6 7, 24, 36, 41, 54, 59 7 8 34, 35, 48, 49

Ta 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 J2J5J6J7J8 độ dài 30 là được đề xuất bởi cặp nếu Jj testj với j = 2,5,6,7,8. Số các cặp được đề xuất là:  2,5,6,7,8 j j test

Đó 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 J2J5J6J7J8 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 230 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ơ Tj có độ dài 64, với tọa độ thứ i của Tj đượ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 testj; 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à Tji,

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

Nếu cặp thứ i là cặp đúng cho mỗi iI, thì tập I là chấp nhận được. Do đó ta cho rằng tập chấp nhận được có kích thước (xấp xỉ) 3N/16, là tập đề xuất và ta hy vọng là chỉ gồm các bit khóa đúng chứ không có các xâu khác. Điều này làm đơn giản hóa cho việc xây dựng tất cả các tập chấp nhận được I bằng một thuật toán đệ qui.

II.3. 3 Các thám mã vi sai khác

Một phần của tài liệu Đồ án bảo mật thông tin: Tìm hiểu về hệ mã chuẩn cài đặt DES và thám mã 3 vòng (Trang 27)