HOTP

HOTP(HMACベースのワンタイムパスワード、RFC 4226)はTOTPのカウンターベース版です。TOTPが時計で進む一方、HOTPはトークンとサーバーの両方が使用のたびに増やす共有カウンターで進みます。HOTPはYubiKey OATH、レガシーハードウェアトークン、サーバーが時計同期に頼れない一部の銀行フローの標準モードです。

正式仕様:RFC 4226, HOTP: An HMAC-Based One-Time Password Algorithm(2005年)。
URIスキーム:Google Authenticator Key URI Format, すべての認証アプリが合意する otpauth:// スキーム。
関連仕様:TOTP(RFC 6238), HOTPに基づく時間ベース版。

概要

HOTPの登録QRは hotp をタイプとする otpauth:// スキームのURLです。共有HMACシークレットと双方が同期しなければならないカウンター値を持ちます。フォーマット:

otpauth://hotp/LABEL?secret=SECRET&issuer=ISSUER&counter=N&digits=N&algorithm=ALG

HOTPとTOTP, どちらを使うか

属性HOTP(RFC 4226)TOTP(RFC 6238)
進む基準カウンター(使用のたびに)時計(30秒ごと)
時計同期が必要不要必要, 約30秒以内
ずれた時の再同期サーバーが次のNカウンター値を受け入れるサーバーが±1ウィンドウを受け入れる
典型的な用途YubiKey、レガシーハードウェアトークン、オフライン銀行すべてのコンシューマー2FA, Google、Microsoft、1Password、Authy
カウンター再使用壊滅的, 時間とともにシークレットを漏洩該当なし
シークレット漏洩時の脆弱性将来のすべてのコードが予測可能過去と将来のすべてのコードが予測可能

標準テストベクター

RFC 4226 付録Dはシークレット 12345678901234567890(20バイト、Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ)に対する6桁のHOTP参照値を提供します:

カウンターHOTP(6桁)
0755224
1287082
2359152
3969429
4338314
5254676
6287922
7162583
8399871
9520489

カウンター0での登録のための最小QRペイロード:

otpauth://hotp/Example:test?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=Example&counter=0

ライブBase32シークレットバリデーター

TOTPページと同じバリデーターです。HOTPシークレットも同じBase32アルファベット(RFC 4648 §6: A-Z、2-7)を使います。ブラウザで実行され、サーバーへの往復は不要です。

シークレットを入力して確認してください。

よくある落とし穴

認証アプリの互換性

アプリ / トークンHOTPSHA256/5128桁備考
YubiKey Authenticator(iOS/Android/デスクトップ)ありありありHOTPはYubiKey OATHの標準モード。完全なRFC 4226サポート。
Google Authenticatorあり無視(SHA1のみ)無視(6のみ)デファクトベースライン。HOTPは安全ですが6桁のSHA1のみ。
1Passwordありありあり完全なRFCサポート。カウンターはエントリと共に保存・エクスポートされます。
Bitwardenありありあり完全なRFCサポート。
Microsoft Authenticatorありありあり完全なRFCサポート。
Authyなし,,最近のバージョンではHOTPを削除。TOTPのみ。
Duo Mobileなし,,独自のプッシュフローを使用。TOTPのみのフォールバック。
OATHハードウェアトークン(Feitian、Token2など)ありさまざまさまざま標準的なハードウェアHOTP市場。データシートに別の記載がなければ常に6桁のSHA1。

関連ページ

仕様リファレンス確認済み 2026-04-19。RFC 4226(2005年)、Google Key URI Format。