Thám mã tuyến tính đối với DES

Một phần của tài liệu tìm hiểu chuẩn mật mã dữ liệu des (data encryption standard) và đánh giá độ an toàn (Trang 48 - 70)

2.2.2.1 Nguyên lý chung của phương pháp thám mã tuyến tính đối với hệ DES

Nhƣ ta đã biết ở trên, hệ DES đã công khai toàn bộ các phép biến đổi trong nó, trong đó chỉ có các hộp nén mới là các phép biến đổi phi tuyến. Các bí mật còn lại duy nhất khi sử dụng DES đó là khóa K đƣợc sử dụng cụ thể. Nếu tất cả các phép biến đổi của DES đều là tuyến tính, thì với ẩn số là khóa K cho trƣớc cố định, bằng công cụ mô phỏng trên máy tính và sử dụng các cặp bản rõ – mã tƣơng ứng chúng ta có thể thiết lập đƣợc hệ thống phƣơng trình tuyến tính để tìm lại đƣợc các bit khóa K trong thời gian đa thức. Tuy nhiên, các hộp nén (thành phần quan trọng nhất của hệ DES) là các phép biến đổi phi tuyến đƣợc chọn lựa cẩn thận, nên muốn thám DES thì

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

phải tấn công vào chính thành trì này. Mục đích của phƣơng pháp thám mã tuyến tính trên DES là tìm một biểu diễn xấp xỉ tuyến tính cho hệ này để có thể phá chúng nhanh hơn phƣơng pháp tấn công vét cạn. Và tất nhiên, những nhƣợc điểm của các hộp nén sẽ lại đƣợc tiếp tục khai thác cho mục đích này.

Trƣớc hết ta quy ƣớc lại các yếu tố liên quan đến sơ đồ thuật toán mã DES. Đầu tiên, cũng giống nhƣ trong phần thám mã vi sai đối với DES, ta có thể bỏ qua các hoán vị đầu IP và hoán vị cuối IP-1. Và trong suốt phần này, ta quy ƣớc bít tận cùng bên phải luôn đƣợc xem là bít thứ không (0).

Các ký hiệu đƣợc sử dụng trong mô hình là (xem hình 3): P : là bản rõ 64 bit

PH : 32 bit bên trái của P CH : 32 bit bên trái của C

Xi : Giá trị 32 bit trung gian tại vòng thứ i Fi(Xi, Ki) : Hàm vòng thứ i

C : là bản mã 64 bit tƣơng ứng PL : 32 bit bên phải của P CL : 32 bit bên phải của C

Ki : Khóa con 48-bit đƣợc sử dụng tại vòng thứ i A[i] : Bit thứ i của A

A[i, j, ..., k] : là tổng A[i] A[j] ... A[k]

Mục đích của phƣơng pháp thám mã tuyến tính với hệ DES là tìm các biểu diễn tuyến tính hiệu quả có dạng sau :

P[i1, i2, ..., ia] C[j1, j2, ..., jb] = K[k1, k2, ..., kc] (2.1) Trong đó i1, i2, ..., ia, j1, j2, ..., jb và k1, k2, ..., kc là ký hiệu các vị trí bit cố định, và phƣơng trình (2.1) đúng với xác suất p ½ với giả thiết bản rõ P đƣợc lấy ngẫu nhiên còn C là bản mã tƣơng ứng với khóa K cố định cho trƣớc nào đó. Giá trị tuyệt đối |p – ½| đƣợc xem nhƣ độ hiệu quả của chƣơng trình (2.1).

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.5. Mô hình DES với quy ước mới

Nếu ta có thể thành công trong việc tìm một biểu diễn tuyến tính hiệu quả, thì khi đó có thể sử dụng nó để tìm ra đƣợc bít dạng khóa quan trọng K[k1,k2,...,kn] theo thuật toán sau dựa trên phƣơng pháp hợp lý cực đại.

Thuật toán 1.

Bước 1: Gọi T là số các bản rõ sao cho vế trái của phƣơng trình (2.1) là bằng

