HC VIN K THUT MT MÃ
KHOA CÔNG NGH THÔNG TIN
¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯
BÀI TP MÔN HC
Viết chương trình mã hóa và giải mã bng mt mã AES
Ngành: Công ngh thông tin
Chuyên ngành: K thut phn mềm nhúng và di động
Người hướng dn: TS. Nguyễn Đào Trường
Khoa Công ngh thông tin Hc vin K thut mt mã
Sinh viên thc hiên:
Trương Quốc Quân
Hà Ni, 2021
MC LC
LỜI NÓI ĐẦU ........................................................................................................................ 3
I. TNG QUAN AES ......................................................................................................... 4
1. Khái nim t (Word) trong AES ................................................................................... 4
2. Thut toán ca AES .................................................................................................... 4
3. Khái quát ..................................................................................................................... 4
II. MÃ HÓA ......................................................................................................................... 6
1. Phương thức AddRoundKey. ...................................................................................... 6
2. Phương thức SubBytes. .............................................................................................. 6
3. Phương thức ShiftRows .............................................................................................. 7
4. Phương thức MixColumns. ......................................................................................... 8
III. GIẢI MÃ ...................................................................................................................... 9
1. Phương thức invShiftRows ......................................................................................... 9
2. Phương thức InvMixColumns. ..................................................................................... 9
IV. THUT TOÁN M RNG KHÓA keyExpansion .................................................... 11
V. Các dạng tấn công vào AES và phương pháp phòng chống. ................................. 13
1. Side-channel attack. .................................................................................................. 13
2. Known attacks. .......................................................................................................... 13
3. Các phương pháp phòng chống. ............................................................................... 13
VI. ng dng viết chương trình mã hóa và giải mã AES s dng Python: .............. 14
1. Các hàm nhân Galois: ............................................................................................... 14
2. Hàm RotWords: ......................................................................................................... 15
3. Hàm KeyExpansion: .................................................................................................. 15
4. Các hàm addRoundKey, subBytes, shiftRows, gMixColumns: .................................. 18
5. Các hàm invSubBytes, invShiftRows, gInvMixColumns: ............................................ 19
6. Các hàm phiên mã AES-128, AES-192, AES-256: .................................................... 20
7. Các hàm gii mã AES-128, AES-192, AES-256: ....................................................... 22
8. Các hàm chức năng chuyển đổi string thành ma trận và ngược li: .......................... 23
9. Đóng gói thành hàm phiên mã và gii mã hoàn chnh ............................................... 24
10. Các chế độ hot động (modus operandi mode of operation) ca mt mã khi, và
ng dng vào phn mm AES. ........................................................................................ 26
TÀI LIU THAM KHO..................................................................................................... 33
LỜI NÓI ĐẦU
Mt mã hc và các thành tu ca nó là một lĩnh vực quan trng trong quá trình phát
trin ca nhân loi. Vi mc tiêu làm ri và làm lon thông tin, rồi sau đó có thể tái
to li thông tin mt cách chân thc, chúng ta có th đảm bảo được tính bí mt ca
thông tin, có th truyền thông tin đi xa, và dựa vào các đặc tính ca quá trình mã
hóa, như tính không thể chi bỏ, tìm ra được các l hng bo mt. Nhu cầu được mã
hóa, bo v thông tin, giao nhận thông tin đến đúng người nhận có ý nghĩa thực tin,
t chiến tranh đến hòa bình, t công cuc bo v và xây dựng đất nước. Tht vy,
ngành mt mã hc xut phát t thời La Mã, khi tướng Caesar đã mã hóa thông tin
bng cách dch ch cái, hay mt mã Scytale của người Spartan, và gi đây, thông
tin nhy cm của ta như dữ liệu đăng nhập, d liu th tín dng, d liu trong chip
CMND,… đều cần đến các thành tu ca ngành này. Vic tìm ra mt thut toán mã
hóa an toàn khi s can thiệp bên ngoài tưởng chừng đã kết thúc vi chiếc chén
thánh ca mt mã hc OTP, thế nhưng, các hn chế ca OTP bt buc chúng ra
phải tìm ra các phương thức mới, để thích nghi vi quá trình phát trin không ngng
ca công ngh. Thut toán AES, ng dng t mật mã Rijndael được sinh ra trong
bi cảnh như vậy.
AES (viết tt ca t tiếng Anh: Advanced Encryption Standard, hay Tiêu chun mã
hóa tiên tiến) là mt thut toán mã hóa khối được chính ph M áp dng làm tiêu
chun mã hóa. Thut toán AES làm vic vi các khi d liệu 128 bit và khóa độ dài
là 128 bit, 192 bit và 256 bit. Mã hóa dùng AES là mã hóa khi lp gm nhiu chu
trình, các khóa con s dụng trong các chu trình đưc to ra bi quá trình to khóa
con Rijndael.
Trong bài báo cáo này chúng ta s tìm hiu v các chu trình làm vic của phương
pháp mã hóa AES ng dng viết một chương trình mã hóa và gii mã bng AES
s dng ngôn ng Python, rồi sau đó sẽ tìm hiu các dng tn công vào AES và
phương pháp phòng tránh.
Để hoàn thành bài báo cáo này, em xin gi lời cám ơn chân thành đến TS. Nguyn
Đào Trường đã tận tình giúp đỡ và truyền đạt nhng kinh nghim quý báu trong
sut thi gian thc hin.
Do hn chế v thi gian nghiên cứu đề tài và kiến thc chuyên môn nên s không
tránh khi nhng thiếu sót, kính mong được s góp ý t Thy và mọi người để hoàn
thin bài báo cáo tốt hơn!
I. TNG QUAN AES
1. Khái nim t (Word) trong AES
Bn byte trên mi ct trong mng trng thái state to thành 1 t 32 bit, trong đó số
th t ca hàng r (0 r < 4) cho biết ch s ca bn byte trong mi t. T định nghĩa
state trên có th coi state là mng mt chiu cha các t 32 bit
𝑠0=𝑠00 𝑠10 𝑠20 𝑠30
𝑠1=𝑠01 𝑠11 𝑠21 𝑠31
𝑠2=𝑠02 𝑠12 𝑠22 𝑠32
𝑠3=𝑠03 𝑠13 𝑠23 𝑠33
Tương tự như đối vi mảng khóa cũng có thể biu din thành mng mt chiu cha
các t 32 bit như công thức dưới đây với s ng t khóa ph thuc vào Nk (Nk =
4, 6, 8).
2. Thut toán ca AES
Thut toán AES khá phc tạp, được mô t khái quát gồm 3 bước như sau:
1 Vòng khi to ch gm phép AddRoundKey
Nr -1 Vòng lp gm 4 phép biển đổi lần lượt: SubBytes, ShiftRows, MixColumns,
AddRoundKey.
1 Vòng cui gm các phép biến đổi ging vòng lp và không có phép MixColumns.
3. Khái quát
1. M rng khóa - Các khóa ph dùng trong các vòng lặp được sinh ra t khóa
chính AES s dng th tc sinh khóa Rijndael.
2. Vòng tiên quyết: AddRoundKey
3. Các vòng lặp đến Nr 1: SubBytes ShiftRows - MixColumns
AddRoundKey
4. Vòng cui (không MixColumns) SubBytes ShiftRows AddRoundKey.
Trong đó:
AddRoundKey Mỗi byte trong state được kết hp vi khóa ph s dng XOR.
SubBytes - c thay thế phi tuyến tính, trong đó mỗi byte trong state được thay thế
bng mt byte khác s dng bng tham chiếu
ShiftRows - ớc đổi chỗ, trong đó mỗi dòng trong state được dch mt s c
theo chu k
MixColumns - trn các ct trong state, kết hp 4 bytes trong mi ct
Các phép biến đổi Subbytes, ShiftRows, MixColumns có phép biến đổi ngược tương
ng InvSubBytes, InvShiftRows, InvMixColumns. Riêng phép biến đi
AddRoundKey đơn giản ch phép XOR nên phép biến đổi ngược cũng
AddRoundKey.
Vn dng các phép biến đổi ngược trên, thut toán gii AES cũng gm 10 vòng
thc hin theo chiều ngược li.
Kích thước khóa ban đầu 128 bits, 192 bits hoc 256 bits. AES dùng hàm
keyExpansion để m rộng kích thước khóa thành 44, 52 hoc 60 words rồi được chia
thành 11, 13 hoc 15 cm khóa con, mi khóa con 4 word làm khóa cho
AddRoundKey.