Hash

為什麼 RSA 不是雜湊函式?

  • March 20, 2022

RSA 假設說 $ (GenSP,F,SampleX) $ 是單向的。所以如果我們初始化一個 RSA 實例 $ (n,e), (n,d) $ 並且完全忘記了密鑰和 SampleX 均勻分佈在 $ X, F = x^e \bmod N $ 應該是單向的。

現在還知道內射函式意味著抗碰撞,但當然不是單向的。

到目前為止,我們有抗原像性和抗碰撞性。如果我們取,則應給出第二個原像電阻 $ x $ 只從 $ {0,\ldots,n-1} $ .

我們談論確定性 RSA,因此隨機填充不涉及隨機過程。因此我們的 F 也是確定性的。

我錯過了什麼嗎?

RSA 是一種陷門排列,您的設計方式只需提供 RSA-HASH 即可解決這些問題;

  • 具有排列的有限域:加密散列函式,雖然它們可以散列任意大小,但它們的域比它們的範圍大得多;考慮

    • SHA-256 雖然它可以具有 256 位輸出大小,但域範圍是 $ 2^{64} $ 位。
    • SHA-3 雖然它可以具有 256 位或更多位的輸出大小,但域範圍是 $ 2^{128} $ 位。儘管 Keccak (SHA-3) 使用了排列,但它最終不是排列,因為它使用了更大的輸入大小 $ 2^{128} $ . 單個排列可能會引發一些問題。

另一方面,作為散列的預置幾乎沒有什麼用處,只要您不考慮非常大的模數大小的文件散列或 RSA-HASH 無法進行簽名。

  • **標準:**假設 NIST 將 RSA-HASH-3 函式發佈為 $ H(m) = m^3 \bmod n $ . 現在,加密社區中的每個人都會爭辯說,在建構 RSA-HASH-3 時,他們並沒有破壞 $ p $ 和 $ q $ 他們保持 $ d $ 作為私人。不能保證他們會這樣做。因此,天真地認為他們已擦除不是密碼學的工作方式(Morralan 的評論)。
  • 我們希望散列函式可以模擬隨機預言機,並且由於長度擴展攻擊而有些失敗。另一方面,RSA-HASH 遠離隨機預言機。RSA 的乘法屬性防止了這種情況。在隨機 Oracle 中,我們不期望輸入之間的一般關係被帶入輸出之間的 som 關係中,但是,RSA-HASH 有它$$ RSA(m_1)RSA(m_2) = RSA(m_1 m_2) $$
  • 輸入空間短:為了減少您可能想要使用的散列時間 $ e=3 $ , 然後用立方根攻擊所有消息 < $ \sqrt[3]{N} $ 可以很容易。增加 $ e $ 會增加散列的成本。記住需要使用 2048 位 RSA。
  • 後量子:目前塊密碼和散列函式再次是安全的 Grover 算法。只需將 256 位密鑰用於分組密碼並使用至少 256 位輸出散列函式。雜湊函式有一項改進的工作(Brassard 等人),可以將大小減小為立方根(而不是 Grover 的平方根 - 漸近最優!),但是,面積成本是相同的成本,所以有那裡沒有危險。

另一方面,一旦建立了 Shor 的算法,RSA 就會被摧毀。因此,RSA-HASH 不是後量子安全的。

有什麼用處嗎?:如果模數大小適合您的應用程序,則 RSA-HASH 可以作為一個很好的隨機排列。

**總之:**置換、隱蔽性、速度和無後量子的安全性對於密碼散列函式來說不是一個好的選擇。

為您的應用程序使用SHA-2、SHA-3、BLAKE2(非常快)、BLAKE3(非常快)等的 SHAKE 系列。

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