trận mở rộngMTE x_( 0,y0) như Hình 3.4(b) bên phải. Ma trậnM TE x_( 0,y0) ở bảng bên phải của Hình 3.4(b) và ma trận MTE arb_ ở bảng bên phải của Hình 3.4(a) có các
phần tử khác nhau bắt đầu từ vị trí(x1, y1) = (6 3) , . Nghĩa là điểm ảnh đầu vào tại vị
tr í(x0, y0) = (8 9) , được hoán vị cho điểm ảnh có vị trí (x1, y1) = (6 3) , trong phép
hoán vị, không phụ thuộc vào số vòng hoán vị rpb ằng bao nhiêu. Sau đó, giá trị 6
được lưu vào vị trí (8,9) của ma trậnROW và giá tr ị 3 được lưu vào vị trí (8,9) của
ma trậnCOL. Quá trình cứ thế được thực hiện toàn bộ các vị trí tọa độ, ta sẽ thu được hai ma trậnROW vàCOLhoàn chỉnh thể hiện luật hoán vị.
Kết quả của tấn công hoán vị cho ảnh bản trơn kích thước5 5× dùng khóa được mô
tả như trên trong Hình 3.5. Luật hoán vị được trình bày trong Hình 3.5(a) và 3.5(b)
tương ứng với các ma trậnROWvàCOL. Chỉ số hàng và cột trong bảng tra cứu biểu
diễn vị trí( x0, y0)của các phần tử trong ME và hàng đích x1 và cột đích y1 là giá
tr ị của các phần tử trong bảng tra cứu. Ví dụ, một phần tử củaME arb_ tại vị trí (1 2),
được hoán vị đến vị trí(8 9), ; 8 và 9 là giá trị của phần tử tại(1 2), trong bảng tra cứu
hàng và cột tương ứng. Bằng cách áp dụng các bước như trên, với bất kì số vòng hoán
vị hay bất kì kiểu hệ hỗn loạn nào và không có khóa mật tốt thì đều có thể khôi phục.
Việc tấn công quá trình hoán vị thà nh công sẽ hỗ trợ cho việc tấn côn g quá trình khuếch tán dưới đây.
(a)Bảng tra cứu hàngROW (b) Bảng tra cứu cộtCOL Hình 3.5: Kết quả cuối cùng của luật hoán vị.
3.4.1.2 Tấn công vào khuếch tán
Sau quá tr ình hoán vị, mảng 1D các giá trị của ma trận được tạo ra bằng cách quét các
hàng từ trên xuố ng dưới trong ma trận M PE thu được mảng một chiềuAE để thực
hiện khuếch tán. Quan sát việc khuếch tán trong biểu thức (3.4) cho thấy, giá trị của
từ mã hiện tại phụ thuộc trực tiếp giá trị của nó, ac i( ), và phụ thuộc vào các giá trị
của các phần tử thích hợp trong dãy số ngẫu nhiênrand2vàrand3. Một phần tử được
chọn trong dãyrand3để khuếch tán chỉ phụ thuộc vào vị trí của từ mã hiện tại, , và i
một phần tử được chọn để khuếch tán chỉ phụ thuộc vào giá trị của từ mã đứng trước
đó, cipher d i_ ( − 1), thông quarand 1. Đây chính là hiệu ứng thác lũ hay hiệu ứng
tuyết lở của quá trình khuếch tán. Việc tấn công thành công trong quá trình hoán vị
giúp xác định vị trí bắt đầu bị ảnh hưởng bởi khuếch tán trong ma trận mật mã MTE
và giá trị tại vị trí được sử dụng để phân tích một cách tường minh. Trong tấn công
khuếch tán, quá trình mật mã được thực hiện nhiều lần, ở mỗi lần có sự thay đổi giá
tr ị đầu vào và quan sát giá trị trả về.
Trong tấn công khuếch tán, khôi phục của các phần tử của dãy số ngẫu nhiên
rcv rd_ 2 tương đương vớirand2phải được thực hiện nhằm xác định cho tất cả các giá
tr ị có thể có của các từ mãcipher d i_ ( − 1). Lý do là vì các từ mã và các dãy số ngẫu
nhiên được biểu diễn bằng 6 bit, giá trị của các từ nằm trong khoảng từ 0 đến 63. Nói cách khác, dãy thu đượcrcv rd_ 2sẽ có 64 phần tử, giá trị của rcv rd_ 2( )i sẽ được dùng
để tính một từ mã với giá trị tạii − 1. Giá trị ban đầurcv rd_ 2_initial (tương đương với
cipher d_ (0)) đ ược tính cho từ mã đầu tiên. Thêm vào đó, một phần tử được chọn từ
rand3 để khuếch tán phụ thuộc vào vị trí của từ mã hiện tại. Hay nói cách khác, tấn
công khôi phụcrand3phải được thực hiện ở mọi vị trí của các từ mã bằng cách dùng
mọi giá trị có thể có của các từ dữ liệu của bản rõ. Vị tr í trongi rand3thuộc khoảng
từ 1 đến4N2và giá tr ị của nó là 6 bit thuộc khoảng từ 0 đến 63. Như vậy, một ma
Vị trí bit: x x x x x ? 0 0 0 0 0 1 x x x x x ? ?=1 ?=0 x x x x x 1 x x x x x 0 Vị trí bit : x x x x x ? 0 0 0 0 0 0 x x x x x x So sánh Mật mã với Mật mã với
Giá trị của bit trong
Hình 3.6: Ví dụ tìm giá trị bit b0.
quả của tấn công để khôi phụcrand3.
Quan sát kĩ hơn biểu thức (3.4). Có một phépXOR( ) giữa⊕ ac i( )vàrand 2(temp2),
giá trị của các bit tại những vị trí khác nhau trongrand2(temp2)có thể được phát hiện
dễ dàng bằng cách quan sát giá trị trả về củacipher d i_ ( )nhận được trong trường hợp
ac i( ) = 0vàac i( ) = 06 . Các giá trị bit tại những vị trí khác nhau củarand 2(temp2)
có th ể được tạo ra bằ ng các biện pháp k iểm tra giá trị cho mỗi vị trí bit. Một số giá trị
củaac i( )được chọn dùng để xác định giá trị bit trongrand2(temp2). Cụ thể, chọn giá
tr ị choac i( ) =1, 2, 4, 8 và 16 (tương ứng với các mẫu bit 000001, 000010, 000100,
001000, và 010000) để tìm ra giá trị bit tại vị trí b0, b1, b2,b3, vàb4 tương ứng của
rand2(temp2). Chú ý rằng cipher d i_ ( ) = ( rand 2(temp2)+rand 3( ))i mod 64khi giá
tr ịac i( ) = 0 . Để tìm ra giá trị vị trí bitb0củarand2(temp2),ac i( ) = 1 dùng để thực
hiện mật mã. Nếu giá trị củacipher d i_ ( )tăng lên 1 so với trường hợp khiac i( ) = 0, thì bit b0 của rand 2(temp2)có giá trị là 0. Tuy nhiên, nếu giá trị của cipher d i_ ( )
giảm đi 1 so với trường hợp khi ac i( ) = 0, thì bit b0 của rand2(temp2)có giá trị
là 1. Ví dụ minh họa trong Hình 3.6 để tìm ra giá trị của bit b0 của rand2(temp2).
Tương tự, các bit ở vị trí khác trongrand2(temp2)được tìm với các giá trị ac i( )khác
nhau như đưa ra trong Bảng 3.1. Chúng ta hãy xem xét giá trịb5trongrand2(temp2)
như là một ngoại lệ do giá trị của nó gây ra sự thay đổi lớn trong kết quả ở đầu ra. Phép toán mod64 trong biểu thức khuếch tán (3.4) dẫn đến có hai cách thực hiện
để tìm ra giá trị của b5 trongrand2(temp2). Hình 3.7 minh họa việc tìm giá trị của
b5 trong rand2(temp2), cipher d i_ ( ) = rand 2(temp2) + rand 3( )i có giá trị bằng
52 hoặc 116 khi ac i( ) = 0. Nếu b5 = 0 hoặc b5 = 1 thì cipher d i_ ( ) = 20 khi
ac i( ) = 32. Điều này luôn đúng cho mọi giá trị củarand 2(temp2)vàrand 3( )i với
Bảng 3.1: Phát hiện giá trị bit trong .b
Giá trị củaac i( )được dùng Lượng thay đổi trong Giá trị bitbi
để phát hiện giá trị cipher d i_ ( )được so sánh trongrand 2(temp2)
của bit trongrand2(temp2) vớicipher d i_ ( )khiac i( ) = 0
+1 b0= 0 ac(i)=1 -1 b0= 1 +2 b1= 0 ac(i)=2 -2 b 1= 1 +4 b2= 0 ac(i)=4 -4 b2= 1 +8 b3= 0 ac(i)=8 -8 b3= 1 +16 b4= 0 ac(i)=16 -16 b4= 1 ac(i)=0 Các trường hợp
có thể Cipher_d(i)= rand2 (temp2)+rand3(i)= 116
ac(i)=32
Các giá trị có thể của
b5trong rand2 (temp2) b5=0 b5=1
(rand2 (temp2)+rand3(i)+32)mod 64 =(52+32) mod 64 =20
(rand2 (temp2)+rand3(i)+ 32)mod 64 =(116+32) mod 64 =20
(rand2 (temp2)+rand3(i)-32)mod 64 =(52-32) mod 64 =20
(rand2 (temp2)+rand3(i)-32)mod 64 =(116-32) mod 64 =20
Cipher_d(i)=rand2 (temp2)+rand3(i)=52
Hình 3.7: Ví dụ tìm giá trị bit b5của rand2(temp2).
các kết quả khuếch tán đúng với giá trị của cipher d i_ ( )và tương ứng hai giá trị của
rcv rd_ 3( )i phải được đưa vào trong tính toán của tấn công khuếch tán. Nói cách khác,
hai c ặp giá trị có th ể có là (rcv rd_ 2a, rcv rd_ 3a) và ( rcv rd_ 2b, rcv rd_ 3b) ra cùn g cho
giá trị của cipher d i_ ( ). Vì vậy, trong ví dụ tấn công khuếch tán với ảnh k ích thước
5 5× , ta thu được hai tập khóa khuếch tán; hai dãy số ngẫu nhiên được thực hiện, mỗi
dãy có 65 phần tử bao gồm cả phần tử đầu tiên của khuếch tán (cho ac(1) = 1), hai dãy (rcv rd_ 3a vàrcv rd_ 3b) được biểu diễn dưới dạng ma trận4N2× 64. Chú ý rằng,
giá trị của các phần tử trong rcv rd_ 3a và rcv rd_ 3b được suy luận ra từ ràng buộc
tương ứng với cặp rcv rd_ 2a và rcv rd_ 2b để xác định cho một giá trị nhất định của
cipher d i_ ( ) vàac i( ). Nói cách khác,rcv rd_ 3a vàrcv rd_ 3b phụ thuộc gián tiếp vào
cipher d i_ ( − 1). Trong bản mật mã sử dụng các khóa mã được khôi phụcrcv rd_ 3a
và rcv rd_ 3b, phần tử rcv rd_ 3a( )i, j hoặc rcv rd_ 3b( )i, j , i ∈ [1 4 , N2]vàj ∈ [1 64],
được dùng để tính toán từ mãcipher d i_ ( ) với giá trị c ủacipher d i_ ( − 1) = j. Kết
phương trình (3.7). Vớircv rd_ 2 vàrcv rd_ 3 là một cặp khóa được khôi phục nào đó .
cipher d_ (0) =rcv rd_ 2_initial
cipher d i_ ( ) = ([ ( )ac i ⊕ rcv rd_ 2(cipher d_ (i − 1))] + rcv rd_ 3(i, ciphe r d_ (i − 1))) mod64,
...for i= 1 4... N 2
(3.7)
Ví dụ ảnh RGB5 5× với g iá trị của các điểm ảnh ở các lớp R, G, B như Hình 3.8(a)
và ma trận mở rộng tương ứng để th ực hiện mật mã bao gồm bốn ma trận con I, II, III,
IV như Hình 3.8(b). Các điểm ảnh trong I, II, III là 6 bit thấp của các điểm ảnh trong
lớp R, G, B tương ứng. Mỗi điểm ảnh trong ma trận con IV được hình thành bởi kết
hợp hai bit trọng số cao nhất của điểm ảnh của các kênh R, G và B. Ma trận mở rộng
10 10× như Hình 3.8(a). Dãy số ngẫu nhiên gốc được biểu diễn trong Hình 3.8(c). Dãy
số ngẫu nhiên được khôi phụcrcv rd_ 2a vàrcv rd_ 2bvà được mô tả trong Hình 3.8(d)
và 3.8(e), với giá trị ban đầu của rcv rd_ 2 để giải mã từ mã đầu tiên cipher d(1)_ . Hàng đầu tiên của rcv rd_ 2a và rcv rd_ 2b là giá trị của cipher d i_ ( − 1) và hàng thứ
hai là giá trị củarcv rd_ 2tương ứngcipherd(i − 1). Mảng các giá trị ngẫu nhiên được
khôi phục rcv rd_ 3a vàrcv rd_ 3bkhông được đưa ra ở đây vì chúng quá dài để miêu
tả bằng hình vẽ. Chú ý rằng dãy số ngẫu nhiên gốcrand2hoàn toàn khác với các dãy được khôi phục. Ảnh bản mã hóa như trong Hình 3.8(f) được mã theo biểu thức (3.4)
và k hóa mật gốc như Hình 3.8(c). Hình 3.8(g) mô tả ảnh bản mã hóa được mật mã
bởi bảng tra cứu trong Hình 3.5 và dùng cặp dãy số ngẫu nhiênrcv rd_ 2a vàrcv rd_ 3a với phương trình khuếch tán như phương trình (3.7). Hai ảnh bản mã hóa Hình 3.8(f)
và 3.8(g) thu đ ược là giống nhau.
Điều này có nghĩa là các khóa mật được khôi phục có thể được dùng tương đương như khóa mật gốc. Nói cách khác, giải thuật mật mã này không thể chống lại được kiểu tấn công lựa chọn văn bản trơn.
3.4.2 Tấn công lựa chọn văn bản mã hóa
Việc thực hiện tấn công lựa chọn văn bản mã hóa mong muốn khôi phục lại các khóa mật dùng trong khuếch tán và luật hoán vị. Chi tiết các bước thực hiện tấn công và
các ví dụ được trình bày dưới đây.
3.4.2.1 Tấn công quá trình hoán vị ngược
Nhìn chung, chiến lược để tấn công luật hoán vị ngược được mô tả như trong Hình 3.9.
Kĩ thuật để tìm ra luật n ghịch đảo hoán vị là có chút khác so với kỹ thuật thực hiện
trong tấn công lựa chọn văn bản trơn như được trình bày ở trên.
(a)Các kênh RGB của ảnh bản trơn (b)Ma trận mở rộng để mật mã
(c)Dãy số ngẫu nhiên gốc rand2 (d) Dãy số ngẫu nhiên thứ nhất được khôi phụcrcv_rd2a
(e)Dãy số ngẫu nhiên thứ hai được
khôi phụcrcv_rd2b
(f)Các kênh RGB của ảnh bản mã hóa
được mật mã dùng khóa gốc (g)được mật mã dùng khóa khôi phụcCác kênh RGB của ảnh bản mã hóa
Hình 3.8: Tấn công lựa chọn văn bản trơn trên ảnh5 5× .
đó, tấn công hoán vị ngược trong lựa chọn văn bản mã hóa phải được bắt đầu từ phần
tử cuối cùng ngược trở lại phần tử đầu tiên của ma trận mở rộng. Tuy nhiên, ở phía
giải m ật, quá trình hoán vị ngược được đặt sau khuếch tán ngược như được thấy ở
Hình 3 .1. Vì vậy, quá trình hoán vị ngược sẽ tách rời bất kì cặp từ lân cận trong ma trận mở rộng ra.
Hình 3.9 minh họa các bước tấn công quá tr ìn h hoán vị. Hầu hết các bước thực hiện
cũng giống như tấn công lựa chọn văn bản trơn ở phần trước. Ở đây chọn một ảnh bản
mã hóa bất kì Carb có ma trận mở rộng tương ứng là MD arb_ và được dùng để khôi phục lại ảnh bản trơn Parb. Ma trận mở rộng MPD arb_ được tạo ra từ việc bóc tách
Giải mật mã hóa Ảnh bản mã ngẫu nhiên Carb Tạo ra ma trận m rộngở Parb Giải mật mã hóa
Ảnh bản mã dùngc cho tấn công xáo trộn C(x0,y0) Tạo ra ma trận m rộngở P(x0,y0 ) Comparison (x1,y1), MPD_arb MPD_(x0,y0) (x2,y2).... (xn,yn)
S ửa đổi giá tr ị tại (x0,y0)
Hình 3.9: Thủ tục khôi phục lại luật hoán vị trong tấn công bản mã hóa cho điểm ảnh tại vị
trí (x0, y0).
Ma trậnMPD arb_ này sẽ được dùng trong suốt tấn công hoán vị để tìm ra sự thay đổi
giá trị các phần tử của ma trận mở rộng mẫuM PD x_( 0,y0)thông qua ph ép so sánh. Kết
quả là vị trí đích(x1, y1)của quá trình khuếch tán ngược được xác nhận bằng cách
tìm ra sai khác giữa các giá trị của phần tử trongMPD x_( 0,y0) vàMPD arb_ .
Từ cấu trúc hệ mật mã cho thấy, khu ếch tán ngược được thực hiện trước quá trình
hoán vị ngược. Vì vậy, tấn công hoán vị ngược được bắt đầu từ vị trí(x0, y0) = ( N, N) trong ma trận mở rộng MD x_( 0,y0) của ảnh bản mã hóa C(x0,y0). Ma trận mở rộng MD x_( 0,y0) giống vớiMD arb_ trừ phần tử ở vị trí ( x0, y0)được cố tình thay đổi. Sau
khi giải mã, chỉ có một phần tử tại vị trí(x1, y1)trong ma trậnMD x_( 0,y0) mà bắt đầu
từ vị trí này xuất hiện sự khác nhau về giá trị so vớ i ma trậnMPD arb_ . Nghĩa là phần
tử ở vị trí(x0, y0)đã được chuyển tới vị trí (x1, y1). Tương tự, quá trình được tiếp tục
bằng cách gán các giá trị lân cận cho vị trí(x0, y0) = ( N, N − 1) trong ma trận mở rộng mẫu MD x_( 0,y0). Quá trình khuếch tán làm cho hai giá trị cuối cùng trong ma trậnAD x_( 0,y0)ở vị trí (N, N − 1) và(N, N )cùng thay đổi so với các giá trị ở vị trí
ấy trong ma trậnAD arb_ . Sau khi th ực hiện hoán vị ngược, hai phần tử này tách nhau
ra trong ma trậnMPD x_( 0,y0). Vị trí của hai điểm b ị tách ra đó có thể được thấy thông
qua phép so sánh các phần tử trong các ma trậnMPD x_( 0,y0) vàMPD arb_ . Vị trí đích
(x1, y1)của (x0, y0) = ( N, N − 1) được tìm ra. Quá trình được tiếp tục thực hiện
ngược trở lên cho đến(x0, y0) = (1 1) , để hoàn thành việc tấn công hoán vị ngược.
Các bước để khôi phục luật hoán vị đ ược thực hiện như sau:
• Bước 1: Chọn ma trận mở rộngMD arb_ bất kì.
• Bước 3: Giải mãCarb thu được bản rõ Parb ở đầu ra của bộ giải mã.
• Bước 4: Giãn bản rõParb và thu được ma trậnMPD arb_ .
• Bước 5: Chọn vị trí(x0, y0)để tấn công quá trình hoán vị.
• Bước 6: GánMD x_( 0,y0)=MD arb_ và chỉ khác nhau giá trị tại vị trí (x0, y0).
• Bước 7: CoMD x_( 0,y0) lại thành bản mã hóaC(x0,y0)để giải mã.
• Bước 8: Sau khi giải mãC(x0,y0) thu được bản rõ P(x0,y0) ở đầu ra của bộ giải mã.
• Bước 9: Tạo ra ma trận mở rộngMPD x_( 0,y0) bằng cách giãn bản rõ P(x0,y0). • Bước 10: So sánh hai ma trậnMPD arb_ vàMPD x_( 0,y0)để tìm ra vị trí ( x1, y1),
tại đó bắt đầu có sự khác nhau về giá trị.
• Bước 11: Tiếp tục tìm các vị trí(x1, y1)để điền đầy đủ vào bảng tra cứu.
• Bước 12: Lưu lại giá trịx1vào vị trí (x0, y0)của ma trậnROW và lưu lại giá trị y1vào vị trí (x0, y0)của ma trậnCOL.
• Bước 13: Lặp lại bước 5 đến bước 12 để quét hết các vị trí hiện tại và tìm ra các
vị trí đích.
Ví dụ sau đây sẽ chứng minh sự thành công của phương pháp tấn công hoán vị ngược.