Algorithm-Design
如何生成 16 X 8 完美非線性 S-box
我想為我正在研究的加密算法生成一個 16,8 完全非線性的 S-box。我沒有數學背景,而且我是本科生,所以很多涉及的數學都非常混亂。
我希望完全非線性的 S-box 具有 16 位輸入和 8 位輸出。
我一直在閱讀 Kaisa Nyberg 1991 年的論文完美非線性 S-box,但我無法理解所描述的方法。
在第 4 節,基於 Maiorana-McFarland 方法的構造中,實現描述為:
- 取 n 位輸入(其中 n >= 2m)
- 將 n 位分成兩部分(x1 和 x2)
- 通過執行 x1 • x2 獲得輸出的第一個數字(長度為 m)
- 並且輸出的第二個數字通過將一個/2 大小的LFSR(帶有一個原始回饋多項式)移位一次,並在LFSR 的內容和x2 之間進行計算。
我無法理解如何使用這兩個數字,因為兩者的長度都是 m..
- 連接它們將使輸出大小為 2m
這是不對的。我面臨的問題是:
- 是否應該在兩個數字之間進行操作以產生 m 位輸出?在基於 Maiorana-McFarland 方法的構造中?
- 哪個(根據我的理解模組化)操作將是最佳的?
- 除了完美的非線性之外,還有什麼我應該考慮的嗎?
$ A:\mathbb{F}_2^m\rightarrow \mathbb{F}_2^m $ 是由原始長度誘導的狀態空間圖 $ m $ LFSR。
因此它映射長度的零向量 $ m $ 對自身和一般的 LFSR 狀態 $ (a_0,a_1, \ldots,a_{m-1}) $ 至 $ (a_1,\ldots,a_m) $ . $ A^i $ 只是 $ A $ 迭代的 $ i $ 次(移位 LFSR $ i $ 次)。
然後,APN圖 $ z=(z_1,\ldots,z_n)=F(x_1,x_2) $ 在哪裡 $ x_1,x_2,z,\in \mathbb{F}_2^m $ 是(誰)給的 $$ z_i=A^{i-1}(x_1)\cdot x_2,\quad i=1,\ldots,m $$ 在哪裡 $ z_i $ 是單獨的位。