Hash

是否有全週期加密/單向雜湊原語?

  • October 10, 2015

我正在尋找與 LCG 類似的行為(即輸入和輸出大小相同)。全週期 $ 2^{32} $ 不同的輸入產生完整的周期 $ 2^{32} $ 不同的輸出,其分佈取決於大鍵。顯然,組合的 LCG(具有基於擾動種子密鑰生成的參數)似乎可以通過模逆微弱地可逆,但你明白了。

雜湊必須接受小輸入並產生永不衝突的大小相等的輸出,並使用大的“salt”/“nonce”鍵進行鍵控,以製作所有預計算通用表 $ 2^{32} $ 微不足道的反演的雜湊是不可行的。當“種子”鍵和輸出已知時,散列必須保持一種方式(即輸入應該很難從這些中計算出來,沒有為每個特定的種子+輸出暴力破解 2^31 輸入並在中間見面生日)。

這種奇異的要求使它與經典的雙射陷門函式(RSA、MQ 等)不同,因為輸出必須比某些輸入參數(即“鹽”種子)小得多。

這甚至可行嗎?它似乎與傳統的 ARX/feistel 無關,但我懷疑數論中仍有可用的陷門 - 例如 FSB 和 SWIFFTX。但是我不確定這些是否可以適應上述要求。

可以接受遠低於 nbits/2 的安全參數,只要它仍然相當難以進行代數反轉。

**底線:**儘管相關,但完美的雜湊函式不是可接受的答案,因為似乎沒有加密安全的例子,更不用說任何作為活板門的工作了。

諸如 RC6 或 AES 輪次之類的分組密碼顯示出一些希望(通過使用“解密”部分作為我們的雜湊),但通過向後執行輪次,幼稚的實現似乎是可逆的(請記住,密碼密鑰,我們的“種子”sbox 引入其中的非線性是眾所周知的,而微小的“明文”是要保護的)。

我認為通過大量輸入數據依賴性打破線性的分組密碼可能會起作用,但是我不知道我應該尋找什麼候選人。

對不起,但我不相信小輸入有任何已知的“單向排列”(如果您知道“鍵”,則保持單向排列)。

當我們創建一個密碼置換(或雙射;這就是我們所說的“全循環”函式)時,我們有兩種基本方法:

  • 我們可以採用一系列易於反轉的排列(“圓形函式”),並將它們粘合在一起以形成我們希望難以反轉的函式。

這是大多數分組密碼背後的一般設計原則;我們相信,如果密鑰是秘密的,這可以很好地工作。但是,如果您將密鑰交給某人,則反轉變得很容易(只需反轉每個單獨的輪函式)。

  • 我們可以利用一些一對一的數學關係(也就是說,它避免了衝突),但出於任何天真顯而易見的原因,它並沒有這樣做。

我們經常在公鑰密碼學中發現這類事情;其中之一是 $ f(x) = g^x \bmod p $ (適當的 $ g, p $ ); 這個函式可以映射輸入 $ (1, p-1) $ 進入範圍 $ (1, p-1) $ 這樣每個輸出都是可能的。

這樣做的一個問題是這些類型的函式很大。在我提到的具體情況下,我們需要 $ p $ 可能是 2048 位才能真正安全,這很難描述為一個小範圍。

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