概要

多要素認証(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である」→ 。両方「知識要素」のため多要素ではなく多段階認証です。

関連用語

重要キーワード

用語説明
知識要素パスワード・PINなど「知っているもの」
所持要素スマートフォン・ICカードなど「持っているもの」
生体要素指紋・顔など「本人であること」
TOTP時刻と共有シークレットから生成する時限型ワンタイムパスワード
FIDO2フィッシング耐性のあるパスワードレス認証標準
WebAuthnFIDO2のブラウザ向けAPIを定めるW3C仕様