概要
多要素認証(MFA: Multi-Factor Authentication)は、異なる種別の認証要素を2つ以上組み合わせることで、パスワード単体より大幅に不正アクセスを防ぐ認証方式です。SC試験では「何が要素になるか」「TOTP の仕組み」「FIDO2 の特徴」が頻出です。
仕組みと動作原理
認証の3要素
| 要素種別 | 概念 | 具体例 |
|---|---|---|
| 知識要素(知っているもの) | Something you know | パスワード・PIN・秘密の質問 |
| 所持要素(持っているもの) | Something you have | ハードウェアトークン・スマートフォン・ICカード |
| 生体要素(本人であること) | Something you are | 指紋・顔・虹彩・静脈 |
MFA は異なる種別を組み合わせることが条件。パスワード+PINは両方「知識要素」なので MFA とは言えません。
TOTP(Time-based One-Time Password)
RFC 6238 で定義。スマートフォンアプリ(Google Authenticator 等)で広く使われます。
生成の仕組み:
1. サーバとクライアントで共有シークレット(TOTP シード)を事前共有
2. 現在の Unix 時刻を 30 秒単位でフロア除算した値を入力
3. HMAC-SHA1(共有シークレット, 時刻カウンタ)を計算
4. 結果から 6 桁の数値を切り出す
重要な性質:
- サーバに通信せず端末上で生成(オフライン利用可能)
- 30 秒ごとに変わるため盗んでも即無効化
- 時刻同期が必要(±1ステップ程度のずれは許容)
HOTP(HMAC-based OTP)
時刻の代わりにカウンタを使用。ハードウェアトークンに多い。ボタンを押すたびに次のOTPが生成されます。
FIDO2 と WebAuthn
FIDO2 は「パスワードレス認証」を実現する業界標準。主に以下の2要素で構成されます。
| コンポーネント | 役割 |
|---|---|
| WebAuthn(W3C 仕様) | ブラウザと認証器が通信するための Web API |
| CTAP2(FIDO Alliance 仕様) | 認証器(YubiKey 等)とデバイスをつなぐプロトコル |
認証の流れ:
登録フェーズ:
1. サーバ → ブラウザ:チャレンジ送信
2. 認証器(指紋センサ等)でユーザを認証
3. 認証器 → サーバ:公開鍵と認証器IDを登録
認証フェーズ:
1. サーバ → ブラウザ:チャレンジ送信
2. 認証器がチャレンジに秘密鍵で署名
3. ブラウザ → サーバ:署名を送信
4. サーバが登録済み公開鍵で署名を検証
FIDO2 の優れた点:
- フィッシング耐性:サーバごとに鍵ペアが独立し、オリジン(ドメイン)がバインドされている
- パスワードなし:生体認証やデバイスPINで認証
- 秘密鍵はデバイスから出ない
リスクベース認証
通常の認証に加え、リスク要因(IPアドレス・デバイス・時刻・場所等)を評価し、リスクが高い場合のみ追加認証を要求する仕組みです。
SC試験での頻出ポイント
- MFA の「多要素」の定義:「多段階」(同一要素の複数回)と区別すること
- TOTP の共有シークレット管理:初期設定でQRコードやシードを安全に配布する必要がある
- FIDO2 のフィッシング耐性の理由:オリジンがバインドされるため、偽サイトへのログインでは秘密鍵が使えない
- 生体認証の弱点:変更不可能なため漏洩時のリスクが高い。テンプレートの安全な保管が重要
- ステップアップ認証:通常は1要素、センシティブな操作時のみ MFA を要求するアダプティブ認証
よくある誤問・ひっかけパターン
誤り① 「SMS OTPは FIDO2 と同等のフィッシング耐性がある」→ 誤。SMS OTP は SIM スワップ・SS7 攻撃に脆弱で、フィッシングサイトで騙される可能性があります。
誤り② 「生体認証は所持要素に分類される」→ 誤。生体認証は「生体要素(Something you are)」です。
誤り③ 「パスワード+セキュリティの質問はMFAである」→ 誤。両方「知識要素」のため多要素ではなく多段階認証です。
関連用語
- OAuth 2.0 と OIDC — IdP 側の認証に MFA を組み合わせる
- SAML と SSO — SSO と MFA の組み合わせパターン
- 公開鍵暗号(RSA)とデジタル署名 — FIDO2 の署名処理の基盤
重要キーワード
| 用語 | 説明 |
|---|---|
| 知識要素 | パスワード・PINなど「知っているもの」 |
| 所持要素 | スマートフォン・ICカードなど「持っているもの」 |
| 生体要素 | 指紋・顔など「本人であること」 |
| TOTP | 時刻と共有シークレットから生成する時限型ワンタイムパスワード |
| FIDO2 | フィッシング耐性のあるパスワードレス認証標準 |
| WebAuthn | FIDO2のブラウザ向けAPIを定めるW3C仕様 |