HMAC-based One-time Password

生成回数に基づいて算出されるワンタイムパスワードおよびその認証技術

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

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

アルゴリズム

編集

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

パラメータ

編集

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

  •  カウンタ
    生成回数の累計値で、大きさは8バイト
  •  :出力値の長さ
    6–10、デフォルトは6、推奨値は6-8
    多くのベンダーが提供するプロプライエタリなハードウェアトークンでは、 のデフォルト値が固定されている場合、6桁が一般に採用されている。[要出典]

計算方法

編集

RFC 4226に従い、ここでは SHA-1とした場合の計算方法を示す。

HOTPの計算式は次の形で表される。

 

 

 の詳細を示す。

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

手順1から手順3までの操作を、RFC 4226 では動的切り捨て(Dynamic Truncation)と呼称している。

ここで、 高々2,147,483,647(=231-1)であることから、 の最大値は10であり、また が10のときに限り最上位は0·1·2のいずれかとなることが分かる。

実装上の注意

編集

認証者と被認証者はそれぞれ独立してカウンタの値をインクリメントするが、(トークンの誤操作による過剰な生成等で)被認証者側の値が認証者側の値を上回る可能性がある。そのため、RFC 4226 では再同期パラメータ を設定しておくことを推奨している。認証者は 個先のHOTPまで同時に計算し、照合に成功した値があればそのカウンタの値を反映する。この過程で、被認証者側に対して特別に要求される操作は存在しない。

データ量が比較的小さいために総当たり攻撃が行われやすいので、値の検証時は意図的に処理速度を落とすスロットリングを行うことが推奨されている。例えば、何度か認証に失敗した場合はアカウントをロックアウトしたり、認証に失敗する度に直線的に増加する遅延を意図的に挿入したりすることが提案されている。

認証完了後、認証者はその次のカウンタの値でHOTPを生成して被認証者に送信することで、認証者自身の正当性を証明することができる。この過程ではカウンタの再同期が必要となり得ない点に注意したい。[注釈 4]

トークン

編集

ハードウェアトークンもソフトウェアトークンも共に様々なベンダーから提供されており、その一部を下に列挙する。

HOTPベースのハードウェアトークンは、プロプライエタリなアルゴリズムを採用した製品よりも大幅に安くなる傾向にある[12]。2010年以降、HOTPベースのハードウェアトークンはごく僅かな価格で購入できるようになった[13]。一部の製品は、HOTPだけでなく強力なパスワードも利用できる[14]

ソフトウェアトークンは、ほとんど全ての主要なモバイル/スマートフォンプラットフォームで利用可能である。(J2ME[15], Android[16], iPhone[17], BlackBerry[18], Maemo[19], macOS[20], Windows Mobile[18])

業界の反応

編集

2004年から2005年にかけて、コンピュータ関連を専門とする一部の報道機関からの初期の反応は否定的であったものの[21][22][23]IETFが2005年12月にHOTPをRFC 4226として公開して以降、様々なベンダーがHOTPと互換性のあるトークンや認証ソリューションを開発し出した。

ガートナー社の一部門であるBurton Groupが2010年に公開した"Road Map: Replacing Passwords with OTP Authentication"[12]という強力な認証英語版に関する記事によると、「今後もワンタイムパスワードを専用ハードウェアで生成するという形態は緩やかに発達し続けるものの、これからはスマートフォンでワンタイムパスワードを生成する形態が成長し、標準となっていくだろう」とガートナー社は予想していた。

現在はスマートフォンにアプリで簡単にトークン機能を導入できるようになったため[24]、法人向けネットバンキング等の非常にリスクの高い取引を除いては、(ガートナー社の予想通り)スマートフォン一台で全て完結するようになった。

脚注

編集

注釈

編集
  1. ^ 被認証者が使うトークンによっては、一部のパラメータを設定できないことがあるため。
  2. ^ TOTPはHOTPのカウンタをシステム時間とした認証アルゴリズムである。
  3. ^ 符号付きの値に対するモジュロ演算の計算結果については複数の説が存在する。このため、符号ビットを使わないで済むようにこの処理を行う。
  4. ^ 被認証者の認証に成功した時点でカウンタの値が合致していることが確認できているため。

出典

編集
  1. ^ David 2005, p. 6.
  2. ^ Lina 2021, p. 132.
  3. ^ David 2011, p. 3.
  4. ^ Red Hat, Inc.. “6.2.3. HOTP 設定オプション”. Red Hat Documentation. 2024年12月12日閲覧。
  5. ^ a b c David 2005, p. 5.
  6. ^ Lina 2021.
  7. ^ OneLogin. “OTP、TOTP、HOTPの違い”. 2024年12月12日閲覧。
  8. ^ (株)インセプト IT用語辞典 e-Words 編集部 (2023年3月2日). “HOTPとは”. IT用語辞典 e-Words. 2024年12月12日閲覧。
  9. ^ David 2005, p. 11.
  10. ^ IBM (2024年6月27日). “OTP 秘密鍵の管理”. IBM Security Verify Access. 2024年12月12日閲覧。
  11. ^ Kaspersky Lab (2023年2月15日). “Google Authenticatorに代わる認証アプリはない?”. kaspersky daily. 2024年12月12日閲覧。
  12. ^ a b Diodati, Mark (2010年). “Road Map: Replacing Passwords with OTP Authentication”. Burton Group. 2011年7月21日時点のオリジナルよりアーカイブ。2011年2月10日閲覧。
  13. ^ Security Authentication Tokens — Entrust”. Entrust (2011年). 2013年4月5日時点のオリジナルよりアーカイブ。2010年3月5日閲覧。
  14. ^ Password sCrib Tokens — Smart Crib”. Smart Crib (2013年). 2013年3月20日時点のオリジナルよりアーカイブ。2013年10月21日閲覧。
  15. ^ DS3 Launches OathToken Midlet Application”. Data Security Systems Solutions (2006年2月24日). 2013年12月29日時点のオリジナルよりアーカイブ。2011年2月10日閲覧。
  16. ^ StrongAuth” (2010年). 2010年5月18日時点のオリジナルよりアーカイブ。2011年2月10日閲覧。
  17. ^ Cobbs, Archie L. (2010年). “OATH Token”. Archie L. Cobbs. 2011年2月10日閲覧。
  18. ^ a b ActivIdentity Soft Tokens”. ActivIdentity (2010年). 2010年9月17日時点のオリジナルよりアーカイブ。2011年2月10日閲覧。
  19. ^ Whitbeck, Sean (2011年). “OTP Generator for N900”. Sean Whitbeck. 2012年2月11日閲覧。
  20. ^ SecuriToken”. Feel Good Software (2011年). 2012年4月25日時点のオリジナルよりアーカイブ。2011年11月1日閲覧。
  21. ^ Kearns, Dave (2004年12月6日). “Digging deeper into OATH doesn't look so good”. Network World. 2010年10月7日閲覧。
  22. ^ Willoughby, Mark (2005年3月21日). “No agreement on Oath authentication”. Computerworld. 2012年10月11日時点のオリジナルよりアーカイブ。2010年10月7日閲覧。
  23. ^ Kaliski, Burt (2005年5月19日). “Algorithm agility and OATH”. Computerworld. 2012年10月11日時点のオリジナルよりアーカイブ。2010年10月7日閲覧。
  24. ^ Google 認証システムで確認コードを取得する”. Google. 2024年11月24日閲覧。

参考文献

編集

関連項目

編集

外部リンク

編集