Sinh các hộp thế động cho AES bằng cách XOR byte khóa với các phần tử hộp thế
Năm 2013, tác giả Sliman Arrag và các cộng sự đã nghiên cứu và đề xuất thuật toán xây dựng hộp thế động nhằm cải tiến AES bằng cách thực hiện cộng XOR các phần tử của hộp thế AES với một byte bất kỳ phụ thuộc khóa chủ ban đầu [11]. Theo phương pháp này, hộp thế động mới tạo ra sẽ được sử dụng cho mọi vòng mã hóa của thuật toán, trong đó:
-
K: khóa chính của AES được biểu diễn là một mảng các byte.
-
SBOXAES: hộp thế nguyên thủy của AES.
-
SBOXxor: hộp thế mới được tạo ra từ hộp thế của AES.
-
InvSBOXxor: l hộp thế nghịch đảo của SBOXxor để dùng trong quá trình giải mã.
-
Inv(): hàm tính hộp thế nghịch đảo.
Thuật toán 1
Các bước của thuật toán sinh hộp thế động phụ thuộc khóa chủ (khóa ban đầu) K như sau:
Bước 1: Chọn một byte bất kỳ từ khóa chủ K và ký hiệu byte đó là K[i].
Bước 2: Tạo ra hộp thế mới (SBOXxor) từ khóa chủ K bằng cách thực hiện XOR lần lượt tất cả các ô của S-Box nguyên thủy (SBOXAES) với byte K[i]:
SBOXxor[x,y] = SBOXAES[x,y]⊕ K[i]
Hộp thế mới được sử dụng để mã hóa bản rõ.
Quá trình giải mã được thực hiện như sau:
- Lựa chọn byte tương tự từ khóa chủ: K[i];
- Tính hộp thế SBOXxor mới bằng cách tính tổng XOR của byte trên với tất cả các ô của SBOXAES:
SBOXxor[x,y] = SBOXAES[x,y] ⊕ K[i]
- Tính hộp thế nghịch đảo của hộp thế này như sau:
InvSBOXxor = INV(SBOXxor)
Ví dụ: Cho khóa chủ để mã hóa với độ dài (16 Byte):
K = 24 FF 12 34 56 78 90 11 6F 44 55 11 99 22 11 22.
Cả hai bên gửi và nhận thống nhất chọn byte đầu tiên của khóa K để tạo ra hộp thế mới, là byte K[1] = 24.
Khi đó, hộp thế mới SBOXxor thu được ở Bảng 1 dưới đây:
Bảng 1.SBOXxor24 (SBOXAES xor 24)
Nếu hai bên chọn byte thứ 9 của khóa K, K[9] = 6F, thì hộp thế mới thu được ở Bảng 2.
Bảng 2.SBOXxor6F ( SBOXAES xor 6F)
Kết quả cho thấy, hộp thế mới phụ thuộc khóa ban đầu làm cho AES mạnh hơn nhiều. Các tác giả tiếp tục trình bày để chứng minh hộp thế trên nâng cao độ an toàn của AES như thế nào bằng cách giới thiệu một trong hai trường hợp sử dụng tùy thuộc vào mức độ an toàn được yêu cầu. Nếu yêu cầu mức an toàn trung bình thì có thể sử dụng trường hợp 1. Còn với các yêu cầu an toàn cao hơn thì nên sử dụng trường hợp 2.
Hình 1. Đề xuất hộp thế động phụ thuộc khóa ban đầu
Trường hợp 1
Ở đây các khóa vòng khác nhau được tạo ra bằng cách sử dụng một thuật toán mở rộng khóa giống với thuật toán mở rộng khóa nguyên thủy được sử dụng trong AES. Các khóa vòng này được sử dụng để tìm ra giá trị làm thay đổi hộp thế tĩnh (SBOXAES).
Các khóa vòng này cũng được sử dụng trong bước Add RoundKey trong các vòng. Giả sử với một vòng j nào đó, nếu giá trị khóa vòng là: "6172726167736C696D616E5F6D697469" (Hex), tương đương với “arragsliman_miti” trong mã ASCII, thì Byte đầu tiên 61 (Hex) được dùng để XOR với hộp thế tĩnh ban đầu, tạo ra hộp thế mới SBOXxor được sử dụng cho hoạt động SubByte.
Trường hợp 2
Trong trường hợp này, các khóa vòng khác nhau cũng được sinh ra bằng thuật toán mở rộng khóa của AES. Các khóa vòng này được sử dụng để tìm giá trị phục vụ cho việc dịch vòng hộp thế tĩnh ban đầu. Các khóa vòng này cũng được sử dụng trong bước Add RoundKey trong các vòng.
Giả sử ở vòng thứ j nào đó, nếu giá trị khóa vòng là:
"6172726167736C696D616E5F6D697469" (Hex),
thì thực hiện phép XOR tất cả các byte của khóa này, kết quả thu được:
35(Hex) = 61 ⊕ 72 ⊕ 72 ⊕ 61 ⊕ 67 ⊕ 73 ⊕ 6C ⊕ 69 ⊕ 6D ⊕ 61 ⊕ 6E ⊕ 5F ⊕ 6D ⊕ 69 ⊕ 74 ⊕ 69
Giá trị byte kết quả 35(Hex) được dùng để XOR với hộp thế tĩnh ban đầu, tạo ra hộp thế mới sử dụng cho hoạt động SubByte.
Dựa trên cơ sở các hộp thế được nghiên cứu và tùy thuộc vào giá trị cụ thể của khóa mã hóa sử dụng cho AES, các tác giả đưa ra thuật toán sau đây:
Mã hóa:
- Chọn một khóa ban đầu (khóa chủ) cho AES: Key;
- Byte đầu tiên của khóa chủ được lựa chọn Key[1];
- Tính hộp thế mới SBOXkey[1] = SBOXAES ⊕ Key[1];
- Sử dụng hộp thế mới SBOXkey[1] cho quá trình mã hóa của AES, thay thế cho hộp thế ban đầu SBOXAES.
Giải mã:
- Chọn một khóa ban đầu (khóa chủ) cho AES;
- Byte đầu tiên của khóa chủ được lựa chọn Key[1];
- Tính hộp thế mới SBOXkey[1] = SBOXAES ⊕ Key[1];
- Tính hộp thế nghịch đảo của hộp thế mới này: SBOXkey[1]INV = INV(SBOXkey[1]) = INV(SBOXAES ⊕ Key[1]);
- Sử dụng hộp thế nghịch đảo tính được cho quá trình giải mã của AES.
Các tác giả đã đưa ra bảng so sánh thuật toán AES nguyên thủy với thuật toán AES động:
Bảng 3. SO SÁNH GIỮA AES VÀ AES ĐỘNG ĐỀ XUẤT
|
AES (với S-Box tĩnh) |
AES với S-Box động đề xuất |
Khối dữ liệu mã hóa |
128 bit |
Tương tự |
Độ dài khóa |
128-192-256 bit |
Tương tự |
Số vòng |
Đối với khóa 128, 192, 256 bit thì số vòng tương ứng là: 10, 12, 14 |
Tương tự |
Hàm vòng |
Bao gồm bốn biến đổi: - SubByte sử dụng S-Box nguyên thủy của AES - ShiftRow - Mixcolumn - AddRoundKey Vòng cuối cùng không sử dụng Mixcolumn |
Bao gồm bốn biến đổi - SubByte sử dụng SBOXxor phụ thuộc khóa - ShiftRow - Mixcolumn - AddRoundKey Vòng cuối cùng không sử dụng Mixcolumn |
S-Box |
Cố định |
Phụ thuộc khóa ban đầu |
Mở rộng khóa |
Sử dụng khóa chủ và S-Box nguyên thủy của AES |
Sử dụng khóa chủ và SBOXxor động phụ thuộc khóa |
Thực nghiệm
Sau đó, các tác giả đã thử nghiệm hộp thế trên với phần mềm mô phỏng được phát triển bởi Quartus II V.9.1. Các tác giả mô phỏng chương trình mã hóa crypt_aes_pip_SBOXxor key[i] là chương trình mã hóa AES-128 dựa trên hộp thế động, được tạo ra bằng cách XOR các phần tử của hộp thế AES với byte đầu tiên của khóa chủ (trường hợp 1) hoặc XOR tất cả các byte của khóa chủ (trường hợp 2), như trong Hình 2 minh họa. Tổng thời gian cho quá trình mã hóa là 126 giây. Việc mô phỏng chương trình giải mã decrypt_aes_pip_SBOXxor key[i] được minh họa trong Hình 3.
Hình 2. Mô phỏng chương trình mã hóa Crypt_Aes_Pip_Sboxxor Key[I]
Hình 3. Mô phỏng chương trình giải mã Decrypte_Aes-Pip_Sboxxor Key[I]
Việc phân tích các kết quả đã chỉ ra các đặc trưng của hộp thế mới được xác định, từ đó có thể kết luận rằng nó có thể được sử dụng cho việc mã hóa mà không làm giảm khả năng bền vững của AES trước các tấn công tuyến tính và lượng sai.
Kết luận
Các tác giả trong [1] đã trình bày một phương pháp sinh các hộp thế động phụ thuộc khóa cho AES và đưa ra so sánh giữa thuật toán AES gốc với thuật toán AES được làm động bởi tầng thay thế đã đề xuất. Việc động hóa tầng thay thế tạo ra một mã khối AES cải biên động góp phần nâng cao độ an toàn của mã khối AES.
TÀI LIỆU THAM KHẢO [1] Sliman Arrag, Abdellatif Hamdoun, Abderrahim Tragha, Salaheddine Khamlich, Implementation of stronger AES by using dynamic S-box dependent of masterkey, Journal of Theoretical and Applied Information Technology, 20th July 2013. Vol. 53 No.2. |
TS. Trần Thị Lượng, Học viện Kỹ thuật mật mã (lược dịch)