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ế

08:15 | 06/01/2021

Việc động hóa tầng thay thế tạo ra một mã khối AES là phương pháp dựa vào việc XOR byte khóa với các phần tử hộp thế. Bài viết này trình bày một phương pháp sinh các hộp thế động phụ thuộc khóa cho AES. 

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.