トークンとベリファイアとの間の認証のためのネットワーク・ヘルパー
トークン及びベリファイアが、トークンとベリファイアとの間の認証のためのセキュアな対称鍵に関して同意できるようにするパズルベースのプロトコルを提供する。トークンは、秘密鍵と、1つまたは複数のパズル生成アルゴリズムとを記憶する。ベリファイアは、トークンに関連する複数のパズルを独立して取得し、パズルのうちの少なくとも1つを擬似ランダムに選択し、解いて、パズル秘密及びパズル識別子を取得する。ベリファイアはパズル秘密に基づいて検証鍵を生成する。ベリファイアは、パズル識別子と検証鍵の符号化バージョンとをトークンに送信する。トークンは、そのパズル生成アルゴリズム及びパズル識別子を使用してパズル秘密を再生する。トークンは、トークンが検証鍵を知っていることを示す符号化応答をベリファイアに送信する。トークン及びベリファイアは、事後認証のための対称鍵として検証鍵を使用することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアな認証に関し、より詳細には、限られたリソースのデバイスの認証に関する。
【背景技術】
【0002】
電子認証は、一般に、それぞれ公開鍵(非対称鍵)暗号方法または対称鍵暗号方法に基づく何らかの形式のデジタル署名またはメッセージ認証コードを必要とする。公開鍵方法と対称鍵方法は異なる特徴を有するので、異なる状況において適用可能である。概して、公開鍵システムは、鍵の管理及び配信に関して大きい利点を有するが、計算量的に困難であり、生成されるデジタル署名が大きくなる傾向がある。対称鍵方法は、極めて効率的であり、小出力を生成するが、同時に複数の検証パーティとともにセキュアに使用できないという欠点を有する。
【0003】
たいていの小型の認証トークンは、限られた計算リソースと小出力の必要性の両方により、対称鍵暗号法を使用せざるを得なかった。これは、トークンが、ただ1つの検証パーティとの認証にしか使用できないことを意味する。たとえば、2つの異なるエンティティが異なる対称鍵を用いて互換性のあるトークンを発行することはできるが、それらを1つのトークンに結合することは、対称鍵を共有することを必要とし、パーティ同士が互いに信用できないので、不可能である。米国の銀行が2ファクタ認証方法を実装するという最近の発表に伴って、ユーザは、どこへ行く場合にも複数の認証トークンを持ち歩かなければならない。
【0004】
公開鍵システムに基づく認証方法が提案されているが、1つの欠点は、多くのトークンで利用可能な計算リソースよりも大きい計算リソースが要求されることである。即ち、トークンは、廉価になり、及び/または限られた処理リソースを有する傾向がある。そのようなトークンにより強力なプロセッサを追加すれば、コストが増大するだけでなく、バッテリ寿命がより短くなる。公開鍵システムを使用することの別の欠点は、デジタル署名のサイズが長くなると、数字の短配列のタイピングまたは読出しと比較して、実装が煩雑になることである。
【0005】
別のタイプの認証システムは、認証を仲介するための信頼できるサード・パーティを使用する。そのようなシステムの一例はMITのケルベロス(Kerberos)である。しかしながら、信頼できるサード・パーティへの依存は、セキュリティが損なわれ得る別のポイントを追加するので、銀行などの多くの機関にとってディール・ブレイカーとなる。
【0006】
したがって、単一のトークンが複数のベリファイアに対して使用できるように、公開鍵システムの利点と対称鍵システムの利点を組み合わせて、小型で効率的なデジタル署名を提供する方法が必要である。
【発明の概要】
【0007】
トークンを認証するためのベリファイア上で動作可能な方法を提供する。トークンから認証要求及びトークン識別子を受信する。トークンに関連するヘルパーのヘルパー・アドレスを取得する。ネットワーク化されたヘルパーからトークンに対応する複数のパズルを取得する。パズルは、パズル識別子とパズル秘密とを含む符号化メッセージとすることができる。パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解く。たとえば、選択されたパズルは、パズルを復号するための鍵を発見するために、ブルート・フォース・アタック(brute force attack)を実行することによって解くことができる。パズル秘密に基づいて検証鍵を生成する。次いで、検証鍵に基づいて質問メッセージを生成する。パズル識別子及び質問メッセージをトークンに送信する。トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信し、トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアがトークンを認証する。検証鍵を記憶し、トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付ける。
【0008】
一例では、受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するためにその受信したパズルのうちのサブセット複数を解く。検証鍵はパズル秘密の順序セットにも基づく。パズル秘密の順序セットに対応するパズル識別子の順序セットを質問メッセージとともにトークンに送信する。
【0009】
別の特徴によれば、ベリファイアは、擬似ランダム・ナンス(pseudorandom nonce)を生成し、トークンに対応するより多数のパズルの中から複数のパズルを取得する際に使用すべきヘルパーにその擬似ランダム・ナンスを送信する。
【0010】
一実装形態では、トークンとベリファイアとの間の認証が実行されるたびにトラッキングするためにトークンによって維持されるカウンタにローカル・カウンタを同期させ、事後認証質問メッセージは現在のカウンタ値にも基づく。したがって、トークンが検証鍵と現在のカウンタ値とを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のカウンタ値を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0011】
別の実装形態では、タイムスタンプを生成するタイマを維持し、事後認証質問メッセージは現在のタイムスタンプにも基づく。トークンが検証鍵と現在のタイムスタンプとを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のタイムスタンプを知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0012】
トークンを認証するための検証デバイスは、処理回路に結合された第1の通信インターフェースと第2の通信インターフェースとを備える。第1の通信インターフェースは、ネットワークに対する高帯域幅を有する。第2の通信インターフェースは、トークンと通信するための低帯域幅を有する。処理回路は、(a)第2の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信すること、(b)トークンに関連するヘルパーのヘルパー・アドレスを取得すること、(c)第1の通信インターフェースを介してヘルパーからトークンに対応する複数のパズルを取得すること、(d)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くこと、(e)パズル秘密に基づいて検証鍵を生成すること、(f)検証鍵に基づいて質問メッセージを生成すること、(g)第2の通信インターフェースを介してパズル識別子及び質問メッセージをトークンに送信すること、及び/または(h)トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信することを行うように構成される。トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、検証デバイスはトークンを認証する。
【0013】
検証デバイスはまた、処理回路に結合された、検証鍵を記憶するための記憶デバイスを含むことができる。処理回路は、さらに、トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けるように構成できる。
【0014】
いくつかの実装形態では、処理回路は、さらに、(a)受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するためにその受信したパズルのうちのサブセット複数を解くことと(検証鍵はパズル秘密の順序セットにも基づく)、(b)パズル秘密の順序セットに対応するパズル識別子の順序セットを質問メッセージとともにトークンに送信することとを行うように構成できる。
【0015】
一実装形態では、トークンとベリファイアとの間の認証が実行されるたびにトラッキングするためにトークンによって維持されるカウンタにローカル・カウンタを同期させる。事後認証質問メッセージは現在のカウンタ値にも基づく。したがって、トークンが検証鍵と現在のカウンタ値とを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のカウンタ値を独立して知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0016】
別の実装形態では、タイムスタンプを生成するタイマを維持し/事後認証質問メッセージは現在のタイムスタンプにも基づく。したがって、トークンが検証鍵と現在のタイムスタンプとを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のタイムスタンプを独立して知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0017】
したがって、トークンを認証するための検証デバイスであって、(a)トークンから認証要求及びトークン識別子を受信するための手段、(b)トークンに関連するヘルパーのヘルパー・アドレスを取得するための手段、(c)ネットワーク化されたヘルパーからトークンに対応する複数のパズルを取得するための手段、(d)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くための手段、(e)パズル秘密に基づいて検証鍵を生成するための手段、(f)検証鍵に基づいて質問メッセージを生成するための手段、(g)パズル識別子及び質問メッセージをトークンに送信するための手段、及び/または(h)トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信するための手段であって、トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアがトークンを認証する、受信するための手段を備える、検証デバイスを提供する。さらに、検証デバイスは、(i)検証鍵を記憶するための手段、(j)トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けるための手段、(k)受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するためにその受信したパズルのうちのサブセット複数を解くための手段(検証鍵はパズル秘密の順序セットにも基づく)、及び/または(l)パズル秘密の順序セットに対応するパズル識別子の順序セットを質問メッセージとともにトークンに送信するための手段をも含むことができる。
【0018】
また、(a)第1の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信すること、(b)第2の通信インターフェースを介してヘルパーからトークンに対応する複数のパズルを取得すること、(c)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くこと、(d)パズル秘密に基づいて検証鍵を生成すること、(e)検証鍵に基づいて質問メッセージを生成すること、(f)第1の通信インターフェースを介してパズル識別子及び質問メッセージをトークンに送信すること、及び/または(g)トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けることを行うように構成された処理回路を備える処理デバイスを提供する。
【0019】
また、ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、プロセッサに、(a)ネットワーク化されたヘルパーからトークンに対応する複数のパズルを取得すること、(b)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くこと、(c)パズル秘密に基づいて検証鍵を生成すること、(d)検証鍵に基づいて質問メッセージを生成すること、(e)パズル識別子及び質問メッセージをトークンに送信すること、(f)トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信すること(トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する)、及び/または(g)トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けることを行わせる1つまたは複数の命令を有する機械可読媒体を提供する。
【0020】
また、ベリファイアに対してトークンを認証するためのトークン上で動作可能な方法を提供する。秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングする。トークン識別子をベリファイアに供給することによってトークンの認証を開始する。第1の検証鍵に基づく1つまたは複数のパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信する。第1の検証鍵は、1つまたは複数のパズル識別子によって識別される1つまたは複数のパズルに関連する1つまたは複数のパズル秘密の関数とすることができる。トークンは、1つまたは複数のパズル生成アルゴリズム、受信した1つまたは複数のパズル識別子、及び秘密鍵に基づいて1つまたは複数のパズル秘密を独立して取得する。1つまたは複数のパズル秘密に基づいて第2の検証鍵をトークンによって生成する。トークンは、第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証する。第2の検証鍵を記憶し、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付ける。トークンは、第2の検証鍵に基づいて、トークンが第1の検証鍵を知っていることを示す、ベリファイアへの応答メッセージを生成する。トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスをトークンがベリファイアに供給する。トークンは、ベリファイアから複数の順序付きパズル識別子を受信し、第1の検証鍵は、複数の順序付きパズル識別子に関連する対応する複数の順序付きパズル秘密の関数である。1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて複数の順序付きパズル秘密を取得する。第1の検証鍵及び第2の検証鍵は複数の順序付きパズル秘密にも基づく。このようにして、異なるベリファイアを用いて複数のセキュアな検証鍵を確立することができる。トークンと異なるベリファイアとの間の対称鍵認証として使用するために検証鍵の各々を対応するベリファイアに関連付ける。
【0021】
一実装形態では、トークンとベリファイアとの間の認証が実行されるたびにトラッキングするためにベリファイアによって維持されるカウンタにローカル・カウンタを同期させる。後続の受信したメッセージ認証コードは現在のカウンタ値にも基づく。トークンが検証鍵と現在のカウンタ値とを知っていることを証明する応答メッセージをベリファイアに送信する。
【0022】
別の実装形態では、タイムスタンプを生成するためのタイマを維持する。したがって、後続の受信したメッセージ認証コードは現在のタイムスタンプにも基づく。トークンが検証鍵と現在のタイムスタンプとを知っていることを証明する応答メッセージをベリファイアに送信する。
【0023】
第1の通信インターフェースと処理回路とを備えるトークンを提供する。第1の通信インターフェースは、ベリファイアと通信するための低帯域幅を有する。処理回路は、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信すること、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始すること、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信すること(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得すること、(e)パズル秘密に基づいて第2の検証鍵を生成すること、及び/または(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証することを行うように構成される。処理回路は、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付ける。第2の検証鍵に基づいて、トークンが第1の検証鍵を知っていることを示す、ベリファイアへの応答メッセージを生成する。
【0024】
したがって、ベリファイアで認証するためのトークンであって、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングするための手段、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始するための手段、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信するための手段(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得するための手段、(e)パズル秘密に基づいて第2の検証鍵を生成するための手段、(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証するための手段、(g)第2の検証鍵を記憶し、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付けるための手段、及び/または(h)トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスをトークンからベリファイアに供給するための手段を備えるトークンを提供する。
【0025】
また、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信すること、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始すること、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信すること(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得すること、(e)パズル秘密に基づいて第2の検証鍵を生成すること、(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証すること、及び/または(g)第2の検証鍵に基づいて、トークンが第1の検証鍵を知っていることを示す、ベリファイアへの応答メッセージを生成することを行うように構成された処理回路を備える処理デバイスを提供する。
【0026】
ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、プロセッサに、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングすること、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始すること、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信すること(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得すること、(e)パズル秘密に基づいて第2の検証鍵を生成すること、(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証すること、及び/または(g)第2の検証鍵を記憶し、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付けることを行わせる1つまたは複数の命令を有する機械可読媒体を提供する。
【図面の簡単な説明】
【0027】
【図1】一例における、どのようにトークンに秘密鍵をプロビジョニングし、どのようにそのトークンに関連するパズルを生成するかを示すブロック図。
【図2】一例による、秘密鍵を生成し、トークンに配信し、その秘密鍵に関連する複数のパズルを生成するようにプロビジョニング・デバイス上で動作可能な方法を示す図。
【図3】トークン、検証デバイス、及びヘルパー・デバイスがトークンの初期認証中にどのように動作するかを示す図。
【図4】ヘルパーの支援を受けたトークンとベリファイアとの間の初期認証のための方法を示す図。
【図5】トークンとベリファイアとの間の事後認証を実行するための方法を示す図。
【図6】カウンタを使用したトークンとベリファイアとの間の認証を実行するための方法を示す図。
【図7】タイマを使用したトークンとベリファイアとの間の認証を実行するための方法を示す図。
【図8】複数の異なるベリファイアで認証するためにトークンが複数の検証鍵をどのように記憶するかを示すブロック図。
【図9】複数の異なるベリファイアで対称鍵を使用してセキュアな認証を実行するようにトークン上で動作可能な方法を示す図。
【図10】トークンを認証するためにヘルパーの支援を受けて対称鍵を確立するように構成されたベリファイアを示すブロック図。
【図11】ヘルパーの支援を受けてトークンのセキュアな認証を実行するベリファイア上で動作可能な方法を示す図。
【図12】トークンを認証するための対称鍵を確立する際にベリファイアを支援するように構成されたヘルパーを示すブロック図。
【図13】トークンを認証する際にベリファイアを支援するようにヘルパー上で動作可能な方法を示す図。
【発明を実施するための形態】
【0028】
以下の説明では、実施形態の十分な理解が得られるように具体的な詳細を与える。ただし、これらの実施形態は、これらの具体的な詳細なしに実施できることを、当業者なら理解されよう。たとえば、これらの実施形態を不必要な詳細において不明瞭にしないために、回路をブロック図で示すか、またはまったく示さないことがある。他の場合では、これらの実施形態を不明瞭にしないために、よく知られている回路、構造、及び技法を詳細に図示しないことがある。
【0029】
また、実施形態を、フローチャート、流れ図、構造図、またはブロック図として示されるプロセスとして説明することがあることに留意されたい。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並行してまたは同時に実行できる。さらに、動作の順序を並び替えることができる。プロセスは、その動作が完了すると終了する。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応する場合、その終了は呼出し側関数またはメイン関数への関数の復帰に対応する。
【0030】
さらに、記憶媒体は、読取り専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュ・メモリデバイス、及び/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表すことができる。「機械可読媒体」という用語は、携帯または固定記憶デバイス、光記憶デバイス、ワイヤレス・チャネル、ならびに(1つまたは複数の)命令及び/またはデータを記憶、含有、または搬送することが可能な様々な他の媒体を含むが、これらに限定されない。
【0031】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはその組合せによって実装できる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントを記憶媒体あるいは他の記憶手段などの機械可読媒体に記憶することができる。プロセッサは必要なタスクを実行することができる。コード・セグメントは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容をパス及び/または受信することによって、別のコードセグメントまたはハードウェア回路に結合できる。情報、引数、パラメータ、データなどは、特にメモリ共有、メッセージパッシング、トークンパッシング、及びネットワーク送信などを含む適切な手段を介してパス、転送、または送信できる。
【0032】
「トークン(token)」という用語は、認証を助けるために許可されたユーザに関連付けられた、限定された処理リソース及び/または通信リソースをもつ物理デバイスを指す。「ベリファイア(verifier)」という用語は、トークンの認証を実行するデバイス、エンティティ、及び/または仮想オブジェクト(たとえば、ソフトウェア・アプリケーションなど)を指す。「ヘルパー(helper)」という用語は、トークンを認証する際にベリファイアを支援するデバイス、エンティティ、及び/または仮想オブジェクト(たとえば、ソフトウェア・アプリケーションなど)を指す。
【0033】
一態様は、トークンとベリファイアとの間の認証のための対称鍵をセットアップすることを可能にするネットワーク化されたヘルパーを提供する。ベリファイアは、対称鍵を取得する際にベリファイアを支援するためにヘルパーを利用するが、ヘルパーはそれ自体で対称鍵を取得することができない。本方法は、プロビジョニング、初期認証、及び事後認証の3つの段階を含むことができる。
【0034】
別の態様は、トークン及びベリファイアが、トークンとベリファイアとの間の認証のためのセキュアな対称鍵に関して同意できるようにするパズルベースのプロトコルを提供する。
【0035】
プロビジョニング段階(provisioning stage)では、低帯域幅インターフェースを有する小型、低出力、及びポータブルなトークンに、複数の異なるベリファイアとともに関連するユーザを認証するために使用できる秘密鍵が与えられる。プロビジョニング段階は、トークンに割り当てられた秘密鍵に関連する複数のパズルを生成することと、それらのパズルをサード・パーティ・ヘルパーに配信することとを含むこともできる。
【0036】
初期認証段階では、トークンとベリファイアが共有された対称鍵をネゴシエートできるようにすることによって、トークンがベリファイアに紹介される。ベリファイアは、そのトークンに関連するランダムな複数のパズルをヘルパーから取得するために使用できるトークン識別子を受信する。次いでベリファイアは、ブルート・フォース(brute force)によってパズルの少なくとも1つを解くかまたは解読して、関連するパズル秘密及びパズル識別子を取得する。ベリファイアは、解かれたパズルから取得されたパズル秘密及び他の情報に少なくとも部分的に基づいて、検証鍵を生成する。ベリファイアはパズル識別子と検証鍵のメッセージ認証コードとをトークンに供給する。トークンは、受信したパズル識別子を使用して、関連するパズル秘密を取り出し、検証鍵のローカルバージョンを生成する。次いでトークンは、(パズル識別子及びローカル検証鍵に少なくとも部分的に基づいて)メッセージ認証コードのローカルバージョンを生成し、そのローカルバージョンが受信したメッセージ認証コードに一致するかどうかを判断することができる。ローカルコードと受信したメッセージ認証コードとが一致する場合、その検証鍵をトークンとベリファイアとの間の対称鍵として使用することができる。
【0037】
その後、事後認証段階において、再認証するために、より短い完全対称鍵ベースのプロセスを使用することができる。たとえば、(初期認証段階中に取得された)以前に生成された検証鍵は、認証のためにトークン及びベリファイアによって使用できる。このようにして、トークン、ベリファイア、及びヘルパーは、対称鍵方法と公開鍵方法とを組み合わせ、ベリファイアとヘルパーとの間で公開鍵デジタル署名の実装を分割する。ヘルパーは、信頼できるサード・パーティの機能の一部を実行するが、秘密対称鍵を知らず、ヘルパーが脅かされても、認証のスプーフィングは不可能である。この認証システムは完全公開鍵ベースのシステムの機能の大部分を提供するが、実際のトークンはプロビジョニング後に少量の処理リソース及び帯域幅のみを使用する。
【0038】
鍵のプロビジョニング及びパズル・データベースの生成
図1は、一例における、どのようにトークンに秘密鍵をプロビジョニングし、どのようにそのトークンに関連するパズルを生成するかを示すブロック図である。プロビジョニング・デバイス102は、トークンを構成するように製造業者または配信者によって動作させることができる。プロビジョニング・デバイス102は、秘密鍵を生成する擬似ランダム鍵生成器106を含む。トークン110の製造、セットアップ、または初期化中に、プロビジョニング・デバイス102は秘密鍵108を生成し、トークン110に配信することができ、トークン110において、秘密鍵108は鍵記憶デバイス112(たとえば、メモリ)に記憶される。トークン110はまた、その秘密鍵を使用してパズルを再生するために使用できる1つまたは複数のパズル生成アルゴリズムを記憶することができる。さらに、秘密鍵108は、パズル生成器114をシードするために使用される。パズル生成器114は、秘密鍵108を使用して、複数のパズル(たとえば、メッセージ)を生成し、そのようなパズルを(サード・パーティ・ヘルパーなどの)パズル・データベース116に供給するように構成される。一例では、各パズルはパズル秘密及び一意のパズル識別子を含むことができる。パズルは、パズル・データベース116に記憶する前に暗号化できる。秘密鍵108は、トークン110を脅かすために使用できないように、プロビジョニング・デバイス102によって破壊できる。
【0039】
代替実装形態では、プロビジョニング・デバイス102は秘密鍵を生成することができない。代わりに、トークン110には他の手段によってあらかじめ秘密鍵がプロビジョニングされ、トークン110は、そのトークンに関連する複数のパズルを生成すべき秘密鍵を一時的に供給するのに十分長い間、プロビジョニング・デバイスに結合される。
【0040】
図2に、一例による、秘密鍵を生成し、トークンに配信し、その秘密鍵に関連する複数のパズルを生成するようにプロビジョニング・デバイス上で動作可能な方法を示す。202において、擬似ランダム秘密鍵を取得する。この秘密鍵は、トークンによって供給されるか、またはプロビジョニング・デバイスによって生成されるかのいずれかが可能である。たとえば、秘密鍵とナンスとを入力として受け取る擬似乱数生成器(PRG)を使用して、ランダムに見えるビットの任意に長い文字列として擬似ランダム秘密鍵を生成することができる。多くの代替策があるが、非線形SOBER(NLS)などのセキュアなストリーム暗号を使用してPRGをインスタンス化することができる。
【0041】
204において、秘密鍵に関連する複数のパズル(たとえば、暗号化メッセージ)を生成する。206において、秘密鍵を外部トークン・デバイスに供給する。また、208において、複数のパズルを外部ヘルパー・デバイスに送信し、その外部ヘルパー・デバイスに記憶する。次いで210において、プロビジョニング・デバイスは秘密鍵を廃棄する。
【0042】
生成され、ヘルパーに供給されるパズルの数は極めて大きく(たとえば、数千、数百万などに)なることがある。プロビジョニング・デバイス102は、トークン110に供給される秘密鍵に基づいてアルゴリズム的にこれらのパズルを生成することができる。したがって、トークンは要求に応じて特定のパズルを再生することができるので、トークン自体がすべてのパズルを記憶する必要はない。しかしながら、ヘルパーには秘密鍵が与えられず、したがって、ヘルパーは、トークンに関連するパズルのすべてを記憶する必要がある。これが実現される少なくとも2つの異なる方法が存在する。
【0043】
パズル・データベース116は、作成された後にヘルパーに通信される。いくつかの実装形態では、プロビジョナとヘルパーは同じデバイスとすることができる。代替実装形態では、関連するトークンを用いて、パズル・データベースを含む記憶媒体(たとえば、ディスク)を分散することができる。次いで、エンドユーザは、適切なヘルパーを選択し、パズル・データベースを(記憶媒体から)そのヘルパーに配信する。ベリファイアからパズルの要求が受信されたときどのパズルを送信すべきかを識別できるように、ヘルパーには(受信したパズル・データベースに対応する)ユーザの識別情報及び/またはトークン識別子を教えることができる。
【0044】
様々な適用例では、複数のヘルパーがトークンのパズル・データベースを受信し、それによって冗長性及びスケーリングを与えることができる。ヘルパーは、複数の異なるトークンのパズル・データベースを記憶することができる。
【0045】
パズル生成
各々が中程度の困難さ量の多数のパズルを作成することによって、ベリファイアは、中程度の計算労力量でパズルを解くことができるようになる。パズルは、ベリファイアによってブルート・フォース・アタックができるようにするのに十分短い未知のパズル鍵(PK)を用いて符号化されたメッセージの形態とすることができる。
【0046】
パズルはランダムな順序で生成できる。各パズルは、パズル識別子フィールド(PID)、パズル秘密鍵(PS)、及びパズル・メッセージ認証コード(PM)フィールドを含むことができる。パズル識別子(PID)は、可能な数のパズルの範囲内でランダムに生成できる。一例では、PIDは32ビットとすることができる。パズル秘密(PS)は完全強度暗号鍵(たとえば、128ビット)とすることができる。一例では、PSは、(トークン302またはプロビジョニング・デバイス102において、)パズル生成機能またはアルゴリズム(PGF)によってトークン秘密鍵(SK)及び/またはパズル識別子(PID)に基づいて計算できる(すなわち、PGF(SK,PID))。パズル・メッセージ認証コード(PM)はPS及びPIDのメッセージ認証コード(すなわち、PM(PS,PID))として定義でき、それによりベリファイアはいつパズルを首尾よく「クラック」または解読したかを知ることができる。すなわち、ベリファイアは、パズルが首尾よく解かれたことを示すPID、または何らかの他のフラグ、マーカー、もしくはビット・シーケンスを識別することによって、パズルが首尾よく解読できたかどうかを知ることができる。
【0047】
ヘルパーに配信する前に、トークンまたはプロビジョニング・デバイスのいずれかによってランダムに生成された、一意の限られた強度のパズル鍵(PK)を使用してパズルを暗号化することができる。この暗号化の強度、及び生成すべきパズルの個数については、ヘルパー・パズル・データベースが脅かされる可能性がどの程度あるかのみに依存する。ハッキングまたは不正アクセスの可能性がないとみなされる場合、パズル暗号化をまったくなしとし、潜在的なベリファイアごとにより少ないパズルを使用することができる。
【0048】
パズルシステムを使用すると、ヘルパーが脅かされた場合に多少追加のセキュリティが与えられる。そのようなセキュリティは、特定のトークンに使用されるパズルの複雑さ及び数に基づくことができる。たとえば、特定のトークンに対して多数の容易に解読可能なパズルを使用することができ、その場合、セキュリティは、ベリファイアによって選択された1つのパズル、またはパズルの組合せによって与えられる。ベリファイアは、(ヘルパーから受信された多数のパズルから)1つまたは複数の擬似ランダムに選択されたパズルを解読するかまたは解くと、選択されたパズルごとにPID及びPSを取得することができる。ベリファイアは、トークンに送信される(1つまたは複数の)PIDに対応するパズル秘密(PS)に基づいてセッション鍵または検証鍵を(VK)生成することができる。ベリファイアからPIDを受信すると、トークンもセッション鍵または検証鍵(VK)を生成することができる。したがって、ベリファイア及びトークンの両方が共通の対称鍵に関してセキュアに同意することができる。盗聴者または脅かされたヘルパーは、ベリファイアによってどの(1つまたは複数の)パズルが解かれたかを知らないので、セッション鍵または検証鍵(VK)を判定することはより難しいタスクになる。せいぜい盗聴者またはヘルパーは、特定のトークンに関連するすべてのパズルを解こうと試みることができるが、極めて多数(たとえば、数百万)存在するので、これは大いにより計算量的に高コストになる。
【0049】
初期認証段階
トークンに秘密鍵がプロビジョニングされ、ヘルパー・デバイスが関連するパズルを取得すると、ヘルパー・デバイスの支援を受けてトークンと検証デバイスとの間で認証を実行することができる。トークンと特定のベリファイアとの間で初期認証するためのプロセスは、ベリファイアに対して計算集約的であり、おそらくは従来の公開鍵システムよりも計算集約的である。したがって、一実装形態では、初期認証段階は、トークンをベリファイアに「紹介」して、トークンとベリファイアが共有された対称鍵をネゴシエートできるようにするために使用できる。その後、より短い完全対称鍵ベースのプロセスを事後認証(再認証)に使用することができる。
【0050】
図3に、トークン302、検証デバイス304、及びヘルパー・デバイス306がトークン302の初期認証中にどのように動作するかを示す。トークン302は、限定を与えられた処理回路308と、秘密鍵(SK)、トークンID、検証鍵VK、及びパズル生成アルゴリズムもしくは機能を記憶するための記憶デバイス310と、低帯域幅で非セキュアな通信インターフェース312とを含むデバイスとすることができる。低帯域幅インターフェースは、USB、Bluetooth(登録商標)、Near−Field Communication、及びセルラー/LDCなどにわたる範囲にある、数値キーパッド及び8桁ディスプレイほどの単純なものでよい。
【0051】
ベリファイア304は、トークンよりも著しく多くの処理リソースを有する処理回路314と、検証鍵及び関連するトークンIDを記憶するための記憶デバイス315と、高帯域幅でセキュアな通信インターフェース316とを含むデバイス、エンティティ、及び/または仮想オブジェクトとすることができる。ヘルパー306は、処理回路318と、トークン302に関連する複数のパズルを記憶するための記憶デバイス320と、高帯域幅でセキュアな通信インターフェース322とを含むデバイス、エンティティ、及び/または仮想オブジェクトとすることができる。
【0052】
ユーザがトークン302を使用して自分自身をベリファイア304で認証しようと試みると、トークンは認証要求を(トークンIDとともに)ベリファイア304に送信する。ベリファイア304及びヘルパー306は、データを通信及び/または交換することが可能である高帯域幅ネットワーク(たとえば、インターネット、プライベート・ネットワークなど)に結合できる。ベリファイア304は(トークンIDに関連する)複数のパズルをヘルパー306に要求する。ヘルパー306は応答して、(受信したトークンIDに関連する)パズルの擬似ランダムに選択されたセットをベリファイア304に送信する。いくつかの実装形態では、ヘルパー306とベリファイア304は、それらの相互作用をセキュアにするためにトランスポート層セキュリティ(TLS)プロトコルまたはセキュリティ・インターネット・プロトコル(IPsec)などのよく知られているセキュリティ・プロトコルを使用して、オープンなインターネット上で通信することができる。
【0053】
次いでベリファイア304は、受信したパズルのうちの少なくとも1つを選択し、ブルート・フォース・アタックによって解読またはクラックする。パズルを解読またはクラックすると、ベリファイアはパズルからパズル秘密(PS)及びパズルID(PID)を取得する。ベリファイア304により、パズル秘密(PS)に基づいて検証鍵(VKv)が生成される。ベリファイア304は、パズルID(PID)と、検証鍵(VKv)のメッセージ認証コード(MAC)とをトークン302に送信する。トークン302は、受信したPIDと、そのあらかじめ記憶された秘密鍵(SK)及びパズル生成アルゴリズムとを使用して、PIDのパズル秘密を取得する。次いでトークン302は、パズル秘密を使用して、それ自体のローカル検証鍵(VKt)を再生することができる。検証鍵は一致するはずであり(VKt=VKv)、それにより検証鍵VKをトークン302とベリファイア304との間の認証のための対称鍵として使用することが可能になる。トークン302は、ベリファイア304との将来の認証のために検証鍵(VK)を記憶することができる。
【0054】
いくつかの実装形態では、ベリファイア304は、複数のパズル秘密及びパズル識別子を取得するために複数のパズルを破る、クラックする、または解読することができることに留意されたい。複数のパズル秘密に基づいて検証鍵(VKv)が生成でき、それによってさらなる強度が得られる。対応するパズル識別子がトークン302に送信され、次いでトークン302はそれらのパズル識別子を使用してそのローカル検証鍵(VKt)を生成することができる。
【0055】
図4に、ヘルパーの支援を受けたトークンとベリファイアとの間の初期認証のための方法を示す。トークン402に秘密鍵(SK1)をプロビジョニングする。ユーザは、認証を必要とするセキュアなトランザクションを実行したいと望むとき、トークン402を使用して、トークン識別子(トークンID)とともに認証要求412を送信することによってベリファイア404との認証を開始することができる。認証ヘルパー406は、トークン402(またはトークンのユーザ)によって識別されるか、またはデフォルトとして識別できる。たとえば、トークン402またはユーザのいずれかが、トークンのパズルが記憶されているヘルパー406のコンタクト情報をベリファイア404に供給することができる。
【0056】
ベリファイア404は、ヘルパー406とのセキュアな及び/または認証された接続を確立する。ベリファイア404はまた、414において第1のランダム・ナンス(Nonce1)を生成する。次いでトークンID及びNonce1をヘルパー406に送信する。
【0057】
ヘルパー406には、以前にトークン402のパズル・データベース410がプロビジョニングされており、ヘルパー406はトークンIDを使用してパズル・データベース410からパズルを選択する。一実装形態では、ヘルパー406は、418において第1のナンス(Nonce1)を使用して、トークン402に関連するN個のパズルの擬似ランダム選択(セット)を選択し(Nは、2と数百万の間の整数である)、420においてそれらをベリファイアに戻すことができる。Nonce1がベリファイア404によって供給された場合、ヘルパー406は、パズルのセットが、受信したNonce1の影響を受けて選択されたという証明を与えることができる。次いで、ベリファイア404と406との間の接続を閉じるかまたは終了する。
【0058】
422において、ベリファイア404は受信したパズルのうちの1つまたは複数を選択する。いくつかの実装形態では、t個のパズルのランダムなシーケンスを選択し、ただし、t≧1であり、tはすべての受信したパズルのサブセットである。ヘルパー406が脅かされた場合、より多くのパズルを使用するほどより多くのセキュリティが得られる。なぜならば、ヘルパー406及び攻撃者は、検証鍵を生成するためにどのt個のパズルが使用されるのか、またはどんな順序(シーケンス)で結合されるのかを知らないからである。
【0059】
選択されたパズルが暗号化されている場合、424において、ベリファイア404は(たとえば、ブルート・フォース・アタック技法を使用して)その選択されたパズルを解いて(解読またはクラックして)、選択されたパズルの各々のパズル識別子(PID)及びパズル秘密(PS)を取得する。
【0060】
パズル秘密(PS)と、場合によっては第2の擬似ランダム・ナンス(Nonce2)426とに基づいて、428においてベリファイア404は検証鍵(VKver)を計算する。たとえば、ハッシュ関数H(たとえば、セキュアなハッシュアルゴリズムSHA−256など)を使用して検証鍵VKver=H(Nonce2,PS)を生成することができる。いくつかの実装形態では、追加のセキュリティのために、複数のパズルを使用して結果的にパズル秘密PS1、PS2...、PStが検証鍵VKver=H(Nonce2,PS1,...,PSt)に組み合わせられるようにする。430において、ベリファイア406は、第2のナンス(Nonce2)とt個のPIDの順序付きリストとを含むことができるメッセージをトークン402に送信する。430において、ベリファイア404はまた、入力として秘密検証鍵(VKver)及びメッセージを取り、タグMAC(VKver,Nonce2,PID)を出力するメッセージ認証コード(MAC)を送信する。432において、ベリファイア404はまた、事後認証に使用するためにこのユーザに関連するベリファイアVKverを記憶する。
【0061】
ベリファイア404からPID及びMACを受信すると、434においてトークン402は、受信したPIDに基づいて解かれたパズルのパズル秘密PSを再生する。たとえば、トークン402は、その秘密鍵(SK1)及びパズル生成アルゴリズムを使用して、識別されたPIDのパズル秘密PSを取得することができる。次いで436において、トークン402は、パズル秘密PS及び第2のナンス(Nonce2)に基づいてローカル検証鍵VKtokenを生成する。438において、トークン402は、ローカルMAC(VKtoken,Nonce2,PID)に対して受信したメッセージ認証コードMAC(VKver,Nonce2,PID)を検証する。MACが等しくない場合、受信されたMAC(VKver,Nonce2,PID)及び/またはメッセージのコンテンツの改ざん(または偶発的破損)を示すエラーが示される。トークン402はまた、リプレイ・アタックを防ぐために、記憶しているのと同じ検証鍵VKをすでに有してないかを確認する。上首尾であると仮定すると、440において、トークン402はVKを空きスロットに記憶する。すなわち、トークン402は(異なるアプリケーションまたはベリファイアの)検証鍵をスロット中に編成する。ユーザは、後の選択または表示のために、検証鍵VKに関連するスロット番号の記録を取るか、または検証鍵VKに関連するスロットに名前を割り当てることができる。
【0062】
442において、トークン402は、(後述の事後認証段階の場合とほとんど同様に)その認証応答を生成し、ベリファイアに送信する。ベリファイア404は、適正であるはずの応答を受信し、アカウントを使用準備完了にマーキングする。
【0063】
事後認証段階
トークンと特定のベリファイアとの間で検証鍵(VK)がセットアップされると、それらの間の事後認証要求においてその検証鍵(VK)を使用することができる。検証鍵(VK)は、トークンとベリファイアとの間で秘密またはセキュアに保たれる。その検証鍵(VK)は、トークンとベリファイアとの間の質問応答認証プロセスにおける対称鍵として使用できる。いくつかの実装形態では、通信のプライバシーのために検証鍵(VK)を使用して2つのデバイス間のメッセージを暗号化することもできる。
【0064】
図5に、トークンとベリファイアとの間の事後認証を実行するための方法を示す。トークン502とベリファイア504との間で、セキュアな検証鍵VKa506及び508を以前に確立していることができる。この検証鍵VKaは、トークン502とベリファイア504との間の関係に特有なことがあり、他のベリファイアには適用不可能である。510において、トークン502は、そのトークンIDとともに認証要求をベリファイア504に送信する(これは、たとえば、顧客がトランザクションを実行するように銀行出納係に依頼する場合など、間接的なことがある)。ベリファイア504はトークンIDを使用して、トークン502に対して以前に確立された検証鍵VKa508を識別する。512において、ベリファイア504は質問及びMAC(VKa,質問)を生成する。質問は、任意のもしくは擬似ランダムな数、文字列、及び/またはビットもしくはシンボルのシーケンスとすることができる。次いで514において、質問及びMAC(VKa,質問)をトークンに送信する。受信された質問と、その以前に記憶された検証鍵VKa506とを使用して、516においてトークン502はMAC(VKa,質問)を検証する。すなわち、トークン502は、受信したMAC(VKa,質問)が、ローカルに計算されたMAC(VKa,質問)と同じであるかどうかを検証する。
【0065】
一実装形態では、トークン502は、認証要求510の送信先であるベリファイアがどれであるかを知っていることが可能である。たとえば、ユーザは、トークン502によって使用されるべき(特定のベリファイアに関連する)検証鍵VKa506を識別することができる。そのような実装形態では、受信したMAC(VKa,質問)を検証するとき、トークン502は単に、使用するように言われた検証鍵VKa506を使用する。
【0066】
他の実装形態では、トークン502は、どのベリファイアと通信しているのかを知ることができない。そのような場合、トークンは、単に、その記憶されている検証鍵の各々に対して受信したMAC(VKa,質問)を検証しようと試みることができる。記憶されている検証鍵のうちの1つが同じMACを生成する場合、それは適正な検証鍵であると仮定される。
【0067】
検証鍵VKaが認証されると、518においてトークン502は応答及びMAC(VKa,応答)をベリファイア504に送信する。この応答は、任意のもしくは擬似ランダムな数、文字列、及び/またはビットもしくはシンボルのシーケンスとすることができる。トークンとベリファイアとの間のメッセージが同じにならないように質問と応答は互いに異なるように選択される。概して、セキュリティについて、応答は最初に発された質問に関係することができるが、同じでないことがある。たとえば、応答は、受信された質問文字列よりも大きい文字列である文字列のことがある。そのような場合、応答自体を送信する必要がない。520において、ベリファイア504は、その知られている検証鍵VKa508と受信した応答とを使用することによって受信したMAC(VKa,応答)を検証する。受信したMACが、ベリファイア504によって計算されたローカルMACに一致する場合、認証は完了である。次いで522において、トークン502、ベリファイア504のいずれか、または両方によってセッション鍵を確立する。
【0068】
盗聴者が以前に使用されたセッション鍵を再利用しようと試みるリプレイ・アタックを防ぐために、トークンはセキュリティ機構を実装することができる。たとえば、様々なトークンは、認証を証明するためにシーケンス・カウンタまたはタイムスタンプを実装することができる。カウンタまたはタイムスタンプは、検証鍵VKを知っているパーティのみが予測できる形で変わる。したがって、トークンまたはセッション鍵から以前のMAC応答を取得した盗聴者は、それを再利用することが不可能である。
【0069】
シーケンス・カウンタを用いた認証
図6に、カウンタを使用したトークンとベリファイアとの間の認証を実行するための方法を示す。トークン602とベリファイア604の両方の上で、検証鍵VKa606及び608、ならびに関連する順次カウンタcounter_VKa610及び612をプロビジョニングする。検証鍵VKa606及び608、ならびに順次カウンタcounter_VKa610及び612は、以前に構成しているか、及び/またはトークン602とベリファイア604との間で同期していることが可能である。たとえば、検証鍵VKaがトークン602とベリファイア604との間で最初に確立されるとき、トークン602及びベリファイア604はそれらのカウンタ610とカウンタ612を同期させることができる。カウンタ610及び612は、無許可パーティがトークン602及び/またはベリファイア604として見せかけようと試みる場合のセキュリティ対策として使用される。(トークン602における)counter_VKa610、及び(ベリファイア604における)counter_VKa612は、無許可パーティがトークン602及び/またはベリファイア604として見せかけようと試みる場合のセキュリティ対策として使用される。
【0070】
トークンは、そのトークンIDとともに認証要求614を送信することによってトランザクションを開始する。認証要求を受信すると、ベリファイア604は、トークンIDを使用して、トークン602に関連する検証鍵VKa608を識別する。次いでベリファイア604は、検証鍵VKa608に対応するcounter_VKa612を選択する。616において、ベリファイア604においてcounter_VKaを固定の増分だけ増分してcounter_VKa’を取得する。618において、質問と、検証鍵VKa、counter_VKa’、及び質問のメッセージ認証コード(MAC(VKa,counter_VKa’,質問))とを生成する。620において、この質問及びMAC(VKa,counter_VKa’,質問)をベリファイアからトークンに送信する。トークン602によって記憶されている各検証鍵VKnについて、a)622において、関連するcounter_VKnを取り出し(ただし、1≦n≦Nであり、Nは、トークンによって記憶されている検証鍵の総数である)、b)次いで検証鍵VKn及びcounter_VKnごとにMAC(VKn,counter_VKn+i,質問)を計算し(たとえば、1≦i≦5)、c)計算されたMACが受信したMACに合致する場合、選択された検証鍵(すなわち、VKa)は適正であると仮定する。いくつかの実装形態では、応答をより迅速にするために、質問は、各検証鍵VKnのMACをあらかじめ計算し記憶できるような既知の数、文字列、またはビット・シーケンスとすることができる。
【0071】
適正な検証鍵VKaを発見すると、628においてトークン602は、そのcounter_VKa’=counter_VKa+増分と更新する。したがって、トークン602とベリファイア604の両方が、同期されたカウンタを維持している。次いでトークンは、630において応答及びMAC(VKa,counter_VKa’,応答)を計算し、632においてベリファイアに送信する。
【0072】
ベリファイア604は、それ自体のVKa、及びcounter_VKa’、ならびに受信した応答を使用して、受信したMAC(VKa,counter_VKa’,応答)を検証する。受信したMACが首尾よく検証された場合、トークン602は認証されたとみなす。636及び638において、トークン602とベリファイア604の両方はセッション鍵=MAC(VK,counter_VKa’,「K」)を計算し、ただし「K」は、既知であるかまたはトークン602とベリファイア604の両方が判断できる、秘密鍵またはあらかじめ構成された値とすることができる。
【0073】
トークン602が攻撃者からランダムな質問を受信した場合、トークン602は対応する検証鍵VKを発見することができず、それはエラーを示し、認証は失敗することに留意されたい。
【0074】
タイムスタンプを用いた認証
図7に、タイマを使用したトークンとベリファイアとの間の認証を実行するための方法を示す。この方法は、ユーザに、トークンに対してベリファイアを識別させることによって認証プロトコルを単純化し、それによって(ベリファイアを識別するのに用いる)ベリファイア704からの質問の必要を回避する。この機構はまた、認証ステップの数を低減するために(上述のカウンタベースの認証プロトコルなどの)他のプロトコルにおいて実装できる。この方法では、トークン702及びベリファイア704が、同期されたタイマTtoken710及びTver712(たとえば、協定世界時UTC)を妥当な精度で維持することができると仮定する。たとえば、トークン702は、プロビジョニング中に同期または初期化されるタイマTtoken710を有することができる。ベリファイア704は、そのタイマTver712が同期及び/または維持されるネットワーク接続を有することができる。714において、トークン702は、そのトークンを認証しているベリファイア704を識別する指示を(ユーザなどから)受信する。たとえば、ユーザは、以前は特定のベリファイア704に関連付けられていた特定の名前または検証鍵VKa706を選択することができる。このようにして、トークン702は、以前はベリファイア704に関連付けられていた適切な検証鍵VKa706を取得することができる。トークンは、716において応答及びMAC(VKa,タイムスタンプ,応答)を生成し、718においてベリファイアに送信する。応答において使用されるタイムスタンプはタイマTtoken710から取得する。718において、トークンの認証のために応答、MAC(VKa,タイムスタンプ,応答)、及びトークンIDをベリファイアに送信する。
【0075】
720において、ベリファイアは、(トークンIDに対応する)検証鍵VKa708を取り出し708、(タイムスタンプを取得するための)タイマTver712と受信した応答とを使用してMACのローカルバージョンを計算することによって、受信したMAC(VK,タイムスタンプ,応答)を検証する。タイムスタンプの分解能は、タイマTtoken710とタイマTver712との間のわずかな相違、またはトークン702によってMACが生成された時刻と、それがベリファイア702に与えられた時刻との間の遅延に適応するように調整できる。たとえば、タイムスタンプは、+/−30秒または何らかの他のタイムウィンドウの分解能を有することができる。
【0076】
いくつかの実装形態では、722及び724において、トークン702及び/またはベリファイア704は、特定のトランザクション中のセッション鍵として使用するためのMAC(VK,タイムスタンプ,セッション鍵)を計算することができ、ただし、セッション鍵は、既知であるかまたはトークン702とベリファイア704の両方が判断できる、擬似ランダムまたは任意の数、文字列、及び/またはビット・シーケンスである。
【0077】
トークンは、ベリファイア704から質問を受信しないので、ベリファイアが本物であるかどうかを知らないことに留意されたい。したがって、トークンは、信頼できるベリファイアにトークンを提示しているユーザに依拠することができる。追加のセキュリティが所望される場合、このトークン702は、ベリファイアが有効または本物である(たとえば、ベリファイアが検証鍵VKaを知っている)かどうかを確認することができる質問をベリファイア704に要求することができる。
【0078】
使用のシナリオ
単一ファクタ認証システムでは、ユーザは、自分自身をベリファイアで認証するためにトークンを使用することができる。すなわち、適正な検証鍵を有するトークンを占有しているだけで、ユーザを認証するのに十分である。ただし、単一ファクタ認証は、物理トークンへのアクセス権を得た人は誰でも、ベリファイアによって守られているアカウント及び/または情報に不正にアクセスできるという欠点を有する。
【0079】
2ファクタ認証システムでは、より強いセキュリティを達成するために2つのセキュリティ対策を使用する。1つのそのようなファクタは、ユーザが認証の時点で供与する、セキュアなパスワード、鍵、識別子、写真識別、指紋、ボイスサンプルなどとすることができる。第2のファクタは、同じく認証の時点で提示される適正な(1つまたは複数の)検証鍵を記憶しているトークンとすることができる。
【0080】
本明細書で説明するトークンとベリファイアとの間の認証プロトコルは、手動で、自動で、またはそれらの組合せのいずれかで実行できる。いくつかの例では、ユーザは、トークンとベリファイアの仲介者として働きをすることができる。たとえば、質問及び応答(たとえば、MAC)は、ユーザがトークン及び/またはベリファイアに手動で入力することが可能な比較的短い数字、文字及び/または記号の列とすることができる。他の例では、トークンを(たとえば、ワイヤレス、ユニバーサル・シリアルバス、音声などの)インターフェースによってベリファイアに直結し、それによってそのインターフェースなどを介して認証メッセージを交換することができる。トークンとベリファイアが直接互いに通信する実装形態では、認証プロトコルは、追加のセキュリティのためにより長い質問及び応答、より多くのパズルなどを使用することができる。
【0081】
トークンの例
図8は、複数の異なるベリファイア804、806、及び808で認証するためにトークン802が複数の検証鍵をどのように記憶するかを示すブロック図である。トークン802は、限られた処理リソース及び限られた帯域幅通信インターフェースを有し、図1〜図7に示すように動作するように構成できる。いくつかの従来技術のトークンは、異なるベリファイアとの認証のための複数の公開鍵を記憶することができるが、そのような公開鍵認証システムを実装するためにかなりの処理リソース及び通信帯域幅を要求することがある。他のトークンは、セキュリティの考慮事項により、ただ1つのベリファイアで利用できる対称鍵を記憶することができる。そのような従来技術のトークンとは対照的に、このトークン802は、限られた処理リソース及び限られた帯域幅インターフェースを利用しながら複数の対称鍵を取得し、セキュアに記憶するように構成される。すなわち、トークン802は、図1〜図7に示す方法で複数の検証鍵(すなわち、対称鍵)を取得し、それによりトークン802を複数の異なるベリファイアで認証することが可能になる。詳細には、検証鍵は、トークン802、及びベリファイア804、806、808によってセキュアに生成され、トークン802とベリファイア804、806、808との間で送達または送信はされない。セキュアな方法で初期配備した後に追加の検証鍵(すなわち、対称鍵)をトークンに追加することができる。
【0082】
図9に、複数の異なるベリファイアで対称鍵を使用してセキュアな認証を実行するようにトークン上で動作可能な方法を示す。プロビジョニング段階902中に、秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングする。904(初期認証段階)において、トークンは、そのトークン識別子をベリファイアに供給することによってベリファイアとの認証を開始する。ユーザまたはトークンは、トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスをベリファイアに供給することができる。
【0083】
906において、第1の検証鍵に基づく1つまたは複数のパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信し、第1の検証鍵は、1つまたは複数のパズル識別子によって識別される1つまたは複数のパズルに関連する1つまたは複数のパズル秘密の関数である。908において、トークンは、1つまたは複数のパズル生成アルゴリズム、受信した1つまたは複数のパズル識別子、及び秘密鍵に基づいて1つまたは複数のパズル秘密を(独立して)取得する。たとえば、トークンは、パズル生成アルゴリズムへの入力として秘密鍵及び/または1つまたは複数のトークン識別子を使用して、トークン識別子に対応する1つまたは複数のパズル及び/または1つまたは複数のパズル秘密を生成することができる。910において、1つまたは複数のパズル秘密に基づいて第2の検証鍵をトークンによって生成する。912において、トークンは、第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証する。914において、トークンは第2の検証鍵に基づいてベリファイアへの応答を生成する。メッセージ認証コードが首尾よく検証された場合、916において、トークンは第2の検証鍵を記憶し、その第2の検証鍵をベリファイアに関連付ける。第1の検証鍵及び第2の検証鍵は、トークンとベリファイアとの間の事後認証のための対称鍵として使用される。同様の方法で、トークンは、他のベリファイアを用いて異なる対称鍵をセットアップすることができる。このようにして、単一のトークンを使用して、異なるベリファイアで使用される複数の検証鍵(すなわち、対称鍵)を記憶することができる。トークンは、他の検証鍵のセキュリティを脅かすことなしに必要に応じて異なるベリファイアの追加の検証鍵を確立することができる。
【0084】
ベリファイアの例
図10は、トークンを認証するためにヘルパーの支援を受けて対称鍵を確立するように構成されたベリファイア1002を示すブロック図である。ベリファイア1002は、かなりの処理能力をもつ処理回路1004と、トークンと通信するための低帯域幅通信インターフェース1006(たとえば、キーパッド、ワイヤレス・トランスポンダなど)と、ヘルパーと通信するための高帯域幅通信インターフェース1008と、ヘルパーから受信したパズルとトークンに関連する検証鍵とを記憶するための記憶デバイス1010とを含むことができる。ベリファイア1002は、図1〜図7に示すように動作するように構成できる。処理回路1004は、低帯域幅通信インターフェース1006を介してトークンからトークン識別子を受信し、高帯域幅通信インターフェース1008を介してヘルパーに複数のパズルを要求するように構成される。ヘルパーのコンタクト情報は、トークン、トークンのユーザ、またはデフォルトのロケーション(たとえば、インターネットアドレス、Uniform Resource Locator(URL)など)によって与えることができる。次いで、処理回路1004は、受信したパズルのうちの1つをランダムに選択し、その選択したパズルをブルート・フォース・アタックによって解読または復号する。そのようなブルート・フォース・アタックでは、処理回路1004は、パズルを首尾よく解読または復号する鍵が発見されるまで様々な可能な鍵を試みることができる。パズルを暗号化する鍵の長さ(たとえば、32ビット、64ビット、128ビットなど)はベリファイア1002に知られていてよく、それによって鍵の探索を制限することができる。
【0085】
図11に、ヘルパーの支援を受けてトークンのセキュアな認証を実行するベリファイア上で動作可能な方法を示す。1102において、(低帯域幅インターフェースを介して)トークンから認証要求をトークン識別子とともに受信する。1004において、ベリファイアは、トークンに関連するヘルパーのヘルパー・アドレスを取得する。次いで1106において、ベリファイアは、トークンに対応する複数(たとえば、数千、数十万、または数百万)のパズルをヘルパーに要求する。いくつかの実装形態では、ヘルパーによるバイアスなしに擬似ランダムに複数のパズルが選択されるように、ベリファイアは第1の擬似ランダム・ナンスをヘルパーに送信することもできる。次いで1108において、ベリファイアは、受信したパズルのうちの1つを擬似ランダムに選択し、その選択したパズルをブルート・フォース・アタックによって解いて、パズル秘密及び対応するパズル識別子を取得する。たとえば、ベリファイアは、パズルを符号化した鍵の長さを知っている場合、パズルが解かれるまで(たとえば、メッセージが首尾よく復号されるまで)すべての可能な鍵を試みることができる。次いで1110において、ベリファイアはパズル秘密を使用して検証鍵を生成する。1112において、ベリファイアは検証鍵に基づいて質問メッセージ認証コードを生成する。1114において、パズル識別子及び質問メッセージをトークンに送信する。1116において、同じ検証鍵をトークンが知っていることを証明する応答メッセージ認証コードをトークンから受信する。1118において、ベリファイアは将来の認証のために検証鍵を記憶し、その検証鍵をトークンに関連付ける。
【0086】
いくつかの実装形態では、検証鍵を生成するために(ただ1つの代わりに)複数のパズルを使用することによって追加のセキュリティを与えることができる。ベリファイアは、複数のパズルを擬似ランダムに選択して解読し、それによって複数のパズル秘密を取得することができる。次いで、複数のパズル秘密を組み合わせて検証鍵を生成することができる。
【0087】
ヘルパーの例
図12は、トークンを認証するための対称鍵を確立する際にベリファイアを支援するように構成されたヘルパー1202を示すブロック図である。ヘルパー1202は、高帯域幅通信インターフェース1206と記憶デバイス1208とに結合された処理回路1204を含むネットワーク化されたデバイスとすることができる。処理回路1204は、パズルプロビジョナからそのインターフェース1206を介して複数のパズルを受信し、その複数のパズルを記憶デバイス1208に記憶するように構成される。パズルは、パズルプロビジョナによって識別された特定のトークンに関連付けられる。処理回路1204はまた、インターフェース1206を介して1つまたは複数のベリファイアからパズルの要求を受信するように構成される。その要求は、識別されたトークンに関連する複数のパズルを取り出し、送信するために処理回路1204が使用するトークン識別子を含む。ヘルパー1202は、トークンを用いて対称鍵を確立する際にベリファイアを支援することができるが、各トークンを解読するために必要な多数のパズル及び処理リソースにより、ヘルパー1202が対称鍵を決定することは法外に重くなる。
【0088】
図13に、トークンを認証する際にベリファイアを支援するように(ネットワーク)ヘルパー上で動作可能な方法を示す。1302において、ヘルパーは、トークン識別子に関連する複数(たとえば、数千、数十万、及び/または数百万)の(符号化されたまたは符号化されない)パズルをトークン・プロビジョナから受信する。1304において、ヘルパーはそれらの複数のパズルを記憶する。1306において、ヘルパーは、トークン識別子に関連するパズルについての後続の要求をベリファイアから受信する。この要求は、ベリファイアとトークンとの間で対称鍵(すなわち、検証鍵)が確立される、ベリファイアとトークンとの間の初期認証段階中に発生することがある。1308において、ヘルパーは、トークン識別子に関連する記憶された複数のパズルのサブセットを(擬似ランダムに)選択する。次いで1310において、パズルの選択されたサブセットをベリファイアに送信する。いくつかの実装形態では、ヘルパーは、ベリファイアに送信される複数のパズルを擬似ランダムに選択するために使用するナンス(たとえば、文字または数のストリングなど)を要求元ベリファイアから受信することができる。ヘルパーはまた、複数のパズルを選択する際にナンスが利用されたという証明(たとえば、メッセージ認証コードなど)を与えることができる。これにより、ヘルパーがパズルの選択を改ざんすることが防止される。
【0089】
ヘルパーは、トークンの認証を実行する際にベリファイアを支援することはできるが、ベリファイアになりすますことが可能であってはならない。ヘルパーがそれ自体で悪意のある場合、パズルの一部を解読することに時間を費やし、それらをベリファイアに配信することのみを保証することが可能である。しかしながら、ベリファイアに、ベリファイアに送信するパズルを選択するために使用されたことをヘルパーが証明する擬似ランダム・ナンスを送信させることによって、ヘルパーによるそのような操作を防止することができる。また、トークンとベリファイアとの間の鍵確立段階でヘルパーが盗聴することができる場合、ヘルパーはそれらの間で対称鍵が確立されたことを確認することも可能である。ただし、鍵確立段階中に首尾よく通信を傍受することは起こりそうにない。
【0090】
ヘルパーが初期鍵確立を妨害しないで、代わりにいくつかの事後認証を傍受する場合、ヘルパーは、トークンとベリファイアとの間で確立された検証鍵(対称鍵)を最終的に発見するために十分な情報を取得することができる。しかしながら、これは、ヘルパーが、トークンに関連するすべてのパズルを解くことと、(検証鍵が順序付きパズル秘密のサブセットに基づく)パズル秘密の様々な組合せを試みることと、検証鍵を生成する際に使用され得た(ヘルパーに明らかにされない)ナンスを発見することとを必要とする。したがって、より強いセキュリティを達成するために、ベリファイアは、パズルのより大きいセットをヘルパーに要求し、それらのより大きいサブセットを使用して、トークンでその検証鍵を確立することができる。
【0091】
図1、図2、図3、図4、図5、図6、図7、図8、図9、図10、図11、図12、及び/または図13で示した構成要素、ステップ、及び/または機能のうちの1つまたは複数を、トークンとベリファイアとの間の認証に影響を及ぼすことなく、単一の構成要素、ステップ、または機能に再編成し及び/または組み合わせることができ、あるいは、いくつかの構成要素、ステップ、または機能で実施することができる。また、本発明から逸脱することなく追加の要素、構成要素、ステップ、及び/または機能を追加することができる。図1、図3、図8、図10、及び/または図12に示した装置、デバイス、及び/または構成要素は、図2、図4、図5、図6、図7、図9、図11、及び/または図13に記載した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成できる。本明細書に記載の新規のアルゴリズムは、ソフトウェア及び/または組込みハードウェアで効率的に実施できる。
【0092】
さらに、本明細書で開示する実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、及びアルゴリズム・ステップは、電子ハードウェア、コンピュータ・ソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、及びステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例及び全体的なシステムに課される設計制約に依存する。
【0093】
実施形態についての説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本教示は、他のタイプの装置、ならびに多くの代替形態、修正形態、及び変更形態に容易に適用できることが当業者には明らかであろう。
【技術分野】
【0001】
本発明は、セキュアな認証に関し、より詳細には、限られたリソースのデバイスの認証に関する。
【背景技術】
【0002】
電子認証は、一般に、それぞれ公開鍵(非対称鍵)暗号方法または対称鍵暗号方法に基づく何らかの形式のデジタル署名またはメッセージ認証コードを必要とする。公開鍵方法と対称鍵方法は異なる特徴を有するので、異なる状況において適用可能である。概して、公開鍵システムは、鍵の管理及び配信に関して大きい利点を有するが、計算量的に困難であり、生成されるデジタル署名が大きくなる傾向がある。対称鍵方法は、極めて効率的であり、小出力を生成するが、同時に複数の検証パーティとともにセキュアに使用できないという欠点を有する。
【0003】
たいていの小型の認証トークンは、限られた計算リソースと小出力の必要性の両方により、対称鍵暗号法を使用せざるを得なかった。これは、トークンが、ただ1つの検証パーティとの認証にしか使用できないことを意味する。たとえば、2つの異なるエンティティが異なる対称鍵を用いて互換性のあるトークンを発行することはできるが、それらを1つのトークンに結合することは、対称鍵を共有することを必要とし、パーティ同士が互いに信用できないので、不可能である。米国の銀行が2ファクタ認証方法を実装するという最近の発表に伴って、ユーザは、どこへ行く場合にも複数の認証トークンを持ち歩かなければならない。
【0004】
公開鍵システムに基づく認証方法が提案されているが、1つの欠点は、多くのトークンで利用可能な計算リソースよりも大きい計算リソースが要求されることである。即ち、トークンは、廉価になり、及び/または限られた処理リソースを有する傾向がある。そのようなトークンにより強力なプロセッサを追加すれば、コストが増大するだけでなく、バッテリ寿命がより短くなる。公開鍵システムを使用することの別の欠点は、デジタル署名のサイズが長くなると、数字の短配列のタイピングまたは読出しと比較して、実装が煩雑になることである。
【0005】
別のタイプの認証システムは、認証を仲介するための信頼できるサード・パーティを使用する。そのようなシステムの一例はMITのケルベロス(Kerberos)である。しかしながら、信頼できるサード・パーティへの依存は、セキュリティが損なわれ得る別のポイントを追加するので、銀行などの多くの機関にとってディール・ブレイカーとなる。
【0006】
したがって、単一のトークンが複数のベリファイアに対して使用できるように、公開鍵システムの利点と対称鍵システムの利点を組み合わせて、小型で効率的なデジタル署名を提供する方法が必要である。
【発明の概要】
【0007】
トークンを認証するためのベリファイア上で動作可能な方法を提供する。トークンから認証要求及びトークン識別子を受信する。トークンに関連するヘルパーのヘルパー・アドレスを取得する。ネットワーク化されたヘルパーからトークンに対応する複数のパズルを取得する。パズルは、パズル識別子とパズル秘密とを含む符号化メッセージとすることができる。パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解く。たとえば、選択されたパズルは、パズルを復号するための鍵を発見するために、ブルート・フォース・アタック(brute force attack)を実行することによって解くことができる。パズル秘密に基づいて検証鍵を生成する。次いで、検証鍵に基づいて質問メッセージを生成する。パズル識別子及び質問メッセージをトークンに送信する。トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信し、トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアがトークンを認証する。検証鍵を記憶し、トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付ける。
【0008】
一例では、受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するためにその受信したパズルのうちのサブセット複数を解く。検証鍵はパズル秘密の順序セットにも基づく。パズル秘密の順序セットに対応するパズル識別子の順序セットを質問メッセージとともにトークンに送信する。
【0009】
別の特徴によれば、ベリファイアは、擬似ランダム・ナンス(pseudorandom nonce)を生成し、トークンに対応するより多数のパズルの中から複数のパズルを取得する際に使用すべきヘルパーにその擬似ランダム・ナンスを送信する。
【0010】
一実装形態では、トークンとベリファイアとの間の認証が実行されるたびにトラッキングするためにトークンによって維持されるカウンタにローカル・カウンタを同期させ、事後認証質問メッセージは現在のカウンタ値にも基づく。したがって、トークンが検証鍵と現在のカウンタ値とを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のカウンタ値を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0011】
別の実装形態では、タイムスタンプを生成するタイマを維持し、事後認証質問メッセージは現在のタイムスタンプにも基づく。トークンが検証鍵と現在のタイムスタンプとを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のタイムスタンプを知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0012】
トークンを認証するための検証デバイスは、処理回路に結合された第1の通信インターフェースと第2の通信インターフェースとを備える。第1の通信インターフェースは、ネットワークに対する高帯域幅を有する。第2の通信インターフェースは、トークンと通信するための低帯域幅を有する。処理回路は、(a)第2の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信すること、(b)トークンに関連するヘルパーのヘルパー・アドレスを取得すること、(c)第1の通信インターフェースを介してヘルパーからトークンに対応する複数のパズルを取得すること、(d)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くこと、(e)パズル秘密に基づいて検証鍵を生成すること、(f)検証鍵に基づいて質問メッセージを生成すること、(g)第2の通信インターフェースを介してパズル識別子及び質問メッセージをトークンに送信すること、及び/または(h)トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信することを行うように構成される。トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、検証デバイスはトークンを認証する。
【0013】
検証デバイスはまた、処理回路に結合された、検証鍵を記憶するための記憶デバイスを含むことができる。処理回路は、さらに、トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けるように構成できる。
【0014】
いくつかの実装形態では、処理回路は、さらに、(a)受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するためにその受信したパズルのうちのサブセット複数を解くことと(検証鍵はパズル秘密の順序セットにも基づく)、(b)パズル秘密の順序セットに対応するパズル識別子の順序セットを質問メッセージとともにトークンに送信することとを行うように構成できる。
【0015】
一実装形態では、トークンとベリファイアとの間の認証が実行されるたびにトラッキングするためにトークンによって維持されるカウンタにローカル・カウンタを同期させる。事後認証質問メッセージは現在のカウンタ値にも基づく。したがって、トークンが検証鍵と現在のカウンタ値とを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のカウンタ値を独立して知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0016】
別の実装形態では、タイムスタンプを生成するタイマを維持し/事後認証質問メッセージは現在のタイムスタンプにも基づく。したがって、トークンが検証鍵と現在のタイムスタンプとを知っていることを証明する応答メッセージをトークンから受信する。トークンが検証鍵及び現在のタイムスタンプを独立して知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する。
【0017】
したがって、トークンを認証するための検証デバイスであって、(a)トークンから認証要求及びトークン識別子を受信するための手段、(b)トークンに関連するヘルパーのヘルパー・アドレスを取得するための手段、(c)ネットワーク化されたヘルパーからトークンに対応する複数のパズルを取得するための手段、(d)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くための手段、(e)パズル秘密に基づいて検証鍵を生成するための手段、(f)検証鍵に基づいて質問メッセージを生成するための手段、(g)パズル識別子及び質問メッセージをトークンに送信するための手段、及び/または(h)トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信するための手段であって、トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアがトークンを認証する、受信するための手段を備える、検証デバイスを提供する。さらに、検証デバイスは、(i)検証鍵を記憶するための手段、(j)トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けるための手段、(k)受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するためにその受信したパズルのうちのサブセット複数を解くための手段(検証鍵はパズル秘密の順序セットにも基づく)、及び/または(l)パズル秘密の順序セットに対応するパズル識別子の順序セットを質問メッセージとともにトークンに送信するための手段をも含むことができる。
【0018】
また、(a)第1の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信すること、(b)第2の通信インターフェースを介してヘルパーからトークンに対応する複数のパズルを取得すること、(c)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くこと、(d)パズル秘密に基づいて検証鍵を生成すること、(e)検証鍵に基づいて質問メッセージを生成すること、(f)第1の通信インターフェースを介してパズル識別子及び質問メッセージをトークンに送信すること、及び/または(g)トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けることを行うように構成された処理回路を備える処理デバイスを提供する。
【0019】
また、ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、プロセッサに、(a)ネットワーク化されたヘルパーからトークンに対応する複数のパズルを取得すること、(b)パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するためにそのパズルのうちの1つを解くこと、(c)パズル秘密に基づいて検証鍵を生成すること、(d)検証鍵に基づいて質問メッセージを生成すること、(e)パズル識別子及び質問メッセージをトークンに送信すること、(f)トークンが検証鍵を知っていることを証明する応答メッセージをトークンから受信すること(トークンが検証鍵を知っていることを応答メッセージが首尾よく証明するならば、ベリファイアはトークンを認証する)、及び/または(g)トークンとベリファイアとの間の事後認証における対称鍵として使用するために検証鍵をトークン識別子に関連付けることを行わせる1つまたは複数の命令を有する機械可読媒体を提供する。
【0020】
また、ベリファイアに対してトークンを認証するためのトークン上で動作可能な方法を提供する。秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングする。トークン識別子をベリファイアに供給することによってトークンの認証を開始する。第1の検証鍵に基づく1つまたは複数のパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信する。第1の検証鍵は、1つまたは複数のパズル識別子によって識別される1つまたは複数のパズルに関連する1つまたは複数のパズル秘密の関数とすることができる。トークンは、1つまたは複数のパズル生成アルゴリズム、受信した1つまたは複数のパズル識別子、及び秘密鍵に基づいて1つまたは複数のパズル秘密を独立して取得する。1つまたは複数のパズル秘密に基づいて第2の検証鍵をトークンによって生成する。トークンは、第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証する。第2の検証鍵を記憶し、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付ける。トークンは、第2の検証鍵に基づいて、トークンが第1の検証鍵を知っていることを示す、ベリファイアへの応答メッセージを生成する。トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスをトークンがベリファイアに供給する。トークンは、ベリファイアから複数の順序付きパズル識別子を受信し、第1の検証鍵は、複数の順序付きパズル識別子に関連する対応する複数の順序付きパズル秘密の関数である。1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて複数の順序付きパズル秘密を取得する。第1の検証鍵及び第2の検証鍵は複数の順序付きパズル秘密にも基づく。このようにして、異なるベリファイアを用いて複数のセキュアな検証鍵を確立することができる。トークンと異なるベリファイアとの間の対称鍵認証として使用するために検証鍵の各々を対応するベリファイアに関連付ける。
【0021】
一実装形態では、トークンとベリファイアとの間の認証が実行されるたびにトラッキングするためにベリファイアによって維持されるカウンタにローカル・カウンタを同期させる。後続の受信したメッセージ認証コードは現在のカウンタ値にも基づく。トークンが検証鍵と現在のカウンタ値とを知っていることを証明する応答メッセージをベリファイアに送信する。
【0022】
別の実装形態では、タイムスタンプを生成するためのタイマを維持する。したがって、後続の受信したメッセージ認証コードは現在のタイムスタンプにも基づく。トークンが検証鍵と現在のタイムスタンプとを知っていることを証明する応答メッセージをベリファイアに送信する。
【0023】
第1の通信インターフェースと処理回路とを備えるトークンを提供する。第1の通信インターフェースは、ベリファイアと通信するための低帯域幅を有する。処理回路は、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信すること、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始すること、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信すること(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得すること、(e)パズル秘密に基づいて第2の検証鍵を生成すること、及び/または(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証することを行うように構成される。処理回路は、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付ける。第2の検証鍵に基づいて、トークンが第1の検証鍵を知っていることを示す、ベリファイアへの応答メッセージを生成する。
【0024】
したがって、ベリファイアで認証するためのトークンであって、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングするための手段、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始するための手段、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信するための手段(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得するための手段、(e)パズル秘密に基づいて第2の検証鍵を生成するための手段、(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証するための手段、(g)第2の検証鍵を記憶し、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付けるための手段、及び/または(h)トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスをトークンからベリファイアに供給するための手段を備えるトークンを提供する。
【0025】
また、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信すること、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始すること、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信すること(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得すること、(e)パズル秘密に基づいて第2の検証鍵を生成すること、(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証すること、及び/または(g)第2の検証鍵に基づいて、トークンが第1の検証鍵を知っていることを示す、ベリファイアへの応答メッセージを生成することを行うように構成された処理回路を備える処理デバイスを提供する。
【0026】
ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、プロセッサに、(a)秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングすること、(b)トークン識別子をベリファイアに供給することによってトークンの認証を開始すること、(c)第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信すること(第1の検証鍵は、パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である)、(d)1つまたは複数のパズル生成アルゴリズム、受信したパズル識別子、及び秘密鍵に基づいて第1のパズル秘密を独立して取得すること、(e)パズル秘密に基づいて第2の検証鍵を生成すること、(f)第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証すること、及び/または(g)第2の検証鍵を記憶し、第1の検証鍵と第2の検証鍵が同じである場合、第2の検証鍵をベリファイアに関連付けることを行わせる1つまたは複数の命令を有する機械可読媒体を提供する。
【図面の簡単な説明】
【0027】
【図1】一例における、どのようにトークンに秘密鍵をプロビジョニングし、どのようにそのトークンに関連するパズルを生成するかを示すブロック図。
【図2】一例による、秘密鍵を生成し、トークンに配信し、その秘密鍵に関連する複数のパズルを生成するようにプロビジョニング・デバイス上で動作可能な方法を示す図。
【図3】トークン、検証デバイス、及びヘルパー・デバイスがトークンの初期認証中にどのように動作するかを示す図。
【図4】ヘルパーの支援を受けたトークンとベリファイアとの間の初期認証のための方法を示す図。
【図5】トークンとベリファイアとの間の事後認証を実行するための方法を示す図。
【図6】カウンタを使用したトークンとベリファイアとの間の認証を実行するための方法を示す図。
【図7】タイマを使用したトークンとベリファイアとの間の認証を実行するための方法を示す図。
【図8】複数の異なるベリファイアで認証するためにトークンが複数の検証鍵をどのように記憶するかを示すブロック図。
【図9】複数の異なるベリファイアで対称鍵を使用してセキュアな認証を実行するようにトークン上で動作可能な方法を示す図。
【図10】トークンを認証するためにヘルパーの支援を受けて対称鍵を確立するように構成されたベリファイアを示すブロック図。
【図11】ヘルパーの支援を受けてトークンのセキュアな認証を実行するベリファイア上で動作可能な方法を示す図。
【図12】トークンを認証するための対称鍵を確立する際にベリファイアを支援するように構成されたヘルパーを示すブロック図。
【図13】トークンを認証する際にベリファイアを支援するようにヘルパー上で動作可能な方法を示す図。
【発明を実施するための形態】
【0028】
以下の説明では、実施形態の十分な理解が得られるように具体的な詳細を与える。ただし、これらの実施形態は、これらの具体的な詳細なしに実施できることを、当業者なら理解されよう。たとえば、これらの実施形態を不必要な詳細において不明瞭にしないために、回路をブロック図で示すか、またはまったく示さないことがある。他の場合では、これらの実施形態を不明瞭にしないために、よく知られている回路、構造、及び技法を詳細に図示しないことがある。
【0029】
また、実施形態を、フローチャート、流れ図、構造図、またはブロック図として示されるプロセスとして説明することがあることに留意されたい。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並行してまたは同時に実行できる。さらに、動作の順序を並び替えることができる。プロセスは、その動作が完了すると終了する。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応する場合、その終了は呼出し側関数またはメイン関数への関数の復帰に対応する。
【0030】
さらに、記憶媒体は、読取り専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュ・メモリデバイス、及び/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表すことができる。「機械可読媒体」という用語は、携帯または固定記憶デバイス、光記憶デバイス、ワイヤレス・チャネル、ならびに(1つまたは複数の)命令及び/またはデータを記憶、含有、または搬送することが可能な様々な他の媒体を含むが、これらに限定されない。
【0031】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはその組合せによって実装できる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントを記憶媒体あるいは他の記憶手段などの機械可読媒体に記憶することができる。プロセッサは必要なタスクを実行することができる。コード・セグメントは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容をパス及び/または受信することによって、別のコードセグメントまたはハードウェア回路に結合できる。情報、引数、パラメータ、データなどは、特にメモリ共有、メッセージパッシング、トークンパッシング、及びネットワーク送信などを含む適切な手段を介してパス、転送、または送信できる。
【0032】
「トークン(token)」という用語は、認証を助けるために許可されたユーザに関連付けられた、限定された処理リソース及び/または通信リソースをもつ物理デバイスを指す。「ベリファイア(verifier)」という用語は、トークンの認証を実行するデバイス、エンティティ、及び/または仮想オブジェクト(たとえば、ソフトウェア・アプリケーションなど)を指す。「ヘルパー(helper)」という用語は、トークンを認証する際にベリファイアを支援するデバイス、エンティティ、及び/または仮想オブジェクト(たとえば、ソフトウェア・アプリケーションなど)を指す。
【0033】
一態様は、トークンとベリファイアとの間の認証のための対称鍵をセットアップすることを可能にするネットワーク化されたヘルパーを提供する。ベリファイアは、対称鍵を取得する際にベリファイアを支援するためにヘルパーを利用するが、ヘルパーはそれ自体で対称鍵を取得することができない。本方法は、プロビジョニング、初期認証、及び事後認証の3つの段階を含むことができる。
【0034】
別の態様は、トークン及びベリファイアが、トークンとベリファイアとの間の認証のためのセキュアな対称鍵に関して同意できるようにするパズルベースのプロトコルを提供する。
【0035】
プロビジョニング段階(provisioning stage)では、低帯域幅インターフェースを有する小型、低出力、及びポータブルなトークンに、複数の異なるベリファイアとともに関連するユーザを認証するために使用できる秘密鍵が与えられる。プロビジョニング段階は、トークンに割り当てられた秘密鍵に関連する複数のパズルを生成することと、それらのパズルをサード・パーティ・ヘルパーに配信することとを含むこともできる。
【0036】
初期認証段階では、トークンとベリファイアが共有された対称鍵をネゴシエートできるようにすることによって、トークンがベリファイアに紹介される。ベリファイアは、そのトークンに関連するランダムな複数のパズルをヘルパーから取得するために使用できるトークン識別子を受信する。次いでベリファイアは、ブルート・フォース(brute force)によってパズルの少なくとも1つを解くかまたは解読して、関連するパズル秘密及びパズル識別子を取得する。ベリファイアは、解かれたパズルから取得されたパズル秘密及び他の情報に少なくとも部分的に基づいて、検証鍵を生成する。ベリファイアはパズル識別子と検証鍵のメッセージ認証コードとをトークンに供給する。トークンは、受信したパズル識別子を使用して、関連するパズル秘密を取り出し、検証鍵のローカルバージョンを生成する。次いでトークンは、(パズル識別子及びローカル検証鍵に少なくとも部分的に基づいて)メッセージ認証コードのローカルバージョンを生成し、そのローカルバージョンが受信したメッセージ認証コードに一致するかどうかを判断することができる。ローカルコードと受信したメッセージ認証コードとが一致する場合、その検証鍵をトークンとベリファイアとの間の対称鍵として使用することができる。
【0037】
その後、事後認証段階において、再認証するために、より短い完全対称鍵ベースのプロセスを使用することができる。たとえば、(初期認証段階中に取得された)以前に生成された検証鍵は、認証のためにトークン及びベリファイアによって使用できる。このようにして、トークン、ベリファイア、及びヘルパーは、対称鍵方法と公開鍵方法とを組み合わせ、ベリファイアとヘルパーとの間で公開鍵デジタル署名の実装を分割する。ヘルパーは、信頼できるサード・パーティの機能の一部を実行するが、秘密対称鍵を知らず、ヘルパーが脅かされても、認証のスプーフィングは不可能である。この認証システムは完全公開鍵ベースのシステムの機能の大部分を提供するが、実際のトークンはプロビジョニング後に少量の処理リソース及び帯域幅のみを使用する。
【0038】
鍵のプロビジョニング及びパズル・データベースの生成
図1は、一例における、どのようにトークンに秘密鍵をプロビジョニングし、どのようにそのトークンに関連するパズルを生成するかを示すブロック図である。プロビジョニング・デバイス102は、トークンを構成するように製造業者または配信者によって動作させることができる。プロビジョニング・デバイス102は、秘密鍵を生成する擬似ランダム鍵生成器106を含む。トークン110の製造、セットアップ、または初期化中に、プロビジョニング・デバイス102は秘密鍵108を生成し、トークン110に配信することができ、トークン110において、秘密鍵108は鍵記憶デバイス112(たとえば、メモリ)に記憶される。トークン110はまた、その秘密鍵を使用してパズルを再生するために使用できる1つまたは複数のパズル生成アルゴリズムを記憶することができる。さらに、秘密鍵108は、パズル生成器114をシードするために使用される。パズル生成器114は、秘密鍵108を使用して、複数のパズル(たとえば、メッセージ)を生成し、そのようなパズルを(サード・パーティ・ヘルパーなどの)パズル・データベース116に供給するように構成される。一例では、各パズルはパズル秘密及び一意のパズル識別子を含むことができる。パズルは、パズル・データベース116に記憶する前に暗号化できる。秘密鍵108は、トークン110を脅かすために使用できないように、プロビジョニング・デバイス102によって破壊できる。
【0039】
代替実装形態では、プロビジョニング・デバイス102は秘密鍵を生成することができない。代わりに、トークン110には他の手段によってあらかじめ秘密鍵がプロビジョニングされ、トークン110は、そのトークンに関連する複数のパズルを生成すべき秘密鍵を一時的に供給するのに十分長い間、プロビジョニング・デバイスに結合される。
【0040】
図2に、一例による、秘密鍵を生成し、トークンに配信し、その秘密鍵に関連する複数のパズルを生成するようにプロビジョニング・デバイス上で動作可能な方法を示す。202において、擬似ランダム秘密鍵を取得する。この秘密鍵は、トークンによって供給されるか、またはプロビジョニング・デバイスによって生成されるかのいずれかが可能である。たとえば、秘密鍵とナンスとを入力として受け取る擬似乱数生成器(PRG)を使用して、ランダムに見えるビットの任意に長い文字列として擬似ランダム秘密鍵を生成することができる。多くの代替策があるが、非線形SOBER(NLS)などのセキュアなストリーム暗号を使用してPRGをインスタンス化することができる。
【0041】
204において、秘密鍵に関連する複数のパズル(たとえば、暗号化メッセージ)を生成する。206において、秘密鍵を外部トークン・デバイスに供給する。また、208において、複数のパズルを外部ヘルパー・デバイスに送信し、その外部ヘルパー・デバイスに記憶する。次いで210において、プロビジョニング・デバイスは秘密鍵を廃棄する。
【0042】
生成され、ヘルパーに供給されるパズルの数は極めて大きく(たとえば、数千、数百万などに)なることがある。プロビジョニング・デバイス102は、トークン110に供給される秘密鍵に基づいてアルゴリズム的にこれらのパズルを生成することができる。したがって、トークンは要求に応じて特定のパズルを再生することができるので、トークン自体がすべてのパズルを記憶する必要はない。しかしながら、ヘルパーには秘密鍵が与えられず、したがって、ヘルパーは、トークンに関連するパズルのすべてを記憶する必要がある。これが実現される少なくとも2つの異なる方法が存在する。
【0043】
パズル・データベース116は、作成された後にヘルパーに通信される。いくつかの実装形態では、プロビジョナとヘルパーは同じデバイスとすることができる。代替実装形態では、関連するトークンを用いて、パズル・データベースを含む記憶媒体(たとえば、ディスク)を分散することができる。次いで、エンドユーザは、適切なヘルパーを選択し、パズル・データベースを(記憶媒体から)そのヘルパーに配信する。ベリファイアからパズルの要求が受信されたときどのパズルを送信すべきかを識別できるように、ヘルパーには(受信したパズル・データベースに対応する)ユーザの識別情報及び/またはトークン識別子を教えることができる。
【0044】
様々な適用例では、複数のヘルパーがトークンのパズル・データベースを受信し、それによって冗長性及びスケーリングを与えることができる。ヘルパーは、複数の異なるトークンのパズル・データベースを記憶することができる。
【0045】
パズル生成
各々が中程度の困難さ量の多数のパズルを作成することによって、ベリファイアは、中程度の計算労力量でパズルを解くことができるようになる。パズルは、ベリファイアによってブルート・フォース・アタックができるようにするのに十分短い未知のパズル鍵(PK)を用いて符号化されたメッセージの形態とすることができる。
【0046】
パズルはランダムな順序で生成できる。各パズルは、パズル識別子フィールド(PID)、パズル秘密鍵(PS)、及びパズル・メッセージ認証コード(PM)フィールドを含むことができる。パズル識別子(PID)は、可能な数のパズルの範囲内でランダムに生成できる。一例では、PIDは32ビットとすることができる。パズル秘密(PS)は完全強度暗号鍵(たとえば、128ビット)とすることができる。一例では、PSは、(トークン302またはプロビジョニング・デバイス102において、)パズル生成機能またはアルゴリズム(PGF)によってトークン秘密鍵(SK)及び/またはパズル識別子(PID)に基づいて計算できる(すなわち、PGF(SK,PID))。パズル・メッセージ認証コード(PM)はPS及びPIDのメッセージ認証コード(すなわち、PM(PS,PID))として定義でき、それによりベリファイアはいつパズルを首尾よく「クラック」または解読したかを知ることができる。すなわち、ベリファイアは、パズルが首尾よく解かれたことを示すPID、または何らかの他のフラグ、マーカー、もしくはビット・シーケンスを識別することによって、パズルが首尾よく解読できたかどうかを知ることができる。
【0047】
ヘルパーに配信する前に、トークンまたはプロビジョニング・デバイスのいずれかによってランダムに生成された、一意の限られた強度のパズル鍵(PK)を使用してパズルを暗号化することができる。この暗号化の強度、及び生成すべきパズルの個数については、ヘルパー・パズル・データベースが脅かされる可能性がどの程度あるかのみに依存する。ハッキングまたは不正アクセスの可能性がないとみなされる場合、パズル暗号化をまったくなしとし、潜在的なベリファイアごとにより少ないパズルを使用することができる。
【0048】
パズルシステムを使用すると、ヘルパーが脅かされた場合に多少追加のセキュリティが与えられる。そのようなセキュリティは、特定のトークンに使用されるパズルの複雑さ及び数に基づくことができる。たとえば、特定のトークンに対して多数の容易に解読可能なパズルを使用することができ、その場合、セキュリティは、ベリファイアによって選択された1つのパズル、またはパズルの組合せによって与えられる。ベリファイアは、(ヘルパーから受信された多数のパズルから)1つまたは複数の擬似ランダムに選択されたパズルを解読するかまたは解くと、選択されたパズルごとにPID及びPSを取得することができる。ベリファイアは、トークンに送信される(1つまたは複数の)PIDに対応するパズル秘密(PS)に基づいてセッション鍵または検証鍵を(VK)生成することができる。ベリファイアからPIDを受信すると、トークンもセッション鍵または検証鍵(VK)を生成することができる。したがって、ベリファイア及びトークンの両方が共通の対称鍵に関してセキュアに同意することができる。盗聴者または脅かされたヘルパーは、ベリファイアによってどの(1つまたは複数の)パズルが解かれたかを知らないので、セッション鍵または検証鍵(VK)を判定することはより難しいタスクになる。せいぜい盗聴者またはヘルパーは、特定のトークンに関連するすべてのパズルを解こうと試みることができるが、極めて多数(たとえば、数百万)存在するので、これは大いにより計算量的に高コストになる。
【0049】
初期認証段階
トークンに秘密鍵がプロビジョニングされ、ヘルパー・デバイスが関連するパズルを取得すると、ヘルパー・デバイスの支援を受けてトークンと検証デバイスとの間で認証を実行することができる。トークンと特定のベリファイアとの間で初期認証するためのプロセスは、ベリファイアに対して計算集約的であり、おそらくは従来の公開鍵システムよりも計算集約的である。したがって、一実装形態では、初期認証段階は、トークンをベリファイアに「紹介」して、トークンとベリファイアが共有された対称鍵をネゴシエートできるようにするために使用できる。その後、より短い完全対称鍵ベースのプロセスを事後認証(再認証)に使用することができる。
【0050】
図3に、トークン302、検証デバイス304、及びヘルパー・デバイス306がトークン302の初期認証中にどのように動作するかを示す。トークン302は、限定を与えられた処理回路308と、秘密鍵(SK)、トークンID、検証鍵VK、及びパズル生成アルゴリズムもしくは機能を記憶するための記憶デバイス310と、低帯域幅で非セキュアな通信インターフェース312とを含むデバイスとすることができる。低帯域幅インターフェースは、USB、Bluetooth(登録商標)、Near−Field Communication、及びセルラー/LDCなどにわたる範囲にある、数値キーパッド及び8桁ディスプレイほどの単純なものでよい。
【0051】
ベリファイア304は、トークンよりも著しく多くの処理リソースを有する処理回路314と、検証鍵及び関連するトークンIDを記憶するための記憶デバイス315と、高帯域幅でセキュアな通信インターフェース316とを含むデバイス、エンティティ、及び/または仮想オブジェクトとすることができる。ヘルパー306は、処理回路318と、トークン302に関連する複数のパズルを記憶するための記憶デバイス320と、高帯域幅でセキュアな通信インターフェース322とを含むデバイス、エンティティ、及び/または仮想オブジェクトとすることができる。
【0052】
ユーザがトークン302を使用して自分自身をベリファイア304で認証しようと試みると、トークンは認証要求を(トークンIDとともに)ベリファイア304に送信する。ベリファイア304及びヘルパー306は、データを通信及び/または交換することが可能である高帯域幅ネットワーク(たとえば、インターネット、プライベート・ネットワークなど)に結合できる。ベリファイア304は(トークンIDに関連する)複数のパズルをヘルパー306に要求する。ヘルパー306は応答して、(受信したトークンIDに関連する)パズルの擬似ランダムに選択されたセットをベリファイア304に送信する。いくつかの実装形態では、ヘルパー306とベリファイア304は、それらの相互作用をセキュアにするためにトランスポート層セキュリティ(TLS)プロトコルまたはセキュリティ・インターネット・プロトコル(IPsec)などのよく知られているセキュリティ・プロトコルを使用して、オープンなインターネット上で通信することができる。
【0053】
次いでベリファイア304は、受信したパズルのうちの少なくとも1つを選択し、ブルート・フォース・アタックによって解読またはクラックする。パズルを解読またはクラックすると、ベリファイアはパズルからパズル秘密(PS)及びパズルID(PID)を取得する。ベリファイア304により、パズル秘密(PS)に基づいて検証鍵(VKv)が生成される。ベリファイア304は、パズルID(PID)と、検証鍵(VKv)のメッセージ認証コード(MAC)とをトークン302に送信する。トークン302は、受信したPIDと、そのあらかじめ記憶された秘密鍵(SK)及びパズル生成アルゴリズムとを使用して、PIDのパズル秘密を取得する。次いでトークン302は、パズル秘密を使用して、それ自体のローカル検証鍵(VKt)を再生することができる。検証鍵は一致するはずであり(VKt=VKv)、それにより検証鍵VKをトークン302とベリファイア304との間の認証のための対称鍵として使用することが可能になる。トークン302は、ベリファイア304との将来の認証のために検証鍵(VK)を記憶することができる。
【0054】
いくつかの実装形態では、ベリファイア304は、複数のパズル秘密及びパズル識別子を取得するために複数のパズルを破る、クラックする、または解読することができることに留意されたい。複数のパズル秘密に基づいて検証鍵(VKv)が生成でき、それによってさらなる強度が得られる。対応するパズル識別子がトークン302に送信され、次いでトークン302はそれらのパズル識別子を使用してそのローカル検証鍵(VKt)を生成することができる。
【0055】
図4に、ヘルパーの支援を受けたトークンとベリファイアとの間の初期認証のための方法を示す。トークン402に秘密鍵(SK1)をプロビジョニングする。ユーザは、認証を必要とするセキュアなトランザクションを実行したいと望むとき、トークン402を使用して、トークン識別子(トークンID)とともに認証要求412を送信することによってベリファイア404との認証を開始することができる。認証ヘルパー406は、トークン402(またはトークンのユーザ)によって識別されるか、またはデフォルトとして識別できる。たとえば、トークン402またはユーザのいずれかが、トークンのパズルが記憶されているヘルパー406のコンタクト情報をベリファイア404に供給することができる。
【0056】
ベリファイア404は、ヘルパー406とのセキュアな及び/または認証された接続を確立する。ベリファイア404はまた、414において第1のランダム・ナンス(Nonce1)を生成する。次いでトークンID及びNonce1をヘルパー406に送信する。
【0057】
ヘルパー406には、以前にトークン402のパズル・データベース410がプロビジョニングされており、ヘルパー406はトークンIDを使用してパズル・データベース410からパズルを選択する。一実装形態では、ヘルパー406は、418において第1のナンス(Nonce1)を使用して、トークン402に関連するN個のパズルの擬似ランダム選択(セット)を選択し(Nは、2と数百万の間の整数である)、420においてそれらをベリファイアに戻すことができる。Nonce1がベリファイア404によって供給された場合、ヘルパー406は、パズルのセットが、受信したNonce1の影響を受けて選択されたという証明を与えることができる。次いで、ベリファイア404と406との間の接続を閉じるかまたは終了する。
【0058】
422において、ベリファイア404は受信したパズルのうちの1つまたは複数を選択する。いくつかの実装形態では、t個のパズルのランダムなシーケンスを選択し、ただし、t≧1であり、tはすべての受信したパズルのサブセットである。ヘルパー406が脅かされた場合、より多くのパズルを使用するほどより多くのセキュリティが得られる。なぜならば、ヘルパー406及び攻撃者は、検証鍵を生成するためにどのt個のパズルが使用されるのか、またはどんな順序(シーケンス)で結合されるのかを知らないからである。
【0059】
選択されたパズルが暗号化されている場合、424において、ベリファイア404は(たとえば、ブルート・フォース・アタック技法を使用して)その選択されたパズルを解いて(解読またはクラックして)、選択されたパズルの各々のパズル識別子(PID)及びパズル秘密(PS)を取得する。
【0060】
パズル秘密(PS)と、場合によっては第2の擬似ランダム・ナンス(Nonce2)426とに基づいて、428においてベリファイア404は検証鍵(VKver)を計算する。たとえば、ハッシュ関数H(たとえば、セキュアなハッシュアルゴリズムSHA−256など)を使用して検証鍵VKver=H(Nonce2,PS)を生成することができる。いくつかの実装形態では、追加のセキュリティのために、複数のパズルを使用して結果的にパズル秘密PS1、PS2...、PStが検証鍵VKver=H(Nonce2,PS1,...,PSt)に組み合わせられるようにする。430において、ベリファイア406は、第2のナンス(Nonce2)とt個のPIDの順序付きリストとを含むことができるメッセージをトークン402に送信する。430において、ベリファイア404はまた、入力として秘密検証鍵(VKver)及びメッセージを取り、タグMAC(VKver,Nonce2,PID)を出力するメッセージ認証コード(MAC)を送信する。432において、ベリファイア404はまた、事後認証に使用するためにこのユーザに関連するベリファイアVKverを記憶する。
【0061】
ベリファイア404からPID及びMACを受信すると、434においてトークン402は、受信したPIDに基づいて解かれたパズルのパズル秘密PSを再生する。たとえば、トークン402は、その秘密鍵(SK1)及びパズル生成アルゴリズムを使用して、識別されたPIDのパズル秘密PSを取得することができる。次いで436において、トークン402は、パズル秘密PS及び第2のナンス(Nonce2)に基づいてローカル検証鍵VKtokenを生成する。438において、トークン402は、ローカルMAC(VKtoken,Nonce2,PID)に対して受信したメッセージ認証コードMAC(VKver,Nonce2,PID)を検証する。MACが等しくない場合、受信されたMAC(VKver,Nonce2,PID)及び/またはメッセージのコンテンツの改ざん(または偶発的破損)を示すエラーが示される。トークン402はまた、リプレイ・アタックを防ぐために、記憶しているのと同じ検証鍵VKをすでに有してないかを確認する。上首尾であると仮定すると、440において、トークン402はVKを空きスロットに記憶する。すなわち、トークン402は(異なるアプリケーションまたはベリファイアの)検証鍵をスロット中に編成する。ユーザは、後の選択または表示のために、検証鍵VKに関連するスロット番号の記録を取るか、または検証鍵VKに関連するスロットに名前を割り当てることができる。
【0062】
442において、トークン402は、(後述の事後認証段階の場合とほとんど同様に)その認証応答を生成し、ベリファイアに送信する。ベリファイア404は、適正であるはずの応答を受信し、アカウントを使用準備完了にマーキングする。
【0063】
事後認証段階
トークンと特定のベリファイアとの間で検証鍵(VK)がセットアップされると、それらの間の事後認証要求においてその検証鍵(VK)を使用することができる。検証鍵(VK)は、トークンとベリファイアとの間で秘密またはセキュアに保たれる。その検証鍵(VK)は、トークンとベリファイアとの間の質問応答認証プロセスにおける対称鍵として使用できる。いくつかの実装形態では、通信のプライバシーのために検証鍵(VK)を使用して2つのデバイス間のメッセージを暗号化することもできる。
【0064】
図5に、トークンとベリファイアとの間の事後認証を実行するための方法を示す。トークン502とベリファイア504との間で、セキュアな検証鍵VKa506及び508を以前に確立していることができる。この検証鍵VKaは、トークン502とベリファイア504との間の関係に特有なことがあり、他のベリファイアには適用不可能である。510において、トークン502は、そのトークンIDとともに認証要求をベリファイア504に送信する(これは、たとえば、顧客がトランザクションを実行するように銀行出納係に依頼する場合など、間接的なことがある)。ベリファイア504はトークンIDを使用して、トークン502に対して以前に確立された検証鍵VKa508を識別する。512において、ベリファイア504は質問及びMAC(VKa,質問)を生成する。質問は、任意のもしくは擬似ランダムな数、文字列、及び/またはビットもしくはシンボルのシーケンスとすることができる。次いで514において、質問及びMAC(VKa,質問)をトークンに送信する。受信された質問と、その以前に記憶された検証鍵VKa506とを使用して、516においてトークン502はMAC(VKa,質問)を検証する。すなわち、トークン502は、受信したMAC(VKa,質問)が、ローカルに計算されたMAC(VKa,質問)と同じであるかどうかを検証する。
【0065】
一実装形態では、トークン502は、認証要求510の送信先であるベリファイアがどれであるかを知っていることが可能である。たとえば、ユーザは、トークン502によって使用されるべき(特定のベリファイアに関連する)検証鍵VKa506を識別することができる。そのような実装形態では、受信したMAC(VKa,質問)を検証するとき、トークン502は単に、使用するように言われた検証鍵VKa506を使用する。
【0066】
他の実装形態では、トークン502は、どのベリファイアと通信しているのかを知ることができない。そのような場合、トークンは、単に、その記憶されている検証鍵の各々に対して受信したMAC(VKa,質問)を検証しようと試みることができる。記憶されている検証鍵のうちの1つが同じMACを生成する場合、それは適正な検証鍵であると仮定される。
【0067】
検証鍵VKaが認証されると、518においてトークン502は応答及びMAC(VKa,応答)をベリファイア504に送信する。この応答は、任意のもしくは擬似ランダムな数、文字列、及び/またはビットもしくはシンボルのシーケンスとすることができる。トークンとベリファイアとの間のメッセージが同じにならないように質問と応答は互いに異なるように選択される。概して、セキュリティについて、応答は最初に発された質問に関係することができるが、同じでないことがある。たとえば、応答は、受信された質問文字列よりも大きい文字列である文字列のことがある。そのような場合、応答自体を送信する必要がない。520において、ベリファイア504は、その知られている検証鍵VKa508と受信した応答とを使用することによって受信したMAC(VKa,応答)を検証する。受信したMACが、ベリファイア504によって計算されたローカルMACに一致する場合、認証は完了である。次いで522において、トークン502、ベリファイア504のいずれか、または両方によってセッション鍵を確立する。
【0068】
盗聴者が以前に使用されたセッション鍵を再利用しようと試みるリプレイ・アタックを防ぐために、トークンはセキュリティ機構を実装することができる。たとえば、様々なトークンは、認証を証明するためにシーケンス・カウンタまたはタイムスタンプを実装することができる。カウンタまたはタイムスタンプは、検証鍵VKを知っているパーティのみが予測できる形で変わる。したがって、トークンまたはセッション鍵から以前のMAC応答を取得した盗聴者は、それを再利用することが不可能である。
【0069】
シーケンス・カウンタを用いた認証
図6に、カウンタを使用したトークンとベリファイアとの間の認証を実行するための方法を示す。トークン602とベリファイア604の両方の上で、検証鍵VKa606及び608、ならびに関連する順次カウンタcounter_VKa610及び612をプロビジョニングする。検証鍵VKa606及び608、ならびに順次カウンタcounter_VKa610及び612は、以前に構成しているか、及び/またはトークン602とベリファイア604との間で同期していることが可能である。たとえば、検証鍵VKaがトークン602とベリファイア604との間で最初に確立されるとき、トークン602及びベリファイア604はそれらのカウンタ610とカウンタ612を同期させることができる。カウンタ610及び612は、無許可パーティがトークン602及び/またはベリファイア604として見せかけようと試みる場合のセキュリティ対策として使用される。(トークン602における)counter_VKa610、及び(ベリファイア604における)counter_VKa612は、無許可パーティがトークン602及び/またはベリファイア604として見せかけようと試みる場合のセキュリティ対策として使用される。
【0070】
トークンは、そのトークンIDとともに認証要求614を送信することによってトランザクションを開始する。認証要求を受信すると、ベリファイア604は、トークンIDを使用して、トークン602に関連する検証鍵VKa608を識別する。次いでベリファイア604は、検証鍵VKa608に対応するcounter_VKa612を選択する。616において、ベリファイア604においてcounter_VKaを固定の増分だけ増分してcounter_VKa’を取得する。618において、質問と、検証鍵VKa、counter_VKa’、及び質問のメッセージ認証コード(MAC(VKa,counter_VKa’,質問))とを生成する。620において、この質問及びMAC(VKa,counter_VKa’,質問)をベリファイアからトークンに送信する。トークン602によって記憶されている各検証鍵VKnについて、a)622において、関連するcounter_VKnを取り出し(ただし、1≦n≦Nであり、Nは、トークンによって記憶されている検証鍵の総数である)、b)次いで検証鍵VKn及びcounter_VKnごとにMAC(VKn,counter_VKn+i,質問)を計算し(たとえば、1≦i≦5)、c)計算されたMACが受信したMACに合致する場合、選択された検証鍵(すなわち、VKa)は適正であると仮定する。いくつかの実装形態では、応答をより迅速にするために、質問は、各検証鍵VKnのMACをあらかじめ計算し記憶できるような既知の数、文字列、またはビット・シーケンスとすることができる。
【0071】
適正な検証鍵VKaを発見すると、628においてトークン602は、そのcounter_VKa’=counter_VKa+増分と更新する。したがって、トークン602とベリファイア604の両方が、同期されたカウンタを維持している。次いでトークンは、630において応答及びMAC(VKa,counter_VKa’,応答)を計算し、632においてベリファイアに送信する。
【0072】
ベリファイア604は、それ自体のVKa、及びcounter_VKa’、ならびに受信した応答を使用して、受信したMAC(VKa,counter_VKa’,応答)を検証する。受信したMACが首尾よく検証された場合、トークン602は認証されたとみなす。636及び638において、トークン602とベリファイア604の両方はセッション鍵=MAC(VK,counter_VKa’,「K」)を計算し、ただし「K」は、既知であるかまたはトークン602とベリファイア604の両方が判断できる、秘密鍵またはあらかじめ構成された値とすることができる。
【0073】
トークン602が攻撃者からランダムな質問を受信した場合、トークン602は対応する検証鍵VKを発見することができず、それはエラーを示し、認証は失敗することに留意されたい。
【0074】
タイムスタンプを用いた認証
図7に、タイマを使用したトークンとベリファイアとの間の認証を実行するための方法を示す。この方法は、ユーザに、トークンに対してベリファイアを識別させることによって認証プロトコルを単純化し、それによって(ベリファイアを識別するのに用いる)ベリファイア704からの質問の必要を回避する。この機構はまた、認証ステップの数を低減するために(上述のカウンタベースの認証プロトコルなどの)他のプロトコルにおいて実装できる。この方法では、トークン702及びベリファイア704が、同期されたタイマTtoken710及びTver712(たとえば、協定世界時UTC)を妥当な精度で維持することができると仮定する。たとえば、トークン702は、プロビジョニング中に同期または初期化されるタイマTtoken710を有することができる。ベリファイア704は、そのタイマTver712が同期及び/または維持されるネットワーク接続を有することができる。714において、トークン702は、そのトークンを認証しているベリファイア704を識別する指示を(ユーザなどから)受信する。たとえば、ユーザは、以前は特定のベリファイア704に関連付けられていた特定の名前または検証鍵VKa706を選択することができる。このようにして、トークン702は、以前はベリファイア704に関連付けられていた適切な検証鍵VKa706を取得することができる。トークンは、716において応答及びMAC(VKa,タイムスタンプ,応答)を生成し、718においてベリファイアに送信する。応答において使用されるタイムスタンプはタイマTtoken710から取得する。718において、トークンの認証のために応答、MAC(VKa,タイムスタンプ,応答)、及びトークンIDをベリファイアに送信する。
【0075】
720において、ベリファイアは、(トークンIDに対応する)検証鍵VKa708を取り出し708、(タイムスタンプを取得するための)タイマTver712と受信した応答とを使用してMACのローカルバージョンを計算することによって、受信したMAC(VK,タイムスタンプ,応答)を検証する。タイムスタンプの分解能は、タイマTtoken710とタイマTver712との間のわずかな相違、またはトークン702によってMACが生成された時刻と、それがベリファイア702に与えられた時刻との間の遅延に適応するように調整できる。たとえば、タイムスタンプは、+/−30秒または何らかの他のタイムウィンドウの分解能を有することができる。
【0076】
いくつかの実装形態では、722及び724において、トークン702及び/またはベリファイア704は、特定のトランザクション中のセッション鍵として使用するためのMAC(VK,タイムスタンプ,セッション鍵)を計算することができ、ただし、セッション鍵は、既知であるかまたはトークン702とベリファイア704の両方が判断できる、擬似ランダムまたは任意の数、文字列、及び/またはビット・シーケンスである。
【0077】
トークンは、ベリファイア704から質問を受信しないので、ベリファイアが本物であるかどうかを知らないことに留意されたい。したがって、トークンは、信頼できるベリファイアにトークンを提示しているユーザに依拠することができる。追加のセキュリティが所望される場合、このトークン702は、ベリファイアが有効または本物である(たとえば、ベリファイアが検証鍵VKaを知っている)かどうかを確認することができる質問をベリファイア704に要求することができる。
【0078】
使用のシナリオ
単一ファクタ認証システムでは、ユーザは、自分自身をベリファイアで認証するためにトークンを使用することができる。すなわち、適正な検証鍵を有するトークンを占有しているだけで、ユーザを認証するのに十分である。ただし、単一ファクタ認証は、物理トークンへのアクセス権を得た人は誰でも、ベリファイアによって守られているアカウント及び/または情報に不正にアクセスできるという欠点を有する。
【0079】
2ファクタ認証システムでは、より強いセキュリティを達成するために2つのセキュリティ対策を使用する。1つのそのようなファクタは、ユーザが認証の時点で供与する、セキュアなパスワード、鍵、識別子、写真識別、指紋、ボイスサンプルなどとすることができる。第2のファクタは、同じく認証の時点で提示される適正な(1つまたは複数の)検証鍵を記憶しているトークンとすることができる。
【0080】
本明細書で説明するトークンとベリファイアとの間の認証プロトコルは、手動で、自動で、またはそれらの組合せのいずれかで実行できる。いくつかの例では、ユーザは、トークンとベリファイアの仲介者として働きをすることができる。たとえば、質問及び応答(たとえば、MAC)は、ユーザがトークン及び/またはベリファイアに手動で入力することが可能な比較的短い数字、文字及び/または記号の列とすることができる。他の例では、トークンを(たとえば、ワイヤレス、ユニバーサル・シリアルバス、音声などの)インターフェースによってベリファイアに直結し、それによってそのインターフェースなどを介して認証メッセージを交換することができる。トークンとベリファイアが直接互いに通信する実装形態では、認証プロトコルは、追加のセキュリティのためにより長い質問及び応答、より多くのパズルなどを使用することができる。
【0081】
トークンの例
図8は、複数の異なるベリファイア804、806、及び808で認証するためにトークン802が複数の検証鍵をどのように記憶するかを示すブロック図である。トークン802は、限られた処理リソース及び限られた帯域幅通信インターフェースを有し、図1〜図7に示すように動作するように構成できる。いくつかの従来技術のトークンは、異なるベリファイアとの認証のための複数の公開鍵を記憶することができるが、そのような公開鍵認証システムを実装するためにかなりの処理リソース及び通信帯域幅を要求することがある。他のトークンは、セキュリティの考慮事項により、ただ1つのベリファイアで利用できる対称鍵を記憶することができる。そのような従来技術のトークンとは対照的に、このトークン802は、限られた処理リソース及び限られた帯域幅インターフェースを利用しながら複数の対称鍵を取得し、セキュアに記憶するように構成される。すなわち、トークン802は、図1〜図7に示す方法で複数の検証鍵(すなわち、対称鍵)を取得し、それによりトークン802を複数の異なるベリファイアで認証することが可能になる。詳細には、検証鍵は、トークン802、及びベリファイア804、806、808によってセキュアに生成され、トークン802とベリファイア804、806、808との間で送達または送信はされない。セキュアな方法で初期配備した後に追加の検証鍵(すなわち、対称鍵)をトークンに追加することができる。
【0082】
図9に、複数の異なるベリファイアで対称鍵を使用してセキュアな認証を実行するようにトークン上で動作可能な方法を示す。プロビジョニング段階902中に、秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングする。904(初期認証段階)において、トークンは、そのトークン識別子をベリファイアに供給することによってベリファイアとの認証を開始する。ユーザまたはトークンは、トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスをベリファイアに供給することができる。
【0083】
906において、第1の検証鍵に基づく1つまたは複数のパズル識別子とメッセージ認証コードとを含む質問メッセージをベリファイアから受信し、第1の検証鍵は、1つまたは複数のパズル識別子によって識別される1つまたは複数のパズルに関連する1つまたは複数のパズル秘密の関数である。908において、トークンは、1つまたは複数のパズル生成アルゴリズム、受信した1つまたは複数のパズル識別子、及び秘密鍵に基づいて1つまたは複数のパズル秘密を(独立して)取得する。たとえば、トークンは、パズル生成アルゴリズムへの入力として秘密鍵及び/または1つまたは複数のトークン識別子を使用して、トークン識別子に対応する1つまたは複数のパズル及び/または1つまたは複数のパズル秘密を生成することができる。910において、1つまたは複数のパズル秘密に基づいて第2の検証鍵をトークンによって生成する。912において、トークンは、第1の検証鍵と第2の検証鍵が同じであるかどうか判断するために受信したメッセージ認証コードを検証する。914において、トークンは第2の検証鍵に基づいてベリファイアへの応答を生成する。メッセージ認証コードが首尾よく検証された場合、916において、トークンは第2の検証鍵を記憶し、その第2の検証鍵をベリファイアに関連付ける。第1の検証鍵及び第2の検証鍵は、トークンとベリファイアとの間の事後認証のための対称鍵として使用される。同様の方法で、トークンは、他のベリファイアを用いて異なる対称鍵をセットアップすることができる。このようにして、単一のトークンを使用して、異なるベリファイアで使用される複数の検証鍵(すなわち、対称鍵)を記憶することができる。トークンは、他の検証鍵のセキュリティを脅かすことなしに必要に応じて異なるベリファイアの追加の検証鍵を確立することができる。
【0084】
ベリファイアの例
図10は、トークンを認証するためにヘルパーの支援を受けて対称鍵を確立するように構成されたベリファイア1002を示すブロック図である。ベリファイア1002は、かなりの処理能力をもつ処理回路1004と、トークンと通信するための低帯域幅通信インターフェース1006(たとえば、キーパッド、ワイヤレス・トランスポンダなど)と、ヘルパーと通信するための高帯域幅通信インターフェース1008と、ヘルパーから受信したパズルとトークンに関連する検証鍵とを記憶するための記憶デバイス1010とを含むことができる。ベリファイア1002は、図1〜図7に示すように動作するように構成できる。処理回路1004は、低帯域幅通信インターフェース1006を介してトークンからトークン識別子を受信し、高帯域幅通信インターフェース1008を介してヘルパーに複数のパズルを要求するように構成される。ヘルパーのコンタクト情報は、トークン、トークンのユーザ、またはデフォルトのロケーション(たとえば、インターネットアドレス、Uniform Resource Locator(URL)など)によって与えることができる。次いで、処理回路1004は、受信したパズルのうちの1つをランダムに選択し、その選択したパズルをブルート・フォース・アタックによって解読または復号する。そのようなブルート・フォース・アタックでは、処理回路1004は、パズルを首尾よく解読または復号する鍵が発見されるまで様々な可能な鍵を試みることができる。パズルを暗号化する鍵の長さ(たとえば、32ビット、64ビット、128ビットなど)はベリファイア1002に知られていてよく、それによって鍵の探索を制限することができる。
【0085】
図11に、ヘルパーの支援を受けてトークンのセキュアな認証を実行するベリファイア上で動作可能な方法を示す。1102において、(低帯域幅インターフェースを介して)トークンから認証要求をトークン識別子とともに受信する。1004において、ベリファイアは、トークンに関連するヘルパーのヘルパー・アドレスを取得する。次いで1106において、ベリファイアは、トークンに対応する複数(たとえば、数千、数十万、または数百万)のパズルをヘルパーに要求する。いくつかの実装形態では、ヘルパーによるバイアスなしに擬似ランダムに複数のパズルが選択されるように、ベリファイアは第1の擬似ランダム・ナンスをヘルパーに送信することもできる。次いで1108において、ベリファイアは、受信したパズルのうちの1つを擬似ランダムに選択し、その選択したパズルをブルート・フォース・アタックによって解いて、パズル秘密及び対応するパズル識別子を取得する。たとえば、ベリファイアは、パズルを符号化した鍵の長さを知っている場合、パズルが解かれるまで(たとえば、メッセージが首尾よく復号されるまで)すべての可能な鍵を試みることができる。次いで1110において、ベリファイアはパズル秘密を使用して検証鍵を生成する。1112において、ベリファイアは検証鍵に基づいて質問メッセージ認証コードを生成する。1114において、パズル識別子及び質問メッセージをトークンに送信する。1116において、同じ検証鍵をトークンが知っていることを証明する応答メッセージ認証コードをトークンから受信する。1118において、ベリファイアは将来の認証のために検証鍵を記憶し、その検証鍵をトークンに関連付ける。
【0086】
いくつかの実装形態では、検証鍵を生成するために(ただ1つの代わりに)複数のパズルを使用することによって追加のセキュリティを与えることができる。ベリファイアは、複数のパズルを擬似ランダムに選択して解読し、それによって複数のパズル秘密を取得することができる。次いで、複数のパズル秘密を組み合わせて検証鍵を生成することができる。
【0087】
ヘルパーの例
図12は、トークンを認証するための対称鍵を確立する際にベリファイアを支援するように構成されたヘルパー1202を示すブロック図である。ヘルパー1202は、高帯域幅通信インターフェース1206と記憶デバイス1208とに結合された処理回路1204を含むネットワーク化されたデバイスとすることができる。処理回路1204は、パズルプロビジョナからそのインターフェース1206を介して複数のパズルを受信し、その複数のパズルを記憶デバイス1208に記憶するように構成される。パズルは、パズルプロビジョナによって識別された特定のトークンに関連付けられる。処理回路1204はまた、インターフェース1206を介して1つまたは複数のベリファイアからパズルの要求を受信するように構成される。その要求は、識別されたトークンに関連する複数のパズルを取り出し、送信するために処理回路1204が使用するトークン識別子を含む。ヘルパー1202は、トークンを用いて対称鍵を確立する際にベリファイアを支援することができるが、各トークンを解読するために必要な多数のパズル及び処理リソースにより、ヘルパー1202が対称鍵を決定することは法外に重くなる。
【0088】
図13に、トークンを認証する際にベリファイアを支援するように(ネットワーク)ヘルパー上で動作可能な方法を示す。1302において、ヘルパーは、トークン識別子に関連する複数(たとえば、数千、数十万、及び/または数百万)の(符号化されたまたは符号化されない)パズルをトークン・プロビジョナから受信する。1304において、ヘルパーはそれらの複数のパズルを記憶する。1306において、ヘルパーは、トークン識別子に関連するパズルについての後続の要求をベリファイアから受信する。この要求は、ベリファイアとトークンとの間で対称鍵(すなわち、検証鍵)が確立される、ベリファイアとトークンとの間の初期認証段階中に発生することがある。1308において、ヘルパーは、トークン識別子に関連する記憶された複数のパズルのサブセットを(擬似ランダムに)選択する。次いで1310において、パズルの選択されたサブセットをベリファイアに送信する。いくつかの実装形態では、ヘルパーは、ベリファイアに送信される複数のパズルを擬似ランダムに選択するために使用するナンス(たとえば、文字または数のストリングなど)を要求元ベリファイアから受信することができる。ヘルパーはまた、複数のパズルを選択する際にナンスが利用されたという証明(たとえば、メッセージ認証コードなど)を与えることができる。これにより、ヘルパーがパズルの選択を改ざんすることが防止される。
【0089】
ヘルパーは、トークンの認証を実行する際にベリファイアを支援することはできるが、ベリファイアになりすますことが可能であってはならない。ヘルパーがそれ自体で悪意のある場合、パズルの一部を解読することに時間を費やし、それらをベリファイアに配信することのみを保証することが可能である。しかしながら、ベリファイアに、ベリファイアに送信するパズルを選択するために使用されたことをヘルパーが証明する擬似ランダム・ナンスを送信させることによって、ヘルパーによるそのような操作を防止することができる。また、トークンとベリファイアとの間の鍵確立段階でヘルパーが盗聴することができる場合、ヘルパーはそれらの間で対称鍵が確立されたことを確認することも可能である。ただし、鍵確立段階中に首尾よく通信を傍受することは起こりそうにない。
【0090】
ヘルパーが初期鍵確立を妨害しないで、代わりにいくつかの事後認証を傍受する場合、ヘルパーは、トークンとベリファイアとの間で確立された検証鍵(対称鍵)を最終的に発見するために十分な情報を取得することができる。しかしながら、これは、ヘルパーが、トークンに関連するすべてのパズルを解くことと、(検証鍵が順序付きパズル秘密のサブセットに基づく)パズル秘密の様々な組合せを試みることと、検証鍵を生成する際に使用され得た(ヘルパーに明らかにされない)ナンスを発見することとを必要とする。したがって、より強いセキュリティを達成するために、ベリファイアは、パズルのより大きいセットをヘルパーに要求し、それらのより大きいサブセットを使用して、トークンでその検証鍵を確立することができる。
【0091】
図1、図2、図3、図4、図5、図6、図7、図8、図9、図10、図11、図12、及び/または図13で示した構成要素、ステップ、及び/または機能のうちの1つまたは複数を、トークンとベリファイアとの間の認証に影響を及ぼすことなく、単一の構成要素、ステップ、または機能に再編成し及び/または組み合わせることができ、あるいは、いくつかの構成要素、ステップ、または機能で実施することができる。また、本発明から逸脱することなく追加の要素、構成要素、ステップ、及び/または機能を追加することができる。図1、図3、図8、図10、及び/または図12に示した装置、デバイス、及び/または構成要素は、図2、図4、図5、図6、図7、図9、図11、及び/または図13に記載した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成できる。本明細書に記載の新規のアルゴリズムは、ソフトウェア及び/または組込みハードウェアで効率的に実施できる。
【0092】
さらに、本明細書で開示する実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、及びアルゴリズム・ステップは、電子ハードウェア、コンピュータ・ソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、及びステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例及び全体的なシステムに課される設計制約に依存する。
【0093】
実施形態についての説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本教示は、他のタイプの装置、ならびに多くの代替形態、修正形態、及び変更形態に容易に適用できることが当業者には明らかであろう。
【特許請求の範囲】
【請求項1】
トークンを認証するためのベリファイア上で動作可能な方法であって、
トークンから認証要求及びトークン識別子を受信することと、
ネットワーク化されたヘルパーから前記トークンに対応する複数のパズルを取得することと、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くことと、
前記パズル秘密に基づいて検証鍵を生成することと、
前記検証鍵に基づいて質問メッセージを生成することと、
前記パズル識別子及び前記質問メッセージを前記トークンに送信することと、
を備える方法。
【請求項2】
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信すること、
をさらに備える請求項1に記載の方法。
【請求項3】
前記検証鍵を記憶することと、
前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けることと、
をさらに備える請求項1に記載の方法。
【請求項4】
前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得することをさらに備える請求項1に記載の方法。
【請求項5】
パズルがパズル識別子とパズル秘密とを含む符号化メッセージである請求項1に記載の方法。
【請求項6】
前記受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するために前記受信したパズルのうちのサブセット複数を解くことであって、前記検証鍵が前記パズル秘密の順序セットにも基づく、解くことと、
パズル秘密の前記順序セットに対応する前記パズル識別子の順序セットを前記質問メッセージとともに前記トークンに送信することと、
をさらに備える請求項1に記載の方法。
【請求項7】
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記トークンによって維持されるカウンタにローカル・カウンタを同期させることであって、事後認証質問メッセージが現在のカウンタ値にも基づく、同期させること、
をさらに備える請求項1に記載の方法。
【請求項8】
前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信すること、
をさらに備える請求項7に記載の方法。
【請求項9】
タイムスタンプを生成するためのタイマを維持することであって、事後認証質問メッセージが現在のタイムスタンプにも基づく、維持することをさらに備える請求項1に記載の方法。
【請求項10】
前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することをさらに備える請求項9に記載の方法。
【請求項11】
前記選択されたパズルを解くことが、前記パズルを復号するための鍵を発見するためにブルート・フォース・アタックを実行することを含む請求項1に記載の方法。
【請求項12】
前記質問メッセージがメッセージ認証コードである請求項1に記載の方法。
【請求項13】
擬似ランダム・ナンスを生成することと、
前記トークンに対応するより多数のパズルの中から前記複数のパズルを取得する際に使用すべき前記ヘルパーに前記擬似ランダム・ナンスを送信することと、
をさらに備える請求項1に記載の方法。
【請求項14】
トークンを認証するための検証デバイスであって、
ネットワークに対する高帯域幅を有する第1の通信インターフェースと、
トークンと通信するための低帯域幅を有する第2の通信インターフェースと、
前記第1の通信インターフェース及び前記第2の通信インターフェースに結合された処理回路であって、
前記第2の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信すること、
前記第1の通信インターフェースを介してヘルパーから前記トークンに対応する複数のパズルを取得すること、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くこと、
前記パズル秘密に基づいて検証鍵を生成すること、
前記検証鍵に基づいて質問メッセージを生成すること、ならびに
前記第2の通信インターフェースを介して前記パズル識別子及び前記質問メッセージを前記トークンに送信すること
を行うように構成された処理回路と、
を備える検証デバイス。
【請求項15】
前記処理回路が、
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記検証デバイスが前記トークンを認証する、受信することを行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項16】
前記処理回路に結合された、前記検証鍵を記憶するための記憶デバイスをさらに備え、
前記処理回路が、前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けるようにさらに構成された請求項14に記載の検証デバイス。
【請求項17】
前記処理回路が、前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得するようにさらに構成された請求項14に記載の検証デバイス。
【請求項18】
前記処理回路が、
前記受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するために前記受信したパズルのうちのサブセット複数を解くことであって、前記検証鍵が前記パズル秘密の順序セットにも基づく、解くことと、
パズル秘密の前記順序セットに対応する前記パズル識別子の順序セットを前記質問メッセージとともに前記トークンに送信することと、
を行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項19】
前記処理回路が、
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記トークンによって維持されるカウンタにローカル・カウンタを同期させることであって、事後認証質問メッセージが現在のカウンタ値にも基づく、同期させることと、
前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のカウンタ値を独立して知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することと、
を行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項20】
前記処理回路が、
タイムスタンプを生成するタイマを維持することであって、事後認証質問メッセージが現在のタイムスタンプにも基づく、維持することと、
前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のタイムスタンプを独立して知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することと、
を行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項21】
トークンを認証するための検証デバイスであって、
トークンから認証要求及びトークン識別子を受信するための手段と、
ネットワーク化されたヘルパーから前記トークンに対応する複数のパズルを取得するための手段と、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くための手段と、
前記パズル秘密に基づいて検証鍵を生成するための手段と、
前記検証鍵に基づいて質問メッセージを生成するための手段と、
前記パズル識別子及び前記質問メッセージを前記トークンに送信するための手段と、
を備える検証デバイス。
【請求項22】
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信するための手段であって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信するための手段をさらに備える請求項21に記載の検証デバイス。
【請求項23】
前記検証鍵を記憶するための手段と、
前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けるための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項24】
前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得するための手段
をさらに備える請求項21に記載の検証デバイス。
【請求項25】
前記受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するために前記受信したパズルのうちのサブセット複数を解くための手段であって、前記検証鍵が前記パズル秘密の順序セットにも基づく、解くための手段と、
パズル秘密の前記順序セットに対応する前記パズル識別子の順序セットを前記質問メッセージとともに前記トークンに送信するための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項26】
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記トークンによって維持されるカウンタにローカル・カウンタを同期させるための手段であって、事後認証質問メッセージが現在のカウンタ値にも基づく、同期させるための手段と、
前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを証明する応答メッセージを前記トークンから受信するための手段であって、前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信するための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項27】
タイムスタンプを生成するタイマを維持するための手段であって、事後認証質問メッセージが現在のタイムスタンプにも基づく、維持するための手段と、
前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを証明する応答メッセージを前記トークンから受信するための手段であって、前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信するための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項28】
第1の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信することと、
第2の通信インターフェースを介してヘルパーから前記トークンに対応する複数のパズルを取得することと、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くことと、
前記パズル秘密に基づいて検証鍵を生成することと、
前記検証鍵に基づいて質問メッセージを生成することと、
前記第1の通信インターフェースを介して前記パズル識別子及び前記質問メッセージを前記トークンに送信することと、
を行うように構成された処理回路
を備える処理デバイス。
【請求項29】
前記処理回路に結合された、前記検証鍵を記憶するための記憶デバイス
をさらに備え、
前記処理回路が、前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けるようにさらに構成された請求項28に記載の処理デバイス。
【請求項30】
前記処理回路が、前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得するようにさらに構成された請求項28に記載の処理デバイス。
【請求項31】
ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、前記プロセッサに、
ネットワーク化されたヘルパーから前記トークンに対応する複数のパズルを取得することと、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くことと、
前記パズル秘密に基づいて検証鍵を生成することと、
前記検証鍵に基づいて質問メッセージを生成することと、
前記パズル識別子及び前記質問メッセージを前記トークンに送信することと、
を行わせる1つまたは複数の命令を有する機械可読媒体。
【請求項32】
プロセッサによって実行されたとき、前記プロセッサに、
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することをさらに行わせる1つまたは複数の命令を有する請求項31に記載の機械可読媒体。
【請求項33】
プロセッサによって実行されたとき、前記プロセッサに、
前記検証鍵を記憶することと、
前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けることと、
をさらに行わせる1つまたは複数の命令を有する請求項31に記載の機械可読媒体。
【請求項34】
ベリファイアに対してトークンを認証するための前記トークン上で動作可能な方法であって、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングすることと、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始することと、
第1の検証鍵に基づく1つまたは複数のパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記1つまたは複数のパズル識別子によって識別される1つまたは複数のパズルに関連する1つまたは複数のパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信した1つまたは複数のパズル識別子、及び前記秘密鍵に基づいて前記1つまたは複数のパズル秘密を独立して取得することと、
前記1つまたは複数のパズル秘密に基づいて第2の検証鍵を生成することと、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証することと、
を備える方法。
【請求項35】
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けることをさらに備える請求項34に記載の方法。
【請求項36】
前記第2の検証鍵に基づいて、前記トークンが前記第1の検証鍵を知っていることを示す、前記ベリファイアへの応答メッセージを生成することをさらに備える請求項34に記載の方法。
【請求項37】
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給することをさらに備える請求項34に記載の方法。
【請求項38】
前記ベリファイアから複数の順序付きパズル識別子を受信することであって、前記第1の検証鍵が、前記複数の順序付きパズル識別子に関連する対応する複数の順序付きパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記複数の順序付きパズル秘密を取得することであって、前記第1の検証鍵及び前記第2の検証鍵が前記複数の順序付きパズル秘密にも基づく、取得することと、
をさらに備える請求項34に記載の方法。
【請求項39】
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記ベリファイアによって維持されるカウンタにローカル・カウンタを同期させることであって、後続の受信したメッセージ認証コードが現在のカウンタ値にも基づく、同期させること、
をさらに備える請求項34に記載の方法。
【請求項40】
前記トークンが前記検証鍵と前記現在のカウンタ値とを知っていることを証明する応答メッセージを前記ベリファイアに送信すること、
をさらに備える請求項39に記載の方法。
【請求項41】
タイムスタンプを生成するためのタイマを維持することであって、後続の受信したメッセージ認証コードが現在のタイムスタンプにも基づく、維持すること、
をさらに備える請求項34に記載の方法。
【請求項42】
前記トークンが前記検証鍵と前記現在のタイムスタンプとを知っていることを証明する応答メッセージを前記ベリファイアに送信することをさらに備える請求項41に記載の方法。
【請求項43】
異なるベリファイアを用いて複数のセキュアな検証鍵を確立することと、
前記検証鍵を記憶し、前記トークンと前記異なるベリファイアとの間の対称鍵認証として使用するために前記検証鍵の各々を対応するベリファイアに関連付けることと、
をさらに備える請求項34に記載の方法。
【請求項44】
ベリファイアと通信するための低帯域幅を有する第1の通信インターフェースと、
前記第1の通信インターフェースに結合された処理回路であって、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信すること、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始すること、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信すること、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得すること、
前記パズル秘密に基づいて第2の検証鍵を生成すること、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証すること、
を行うように構成された処理回路と、
を備えるトークン。
【請求項45】
前記処理回路に結合され、前記第2の検証鍵を記憶するように構成された記憶デバイスであって、前記処理回路が、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けるように構成された、記憶デバイス
をさらに備える請求項44に記載のトークン。
【請求項46】
前記処理回路が、
異なるベリファイアを用いて複数のセキュアな検証鍵を確立することと、
前記検証鍵を記憶し、前記トークンと前記異なるベリファイアとの間の対称鍵認証として使用するために前記検証鍵の各々を対応するベリファイアに関連付けることと
を行うようにさらに構成された請求項44に記載のトークン。
【請求項47】
前記処理回路が、
前記第2の検証鍵に基づいて、前記トークンが前記第1の検証鍵を知っていることを示す、前記ベリファイアへの応答メッセージを生成すること
を行うようにさらに構成された請求項44に記載のトークン。
【請求項48】
前記処理回路が、
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給すること
を行うようにさらに構成された請求項44に記載のトークン。
【請求項49】
ベリファイアで認証するためのトークンであって、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングするための手段と、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始するための手段と、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信するための手段であって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信するための手段と、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得するための手段と、
前記パズル秘密に基づいて第2の検証鍵を生成するための手段と、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証するための手段と、
を備えるトークン。
【請求項50】
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けるための手段をさらに備える請求項49に記載のトークン。
【請求項51】
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給するための手段をさらに備える請求項49に記載のトークン。
【請求項52】
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信することと、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始することと、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得することと、
前記パズル秘密に基づいて第2の検証鍵を生成することと、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証することと、
を行うように構成された処理回路
を備える処理デバイス。
【請求項53】
前記処理回路が、
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けること
を行うようにさらに構成された請求項52に記載の処理デバイス。
【請求項54】
前記処理回路が、
前記第2の検証鍵に基づいて、前記トークンが前記第1の検証鍵を知っていることを示す、前記ベリファイアへの応答メッセージを生成することを行うようにさらに構成された請求項52に記載の処理デバイス。
【請求項55】
ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、前記プロセッサに、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングすることと、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始することと、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得することと、
前記パズル秘密に基づいて第2の検証鍵を生成することと、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証することと、
を行わせる1つまたは複数の命令を有する機械可読媒体。
【請求項56】
プロセッサによって実行されたとき、前記プロセッサに、
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けることをさらに行わせる1つまたは複数の命令を有する請求項55に記載の機械可読媒体。
【請求項57】
プロセッサによって実行されたとき、前記プロセッサに、
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給することをさらに行わせる1つまたは複数の命令を有する請求項55に記載の機械可読媒体。
【請求項1】
トークンを認証するためのベリファイア上で動作可能な方法であって、
トークンから認証要求及びトークン識別子を受信することと、
ネットワーク化されたヘルパーから前記トークンに対応する複数のパズルを取得することと、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くことと、
前記パズル秘密に基づいて検証鍵を生成することと、
前記検証鍵に基づいて質問メッセージを生成することと、
前記パズル識別子及び前記質問メッセージを前記トークンに送信することと、
を備える方法。
【請求項2】
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信すること、
をさらに備える請求項1に記載の方法。
【請求項3】
前記検証鍵を記憶することと、
前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けることと、
をさらに備える請求項1に記載の方法。
【請求項4】
前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得することをさらに備える請求項1に記載の方法。
【請求項5】
パズルがパズル識別子とパズル秘密とを含む符号化メッセージである請求項1に記載の方法。
【請求項6】
前記受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するために前記受信したパズルのうちのサブセット複数を解くことであって、前記検証鍵が前記パズル秘密の順序セットにも基づく、解くことと、
パズル秘密の前記順序セットに対応する前記パズル識別子の順序セットを前記質問メッセージとともに前記トークンに送信することと、
をさらに備える請求項1に記載の方法。
【請求項7】
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記トークンによって維持されるカウンタにローカル・カウンタを同期させることであって、事後認証質問メッセージが現在のカウンタ値にも基づく、同期させること、
をさらに備える請求項1に記載の方法。
【請求項8】
前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信すること、
をさらに備える請求項7に記載の方法。
【請求項9】
タイムスタンプを生成するためのタイマを維持することであって、事後認証質問メッセージが現在のタイムスタンプにも基づく、維持することをさらに備える請求項1に記載の方法。
【請求項10】
前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することをさらに備える請求項9に記載の方法。
【請求項11】
前記選択されたパズルを解くことが、前記パズルを復号するための鍵を発見するためにブルート・フォース・アタックを実行することを含む請求項1に記載の方法。
【請求項12】
前記質問メッセージがメッセージ認証コードである請求項1に記載の方法。
【請求項13】
擬似ランダム・ナンスを生成することと、
前記トークンに対応するより多数のパズルの中から前記複数のパズルを取得する際に使用すべき前記ヘルパーに前記擬似ランダム・ナンスを送信することと、
をさらに備える請求項1に記載の方法。
【請求項14】
トークンを認証するための検証デバイスであって、
ネットワークに対する高帯域幅を有する第1の通信インターフェースと、
トークンと通信するための低帯域幅を有する第2の通信インターフェースと、
前記第1の通信インターフェース及び前記第2の通信インターフェースに結合された処理回路であって、
前記第2の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信すること、
前記第1の通信インターフェースを介してヘルパーから前記トークンに対応する複数のパズルを取得すること、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くこと、
前記パズル秘密に基づいて検証鍵を生成すること、
前記検証鍵に基づいて質問メッセージを生成すること、ならびに
前記第2の通信インターフェースを介して前記パズル識別子及び前記質問メッセージを前記トークンに送信すること
を行うように構成された処理回路と、
を備える検証デバイス。
【請求項15】
前記処理回路が、
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記検証デバイスが前記トークンを認証する、受信することを行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項16】
前記処理回路に結合された、前記検証鍵を記憶するための記憶デバイスをさらに備え、
前記処理回路が、前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けるようにさらに構成された請求項14に記載の検証デバイス。
【請求項17】
前記処理回路が、前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得するようにさらに構成された請求項14に記載の検証デバイス。
【請求項18】
前記処理回路が、
前記受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するために前記受信したパズルのうちのサブセット複数を解くことであって、前記検証鍵が前記パズル秘密の順序セットにも基づく、解くことと、
パズル秘密の前記順序セットに対応する前記パズル識別子の順序セットを前記質問メッセージとともに前記トークンに送信することと、
を行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項19】
前記処理回路が、
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記トークンによって維持されるカウンタにローカル・カウンタを同期させることであって、事後認証質問メッセージが現在のカウンタ値にも基づく、同期させることと、
前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のカウンタ値を独立して知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することと、
を行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項20】
前記処理回路が、
タイムスタンプを生成するタイマを維持することであって、事後認証質問メッセージが現在のタイムスタンプにも基づく、維持することと、
前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵及び前記現在のタイムスタンプを独立して知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することと、
を行うようにさらに構成された請求項14に記載の検証デバイス。
【請求項21】
トークンを認証するための検証デバイスであって、
トークンから認証要求及びトークン識別子を受信するための手段と、
ネットワーク化されたヘルパーから前記トークンに対応する複数のパズルを取得するための手段と、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くための手段と、
前記パズル秘密に基づいて検証鍵を生成するための手段と、
前記検証鍵に基づいて質問メッセージを生成するための手段と、
前記パズル識別子及び前記質問メッセージを前記トークンに送信するための手段と、
を備える検証デバイス。
【請求項22】
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信するための手段であって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信するための手段をさらに備える請求項21に記載の検証デバイス。
【請求項23】
前記検証鍵を記憶するための手段と、
前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けるための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項24】
前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得するための手段
をさらに備える請求項21に記載の検証デバイス。
【請求項25】
前記受信したパズルのうちのサブセット複数を擬似ランダムに選択し、複数のパズル秘密及び対応するパズル識別子を取得するために前記受信したパズルのうちのサブセット複数を解くための手段であって、前記検証鍵が前記パズル秘密の順序セットにも基づく、解くための手段と、
パズル秘密の前記順序セットに対応する前記パズル識別子の順序セットを前記質問メッセージとともに前記トークンに送信するための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項26】
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記トークンによって維持されるカウンタにローカル・カウンタを同期させるための手段であって、事後認証質問メッセージが現在のカウンタ値にも基づく、同期させるための手段と、
前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを証明する応答メッセージを前記トークンから受信するための手段であって、前記トークンが前記検証鍵及び前記現在のカウンタ値を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信するための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項27】
タイムスタンプを生成するタイマを維持するための手段であって、事後認証質問メッセージが現在のタイムスタンプにも基づく、維持するための手段と、
前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを証明する応答メッセージを前記トークンから受信するための手段であって、前記トークンが前記検証鍵及び前記現在のタイムスタンプを知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信するための手段と、
をさらに備える請求項21に記載の検証デバイス。
【請求項28】
第1の通信インターフェースを介してトークンから認証要求及びトークン識別子を受信することと、
第2の通信インターフェースを介してヘルパーから前記トークンに対応する複数のパズルを取得することと、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くことと、
前記パズル秘密に基づいて検証鍵を生成することと、
前記検証鍵に基づいて質問メッセージを生成することと、
前記第1の通信インターフェースを介して前記パズル識別子及び前記質問メッセージを前記トークンに送信することと、
を行うように構成された処理回路
を備える処理デバイス。
【請求項29】
前記処理回路に結合された、前記検証鍵を記憶するための記憶デバイス
をさらに備え、
前記処理回路が、前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けるようにさらに構成された請求項28に記載の処理デバイス。
【請求項30】
前記処理回路が、前記トークンに関連する前記ヘルパーのヘルパー・アドレスを取得するようにさらに構成された請求項28に記載の処理デバイス。
【請求項31】
ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、前記プロセッサに、
ネットワーク化されたヘルパーから前記トークンに対応する複数のパズルを取得することと、
前記パズルのうちの1つを擬似ランダムに選択し、パズル秘密及び対応するパズル識別子を取得するために前記パズルのうちの1つを解くことと、
前記パズル秘密に基づいて検証鍵を生成することと、
前記検証鍵に基づいて質問メッセージを生成することと、
前記パズル識別子及び前記質問メッセージを前記トークンに送信することと、
を行わせる1つまたは複数の命令を有する機械可読媒体。
【請求項32】
プロセッサによって実行されたとき、前記プロセッサに、
前記トークンが前記検証鍵を知っていることを証明する応答メッセージを前記トークンから受信することであって、前記トークンが前記検証鍵を知っていることを前記応答メッセージが首尾よく証明するならば、前記ベリファイアが前記トークンを認証する、受信することをさらに行わせる1つまたは複数の命令を有する請求項31に記載の機械可読媒体。
【請求項33】
プロセッサによって実行されたとき、前記プロセッサに、
前記検証鍵を記憶することと、
前記トークンと前記ベリファイアとの間の事後認証における対称鍵として使用するために前記検証鍵を前記トークン識別子に関連付けることと、
をさらに行わせる1つまたは複数の命令を有する請求項31に記載の機械可読媒体。
【請求項34】
ベリファイアに対してトークンを認証するための前記トークン上で動作可能な方法であって、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングすることと、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始することと、
第1の検証鍵に基づく1つまたは複数のパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記1つまたは複数のパズル識別子によって識別される1つまたは複数のパズルに関連する1つまたは複数のパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信した1つまたは複数のパズル識別子、及び前記秘密鍵に基づいて前記1つまたは複数のパズル秘密を独立して取得することと、
前記1つまたは複数のパズル秘密に基づいて第2の検証鍵を生成することと、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証することと、
を備える方法。
【請求項35】
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けることをさらに備える請求項34に記載の方法。
【請求項36】
前記第2の検証鍵に基づいて、前記トークンが前記第1の検証鍵を知っていることを示す、前記ベリファイアへの応答メッセージを生成することをさらに備える請求項34に記載の方法。
【請求項37】
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給することをさらに備える請求項34に記載の方法。
【請求項38】
前記ベリファイアから複数の順序付きパズル識別子を受信することであって、前記第1の検証鍵が、前記複数の順序付きパズル識別子に関連する対応する複数の順序付きパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記複数の順序付きパズル秘密を取得することであって、前記第1の検証鍵及び前記第2の検証鍵が前記複数の順序付きパズル秘密にも基づく、取得することと、
をさらに備える請求項34に記載の方法。
【請求項39】
前記トークンと前記ベリファイアとの間の認証が実行されるたびにトラッキングするために前記ベリファイアによって維持されるカウンタにローカル・カウンタを同期させることであって、後続の受信したメッセージ認証コードが現在のカウンタ値にも基づく、同期させること、
をさらに備える請求項34に記載の方法。
【請求項40】
前記トークンが前記検証鍵と前記現在のカウンタ値とを知っていることを証明する応答メッセージを前記ベリファイアに送信すること、
をさらに備える請求項39に記載の方法。
【請求項41】
タイムスタンプを生成するためのタイマを維持することであって、後続の受信したメッセージ認証コードが現在のタイムスタンプにも基づく、維持すること、
をさらに備える請求項34に記載の方法。
【請求項42】
前記トークンが前記検証鍵と前記現在のタイムスタンプとを知っていることを証明する応答メッセージを前記ベリファイアに送信することをさらに備える請求項41に記載の方法。
【請求項43】
異なるベリファイアを用いて複数のセキュアな検証鍵を確立することと、
前記検証鍵を記憶し、前記トークンと前記異なるベリファイアとの間の対称鍵認証として使用するために前記検証鍵の各々を対応するベリファイアに関連付けることと、
をさらに備える請求項34に記載の方法。
【請求項44】
ベリファイアと通信するための低帯域幅を有する第1の通信インターフェースと、
前記第1の通信インターフェースに結合された処理回路であって、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信すること、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始すること、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信すること、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得すること、
前記パズル秘密に基づいて第2の検証鍵を生成すること、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証すること、
を行うように構成された処理回路と、
を備えるトークン。
【請求項45】
前記処理回路に結合され、前記第2の検証鍵を記憶するように構成された記憶デバイスであって、前記処理回路が、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けるように構成された、記憶デバイス
をさらに備える請求項44に記載のトークン。
【請求項46】
前記処理回路が、
異なるベリファイアを用いて複数のセキュアな検証鍵を確立することと、
前記検証鍵を記憶し、前記トークンと前記異なるベリファイアとの間の対称鍵認証として使用するために前記検証鍵の各々を対応するベリファイアに関連付けることと
を行うようにさらに構成された請求項44に記載のトークン。
【請求項47】
前記処理回路が、
前記第2の検証鍵に基づいて、前記トークンが前記第1の検証鍵を知っていることを示す、前記ベリファイアへの応答メッセージを生成すること
を行うようにさらに構成された請求項44に記載のトークン。
【請求項48】
前記処理回路が、
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給すること
を行うようにさらに構成された請求項44に記載のトークン。
【請求項49】
ベリファイアで認証するためのトークンであって、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングするための手段と、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始するための手段と、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信するための手段であって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信するための手段と、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得するための手段と、
前記パズル秘密に基づいて第2の検証鍵を生成するための手段と、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証するための手段と、
を備えるトークン。
【請求項50】
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けるための手段をさらに備える請求項49に記載のトークン。
【請求項51】
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給するための手段をさらに備える請求項49に記載のトークン。
【請求項52】
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムを受信することと、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始することと、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得することと、
前記パズル秘密に基づいて第2の検証鍵を生成することと、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証することと、
を行うように構成された処理回路
を備える処理デバイス。
【請求項53】
前記処理回路が、
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けること
を行うようにさらに構成された請求項52に記載の処理デバイス。
【請求項54】
前記処理回路が、
前記第2の検証鍵に基づいて、前記トークンが前記第1の検証鍵を知っていることを示す、前記ベリファイアへの応答メッセージを生成することを行うようにさらに構成された請求項52に記載の処理デバイス。
【請求項55】
ベリファイアに対してトークンを認証するための1つまたは複数の命令であって、プロセッサによって実行されたとき、前記プロセッサに、
秘密鍵、トークン識別子、及び1つまたは複数のパズル生成アルゴリズムをトークンにプロビジョニングすることと、
前記トークン識別子をベリファイアに供給することによって前記トークンの認証を開始することと、
第1の検証鍵に基づくパズル識別子とメッセージ認証コードとを含む質問メッセージを前記ベリファイアから受信することであって、前記第1の検証鍵が、前記パズル識別子によって識別されるパズルに関連する第1のパズル秘密の関数である、受信することと、
前記1つまたは複数のパズル生成アルゴリズム、前記受信したパズル識別子、及び前記秘密鍵に基づいて前記第1のパズル秘密を独立して取得することと、
前記パズル秘密に基づいて第2の検証鍵を生成することと、
前記第1の検証鍵と前記第2の検証鍵が同じであるかどうか判断するために前記受信したメッセージ認証コードを検証することと、
を行わせる1つまたは複数の命令を有する機械可読媒体。
【請求項56】
プロセッサによって実行されたとき、前記プロセッサに、
前記第2の検証鍵を記憶し、前記第1の検証鍵と前記第2の検証鍵が同じである場合、前記第2の検証鍵を前記ベリファイアに関連付けることをさらに行わせる1つまたは複数の命令を有する請求項55に記載の機械可読媒体。
【請求項57】
プロセッサによって実行されたとき、前記プロセッサに、
前記トークンに関連する複数のパズルを記憶しているヘルパーのヘルパー・アドレスを前記トークンから前記ベリファイアに供給することをさらに行わせる1つまたは複数の命令を有する請求項55に記載の機械可読媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2011−521548(P2011−521548A)
【公表日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願番号】特願2011−508643(P2011−508643)
【出願日】平成21年5月6日(2009.5.6)
【国際出願番号】PCT/US2009/043040
【国際公開番号】WO2009/137621
【国際公開日】平成21年11月12日(2009.11.12)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】
【公表日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願日】平成21年5月6日(2009.5.6)
【国際出願番号】PCT/US2009/043040
【国際公開番号】WO2009/137621
【国際公開日】平成21年11月12日(2009.11.12)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】
[ Back to top ]