二要素認証(2FA)とは?
二要素認証(Two-Factor Authentication、2FA)は、アカウントへのログイン時に2種類の異なる認証要素を要求することで、セキュリティを大幅に強化する仕組みです。
認証要素の3つの種類
米国国立標準技術研究所(NIST)の基準によれば、認証要素は以下の3つのカテゴリーに分類されます:
- 知識要素(Knowledge) - 知っているもの:パスワード、PIN、秘密の質問の答え
- 所持要素(Possession) - 持っているもの:スマートフォン、ハードウェアトークン、ICカード
- 生体要素(Inherence) - 自分自身:指紋、顔、虹彩、声紋
重要: 2FAとは、異なる種類の要素を2つ組み合わせることです。「パスワード + 秘密の質問」は両方とも知識要素なので、2FAとは言えません。
なぜパスワードだけでは不十分なのか?
データ侵害の現状
漏洩したパスワードを使った不正ログインに備えるには、パスワードとは別の認証要素を設定することが重要です。
パスワードのみの脆弱性
- 大規模データ漏洩: 企業のデータベースが侵害されると、数百万のパスワードが一度に流出
- フィッシング攻撃: 偽サイトで入力させたパスワードを盗む
- 総当たり攻撃: プログラムで自動的にパスワードを試行
- パスワードの使い回し: 他のサービスで漏洩したパスワードを試す
2FAの効果
Googleと大学研究者の2019年の調査では、Googleアカウントの不審なログイン時に課す追加の確認について、次の結果が報告されています(すべてのサービスや2FA方式に共通する防御率ではありません):
- 調査期間中、セキュリティキーを専用の認証手段として使う利用者には、標的型フィッシングの被害が観測されなかった
- 復旧用電話番号に送るSMSコードによる追加確認は、一括フィッシング攻撃の96%を阻止
- 同じSMSコードによる追加確認は、標的型攻撃の76%を阻止
調査対象はGoogleの追加確認であり、これらの割合を認証アプリの効果や一般的な2FA全体の成功率として扱うことはできません。
2FAの種類と安全性比較
以下は方式を選ぶための実用的な比較です。Tierは本記事の便宜的な区分であり、NISTのAALと一対一には対応しません。NIST SP 800-63BのAAL要件は認証器だけでなく認証手順全体で判定します。
Tier 1:フィッシング耐性が高い - ハードウェアセキュリティキー
- 代表例: YubiKey、Titan Security Key
- 安全性: 非常に高い
- 使いやすさ: 普通
- コスト: ¥3,000〜6,000
- メリット: 正規サイトのドメインに紐づくFIDO2認証はフィッシングに強い。対応する実装では秘密鍵をデバイス内で保護できる
- デメリット: 物理的な持ち運びが必要、紛失リスク、利用先の対応状況を確認する必要がある
- AALに関する注意: キーを使うだけでAAL3になるわけではありません。NISTはフィッシング耐性と秘密鍵の非エクスポート性に加え、認証要素の組み合わせなども要求します
Tier 2:高レベル - 認証アプリ(TOTP)
- 代表例: Google Authenticator、Microsoft Authenticator、Authy
- 安全性: 高い
- 使いやすさ: 高い
- コスト: 無料
- メリット: オフラインで動作(ネットワーク不要)、SMS攻撃の影響を受けない、複数アカウントを一元管理
- デメリット: 初期設定がやや複雑(QRコードスキャン)、時刻同期ずれによるログイン失敗、スマホ機種変更時の移行が必要
Tier 3:中レベル - プッシュ通知認証
- 代表例: Microsoft Authenticator、Duo Mobile
- 安全性: 普通
- 使いやすさ: 非常に高い
- コスト: 無料
- メリット: 非常に使いやすい(タップだけ)、コード入力不要
- デメリット: ネットワーク接続が必須、「疲労攻撃」に脆弱(何度も通知が来て間違えて承認してしまう)
Tier 4:制約のある方式 - SMS認証コード
- 安全性: 低い
- 使いやすさ: 非常に高い
- コスト: 無料
- メリット: 追加アプリ不要、設定が簡単、ほぼすべてのサービスで対応
- デメリット: SIMスワッピング攻撃のリスク、通信網への攻撃リスク、リアルタイムフィッシング攻撃に弱い
| 方式 | 安全性 | 使いやすさ | コスト | オフライン動作 | フィッシング耐性 |
|---|---|---|---|---|---|
| ハードウェアキー | 非常に高い | 普通 | ¥3,000〜 | ○ | ○(FIDO2認証時) |
| 認証アプリ(TOTP) | 高い | 高い | 無料 | ○ | 部分的 |
| プッシュ通知 | 普通 | 非常に高い | 無料 | × | 部分的 |
| SMS認証 | 低い | 非常に高い | 無料 | × | × なし |
SMS認証の安全性の真実
SMSには電話番号の乗っ取りや通信経路への攻撃、コードの詐取といったリスクがあります。NISTは公衆交換電話網(PSTN)を使う帯域外認証を制限付きとして扱っています:
既知の脆弱性
- SIMスワッピング攻撃: 攻撃者が電話会社を騙して被害者の電話番号を自分のSIMカードに移す(2019年にTwitter CEOのアカウントがこの手法で侵害された)
- 通信経路への攻撃: SMSの配送経路が攻撃を受けた場合、コードが第三者に渡るおそれがある
- リアルタイムフィッシング: 偽サイトで入力されたコードを即座に本物のサイトで使用
それでもSMSが広く使われる理由
NISTはSMSによる帯域外認証を一律に禁止しているわけではなく、制限付きの方式として扱っています。利用先でより強い方式を選べる場合は、そちらを検討してください。
理由:
- 追加コストゼロ(全員がスマホを持っている)
- アプリインストール不要
- 使い方が簡単
- Googleの上記調査では、復旧用SMSによる追加確認が調査対象の標的型攻撃の76%を阻止した
結論: 高リスク取引(銀行振込、重要データアクセス)には不適切ですが、一般的なSNSログインなどには「無いよりはるかにマシ」です。
主要サービスでの設定方法
Googleアカウント
- Googleアカウントにログイン
- 左メニュー「セキュリティ」をクリック
- 「2段階認証プロセス」をクリック
- 「使ってみる」をクリック
- 電話番号を入力(SMS受信用)
- 受信したコードを入力
- 「有効にする」をクリック
追加の認証方法を設定(推奨):
- 認証アプリ:「認証システムアプリ」から設定
- ハードウェアキー:「セキュリティキー」から設定
- バックアップコード:「バックアップコード」から生成・保存
Microsoft アカウント
- Microsoftアカウントセキュリティにアクセス
- 「高度なセキュリティオプション」をクリック
- 「2段階認証」の「有効にする」をクリック
- Microsoft Authenticatorアプリをダウンロード
- アプリで通知を承認
- 完了
GitHub
- GitHub右上のプロフィール→「Settings」
- 左メニュー「Password and authentication」
- 「Two-factor authentication」の「Enable」
- 認証アプリまたはSMSを選択
- QRコードをスキャン(認証アプリの場合)
- 生成されたコードを入力
- リカバリーコードを必ず保存
よくある質問
Q1: スマホを紛失したらどうなりますか?
A: 事前対策が重要です:
- バックアップコードを保存:各サービスの2FA設定時に生成される緊急コードを紙に印刷して安全な場所に保管
- 複数の認証方法を設定:認証アプリ + SMS、認証アプリ + ハードウェアキー
- アカウント復旧方法を確認:Googleは電話番号や復旧用メールアドレスで復旧可能
Q2: 機種変更時の移行方法は?
Google Authenticator(2023年以降):
- 旧端末でGoogleアカウントにログイン
- Authenticatorアプリが自動的にクラウド同期
- 新端末でアプリをインストール
- 同じGoogleアカウントでログインすると自動復元
Q3: どの2FA方式を選ぶべきですか?
| シーン | 推奨方式 | 理由 |
|---|---|---|
| 銀行・証券口座 | ハードウェアキー または TOTP | 最高レベルのセキュリティが必要 |
| 仕事用メール・クラウド | TOTP または ハードウェアキー | 機密情報保護のため |
| SNS(Twitter, Instagram) | TOTP または SMS | バランス重視 |
| 技術的に不慣れな家族用 | SMS または プッシュ通知 | 使いやすさ優先 |
おすすめの2FA方式
初心者向け:まずはここから
ステップ1: Google Authenticator または Microsoft Authenticator をインストール(コスト:無料、時間:5分、安全性:高い)
ステップ2: 重要なアカウントから順に設定
- メールアカウント(Gmail/Outlook)
- 銀行・証券口座
- クラウドストレージ(Google Drive/OneDrive)
- SNSアカウント
ステップ3: バックアップコードを必ず保存(紙に印刷して自宅の安全な場所に保管)
中級者向け:セキュリティ強化
- ハードウェアキーを1〜2個購入:推奨 YubiKey 5 NFC(¥5,500前後)、最重要アカウント(銀行、仕事用メール)に設定
- SMSを段階的に廃止:SMSからTOTPまたはハードウェアキーに移行、SMSは最後の緊急手段として残す
- 定期的なセキュリティ監査:どのアカウントに2FAが設定されているか確認
まとめ
重要なポイント:
- 2FAは必須のセキュリティ対策:パスワード漏洩後の不正ログインにも備えられる。防御効果は方式と攻撃手法によって異なる
- 安全性の順序:ハードウェアキー(最も安全) > 認証アプリ(バランス良好) > プッシュ通知 > SMS(基本的だが無いより良い)
- 実用的な推奨:すべての人はまず認証アプリを設定、高セキュリティ必要な場合はハードウェアキーを追加、技術的に不慣れな場合はSMSまたはプッシュ通知から開始
- バックアップは必須:バックアップコードを保存、複数の認証方法を設定、定期的に復旧方法を確認
次のステップ
- 今すぐ行動: 最も重要なアカウント(メール・銀行)に2FAを設定
- 学習: 安全なパスワードの作り方も確認
- ツール: パスワード管理アプリの選び方もご覧ください
参考文献・情報源
上記の基準や調査結果は、以下の一次資料で確認できます: