パスワードだけでは不十分な理由
パスワードは「知識要素(Something you know)」の一種です。問題は、パスワードが以下の方法で窃取される可能性があることです:
- フィッシング — 偽サイトにパスワードを入力させる
- データ漏洩 — サービス側のDBが侵害されてハッシュが盗まれる
- マルウェア — キーロガーがタイピングを記録する
- 中間者攻撃 — 通信を傍受して盗む
多要素認証(MFA: Multi-Factor Authentication) は、パスワードに加えて別の要素を要求することで、パスワードが盗まれてもアカウントを守ります。
認証の3要素:
知識要素(Something you know): パスワード・PIN
所持要素(Something you have): スマートフォン・ハードウェアキー・スマートカード
生体要素(Something you are): 指紋・顔認証・虹彩認識
2要素以上を組み合わせるのが MFA(2FA:2-Factor Authentication は MFA の一形態)です。
MFA の種類と強度比較
1. SMS 認証(最も普及しているが最も弱い)
携帯電話に届くワンタイムパスコード(OTP)を入力する方式です。導入が簡単なため広く普及していますが、以下の攻撃に対して脆弱です:
SIMスワッピング攻撃: 攻撃者が携帯キャリアに「SIMを紛失した」と偽り、被害者の電話番号を新しいSIMカードに移管させる。成功すると全てのSMS認証コードが攻撃者の端末に届く。
2024年、米国の仮想通貨投資家たちが SIM スワッピング攻撃で数億円相当の資産を失うケースが相次ぎました。携帯キャリアへのソーシャルエンジニアリングによって番号が乗っ取られたためです。重要なアカウントで SMS 認証のみに頼るのは危険です。
SS7 攻撃: 電話網のプロトコル(SS7)の脆弱性を悪用してSMSを傍受する。国家レベルの攻撃者が使用。
2. TOTP(Time-based One-Time Password)— 推奨
Google Authenticator、Authy、Microsoft Authenticator などのアプリが生成する6〜8桁のコードです。30秒ごとに変わる時刻ベースのアルゴリズム(RFC 6238)を使用します。
SMS より大幅に安全ですが、フィッシングに対しては依然として脆弱です(偽サイトでコードを入力させる「リアルタイムフィッシング」が可能)。
| アプリ名 | クラウドバックアップ | 特徴 |
|---|---|---|
| Authy | あり(暗号化) | 端末変更が簡単。複数デバイス対応 |
| Google Authenticator | あり(Google アカウント) | シンプルで使いやすい |
| Microsoft Authenticator | あり(Microsoft アカウント) | Office 365 との統合 |
| 1Password | あり(パスワードマネージャー内) | パスワードと一体管理できる |
| Aegis | ローカルバックアップ | オープンソース・Android 向け |
3. プッシュ通知認証
スマートフォンアプリに「ログインしましたか?」という通知が届き、承認/拒否するボタンを押す方式です。便利ですが、MFA 疲労攻撃(MFA Fatigue Attack) に弱い欠点があります。
攻撃者がパスワードを知っている場合、大量のプッシュ通知を送り続けることでユーザーが誤って「承認」してしまうことがあります。2022年の Uber のハッキング事件では、この手法によって侵入されました。
対策: プッシュ通知の承認時に「番号一致確認(Number Matching)」が要求される設定を有効にする。
4. FIDO2 / ハードウェアセキュリティキー(最も強い)
YubiKey、Google Titan Key などの物理デバイスをUSBやNFCで使う方式です。フィッシング耐性が非常に高く、国家レベルの攻撃者に対しても有効な最強の MFA です。
仕組みはパスキーと同様で、公開鍵暗号を使用し、秘密鍵はハードウェアキー内に保存されます。
Google は 2017年に社内全従業員(8万5千人以上)に FIDO2 ハードウェアキーを展開し、以降はフィッシング攻撃による不正アクセスが ゼロ になったと報告しています。
強度の総まとめ
フィッシング
耐性 高 ←─────────────────────────────── 低
FIDO2キー > パスキー > TOTP > プッシュ通知 > SMS > なし
コスト 高 中 無料 無料 無料 無料 無料
実際の設定方法
Google アカウントへの認証アプリの追加
myaccount.google.comにログイン- 「セキュリティ」→「2段階認証プロセス」をクリック
- 「認証アプリ」を選択
- QR コードをアプリでスキャン
- 表示された6桁のコードを入力して確認
バックアップコードの保管
MFA を設定する際、バックアップコード(緊急用の一時コード)を必ず保存してください。スマートフォンを紛失した場合でもアカウントにアクセスするために必要です。
バックアップコードはパスワードマネージャーに保存するか、印刷して安全な場所に保管してください。クラウドストレージ(Google Drive など)にそのまま置くと、アカウント乗っ取り時に同時に盗まれるリスクがあります。
どのサービスに MFA を設定すべきか
最優先(必須)
- メールアカウント(他サービスのパスワードリセットに使われる)
- ネットバンキング・証券口座
- クラウドストレージ(Google Drive、Dropbox)
- パスワードマネージャー
優先度:高
- SNS アカウント(乗っ取りによる詐欺拡散の被害を防ぐ)
- 企業・業務アカウント
- ドメイン管理サービス
優先度:中
- ショッピングサイト(クレジットカード情報が登録されている場合)
- ゲームアカウント(仮想通貨・課金アイテムがある場合)
MFA疲労攻撃(MFA Fatigue Attack)とはどのような攻撃ですか?
FIDO2ハードウェアキーがSMS認証より優れている主な理由はどれですか?