Chương 1 TỔNG QUAN VỀ THUẬT TOÁN MÃ HOÁ
2.1 Một số khái niệm
Rijndael là một mã khối với độ dài khối và độ dài khố đều có thể thay đổị Độ dài khối và độ dài khoá được gán một cách độc lập bằng bội của 32 bit, với 128 bit là nhỏ nhất và 256 là lớn nhất. AES là một trường hợp riêng của Rijndael. AES có độ dài khối bằng 128 bit và hỗ trợ các độ dài khoá bằng 128, 192 hay 256 bit.
Đầu vào và đầu ra của Rijndael được xem như là các mảng một chiều của các byte có 8 bit. Đối với phép mã, đầu vào là khối rõ (plaintext block) và khoá (key), và đầu ra là bản mã (ciphertext block). Đối với phép giải mã, đầu vào là khối mã và khố, đầu ra là khối rõ. Biến đổi vịng của Rijndael, và các bước của nó, thao tác trên một kết quả trung gian, được gọi là trạng thái (state). Trạng thái có thể được vẽ như là một mảng chữ nhật các byte, với 4 dòng. Số các cột trong trạng thái được ký hiệu bởi Nb và bằng độ dài khối chia cho 32
(đối với AES thì Nb bằng 4). Giả sử khối rõ được ký hiệu bởi: 0 1 2 3.... 4.Nb 1
với p0 ký hiệu byte đầu tiên, và p4.Nb1 ký hiệu byte cuối cùng của khối bản rõ.
Tương tự, khối bản mã có thể được ký hiệu bởi:
0 1 2 3... 4. b 1
C C C C C N
Giả sử trạng thái được ký hiệu bởi:
, ,0 4,0
i j b
a i j N
với ai,j ký hiệu byte ở tại dòng i và cột j. Các byte đầu vào được ánh xạ thành các byte trạng thái theo thứ tự a0,0, a1,0, a2,0, a3,0, a0,1, a1,1, a2,1, a3,1, ...
Đối với phép mã, đầu vào là khối rõ và ánh xạ là
, 4 ,0 4,0
i j i j b
a p i j N
Đối với phép giải mã, đầu vào là bản mã và ánh xạ là
4 ,0 4,0
ij ii j b
a c i j N
Tại điểm kết thúc của phép mã, bản mã được lấy ra từ trạng thái bằng cách lấy các byte trạng thái theo thứ tự:
mod 4, /4,0
i i i b
c a i N
Tại điểm kết thúc của phép giải mã, khối rõ được lấy ra từ trạng thái theo cách:
mod 4, /4,0
i i i b
p a i N
Tương tự, khoá được ánh xạ thành khoá mã 2-chiềụ Khoá mã được vẽ như một mảng chữ nhật với 4 dòng tương tự như trạng tháị Số các cột của khoá mã được ký hiệu bởi Nk và bằng độ dài khoá chia cho 32. Các byte của khoá được ánh xạ thành các byte của khoá mã theo thứ tự: k0,0, k1,0, k2,0, k3,0, k0,1, k1,1,
k2,1, k3,1, k0,2, .... Nếu chúng ta ký hiệu khoá bởi
0 1 2 3... 4.Nk 1
thì
ij i 4j,0 4,0 k
k z i j N
Biểu diễn của trạng thái và khoá mã và các ánh xạ bản rõ-trạng thái, khoá-khoá mã (key- cipher key) được minh hoạ ở hình 2.1.
p0 p4 p8 p12 k0 k4 k8 k12 k16 k20 p1 p5 p9 p13 k1 k5 k9 k13 k17 k21 p2 p6 p10 p14 k2 k6 k10 k14 k18 k22 p3 p7 p11 p15 k3 k7 k11 k15 k19 k23
Hình 2.1. Cách bố trí của trạng thái và khố mã cho trường hợp Nb= 4 và Nk
Cấu Trúc Của Rijdael
Ba tiêu chuẩn thiết kế được tính đến trong thiết kế của Rijndael là như sau: Có khả năng chống lại tất cả các tấn công đã biết;
Tốc độ và tính gọn của mã lệnh trên một miền rộng của các kiến trúc (platform)
Tính đơn giản của thiết kế
Rijndael là một mã khối lặp bằng cách áp dụng lặp một ánh xạ vòng trên trạng tháị Số các vòng được ký hiệu bởi Nr và phụ thuộc vào độ dài khối và độ dài khoá. Các lựa chọn cụ thể cho các tầng khác nhau một phần lớn dựa trên việc áp dụng của Chiến lược vệt lan rộng, đó là một phương pháp thiết kế đảm bảo tính kháng cự chống lại phân tích vi sai và tuyến tính.
Phép mã của Rijndael bao gồm phép cộng khoá ban đầu, được ký hiệu bởi AđRoundKey, sau đó là Nr-1 lần áp dụng biến đổi Round, và cuối cùng là một lần áp dụng FinalRound. Phép cộng khố ban đầu và mỗi vịng nhận đầu vào là State và khố vịng. Khố vịng cho vịng i được ký hiệu bởi ExpandedKey[i], còn ExpandedKey[0] ký hiệu đầu vào của phép cộng khoá ban đầụ Việc nhận
được ExpandedKey từ CipherKey được ký hiệu bởi KeyExpansion. Mô tả mức cao của Rijndael ở dạng giả mã-C được cho sau đâỵ
Trước vịng đầu tiên, tầng cộng khố được áp dụng. Để làm cho chính phép mã hóa và phép giải mã tương tự về mặt cấu trúc, tầng trộn tuyến tính của vịng cuối cùng là khác với tầng trộn tuyến tính trong các vịng khác.