Encryption

何時使用 Argon2i、Argon2d 和 Argon2id?

  • April 11, 2022

我已經閱讀了該手冊以及有關此主題的多篇文章/ StackExchange 文章,但仍然無法確定 Argon2 的哪種實現最適合我的案例。

我想在非共享環境中安全地加密數據庫中的密碼。在第一次通過文件(雙關語)之後,在這種情況下聽起來像是推薦使用 Argon2i,但我覺得有人更有可能直接訪問數據庫並嘗試執行基於 GPU/ASIC/FPGA 的攻擊比獲得網路訪問權限並嘗試側通道攻擊的人解密數據。

如果可能的話,我也想防止側通道攻擊,所以聽起來 Argon2id 是要走的路,但我的理解是實現的 i 部分只通過一次。一次通過是否真的提供了很多針對側通道攻擊的保護(我讀到需要 3+ 甚至 10+ 次才能真正保護 Argon2i)並且有沒有辦法在 d- 之前增加 i 部分的通過次數?部分開始?

如果 Argon2id 是我的案例的實現,但我不能增加 i-portion 的傳遞次數,那麼通過首先實現 Argon2i 算法然後執行來有效地創建我自己的“Argon2id”是否有意義?之後通過Argon2d算法輸出?

如果您不確定,請始終選擇 Argon2id。僅當您需要以犧牲側通道風險為代價的最大安全性時才選擇 Argon2d,並且僅當側通道攻擊是主要威脅時才選擇 Argon2i。

通過次數只會增加對時間記憶權衡攻擊 (TMTO) 的抵抗力。您可能還記得 Argon2d 更容易受到 TMTO 攻擊,因此需要更多的通行證才能獲得同等級別的安全性。Argon2id 使用 Argon2i pass 來抵抗側通道攻擊,隨後的 Argon2d pass 來彌補第一次 pass 缺乏的 TMTO 抵抗。

如果攻擊者執行完美的側通道攻擊並破壞 Argon2d 部分,那麼他們仍然需要執行非常廣泛的 TMTO 攻擊來破壞 Argon2i 通道。將此與純 Argon2d 進行比較,成功的側通道攻擊完全抵消了它的記憶硬度。換句話說,針對 Argon2id 的側通道攻擊會將其安全性降低到一次性 Argon2i。

請注意,針對 Argon2i 的一些更嚴重的 TMTO 攻擊實際上已得到修復。

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