Cụ thể trong tài liệu này đưa ra số cổng XOR cần thiết đối với mỗi một ma trận đề xuất, tuy nhiên, những đánh giá cho tài nguyên cài đặt phần cứng của nhóm tác giả này là chưa chặt, ch[r]
Trang 1ĐỀ XUẤT MA TRẬN MDS ĐẠT HIỆU NĂNG CAO KHI CÀI ĐẶT TRÊN PHẦN CỨNG CHO CÁC MÃ PHÁP DẠNG AES
Hoàng Văn Quân*
Tóm tắt: Trong bài báo này, chúng tôi phân tích, đánh giá một số kết quả đã có
về ma trận MDS có cấu trúc dịch vòng cho phép biến đổi MixColumns trong tầng tuyến tính của mã pháp dạng AES Dựa trên các phân tích này, chúng tôi đề xuất một ma trận mới có khả năng cài đặt hiệu quả trên phần cứng, đồng thời đánh giá
số lượng điểm bất động và tính khuếch tán của tầng tuyến tính sử dụng ma trận đề xuất Kết quả này được áp dụng để chọn ra một ma trận phù hợp cho việc xây dựng một tầng tuyến tính cho mã khối có cấu trúc SPN kích thức khối 128 bít dạng AES
đạt hiệu quả cao khi thực hiện trên phần cứng
Từ khóa: Ma trận MDS vòng, Tầng tuyến tính, Cài đặt phần cứng, AES
1 MỞ ĐẦU
Hầu hết các mã khối được thiết kế đều dựa trên 2 nguyên tắc xây dựng cơ bản của
Shannon, đó là tính xáo trộn (confusion) và tính khuếch tán (diffusion) [5] Nếu như tính
xáo trộn được đảm bảo bởi các hộp thế thì tính khuếch tán được đảm bảo bởi tầng biến đổi tuyến tính (được gọi là tầng tuyến tính) Mặt khác tầng tuyến tính là thành phần nguyên thủy mật mã chậm nhất trong một mã khối, vì vậy việc nghiên cứu lựa chọn tầng tuyến tính không những liên quan trực tiếp đến độ an toàn của mã khối kháng lại một số thám
mã quan trọng như thám mã lượng sai và thám mã tuyến tính mà còn ảnh hưởng đến việc cài đặt hiệu quả của mã khối
Đối với các mã pháp dạng AES, tầng tuyến tính bao gồm phép biến đổi AES
ShiftRows và phép biến đổi AES MixColumns Trong đó ShiftRow là một hoán vị các từ
của trạng thái và MixColumns là phép nhân ma trận với một cột của trạng thái và cũng là
phép tính phức tạp tiêu tốn nhiều thời gian trong tầng tuyến tính [8] Trong tầng tuyến tính của AES, ma trận MDS sử dụng là một ma trận có cấu trúc dịch vòng được lựa chọn kỹ lưỡng trên cơ sở đảm bảo độ an toàn và khả năng cài đặt Tuy nhiên, theo đánh giá trên quan điểm điểm bất động của tác giả Z’aba M R [7] thì tầng khuếch tán này lại có 216 điểm bất động, cũng trong [7] tác giả cũng đã chỉ ra sự tương quan tỷ lệ nghịch giữa độ khuếch tán và số điểm bất động, đó là càng nhiều điểm bất động thì độ khuếch tán càng thấp, điều này ảnh hưởng trực tiếp đến tính an toàn của thuật toán mã khối
Trong một số công trình nghiên cứu về khả năng cài đặt cứng hóa trên FPGA đối với AES [1], [2], [3], các phương pháp cài đặt tầng tuyến tính chủ yếu dựa trực tiếp trên phép nhân với các hằng số của ma trận trong biến đổi MixColumns Mặc dù các hằng số của ma trận này được lựa chọn để dễ dàng cài đặt, tuy nhiên phép nhân trực tiếp khi cứng hóa là chưa tối ưu và chưa đưa ra được một đánh giá trực quan về chiều sâu thiết kế của mạch phần cứng nhận được
Trong [6] nhóm tác giả đề xuất một số ma trận MDS và MDS cuộn có dạng Hadamard hiệu quả trong cài đặt phần cứng Cụ thể trong tài liệu này đưa ra số cổng XOR cần thiết đối với mỗi một ma trận đề xuất, tuy nhiên, những đánh giá cho tài nguyên cài đặt phần cứng của nhóm tác giả này là chưa chặt, chưa đưa ra chiều sâu thiết kế (số xung nhịp), đây là yếu
tố có ảnh hưởng trực tiếp đến tốc độ xử lý của mạch phần cứng Hơn nữa tầng tuyến tính mà
mã pháp dạng AES sử dụng ma trận MDS Hadamard cuộn lại có nhiều điểm bất động
Trong bài báo này chúng tôi đề xuất một ma trận sử dụng trong biến đổi MixColumns
đạt hiệu quả cài đặt trên phần cứng tốt hơn so với ma trận đang sử dụng trong AES Đây
Trang 2cũng là một ma trận MDS 4x4 có cấu trúc dịch vòng, nhưng tầng tuyến tính nhận được ngoài khả năng đạt hiệu năng cao khi cài đặt cứng hóa nó còn không có điểm bất động
2 ĐỘ PHỨC TẠP CỦA BIẾN ĐỔI MIXCOLUMNS SỬ DỤNG MA TRẬN MDS
CÓ CẤU TRÚC DỊCH VÒNG KHI CÀI ĐẶT TRÊN PHẦN CỨNG
Đối với tầng tuyến tính của mã pháp dạng AES, phép biến đổi MixColumns thực hiện phép nhân ma trận Y M X:
1 1
1 1
1 1
, (1)
trong đó y x a bij, ij, , 2n, 0 i j , 3 Để tính được một phần tử, ví dụ y00, ta cần thực hiện y00 x00 a x10 b x20 x30 Ký hiệu M=Cir(a,b,1,1)
Phép cộng XOR 4 số hạng yêu cầu 2 xung nhịp (2 clock cycle) Như vậy số xung nhịp
để tính phần tử này là t +2, trong đó t là số xung nhịp lớn nhất yêu cầu khi thực hiện với phép nhân với a hoặc b Số cổng XOR yêu cầu để tính y00 là # a # b 3n, ở đây
# là ký hiệu số cổng XOR khi thực hiện phép nhân với phân tử trong
2n
Do vậy
để thực hiện tính toàn bộ giá trị đầu ra cần tiến hành 16 phép tính song song với nhau (do các hàng trong ma trận có các phần tử giống nhau) Nhưng số xung nhịp yêu cầu chỉ là
t+2, còn tổng số cổng XOR yêu cầu là 16 # a # b 3n
3 PHÂN TÍCH HIỆU QUẢ CÀI ĐẶT CỦA HAI MA TRẬN
MDS CIR(2,3,1,1) VÀ HAD(1,2,4,145)
Ma trận tuyến tính trong biến đổi MixColumns của chuẩn mã hóa AES là một ma trận
4×4 với các phần tử thuộc trường hữu hạn 2 8với đa thức sinh là
1
M
Để thực hiện phép biến đổi này ta cần thực hiện phép nhân với phần tử 2 và 3 (biểu diễn ở dạng cơ số 10) trong 2 8 Trong một số cài đặt phần cứng [1], [2], [3] được công bố
phép nhân với 2 và 3 được thực hiện theo sơ đồ trong hình 1–a), b) Biểu thức phép nhân phần tử a với 2 trên trường đang xét như trong công thức (2);
trong đó xx7, ,x0,yy7, ,y0, x ,i y i 0,1 ,i0,1, , 7 Như vậy, phép nhân này cần xử dụng 3 cổng XOR với đầu vào 2 bit và đầu ra 1 bit và yêu cầu một xung nhịp (1 clock cycle) Khi thực hiện phép nhân với 3 yêu cầu 11 cổng XOR và hai xung
nhịp (hình 1–b)
Trang 37 6
(2)
(3)
7 6 7
6 5 6
5 4 5
4 4
3 2
2 1 2
1 1
,
(4)
Trong (3) ta thấy biểu thức tính các cặp bit y y3, 4 hoặcy y0, 1có các thành phần giống nhau Do vậy, có thể viết công thức (3) thành (4) Theo đó phép nhân này cũng cần
2 xung nhịp để thực hiện và chỉ cần 9 cổng XOR thay vì 11 như cài đặt trước đó Minh
họa cho phép nhân này được thể hiện trong hình 1–c)
Hình 1 Phép nhân với 2 và 3 trên 2 8 với 8 4 3
1
Như vậy, số cổng XOR cần thiết cho cài đặt phép nhân một hàng của ma trận trong
MixColumns với một cột của ma trận dữ liệu bằng 12 + 3x8 = 36 Còn số xung nhịp yêu
cầu khi đó sẽ là 2 + 2 = 4, trong đó 2 xung nhịp đầu tiên là để thực hiện phép nhân với 3, còn 2 xung nhịp tiếp theo là yêu cầu khi cộng XOR 4 byte để nhận được 1 byte đầu ra
Hình 2 Phép nhân với 2, 4 và 145 trên 2 8 với 8 7 6
1
Trong [6] nhóm tác giả đề xuất ma trận Had(1,2,4,145), trên 2 8 với đa thức sinh
1
f x x x x x Phép nhân phần tử x với 2, 4 và 145 trường này tương
ứng có biểu thức (5), (6) và (7) và hình 2 Các ma trận Hadamard cũng có mỗi hàng (hoặc mỗi cột) có các phần tử giống nhau, đây chính là một lợi thế trong cài đặt của nó Trong
[6] đã đánh giá số tài nguyên cài đặt của phép nhân một hàng của ma trận Had(1,2,4,145)
với một cột của khối dữ liệu cần
Trang 47 6 7
(5)
7 5 6
5 3
4 2
3 1
2 0 7
1 6
0 6 7
(6)
(7)
số cổng XOR là 13 + 3x8 = 37 Tuy nhiên, theo chúng tôi đánh giá này là chưa chặt vì nhóm tác giả không xét đến sự trùng lặp trong những biểu thức trong phép nhân với 4 và
145 Như vậy thực chất số cổng XOR cần thiết chỉ là 11 + 3x8 = 35 Theo (6), (7) phép nhân với 4 hoặc 145 cần 2 xung nhịp, do vậy để cài đặt ma trận Had(1,2,4,145) cần 2+2 =
4 xung nhịp Giá trị này cũng chính bằng số xung nhịp khi cài đặt ma trận sử dụng trong biến đổi MixColumns của thuật toán AES, tuy nhiên ma trận Hadamard nói trên khi cài đặt tốn ít tài nguyên hơn
4 ĐỀ XUẤT MA TRẬN MDS HIỆU QUẢ KHI CÀI ĐẶT TRÊN PHẦN CỨNG
CHO MÃ PHÁP DẠNG AES 4.1 Đề xuất ma trận
Độ phức tạp trong cài đặt ma trận tuyến tính trên phần cứng chính là việc cài đặt phép nhân với các phần tử của ma trận trong trường hữu hạn Các nguyên thủy mật mã được sử dụng trong thực tế phải lựa chọn sao cho chúng dễ dàng cài đặt cả trên phần cứng và phần mềm Như vậy khi cài đặt các ma trận tuyến tính việc lựa chọn các hệ số trong mỗi ma trận sẽ quyết định tính chất cài đặt của nó Trong bất kỳ trường hữu hạn 2n, với đa thức
sinh là đa thức bậc n thì phép nhân với phần tử 1, 2 và 2-1 là dễ cài đặt [8] Trong cài đặt trên phần cứng phép nhân với 2 và 2-1 có độ phức tạp như nhau và chỉ cần duy nhất 1 xung nhịp, do vậy nó đạt được hiệu quả cao nhất về mặt tốc độ
Như chúng ta biết để nhận được số nhánh cực đại ma trận vòng M trong (1) phải có
tính MDS [4], tức là tất cả các ma trận con vuông của nó phải không suy biến Từ đây,
điều kiện để M có tính MDS là:
0,1 , 0,1
a b b a ab
(8)
Thông thường những phần tử là bội trên trường hữu hạn của phần tử 2 hoặc nghịch đảo của nó được ưu tiên lựa chọn Trong biểu thức (8) ta thấy cặp giá trị 2 1
, 2 , 2
luôn thỏa mãn trên trường
2n
bất kỳ Tuy nhiên, phải lựa chọn đa thức sinh của trường này làm sao cho phép nhân với phần tử 22 khi cài đặt trong phần cứng chỉ yêu cầu 1 xung
nhịp Với giá trị n = 8 chỉ có duy nhất một đa thức thỏa mãn yêu cầu này đó là đa thức
1
f x x x x x Đây là một đa thức nguyên thủy trong tổng số
2 1 / 8 16
đa thức nguyên thủy có thể có bậc bằng 8 (bảng 1), trong đó là hàm Euler [8] Do vậy, nó có thể được sử dụng trong vài trò đa thức sinh của trường 2 8
Trang 5Bảng 1 Danh sách 16 đa thức nguyên thủy bậc 8 trên 2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Bây giờ chúng tôi sẽ giải thích vì sao lại chọn đa thức số 16 trong bảng 1 cũng như chứng tỏ vì sao cặp 2 1
, 2 , 2 4,149
a b lại tạo được lợi thế khi cài đặt trên phần
cứng trong trường hữu hạn nhận được Tương tự như trong mục 3, phép nhân a với 2, 4,
149 trong 2 8 với đa thức sinh là 8 5 3
1
f x x x x x được minh họa trong hình 3
Hình 3 Phép nhân với 2, 4 và 149 trên 2 8 với 8 5 3
1
Ta thấy phép nhân với phần tử 4 chỉ yêu cầu 1 xung nhịp, điều này nhận được là do tính chất của đa thức sinh của trường 2 8 Thật vậy, giả sử đa thức sinh xác định phép nhân đang xét là 8 7
2
i
f x x x Khi thực hiện phép nhân
2
y x (hình 2) cần thực hiện việc kiểm tra “true-false” đối với bit x7, là bit cao nhất của
x Kết quả là một số trong số các bit đầu ra của y x 2 được xác định bằng tổng theo
modul 2 của bit x7 với bít đầu vào tương ứng xi, 0 i 7 như sau:
0 7
,
Tiếp theo khi thực hiện phép z y 2 x2 2 có dạng:
,
1 , 2 7.
Ta cần điều kiện làm sao cho biểu thức các bit của z không chứa 3 số hạng, như vậy phép
nhân với 4 chỉ cần 1 clock Từ biểu thức trên, ta có điều kiện như sau:
Trang 6 i i17i0, 2 i 7
Nếu 7 0, ta có: i i1 0, 2 i 7 (9) Nếu 7 1 , ta có; i i1i0, 2 i 7 điều này dẫn đến i 1,1 i 7 tuy nhiên trong trường hợp này đa thức nhận được 8 7
i
f x x x là không bất khả quy, do đó trong trường hợp này không thỏa mãn điều kiện cần
Từ phân tích trên chúng tôi sử dụng điều kiện (9) đối với đa thức sinh của trường
2n
để nhận được phép nhân với 22 mà chỉ yêu cầu 1 xung nhịp Với đa thức
1
f x x x x x điều kiện (9) nói trên là thỏa mãn và đây cũng là đa thức nguyên thủy duy nhất có bậc bằng 8 thỏa mãn yêu cầu này
Như vậy ta có thể tính được số xung nhịp cho cài đặt phép nhân một hàng của ma trận
đề xuất với một cột của ma trận dữ liệu sẽ là 1 + 2 = 3 và số cổng XOR yêu cầu là 9 + 8x3
= 33, giảm được 1 xung nhịp và 3 cổng XOR so với ma trận đang sử dụng trong AES, giảm được 1 xung nhịp và 2 cổng XOR so với ma trận được đề xuất trong [6]
4.2 Điểm bất động của tầng tuyến tính theo ma trận đề xuất
Ta biết rằng số nhánh là tham số quan trọng nhất của tầng tuyến tính, bên cạnh đó số lượng điểm bất động của tầng tuyến tính [7] sẽ là một tham số quan trọng khác khi lựa chọn tầng tuyến tính, nó ảnh hưởng đến độ an toàn và được xem như là một tham số bổ sung cho khái niệm số nhánh của tầng tuyến tính
Tầng tuyến tính trong AES gồm 2 biến đổi: ShiftRows và MixColumns Khi kết hợp cả hai biến đổi này có thể biểu diễn bởi phép nhân một ma trận A16x16 với một véc tơ cột Theo [7] số lượng điểm bất động phụ thuộc vào rank A I , trong đó I là ma trận đơn
vị Đối với tầng tuyến tính của AES có rank A 16 và rank A I 14, như vậy nó
có NCir_AES 2n rank A rank A I 28 16 14 216 điểm bất động Tương tự đối với ma trận
đề xuất Cir(4, 149, 1, 1) và ma trận Had(1, 2, 4, 145) có NCir4,149,1,1 28 16 16 1 và
8 16 16
Had
Như vậy là, nếu sử dụng hai ma trận này để thay thế ma trận trong biến đổi
MixColumns trong AES thì sẽ nhận được tầng tuyến tính mà chỉ có một điểm bất động và
đây chính là điểm 0 tầm thường
5 KẾT QUẢ CÀI ĐẶT THỰC NGHIỆM TRÊN FPGA
Chúng tôi đã thực hiện thiết kế các chức năng của biến đổi MixColumns khi sử dụng
ma trận đề xuất và một số ma trận đã xem xét trong nghiên cứu này Chương trình được viết trên ngôn ngữ VHDL cho FPGA của Xilinx Công cụ thiết kế là Xilinx ISE phiên bản 14.3 Kết quả cụ thể như sau:
5.1 Đối với ma trận đề xuất
Hình 4 là kết quả mô phỏng ModelIsim đối với ma trận đề xuất, trong cài đặt này ta thấy sau 3 xung nhịp ta sẽ nhận được kết quả đầu ra tính từ thời điểm xuất hiện tín hiệu đầu vào Kết quả thực nghiệm này bằng đúng giá trị mà chúng tôi đánh giá lý thuyết ở mục trước
Tài nguyên cần tiêu tốn khi thiết kế biến đổi MixColumns sử dụng ma trận đề xuất
Cir(4, 149, 1, 1) được thống kê trong bảng 2 Số LUT cần sử dụng là 528 cho cài đặt toàn
bộ biến đổi MixColums, giá trị này đúng bằng 16x33 như đánh giá lý thuyết cho cài đặt
Trang 7phần cứng ở mục trước
Hình 4 Kết quả mô phỏng đối với ma trận đề xuất Cir(4, 149, 1, 1)
5.2 Đối với ma trận đang sử dụng trong AES
Đối với ma trận Cir(2, 3, 1, 1) sử dụng trong AES Tiến hành đánh giá chúng tôi cũng
nhận được số xung nhịp và tài nguyên yêu cầu thực tế đúng với giá trị phân tích lý thuyết Hình 6 là kết quả mô phỏng ModelIsim về số xung nhịp và bảng 2 là tài nguyên yêu cầu cho cài đặt thực nghiệm này
Hình 6 Kết quả mô phỏng đối với ma trận trong AES Cir(2, 3, 1, 1)
Chúng tôi cũng thực hiện cài đặt tương tự cho trường hợp khi sử dụng ma trận Had(1,
2, 4, 145) và nhận được kết quả thực nghiệm giống như đánh giá lý thuyết
Bảng 2 Tham số cài đặt phần cứng trên FPGA của Xilinx
Registers
LUT-FF
Clock cycles
Maximum Frequency (MHz)
Speed (Mbps)
Cir(2,3,1,1) 728 566 576 4 1225.415 39213
Cir(4,149,1,1) 656 520 528 3 1225.415 52284
Had(1,2,4,145) 702 546 560 4 1225.415 39213 Kết quả nhận được cho thấy ma trận đề xuất có tham số cài đặt phần cứng tốt nhất, tốc
độ xử lý dữ liệu vượt trội khi so sánh với những ma trận cùng xét
6 KẾT LUẬN
Bài báo đề xuất một ma trận MDS có tính chất mật mã tốt có thể thay thế ma trận
trong biến đổi MixColumns trong các mã pháp dạng AES Về đánh giá lý thuyết và kết quả
cài đặt thực tế cho thấy ma trận đề xuất không những yêu cầu tài nguyên ít hơn mà còn có tốc độ xử lý dữ liệu cao hơn ma trận gốc trong AES và ma trận đề xuất trong [6] Kết quả nghiên cứu có ý nghĩa rất lớn trong việc thực hiện nâng cao hiệu quả mã hóa, giải mã dữ liệu khi sử dụng mã khối cho các ứng dụng trên thực tế, đặc biệt là đối với các mạng truyền thông có bảo mật yêu cầu tốc độ cao, băng thông rộng, đa dịch vụ và yêu cầu thời
gian thực