Hash
簽名時為什麼要散列或加鹽?
編輯:只是想知道為什麼這個問題被關閉,因為這個問題是在這個問題之後將近 2 年提出的一個問題的重複……
我看過一個如何使用 RSA 簽名的範例。除了簽名本身(s = m^d mod n)之外,它還散列並添加一個 IV。
為什麼需要這個?
散列通常出現在 RSA 簽名方案中的第二個原因(除了能夠簽署長消息之外)是為了防止存在偽造攻擊。這些看起來像這樣:
假設我們有公鑰 $ n $ , $ e $ . 隨機選擇一些垃圾 $ s $ (小於 $ n $ ),併計算 $ m = s^e \mod n $ (即“RSA 加密”)。如果您使用“教科書 RSA 簽名”(沒有散列和任何填充),您現在有一條消息 $ m $ 帶有合適的簽名 $ s $ .
使用雜湊,簽名檢查方程是 $ H(m) \equiv s^e \mod n $ 代替 $ m \equiv s^e \mod n $ ,這不允許創建消息 $ m $ 適合任意簽名 $ s $ (假設散列函式是抗原像的)。但是請注意,仍然可以創建工作 $ (m,s) $ 給定獲得簽名的能力的對 $ s_j $ 選定的消息 $ m_j\ne m $ ,使用 Desmedt 和 Odlyzko 設計的攻擊(參見本文的第 3 節)。
(通常出現在簽名中的填充方案用於相同的目的,並且旨在抵抗選擇消息攻擊。)