2025年2月21日·1分で読めます

SMS OTPと認証アプリ:適切なMFAの選び方

SMS OTPと認証アプリを比較:配信問題、フィッシングリスク、ユーザーの負担、実際に発生するサポートチケットを比較して最適なMFAを選ぶ方法。

SMS OTPと認証アプリ:適切なMFAの選び方

MFAの方式選択がサポート負担につながる理由

ほとんどの人はMFAを意識するのは失敗したときだけです。コードが遅れて届く、電話の電波がない、端末アップグレードでアプリが消える──ユーザーはログイン画面で立ち往生し、余分な安全措置が「仕事ができない」に変わります。

だからこそ、SMS OTPと認証アプリの比較は単なるセキュリティ論ではありません。サポートのキュー、解約リスク、チームが手動で身元確認を行う頻度を変えるプロダクト判断です。

MFAが壊れると、ユーザーは通常3つの行動のいずれかを取ります:数回やり直す、フローを放棄する、あるいはアカウントが乗っ取られたと思ってパニックでサポートに連絡する。原因が単純でも感情は急を要することが多く、そのためチケット対応は遅く高コストになります。

出荷前にサポート負荷を予測するには4つの領域に注目してください:実際の信頼性(メッセージ配信と端末変更)、フィッシング/乗っ取りリスク、ユーザーフリクション(設定と毎回のログイン)、そして実際に発生するチケットの種類です。

SMSコードは消費者向けアプリでよく使われます(馴染みがあり設定がほとんど不要)。認証アプリはキャリア依存を減らし、通信に関連する一部のリスクを下げるため、職場や管理ツールでよく選ばれます。

SMS OTPの配信:現実で何が壊れるか

SMSはシンプルに感じますが、「配信済み」と「ユーザーが受け取って使える」は同じではありません。ここでチームはサポート量に驚くことがあります。

場合によってはSMSは即時に届きます:同一国内、電波良好、認証トラフィックを絞らないキャリア。しかし別のときは遅れます。キャリアはピーク時に遅延させたり、スパムフィルタをかけたり、繰り返し送信をスロットルしたりします。その結果、コードが有効期限切れで届いたり、複数のコードが同時に届いてユーザーが古い方を試したりします。

国際利用はさらに問題が出やすいです。ある国では特定の経路のカバレッジが限定されていたり、キャリアが検証メッセージをデフォルトでブロックしたりします。ローミングはトラフィックを別経路に迂回させ、数分単位の遅延を生むことがあります。ユーザーが旅行するなら「自宅では動くが海外では動かない」というチケットが出ます。

電話番号はチームが想定するより頻繁に変わります。SIMを切り替える、アクセスを失う、誤入力したまま気づかない、といったことが起きます。再利用された番号はさらに厄介で、休眠していた番号が再割当され、将来のSMSログインが別人の手元に届くことがあります。

再送フローはフラストレーションが高まる場所です。ユーザーが“再送”をタップしても制限や明確なフィードバックがなければ、再送ループが発生します:多数の送信、到着遅延、どのコードが有効か分からない混乱。

監視して管理画面に出す価値のあるデータは明確です:ログインごとの送信試行回数、プロバイダが報告する配信確認、コード到着までの時間(送信時刻と送信時刻対提出時刻)、プロバイダのエラー理由(ブロック、無効番号、スロットル)、再送やロックアウトのトリガー。

例:シンガポールの顧客がドイツでローミング中にサインインを試み、再送を2回タップして3通届き、最初のコードを入力した。もしあなたがtime-to-codeと再送回数をログに残していれば、そのチケットは長いやり取りではなく短いトリアージで済みます。

認証アプリの信頼性:ユーザーが詰まる場所

認証アプリは通常SMSより一貫性があります。端末上で時間ベースのコードを生成するためオフラインでも動きます。キャリア遅延やブロック、ローミングの不意打ちがありません。

