そもそも導出関数が存在する理由
人間の認証情報は、ランダムな暗号鍵よりもはるかに小さく、予測しやすい空間から生まれます。鍵導出関数は、入力したものを固有のソルトと意図的な計算コストと組み合わせることで、その隔たりを橋渡しします。
そのコストこそが目的です。それは1回ごとの推測を高価にするので、可能性の高い認証情報の一覧を試す攻撃者は、毎秒何百万も試すのではなく、試行ごとにその代償を払います。
各関数が実際にすること
PBKDF2 は広く標準化され、よく理解されており、ほぼどこでも利用できます。主に反復した計算——ハッシュ関数に適用される高い反復回数——を通じてコストを上げます。
Argon2id は、計算と並んで調整可能なメモリのコストを加えます。推測1回ごとにまとまった量のメモリを要求することで、専用の並列ハードウェアの優位を減らします。大規模な推測は、そこからその採算を得ています。
反復回数がアルゴリズムをまたいで比較できない理由
PBKDF2 の反復回数を Argon2id の時間パラメータと比較したくなりますが、それらは異なるものを測っており、数値は互換ではありません。
重要なのは、現実的な攻撃者のハードウェアで推測1回ごとに課される総コストであり、それはメモリ、並列性、時間のパラメータをあわせて決まります。公開されたパラメータの組は評価できますが、文脈なしに引用された単一の数値は評価できません。
アルゴリズムと同じくらい重要な部分
- 認証情報ごとの固有のランダムなソルト。事前計算では何も得られないように。
- 公開されたパラメータと、それらが引き上げられたときの述べられた移行経路。
- バージョン管理。既存の利用者が取り残されるのではなくアップグレードされるように。
- 導出された鍵がセッションの間どこに保管されるか。これはまったく別の制御です。
- 認証情報そのものの強さ。どの導出関数も作り出せないもの。
主張を読む
- 異なるアルゴリズムをまたいで反復回数を、あたかも同等であるかのように比較すること。
- 導出関数が関わっているからと、短い人間の PIN を強いと呼ぶこと。
- 現代的なアルゴリズムが、弱い、または使い回した認証情報を補うと思い込むこと。
実際的なまとめ
妥当なメモリと時間のパラメータを持つ Argon2id は、新しい設計にとってより良い既定であり、正しく設定された高い反復回数の PBKDF2 も依然として妥当です。
どちらの選択も、4桁の認証情報によって損なわれます。導出関数は推測1回ごとのコストを上げますが、推測がどれだけ少ないかは減らしません。
Maya はまず、機微でないデータでテストします。「公開されたパラメータと移行の方策を探す」。次に Maya は2つ目の確認手順に従います。「固有のランダムなソルトを確認する」。この架空のシナリオは判断の流れを示すものであり、製品テストの報告ではありません。
- 異なるアルゴリズムをまたいで反復回数を直接比較すること
- KDF が存在するからと、どんな人間の PIN でも強いと呼ぶこと
NullVault は何を使いますか?
Android の設計は、メモリハードな Argon2id の鍵導出を規定しています。
「保管庫のパスワードにおける PBKDF2 と Argon2id の比較」に頼る前に何を確認すべきですか?
「保管庫のパスワードにおける PBKDF2 と Argon2id の比較」については、完全にロックした後に保護された項目を検証し、残っているすべてのコピーを特定し、代替不可能な原本を削除する前に復旧を確認してください。正確な制御は、このガイドで説明する端末、オペレーティングシステムのバージョン、ストレージのモデルによります。
「保管庫のパスワードにおける PBKDF2 と Argon2id の比較」は他のすべてのコピーを取り除きますか?
いいえ。「保管庫のパスワードにおける PBKDF2 と Argon2id の比較」を検討する際は、エクスポート、クラウドライブラリ、メッセージ、ダウンロード、受信者、バックアップ、削除済み項目のフォルダを、それぞれ独自の見直しを要する別個のコピーやストレージの境界として扱ってください。