Encryption

在 GPU 上解決比在 CPU 上花費更長的時間的密碼算法

  • October 3, 2017

我知道顯卡在解決諸如 SHA-256 之類的算法方面速度更快,因為有許多內置處理器,但是有沒有算法在顯卡上比在現代消費類 CPU(Amd/intel)上花費的時間更長?

這種特定情況是密碼散列函式分析的核心部分。實際上,為了對密碼進行雜湊處理,我們需要一個函式:

  1. 以可調的方式變慢;
  2. 因此,用於評估該功能的許多實例的最具成本效益的硬體是預期防御者將使用的硬體,即“普通 PC”。

這裡的“成本”是指實際的金錢。對於攻擊者而言,無論他需要 10、100 還是 1000 個單位的任何硬體,他都沒有關係。只需要總成本。可以說,對於現代硬體,尤其是 GPU,處理密碼的大部分預算將用於電力,而不是購買硬體。因此,在通用 CPU 和各種 GPU 上,根據計算所消耗的能量來定義函式的成本是有意義的。

bcrypt密碼散列函式似乎確實是這樣一個函式,在 GPU 上計算比在 CPU 上計算更昂貴(能量方面)。使其如此的 bcrypt 特性是它圍繞一個內部 4 kB 數據數組進行組織,該數組以不適合快捷方式的方式連續讀取和修改,並且位於偽隨機地址。GPU 沒有為此做好準備;如果您嘗試在 GPU 上實現 bcrypt,您將遇到相當大的數據訪問爭用,並且大多數 GPU 核心隨時都會停止(而且這樣停止的核心仍然會消耗電力)。

密碼雜湊競賽旨在定義實現更大目標的新功能,即不僅對 CPU 更友好而不是 GPU 友好,而且在面對使用 FPGA 或定制 ASIC 的攻擊者時在一定程度上“守住底線”。大多數候選人使用的主要工具還是 RAM,但更多。基本假設是現代 PC(伺服器、台式機系統……)包含經過徹底優化的記憶體匯流排,無法通過定制硬體以顯著降低的成本執行。目前尚不清楚這種假設在多大程度上成立。

PHC 候選人之一,稱為Makwa(我設計的),沒有使用 RAM,而是使用模組化算法。預計這與 FPGA 和 ASIC 相比表現不佳,但對於 GPU,它似乎表現良好:根據我的分析,CPU 和 GPU 的成本似乎與 2048 位模數大致相當,並且更大的模數收益CPU 比 GPU 多。

總而言之,bcrypt 和 Makwa 似乎都是您問題的有效答案,而且它們通過完全不同的方式實現。

即使一小部分加密算法可以並行化,例如 10%,並且這部分算法受益於 GPU 的加速是 20 倍,那麼 GPU 版本將比 CPU 版本快 10%

請注意,GPU 上的良好實現將利用兩個世界(CPU+GPU)。

因此,如果有人建構一個僅 GPU 的求解器,那將是非常奇怪的。

開始搜尋的好地方是記憶體硬實現。最受歡迎的是scrypt它被設計為比PBKDF2 或 bcrypt等替代功能更安全地抵禦硬體暴力攻擊。密碼雜湊競賽 (PHC) 的獲勝者也是Argon2

PBKDF2 有一個弱點(迭代次數),這使得使用專用集成電路或圖形處理單元的暴力攻擊相對便宜。bcrypt 密鑰派生函式需要大量 RAM(但仍不能單獨調整,即固定在給定的 CPU 時間量內),並且對此類攻擊的抵抗力稍強

所以主要的建議是選擇ScryptArgon2i(比其他所有更好)。

Argon2旨在抵抗使用專用硬體(例如 GPU、ASIC 或 FPGA)的暴力攻擊。2015 年 7 月,它被宣佈為密碼雜湊競賽的獲勝者。

沒有持續很長時間看到一個好的實施。這是 Argon2 的GPU POC

性能 ✓

在 NVIDIA Tesla K20X 上,CUDA 實現可以達到大約 40-60 GiB/s(除以時間成本 * 記憶體成本 * 1024 B 以獲得每秒雜湊值)。相比之下,快速的 Intel Xeon 處理器只能達到 10 GiB/s 左右

因此,如果求解器實現是使用常識程式的,我認為沒有一種算法可以在 GPU 上執行得更慢。

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