本文へスキップ

SMS認証の仕組みを図解|コードが届くまでの経路と有効期限・回数制限

電話番号を入力して「送信」を押すと、数十秒後に6桁の数字が書かれたSMSが届く。入力すれば認証は完了します。たった一往復のやりとりに見えますが、この間にコードはサービスのサーバーを出て、SMS配信事業者と携帯キャリアの設備をいくつも通り抜けています。

経路と判定ルールを知っておくと、「2通目を送ったら1通目のコードが使えなくなった」「30分後に届いたコードが弾かれた」といった現象が、仕様どおりの挙動なのか本当の不具合なのかを切り分けられるようになります。

この記事でわかること

  • サービスが電話番号を求める理由と、SMS認証が担っている役割
  • 確認コードが発行されてから端末に届くまでの経路
  • 有効期限・ワンタイム・回数制限という3つの判定ルール
  • SMS・音声通話・認証アプリそれぞれの向き不向き

サービスはなぜ電話番号を聞くのか

メールアドレスは誰でも何個でも用意できますが、携帯電話番号はそうではありません。日本では携帯音声通信事業者に契約時の本人確認が義務づけられており、1人が無限に番号を持つことは現実的ではありません。この「取得しにくさ」が、サービス側から見た電話番号の価値です。

SMS認証には、おおむね3つの役割が与えられています。

  • 一人一アカウントに近づける:同じ番号で何個もアカウントを作れないよう制限し、不正な大量登録を抑える
  • 2段階認証の2つ目の要素にする:パスワードを知っているだけではログインできない状態をつくる
  • 復旧の連絡先にする:パスワードを忘れたときや不審なログインがあったときの通知先にする

一方で、電話番号は解約後に別の人へ再割り当てされますし、SIMの再発行を悪用して番号ごと奪われる手口も報告されています。弱点の詳細はSMS認証の危険性とSIMスワップ対策で扱っています。仕組みを理解するうえでは、SMSは「その番号を今持っている端末」を確認しているだけで、本人そのものを確認しているわけではないという点を押さえておくと見通しがよくなります。

コードが端末に届くまでの経路

確認コードの旅は、だいたい次の5区間に分かれます。自社システムだけで完結していないため、どこか1区間が詰まれば届きません。

  1. サービスのサーバーがコードを発行する:乱数から数桁の数字を作り、「どの電話番号・どの手続き宛てか」「いつ発行したか」とセットで保存します。
  2. SMS配信事業者へ送信を依頼する:多くのサービスは自前で携帯網につながず、SMS配信事業者(アグリゲーター)のAPIに宛先と本文を渡します。
  3. 配信事業者が経路を選ぶ:宛先の国や番号の種別を見て、国内キャリアへ直接渡す経路か、海外経由の国際SMS経路かを決めます。
  4. キャリアのSMSセンターが預かる:SMSは一度センターに蓄積され、端末が受け取れる状態になってから配信されます(蓄積再送方式)。圏外や電源オフの間は保留され、復帰後にまとめて届きます。
  5. 端末のメッセージアプリが受信する:ここで初めて利用者の目に入ります。
サービスのサーバー、SMS配信事業者、キャリアのSMSセンター、端末という4段階を通って確認コードが届く経路と、各区間で起こりうる遅延を示した図
画面に「送信しました」と出るのは2区間目まで。端末に届いた保証ではありません。

この構造から分かることが2つあります。ひとつは、画面の「SMSを送信しました」という表示が、あくまで配信事業者に依頼できたという意味でしかないこと。もうひとつは、経路によって送信元の見え方が変わることです。国内直収の経路なら見慣れた番号から、国際経路なら英数字の送信者名や普段見ない番号から届くことがあり、同じサービスでも日によって表示が違う場合があります。

コードの作り方と照合のルール

SMSで届くコードは、認証アプリの6桁コードとは作られ方が根本的に違います。認証アプリ(TOTP)は端末とサーバーが同じ鍵と時刻から同じ数字を計算していますが、SMSのコードはサーバーが一方的に乱数で作り、通信路で運んでいるだけです。端末側は何も計算していません。この違いが、通信が必要かどうかという差になって表れます。仕組みの比較は認証アプリ(TOTP)の仕組みと使い方に詳しくまとめてあります。

入力されたコードをサーバーが受け取ったとき、通常は次の3つをすべて確認します。

  1. 一致しているか:その番号・その手続きに対して発行した値と同じか
  2. 期限内か:発行時刻からの経過時間が許容範囲内か
  3. 未使用か:すでに認証に使われていないか(使用済みなら破棄される)

3つ目があるため、一度通ったコードを別の端末やブラウザでもう一度使うことはできません。また、まともな実装ではコード自体をそのまま保存せずハッシュ化して保持し、何回入力を間違えたかも記録しています。「コードが違います」を何度か繰り返した時点で、そのコードを無効にして再送を促す動きになるのはこのためです。

有効期限・再送・回数制限

SMS認証でつまずく原因のほとんどは、この3つのルールのどれかに当たっています。

有効期限

期限はサービスごとに決められており、数分から10分程度に設定されるのが一般的です。盗み見や後からの再利用を防ぐ目的なので、長くはできません。SMSが遅れて届いた場合、手元に表示された時点ですでに期限を過ぎていることがあります。

再送すると前のコードが無効になる

多くのサービスは、再送のたびに新しいコードを発行し、同時に前のコードを無効化します。そのため「1通目が遅れて届き、それを入力して弾かれる」という流れが起こります。複数のSMSが並んでいるときは、いちばん最後に届いたメッセージのコードだけを使うのが確実です。

