Rsa
使用 RSA 加密會話(隨機)密鑰時是否需要 OAEP?
我的問題是兩個部分:
- 例如,在使用分組密碼加密用於加密批量數據的會話密鑰時,確實需要使用 OAEP 進行填充[我假設密鑰是使用安全隨機生成器生成的。
- 與使用最大隨機位的簡單填充相比,OAEP 有什麼好處 $ n-1 $ 在哪裡 $ n $ 是 RSA 的大小。
OAEP 如何提高 RSA 的安全性中的答案 ? 非常有用,但我仍然想知道上述問題。
例如,在使用分組密碼加密用於加密批量數據的會話密鑰時,真的需要使用 OAEP 進行填充嗎?
如果會話密鑰幾乎與 RSA 模數一樣寬,或者填充了高達該大小的隨機位(保存一位或幾個高位),則否。如果沒有其他問題,如果實際會話密鑰在隨機選擇的那些中保留來自 RSA 解密結果的位,或者通過另一個密鑰派生步驟獲得,我們是安全的。這就是RSA-KEM的原理。
但是,是的,如果會話密鑰直接是有效負載,RSAES-OAEP很有用,並且比 RSA 模數(會話密鑰的典型值)小得多。當使用教科書 RSA 直接加密短密鑰(如 $ C=K^e\bmod N $ ) 至少在以下兩種情況下是不安全的。
- 如果公共指數 $ e $ 很小(小於約 $ \displaystyle\frac{\log N}{\log K} $ 位),然後解密減少到計算非模組化 $ e^\text{th} $ 的根 $ C $ , 產生 $ K $ . 這個問題要求一個界限 $ \log K $ 允許攻擊,它略大於 $ \displaystyle\frac{\log N}e $ .
- 如果鑰匙 $ K $ 明顯小於所需安全級別的兩倍,那麼就有一個中間相遇攻擊適用於相當大的一部分 $ K $ 該(部分)因素為 $ K=K_1\cdot K_2 $ 和 $ K_1<K_2 $ 和 $ K_2 $ 小到可以列舉,需要 $ O(K_2) $ 時間和 $ O(K_1) $ 記憶。
對於 128 位,這將是一個合理的攻擊 $ K $ 和 4096 位 RSA $ e=2^{16}+1 $ .
與使用最大隨機位的簡單填充相比,OAEP 有什麼好處 $ n-1 $ 在哪裡 $ n $ 是(的)RSA(公共模數)的大小?
沒有我看到的
- 一些安全實現的可用性,
- 辨識(包括一些安全建議明確的),
- 檢測意外密碼損壞或使用不匹配的公鑰/私鑰。
請注意,使用“帶有隨機位的簡單填充”實現解密遠非萬無一失;沒有任何東西可以操縱秘密或私鑰。特別是,測試高階常量位會通過填充預言攻擊導致災難。可能會應用故障攻擊(例如,使用有針對性的定時雷射脈衝強制會話密鑰為零)。側通道可能有問題。