Tải bản đầy đủ (.doc) (23 trang)

BÀI tập lớn môn lý THUYẾT mật mã và bảo mật THÔNG TIN đề tài (đề 5) a tutorial on linear and differential cryptanalysis (differential cryptanalysis)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (721.25 KB, 23 trang )

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
----

----

BÀI TẬP LỚN
MÔN: LÝ THUYẾT MẬT MÃ VÀ BẢO MẬT THÔNG TIN
Đề tài (đề 5):

A Tutorial on Linear and Differential Cryptanalysis
(Differential Cryptanalysis)

Giảng viên hướng dẫn: PGS.TS. Nguyễn Hiếu Minh
Học viên thực hiện:

2// Phạm Xuân Dưỡng
3/ Lê Đăng Hòa
3/ Đinh Văn Thế
3/ Lương Mạnh Cường

Lớp:

Cao học CNTT – K22

1


Hướng dẫn về thám mã tuyến tính và thám mã vi sai
Howard M. Heys
Điện và Kỹ thuật Máy tính


Khoa Kỹ thuật và Khoa học ứng dụng
Đại học Memorial của Newfoundland
St. John’s, NF, Canada A1B 3X5
email:
Tóm tắt: Trong bài báo này, chúng tơi trình bày một hướng dẫn chi tiết
về thám mã tuyến tính và thám mã sự vi sai, hai loại tấn công quan trọng nhất áp
dụng đối với những thuật tốn mật mã khối khóa đối xứng. Mục đích của bài
báo là trình bày một lời giải thích dễ hiểu cho các thám mã mới học làm quen
với các khái niệm về các loại tấn công và chi tiết các ứng dụng thực tế của các
loại tấn công bản mã một cách đơn giản. Hướng dẫn này dựa trên phân tích dễ
hiểu trên cấu trúc mã hóa của mạng hoán vị - thay thế ( Substitution-Permutation
Network - SPN) cơ bản. Việc hiểu biết về các loại tấn công khi nó áp dụng đối
với cấu trúc này là hữu ích, vì như mã hóa Rijndael, gần đây đã được lựa chọn
cho chuẩn mã hóa nâng cao (Advanced Encryption Standard - AES), đã được
bắt nguồn từ kiến trúc SPN cơ bản. Đồng thời, dữ liệu thử nghiệm từ các loại tấn
công được trình bày là một sự xác nhận khả năng ứng dụng của các khái niệm
như đã nêu.

2


1. Giới thiệu
Trong bài báo này, chúng tơi trình bày một hướng dẫn về hai kỹ thuật
thám mã mạnh mẽ áp dụng cho những hệ mật mã khối khóa đối xứng: thám mã
tuyến tính [1] và thám mã vi sai[2]. Thám mã tuyến tính đã được giới thiệu bởi
Matsui tại EUROCRYPT '93 như một loại tấn công lý thuyết trên chuẩn mã hóa
dữ liệu (Data Encryption Standard - DES) [3] và sau đó sử dụng thành cơng
trong thám mã thực tế của DES [4]; thám mã vi sai lần đầu tiên được trình bày
bởi Biham và Shamir tại CRYPTO ’90 để tấn công DES và cuối cùng các chi
tiết của cuộc tấn cơng đã được đóng gói vào một cuốn sách [5]. Mặc dù mục tiêu

ban đầu của cả hai loại tấn công là DES nhưng khả năng ứng dụng rộng rãi của
chúng vào rất nhiều những thuật toán mật mã khối khác đã củng cố tính ưu việt
của cả hai kỹ thuật thám mã trong việc xem xét sự an tồn của tất cả các loại
mật mã khối. Ví dụ, gần đây nhiều ứng cử viên đã đệ trình cho cách thức AES
đảm nhận bởi Viện Tiêu chuẩn và Công nghệ (Institute of Standards and
Technology)[6] được thiết kế bằng cách sử dụng các kỹ thuật nhằm mục tiêu đặc
biệt cản trở việc thám mã tuyến tính và thám mã vi sai. Điều này là hiển nhiên,
ví dụ, trong mật mã Rijndael [7], các thuật tốn mã hóa lựa chọn để đạt các tiêu
chuẩn mới. Các khái niệm thảo luận trong bài báo này có thể được sử dụng để
hình thành một sự hiểu biết ban đầu cần thiết để hiểu các nguyên tắc thiết kế và
phân tích sự bảo mật của mã hóa Rijndael, cũng như nhiều thuật tốn mã hóa
khác được đề xuất trong những năm gần đây.
Bài báo có cấu trúc như một hướng dẫn, và như vậy, được dự định để
khơng cần chính xác chặt chẽ quá. Bài báo giới thiệu các khái niệm cơ bản về
thám mã tuyến tính và thám mã vi sai nhưng khơng có nghĩa là một tài liệu cuối
cùng để hiểu biết tất cả các tinh túy và cải tiến về các loại tấn cơng trong những
năm qua. Mục đích cơ bản của bài báo là sử dụng một cấu trúc mật mã đơn giản
nhưng có phần thực tế để nghiên cứu các khái niệm cơ bản nhất của hai loại tấn
cơng. Có các cuộc thảo luận khác chính thức hơn về chủ đề này. Ví dụ, tổng
quan về các cuộc tấn cơng áp dụng cho SPN (cấu trúc mã hóa được xem xét
trong bài báo này) được trình bày trong [8] và [9]. Để tìm hiểu về một giới thiệu
chung và các phân tích về mật mã khối , xem [10].