không. Ký hiệu N là số các bản rõ đƣợc thực hiện trong tấn công.

Bước 2: Nếu T > N/2 thì

Lấy K[k1, k2, ..., kc] = 0 (khi p > ½ ) hoặc bằng 1 (khi p< ½ ), Ngƣợc lại

Lấy K[k1, k2, ..., kc] = 1 (khi p > ½ ) hoặc bằng 0 (khi p< ½ ).

PH PL 32 32 F1 48 K1 32 F2 K2 Fn Kn P = 64 bit F1(X1,K1) F2(X2,K2) X2 X1 Fn(Xn,Kn) Xn CH CL C = 64 bit

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Rõ ràng là khả năng thành công của thuật toán sẽ tăng khi N tăng hoạc biên độ |p – ½ | tăng lên. Chúng ta gọi biểu diễn tuyến tính có biên độ |p – ½ | cực đại là biểu diễn tốt nhất.

Thuật toán 1 trên đây về nguyên tắc có thể áp vào bất kỳ hệ mã khối nào. Tuy nhiên khi sử dụng nó để tấn công hệ DES, chúng ta có thể thực hiện nhƣ sau :

Để tấn công DES n-vòng, chúng ta sử dụng các biểu diễn tuyến tính tốt nhất đối với DES (n-1) vòng. Bản mã sau vòng thứ (n-1) có thể thiết lập từ bản mã tại vòng thứ n, bằng cách thực hiện phép giải mã với khóa con Kn của vòng thứ n. Nhƣ vậy ta chấp nhận một số hạng có hàm vòng F trong biểu diễn tuyến tính đang sử dụng để tấn công DES n-vòng. Kết quả là ta sẽ nhận đƣợc một dạng biểu diễn sau đúng với xác suất tốt nhất của (n-1) vòng của DES.

P[i1, i2, ..., ia] C[j1, j2, ..., jb] Fn(CL,Kn) = K[k1, k2, ..., kc] (2.2) Thực chất biểu thức C[j1, j2, ..., jb] Fn(CL,Kn)[l1, l2, ..., ld] chính là bản mã tại vòng thứ (n-1).

Nhƣ vậy, trong phƣơng trình (2.2) ta thấy số lƣợng các bit khóa tham gia nhiều hơn so với phƣơng trình (2.1). Trong đó việc tìm một số bit khóa trong Kn chính xác có thể đƣợc thực hiện dễ dàng hơn nhờ nhận xét sau đây:

Nếu khóa Kn trong (2.2) là không chính xác thì độ hiệu quả của phƣơng trình (2.1) sẽ giảm đi rõ rệt, tức là nó sẽ làm ảnh hƣởng lớn đến xác suất đúng của (2.1).

Do vậy, có thể sử dụng thuật toán hợp lý cực đại sau để cùng một lúc tìm và quyết định các thành phần khóa tham gia trong (2.2). (adsbygoogle = window.adsbygoogle || []).push({});

Thuật toán 2

Bước 1: Với mỗi ứng cử viên i

n

K (i =1, 2, ...) của Kn, gọi Ti là số các bản rõ sao cho vế trái của phƣơng trình (2.2) bằng không. Ký hiệu N là số các bản rõ đƣợc thực hiện trong tấn công.

Bƣớc 2: Giả sử Tmax là giá trị cực đại và Tmin là giá trị cực tiểu của tất cả các giá trị Ti.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Nếu |Tmax – N/2| > |Tmin – N/2|, thì ta chấp nhận khóa ứng cử viên tƣơng ứng với Tmax và lấy K[k1, k2, ..., kc]=0 (khi p > ½) hoặc bằng 1 (khi p < ½),

Nếu |Tmax – N/2| < |Tmin – N/2|, thì ta chấp nhận khóa ứng cử viên tƣơng ứng với Tmin và lấy K[k1, k2, ..., kc]=0 (khi p > ½) hoặc bằng 1 (khi p < ½)

2.2.2.2 Xấp xỉ tuyến tính các hộp nén

