Aes

s-box 應用程序之間的完全擴散還是部分擴散?

  • May 29, 2018

關於最大化活動 s-box:在狀態完全擴散之後而不是在部分擴散之後應用非線性層是否有利?

以 AES 為例,使用眾所周知的mixColumns 和 shiftRows 組合:如果這個線性擴散層在 s-box 應用程序之間連續應用兩次,而不是僅僅一次呢?

用 2 輪對正常 AES 進行數學運算很簡單:

$$ \begin{align} 1 + 4 &= 5\ 4 + 16 &= 20 \ 5 + 20 &= 25\ \end{align} $$

  • 每行中的第一個數字是該輪輸入處不同 s-box 的數量。
  • 第二個是該輪輸出的差異數量。
  • 第三個是兩者之和。
  • 第一行代表第一輪
  • 第二行代表第2輪
  • 最後,將兩輪相加得到活動 s-box 的最小總數。

所以為了模擬線性擴散層的雙重應用,我嘗試用 16 代替 4,但不確定如何進行:

$$ \begin{align} 1 + 16 &= 17\ 16 + 256 &= 272\ 17 + 272 &= 289\ \end{align} $$ 或者應該是:

$$ \begin{align} 1 + 16 &= 17\ 16 + 32 &= 48\ 17 + 48 &= 65\ \end{align} $$ 還是完全不同的東西?在兩輪的過程中,這樣的 AES 變體有多少活動的 s-box?

簡而言之,我想我真的很想知道:在應用 s-box 層之前擴散整個狀態是否有密碼分析優勢?還是更頻繁地應用 s-box 更好,它們之間的擴散“剛剛好”?

如果兩次應用線性擴散層而不在它們之間應用 s-box,則可能存在迭代微分特性,每個修改的“輪”只有四個活動 s-box(即,而不是可證明的最少 25 個活動 s -boxes 超過 4 個回合,在 4 個“回合”中可能只有 16 個活動的 s-box)。

例如,考慮單行中的所有四個字節都處於活動狀態的狀態。在 SubBytes 之後,所有四個字節仍然有效。在 ShiftRows 之後,同一行中的所有四個字節仍然處於活動狀態。然後在 MixColumns 之後,狀態中的所有 16 個字節都處於活動狀態。再次應用 ShiftRows 不會改變所有 16 個字節都處於活動狀態的事實。但是再次應用 MixColumns 可能(假設字節差異恰到好處)導致單行活動字節。如果該行與我們開始的那一行是同一行,並且如果活動字節的結果差異與我們開始時的差異相同,那麼這是一個迭代特徵,在每一輪中只啟動 4 個 s-box ‘。

如果您希望在單輪中完全擴散,同時仍保留可證明的最小活動 s-box 數,則應使用分支數為 17 的 16 x 16 MDS 矩陣,例如這個。但即使有這樣的野獸,您也只能在 4 輪中證明最少 34 個活動 s-box。

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