2012-08-06 96 views

回答

13

根據Lenstra更新的可用方程on this site,4096位RSA密鑰的安全級別與至少248位長的密碼散列(例如SHA-256)匹配。

如果您使用RSA OAEP(並且您應該),那麼您最多可以加密的數據量爲modulus size - 2 - 2*hash size,即446字節。

使用RSA PKCS#1 v1.5,您最多可以加密modulus size - 11字節,但RSA PKCS#1 v1.5提供的安全性較低(它不可證實是安全的,並且最小數量的隨機填充字節應擴展爲至少16個字節)。

如果你需要加密更多的數據,你不應該簡單地把它砍掉,並在每個塊上多次使用RSA。這是一個安全缺陷。您必須採取不同的方法,更精確地說:

  1. 選擇一個隨機的128位對稱密鑰。
  2. 使用經過驗證的操作模式來加密您的數據(例如AES-128 GCM)。
  3. 使用RSA OAEP加密對稱密鑰。

RSA加密(與解密不同)非常快速,但時間確實取決於庫和您使用的平臺。有關參考,請參閱cryptopp library's website

+2

@owlstead關於使用正確的動詞的好處,我編輯了答案。對於由RSA加密保護的對稱密鑰的完整性,OAEP已經提供了完整性。在我看來,由於之後使用的身份驗證模式(嵌入MAC),它甚至不是必需的。也許你的意思是真實性(這個方案不提供)? – SquareRootOfTwentyThree 2012-08-06 07:30:37

+0

不,我的意思是誠信。但是我感到困惑的是,對OAEP的填充oracle攻擊只能作爲*側通道攻擊*,換句話說就是攻擊實施。 – 2012-08-11 11:35:24

+0

@SquareRootOfTwentyThree:你有沒有任何參考解釋**爲什麼**最大大小是'模大小-2-2 *散列大小'? – eckes 2013-11-21 13:52:57