SMS二段階認証(SMS 2FA)は、パスワードに加えて確認コードを要求するセキュリティ層だ。しかし、米国国立標準技術研究所(NIST)は2017年のSP 800-63B改訂でSMS OTPを「制限付き認証器(Restricted Authenticator)」に分類しており、高価値アカウントへの使用に懸念を示している。その理由はSIMスワップ詐欺・SS7の脆弱性・フィッシング・SMS傍受という4つの攻撃経路にある。
この記事では、SMS 2FAの各リスクを根拠とともに解説し、認証アプリ(TOTP)とパスキー(FIDO2)への移行方法を示す。
なお、SMS 2FAは「ないよりはるかにまし」という位置づけであることを最初に明確にしておく。パスワード単体と比べればSMS 2FAは攻撃の難易度を大幅に上げる。まず2FAを有効にすることが最初の一歩であり、その後に認証方式をより安全なものへ段階的に移行していくのが現実的なアプローチだ。
NISTがSMS OTPを制限付き認証器に分類した背景
NIST SP 800-63B(「デジタルアイデンティティガイドライン:認証とライフサイクル管理」)は、PSTN(公衆交換電話網)経由のOTP、すなわちSMSやボイスコールで届くワンタイムパスワードを「制限付き認証器(Restricted Authenticator)」と位置づけた。
同文書が列挙するリスクは次のとおりである。
- 公衆交換電話網(PSTN)は設計上、認証コードの安全な伝送を保証するものではない
- SS7プロトコルの脆弱性によりSMSの傍受・リダイレクトが可能であることが実証されている
- VoIP番号やソフトウェア定義の電話番号はSIMカードと同等の保護を持たない
NISTは同文書の中で、制限付き認証器を採用する機関に対し「リスクアセスメントを実施し、代替認証器への移行計画を策定すること」を求めている。これはSMS 2FAを即座に廃止すべきと主張するものではなく、リスクを把握した上で利用するよう求めたものだ。
出典: NIST SP 800-63B — Digital Identity Guidelines: Authentication and Lifecycle Management
SMS 2FAのリスク1:SIMスワップ詐欺
SIMスワップ詐欺は、攻撃者がキャリアの窓口・電話サポート・オンライン手続きを悪用し、被害者の電話番号を攻撃者のSIMカードまたはeSIMプロファイルに転送する攻撃だ。
電話番号の転送が完了した瞬間、被害者の端末は圏外になり、SMS経由の認証コードはすべて攻撃者に届くようになる。攻撃者は事前に入手したパスワードと、転送されてきたSMS認証コードを組み合わせて、銀行・メール・仮想通貨取引所などのアカウントを乗っ取れる。
日本での発生状況と防御策はSIMスワップ詐欺とは — 手口・兆候・防ぎ方で詳しく解説している。
SIMスワップ詐欺の典型的な手口の流れ
SIMスワップはソーシャルエンジニアリングを中心に構成される攻撃だ。典型的な手順は次のとおりである。
- 情報収集: SNS・データ侵害流出リスト・フィッシングで被害者の氏名・生年月日・住所・電話番号を入手する
- キャリアへの接触: 攻撃者が被害者を装いキャリアのカスタマーサポートに電話または来店する
- 本人確認の突破: 収集した個人情報を答えることで本人確認をパスし、「機種変更」「端末故障によるSIM再発行」等を口実に電話番号を新しいSIMに移す
- 乗っ取り完了: 数分以内に被害者の端末が圏外になり、SMS認証コードが攻撃者に届くようになる
SMS 2FAが攻撃の前提条件になる理由
SIMスワップが成立していない段階では、攻撃者はパスワードを知っていてもSMS認証コードを取得できない。しかしSIMスワップが成立した後は、SMS 2FAが存在することによって「コードさえあればアクセスできる」という明確な攻撃経路を攻撃者に与える。このため、SMS 2FAは電話番号のセキュリティと不可分に結びついている。
SMS 2FAのリスク2:SS7プロトコルの脆弱性
SS7(Signalling System No. 7)は1970年代に策定された電話ネットワーク向けの信号プロトコルだ。現在も国際電話・SMS配信の基盤として広く使われているが、設計当時はネットワーク参加者を信頼することを前提としており、参加者認証の仕組みを持たない。
2014年12月、ドイツのセキュリティ研究者Karsten Nohl(SRLabs)らが、Chaos Communication Congress(31C3)の講演「Mobile Self-Defense」において、SS7の欠陥を使ってSMS・通話を傍受・リダイレクトできることを公開実証した。さらに2016年4月には、米国CBSの報道番組「60 Minutes」で、Nohlのチームが電話番号だけを手がかりに米国下院議員(本人同意のもと)の通話を傍受・録音しSMSを取得できることを実演した。その後もPositive Technologiesなどの研究機関が複数の実証を発表しており、2017年にはドイツの銀行顧客のSMSを傍受してmTANを盗む攻撃事例が報告された。
攻撃に必要な条件とリスクレベル
SS7攻撃を実行するにはSS7ネットワークへの特権的なアクセスが必要であり、一般的な攻撃者が容易に実行できるものではない。そのため、一般ユーザーへの日常的な脅威としての優先度はSIMスワップより低い。しかし、高価値な標的(政治家・経営者・仮想通貨保有者等)を対象とした標的型攻撃では実証されている手法だ。
SMS 2FAのリスク3:フィッシングとリアルタイムOTP中継
SMS 2FAはフィッシング攻撃に対して脆弱な面がある。攻撃者が本物のサービスと見分けのつかない偽サイトを用意し、利用者にログイン情報を入力させると同時に本物のサービスにそれを転送する「中間者フィッシング(AiTM: Adversary-in-The-Middle)」攻撃が確認されている。
この攻撃の流れは次のとおりだ。
- 攻撃者が偽サイトに被害者を誘導する(フィッシングメール・SMSが多い)
- 被害者が偽サイトにID・パスワードを入力すると、攻撃者がリアルタイムで本物のサービスにそれを入力する
- 本物のサービスがSMS認証コードを被害者の電話番号に送信する
- 被害者が偽サイトに認証コードを入力すると、攻撃者がそれを本物のサービスに転送しログインが完了する
Microsoftの脅威インテリジェンスチームは2022年7月、AiTMフィッシングキットを使った大規模な攻撃キャンペーン(1万を超える組織を標的)を報告している。AiTM攻撃はセッションクッキーを窃取することでMFAをバイパスする手法であり、SMSやTOTPを含むMFAの種別を問わず有効な攻撃手法であることが示された。
パスキー(FIDO2/WebAuthn)はこの攻撃に対して設計上耐性がある。WebAuthnの認証情報はオリジン(URLのドメイン)に紐付いており、偽ドメインでは本物の認証情報が機能しないためだ。
SMS 2FAのリスク4:SMS傍受と不正ルーティング
SIMスワップやSS7攻撃以外にも、SMSが意図しない経路で傍受・遅延・未着になるリスクが存在する。
- VoIP番号・番号転送サービスの悪用: 攻撃者がVoIP電話番号やSMSゲートウェイを使って認証コードを受け取るケースが報告されている。一部のサービスがこれに対応してVoIP番号からのSMS認証を拒否するようになった
- SMSの配信遅延: 国際ローミング環境・一部の通信事業者間の接続において、SMSの配信が数分〜数十分遅延することがある。認証コードには有効期限(多くは5〜10分)があるため、遅延が長引くと有効期限切れになる
- マルウェアによるSMS読み取り: Androidのセキュリティ権限「READ_SMS」を悪用するマルウェアが過去に確認されており、端末上でSMSを読み取る攻撃も存在する(現在はGoogle Playのポリシーでこの権限の付与は厳しく制限されている)
より安全な代替1:認証アプリ(TOTP)
TOTP(Time-based One-Time Password)はRFC 6238で定義された標準規格であり、Google Authenticator・Microsoft Authenticator・Authy等が実装している。
TOTPの仕組み
初期設定時にサービスとアプリが共有秘密鍵(シード)を交換する。その後、端末は「共有秘密鍵 + 現在の時刻(30秒単位)」をアルゴリズム(HMAC-SHA-1ベース)で演算し、一般的に6桁のコードを生成する(実装により桁数は異なる)。このコードは端末ローカルで生成されるためインターネット接続不要であり、電話番号やネットワーク回線を経由しない。
出典: RFC 6238 — TOTP: Time-Based One-Time Password Algorithm
SMS 2FAと比較したTOTPの利点
| 攻撃経路 | SMS 2FA | TOTP |
|---|---|---|
| SIMスワップ | 脆弱(電話番号ごと乗っ取られる) | 影響なし(電話番号不要) |
| SS7傍受 | 脆弱(SMSが傍受される) | 影響なし(ネットワーク非経由) |
| AiTMフィッシング | 脆弱(リアルタイム中継可) | 脆弱(コードはフィッシングでも転送可能) |
| マルウェア(SMS読取) | 脆弱 | 影響なし(SMSを使わない) |
注意点として、TOTPもAiTMフィッシングに対しては完全な保護を提供しない。コード自体は有効期限内に転送可能なためだ。この点ではパスキー(FIDO2)が優れる。
TOTPへの移行手順
- 認証アプリ(Google Authenticator・Authy・Microsoft Authenticator等)をインストールする
- 移行したいサービスの「セキュリティ設定」または「二段階認証」を開く
- 「認証アプリを追加」「Authenticatorアプリ」等を選択し、表示されるQRコードをアプリでスキャンする
- アプリに表示された6桁コードを入力して設定を完了する
- バックアップコード(リカバリコード)を必ず安全な場所に保管する(端末紛失時の唯一のリカバリ手段になる場合がある)
バックアップコードは通常8〜16桁の英数字コードが複数枚発行される。印刷して鍵のかかる場所に保管するか、パスワードマネージャーの安全なメモ欄に保存する。クラウドストレージやスクリーンショットのみへの保存はデバイス紛失・アカウント侵害時にアクセスできなくなるリスクがある。
優先度が高いサービスの移行順序: メールアカウント(全サービスのパスワードリセットに使われるため最優先)→ 銀行・証券口座 → 仮想通貨取引所 → その他
海外渡航中にSMS 2FAが問題になるケースと認証アプリの活用については海外でSMS二段階認証(2FA)を受信する方法も参照してほしい。
より安全な代替2:パスキー(FIDO2/WebAuthn)
パスキーはFIDO Alliance(ファイドアライアンス)とW3Cが共同策定したFIDO2/WebAuthn規格に基づく認証方式だ。パスワードと2FAを統合した形式であり、対応するサービスではパスワード自体が不要になる。
パスキーの仕組み
初回登録時、端末が公開鍵と秘密鍵のペアを生成する。公開鍵はサービスのサーバーに登録され、秘密鍵は端末(またはパスワードマネージャー)に保管される。ログイン時は端末の生体認証(Face ID・Touch ID・指紋)またはPINで秘密鍵を使って署名を行い、サーバーが公開鍵で検証する。
出典: FIDO Alliance — Passkeys 出典: W3C — Web Authentication (WebAuthn) Level 2
パスキーがAiTMフィッシングに耐性を持つ理由
WebAuthnの認証情報(チャレンジへの署名)はオリジン(https://example.com)に紐付いて生成される。攻撃者がhttps://example-phishing.comに誘導しても、本物のhttps://example.com向けの署名は生成されず、サーバーでの検証に失敗する。この設計により、フィッシングサイトではパスキーが機能しない。
パスキーの対応状況
2024〜2025年にかけて、主要なサービスでパスキーのサポートが拡大した。Google・Apple・Microsoft・1Password・Dashlane等のパスワードマネージャーがパスキーの保管と同期に対応している。日本では一部の金融機関・ECサービスでもパスキー対応が進んでいる。対応状況はサービスごとに異なるため、各サービスのセキュリティ設定で確認する。
パスキーの端末間同期と引き継ぎ
パスキーはAppleデバイス間(iCloud Keychain)・Googleアカウント(Google パスワードマネージャー)経由で複数端末に同期できる。端末を機種変更した場合でも、同じApple IDまたはGoogleアカウントにサインインすれば既存のパスキーを引き継げる。端末ごとに独立したパスキー(同期しないタイプ)を使っている場合は、新端末で再登録が必要になる。1Password・Bitwarden等のサードパーティパスワードマネージャーに保管すると、OS・デバイスメーカーをまたいだ移行が柔軟になる。
SMSしか選択肢がない場合の対策
認証アプリやパスキーに対応していないサービス(一部の銀行・行政サービス等)でSMS 2FAを使い続ける場合、以下の対策でリスクを低減できる。
1. キャリアのアカウントに口頭確認パスワードを設定する
SIMスワップ攻撃の主な突破口はキャリアの本人確認だ。日本の大手キャリアでは、窓口・電話での手続き時に確認する口頭パスワード(任意設定)を設けている場合がある。生年月日・住所・電話番号のように攻撃者が入手できる情報は設定しないこと。
SIMロックについてはSIMロックとは — 解除方法と対応端末の確認を参照してほしい。
2. VoIP番号の使用を避ける
一部のサービスはVoIP番号や番号転送サービスへのSMS送信を拒否するようになっているが、すべてのサービスがそうとは限らない。重要なサービスには、実際のSIMカードに紐付いた電話番号を登録する。
3. フィッシング対策を徹底する
銀行・決済サービスへのアクセスは、メールのリンクからではなく公式アプリまたはブラウザのブックマークから行う。SMSで届いたリンクをタップしてIDとパスワードを入力するという操作は、AiTMフィッシングの典型的な誘導に合致する。
4. SIM PINを設定する
端末のSIM PINを有効にすることで、第三者が物理的にSIMカードを取り出して別の端末に挿入した場合にSIMを使用できなくさせることができる。SIM PINおよびPUKコードの仕組みについてはIMEI・PIN・PUKとはを参照してほしい。
認証方式の比較まとめ
| 認証方式 | SIMスワップ耐性 | SS7傍受耐性 | AiTMフィッシング耐性 | オフライン動作 |
|---|---|---|---|---|
| パスワードのみ | — | — | — | 不要 |
| SMS 2FA | 低(電話番号を乗っ取られると無効) | 低(傍受可能) | 低(リアルタイム中継可) | 不要 |
| TOTP(認証アプリ) | 高(電話番号不要) | 高(ネットワーク非経由) | 中(コードは転送可能) | 可(オフライン動作) |
| パスキー(FIDO2) | 高(電話番号不要) | 高(ネットワーク非経由) | 高(オリジン紐付きで偽サイトでは機能しない) | 端末PINまたは生体認証が必要 |
| ハードウェアセキュリティキー(FIDO2) | 高 | 高 | 高 | 物理デバイスが必要 |
移行の優先順位と実践的なアドバイス
すべてのSMS 2FAを一度に移行する必要はない。以下の優先順位で段階的に移行するのが現実的だ。
最優先: メールアカウント(他のすべてのサービスのパスワードリセットに使われるため、最初に保護する)
高優先: 銀行・証券・仮想通貨取引所(資産への直接アクセス)
中優先: SNS・ECサービス・その他
移行時の注意点として、バックアップコード(リカバリコード)の管理を忘れずに行う。認証アプリが入っていた端末を紛失・故障した場合、バックアップコードがなければサービスにアクセスできなくなる。バックアップコードは印刷して安全な場所に保管するか、パスワードマネージャーに保存する。
MNP(キャリア乗り換え)を行う場合、移行前と移行後で電話番号が変わらないが、SMS受信の設定やキャリアのアカウント保護設定を確認する必要がある。MNPの手順はMNP(番号ポータビリティ)の手順 — ワンストップMNPと予約番号方式を参照してほしい。
よくある質問
よくある質問はフロントマターの faqItems に構造化されている。主な5問の要点は次のとおりだ。
- SMS 2FAは使わないよりも安全だが、高価値アカウントへの単独使用はNIST SP 800-63BのRestrictedガイダンスに照らしてリスクがある
- TOTPは電話番号不要・オフライン動作・SIMスワップ耐性という点でSMS 2FAより優れる
- パスキー(FIDO2/WebAuthn)はフィッシング耐性を設計に組み込んでおり、TOTPよりもAiTM攻撃への対処が強い
- SS7攻撃は特権的なネットワークアクセスが必要なため一般ユーザーへの即時脅威は低いが、高価値標的では実証例がある
- SMS 2FAしか使えないサービスでは、キャリアのアカウント口頭パスワード設定・フィッシング対策・SIM PINの組み合わせでリスクを低減する
関連ガイド
- 海外でSMS二段階認証(2FA)を受信する方法 — 渡航中にSMS 2FAコードを確実に受け取るための設定とデュアルSIM活用法
- SIMスワップ詐欺とは — 手口・兆候・防ぎ方 — SMS 2FAの最大の脅威であるSIMスワップ攻撃の詳細と対策
- SIMロックとは — 解除方法と対応端末の確認 — SIMロックの仕組みとキャリア乗り換え時の注意点
- MNP(番号ポータビリティ)の手順 — キャリア変更時に電話番号を維持するMNPの手続き
- IMEI・PIN・PUKとは — SIM PINの設定方法とPUKコードの扱い