HMAC-based One-time Password

提供: testwiki
ナビゲーションに移動 検索に移動

HMAC-based One-time Password (HOTP)は、HMACを利用したワンタイムパスワード (OTP)のアルゴリズムであり、オープン標準として無料公開されている。また、OATHの基礎となっている。

HOTPは、そのアルゴリズムおよびJavaでの実装例を文書化したテンプレート:IETF RFCという形で、2005年12月に公開された。以来、多くの企業で採用されている。

アルゴリズム

HOTPは、一回分の認証試行に限り使用可能な(使い捨ての)パスワードとして、人間にも判読しやすい値を対称的に生成するという方法で本人認証を実現する。使い捨てであるという特性は、生成する度にカウンタの値が変動することに由来する。

パラメータ

HOTPを使う前に両者の間でいくつかのパラメータを共有する必要がある。基本的には認証者が指定し、被認証者はそれらを受け入れるかどうか決定する[注釈 1]

  • Cカウンタ
    生成回数の累計値で、大きさは8バイト

計算方法

テンプレート:IETF RFCに従い、ここではHSHA-1とした場合の計算方法を示す。

HOTPの計算式は次の形で表される。 テンプレート:Indent テンプレート:Indent

Truncate()の詳細を示す。

  1. HSの下位4ビットを取り出し、オフセット値iとする。
  2. HSのバイト列について、先頭を0番目としたときのi番目~i+3番目を取り出す。取り出した4バイト(32ビット)の値をPとする。
  3. さらに、Pの最上位1ビットを切り捨て、これをSとする。[注釈 3]
  4. Sを十進数に変換し、下位D桁をモジュロ演算で取り出す。

手順1から手順3までの操作を、テンプレート:IETF RFC では動的切り捨て(Dynamic Truncation)と呼称している。

ここで、S高々2,147,483,647(=2テンプレート:Sup-1)であることから、Dの最大値は10であり、またDが10のときに限り最上位は0·1·2のいずれかとなることが分かる。

実装上の注意

認証者と被認証者はそれぞれ独立してカウンタの値をインクリメントするが、(トークンの誤操作による過剰な生成等で)被認証者側の値が認証者側の値を上回る可能性がある。そのため、テンプレート:IETF RFC では再同期パラメータsを設定しておくことを推奨している。認証者はs個先の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]、法人向けネットバンキング等の非常にリスクの高い取引を除いては、(ガートナー社の予想通り)スマートフォン一台で全て完結するようになった。

脚注

注釈

テンプレート:Notelist

出典

テンプレート:Reflist

参考文献

関連項目

外部リンク


引用エラー: 「注釈」という名前のグループの <ref> タグがありますが、対応する <references group="注釈"/> タグが見つかりません