Rsa

使用 SHA-256 的 RSA 簽名是否安全?

  • March 3, 2022

遵循 RSA 簽名方案是否可以防止偽造並防止破壞教科書 RSA?

$$ y = \operatorname{SHA-256}(m) $$ $$ s = y^d\bmod N $$

在哪裡 $ m $ 是任意長度的消息, $ y $ 是 256 位雜湊 $ m $ 使用 SHA-256 計算, $ d $ 是 RSA 私鑰,並且 $ N $ 是長度為 2048 或更高的 RSA 模數?

一種明顯的攻擊方式(我們正在縮短 $ \text{SHA256}(m) $ 作為 $ S(m) $ :

  • 對於大量消息 $ m_i $ , 計算 $ S(m_i) $ ,並考慮到這一點。如果順利,將消息和主要因素記錄在一個表格中;如果不順暢,拒絕它
  • 當您在表中記錄了足夠的消息(和素因數)後,在素因數表上進行消去以找到一組消息和因數,其中選定消息的所有素數乘以因數後總和為 0。

如果我們有這樣的產品(以及對應於其中一條消息的乘數,比如說, $ S(m_0) $ , 是 1), 那麼我們有 ( $ p_i $ 是我們分配給消息的乘數 $ i $ ):

$$ S(m_1)^{-p_1} \cdot S(m_2)^{-p_2} \cdot … \cdot S(m_n)^{-p_n} \equiv S(m_0) $$

所以,求籤名 $ m_1, m_2, …, m_n $ ; 從中,您可以推斷出簽名 $ m_0 $ .

那麼,這有多可行呢?好吧,大部分邏輯讓人想起二次場篩(QFS)中所做的事情;大小(256 位)是關於將 QFS 應用於 512 位模數時得到的大小。QFS 可以有效地分解 512 位模數;我的結論是這個算法也是可行的。

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