> totp | authenticator | generator <
Base32シークレットから時間ベース(TOTP)とカウンターベース(HOTP)のワンタイムパスワードを生成します。2FA設定のテスト、認証アプリとのコードのずれの調査、otpauth:// URIの作成をすべてブラウザ内で行えます。
シークレットがブラウザの外に出ることはありません。ただし、共有パソコンに本番用の実シークレットを貼り付けるのは避けてください。
OTPAUTH URI
認証アプリ用のQRコードが必要ですか? URIを次のツールに貼り付けてください: QRコードジェネレーター
カウントダウン付きライブコード
Base32シークレットを貼り付けると、現在のコードと次のコードを表示し、期間ごとに更新。期限までの進行バーも表示します。
SHA-1・SHA-256・SHA-512
6・7・8桁と任意の期間に対応。HMACはWeb Crypto APIで計算し、RFC 4226とRFC 6238のテストベクターと一致します。
otpauth URIの作成とインポート
認証アプリ向けのotpauth:// URIを作成したり、既存のURIをインポートして全項目を自動入力できます。データは送信されません。
>> 技術情報
ワンタイムパスワードの仕組み:
HOTP(RFC 4226)はHMAC(シークレット, カウンター)を計算し、結果を6〜8桁に切り詰めます。TOTP(RFC 6238)はカウンターをUnix時間÷期間(通常30秒)としたHOTPで、期間ごとにコードが変わり、通信しなくても双方が同じコードになります。共有シークレットは、Base32テキスト、またはotpauth:// URIを含むQRコードとして受け渡されるのが一般的です。
例:
RFC 6238 test vector (SHA-1) secret = GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ time = 59 -> counter = 59 / 30 = 1 code (8 digits) = 94287082
このTOTPジェネレーターを使う理由:
- >ログイン機能の開発中に二要素認証をテスト・デバッグできる
- >認証アプリとサーバーでコードが食い違う原因を調べられる
- >正しい発行者・アルゴリズム・桁数・期間のotpauth:// URIを作成できる
- >Unix時間の入力欄で固定時刻のコードを確認できる
>> よくある質問
Q: TOTPはどのように動作しますか?
A: アプリとサーバーが同じシークレットを共有します。双方がシークレットと現在のタイムステップ(Unix時間÷期間、既定は30秒)からHMACを計算し、6桁のコードに切り詰めます。2つの時計が合っていれば同じコードになります。
Q: ここにシークレットを入力しても安全ですか?
A: 計算はWeb Crypto APIを使ってすべてブラウザ内で行われ、サーバーには何も送信されません。ただしTOTPシークレットはアカウントへの鍵です。共有パソコンや信頼できない環境に本番の実シークレットを貼り付けず、デバッグにはテスト用アカウントを使ってください。
Q: 認証アプリとコードが一致しないのはなぜですか?
A: よくある原因は、時計のずれ(TOTPは数秒以内の正確な時刻が必要)、アルゴリズム・桁数・期間の違い、シークレットの入力ミスです。ほとんどのサービスが使うSHA-1・6桁・30秒が選択されているか確認してください。
Q: TOTPとHOTPの違いは何ですか?
A: HOTPはコードを使用したときだけ進むカウンターを使うため、使われるまでコードが有効です。TOTPは時計からカウンターを導き出すので、期間ごとに自動で失効します。一般向けの2FAではTOTPが圧倒的に普及しています。
Q: otpauth:// URIとは何ですか?
A: 2FAを有効にするときにスキャンするQRコードの中身で、otpauth://totp/Example:user@example.com?secret=...&issuer=Example のような形式です。シークレット、発行者、アカウントのほか、任意でアルゴリズム・桁数・期間を含みます。インポート欄に貼り付けるとシークレットを取り出せます。
Q: 認証アプリはどの設定に対応していますか?
A: Google Authenticatorなど多くのアプリはアルゴリズム・桁数・期間のパラメーターを無視し、常にSHA-1・6桁・30秒を使います。アプリとサーバーが別の設定に対応していると分かっている場合を除き、この既定値を使ってください。