TIỂU LUẬN MẬT MÃ AN TOÀN DỮ LIỆU HỆ MÃ HÓA AES (ADVANCED ENCRYPTION STANDARD) Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề an toàn bảo mật thông tin (Information Security), chúng ta thường hay nghĩ đến các biện pháp nhằm đảm bảo cho thông tin được trao đổi hay cất giữ một cách an toàn và bí mật. Chẳng hạn là các biện pháp như:
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Mã HV: 13025089
Hà Nội, 04/2014
Trang 2MỤC LỤC
MỤC LỤC 2
DANH MỤC HÌNH , BẢNG BIỂU 4
LỜI MỞ ĐẦU 1
MÃ HÓA TIÊU CHUẨN TIÊN TIẾN 2
ADVANCED ENCRYPTION STANDARD 2
I Giới thiệu 2
1 Ưu điểm 2
2 Nhược điểm 3
3 Ứng dụng 3
II Các khái niệm và định nghĩa 3
1 Các khái niệm và ký hiệu 3
2 Các hàm, ký hiệu và các tham số của thuật toán 4
3 Các kí hiệu và qui ước 6
3.1 Đầu vào, đầu ra 6
3.2 Đơn vị byte 6
3.3 Cơ sở toán học của AES 7
3.3.1 Phép cộng 7
3.3.2 Phép nhân 7
3.3.3 Phép nhân với x 8
3.3.4 Đa thức với các hệ số trên trường GF(28) 8
4 Trạng thái 8
III Thuật toán AES 9
1 Thuật toán mã hóa 10
1.1 Hàm SubBytes() 12
1.2 Hàm ShiftRows() 14
Trang 31.3 Hàm MixColumns() 15
1.4 Hàm AddRoundKey() 16
1.5 Thuật toán sinh khóa (Key Expansion) 17
2 Thuật toán giải mã 20
2.1 Hàm InvSubBytes() 20
2.2 Hàm InvShiftRows() 21
2.3 Hàm InvMixColumns() 21
2.4 Biến đổi nghịch AddRoundKey() 22
III Kết luận 22
1 Yêu cầu về độ dài khóa 22
2 Tham số hóa độ dài khóa, kích thước khối và số vòng 22
3 Tối ưu hóa 23
4 An toàn 23
5 Độ an toàn của thuật toán 24
6 Đánh giá độ phức tạp của thuật toán 25
Trang 4DANH MỤC HÌNH , BẢNG BIỂU
Hình 1: Sơ đồ thuật toán 11
Hình 2:Các phần tử biến đổi của S-box dưới dạng ma trận 13
Hình 3:Kết quả biến đổi của hàm SubBytes() với mảng trạng thái 13
Hình 4: Nội dung bảng S-box sau khi tính toán 14
Hình 5: Kết quả tính toán 14
Hình 6: Minh họa sự dịch vòng 15
Hình 7: Sự làm việc trên cột trạng thái 16
Hình 8: Thực hiện hàm AddRoundKey() 17
Hình 9: Quá trình thực hiện Expand Key 18
Hình 10: Minh họa thực hiện hàm InvShiftRows() 21
Bảng 1: Qui ước môṭ số từ viết tắt và thuật ngữ của AES 4
Bảng 2: Các hàm, ký hiệu, các tham số của thuật toán 6
Bảng 3: Bảng biểu diễn các xâu 4 bit 7
Bảng 4: Các trạng thái của AES 9
Bảng 5: Độ dài khóa AES 9
Trang 5LỜI MỞ ĐẦU
Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề an toàn bảomật thông tin (Information Security), chúng ta thường hay nghĩ đến các biện phápnhằm đảm bảo cho thông tin được trao đổi hay cất giữ một cách an toàn và bí mật.Chẳng hạn là các biện pháp như:
Đóng dấu và ký niêm phong một bức thư để biết rằng lá thư có được chuyển nguyênvẹn đến người nhận hay không
Dùng mật mã mã hóa thông điệp để chỉ có người gửi và người nhận hiểu đượcthông điệp Phương pháp này thường được sử dụng trong chính trị và quân sự.Lưu giữ tài liệu mật trong các két sắt có khóa, tại các nơi được bảo vệ nghiêm ngặt,chỉ có những người được cấp quyền mới có thể xem tài liệu
Với sự phát triển mạnh mẽ của công nghệ thông tin, đặt biệt là sự phát triển củamạng Internet, ngày càng có nhiều thông tin được lưu giữ trên máy vi tính và gửi đitrên mạng Internet Và do đó xuất hiện nhu cầu về an toàn và bảo mật thông tin trênmáy tính Có thể phân loại mô hình an toàn bảo mật thông tin trên máy tính theo haihướng chính như sau:
Bảo vệ thông tin trong quá trình truyền thông tin trên mạng (Network Security).Bảo vệ hệ thống máy tính, và mạng máy tính, khỏi sự xâm nhập phá hoại từ bênngoài (System Security)
Để khắc phục các hành động phá hoại này, người ta dùng các chương trình có chứcnăng gác cổng, phòng chống, mã hóa, bảo mật cho thông tin
Trang 6MÃ HÓA TIÊU CHUẨN TIÊN TIẾN ADVANCED ENCRYPTION STANDARD
I Giới thiệu
Advanced Encryption Standard (AES) - Tiêu chuẩn mã hóa tiên tiến là một thuậttoán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa nhằm mãhóa và giải mã dữ liệu do Viện Tiêu chuẩn và Công nghệ quốc gia Hoa Kỳ(National Institute Standards and Technology – NIST) phát hành ngày 26/11/2001
và được đặc tả trong Tiêu chuẩn Xử lý thông tin Liên bang 197 (FederalInformation Processing Standard – FIPS 197) sau quá trình kéo dài 5 năm trình phêduyệt, AES tuân theo mục 5131 trong Luật Cải cách quản lý công nghệ thông tinnăm 1996 và Luật An toàn máy tính năm 1997
Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và VincentRijmen Thuật toán được đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES.Vào những năm 1990, nhận thấy nguy cơ của mã hóa DES là kích thước khóa ngắn,
nó có thể bị phá mã trong tương lai gần nên cục tiêu chuẩn quốc gia Hoa Kỳ đã kêugọi xây dựng một phương pháp mã hóa mới Cuối cùng một thuật toán có tên làRijndael được chọn và đổi tên thành Andvanced Encryption Standard hay AES Thuật toán được dựa trên bản thiết kế Square có trước đó của Daemen và Rijmen;còn Square lại được thiết kế dựa trên Shark Khác với với DES sử dụng mạngFeistel, Rijndael sử dụng mạng thay thế hoán vị AES có thể dễ dàng thực hiện vớitốc độ cao bằng phần mềm hoặc phần cứng và không đòi hỏi nhiều bộ nhớ
Chuẩn mã hóa AES cho phép xử lý các khối dữ liệu input có kích thước 128 bit sửdụng các khóa có độ dài 128, 192 hoặc 256 bit Hệ mã hóa Rijndael được thiết kế để
có thể làm việc với các khóa và khối dữ liệu có độ dài lớn hơn, tuy nhiên, khi đượcchọn là chuẩn do ủy ban tiêu chuẩn của Hoa kỳ đưa ra vào năm 2001, nó được quyđịnh chỉ làm việc với khối dữ liệu 128 bit và các khóa có độ dài 128, 192, hoặc 256bit (do đó còn đặt cho nó các tên AES-128, AES-192, AES-256 tương ứng với độdài khóa sử dụng)
1 Ưu điểm
AES đã được chính phủ Hoa Kỳ tuyên bố là có độ an toàn cao, và được sử dụngtrong thông tin mật
Trang 7AES sử dụng bảng tra và phép thế có tính chất phi tuyến mạnh dẫn đến mức độphân tán thông tin phức tạp làm tăng độ an toàn cho thuật toán.
AES có mô tả toán học đơn giản, cấu trúc rõ ràng đơn giản
2 Nhược điểm
Cấu trúc toán học của AES có mô tả toán học khá đơn giản Tuy điều này chưadẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu cho rằng sẽ có người lợidụng được cấu trúc này trong tương lai
3 Ứng dụng
Hiện nay, AES được sử dụng phổ biến trên toàn thế giới để bảo vệ dữ liệu ở các
tổ chức ngân hàng, tài chính, chính phủ, thương mại điện tử, chữ ký điện tử
Mã hóa AES được ứng dụng nhanh đối với cả phần cứng và phần mềm, chỉ yêucầu một không gian lưu trữ nhỏ, lý tưởng để sử dụng cho việc mã hóa những thiết bịcầm tay nhỏ như ổ USB flash, ổ đĩa CD, …
Mã hóa AES được sử dụng như một hàm băm
II Các khái niệm và định nghĩa
1 Các khái niệm và ký hiệu
Biến đổi Affine Phép biến đổi bao gồm một phép nhân với
một ma trận sau đó là môṭ phép cộng củamột vectơ
Bit Một số nhi ̣phân nhâṇ giá tri ̣0 hoặc 1
Block Một dãy các bit nhi ̣phân tạo thành input,
output, trạng thái (state) và các khóa sửdụng tại các vòng lặp (Round Key) của hệ
mã Độ dài của dãy (khối) là số lượng cácbit mà nó chứa Các khối cũng có thể đượcxem là một dãy các byte
Cipher Thuật toán mã hóa
Trang 8Cipher Key Khóa của hệ mã, có thể được biểu diễn
dưới dạng một mảng 2 chiều gồm 4 hàng
và Nk cột
Inverse Cipher Thuật toán giải mã
Thủ tục sinh khóa (Key Expansion) Thủ tục được sử dụng để sinh ra các khóa
sử dụng tại các vòng lặp của thuật toán mãhóa, giải mã từ khóa chính ban đầu
Round Key Là các giá trị sinh ra từ khóa chính bằng
cách sử dụng thủ tục sinh khóa Các khóanày được sử dụng tại các vòng lặp củathuật toán
Trạng thái (State) Các giá trị mã hóa trung gian có thể biểu
diễn dưới dạng môṭ mảng 2 chiều gồm 4hàng và Nb cột
S-box Một bảng thế phi tuyến được sử dụng trong
thủ tuc ̣ sinh khóa và trong các biến đổi thaythế các byte để thực hiện các thay thế 1-1đối với một giá tri ̣1 byte
Word Một nhóm 32 bit có thể được xem như 1
đơn vi ̣tính toán độc lập hoặc là một mảng
4 byteBảng 1: Qui ước môṭ số từ viết tắt và thuật ngữ của AES
2 Các hàm, ký hiệu và các tham số của thuật toán
Các tham số thuật toán, các ký hiệu và các hàm được sử dụng trong mô tả thuậttoán:
AddRoundKey() Hàm biến đổi được sử dụng trong thuật toán mã hóa
và giải mã trong đó thực hiện phép XOR bit giữatrạng thái trung gian (state) và một khóa vòng lặp
Trang 9(Round Key) Kích thước của một Round Key bằngkích thước của trạng thái, ví dụ với Nb=4 độ dài củamột Round Key sẽ là 128 bit hay 16 byte
MixColumns() Hàm biến đổi trong thuật toán mã hóa nhận tất cả các
cột của một trạng thái (state) và trộn với dữ liệu của
nó (không phụ thuộc lẫn nhau) để nhận được cột mớiShiftRows() Hàm sử dụng trong quá trình mã hóa, xử lý các trạng
thái bằng cách dịch vòng ba hàng cuối của trạng tháivới số lần dịch khác nhau
SubBytes() Hàm biến đổi sử dụng trong quá trình mã hóa, xử lý
một trạng thái bằng cách sử dụng một bảng thế phituyến các byte (S-box) thao tác trên mỗi byte mộtcách độc lập
InvMixColumns() Hàm biến đổi được sử dụng trong thuật toán giải mã,
là hàm ngược của hàm MixColumns()InvShiftRows() Hàm biến đổi được sử dụng trong thuật toán giải mã,
là hàm ngược của hàm ShiftRows()Inv SubBytes() Hàm biến đổi được sử dụng trong thuật toán giải mã,
là hàm ngược của hàm SubBytes()
Nr Số lượng các vòng lặp của thuật toán, là một hàm của
Nk và Nb (là các giá trị cố định) ( Nr = 10, 12 hoặc 14tương ứng với các giá trị khác nhau của Nk)
Rcon[] Mảng word hằng số sử dụng trong các vòng lặp
RotWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word
Trang 104-byte và thực hiện một hoán vị vòngSubWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word
input byte và sử dụng một S -box trên mỗi giá trị byte này để thu được 1 word output
4-XOR Phép or bit tuyệt đối
⊕ Phép or bit tuyệt đối
⊗ Phép nhân 2 đa thức (bậc nhỏ hơn 4) theo modulo (x4
+ 1)
● Phép nhân trên trường hữu hạn
Bảng 2: Các hàm, ký hiệu, các tham số của thuật toán
3 Các kí hiệu và qui ước
3.1 Đầu vào, đầu ra
Đầu vào và đầu ra của chuẩn mã hóa cao cấp đều là các dãy 128 bit, còn gọi là cáckhối (block), độ dài của mỗi khối này là số bit dữ liệu mà nó chứa Khóa của chuẩn
mã hóa cao cấp là một dãy có độ dài 128, 192 hoặc 256 bit Chuẩn mã hóa dữ liệucao cấp không làm việc với các giá trị đầu vào, đầu ra và khóa có các đô ̣dài khác(mặc dù thuật toán cơ sở của nó cho phép điều này) Các bit của đầu vào, đầu ra vàkhóa của hê ̣mã được đánh số từ 0
3.2 Đơn vị byte
Đơn vi ̣cơ bản để xử lý trong AES là môṭ byte tức là môṭ dãy 8 bit được xem như làmột đối tượng đơn Các giá trị input, output và khóa của hê ̣mã được xem là mộtmảng các byte Các giá trị input, output và khóa của hê ̣mã được ký hiệu bởi tênmảng a và biểu diễn dưới dạng an hoặc a[n] trong đó n nhận các giá tri ̣trong cáckhoảng sau:
- Nếu đô ̣dài khóa bằng 128 bit: 0 ≤ n < 16;
- Nếu đô ̣dà i khóa bằng 192 bit: 0 ≤ n < 24;
- Nếu đô ̣dà i khóa bằng 256 bit: 0 ≤ n < 32;
Trang 11Tất cả các giá tri ̣ Byte sử dụng trong thuâṭ toán của AES đều được biểu diễn dướidạng một dãy các bit 0 hoặc 1 theo định dạng {b7, b6, b5, b4, b3, b2, b1, b0} CácByte này sau được hiểu là các phần tử trên trường hữu hạn bằng cách sử dụng biểudiễn thành dạng đa thức.
b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0x0 = ∑=
7 0
i
i
i x b
Chẳng haṇ giá tri ̣{01100011} tương đương với phần tử trên trường hữu hạn x6 + x5
3.3 Cơ sở toán học của AES
AES sử dụng trường hữu hạn Galois GF(28) để thực hiện các phép toán: phépcộng, phép trừ, phép nhân, và phép chia Các phần tử của trường GF(28) được xemnhư là các đa thức
3.3.1 Phép cộng
Phép cộng ở đây được hiểu là phép XOR trên hai bit tương ứng trong byte và
có ký hiệu là ⊕
3.3.2 Phép nhân
Phép nhân trên trường GF(28) tương ứng với phép nhân thông thường của hai
đa thức đem chia lấy dư (modulo) cho một đa thức tối giản bậc 8 Trong thuật toánAES, đa thức tối giản được chọn là:
m(x) = x8+x4+x3+x2+x+1
Trang 12Kết quả nhận được của phép rút gọn là một đa thức có bậc nhỏ hơn 8 nên cóthể biểu diễn được dưới dạng một byte
3.3.3 Phép nhân với x
Phép nhân với đa thức x (hay phần tử {00000010} GF(28)) có thể đượcthực hiện ở mức độ byte bằng một phép dịch trái và sau đó thực hiện tiếp phépXOR với giá trị {1b} nếu b7=1 Thao tác được ký hiêu là xtime() Phép nhân với cáclũy thừa của x có thể được thực hiện bằng cách áp dụng nhiều lần thao tác xtime().Kết quả của phép nhân với một giá trị bất kỳ được xác định bằng phép cộng ((⊕)các kết quả trung gian này lại với nhau
3.3.4 Đa thức với các hệ số trên trường GF(2 8 )
Phép nhân của hai đa thức bậc 4 với các hệ số trên GF(28) a(x) ⊗ b(x) đượcxác định bằng 4 hạng tử d(x):
đó mỗi byte của mảng có 2 chỉ số hàng r và cột c (0<=r, c<=4)
Tại thời điểm bắt đầu input của thuật toán – mảng byte in0, in1, in15 được copyvào mảng trạng thái theo quy tắc được minh họa bằng hình vẽ
Trang 13Bảng 4: Các trạng thái của AESTrong đó các giá trị của mảng s và mảng output được tính như sau:
s[r,c]=in[r+4c] với mọi 0<=r, c<4
out[r+4c]=s[c,r] với mọi 0<=r, c<4
Biểu diễn trạng thái
Bốn cột của mảng trạng thái của thuật toán tạo thành 4 word 32 bit w0, w1, w3được biểu diễn như sau:
w0 = s0,0 s1,0 s2,0 s3,0 w1 = s0,1 s1,1 s2,1 s3,1
w2 = s0,2 s1,2 s2,2 s3,2 w3 = s0,3 s1,3 s2,3 s3,3
III Thuật toán AES
Độ dài của input, output và các trạng thái (state) của chuẩn mã hóa cao cấp AES là
128 bit tương ứng vớ i giá tri ̣của Nb = 4 (là số lượng các word 32-bit và cũng là sốcột của mỗi trạng thái) Khóa của AES có độ dài là 128, 192 hoăc ̣ 256 bit tương ứng
vớ i các giá trị của Nk là 4, 6, hoăc ̣ 8 và cũng là số cột của khóa mã hóa
Tương ứng vớ i độ dài của khóa sử dụng số vòng lặp của thuật toán Nr nhận các giátrị 10 (Nk = 4), 12 (Nk = 6) hoăc ̣ 14 (Nk = 8) Chúng ta có thể minh họa qua bảngsau:
Độ dài khóa (Nk từ)
Độ dài khối (Nb từ)
Số vòng (Nr)
Trang 14Cả quá trình mã hóa và giải mã AES sử dụng một hàm lặp là kết hợp của bốn hàmbiến đổi (đơn vi ̣xử lý là byte) sau:
- Biến đổi thay thế byte sử dụng một bảng thế (S-box)
- Dịch các hàng của mảng trạng thái với số lần dịch của mỗi hàng là khác nhau
- Kết hợp dữ liệu của mỗi cột trong mảng trạng thái và cộng một khóa RoundKey vào trạng thái z
1 Thuật toán mã hóa
Bắt đầu thuật toán bản rõ (input) được copy vào mảng trạng thái sử dụng các quiước được mô tả trong phần trên Sau khi cộng với khóa Round Key khởi tạo mảngtrạng thái được biến đổi bằng các thực hiện một hàm vòng (round function) Nr lần(10, 12, hoăc ̣ 14 phụ thuộc vào độ dài khóa ) trong đó lần cuối cùng thực hiện kháccác lần trước đó Trạng thái sau lần lặp cuối cùng sẽ được chuyển thành output củathuật toán theo qui tắc được mô tả trong phần sau
Hàm vòng được tham số hóa sử dụng một (key schedule) dãy các khóa được biểudiễn như là một mảng 1 chiều của các word 4-byte được sinh ra từ thủ tục sinh khóa(Key Expansion) được mô tả trong phần sau
Chúng ta có thể thấy tất cả các vòng đều thực hiện các công việc giống nhau dựatrên 4 hàm (theo thứ tự SubBytes(), ShiftRows(), MixColumns() vàAddRoundKey() trừ vòng cuối cùng bỏ qua việc thực hiện hàm MixColumns().Thuật toán được mô tả chi tiết qua đoạn mã lệnh sau:
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])begin
Trang 15AddRoundKey(state, w[round*Nb, (round+1)*Nb-1) end for
Trang 161.1 Hàm SubBytes()
Hàm SubBytes() thực hiện phép thay thế các byte của mảng trạng thái bằng cách sử dụng một bảng thế S-box, bảng thế này là khả nghịch và được xây dựng bằng cách kết hợp hai biến đổi sau:
a Nhân nghịch đảo trên trường hữu hạn GF(28), phần tử {00} được ánh xạthành chính nó
b Áp dụng biến đổi Affine sau (trên GF(2)):