Encryption

指定密鑰大小時的分組密碼設計標準

  • October 15, 2021

對於給定的 N 位塊大小,可能排列的總數為 (2^N)!為了從任何一種可能的排列中進行選擇,密鑰的長度必須是 log2((2^N)!),它通常比 N 大得多。假設 AES 有一個 128 位塊並且可以有一個密鑰長度為 256 位,AES 分組密碼僅使用所有可能的分組排列的一小部分。

我的問題是:設計師如何確定要使用置換空間的哪個子集?

是否有任何設計標準適用於排列如何“隔開”?

我想到了一些直接且非常明顯的標準:

  1. 消除不改變任何東西的排列(即:1 到 1、2 到 2、…、n-1 到 n-1)。因為這不會混淆明文。
  2. 消除不改變“足夠”條目的排列(即: 1 到 5 , 5 到 1 ,所有其他都是 n 到 n )。

設計師如何確定“最佳”排列子集以映射到關鍵空間?

作為排列(族)的分組密碼沒有被明確地“選擇”:因為任何這樣的排列都是巨大的,並且不能完全生成和分析。相反,設計者創建了分組密碼的計算電路/算法。我們無法直接檢查您想到的排列屬性,例如固定點的數量、小循環等,因為好的分組密碼會創建如此復雜的排列,從這個角度分析它們幾乎是不可能的。相反,密碼學家分析可以在某種程度上檢查的屬性:高機率差分軌跡、線性相關軌跡、對稱性等。

此外,通常可以分析輪函式(使用任何密鑰)生成的群,通常它要麼是完全對稱群,要麼至少是交替群(基於 XOR 的 Feistel 網路總是這種情況)。這裡與真實密碼的主要區別在於,在此設置中,輪數沒有限制。但它仍然是有用的資訊:我們可以得出結論,不存在適用於所有密鑰和任意輪數的屬性。

為了論證分組密碼的安全性,設計人員嘗試使用設計合理性來提供針對已知密碼分析技術的良好安全性。著名的密碼分析技術是統計密碼分析,如差分和線性密碼分析,以及結構攻擊,如代數密碼分析。對於第一種技術,設計人員嘗試使用具有良好混淆和擴散特性的排列。這就是他們基本上選擇排列的方式。要了解它的實際工作原理,我建議您閱讀The Block Cipher Companion一書。希望閱讀我之前給出的 Wikipedia 頁面能讓您大致了解如何選擇排列。

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