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秒ごとに新しいコードへ切り替わります |
TOTP(ワンタイムパスワード)とは
TOTP(Time-based One-Time Password)は、IDとパスワードに加えてもう一段階の確認を求める二要素認証(2FA)で使われる、30秒ごとに切り替わる6桁の使い捨てコードです。あらかじめ登録した「シークレット」という共通の鍵と現在時刻を組み合わせて計算するため、サーバーと手元の認証アプリが通信しなくても同じコードを同時に導き出せる仕組みになっています。Google Authenticator・Microsoft Authenticator・Authyなど主要な認証アプリはすべてこのRFC 6238という共通規格に従っています。
このツールは、2FA登録時にQRコードの下などに表示される「セットアップキー」(Base32形式のシークレット)を入力するだけで、認証アプリと同じ6桁コードをブラウザ内で再現します。シークレットのBase32デコードとHMAC計算はすべてWeb Crypto APIで完結し、サーバーへ送信されることは一切ありません。認証アプリの再設定やコードの検算、複数デバイスでの動作確認などに役立ちます。
TOTPコードの生成方法
- シークレットを入力する 2FA登録時に発行されたBase32形式のセットアップキー(例: JBSWY3DPEHPK3PXP)を「シークレット」欄に貼り付けます。
- ハッシュアルゴリズムを確認する 多くのサービスはSHA-1を使いますが、一致しない場合はSHA-256・SHA-512に切り替えて試してください。
- 表示された6桁のコードを確認する 入力と同時に現在時刻に対応するコードが自動計算され、残り秒数のプログレスバーと共に表示されます。
- 必要に応じてコピーする 「コピー」ボタンでコードをクリップボードにコピーできます。切り替わり直前を避けて使用してください。
使いこなすためのヒント
- シークレットは2要素認証(2FA)の初回登録時にQRコードの下などに表示される「セットアップキー」の文字列です。すでにスマートフォンの認証アプリに登録済みの場合は、そのシークレットをこのツールに入力すれば同じコードを確認できます。
- ハッシュアルゴリズムはサービスによってSHA-1以外(SHA-256・SHA-512)を採用している場合があります。生成されたコードが実際のアプリと一致しない場合は、アルゴリズムを切り替えて試してください。
- コードは30秒ごとに自動更新され、プログレスバーで残り時間が一目でわかります。切り替わり直前にコードをコピーすると、認証先に届くまでに無効になってしまうことがあるため注意してください。
- このツールはブラウザのタブを閉じるとシークレットが完全に破棄され、どこにも保存されません。バックアップコードとして使う場合は、別途安全な場所(パスワードマネージャー等)にシークレット自体を保管してください。
TOTPジェネレーターが役立つ場面
2FAアプリの動作確認・移行
機種変更で認証アプリを入れ替える前に、控えておいたシークレットが正しいか、新端末に登録する前にこのツールで検算できます。
開発・テスト環境でのログイン確認
自社サービスに2FAを実装する際、テスト用アカウントのシークレットからコードを都度生成し、認証ロジックの動作確認に使えます。
バックアップ用シークレットの検証
パスワードマネージャー等に保管したシークレットが正しく機能するか、実機の認証アプリを開かずに手早く確認できます。
アカウント全体のセキュリティ強化
TOTPと合わせて、ログインパスワード自体の強度も見直したい場合はパスワード生成や覚えやすいパスフレーズ生成もご利用ください。
ハッシュ値の確認と合わせて使う
TOTPと同じくHMACやハッシュ関数の仕組みに興味がある方は、SHA-256ハッシュ計算で基礎となるハッシュ計算を試してみてください。
TOTP関連用語集
- TOTP(Time-based One-Time Password)
- 現在時刻から算出したカウンタを使ってワンタイムパスワードを生成する方式(RFC 6238)。一定周期(通常30秒)ごとにコードが自動的に切り替わります。
- HOTP(HMAC-based One-Time Password)
- TOTPの元になった規格(RFC 4226)。時刻の代わりに「使うたびに1つ進むカウンタ」を用いてコードを生成する方式です。
- シークレット(共有鍵)
- サービス側と利用者の認証アプリの両方が保持する秘密の鍵。Base32形式の文字列として2FA登録時に発行され、これと時刻からコードが計算されます。
- 二要素認証(2FA)
- パスワード(知識要素)に加えて、スマートフォンの認証アプリ等(所持要素)による確認を組み合わせるログイン方式。片方が漏えいしても不正ログインを防ぎやすくなります。
- タイムステップ(更新周期)
- TOTPのコードが新しい値に切り替わる間隔のこと。RFC 6238のデフォルトは30秒で、多くのサービス・認証アプリがこの値をそのまま採用しています。
- Base32
- バイト列を英大文字(A〜Z)と数字(2〜7)の32種類の文字だけで表現する符号化方式。TOTPのシークレットは可読性の高いこの形式で配布されます。
- 動的切り捨て(Dynamic Truncation)
- HMAC計算結果(長いバイト列)から、規則に従って4バイトを取り出し6桁の数値に変換する処理。RFC 4226で定義されたHOTP・TOTP共通のアルゴリズムです。
よくある質問
余談ですが ― 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では「現在時刻」という誰でも同じ値を参照できる基準に置き換えられ、運用が大幅に簡素化されました。