Balloon 散列紙是否會棄用 Argon2?
最近的Balloon 散列論文和對 Argon2 的攻擊是否有效地否定了密碼散列競賽的結果?一方面,似乎只實現了常數因子的改進,這在密碼學中很少是關鍵的。另一方面,密碼散列的全部目的是增加暴力搜尋的常數因子。
在撰寫本文時,我正在建構一個新的身份驗證服務;鑑於此結果,是否應該在新開發中使用 Argon2 或 Balloon 散列?(我喜歡氣球散列的簡單性,它帶有一個證明,但它沒有被“選為標準”)。
最近的 Balloon 散列論文和對 Argon2 的攻擊是否有效地否定了密碼散列競賽的結果?
不
,PHC 的主要成果不是一個新的花哨的密碼散列函式(即 Argon2),而是密碼散列研究的巨大進步。我們了解密碼雜湊以及如何在比賽之後比之前做得更好。這是最重要和主要的結果。
這方面的例子包括時間-記憶體權衡的新安全性降低 ( Catena ) 和工作負載委派 ( Makwa )等全新想法。
現在進行實際攻擊。似乎該攻擊將一次和兩次 Argon2i(從 v1.2.1 開始)的時間記憶積減少了 5 倍(或更少)。雖然這肯定不好,但它也不會完全破壞 Argon2i。所以你仍然可以使用它,但必須記住,它可能需要權衡取捨。
現在進行緩解:
- 在這篇論文發布之後,Argon2 規范進行了更新,將第 5.2 段添加到安全分析中,他們記錄了攻擊的 TL;DR 以及他們如何在 1.3 版中緩解它。使用 Argon2 v1.3,您只需要避免單遍 Argon2i,使用兩遍或更多時,攻擊不再適用。
- Argon2i 最初的想法是允許數據獨立的記憶體硬密碼散列,特別是為了避免像記憶體定時攻擊這樣的側通道攻擊。但是,如果您的威脅模型不包括在您進行密碼散列時坐在您的機器上的攻擊者,您應該使用 Argon2d,它使用數據相關操作(類似於 scrypt)並且不受這些最近攻擊的影響。
- 最後的緩解措施當然是使用其他密碼散列函式。來自 PHC的特殊認可(即Lyra2、Catena、yescrypt和 Makwa)或像 scrypt 和 bcrypt 這樣的老牌。當然你應該注意到,雖然舊的可能已經看到了更多的審查,但它們有各自的弱點(例如 bcrypt 對 FPGA 沒有多大幫助,scrypt 也有一些弱點,不能很好地防止側通道攻擊要麼)。
在對該問題的評論中還提到了另外兩篇論文。Alwen 和 Blocki的“Efficiently Computing Data-Independent Memory-Hard Functions” ,它為各種密碼散列結構(包括 Argon2i、Catena 和 Balloon Hashing)提供了時間記憶積的漸近界限。Alwen 和 Blocki 所
提到的另一篇論文“Towards Practical Attacks on Argon2i and Balloon Hashing”對上一篇論文的結果進行了改進,重點關注新舊 Argon2i 版本以及 Balloon Hashing,再次報告成功(具體實例化)攻擊在這兩個方案上,並註意到需要 10 次通行證才能重新獲得(完全)Argon2i 的安全性。
TL;DR:如果您不介意旁道攻擊,請使用 Argon2d,如果您介意,請使用高通計數(例如 10 次)Argon2i。