S-Boxes

如何建立差異分佈表?

  • July 8, 2017

我正在研究差分密碼分析,並找到了一種度量來衡量 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 文章

引用自:https://crypto.stackexchange.com/questions/30173