OTP コードジェネレーターと検証器
機能
- TOTP サポート: 30秒後に自動的に期限切れになる時間ベースの OTP コードを生成し、アカウントに安全な二要素認証を提供
- HOTP サポート: 使用ごとに増加するカウンターベースの OTP コードを作成、オフライン認証とハードウェアトークン実装に最適
- 複数のアルゴリズム: SHA-1、SHA-256、SHA-512 アルゴリズムをサポート、コード長(6-8桁)を設定可能で、柔軟なセキュリティ要件に対応
- コード検証: 生成されたコードとユーザー入力を比較して OTP コードを即座に検証、時間ウィンドウ許容とカウンター同期をサポート
使用方法
- パラメータ設定: OTP タイプ(TOTP/HOTP)、アルゴリズム(SHA-1/SHA-256/SHA-512)、コード長(6-8桁)を選択し、秘密鍵を入力。
- コード生成: 「コードを生成」をクリックして OTP を作成。TOTP コードは30秒ごとに自動更新、HOTP は手動でカウンター増加が必要。
- コード検証: 秘密鍵と検証するコードを入力し、「コードを検証」をクリックして期待値と一致するか確認。
技術詳細
OTP コードとは
ワンタイムパスワード(OTP)コードは、システムやサービスへの安全なアクセスを提供する一時的な認証トークンです。暗号化アルゴリズムと共有秘密鍵を使用して生成され、各コードが一意で時間制限されていることを保証します。OTP コードは二要素認証(2FA)、多要素認証(MFA)、安全なログインシステムで広く使用されています。主な2つのタイプは TOTP(時間ベース OTP)と HOTP(HMAC ベース OTP)で、それぞれ特定のユースケースとセキュリティ特性があります。
TOTP(時間ベース OTP)実装
TOTP は現在のタイムスタンプと共有秘密鍵に基づいてコードを生成します。アルゴリズムは HMAC-SHA1、HMAC-SHA256、または HMAC-SHA512 を使用して、現在の時間ウィンドウ(通常30秒)と秘密鍵の組み合わせのハッシュを作成します。生成されたハッシュは切り詰められ、数値コードに変換されます。TOTP コードはサーバーのクロックと同期され、時間ウィンドウ後に自動的に期限切れになり、リプレイ攻撃に対する強力な保護を提供し、コードが短期間のみ有効であることを保証します。
HOTP(HMAC ベース OTP)実装
HOTP は増加するカウンターと共有秘密鍵を使用してコードを生成します。アルゴリズムはカウンター値と秘密鍵に HMAC-SHA1 を適用し、結果を切り詰めて数値コードを作成します。HOTP コードが使用されるたびにカウンターが増加し、次のコードが異なることを保証します。HOTP は時間同期が困難な可能性があるオフラインシナリオに便利ですが、クライアントとサーバー間の非同期を防ぐために慎重なカウンター管理が必要です。
よくある質問
- TOTPとHOTPの違いは何ですか?
- TOTP(時間ベースOTP)は現在時刻を使用してコードを生成し、通常30秒ごとに自動的に変更されます。HOTP(カウンターベースOTP)はカウンターを使用し、コードを生成するたびに手動で増やす必要があります。TOTPはほとんどの2FAアプリで使用され、HOTPはハードウェアトークンやオフラインシナリオに適しています。
- 秘密鍵はどこで入手しますか?
- 秘密鍵は通常、2FAを有効にするときにサービスから提供されます。QRコードとして表示されるか、Base32でエンコードされた文字列として提供される場合があります。開発とテストの目的では、ランダムなBase32文字列を生成できますが、本番環境ではサービスから提供された秘密鍵を使用する必要があります。
- どのアルゴリズムを選択すべきですか?
- SHA-1は最も広くサポートされているアルゴリズムで、ほとんどの2FAシステムと互換性があります。SHA-256とSHA-512はより強力なセキュリティを提供しますが、一部の古いシステムではサポートされていない場合があります。特定の要件がない限り、SHA-1から始めることをお勧めします。
- 生成されたコードがGoogle Authenticatorと一致しないのはなぜですか?
- 最も一般的な理由は、クロック同期の問題です。TOTPは正確な時刻に依存するため、デバイスとサーバーのクロックが同期している必要があります。また、秘密鍵、アルゴリズム(SHA-1)、桁数(6)、期間(30秒)が正確に一致していることを確認してください。
- このツールは本番環境で安全に使用できますか?
- このツールは教育およびテスト目的で提供されています。本番環境では、検証済みのOTPライブラリ(例:speakeasy、otplib)を使用し、秘密鍵を安全に保存してください(環境変数、シークレット管理システム)。ブラウザコンソールやログで秘密鍵を公開しないでください。
関連ドキュメント
- RFC 6238 - TOTP 仕様 - 時間ベースのワンタイムパスワードアルゴリズムを定義する公式 RFC 標準
- RFC 4226 - HOTP 仕様 - HMAC ベースのワンタイムパスワードアルゴリズムを定義する公式 RFC 標準
- Google Authenticator プロトコル - Google Authenticator 互換 OTP システムの実装ガイド
- OWASP - 二要素認証 - 二要素認証を実装するためのセキュリティベストプラクティス
- HMAC 仕様(RFC 2104) - OTP 生成で使用される HMAC アルゴリズム仕様