認証アプリ vs SMSコード:どちらが安全?
SMS 2FAと認証アプリはどちらもアカウントを保護しますが、SIMスワップやフィッシング対策では大きく異なります。どちらが優れているか、乗り換え方法を解説します。
SMS 2FA の仕組み
二要素認証はアカウントに第二の鍵を追加する仕組みで、SMS コードはその中で最も多くの人が最初に出会う形式です。パスワードだけに頼る代わりに、サービスが短い使い切りコードを SMS で携帯電話に送信します。通常どおりパスワードを入力し、続けてそのコードを入力するとログインが完了します。
この仕組みが成り立つのは、アカウントに紐づいた電話番号を自分だけが管理しているはずだからです。ログインを要求すると、サービスはその番号にコード(通常は6桁、数分間有効)を SMS で送ります。コードがなければ入れません。
最大の売りは手軽さです:
- インストール不要。 すべての携帯電話は SMS を受信できます。
- 覚えることがない。 SMS の読み方はすでに知っているはずです。
- どんな電話でも動作し、 最新のスマートフォンから古い折りたたみ携帯まで対応します。
ただし落とし穴があります。電話番号とモバイルネットワークが完全に自分の管理下にあること全体が前提になっているのです。
認証アプリの仕組み
認証アプリは、ログインコードをデバイス上で直接生成します。セットアップ時にQRコードをスキャンすると、共有シークレットがアプリ内に保存されます。以降、アプリとウェブサイトはそれぞれ独立して同じ6桁のコードを算出し、30秒ごとに新しいコードへ切り替わります。モバイルネットワークもインターネット接続も不要です。コードはオフラインで計算されるため、機内モードでも機能します。
重要な違い: 電話番号に依存しない
共有シークレットは、SIMカードではなくアプリ内に存在します。コードは電話番号ではなく、シークレットを保持するデバイスに紐付いているため、通信キャリア経由の攻撃で傍受できるものがありません。
一般的なアプリ
- Google Authenticator — シンプルで幅広く対応
- Microsoft Authenticator — Microsoftアカウントのプッシュ承認にも対応
- Authy — デバイス間の暗号化バックアップを追加
攻撃者が有効なコードを生成するには、デバイスそのものが必要になります。
脅威 1: SIMスワップ
SIMスワップは、SMSベースの2FAを直接狙った攻撃です。攻撃者はあなたになりすまして携帯キャリアに連絡し、あなたの電話番号を自分が管理するSIMカードへ移転するよう仕向けます。これは、もっともらしい話術、情報漏洩で流出した個人情報、あるいは買収された従業員によって起こり得ます。キャリアの本人確認は基準がまちまちであるため、この攻撃は本来あるべき頻度よりも多く成功しています。
番号が移転されると、攻撃者の電話があなたが受け取るはずだったすべてのSMSを受信します — ログインコードやパスワードリセットのメッセージも含まれます。あなたの実際の電話は沈黙します。
認証アプリはこの問題を完全に回避します。認証アプリはデバイス上でコードを生成し、アカウントに紐付けられ、電話番号は一切関与しません。攻撃者が移転できるものは何もなく、キャリアはそもそも保持していないものを漏洩することはできません。
脅威2: フィッシング
フィッシングはSMSコードを呆れるほど容易に突破する。被害者は本物そっくりの偽ログインページへのリンクをクリックし、パスワードを入力する。攻撃者が管理するそのサイトは、すぐに認証コードの入力を求め——そしてそれを盗み取る。攻撃者はログインの中間にいるため、被害者がコードを入力した瞬間に、有効期限が切れるはるか前から受け取れる。攻撃者は自分でログインし、被害者はエラーページを見るだけだ。
認証アプリはこれを難しくはするが、防げはしない。時間ベースのコードは約30秒しか有効でなく、攻撃者の猶予時間を狭める。最近のフィッシングキットはリアルタイムプロキシとして動作し、これに対処する。コードを即座に中継するか、セッションを開いたままにして、最初のコードが期限切れになれば新しいコードを被害者に求める。
教訓: ウェブサイトに入力するコードは、入力した瞬間に盗まれうる。コードの有効期間は攻撃者の締め切りを決めるだけ——それ以上のものではない。
その他の実用上の違い
信頼性。 SMSコードはキャリアに依存します。電波が弱い、機内モード、ネットワークの混雑などにより、コードが数分遅れたり完全に届かなくなったりして、ログイン中に締め出されることがあります。
コストと旅行。 認証アプリはデバイス自体でコードを生成します。オフラインでも、機内でも、海外でも、ローミング料金なしで動作します。海外でSMSを受信するのは遅かったり高額になったりします。
電話の紛失。 どちらの方法もコードを1つのデバイスに紐付けますが、SMSのみの設定なら紛失からの復旧は容易です。コードは引き続きあなたの番号に届くからです。認証アプリを入れた電話をバックアップなしで紛失または初期化すると、リカバリーコードを使うかプロバイダーのアカウント復旧手続きを行うまで、コードは失われたままになります。
バッテリーとアップデート。 アプリには充電済みで正常に動作する電話が必要です。SMSも同じですが、さらに電波も必要です。
どちらも完璧ではありません。アプリの方が単に失敗する状況が少ないだけです。
結論:どちらが安全か
認証アプリはSMSより、2つの主要な攻撃経路の両方で優れています:
- SIMスワップ: SMSコードは電話番号に紐づいており、攻撃者はその番号を乗っ取れます。アプリのコードはデバイス上にあり、電話網を一切経由しません。
- フィッシング: テキストメッセージでは、コードを読んで偽サイトにそのまま貼り付けてしまいがちです。アプリのコードは30秒ごとに更新され、特定の1アカウントに紐づくため、悪用できる時間的猶予が狭まります — とはいえ、執拗なフィッシャーは有効なコードをだし取れる可能性はあります。
とはいえ、SMS 2FAは2FAなしよりはるかに良いものです。サイトがSMSしか選択肢を提供していないなら、有効にしましょう。
両者より強力なのはハードウェアセキュリティキーです。ログイン先のサイトを暗号学的に検証し、フィッシングに耐えるよう作られています。サイトが対応していれば、使いましょう。
認証アプリへの切り替え方法
最も重要なアカウントから始めましょう。まずメール、次に銀行、そしてその他すべてです。
- セキュリティ設定を開きます。 各アカウントで「二要素認証」「2FA」「セキュリティ」を探します。認証アプリに対応していないサービスもあるため、他の準備を進める前に必ず確認してください。
- 方法として「認証アプリ」を選択します。 サイトにQRコードが表示されます。
- アプリでスキャンします。 Google Authenticator、Authy などのアプリで追加(+)ボタンをタップし、カメラをコードに向けます。アカウントがアプリに追加され、すぐにコードの生成が始まります。
- バックアップコードをオフラインで保存します。 多くのサービスでは、セットアップ中に一回限りのリカバリーコードが表示されます。書き留めるかパスワードマネージャーに保存してください。同じスマートフォンのスクリーンショットとして保存しないでください。
- SMSを解除する前に確認します。 アプリで生成されたコードを入力し、動作を確認します。その後で初めて、SMSコードの無効化を検討してください。
両方の方法を一時的に有効にしておくのは問題ありませんが、SMSだけに頼るのは避けるべきです。
復旧計画
スマートフォンを紛失してもアカウントを失うことのないように。必要になる前に復旧の準備をしましょう。
バックアップコードを保存する
ほとんどのサービスでは、認証アプリを有効にする際に使い捨てのバックアップコードのセットが表示されます。紙に印刷するか書き写して、重要書類と一緒に保管するなど、安全な場所にオフラインで保存してください。保護しようとしているのと同じ端末上のスクリーンショット、メモアプリ、プレーンテキストファイルに残さないでください。
代替手段を用意する
- バックアップコードを印刷して安全に保管します。
- サービスが複数の認証器の登録を許可している場合は、タブレットなどの2台目の端末の登録を検討しましょう。
- アプリによっては暗号化バックアップやマルチデバイス対応を提供しているものもあります。頼りにする前に、アプリのドキュメントを確認しましょう。
古いスマートフォンを手放す・初期化する前に
- 新しい端末で認証アプリを再登録します。
- 各サービスが新しい端末のコードを受け付けることを確認します。
- その後で初めて古いスマートフォンを初期化します。この手順を省略することが、自分で自分を締め出してしまう最も一般的な原因です。
優先順位はシンプルです。2FAなしよりSMS、SMSより認証アプリ、そして両方が使えなくなったときはバックアップコードが救いの手となります。今日セットアップしましょう。復旧は事前の準備があって初めて機能します。
このガイドを共有
ブログの最新記事
2FAセキュリティチェックリスト:今日からアカウントを守る12のステップ
2FAの設定、パスワードの管理、回復オプションを網羅する実践的なセキュリティチェックリスト。今日から実践できる12の具体的なステップで、アカウントを乗っ取りから守りましょう。
続きを読む2FAの歴史:ハードウェアトークンからパスキーまで
クリップ式ハードウェアトークンやSMSコードから、今日のフィッシング耐性のあるパスキーへ。二要素認証がどのように進化し、なぜ各段階が起きたのかを解説します。
続きを読む