紙の上ではセットアップは簡単です:QRコードを一度読み取り、ログイン時に6桁を入力。実際は、ラップトップと携帯を行き来する最初の1分で詰まる人が多いです。何を見ればよいか分からないことが原因です。

多くの問題は認証アプリ自体ではなく、端末やユーザーの期待にあります:

  • 端末の時刻がずれていてコードが一致しない(手動時刻設定がよくある原因)。
  • 掃除の際に認証アプリを削除してしまいアカウントが「ロック」されたように見える。
  • 端末を紛失またはワイプし、バックアップ方法がない。
  • 端末をアップグレードしてコードが自動で移行されると思い込んでいる。
  • 仕事用の端末に登録していて、退職後にアクセスできなくなる。

使いやすさはチームが想定するより重要です。ログイン中にアプリを切り替えたり、コードをコピーしたり、カウントダウンと競うのはストレスになります。明確なプロンプトが有効です:コードがどこにあるか正確に示し、失敗したときに何をするかを提示し、プラットフォームが提供すれば自動入力をサポートしてください。

複数端末の期待と追跡すべき指標

ユーザーはしばしば複数の端末(携帯+タブレット、個人+仕事)を求めます。許可しないなら、登録時にそう伝え、ロックアウト後ではなく事前に知らせてください。

早期に摩擦を察知するシグナルはいくつかあります:登録完了率(開始するが完了しない人の割合)、繰り返しのコード失敗(多くは時刻同期の問題)、使われた復旧経路(端末紛失、新端末、アプリ削除)、MFAプロンプト後の離脱、原因別のサポートタグ。

フィッシング耐性とアカウント乗っ取りリスク

フィッシングは本当の差が出るところです。

SMS OTPでは、一般的な攻撃がリアルタイム中継です。ユーザーが偽のログインページにパスワードを入力すると、SMSコードが届きます。攻撃者はそのコードを本物のサイトで即座に使い、ユーザーが偽物のページを見ている間にログインを成功させます。コードが有効なのでログインは通ります。

SMSはまた通信系のリスクを抱えます。SIMスワップやナンバーポートアウト攻撃により誰かが電話番号を奪い、ユーザーが気づかないうちにOTPを受け取れるようになります。高価値アカウントでは致命的で、攻撃者はパスワードをリセットして何度でも試せます。

認証アプリはSIMスワップには強いですが、ログインが文脈チェックなしに有効なコードを受け入れる場合は同様にリアルタイム中継でフィッシングされ得ます。

タイプ入力より強い保護が欲しい場合、プッシュ承認(番号照合やアプリ名・地域などの明確な詳細を表示する)が有効です。プッシュも承認疲労で悪用され得ますが、6桁のコードを入力するよりハードルは上がります。

どちらの方式でも乗っ取りリスクを下げる実務的な方法:

  • 重要な操作(メール変更、支払先変更、新しいデバイス追加)にはステップアップルールを使う。
  • IPやデバイスが変わったときはMFAを再検査し、高リスクのセッションを長く放置しない。
  • ログイン画面は製品の手がかりを明確にして偽ページに気づきやすくする。
  • 不審な再試行はレート制限し、あり得ない移動や急速な失敗にはチャレンジを入れる。
  • 高価値ユーザー向けの復旧は乱用されにくいように厳格にする。

ユーザーフリクション:離脱が起きる場所

MFAイベントを適切に追跡
Postgresに基づくデータスキーマでユーザー、デバイス、MFAイベントを数分でモデル化します。
今すぐ試す

人々が離れるのは「セキュリティが嫌いだから」ではなく、ログインが遅い、分かりにくい、予測不能だからです。

摩擦の最大の違いはタイミングです。SMSは待たせます。認証アプリは何かを設定させます。

SMSは初回フローが馴染みやすい:電話番号入力、コード受信、入力。ただしメッセージが遅れる、古い番号に届く、手元にない端末に届くと摩擦が急増します。

