用語辞典
ワンタイムパスワード(OTP)とは — TOTP/HOTP/SMSの違いと限界
ワンタイムパスワード(OTP)は、一度きり・短時間だけ有効な使い捨てコードです。認証アプリのTOTP、カウンタ式のHOTP、SMSで届くコードの違い、パスワード漏洩に強い理由、そして中間者型フィッシングには突破されうるという限界までを、攻撃手順を伏せて防御目線で解説します。
一度きりで使い捨て——それがワンタイムパスワード(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を横取り
- 根本原因=コードは人が偽サイトに渡せてしまう(=ドメインに紐づかない)
当サイトの視点:OTPは通過点、終点はパスキー
OTPは「パスワードだけ」から抜け出す優れた第一歩です。実際、SMSでもTOTPでも、入れるだけで乗っ取りの大半は止まります。ただし当サイトはOTPを終点ではなく通過点と位置づけます。中間者型フィッシングが現実の脅威である以上、最終形は署名がドメインに紐づき、原理的に偽サイトへ出せないパスキー(FIDO2)。優先順位は明快で、まず全アカウントにOTPを入れ、王国の鍵(メール・ドメイン・決済)から順にパスキーへ引き上げる。「注意して偽サイトを見破る」ことに頼らないのが本筋です。
次に読む
- 用語:二要素認証(2FA)とは(OTPが“2つ目の証明”として使われる文脈)/ パスキーとは(OTPの限界を超えるフィッシング耐性)
- 用語:フィッシングとは(OTPを中継する中間者型AiTMの理解)
- 入門:二要素認証(MFA)の正しい選び方(方式の選定を実務で)
よくある質問
Qワンタイムパスワードと普通のパスワードは何が違いますか?
普通のパスワードは変えない限りずっと同じ(固定)で、一度漏れると変更するまで悪用され続けます。ワンタイムパスワード(OTP)は一度きり・短時間だけ有効な使い捨てで、使えばすぐ無効になります。だから盗み見られても再利用されにくく、固定パスワードの弱点(漏洩・使い回し)を補います。多くのサービスで、パスワードに“もう一つの証明”として足す二要素認証の一手段として使われます。
QSMSで届くワンタイムパスワードは安全ですか?
パスワードだけよりは確実に強いですが、OTPの中では最も弱い部類です。SMSはSIMスワップ(電話番号の乗っ取り)で横取りされたり、偽サイトが中継する中間者型フィッシングで抜かれたりします。可能なら認証アプリのTOTPへ、さらに重要なアカウントはパスキーへ移行するのが安全です。
Q認証アプリのコードはなぜ30秒ほどで変わるのですか?
それがTOTP(時刻ベースのワンタイムパスワード)だからです。アプリとサービスが同じ秘密の種(シークレット)と現在時刻から、同じコードを一定間隔(多くは30秒)ごとに計算します。時間が来ると古いコードは無効になり、新しいコードに切り替わります。短命にすることで、盗み見られても使える時間をごく短く抑えているのです。