Rsa
RSA 簽名真的需要填充嗎?
對於加密,我們希望將相同的純文字加密為唯一的密碼,也稱為語義安全。
對於簽名,純文字(即消息雜湊)不是秘密。純文字,如果你可以這樣稱呼的話,是眾所周知的。我們不需要語義安全。可以這麼說,沒有“純文字”。我們沒有加密。
那麼我們真的需要在 RSA 簽名中進行填充嗎?填充是否不僅僅使推斷有關純文字的資訊變得更加困難(這就是我們通常添加它進行加密的原因)?還是更像是“嗯,它不疼”?情況?
在簽名中添加填充(PSS、PKCS 等)背後的理論是什麼?
注意:存在一個類似標題的問題,但問題的正文沒有詢問標題所問的內容。
實際上,我們不需要填充;一種替代方法是“全域雜湊”。
例如,如果您有帶模數的 2048 位 RSA 密鑰 $ n $ ,您可以將消息傳遞給 SHAKE 並提取 2047 位;並在前面插入一個 0 位。拿它並對其執行 RSA 私有操作,這就是您的簽名。
應該很容易證明,假設 SHAKE 就像一個隨機預言機,假設 RSA 問題很困難(使用 RSA 的重新隨機化屬性),這是安全的。
是的,你需要填充。教科書 RSA 非常有問題。對簽名最簡單的攻擊可能是延展性。取兩個 RSA 簽名,將它們相乘,您將得到一個有效的乘法簽名。