TOTP ジェネレーター

シークレットを入力すると、ブラウザで TOTP 2 要素認証コードを生成できます — Google Authenticator などに対応。

TOTP コードは 30 秒ごとに変わる 6 桁の 2 要素認証コードです。認証アプリとサーバーが、共有シークレットと現在時刻からそれぞれ独立に計算します(RFC 6238)。2FA 設定画面の Base32 シークレット、または otpauth:// リンク全体を貼り付けると、現在のコード、次のコード、カウントダウンリングが表示されます。計算はすべてブラウザ内で行われ、シークレットが送信・保存・記録されることはありません。ガイドTOTP コードの仕組みでは計算方法と時計ずれの問題を解説しています。パスワード&トークン生成や SSH Key Suite と併せてどうぞ。

最終更新:

2要素認証を有効化するときに表示される Base32 シークレット(スペースは無視されます)、または otpauth:// リンク全体を貼り付けてください。発行者、アカウント、アルゴリズム、桁数、周期は自動で読み取られます。有効なシークレットが追加されるとすぐにコードが始まります。

--- ---

シークレットを入力すると、コードが自動で表示されます

詳細設定

🔒 すべての計算はブラウザ内でローカルに行われます。シークレットがサーバーに送信されることはなく、保存されることもありません。

サーバー時刻とあなたの時計を比較しています…

あなたのコード

まだアカウントがありません。上でシークレットを追加すると、そのコードがここに表示され、周期ごとに更新されます。何も保存されません。再読み込みするとこのリストは消えます。

正直な限界

このページは、すでにあなたのものであるコードのための利便性です。別の部屋で充電中のスマートフォンや、認証アプリ間で移行中のシークレットのためにあります。シークレットの長期的な保管場所としては安全ではありません。貼り付けたものは、このタブを閉じるまでそのメモリに残り、同じマシンの他のソフトウェアもメモリを読むことができます。

コード生成器の信頼性は、それが動くデバイスとブラウザの信頼性そのものです。大切なアカウントについては、シークレットを専用の認証アプリか、自分の管理するハードウェアキーに保管し、このページは信頼できるデバイスでのみ使い、共有コンピューターや公共のコンピューターでは決して使わないでください。

TOTP は、ログインの瞬間にシークレットを保持していることを証明します。すでに漏れたシークレットは守れません。シークレットがチャット、チケット、サーバー側ジェネレーターに貼られたことがあれば、焼けたものとして扱ってください。サービス側で 2FA を一度オフにしてからオンに戻し、新しいシークレットを発行してください。

ブラウザの TOTP ジェネレーターが正しい道具になる場面

典型は設定と移行です。2要素認証を有効化すると、サービスは QR コードと、「スキャンできませんか?」リンクの背後に生の Base32 シークレットを表示します。ここにシークレットを入力し、生成されたコードを認証アプリのものと比較すれば、両方のデバイスが同じシークレットを持っていることが証明できます。ログアウトしてから不一致に気づく、という最悪の展開の前に。アカウントを新しいスマートフォンへ移すときも同じ確認が使えます。各シークレットを読み直してここに追加し、古いアプリとコードがウィンドウごとに一致することを確認してください。

スマートフォンが手元になくても、シークレットがパスワードマネージャーに正しく保管されていれば実用的な答えになります。シークレットを取り出し、ここでコードを生成してサインインする。2FA をオフにしてアカウントを弱める必要はありません。Google や GitHub から AWS やドメインレジストラまで、すべてのサービスが同じ RFC 6238 方式を使うので、シークレットを持つすべてのアカウントを1つのジェネレーターでまかなえます。

QR コードの中身は実際には何か

認証用 QR コードはどれも1行のテキストです。シークレット、発行者、アカウント名、コードのパラメーター(アルゴリズム、桁数、周期)を運ぶ otpauth:// URI です。だからこそこのページはリンク全体を受け付けます。貼ればすべての欄が自動で埋まります。そしてだからこそ、設定用 QR コードのスクリーンショットはパスワード自体と同じくらい機微なのです。スキャンした者はあなたの第二要素の恒久的なコピーを手にします。設定用スクリーンショットは決して共有せず、同期される写真ライブラリからも削除してください。

