Rsa
密文 >= 模數的 RSA 解密的安全隱患是什麼?
在閱讀PKCS#1 v2.2中有關解密的部分時,我注意到解密算法需要輸出失敗符號:
decryption error
當 RSA 數學子常式報告時ciphertext representative out of range
。雖然關於安全考慮的註釋說填充刪除應該是一個“撲克臉”過程,但它沒有說明密文超出模數的可破譯範圍。
對此的實際安全考慮是什麼?在不檢查其邊界的情況下破譯任意密文有什麼陷阱?
解密之所以需要撲克臉,是因為在進行unpadding時,可以在模冪運算*后區分密鑰或明文的部分。*畢竟,unpadding 部分很容易受到 padding oracle 攻擊。
模運算將通過簡單地對輸入值執行 mod N 將整數映射到 [0, N) 範圍內的任意值。通常情況下,這將是數學等價物 - 請注意優化的庫可能會執行不同的計算。
能夠更改輸入消息的攻擊者通常能夠自行選擇範圍 [0, N) 中的等效消息。因此,更大或更小的整數的處理不應該對 RSA 算法的安全性產生任何影響。
但是,刪除這些檢查仍然是一個壞主意:
- 它們可用於嘗試查找緩衝區溢出或觸發其他類型的溢出;
- 可能已經增加了大小以在協議中移動消息的其他值;
- 它們可能被用來減慢系統速度,因為您仍然需要在任意大小上進行初始模組化操作。
一般來說:系統狀態在界限內的可信度越高,安全性越高。前置條件和保護語句是確保輸入有效並且不使用超出範圍的值執行計算的相對便宜的方法。