Hash

Scrypt KDF cipher (scrypt CLI) - 已知漏洞和密碼分析?

  • December 25, 2020

有一個 scrypt 密碼,例如一些加密貨幣(如 Litecoin)用於他們的探勘算法。

我從來沒有聽說過scrypt。我知道例如 SHA-256,它經過充分分析並被認為是安全的。

  1. 任何已知的 scrypt / 漏洞密碼分析?
  2. scrypt 在社區中被認為是一種安全的(類似於 sha256)密碼嗎?
  3. 它的抗碰撞性如何?
  4. 它是否容易被量子計算攻擊破壞?

加密

scrypt實際上是Colin Percival 創建的基於密碼的密鑰派生函式 (PBKDF * );通過順序記憶硬函式實現更強的密鑰派生。我們想要較慢的 PBKDF 函式,因為它會減慢攻擊時間。以下來自 hashcat 性能;

scrpyt                         1172.8 kH/s (16.61ms)
PBKDF2-HMAC-MD5               18059.2 kH/s (69.72ms)

它速度較慢,並且需要大量記憶體來抵禦大規模自定義硬體攻擊(ASIC、FPGA 和 GPU)。內部使用PBKDF2Salsa20/8

  1. 任何已知的 scrypt / 漏洞密碼分析?

攻擊者無法反轉 scrypt 以找到原像。唯一有意義的方法是通過嘗試所有可能的密碼到一定長度、檢查通用密碼列表、嘗試組合或各種其他方法來破解密碼。如果您想緩解這種情況,您需要使用具有良好熵的密碼。您可以使用dicewareEFF 也有一個不錯的 diceware頁面)或Bip39或其他一些生成具有良好熵的密碼的系統來生成一個。

scrypt 在社區中被認為是一種安全的(類似於 sha256)密碼嗎?

SHA256 不是密碼,它是一個雜湊函式。您也可以將 SHA256 用於 KDF,但不建議這樣做。KDF 就是為這些目的而設計的。對於散列函式,我們考慮原像、次級原像和抗碰撞性。對於 KDF 函式,碰撞阻力或碰撞攻擊不相關。

除了第一項之外,沒有對 scrypt 的攻擊。

  1. 它的抗碰撞性如何?

衝突與密碼雜湊無關,需要原圖

  1. 它是否容易被量子計算攻擊破壞?

幾乎沒有,因為 q 位的數量將遠高於 AES。主要原因將是大記憶體。如果曾經建成,它將使用 Grover 的算法。

scrypt CLI 程序。

簡而言之,scrypt CLI 程序使用 AES256- CTR進行加密,使用HMAC _SHA256 進行完整性和身份驗證。小細節;

  • 密鑰大小為 128 位的 AES 即使在近 22 年後仍能抵抗攻擊,並且實際上仍然安全$$ 1 $$ $$ 2 $$但容易受到多目標攻擊。從程式碼中我們可以看出,它們使用了一個 32 字節的密鑰,即 AES256。這對格羅弗的量子搜尋來說甚至是安全的$$ 3 $$.
  • CTR 模式需要一個隨機數(使用一次的數字),並且不應重複。一旦重複使用,它將容易受到兩次墊的影響。
  • HMAC 是這裡使用 SHA256 發起的基於雜湊的消息驗證碼。Bellare, Mihir(2006 年 6 月)證明了它的安全性。NMAC 和 HMAC 的新證明:假設壓縮函式為 PRF 下的無碰撞安全性的安全性。

正如 kelalaka 已經解釋的那樣,Scrypt 是一個基於密碼的密鑰派生函式,用於從密碼中派生密鑰的函式。對於這個案例,與簡單散列函式(例如 SHA-256)或密碼(例如 AES)不同的安全要求適用。防碰撞和前像攻擊實際上是無關緊要的。由於所有現代密碼散列方案都按順序執行數千個散列函式,因此該函式不太可能可逆或兩個密碼產生相同的散列值。

另一方面,攻擊者測試密碼的速度始終很重要。Scrypt 的開發目標是防止數百萬定制硬體(尤其是 ASIC)的並行攻擊——或者更準確地說:極大地增加它們的成本。該方案通過記憶體硬度來實現這一點:執行需要記憶體中的大向量——而 ASIC 和 GPU 的記憶體非常昂貴。

但是,這種情況會產生影響 Scrypt 的其他攻擊選項。

  1. 記憶體定時攻擊:如密碼雜湊方案Catena的介紹所示,可以使用間諜程序對 Scrypt 執行記憶體定時攻擊。Scrypt 對這種攻擊的脆弱性是不可否認的,但這種攻擊有許多先決條件(包括執行間諜程序),並且在實踐中可能還沒有影響。
  2. 時間-記憶體權衡:如果可以用更多操作而不是記憶體中的向量來執行函式,那麼該函式畢竟可以在自定義硬體上執行。原則上,這可以通過 Scrypt 實現,但代價是執行時間要長得多。Anthony Ferrara 能夠在他的部落格中表明,在某些案例中,這種時間-記憶體權衡仍然是有益的(某些 Scrypt 參數和作為定制硬體的 GPU),但整體 Scrypt 在這方面被認為比 Argon2i 或 Catena 更具彈性, 例如。

到目前為止指出的其他弱點,例如在執行期間保留在記憶體中的密碼和垃圾收集器攻擊(兩者都在關於 Catena 實現的論文中)的相關性很小。

總的來說,我認為 Scrypt 並不理想,但仍然安全。

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