Aes

DES 在軟體上比 AES 快

  • July 29, 2017

我進行了一個基於軟體的實驗,用於使用 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 的吞吐量,那麼任何一種密碼都可以,並且實現的安全性將優先考慮(應該如此)。

對於圖像壓縮的案例,除非這些文件在千兆字節範圍內,否則如果執行加密所花費的時間是主要問題,我會感到驚訝。

引用自:https://crypto.stackexchange.com/questions/50442