ワンタイムパスワード (OTP)
ワンタイムパスワード (OTP) とは何ですか?
ワンタイムパスワード (OTP)1 回のログインまたは短い時間枠の間だけ有効な短い数字コード。通常は第 2 認証要素として使われる。
ワンタイムパスワード(OTP)は一度だけ使える資格情報で、傍受されたコードも使用後は攻撃者にとって無価値になります。最近の OTP は、認証器(アプリやハードウェアトークン)とサーバーで共有する秘密から計算されます。HOTP(RFC 4226)は単調増加するイベントカウンターの HMAC-SHA-1 を 6-8 桁のコードに切り詰めます。TOTP(RFC 6238)はカウンターを Unix 時間をステップ(既定 30 秒)で割った値に置き換えるため、認証アプリはその周期で更新されます。OCRA(RFC 6287)はコードをサーバーのチャレンジや取引データに結び付け、古い S/KEY/OTP 方式(RFC 1760/2289)はハッシュを連鎖させて一度きりの利用を実現しました。
SMS やメールでの配信は一般的ですが脆弱です。SS7 傍受、SIM スワップ、モバイルマルウェアがコードを露呈させ、NIST SP 800-63B は 2017 年以降 SMS をアウトオブバンド経路として制限しています。
本質的な限界は、人間が読んで打ち直せる OTP はリアルタイムで中継できるという点です。Evilginx や EvilProxy のような中間者(adversary-in-the-middle)フィッシングキットはログインをプロキシし、OTP を捕捉して有効期間内に再送します。高価値アカウントには、フィッシング耐性がありオリジンに束縛される要素、すなわち FIDO2/WebAuthn パスキーを優先すべきです。これは同様の中継ができません。
flowchart TD
A[共有秘密がアプリとサーバーに配備] --> B{OTP の種類}
B -->|HOTP| C[イベントカウンターを加算]
B -->|TOTP| D[現在時刻を 30 秒ステップで割る]
C --> E[カウンターまたは時間ステップの HMAC-SHA-1]
D --> E
E --> F[6 から 8 桁のコードに切り詰め]
F --> G[利用者がログイン時にコードを送信]
G --> H{サーバーが再計算し時間枠内で照合}
H -->|一致| I[第 2 要素を受理]
H -->|不一致| J[拒否]● 例
- 01
Google Authenticator が 30 秒ごとに表示する 6 桁の TOTP コード。
- 02
銀行振込を承認するために送信されるワンタイムコード付き SMS。
● よくある質問
ワンタイムパスワード (OTP) とは何ですか?
1 回のログインまたは短い時間枠の間だけ有効な短い数字コード。通常は第 2 認証要素として使われる。 サイバーセキュリティの ID とアクセス カテゴリに属します。
ワンタイムパスワード (OTP) とはどういう意味ですか?
1 回のログインまたは短い時間枠の間だけ有効な短い数字コード。通常は第 2 認証要素として使われる。
ワンタイムパスワード (OTP) からどのように防御しますか?
ワンタイムパスワード (OTP) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
ワンタイムパスワード (OTP) の別名は何ですか?
一般的な別名: OTP, ワンタイムパスコード。