ブラウザ内ツール

TOTPデモ(2段階認証)

認証アプリが出す30秒ごとの6桁コードを、HMAC-SHA1(RFC 6238)で実際に生成します。 共有シークレットと時刻だけから、通信なしで同じ値が作られる仕組みを体感してください。

--- ---

残り 30 秒で更新

  1. ① 共有シークレットを Base32 デコードして鍵バイト列にする
  2. ② 時刻カウンタ = floor(現在のUnix秒 / 30)
  3. HMAC-SHA1(鍵, カウンタ) を計算
  4. ④ 動的切り詰めで20桁前後の数を取り出し、下6桁を表示

認証アプリ(Google Authenticator 等)が出す6桁は、この計算をあなたの端末とサーバが同じシークレットと時刻で独立に行い、一致を確かめる仕組みです。 通信は不要で、コードは30秒で無効化されます。実運用のシークレットは他人と共有しないでください(このデモはブラウザ内計算・送信なし)。

なぜ通信なしで一致するのか

  • 秘密の共有は登録時の一度きり:QRコードのスキャンでシークレットを端末とサーバが共有する。
  • あとは時刻が同期の鍵:両者が同じ時刻カウンタで同じ計算をするので、毎回同じ6桁になる。
  • コードは30秒で無効:漏れても使える時間が短い。SMSより安全で、フィッシング耐性を高めるならFIDO2/パスキーへ。