為什麼勒索軟體實際上不能使用 RSA 加密所有文件?
我了解到一些勒索軟體使用 RSA 公鑰來加密屬於受害者的所有文件。就其安全性而言,這是一個防彈系統,因為私鑰對黑客來說始終是安全的。
但大多數勒索軟體使用混合加密方法,在此期間它們會犯錯誤,從而使安全研究人員能夠建構解密器。這種混合方法的吸引力在於對稱加密的速度。但是由於黑客在這種方法中犯了實施錯誤,為什麼不是所有的黑客都轉向非對稱加密呢?以程式方式實現似乎比混合方法更容易。RSA速度慢是限制黑客的唯一因素嗎?與 AES 相比,對於平均 i5 處理器上的 500 MB 數據,RSA 有多慢?
我在網際網路上搜尋了 RSA 與 AES 在現代電腦中進行批量數據加密的速度之間的比較,但一無所獲。*我知道無法聯繫到犯罪分子就他們為什麼不使用僅非對稱方法進行批量加密發表評論,*但我希望了解為什麼使用 RSA 進行批量加密如此不受歡迎的實際原因。
與對稱密碼相比,RSA 確實非常慢。您可以自己執行檢查,例如 openssl 基準測試:
openssl speed rsa
在我的機器上(使用 openssl 1.1.1a)我得到
Doing 2048 bits public rsa's for 10s: 330640 2048 bits public RSA's in 10.00s
所以我們每秒可以進行約 33k 次加密,加密塊的大小小於模數,因此小於 256 字節。如果攻擊者想要加密 1GB 的文件,大約需要 2 分鐘。另一方面,
openssl speed aes
表明 AES-CBC 每秒可以加密 ~300MB
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128 cbc 94234.08k 136019.99k 137980.25k 304759.81k 304166.23k 315654.14k
所以相同的 1GB 文件將在 3 秒內被加密。
對於攻擊者來說,速度很重要,因為文件加密的速度越快,程序被中斷的可能性就越小。
首先,這個想法是基於一個誤解:
“但大多數勒索軟體使用混合加密方法,在此期間它們會犯錯誤,從而使安全研究人員能夠建構解密器。”
這是我的看法是不正確的。第一個勒索軟體僅使用對稱加密。現在,如果留下該對稱密鑰,則可以再次檢索它。如果您使用混合密碼術和每個文件單獨的對稱密鑰,那麼您必須在實現中犯下一個可怕的錯誤。現在當然仍然會有一個勒索軟體笨蛋(這些不是高薪專業人士)仍然設法搞砸了,但我認為這並不常見。
我在網際網路上搜尋了 RSA 與 AES 在現代電腦中進行批量數據加密的速度之間的比較,但一無所獲。
哦,親愛的,您必須升級您的 Google-fu。
另一個答案提到了加密速度,但不止於此。我認為 RSA 的加密速度並不是一個需要成為一個巨大問題的問題。但是,還有另一個缺點:尺寸方面的效率。
如果使用 RSA 加密明文,那麼與明文相比,在密文擴展方面會有一定的劣勢。密文擴展的大小取決於使用的填充方案。對於 RSA PKCS#1 v1.5 填充,您可以低至 11 個字節的成本(儘管更大的填充大小更安全)。對於 OAEP,好吧,有人在這裡創建了一個表。因此,如果您使用帶有 2048 位密鑰的 RSA PKCS#1 v1.5,您將使用每 256 - 11 = 245 字節 11 個字節來擴展密文。這意味著文件會突然變大(這可能非常明顯),或者您當然可能會用完磁碟空間來執行加密。
另一個問題是 RSA 需要使用隨機數生成器來生成填充(好吧,除非使用確定性方案,但這會高估勒索軟體創建者的能力)。如果您繼續點擊隨機數生成器,那麼它可能會決定請求額外的熵,這意味著您的系統可能會用完它。當它用完時,它會停止,或者速度可能會降低到爬行。這將是相當明顯的,特別是如果有其他應用程序從系統請求隨機數據。
最後,雖然加密速度可能仍然足以加密大量數據,但解密速度是否足夠值得懷疑。RSA 的解密速度遠低於加密速度。也就是說,勒索軟體背後的人可能不會太在意。