I. Lý thuyết chung ............................................................................................................................................ 3
1. ASCII ............................................................................................................................................................. 3
2. Nghịch đảo cộng .......................................................................................................................................... 3
3. Nghịch đảo nhân ......................................................................................................................................... 3
4. Euclidean Algorithm .................................................................................................................................... 4
5. Euclidean mở rộng ...................................................................................................................................... 4
6. Ma trận ........................................................................................................................................................ 5
7. Ma trận dư – Tính nghịch đảo .................................................................................................................... 6
II. Mã cổ điển ................................................................................................................................................... 7
1. Addive Cipher ............................................................................................................................................ 7
2. Mulplicave Cipher: ................................................................................................................................... 7
3. Ane Cipher: ............................................................................................................................................... 7
4. Substuon Cipher: .................................................................................................................................... 7
5. Vigenere Cipher: .......................................................................................................................................... 8
6. Hill Cipher: ................................................................................................................................................... 8
7. Stream Cipher .............................................................................................................................................. 9
III. Mã hiện đại .............................................................................................................................................. 10
1. DES ............................................................................................................................................................. 10
1.1.Hoán vị khởi to IP ............................................................................................................................. 12
1.2 Tính toán giá trị các khóa vòng – KS ..................................................................................................... 13
1.3 Tính hàm mã hóa f(R,K) ........................................................................................................................ 15
1.4 Giá trị tại mỗi vòng lặp mã hóa ............................................................................................................. 17
1.5 Hoán vị khởi tạo đảo IP-1 ...................................................................................................................... 18
1.6. Thuật toán giải mã dữ liệu DES ............................................................................................................ 18
2.AES - Mã hóa AES ........................................................................................................................................ 19
2.1 Chức năng AddRoundKey ..................................................................................................................... 20
2.2 Chức năng SubBytes ............................................................................................................................. 21
2.3. Chức năng ShiRows ........................................................................................................................... 22
2.4. Chức năng MixColumns ....................................................................................................................... 22
2.5. Chức năng KeyExpansion ..................................................................................................................... 24
3. Giải mã AES ................................................................................................................................................ 26
3.1 Chức năng AddRoundKey đảo .............................................................................................................. 26
3.2. Chức năng InvShiRows....................................................................................................................... 27
3.3 Chức năng InvSubBytes ......................................................................................................................... 27
3.4 Chức năng InvMixColumns ................................................................................................................... 28
3.5. Chức năng InvKeyExpansion ................................................................................................................ 31
4. RSA ............................................................................................................................................................. 32
4.1. Tạo khóa ............................................................................................................................................... 33
4.2 Mã hóa .................................................................................................................................................. 33
4.3. Giải mã ................................................................................................................................................. 34
4.4 Ví dụ ...................................................................................................................................................... 34
5. RC4 ( chưa chắc thi) ................................................................................................................................... 37
6. Knapsack .................................................................................................................................................... 39
6.1.Lý thuyết ................................................................................................................................................... 39
6.2.Ví dụ .......................................................................................................................................................... 40
7. Chữ ký số - Elgamal ................................................................................................................................... 42
7.1. Mã hóa và giải mã ................................................................................................................................ 42
7.2.Ví dụ: ......................................................................................................................................................... 43
8. Hệ mật Rabin ............................................................................................................................................ 44
8.1. Mã hóa và giải mã ................................................................................................................................ 44
8.2. Ví dụ ..................................................................................................................................................... 45
1. SHA- 512 .................................................................................................................................................... 46
10.Whirlpool ................................................................................................................................................... 51
I. Lý thuyết chung
1. ASCII
2. Nghịch đảo cộng
Trong số học mô-đun, mỗi số nguyên có một nghịch đảo cộng. Tổng của một số nguyên và nghịch đảo
cộng của nó đồng dư với 0 modulo n.
𝑎 + 𝑏 ≡ 0(𝑚𝑜𝑑 𝑛)
dụ trong Z10 các cặp ( 0,0), (1,9),(2,8),(3,7),..
3. Nghịch đảo nhân
Trong số học mô-đun, một số nguyên có thể có hoặc không có một phép nhân nghịch đảo.Khi đó, ch
của số nguyên và phép nhân nghịch đảo của nó đồng dư với 1 modulo n.
• Một số nguyên a có nghịch đảo nhân trong Zn khi và chỉ khi gcd(n, a)=1, tức là a và n là nguyên tố của
nhau
Trong Zn, hai số a và b là snghịch đảo của nhau nếu
𝒂 × 𝒃 𝟏(𝒎𝒐𝒅 𝒏)
Ví dụ
4. Euclidean Algorithm
5. Euclidean mở rộng
6. Ma trn
- Định thức
Ma trận 3x3
Ma trận 4x4
7. Ma trận dư – Tính nghịch đảo
Mật mã học sử dụng ma trận dư: ma trận trong đó tất cả các nguyên tố đều có trong Zn. Một ma
trận dư có một nghịch đảo nhân nếu gcd (det (A), n) = 1.
𝐴 × 𝐴
−1
𝑚𝑜𝑑 𝑛 = 𝐼
Ex:
Ví dụ :
II. Mã cổ điển
1. Addive Cipher
VD: Mã hóa bản n P = “VIETNAM” bằng mật mã cộng với khóa k = 5
V 21 => Encrypon: (21 + 05) mod 26 = 00 A
I 08 => Encrypon: (08 + 05) mod 26 = 13 N
E 04 => Encrypon: (04 + 05) mod 26 = 09 J
T 19 => Encrypon: (19 + 05) mod 26 = 24 Y
N 13 => Encrypon: (13 + 05) mod 26 = 18 S
A 00 => Encrypon: (00 + 05) mod 26 = 05 F
M 12 => Encrypon: (12 + 05) mod 26 = 17 R
=> C = “ANJYSFR”
2. Mulplicave Cipher:
3. Ane Cipher:
4. Substuon Cipher:
5. Vigenere Cipher:
6. Hill Cipher:
7. Stream Cipher
III. Mã hiện đại
1. DES
Giả sử ta có dữ liệu cần mã hóa và key là:
M = 00123456789abcde (Hex) = 0000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010
1011 1100 1101 1111
K = 0133457799bbcd (Hex) = 0000 0001 0011 0011 0100 0101 0111 0111 1001 10001 1011 1011
1100 1100 1111 1111
1.1.Hoán vị khởi tạo IP
Thông điệp M được đánh số vị trí bit từ trái qua phải như sau:
Sắp xếp lại thứ tự các bit của M theo bảng hoán vị IP,
kết quả có được sau bước này là:
IP(M) = 98fecc00e054f0aa (Hex) = 1001 1000 1111
1110 1100 1100 0000 0000 1110 0000 0101 0100
1111 0000 1010 1010
1.2 Tính toán giá trị các khóa vòng – KS
Để nh toán hàm mã hóa f, chúng ta cần có giá trị khóa cho từng lần lặp mã hóa. Key ban đầu được đánh
số thứ tự bit từ trái qua phải như sau:
Sau khi sắp xếp các bit theo bảng hoán vị PC-1, kết quả thu được là hai giá trị đầu như sau:
C0 = f0ccaab (Hex) = 1111 0000 1100 1100 1010 1010 1011
D0 = aaccf0a (Hex) = 1010 1010 1100 1100 1111 0000 1010
Để nh khóa vòng đầu ên K1 thì C0 và D0 sẽ được dịch (quay) trái 1 bit. Giá trị thu được sau khi dịch trái
là:
C1 = e199557 (Hex) = 1110 0001 1001 1001 0101 0101 0111
D1 = 5599e15 (Hex) = 0101 0101 1001 1001 1110 0001 0101
Hai chuỗi C1 D1 được ghép lài thành một chuỗi 56 bit e1995575599e15. Chuỗi này được hoán vị bằng
bảng PC-2 để được giá trị khóa vòng 48 bit thứ nhất K1.
K1 = 1b02efdb49a5 (Hex)
Để nh khóa vòng K2 thì ly C1 D1 dịch trái với số ợng bit theo bảng ới, rồi lấy kết quả hoán v
theo bảng PC-2. Quá trình cứ ếp tục cho đến khóa vòng cuối cùng K16. Kết quả các khóa vòng 48 bit
thu được là:
K2 = 69aed925ae66 (Hex)
K3 = 55fc8ab4acd2
K4 = 72add2ad8657
K5 = 7cec071fe6c2
K6 = 63a51e3cc545
K7 = 6c84b78ae4c6
K8 = f7883aece781
K9 = c0dbeb27b839
K10 = b1f347631d76
K11 = 215fc30d89be
K12 = 7171f5455cd5
K13 = 95c5d14b80fd
K14 = 5743b783đ8d
K15 = bf91850a17b5 K16 = cb3d0bbc7072
Iteraon
number
1
2
3
4
5
6
7
8
9
11
12
13
14
15
Number of
lef
t
shi
1
1
2
2
2
2
2
2
1
2
2
2
2
2
1.3 Tính hàm mã hóa f(R,K)
Sau bước hoán vị khi tạo IP, giá trị IP(M) sẽ được tách làm hai phần là:
R0 = e054f0aa (Hex) = 1110 0000 0101 0100 1111 0000 1010 1010
L0 = 98fecc00 (Hex) = 1001 1000 1111 1110 1100 1100 0000 0000
Giá trị 32 bit của R0 được tra qua bảng E để tạo ra một giá trị 48 bit.
E(R0) = 7002a97a1555 (Hex)
Giá trị này được XOR với khóa vòng thứ nht K1 và được kết quả
XOR(E(R0), K1) = 6b0046a15cf0 (Hex)
Giá trị trên được chia thành 8 nhóm theo thứ tự từ trái qua phải, mỗi nhóm 6 bit để đưa đến các bảng S.
Với bài ta có bảng
Các giá trị đầu ra sau bước tra các bảng S sẽ được ghép lại theo thứ tự từ S1 đến S8 đđược 1 giá tr32
bit.
S1()S2()S3()S4()S5()S6()S7()S8() = 10010101110100111010110101010000 = 95d3ad50 (Hex)
Giá trị này được hoán vị bằng bảng P để cho ra giá trị của hàm f.
f(R0,K1) = 97d1619a (Hex) = 1001 0111 1101 0001 0110 0001 1001 1010
Tương tự, ta có giá trị hàm f tại các vòng lặp mã hóa còn lại như sau:
f(R1,K2) = 88488d0b (Hex)
f(R2,K3) = da3b2692
f(R3,K4) = f44950b2
f(R4,K5) = d83237fd
f(R5,K6) = afc43b25
f(R6,K7) = 4e5123a2
f(R7,K8) = 6cfdecb8
f(R8,K9) = 0600b1
f(R9,K10) = d51508e4
f(R10,K11) = fcf67146
f(R11,K12) = 704fa3a5
f(R12,K13) = 7bfe2806
f(R13,K14) = 65fc7a48
f(R14,K15) = 513f1d11 f(R15,K16) = cbf5252d
1.4 Giá trị tại mỗi vòng lặp mã hóa
Giá trị của hàm f(R,K) được sử dụng để nh giá trị Rn và Ln tại mỗi vòng lặp mã hóa theo công thức:
1.5 Hoán vị khởi tạo đảo IP-1
Giá trị R16 L16 của vòng lặp hóa cuối cùng sẽ được ghép lại thành một chuỗi 64 bit để thực hiện
hoán vị theo bảng IP-1.
Kết quả của phép hoán vị này chính là giá trị mã hóa (ciphertext) cần nh.
IP-1(R16, L16) = 1ab69d5a93e80b (Hex) = 0001 1010 1011 1111 1111 0110 1001 1101 0101 1010 1001
0011 1110 1000 0000 1011
1.6. Thuật toán giải mã dliệu DES
Các bước của quá trình giải mã dữ liệu được thực hiện tương tự như quá trình mã hóa dữ liệu. Trong
quá trình giải mã có một số thay đổi như sau:
Đầu vào lúc này là dữ liệu cần giải mã (ciphertext) và đầu ra là kết quả giải mã được (plaintext).
Khóa vòng sử dụng trong các vòng lặp giải mã có thứ tự ngược với quá trình mã hóa. Nghĩa là, tại
vòng lặp giải mã đầu ên, khóa vòng được sử dụng là K16. Tại vòng lặp giải mã thứ 2, khóa vòng
được sử dụng là K15, và tại vòng lặp giải mã cuối cùng thì khóa vòng được sử dụng là K1
2.AES - Mã hóa AES
AES là một mật mã không phải Feistel, mã hóa và giải mã một khối dữ liệu 128 bit. Nó sử dụng 10, 12
hoặc 14 vòng. Kích thước khóa, có thể là 128, 192 hoặc 256 bit, tùy thuộc vào số vòng
ớc 1. Bước khởi tạo: dữ liu cần được hóa plain_text[127:0] kết hợp với key[127:0] bng
chức năng AddRoundKey
ớc 2. Bước lặp hóa: kết quả ớc 1 được sử dụng để thực hiện tuần tự các chức năng
SubBytes, ShiRows, MixColumns và AddRoundKey. Bước y được lặp lại 9 lần. Chú ý,
KeyExpansion thực hiện song song với bước AddRoundKey để tạo khóa vòng cho chức năng này.
ớc 3. Bước tạo ngõ ra: Sau 9 lần lặp ớc 2, kết quả được sử dụng để thực hiện tuần tự các
chức năng SubBytes, ShiRows và AddRoundKey để tạo ngõ ra cipher_text[127:0].
Quá trình mã hóa AES-128 sẽ được giải thích trên một ví dụ cụ thể. Giả sử chuỗi dữ liệu cần mã hóa
plain_text[127:0] và khóa mã key[127:0] có giá trị như sau:
plain_text[127:0] = 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34
key[127:0] = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận với mỗi phần tử là một byte.
2.1 Chức năng AddRoundKey
Chức năng AddRoundKey thực hiện :
1. ớc khởi tạo: XOR khóa mã với ma trận dữ liu
2. ớc lặp mã hóa và bước tạo ngõ ra: XOR khóa vòng (round key) với ma trận trạng thái.
Chức năng AddRoundKey cho bước khởi tạo

