Overview
多要素認証(MFA:Multi-Factor Authentication)とは、ユーザーの本人確認において、性質の異なる2つ以上の認証要素を組み合わせて検証するセキュリティ手法です。パスワードだけに依存する従来の認証方式の弱点を補い、不正アクセスのリスクを大幅に低減します。
認証要素は大きく3つのカテゴリに分類されます。知識要素(Something You Know)はパスワードやPINコードなど本人だけが知っている情報、所持要素(Something You Have)はスマートフォンやハードウェアトークンなど本人が物理的に持っているもの、生体要素(Something You Are)は指紋や顔認証など本人の身体的特徴です。
MFAはゼロトラストセキュリティの基盤となる技術であり、Microsoftの調査によると、MFAを有効にすることでアカウント侵害攻撃の99.9%以上をブロックできるとされています。近年ではフィッシング耐性のある認証方式(FIDO2/パスキー)への移行が加速しています。
Details
3つの認証要素
- 知識要素(Knowledge Factor):パスワード、PINコード、秘密の質問への回答。最も一般的だが、フィッシングやブルートフォース攻撃に脆弱
- 所持要素(Possession Factor):スマートフォン(認証アプリ)、ハードウェアセキュリティキー(YubiKey等)、ICカード、ワンタイムパスワード(OTP)トークン
- 生体要素(Inherence Factor):指紋認証、顔認証(Face ID等)、虹彩認証、声紋認証、静脈パターン認証
2FAとMFAの違い
二要素認証(2FA:Two-Factor Authentication)は、2つの異なる認証要素を使用する方式で、MFAの最も一般的な形態です。MFAは2つ以上の要素を組み合わせる概念であり、2FAはMFAの部分集合にあたります。高セキュリティ環境では、3要素すべてを組み合わせることもあります。
注意点として、同じカテゴリの認証手段を複数使用しても(例:パスワード+秘密の質問)、それは多要素認証とはみなされません。異なるカテゴリの要素を組み合わせることが重要です。
ワンタイムパスワード(OTP)の仕組み
- TOTP(Time-based One-Time Password):時刻に基づいて一定間隔(通常30秒)で変化する6桁のコードを生成。RFC 6238で標準化。Google Authenticator、Microsoft Authenticator、Authyなどのアプリで利用
- HOTP(HMAC-based One-Time Password):カウンター値に基づいてコードを生成。RFC 4226で標準化。使用回数に基づくため、同期がずれるリスクがある
プッシュ通知型認証
スマートフォンにプッシュ通知を送信し、ユーザーが「承認」をタップするだけで認証が完了する方式です。OTPの手動入力が不要なため利便性が高い一方、MFA疲労攻撃(MFA Fatigue Attack)の標的になるリスクがあります。これは攻撃者が大量のプッシュ通知を送り続け、ユーザーが誤って承認してしまうことを狙う手法です。
SMS認証の弱点
SMSベースの二要素認証は広く普及していますが、以下の脆弱性が指摘されています。
- SIMスワッピング:攻撃者が通信事業者を欺いて被害者の電話番号を自分のSIMカードに移行させる
- SS7プロトコルの脆弱性:通信ネットワークの古いプロトコルを悪用してSMSを傍受する
- SIMジャッキング:SIMカードの脆弱性を突いてリモートで制御を奪取する
- ソーシャルエンジニアリング:通信事業者のカスタマーサービスを騙してSIM情報を変更させる
NISTのガイドライン(SP 800-63B)では、SMS認証を「制限付き(Restricted)」の認証手段と位置づけており、より安全な認証アプリやハードウェアキーの使用を推奨しています。
ハードウェアセキュリティキー
YubiKeyやGoogleのTitan Security Keyに代表されるハードウェアトークンは、FIDO2/WebAuthnプロトコルに対応し、フィッシング攻撃に対して最も強力な耐性を持ちます。物理的なUSBポートやNFCでデバイスに接続し、暗号学的な証明によって認証を行うため、フィッシングサイトに認証情報を渡してしまうリスクがありません。
Security Measures
- 01フィッシング耐性のある認証方式を採用:FIDO2/WebAuthn対応のハードウェアセキュリティキーやパスキーを導入してください。これらはドメインバインドされた認証を行うため、フィッシングサイトへの認証情報漏洩を原理的に防止できます。
- 02SMS認証から認証アプリへの移行:SMS認証はSIMスワッピング攻撃に脆弱です。Google AuthenticatorやMicrosoft Authenticator等のTOTPベースの認証アプリ、またはプッシュ通知型認証への移行を推奨します。
- 03MFA疲労攻撃への対策:プッシュ通知型認証を使用する場合、ナンバーマッチング(画面に表示された番号の入力を要求)やジオロケーションの表示を有効にしてください。短時間に大量のMFAリクエストが発生した場合のアラート機能も設定しましょう。
- 04リカバリーコードの安全な管理:MFAデバイスを紛失した場合に備えて、リカバリーコードを安全な場所に保管してください。暗号化されたパスワードマネージャーや物理的な金庫での保管が推奨されます。リカバリーコード自体のセキュリティも重要です。
- 05全アカウントへのMFA強制適用:特権アカウントだけでなく、すべてのユーザーアカウントにMFAを義務化してください。条件付きアクセスポリシーを設定し、新しいデバイスや異常なロケーションからのアクセス時には追加の認証を要求しましょう。
- 06バックアップ認証手段の確保:主要なMFA手段が利用できない場合に備えて、複数の認証手段を登録してください。ハードウェアキーを2本用意する、認証アプリとハードウェアキーの併用など、冗長性を確保することが重要です。
Incidents
📋 Twitter CEO ジャック・ドーシー SIMスワップ事件(2019年)
2019年8月、Twitter社(当時)のCEOジャック・ドーシー氏のTwitterアカウントが乗っ取られ、不適切な投稿が行われました。攻撃者はSIMスワッピングの手法を用い、ドーシー氏の電話番号を自分のSIMカードに移行させることに成功しました。
これにより、SMSを利用したテキスト投稿サービスを通じてアカウントを悪用されました。この事件はSMS認証の脆弱性を広く世間に認知させるきっかけとなり、より安全な認証手段への移行を促進する契機となりました。CEOという最も保護されるべきアカウントですら、SMS認証に依存していると危険であることが実証されました。
📋 Uber MFA疲労攻撃(2022年)
2022年9月、18歳のハッカーがUberの内部システムに侵入し、大規模な情報漏洩を引き起こしました。攻撃者はまずダークウェブで入手したUber従業員の認証情報を使用してログインを試み、MFAのプッシュ通知を被害者のスマートフォンに繰り返し送信しました。
1時間以上にわたって大量の通知を送り続けた後、攻撃者はWhatsAppで被害者に連絡し、Uber IT部門を装って「通知を止めるには承認してください」と指示しました。被害者が承認した結果、攻撃者はUberの内部ネットワークに侵入し、Slack、Google Workspace、HackerOneの脆弱性レポートなど広範なシステムにアクセスしました。この事件はMFA疲労攻撃の危険性を世界に知らしめ、ナンバーマッチングの導入が急速に広まるきっかけとなりました。
📋 Coinbase SMS 2FA バイパス事件(2021年)
2021年、暗号資産取引所Coinbaseは、約6,000人の顧客がSMS認証の脆弱性を突かれて資産を盗まれたことを公表しました。攻撃者はフィッシングやSIMスワッピングなどの手法を組み合わせ、まずユーザーのメールアドレスとパスワードを入手し、次にSMSベースの二要素認証を突破しました。
Coinbaseのアカウント回復プロセスにおけるSMS認証の脆弱性が悪用され、攻撃者は被害者のアカウントにアクセスして暗号資産を外部ウォレットに送金しました。Coinbaseは被害者に補償を行い、SMS認証に代わるより安全な認証方式(認証アプリやハードウェアキー)への移行を強く推奨しました。