認証アプリは初期にやることが多い:アプリをインストール、QRをスキャン、バックアップオプションを保存、コード入力。サインアップやチェックアウトの場面ではこれが重く感じられることがあります。

一般的に離脱が起きる瞬間は予測可能です:SMSを30〜90秒待ち、複数のコードが届く;アプリ間でコピー中に誤入力する;端末を切り替える(新しい電話、ワイプされた電話、アプリを入れられない仕事用端末);旅行中の問題(ローミング、新しいSIM、海外で受け取れない番号);第二要素を確実に管理できないケース。

「この端末を記憶する」は摩擦を下げますが、やり過ぎは危険です。再プロンプトを全くしなければラップトップが盗まれた時に乗っ取りリスクが上がります。頻繁にプロンプトしすぎるとユーザーは離脱したり弱い復旧手段を選びます。現実的な中間点は、新しい端末や重要な操作、あるいは適切な期間経過後に再認証することです。

ファネルを監視してください。ステップ1(電話番号入力)は問題ないのにステップ2(コード入力)で急落しているならSMS遅延やコード混乱を疑ってください。QR画面直後に離脱が起きるなら、セットアップがその場面には重すぎます。

予想されるサポートチケット(とトリアージ方法)

ほとんどのMFAサポート作業は「セキュリティ」よりも「人が最悪の瞬間にブロックされる」ことに関するものです:シフト交代中のログイン、デモ直前のパスワードリセット、管理者が新入社員をオンボードしようとしている場面など。

SMS OTPと認証アプリを比較するなら、ハッピーパスではなく障害モードに基づいてサポートキューを計画してください。

よくあるチケットのテーマ

同じパターンが繰り返し出ます。

SMSでは:「コードが届かない」「遅れて届く」「2通届く」「誤った番号」「番号が変更された」「キャリアのブロック」「ローミング問題」「短縮番号がフィルタされる」。

認証アプリでは:端末紛失、新端末、アプリ再インストール、「コードが一致しない」、どのアプリ/アカウントがコードを持っているかの混乱。

管理者からは「ユーザーがロックアウトされたのでMFAをリセット」「誰がこのアカウントのMFAをリセットしたのか?」といったポリシー・監査系のチケットも上がります。これらには明確な手順と証跡が必要です。

トラブルシューティング前に集めるべき情報

良いトリアージフォームはチケットごとの時間を大幅に節約します。求めるべき情報は:アカウント識別子とMFA方式、最後の試行のタイムスタンプとタイムゾーン(コードを受け取ったかどうか)、直近の成功したログイン時間と方法、端末情報(モデルとOSバージョン)、端末が最近変わったかどうか。SMS特有の情報としては電話の国とキャリアが分かれば有益です。

これでサポートは次の手順を素早く選べます:(ガード付きで)再送、電話番号確認、レート制限解除待ち、安全なMFAリセットの開始など。

やり取りを減らすサポート返信

応答は平易で非難しないトーンにしてください。シンプルな定型文で大部分のケースをカバーできます:

"試した時刻(タイムゾーン付き)と、SMSを受け取ったかどうかを確認してください。最近端末を変えたり認証アプリを再インストールした場合はいつか教えてください。ロックアウトされている場合は本人確認後にMFAをリセットできます。"

ステップバイステップ:適切なMFAを選び展開する

安全なサインインロジックを出荷
MFAチェック、ステップアップ、セッションポリシーの本番用バックエンドを生成します。
バックエンドを構築

まず正直な質問から始めてください:何を守り、誰から守るのか?ニュースレターのような消費者向けはリスクプロファイルが異なり、給与やヘルスケアデータ、管理者パネルは別の扱いが必要です。

同時にユーザー制約を書き出してください:対応する国、どれくらい旅行するか、第二端末を持っているか、アプリをインストールできるかどうか。

サポート地獄を避けるロールアウト計画:

  1. 脅威モデルと制約を定義する。フィッシングや乗っ取りが最大の懸念なら、騙しにくい方式を優先。多くのユーザーがスマホを持たない/アプリを入れられないなら代替を用意する。

  2. 1つのデフォルト方式と1つのバックアップを選ぶ。デフォルトは初日から大多数が使えるものに。バックアップは端末紛失、番号変更、旅行時にサポートを救います。

  3. ローンチ前に登録と復旧を設計する。復旧手段が故障しやすい同じものに依存しないようにする(例:SMSだけに頼らない)。紛失端末、新しい電話番号、「コードが届かない」の扱いを決める。

  4. 段階的に展開し、理由を平易に説明する。まずは管理者や財務など高リスクの役割、あるいは一部のユーザーから開始する。

  5. サポートを訓練し、失敗を追跡する。エージェントに簡潔な意思決定ツリーと身元確認ルールを与える。配信失敗、ロックアウト、登録時間、復旧リクエストを監視する。

よくあるミスと落とし穴

監査付きのリセットワークフローを追加
いつ何が変更されたかの履歴を残し、サポートが安全にMFAをリセットできるフローを提供します。
管理パネルを作る

多くのMFA展開失敗は単純な理由です:ポリシーが厳格すぎる、復旧が弱い、UIが分かりにくい。

頻繁にある落とし穴は、SMSだけを唯一の復旧手段にすること。電話番号は変わる、SIMは交換される、海外では受け取れないユーザーもいる。SMSが第二要素であり復旧方法でもあると、いずれ「永遠にロックされた」アカウントが発生します。

別の誤りは、ユーザーが新しい電話番号に変更する手続きをパスワードと新番号へのSMSだけで許可してしまうことです。これだと盗まれたパスワードがそのまま乗っ取りにつながります。電話やメール、MFA設定のような重要な変更には、既存の要素の確認、最近のセッションでの再確認、あるいは高リスクケースでは手動レビューを追加してください。

サポート負担を生む典型的なトラップ:

  • 実際のユーザーを罰する(厳しすぎる)か攻撃者を助ける(緩すぎる)再送/レート制限ルール。短いクールダウン、明確なカウントダウン表示、ハードキャップと安全なフォールバックを目指す。
  • プライマリ要素以外の復旧オプションがない。バックアップコード、二つ目の認証端末、サポートによるリセットで行き止まりを防ぐ。
  • リセット用の管理ツールや監査証跡がない。サポートにはいつMFAが有効になったか、何が変わったか、誰が行ったかを見せる必要がある。
  • ユーザーを責めるようなエラーメッセージ。「無効なコード」だけでは無限に再試行させる。次に何を試すべきかを示す。
  • 繰り返しの失敗を「ユーザーのミス」として扱い製品問題と見ないこと。特定のキャリア、国、端末モデルと失敗の相関があるなら修正可能なパターンです。

実装前の簡単チェックリスト

実際のユーザーが直面する状況でログインフローを検証してください:疲れている、旅行中、端末を切り替えている、会議5分前にロックアウトされるなど。最良の方式は、ユーザーが確実に完了でき、チームが危険な近道を使わずにサポートできるものです。

次の問いに答えてください:

  • セルサービスがないか旅行中(機内モード、ローミング遮断、SIM交換、番号変更)でもユーザーはMFAを完了できるか?
  • 安全で簡単な復旧経路があるか(バックアップコード、信頼済みデバイス、時間制限付き復旧、検証済みのサポートリセット)?
  • サポートが機密データ(パスワード全文やカード番号など)を求めずに素早く本人を確認できるか、文書化されたリセット手順はあるか?
  • 失敗したMFA試行をログに取り、乱用パターン(多くの再試行、同一IPから多数アカウント、パスワードリセット後の繰り返し失敗)をアラートできるか?
  • 画面上の文言はコードがどこから来るか、次に何をするかを曖昧さなく伝えているか?

