ハッシュ/暗号

PBKDF2 Hash + Verify

パスワードからPBKDF2(RFC 8018、HMAC-SHA1/256/384/512)で鍵を導出。反復回数は調整可能。


                    

PBKDF2 (RFC 8018) applies HMAC to a password and salt repeatedly to deliberately slow down computation — it's the oldest of the standardized algorithms for password hashing and encryption key derivation.

How to use it

Common uses

Things to keep in mind

Unlike bcrypt and Argon2, PBKDF2 isn't memory-hard — it only requires CPU time, so it's less resistant to attacks on GPUs with many parallel compute units.

The recommended iteration count rises over time in NIST and OWASP guidance as hardware gets faster — check against current recommendations periodically.

このツールに関する記事: PBKDF2:最も古い鍵ストレッチング標準

よくある質問

パスワードハッシュにおいてPBKDF2はbcryptやArgon2とどう違いますか?

PBKDF2はHMACハッシュ関数を繰り返し適用してブルートフォースを遅くしますが、bcryptやArgon2と異なりメモリハードではないため、GPUでの解読が比較的安価です。今なお広く使われFIPS承認されていますが、新規システムには一般的にArgon2が好まれます。

反復回数は何を制御し、どのくらい高くすべきですか?

反復回数は基礎となるハッシュを何回適用するかを設定し、速度とブルートフォース耐性を直接トレードオフします。現在の指針ではSHA-256で数十万回の反復が推奨され、ハードウェアが高速化するにつれて時間とともに引き上げられます。

PBKDF2にソルトが必要なのはなぜですか?

ソルトは同一のパスワードが異なる出力を生成することを保証し、攻撃者が事前計算されたレインボーテーブルを使うことを防ぎ、各ハッシュを個別に攻撃せざるを得なくします。

PBKDF2が使う基礎ハッシュ関数の種類は重要ですか?

はい。古い実装ではデフォルトでHMAC-SHA1が使われることがよくありました——HMACの構造の中ではこれは致命的な脆弱性ではありませんが、現代の指針は速度をほとんど損なうことなくより大きな安全マージンを得るために、明確にHMAC-SHA256以上を推奨しています。

パスワード保存以外にPBKDF2はどこで使われていますか?

PBKDF2はパスワードから暗号化鍵を導出するために広く使われています——例えば、Wi-FiのWPA2/WPA3や、多くの暗号化ファイルコンテナ形式などです。

記事: ハッシュ/暗号

Hash Generator:MD5、SHA-1、SHA-256はどう違うのか

MD5が今もファイルの整合性検証に使われるが、パスワードには使われない理由。

Checksum Verifier:ファイルが壊れていないか確認する方法

一致するチェックサムがファイルの整合性を確認する一方、誰が作成したかは確認しない理由。

HMAC:鍵付きハッシュが通常のハッシュとどう違うか

通常のSHA-256がメッセージの改ざんから保護しない理由と、HMACがそれを可能にする理由。

Bcrypt:パスワードが速くではなく遅くハッシュ化される理由

速いSHA-256がパスワードに向かない理由と、遅いbcryptが適切な選択である理由。

UUID:ほとんど重複しない識別子はどう生成されるか

UUID v4が数百万台のマシンで独立して、衝突リスクなしに生成できる理由。

パスワード生成ツール:パスワードを本当に強くするものは何か

辞書の単語からなる長いパスワードが、記号や数字を含む短いパスワードより強い理由。

AES:共通鍵暗号の仕組み

AESで同じ鍵がデータの暗号化と復号の両方に使われる理由と、それが公開鍵暗号とどう違うか。

Argon2:このアルゴリズムがパスワードハッシュコンペティションで優勝した理由

Argon2が古いパスワードハッシュ化アルゴリズムよりGPUを使った攻撃に対してどう優れた防御を行うか。

Scrypt:このアルゴリズムがなぜこれほど多くのメモリを必要とするか

scryptがASICデバイスでのクラッキングを困難にするために意図的に大量のメモリを要求する理由。

TOTP:認証アプリのワンタイムコードはどう機能するか

Google Authenticatorのコードがインターネットなしで動作し、時刻だけでサーバーと同期する理由。

X.509:SSL証明書の中身は何か

緑色の錠前を表示する前に、ブラウザがサイトの証明書で正確に何をチェックしているか。

PGP:公開鍵と秘密鍵による暗号化の仕組み

PGPの公開鍵は自由に共有できるが、秘密鍵は決して共有してはいけない理由。