私はデフォルトのモードとしてargon2iを使用するためのこの正当化に出くわしたとき、npmの node-argon2 パッケージの wiki を見ていました:
ハッシュ関数のバリアント。 Argon2には、目的の異なるいくつかのバリアントがあります。
argon2d is faster and highly resistant against GPU attacks, which is useful for cryptocurrency argon2i is slower and resistant against tradeoff attacks, which is preferred for password hashing and key derivation argon2id is a hybrid combination of the above, being resistant against GPU and tradeoff attacks
This security.stackexchangeの投稿は、サイドチャネル攻撃はサーバー(ここではアプリケーションだと思います)では大きな問題ではなく、argon2idまたはargon2dがより良い選択であることを示唆しています。
さらに、argon2iはパスワードのハッシュ化に適しているという主張は、反復の数を任意のモードで調整できるため、その速度は疑わしいと思われるためです。
「argon2iの方が遅く、トレードオフ攻撃に対して耐性があり、パスワードのハッシュと鍵の導出に適している」という文に真実はありますか?
それはすべてあなたが本当に望んでいるものに依存します。
Argon2dはデータ依存メモリアクセス(トレードオフ攻撃を阻止するため)を使用したより高速なバリアントで、に適していますバックエンドサーバーや暗号通貨など、サイドチャネル攻撃が脅威ではないアプリケーション。それは、メモリ上を1回通過します。
Argon2iはより低速であり、データに依存しないメモリアクセスを使用して、パスワードハッシュおよびパスワードベースのキー導出の使用に適しています。メモリ上を3回通過します。
データに依存するメモリアクセスのため、A2Dはキャッシュタイミング攻撃に対して安全ではありませんが、A2Iは安全ではありません。
デフォルトでは、Argon2dはメモリを1回通過するためメモリを上書きしないため、GCA(ガベージコレクター攻撃)に対して脆弱です。対照的に、Argon2iはメモリ上で3回のパスを実行し、2回上書きするため、攻撃者がすべての計算後メモリに完全にアクセスする場合でも、パスワード候補をテストするためにメモリ上で2回のパスを実行する必要があるため、GCAの種類はすべて阻止されます。
上記と詳細 here を読むことができます。
パスワードを確認する場合は、最初の選択肢は常にArgon2idです。
Argon2idを使用できないという非常にありそうもないイベントでは、Argon2iとArgon2dの間のトレードオフが問題になります。
Argon2iは、サイドチャネル攻撃を防ぐことを目的としています。つまり、サーバー上に権限のない悪意のあるプロセスがある場合、SpectreなどのCPUの脆弱性を利用して、パスワードをリバースエンジニアリングするのに十分な詳細を引き出す可能性があります。メモリレイアウトを少しランダム化することにより、悪意のあるプロセスが傍受できる可能性がはるかに低くなります。
これはサーバーでは非常に重要です。特にクラウド環境で実行されている仮想サーバー。
ただし、Argon2dは、GPU、FPGA、ASICなどのメモリが制約された環境での並列処理の最適化を防ぐことを目的としています。ここでのトレードオフは、汎用CPUコアが多くのメモリにアクセスする傾向があり、複数のメモリバンクを同時にマップできることです。 GPUにはいくつかのプログラム可能なレーン(厳密にはCPUコアではない。許可される分岐は少ない)があり、特定の時間にアクセスできるメモリがはるかに少なくなります。メモリバンクのマッピングの切り替えには時間がかかり、GPUの使用はあまり望ましくありません。 Argon2dによってハッシュされたパスワードは、オフラインのブルートフォース攻撃に対してはるかに耐性があります。これは、攻撃者が汎用CPUよりも高速に実行するために利用できるショートカットがないように設計されているためです。
サーバーに物理的なセキュリティがあることを知っていて(それに触れることができるのはあなただけ)、そのサーバー上のすべてのソフトウェアを監査した場合(最新のOSでは、ほとんどのベアボーンシステムであっても膨大な量のソフトウェアがあるため、不可能です) )、Argon2iは無視できます。
ユーザーデータベースがneverリークされることがわかっている場合、またはnobodyが目的の出力を生成する入力がわかっている暗号通貨を使用している場合は、Argon2dを無視できます。証明の証明が仕事の証明を意味するとまだ考えている暗号通貨の設計者であれば、Argon2iのメモリの硬さを求めて、資金を投入するだけに役立つGPU/FPGA/ASICアームレースのインセンティブをなくすことができます。すでに金持ちの人のポケット。 (そしてあなたの電気会社のポケット...)
サイト所有者の99.999%のようであれば、Argon2idを使用してください。