Hash

加速 SHA-1

  • July 10, 2019

我有一個程序,其中計算 SHA-1 是瓶頸。這是在 2.6Ghz 16 核 Opteron 上使用 OpenSSL 1.0.0e,我獲得了大約 325MiB/s 的吞吐量。(這裡的 SHA1 是通過 Andy Polyakov 使用 SSSE3 的 x86-64 彙編實現。)

如果我需要走得更快,什麼最有意義?

  • 使用多核
  • 使用比預設 OpenSSL 更快的另一種實現
  • 購買基於 CUDA 的影片卡並加以利用
  • 購買商業硬體加速器

我認為由於成本,多核對我沒有幫助。我對 CUDA 了解不多,除了它似乎是 SHA-1 暴力破解的流行選擇,但不確定當我必須散列一個大文件時它是否會有所幫助。而且我在尋找專用硬體加速器時運氣不佳(儘管我才剛剛開始尋找)。

325 MB/s 已經很好了,也就是說,您不會通過其他實現獲得更多。此外,SHA-1 是一種順序算法,因此多核或 GPU 對您沒有幫助。專用硬體可能是使 SHA-1 更快的最佳選擇。

(此外,如果 SHA-1 是瓶頸,那麼您可以比這更快地移動數據,這令人印象深刻;通常,網路或硬碟頻寬是瓶頸,而不是散列。)

如果您可以更改協議,則可以切換到另一個更快的雜湊函式。我建議RadioGatún$$ 64 $$; 在sphlib中有一個優化的實現(用 C 語言)。它比 SHA-1 更快(在主頻為 2.4 GHz 的 Intel Core2 上超過 660 MB/s)。加通電台

$$ 64 $$不再受到積極支持,但它確實得到了一些公開分析,無論如何它不應該比 SHA-1 弱。 正如@Paŭlo 建議的那樣,要從多核中受益,您可以使用樹雜湊。正確並不容易(我的意思是,如果您仍然需要安全性),所以我建議使用雜湊函式,其樹雜湊模式已經由有能力的密碼學家詳細說明。這指向Skein,它是即將到來的 SHA-3 標準的目前候選者。“樹模式”不是“SHA-3 絞紗”的一部分,因此沒有徹底調查,但至少它是由懂行的聰明人設計的;並且 Skein 本身仍然是“最近的設計”;但它仍然優於已知弱點的 SHA-1。

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