RSA 是否全面下滑?
根據我從網際網路收集的資訊(來源),2019 年及以後的推薦做法是避免 RSA 並使用 ECDH 和 ECDSA。
這是一般情況嗎?
用於密鑰交換的RSA正在迅速下降,不推薦使用,因為它不提供前向保密。如果沒有前向保密,如果有人闖入伺服器並獲得私鑰,他們將能夠完全追溯解密在該密鑰下加密的所有記錄流量。ECDH 沒有這個問題,因為私鑰和公鑰是即時生成的,並在使用後丟棄。這是可能的,因為 ECDH(和 DH)密鑰生成在 CPU 上輕而易舉,而 RSA 則不然。為每個密鑰交換生成一個新的 RSA 密鑰對是絕對禁止的。
另一方面,用於證書的RSA仍然很活躍,並且仍然被認為是行業標準。不過,ECDSA 有一些好處,例如更小的公鑰和簽名大小,這相當於減少了網路使用量,但使用 ECDSA 進行驗證比使用 RSA 慢一些。
是的,現在 RSA 不被認為是我們現在擁有的所有公鑰加密需求的*事實上的算法。*但是,它仍然無處不在,而且這種情況不太可能很快改變。
例如,TLS 1.3 已經放棄了 RSA 密鑰交換,因為它缺乏前向保密性。所以你可能會認為 RSA 正在失去一些吸引力,但這並不意味著證書不能再使用 RSA 密鑰,而只是 TLS 伺服器和客戶端現在只能使用 RSA 算法進行簽名,並且客戶端不再可能向伺服器發送一個 RSA 加密的 premaster 密鑰。(也請參閱Forest對該主題的回答。)
RSA確實有一些缺點:
- RSA 的簽名速度比 ECDSA 慢,這對於應該同時處理許多請求的 TLS 伺服器來說通常很重要,而且簽名速度慢得多。
openssl speed
以下是我設備上 使用的一些數字:sign/s verify/s ecdsa (nistp256) 37232.9 9515.5 rsa 2048 1441.4 48517.4 rsa 3072 438.3 21926.7
您還可以在此處找到一些基準。但正如對另一個答案的評論中提到的,注意 RSA 驗證仍然比 ECDSA(或 EdDSA)更快。
- RSA 使用更長的密鑰:橢圓曲線通常具有 256 位的密鑰,而等效的 RSA 密鑰大小通常被認為是 3072(這就是原因。)。這對嵌入式(或物聯網)設備至關重要,這意味著在受限設備上橢圓曲線可能是要走的路。(儘管目前生態系統仍然大量使用 RSA。)
- 填充 對於RSA 加密和簽名的安全至關重要,但是有很多選擇,現在只有幾個仍然安全。
- 有許多導致災難的 RSA 實施有缺陷的實例(通常是 在密鑰生成中,也就是說)。
這並不意味著 RSA 已經消失,對2017 年在野外發現的公鑰進行的一項研究表明,在網際網路上可以找到的 94.48% 的公鑰仍然是 RSA 密鑰。(但是這可能是有偏見的,因為它正在考慮 TLS 證書的集合,並且這些證書仍然絕大多數使用 RSA 密鑰。)
雖然大多數證書頒發機構現在已經實現了對基於 ECDSA 的證書的支持,但仍有許多依賴 RSA 的遺留系統,而這絕對不會很快改變。
此外,值得一提的是,多年來,RSA 算法已經受到學術界和工業界的更多審查,並且有很多對策可以在特定硬體上執行 RSA,以使其免受故障攻擊或側面攻擊。渠道,而 ECDSA 和 EdDSA 等“較新”的方案仍然經常 容易受到此類攻擊。
最後,您應該明確閱讀Thomas對相關問題的回答(“與 RSA 相比,為什麼橢圓曲線密碼學沒有被廣泛使用? ”),因為它(像往常一樣)非常徹底。