S-Boxes
如何建立差異分佈表?
我正在研究差分密碼分析,並找到了一種度量來衡量 sbox 對它的抵抗力,但是要使用它,有必要建立一個差分分佈表,就像這個連結中的那個,這是 sobox 的表des s1,例如,我如何為 AES sbox 建構表?
這些表在概念上相當容易建構,但需要相當多的工作才能實際執行。
請注意:列顯示傳入對的 XOR,行顯示之後具有指定 XOR 的對數。
此虛擬碼生成表:
InLength; // input length of the S-Box in bits OutLengh; // output length of the S-Box in bits Table[In][Out]; // the table, In is the XOR of the in-going pair, Out is the resulting XOR, the table returns the number of occurences // Initialize the table: for(in = 0;in<2^InLength;in++) { for(out = 0;out<2^OutLength;out++) { Table[in][out] = 0; } } // this makes us go through all the possible value of p1 for(p1 = 0;p1<2^InLength;p1++) { // this makes us go through all the possible value of p2 for(p2 = 0;p2<2^InLength;p2++) { XOR_IN = p1 XOR p2; XOR_OUT = SBOX(p1) XOR SBOX(p2); Table[XOR_IN][XOR_OUT]++; } }
它所做的基本上是建構 S-Box 的每個可能的輸入對,計算其 XOR,通過 S-Box 執行併計算結果的 XOR 並增加該位置的值。
對於 AES,此表過於復雜,無法在此處顯示,因為它將是 256x256 表。有關實際的 AES S-Box,請參閱Wikipedia 文章。