Key-Derivation

Argon2i 與 Argon2d?

  • December 14, 2017

我計劃在我的 Android 應用程序中使用 Argon2 來加密一些僅儲存在使用者手機上(在 SQLite DB 中)而不導出到其他任何地方的敏感資訊。從文件中我看到,與 2i 中的側通道攻擊相比,Argon2d 更能抵抗基於 GPU 的暴力攻擊。

這是否意味著在我的場景中,使用 2d 實現會更好?因為,在“通常”的情況下,顯然建議使用 2i。

最後,Argon2 是不是研究夠了,還是應該選擇 Android 原生支持的 PBKDF2 和 HMACSHA1。我可以在後者中合理地使用 20,000 次迭代。

基本上,我想延遲瀆職/保護使用者的數據不被暴力破解。我明白這也取決於使用者的密碼輸入。

TL;DR:你想在這裡使用 Argon2d。

儘管Argon2只是在最近才標準化,但它是密碼雜湊競賽(2013-2015)的結果,並且是對 Argon 的後期重新設計,它也從其他一些決賽入圍者那裡獲得了想法。從那以後,它受到了攻擊,導致該方案被調整以更好地應對它們,這就是為什麼我們將 Argon2 v1.3 作為最新版本,您可能需要注意大多數這些攻擊主要削弱了 Argon2i 和不是 Argon2d。

現在,在比賽結果出現時,如果您確保您的方案不受人們提出的各種側通道攻擊的影響(其中還包括更多“瘋狂”的東西,比如洩露的中間狀態)。因此,決定應該有兩個版本:Argon2i 和 Argon2d。一個提供最好的保護,同時盡力避免側通道攻擊(通過使用數據和密碼獨立的記憶體訪問模式),另一個放棄這些要求並全面優化此類攻擊(通過使用數據- 以及可能與密碼相關的記憶體訪問模式)。

**現在的歷史就夠了。**Argon2d 提供比 Argon2i 更好的保護,但代價是更容易受到側通道攻擊。現在你必須問自己:這些適用嗎?不,不是。您說您使用的是 Android,這並不完全以高平台安全性而聞名,因此如果您有一個攻擊者處於如此特權的位置來執行諸如記憶體定時攻擊或嘗試利用記憶體訪問模式的類似攻擊,您的使用者反正已經有更大的問題了。

這與 AES 的邏輯相似:存在基於記憶體的側通道攻擊,但這些攻擊從未在野外觀察到,可能是因為其他選項更容易、更可靠且同樣有效。

所以結論是:你要使用 Argon2d。

那麼 Argon2i 適合誰?需要在共享硬體上執行應用程序或定時攻擊是真正執行緒的人。例如,如果您在共享硬體上的公共雲中執行網路伺服器。然後你必須擔心還有誰在同一個 CPU 上。使用網路伺服器,還可以更輕鬆地測量反應時間並嘗試從中推斷資訊。

最後一個提示 Argon2d 是要走的路,事實上KeePass 開源密碼管理器之一)也決定使用 Argon2d

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