Encryption

證明純文字屬於加密數據

  • July 31, 2022

給定一個加密(RSA)消息和它的原始純文字,有沒有辦法證明純文字屬於加密消息?

如果你有私鑰,那麼當然,你可以解密密文並比較明文。

如果您只有公鑰,那麼不,這是不可能的,假設“加密 (RSA)”是指“使用基於 RSA 的非對稱加密原語加密”(其中有兩個標準的,都在PKCS中描述#1 )。任何可以通過猜測可能的明文然後檢查猜測來解密密文的加密原語都將被嚴重破壞。這被形式化為不可區分屬性。對於非對稱加密機制,即使攻擊者可以送出任意明文並獲得相應的密文,攻擊者也一定無法找出不是以這種方式提供的密文的解密(無法區分選擇明文攻擊)。

使用教科書 RSA(即只進行冪運算),您當然可以將公鑰操作應用於明文。這就是教科書 RSA 本身不是加密(或簽名)機制的原因之一。

基於 RSA 的消息加密方案通過在應用公鑰操作之前將隨機字元串合併到明文中來解決這個問題。這被稱為填充,因為最簡單的方法是將明文與隨機字元串連接起來,以填充到 RSA 密鑰長度。(正確地進行填充需要的不僅僅是這個!)如果你有一個密文,可能對應的明文和公鑰,你仍然無法判斷密文是否與明文匹配,因為你必須猜測隨機字元串,而且它的長度足以讓猜測變得不可行。

順便說一句,這種結構可以證明密文解密的內容,而無需透露私鑰或有關其他密文的任何資訊。如果你透露明文和加密時使用的隨機字元串,任何人都可以計算出相應的密文。產生密文的實體和私鑰的持有者都可以做到這一點。

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