Chương 1 TỔNG QUAN VỀ THUẬT TOÁN MÃ HOÁ
2.3 Nâng cao độ an toàn và hiệu năng cao thuật toán AES
2.3.2 Giải pháp nâng cao độ an toàn của thuật toán AES
Trong phần trước đã trình bày một số tính chất mật mã quan trọng của tầng khuếch tán trong mã khối, phân tích các tính chất đó đối với tầng khuếch tán của thuật tốn mật mã AES. Kết quả phân tích cho thấy, tầng khuếch tán của AES có số nhánh khơng cao (bằng 5) và số điểm bất động nhiều (bằng 216). Tất nhiên ngồi các tiêu chí yêu cầu về số nhánh cao, số điểm bất động ít, cịn có các tiêu chí khác cần xem xét, chẳng hạn như tiêu chí về tốc độ thực hiện và chi phí cài đặt. Như vậy để nâng cao độ an tồn của thuật tốn AES, chúng ta có thể cải tiến ma trận MDS để tăng số nhánh, hoặc giảm số điểm bất động, hoặc vừa tăng số nhánh và giảm số điểm bất động. Để tăng số nhánh, chúng ta có thể sử dụng một ma trận MDS kích thước lớn hơn, tối đa cỡ 16x16. Khi đó
số nhánh cực đại sẽ được tăng lên, tối đa bằng 17. Tuy nhiên khi tăng kích thước của ma trận MDS thì cũng làm tăng chi phí cài đặt và ảnh hưởng đến tốc độ mã hóa/giải mã.
Vì vậy, luận án đề xuất giải pháp lựa chọn một ma trận MDS mới nhằm giảm đáng kể số điểm bất động, trong khi khơng làm tăng q nhiều chi phí cài đặt và đặc biệt khơng làm giảm nhiều tốc độ thực thi của thuật toán AES. Nghĩa là có sự cân bằng giữa độ an tồn và chi phí, tốc độ thực thi.
Như chúng ta đã biết, có nhiều phương pháp để xây dựng ma trận MDS [46], [73], [97]. Tuy nhiên, việc xây dựng ma trận MDS sao cho tầng khuếch tán có chi phí thực thi thấp vẫn là một vấn đề khó đối với các nhà thiết kế. Ý tưởng về một ma trận tựa vịng có nhiều phần tử bằng 1 và giá trị của các phần tử là nhỏ, số phần tử khác nhau ít nhằm tăng tốc độ và giảm chi phí thực thi là một ý tưởng được nhiều người quan tâm. Chi tiết về phương pháp xây dựng ma trận MDS tựa vịng hiệu quả có thể tìm đọc trong các tài liệu chuyên sâu [46], [73], [97]. Sau đây luận án sẽ trình bày tóm lược về phương pháp này.
Các tiêu chí thiết kế ma trận MDS được các tác giả trong [73], [96] đề cập là:
- Có nhiều nhất số lượng phần tử có giá trị bằng 1 (ký hiệu số lượng này là 𝑣1).
- Số lượng ít nhất các phần tử khác nhau trong ma trận (ký hiệu số lượng này là 𝑐).
- Các phần tử của ma trận có trọng số Hamming thấp nhằm tối thiểu hóa chi phí thực thi (ký hiệu trọng số này là H). Giá trị H càng thấp thì số phép XOR và số biến tạm cần sử dụng sẽ càng ít.
Dựa trên các tiêu chí đó, các tác giả đã xây dựng các ma trận MDS có chi phí thực thi thấp dựa trên các mảng song chính quy (bi-regular). Họ cho rằng cách xây dựng như vậy sẽ tạo ra các ma trận tối ưu theo nghĩa số các phép
XOR, các biến tạm và bảng tra là nhỏ nhất. Các giá trị tối ưu cho 𝑣1 và 𝑐 đối với một ma trận cỡ 𝑞 × 𝑝 được các tác giả xác định qua Bảng 2.1 và Bảng 2.2.
Bảng 2.1. Các giá trị của cq,p 2 3 4 5 6 7 8 2 3 4 5 6 7 8 2 2 2 2 3 3 3 3 3 2 2 3 3 3 3 4 4 2 3 3 3 4 4 4 5 3 3 3 3 4 4 4 6 3 3 4 4 4 4 5 7 3 3 4 4 4 4 5 8 3 4 4 4 5 5 5
Tuy nhiên, trong cơng trình này, các tác giả mới chỉ xây dựng được các ma trận MDS cỡ 4 × 4 và 8 × 8 tối ưu một phần: hoặc theo 𝑣1, hoặc theo 𝑐. Bên cạnh đó, ma trận nghịch đảo của các ma trận này chưa chắc đã tối ưu.
Bảng 2.2. Các giá trị của 𝑣1𝑞,𝑝 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 3 4 6 7 8 9 10 11 4 5 7 9 10 12 13 14 5 6 8 10 12 13 14 17 6 7 9 12 13 16 18 19 7 8 10 13 14 18 21 22 8 9 11 14 17 19 22 24
Cũng theo hướng xây dựng trên, các tác giả trong [46] đã đề xuất và đưa ra một số kết quả về các ma trận MDS kiểu “ma trận tựa vịng” (circulant matrix). Có 2 kiểu ma trận tựa vịng được định nghĩa như sau.
Định nghĩa 2.1 (Ma trận tựa vịng Kiểu-I).
Ma trận 𝑑 × 𝑑 dạng sau:
[𝑎 𝟏 𝟏𝑇 𝐴]
được gọi là ma trận tựa vòng Kiểu-I, với 𝐴 = 𝐶𝑖𝑟𝑐(1, 𝑎1, … , 𝑎𝑑−2), 𝟏 = (1, … ,1)⏟
𝑑−1 𝑙ầ𝑛
, 1 là phần tử đơn vị, và phần tử 𝑎𝑖 và 𝑎 là những phần tử khác
0 và khác 1 bất kì của trường cơ sở. Ma trận này được kí hiệu là 𝐾𝑖ể𝑢_𝐼(𝑎, 𝐶𝑖𝑟𝑐(1, 𝑎1, … , 𝑎𝑑−2)) .
Ở đây, 𝐶𝑖𝑟𝑐(𝑎0, 𝑎1, … , 𝑎𝑑−1) là ký hiệu của một ma trận vòng () cỡ 𝑑 × 𝑑, có dạng sau: [ 𝑎0 𝑎1 ⋯ 𝑎𝑑−1 𝑎𝑑−1 𝑎0 ⋯ 𝑎𝑑−2 ⋮ ⋮ ⋮ ⋮ 𝑎1 𝑎2 ⋯ 𝑎0 ]
Ma trận tựa vịng kiểu-I có đặc điểm thú vị là số lượng các phần tử khác nhau trong ma trận là nhỏ (thường bằng kích cỡ của ma trận), số lượng số 1 trong ma trận là khá cao, ngoài ra nghịch đảo của nó cũng có dạng tương tự như nó. Dạng nghịch đảo này được định nghĩa như sau:
Định nghĩa 2.2 (Ma trận tựa vòng Gần_Kiểu-I).
Ma trận 𝑑 × 𝑑 dạng sau:
[𝑎 𝒃 𝒃𝑇 𝐴]
được gọi là Ma trận tựa vòng Gần_Kiểu-I, với 𝐴 = 𝐶𝑖𝑟𝑐(𝑎0, 𝑎1, … , 𝑎𝑑−2), 𝒃 = (𝑏, … , 𝑏)⏟
𝑑−1 𝑙ầ𝑛
, và 𝑎, 𝑏 và phần tử 𝑎𝑖 là những phần tử bất kì của trường cơ sở. Ma trận này được kí hiệu là: 𝐺ầ𝑛_𝐾𝑖ể𝑢_𝐼(𝑎, 𝑏, 𝐶𝑖𝑟𝑐(𝑎0, … , 𝑎𝑑−2)).
Các tác giả còn đề xuất một kiểu ma trận tựa vịng khác gọi là ma trận tựa vịng Kiểu-II, có khả năng tự nghịch đảo, phù hợp cho các mạng SPN.
Định nghĩa 2.3 (Ma trận tựa vòng Kiểu-II).
[ 𝐴 𝐴−1 𝐴3 + 𝐴 𝐴 ]
được gọi là ma trận tựa vòng Kiểu-II, với 𝐴 = 𝐶𝑖𝑟𝑐(𝑎0, … , 𝑎𝑑−1) và
được kí hiệu là 𝐾𝑖ể𝑢_𝐼𝐼(𝐶𝑖𝑟𝑐(𝑎0, … , 𝑎𝑑−1)).
Theo đó, trong [46] các tác giả đã tìm được một số ma trận tựa vịng kiểu-I cỡ 4 × 4, 8 × 8, và một số ma trận tựa vịng kiểu-II cỡ 6 × 6.
Ma trận MDS trong thuật tốn AES được xây dựng có dạng tựa vịng và hướng đến các tiêu chí như vậy. Trong phần này, luận án ứng dụng phương pháp xây dựng ma trận tựa vòng [46], [97] để xây dựng một ma trận MDS tựa vịng mới kích thước 4 x 4 và có chi phí thực thi tương đương với ma trận MDS của AES, nhưng ma trận MDS tựa vòng mới này tạo ra tầng khuếch tán với số điểm bất động bằng 1, đó chính là điểm 0 tầm thường.
Đây là một số thuộc tính mật mã tốt muốn có của các ma trận tựa vịng MDS. Những dạng ma trận nào thỏa mãn được những thuộc tính trên sẽ được phân tích, lựa chọn phương pháp xây dựng các ma trận đó. Để có các ma trận tựa vịng, chương trình tìm kiếm ma trận MDS tựa vịng cỡ 4 x 4 được xây dựng, mẫu ma trận được sử dụng có dạng như sau:
Các phần tử 𝑎, 𝑏, 𝑐, 𝑑 được chọn bất kỳ trong trường 𝐺𝐹(28). Ứng với 8 đa thức nguyên thủy bậc 8 để xây dựng, chương trình cho phép tìm kiếm được 32 ma trận MDS tựa vịng 4x4. Ứng với đa thức nguyên thủy là x8 + x6 + x5 + x3 + 1 chương trình tìm được 4 ma trận MDS tựa vòng theo dạng trên, danh sách 4 ma trận này được trình bày như trong bảng 2.3
Bảng 2.3. Danh sách ma trận MDS tựa vòng 4x4 [ [ 08 01 01 01 01 01 0A 08 01 08 01 0A 01 0A 08 01 ] [ 05 01 01 01 01 01 0C 05 01 05 01 0C 01 0C 05 01 ]
(𝑣1 = 9, 𝑐 = 3, 𝐻 = 4) (𝑣1 = 9, 𝑐 = 3, 𝐻 = 6) [ 1D 01 01 32 01 01 10 1D 01 1D 01 10 32 10 1D 32 ] (𝑣1 = 6, 𝑐 = 5, 𝐻 = 8) [ 20 01 01 49 01 01 65 20 01 20 01 65 49 65 20 49 ] (𝑣1 = 6, 𝑐 = 4, 𝐻 = 10)
Sau đó luận án tiến hành đánh giá (theo tiêu chí nhiều số 1 nhất - 𝑣1 và có ít phần tử khác nhau nhất - 𝑐, trọng số Hamming của các phần tử thấp nhất - 𝐻) và lựa chọn được ma trận MDS tựa vòng như sau:
𝑀𝑛𝑒𝑤 = [ 0x08 0x01 0x01 0x01 0x01 0x01 0x0A 0x08 0x01 0x08 0x01 0x0A 0x01 0x0A 0x08 0x01 ]
Do ma trận này có nhiều số 1 nhất 𝑣1 = 9, có ít phần tử khác nhau nhất 𝑐 = 3, trọng số Hamming bé nhất 𝐻 = 4 (phần tử 0𝑥08 có 1 bít 1 do đó trọng
số Hamming là 1, tương tự ta có 0𝑥01 có trọng số Haming là 1 và phần tử
0𝑥0𝐴 có trọng số Hamming là 2. Vì vậy, tổng trọng số Hamming của các phần
tử là H=4).
Xem xét ma trận MDS của AES [ 0x02 0x03 0x01 0x01 0x01 0x02 0x03 0x01 0x01 0x01 0x02 0x03 0x03 0x01 0x01 0x02 ] có thể tính được 𝑣1 = 8, 𝑐 = 3, 𝐻 = 4
Ma trận MDS tựa vòng 𝑀𝑛𝑒𝑤 ở trên được luận án đề xuất ứng dụng vào cải tiến thuật toán AES.
Ma trận nghịch đảo tương ứng dùng cho quá trình giải mã của thuật toán là: 𝑀𝑛𝑒𝑤−1 = [ 0x1A 0xD1 0xD1 0xD1 0xD1 0xCE 0x5B 0x02 0xD1 0x02 0x01 0x0A 0xD1 0x5B 0x02 0xCE ]
Ứng dụng ma trận MDS 𝑀𝑛𝑒𝑤 này vào thuật toán AES và tiến hành đánh giá tầng khuếch tán mới theo cách tương tự như trong phần 2 ở trên. Kết quả đánh giá cho thấy số điểm bất động của tầng khuếch tán mới có số điểm bất động là 20(chính là điểm 0 tầm thường), trong khi đó với thuật tốn AES gốc (sử dụng ma trận MDS gốc) có số điểm bất động như đã đánh giá ở trên là 216
điểm. Tức là đã giảm đi được 216− 1 điểm (tương ứng đã giảm đi được cỡ 99%) , đây là số điểm bất động tối ưu nhất mà một tầng khuếch tán của mã khối luôn mong muốn đạt được. Như vậy số điểm bất động của thuật toán AES cải tiến (là thuật toán AES sử dụng ma trận MDS mới 𝑀𝑛𝑒𝑤 mà luận án đề xuất ở trên) được giảm đi đáng kể so với số điểm bất động của thuật toán AES gốc (sử dụng ma trận MDS gốc), trong khi xét về chi phí thực thi (thơng qua các tiêu
chí 𝑣1, 𝑐, 𝐻) là tương đương nhau, tức là chi phí thực thi sẽ khơng bị giảm đi đáng kể (trong khi về mặt độ an tồn thì số điểm bất động càng ít thì độ an tồn càng cao, với ma trận MDS mới của luận án đề xuất thì tầng khuếch tán mới chỉ tồn tại 01 điểm bất động duy nhất, ứng với trường hợp đầu vào X = 0 nên 𝐴 ∗ 𝑋 = 0).
Để đảm bảo hiệu năng của thuật toán AES cải tiến với ma trận MDS mới này. Trong phần tiếp theo, luận án sẽ trình bày một số giải pháp thực thi cứng hóa hiệu quả.