ワンタイムパスワード(OTP)は、一度きりで使い捨てのコードです。種類ごとの違いと、意外と知られていない限界(フィッシングには突破されうる)を整理します(攻撃手順は載せません)。
種類:TOTP / HOTP / SMS-OTP
「使い捨てコード」とひとくくりにされがちですが、作られ方で3種類に分かれます。
TOTP(時刻ベース)
認証アプリが秘密の種+現在時刻から計算。約30秒で切り替わる。オフラインで動く。
HOTP(カウンタ)
時刻でなく“回数(カウンタ)”で進む。押すたびに次のコード。ハードトークン等で使用。
SMS-OTP
SMSでコードを送る。手軽だがSIMスワップ・中継に弱く、最も脆い方式。
いずれも「一度きり・短命」という性質は同じで、固定パスワードが漏れてもそのコード自体は再利用しにくいのが強みです。特にTOTPは通信を介さずアプリ内で計算するため、SMSのような横取り経路がありません。
強みと限界:偽サイトに入力すると盗まれる
OTPは固定パスワードの弱点を補いますが、万能ではありません。決定的な限界は「人がコードを読んで打ち込む」点にあります。
OTPが効く場面
- パスワードの漏洩・使い回しによる乗っ取りを止める
- 盗み見られても短時間で無効になり再利用されにくい
- 認証アプリのTOTPはオフラインで動き、SMSより横取りに強い
OTPが破られる場面
- 中間者型フィッシング(AiTM):偽サイトがOTPを本物へ中継して即ログイン
- SIMスワップ:電話番号を乗っ取りSMS-OTPを横取り
- 根本原因=コードは人が偽サイトに渡せてしまう(=ドメインに紐づかない)
受け取り方による違い
同じ「ワンタイムパスワード」でも、コードがどこで作られ、どの経路で届くかで弱点が変わります。
| 方式 | コードが作られる場所 | 届く経路 | 主な弱点 |
|---|---|---|---|
| 認証アプリ(TOTP) | 自分のスマホの中 | 届かない(端末内で計算) | 偽サイトへの入力、スマホ紛失時の復旧 |
| ハードウェアトークン | 専用の小さな機器 | 届かない(画面に表示) | 偽サイトへの入力、機器の紛失 |
| SMS | サービスのサーバー | 携帯電話網 | 偽サイトへの入力、SIMスワップ、SMSの傍受 |
| メール | サービスのサーバー | メール | 偽サイトへの入力、メールアカウントの乗っ取り |
どの方式にも共通する弱点が「偽サイトへの入力」です。米国国立標準技術研究所(NIST)の認証ガイドライン SP 800-63B(2025年8月の第4版)は、手で入力するワンタイムパスワードはフィッシング耐性を持てないとし、SMSなど電話網を使う方式を「制限付き」の扱いにしています。米国のサイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)も2024年12月、SMSを2つ目の要素に使わないよう勧めています。
2FA・2段階認証・パスキーとの言葉の関係は、二要素認証(2FA)とはの比較表にまとめています。
TOTPのしくみ:QRコードの中身が秘密の値
認証アプリを設定するときに読み取るQRコードには、サービスとアプリが共有する秘密の値(シークレット)が入っています。アプリはこの値と現在時刻からコードを計算し、サービスも同じ計算をして一致するかを確かめます。
- 時間の区切りは、規格(RFC 6238)の推奨では30秒
- 通信の遅れを考えて、サービスは1つ前の区切りのコードまで受け付けることが多い(規格の推奨は最大1区切り)
- カウンタ式のHOTP(RFC 4226)は、ボタンを押すたびなどに回数が進む
この仕組みから、QRコードやシークレットの文字列を持っている人は、同じコードを作れることが分かります。設定画面のスクリーンショットをクラウドやチャットに残すのは、パスワードを書き残すのと同じです。
具体例:ネットバンキングの不正送金
2023年、日本ではネットバンキングの不正送金が急増しました。金融庁によると、2023年1月から11月までの被害は5,147件、約80.1億円(12月8日時点)で、いずれも過去最多でした。手口は、銀行を装ったメールやSMSで偽サイトへ誘導し、ネットバンキングのIDやパスワード、ワンタイムパスワードなどの情報を盗んで不正に送金するものだと説明されています。
この事例から分かることは2つあります。
- ワンタイムパスワードを入れていても、偽サイトに入力すれば止められない:コードの有効時間が短くても、入力されたその場で使われれば間に合ってしまいます
- 防ぐ場所は「入力する前」:金融機関は、IDやパスワードをメールやSMSで尋ねないとしています。メールやSMSのリンクから開いた画面でコードを入力しないことが、利用者にできる最も確実な対策です
その後、証券会社や銀行では、偽サイトでは成立しないパスキーなどの認証を必須にする動きが進んでいます(パスキーとは)。
自分のアカウント・サービスで確認する方法
SMSで受け取っているアカウントを認証アプリへ移す
メール、パスワードマネージャー、GitHub、クラウドなど重要なアカウントの2FA設定を開き、SMSになっていれば認証アプリ(TOTP)を追加して優先にする。パスキーが使えるならパスキーも足す。GitHubの手順は GitHubの2段階認証の設定 で解説している。
機種変更とスマホ紛失に備える
認証アプリが別の端末へ移せる設定(アプリのバックアップや移行機能)になっているかを確認する。各サービスのリカバリーコードは、パスワードマネージャーなどスマホとは別の場所に保存する。
QRコードとシークレットを残していないか確かめる
設定時のQRコードのスクリーンショットや、シークレットの文字列を写真フォルダ・クラウド・チャットに残していないかを探し、残っていれば削除する。
サービスを作る側は、検証の条件を見直す
コードの検証には失敗回数の制限をかける(6桁のコードは総当たりが現実的なため)。同じコードは有効時間内でも1回しか受け付けない。受け付ける時刻のずれは1区切り程度に絞る。管理者アカウントには、ワンタイムパスワードより強いパスキーを用意する。
当サイトの視点:OTPは途中の段階で、目指すのはパスキー
OTPは「パスワードだけ」から抜け出す優れた第一歩です。実際、SMSでもTOTPでも、入れるだけで乗っ取りの大半は止まります。ただし当サイトは、OTPを最終的な形ではなく途中の段階と位置づけます。中間者型フィッシングが現実の脅威である以上、目指すのは署名がドメインに紐づき、原理的に偽サイトへ出せないパスキー(FIDO2)です。
優先順位は明快で、まず全アカウントにOTPを入れ、重要なアカウント(メール・ドメイン・決済)から順にパスキーへ切り替えます。「注意して偽サイトを見破る」ことに頼らないのが正しい方向です。
出典(一次情報)
- IETF RFC 6238「TOTP: Time-Based One-Time Password Algorithm」 — rfc-editor.org(30秒の時間区切り、通信の遅れとして許す範囲は最大1区切り)
- IETF RFC 4226「HOTP: An HMAC-Based One-Time Password Algorithm」 — rfc-editor.org(カウンタ式のワンタイムパスワード、失敗回数の制限)
- NIST SP 800-63B-4(2025年8月) — pages.nist.gov(手入力のOTPはフィッシング耐性を持てない、電話網を使う方式は制限付き、同じOTPは1回だけ受け付ける、失敗回数の制限)
- CISA「Mobile Communications Best Practice Guidance」(2024年12月) — cisa.gov(PDF)(SMSを2つ目の要素に使わない)
- 金融庁「フィッシングによるものとみられるインターネットバンキングによる預金の不正送金被害が急増しています。」 — fsa.go.jp(2023年1〜11月の件数・被害額、ワンタイムパスワード等を盗む手口)
次に読む
- 用語:二要素認証(2FA)とは(OTPが“2つ目の証明”として使われる文脈)/ パスキーとは(OTPより強いフィッシング耐性)
- 用語:フィッシングとは(OTPを中継する中間者型AiTMの理解)
- 入門:二要素認証(MFA)の正しい選び方(方式の選定を実務で) / GitHubの2段階認証の設定(認証アプリとリカバリーコード)
- 事例:7pay 不正利用事件(2019)(2FAが無く決済アプリが乗っ取られた実例)