3


2. Cơ bản về mạng hoán vị - thay thế (SPN)
Các thuật tốn mã hóa mà chúng ta sẽ sử dụng để trình bày các khái niệm
là một SPN cơ bản. Chúng tôi sẽ tập trung thảo luận trên một thuật tốn mã hóa,
minh họa trong Hình 1, có một khối đầu vào 16-bit và xử lý khối bằng này bằng

cách lặp lại các hoạt động cơ bản của bốn vịng. Mỗi vịng bao gồm (1) thay thế,
(2) hốn vị của các bit (hốn vị vị trí của các bit), và (3) trộn khóa. Cấu trúc cơ
bản này đã được trình bày bởi Feistel vào năm 1973 [15] và các hoạt động cơ
bản này là tương tự như những gì được tìm thấy trong DES và nhiều thuật tốn
mã hóa hiện đại khác, bao gồm Rijndael. Do đó, mặc dù chúng tơi đang xem xét
một cấu trúc có phần khá đơn giản nhưng sự phân tích của cuộc tấn cơng trên
thuật tốn mã hóa như vậy đã trình bày cái nhìn sâu sắc có giá trị vào sự an tồn
của các cơng trình nghiên cứu lớn hơn, thiết thực hơn.
2.1. Thay thế
Trong thuật tốn mã hóa này, chúng tơi chia khối dữ liệu 16-bit thành bốn
khối con, mỗi khối 4-bit. Mỗi khối con tạo thành một đầu vào cho một hộp S
4x4 (một sự thay thế với 4 bit đầu vào và 4 bit đầu ra), mỗi hộp này có thể được
thực hiện dễ dàng với một bảng tra cứu có mười sáu giá trị 4-bit, tạo thành bảng
các số nguyên miêu tả bởi 4 bit đầu vào. Đặc tính quan trọng nhất của một hộp S
là một ánh xạ phi tuyến, tức là, các bit đầu ra không thể có quan hệ hàm tuyến
tính với các bit đầu vào.
Đối với thuật tốn mã hóa, chúng ta sẽ sử dụng ánh xạ phi tuyến cho tất
cả các hộp S. (Trong DES tất cả các hộp S trong một vòng khác nhau, trong khi
tất cả các vòng sử dụng cùng một tập hợp hộp S.) Các cuộc tấn công của thám
mã tuyến tính và thám mã vi sai áp dụng như nhau cho dù có một ánh xạ hoặc
tất cả các hộp S là các ánh xạ khác nhau. Ánh xạ lựa chọn cho thuật toán mật mã
được đưa ra trong Bảng 1, được chọn từ các hộp S của DES. (Đây là dòng đầu
tiên của hộp S đầu tiên). Trong bảng, bit quan trọng nhất của các ký hiệu hệ 16
đại diện cho bit tận cùng bên trái của hộp S trong Hình 1.

Bảng 1. Sự miêu tả hộp S (trong hệ 16)

4



2.2. Hốn vị
Phần hốn vị của một vịng chỉ đơn giản là thay đổi vị trí của các bit hoặc
hốn vị của các vị trí bit. Sự hốn vị của hình 1 được đưa ra trong Bảng 2 (các
con số đại diện cho các vị trí bit trong khối, với 1 là bit tận cùng bên trái và 16 là
bit ngồi cùng bên phải) và có thể được mơ tả một cách đơn giản là: đầu ra i của
hộp j được kết nối tới đầu vào j của hộp i. Lưu ý rằng khơng có hốn vị ở vịng
cuối cùng.

Bảng 2. Hoán vị

5


Hình 1. SPN cơ bản

6


2.3. Trộn khóa
Để hồn tất q trình trộn khóa, chúng tơi sử dụng hàm XOR giữa các bit
khóa kết hợp với một vịng (gọi là một khóa con) và các khối dữ liệu đầu vào
cho vịng đó. Cứ như vậy một khóa con được áp dụng tiếp tiếp theo tới vòng
cuối cùng, đảm bảo rằng lớp cuối cùng của sự thay thế không được thám mã dễ
dàng bỏ qua mà chỉ đơn thuần là phải hoạt động từ sự thay thế ở vịng cuối cùng
quay ngược lên trên. Thơng thường, trong một thuật tốn mã hóa, khóa con cho
một vịng được tạo ra từ khóa chính của thuật tốn mã hóa thơng qua một q
trình được gọi là sinh khóa. Trong thuật tốn mã hóa này chúng tơi sẽ giả định
rằng tất cả các bit của khóa con được độc lập tạo ra và khơng liên quan tới thuật
tốn.
2.4. Giải mã

