認証・パスワード

二要素認証 (2FA)

約 4 分で読めます

二要素認証とは

二要素認証 (2FA - Two-Factor Authentication) とは、ログイン時にパスワードに加えてもう 1 つの認証要素を要求することで、アカウントのセキュリティを強化する仕組みです。

認証の 3 要素は「知識 (パスワード等)」「所持 (スマートフォン等)」「生体 (指紋等)」に分類されます。二要素認証はこのうち異なる 2 つの要素を組み合わせます。パスワード (知識) + スマートフォンの認証アプリ (所持) が最も一般的な組み合わせです。

パスワードがクレデンシャルスタッフィングやデータ漏洩で流出しても、二要素認証が有効であれば攻撃者はログインできません。Google の調査では、SMS ベースの 2FA でもアカウント乗っ取りの 96% を防げると報告されています。

二要素認証の種類と強度

SMS 認証
電話番号にワンタイムコードを送信。最も普及しているが、SIM スワップ攻撃や SS7 プロトコルの脆弱性により傍受されるリスクがある。フィッシング耐性なし。
TOTP (認証アプリ)
Google Authenticator や Authy などのアプリが 30 秒ごとに 6 桁のコードを生成。SMS より安全だが、フィッシングサイトにコードを入力してしまうリスクは残る。
セキュリティキー (FIDO2)
YubiKey などの物理デバイスを USB や NFC で接続して認証。フィッシング耐性が最も高い。正規のドメインでのみ認証が成立するため、偽サイトでは動作しない。
FIDO2 の進化形。スマートフォンの生体認証 (指紋・顔) を使い、パスワードレスで認証。フィッシング耐性が高く、ユーザー体験も優れる。

フィッシング耐性の重要性

二要素認証の種類を選ぶ際、最も重視すべきはフィッシング耐性です。

SMS 認証や TOTP は、ユーザーがフィッシングサイトにコードを入力してしまうと突破されます。攻撃者はリアルタイムでユーザーの入力を正規サイトに中継する「リアルタイムフィッシング」を行い、2FA を回避します。この手法は Evilginx などのツールで自動化されており、技術的なハードルは低下しています。

一方、FIDO2 セキュリティキーやパスキーは、認証時にドメインを検証するため、フィッシングサイトでは認証が成立しません。高いセキュリティが求められるアカウント (メール、金融、管理者アカウント等) には、フィッシング耐性のある認証方式を強く推奨します。

導入時の注意点

  • リカバリーコードの保管: 認証デバイスを紛失した場合に備え、リカバリーコードを安全な場所 (紙に印刷して金庫に保管、パスワードマネージャーに保存等) に保管してください。リカバリー手段がないとアカウントにアクセスできなくなります。
  • バックアップの認証手段: セキュリティキーを主要な認証手段にする場合、予備のキーを 1 本用意するか、TOTP をバックアップとして設定しておくと安心です。
  • すべてのアカウントに設定: メール、SNS、クラウドストレージ、金融サービスなど、重要なアカウントすべてに 2FA を設定しましょう。特にメールアカウントは他のサービスのパスワードリセットに使われるため、最優先で保護すべきです。
  • SSO との組み合わせ: SSO プロバイダーに強力な 2FA を設定すれば、連携するすべてのサービスが保護されます。

よくある誤解

SMS 認証があれば十分安全
SMS は SIM スワップ攻撃やリアルタイムフィッシングで突破される可能性があります。ないよりは遥かに安全ですが、重要なアカウントには TOTP やセキュリティキーなど、より強力な方式を推奨します。
二要素認証を設定すればパスワードは簡単なもので構わない
二要素認証は追加の防御層であり、弱いパスワードを補うものではありません。強力なパスワードと二要素認証の両方を組み合わせることで、最大限のセキュリティが得られます。

SMS 認証と TOTP 認証の違い

SMS 認証

電話番号にコードを送信。追加アプリ不要で手軽だが、SIM スワップ攻撃に脆弱。通信圏外では受信不可。フィッシング耐性なし。

TOTP 認証

認証アプリが端末内でコードを生成。通信不要でオフラインでも動作。SIM スワップの影響を受けない。フィッシング耐性はないが SMS より安全。

関連用語

関連記事