TOTP検証ツール
Base32のシークレットに対して、現在または指定した時刻でTOTPコードが有効かを確認。実際の2FAサーバーと同様に、±ステップの許容範囲を調整できます。
2FA 設定時にサービスが表示するキーです。スペースや小文字が含まれていても構いません。
現在のステップの前後 ± ステップ数。既定の周期では 1 = ±30 秒。
空欄なら現在時刻を使います。
サーバーと同じく、まず現在のステップ、次に許容範囲までの前後のステップを確認します。実際のサーバーでは使用済みのコードも拒否する必要があります。
すべてブラウザ内で実行されます。データがアップロードされることはありません。
TOTP検証ツールとは?
シークレットとコードを入力すると、そのコードが現在、または指定した時刻で有効かどうかを、認証サーバーと同じ時計ずれの許容範囲で確認できます。結果には一致した時間ステップが表示され、時計の問題の診断に役立ちます。
TOTP検証ツールの使い方
- シークレットキー(Base32)を貼り付けます。
- 確認するコードを入力します。
- アルゴリズム、桁数、Period、許容するずれ(ステップ数)を設定します。必要ならUnix timeも指定します。
- 検証をクリックして結果を確認します。
例
Secret GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ, 8 digits, Unix time 89, code 94287082, drift 1
Valid: the code matches time step -1 (clock drift).
TOTP検証ツールを使うべき場面
失敗する2FAログインのデバッグ、実装の許容範囲のテスト、ハードウェアトークンのコードの確認に使います。実際のサーバーは、さらに一度使用されたコードを拒否する必要があります。
TOTP検証ツールの仕組み
まず現在のステップ T = floor(時間 / 周期) を確認し、次にT−1、T+1、T−2…と許容するずれの範囲まで確認します。各ステップのコードはRFC 4226/6238に従ってHMACで計算され、入力されたコードと比較されます。一致した場合はそのオフセットが報告されます。たとえば前の30秒の枠のコードなら−1です。
一般的な使用例
- 時計のずれが原因の2FAログイン失敗の診断
- TOTP実装の受け入れ範囲のテスト
- ハードウェアトークンのコードの検証
- TOTP検証の仕組みの説明
よくある質問
サーバーはどのくらいのずれを許容すべきですか?
RFC 6238は、ネットワーク遅延のために最大1ステップ前までを推奨しています。多くのサーバーは±1ステップ(±30秒)を受け付けます。
有効なコードがログイン後に拒否されるのはなぜですか?
リプレイ攻撃を防ぐため、サーバーは使用済みのコードを記憶し、再度の使用を拒否する必要があるからです。
ここでHOTPのコードを検証できますか?
いいえ。HOTPジェネレーターを使い、想定するカウンター値のコードと比較してください。