HMAC-based One-time Password
HMAC-based One-time Password (HOTP)は、HMACを利用したワンタイムパスワード (OTP)のアルゴリズムであり、オープン標準として無料公開されている。また、OATHの基礎となっている。
HOTPは、そのアルゴリズムおよびJavaでの実装例を文書化したテンプレート:IETF RFCという形で、2005年12月に公開された。以来、多くの企業で採用されている。
アルゴリズム
HOTPは、一回分の認証試行に限り使用可能な(使い捨ての)パスワードとして、人間にも判読しやすい値を対称的に生成するという方法で本人認証を実現する。使い捨てであるという特性は、生成する度にカウンタの値が変動することに由来する。
パラメータ
HOTPを使う前に両者の間でいくつかのパラメータを共有する必要がある。基本的には認証者が指定し、被認証者はそれらを受け入れるかどうか決定する[注釈 1]。
- :暗号学的ハッシュ関数
- SHA-1を使用するテンプレート:Sfnテンプレート:Sfn。
- TOPTに拡張される際SHA-256とSHA-512も選択できるようになったテンプレート:Sfn[注釈 2]。HOTPのハッシュアルゴリズムとして選択できる実装もある[1]。
- :共有シークレット
- 認証者と被認証者で共有する非公開の静的なデータテンプレート:Sfnテンプレート:Sfn。 秘密鍵、シードとも呼ばれる[2][3]。
- 少なくとも128ビット必要で160ビットが推奨されるテンプレート:Sfn。
- 被認証者(トークン)は固有の共有シークレットを持ちテンプレート:Sfn、これは認証者によって決定論的方法やランダムで生成されトークンにプロビジョニングされるテンプレート:Sfn。
- スマートフォンで使われるソフトウェアトークンでは共有シークレットのプロビジョニングをQRコードで行うことが多い[4][5]。
- :カウンタ
- 生成回数の累計値で、大きさは8バイト
- :出力値の長さ
- 6–10、デフォルトは6、推奨値は6-8
- テンプレート:要出典
計算方法
テンプレート:IETF RFCに従い、ここではをSHA-1とした場合の計算方法を示す。
HOTPの計算式は次の形で表される。 テンプレート:Indent テンプレート:Indent
の詳細を示す。
- の下位4ビットを取り出し、オフセット値とする。
- のバイト列について、先頭を0番目としたときの番目~+3番目を取り出す。取り出した4バイト(32ビット)の値をとする。
- さらに、の最上位1ビットを切り捨て、これをとする。[注釈 3]
- を十進数に変換し、下位桁をモジュロ演算で取り出す。
手順1から手順3までの操作を、テンプレート:IETF RFC では動的切り捨て(Dynamic Truncation)と呼称している。
ここで、は高々2,147,483,647(=2テンプレート:Sup-1)であることから、の最大値は10であり、またが10のときに限り最上位は0·1·2のいずれかとなることが分かる。
実装上の注意
認証者と被認証者はそれぞれ独立してカウンタの値をインクリメントするが、(トークンの誤操作による過剰な生成等で)被認証者側の値が認証者側の値を上回る可能性がある。そのため、テンプレート:IETF RFC では再同期パラメータを設定しておくことを推奨している。認証者は個先のHOTPまで同時に計算し、照合に成功した値があればそのカウンタの値を反映する。この過程で、被認証者側に対して特別に要求される操作は存在しない。
データ量が比較的小さいために総当たり攻撃が行われやすいので、値の検証時は意図的に処理速度を落とすスロットリングを行うことが推奨されている。例えば、何度か認証に失敗した場合はアカウントをロックアウトしたり、認証に失敗する度に直線的に増加する遅延を意図的に挿入したりすることが提案されている。
認証完了後、認証者はその次のカウンタの値でHOTPを生成して被認証者に送信することで、認証者自身の正当性を証明することができる。この過程ではカウンタの再同期が必要となり得ない点に注意したい。[注釈 4]
トークン
ハードウェアトークンもソフトウェアトークンも共に様々なベンダーから提供されており、その一部を下に列挙する。
HOTPベースのハードウェアトークンは、プロプライエタリなアルゴリズムを採用した製品よりも大幅に安くなる傾向にある[6]。2010年以降、HOTPベースのハードウェアトークンはごく僅かな価格で購入できるようになった[7]。一部の製品は、HOTPだけでなく強力なパスワードも利用できる[8]。
ソフトウェアトークンは、ほとんど全ての主要なモバイル/スマートフォンプラットフォームで利用可能である。(J2ME[9], Android[10], iPhone[11], BlackBerry[12], Maemo[13], macOS[14], Windows Mobile[12])
業界の反応
2004年から2005年にかけて、コンピュータ関連を専門とする一部の報道機関からの初期の反応は否定的であったものの[15][16][17]、IETFが2005年12月にHOTPをテンプレート:IETF RFCとして公開して以降、様々なベンダーがHOTPと互換性のあるトークンや認証ソリューションを開発し出した。
ガートナー社の一部門であるBurton Groupが2010年に公開した"Road Map: Replacing Passwords with OTP Authentication"[6]というテンプレート:仮リンクに関する記事によると、「今後もワンタイムパスワードを専用ハードウェアで生成するという形態は緩やかに発達し続けるものの、これからはスマートフォンでワンタイムパスワードを生成する形態が成長し、標準となっていくだろう」とガートナー社は予想していた。
現在はスマートフォンにアプリで簡単にトークン機能を導入できるようになったため[18]、法人向けネットバンキング等の非常にリスクの高い取引を除いては、(ガートナー社の予想通り)スマートフォン一台で全て完結するようになった。
脚注
注釈
出典
参考文献
関連項目
外部リンク
- テンプレート:IETF RFC HOTP: An HMAC-Based One-Time Password Algorithm
- テンプレート:IETF RFC TOTP: Time-Based One-Time Password Algorithm
- Initiative For Open Authenticationテンプレート:リンク切れ
引用エラー: 「注釈」という名前のグループの <ref> タグがありますが、対応する <references group="注釈"/> タグが見つかりません
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ 6.0 6.1 テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ 12.0 12.1 テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web