TRÌNH BÀY VỀ PHƯƠNG PHÁP THÁM MÃ VI SAI Thám mã vi sai (Differential Cryptanalysis) thường là dạng tấn công dựa trên bản rõ được lựa chọn. Có nghĩa, người tấn công phải thu được các bản mã đã được mã hóa từtập các bản rõ được lựa chọn đó. Từ đó, phân tích sựkhác nhau giữa hai bản rõ ảnh hưởng nhưthếnào đến sựkhác nhau giữa hai bản mã tương ứng.
Trang 1MỤC LỤC
II Chuẩn mã hóa dữ liệu (Data Encryption Standard - DES) 4
IV Cơ sở khoa học của thám mã vi sai đối với DES 6
V Ví dụ về tấn công thám mã vi sai đối với DES một vòng 9
Trang 2I Tổng quan về thám mã vi sai
1.Khái niệm
Thám mã vi sai (Differential Cryptanalysis) thường là dạng tấn công dựa trên bản rõ được lựa chọn Có nghĩa, người tấn công phải thu được các bản mã đã được mã hóa từ tập các bản rõ được lựa chọn đó Từ đó, phân tích sự khác nhau giữa hai bản rõ ảnh hưởng như thế nào đến sự khác nhau giữa hai bản mã tương ứng Hay nói cách khác, phương pháp cơ bản của thám mã vi sai là sử dụng các cặp bản mã, bản rõ có liên quan dựa vào giá trị khác nhau (difference) là hằng số
Giá trị khác nhau có thể được định nghĩa thông qua nhiều cách, nhưng phép toán cộng loại trừ (⊕ ⊕ ⊕ XOR) thường được sử dụng
2 Lịch sử
Vào năm 1972, Văn phòng Tiêu chuẩn quốc gia - NSA (nay là Viện Tiêu chuẩn
và Kỹ thuật – Mỹ) đã kêu gọi cá nhân, cộng đồng quốc tế nghiên cứu, đề xuất một chuẩn mật mã mới Cho đến vòng duyệt lần thứ hai vào năm 1974, IBM đã công bố một hệ mật mã dựa trên hệ mật mã do chính họ đã nghiên cứu trước đó - hệ mật mã Lucifer Hệ mật mã này được gửi tới NSA để phân tích, đồng thời nó cũng gây sự chú
ý lớn trong cộng động mật mã Cuối cùng, hệ mật mã này được NSA duyệt và công bố với hai sự thay đổi: độ dài khóa được làm ngắn, các hộp S (S-boxes) được thay đổi
Trong nhiều năm sau đó, nhiều người tin rằng NSA đã làm ngắn độ dài khóa để
họ có thể thực hiện tìm kiếm vét cạn không gian khóa Một số ý kiến khác cho rằng, NSA đã có chủ tâm thay đổi các hộp S làm chúng “yếu” hơn để họ có thể thực hiện tấn công thám mã phân lớp Mặc dù NSA và IBM đã cố gắng chứng minh rằng với độ dài khóa như họ đưa ra vẫn đảm bảo an toàn, nhưng họ lại không nói nhiều về các hộp
S
Cho đến năm 1990 những đồn đại, nghi nghờ về những hộp S “yếu” mới được làm rõ Trong năm đó, Eli Biham và Adi Shamir công bố bài báo về kỹ thuật thám mã mới: “Thám mã vi sai” Từ đó, NSA đã thay đổi các hộp S để tăng cường sức mạnh để DES chống lại kiểu tấn công mới này
Trang 33 Quy trình thám mã vi sai
Khi có được khác nhau của các cặp bản rõ cần thiết, người tấn công thực hiện tính toán giá trị khác nhau giữa các cặp bản mã tương ứng nhằm khám phá ra được các mẫu thống kê quy luật trong sự phân bổ của chúng Cặp kết quả giá trị khác nhau
(vào - ra) được gọi là vi sai (differential)
Các mẫu thống kê có được từ sự phân tích là phụ thuộc vào đặc tính tự nhiên của các hộp S Người tấn công phân tích các vi sai (X, Y) của mỗi hộp S, trong đó:
X = X1 ⊕⊕⊕ X2
Y = Y1 ⊕⊕⊕ Y2 = S(X1) ⊕⊕ S(X2) = S(X1) ⊕⊕ S(X1 ⊕ ⊕X) (⊕⊕ là phép cộng loại trừ XOR)
Dạng phục hồi khóa cơ bản nhất thông qua thám mã vi sai đó là, một người tấn công nhằm đạt được các bản mã từ một số lượng lớn các cặp bản rõ Khi đó, giả sử vi
sai được duy trì tối thiểu r-1 vòng, trong đó r là tổng số lượng vòng Người tấn công
sẽ suy dẫn khóa vòng (khóa phụ - subkey) nào là khóa có thể với giả định sự khác nhau (difference) giữa các khối trước vòng cuối cùng (vòng r) là cố định
Nếu khóa vòng ngắn, nó có thể được phục hồi bởi thực hiện giải mã vét cạn các cặp bản mã một vòng với từng khóa có thể Khi một khóa được xem như là khóa
“tiềm năng” cần được chú ý hơn so với bất kỳ khóa nào khác, nó được giả định là khóa đúng để thực hiện các công việc tiếp theo
Nếu quá trình phục hồi khóa chỉ xác định được một số bít khóa, số bít còn lại không nhiều nhưng vượt quá khả năng của phương pháp thám mã vi sai hoặc khả năng của người thám mã, thì những bít còn lại của khóa sẽ được xác định bằng cách vét cạn trong không gian đã được giới hạn
Đối với bất kỳ hệ mã hóa nào, để việc thám mã thành công thì giá trị khác nhau đầu vào cần phải được lựa chọn cẩn thận Đồng thời, việc phân tích bên trong của thuật toán là rất quan trọng và phải được thực hiện đồng thời Phương pháp chuẩn chính là theo dõi một “đường dẫn” vi sai với xác suất xuất hiện cao thông qua các giai đoạn
của việc mã hóa, được gọi là đặc tính vi sai
Trang 4II Chuẩn mã hóa dữ liệu (Data Encryption Standard – DES)
1 Đặc điểm, mô hình hoạt động của DES
a) Mô hình cơ bản
DES là hệ mật mã khối 64 bit, với 64 bit vào bản rõ và tạo ra 64 bit bản mã thông qua một chuỗi phép hoán vị và hàm Feistel (hàm F):
64 bit đầu vào trước hết được hoán vị IP và chia thành 2 nửa 32 bit Trong mỗi vòng của DES, một nửa được giữ nguyên trong khi nửa còn lại được chạy qua hàm F Đầu
ra của hàm F tiếp tục được XOR với nửa còn lại
Hai nửa được hoán vị cho nhau, và bắt đầu lặp lại vòng tiếp theo
Hình 1: Cấu trúc hoạt động của DES
Trang 5b) Cấu trúc Hàm F:
Trong hàm F, 32 bit đầu vào được mở rộng thành 48 bit bởi hàm mở rộng E 48 bit này sau đó được XOR với một khóa con được dẫn xuất từ khóa chính của DES
Kết quả 48 bit sau khi XOR với khóa con được chạy qua 8 hộp S (S-Boxes) làm giảm 48 bit xuống còn 32 bit Cuối cùng, 32 bit được chuyển qua hàm hoán vị P
Cấu trúc của hàm F được thể hiện qua hình sau:
Hình 2: Hàm-F của DES
c) Xác định khóa chính, khóa vòng (subkey)
Khóa K là xâu dài 64 bít, trong đó 56 bít là khóa và 8 bit để kiểm tra tính chẵn
lẻ ở các vị trí 8, 16, 24, , 64 Với khóa K 64 bít, việc tính các khóa phụ ki (i = 1, 2, 3, ,16) thực hiện như sau:
Loại bỏ 8 bit kiểm tra tính chẵn, lẻ, hoán vị 56 bít còn lại theo phép hoán vị
PC-1 Kết quả thu được chia thành 2 nửa 28 bít
Trang 6Thực hiện dịch vòng trái đối với từng nửa 28 bit (dịch vòng trái 1 vị trí nếu i =
1, 2, 9, 16, dịch 2 vị trí đối với những giá trị i khác)
Các giá trị của hai nửa sau khi thực hiện phép dịch vòng trái độc lập sau đó được kết hợp lại và tiếp tục tính theo phép hoán vị PC-2 và tạo ra khóa vòng ki 48 bit
2 Độ an toàn của DES
Độ an toàn của DES có được duy nhất từ các hộp S, bởi vì, các hộp S là hoàn toàn phi tuyến Ngoài ra, toàn bộ các bước khác trong DES là các phép toán tuyến tính: hoán vị hai nửa, hoán vị các bít, phép mở rộng, và các phép XOR Và nếu như các hộp S cũng là tuyến tính thì DES sẽ dễ dàng bị phá vỡ
Như đã giới thiệu ở trên, thì cơ bản thám mã vi sai dựa vào theo dõi sự thống kê xác suất xuất hiện vi sai vào – ra của mỗi giai đoạn mã hóa Và ở đây, chỉ phân tích thống kê đối với giai đoạn qua các hộp S Theo như các kết quả nghiên cứu, thực nghiệm cho thấy thì các hộp S không phải là an toàn toàn tuyệt đối và có những “lỗ
hổng” nhất định Trong đó, hộp S1 và hộp S5 được coi là “yếu” nhất, hộp S7 được coi
là an toàn nhất
Độ an toàn của Hộp S-7: với bất kỳ giá trị khác nhau đầu vào 6 bít (I) nào
khác không nào cho trước, sẽ không nhiều hơn 8 trong số 32 cặp đầu vào với I cho
cùng kết quả giá trị khác nhau đầu ra O Hay nói cách khác, nó cho tỷ lệ xác suất vi sai ≤ 1/4 Bởi vậy, xác suất cao nhất (cận trên) của toàn bộ cặp bản rõ có cùng giá trị
khác nhau đầu vào cho trước (I ) sau khi chạy qua n vòng của DES mang lại cùng
một giá trị khác nhau đầu ra - O là (1/4) n
III Cơ sở khoa học của thám mã vi sai đối với DES
1 Phân tích các điểm yếu của hàm F (các hộp S):
Như đã phân tích về độ an toàn của DES, thám mã vi sai là phương pháp tấn công chủ yếu vào các hộp S, từ S1 đến S8
Căn cứ vào sự phân tích đặc điểm, độ an toàn của DES, để phân tích tấn công vi sai, chúng ta có thể bỏ qua các phép biến đổi tuyến tính gồm các hoán vị P, phép mở rộng E mà tập trung vào hàm F, các hộp S và các “điểm yếu” của chúng
Trang 72 Có thể bỏ qua khóa k trong giai đoạn tính đầu vào cho hộp S
Chúng ta có thấy được khóa k không đóng vai trò trong quá trình tính toán vi sai qua các phương trình sau đây:
(m 1 ⊕⊕ k) ⊕⊕ (m 2 ⊕⊕ k) = m 1 ⊕⊕ k ⊕⊕ m 2 ⊕⊕ k
= m 1 ⊕⊕ m 2 ⊕⊕ k ⊕⊕ k = m 1 ⊕⊕ m 2 = I
3 Dựa trên các bước thực hiện dò tìm khóa cơ bản:
* Thực hiện tiền tính toán: để lập bảng phân bổ xác suất Vi sai đầu vào (I - XOR
vào) và Vi sai đầu ra (O - XOR ra) cho từng hộp S
Mỗi hộp S có 6 bit vào, bởi vậy có 26 = 64 đầu vào có thể Mỗi hộp S có 4 bit
ra, bởi vậy có 24 = 16 bit ra có thể Như vậy, chúng ta có thể xây dựng bảng 64 x 16
“bộ” vào/ra Bình quân, mỗi bộ sẽ được trả kết quả từ 4 cặp vào/ra Nhưng trên thực
tế, không phải tất cả các bộ đều tồn tại và trong số các bộ tồn tại lại phân bố không đều
Bảng 1: Một phần của Bảng phân bố cặp vi sai Vào – Ra
(cặp XOR) của hộp S 1
Định nghĩa 1: Bảng 1 trên đây được gọi là Bảng phân bổ các cặp XOR Mỗi tiêu đề
dòng trình diễn giá trị khác nhau đầu vào (XOR vào) Mỗi tiêu đề cột trình diễn giá trị
Trang 8khác nhau đầu ra (XOR ra) Các phần tử trong bảng thể hiện số lượng “bộ” có thể với các XOR vào và các XOR ra tương ứng theo dòng và cột
(Bảng 1 chỉ là một phần của Bảng phân bố vi sai, vì thực tế Bảng phân bố này có 64
đầu vào, tức là có 64 dòng (input XOR), từ 00 x đến 3F x )
Định nghĩa 2: Cho S’iI là giá trị khác nhau đầu vào (XOR vào) và S’iO là giá trị khác nhau đầu ra (XOR ra) của một hộp Si nào đó Chúng ta nói S’iI có thể tạo ra S’iO nếu tồn tại một cặp đầu vào SiI, S*iI để S’iI = SiI ⊕⊕ S*iI và:
S’iO = Si (SiI) ⊕⊕⊕ Si (S*iI) = SiO ⊕⊕⊕ S*iO
Từ đó, chúng ta có thể viết S’iI S’iO Hay nói cách khác, giá trị khác nhau đầu vào
S’ iI dẫn đến giá trị khác nhau đầu ra S’ iO
Định nghĩa 3: Cho một hộp S (Si), định nghĩa tập đầu vào (INi) SiI, S*iI sao cho S’iI S’iO như sau:
INi (S’iI S’iO) = {SiI | Si (SiI) ⊕⊕ Si (S*iI) = S’iO}
và định nghĩa số lượng (N) các đầu vào như trên là:
N (S’iI S’iO) = | INi(S’iIS’iO) | Xác suất để S’iI S’iO, là như sau:
P (S’iI S’iO) = ( N (S’iI S’iO) ) / 64
* Dò tìm khóa:
Dựa vào sự phân bố vi sai không đều của các hộp S: lựa chọn các cặp vi sai xuất hiện với xác suất cao (để làm nổi bật vai trò khóa ki) để xây dựng các bảng tham chiếu tiếp theo
Xác định khóa: Giới hạn, cô lập không gian khóa, xác định các bit khóa, vùng khóa và xác định khóa duy nhất
* Ví dụ về tham chiếu Bảng 1: Xét đầu vào XOR S’1I = Cx. Nó có 10 giá trị đầu ra có thể Các giá trị XOR đầu ra có thể là 3x, 5x, 6x, 9x, Ax, Bx, Cx, Dx, Ex, Fx và các giá trị XOR đầu ra không thể xảy ra là 0x, 1x, 2x, 4x, 7x, và 8x Vì vậy, chúng ta có thể viết:
Cxե 0x, Cxե 1x, Cx ե 2x, Cx 3x, Cxե 4x, Cx 5x,
Trang 9Hơn nữa, N (Cx Ex) = 14, và P (Cx Ex) = 14 / 64 = 7 / 32
Để thực hiện đầy đủ các bước trên, chúng ta có thể xây dựng một loạt các bảng
từ Bảng phân bổ các cặp XOR nói trên Từ đó, chúng ta có thể liệt kê chính xác các cặp giá trị đầu vào (input XOR) cho trước cũng như các giá trị đầu ra tương ứng Số lượng “bộ” ở Bảng 1 được chính là là số lượng các cặp đầu vào cụ thể được thể hiện trong các bảng được trình bày trong phần tiếp theo
IV Ví dụ về tấn công thám mã vi sai đối với DES một vòng
Trong phần này sẽ trình diễn một ví dụ về tấn công DES giảm xuống 1 vòng Chúng ta sẽ nhận thấy sự phức tạp của tập các thủ tục xử lý toàn bộ các tính toán liên quan Đồng thời trong ví dụ này cũng giảm hệ DES xuống còn 1 hộp S - hộp S1 Đối với việc dò tìm 42 bít khóa dựa vào 7 hộp S còn lại sẽ được thực hiện với thuật toán tương tự Tuy nhiên, độ phức tạp khi dò tìm các bít khóa tương ứng với mỗi hộp S là khác nhau do đặc điểm “mạnh” hay “yếu” của từng hộp S đó
Việc đơn giản hóa bài toán như vậy chỉ với mục đích thể hiện ý tưởng, phương pháp thám mã vi sai đối với DES Tất nhiên khi tăng số vòng của DES lên n vòng (1 <
n < 16) và cuối cùng đối với DES đầy đủ 16 vòng thì thuật toán thám mã cần phải được thay đổi nhiều đồng thời độ phức tạp của nó cũng tăng lên theo cấp lũy thừa
1 Tiền tính toán: (Các giá trị được quy về hệ Thập lục phân (HexaDecimal)
Trong ví dụ này các ký hiệu được hiểu như sau:
- S1E, S*1E: cặp giá trị đầu vào Hộp S1 (6 bit) trước khi XOR với 6 bit của khóa
k
- S1I, S*1I: cặp giá trị đầu vào Hộp S1 (6 bit) sau khi XOR với 6 bit của khóa k
- S1O, S*1O: cặp giá trị đầu ra Hộp S1 (4 bit)
- S1k: 6 bít của khóa k sử dụng để XOR với các đầu vào 6 bít S1E, S*1E
Giả sử chúng ta có cặp vào S1E = 08x và S*1E = 04x với khóa bí mật là S1k = 1Ax.
Thực hiện lần vết các giá trị kết quả của hàm F như sau:
S 1I = S 1E ⊕ S 1k
= 08 x ⊕ 1A x
S * 1I = S * 1E ⊕ S 1k
= 04 x ⊕ 1A x
Trang 10= 12x
Sử dụng hộp S1, ta có:
S 1O = S 1 (S1I)
= S 1 (12 x )
= A x
Bởi vậy, S’1O = S1O ⊕ S*1O
Bỏ qua khóa S1k, tính S’1E = S’
Tra Bảng 1 với cặp (XOR vào, XOR ra) = (0C
2 Dò tìm khóa:
Bước 1: Từ Bảng 1, xét:
đầu vào là 0Cx và các giá tr
đầu ra là 0Dx , ta có:
Bước 2: Chọn S’1I
ứng là: (S1I , S *
1I ) ∈∈ {(01 x , 0D
Tiếp đó, chọn cặp (S1E , S *
1E
S1I ⊕ S1E và lập và lập Bảng 3
= 1E x
, ta có:
S * 1O = S 1 (S *1I)
= S 1 (1E x )
= 7 x
= 0Dx (XOR ra)
= S’1I = (S1E ⊕ S*1E) = 0Cx (XOR vào)
ào, XOR ra) = (0Cx, 0Dx)
ng 1, xét: S’1E = S’ 1I = 0C x và lập Bảng 2 với giá tr
và các giá trị khác nhau đầu ra tương ứng; chọn giá tr
S’1O <=> 0Cx 0Dx Vậy ta có các c
, 0D x ), (12 x , 1E x ), 36 x , 3A x )}
1E ) = (08 x , 04 x ), tính các “khóa có thể” theo công th
ảng 3
Các cặ
để vi sai
ới giá trị khác nhau
ọn giá trị khác nhau
a có các cặp đầu vào tương
heo công thức: S1k =
ặp đầu vào có thể
vi sai đầu ra là 0Dx
Trang 11Bảng 3: Các khóa có thể đối với cặp vi sai 0Cx 0Dx,
đầu vào (S 1E , S * 1E ) = (08 x , 04 x )
Từ Bảng 1, xét: S’1E = S’1I = 0Cx
S’1I S’1O <=> 0Cx 0Ax lập Bảng 2, Ta có các cặp đầu vào:
(S1I, S*1I) ∈ {(22x, 2Ex), (30x, 3Cx), 34x, 38x)}
Chọn cặp (S1E, S*1E) = (38x, 34x), tính các “khóa có thể” theo công thức: S1k =
S1I ⊕ S1E và lập Bảng 4
Bảng 4: Các khóa có thể đối với cặp vi sai 0C x 0A x ,
đầu vào (S 1E , S * 1E ) = (38 x , 34 x )
Bước 3: Từ Bảng 1, xét: S’1E = S’ 1I = 10 x Chọn giá trị khác nhau đầu vào
(10x) và lập Bảng 5
Cô l ập vùng khóa
Trang 12Bước 4: Tham chiếu B
S’1O <=> 10x Ax), Ta có các c
(S1I, S*1I) ∈ {(01x, 11x
Chọn cặp (S1E, S*1E) = (3B
S1I ⊕ S1E và lập Bảng 6
Bảng 6: Các khóa có th
đầ
Bước 5: Xác định khóa duy nh
ếu Bảng 5, với giá trị khác nhau đầu ra (A ), Ta có các cặp đầu vào:
x), (21x, 31x), (2F, 3F)}
) = (3Bx, 2Bx), tính các “khóa có thể” theo công th
Các khóa có thể đối với cặp vi sai 10x Ax,
đầu vào (S 1E , S* 1E ) = (3Bx, 2Bx)
nh khóa duy nhất: 1Ax
khóa
Các cặp đ
để vi sai
u ra (Ax), (hay S’1I
heo công thức: S1k =
Ax,
Xác định khóa duy nhất
p đầu vào có thể
vi sai đầu ra là 0Dx
Trang 13Như vậy, từ hộp S1 vàthực hiện tiền tính toán dựa trên hộp S1 và qua 5 bước xử
lý cùng với 2 cặp bản rõ có lựa chọn (08x , 04 x) và (3Bx , 2B x), chúng ta có thể xác định được giá trị khóa là “1A” (ở dạng thập lục phân) tương đương 6 bít khóa (011010) ở
dạng nhị phân sử dụng cho hộp S1
Để có thể dò tìm được đầy đủ 48 bít khóa (khóa con) cần sử dụng đủ 8 hộp S (từ S1 đến S8) cùng với một loạt các bảng tham chiếu và các dữ liệu tiền tính toán của chúng
V Kết luận và hướng phát triển tiếp theo
Khi số vòng lặp của DES (n<=16) tăng lên 3 vòng, 5 vòng, 8 vòng, thì độ phức tạp của thuật toán thám mã nói chung và thám mã vi sai nói riêng tăng lên gấp bội (theo cấp lũy thừa) Tương ứng với độ phức tạp tăng lên của thám mã vi sai chính
là số lượng bản rõ lựa chọn để thực hiện dò tìm khóa Cho dù là số vòng lặp của DES tăng lên, thậm chí là đủ 16 vòng thì việc dò tìm khóa vẫn chủ yếu tấn công vào các hộp S Trong đó, việc dựa trên cơ sở các hộp S “yếu” (chẳng hạn S1, S5) sẽ giúp dò tìm khóa nhanh hơn các hộp S khác
Thông thường, việc dò tìm khóa chính là dò tìm khóa con cuối cùng (k16) Sau khi đã có K16, chúng ta dễ dàng suy luận ra các khóa con khác k15, k14, , k1, và khóa chính K bằng cách tính ngược các phép toán tuyến tính (hoán vị, dịch vòng trái, )
Như chúng ta đã biết, việc dò tìm khóa căn cứ vào xác suất tồn tại các cặp vi sai (vào - ra) của từng vòng lặp Khi số vòng lặp tăng lên thì xác suất tồn tại các cặp vi sai này cho đến vòng mã hóa cuối cùng là rất nhỏ Điều này đồng nghĩa với việc chúng ta cần sử dụng một số lượng cặp bản rõ, bản mã rất lớn
Thám mã vi sai là phương pháp tấn công đầu tiên đối với DES để có thể tìm thấy khóa nhanh hơn là tìm kiếm vét cạn không gian khóa Theo lý thuyết, đây là một kiểu tấn công có tính khả thi Nhưng theo Bảng 7 dưới đây, tấn công thám mã vi sai là dường như khó đạt hiệu quả trên thực tế