Để giải mã, về bản chất dữ liệu được đi qua hệ thống SPN theo chiều
ngược lại. Do đó, giải mã cũng có dạng của một SPN như minh họa trong Hình
1. Tuy nhiên, các ánh xạ sử dụng trong các hộp S của hệ thống giải mã là nghịch
đảo của các ánh xạ trong hệ thống mã hóa (ví dụ, đầu vào sẽ trở thành đầu ra,
đầu ra sẽ trở thành đầu vào). Điều này có nghĩa rằng để một SPN có thể giải mã
được thì tất cả các S-hộp phải là một ánh xạ một-một giữa các đầu vào và các bit
đầu ra. Đồng thời, để hệ thống giải mã đúng thì những khóa con được áp dụng
theo thứ tự ngược lại (K5, K4, K3, K2, K1) và các bit của các khóa con phải
được di chuyển xung quanh theo các hoán vị. Cũng lưu ý rằng việc thiếu hốn vị
sau vịng cuối cùng đảm bảo rằng hệ thống giải mã có thể có cấu trúc tương tự
như hệ thống mã hóa. (Nếu có một hốn vị sau lớp thay thế cuối cùng trong q
trinh mã hóa thì q trình giải mã sẽ u cầu một hốn vị trước lớp thay thế đầu
tiên.)

7


4. Thám mã vi sai
Trong phần này, chúng ta xoay quanh chủ đề ứng dụng của thám mã vi sai
tác động vào hệ mật SPN cơ bản.
4.1.Tổng quan về tấn công cơ bản
Thám mã vi sai khai thác sự xảy ra xác suất cao của các sai phân (sự khác
nhau) của bản rõ và các sai phân vào vòng cuối cùng của thuật tốn mật mã. Ví
dụ, hãy xem xét một hệ thống với đầu vào X = [X1X2 ... Xn] và đầu ra Y =
[Y1Y2 ... Yn]. Cho hai đầu vào hệ thống là X và X "với các kết quả đầu ra
tương ứng là Y và Y". Sai phân đầu vào được cho bởi ΔX = X' X = X'  X'' ở đó "  "
đại diện cho phép XOR (hoặc có loại trừ) của các véc tơ n-bit, và do đó,
ΔX = X' X = [ΔX = X' X1 ΔX = X' X2 … ΔX = X' Xn]
ở đó ΔX = X' X = Xi'  Xi'' với Xi' và Xi'' đại diện cho bit thư i của X' và X''.
Tương tự như vậy, ΔX = X' Y = Yi'  Yi'' là sai phân của đầu ra và

ΔX = X' Y = [ΔX = X' Y1 ΔX = X' Y2 … ΔX = X' Yn]
ở đó ΔX = X' Y = Yi'  Yi''
Trong một thuật tốn mã hóa lý tưởng ngẫu nhiên, xác suất sai phân của
một đầu ra ΔX = X' Y xảy ra phụ thuộc vào sai phân của đầu vào ΔX = X' X là 1/2 n trong đó n
là số bit của X. Thám mã vi sai tìm cách khai thác một kịch bản mà một ΔX = X' Y xảy
ra phụ thuộc vào sai phân của đầu vào ΔX = X' X với một xác suất rất cao p D (nghĩa là
lớn hơn nhiều so với 1/2n). Cặp (ΔX = X' X, ΔX = X' Y) được gọi là một chênh lệch (vi sai).
Thám mã vi sai là một loại tấn cơng bản rõ chọn lựa, có nghĩa là kẻ tấn
cơng có thể chọn các đầu vào và kiểm tra kết quả các đầu để cố gắng lấy được
khóa mã. Để thám mã vi sai, những kẻ tấn công sẽ lựa chọn các cặp đầu vào X'
và X" để tính tốn một ΔX = X' X cụ thể, biết rằng đối với giá trị ΔX = X' X này thì một giá trị
ΔX = X' Y cụ thể nào đó xảy ra với xác suất cao.

8


