ロゴ
ToolkitsLabEfficiency Hub
PR広告を含む

TOTP(2段階認証コード)生成・確認ツールシークレットキーからワンタイムパスワードをブラウザ内で生成・検証

シークレットキーを入力するだけで、30秒ごとに更新される2段階認証コードをその場で生成。 コードの検証や新規シークレットキーの発行、QRコード作成にも対応しています。

シークレットキー

現在のコード

シークレットキーを入力すると、ここにコードが表示されます。

コードを検証

2段階認証用QRコードを作成

発行者名(issuer)

アカウント名

有効なシークレットキーを入力するとQRコードが表示されます。

一般的な認証アプリ(Google Authenticator、Microsoft Authenticator、Authyなど)で読み取って登録できます。標準(SHA-1・6桁・30秒)以外の設定は、一部のアプリで対応していない場合があります。

※本ツールは開発・検証用です。重要なアカウントの2段階認証は専用の認証アプリの利用を推奨します。シークレットキーは外部に送信されません。

TOTP(2段階認証コード)とは?シークレットキーから生成する仕組み

TOTP(Time-based One-Time Password)は、シークレットキーと現在時刻をもとに、一定時間(多くの場合30秒)ごとに新しい6桁のコードを生成する仕組みで、Google AuthenticatorをはじめとするほとんどのAuthenticatorアプリで採用されている国際標準(RFC 6238)です。

本ツールは、このTOTPの生成・検証・新規発行を1画面でまとめて行える開発者・エンジニア向けのツールです。シークレットキーはパスワードと同様に外部に漏れてはいけない情報のため、すべての計算処理をブラウザ内のWeb Crypto APIだけで完結させ、通信を一切発生させない設計にしています。

「自社の認証システムを開発していて、生成されるコードが仕様通りか確認したい」「認証アプリのコードが端末側で一致しない原因を切り分けたい」「新しいサービスの2段階認証用にQRコードを発行したい」といった場面での利用を想定しています。

こんなシーンで便利です

自社のTOTP実装が仕様通りに動作しているか確認する時に

自社で2段階認証機能を開発している際に、同じシークレットキーから生成したコードが、自作の実装とこのツールで一致するかを確認するデバッグ用途に使えます。

認証アプリのコードが一致しない原因を切り分けたい時に

手元の認証アプリで生成されるコードがサービス側で受け付けられない場合に、時刻のズレなのか設定の不一致なのかを、検証機能を使って切り分けられます。

新しいサービスの2段階認証を設定し、QRコードを発行したい時に

新しいシークレットキーをランダムに生成し、発行者名・アカウント名を入力するだけで、認証アプリでスキャンできるotpauth QRコードをその場で作成できます。

テスト環境用に固定のシークレットキーでコードを繰り返し確認したい時に

自動テストやステージング環境などで固定のシークレットキーを使い回している場合に、現在有効なコードをすぐに確認したいというシーンで役立ちます。

使い方は簡単 4ステップ

  1. 「シークレットキー」欄にBase32形式のキーを入力するか、「ランダム生成」で新しいキーを発行します。
  2. 必要であれば「詳細設定」でアルゴリズム(SHA-1/256/512)・桁数(6/8桁)・周期(30/60秒)を、利用するサービスの仕様に合わせて変更します。
  3. 画面上部に表示される現在のコードをそのまま利用するか、下部の「コードを検証」で手元のコードと一致するか確認します。
  4. 新規に2段階認証を設定したい場合は、発行者名・アカウント名を入力してQRコードを発行し、認証アプリで読み取ります。

入力したシークレットキーや生成されたコードは、いずれもブラウザのメモリ上にのみ保持され、外部のサーバーへ送信されることはありません。

ご利用時の注意点

  • 本ツールはRFC 6238に準拠したTOTPの計算をブラウザ内で行う開発・検証用ツールであり、専用の認証アプリやハードウェアキーの代替として重要なアカウントの2段階認証に常用することは推奨しません。
  • シークレットキーは、パスワードと同様に第三者に知られてはいけない情報です。画面の共有やスクリーンショットの取り扱いには十分ご注意ください。
  • 多くのWebサービスはSHA-1・6桁・30秒周期を標準としています。詳細設定を変更する必要があるのは、主に自社システムの検証など特殊なケースに限られます。
  • 完全無料・安全:本ツールは通信を行わないブラウザ完結型のため、シークレットキーが外部に送信・保存されることはありません。

