TOTP(ワンタイムパスワード)ジェネレーター
Base32形式のTOTPシークレットから、Google Authenticator等と同じ6桁のワンタイムパスワード(RFC 6238)をブラウザ内だけで生成します。シークレットは一切送信されません。
TOTPアルゴリズムについて
TOTP(Time-based One-Time Password)は RFC 6238 で規定された、時刻に基づくワンタイムパスワード生成アルゴリズムです。共有シークレットと現在時刻を一定間隔ごとのカウンタに変換し、HOTP(RFC 4226)と同じ動的切り捨てアルゴリズムで数字コードを導出します。
| HMACアルゴリズム | SHA-1(デフォルト)、SHA-256、SHA-512から選択可能 |
|---|---|
| コード桁数 | 6桁(Google Authenticator等の主要な2FAアプリと同じ標準桁数) |
| 更新周期 | 30秒ごとに新しいコードへ切り替わります |
Tips
- シークレットは2要素認証(2FA)の初回登録時にQRコードの下などに表示される「セットアップキー」の文字列です。すでにスマートフォンの認証アプリに登録済みの場合は、そのシークレットをこのツールに入力すれば同じコードを確認できます。
- ハッシュアルゴリズムはサービスによってSHA-1以外(SHA-256・SHA-512)を採用している場合があります。生成されたコードが実際のアプリと一致しない場合は、アルゴリズムを切り替えて試してください。
- コードは30秒ごとに自動更新され、プログレスバーで残り時間が一目でわかります。切り替わり直前にコードをコピーすると、認証先に届くまでに無効になってしまうことがあるため注意してください。
- このツールはブラウザのタブを閉じるとシークレットが完全に破棄され、どこにも保存されません。バックアップコードとして使う場合は、別途安全な場所(パスワードマネージャー等)にシークレット自体を保管してください。
よくある質問
余談ですが ― 2段階認証が「6桁」に落ち着いた理由
TOTPの仕様(RFC 6238)を策定したOATH(Initiative for Open Authentication)は、HOTP(RFC 4226)の動的切り捨てアルゴリズムをそのまま流用し、コード桁数を実装側で自由に選べる設計にしました。それにもかかわらず6桁が事実上の業界標準になったのは、Google Authenticatorが2010年の初期実装でこの桁数を採用し、以降多くのサービス・ライブラリがそれに追従したためです。
6桁という長さは絶妙なバランス点でもあります。100万通り(10の6乗)の組み合わせがあれば、30秒という短い有効期限と組み合わさることでブルートフォース攻撃は現実的に不可能になる一方、ユーザーが暗記して手入力するにはこれ以上長いと実用性が落ちてしまいます。SMS認証コードの多くも同じく6桁を採用しているのは偶然ではなく、この「短時間で使い捨てる数字コード」というジャンル全体で収束した経験則です。
TOTPの前身であるHOTP(RFC 4226、2005年)は「カウンタ」を使う方式で、コードを使うたびにカウンタを1つ進める必要がありました。しかしユーザーがボタンを押し忘れたりデバイスとサーバーのカウンタがずれたりする運用上の問題が頻発したため、2011年に策定されたTOTPでは「現在時刻」という誰でも同じ値を参照できる基準に置き換えられ、運用が大幅に簡素化されました。