Trong bài báo này, chúng tôi nghiên cứu việc xây dựng một vi sai (ΔX = X' X,
ΔX = X' Y) liên quan đến các bit của bản rõ X và đầu vào của vịng cuối cùng của thuật
tốn mã hóa Y. Chúng ta sẽ làm điều này bằng cách kiểm tra các đặc trưng vi sai
có khả năng cao ở đó một đặc trưng vi sai là một chuỗi các sai phân của đầu vào
và đầu ra tới các vịng với mục đích là sai phân đầu ra từ một vòng tương ứng
với sai phân đầu vào cho vòng tiếp theo. Việc sử dụng đặc trưng vi sai có khả
năng cao cho chúng ta cơ hội để khai thác thơng tin vào vịng cuối cùng của
thuật tốn mật mã để lấy được các bit từ lớp cuối cùng của các khóa con.
Cũng như thám mã tuyến tính, để xây dựng các đặc trưng vi sai có khả
năng cao, chúng tơi kiểm tra các thuộc tính của các hộp S riêng biệt và sử dụng
các thuộc tính để xác định đặc trưng vi sai đầy đủ. Một cách cụ thể, chúng ta
xem xét các sai phân đầu vào và đầu ra của các hộp S để xác định một cặp sai
phân có xác suất cao. Kết hợp các cặp sai phân hộp S từ vòng nọ đến vòng kia
để các bit sai phân đầu ra khác khơng từ một vịng tương ứng với các bit sai

phân đầu vào khác không của vịng tiếp theo, cho phép chúng tơi tìm ra vi sai có
xác xuất cao của sai phân bản rõ và sai phân đầu vào đến vòng cuối cùng. Các
bit khóa con của thuật tốn mã hóa kết thúc biến mất từ biểu thức vi sai bởi vì
nó được tham gia vào cả hai tập dữ liệu, và do đó, xem xét ảnh hưởng của nó về
sự sai phân liên quan đến phép XOR với chính nó, kết quả là số khơng.
4.2 Phân tích các thành phần của thuật tốn mã hóa
Bây giờ chúng ta kiểm tra tại các cặp sai phân của một hộp S. Xem xét
hộp S 4x4 ở hình 2 với đầu vào X = [X 1X2X3X4] và đầu ra Y = [Y1Y2Y3Y4]. Tất
cả các cặp vi sai của một hộp S, (ΔX = X' X, ΔX = X' Y), có thể được kiểm tra và xác suất của
ΔX = X' Y đưa ra ΔX = X' X có thể được bắt nguồn bằng việc xem xét từng cặp đầu vào (X',
X") với X'  X" = ΔX = X' X. Vì thứ tự của phép tốn là không quan trọng nên với
mỗi hộp S 4x4 chúng ta chỉ cần xem xét tất cả 16 giá trị cho X' và sau đó giá trị
của ΔX = X' X buộc giá trị của X" theo công thức X" = X'  ΔX = X' X.

9


Xem xét các hộp S của thuật tốn mã hóa được đưa ra tại mục 2, chúng ta
có thể lấy được các giá trị kết quả của ΔX = X' Y cho mỗi cặp đầu vào (X', X'' = X' 
ΔX = X' X).Ví dụ, các giá trị nhị phân của X, Y, và các giá trị tương ứng ΔX = X' Y cho các
cặp đầu vào đã biết (X, X  ΔX = X' X) được trình bày trong Bảng 6 với các giá trị
ΔX = X' Xlà 1011 (tương đương B hệ 16), 1000 (tương đương 8 hệ 16), và 0100
(tương đương 4 hệ 16). Ba cột cuối của bảng biểu diễn cho các giá trị ΔX = X' Y tương
ứng với giá trị của X (đưa ra bởi hàng) và giá trị ΔX = X' X cụ thể cho mỗi cột. Từ
bảng, chúng ta có thể thấy rằng số lượng xuất hiện của ΔX = X' Y = 0010 với ΔX = X' X =
1011 là 8 trong số 16 giá trị có thể (tức là, xác suất 8/16), số lần xuất hiện của
ΔX = X' Y = 1011 cho ΔX = X' X = 1000 là 4 trong số 16, số lượng xuất hiện của ΔX = X' Y = 1010
cho ΔX = X' X = 0100 là 0 trong số 16. Nếu hộp S có thể là "lý tưởng", số lần xuất hiện
của các giá trị cặp sai phân đều là 1 với một xác suất 1/16 của sự xuất hiện của
một giá trị ΔX = X' Y cụ thể cho ΔX = X' X đã biết.

Chúng ta có thể xếp thành bảng dữ liệu hoàn chỉnh cho một hộp S trong
một bảng phân phối sai phân, trong đó các hàng đại diện cho các giá trị ΔX = X' X
(trong hệ 16) và các cột đại diện cho các giá trị ΔX = X' Y (trong hệ 16). Bảng phân
phối sai cho hộp S của Bảng 1 được đưa ra trong Bảng 7. Mỗi phần tử của bảng
đại diện cho số lần xuất hiện của giá trị sai phân đầu ra ΔX = X' Y tương ứng với giá trị
sai phân đầu vào ΔX = X' X đã biết. Lưu ý rằng, bên cạnh trường hợp đặc biệt (ΔX = X' X = 0,
ΔX = X' Y = 0), giá trị lớn nhất trong bảng là 8, tương ứng với ΔX = X' X = B và ΔX = X' Y = 2. Do
đó, xác suất ΔX = X' Y = 2 cho một cặp tùy ý các giá trị đầu vào thỏa mãn ΔX = X' X = B là
8/16. Giá trị nhỏ nhất trong bảng là 0 và xảy ra đối với nhiều cặp sai phân.
Trong trường hợp này, xác suất xảy ra của các giá trị ΔX = X' Y với giá trị ΔX = X' X đã biết
là 0.

10


Bảng 6. Ví dụ về các cặp sai phân của hộp S

Bảng 7. Bảng phân phối sai phân

11


Có một số thuộc tính chung của bảng phân phối sai phân nên được đề cập.
Đầu tiên, nên lưu ý rằng tổng của tất cả tất cả các thành phần trên một dòng là
2n=16, tương tự như tổng của tất cả tất cả các thành phần trên một cột bất kỳ là
2n = 16. Ngoài ra, tất cả các giá trị thành phần là chẵn, có kết quả này bởi vì một
cặp các giá trị đầu vào (hoặc đầu ra) đại diện cho (X ', X ") có giá trị ΔX = X' X giống
như cặp (X'', X') do ΔX = X' X = X'  X'' = X''  X'. Đồng thời, sai phân đầu vào của
ΔX = X' X = 0 phải dẫn đến một sai phân đầu ra ΔX = X' Y = 0 thỏa ánh xạ một - một của hộp
S. Do đó, góc trên bên trái của bảng có một giá trị của 2 n = 16 và tất cả các giá

trị khác trong hàng đầu tiên và cột đầu tiên là 0. Cuối cùng, nếu chúng ta có thể
xây dựng một S lý tưởng mà không đưa ra thông tin sai phân về giá trị đầu ra
với đầu vào đã biết thì hộp S sẽ có tất cả các thành phần trong bảng bằng 1 và
xác suất xảy ra của một giá trị cụ thể cho ΔX = X' Y với một giá trị ΔX = X' X cụ thể đã biết
sẽ là 1/2n = 1 / 16. Tuy nhiên với các thuộc tính thảo luận ở trên phải giữ vững
thì điều này rõ ràng là không thể thực hiện được.
Trước khi chúng tôi tiến hành thảo luận về sự kết hợp của các cặp vi sai
của hộp S để lấy được một đặc trưng vi sai và ước tính của một vi sai tốt để sử
dụng trong cuộc tấn cơng thì chúng ta phải thảo luận về ảnh hưởng của khóa
trên vi sai hộp S. Hãy xem xét hình 4. Đầu vào hộp S khơng có khóa là X và đầu
ra là Y. Tuy nhiên, trong cấu trúc của thuật toán mã hóa chúng ta phải xem xét
các khóa áp dụng tại các đầu vào của mỗi hộp S. Trong trường hợp này, nếu
chúng ta để cho đầu vào cho các hộp S có khóa là W = [W1 W2 W3 W4], chúng ta
có thể xem xét sai phân đầu vào cho hộp S có khóa như sau:
 W = [W'1  W''1 W'2  W''2 … W'n  W''n]

Ở đó W' = [W'1W'2...W'n] và W'' = [W''1W''2...W''n] đại diện cho hai giá trị
đầu vào.
Các bit khóa giữ nguyên giống nhau cho cả W' và W'',
 Wi = W'i  W''i = (X'i  Ki)  (X''i  Ki)

Vì Ki  Ki = 0, do đó các bit khóa khơng ảnh hưởng đến giá trị sai phân
đầu vào và có thể được bỏ qua. Nói cách khác, hộp S có khóa có bảng phân phối
sai phân như hộp S khơng khóa.

12


Hình 4. Hộp S có khóa
4.3. Xây dựng các đặc trưng sai phân

Một khi các thông tin sai phân đã được biên dịch cho S-hộp trong SPN,
chúng tơi có dữ liệu để tiến hành xác định một đặc trưng sai phân hữu ích của
thuật tốn mã hóa tổng thể. Điều này có thể được thực hiện bằng cách nối các
cặp sai phân thích hợp của hộp S. Bằng cách xây dựng một đặc trưng sai phân
của các cặp sai phân của hộp S trong mỗi vòng, như vậy một sai phân liên quan
đến các bit của bản rõ và các bit dữ liệu đầu vào của vòng cuối cùng của hộp S,
nó có thể tấn cơng các thuật tốn mã hóa bằng cách khơi phục một tập con của
các bit khóa con sau vịng cuối cùng. Chúng tơi minh họa việc xây dựng một đặc
trưng vi sai với một ví dụ.
Hãy xem xét một đặc trưng vi sai bao gồm S 12, S23, S32, S33. Như trường
hợp thám mã tuyến tính, nó rất hữu ích để hình dung đặc trưng vi sai trong dạng
của một sơ đồ như trong hình 5. Sơ đồ minh họa các ảnh hưởng của các sai phân
khác khơng trong các bit khi nó đi qua hệ thống, hoạt động của nó là các đường
tơ đậm qua các hộp S (ví dụ, cho một vi sai khác không). Lưu ý rằng điều này
phát triển một đặc trưng vi sai cho 3 vòng đầu tiên của thuật tốn mã hóa và
khơng phải là 4 vịng đầy đủ. Chúng ta sẽ thấy cách này là hữu ích trong việc
nhận được các bit từ khóa con cuối cùng trong phần tiếp theo.
Chúng tôi sử dụng cặp sự vi sai sau đây của hộp-S:
S12:  X = B →  Y = 2

với xác xuât 8/16

S23:  X = B →  Y = 2

với xác xuât 6/16
13


S32:  X = B →  Y = 2


với xác xuât 6/16

S33:  X = B →  Y = 2

với xác xuât 6/16

Tất cả các hộp S khác sẽ có sai phân đầu vào là 0 và kết quả sai phân đầu
ra cũng là 0.
Sai phân đầu vào của thuật tốn mã hóa là tương đương với sai phân đầu
vào vòng đầu tiên và được cho bởi
 P =  U1 = [0000 1011 0000 0000]

Mặt khác, như trình bày của chúng tơi về thám mã tuyến tính tại mục 3,
chúng tôi sử dụng Ui đại diện cho đầu vào đến các hơp S ở vịng thứ i và V i đại
diện cho đầu ra của các hộp S ở vịng thứ i. Do đó, ΔX = X' U i và ΔX = X' Vi đại diện cho các
sai phân tương ứng. Kết quả là,
ΔX = X' Vi = [0000 0010 0000 0000]
Xem xét các cặp sai phân cho S12 ở trên và sau hốn vị vịng 1:
 U2 = [0000 0000 0100 0000]

 P = [0000 1011 0000 0000]

14


Hình 5. Ví dụ về đặc trưng vi sai
với xác suất 8/16 = 1/2 cho sai phân bản rõ ∆P
15



Bây giờ xác định vi sai vòng thứ hai sử dụng các cặp sai phân cho S23,
kết quả là:
ΔX = X' V2 = [0000 0000 0110 0000]
Và hoán vị của vòng 2 đem lại
ΔX = X' U3 = [0000 0010 0010 0000]
với xác suất 6/16 cho ΔX = X' U2 và xác suất 8/16 * 6/16 = 3/16 cho ΔX = X' P. Trong
việc xác định xác suất cho sai phân bản rõ ΔX = X' P, chúng tôi đã giả định rằng vi sai
của vòng đầu tiên là độc lập với vi sai giữa của vòng thứ 2, và do đó, xác suất
xảy ra cả hai được xác định bằng việc nhân các xác suất với nhau.
Sau đó, chúng ta có thể sử dụng các sai phân cho các hộp S của vòng thứ
ba, S32 và S33, và các hốn vị của vịng thứ ba để đi đến
ΔX = X' V3 = [0000 0101 0101 0000]

ΔX = X' U4 = [0000 0110 0000 0110]
với xác suất (6/16)2 cho ΔX = X' U3 và do đó, xác suất 8/16 * 6/16 * (6/16) 2 =
27/1024 cho sai phân bản rõ ΔX = X' P, ở đó một lần nữa chúng tôi đã giả định sự độc
lập giữa các cặp sai phân của các hộp S trong tất cả các vòng.
Trong q trình thám mã, có nhiều cặp bản rõ mà ΔX = X' P = [0000 1011 0000
0000] sẽ được mã hóa. Với xác suất cao, 27/1024, đặc trưng vi sai đã minh họa
sẽ xảy ra. Chúng tôi gọi cặp ΔX = X' P như như vậy là cặp đúng. Cặp sai phân bản rõ
mà đặc trưng này không xảy ra được gọi là cặp sai.
4.4. Trích xuất các bit khóa

16


Một khi một đặc trưng vi sai cho 1 vòng được khám phá cho một thuật
tốn mã hóa R vịng với một xác suất đủ lớn phù hợp, nó có thể nhận thức được
để tấn cơng các thuật tốn mã hóa bằng cách khơi phục các bit từ khóa con cuối
cùng. Trong trường hợp của thuật tốn mã hóa ví dụ của chúng tơi, nó có thể

trích xuất các bit từ khóa con K 5. Q trình tiếp theo liên quan một phần đến
việc giải mã vòng cuối cùng của thuật tốn mã hóa và việc kiểm tra đầu vào
vịng cuối cùng để xác định nếu một cặp đúng có thể xảy ra. Chúng ta sẽ đề cập
đến các bit của khóa con sau vịng cuối cùng tại đầu ra của hộp S ở vòng cuối
cùng chịu ảnh hưởng bởi các sai phân khác không trong vi sai đầu ra như phần
khóa con mục tiêu (target partial subkey). Phần giải mã của vòng cuối cùng sẽ
bao gồm, đối với tất cả các hộp S ở vòng cuối cùng chịu ảnh hưởng bởi các sai
phân khác không trong vi sai, phép XOR của bản mã với các bit của phần khóa
con mục tiêu và chạy các dữ liệu ngược trở lại thơng qua các hộp S, ở đó tất cả
các giá trị có thể cho các bit của khóa con mục tiêu sẽ được dùng.
Phần giải mã được thực hiện cho mỗi cặp bản mã tương ứng với các cặp
bản rõ sử dụng để tạo ra sai phân đầu vào ΔX = X' P cho tất cả các giá trị có thể của
phần khóa con mục tiêu. Một số đếm được giữ lại cho mỗi giá trị của giá trị
phần khóa con mục tiêu. Số đếm được tăng lên khi sai phân cho các đầu vào đến
vòng cuối cùng tương ứng với giá trị mong đợi từ đặc trưng vi sai. Giá trị khóa
con mà có số đếm lớn nhất được giả định để chỉ ra các giá trị chính xác của các
bit khóa. Thực hiện việc này bởi vì nó là giả định rằng giá trị khóa con chính xác
sẽ dẫn đến sai phân vào vòng cuối cùng là thường xuyên như mong đợi từ đặc
trưng (tức là, sự xuất hiện của một cặp đúng) vì đặc trưng có sự xảy ra xác suất
cao. (Khi một cặp sai xảy ra, ngay cả với phần giải mã với khóa con chính xác,
số đếm cho khóa con chính xác sẽ khơng được tăng lên.) Một khóa con khơng
chính xác được giả định là kết quả trong một ước chừng ngẫu nhiên tương đối
tại các bit vào các hộp S của vòng cuối cùng và kết quả là, sai phân sẽ được như
mong đợi từ đặc trưng với một xác suất rất thấp.

17


Xem xét cuộc tấn cơng trên thuật tốn mã hóa của chúng tôi, đặc trưng vi
sai ảnh hưởng đến các đầu vào cho các hộp S 42 và S44 trong vịng cuối cùng. Đối

với mỗi cặp mã, chúng tơi sẽ thử tất cả 256 giá trị cho [K5,5...K5,8, K5,13...K5,16].
Đối với mỗi giá trị một phần khóa con, chúng tơi sẽ tăng số đếm bất cứ khi nào
sai phân đầu vào vào vòng cuối cùng xác định bằng cách giải mã một phần như
(6), ở đó chúng tơi xác định giá trị của [ΔX = X' U 4,5 ... ΔX = X' U4,8, ΔX = X' U4,13 ... ΔX = X' U4,16] bằng
cách chạy các dữ liệu ngược trở lại thông qua các phần khóa con và các hộp S 24
và S44. Đối với mỗi giá trị phần khóa con, số đếm đại diện cho số lần xảy ra các
sai phân phù hợp với các cặp đúng (giả định rằng phần khóa con là chính xác).
Số đếm lớn nhất là thực hiện được giá trị đúng kể từ khi chúng tôi giả định rằng
chúng tôi đang theo dõi sự xảy ra xác suất cao của cặp đúng.
Lưu ý không cần thiết để thực hiện phần giải mã cho mỗi cặp bản mã. Do
đó sai phân đầu vào đến vịng cuối cùng chỉ ảnh hưởng đến 2 hộp S, khi đặc
trưng xảy ra (ví dụ, đối với cặp đúng), các sai phân bit bản mã tương ứng với
các hộp S41 và S43 phải là 0. Do đó, chúng ta có thể lọc ra nhiều cặp sai bằng việc
loại bỏ các cặp bản mã mà các số không không xuất hiện trong các khối con
thích hợp của sai phân bản mã. Do đó trong những trường hợp này, cặp bản mã
không thể tương ứng với một cặp đúng thì khơng cần thiết để kiểm tra [ΔX = X' U 4,5 ...
ΔX = X' U4,8, ΔX = X' U4,13 ... ΔX = X' U4,16].
Chúng tơi đã mơ phỏng việc tấn cơng thuật tốn mã hóa cơ bản của chúng
tơi bằng cách sử dụng các khóa con được tạo ngẫu nhiên bằng cách tạo ra 5000
cặp bản rõ/bản mã chọn lựa (tức là, 10000 mã hóa với các cặp bản rõ thỏa mãn
ΔX = X' P = [0000 1011 0000 0000]) và sau đó là q trình mơ tả ở trên. Giá trị phần
khóa con mục tiêu là [K5,5 ... K5,8, K5,13 ... K5,16] = [0010,0100] = [2,4] hex. Theo
dự kiến, số đếm lớn nhất được quan sát cho giá trị khóa con mục tiêu [2,4] hex,
xác nhận rằng cuộc tấn cơng thành cơng có nguồn gốc từ các bit của khóa con.
Bảng 8 nêu bật một phần bản tóm tắt của dữ liệu bắt nguồn từ các số đếm khóa
con. (Dữ liệu hồn chỉnh bao gồm 256 đầu vào dữ liệu, một đầu vào ứng với
mỗi giá trị một phần khóa con). Các giá trị trong bảng cho thấy xác suất ước tính
của sự xuất hiện của cặp đúng cho ứng viên của phần khóa con là:
prob = count / 5000 (xác suất = số đếm / 5000).
Ở đó số đếm là số đếm tương ứng với giá trị phần khóa con cụ thể .


18


Có thể nhìn thấy từ các kết quả mẫu của bảng, xác suất lớn nhất xảy ra
cho giá trị một phần khóa con [K5,5 ... K5,8, K5,13 ... K5,16] = [2,4] hex và điều này
trên thực tế tìm thấy là đúng đối với các tập đầy đủ các giá trị một phần khóa
con.
Trong ví dụ này, chúng tơi sẽ cho rằng xác suất của sự xuất hiện của cặp
đúng là pD = 27/1024 = 0.0264 và chúng tơi tìm thấy bằng thực nghiệm xác suất
cho giá trị khóa con chính xác [2,4] cho pD = 0,0244. Lưu ý rằng đôi khi các giá
trị đếm lớn khác xảy ra cho các phần khóa con mục tiêu khơng chính xác. Điều
này cho thấy rằng việc kiểm tra các phần khóa con mục tiêu khơng chính xác là
khơng đúng để so sánh các sai phân ngẫu nhiên với giá trị sai phân dự kiến. Có
một số yếu tố ảnh hưởng đến các số đếm khác nhau, sau đó đưa ra giả thuyết
mong đợi của chúng tơi bao gồm các thuộc tính hộp S ảnh hưởng đến một phần
giải mã cho các phần khóa con khác nhau, sự thiếu chính xác của giả định độc
lập cần thiết để xác định xác suất đặc trưng, và khái niệm rằng các vi sai bao
gồm rất nhiều đặc trưng vi sai (sẽ được thảo luận trong phần tiếp theo).

Table 8. Kết quả thực nghiệm đối với tấn công vi sai
4.5. Sự phức tạp của cuộc tấn công

19


Đối với thám mã vi sai, chúng tôi đề cập đến các hộp S liên quan đến một
đặc trưng có một sai phân đầu vào khác khơng (và do đó sai phân đầu ra khác
không) như các hộp S hoạt động. Nói chung, các xác suất vi sai của các hộp S
họat động càng lớn thì xác suất đặc trưng cho các thuật tốn mã hóa đầy đủ càng

lớn. Ngồi ra, các hộp S hoạt động càng ít thì xác suất đặc trưng càng lớn. Như
với thám mã tuyến tính, chúng tôi đề cập đến các dữ liệu cần thiết để sắp đặt
cuộc tấn công khi xem xét sự phức tạp của thám mã. Đó là, chúng tơi giả định
rằng nếu chúng ta có thể có được ND văn bản rõ để có thể xử lý chúng.
Nói chung là rất phức tạp để xác định chính xác số lượng các cặp bản rõ
chọn lựa cần thiết để sắp đặt cuộc tấn cơng. Tuy nhiên, có thể thấy rằng một quy
tắc cho số lượng các cặp bản rõ chọn lựa, N D, yêu cầu để phân biệt các cặp đúng
khi thử các khóa con ứng viên là
ND

c / p

(7)

D

Ở đó PD là xác suất đặc trưng vi sai cho 1 vòng của thuật tốn mã hóa R
vịng và c là một hằng số nhỏ. Giả sử rằng sự xuất hiện của các cặp sai phân
trong mỗi hộp S hoạt động là độc lập, xác suất đặc trưng vi sai được cho bởi:


pD =   i
i 1

(8)

Ở đó số lượng các hộp S hoạt động là  và sự suất hiện cặp sai phân cụ
thể trong hộp thứ i của đặc trưng một xác suất  i
Khơng khó để giải thích (7) là đúng. Nó đơn giản là chỉ ra rằng một vài
lần xuất hiện của các cặp đúng là đủ để đưa ra một số đếm về giá trị phần khóa

con mục tiêu chính xác là lớn hơn đáng kể so với các số đếm cho các giá trị
phần khóa con mục tiêu khơng chính xác. Do đó một cặp đúng được dự kiến sẽ
xảy ra cho mỗi 1/pD cặp được kiểm tra, trong thực tế, thơng thường nó là hợp lý
để sử dụng một số nhỏ lần 1/p D số cặp bản rõ chọn lựa để thành công trong việc
sắp đặt cuộc tấn công.
Phương pháp tiếp cận để cung cấp sự chống lại thám mã sự vi sai tập
trung vào các thuộc tính hộp S (tức là, giảm thiểu xác suất cặp vi sai của hộp S)
và tìm kiếm các cấu trúc để tối đa hóa số các hộp S hoạt động. Rijndael là một ví
dụ tốt về thuật toán mật mã thiết kế để chống lại thám mã sự vi sai.

20



×