Hash
關於 Veracrypt 雜湊函式的一些問題
Veracrypt 自問世以來一直是我最喜歡的加密工具。但是仍然有一些關於我不明白的工具的事情。
- 為什麼有可能使用 sha256或sha512 。這一點對我來說毫無意義。據我所知, Veracrypt KDF 的輸出大小將始終具有相同的長度….那麼為什麼要使用更短或更長的雜湊值呢?它有什麼優點嗎?
- 為什麼 Veracrypt 使用如此奇怪的雜湊值?sha512、Whirlpool、Streebog 等… Whirlpool(據我所知)甚至不是正式的 KDF。所有這些散列都具有相當的抗衝突性,但沒有一個適合作為加密強散列函式。為什麼不是 Argon2 , scrypt , bcrypt ,..?
- 為什麼 Veracrypt GPU 具有抗性?用 GPU 攻擊 VC 雜湊是很慢的。為什麼 ?我沒有看到任何 GPU 攻擊對策。所有雜湊都在 GPU 中很好地實現。他們通過 PIM (我認為)使用相同的算法重新散列最後一個雜湊的輸出。然後他們在某個時候通過 PBKDF2。但即使是 PBKDF2 也相當 GPU 友好。
- 這些散列函式也用於密鑰派生函式。在抗碰撞等方面,兩者對於 KDF 的安全性大致相同,但 SHA512 提供了更高的安全性作為自定義硬體攻擊的對策,因為記憶體要求高於 SHA256 和自定義硬體來破解 FPGA 等密碼更貴。所以使用 SHA512 有一個小優勢,即使輸出在最後被截斷。
- 雖然我無法解釋 VeraCrypt 對雜湊算法的選擇,但提供各種功能作為針對使用 ASIC 的自定義硬體攻擊的對策並不是一個壞主意,因為必須為每種算法生產這些晶片。這也可能是使用不同 SHA 變體的原因。我同意你的觀點,Argon2、scrypt、bcrypt 會比 PBKDF2 更好,即使在高迭代時,它仍然容易受到自定義硬體攻擊。但是 VeraCrypt 採用了 TrueCrypt 的糟糕設計,其中所有可能的密鑰派生組合都在試錯過程中進行了測試(參見VeraCrypt 加密方案的第 3 章)。這限制了所有密鑰派生函式的時間量(請參閱Bill Cox 的回應)。因此,如果它依次測試 PBKDF2、Argon2 和 scrypt,延遲會急劇增加。
- 我不知道 VeraCrypt 是否或為什麼抗 GPU。hashcat支持 GPU 來破解 VeraCrypt 卷,但我對性能一無所知。