もし復旧について「多分」としか答えられないなら一旦止めてください。ほとんどのアカウント乗っ取りはリセット時に起き、ほとんどの怒ったユーザーは復旧が分かりにくいときに現れます。

実用的なテスト:チーム外の誰かにMFAを設定してもらい、その後端末を失くした体でドキュメントだけで戻れるか試してもらってください。エンジニアリングとのチャットが必要になったら、それが現実のチケットでも起きます。

例:グローバルユーザーを持つカスタマーポータル

MFA画面を改善
登録、検証、復旧のための明確なWeb UIプロンプトを作成し、失敗を減らします。
Webアプリを作る

6人のチームが、米国、インド、英国、ブラジルにまたがる1,200人のアクティブユーザー向けのカスタマーポータルを運営しています。さらに40人の契約社員が出入りします。パスワードリセットですでにノイズがあるため、MFAを追加して乗っ取りを減らしたいがサポートが溢れるのは避けたい。

彼らはまずデフォルトをSMS OTPにしました。最初の週は問題なさそうに見えましたが、ある地域でキャリア遅延が発生すると状況は変わります。ユーザーはコードをリクエストし、待ち、再度リクエストして3通が一度に届き、古いコードを試して失敗しロックアウトされる。サポートには「コードが届かない」「コードがいつも間違っている」「旅行中に番号が変わった」といった波が来ます。VoIP番号、ローミングユーザー、厳しいスパムフィルタでも配信問題は出ます。

認証アプリをオプションで追加すると別のパターンが見えます。多くのログインはスムーズですが、失敗はスパイク的に発生します:ユーザーが電話をアップグレードしてアプリのコードが移らない、誰かが認証アプリを削除する、契約社員がQRスキャンのステップを逃して詰まる。チケットは「新しい電話でログインできない」「コードが一致しない」「デバイスを失くした」といった内容になります。

驚きを減らすセットアップ例:

  • 新規ユーザーには認証アプリをデフォルトにし、SMSはバックアップ(唯一の手段にしない)。
  • 復旧コードと明確な紛失端末フローを提供し、手動チェックをトリガーする。
  • 支払先変更や新しい管理者追加などリスクの高い操作にはステップアップを必須にする。
  • 契約社員には短めのセッション有効期限を設定し、新しい端末では再確認する。

次のステップ:製品を遅らせずにMFAを実装する

大多数のユーザーに合うデフォルト方式を選び、バックアップを追加してください。

消費者向けならSMSが最も簡単なデフォルトで、旅行者やVoIP番号利用者、より強いセキュリティを望む人向けに認証アプリを用意します。ワークフォースや管理重視の製品なら、認証アプリをデフォルトにして復旧用にSMSを残すのがよく使われる構成です。

ローンチ前にシンプルなサポートプレイブックを書き、何をログするか決めてください。大量のデータは必要ありません。送ったか、ユーザーが受け取ったか、検証中に何が起きたかが答えられる程度のログが必要です。

効果的なログ項目:MFA方式とタイムスタンプ、配信プロバイダの応答(受理、キュー、失敗)、検証試行回数と最後のエラー理由、最後に成功したMFA方式と日付。サポートを早くする小さな画面:ユーザーのMFAステータス、最近の失敗、監査付きの制御されたリセットフローを表示するだけで推測が減ります。

重いコーディングなしでポータルを組むなら、AppMaster (appmaster.io) はこれらのフローを中心にバックエンド、Webアプリ、モバイルアプリ、管理画面、イベントロギングを組み立てるのに役立ちます。

まずはパイロットで展開し、一週間失敗指標を見てから拡大してください。完了率、再送率、MFA完了時間、1,000ログインあたりのチケット数を追い、フローを締め、プレイブックを更新してからスケールしましょう。

よくある質問

通常はどちらをデフォルトにするべきですか:SMS OTPそれとも認証アプリ?