主要サービスのTOTP標準設定の目安

多くのサービスは以下の標準設定(RFC 6238のデフォルト値)を採用しています。設定が不明な場合は、まずこの組み合わせで試すことをおすすめします。

サービス例アルゴリズム桁数周期
Google / Google WorkspaceSHA-16桁30秒
GitHubSHA-16桁30秒
MicrosoftアカウントSHA-16桁30秒
AWS IAMSHA-16桁30秒
一般的なRFC 6238準拠システム(既定値)SHA-16桁30秒
独自仕様のシステム(例)SHA-256 / SHA-5126〜8桁30〜60秒

※大半のサービスは標準設定(SHA-1・6桁・30秒)を採用しているため、詳細設定の変更が必要になるのは主に自社開発システムの検証など、限られたケースです。実際の設定はご利用のサービスの案内をご確認ください。

TOTPの仕組みと、安全に使ううえで知っておきたいこと

TOTPがどのような計算でコードを生成しているか、そして安全に扱うための注意点を解説します。

TOTPとは何か?仕組みをやさしく解説

TOTPは、あらかじめ共有されたシークレットキー現在時刻を組み合わせてハッシュ関数(HMAC)で計算し、その結果から6桁程度の数字を取り出す仕組みです。
時刻は30秒ごとに区切られた「タイムステップ」として扱われるため、同じシークレットキーを持つ側(サービスとあなたの認証アプリ)であれば、通信することなく同じタイミングで同じコードを独立して計算できます。これが「時刻ベースのワンタイムパスワード(Time-based One-Time Password)」と呼ばれる理由です。

なぜシークレットキーを外部サーバーに送信してはいけないのか

シークレットキーは、TOTPコードを生成するための唯一の鍵です。このキーさえあれば誰でも同じコードを生成できてしまうため、パスワードと同等、あるいはそれ以上に厳重に扱う必要があります。
オンラインの変換ツールなどにシークレットキーを入力する際は、その処理が本当にブラウザ内で完結しているか(通信が発生していないか)を必ず確認することが重要です。本ツールはこの理由から、一切のサーバー通信を行わない設計を採用しています。

コードが一致しない時に確認すべき3つの原因

TOTPのコードが一致しない場合、原因の多くは(1)端末の時刻のズレ(2)アルゴリズム・桁数・周期の設定不一致(3)シークレットキーの入力ミスのいずれかです。
特に時刻のズレは見落とされがちで、スマートフォンの「自動日時設定」がオフになっているだけでコードが一致しなくなることがあります。本ツールの検証機能を使えば、前後の時間枠のコードとも照合できるため、時刻ズレが原因かどうかを効率的に切り分けられます。

TOTPとSMS認証の違い、なぜTOTPの方が安全とされるのか

SMS認証は電話回線を経由してコードを受信する方式のため、SIMスワップ詐欺(他人が電話番号を乗っ取る攻撃)や通信の傍受といったリスクが指摘されています。
一方TOTPは、シークレットキーを最初に共有した後は通信を必要とせず、端末内だけでコードを計算できるため、こうした通信経路上のリスクを受けにくいという特徴があります。このため近年は、SMS認証よりもTOTP(認証アプリ)の利用が推奨される傾向にあります。

よくある失敗と対策

シークレットキーやQRコードが写り込んだ画面をそのまま共有してしまう

認証設定画面のスクリーンショットを誤って共有したり、画面共有中にQRコードやシークレットキーが映り込んだまま会議を続けてしまう失敗です。

💡 対策・解決策を見る
シークレットキーやQRコードを表示する作業は、必ず他人に見られない環境で行い、共有前にスクリーンショットにこれらの情報が含まれていないか確認しましょう。

端末の時刻が自動設定になっておらずコードが一致しない

スマートフォンの日時が手動設定になっていたり、時刻がズレたまま気づかずに、認証アプリのコードがサービス側で受け付けられない失敗です。

💡 対策・解決策を見る
端末の「日付と時刻の自動設定」がオンになっているか確認しましょう。本ツールの検証機能で前後の時間枠のコードとも一致するか確認すると、原因の切り分けに役立ちます。

アルゴリズムや桁数の設定を変更したままにして本番環境と不一致になる

検証のために変更したアルゴリズムや桁数の設定を標準(SHA-1・6桁・30秒)に戻し忘れ、本番のサービス設定と一致しないコードを生成し続けてしまう失敗です。

