パスワード2つ≠2要素
「2FAを有効にしよう」——どこでも聞くアドバイスだ。でもほとんどの人はSMS版を有効にする——スマホに届く6桁のコード——それで安全だと思っている。2FAなしよりは安全、確かに。でもSMSベースの2FAには、知っておくべき実際の、よく文書化された弱点がある。
SMS 2FAを使うなというのではない。実際に何を得ているのかを理解し、いつより強力なものが必要かを知ってほしい。
二要素認証とは何か?
認証要素には3種類ある:
- 知っているもの — パスワード、PIN
- 持っているもの — 電話、ハードウェアキー、認証アプリ
- 本人そのもの — 指紋、顔認証
二要素認証(2FA)は2つの異なる種類を使うことだ。パスワード+SMSコードは「知っているもの」+「持っているもの」。これは本物の2FA——パスワード単体より圧倒的に安全だ。
問題は2FA自体にあるのではない。問題は「持っているもの(電話)」がスマホを物理的に盗まなくても乗っ取れることだ。
SMS 2FAが傍受される理由
SIMスワッピング
最も一般的なSMS攻撃だ。仕組みはこうだ:
- 攻撃者があなたのふりをしてキャリアに電話
- 電話を失くしたと偽り、番号を新しいSIMに移してほしいと要求
- キャリアがあなたの番号を攻撃者のSIMに転送
- 「あなたの」番号に送られるSMSがすべて攻撃者に届く
- 攻撃者があなたのアカウントへのパスワードリセット+SMSコードを要求
これは著名人にも起きている。仮想通貨取引所のアカウント、メールアカウント、SNS——SIMスワッピングはキャリアの本人確認が不安定なため、よく知られた攻撃ベクターだ。
SS7プロトコルの脆弱性
SS7プロトコルは世界中で通話とSMSをルーティングする40年前の技術基盤だ。国家レベルの攻撃者と高度な犯罪グループが、電話やキャリアに触れることなくSMSを転送中に傍受できる既知の脆弱性がある。
一般人にとってSS7攻撃は理論的だ。高価値ターゲット(役員、ジャーナリスト、活動家)には現実の脅威だ。
リアルタイムフィッシングによるSMSコード入手
一般ユーザーへの最も一般的な攻撃:偽のログインページがパスワードとSMSコードを同時に取得し、コードの期限が切れる前に本物のサイトで使用する。
説得力のある偽サイトで認証情報を入力→攻撃者が本物のサイトにログイン→本物のサイトがSMSを送信→あなたが偽サイトにSMSを入力→攻撃者がセッションを取得。
これを「リアルタイムフィッシング攻撃」または「敵対的中間者攻撃(AiTM)」と呼ぶ。スマホを渡さなくてもSMS 2FAに対して機能する。
SMSより強力なもの
認証アプリ(TOTP)
Google Authenticator、Authy、またはTOTP互換のアプリはデバイス上でローカルに時間ベースのコードを生成する。SMSなし、キャリア不介在。
なぜ良いか: コードはネットワーク経由で送信されずデバイスで生成される。SIMスワップは役立たない——コードは元のスマホにある。リアルタイムフィッシング(偽サイトにコードを入力した場合)は依然として有効だが、SS7攻撃は適用されない。
使う場面: 対応しているすべてのサービス。SMSより優先すること。
ハードウェアセキュリティキー(FIDO2/WebAuthn)
USB接続またはNFCタップで使う物理デバイス(YubiKey、Google Titanなど)。ログイン時にキーを物理的にタッチする。
なぜより強力か: 暗号学的証明、傍受されるコードなし、フィッシング耐性(キーはドメインを確認することで本物のサイトと通信しているかを検証する)。リアルタイムフィッシングは機能しない——偽のドメインには認証しない。
使う場面: 最も重要なアカウント——メール、銀行、会社のアカウント。
パスキー(Passkeys)
パスキーはデバイスに保存された公開鍵暗号を使ってパスワードを完全に置き換える。Apple、Google、Microsoft、そして増え続けるサービスがサポート。
なぜより強力か: 盗まれるパスワードなし、傍受されるコードなし、設計上フィッシング耐性(暗号学的なドメインバインディング)。秘密鍵はデバイスから出ない。
使う場面: 対応しているすべてのサービス(Apple ID、Googleアカウント、GitHub、PayPal、1Passwordなど)。
正直な安全性ランキング
最も安全でないものから最も安全なものへ:
- 2FAなし — パスワードのみ(避けること)
- SMS 2FA — ないよりまし、SIMスワップ+AiTMフィッシングに脆弱
- 認証アプリ(TOTP) — SIMスワップ耐性、AiTMフィッシングには依然脆弱
- ハードウェアキー(FIDO2) — フィッシング耐性、物理的な存在が必要
- パスキー — フィッシング耐性、パスワードなし、強力な選択肢の中で最高のUX
実際にすべきこと
ほとんどの人:
- できる限り認証アプリ(SMSではない)を使う
- SMSが唯一の選択肢ならSMSを使う——それでもないよりずっとまし
- まずメールに2FAを有効化——メールは他のすべてのアカウントのマスターキー
高価値アカウント(銀行、仮想通貨、会社アクセス):
- ハードウェアセキュリティキーまたはパスキー
- 固有の強力なパスワード(パスワードジェネレーターを使用)
- メールが漏洩しているか確認(メール侵害チェッカー)
全員:
- サイト間でパスワードを使い回さない
- 漏洩が発生した場合:パスワードを変更、同じパスワードを他で使用していたか確認、2FAをまだ有効にしていなければ有効化
まとめ
SMS 2FAは2FAなしよりまし。それが唯一の選択肢なら使おう。でもサービスが認証アプリやハードウェアキーを提供しているなら、それを使おう——セキュリティの向上は大きい。
最も重要なこと:メールアカウントに2FAを設定すること。メールは他のすべてのリカバリーメカニズムだ——攻撃者がメールを制御できれば、他のすべてのパスワードをリセットできる。
メールが漏洩しているか確認しよう——そして今日2FAを有効にしよう。