

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
hotpとは?
hotpは HMAC-based One-Time Password の略で、1回限り有効のコードを作る仕組みです。認証のたびにコードが変わるので、誰かが盗み見てもすぐには使えません。サーバーとあなたの端末(認証アプリなど)で秘密鍵とカウンタを共有します。
基本的には、秘密鍵KとカウンタCを組み合わせて、ハッシュ関数(例: HMAC-SHA-1)を使い計算します。その結果から「ダイナミックトランケーション」という方法で特定の桁数の数字を取り出し、6桁または8桁のコードを生成します。コードの長さはサービス側で決まっており、通常は6桁が一般的です。
仕組みの全体像
HOTPはRFC 4226で標準化されています。クライアント側はアプリ(例: 認証アプリ)を使って現在のカウンタCの値を用い、Kと共にコードを生成します。サーバー側も同じKとCで同じコードを作るので、入力されたコードが正しければ認証が通ります。
この仕組みを使うと、秘密鍵が漏洩しない限り、第三者が既に発行されたコードを使い回すことはできません。不可逆なハッシュ関数と一方向性の計算を使うため、推測は難しくなります。
HOTPとTOTPの違い
よく混同されるのが HOTPと TOTP の違いです。HOTPはカウンタを使い、認証の回数を重ねるごとにカウントを進めます。一方、TOTPは現在の時刻を元にした移動因子を使うので、時間の経過とともにコードが変化します。多くのサービスはTOTPを採用していますが、HOTPを使う場面もまだあります。
実装の流れ(概要)
実装を始めるときは、以下の順序を参考にすると分かりやすいです。1 サービス側で秘密鍵Kを生成して安全に保存する。2 認証アプリなどのクライアントにKを共有するか、手動で設定する。3 カウンタCを0から始める。4 認証時にはKと現在のCを入力としてHMAC計算を行い、ダイナミックトランケーションでコードを得る。5 サーバー側でも同じKとCでコードを検証する。6 正しい場合にのみアクセスを許可する。
| 要点 | 説明 |
|---|---|
| コードの長さ | 6桁が一般的。サービスにより変わることがある。 |
| 秘密鍵の管理 | 漏洩を防ぐため厳重に保護する。 |
| カウンタの管理 | Cを適切に増やすことで同期を保つ。 |
| セキュリティの注意 | オフラインバックアップと回復手順を用意する。 |
セキュリティのポイント
秘密鍵は最も重要な資産です。秘密鍵を第三者と共有しない、認証アプリを信頼できるデバイスで使う、バックアップを安全に行う、などの基本を守りましょう。実務では、サーバー側の検証と同時に、リプレイ攻撃を避けるための工夫や、試行回数の制限、適切なタイムウィンドウの設定も検討します。
最後に
本記事の要点を振り返ると、hotpは秘密鍵とカウンタから毎回異なるコードを作る仕組みで、TOTPと比べて時刻に左右されにくい特徴があります。初心者はまず、基本の計算の考え方と、どのようにアプリとサーバーが同期するのかを理解することから始めましょう。
hotpの同意語
- HOTP
- HMAC-based One-Time Password の略。HMACを使い、カウンタに基づいて一度限りのパスワードを生成する認証方式。
- HMAC-based One-Time Password
- HOTP の正式名称。HMACを用い、カウンタ値に基づいて使い捨てパスワードを生成する認証方式。
- ハッシュベースのワンタイムパスワード
- HOTP の日本語表現。ハッシュ関数を使い、使い捨てのパスワードを生成する仕組み。
- HMACベースのワンタイムパスワード
- HOTP の別表現。HMACをベースにした一度限りのパスワード生成方式。
- HOTPアルゴリズム
- HOTPを実装するための手順とロジックの総称。RFC4226 で定義される公式アルゴリズム。
- HOTP認証方式
- HOTP を用いた認証の仕組み。二要素認証の一部として使われることも多い。
- RFC 4226
- HOTP の公式標準を定義したRFC文書。HOTP の正式仕様の出典。
- 一回限りのパスワード生成方式
- パスワードが一度だけ有効になるように生成する仕組みの総称(HOTP が代表例)。
- 使い捨てパスワード方式
- 使い捨て(使い回し不可)パスワードを生成・検証する方式の総称。
- カウンタ方式のワンタイムパスワード
- HOTP の特徴の1つであり、カウンタ値をもとにパスワードを生成する方式。
hotpの対義語・反対語
- TOTP(Time-based One-Time Password)
- 時間ベースのワンタイムパスワード。HOTPがイベントカウントを基に生成するのに対し、TOTPは現在時刻を一定間隔で参照してパスワードを生成します。HOTPとは別系統のOTP方式として対比されます。
- 固定パスワード(Static Password)
- 長期間有効で使い回せる静的なパスワード。OTPの“使い捨て”性とは反対の性質で、再利用が可能な点がセキュリティ上の懸念となることが多いです。
- 静的コード(Static Code)
- 毎回新しく生成されず、固定化された認証コード。OTPの都度変更される特徴と対照的です。
- パスワードレス認証(Passwordless Authentication)
- パスワードを使わず認証するアプローチ。OTPを使う従来の認証と発想が異なるため、対義語的な位置づけで語られることがあります。
- 公開鍵認証(Public Key Authentication)
- 秘密鍵と公開鍵を用いる認証方式。パスワード/OTPベースの認証とは別設計で、代替案として挙げられることが多いです。
- 単一要素認証(Single-factor Authentication)
- 1つの認証要素のみで認証する方式。OTPは多要素認証の一部として使われることが多く、より強い認証を目指す概念と対比されます。
- 生体認証(Biometric Authentication)
- 指紋・顔認証など生体情報を用いる認証。パスワード/OTPベースの認証と発想が異なり、対照的な認証手段として紹介されます。
hotpの共起語
- HOTP
- HMACベースのワンタイムパスワードを生成する仕組みの名称。秘密キーとカウンターを使い、一定回数だけ使える使い捨てパスワードを作ります。
- OTP
- One-Time Passwordの略。短時間だけ有効な使い捨てパスワードの総称です。
- HMAC
- Hash-based Message Authentication Codeの略。秘密鍵とハッシュ関数を組み合わせて認証コードを作る方式です。
- HMAC-SHA1
- HMACの中でSHA-1ハッシュを用いる実装の一つ。HOTPを実装する際の代表的な組み合わせです。
- SHA-1
- SHA-1というハッシュ関数。現代では衝突耐性の観点から別のハッシュへ移行するのが推奨されていますが、OTPの土台として使われる場面があります。
- RFC 4226
- HOTPの正式仕様を定めたRFC番号。HOTPの基本ルールと動作を規定しています。
- RFC 6238
- TOTPの正式仕様を定めたRFC番号。時間に基づくワンタイムパスワードの標準仕様です。
- TOTP
- Time-based One-Time Passwordの略。時間を使って使い捨てパスワードを生成します。
- カウンター
- HOTPで用いられる連番の値。生成時の入力として使われます。
- シークレットキー
- OTPを生成・検証する際の秘密情報。端末とサーバーで共有します。
- シード
- OTP生成の初期値・秘密情報の別称として使われることがある言葉です。
- ベース32
- シークレットキーの表現に使われる文字エンコード形式の一つ。よく使われます。
- otpauth
- otpauth://... のようにOTPを表現するURIスキーム。Google Authenticator などの認証アプリで利用します。
- 二要素認証
- 本人確認を二つの要素で行う認証方式。OTPはこの実現手段の一つです。
- 二段階認証
- 二つの段階での認証プロセス。OTPを組み込んだ実装が一般的です。
- Google Authenticator
- Googleが提供する認証アプリ。TOTP/HOTPのコード生成に対応します。
- Authy
- OTP認証アプリの一つ。複数デバイスでのコード利用をサポートすることがあります。
hotpの関連用語
- HOTP
- HOTPは、共有された秘密鍵とカウンターを使って、1回限り有効なパスワードを生成する仕組みです。コードは毎回異なり、サーバーと端末のカウンターを同期させて使用します。
- TOTP
- TOTPは、秘密鍵と現在時刻を使い、一定の時間間隔ごと(通常は30秒)に新しいパスワードを生成する仕組みです。時間を基に有効期限が決まります。
- HMAC
- HMACは、秘密鍵とメッセージを組み合わせて改ざん検出可能なハッシュ値を作る仕組みです。HOTP/TOTPの核となる技術です。
- RFC 4226
- RFC 4226はHOTPの正式な仕様書。動的切り捨てなど、OTPの生成手順を定義しています。
- RFC 6238
- RFC 6238はTOTPの正式な仕様書。時間ベースのOTPの生成ルールを定義しています。
- OATH
- OATHはOpen AuTHenticationの略で、HOTPとTOTPの標準を策定した団体です。
- 秘密鍵
- OTPを生成する秘密の鍵。認証サーバーと端末で共有され、通常はBase32形式で表現します。
- Base32
- Base32は秘密鍵を文字列として扱うエンコード方式で、読みやすく長さを抑えた表現にします。
- カウンター
- HOTPで使われる移動因子。コードが生成されるたびに1ずつ進み、サーバーと端末で同期が必要です。
- 時間ステップ
- TOTPの時間の区切り。例: 30秒ごとに新しいコードが生成され、前のコードはすぐ使えなくなります。
- 桁数
- OTPの表示桁数。一般的には6桁が多いです。
- Provisioning URI
- アプリに設定情報を渡すURL。秘密鍵や issuer、桁数などの情報を含み、スマホの認証アプリでの設定に使われます。
- otpauth
- otpauthスキームのURI。hotp/totpの設定をアプリに渡す標準形式です。
- Authenticator アプリ
- Google AuthenticatorやAuthyなど、スマホでTOT(P/H)OTPを生成して表示するアプリの総称です。
- Hardware token
- 物理デバイスによってOTPを生成する認証手段。YubiKeyなどが代表例です。
- QRコード
- 設定情報を素早く読み取って provisioning に使う画像フォーマット。読み取りで秘密鍵を取り込めます。
- 同期
- サーバーと端末のカウンターや時刻を揃える作業。時刻のずれがあるとコードが合わなくなります。
- 動的切り捨て
- HMAC結果からOTPを取り出す際の、特定のビットを使って切り出す手法(ダイナミックトランケーション)です。
- SHA-1
- デフォルトのハッシュ関数。HOTP/TOTPの計算でよく使われます。
- SHA-256
- SHA-1の代替として使われるハッシュ関数。セキュリティの観点で選ばれることがあります。
- SHA-512
- SHA-2ファミリーの別のハッシュ関数。必要に応じて使用されます。
- 2FA / MFA
- 二要素認証(2FA)または多要素認証(MFA)の一形態として、パスワードに加えてOTPを用いる認証手段です。
- YubiKey
- 有名なハードウェアトークンの一例。OTPを生成する機能を持つモデルがあります。
- OTP
- ワンタイムパスワードの総称。1回限り有効なコードとして使われます。
- セキュリティ上の注意点
- 秘密鍵の保管は厳重に。バックアップ、暗号化、端末紛失時の対応、コードの共有禁止などを心掛けます。
hotpのおすすめ参考サイト
- HOTPとは - IT用語辞典 e-Words
- ワンタイムパスワード認証とは?意味・定義 - NTTドコモビジネス
- 【セキュリティ】HOTP(HMAC-Based One-Time Password)とは



















