0Pricing
Cyber Security Academy · レッスン

パスワードハッシュ化:bcrypt、Argon2、PBKDF2

平文での保存が危険な理由と、ソルト付きハッシュがパスワードを保護する方法を学びます。

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

パスワードを平文で保存してはいけない理由

パスワードを平文で保存することは壊滅的です。1回のデータベース侵害で、すべてのアカウントが露出します。パスワードは保存前に一方向関数で処理する必要があります。そうすれば、データベースにアクセスされても元のパスワードは明らかになりません。

ハッシュ化とは

ハッシュ関数は、任意の長さの入力を固定長の出力に変換します。同じ入力からは常に同じ出力が生成されますが、ハッシュから元の入力を復元することはできません。例として、SHA-256、bcrypt、Argon2があります。

パスワードにSHA-256を使ってはいけない理由

SHA-256のような汎用ハッシュ関数は、高速になるように設計されています。攻撃者はGPU上で毎秒数十億回のSHA-256ハッシュを計算できるため、総当たり攻撃による解析が可能になります。

パスワードのハッシュ化には、低速で計算コストの高い関数が必要です。

ソルト付与

ソルトは、各パスワードをハッシュ化する前に追加するランダムな値です。同じパスワードを使う2人のユーザーでも異なるハッシュになるため、レインボーテーブル攻撃や一括解析攻撃を防止できます。ソルトはハッシュと一緒に保存します(秘密にする必要はありません)。

# Conceptual salt example
hash = bcrypt("password" + random_salt)

bcrypt

bcryptは、パスワードのハッシュ化専用に1999年に設計されました。ハッシュ化の速度を制御する、設定可能なコスト係数を備えています。ハードウェアの性能が向上したら、セキュリティを維持するためにコスト係数を大きくします。

現在はコスト係数12が一般的で、最新のCPUではハッシュ化に約250ミリ秒かかります。

PBKDF2

PBKDF2(Password-Based Key Derivation Function 2)は、ハッシュ関数(例: HMAC-SHA256)を多数回(反復回数)適用します。反復回数が多いほど処理が遅くなり、セキュリティが高まります。NISTが推奨しており、Wi-FiパスワードのWPA2でも使用されています。

Argon2

Argon2は、2015年にPassword Hashing Competitionで優勝しました。現在の標準的な方式です。次の項目を設定できます:

  • 時間コスト — 反復回数
  • メモリコスト — 必要なRAM容量(GPUによる高速化を制限します)
  • 並列度 — スレッド数

ほとんどのアプリケーションではArgon2idを使用します。

レインボーテーブル

レインボーテーブルは、ハッシュから平文を引くために事前計算された一覧です。ソルトがない場合、ハッシュを入手した攻撃者はテーブルから瞬時に検索できます。ソルトを付与するとハッシュごとに値が異なるため、レインボーテーブルは役に立たなくなります。

パスワード解析の手法

一般的なオフライン解析の手法:

  • 辞書攻撃 — 一般的なパスワードとそのバリエーションを試します
  • 総当たり攻撃 — すべての文字の組み合わせを試します
  • ルールベース攻撃 — 辞書の単語に変形ルールを適用します(年の追加、大文字化、リート文字など)
  • ツール: Hashcat、John the Ripper

適切なアルゴリズムの選択

新しいアプリケーションでの推奨順位:

  1. Argon2id — GPU/ASICによる解析への耐性が最も高い方式
  2. bcrypt — 広くサポートされ、実績があります
  3. PBKDF2 — NISTが承認しており、一部のコンプライアンス要件で必要です

パスワードには、MD5、SHA-1、ソルトなしのSHA-256を決して使用しないでください。

検証プロセス

ユーザーがログインするときは、次の処理を行います。

  1. ユーザーに保存されているハッシュとソルトを取得します
  2. 同じソルトとアルゴリズムを使って、送信されたパスワードをハッシュ化します
  3. 生成されたハッシュと保存済みのハッシュを比較します(定時間比較)
  4. 復号は決して行わず、比較のみ行います

クイックチェック:パスワードハッシュ化

現在のベストプラクティスとみなされ、Password Hashing Competitionで優勝したパスワードハッシュ化アルゴリズムはどれですか?

レッスンのまとめ

パスワードは平文ではなく、ハッシュとして保存する必要があります。SHA-256のような高速なアルゴリズムは適していません。低速なパスワードハッシュ関数であるArgon2id(推奨)、bcrypt、またはPBKDF2を使用してください。レインボーテーブル攻撃を防ぐため、パスワードごとに必ずランダムなソルトを使用してください。暗号方式を独自に実装せず、実績のあるライブラリを使用してください。

よくある質問

「パスワードハッシュ化:bcrypt、Argon2、PBKDF2」レッスンは無料ですか?

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

「パスワードハッシュ化:bcrypt、Argon2、PBKDF2」で何を学びますか?

平文での保存が危険な理由と、ソルト付きハッシュがパスワードを保護する方法を学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「パスワードハッシュ化:bcrypt、Argon2、PBKDF2」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. パスワードの強度とポリシー
  2. パスワードハッシュ化:bcrypt、Argon2、PBKDF2
  3. 多要素認証
  4. クレデンシャルスタッフィングとパスワードスプレー
← Cyber Security Academyに戻る