回数制限

送信側にも制限があります。同じ番号への送信回数、同じアカウントからの要求回数、入力の試行回数などが数えられており、上限を超えると一定時間は受け付けられません。SMSは1通ごとに配信費用が発生するため、課金を狙って大量の送信要求を発生させる不正(SMSポンピング)への備えという側面もあります。

届かないときに「送信」を連打すると、コードが次々に入れ替わるうえ、回数制限に当たって待たされる時間が長くなります。2〜3分待って状況を確認し、それでも届かなければ原因を切り分ける方が早く終わります。確認の順序はSMS認証コードが届かない原因と対処法にまとめました。

コード発行から有効期限切れまでの時間の流れと、再送によって前のコードが無効化される様子を示したタイムライン図
再送した瞬間に前のコードは失効します。並んだSMSのうち有効なのは最後の1通だけです。

SMS・音声通話・認証アプリの違い

同じ「確認コードを受け取る」操作でも、方式によって必要な条件と弱点が変わります。サービス側が複数の方式を用意している場合は、使う環境に合わせて選べます。

方式受け取り方必要なもの主な弱点
SMSメッセージとして数桁の数字が届くSMSを受信できる回線と電波番号の乗っ取り・再割り当て、経路の遅延
音声通話(自動音声)電話がかかってきてコードを読み上げる通話できる回線(固定電話も可の場合あり)留守番電話に転送されると聞き逃す、聞き間違い
認証アプリ(TOTP)アプリに6桁コードが表示される登録済みの端末(通信は不要)端末紛失時の備えが自己責任になる
パスキー・セキュリティキー生体認証やキーのタップで完了対応端末またはキー、対応サービス対応していないサービスがまだある

偽サイトでコードごと入力させる手口に対しては、SMSも認証アプリも無力です。入力先のURLを確かめる習慣が前提になります。その点で構造的に強いのはパスキーで、仕組みはパスキーとは|仕組みとメリット・デメリットで説明しています。

使えるのは「自分の番号」だけ

SMS認証を求められたとき、使えるのは自分が契約している番号だけです。他人の番号を借りて認証を通す、あるいは代行業者に通してもらうといった行為は、サービスの利用規約違反にとどまりません。日本では他人名義の携帯電話を無断で譲り受けたり、業として有償で貸し出したりする行為が携帯電話不正利用防止法で規制されており、罰則も定められています。いわゆるSMS認証代行については、逮捕・起訴された事例が報じられています。

SMSを受け取れない事情があるときの正しい選択肢は、次のようなものです。

  • 自分名義で、SMSに対応した回線を用意する(データ専用のSIMではSMSを受信できないことがあります)
  • サービスが音声通話での認証に対応していれば、そちらを選ぶ
  • 認証アプリやパスキーなど、電話番号を使わない方式に切り替える
  • メールでワンタイムコードを受け取る方式を使う(ドメインメールのOTPログインの仕組み)

なお、海外のサービスに日本の番号を登録するときは、国番号の付け方を間違えると送信自体が行われません。書き方は日本の電話番号と国番号+81の使い方で整理しています。

よくある質問

SMSのコードは途中で盗み見られることがありますか?

経路上の事業者は本文を扱う立場にあり、SMS自体は暗号化された通信路として設計されていません。より現実的な危険は、端末のロック画面に本文が表示される設定や、メッセージを別のアプリ・別の端末に転送する設定を悪用されるケースです。通知のプレビュー設定と転送設定は一度確認しておくとよいでしょう。

機内モードでもSMS認証は使えますか?

使えません。コードはサーバーから送られてくるため、受信できる状態の回線が必要です。機内モードでも使えるのは、端末内で計算する認証アプリのコードです。

同じSMSが2通届くのはなぜですか?

蓄積再送の再試行や、配信経路の冗長化によって重複配信が起きることがあります。本文のコードが同じであればどちらを入力しても同じですが、コードが違う場合は再送が行われているため、後に届いた方を使ってください。

1つの電話番号を複数のアカウントに登録できますか?

サービスによって異なります。2段階認証用としては複数アカウントで同じ番号を登録できる場合もありますが、新規登録時の本人性確認として使われている場合は、1番号あたりの上限が設けられていることが多いです。上限を回避しようとする行為は規約違反になります。

固定電話の番号でSMS認証はできますか?

一般にSMSは携帯電話番号向けのサービスなので、固定電話番号では受信できません。ただし音声通話での認証に対応しているサービスなら、固定電話を登録できる場合があります。登録画面で「通話で受け取る」が選べるかを確認してください。

まとめ

  • SMSのコードはサーバーが乱数で発行し、配信事業者とキャリアを経由して端末に届く
  • 照合は「一致・期限内・未使用」の3条件で、使ったコードはその場で失効する
  • 再送すると前のコードは無効になるため、最後に届いた1通だけを使う
  • 連打は回数制限に当たるだけで解決にはつながらない
  • 電話番号を使わない認証方式を併用しておくと、受け取れないときに詰まらない

メール側でワンタイムコードを受け取る運用を検討している場合は、ドメインメール(OTP受信)のカテゴリで用途ごとの取り扱いをご覧いただけます。設定で迷ったときはサポートまでお問い合わせください。

KeyCenter編集部

デジタルアカウントの安全な使い方や設定手順を、実際の画面の流れにそってまとめています。内容は公開時点の情報です。各サービスの最新の仕様は公式ヘルプもあわせてご確認ください。

関連する商品

一覧を見る

あわせて読みたい

記事一覧