Aes
DES 在軟體上比 AES 快
我進行了一個基於軟體的實驗,用於使用 AES 和 DES 加密不同大小的圖像。然而沒想到DES加密速度比AES高。DES有可能比AES快嗎?我也搜尋了文獻,但無法就此事得出明確的結論。謝謝
是的, AES可能比 DES 慢。未優化軟體的緩慢是沒有限制的!
我目睹了減緩軟體 AES 實施的一些因素:
- 不使用表來計算 S-box(一個極端的例子是那裡的實現,當使用 undefined 編譯時
BACK_TO_TABLES
;另一種可能性是使用用於硬體或位切片的公式,也許是為了消除時序變化)。- 對所有內容都使用十六進制 ASCII(或二進制)字元串,也許是因為沒有內置的 128 位類型;
- 使用解釋性語言(沒有內置 XOR 的語言將確保性能特別差)
- 留下轉儲每個中間結果的調試程式碼,即使這實際上是 /dev/null 或等效的;
- 在中等程度上,當操作模式允許將其排除時,在每次呼叫時重新計運算元鍵;
- 在很小的程度上,使用 256 位密鑰(這個密鑰很難失去超過兩倍)。
這在很大程度上也適用於 DES。
我應該提到,對於體面和可比較優化的實現,AES 通常比 TDES 快,而且通常比 DES 快,並通過吞吐量說明了這一點;但另一個答案做得很好。
特定密碼的原始吞吐量(因此忽略傳輸、磁碟吞吐量等任何其他因素)在很大程度上取決於:
- 軟體源的優化程度
- 用於生成機器程式碼的編譯器的效率
- 正在執行加密的架構(x86、MIPS、ARM 和任何 CPU 記憶體)
- 是否正在使用任何特定於架構的加速器(例如AES-NI)
- 如何使用密碼,尤其是數據的長度以及如何在記憶體中處理它以及任何程序間通信(如果存在)
例如,最近的英特爾賽揚使用 OpenSSL 1.0.2k 生成以下基準:
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes des ede3 17599.97k 17837.04k 17522.94k 17734.79k 17937.75k aes-128 cbc 47594.60k 52877.76k 53606.40k 119826.27k 119680.69k
雖然 Raspberry Pi 2 產生:
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes des ede3 2246.01k 2348.58k 2367.43k 2379.94k 2380.37k aes-128 cbc 13760.48k 15367.66k 15739.04k 15901.55k 15885.84k
根據數據大小,AES-NI 在英特爾 CPU 中的性能比 3DES 高 2.7 - 6.6 倍,而 Pi 保持在相當穩定的 6.1 - 6.6 上。正如預期的那樣 - AES 被設計並被選為標準,因為它即使在小型設備中也能很好地提高實施效率,因此您的觀察很有趣。
如果沒有關於實現的上下文,以及重要的目的,做出諸如“密碼 x 比密碼 y 快”這樣的籠統陳述並不是那麼有用。如果我只對保護 VPN 感興趣,那麼如果鏈路只能實現 1Mbps 的吞吐量,那麼任何一種密碼都可以,並且實現的安全性將優先考慮(應該如此)。
對於圖像壓縮的案例,除非這些文件在千兆字節範圍內,否則如果執行加密所花費的時間是主要問題,我會感到驚訝。