CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ
3.2 Mô tả thuật toán mô phỏng
3.2.1 Cấu trúc của các phần từ điều khiển được sử dụng
Việc sử dụng phần tử F2/2 thay cho phần tử F2/1 trong xây dựng các toán tử phụ thuộc dữ liệu (DDO-Data Dependent Operation) là hợp lý, hiệu quả và phù hợp hơn khi triển khai thực hiện chúng trên phần cứng FPGA . Xét với cấu trúc của F2/1 là có 2 bit vào và 1 bit điều khiển hay khi biểu diễn dưới dạng hàm logic (Boolean Function-BF) thì nó là 2 hàm logic với 3 biến nên khi thực hiện trên FPGA buộc chúng ta phải sử dụng 2 tế bào nhớ 4-bit (using two 4-bit memory cells) trong đó mỗi tế bào chỉ thực hiện một hàm logic với 3 biến mà khả năng của mỗi tế bào nhớ 4-bit lại cho phép thực hiện một hàm logic bất kỳ với 4 biến. Vì vậy trong trường hợp sử dụng các tế bào nhớ này để thiết kế F2/1 sẽ không tận dụng được hết khả năng của thiết bị gây lãng phí. Nhưng với cấu trúc của F2/2 là có 2 bits vào và 2 bits điều khiển hoặc được biểu diễn bằng 2 hàm logic với 4 biến (xem hình 3.1) nên khi thực hiện trên FPGA cũng vẫn chỉ dùng 2 tế bào nhớ 4-bit, mỗi tế bào nhớ vừa đủ thực hiện một hàm logic với 4 biến. Vì vậy tận dụng được tối đa tài nguyên của tế bào nhớ, dẫn đến thiết kế đó đảm bảo đạt hiệu quả cao hơn. Điều này cũng có nghĩa rằng trong trường hợp sử dụng phần tử F2/1, chỉ sử dụng hết 50% tài nguyên, phần còn lại là không tận dụng được. Như vậy, khi sử dụng phần tử F2/2 sẽ bảo đảm sử dụng được toàn phần tiềm năng của thiết bị. Đặc biệt, khi xây dựng DDOs từ phần tử F2/2 tương đương với việc mở rộng số bits điều khiển dữ liệu vào sẽ tạo ra các điều kiện tiên quyết trong việc nâng cao mức độ phi tuyến và làm tăng hiệu ứng thác lũ của mỗi phép biến đổi. Đây là 2 tính chất cần thiết nhất của mật mã nhằm đảm bảo độ an toàn cho các thuật toán.
Do đó phần tử được lựa chọn để xây dựng thuật toán là phần tử F2/2. Trong thuật toán đã sử dụng phần tử được điều khiển mở rộng (gọi tắt là phần tử mở rộng) là F16/64. Nó được xây dựng gián tiếp thông qua phần tử F2/2. Dãy biến đổi để hình thành F16/64 là: . Quá trình xây dựng các phần tử mở rộng này đều tuân thủ theo nguyên tắc xây dựng CSPNs đã
được chỉ ra trong [5]. Sau đây là mô tả chi tiết F2/2 và cấu trúc của các phần tử mở rộng trên.
Cấu trúc của F2/2 có thể được biểu diễn bằng các cách như trong hình 1.
Theo đó, F2/2 có thể được biểu diễn như sau:
Cặp hai hàm logic 4 biến.
Cặp bốn phép thế , mỗi một phép thế có 2 bit vào ( ). Mỗi phép thế đó tương ứng với một véc tơ điều khiển có giá trị tương ứng là:
.
Theo cách biểu diễn dưới dạng hàm logic 4 biến, F2/2 có thể được biểu diễn dưới dạng các biểu thức đại số sau:
hoặc:
Bảng 3. 1 Xác xuất Pr(ijk)=Pr(Yi /Xj , Vk) của đặc tính vi phân của F2/2.
i j k 001 002 011 101 110 120 002 102 201 202 Pr 0,25 0,125 0,1875 0,375 0,75 0,5 0,125 0,5 0,375 0,375
Để xây dựng được CSPNs hiệu quả thì cần phải xây dựng các tiêu chí trong việc chọn phần tử F2/2. Việc lựa chọn này cần đáp ứng các tiêu chí sau:
1) Hàm f1 và f2 của F2/2 là hàm logic 4 biến cân bằng và có tính phi tuyến lớn nhất.
2) Các phép biến đổi của phần tử F2/2 là các biến đổi song ánh. Nói cách khác thì 4 phép chuyển đổi: F(0,0), F(01), F(10), F(11) phải là phép biến đổi song ánh.
3) Tổ hợp tuyến tính 2 đầu ra của F2/2 tức hàm f3 = y1 ⊕ y2 cũng là hàm logic cân bằng và có tính phi tuyến lớn nhất.
4) Ứng với mỗi phép chuyển đổi F(v) luôn tồn tại phần tử nghịch đảo.
Sau đây là một số minh họa cụ thể cho việc chọn cặp 4 CEs thỏa mãn các tiêu chí lựa chọn trên để có thể ứng dụng trong thiết kế các phần tử mật mã đó là: {e, f, g, h}, {f, i, e, j}, {h, f, j, e}, {j, i, f, e}, {a, d, g, i}, {b, i, c, h}, {f, i, e, h}, {j, i, f, d},…
Tiếp theo, từ F2/2 xây dựng lên F4/8. Ở đây F4/8 được xây dựng từ 4 phần từ F2/2 được chia thành 2 lớp, mỗi lớp gồm 2 phần tử F2/2 ghép song song.
Giữa 2 lớp này là hoán vị cố định được mô tả như trong hình 3.1.
F2/2 F
2/2
F2/2 F
2/2 V1 Z1
V2 Z2
V2 Z2
V1 Z1
a) b)
Hình 3. 1 Cấu trúc của F4/8 (a) và F-14/8 (b).
Sau đó từ 8 phần tử mở rộng F4/8 chúng tôi tiếp tục tổng hợp lên phần tử mở rộng F16/64 (xem hình 3.2) được dùng trong thuật toán BM-64, trong đó 8 phần tử mở rộng F4/8 được chia thành 2 lớp mỗi lớp gồm 4 phần tử ghép song song. Giữa 2 lớp này là hoán vị cố định I được mô tả như sau:
I=(1)(2,5) (3,9) (4,13) (5,2) (6) (7,10) (8,14) (9,3) (10,7) (11) (12,15) (13,4) (14,8) (15,12) (16)
F4/8 F4/8 F4/8 F4/8
F4/8 F4/8 F4/8 F4/8
V1 Z1
V2 Z2
V3 Z3 V4 Z4
V4 Z4
V3 Z3
V2 Z2
V1 Z1
a) b)
Hình 3. 2 Cấu trúc của F16/64 (a) và F-116/64(b)
Với cấu trúc này và điểm thú vị hơn là nó được xây dựng từ phần tử F2/2 sẽ hỗ trợ lớn trong việc tạo ra các thuật toán mã hóa đạt được hiệu năng cao.
Trên đây đã trình bày cấu trúc của phần tử được điều khiển được dùng trong thuật toán BM-64.
Bảng 3. 2 Miêu tả các phép thế trong hộp S4x4 và S-14x4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S0/S0-1 14/14 4/3 13/4 1/8 2/1 15/12 11/10 8/15 3/7 10/13 6/9 12/6 5/11 9/2 0/0 7/5 S1/S1-1 3/9 13/10 4/5 7/0 15/2 2/15 8/12 14/3 12/6 0/13 1/11 10/14 6/8 9/1 11/7 5/4 S2/S2-1 10/1 0/8 9/14 14/5 6/13 3/7 15/4 5/11 1/15 13/2 12/0 7/12 11/10 4/9 2/3 8/6 S3/S3-1 1/12 4/0 11/15 13/5 12/1 3/13 7/10 14/6 10/11 15/14 6/8 8/2 0/4 5/3 9/7 2/9
Các bước thực hiện của BM-64 được mô tả như sau:
1. For j = 1 to 7 do: {(L, R) Crypt(e) (L, R, Uj,Qj);
(R, L) (L, R)}.
2. (L, R) Crypt(e)( L, R, U8 , Q8).
3. {(L, R) (L Å U9, R Å Q9); (L, R) (L, R)}.
Ở đây Crypt(e)(L, R, U, Q) là hàm với 4 tham số vào đó là L: khối dữ liệu trái, R: khối dữ liệu phải, Uj: khóa con vòng thứ j của nhánh trái, Qj khóa con vòng thứ j của nhánh phải. Các phép biến đổi trong hàm này được mô tả trong sơ đồ vòng mã hóa cơ sở ở hình 5b. Trong sơ đồ này, cấu trúc của phần tử F16/64 đã được mô tả trong phần II. Các hoán vị P, I1, và khối mở rộng E được mô tả như sau: P = I1; I = (2i1)(2j, 2j + 16); E(X) = (X, X<<<4, X<<<8, X<<<12)
Còn hoán vị I1 trong hình 5b được mô tả như là hoán vị giữa 2 tầng trong phần tử F16/64 (tức giống hoán vị I đã mô tả trong phần II).