0

TOTP ジェネレーター — ライブ 2FA 認証コード

Base32 TOTP シークレットを貼り付けて、ブラウザ上で完全にオフラインで、実際のライブ 6 桁の認証コードが 30 秒ごとに回転するのを確認します。

- -

30

処理中... 0%

結果

このツールは、Google Authenticator や Authy などのアプリで表示されるのと同じ 6 桁の回転コードである Base32 シークレットから、標準に準拠した実際のタイムベース ワンタイム パスワード (TOTP) コードを生成します。 2 要素認証の設定時に指定されたシークレット (通常は QR コードの後ろに隠されているのと同じ文字列) を貼り付け、電話アプリ内で行うのとまったく同じように、ライブ コードがカウントダウンして 30 秒ごとに更新されるのを確認します。これは、所有または管理する 2FA シークレットのテストと検証を目的としています。構築中のログイン フローのデバッグ、プロビジョニング QR を破棄する前のバックアップ コードの確認、またはシークレットが正しく入力されたことの再確認などです。

内部的には、これは RFC 4226 (HOTP) に基づいて構築された RFC 6238 (TOTP) の本物の実装であり、表面的なカウントダウンではありません。 Base32 シークレットは RFC 4648 に従って生キー バイトにデコードされ、現在の Unix 時間をタイム ステップで除算して移動カウンタを取得し、そのカウンタは 8 バイトのビッグ エンディアン バッファとしてエンコードされます。ブラウザーのネイティブ Web Crypto API (crypto.subtle) は、選択したハッシュを使用してそのバッファー上で HMAC を計算します。既存の認証アプリとの互換性のために SHA-1 がほぼ普遍的なデフォルトのままですが、より強力なバリアントをサポートするセットアップ用に SHA-256 および SHA-512 が提供されます。 RFC 4226 の動的切り捨ては、最後のバイトから取得したオフセットで HMAC 出力から 4 バイトを取り出し、最上位ビットをマスクオフし、結果を 10^6 または 10^8 を法として削減して 6 桁または 8 桁のコードを生成します。携帯電話の認証アプリが内部で実行するのとまったく同じ演算が行われます。

プロセスのすべての部分はローカルで行われます。サーバー コンポーネントも、シークレットを運ぶ分析ビーコンも、いかなる種類の外部 API 呼び出しもありません。フィールドに貼り付けた Base32 テキストは、タブ内で実行されている JavaScript によって直接解析され、タブから離れることはありません。これにより、これは信頼するマシン上で 2FA シークレットの健全性チェックを行う安全な方法になりますが、認証マテリアルに触れる他のツールと同様に、共有または公共のコンピューターにシークレットを貼り付けることは避け、所有するアカウントまたは明示的にテストを許可されたアカウントに関連付けられたコードに対してのみこれを使用する必要があります。

アルゴリズム、桁数、およびタイムステップ制御が存在するのは、実際の TOTP 展開が完全に均一ではないためです。ほとんどのコンシューマー サービスは 6 桁で 30 秒ステップの SHA-1 を使用しますが、一部のエンタープライズ ツールや開発者ツールでは、SHA-256 または SHA-512 シークレット、8 桁コード、または 15 秒や 60 秒などの非標準タイム ステップを発行します。これらの設定をプロビジョニング URI またはセットアップ ページで指定されているものと一致させると、認証アプリが表示するコードを正確に再現できます。これは、独自の TOTP 検証サーバーを実装しており、比較するための信頼できるオフライン参照が必要な場合に非常に貴重です。