コードが受け付けられるかどうかは2つの細部で決まります。1つ目は時計です。生成側とサーバーは現在の30秒ウィンドウについて一致しなければならず、ほとんどのサーバーは前後1ウィンドウまでしか許容しないので、1分狂った時計は毎回失敗します。2つ目はパラメーターです。ほとんどのサービスは SHA-1、6桁、30秒を使いますが、8桁や60秒周期のところもあります。ここのコードがサービスと決して一致しない場合は、設定画面に書かれていた内容と詳細設定を見比べてください。

TOTP 用語をきっちり定義

TOTP. 時刻ベースのワンタイムパスワード(RFC 6238)。タイムステップカウンタの HMAC を動的切り捨てして短い10進コードにしたものです。

HOTP. カウンタベースの親アルゴリズム(RFC 4226)。TOTP は、そのカウンタを Unix エポックからの周期数に置き換えた HOTP です。

Base32. ほとんどの 2FA シークレットが書かれる文字体系(A–Z と 2–7)。32文字のシークレットは20バイト、すなわち160ビットの鍵素材を運びます。

otpauth://. すべての設定 QR コードの中にある URI 形式。タイプ、ラベル、シークレット、発行者、アルゴリズム、桁数、周期が1行に収まります。

タイムステップ. 通常は30秒。生成側とサーバーは同じステップに落ちなければならず、ほとんどのサーバーは前後のステップも受け付けます。

動的切り捨て. 20バイト超の HMAC を短いコードに変える工程。ダイジェスト末尾の半バイトが示すオフセットから4バイトを切り出します。

SHA-1. 今も TOTP の既定の HMAC ハッシュです。HMAC の安全性は衝突耐性に依存しないため、この構成はここでは今も健全です。

バックアップコード. 設定時にサービスが発行する1回限りの復旧コード。TOTP を完全に迂回するので、パスワードのように保管し、シークレットと一緒には絶対に置かないでください。

時計のずれ. デバイスの時計と真の時刻との差。ずれが1周期を超えると、シークレットが正しくても生成されるコードはすべて間違いになります。

よくある質問

ブラウザで 2FA コードを生成しても安全ですか?

このページではシークレットがブラウザを離れることはありません。コードは WebCrypto を使ってページのメモリ内で計算され、何もアップロード、保存、記録されず、再読み込みでシークレットは消えます。危険な方式はサーバー側ジェネレーターで、あなたのシークレットがネットワークを渡り、他人のログやデータベースに残ります。ローカルであっても、信頼できるデバイスだけを使ってください。シークレットの安全性は、それを入力するマシンの安全性そのものです。

なぜコードが拒否されるのですか?

最も多いのは時計です。コードを生成するデバイスとサーバーが現在の30秒ウィンドウについて一致していないと、すべてのコードが間違いになります。このページの時計カードを確認し、日付と時刻の自動設定をオンにしてください。次に疑うのはパラメーター(8桁や60秒周期を使うサービス)と古いシークレットです。2FA を有効化し直した場合、古いシークレットはその瞬間に失効しています。

TOTP と HOTP の違いは何ですか?

カウンタです。HOTP(RFC 4226)は使うたびにカウンタを増やし、TOTP(RFC 6238)はカウンタを時計から導くので、コードが自然に期限切れになります。認証アプリもこのページも TOTP を話します。カウンタ方式の HOTP リンクも存在しますが、このページはコードをでっち上げず、はっきり断ります。

認証アプリの代わりになりますか?

ページが開いている間は同一のコードを生成します。数学は同じです。ただし恒久的な置き場所としては不適です。設計上ここには何も残らず、ブラウザのタブは長命なシークレットの居場所ではありません。シークレットは認証アプリかパスワードマネージャーに保管し、このページは設定確認、移行、緊急時に使ってください。

シークレットを一度チャットに貼ってしまいました。どうすれば?

漏れたものとして扱ってください。チャットは記録され、同期され、検索できます。シークレットを持つ者はあなたのコードを永遠に生成できます。サービスで2要素認証をオフにしてからオンに戻し、新しいシークレットを発行して認証アプリを登録し直し、アカウントの最近の活動を確認してください。そのうえで、パスワード自体をパスワード漏洩チェックで確認してください。