Preview text:


I. Lý thuyết chung ............................................................................................................................................ 3
1. ASCII ............................................................................................................................................................. 3
2. Nghịch đảo cộng .......................................................................................................................................... 3
3. Nghịch đảo nhân ......................................................................................................................................... 3
4. Euclidean Algorithm .................................................................................................................................... 4
5. Euclidean mở rộng ...................................................................................................................................... 4
6. Ma trận ........................................................................................................................................................ 5
7. Ma trận dư – Tính nghịch đảo .................................................................................................................... 6
II. Mã cổ điển ................................................................................................................................................... 7
1. Additive Cipher ............................................................................................................................................ 7
2. Multiplicative Cipher: ................................................................................................................................... 7
3. Affine Cipher: ............................................................................................................................................... 7
4. Substitution Cipher: .................................................................................................................................... 7
5. Vigenere Cipher: .......................................................................................................................................... 8
6. Hill Cipher: ................................................................................................................................................... 8
7. Stream Cipher .............................................................................................................................................. 9
III. Mã hiện đại .............................................................................................................................................. 10
1. DES ............................................................................................................................................................. 10
1.1.Hoán vị khởi tạo – IP ............................................................................................................................. 12
1.2 Tính toán giá trị các khóa vòng – KS ..................................................................................................... 13
1.3 Tính hàm mã hóa f(R,K) ........................................................................................................................ 15
1.4 Giá trị tại mỗi vòng lặp mã hóa ............................................................................................................. 17
1.5 Hoán vị khởi tạo đảo IP-1 ...................................................................................................................... 18
1.6. Thuật toán giải mã dữ liệu DES ............................................................................................................ 18
2.AES - Mã hóa AES ........................................................................................................................................ 19
2.1 Chức năng AddRoundKey ..................................................................................................................... 20
2.2 Chức năng SubBytes ............................................................................................................................. 21
2.3. Chức năng ShiftRows ........................................................................................................................... 22
2.4. Chức năng MixColumns ....................................................................................................................... 22
2.5. Chức năng KeyExpansion ..................................................................................................................... 24
3. Giải mã AES ................................................................................................................................................ 26
3.1 Chức năng AddRoundKey đảo .............................................................................................................. 26
3.2. Chức năng InvShiftRows....................................................................................................................... 27
3.3 Chức năng InvSubBytes ......................................................................................................................... 27
3.4 Chức năng InvMixColumns ................................................................................................................... 28
3.5. Chức năng InvKeyExpansion ................................................................................................................ 31
4. RSA ............................................................................................................................................................. 32
4.1. Tạo khóa ............................................................................................................................................... 33
4.2 Mã hóa .................................................................................................................................................. 33
4.3. Giải mã ................................................................................................................................................. 34
4.4 Ví dụ ...................................................................................................................................................... 34
5. RC4 ( chưa chắc thi) ................................................................................................................................... 37
6. Knapsack .................................................................................................................................................... 39
6.1.Lý thuyết ................................................................................................................................................... 39
6.2.Ví dụ .......................................................................................................................................................... 40
7. Chữ ký số - Elgamal ................................................................................................................................... 42
7.1. Mã hóa và giải mã ................................................................................................................................ 42
7.2.Ví dụ: ......................................................................................................................................................... 43
8. Hệ mật Rabin ............................................................................................................................................ 44
8.1. Mã hóa và giải mã ................................................................................................................................ 44
8.2. Ví dụ ..................................................................................................................................................... 45
1. SHA- 512 .................................................................................................................................................... 46
10.Whirlpool ................................................................................................................................................... 51 I. Lý thuyết chung 1. ASCII
2. Nghịch đảo cộng
Trong số học mô-đun, mỗi số nguyên có một nghịch đảo cộng. Tổng của một số nguyên và nghịch đảo
cộng của nó đồng dư với 0 modulo n.
𝑎 + 𝑏 ≡ 0(𝑚𝑜𝑑 𝑛) Ví
dụ trong Z10 các cặp ( 0,0), (1,9),(2,8),(3,7),..
3. Nghịch đảo nhân
Trong số học mô-đun, một số nguyên có thể có hoặc không có một phép nhân nghịch đảo.Khi đó, tích
của số nguyên và phép nhân nghịch đảo của nó đồng dư với 1 modulo n.
• Một số nguyên a có nghịch đảo nhân trong Zn khi và chỉ khi gcd(n, a)=1, tức là a và n là nguyên tố của nhau
Trong Zn, hai số a và b là số nghịch đảo của nhau nếu
𝒂 × 𝒃 ≡ 𝟏(𝒎𝒐𝒅 𝒏) Ví dụ 4. Euclidean Algorithm
5. Euclidean mở rộng 6. Ma trận - Định thức Ma trận 3x3 Ma trận 4x4
7. Ma trận dư – Tính nghịch đảo
Mật mã học sử dụng ma trận dư: ma trận trong đó tất cả các nguyên tố đều có trong Zn. Một ma
trận dư có một nghịch đảo nhân nếu gcd (det (A), n) = 1.
𝐴 × 𝐴−1 𝑚𝑜𝑑 𝑛 = 𝐼 Ex: Ví dụ : II. Mã cổ điển 1. Additive Cipher
VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã cộng với khóa k = 5
V 21 => Encryption: (21 + 05) mod 26 = 00 A
I 08 => Encryption: (08 + 05) mod 26 = 13 N
E 04 => Encryption: (04 + 05) mod 26 = 09 J
T 19 => Encryption: (19 + 05) mod 26 = 24 Y
N 13 => Encryption: (13 + 05) mod 26 = 18 S
A 00 => Encryption: (00 + 05) mod 26 = 05 F
M 12 => Encryption: (12 + 05) mod 26 = 17 R => C = “ANJYSFR”
2. Multiplicative Cipher: 3. Affine Cipher:
4. Substitution Cipher: 5. Vigenere Cipher: 6. Hill Cipher: 7. Stream Cipher III. Mã hiện đại 1. DES
Giả sử ta có dữ liệu cần mã hóa và key là: •
M = 00123456789abcde (Hex) = 0000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1111 •
K = 0133457799bbcdff (Hex) = 0000 0001 0011 0011 0100 0101 0111 0111 1001 10001 1011 1011 1100 1100 1111 1111
1.1.Hoán vị khởi tạo – IP
Thông điệp M được đánh số vị trí bit từ trái qua phải như sau:
Sắp xếp lại thứ tự các bit của M theo bảng hoán vị IP,
kết quả có được sau bước này là:
IP(M) = 98fecc00e054f0aa (Hex) = 1001 1000 1111
1110 1100 1100 0000 0000 1110 0000 0101 0100 1111 0000 1010 1010
1.2 Tính toán giá trị các khóa vòng – KS
Để tính toán hàm mã hóa f, chúng ta cần có giá trị khóa cho từng lần lặp mã hóa. Key ban đầu được đánh
số thứ tự bit từ trái qua phải như sau:
Sau khi sắp xếp các bit theo bảng hoán vị PC-1, kết quả thu được là hai giá trị đầu như sau: •
C0 = f0ccaab (Hex) = 1111 0000 1100 1100 1010 1010 1011 •
D0 = aaccf0a (Hex) = 1010 1010 1100 1100 1111 0000 1010
Để tính khóa vòng đầu tiên K1 thì C0 và D0 sẽ được dịch (quay) trái 1 bit. Giá trị thu được sau khi dịch trái là: •
C1 = e199557 (Hex) = 1110 0001 1001 1001 0101 0101 0111 •
D1 = 5599e15 (Hex) = 0101 0101 1001 1001 1110 0001 0101
Hai chuỗi C1 và D1 được ghép lài thành một chuỗi 56 bit là e1995575599e15. Chuỗi này được hoán vị bằng
bảng PC-2 để được giá trị khóa vòng 48 bit thứ nhất K1. • K1 = 1b02efdb49a5 (Hex)
Để tính khóa vòng K2 thì lấy C1 và D1 dịch trái với số lượng bit theo bảng ở dưới, rồi lấy kết quả hoán vị
theo bảng PC-2. Quá trình cứ tiếp tục cho đến khóa vòng cuối cùng là K16. Kết quả các khóa vòng 48 bit thu được là: • K2 = 69aed925ae66 (Hex) • K3 = 55fc8ab4acd2 • K4 = 72add2ad8657 • K5 = 7cec071fe6c2 • K6 = 63a51e3cc545 • K7 = 6c84b78ae4c6 • K8 = f7883aece781 • K9 = c0dbeb27b839 • K10 = b1f347631d76 • K11 = 215fc30d89be • K12 = 7171f5455cd5 • K13 = 95c5d14b80fd • K14 = 5743b783đ8d •
K15 = bf91850a17b5 K16 = cb3d0bbc7072 Iteration 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 number Number of 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 lef t shift
1.3 Tính hàm mã hóa f(R,K)
Sau bước hoán vị khởi tạo IP, giá trị IP(M) sẽ được tách làm hai phần là: •
R0 = e054f0aa (Hex) = 1110 0000 0101 0100 1111 0000 1010 1010 •
L0 = 98fecc00 (Hex) = 1001 1000 1111 1110 1100 1100 0000 0000
Giá trị 32 bit của R0 được tra qua bảng E để tạo ra một giá trị 48 bit. • E(R0) = 7002a97a1555 (Hex)
Giá trị này được XOR với khóa vòng thứ nhất K1 và được kết quả •
XOR(E(R0), K1) = 6b0046a15cf0 (Hex)
Giá trị trên được chia thành 8 nhóm theo thứ tự từ trái qua phải, mỗi nhóm 6 bit để đưa đến các bảng S. Với bài ta có bảng
Các giá trị đầu ra sau bước tra các bảng S sẽ được ghép lại theo thứ tự từ S1 đến S8 để được 1 giá trị 32 bit. •
S1()S2()S3()S4()S5()S6()S7()S8() = 10010101110100111010110101010000 = 95d3ad50 (Hex)
Giá trị này được hoán vị bằng bảng P để cho ra giá trị của hàm f. •
f(R0,K1) = 97d1619a (Hex) = 1001 0111 1101 0001 0110 0001 1001 1010
Tương tự, ta có giá trị hàm f tại các vòng lặp mã hóa còn lại như sau: • f(R1,K2) = 88488d0b (Hex) • f(R2,K3) = da3b2692 • f(R3,K4) = f44950b2 • f(R4,K5) = d83237fd • f(R5,K6) = afc43b25 • f(R6,K7) = 4e5123a2 • f(R7,K8) = 6cfdecb8 • f(R8,K9) = fb0600b1 • f(R9,K10) = d51508e4 • f(R10,K11) = fcf67146 • f(R11,K12) = 704fa3a5 • f(R12,K13) = 7bfe2806 • f(R13,K14) = 65fc7a48 •
f(R14,K15) = 513f1d11 f(R15,K16) = cbf5252d
1.4 Giá trị tại mỗi vòng lặp mã hóa
Giá trị của hàm f(R,K) được sử dụng để tính giá trị Rn và Ln tại mỗi vòng lặp mã hóa theo công thức:
1.5 Hoán vị khởi tạo đảo IP-1
Giá trị R16 và L16 của vòng lặp mã hóa cuối cùng sẽ được ghép lại thành một chuỗi 64 bit để thực hiện hoán vị theo bảng IP-1.
Kết quả của phép hoán vị này chính là giá trị mã hóa (ciphertext) cần tính.
IP-1(R16, L16) = 1abff69d5a93e80b (Hex) = 0001 1010 1011 1111 1111 0110 1001 1101 0101 1010 1001 0011 1110 1000 0000 1011
1.6. Thuật toán giải mã dữ liệu DES
Các bước của quá trình giải mã dữ liệu được thực hiện tương tự như quá trình mã hóa dữ liệu. Trong
quá trình giải mã có một số thay đổi như sau: •
Đầu vào lúc này là dữ liệu cần giải mã (ciphertext) và đầu ra là kết quả giải mã được (plaintext). •
Khóa vòng sử dụng trong các vòng lặp giải mã có thứ tự ngược với quá trình mã hóa. Nghĩa là, tại
vòng lặp giải mã đầu tiên, khóa vòng được sử dụng là K16. Tại vòng lặp giải mã thứ 2, khóa vòng
được sử dụng là K15, và tại vòng lặp giải mã cuối cùng thì khóa vòng được sử dụng là K1 2.AES - Mã hóa AES
AES là một mật mã không phải Feistel, mã hóa và giải mã một khối dữ liệu 128 bit. Nó sử dụng 10, 12
hoặc 14 vòng. Kích thước khóa, có thể là 128, 192 hoặc 256 bit, tùy thuộc vào số vòng •
Bước 1. Bước khởi tạo: dữ liệu cần được mã hóa plain_text[127:0] kết hợp với key[127:0] bằng chức năng AddRoundKey •
Bước 2. Bước lặp mã hóa: kết quả bước 1 được sử dụng để thực hiện tuần tự các chức năng
SubBytes, ShiftRows, MixColumns và AddRoundKey. Bước này được lặp lại 9 lần. Chú ý,
KeyExpansion thực hiện song song với bước AddRoundKey để tạo khóa vòng cho chức năng này. •
Bước 3. Bước tạo ngõ ra: Sau 9 lần lặp ở bước 2, kết quả được sử dụng để thực hiện tuần tự các
chức năng SubBytes, ShiftRows và AddRoundKey để tạo ngõ ra cipher_text[127:0].
Quá trình mã hóa AES-128 sẽ được giải thích trên một ví dụ cụ thể. Giả sử chuỗi dữ liệu cần mã hóa
plain_text[127:0] và khóa mã key[127:0] có giá trị như sau: •
plain_text[127:0] = 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34 •
key[127:0] = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận với mỗi phần tử là một byte. 2.1 Chức năng AddRoundKey
Chức năng AddRoundKey thực hiện ở:
1. Bước khởi tạo: XOR khóa mã với ma trận dữ liệu
2. Bước lặp mã hóa và bước tạo ngõ ra: XOR khóa vòng (round key) với ma trận trạng thái.
Chức năng AddRoundKey cho bước khởi tạo