0Pricing
Cryptology Academy · レッスン

PBKDF2と適切なアルゴリズムの選び方

PBKDF2をbcrypt/Argon2と比較し、アプリに最適なものを選択します。

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

ようこそ

この最後の初心者向けレッスンでは、PBKDF2を学び、bcryptやArgon2と比較し、適切なパスワードハッシュ化アルゴリズムを選択するための判断基準を作成します。

PBKDF2の概要

PBKDF2(Password-Based Key Derivation Function 2)は、RFC 2898(2000年)で公開されました。疑似乱数関数(通常はHMAC-SHA256)を、パスワードとソルトに対して反復的に適用します。

PBKDF2の式

PBKDF2(PRF, password, salt, iterations, keylen) 例: key = PBKDF2-HMAC-SHA256(password, salt, 600000, 32) OWASPは、2023年時点でSHA-256を使用する場合に600,000回の反復を推奨しています。

PythonでのPBKDF2

import hashlib, os salt = os.urandom(16) key = hashlib.pbkdf2_hmac( 'sha256', password.encode(), salt, 600000, dklen=32 ) # Or using cryptography library: from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

PBKDF2の長所

FIPS 140-2/3に準拠しています。Python、Java、.NETの標準ライブラリに組み込まれています。企業や政府の環境で広く導入されています。正しく実装しやすい点も利点です。

PBKDF2の短所

メモリハードではありません。GPUに適しており、毎秒数十億回のSHA-256反復が可能です。600,000回の反復でも、GPUは毎秒約100万個のパスワードを処理できます。bcrypt、特にArgon2は、総当たり攻撃が大幅に困難です。

アルゴリズム比較表

アルゴリズム | メモリハード | FIPS | 速度(GPU) | 推奨 bcrypt | いいえ | いいえ | 50K/s | 許容可能 PBKDF2 | いいえ | はい | 1M/s | 規制対象環境 Argon2id | はい | いいえ | 100/s | 最適な選択

選択の判断基準

Argon2id:コンプライアンス上の制約がない新しいアプリケーションで使用します。 bcrypt:Argon2を利用できない場合や、レガシーシステムで使用します。 PBKDF2-SHA256:FIPSや政府のコンプライアンスへの準拠が必要な場合に使用します。 決して使用しないもの:MD5、SHA-1、反復処理なしのSHA-256、ソルトなしの方式。

コンプライアンスに関する注意

PCI-DSSはアルゴリズムを指定していませんが、「強力な」ハッシュ化を要求しています。bcryptとArgon2はこの要件を満たします。NIST SP 800-132はPBKDF2を承認しています。一部の厳格なFedRAMPシステムでは、FIPS承認済みのPRFを使うPBKDF2が義務付けられています。

反復回数の変化

OWASPにおけるPBKDF2-SHA256の反復回数:2010年:1,000回、2016年:100,000回、2023年:600,000回。ハードウェアは高速化するため、2年ごとに見直して増やしてください。bcryptのコスト:2010年:10、2023年:12、2025年の目標:13。

安全なパスワードリセットの流れ

1. 暗号学的に安全なランダムトークンを生成します:secrets.token_urlsafe(32) 2. SHA-256でハッシュ化します(bcryptではありません。保存のためだけに使用します) 3. ハッシュを保存し、トークンをメールで送信します 4. リセット時に、送信されたトークンをハッシュ化して比較し、使用直後に失効させます

クイックチェック

GPU攻撃に対しては弱いにもかかわらず、Argon2idよりPBKDF2が優先されるのはどのような環境ですか?

まとめ

初心者向け暗号学トラックを修了しました。ハッシュ、共通鍵暗号と公開鍵暗号、署名、PKI、パスワードハッシュ化について理解できました。次は中級トピックとして、ブロック暗号モード、ストリーム暗号、鍵交換を学びます。

よくある質問

「PBKDF2と適切なアルゴリズムの選び方」レッスンは無料ですか?

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

「PBKDF2と適切なアルゴリズムの選び方」で何を学びますか?

PBKDF2をbcrypt/Argon2と比較し、アプリに最適なものを選択します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「PBKDF2と適切なアルゴリズムの選び方」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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