Professional Documents
Culture Documents
Báo Cáo BTL môn An Toàn Bảo Mật (đề tài AES) - 741869
Báo Cáo BTL môn An Toàn Bảo Mật (đề tài AES) - 741869
Từ trước công nguyên con người đã phaỉ quan tâm tới viêc̣ lam ̀ thế naò để đam̉ baỏ an
toaǹ bí mâṭ cho cać taì liêu,
̣ văn ban̉ quan trong,̣ đăc̣ biêṭ là trong lĩnh vực quân sự, ngoaị
giao . Ngày nay với sự xuât́ hiêṇ cuả maý tinh,́ cać taì liêụ văn ban̉ giâý tờ và cać thông tin
quan trong ̣ đều được số hóa và xử lý trên maý tinh, ́ được truyền đi trong môi trường
mạng- một môi trường mà măc̣ đinh ̣ là không an toan. ̀ Do đó yêu câù về viêc̣ có môṭ cơ
chê,́ giaỉ phaṕ để bao
̉ vệ sự an toan
̀ và bí mâṭ cuả cać thông tin nhaỵ cam,
̉ quan trong ngày
càng trở nên câṕ thiêt. ́ An toàn bảo mật thông tin là môn hoc̣ đam ̉ baỏ cho muc̣ đich ́ nay.
̀
Khó có thể thâý môṭ ứng dung ̣ Tin hoc̣ có ich
́ naò laị không sử dung ̣ cać thuâṭ toan ́ mã hóa
thông tin.
Trong thời gian học tập tại trường Đại học công nghiệp Hà Nội, được sự giúp đỡ tận
tình của giảng viên Ths.Đỗ Thị Minh Nguyệt, chúng em đã có thêm những kiến thức về
môn học cũng như ứng dụng của An toàn bảo mật thông tin trong thực tế. Trong phạm
vi bài tập lớn, chúng em sẽ tìm hiểu về hệ mã hóa AES (Advanced Encryption Standard).
Chúng em xin chân thành cảm ơn giảng viên Ths. Đỗ Thị Minh Nguyệt đã giúp đỡ chúng
em hoàn thành bài tập này!
Chúng em xin chân thành cảm ơn!
Mã hóa key
Sau mỗi vòng lặp, đến bước AddRoundKey, kết quả sẽ được (+) 1 khóa round key. Vậy
Round key được tính như thế nào. Phần này chúng ta sẽ tìm hiểu về cách mã hóa Round
key
Ta có key ban đầu:
2b 28 Ab 09
7e Ae F7 Cf
15 D2 15 4f
16 A6 88 3c
Để thực hiện việc tính Round key(1). Đầu tiên ta sẽ lấy cột cuối cùng của key ban đầu.
Đảo bit đầu tiên xuống dưới
09
Cf
4f
3c
Thành
Cf
4f
3c
09
Với Rcon=
01
00
00
00
2b 8a 01 A0
7e 84 00 Fa
(+) (+) =
15 Eb 00 Fe
16 01 00 17
Sau khi tính ta có cột thứ 1 của Round key(1)
A0
Fa
Fe
17
Tiếp tục ta sẽ lấy cột thứ 2 của key (+) cột thứ nhất của RoundKey(1) nhưng không
cộng với Rcon, ta có côt thứ 2 của RoundKey(1)
A0 88
Fa 54
Fe 2c
17 bl
Tiếp tục, ta lại lấy cột thứ 3 của key (+) cột thứ 2 của RoundKey (1) ta được cột
thứ 3 của Roundkey(1)
A0 88 23
Fa 54 A3
Fe 2c 39
17 bl 39
Tiếp tục, ta lại lấy cột thứ 4của key (+) cột thứ 3 của RoundKey (1) ta được cột thứ 4
của Roundkey(1)
A0 88 23 2a
Fa 54 A3 6c
Fe 2c 39 76
17 bl 39 05
Roundkey(1)
Cuối cùng ta RoundKey(1). Tương tự ta sẽ tính các RoundKey tiếp. Trong bài này ta sử
dụng khóa 128b nên sẽ có 10 lần lặp. vì thế ta sẽ có 10 Roundkey
F2 7a 59 73
C2 96 35 59
95 B9 80 F6
F2 43 7a 7f
Roundkey(2)
3d 47 1e 6d
80 16 23 7a
47 Fe 7e 88
7d 3e 44 3b
Roundkey(3)
Ef A8 B6 Db
44 52 71 0b
A5 5b 25 Ad
41 7f 3b 00
Roundkey(4)
D4 8c Ca 11
D1 83 F2 F9
C6 9d B8 15
F8 87 Bc bc
Roundkey(5)
6d 11 Db Ca
88 0b F9 00
A3 3e 86 93
7a Fd 41 fd
Roundkey(6)
4e 5f 84 4e
54 5f A6 A6
F7 C9 4f Dc
0e F3 B2 4f
Roundkey(7)
Ea B5 31 7f
D2 8d 2b 8d
73 Ba F5 29
21 D2 60 2f
Roundkey(8)
Ac 19 28 57
77 Fa D1 5c
66 dc 29 00
F3 21 41 6e
Roundkey(9)
D0 C9 E1 B6
14 Ee 3f 63
F9 25 0c 0c
A8 89 C8 A6
Roundkey(10)
0011 0010
(+)
0010 1011
______________
(=) 0001 1001
Cách tính: ta lấy từng số cộng với nhau. Nếu 2 số bằng nhau (đều là số 0 hay số 1) thì
kết quả sẽ là 0, còn 2 số khác nhau kết quả là số 1
Từ kết quả 0001 1001 ta biến đổi về hệ 16 thì kết quả là 19
Từ đó ta có bảng
19 A0 9a E9
3d F4 C6 F8
E3 E2 8d 48
Be 2b 2a 08
Tiếp theo, bắt đầu vào vòng lặp
Vòng lặp
B1: SubBytes
Từ bảng trên ta đem so sánh với bảng S-Box
Với giá trị 19, ta tìm đến hàng 1 (1x) cột 9 (x9) ta được giá trị “d4”
Với giá trị 3d, ta tìm đến hang 3 (3x) cột d (xd) ta được giá trị “27”
bf B4 41 27
Hàng thứ 3 chuyển bit đầu tiên về vị trí của bit cuối cùng,các bit còn lại sẽ được đẩy
lên. Sau đó lại thực hiện việc chuyển 1 lần nữa
11 98 5d 52
98 5d 52 11
5d 52 11 98
Tương tự như vậy,hàng thứ 4 sẽ thực hiện chuyển vị trí bit đầu tiên xuống bit
cuối cùng và lặp lại 2 lần
ae F1 E5 30
F1 E5 30 ae
E5 30 ae F1
30 ae F1 E5
Sau khi thực hiện chuyển bit, ta có kết quả
D4 E0 B8 1e
bf B4 41 27
5d 52 11 98
30 ae F1 E5
B3.Mix Column
Sau khi thực hiện việc chuyển bit, ta có bảng kết quả
D4 E0 B8 1e
bf B4 41 27
5d 52 11 98
30 ae F1 E5
Trong bước Mix Column, ta sẽ thực hiện việc nhân các cột của bảng kết quả với ma
trận mặc định (như hình vẽ).
D4
Bf
5d
30
Tính (D4.02)
Biến đổi D4 về hệ Hex:D4=11010100
Với số nhân là “02”, ta có cách thực hiện như sau
Ta sẽ thêm số “0” vào cuối cùng của dãy sau khi chuyển về hệ Hex, vì thế dãy số
của chúng ta sẽ biến đổi. Cụ thể trong trường hợp này, số “1” đầu tiên của dãy sẽ bị
loại bỏ
D4=10101000
Sau đó, chúng ta sẽ lấy kết quả sau khi thêm bit nhân với dãy bit (00011011)
10101000
Xor
00011011
= 10110011
= 01100101
Với (bf.01)=bf=10111111
Từ đó ta có (bf.03)=(bf.02)xor(bf.01)
01100101
Xor
10111111
= 11011010
Tương tự ta có (5d.01)=01011101
(30.01)=00110000
Từ đó:
X1= (D4.02) xor (bf.03) xor (5d.01)xor(30.01)
1011 0011
Xor
1101 1010
Xor
0101 1101
Xor
0011 0000
D4 E0 B8 1e 04 E0 48 28
bf B4 41 27 66 Cb F8 06
=
5d 52 11 98 81 19 D3 26
30 ae F1 E5 E5 9a 7a 4c
A0 88 23 2a
A4 68 6b 02
04 E0 48 28 Fa 54 A3 6c
9c 9f 5b 6a
66 Cb F8 06 Fe 2c 39 76 =
7f 35 Ea 50
81 19 D3 26 17 bl 39 05
F2 2b 43 49
E5 9a 7a 4c
Roundkey(1)
Sau khi kết thúc AddRoundKey, vòng lặp thứ 2 bắt đầu
Input sẽ là kết quả của vòng Addroundkey trước:
Vòng Lặp Cuối
Như đã trình bày, với khóa k=128b, mã hóa AES sẽ thực hiện 9 vòng lặp bao gồm 4
bước.
Đến vòng lặp thứ 10(vòng cuối), AES sẽ chỉ thực hiện 3 bước
SubBytes
ShiftRows
AddRoundKey
Trong vòng lặp cuối sẽ bỏ đi bước MixColumn
Kết thúc vòng 10,ta sẽ thu được kết quả:
39 02 dc 19
25 dc 11 6a
84 09 85 0b
1d Fd 97 32
Phần 3: Giải mã
Thuật toán giải mã được trình bày như sơ đồ ban đầu ta đã thấy thứ tự các hàm biến
đổi được áp dụng khác so với thuật toán mã hóa trong khi dạng của danh sách khóa 2
thuật toán vẫn giữ nguyên. Tuy vậy, một sô đặc điểm của AES cho phép chúng ta có
một thuật toán giải mã tương đương có thứ tự áp dụng các hàm biến đổi giống với
thuật toán mã hóa ( tất nhiên là biến đổi bằng cách làm ngược cảu chúng). Điều này làm
được bằng cách thay đổi sách khóa.
Ví dụ:
Bản khóa:
39 02 dc 19
25 dc 11 6a
84 09 85 0b
1d Fd 97 32
Round key 10:
D0 C9 E1 B6
14 Ee 3f 63
F9 25 0c 0c
A8 89 C8 A6
Kết quả:
E9 Cb 3d Af
31 32 2e 09
7d 2c 89 07
B5 72 5f 94
2. InvShiftRows ()
Ví dụ:
Ban đầu:
E9 Cb 3d Af
31 32 2e 09
7d 2c 89 07
B5 72 5f 94
E9 Cb 3d Af
09 31 32 2e
89 07 7d 2c
72 5f 95 B5
3. InvSubBytes ()
Quá trình Process InvSubBytes tương tự với SubBytes, nhưng các bảng được sử dụng
khác nhau. Bảng được sử dụng là các bảng S-Box nghịch đảo:
Ví dụ:
Ban đầu:
E9 Cb 3d Af
09 31 32 2e
89 07 7d 2c
72 5f 95 B5
Kết quả sau khi so bảng:
Eb 59 8b 1b
40 2e A1 C3
F2 38 13 42
1e 84 E7 D2
4. InvAddRows ()
Ban đầu
Eb 59 8b 1b
40 2e A1 C3
F2 38 13 42
1e 84 E7 D2
Kết quả:
47 40 A3 4c
37 D4 70 9f
94 E4 3a 42
Ed A5 A6 bc
4. InverseMixCollums ()
Hàm này là hàm ngược của hàm MixColum. Hàm này làm việc trên các cột của mảng
trạng thái, coi mỗi cột như là một mô tô đa thức 4 hạng tử. Các cột được xem là các đa
thức trên GF(28) và được nhân theo modulo x4+1 với 1 đa thức cố định là a-1(x):
a-1(x)= {0b}x-3 + {0d}x-3+{09}x + {0e}
Trong đó 0<c<Nb.
Kết quả là 4 byte trong mỗi cột được thay thế bằng công thức sau:
Ví dụ:
Ban đầu:
47 40 A3 4c
37 D4 70 9f
94 E4 3a 42
Ed A5 A6 bc
Tiến hành:
dòng
Cột
Tất cả các cột được thực hiện cùng 1 cách như trên và kết quả thu được như sau:
87 F2 4d 97
6e 4c 90 Ec
46 E7 4a C3
A6 8c D8 95
Làm tương tự với các vòng lặp theo sơ đồ mã hóa và giải mã, kết quả cuối cùng sau
vòng lặp thứ 10 là bản rõ như sau:
32 88 31 E0
43 5a 31 37
F6 30 98 07
A8 8d A2 34