Quy trình mã hóa theo khối Thông thường, quy trình mã hóa bao gồm nhiều chu kỳ mã hóa round liên tiếp nhau; mỗi chu kỳ gồm nhiều thao tác mã hóa Từ khóa gốc secret key, phát sinh có q
Trang 1Chủ đề 4:
Data Encryption Standard và Advanced Encryption Standard
PGS.TS Trần Minh Triết
Trang 2Nội dung
Data Encryption Standard
Advanced Encryption Standard
Trang 3Mã hóa tích (Product Cipher)
của ngôn ngữ)
Substitution kết hợp với Substitution an toàn hơn 1 phép
hiện đại
Trang 4Quy trình mã hóa theo khối
Trang 5Quy trình mã hóa theo khối
Thông thường, quy trình mã hóa bao gồm nhiều chu kỳ mã hóa (round) liên tiếp nhau; mỗi chu kỳ gồm nhiều thao tác mã hóa
Từ khóa gốc (secret key), phát sinh (có quy luật) các giá trị khóa
sẽ được sử dụng trong mỗi chu kỳ mã hóa (round key)
Trang 6Kiến trúc chu kỳ mã hóa
Kiến trúc Fiestel
Ví dụ: Blowfish, Camellia, CAST-128, DES, FEAL, KASUMI, LOKI97, Lucifer, MARS, MAGENTA, MISTY1, RC5, TEA, Triple DES, Twofish, XTEA
Kiến trúc SPN
Ví dụ: Rijndael – AES, Anubis…
Trang 7Data Encryption Standard
Trang 8Data Encryption Standard
Key: 56 bit
Block: 64 bit
Trang 12Ví dụ: Bit thứ 58 của x trở thành bit đầu tiên của IP(x)
Bit thứ 50 của x trở thành bit thứ hai của IP(x)
Trang 13Final Permutation
Ví dụ: Bit thứ 58 của x trở thành bit đầu tiên của IP(x)
Bit thứ 50 của x trở thành bit thứ hai của IP(x)
Trang 1548 bit
Trang 21Key Schedule
xoay vòng 1 vị trí
vị trí
Trang 22Các hoán vị trong Key Schedule
40, 48, 56, 64
Chọn 48 bit (bỏ bit 9, 18, 22, 25,
35, 38, 43, 54)
Trang 23Một số nhận xét
Gồm toàn bit 0
Gồm toàn bit 1
Gồm ½ là bit 0 (liên tiếp), ½ là bit 1 (liên tiếp)
Tính chất: Encryptk (P) = P
Khóa có dạng: 7 bit 0 (liên tiếp), 7 bit 1 (liên tiếp)
Encryptk (P) = C ➔ Encrypt k* (P*) = C*
Với x* được tạo bằng cách đảo ngược các bit của x
Trang 24Advanced Encryption Standard
Trang 25Phương pháp mã hóa Rijndael
Trang 26Phương pháp mã hóa Rijndael
thước khối và mã khóa thay đổi linh hoạt với các giá trị
128, 192 hay 256 bit
thống khác nhau từ các thẻ thông minh cho đến các máytính cá nhân
Trang 27Một số khái niệm Toán học
byte
Trang 29Đa thức với hệ số trên GF(28)
) ( )
(
i
i i
i b x a
x b x
a
) 2 (
GF 8
i
b
Trang 30Đa thức với hệ số trên GF(28)
0 1
2 3
3 0
1 2
2 3
0 1
1 2
3 0
a a
a a
a a
a a
a a
a a
a a
a a
Trang 31Phương pháp Rijndael
trạng thái (state)
chia cho 32
Trang 32Biểu diễn khối dữ liệu và mã khóa
Trang 33Chu kỳ mã hóa bình thường
Chu kỳ 1
Mix Columns
Chu kỳ i
Mix Columns
Chu kỳ Nr-1
Mix Columns
Chu kỳ Nr
Mix Columns
Mix Columns
Add Round Key
Sub
…
…
Trang 34Chu kỳ mã hóa cuối
Chu kỳ 1
Mix Columns
Chu kỳ i
Mix Columns
Chu kỳ Nr-1
Mix Columns
Round Key
Sub
…
…
Trang 35Kiến trúc Substitution-Permutation
Network
Add Round Key
32-bit LT 32-bit LT 32-bit LT 32-bit LT
Mix Columns
Add Round Key Sub
Trang 36Quy trình mã hóa của thuật toán
Trang 37S' 00 S' 01 S' 02 S' 03 S' 10 S' 11 S' 12 S' 13 S' 20 S' 22 S' 23 S' 30 S' 31 S' 32 S' 33
Phép biến đổi SubBytes
Sij
S-Box
S’ij
SubBytes
Trang 38Phép biến đổi SubBytes
(S-box)
hành
Trang 39Phép biến đổi SubBytes
Xác định phần tử nghịch đảo x-1 (có biểu diễn nhị phân
{x7x6x5x4x3x2x1x0}) Quy ước {00} -1 = {00}
Phép biến đổi affine:
y i =x i x (i+4)mod8 x (i+5)mod8 x (i+6)mod8 x (i+7)mod8 c i với {c7c6c5c4c3c2c1c0} = {63}
Trang 40Phép biến đổi SubBytes
1 1
1 1
1 0
0 0
0 1
1 1
1 1
0 0
0 0
1 1
1 1
1 0
0 0
0 1
1 1
1 1
1 0
0 0
1 1
1 1
1 1
0 0
0 1
1 1
1 1
1 0
0 0
1 1
1 1
1 1
0 0
0 1
7 6 5 4 3 2 1 0
Trang 41Phép biến đổi ngược
InvSubBytes
Trang 42Phép biến đổi ngược
0 1
0 1
0 0
1 0
0 0
1 0
1 0
0 1
1 0
0 1
0 1
0 0
0 1
0 0
1 0
1 0
0 0
1 0
0 1
0 1
1 0
0 1
0 0
1 0
0 1
0 0
1 0
0 1
1 0
1 0
0 1
0 0
7 6 5 4 3 2 1 0
Trang 43Phép biến đổi ShiftRows
ShiftRows
Trang 44Phép biến đổi ShiftRows
(c + shift(r, Nb)) mod Nb
cột c sẽ dịch chuyển đến cột (c- shift(r, Nb)) mod Nb
Trang 45W l WW l+c l+1 W l+2 W l+3
AddRoundKey
Trang 46Phép biến đổi AddRoundKey
ứng trong mã khóa của chu kỳ hiện hành
AddRoundKey.
Trang 47Phép biến đổi MixColumns
S' 21
a(x)
MixColumns
Trang 48Phép biến đổi MixColumns
c c c c
s s s s
s s s s
, 3
, 2
, 1
, 0
' , 3
' , 2
' , 1
' , 0
02 01
01 03
03 02
01 01
01 03
02 01
01 01
03 02
Trang 49Phép biến đổi ngược
c c c c
s s s s
s s s s
, 3
, 2
, 1
, 0
' , 3
' , 2
' , 1
' , 0
0e 09
0d 0b
0b 0e
09 0d
0d 0b
0e 09
09 0d
0b 0e
Trang 50Phát sinh mã khóa mỗi chu kỳ
độ dài 4 byte)
trị Nk, tức là phụ thuộc vào độ dài của mã khóa chính
Trang 51Phát sinh mã khóa mỗi chu kỳ
Trang 52Phát sinh mã khóa mỗi chu kỳ
KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr + 1)], Nk)
if (Nk = 8) and (i mod Nk = 4) then
temp = SubWord (temp)
Trang 53Phát sinh mã khóa mỗi chu kỳ