hotpとは?初心者にもわかるワンタイムパスワードのしくみと使い方共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
hotpとは?初心者にもわかるワンタイムパスワードのしくみと使い方共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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の違い

よく混同されるのが HOTPTOTP の違いです。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のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14216viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2341viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1043viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
873viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
758viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
750viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
652viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
634viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
585viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
534viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
525viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
493viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
488viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
488viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
487viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
383viws
select句・とは?初心者でも分かるSQLの基本と使い方共起語・同意語・対義語も併せて解説!
377viws
wi-fiとは?初心者向けにわかりやすく解説する基礎ガイド共起語・同意語・対義語も併せて解説!
371viws
ダイレクトチャットとは?初心者向けガイドで使い方と注意点を徹底解説共起語・同意語・対義語も併せて解説!
341viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
322viws

新着記事

インターネット・コンピュータの関連記事