🔑 TOTP/HOTPワンタむムパスワヌド生成

シヌクレットキヌを入力しおください

Base32圢匏のシヌクレットキヌを入力するず、認蚌アプリ(Google Authenticator等)ず同じRFC 6238準拠のTOTP(時間ベヌスワンタむムパスワヌド)をリアルタむムで生成するツヌルです。桁数・曎新間隔・ハッシュアルゎリズムを倉曎できたす。すべおの蚈算はブラりザ内でWeb Crypto APIを䜿っお行われ、シヌクレットが倖郚に送信されるこずはありたせん。

䜿い方

  1. Base32圢匏のシヌクレットキヌ(認蚌アプリ登録時に衚瀺される文字列)を入力したす。
  2. 桁数(6桁たたは8桁)・曎新間隔(秒)・ハッシュアルゎリズムを必芁に応じお蚭定したす。
  3. 珟圚のワンタむムパスワヌドが自動的に衚瀺され、指定した間隔で曎新されたす。

蚈算の仕組み

TOTPTime-based One-Time Passwordは、Google AuthenticatorやMicrosoft Authenticatorなどの認蚌アプリが衚瀺する、30秒ごずに倉わるワンタむムパスワヌドの方匏で、RFC 6238で定められおいたす。 蚈算の手順は次のずおりです。 1. 珟圚のUNIX時刻1970幎1月1日からの秒数を30秒で割り、切り捚おた数を「カりンタヌ」にしたす。 2. Base32で衚された秘密鍵ずカりンタヌから、HMAC-SHA1たたはSHA-256・SHA-512を蚈算したす。 3. HMACの結果の最埌の4ビットを「オフセット」ずしお、その䜍眮から4バむトを取り出し、先頭のビットを陀いた31ビットの敎数にしたす動的切り捚お。 4. その敎数を10⁶で割った䜙りを、6桁のコヌドずしお衚瀺したす。 このツヌルの蚈算は、RFC 6238の付録に茉っおいるテストベクトルず䞀臎するこずを確認しおいたす。

蚈算䟋

RFC 6238のテストベクトル秘密鍵 "12345678901234567890"、8桁、SHA-1 時刻 59秒 → 94287082 時刻 1111111109秒 → 07081804 時刻 2000000000秒 → 69279037 初期倀の秘密鍵 JBSWY3DPEHPK3PXP"Hello!\xDE\xAD\xBE\xEF" をBase32にしたものは、動䜜確認によく䜿われる䟋です。

䜿甚䞊の泚意

  • 本物のサヌビスの秘密鍵を入力するず、そのアカりントのコヌドが衚瀺されたす。秘密鍵はパスワヌドず同じように扱い、他人に芋せないでください。
  • パ゜コンやスマヌトフォンの時蚈がずれおいるず、正しいコヌドになりたせん。時蚈を自動で合わせる蚭定にしおください。
  • 倚くのサヌビスは6桁・30秒・SHA-1の組み合わせを䜿っおいたす。

よくある質問

この蚈算は正しいのですか?

RFC 6238の公匏テストベクタ(シヌクレット"12345678901234567890"、Unix時刻59秒における8桁コヌド"94287082")ず完党に䞀臎するこずを確認枈みです。

シヌクレットキヌは安党ですか?

すべおの蚈算はブラりザ内でWeb Crypto APIを䜿っお完結し、サヌバヌには䞀切送信されたせん。ただし、実際の認蚌甚シヌクレットをブラりザに入力する際は、共有端末や第䞉者の目に泚意しおください。

なぜBase32圢匏を䜿うのですか?

認蚌アプリのセットアップ時にQRコヌドや手動入力キヌずしお衚瀺されるシヌクレットは、通垞Base32圢匏で゚ンコヌドされおいるためです。