💡 対策・解決策を見る
特殊な設定でのテストが終わったら、標準設定に戻すことを習慣化しましょう。多くのサービスはSHA-1・6桁・30秒が既定値です。

発行した予備のシークレットキーを保管せず、機種変更時に認証できなくなる

新規に発行したシークレットキーやQRコードをその場限りで使い、控えを保管しないまま、スマートフォンの機種変更時に2段階認証が利用できなくなってしまう失敗です。

💡 対策・解決策を見る
新しいシークレットキーを発行した際は、パスワードマネージャーなどの安全な場所に必ず控えを保管し、機種変更時にも復元できるようにしておきましょう。

開発・テスト用のシークレットキーを本番環境の設定にそのまま流用してしまう

動作確認のために本ツールで生成したテスト用のシークレットキーを、そのまま本番のアカウント設定に登録してしまい、管理が煩雑になる失敗です。

💡 対策・解決策を見る
テスト用と本番用のシークレットキーは明確に分けて管理し、本番環境には専用の認証アプリで新規に発行したキーを登録するようにしましょう。

よくある質問(FAQ)

Q.TOTPとは何ですか、SMS認証とは何が違いますか

Q.

A. TOTP(Time-based One-Time Password)は、シークレットキーと現在時刻をもとに一定時間(多くの場合30秒)ごとに変化するワンタイムパスワードを生成する方式で、RFC 6238という規格で標準化されています。Google Authenticatorなどの認証アプリで使われている仕組みです。SMS認証と異なり通信回線を必要とせず、SIMスワップなどの電話番号乗っ取りの影響を受けにくいため、より安全性が高いとされています。

Q.このツールにシークレットキーを入力しても外部に送信されませんか

Q.

A. 送信されません。本ツールはコードの生成・検証をすべてブラウザ内のWeb Crypto APIだけで完結させる設計です。入力したシークレットキーがどこかのサーバーへアップロードされることはなく、ページを閉じれば内容は消去されます。

Q.生成したコードが認証アプリのコードと一致しません。何を確認すればいいですか

Q.

A. 多くの場合、原因は次の3つのいずれかです。(1)端末の時刻が自動設定になっておらずズレている、(2)アルゴリズム・桁数・周期の設定がサービス側と異なっている(多くのサービスはSHA-1・6桁・30秒が標準です)、(3)シークレットキーの入力に誤りがある(スペースや大文字小文字の混同など)。本ツールの検証機能を使うと、前後の時間枠のコードとも比較できるため、時刻ズレが原因かどうかを切り分けやすくなります。

Q.生成したQRコードやシークレットキーはどこかに保存されますか

Q.

A. 保存されません。QRコードやotpauth URIはその場でブラウザ内に生成されるだけの一時的なデータで、外部に送信されることも、本ツール側で記録されることもありません。控えておきたい場合は、表示されたシークレットキーやQRコード画像をご自身の安全な場所(パスワードマネージャーなど)に保管してください。

Q.SHA-1以外のアルゴリズムや8桁のコードを選ぶのはどんな場合ですか

Q.

A. Google・GitHub・Microsoftなど、一般的なWebサービスの大半はSHA-1・6桁・30秒周期を標準採用しています。SHA-256やSHA-512、8桁などの設定は、主に自社開発の認証システムや、特定のセキュリティ要件を持つ企業システムをテストする場合に使用します。利用するサービス側の設定に合わせて選択してください。

Q.このツールを普段の2段階認証アプリの代わりとして常用してもいいですか

Q.

A. 動作原理としてはGoogle Authenticatorなどと同じRFC 6238に準拠していますが、本ツールはあくまで開発・検証・確認用の無料Webツールです。重要なアカウントの2段階認証は、専用の認証アプリやパスワードマネージャー、ハードウェアキーなど、バックアップ機能や端末保護が整った専用ソリューションの利用を推奨します。

Q.検証機能の「許容ウィンドウ」とは何ですか

Q.

A. TOTPは時間経過とともにコードが切り替わるため、送信の遅延やわずかな時刻のズレがあると、現在の時間枠のコードとちょうど一致しないことがあります。「許容ウィンドウ」は、現在の時間枠だけでなく前後1〜2ステップ分のコードも合わせて照合する設定で、多くの認証システムの実装でも同様の仕組みが採用されています。

User Feedback & Request

あなたの声で、
このツールをより鋭く。

「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。

フィードバックを送る