HOTPとTOTPは、どちらもOTP(ワンタイムパスワード)を生成する代表的な方式です。ただし、認証コードの生成方法、運用のしやすさ、適した利用シーンには違いがあります。
本記事では、OTP・HOTP・TOTPの違いを整理し、それぞれの仕組み、特徴、主な利用シーン、使い分けのポイントをわかりやすく解説します。
OTPとは?
OTP(ワンタイムパスワード)とは、1回限り有効な認証コードです。ログイン認証や取引確認、本人確認などで広く利用され、一定時間が経過すると無効になります。
OTPの基本的な意味や使われる場面を先に確認したい場合は、ワンタイムパスワード(OTP)とは?もあわせてご覧ください。
本記事では、そのOTPを実装する代表的な方式であるHOTPとTOTPに焦点を当て、それぞれの違いを比較します。
HOTPとは?
HOTP(HMAC-based One-Time Password)は、カウンター値をもとに認証コードを生成する方式です。RFC 4226で定義されており、オフライン環境でも利用しやすい点が特長です。
一方で、クライアント側とサーバー側でカウンター値を同期する必要があるため、利用状況によってはズレが生じることがあります。運用面では、この同期管理がHOTPの重要なポイントになります。
HOTPアルゴリズムの仕組み
HOTPは、認証サーバーとクライアントデバイスが共有する秘密鍵と、OTP生成のたびに増加するカウンター値を使ってコードを生成します。中核となるのはHMAC(ハッシュベースメッセージ認証コード)です。
- 初期化:秘密鍵をサーバーとクライアントで安全に共有します。
- カウンター同期:両者が同じカウンター値を保持し、OTP生成のたびに増加させます。
- HMAC計算:秘密鍵とカウンター値をもとにハッシュ値を生成します。
- 動的トランケーション:ハッシュ値から6〜8桁程度のコードを取り出します。
- 認証:ユーザーが入力したコードをサーバー側で照合し、一致すれば認証が完了します。
この方式はネットワーク接続に依存しにくいため、専用トークンや一部の業務環境と相性が良い一方、未使用コードの連続生成などによって同期ズレが起きる可能性があります。原稿でも、HOTPの長所としてオフライン利用性、短所として同期ズレのリスクが挙げられています。
HOTPのメリットと注意点
-
オフライン環境でも使いやすい
サーバーとの常時接続を前提としないため、通信環境が不安定な場面でも利用しやすい方式です。
-
専用トークン運用と相性が良い
ハードウェアトークンや一部の業務用認証デバイスで利用されるケースがあります。
-
同期ズレへの配慮が必要
ユーザーが複数回コードを生成した場合などに、サーバー側とのカウンター差が認証失敗の原因になることがあります。
TOTPとは?
TOTP(Time-based One-Time Password)は、現在時刻をもとに認証コードを生成する方式です。RFC 6238で定義されており、HOTPのカウンター同期課題を改善した、より一般的なOTP方式として広く利用されています。
一定時間ごとにコードが自動的に切り替わるため、運用しやすく、一般的なログイン認証や認証アプリとの相性にも優れています。
TOTPアルゴリズムの仕組み
TOTPは、HOTPと同様に秘密鍵とHMACを利用しますが、動的変数としてカウンターではなく現在時刻を使います。一般的には30〜60秒ごとに新しいコードが生成されます。
- 秘密鍵の共有:サーバーとクライアントで秘密鍵を保持します。
- 時刻ベース計算:現在時刻を一定のタイムステップに区切って値を生成します。
- HMAC計算:秘密鍵と時間情報を使ってハッシュ値を計算します。
- コード生成:ハッシュ値から短い数字コードを取り出します。
- 照合:サーバー側で同じ時間窓のコードを計算し、一致すれば認証します。
TOTPのメリットと注意点
-
使いやすく現在の主流
認証アプリと組み合わせやすく、一般的な二要素認証の実装で広く採用されています。
-
短い有効期限でリスクを抑えやすい
コードが短時間で失効するため、漏えいしても悪用されにくい設計です。
-
時刻同期が前提になる
サーバーと端末の時計が大きくずれると認証失敗の原因になるため、時刻同期の管理が重要です。
HOTPとTOTPの違い
HOTPとTOTPはどちらもOTP生成方式ですが、運用方法やセキュリティ上の特性は大きく異なります。両者の違いを比較表で整理すると、導入判断がしやすくなります。比較表自体は原稿内でもこのページの中核情報として置かれていました。
HOTPとTOTPの比較表
| 特徴 | HOTP(RFC4226) | TOTP(RFC6238) |
|---|---|---|
| ベースアルゴリズム | HMAC-SHA-1 | HMAC-SHA-1 |
| 動的変数 | 増分カウンター | UNIXタイムスタンプ/タイムステップ |
| 有効期間 | 使用されるまで、または次回生成まで | 30〜60秒(一般的) |
| 同期方法 | カウンターの同期が必要 | システムクロックで自動同期 |
| オフライン利用 | 完全対応 | 一部対応 |
| 主な課題 | 同期ズレ | 時刻ズレ |
| 主な利用例 | ハードウェアトークン、専用端末 | 認証アプリ、一般的な二要素認証 |
一般的には、運用のしやすさと短い有効期限のバランスからTOTPの方が広く使われています。一方、ネットワーク接続に制約がある環境や専用デバイス中心の運用では、HOTPが適している場合もあります。
HOTPとTOTPはどちらを選ぶべきか
-
一般的なログイン認証を導入したい場合
認証アプリや一般的な二要素認証を前提とするなら、TOTPを優先する方が導入しやすいケースが多いです。
-
オフライン利用や専用機器を重視する場合
ネットワーク接続が不安定な環境や専用トークン運用では、HOTPが適していることがあります。
-
迷った場合
特別な要件がない限り、使いやすさと一般性の観点からTOTPを優先する考え方が現実的です。
また、原稿内では、通常はTOTPを使いながら、バックアップやステップアップ認証でHOTPを補助的に組み合わせる運用例も紹介されていました。
認証導入を進めるなら
HOTPやTOTPの違いを理解したうえで認証導入を進める際には、配信チャネルの多様性、認証完了率、運用性、セキュリティ対策まで含めてサービスを検討することが重要です。
EngageLab OTP は、OTP配信や認証導入を支援する選択肢のひとつです。SMS、Email、音声、WhatsApp など複数チャネルに対応し、導入後の運用管理も進めやすい設計になっています。原稿後半でも、TOTP 送信や多チャネル管理、リスク対策、信頼性の高さが製品訴求ポイントとして並んでいました。
-
導入しやすい構成
API連携により、既存システムやアプリにOTP認証を組み込みやすい設計です。
-
複数チャネル対応
SMS、Email、音声、WhatsApp など、利用シーンに応じた配信方法を選択できます。
-
運用・セキュリティ対策
認証頻度の制御や不正検知など、運用面での対策を組み合わせやすい構成です。
まとめ
OTPは、一度だけ使える認証コードという考え方を指し、その代表的な実装方式としてHOTPとTOTPがあります。HOTPはカウンターベース、TOTPは時刻ベースという違いがあり、それぞれに適した利用シーンがあります。
一般的なログイン認証や認証アプリ運用ではTOTPが使いやすく、オフライン環境や専用トークン重視の場面ではHOTPが適していることがあります。違いを整理したうえで、自社の要件に合う方式を選ぶことが重要です。
OTP認証の導入を具体的に進めたい場合は、EngageLab OTPの製品ページや関連ドキュメントも参考にしてください。













