ワンタイムパスワード (OTP) とは、一度だけ有効で、一定時間が経過すると無効になる使い捨てのパスワードです。通常のパスワードが固定であるのに対し、OTP は毎回異なるコードが生成されるため、仮に盗まれても再利用できません。二要素認証の「所持情報」として広く利用されています。
OTP の主な配信方法は 3 つあります。第一に SMS で 4〜6 桁の数字コードを送信する方法で、銀行やオンラインサービスで最も一般的です。第二に Google Authenticator や Microsoft Authenticator などの認証アプリが 30 秒ごとに新しいコードを生成する TOTP (Time-based OTP) 方式。第三に専用のハードウェアトークン (キーホルダー型の小型端末) がコードを表示する方式です。
SMS による OTP には脆弱性があります。SIM スワップ攻撃で電話番号を乗っ取られると、OTP も攻撃者に届いてしまいます。また、スミッシングで偽サイトに誘導し、ユーザーが入力した OTP をリアルタイムで中継する「リアルタイムフィッシング」も報告されています。セキュリティの観点では、SMS OTP より認証アプリの方が安全です。
OTP を悪用した詐欺にも注意が必要です。「銀行のセキュリティ部門です。確認のため、今お送りした番号を教えてください」と電話で OTP を聞き出す手口があります。正規の銀行やサービスが電話で OTP を聞くことは絶対にありません。二要素認証と電話番号のリスクで詳しく解説しています。