帶有填充的 RSA 可以檢測密文中的所有錯誤嗎?
我是密碼學的新手,有幾件事我不確定我是否理解正確。
首先,在使用填充(PKCS 或 OAEP)時,如果密文在傳輸過程中出現錯誤,我們會在解密過程中總是得到錯誤嗎?它會檢測到所有錯誤,還是有可能某些錯誤組合會導致解密但在明文中會出現錯誤結果?
其次,如果不使用填充,(我相信它被稱為 vanilla rsa?)並且密文有錯誤,那麼解密將隨時工作,但會給出錯誤結果而不是原始加密明文?
最後是否使用填充,密文沒有錯誤並且使用錯誤的私鑰,我們會在解密時得到錯誤還是只是錯誤的解密明文?
首先,在使用填充(PKCS 或 OAEP)時,如果密文在傳輸過程中出現錯誤,我們會在解密過程中總是得到錯誤嗎?
是的,機率極高。這基本上是一種選擇的密文攻擊,並且 RSA-OAEP 完全不受它們的影響,因此您不會檢測到這種攻擊(又稱“錯誤”)的機率非常低(如下 $ 2^{-128} $ ).
它會檢測到所有錯誤,還是有可能某些錯誤組合會導致解密但在明文中會出現錯誤結果?
這是可能的,但極不可能,同樣是由於 RSA-OAEP 的 IND-CCA2 安全性。
其次,如果不使用填充,(我相信它被稱為 vanilla rsa?)並且密文有錯誤,那麼解密將隨時工作,但會給出錯誤結果而不是原始加密明文?
有時它被稱為“教科書 RSA”、“普通 RSA”或“未填充 RSA”。
如果您遵循教科書 RSA 描述,任何錯誤都會改變密文的值,導致解碼不同的數字,從而導致(不相關的)解密,這將始終有效。如果錯誤是惡意的,則可能會被利用,具體取決於系統的反應。
最後是否使用填充,密文沒有錯誤並且使用錯誤的私鑰,我們會在解密時得到錯誤還是只是錯誤的解密明文?
如果您使用了錯誤的私鑰 $ d $ ,根據定義,它不滿足 $ ed\equiv 1 \pmod{\lambda(n)} $ ,您將解密一條錯誤消息,這將導致 OAEP 的驗證錯誤以及未填充的 RSA 的簡單錯誤消息。