デフォルトは、ユーザーが確実に完了できる方法にしてください。管理者や契約社員、頻繁に出張するユーザーが多ければ、認証アプリの方が「コードが届かない」問題は少なくなります。スマートフォンを持っていない、またはアプリをインストールできないユーザーが多数いる場合はSMSが簡単なデフォルトになりますが、配信関連のサポートは増えることを見越しておいてください。

バックアップMFAは必要ですか、それとも1つで十分ですか?

少なくとも主要要素とは別のバックアップを用意してください。SMSを主要手段にするなら、認証アプリやバックアップコードを追加して、電話番号変更で締め出されないようにします。認証アプリを主要にする場合は、バックアップコードとサポートによるリセットフローがあると行き止まりを防げます。

「再送ボタンを押したら何も動かない」SMS関連チケットをどう減らせますか?

短いクールダウンを入れ、明確なカウントダウンを表示し、新しいコードが発行されたら古いコードを無効にして「複数のコード」混乱を減らしてください。画面に「最新のコードだけが有効です」と明示するだけで、再送ループや怒りのチケットは大幅に減ります。

出張やローミングでSMSを受信できないユーザーはどう扱いますか?

「家では動くが海外では動かない」はよくある問題です。出張前にSMS以外の方法に切り替えられるようにし、携帯回線なしでも使える復旧オプションを用意してください。サポート側は再送回数や直近の失敗を見られると迅速に対応できます。

なぜ認証アプリのコードが「一致しない」ことがあるのですか?ユーザーはどうすればいいですか?

最も多い原因は端末の時刻やタイムゾーンのずれで、手動設定が原因のことがよくあります。ユーザーには自動時刻を有効にするよう案内し、数回失敗した後にヒントを表示することを検討してください。繰り返し失敗をログに残すと早期発見につながります。

認証アプリを複数の端末で使えますか?

登録時に期待値を伝えてください。複数デバイスを許可するなら「もう一台追加する」手順を簡単にし、動作確認方法を示します。許可しない場合は明確に伝え、端末切替時に詰まらないようにバックアップコードを提供してください。

バックアップコードは有用ですか?どう使うべきですか?

有効な使い方は、セットアップ時に保存を促し、信頼されたセッションからいつでも再生成できるようにすることです。一度だけ表示して放置するのは避け、設定の見やすい場所に置いてください。バックアップコードは、端末紛失時の高価な個別確認を避ける単純で有効な手段です。

両方とも6桁コードを使う場合、フィッシング対策はどうすればいいですか?

入力型の6桁コードは、SMSでも認証アプリでもリアルタイム中継でフィッシングされ得ます。リスク低減策としては、重要な操作にステップアップを入れる、疑わしい試行をレート制限する、新しいデバイスや異常なサインイン時に再認証する、文脈を示す承認(プッシュ通知など)を導入する、などが有効です。

推測なくMFA問題を調査するために何をログすべきですか?

チャレンジを送ったか、ユーザーが検証を試みたか、失敗理由は何か、を素早く答えられるログを残してください。実務的にはMFA方式、タイムスタンプ、SMSの場合は送信/プロバイダのステータス、試行回数、最後のエラー理由、最後に成功したMFA方式と日時が役に立ちます。こうしたログがあれば長いやり取りを短くできます。

サポートが安全にMFAをリセットするにはどうすればいいですか?

リスクに応じた本人確認を要求する管理されたリセットを使い、誰がいつリセットしたかを記録してください。単にメール返信だけでリセットするのは避け、簡単に偽装されうる情報のみでのリセットは許可しないでください。AppMasterでは、MFAステータスと最近の失敗を表示する管理画面を作り、監査付きワークフローでリセットをルーティングできます。これによりサポートが場当たり的に対処する必要がなくなります。

始めやすい
何かを作成する 素晴らしい

無料プランで AppMaster を試してみてください。
準備が整ったら、適切なサブスクリプションを選択できます。

始める