利用者:Miya/時間ベースのワンタイムパスワードアルゴリズム

時間ベースのワンタイムパスワードアルゴリズムTOTP )は、 HMAC ベースのワンタイムパスワードアルゴリズムHOTP )の拡張であり、代わりに現在の時刻から一意性を取得してワンタイムパスワードを生成する 。 Internet Engineering Task Force [1]標準RFC 6238として採用されている [1]。また、 Initiative For Open Authentication (OATH)の基礎であり、多くの2要素認証システムで使用されている。

ネットワークと人間の両方の遅延、および非同期クロックのため、ワンタイムパスワードは、認証者と被認証者の間でover a range of times(さまざまな機会に?) validate(検証?)する必要がある。ここでは、当事者間の有効性を考慮して、時間がより長い期間(30秒など)にダウンサンプリングされる。ただし、HOTPと同様に、一意性の低下には、レート制限などの追加の対策が必要である。

アルゴリズム[編集]

TOTP認証を確立するには、被認証者と認証者は、HOTPパラメータと、続くTOTPパラメータの両方を事前確立する必要がある:

  • T 0 、タイムステップのカウントを開始するUnix時間(デフォルトは0)
  • T X 、カウンターCTの値を計算するために使用される間隔(デフォルトは30秒)


認証者と被認証者の両方がTOTP値を計算し、オーセンティケーターは被認証者が供したTOTP値がローカルで生成されたTOTP値と一致するかどうかをチェックする。わずかなクロックスキュー、ネットワーク遅延、ユーザー遅延を考慮して、現在時刻の前後に生成された値を許容する認証者も一部にある。

TOTP値[編集]

TOTPはHOTPアルゴリズムを使用して、カウンターを現在の時間に基づいた非減少値に置き換える。

TOTPvalue(K) = HOTP<span about="#mwt13" data-cx="[{&quot;adapted&quot;:true,&quot;targetExists&quot;:true}]" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Thinsp&quot;,&quot;href&quot;:&quot;./Template:Thinsp&quot;},&quot;params&quot;:{},&quot;i&quot;:0}}]}" data-ve-no-generated-contents="true" id="mwKA" style="white-space:nowrap" typeof="mw:Transclusion"><span typeof="mw:Entity"> </span></span>value(K, CT)

時間カウンタC Tは、現在のUnix時間 Tとあるエポック( T 0 ; Unixエポックを参照)との差の期間の数T Xをカウントする整数である。後者の値はすべて整数秒となる。

Unixの時間が正確に増加しているわけではないことに注意すること。うるう秒がUTCに挿入されるときは特に注意を要する。

実用的な考慮事項[編集]

後続の認証が機能するためには、被認証者と認証者のクロックをおおよそ同期する必要がある(認証者は通常、認証されたタイムスタンプと±1の時間差があるタイムスタンプから生成されたワンタイムパスワードを受け入れる)。

弱点と脆弱性[編集]

TOTP値はパスワードと同様にフィッシングできるが、攻撃者は資格情報を後で収集するのではなく、リアルタイムでプロキシする必要がある。

ログイン試行回数を制限しない実装は、値のブルートフォース攻撃に対して脆弱である。(警告:機械翻訳83%)

共有秘密鍵を盗む攻撃者は、新しい有効なTOTP値を自由に生成できる。これは、攻撃者が大規模な認証データベースに侵入した場合に特に問題になる可能性がある。[2]

TOTPデバイスは電池が切れることがあり、時計は非同期になりえるし、TOTPソフトウェアバージョンは紛失や盗難の可能性がある携帯電話機で実行されるため、すべての現実世界の実装には保護をバイパスする方法がある(例:コードを印刷する、電子メールをリセットするなど)。これは、大規模なユーザーベースのサポートにかなりの負担をかける可能性があり、また不正をもくろむユーザーに悪用できる方向を追加で提供している。

TOTPの値は、画面に表示される時間よりも長く(通常は2倍)有効である。これは、認証側と被認証側のクロックが大幅にずれることがあることを許容したものである。

歴史[編集]

TOTPドラフトは、業界に支持された標準を作成するために、複数のOATHメンバーの協力により開発された。イベントベースのワンタイム標準HOTPを補完し、エンドユーザー組織と企業に、アプリケーション要件とセキュリティガイドラインに最適なテクノロジを選択する選択肢を提供増やす。 2008年、OATHは仕様のドラフトバージョンをIETFに提出した。このバージョンには、IETFに提出された以前のバージョンに基づいて作成者が技術コミュニティから受け取ったすべてのフィードバックとコメントが組み込まれている。 [3] 2011年5月、TOTPは正式にRFC 6238になった [1]。 (警告:機械翻訳100%)

参照資料[編集]

  1. ^ a b c [rfc:6238 RFC 6238 – TOTP: Time-Based One-Time Password Algorithm".] Retrieved July 13, 2011.
  2. ^ Zetter, Kim. “RSA Agrees to Replace Security Tokens After Admitting Compromise” (英語). WIRED. https://www.wired.com/2011/06/rsa-replaces-securid-tokens/ 2017年2月17日閲覧。 
  3. ^ Alexander. “OATH Submits TOTP: Time-Based One Time Password Specification to IETF”. Open Authentication. 2010年2月22日閲覧。

関連項目[編集]

  • Botan 、HOTP / TOTPサポートとC ++暗号ライブラリ

外部リンク[編集]

[[Category:暗号]] [[Category:インターネットのプロトコル]]