ガイドSC

パスワード管理・ハッシュ化と多要素認証(MFA/FIDO2)完全攻略|ソルト・ストレッチング徹底解説

公開: 2026-08-25更新: 2026-08-25
情報処理安全確保支援士(SC)・応用情報(AP)・基本情報(FE)で頻出の「認証技術」を徹底解説。ソルト・ストレッチング・レインボーテーブル対策、認証の3要素(知識・所持・生体)、FIDO2/WebAuthn・Passkeysの公開鍵認証フローまで網羅。

ユーザー認証はすべての情報システムの入り口であり、IPA試験では「パスワードの安全な保存(ソルト・ストレッチング)」「認証の3要素と多要素認証(MFA)」「FIDO2 / パスワードレス認証」が極めて高い頻度で出題されます。

データベース流出時のパスワードクラック手口から、最新のFIDO2/WebAuthn規格までを徹底解説します。

1. パスワードの安全な保存:ソルトとストレッチング

パスワードを平文(プレーンテキスト)で保存することは厳禁であり、単純な一方向ハッシュ化(SHA-256等)だけでも「レインボーテーブル攻撃(事前計算されたハッシュ対照表)」や「総当たり攻撃」により短時間で元のパスワードが特定されてしまいます。

技術要素

仕組みと動作

防御効果・出題ポイント

ソルト (Salt)

ユーザー毎にランダムな文字列(32バイト等)を生成し、パスワードと連結してからハッシュ化する。

【レインボーテーブルの無力化】 同じパスワードであってもハッシュ値が全く異なる値になり、一括逆引き攻撃を防ぐ。

ストレッチング (Stretching)

ハッシュ化処理を数千回〜数十万回(またはメモリ高負荷関数)連続して繰り返す。

【総当たり攻撃の計算コスト増大】 GPU等による高速な総当たり試行を大幅に遅延させ、解読にかかる現実的時間・費用を引き上げる。

推奨アルゴリズム

Argon2(現在最強)、PBKDF2、bcrypt、scrypt などの専用パスワードハッシュ関数を使用する。

単なる高速ハッシュ関数(SHA-256など)はGPUで1秒間に何億回も計算できるため不適。

2. 認証の3要素と多要素認証(MFA)

認証の3要素のうち、異なる2つ以上の要素を組み合わせる認証方式を「多要素認証(MFA:Multi-Factor Authentication)」と呼びます(※同一要素の2段階認証はMFAではない点に注意)。

  • ① 知識要素(Something you know): パスワード、PINコード、秘密の質問など。本人だけが知っている情報。
  • ② 所持要素(Something you have): スマートフォンのワンタイムパスワード(TOTP)、ハードウェアトークン、SMS、ICカードなど。本人だけが持っているもの。
  • ③ 生体要素(Something you are / inherit): 指紋、顔、虹彩、静脈パターンなど。本人の身体的・行動的特徴。

3. FIDO2 / WebAuthn とパスワードレス認証

FIDO2(WebAuthn + CTAP2)は、「パスワードをサーバに一切送信・保持しない」公開鍵暗号ベースの認証標準です。

  1. 端末側での本人確認: 利用者はPCやスマホの生体認証(Touch ID/Face ID)やセキュリティキーでローカル認証を解除。
  2. 秘密鍵による署名: 端末内の安全な領域(TPM/Secure Enclave)に保管された秘密鍵で、サーバから送られたチャレンジに署名。
  3. サーバ側での検証: サーバは事前に登録された公開鍵で署名を検証してログインを許可。サーバ側にパスワードが存在しないため、漏洩リスクがゼロになる。

4. 午後記述式試験(SC・AP)で使える得点キーワード・記述テンプレート

【定番記述フレーズ①(ソルトの目的)】 「同一パスワードでも異なるハッシュ値にし、レインボーテーブルによる解読を防ぐ。」(39字)

【定番記述フレーズ②(ストレッチングの目的)】 「ハッシュ計算の回数を増やし、総当たり攻撃にかかる試行時間を大幅に遅延させる。」(39字)

【定番記述フレーズ③(多要素認証の定義)】 「知識、所持、生体の3要素のうち、異なる2つ以上の要素を組み合わせて認証する。」(39字)

【定番記述フレーズ④(FIDO認証の安全性)】 「認証情報をサーバへ送信せず端末内で署名するため、フィッシングや通信傍受に耐性がある。」(43字)

この記事に関連する教科書用語

この記事に関連する過去問演習