(57)【要約】  イベントの発生と時間の経過との双方に基づいて変更できる値ＴＥＣに基づいて、ワンタイムパスワード（ＯＴＰ）を発生させるシステムおよび方法である。ＯＴＰは、トークンで計算して、検証者に送信することができる。検証者は、トークンからの１つ以上の予測ＯＴＰを計算するために必要な正確なまたは推測されたパラメータを記憶するが、これにはＴＥＣが含まれる。値ＴＥＣは、トークンと検証者との間で同期化することができる。【選択図】      図１
2009534742.tif 000002
【特許請求の範囲】
【請求項１】
ワンタイムパスワードを発生させる方法において、
イベントの発生と時間の経過とに基づいて、値ＴＥＣを増分することと、
ＴＥＣに基づいて、前記ワンタイムパスワードを決定することとを含む方法。
【請求項２】
前記ワンタイムパスワードは、アジャンクト値に基づいてさらに決定される請求項１記載の方法。
【請求項３】
前記アジャンクト値は、共有シークレットに基づいたものである請求項２記載の方法。
【請求項４】
前記アジャンクト値は、共有シークレットと公開情報とに基づいたものである請求項２記載の方法。
【請求項５】
前記イベントは、ボタンの押下である請求項１記載の方法。
【請求項６】
前記イベントは、ダイアログボックスの選択である請求項１記載の方法。
【請求項７】
前記イベントは、条件の一致である請求項１記載の方法。
【請求項８】
ＴＥＣは、Ｔ秒後に増分される請求項１記載の方法。
【請求項９】
ＴＥＣは、Ｔ秒後にＴＩだけ増分される請求項１記載の方法。
【請求項１０】
ＴＥＣは、イベントＥの発生後にＥＩだけ増分される請求項１記載の方法。
【請求項１１】
前記ワンタイムパスワードは、ＲＦＣ４２２６において規定されたアルゴリズムにしたがって計算される請求項１記載の方法。
【請求項１２】
ワンタイムパスワードを発生させる装置において、
時間の経過とイベントの発生とに基づいてＴＥＣを増分して、ＴＥＣに基づいてワンタイムパスワードを計算するように構成および配置されているプロセッサを具備する装置。
【請求項１３】
前記プロセッサに結合されているメモリとディスプレイとをさらに具備する請求項１２記載の装置。
【請求項１４】
前記プロセッサは、前記ワンタイムパスワードをディスプレイに表示させるようにさらに構成および配置されている請求項１３記載の装置。
【請求項１５】
前記プロセッサは、Ｔ秒の経過を検出したときに、ＴＥＣをＴＩだけ増分するように構成および配置されている請求項１２記載の装置。
【請求項１６】
前記プロセッサは、イベントＥの発生を検出したときに、ＴＥＣをＥＩだけ増分するように構成および配置されている請求項１２記載の装置。
【請求項１７】
前記プロセッサは、ＲＦＣ４２２６に規定されたアルゴリズムにしたがって、前記ワンタイムパスワードを計算するように構成および配置されている請求項１２記載の装置。
【請求項１８】
プロセッサによって実行されて、イベントの発生と時間の経過とに基づいて増分された値に基づいて、ワンタイムパスワードを計算するように適合されている命令を記憶する媒体。
【請求項１９】
前記ワンタイムパスワードは、アジャンクト値に基づいて計算される請求項１８記載の媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２００４年１０月１５日に出願された米国仮特許出願第６０／６１８，６００号、ならびに２００５年１０月１７日に出願されたＰＣＴ出願第ＰＣＴ／ＵＳ０５／３７１１３号に関する。
【発明の分野】
【０００２】
本発明の分野は、認証であり、特に、ワンタイムパスワードを用いた認証である。
【発明の背景】
【０００３】
認証サービスとのみに共有されているシークレットを記憶するトークンを使用して、ユーザを認証することができる。トークンは、共有シークレットと他の値とに基づいて、それぞれ認証するためにワンタイムパスワード（「ＯＴＰ」）を発生させる。認証サービスにおいてＯＴＰが受け取られたときに、サービスが、少なくとも１つの予測されるＯＴＰ値を計算し、受け取られたＯＴＰ値と比較する。これらが整合した場合に、ユーザが認証される。そうでなければ、ユーザは認証されない。
【０００４】
共有シークレットと、時間の関数として変化する値とに基づいて、自動的に周期的にＯＴＰを発生させることができる。例えば、日付および時刻に対応している値と、共有シークレットとに基づいて、新しいＯＴＰを自動的に分ごとに発生させることができる。トークンで使用された日付／時間値を含むことになっている日付／時間値の範囲と共有シークレットとに基づいて、認証サービスは、一連の予測されるＯＴＰを計算する。これは、トークンとサービスとに同期外れを引き起こす、トークン上のクロックとサービスにおけるクロックとの間の何らかのドリフトを考慮に入れている。サービスにおいて計算されたＯＴＰのうちの１つが受け取られたＯＴＰと整合した場合に、ユーザが認証される。ＯＴＰを計算するために使用されるパラメータのうちの１つが経時的に変化することから、セキュリティが増強される。
【０００５】
共有シークレットとイベントの特性とに基づいて、ＯＴＰを計算することができる。例えば、イベントの特性は、トークン上のボタンをユーザが押すごとに増分されるカウンタの値であってもよい。認証サービスは、トークンにおいて最後に知られているカウンタ値で始まるカウンタ値と共有シークレットとに基づいてＯＴＰの範囲を計算する。これは、ボタンを押して結果的に生じたＯＴＰがサービスに送信されなかったことを考慮に入れている。サービスにおいて計算されたＯＴＰのうちの１つが、受け取られたＯＴＰと整合した場合、ユーザが認証される。
【０００６】
ＲＦＣ４２２６で規定された、ＨＯＴＰアルゴリズムを含むＯＴＰを発生させるための多数のアルゴリズムが知られている。ＨＯＴＰアルゴリズムを説明する際に、以下のシンボルを使用することができる。
【表１】
2009534742.tif 000003
【０００７】
ＨＯＴＰアルゴリズムは、トークンおよびバリデーションサービスのみに知られている、増加するカウンタ値と静的対称キーとに基づいている。ＨＯＴＰ値を生成するために、ＲＦＣ２１０４で規定されているようなＨＭＡＣ−ＳＨＡ−１アルゴリズムを使用するであろう。ＨＭＡＣ−ＳＨＡ１の計算の出力が１６０ビットであることから、ユーザによって容易に入力できる何かにこの値を打ち切る必要がある。したがって、  
ＨＯＴＰ（Ｋ,Ｃ）＝Ｔｒｕｎｃａｔｅ（ＨＭＡＣ−ＳＨＡ−１（Ｋ,Ｃ))となる。  
ここで、「Ｔｒｕｎｃａｔｅ」は、ＨＭＡＣ−ＳＨＡ−１値をＨＯＴＰ値に変換できる関数を示している。キー（Ｋ）、カウンタ（Ｃ）およびデータ値は、最初に上位バイトをハッシュすることができる。ＨＯＴＰ発生器によって発生されたＨＯＴＰ値をビッグエンディアンとして取り扱うことができる。
【０００８】
以下の４つのステップでＯＴＰを発生させることができる。  
ステップ１：ＨＭＡＣ−ＳＨＡ−１値を発生させる。  
ＨＳ＝ＨＭＡＣ−ＳＨＡ−１（Ｋ，Ｃ)／／ＨＳは、２０バイトストリングである。  
ステップ２：４バイトストリング（Ｄｙｎａｍｉｃ Ｔｒｕｎｃａｔｉｏｎ）を発生させる。  
Ｓｂｉｔｓ＝ＤＴ（ＨＳ）とする。／／ＤＴは、以下で規定するが、３１ビットストリングを返す。  
ステップ３：ＨＯＴＰ値を計算  
Ｓｎｕｍ＝ＳｔＴｏＮｕｍ（Ｓｂｉｔ）とする。／／Ｓを０...２＾｛３１｝−１の数に変換する。  
Ｄ＝Ｓｎｕｍ ｍｏｄ １０＾Ｄｉｇｉｔを返す。／／Ｄは、０...１０＾｛Ｄｉｇｉｔ｝−１の範囲の数である。  
Ｔｒｕｎｃａｔｅ関数は、ステップ２およびステップ３、すなわち、動的な打ち切りを
し、そして１０＾Ｄｉｇｉｔを法とした還元を行うことができる。動的オフセット打ち切り技術は、１６０ビット（２０バイト）ＨＭＡＣ−ＳＨＡ１の結果から、４バイトの動的なバイナリコードを取り出すことができる。
【０００９】
ＤＴ（Ｓｔｒｉｎｇ）／／Ｓｔｒｉｎｇ＝Ｓｔｒｉｎｇ［０］... Ｓｔｒｉｎｇ［１９］。  
ＯｆｆｓｅｔＢｉｔをＳｔｒｉｎｇ［１９］の下位４ビットとする。  
Ｏｆｆｓｅｔ＝ＳｔＴｏＮｕｍ（ＯｆｆＳｅｔＢｉｔｓ)／／０＜＝ＯｆｆＳｅｔ＜＝１５。  
Ｐ＝Ｓｔｒｉｎｇ［ＯｆｆＳｅｔ］... Ｓｔｒｉｎｇ［ＯｆｆＳｅｔ＋３］とする。  
Ｐの最後の３１ビットを返す。
【００１０】
Ｐの最上位のビットをマスキングすることによって、有符号および無符号モジュロ計算間の混乱を回避することができる。異なるプロセッサがこれらの演算を別々に行い、有符号ビットをマスキングアウトすることによって、あいまい性を解消できる。
【００１１】
ＲＦＣ４２２６は、最低６桁のコードを、そして可能であれば７および８桁コードを取り出すようにインプリメンテーションに要求する。この結果はＲＦＣに準拠しないかもしれないが、異なる状況のもとでは、この要求にそむくことができる。安全性の要求次第で、より長いＨＯＴＰ値の結果を取り出すために、Ｄｉｇｉｔ＝７またはより多くのものを考えなければならない。
【００１２】
ここでの例では、Ｄｉｇｉｔ＝６に対してこの技術を使用している。すなわち、６桁のＨＯＴＰ値が、ＨＭＡＣ値から計算される。以下のコードの例は、ｈｍａｃ＿ｒｅｓｕｌｔがＨＭＡＣ−ＳＨＡ１の結果によるバイトアレイであることを仮定して、動的バイナリコードの取り出しを説明している。
【数１】
2009534742.tif 000004
【００１３】
最後のバイト（バイト１９）は、１６進値０ｘ５ａを持つ。  
下位の４つのビットの値は、０ｘａ（オフセット値）である。  
オフセット値は、バイト１０（０ｘａ）である。  
バイト１０で始まる４バイトの値は０ｘ５０ｅｆ７ｆ１９であり、これは、動的バイナ
リコードＤＢＣ１である。  
ＤＢＣ１のＭＳＢは０ｘ５０であるので、ＤＢＣ２＝ＤＢＣ１＝０ｘ５０ｅｆ７ｆ１９
である。  
ＨＯＴＰ＝１０＾６を法としたＤＢＣ２＝８７２９２１である。  
３１ビット、無符号のビッグエンディアン整数として動的バイナリコードを取り扱うことができる。つまり、最初のバイトは０ｘ７ｆでマスキングされる。１，０００，０００（１０＾６）を法としたこの数を用いて、６桁のＨＯＴＰ値である十進法の８７２９２１を発生させることができる。
【００１４】
ＯＴＰを計算するための入力としてカウンタ値を使用する短所は、長い期間にわたって、カウンタ値が同じままであり得ることである。例えば、ユーザが、数ヶ月にわたって自身のトークンを使用しない場合、カウンタ値は、使用する間の期間全体にわたって同じ値を持続するであろう。ある状況のもとでは、これによって、トークンを解析し、カウンタの正確な値または近似値を推測するための十分な時間を第三者に与えてしまい、ことによると認証システムのセキュリティが危険に曝されるかもしれない。
【詳細な説明】
【００１５】
本発明の実施形態にしたがうと、時間の関数としてカウンタ値Ｃを変化させることができる。時間の何らかの適切な関数が使用されてもよい。イベントの発生に基づいて、また、時間の経過に基づいて変化されるカウンタＣは、時間およびイベントベースカウンタ、すなわち、ＴＥＣと呼ばれる。例えば、
ＴＥＣ＝Ｆ（Ｘ，Ｙ，Ｗ，Ｚ）である。  
ここで、Ｆは何らかの適切な関数または他のマッピングであり、ＸはＴＥＣの時間ベース増分のサイズであり、Ｙは、増分ＸがＴＥＣに加算される頻度に関するものであり、Ｗは、ＴＥＣのイベントベースの増分のサイズであり、Ｚは、ＴＥＣがＷだけ増分される前に生じる必要がある発生の数である。ＸおよびＷは正または負数であってもよく、一般的なケースでは、ＴＥＣは整数または他の何らかの種類の適切な数であってもよいことに留意すべきである。例えば、ＴＥＣは、証明者（例えば、トークン）および検証者（例えば、認証サービス）の双方において、Ｙ秒ごとにＸだけ増分されてもよい。同様に、ＴＥＣは、イベントＥまたは１組のイベント｛Ｅ｝からのイベントのＺ回の発生ごとに、Ｗだけ増分されてもよい。ＴＥＣを増分したイベントの後に、実際のＯＴＰ値をトークンにおいて計算することができる。例えば、以下のように、ＴＥＣは、バックグラウンドにおいて６０秒ごとに１だけ増分されてもよい。  
【表２】
2009534742.tif 000005
【００１６】
この例は、ＴＥＣを増分するための線形関数を示しているが、ＸおよびＹに対して、何らかの適切な関数またはマッピングが使用されてもよい。
【数２】
2009534742.tif 000006
【００１７】
ＸiおよびＹjは数値または変数であってもよい。例えば、Ｘは、共有シークレットの関数の８を法としたものであってもよく、Ｙは、証明者および検証者において発生可能な擬似ランダム数の１０を法としたものに等しくてもよい。Ｘおよび／またはＹは、以前のＯＴＰ計算の中間または最終結果に基づいたものとすることができ、例えば、打ち切り前の値のような、以前のＯＴＰに対して計算された完全値からのすべて、または最後のバイトの一部を使用することができる。例えば、この目的のために、以前のＨＭＡＣ計算の最後のバイト（バイト１９）をそれぞれの計算後に記憶して使用することができる。
【００１８】
ＸおよびＹはまた、他の方法で決定することができる。例えば、Ｙは、証明者におけるクロックの値のような、システムパラメータに基づいたものである。異なるトークンファミリは、異なる時間ステップを有する。バンクアカウントにアクセスするためのトークンは、Ｙに対して、より小さい値、例えば、２または３分で動作してもよいが、ｅメールアカウントをアクセスするためのトークンは、より大きい値、例えば、３０分で動作する。
【００１９】
ＴＥＣは、証明者および検証者の双方における「バックグラウンドにおいて」増分されてもよい。何らかの適切なイベントによって、ＴＥＣの増分およびＯＴＰの計算がトリガーされてもよい。例えば、ＯＴＰ値は、トークン上のボタンが押されたときにトークンで計算されてもよい。同様に、トークンは、移動体電話機や、ＰＣ上で実行しているアプリケーション等におけるＪａｖａ（登録商標）アプレットとして実現される「ソフトトークン」であってもよい。これらのケースにおいて、ＯＴＰの計算をトリガーするイベントは、セル電話キーパッドまたはコンピュータキーボード上の所定のキーを押下したり、キーのシーケンスを押したり、特別なボタンを押したり、バイオメトリックをスキャンしたりすること等を含んでいてもよい。同じように、ＯＴＰは、スクリーン上に表示されているグラフィカルユーザインターフェースにおけるツールバー上のアイテムの選択によって、プルダウンメニュー上のアイテムの選択によって、アプリケーションプログラムのアクティブ化によって、アプリケーションプログラムの機能のアクティブ化によって、あるいは他の何らかの適切なイベントによってトリガーされてもよい。
【００２０】
証明者におけるＴＥＣの初期値は、１または他の何らかの適切な値であってもよい。ＴＥＣの初期値は、ユーザによって設定できたり、認証サービスによって設定できたり、アプリケーションプログラムによって設定できたり、認証された第三者等によって設定できたりする。証明者における初期値が設定されたとき、初期値（すなわち、初期値を取得するために十分な情報）を検証者に送る必要がある。この方法において、検証者は、証明者に対して、ＴＥＣのその値を検証者自体におけるＣの値と同期させることができる。ＴＥＣの新しい何の設定がなくても、デフォルト値をＴＥＣの値に対して指定することができる。初期値は、証明者と検証者との間のようなシークレットを維持する。
【００２１】
証明者および検証者を同期させ、また、ことによると再同期させる必要がある。１つの実施形態において、クロックは、トークンがアクティブ化されたときにＴＥＣを増分させることを開始できる。別の実施形態では、クロックは、トークンが製造されたときにＴＥＣを増分させることを開始できる、すなわち、バリデーションサービスによってトークンがアクティブ化されたときに再同期化パスを発生させることができる。まる５秒間ボタンを押下する、または３秒内に４回ボタンを押す等のような、クロックを開始して、値を増分し、ＯＴＰ値を計算するための簡単なプロセスがある。検証者は、検証者が最後に知っている証明者値ＴＥＣと、検証者によって知られている現在の時間とに基づいて、所定の証明者に対する１組の候補のＯＴＰを計算することができる。これらの最後の知られている値の前後の範囲を使用することができる。検証者が計算したＯＴＰが、証明者から受け取ったＯＴＰと整合した場合、検証者は、その証明者についての、ＴＥＣと時間とに対する値を更新して記憶することができる。
【００２２】
本発明の実施形態にしたがうと、イベントの発生に基づいて値ＴＥＣを増分し、時間の経過に基づいてこの値を増分することによって、ＯＴＰを発生させることができる。ＯＴＰは、ＴＥＣに基づいて決定することができる。ＯＴＰはまた、ＴＥＣと、アジャンクト値、すなわち「ＡＶ」とに基づいて計算することができる。このアジャンクト値ＡＶは、暗号鍵、パスワード等のような、共有シークレットであってもよい。ＡＶは、シークレットおよび公開情報に基づいたものであってもよい。このような公開情報は、チャンレンジ、質問等であってもよい。ＴＥＣは、ボタンの押下、ダイアログボックスの選択、条件の一致（例えば、チャレンジに対する正確な応答）等のような、何らかの適切なイベントの発生に基づいて増分する。時間の経過は、アプリケーションごとに異なっていてもよい値Ｔによって測定することができる。ＴＥＣは、Ｔ秒、Ｔ分等後に増分される。ＴＥＣはまた、値ＴＩだけ増分されてもよく、ここでは、ＴＥＣは、Ｔ秒後にＴＩだけ増分されてもよい。例えば、Ｔ＝６０秒後に、ＴＥＣはＴＩ＝１だけ増分される。ＴＥＣは、値ＥＩによって制御することができ、ここでは、各イベントＥが生じた後に、ＴＥＣはＥＩだけ増分される。例えば、ユーザがボタンを押した後、ＴＥＣは、ＥＩ＝３だけ増分される。１つの実施形態では、ワンタイムパスワードは、ＲＦＣ４２２６において規定されたアルゴリズムを使用して計算される。
【００２３】
本発明の実施形態にしたがって、ユーザは、アクティブ化ウェブサイトに接続することによってトークンをアクティブ化することができる。アクティブ化ウェブサイトでは、何らかの適切な技術を使用して、例えば、ユーザネームとパスワードとを要求して確認することによって、ユーザを認証することができる。ユーザはまた、トークン識別子、トークンシリアル番号、関係証明書等のような何らかの適切な付加的な情報を提供することができる。この情報は、特定のトークンをユーザが実際に持っていることを証明するために、（トークンによって発生され、アクティブ化ウェブサイトに送信された１つ以上のＯＴＰ値とともに）使用することができる。トークン（例えば、トークン識別子）は特定のユーザ（例えば、ユーザ名）にリンクすることができ、例えば、トークンクロックによって発生されたデータに基づいて、トークンにおける時間値の記憶および／または更新を始めることができる。代わりに、クロック信号はトークンの外部から発せられてもよい。時間値は、ユーザがＯＴＰ値を取得した瞬間と、ＯＴＰ値が検証者において受け取られた時間との間の時間差を検証者が決定するのに役立つ。
【００２４】
本発明の実施形態はまた、カウンタ（Ｃ）と、キー（Ｋ）と、アジャンクト値（ＡＶ）とに基づいてＨＯＴＰ値を計算することができる。アジャンクト値ＡＶは、プライベートシークレット（例えば、プライベートキー）に基づいて、共有シークレット（例えば、パスワード）に基づいて、あるいはシークレット（プライベートまたは共有）といくつかの公開情報とを組み合わせたものに基づいたものであってもよい。公開情報は、共有でもプライベートシークレットでもない何らかの情報である。公開情報の例は、ユーザ識別子、チャレンジ、質問に対する応答等である。
【００２５】
時間ウィンドウは、トークンまたは１組のトークンに対して設定されてもよい。トークンの再同期は、（トークン上の）ＯＴＰの実際の発生と、検証者によるＯＴＰ値の受け取りとの間に経過した時間が、特定のトークンまたは１組のトークンに対して設定されている時間ウィンドウよりも長いときに生じる可能性がある。トークンが止められたとき、例えば、セル電話機、ＰＣ等上のソフトトークンが止められたときに、ソフトトークン値を検証者値と再同期させる必要がある。ソフトトークンを備えたデバイスを時間Ｔ０において切断させて、デバイスがＴ１において切り替えられて戻されるまで活動停止とする。ＥＩだけＴＥＣが増分するための時間期間をｔとする。例えば、値ＴＥＣは、ｔ秒ごとにＥＩだけ増分される。以下のように、再同期を実行することができる。  
１−  Ｔ＝Ｔ１−Ｔ０を計算する。
【００２６】
２−  Ｃｏｕｎｔ＝Ｆｌｏｏｒ（Ｔ／ｔ）*ＥＩを計算する。  
３−  ＴＥＣをカウントだけ増分する。  
４−  （差分Ｔに対して）トークンクロックを再同期する。  
この再同期手順の後、ＴＥＣは、通常、期間ｔごとにＥＩだけ増分される。
【００２７】
別のＴＥＣベースの再同期方法は、証明者が、ＯＴＰ値だけでなく、他の情報も、特にＴＥＣ値を送信するときにいつでも使用することができる。証明者は（ＯＴＰ．ｐｒｏｖｅｒと示される）自身のＯＴＰと、（ＴＥＣ．ｐｒｏｖｅｒと示される）ＴＥＣ値とを送ることができ、ＯＴＰは、ＴＥＣのショートメッセージ認証コードとして機能することができる。検証者は、システムパラメータのような（ＴＥＣ．ｂｏｕｎｄと示される）ＴＥＣの上限値によって決定された値のある範囲内で再同期させることができる。以下のものがすべて真である場合に、検証者はＯＴＰを受け入れることができる。ここで、ＴＥＣ．ｖｅｒｉｆｉｅｒは、証明者に関係するＴＥＣの検証者の現在の値である。
【数３】
2009534742.tif 000007
【００２８】
この再同期の手順の後、通常、ＴＥＣは、経過した期間ｔごとにＥＩだけ増分される。同様に、同一のまたは類似したプロトコルを使用して、証明者におけるＴＥＣ値を再同期させることができる。
【００２９】
さらに、デバイスが止められなかったとき、デバイス上のクロックは、他のクロック、例えば、検証者におけるクロックと同期が離れてドリフトする可能性がある。エンドユーザからの特定の介入なしに再同期させる１つの方法は、ＴＥＣの通常値の前後で「ウィンドウ」を維持することである。例えば、トークンにおいて計算され、検証者に送信されたＯＴＰのような、トークンからのＯＴＰを検証者が受け取ったとき、検証者は、送信トークンに対するその記憶されたパラメータに基づいて、例えば、そのトークンに対するイベント発生の現在の数（例えば、検証者によって受け取られた、これまでのそのトークンに対するＯＴＰ検証要求の数に基づく、そのトークン上でボタンが押された回数）に基づいてや、時間等に基づいて、ＴＥＣの予測された値を計算することができる。その記憶されたパラメータが、ＯＴＰを発生させるために使用されたトークンにおけるパラメータに対して、わずかに不正確であったことが認識されると、検証者は、これらのパラメータに対して予測された大きさに近いパラメータの大きさの範囲に基づいて、いくつかの候補ＯＴＰを計算することができる。例えば、検証者は、ＯＴＰをチェックすることができ、そして、正確でない場合、整合が見つかるまで、またはウィンドウのサイズが超えるまで、（例えば、予測されたＣのプラスまたはマイナス１０内の）Ｃ＋１、Ｃ−１、Ｃ＋２等に対するＯＴＰを計算する。
【００３０】
検証者は、異なるレベルのセキュリティを実現することができる。  
１−  このウィンドウ中のＯＴＰ値を単に受け入れる。または、  
２−  別のＯＴＰを提供するようにユーザに要求して、以前のものとは異なるＯＴＰを発生させる（たとえ、時間スロットが同一であっても、ボタンを押す（イベントの発生を生じさせる）ことによって、カウンタ値を修正するであろうから、ＯＴＰは異なるだろう）。または、  
３−  いくつかのアクションに対してＯＴＰを区別して受け入れ、他のものに対してＯＴＰを拒絶し、最終的には、最初の２−３の再同期を受け入れて、別のＯＴＰを要求し、トークンを置換すること、および／または特定のユーザとの再同期問題が存在することを技術サポートに通知すること等を提案する。
【００３１】
本発明の実施形態にしたがったシステムを図１に示している。トークン１０１は、メモリ１０３に結合されているプロセッサ１０２と、ディスプレイ１０４と、クロック１０５と、ボタン１０６とを備えていてもよい。メモリ１０３は、例えば、パスワードや、パーソナル識別番号（ＰＩＮ）や、暗号キー等といった共有シークレットのようなデータ１０７を記憶することができる。また、メモリ１０３は、カウンタＣと公開情報に基づいた値とを記憶することができる。さらに、メモリ１０３は、プロセッサ１０２によって実行されて、本発明にしたがった方法の少なくとも一部を実行するように適合されている命令１０８を記憶することができる。
【００３２】
プロセッサ１０２は、ハードウェアおよび／またはファームウェアにおいて本発明の方法の少なくとも一部を具体化する、汎用マイクロプセッサまたは特定用途向け集積回路であってもよい。汎用マイクロプロセッサの例は、カリフォルニア、Ｓａｎｔａ ＲｏｓａのＩｎｔｅｌ Ｃｏｒｐｏｒａｔｉｏｎによって製造されているペンティアム（登録商標）ＩＶプロセッサである。ＡＳＩＣの例は、デジタル信号プロセッサである。
【００３３】
メモリ１０３は、電子情報を記憶できる任意のデバイスであってもよい。メモリ１０３の例は、ランダムアクセスメモリ、リードオンリーメモリ、電子プログラマブルリードオンリーメモリ、フラッシュメモリ、ハードディスク、ＣＤ等を含むことができる。これらはまた、命令１０７およびデータ（例えば、シークレット、カウンタ値等）を記憶することができる媒体の例である。
【００３４】
ボタン１０６は、ボタンが押下されたときに、さもなければユーザによってアクティブ化されたときに信号を送信することができる何らかのデバイスであってもよい。ボタンの例は、メンブレンスイッチ、圧力センサ、バイオメトリックリーダ、圧力スイッチ、これに類似したものを含む。
【００３５】
クロック１０５は、時間の経過を示すように適合されている任意のデバイスであってもよい。クロックの例には、水晶が含まれ、これは、一貫した方法で経時的に変数の値を変えるベースとして使用できる、よく知られている周波数を発する。本発明のいくつかの実施形態では、トークン１０１はクロック１０５を含まず、むしろ、トークン１０１の外部にあるソースからのタイミング信号を受け取る。
【００３６】
ディスプレイ１０４は、英数字の情報のような情報をユーザに表示できる任意のデバイスであってもよい。ディスプレイ１０４の例は、液晶ディスプレイ、ＴＦＴディスプレイ、プラズマディスプレイ等を含む。ディスプレイ１０４は、ＯＴＰをユーザに表示することができる。
【００３７】
本発明の実施形態にしたがった方法を図２に示している。ステップ２０１において、値Ｃが初期値に割り当てられ、時間Ｔが０に設定される。ステップ２０２において、イベントＥが生じることが決定された場合、ステップ２０３において、Ｃが量Ｂだけ増分され、ステップ２０４において、ＯＴＰが計算される。生じるイベントＥがないことが決定された場合、ステップ２０５において、時間Ｔの量が経過したかどうか決定される。時間Ｔが経過した場合、ステップ２０６において、Ｃが量Ｂだけ増分され、ステップ２０７において、Ｔがゼロにリセットされる。
【００３８】
前述の説明は、例示を意味しており、本発明の範囲を限定することを意味していない。前述の例以上の多くのバリエーションが特許請求の範囲によって含まれることを、当業者は正しく認識するであろう。
【図面の簡単な説明】
【００３９】
【図１】図１は、本発明の実施形態にしたがった装置を示している。
【図２】図２は、本発明の実施形態にしたがった方法を示している。
【図１】
2009534742.tif 000008
【図２】
2009534742.tif 000009
【国際調査報告】
2009534742.tif 000010