ブラウザ内ツール
TOTPデモ(2段階認証)
認証アプリが出す30秒ごとの6桁コードを、HMAC-SHA1(RFC 6238)で実際に生成します。 共有シークレットと時刻だけから、通信なしで同じ値が作られる仕組みを体感してください。
--- ---
残り 30 秒で更新
- ① 共有シークレットを Base32 デコードして鍵バイト列にする
- ② 時刻カウンタ =
floor(現在のUnix秒 / 30) - ③
HMAC-SHA1(鍵, カウンタ)を計算 - ④ 動的切り詰めで20桁前後の数を取り出し、下6桁を表示
認証アプリ(Google Authenticator 等)が出す6桁は、この計算をあなたの端末とサーバが同じシークレットと時刻で独立に行い、一致を確かめる仕組みです。 通信は不要で、コードは30秒で無効化されます。実運用のシークレットは他人と共有しないでください(このデモはブラウザ内計算・送信なし)。
なぜ通信なしで一致するのか
- 秘密の共有は登録時の一度きり:QRコードのスキャンでシークレットを端末とサーバが共有する。
- あとは時刻が同期の鍵:両者が同じ時刻カウンタで同じ計算をするので、毎回同じ6桁になる。
- コードは30秒で無効:漏れても使える時間が短い。SMSより安全で、フィッシング耐性を高めるならFIDO2/パスキーへ。