Quy trình giải mã Rijndael có thể được thực hiện theo với trình tự các phép biến đổi ngược hoàn toàn tương đương với quy trình mã hóa (xem chứng minh trong phần 3.6.4-Quy trình giải mã tương đương). Bảng mã khóa mở rộng dw được xây dựng từ bảng mã khóa w bằng cách áp dụng phép biến
Phương pháp Rijndael mở rộng FFmul(0x46, t[(r + 7) mod 8]) end for end for end 4.2.4 Quy trình giải mã tương đương Quy trình giải mã Rijndael thực theo với trình tự phép biến đổi ngược hồn tồn tương đương với quy trình mã hóa (xem chứng minh phần 3.6.4-Quy trình giải mã tương đương) EqInvCipher(byte in[8*Nb], byte out[8*Nb], word dw[Nb*(Nr + 1)]) begin byte state[8,Nb] state = in AddRoundKey(state, dw + Nr * Nb) for round = Nr - downto InvSubBytes(state) InvShiftRows(state) InvMixColumns(state) AddRoundKey(state, dw + round * Nb) end for InvSubBytes(state) InvShiftRows(state) AddRoundKey(state, dw) out = state end 93 Chương Bảng mã khóa mở rộng dw xây dựng từ bảng mã khóa w cách áp dụng phép biến đổi InvMixColumns lên từ (8 byte) w, ngoại trừ Nb từ cuối w for i = to (Nr + 1) * Nb – dw[i] = w[i] end for for rnd = to Nr – InvMixColumns(dw + rnd * Nb) end for 4.3 Phiên mở rộng 512/768/1024-bit Thuật toán mở rộng 512/768/1024-bit dựa phương pháp Rijndael xây dựng tương tự thuật toán mở rộng 256/384/512-bit: • Trong thuật tốn 512/768/1024 bit, từ có kích thước Nw=16 byte • Đa thức chọn thao tác MixColumns có bậc 15 phải có hệ số Branch Number 17 Chúng ta chọn đa thức sau để minh họa: a(x) = {07}x15 +{09}x14+{04}x13+{09}x12+{08}x11+{03}x10+{02}x9+{08}x8 + {06}x7+{04}x6+{04}x5+{01}x4+{08}x3+{03}x2+{06}x+{05} (4.14) Và đa thức nghịch đảo a-1(x) tương ứng a-1(x)={1e}x15+{bc}x14+{55}x13+{8d}x12+{1a}x11+{37}x10+{97}x9+{10}x8+ {f0}x7+{d5}x6+{01}x5+{ad}x4+{59}x3+{82}x2+{59}x+{3a} Chi tiết thuật toán trình bày [12], [16] 94 (4.15) Phương pháp Rijndael mở rộng 4.4 4.4.1 Phân tích mật mã vi phân phân tích mật mã tuyến tính Phân tích mật mã vi phân Phương pháp phân tích mật mã vi phân (Differential Cryptanalysis) Eli Biham Adi Shamir trình bày [3] Phương pháp vi phân áp dụng dự đốn lan truyền khác biệt mẫu đầu vào qua hầu hết chu kỳ biến đổi với số truyền (prop ratio [10]) lớn đáng kể so với giá trị 21-n với n độ dài khối (tính bit) Như vậy, để đảm bảo an toàn cho phương pháp mã hóa, điều kiện cần thiết không tồn vết vi phân (differential trail) lan truyền qua hầu hết chu kỳ có số truyền lớn đáng kể so với giá trị 21–n Đối với phương pháp Rijndael, tác giả chứng minh không tồn vết vi phân lan truyền qua bốn chu kỳ có số truyền lớn 2-30(Nb+1) [8] với Nb = n Nw = n 32 Như vậy, không tồn vết vi phân lan truyền qua tám chu kỳ có số truyền lớn 2-60(Nb+1) Điều đủ để đảm bảo tính an tồn cho thuật tốn Rijndael 95 Chương Phần chứng minh trình bày 4.4.5-Trọng số vết vi phân vết tuyến tính cho kết luận sau: • Đối với thuật tốn mở rộng 256/384/512-bit, khơng tồn vết vi phân lan truyền qua bốn chu kỳ có số truyền lớn 2-54(Nb+1) với Nb = n Nw = n 64 Như vậy, không tồn vết vi phân lan truyền qua tám chu kỳ có số truyền lớn 2-108(Nb+1) • Đối với thuật tốn mở rộng 512/768/1024-bit, khơng tồn vết vi phân lan truyền qua bốn chu kỳ có số truyền lớn 2-102(Nb+1) với Nb = n Nw = n 128 Như vậy, không tồn vết vi phân lan truyền qua tám chu kỳ có số truyền lớn 2-204(Nb+1) Các kết luận đảm bảo tính an tồn cho thuật tốn mở rộng 256/384/512 bit 512/768/1024-bit phương pháp phân tích mật mã vi phân 4.4.2 Phân tích mật mã tuyến tính Phương pháp phân tích mật mã tuyến tính (Linear Cryptanalysis) Mitsuru Matsui trình bày [32] Phương pháp tuyến tính áp dụng tương quan đầu với đầu vào thuật tốn qua hầu hết chu kỳ có giá trị lớn so với 2-n/2 96 Phương pháp Rijndael mở rộng Như vậy, để đảm bảo an toàn cho phương pháp mã hóa, điều kiện cần thiết khơng tồn vết tuyến tính (linear trail [10]) lan truyền qua hầu hết chu kỳ có số truyền lớn đáng kể so với giá trị 2–n/2 Đối với phương pháp Rijndael, tác giả chứng minh khơng tồn vết tuyến tính lan truyền qua bốn chu kỳ với độ tương quan lớn 2-15(Nb + 1) [8] Như vậy, không tồn vết tuyến tính lan truyền qua tám chu kỳ với độ tương quan lớn 2-39(Nb+1) Điều đủ để đảm bảo tính an tồn cho thuật tốn Rijndael Phần chứng minh trình bày 4.4.4-Sự lan truyền mẫu cho kết luận sau: • Đối với thuật tốn mở rộng 256/384/512-bit, khơng tồn vết tuyến tính lan truyền qua bốn chu kỳ với độ tương quan lớn 2-27(Nb+1) Như vậy, không tồn vết tuyến tính lan truyền qua tám chu kỳ với độ tương quan lớn 2-54(Nb+1) • Đối với thuật tốn mở rộng 512/768/1024-bit, khơng tồn vết tuyến tính lan truyền qua bốn chu kỳ với độ tương quan lớn 2-51(Nb+1) Như vậy, không tồn vết tuyến tính lan truyền qua tám chu kỳ với độ tương quan lớn 2-102(Nb+1) Các kết luận đảm bảo tính an tồn cho thuật tốn mở rộng 256/384/512 bit 512/768/1024-bit phương pháp phân tích mật mã tuyến tính 97 Chương 4.4.3 Branch Number Xét phép biến đổi tuyến tính F vector byte Một byte khác gọi byte hoạt động (active) Trọng số byte vector a, ký hiệu W(a), số lượng byte hoạt động vector Định nghĩa 4.1: Branch Number B phép biến đổi tuyến tính F độ đo khả khuếch tán F, định nghĩa sau: B(F) = mina≠0 (W(a) + W(F(a))) (4.16) Nhận xét: Branch Number lớn khả khuếch tán thơng tin F mạnh, giúp cho hệ thống SPN trở nên an toàn Trong phép biến đổi MixColumns, trạng thái ban đầu có byte hoạt động trạng thái kết nhận sau áp dụng MixColumns có tối đa Nw byte hoạt động Do đó, ta có: B(MixColumns) ≤ Nw + (4.17) với Nw nhận giá trị 4, 16 thuật toán Rijndael, thuật toán mở rộng 256/384/512 bit thuật toán mở rộng 512/768/1024 bit Như vậy, để đạt mức độ khuếch tán thông tin cao nhất, cần phải chọn phép biến đổi MixColumns cho hệ số Branch Number đạt giá trị cực đại Nw + Nói cách khác, Branch Number MixColumns thuật toán Rijndael, thuật toán mở rộng 256/384/512 bit thuật toán mở rộng 512/768/1024 bit phải đạt giá trị 5, 17 Khi đó, quan hệ tuyến tính bit trạng thái đầu vào đầu MixColumns liên quan đến Nw + byte khác cột 98 Phương pháp Rijndael mở rộng 4.4.4 Sự lan truyền mẫu Trong phương pháp vi phân, số lượng S-box hoạt động xác định số lượng byte khác trạng thái đầu vào chu kỳ Gọi mẫu (vi phân) hoạt động (difference activity pattern) mẫu xác định vị trí byte khác trạng thái gọi trọng số byte số lượng byte khác mẫu Trong phương pháp tuyến tính, số lượng S-box hoạt động xác định số lượng byte khác vector chọn trạng thái bắt đầu chu kỳ [10] Gọi mẫu (tương quan) hoạt động (correlation activity pattern) mẫu xác định vị trí byte khác trạng thái gọi trọng số byte số lượng byte khác mẫu Mỗi cột trạng thái có byte thành phần byte hoạt động gọi cột hoạt động Trọng số cột trạng thái a, ký hiệu Wc(a), định nghĩa số lượng cột hoạt động mẫu Trọng số byte cột j trạng thái a , ký hiệu W(a)⏐j, định nghĩa số lượng byte hoạt động cột Trọng số vết lan truyền qua chu kỳ tính tổng tất trọng số mẫu hoạt động đầu vào chu kỳ thành phần Trong hình minh họa đây, cột hoạt động tơ màu xám cịn byte hoạt động tơ màu đen 99 Chương Hình 4.3 minh họa lan truyền mẫu hoạt động (bao gồm mẫu vi phân mẫu tương quan) qua phép biến đổi chu kỳ mã hóa thuật toán mở rộng 256/384/512-bit phương pháp Rijndael với Nb = SubBytes ShiftRows MixColumns AddRoundKey Hình 4.3 Sự lan truyền mẫu hoạt động qua phép biến đổi thuật toán mở rộng 256/384/512-bit phương pháp Rijndael với Nb = Mỗi phép biến đổi thành phần phương pháp mã hóa Rijndael có tác động khác mẫu hoạt động trọng số: SubBytes AddRoundKey không làm thay đổi mẫu hoạt động giá trị trọng số cột trọng số byte mẫu ShiftRows làm thay đổi mẫu hoạt động trọng số cột Do phép biến đổi ShiftRows tác động lên byte trạng thái cách độc lập, khơng có tương tác byte thành phần trạng thái xét nên không làm thay đổi trọng số byte MixColumns làm thay đổi mẫu hoạt động trọng số byte Do phép biến đổi MixColumns tác động lên cột trạng thái cách độc lập, khơng có tương tác cột thành phần trạng thái xét nên không làm thay đổi trọng số cột 100 Phương pháp Rijndael mở rộng Bảng 4.1 tóm tắt ảnh hưởng phép biến đổi lên mẫu hoạt động Bảng 4.1 Ảnh hưởng phép biến đổi lên mẫu hoạt động STT Phép biến đổi SubBytes ShiftRows MixColumns AddRoundKey Mẫu hoạt động Khơng Có Có Khơng Sự ảnh hưởng Trọng số cột Khơng Có Khơng Khơng Trọng số byte Khơng Khơng Có Khơng Như vậy, phép biến đổi SubBytes AddRoundKey không ảnh hưởng đến lan truyền mẫu hoạt động vết nên bỏ qua phép biến đổi trình khảo sát vết vi phân vết tuyến tính Trong phép biến đổi MixColumns, với cột hoạt động mẫu đầu vào (hoặc mẫu đầu ra) chu kỳ, tổng trọng số byte cột mẫu đầu vào đầu bị chặn Branch Number Do ShiftRows thực việc dịch chuyển tất byte thành phần cột mẫu đến cột khác nên phép biến đổi ShiftRows có tính chất đặc biệt sau: Trọng số cột mẫu đầu bị chặn giá trị tối đa trọng số byte cột mẫu đầu vào Trọng số cột mẫu đầu vào bị chặn giá trị tối đa trọng số byte cột mẫu đầu Dĩ nhiên cần lưu ý trọng số cột mẫu bị chặn số lượng cột (Nb) có mẫu 101 Chương Trong phần đây, mẫu hoạt động đầu vào chu kỳ mã hóa ký hiệu ai-1, mẫu hoạt động kết sau thực phép biến đổi ShiftRows ký hiệu bi-1, Các chu kỳ biến đổi đánh số tăng dần Như vậy, a0 mẫu hoạt động đầu vào chu kỳ mã hóa Dễ dàng nhận thấy mẫu bi có trọng số byte, mẫu bj-1 aj có trọng số cột Trọng số vết lan truyền qua m chu kỳ xác định tổng trọng số mẫu a0, a1, , am-1 Trong hình minh họa đây, cột hoạt động tơ màu xám cịn byte hoạt động tơ màu đen Hình 4.4 minh họa lan truyền mẫu chu kỳ thuật toán 256/384/512-bit phương pháp Rijndael bi ShiftRows W (bi ) = W (ai ) { } W (ai ) ≥ max j W (bi ) j , Nb c ai+1 bi ShiftRows MixColumns W (bi ) = W (ai ) { W (ai +1 ) = W (bi ) c c } W (ai ) ≥ max j W (bi ) j ,Nb c Với cột j hoạt động W (bi ) j + W (ai +1 ) j ≥ B Hình 4.4 Sự lan truyền mẫu hoạt động (thuật toán mở rộng 256/384/512-bit) 102 Chương Định lý 4.2: Với vết lan truyền qua hai chu kỳ, tổng số cột hoạt động mẫu đầu vào mẫu đầu tối thiểu Nb + với Nb số lượng cột trạng thái Wc (a ) + Wc (a ) ≥ Nb + (4.19) "Chứng minh: Trong vết tồn cột hoạt động mẫu a1 (hoặc b0) Gọi cột hoạt động cột g Gọi B Branch Number phép biến đổi MixColumns Tổng trọng số byte cột g mẫu b0 mẫu a1 bị chặn B W (b0 ) g + W (a1 ) g ≥ B (4.20) Phép biến đổi ShiftRows di chuyển tất byte thành phần cột thuộc đến cột khác thuộc bi ngược lại, cột thuộc bi lại chứa byte thành phần cột khác thuộc Trọng số cột hay số lượng cột hoạt động bị chặn trọng số byte cột thuộc bi trọng số cột bi bị chặn trọng số byte cột thuộc Dĩ nhiên trọng số cột hay bi bị chặn số lượng cột Nb trạng thái { } W (b ) ≥ {Nb, max W (a ) } Wc (ai ) ≥ Nb, max j W (bi ) j c i j i (4.21) (4.22) j { => Wc ( a0 ) + Wc ( b1 ) ≥ Nb, max j W ( b0 ) { } j } + { Nb, max W ( a ) } (4.23) j { => Wc ( a0 ) + Wc ( b1 ) ≥ Nb,W ( b0 ) g + Nb, W ( a1 ) g 104 } j (4.24) Phương pháp Rijndael mở rộng Trường hợp 1: Nếu W(b0)⏐g ≥ Nb hay W(a1)⏐g ≥ Nb Wc(a0) + Wc(b1) ≥ Nb + (4.25) Trường hợp 2: Nếu W(b0)⏐g < Nb W(a1)⏐g < Nb Wc(a0) + Wc(b1) ≥ W(b0)⏐g + W(a1)⏐g ≥ B (4.26) Do Nb nhận ba giá trị 4, 6, hay B nhận ba giá trị 5, hay 17 (tương ứng với thuật toán gốc, thuật toán mở rộng 256/384/512-bit hay 512/768/1024-bit) Vậy: Wc(a0) + Wc(b1) ≥ B ≥ Nb + (4.27) Do a2 b1 có trọng số cột nên suy Wc(a0) + Wc(b2) ≥ Nb + (4.28) Hình 4.6 minh họa Định lý 4.2 thuật toán mở rộng 256/384/512-bit a0 a1 b0 MixColumns ShiftRows { } Wc (a0 ) ≥ max j W (b0 ) j ,Nb a1 W (a1 ) j + W (b0 ) j ≥ B a2 b1 ShiftRows { MixColumns } Wc (b1 ) ≥ max j W (a1 ) j ,Nb Wc (a2 ) = Wc (b1 ) Hình 4.6 Minh họa Định lý 4.2 với Wc (a1 ) = (thuật toán mở rộng 256/384/512-bit) 105 Chương Định lý 4.3: Mọi vết lan truyền qua chu kỳ có tối thiểu B ∗ (Nw + 1) byte hoạt động với B Branch Number phép biến đổi MixColumns "Chứng minh: Áp dụng Định lý 4.1 cho hai chu kỳ đầu (chu kỳ 2) hai chu kỳ sau (chu kỳ 4), ta có: ⎧W (a ) + W (a1 ) ≥ BWc (a1 ) ⎨ ⎩W (a ) + W (a3 ) ≥ BWc (a3 ) (4.29) ⇒ ∑W (a ) ≥ B(W (a ) + W (a )) i c c (4.30) i =0 Như vậy, trọng số byte vết bị chặn B(Wc(a1) + Wc(a3)) Theo Định lý 4.2, tổng trọng số cột a1 a3 bị chặn Nb +1 Wc (a1 ) + Wc (a3 ) ≥ Nb + (4.31) Vậy, trọng số byte vết lan truyền qua bốn chu kỳ bị chặn B( Nb + ) hay vết lan truyền qua bốn chu kỳ có B( Nb + ) byte hoạt động Hình 4.7 minh họa Định lý 4.3 thuật toán mở rộng 256/384/512-bit 106 Phương pháp Rijndael mở rộng Wc (a1 ) + Wc (a3 ) ≥ Nb + a0 a1 W (a0 ) + W (a1 ) ≥ 9Wc (a1 ) a2 a3 W (a2 ) + W (a3 ) ≥ B ∗Wc (a3 ) Hình 4.7 Minh họa Định lý 4.3 (thuật toán mở rộng 256/384/512-bit) 4.4.5 Trọng số vết vi phân vết tuyến tính Trong [10], J Daemen chứng minh rằng: Số truyền vết vi phân xấp xỉ tích số S-box hoạt động Độ tương quan vết tuyến tính xấp xỉ tích số độ tương quan đầu ra-đầu vào S-box hoạt động Trong chiến lược thiết kế thuật toán Rijndael, S-box chọn cho giá trị lớn số truyền giá trị lớn độ tương quan nhỏ tốt Bảng thay S-box chọn có giá trị lớn số truyền giá trị lớn độ tương quan 2-6 2-3 Ngoài ra, số lượng S-box hoạt động vết vi phân hay vết tuyến tính lan truyền qua bốn chu kỳ mã hóa thuật toán nguyên thủy, phiên 256/384/512-bit phiên 512/768/1024-bit 5(Nb+1), 9(Nb+1) 107 Chương 17(Nb+1) với Nb số cột trạng thái (phần chứng minh trình bày 4.4.4-Sự lan truyền mẫu) Như vậy, kết luận rằng: Mọi vết vi phân lan truyền qua bốn chu kỳ thuật tốn Rijndael có số truyền tối đa 2-30(Nb+1) Mọi vết vi phân lan truyền qua bốn chu kỳ thuật tốn mở rộng 256/384/512-bit có số truyền tối đa 2-54(Nb+1) Mọi vết vi phân lan truyền qua bốn chu kỳ thuật toán mở rộng 512/768/1024-bit có số truyền tối đa 2-102(Nb+1) Mọi vết tuyến tính lan truyền qua bốn chu kỳ thuật tốn Rijndael ngun thủy có độ tương quan tối đa 2-15(Nb+1) Mọi vết tuyến tính lan truyền qua bốn chu kỳ thuật toán mở rộng 256/384/512-bit có độ tương quan tối đa 2-27(Nb+1) Mọi vết tuyến tính lan truyền qua bốn chu kỳ thuật tốn mở rộng 512/768/1024-bit có độ tương quan tối đa 2-51(Nb+1) 4.5 4.5.1 Khảo sát tính an tồn phương pháp cơng khác Tính đối xứng khóa yếu DES Việc sử dụng số Rcon khác cho chu kỳ giúp hạn chế tính đối xứng thuật tốn Sự khác cấu trúc việc mã hóa giải mã hạn chế khóa “yếu” phương pháp DES Tính chất phi tuyến q trình phát sinh bảng mã khóa mở rộng giúp hạn chế phương pháp phân tích dựa vào khóa tương đương 108 Phương pháp Rijndael mở rộng 4.5.2 Phương pháp cơng Square Phương pháp mã hóa Square J Daemen, L.R Knudsen V Rijmen giới thiệu vào năm 1997 [9] Trong viết này, tác giả trình bày phương pháp cơng đặc biệt thuật tốn mã hóa Square Do phương pháp Rijndael kế thừa nhiều đặc tính phương pháp Square nên phương pháp cơng áp dụng thuật toán Rijndael Trong [8], J Daeman V Rijmen trình bày cách áp dụng phương pháp cơng Square cho thuật tốn Rijndael có tối đa chu kỳ mã hóa Đối với thuật tốn Rijndael có chu kỳ mã hóa, phương pháp công Square tỏ hiệu phương pháp vét cạn để tìm mã khóa với kỹ thuật nay, phương pháp công Square thực Với thuật tốn Rijndael có chu kỳ mã hóa (có từ chu kỳ mã hóa trở lên), phương pháp vét cạn để tìm mã khóa phương pháp hiệu 4.5.3 Phương pháp nội suy Phương pháp nội suy sử dụng phân tích mật mã áp dụng thuật tốn mã hóa theo khối Jokobsen Knudsen trình bày [28] vào năm 1997 Phương pháp áp dụng thành phần sử dụng quy trình mã hóa biểu diễn biểu thức đại số Yêu cầu phương pháp xây dựng đa thức (hay biểu thức chuẩn hóa) dựa vào cặp liệu trước sau mã hóa Nếu đa thức có bậc tương đối nhỏ cần sử dụng vài cặp liệu trước sau mã hóa để xác định hệ số (độc lập với mã khóa) đa thức 109 Chương Bảng thay S-box có cơng thức GF(28) là: S(x)= {63}+{8f}x127+{b5}x191+{01}x223+{f4}x239+ {25}x247+{f9}x251+{09}x253+{05}x254 (4.32) Do tính chất phức tạp biểu thức với hiệu ứng khuếch tán thuật tốn nên khơng thể sử dụng phương pháp nội suy để công phương pháp Rijndael 4.5.4 Các khóa yếu IDEA Trong số phương pháp mã hóa, ví dụ phương pháp IDEA (International Data Encryption Algorithm), việc chọn lựa mã khóa gặp phải số hạn chế Trong phương pháp này, số mã khóa dù hợp lệ sử dụng chúng để mã hóa liệu dễ dàng bị phân tích thơng tin cần mã hóa khơng an tồn [10] Thông thường điểm yếu liên quan đến mã khóa xuất phát từ phụ thuộc vào giá trị cụ thể mã khóa thao tác phi tuyến Trong phương pháp Rijndael thuật tốn mở rộng, khóa sử dụng thơng qua thao tác XOR tất thao tác phi tuyến cố định sẵn bảng thay S-box mà không phụ thuộc vào giá trị cụ thể mã khóa nên khơng có hạn chế việc chọn mã khóa 4.5.5 Phương pháp cơng khóa liên quan Vào năm 1993, Eli Biham giới thiệu phương pháp công mật mã sử dụng mã khóa liên quan [4] Sau đó, phương pháp John Kelsey, Bruce Schneier David Wagner nghiên cứu áp dụng thử số thuật tốn mã hóa [30] vào năm 1996 110 Phương pháp Rijndael mở rộng Trong phương pháp công khóa liên quan, người phân tích thực việc mã hóa sử dụng khóa phân biệt có liên quan với Đối với phương pháp Rijndael thuật tốn mở rộng, tính chất phi tuyến khả khuếch tán thơng tin việc tạo bảng khóa mở rộng làm cho việc phân tích mật mã dựa vào khóa liên quan trở nên khơng khả thi 4.6 Kết thử nghiệm Nhờ áp dụng kỹ thuật bảng tra cứu việc cài đặt phiên mở rộng thuật toán Rijndael nên thời gian thực việc mã hóa thời gian thực việc giải mã tương đương với Các thử nghiệm tiến hành ghi nhận máy Pentium 200 MHz (sử dụng hệ điều hành Microsoft Windows 98), máy Pentium II 400 MHz, Pentium III 733 MHz (sử dụng hệ điều hành Microsoft Windows 2000 Professional), Pentium IV 2.4GHz (sử dụng hệ điều hành Microsoft Windows XP Service Pack 2) Bảng 4.2 Tốc độ xử lý phiên 256/384/512-bit máy Pentium IV 2.4GHz Pentium IV 2.4 GHz Khóa Khối (bit) (bit) 256 256 384 256 512 256 C++ #Nhịp 1763 2091 2456 Tốc độ (Mbit/giây) 343.9 290.4 257.4 C #Nhịp 1721 2052 2396 Tốc độ (Mbit/giây) 353.3 297.8 263.1 111 Chương Bảng 4.3 Tốc độ xử lý phiên 512/768/1024-bit máy Pentium IV 2.4 GHz Pentium IV 2.4 GHz Khóa Khối (bit) (bit) 512 512 768 512 1024 512 C++ #Nhịp 8360 9910 11645 Tốc độ (Mbit/giây) 153.4 130.1 110.7 C #Nhịp 8160 9730 11364 Tốc độ (Mbit/giây) 157.4 132.3 113.7 Bảng 4.2 Bảng 4.3 thể tốc độ xử lý phiên 256/384/512-bit phiên 512/768/1024-bit máy Pentium IV 2.4 GHz Kết tính theo đơn vị Mbit/giây đơn vị nhịp dao động Bảng 4.4 Bảng so sánh tốc độ xử lý phiên 256/384/512-bit Kích thước (bit) Khóa Khối 256 256 384 256 512 256 Pentium 200 MHz C++ C 26.9 27.4 22.7 23.3 19.5 20.2 Tốc độ xử lý (Mbit/giây) Pentium II Pentium III 400 MHz 733 MHz C++ C C++ C 55.0 56.4 100.8 103.4 46.4 47.5 85.0 87.1 41.1 42.0 75.3 76.9 Pentium IV 2.4 GHz C++ C 343.9 353.3 290.4 297.8 257.4 263.1 Bảng 4.5 Bảng so sánh tốc độ xử lý phiên 512/768/1024-bit Kích thước (bit) Khóa Khối 512 512 768 512 1024 512 112 Pentium 200 MHz C++ C 12.0 12.4 10.6 11.0 8.9 9.2 Tốc độ xử lý (Mbit/giây) Pentium II Pentium III 400 MHz 733 MHz C++ C C++ C 24.4 25.1 44.7 45.9 20.7 21.6 37.9 38.6 17.6 18.1 32.3 33.1 Pentium IV 2.4 GHz C++ C 153.4 157.4 130.1 132.3 110.7 113.7 Phương pháp Rijndael mở rộng Kết so sánh tốc độ xử lý máy Pentium 200 MHz (sử dụng hệ điều hành Microsoft Windows 98), máy Pentium II 400 MHz, Pentium III 733 MHz (sử dụng hệ điều hành Microsoft Windows 2000 Professional), Pentium IV 2.4GHz (sử dụng hệ điều hành Microsoft Windows XP Service Pack 2) phiên 256/384/512-bit phiên 512/768/1024-bit thể Bảng 4.4 Bảng 4.5 4.7 Kết luận Đối với phiên nguyên thủy thuật tốn mã hóa Rijndael, phương pháp hiệu để phân tích mật mã phương pháp vét cạn để tìm mã khóa sử dụng Như vậy, sử dụng mã khóa có 128/192/256 bit khơng gian mã khóa K cần khảo sát có 2128, 2192, 2256 phần tử Một cách tương tự, phiên mở rộng thuật toán Rijndael, phương pháp vét cạn để tìm mã khóa phương pháp khả thi so với phương pháp khác Đối với phiên mở rộng 256/384/512-bit thuật tốn mã hóa Rijndael, khơng gian mã khóa K cần khảo sát có 2256, 2384, 2512 phần tử tùy thuộc vào độ dài mã khóa sử dụng 256, 384 hay 512 bit Đối với phiên mở rộng 512/768/1024-bit thuật tốn mã hóa Rijndael, khơng gian mã khóa K cần khảo sát có 2512, 2768, 21024 phần tử tùy thuộc vào độ dài mã khóa sử dụng 512, 768 hay 1024 bit Dựa vào số liệu thống kê Bảng 3.2, Bảng 4.4 Bảng 4.5, nhận thấy tăng gấp đơi kích thước khối xử lý thời gian mã 113 Chương hóa khối liệu tăng lên lần tốc độ mã hóa giảm hai lần Tuy nhiên, điều hồn tồn chấp nhận việc tăng kích thước mã khóa kích thước khối xử lý làm khơng gian mã khóa tăng lên đáng kể thơng tin mã hóa an tồn 114 Các thuật tốn ứng cử viên AES Chương Các thuật toán ứng cử viên AES " Trong chương 3, khảo sát phương pháp mã hóa Rijndael Cùng với phương pháp này, cịn có bốn phương pháp mã hóa khác chọn vào vòng chung kết ứng cử viên chuẩn mã hóa AES, bao gồm phương pháp MARS, RC6, Serpent TwoFish Trong nội dung chương giới thiệu bốn phương pháp mã hóa ứng cử viên AES 5.1 Phương pháp mã hóa MARS MARS thuật tốn mã hóa khóa đối xứng hỗ trợ kích thước khối liệu 128 bit cho phép sử dụng mã khóa có kích thước thay đổi Thuật toán thiết kế sở khai thác mạnh việc thực phép tốn hệ máy tính nhằm tăng hiệu thuật toán so với thuật tốn mã hóa quy ước trước 115 Chương 5.1.1 Quy trình mã hóa Thơng tin cần mã hóa D[3] D[2] D[1] D[0] Cộng khóa Trộn “tới” chu kỳ trộn “tới” khơng có khóa chu kỳ trộn “tới” có khóa Phần lõi chu kỳ trộn “lùi” có khóa chu kỳ trộn “lùi” khơng có khóa Trộn “lùi” Trừ khóa Thơng tin mã hóa D’[3] ⊞ Phép cộng D’[2] D’[1] ⊟ Phép trừ Hình 5.1 Quy trình mã hóa MARS 116 D’[0] Các thuật tốn ứng cử viên AES Hình 5.1 thể mơ hình chung quy trình mã hóa MARS Dữ liệu đầu vào kết trình mã hóa từ có độ dài 32 bit Tất phép tốn quy trình mã hóa giải mã thực từ 32 bit Trong trường hợp khảo sát liệu mã hóa dạng mảng gồm byte, tác giả quy ước sử dụng thứ tự lưu trữ little–endian 5.1.2 S–box Trong trình thiết kế S–box, phần tử S-box chọn cho S– box có đặc tính tuyến tính vi phân an tồn chống lại phương pháp cơng Phụ lục A trình bày chi tiết nội dung S-box sử dụng thuật toán MARS Các S–box phát sinh cách cho i = đến 102, j = đến 4, S [5i + j ] = SHA − 1(5i c1 c c3) j (5.1) (ở SHA – 1(.)j từ thứ j kết SHA – 1) Xem i số nguyên không dấu 32 bit c1, c2, c3 số cố định Trong thực ta đặt c1 = 0xb7415162 , c2 = 0x283f6a88 (là phần khai triển nhị phân phân số e, π tương ứng) biến đổi c3 tìm S–box có đặc tính tốt Xem SHA–1 phép tốn dòng byte sử dụng quy ước little–endian để chuyển đổi từ byte S–box xây dựng sau: Đầu tiên biến đổi giá trị có c3 theo thứ tự tăng dần, bắt đầu với c3 = Đối với giá trị, phát sinh S–box sau cố định cách biến đổi tồn cặp (i, j) mục S0, S1 117 Chương theo thứ tự từ điển kiểm tra xem S[i] ⊕ S[j] có chênh lệch nhiều byte zero Bất kỳ lúc tìm chênh lệch nhiều byte zero thay S[i] với 3⋅S[i] di chuyển đến i Sau dừng lại, thử nghiệm S–box lại để kiểm tra xem có thỏa mãn hết điều kiện 1–8 tính single bit correlation (điều kiện 9) Giá trị c3 giảm single bit correlation c3 = 0x02917d59 S–box có parity bias 2–7, single bit bias đạt cao 1/30, Two consecutive bit bias đạt cao 1/32 single bit correlation bias nhỏ 1/22 5.1.3 Khởi tạo phân bố khóa Thủ tục Key–Expansion thực việc mở rộng mảng khóa k[] bao gồm n từ 32 bit (với n số khoảng từ đến 14) thành mảng K[] gồm 40 từ Cần lưu ý khơng cần có u cầu đặc biệt cấu trúc khóa gốc k[] (ví dụ khóa khơng cần sử dụng bit parity) Ngồi ra, thủ tục Key– Expansion đảm bảo từ khóa sử dụng cho phép nhân thủ tục mã hóa có đặc tính sau đây: Hai bit thấp từ khóa sử dụng phép nhân có giá trị 118 Khơng có từ khóa chứa liên tiếp 10 bit 10 bit ... IV 2. 4GHz Pentium IV 2. 4 GHz Khóa Khối (bit) (bit) 25 6 25 6 3 84 25 6 5 12 256 C++ #Nhịp 1763 20 91 24 56 Tốc độ (Mbit/giây) 343 .9 29 0 .4 25 7 .4 C #Nhịp 1 721 20 52 2396 Tốc độ (Mbit/giây) 353.3 29 7.8 26 3.1... nhịp dao động Bảng 4. 4 Bảng so sánh tốc độ xử lý phiên 25 6/3 84/ 5 12- bit Kích thước (bit) Khóa Khối 25 6 25 6 3 84 25 6 5 12 256 Pentium 20 0 MHz C++ C 26 .9 27 .4 22 .7 23 .3 19.5 20 .2 Tốc độ xử lý (Mbit/giây)... dài mã khóa sử dụng 25 6, 3 84 hay 5 12 bit Đối với phiên mở rộng 5 12/ 768/1 0 24 -bit thuật tốn mã hóa Rijndael, khơng gian mã khóa K cần khảo sát có 25 12, 27 68, 21 0 24 phần tử tùy thuộc vào độ dài mã