Rsa

當我們在數字簽名中使用 RSA 算法的反向時,是否不可能進行中間人攻擊?

  • May 23, 2022

我們知道,在 RSA 算法中,發送者 A 可以向接收者 B 發送加密消息,而無需事先交換任何密鑰。A 只是使用 B 的公鑰來加密消息,而 B 使用只有他知道的私鑰對其進行解密。

在數字簽名中,反向 RSA 算法也可用於對消息進行簽名,因此 A 可以使用其私鑰對消息進行簽名,B 可以使用 A 的公鑰對其進行驗證。

我的問題是在使用反向 RSA 算法的數字簽名中,除了 A 和 B 中間的 B 之外,任何人都無法解密消息,因為可以使用每個人都可以使用的 A 的公鑰來解密消息?

是的,任何人都可以使用公鑰執行模冪運算。然後,這將產生一個填充散列,該散列又包含該散列。因此,如果攻擊者能夠猜測輸入數據,那麼他們就可以確認該數據是根據未填充後獲得的雜湊值進行簽名的。填充方案通常是用於簽名生成或PSS的PKCS#1 v1.5 填充之一。

無論如何,這當然與簽名驗證基本相同,並且由於這是使用公鑰完成的,我們希望任何人都可以這樣做。

對於設計良好的協議,這通常不是問題,但如果您有一個協議執行簡單的加密和簽名(簽署明文並將簽名添加到密文),那麼機密性可能會失去,攻擊者可能能夠- 例如 - 用他們自己的簽名替換。這通常是使用簽名然後加密的原因,或者是一個更複雜的結構。


請注意 - 至少對於PKCS#1 - RSA 使用不同的填充模式進行加密和簽名生成;因此簽名生成不僅僅是用私鑰加密

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