0Pricing
Cryptology Academy · レッスン

Argon2:メモリハードなパスワードハッシュ

Argon2i、Argon2d、Argon2idと、メモリハード性が重要な理由を学びます。

「Argon2:メモリハードなパスワードハッシュ」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

Argon2は2015年にPassword Hashing Competition(PHC)で優勝し、OWASPが最も推奨する方式です。メモリハードな設計により、bcryptでは防げないGPU攻撃やASIC攻撃を阻止します。

メモリハードが重要な理由

GPUには数千のコアがありますが、コアごとのRAMは限られています(約1KB)。Argon2は1ハッシュにつき64MB以上のRAMを必要とします。攻撃者が1,000個のハッシュを並列処理するには64GBのRAMが必要になり、高価で、利用できる環境も限られます。

Argon2のバリアント

Argon2d:データ依存のアクセス方式で、最も高速ですが、サイドチャネルのタイミング攻撃に対して脆弱です。 Argon2i:データ非依存のアクセス方式で、タイミング攻撃に安全です。 Argon2id:ハイブリッド方式で、ほとんどのアプリケーションに推奨されます。

Argon2のパラメーター

m:キロバイト単位のメモリ(OWASP:最低19,456 KB = 19 MB、推奨64 MB) t:時間コスト/反復回数(推奨3) p:並列度/スレッド数(推奨4) salt:ランダムな16バイト output:32バイト

PythonでのArgon2id

from argon2 import PasswordHasher ph = PasswordHasher( memory_cost=65536, # 64 MB time_cost=3, parallelism=4 ) hash = ph.hash('my_password') # Verify: ph.verify(hash, 'my_password') # True

Argon2ハッシュの形式

$argon2id$v=19$m=65536,t=3,p=4$ bmFuZG9tc2FsdHJhbmRvbQ$ KaE5Jjy7E8...hashed... すべてのパラメーターがハッシュ文字列に保存されます。検証は自己完結しているため、別途パラメーターを保存する必要はありません。

OWASPによる2024年のArgon2id推奨値

最低値:m=19456 KB(19 MB)、t=2、p=1 推奨値:m=65536 KB(64 MB)、t=3、p=4 高セキュリティ:m=262144 KB(256 MB)、t=4、p=8 サーバーで利用できるメモリ量に応じて調整してください。

Argon2とbcrypt、PBKDF2の比較

Argon2id:メモリハードでASIC耐性があり、新しいシステムに推奨されます。 bcrypt:広くサポートされていますが、メモリハードではなく、レガシーシステムとの互換性に優れています。 PBKDF2:FIPS準拠で、メモリハードではありません。規制対象の環境で使用します。

ハッシュのアップグレード戦略

bcryptからArgon2に移行する場合: 1. 新しいハッシュを保存するためのカラムを追加します 2. 次回のログイン時に、従来のbcryptで検証し、Argon2で再ハッシュ化して新しいハッシュを保存します 3. まだアップグレードされていないユーザーには、Xか月後にパスワードのリセットを強制します

実際のフレームワークでのArgon2

Django:PASSWORD_HASHERS=['django.contrib.auth.hashers.Argon2PasswordHasher']を設定します Node.js:argon2パッケージを使用します(argon2-ffiではありません) PHP 7.2以降:password_hash()の組み込み定数PASSWORD_ARGON2IDを使用します

Pepper:サーバー側の秘密情報

Pepperは、ハッシュ化の前にパスワードと混ぜ合わせるサーバー側の秘密情報です:hash(password + pepper)。DBが漏えいしても、攻撃者はPepperも必要になります。Pepperをローテーションすると、すべてのハッシュが無効になります。

クイックチェック

Argon2は、なぜbcryptよりもGPU攻撃に強いのですか?

まとめ

現在、パスワードハッシュ化にはArgon2idが最適です。次は3つのアルゴリズムを比較し、状況に合ったものを選ぶ方法を学びます。

よくある質問

「Argon2:メモリハードなパスワードハッシュ」レッスンは無料ですか?

はい。「Argon2:メモリハードなパスワードハッシュ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「Argon2:メモリハードなパスワードハッシュ」で何を学びますか?

Argon2i、Argon2d、Argon2idと、メモリハード性が重要な理由を学びます。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Argon2:メモリハードなパスワードハッシュ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. パスワードに単純なSHA-256が使えない理由
  2. bcrypt:アルゴリズムとコスト係数
  3. Argon2:メモリハードなパスワードハッシュ
  4. PBKDF2と適切なアルゴリズムの選び方
← Cryptology Academyに戻る