新的分組密碼比新的雜湊更難設計嗎?
我意識到密碼和散列原語有些不同。但是它們具有共同的要求,例如抗攻擊性。而且我意識到每個攻擊/漏洞都是不同的。然而,除了抵抗攻擊之外,密碼必須是可逆的,給定正確的密鑰。並且它必須是非常不可逆的,因為密鑰稍微不正確。雜湊不需要,只需要像RadioGatún團隊所說的安全修飾函式。
這是否意味著新的安全塊密碼比新的安全雜湊更難開發?或者它們是否過於蘋果和橙色而無法進行客觀比較?
PS。我知道 Feistel 網路和流密碼。我指的是塊原語本身,例如 DES & AES v. SHAx & Whirlpool 以及管道中的任何其他內容。
塊密碼和散列的標準結構可以用給定的“重整函式”來實例化,其中“重整函式”是一個固定的排列,例如keccak-f,或者另一個例子是沒有 addRoundKey 層的Rijndael 。
實際上,您可能會設計兩種不同的東西:使用排列的新結構,或用於實例化給定結構*的新排列。
用新的排列實例化一個已知的結構
如果你想開發一個新的排列並實例化一個密鑰交替分組密碼或海綿結構以進行散列,那麼它們或多或少是具有同等難度的挑戰。有一些差異。
這些差異之一與您如何計算最終設計需要多少輪才能確保安全有關。雜湊函式不使用密鑰,因此攻擊者可以更輕鬆地製作針對設計弱點的輸入。因此,未加密的散列函式往往需要比塊密碼更多的輪次才能實現目標安全目標。
為散列函式設計的排列也可能大於為分組密碼設計的排列。這似乎是一個微不足道的細節,但對於矢量化設計,將 MOV 指令放入矢量寄存器是昂貴的,而且通常沒有矢量旋轉指令。有效地使用SIMD(單指令多數據)比根本不使用它更具挑戰性,但是沒有它你就無法做出快速的大排列。
分組密碼傾向於包含某種密鑰調度,這是設計散列函式時不一定存在的要求。如果您在 Merkle-Damgård 構造中使用分組密碼,那麼密鑰調度將與安全性相關——這就是相關密鑰攻擊模型相關的地方。
如果您可以擺脫 128 位的塊大小,那麼為塊密碼設計排列可能比雜湊函式更容易,因為不必使用 SIMD。
設計新建築
另一個要玩的遊戲是:假設給你一個排列,例如 keccak-f。如何用它創建分組密碼?如何用它創建雜湊函式?
這場比賽可以說比前一場更具開放性和挑戰性。如果您想找到一個不只是對現有結構進行變體的結構,您可能需要考慮很多事情。
在這種情況下,您無法真正回答提出新的分組密碼或雜湊構造是否會比另一種更具挑戰性 - 您如何評價提出您還不知道的新穎想法的難度?誰能說Merkle-Damgård風格的雜湊函式是否比Feistel 網路更難提出,尤其是當您假設您還不知道這兩種結構的存在時?
它不一定是*排列(它是可逆的),但它有助於保持答案的簡單和準確,只考慮排列。