Trong phần này chúng ta sẽ nêu phƣơng pháp xấp xỉ tuyến tính các hộp nén của DES làm cơ sở cho việc xấp xỉ tuyến tính cho cả hệ DES đƣợc sử dụng trong tấn công sau này.

Định nghĩa 2.8:

Cho trƣớc hộp nén Sa (a = 1, 2, ..., 8), 1 63 1 15. Chúng ta định nghĩa số NSa( , ) là tất cả các đầu ra của 64 mẫu đầu vào của Sa sao cho giá trị XOR của các bits đầu vào đƣợc đánh dấu bới trùng với giá trị XOR của các bits đầu ra đƣợc đánh dấu bởi . Cụ thể hơn, ta có :

]))} [ ] )[ ( ( ( ])) [ ] [ ( ( , 64 0 : { # ) , ( x x 50 x s s 30 S x t t NSa s t a (2.3)

ở đây ký hiệu là phép nhân logic AND giữa từng bit tƣơng ứng của hai véc tơ.

Chú ý: Từ định nghĩa trên có thể thấy rằng, khi NSa( , ) không bằng 32, thì sẽ có

một sự tƣơng quan nào đó giữa đầu vào và đầu ra của hộp nén Sa. Chẳng hạn, từ việc khảo sát trực tiếp hộp S5 ta có :

NS5(16, 15) = 12 (2.4)

Điều đó có nghĩa là bit vào thứ 4 của S5 là trùng với giá trị XOR của tất cả các bits đầu ra của S5 với xác suất 12/64 0,19. Nói cách khác, chúng ta sẽ có xác suất để có biểu thức tuyến tính :

( , X) ( , Y) = 0 hoặc ( , X) ( , Y) = 1

sẽ tƣơng ứng bằng (NSa / 64) hoặc bằng [1-(NSa/64], trong đó Y là ảnh của X qua phép biến đổi Sa.

Nhƣ vậy, nếu giá trị của NSa( , ) càng xa giá trị ½ thì khả năng nhận đƣợc các tƣơng quan tuyến tính thực sự giữa đầu vào và đầu ra qua hộp nén Sa càng có ý nghĩa hơn đối với thám mã.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Bây giờ, căn cứ vào (2.4) và tính đến các phép mở rộng E và hoán vị P trong hàm vòng F ta sẽ nhận đƣợc phƣơng trình tuyến tính sau đúng với xác suất 0,19 khi khóa K cố định và X ngẫu nhiên:

X[15] F(X, K)[7, 18, 24, 29] = K[22] (2.5) Trong (2.5), ta có thể thấy giá trị X[15] K[22] chính là bit đầu vào thứ tƣ của S5, còn F(X, K)[7, 18, 24, 29] chính là giá trị XOR của 4 bits đầu ra cũng của hộp S5 đó.

Bằng việc khảo sát toàn bộ 8 hộp nén của DES, phƣơng trình (2.4) là một xấp xỉ tuyến tính hiệu quả nhất đối với tất cả các hộp S, và do đó phƣơng trình (2.5) sẽ là một xấp xỉ tốt nhất của hàm vòng.

5 xấp xỉ tuyến tính tốt nhất đối với các hộp nén của DES nhƣ sau : A: X[15] F(X, K)[7, 18, 24,29] = K[22], p = 12/64; B: X[27, 28, 30, 31] F(X, K)[15] = K[42, 43, 45, 46], p = 22/64; C: X[29] F(X, K)[15] = K[44], p = 30/64; D: X[15] F(X, K)[7, 18, 24] = K[22], p = 12/64; E: X[12, 16] F(X, K)[7, 18, 24] = K[19, 23], p = 15/64.

Các xấp xỉ tuyến tính trên đây sẽ đƣợc sử dụng để tấn công DES trong từng trƣờng hợp cụ thể, ở đây chúng tôi chỉ nêu một số ví dụ minh họa cho kiểu tấn công này.

2.2.2.3 Xấp xỉ tuyến tính hệ mã DES

Trong phần này ta sẽ mở rộng xấp xỉ tuyến tính của hàm vòng thành xấp xỉ tuyến tính cho chính hệ mã DES.

+ Đối với DES 3 vòng. (adsbygoogle = window.adsbygoogle || []).push({});

Trƣớc hết bằng cách áp phƣơng trình (2.5) vào vòng đầu tiên, chúng ta sẽ nhận đƣợc phƣơng trình sau đây đúng với xác suất 12/64:

X2[7, 18, 24, 29] PH[7, 18, 24, 29] PL[15] = K1[22] (2.6) Ta cũng nhận đƣợc kết quả nhƣ vậy khi thực hiện phép giải mã đối với bản mã C thông qua khóa K3, tức là ta có phƣơng trình sau đây đúng với xác suất 12/64:

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.6. Sơ đồ xấp xỉ tuyến tính hệ mã DES 3 vòng.

Kết hợp (2.6), (2.7) ta sẽ nhận đƣợc một biểu diễn xấp xỉ tuyến tính cho hệ mã DES 3 vòng nhƣ sau :

PH[7,18,24,29] CH[7,18,24,29] PL[15] CL[15] = K1[22] K3[22] (2.8) Xác suất để có phƣơng trình (2.8) có thể đƣợc tính nhƣ sau, với giả thiết P là bản rõ ngẫu nhiên còn C là bản mã tƣơng ứng với một khóa K cố định.

Trƣớc hết ta có thấy (2.6) có thể đƣợc phát biểu tƣơng đƣơng với :

X2[7,18,24,29] PH[7,18,24,29] PL[15] K1[22] = 0, p=12/64 và X2[7,18,24,29] PH[7,18,24,29] PL[15] K1[22] = 1, p=1-12/64 Tƣơng tự với (2.7) ta có :

X2[7,18,24,29] CH[7,18,24,29] CL[15] K3[22] = 0, p=12/64 và X2[7,18,24,29] CH[7,18,24,29] CL[15] K3[22] = 1, p=1-12/64.

Vậy xác suất để có (2.8) có dạng xác suất để có tập hợp dạng (0 0) (1 1). Do đó xác suất này đúng bằng : F1 K1[22] X1[15] [7, 18, 24, 29] PH PL P = 64 bit F2 [7, 18, 24, 29] F3 [7, 18, 24, 29] K2[22] X2[15] X3[15] K3[22] CH CL C = 64 bit

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

(12/64) x (12/64) + (1-12/64) x (1-12/64) = 0,70 (2.9) Từ chỗ phƣơng trình (2.5) là xấp xỉ tuyến tính tốt nhất của hàm vòng F, nên (2.8) là biểu diễn tuyến tính tốt nhất đối với DES 3 vòng.

Áp dụng thuật toán 1 vào phƣơng trình (2.8) ta có thể tìm đƣợc bít khóa K1[22] K3[22].

+ Đối với DES 5 vòng.

Đối với hệ mã DES 5 vòng, trƣớc hết ta áp dụng phƣơng trình (2.5) vào các vòng thứ hai và thứ tƣ, còn các vòng thứ nhất và thứ năm sẽ sử dụng biểu diễn tuyến tính sau :

B: X[27, 28, 30, 31] F(X,K)[15]=K[42,43,45,46], p = 22/64 (2.10) xuất phát từ hệ thức NS1(27, 4) = 22.

Cách áp dụng các biểu thức tuyến tính A hay B trên đây cũng giống nhƣ trong trƣờng hợp DES 3 vòng. Tức là đối với các vòng thứ nhất và thứ hai ta coi X là bản rõ P, còn đối với vòng thứ năm và thứ tƣ ta coi X là bản mã C và thực hiện phép giải mã ngƣợc trở lại tới vòng thứ ba nhờ sử dụng các khóa K5 và K4. Khi đó phối hợp các kết quả lại ta sẽ thu đƣợc biểu diễn xấp xỉ tuyến tính tốt nhất cho hệ DES 5 vòng nhƣ sau :

PH[15] PL[7,18,24,27,28,29,30,31] CL[7,18,24,27,28,29,30,31] =

K1[42,43,45,46] K2[22] K4[22] K5[42,43,45,46] (2.11) Để tính xác suất cho phƣơng trình (2.11) ta sẽ sử dụng bổ đề sau đây:

Bổ đề 2.9

Giả sử Xi (1 i n) là các biến ngẫu nhiên độc lập, nhận giá trị 0 với xác suất p hoặc nhận giá trị 1 với xác suất (1-p). Khi đó xác suất để cho X1 X2 ... Xn = 0 sẽ bằng n i i n p 1 1 ). 2 1 ( 2 2 1

Bổ đề trên có thể đƣợc chứng minh bằng quy nạp và đƣợc gọi là bổ đề Piling-up. Áp dụng bổ đề ta thấy phƣơng trình (2.11) đúng với xác suất :

½ + 23(-10/64)2(-20/64)2 = 0,519

Bằng cách thức đã liệt kê ra các biểu diễn xấp xỉ tuyến tính tốt nhất đối với hệ DES tới 20 vòng. Ví dụ biểu diễn tuyến tính tốt nhất cho DES 8 vòng có dạng sau :

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

PH[7,18,24] P1[12,16] CH[15] CL[7,18,24,29,27,28,30,31] =

K1[19,23] K3[22] K4[44] K5[22] K7[22] K8[42,43,45,46] (2.13) đúng với xác suất p = ½ - 1,22 x 2-11

.

Biểu diễn tuyến tính tốt nhất cho DES 16 vòng có dạng :

PH[7,18,24] PL[12,16] CH[15] CL[7,18,24,29,27,28,30,31] = K1[19,23] K3[22] K4[44] K5[22] K7[22] K8[44] K9[22] K11[22] K12[44] K13[22] K15[22] K16[42,43,45,46] (2.14) (adsbygoogle = window.adsbygoogle || []).push({});

đúng với xác suất ½ - 1,49 x 2-24

.

Hình 2.7. Sơ đồ xấp xỉ tuyến tính hệ mã DES 5 vòng.

F1 K1[42,43,45,46] X1[27,28,30,31] [15] PH PL P = 64 bit F2 [7, 18, 24, 29] K2[22] X2[15] CH CL C = 64 bit F3 [7, 18, 24, 29] K3[22] X3[15] F4 [7, 18, 24, 29] K4[22] X4[15] F5 [15] X5[27,28,30,31] K5[42,43,45,46] p = 22/64 p = 12/64 p = 12/64 p = 22/64

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

2.2.2.4 Tấn công bản rõ đã biết đối với hệ mã DES

Sử dụng các biểu diễn xấp xỉ tuyến tính tốt nhất đã nghiên cứu trong phần trên, ta sẽ trình bày phƣơng pháp tấn công bản rõ đã biết đối với hệ DES.

* VỚI DES 8-VÒNG

Sử dụng thuật toán 1 áp vào phƣơng trình (2.13) ta sẽ thu đƣợc hệ thống phƣơng

trình để tìm ra tổng của 10 bít khóa K1[19], K1[23], K3[22], K4[44], K5[22], K7[22], K8[42], K8[43], K8[45], K8[46], để làm đƣợc điều đó ta phải sử dụng cỡ 1,22-2.222 221 bản rõ đã biết mới có thể thiết lập đƣợc hệ thống phƣơng trình cần thiết. Tuy nhiên để tăng hiệu quả tấn công tuyến tính ta sẽ thiết lập các điều kiện để sử dụng thuật toán 2.

Sử dụng thuật toán 2 : Để tấn công DES 8 vòng, ta sẽ sử dụng biểu diễn tuyến

tính tốt nhất đối với DES 7 vòng, còn vòng thứ tám dùng để giải mã bản mã C dùng khóa K8. Khi đó ta sẽ thu đƣợc biểu diễn tuyến tính tốt nhất đối với DES tám vòng có dạng sau :

PH[7,18,24] PL[12,16] CH[15] CL[7,18,24,29] F8(CL,K8)[15] =

K1[19,23] K3[22] K4[44] K5[22] K7[22] (2.15) đúng với xác suất ½ + 1,95 x 2-10.

Phƣơng trình này chứa khóa con 48 bit K8, tuy nhiên chỉ có 6 bits khóa thực sự tác động tới hàm vòng F8(CL, K8)[15] đó là các bit khóa K8[42], K8[43], K8[44], K8[45], K8[46], K8[47]. Do đó ta cần 64 bộ đếm để thực hiện theo thuật toán 2, nhằm mục đích tìm ra 6-bit khóa con của K8 đã đƣợc sử dụng thực sự trong mã dịch. Tóm lại, nếu áp dụng thuật toán 2 vào phƣơng trình (2.15) ta sẽ thu đƣợc hệ thống phƣơng trình tuyến tính để tìm ra đƣợc 06 bit khóa là K8[42], K8[43], K8[44], K8[45], K8[46], K8[47]; và tổng của các bit khóa : K1[19], K1[23], K3[22], K4[44], K5[22], K7[22], bằng việc sử dụng khoảng 220 bản rõ đã biết.

* VỚI DES 16 VÒNG

Tƣơng tự nhƣ phƣơng pháp tấn công DES 8 vòng, để tấn công DES 16 vòng ta sẽ sử dụng biểu diễn tuyến tính tốt nhất đối với DES 15 vòng, còn vòng thứ 16 dùng để

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

giải mã bản mã C dùng khóa K16. Khi đó ta thu đƣợc biểu diễn tuyến tính tốt nhất đối với DES 16 vòng có dạng sau :

PH[7,18,24] PL[12,16] CH[15] CL[7,18,24,29] F16(CL,K16)[15] =

K1[19,23] K3[22] K4[44] K5[22] K7[22] K8[44] K9[22] K11[22] K12[44] K13[22] K15[22] p = ½ + 1,19 x 2-22 (2.16) Sử dụng thuật toán 2 ta sẽ thu đƣợc hệ thống phƣơng trình tuyến tính để tìm ra 06 bits khóa sau : K16[42], K16[43], K16[44], K16[45], K16[46], K16[47]; cùng với bit tổng của K1[19], K1[23], K3[22], K4[44], K5[22], K7[22], K8[44], K9[22], K11[22], K12[44], K13[22], K15[22], bằng cách sử dụng khoảng 8 x (1,19 x 2-22

)-2 247 bản rõ đã biết. Tƣơng tự ta có thể tìm đƣợc 06 bits khóa tại vòng đầu tiên và bít khóa tổng tƣơng ứng. Nhƣ vậy, với DES 16 vòng ta có thể dùng tấn công tuyến tính để tìm đƣợc 14 bits khóa trong số 56 bits. Các bits khóa còn lại sẽ thám bằng phƣơng pháp vét cạn, và rõ ràng tổng độ phức tạp tính toán sẽ nhỏ hơn phƣơng pháp vét cạn toàn bộ không gian khóa 256.

2.2.3. Thám mã phi tuyến đối với DES

Nhƣ chúng ta đã biết, không có quan hệ tuyến tính nào giữa đầu ra và đầu vào của các hộp S của DES. Mặt khác bằng cách biểu diễn các hộp S nhƣ là các đa thức Boolean thì dễ dàng có thể thiết lập các quan hệ đại số nào đó giữa các bít đầu ra và đầu vào của các hộp S. Chúng ta cũng biết rằng bậc của các đa thức này có bậc nhỏ hơn hay bằng 6. Do đó một cách tự nhiên bài toán sau đây có thể đƣợc đặt ra : Bậc nhỏ nhất trong các quan hệ đại số của các hộp S là bao nhiêu và quan hệ đại số nào có bậc nhỏ nhất ? Có thể thấy rằng luôn tồn tại một quan hệ bậc 3 trong tất cả các hộp S.

Một phần của tài liệu tìm hiểu chuẩn mật mã dữ liệu des (data encryption standard) và đánh giá độ an toàn (Trang 48 - 70)