(57)【要約】  複数のユーザ用の認証シードを生成する方法であって、単一のマスタシードに基づいて複数の派生シードを生成し、各々が複数のユーザの対応する異なるもの用であり、検証器に複数の派生シードを配布し、その検証器に複数のユーザの各々を別個に認証させる際に使用し、前記複数の派生シードの各々を生成することが、対応するユーザを識別する一意的識別子とマスタシードを数学的に組み合わせることを含む方法。  【選択図】  図１
2008538264.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアント側エンティティ用の認証シードを生成する方法であって、単一のマスタシードに基づいて複数の派生シードを生成し、各々が複数のクライアント側エンティティの対応する異なるもの用であり、前記複数の派生シードの各々を生成することが、対応するクライアント側エンティティを識別する一意的識別子とマスタシードを数学的に組み合わせることを含む方法。
【請求項２】
複数のクライアント側エンティティが、複数のユーザである請求項１記載の方法。
【請求項３】
さらに、検証器に複数の派生シードを配布し、複数のクライアント側エンティティを各々その検証器に別個に認証させる際に使用することを含む請求項１記載の方法。
【請求項４】
さらに、マスタシードを生成し、
複数のクライアント側エンティティの各々の対応する一意的識別子を受け取ることを含む請求項１記載の方法。
【請求項５】
さらに、マスタシード生成器からマスタシードを受け取り、
複数のクライアント側エンティティの各々の対応する一意的識別子を受け取ることを含む請求項１記載の方法。
【請求項６】
受け取ることが、複数のクライアント側エンティティの各々の一意的識別子を検証器から受け取ることを含む請求項４記載の方法。
【請求項７】
トークン装置上に前記方法を実装し、派生シードを発生させるクライアント側エンティティが検証器に認証を求める際に、複数の派生シードを各々生成することが行われる請求項１記載の方法。
【請求項８】
さらに、複数のクライアント側エンティティの一つがアクセスを求めるサーバを識別する一意的識別子を受け取ることを含み、前記クライアント側エンティティ用の派生シードを生成することが、マスタシード、そのクライアント側エンティティを識別する一意的識別子、およびサーバを識別する一意的識別子を数学的に組み合わせることを含む請求項１記載の方法。
【請求項９】
数学的に組み合わせることが、鍵派生関数を用いることを含む請求項１記載の方法。
【請求項１０】
鍵派生関数が、反復関数を含む請求項９記載の方法。
【請求項１１】
鍵派生関数がマスタシードから派生させた値と、複数のクライアント側エンティティの選択したものを識別する一意的識別子の一つを入力として取る請求項９記載の方法。
【請求項１２】
マスタシードから派生させた値が、マスタシードである請求項１１記載の方法。
【請求項１３】
マスタシードから派生させた値が、少なくとも一つの他の識別子とマスタシードを数学的に組み合わせることによって生成される請求項１１記載の方法。
【請求項１４】
単一のマスタシードを用いて、複数のクライアント側エンティティの任意の選択可能なものを検証器に認証させる方法であって、前記複数のクライアント側エンティティが各々異なる一意的識別子によって識別され、
前記任意の選択可能なクライアント側エンティティ用の一意的識別子とマスタシードを数学的に組み合わせて、前記任意の選択可能なクライアント側エンティティ用の派生シードを生成し、
前記任意の選択可能なクライアント側エンティティ用に生成した派生シードを用いて、前記任意の選択可能なクライアント側エンティティを検証器に認証させる方法。
【請求項１５】
複数のクライアント側エンティティが、複数のユーザである請求項１４記載の方法。
【請求項１６】
前記任意の選択可能なユーザ用の派生シードを用いることが、前記任意の選択可能なユーザ用の派生シードから計算した値を検証器に送ることを含む請求項１５記載の方法。
【請求項１７】
前記任意の選択可能なクライアント側エンティティ用の一意的識別子とマスタシードを数学的に組み合わせることが、検証器とクライアント側エンティティによって共有された秘密を利用する関数を用いることを含む請求項１４記載の方法。
【請求項１８】
前記任意の選択可能なクライアント側エンティティ用に生成した派生シードを用いて、前記任意の選択可能なクライアント側エンティティを検証器に認証させることが、時間ベースの認証アルゴリズム、チャレンジ応答認証アルゴリズム、カウンタベースの認証アルゴリズム、およびイベント同期認証アルゴリズムからなるグループから選択した認証アルゴリズムを用いることを含む請求項１７記載の方法。
【請求項１９】
前記任意の選択可能なクライアント側エンティティ用の一意的識別子とマスタシードを数学的に組み合わせることが、ハッシュ関数、ブロック暗号関数、ストリーム暗号関数、およびメッセージ認証コード関数からなる関数のグループから選択した関数を用いることを含む請求項１４記載の方法。
【請求項２０】
数学的に組み合わせることが、鍵派生関数を用いることを含む請求項１４記載の方法。
【請求項２１】
鍵派生関数が、反復関数を含む請求項１９記載の方法。
【請求項２２】
鍵派生関数がマスタシードから派生させた値と、複数のクライアント側エンティティを識別する一意的識別子の一つを入力として取る請求項１９記載の方法。
【請求項２３】
マスタシードから派生させた値が、マスタシードである請求項２１記載の方法。
【請求項２４】
一つ以上のクライアント側エンティティ用の認証シードを生成し、それらが一つ以上のサーバ側エンティティに別個に認証可能にする方法であって、単一のマスタシードから複数の派生シードを生成し、前記複数の派生シードの各々を生成することが、対応する異なる複数の一意的識別子とマスタシードを数学的に組み合わせ、対応する異なる複数の一意的識別子の各々の一意的識別子が異なるエンティティを識別する方法。
【請求項２５】
さらに、前記一つ以上のサーバ側エンティティに複数の派生シードを配布し、ユーザが複数の派生シードの適切なものを用いることによって、それらの一つ以上のサーバ側エンティティに認証可能にする請求項２４記載の方法。
【請求項２６】
一人以上のユーザが複数のユーザであり、対応する異なる複数の識別子の各々の少なくとも一つの一意的識別子が、複数のユーザ内の対応する異なるユーザを識別する請求項２４記載の方法。
【請求項２７】
一つ以上のサーバ側エンティティが複数のサーバ側エンティティであり、対応する異なる複数の識別子の各々の少なくとも一つの一意的識別子が、複数のサーバ側エンティティ内の対応する異なるサーバ側エンティティのユーザを識別する請求項２４記載の方法。
【請求項２８】
数学的に組み合わせることが、鍵派生関数を用いることを含む請求項２４記載の方法。
【請求項２９】
鍵派生関数が、反復関数を含む請求項２７記載の方法。
【請求項３０】
鍵派生関数がマスタシードから派生させた値と、複数のクライアント側エンティティを識別する一意的識別子の一つを入力として取る請求項２７記載の方法。
【請求項３１】
マスタシードから派生させた値が、マスタシードである請求項３０記載の方法。
【請求項３２】
複数の異なる第一エンティティを第二エンティティに認証させるためのトークン内に実装する方法であって、
トークン内にマスタシードを格納し、
前記複数の第一エンティティの任意の一つが第二エンティティに認証を求めるとき、（１）その第一エンティティに提供された一意的識別子とマスタシードを数学的に組み合わせ、その第一エンティティ用の派生シードを生成し、（２）その第一エンティティ用の派生シードを用いて第二エンティティに認証させることを含む方法。
【請求項３３】
トークンが、ハードウェア装置内に実装される請求項３２記載の方法。
【請求項３４】
トークンが、ソフトウェア内に実装される請求項３２記載の方法。
【請求項３５】
その第一エンティティ用の派生シードを用いて第二エンティティに認証させることが、第二エンティティとその第一エンティティによって共有された秘密を利用する認証アルゴリズムを用いることを含む請求項３２記載の方法。
【請求項３６】
その第一エンティティ用の派生シードを用いて第二エンティティに認証させることが、時間ベースの認証アルゴリズム、チャレンジ応答認証アルゴリズム、カウンタベースの認証アルゴリズム、およびイベント同期認証アルゴリズムからなるグループから選択した認証アルゴリズムを用いることを含む請求項３２記載の方法。
【請求項３７】
さらに（３）その第一エンティティを第二エンティティに認証させた後、その第一エンティティ用の派生シードを消去することを含む請求項３２記載の方法。
【請求項３８】
マスタシードを格納するユーザ装置を備えたユーザが、クライアント側装置を介してネットワーク上の別のエンティティに認証させる前記ネットワーク内で使用する方法であって、
ネットワークに接続したサーバ内で、クライアント側装置を識別する一意的識別子をクライアント側装置から受け取り、
サーバ内で、クライアント装置用の一意的識別子と秘密を数学的に組み合わせて派生シードを生成し、前記秘密がマスタシードから導かれ、
サーバからクライアント側装置に派生シードを送ることを含む方法。
【請求項３９】
クライアント側装置が、中間サーバである請求項３８記載の方法。
【請求項４０】
さらにクライアント側装置において、
派生シードを受け取り、
派生シードを受け取った後、ネットワークからクライアント側装置を切断することを含む請求項３８記載の方法。
【請求項４１】
さらに、ユーザ装置内で、
クライアント側装置用の一意的識別子を受け取り、
少なくとも一意的識別子とマスタシードを数学的に組み合わせて派生シードを生成し、
クライアント側装置がネットワークから切断されている間、派生シードを用いてクライアント側装置にユーザ装置を認証させることを含む請求項３８記載の方法。
【請求項４２】
秘密が、マスタシードである請求項３８記載の方法。
【請求項４３】
秘密が、一つ以上の他の識別子とマスタシードを数学的に組み合わせることによって生成した派生シードである請求項３８記載の方法。
【請求項４４】
ユーザがクライアント側装置を介して、ネットワーク上の別のエンティティに認証させる前記ネットワーク上のクライアント側装置によって実装する方法であって、
クライアント側装置を識別する一意的識別子をネットワークの他のエンティティに送り、
他のエンティティから派生シードを受け取り、前記派生シードがクライアント側装置用の一意的識別子と秘密を数学的に組み合わせることによって生成され、前記秘密がマスタシードに基づき、
ネットワークから切断し、
ユーザを認証するためにクライアント側装置用の一意的識別子をユーザ装置に送り、
クライアント側装置用の一意的識別子をユーザ装置に送った後、ユーザ装置が派生シードを所有することを示す情報をユーザ装置から受け取る方法。
【請求項４５】
ユーザ装置が派生シードを所有することを示す情報をユーザ装置から受け取るステップの前に、ユーザ装置が派生シードに応じて認証コードを生成し、前記ユーザ装置からの情報が認証コードである請求項４４記載の方法。
【請求項４６】
秘密が、マスタシードから数学的に計算される請求項４４記載の方法。
【請求項４７】
サーバサイトにおいて複数のユーザを認証する方法であって、
単一のマスタシードから全て計算した複数の派生シードを格納し、前記複数の派生シードが各々複数のエンティティの対応する異なるもの用であり、前記複数のシードの各派生シードが対応するエンティティ用の一意的識別子とマスタシードを数学的に組み合わせることによって生成され、
複数のユーザの任意の選択したものに対してそのユーザから認証情報を受け取り、前記認証情報がそのユーザ用の派生シードから数学的に生成され、
その選択したユーザに対して、ユーザから受け取った認証情報に基づいてそのユーザを認証する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はコンピュータベースのセキュリティシステムの分野に関し、より詳細には認証秘密の配布に関する。
【背景技術】
【０００２】
この出願は、米国仮出願番号第６０／６５４，１０８号、出願日２００５年２月１８日、第６０／６６８，６８０号、出願日２００５年４月６日の優先権を主張し、前記出願は両方とも参照によってここに組み込まれる。
【０００３】
セキュリティシステムでは、検証器は認証する、つまり人またはコンピュータなどの他のエンティティの同一性を検証するために用いられる。一般に認証を要求するエンティティは、例えば、ユーザＩＤを入力することによって検証器にそれらの同一性を主張する。それから、エンティティは一般に、正当なエンティティだけが知りうるべきいくつかの追加情報を提供する。検証器は、正当なエンティティが提供する情報とエンティティによって提供された情報が一致するかどうかを決定する。エンティティが認証されている場合、エンティティの同一性がエンティティの主張どおりであることを検証器が確認することを意味し、エンティティは、例えば、物理的セキュリティシステムの場合は物理的位置への物理的アクセス、データセキュリティシステムではリソースまたは情報（例えば、財務記録、コンピュータデータ、ネットワークアクセスなど）への電子的アクセスなどのアクセスが可能になる。
【０００４】
検証器には、多くの可能な構成が存在する。検証器は、キーパッド、キーボード、カードリーダ、カメラ、マイクロフォン、電話とコンピュータネットワーク、および他のこのようなデータ入力装置から入力を受け取ることができる。出力として検証器は物理的機構を起動し、電子的データ信号を送り、ソフトウェアを構成し、またはこのような他の動作を行ってアクセスを提供する。検証器は、例えば、専用ハードウェアと電気的に通信する可能性があるが必須ではない専用の電子的、機械的または両方のシステム、もしくは汎用コンピュータなどの様々な方法で実装できる。
【０００５】
いくつかの検証器は、共有秘密の知識または所有物を用いてエンティティを認証する。秘密は検証器と認証されるエンティティの両方で保持されているので「共有」されている。例えば、個人識別番号、パスワード、またはパスフレーズの知識または所有物を用いてエンティティを検証できる。認証が発生する時点では、エンティティは秘密を曝露するか、もしくは秘密の知識または所有を証明する。エンティティが特定の認証システムによって要求されたとおりの秘密の知識または所有物を示すと、エンティティは認証される。
【０００６】
いくつかのシステムでは、エンティティは秘密を組み込んだ物理的装置またはデジタル装置（トークンとも呼ばれる）を用いる。装置内にいくつかの方法で格納された秘密は、その装置を用いるエンティティにとって既知であっても未知であってもよい。
【０００７】
装置内に含まれる秘密の知識を証明するために、いくつかの装置は認証コードを提供し、前記認証コードは装置内に含まれる秘密コードに基づくが、それとは異なっている。このような認証コードの使用によって、装置はそれを曝露することなく秘密の知識を示すことができる。いくつかのシステムでは、認証コードは時間依存性の情報に基づいている。この種の装置の使用は秘密自体が曝露されないので、エンティティおよび検証器の間の通信チャネル内の盗聴による秘密の決定をより困難にするというセキュリティ上の利点がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
検証器に認証させるために人によって用いられるこの種の装置の一例は、認証コード表示を含むトークンである。人は表示から認証コードを読み取り、検証器に認証コードを送る。このようなシステムでは、ユーザは共有秘密を決して知ることはできない。いくつかのこのようなトークンはＰＩＮなどのユーザ入力を受け取り、ユーザ入力および他の情報（時間依存性情報など）に応じて結果を提供する。これらのトークン装置を用いる一つの欠点は、一人のユーザだけがトークンを用いて検証器への認証が可能になることである。各ユーザは、自らのトークンを持っていなければならない。
【０００９】
この種のトークンの一つはシードと呼ばれる秘密コードを格納し、時間変動値およびユーザによって提供される個人識別コードと秘密コードを数学的に組み合わせて認証コードを生成する。数学的組み合わせは、トークン内に格納された秘密コードがその結果から決定されないように行われる（秘密コードは現在時間および他の情報と暗号的に組み合わせられる）。チャレンジ応答システムである別のシステムでは検証器が応答するユーザに対してチャレンジを送ることを意味し、秘密コードはチャレンジと暗号的に組み合わせられ、チャレンジの応答として検証器に送られる出力を生成する。
【００１０】
共有秘密を用いるエンティティを検証するために、検証器は共有秘密の知識を有する必要がある。多数のエンティティを検証するセキュリティシステムでは、セキュリティと検証器の利用可能性の間にトレードオフの関係がある。多数の検証器がある場合、特定のエンティティが認証を要求する際に利用可能な検証器である可能性も高くなる。しかし、秘密の知識を有する検証器の数が増えると、システムのセキュリティを維持することがますます困難になる。
【００１１】
セキュリティシステムの有用性は、エンティティが容易に認証可能な検証器の数および多様性によって制限される。エンティティが多数の検証器とやり取りし、前記検証器がそのエンティティと異なる秘密を共有している場合、エンティティは多数の秘密（または秘密を含む装置）を管理しなけらばならず、そこでは一つまたは少数の検証器に認証させるために各々の秘密が用いられる。多数の秘密を管理することはコンピュータベースのエンティティに複雑さを加え、人間のエンティティにとっては不便である。エンティティと多数の検証器の各々の間で、異なる秘密をセキュアに共有する処理でさえ不便で煩雑になる。
【００１２】
通信または認証したい二つの関係者の各々の間で、秘密をセキュアに共用する必要性を避けるために公開鍵暗号化が用いられる。しかし、公開鍵暗号化は、少なくとも部分的に計算を実現するために必要な大きな計算能力、および証明書と破棄リストを管理する複雑さのために多くのユーザおよび装置の認証設定では非実用的である。
【課題を解決するための手段】
【００１３】
一般に、この発明は、単一の共有秘密を基礎として用いて、認証に用いられる複数の共有秘密を派生させることができるシステムである。共有秘密の派生処理は、いくつかの場合、認証の時点で動的に発生できる。この派生秘密モデルの特定の価値の一つは、最初の共有秘密を含む単一の認証装置を配布でき、前もって可能な派生秘密値の全てを事前に計算する必要はないことである。これは、複数の環境で単一の認証装置を配布および使用する処理を著しく簡略化する。このシステムの別の価値は、最初の共有秘密が認証には決して用いられず（秘密の派生に対してのみ用いられる）システムのセキュリティを向上できることである。このシステムのさらに別の価値は、単一の認証器（すなわち、トークン）を複数の関係者によって、複数のエンティティに認証させるために単一の関係者によって、またはその両方の複数のエンティティに認証させるために複数の関係者によって用いることができ、これらの認証のために共通の共有秘密を用いる必要はないことである。この場合、全ての認証は各状況に対して一意的な共有秘密を用いることで行われ、ここで一意的な共有秘密は各々最初の共有秘密から派生される。
【００１４】
一形態では、この発明は、複数のクライアント側エンティティ用の認証秘密（例えば、「シード」）を生成する方法を特徴とする。この方法は、単一のマスタシードに基づいて複数の派生シードを生成し、各々が複数のクライアント側エンティティの対応する異なるもの用であって、前記複数の派生シードの各々を生成することが、対応するクライアント側エンティティを識別する一意的な識別子とマスタシードを数学的に組み合わせることを含んでいる。所定の実施例では、この発明は複数のサーバ側エンティティ用の認証シードを生成するために用いることもできる。
【００１５】
他の実施例は、一つ以上の以降の特徴を含んでいる。複数のクライアント側エンティティは、複数のユーザである。この方法はさらに、検証器に複数の派生シードを配布し、その検証器に複数のクライアント側エンティティの各々を別個に認証させる際に使用することを含んでいる。以降の内容は、派生シードを用いて、認証サーバにユーザを認証させるこの発明の方法の一実施例の概要である。まず、マスタシード生成器が、マスタシードを生成する。マスタシードは認証器内にロードされ、前記認証器は認証のために複数のユーザによって用いられる。認証器は、ハードウェア装置として実装されるトークンまたはソフトウェア内のトークンであってもよい。マスタシードは、派生シード生成器内にもロードされる。やや後で、一般に認証器を用いて特定のユーザの認証を可能にする登録処理中、以降のステップを行う。（１）認証サーバが、そのユーザに対する一意的識別子（ＵＩＤ）を入手する。（２）認証サーバが、ユーザのＵＩＤを提供する派生シード生成器に接触し、どの認証器がユーザによって用いられるかを識別する（例えば、認証器のシリアル番号を提供することによって）。（３）派生シード生成器は、認証器のシリアル番号を用いてマスタシードを配置し、前記マスタシードは認証器内にロードされ、マスタシードとユーザのＵＩＤを暗号的に組み合わせて派生シードを生成する。そして、（４）派生シードは、さらに認証するために共有秘密として用いられる認証サーバに送り戻す。マスタシード生成器は派生シード生成器から論理的に分離することもでき、両方の機能を実行する単一の生成器として二つの生成器を実装することもできる。さらにやや後で、ユーザは認証サーバによって保護されたいくつかのリソースへのアクセスを決定し、以降のステップを実行する。（１）認証の時点で、ユーザのＵＩＤを認証器に送る。（２）内部的に、認証器は既に格納されているマスタシードと新しく提供されたユーザＵＩＤを暗号的に組み合わせ、それによって派生シードを動的に生成する。そして（３）派生シードを用いて認証器は、共有秘密として派生シードを用いる複数の認証アルゴリズムの一つを実行し、適切な認証コードを開放する。それから、認証コードは認証サーバに送られる。認証サーバは既に派生シードが格納されているコピーを有するので、認証コードを検証できる。
【００１６】
各々がそれら自身の一意的なＵＩＤを備えた複数の異なるユーザが同じ処理を用いることができ、前記処理はユーザと認証器のその組み合わせに一意的な派生シードを派生させる。その結果、得られるシステムは複数の一意的な特性を有する。まず、単一のマスタシードが、認証器内に格納する必要がある唯一の静的秘密である。第二に、各ユーザは、一意的なユーザＵＩＤ、従って一意的な派生シードを有することができる。各ユーザの一意的な派生シードは認証の時点で動的に生成可能であり、従って、あるユーザに対する派生シードを認証器内に格納する必要はない。これは、セキュリティおよびメモリ利用率の観点の両方で価値がある。しかし、派生シードは事前に計算し、認証器内に格納することもできる。一意的な各派生シードは一意的なユーザを各々認証するために用いられ、その結果、共通の認証秘密は共有されず、従って、秘密の共有によってセキュリティ脆弱性がもたらされることはない。最後に、派生シードは認証の時点で動的に生成され、認証器内に必ずしも格納されないので共通の認証器を共有できるユーザ数に制限はない。
【００１７】
一般に、別の形態では、この発明は単一のマスタシードを用いて、複数のクライアント側エンティティの任意の選択可能な一つを検証器に認証させる方法を特徴とし、前記複数のクライアント側エンティティは各々異なる一意的識別子によって識別される。この方法は、任意の選択可能なクライアント側エンティティ用の一意的識別子とマスタシードを数学的に組み合わせ、任意の選択可能なクライアント側エンティティ用の派生シードを生成し、任意の選択可能なクライアント側エンティティ用に生成した派生シードを用いて、任意の選択可能なクライアント側エンティティを検証器に認証させることを含んでいる。
【００１８】
他の実施例は、次の特徴の一つ以上を含んでいる。複数のクライアント側エンティティは、複数のユーザである。任意の選択可能なユーザ用の派生シードを用いることは、任意の選択可能なユーザー用の派生シードから計算した値を検証器に送ることを含んでいる。任意の選択可能なクライアント側エンティティ用に生成した派生シードを用いて、その任意の選択可能なクライアント側エンティティを検証器に認証させることは、時間ベースの認証アルゴリズム、チャレンジ応答認証アルゴリズム、カウンタベースの認証アルゴリズム、およびイベント同期認証アルゴリズムからなるグループから選択した認証アルゴリズムを用いることを含んでいる。任意の選択可能なクライアント側エンティティ用の一意的識別子とマスタシードを数学的に組み合わせることは、共有秘密に基づく認証アルゴリズムを用いることを含んでいる。共有秘密を用いるアルゴリズムの例は、ハッシュ関数、ブロック暗号関数、ストリーム暗号関数およびメッセージ認証コード関数を含んでいる。これらは、用いられるアルゴリズムの例にすぎない。共有秘密を用いる任意の他のアルゴリズムを用いることもできる。数学的に組み合わせることは、鍵派生関数を用いることを含んでいてもよい。鍵派生関数は、反復関数を含んでいてもよい。鍵派生関数はマスタシード、またはマスタシードから既に派生させている値、および複数の一意的識別子からの一つ以上の一意的識別子を入力として取り、前記一意的識別子の一つは複数のユーザを識別する一意的識別子を含んでいてもよい。
【００１９】
一般に、さらに別の形態では、この発明は一つ以上のクライアント側エンティティ用の認証シードを生成し、それらが一つ以上のサーバ側エンティティに別個に認証可能にする方法を特徴とする。この方法は単一のマスタシードから複数の派生シードを生成することを含み、前記複数の派生シードを各々を生成することは、対応する異なる複数の一意的識別子とマスタシードを数学的に組み合わせ、対応する異なる複数の一意的識別子の各々の一意的識別子が異なるエンティティを識別することを含んでいる。
【００２０】
他の実施例は、一つ以上の以降の特徴を含んでいる。この方法はさらに、一つ以上のサーバ側エンティティに複数の派生シードを配布し、ユーザが複数の派生シードの適切なものを用いることによって、それらの一つ以上のサーバ側エンティティに認証可能にすることを含んでいる。つまり、派生シードはユーザの一意的識別子およびサーバの一意的識別子の組み合わせに基づくことができ、各ユーザおよびサーバが一意的識別値を有する。一つ以上のサーバ側エンティティは複数のサーバ側エンティティであり、各々の対応する異なる複数の識別子の一意的識別子の少なくとも一つは、前記複数のサーバ側エンティティの中の対応する異なるサーバ側エンティティのユーザを識別する。数学的に組み合わせることは、鍵派生関数を用いることを含んでいる。鍵派生関数は、反復関数を含んでいる。鍵派生関数はマスタシード、またはマスタシードから既に派生させている値、および複数の一意的識別子からの一つ以上の一意的識別子を入力として取り、前記一意的識別子の一つは複数のユーザを識別する一意的識別子を含んでいてもよい。
【００２１】
一般に、なおさらに別の形態では、この発明は別のエンティティに複数の異なるユーザを認証させるためのトークン内に実装する方法を特徴とする。この方法は、トークン内にマスタシードを格納し、ユーザの任意の一人が他のエンティティに認証を求めると、（１）そのユーザ用に提供された一意的識別子とマスタシードを数学的に組み合わせて、そのユーザ用の派生シードを生成し、（２）そのユーザ用の派生シードを用いて他のエンティティに認証させる。この方法は別のエンティティに認証させる複数のユーザ用に説明されているが、当然のことながら、この方法は別のエンティティに認証させる任意の種類のエンティティ用に用いることができる。
【００２２】
他の実施例は、一つ以上の以降の特徴を含んでいる。そのユーザ用の派生シードを用いて他のエンティティに認証させることは、共有秘密を利用する認証アルゴリズムを用いることを含んでいる。アルゴリズムの例は、時間ベースの認証アルゴリズム、チャレンジ応答認証アルゴリズム、カウンタベースの認証アルゴリズム、およびイベント同期認証アルゴリズムを含んでいる。他の実施例では、この方法はさらに他のエンティティにそのユーザを認証させた後、そのユーザ用の派生シードを消去することを含んでいる。しかし、このステップは、必須ではない。
【００２３】
なおさらに別の形態では、この発明は、マスタシードを格納するユーザ装置を備えたユーザがクライアント側装置を介して、ネットワーク上の別のエンティティに認証させるネットワーク内で使用する方法を特徴とする。この方法は、ネットワークに接続したサーバ内でクライアント側装置を識別する一意的識別子をクライアント側装置から受け取り、サーバ内でクライアント装置用の一意的識別子と秘密を数学的に組み合わせて派生シードを生成し、前記秘密はマスタシードまたは既に生成されている派生シードから派生され、サーバからクライアント側装置に新しく派生したシードを送ることを含んでいる。
【００２４】
他の実施例は、一つ以上の以降の特徴を含んでいる。この方法はさらに、クライアント側装置において派生シードを受け取り、派生シードを受け取った後、ネットワークからクライアント側装置を切断することを含んでいる。そして、それはさらにユーザ装置においてクライアント側装置用の一意的識別子を受け取り、少なくとも一意的識別子とマスタシードを数学的に組み合わせて派生シードを生成し、クライアント側装置をネットワークから切断している間に、派生シードを用いてクライアント側装置に認証させることを含んでいる。マスタシードは、共有秘密である。また、秘密は、マスタシードから既に派生されているシードである。つまり、それは、一つ以上の他の識別子とマスタシードを数学的に組み合わせることによって生成されている。
【００２５】
一般に、さらに別の形態では、この発明は、ユーザがクライアント側装置を介して、ネットワーク上の別のエンティティに認証させるネットワーク上のクライアント側装置によって実装する方法を特徴とする。この方法は、クライアント側装置を識別する一意的識別子をネットワークの他のエンティティに送り、他のエンティティから派生シードを受け取り、前記派生シードがクライアント側装置用の一意的識別子と秘密を数学的に組み合わせることによって生成され、前記秘密がマスタシードに基づき、ネットワークから切断し、ユーザを認証し、クライアント側装置用の一意的識別子をユーザ装置に送り、クライアント側装置用の一意的識別子をユーザ装置に送った後、ユーザ装置が得られた派生シードから計算した認証コード、または派生シードに基づく認証コードなどの派生シードを知っていることを示す情報をユーザ装置から受け取ることを含んでいる。
【００２６】
一般に、さらになお別の形態では、この発明はサーバサイトにおいて複数のユーザを認証する方法を特徴とする。この方法は単一のマスタシードから全て計算される複数の派生シードを格納し、前記複数の派生シードが各々複数のユーザの対応する異なるもの用であり、前記複数のシードの各派生シードが対応するユーザ用の一意的識別子とマスタシードを数学的に組み合わせることによって生成され、複数のユーザの任意の選択した一人に対してそのユーザから認証情報を受け取り、前記認証情報がそのユーザ用の派生シードから数学的に生成され、その選択したユーザに対してそのユーザから受け取った認証情報に基づいてそのユーザを認証することを含んでいる。他の実施例では、この方法は任意の種類のエンティティ（単なるユーザではない）を別のエンティティに認証させるために用いられる。
【００２７】
この発明の一つ以上の実施例の詳細は、添付の図面と以降の説明内で述べられる。この発明の他の特徴、目的、および利点は、その説明と図面および請求項から明らかになる。
【発明を実施するための最良の形態】
【００２８】
記録の譲受人が所有している以前の特許出願（つまり、参照によってここに組み込まれる米国出願番号第０９／３０４，７７５号、出願日１９９９年５月４日、現在の米国特許第６，９８５，５８３号（ＲＳＡ−０３８））では、単一のマスタシードまたは秘密を用いて、複数の検証器または派生シードを生成し、各々が異なるサイトに認証させる方式が開示されていた。これによって、エンティティは多くの検証器に認証させることができ多数の秘密を管理する必要はない。この技術を用いる場合、単一の秘密を保持するだけでよく、各サイト用の異なる秘密を必要とする方式に比べて管理はずっと簡単になる。一つの秘密を用いる場合、ユーザは複数のサイトまたは複数の検証器に認証させることができ、秘密を損なったり、一つより多くのエンティティとそれを共有する必要はない。この処理は、次のように動作する。
【００２９】
登録処理中、サイト１はユーザにトークン用のシリアル番号を入力するように求める。それから、サイト１はユーザのトークンのシリアル番号とサイト１用の一意的識別子、つまりＵＩＤ１の両方をマスタシード生成器に送る。
【００３０】
マスタシード生成器はマスタシードと一意的識別子ＵＶ１を数学的に組み合わせ、派生シードまたは検証器シードＳＤ１（その特定のサイトにおいて用いられる特定のトークンにとって一意的なシード）を生成する。派生シードＳＤ１は、鍵派生関数を用いてマスタシードと他の情報を組み合わせることによって生成される。鍵派生関数は、第三者が検証器シードと他の情報を知ることによって、マスタシードを実用上決定できないという特徴を有する。他の情報は、認証サーバについての識別情報、この場合は一意的識別子ＵＩＤ１である。
【００３１】
マスタシード生成器はサイト１に派生シードを送り、前記派生シードはそこで認証サーバまたは検証器内にインストールされる。
【００３２】
実際の認証中、サイト１における認証器は識別子を提供するいくつかの方法（例えば、キーパッド入力）で、トークンまたはユーザにその一意的識別子ＵＩＤ１を送る。トークンは内部的にＵＩＤ１とマスタシードを組み合わせ、派生シードＳＤ１の別のコピーを生成する。それから、派生シードＳＤ１を用いて認証サーバに認証させる。これは一般に、いくつかの動的変数（例えば、時間、カウンタ変数、チャレンジなど）とそれを暗号的に組み合わせて認証コードを生成することによって行われ、前記認証コードは少なくとも動的変数と派生シードの関数である。それから、この認証コードをサイト１用の認証サーバに送る。認証サーバは派生シードと動的変数を知っているので、そのコードを検証できる。つまり、そのコードを計算し、それを受け取った認証コードと比較し、ユーザが共有秘密を知っていることを確認できる。
【００３３】
同じ処理はサイト２でも発生するが、ただしそのサイトに対しては異なる一意的識別子ＵＩＤ２を用いる。その結果は、異なる派生シードＳＤ２となる。その結果、得られる認証コードは、異なるサイトに同じトークンを用いる場合は異なったものとなる。
【００３４】
ＵＩＤ１とＵＩＤ２は、各サイトに関連した一意的識別子であるとする。これらは、例えば、サイトのＵＲＬのハッシュ、またはそのサイトに関連した公開鍵などのある他の一意的な値、またはひょっとすると最初にランダムに選択された一意的識別子であってもよい。しかし、いったん割り当てられると各々が同じ派生シードを別個に計算できるように、一意的識別子はマスタシード生成器とトークンの両方にとって既知でなければならない。
【００３５】
なお、マスタシードはマスタシード生成器によってのみ既知であり、トークン内にプログラムされている。トークンはそのマスタシードを決して明らかにせず、マスタシード生成器は決してマスタシードを誰にも開放しない。従って、マスタシード自体は、認証には決して用いられない。
【００３６】
（複数の人々）：
当然のことながら、複数の異なるユーザに対して対称鍵またはシードベースのトークンを用いたいと考えると常に問題が生じる。例えば、複数の家族のメンバが自らのアカウントを用いて同じサイト（例えば、ＭＳＮまたはＡＯＬ）にログインしたいと仮定する。家族の各メンバが同じトークンを共有していた場合、それは複数の鍵（認証を行う各ユーザのトークンに対して一つずつ）を管理する必要性を生じさせる。しかし、共有されたトークン内で複数のマスタシートを提供し、管理することは非常に複雑になる。さらに、各マスタシードがトークン内でストレージメモリを消費し、認証の際、ユーザが正確なマスタシードを選択可能にするある機構を提供しなければならない。一方、複数の別個のトークン（各ユーザに対して異なるもの）を発行する代替案は煩雑になる。
【００３７】
さらに当然のことながら、これらの状況下でそれ自体を提示する問題を解決するために、代わりに複数の派生シードを生成し、複数の異なるユーザが同じサイトに認証させることができ、前記派生シードは異なるユーザによって用いられる。その方法では、同じマスタシードを用いて、複数のメンバのグループの各メンバ用に対応する異なる派生シードを生成できる。この場合、マスタシードは、鍵サーバとユーザによって保持されたトークン間で共有される。トークンを用いる人々のグループの各メンバは対応する一意的識別子を有し、前記一意的識別子は鍵サーバで共有される。一意的識別子は、例えば、人の名前のハッシュなどそのメンバに関連した値である。鍵サーバは、そのメンバの一意的識別子とマスタシードを数学的に組み合わせることによってグループの各メンバ用に対応する派生シードを生成し、それらの派生シードを検証器サイトに送る。グループのメンバである人が検証器サイトに認証させたい場合、その人は自分の一意的識別子をトークンに渡し、トークンはその人の一意的識別子とマスタシートを数学的に組み合わせることによって、その人用の派生シードを生成する。この方法ではグループの各メンバが自分の鍵を有し、グループの他のメンバとは別個に検証器サイトに認証させることができるが、これをサポートするには一つのマスタシードだけが必要とされる。
【００３８】
この場合、一意的識別子はユーザが認証しているサイトに対してではなくユーザに関連付けられられる。一意的識別子は、例えば、各々のＩＳＰログイン名のハッシュ、または可能であれば各々のインスタントメッセンジャのバディ名のハッシュなど、そのユーザを一意的に識別する任意のものであってもよい。
【００３９】
図１は、派生シード概念を実装したシステムの一例を示している。それはマスタシード生成器１００を有し、マスタシード生成器１００はマスタシードＳＭを生成してトークン１０２内に設置し、トークン１０２はユーザのグループによって用いられる。トークン１０２は、例えば、クレジットカードサイズの装置として実装されたハードウェア装置であり、前記装置はメモリと関連のハードウェアロジックとファームウェア、バッテリ、およびＬＣＤ表示装置を備えたマイクロプロセッサを組み込んでいる。上記の実施例ではトークン１０２は、例えば、ボタン、キーパッド、感圧表示装置からコネクタインタフェースを介して、または無線通信によってデータ入力を受け取る。トークン１０２はソフトウェアアプリケーションとして実装することもでき、前記アプリケーションはコンピュータ、携帯電話、携帯情報端末、またはソフトウェアアプリケーションを実行可能な任意の他の装置上で動作する。
【００４０】
マスタシード生成器１００はさらに、そのグループのユーザ用に同じマスタシードＳＭを鍵サーバ１０４に提供する。鍵サーバ１０４は排他的に、シード配布サーバであってもよく、シード配布機能を組み込んだファイルサーバ、ウェブサーバ、または認証サーバなどのデータサーバであってもよい。
【００４１】
マスタシードＳＭは、トークン１０２と鍵サーバ１０４によって共有される秘密である。一般に、マスタシードは、例えば、疑似乱数生成器によって、または十分にランダムな物理的イベントを観測するセンサを用いることによってランダムに生成される。いすれにせよ、統計的に予測が困難な暗証番号を構成するように生成される。
【００４２】
検証器または認証サーバ１１０を含むのではなく、サーバサイト内に認証させるためにユーザのグループによって用いられるクライアントコンピュータ１０８も存在する。派生シードを生成する処理は、次のように動作する。
【００４３】
まず、マスタシード生成器１００がトークン１０２と鍵サーバ１０４にマスタシードを配布する。
【００４４】
クライアントコンピュータ１０８におけるユーザはサーバサイトにログインし、そのサイトによって提供された特定のサービスを備えたレジスタを探す。登録リクエストの一部として、クライアントコンピュータ１０８は用いられるトークンのシリアル番号、およびユーザを一意的に識別する識別子ＵＩＤ１（例えば、ログイン名またはスクリーン名）を提供する。トークンのシリアル番号によって、鍵サーバ１０４はローカルデータベース内に格納しているシード記録内の、そのトークン用の関連のマスタシードＳＭを見つける。
【００４５】
それに応じて、サイトにおける認証サーバ１１０は鍵サーバに登録リクエストを送る。トークンのシリアル番号と、そのユーザ用の一意的識別子はリクエストに付属している。鍵サーバ１０４はシリアル番号を用いて、そのデータベース内のトークン用の記録を参照し、対応するマスタシードＳＭを取得する。それから、マスタシードと一意的識別子を数学的に組み合わせて派生シードＳＰ１を生成し、シード記録の一部として認証サーバ１１０に送り戻す。認証サーバ１１０はその派生シードＳＰ１と共に受け取ったシード記録をそのデータベース内に格納し、将来ユーザを認証する際に使用する。
【００４６】
上記の実施例では、鍵サーバ１０４は、鍵派生関数「ＫＤＦ」を用いることによって派生シードＳＰ１を生成する。鍵派生関数は、暗号化の分野ではよく知られている。鍵派生関数は、異なる入力に対して比較的別個の出力を生成できるように一般に選択され、反転させることは難しいので、それは特定の出力を与えて入力を決定することが難しいことを意味する。様々な鍵派生関数は、ハッシュ関数、疑似ランダム関数などに基づいている。
【００４７】
鍵派生関数は一般に、秘密を他の情報と組み合わせる。秘密は、パスワードであってもよい。この発明の方法の場合、秘密はシード（マスタシードまたは既に生成されている派生シード）である。反復巻数もまた鍵派生関数に含めることができる。反復カウントとも呼ばれる数を用いて、鍵を派生させる基底関数を何度行ったかを示すことができる。反復カウントを鍵派生関数に組み込むことは、パスワードから暗号鍵を導くために必要な労力を増大させる。適度な反復数（例えば、１０００）は、鍵を計算するときは正当な当事者にとって重荷にはなりそうにないが、攻撃者にとってはかなりの重荷になる。パスワード値が大きなランダム値であれば、小さな反復カウントを用いることができる。ＫＤＦと反復関数を用いることは、派生シードを派生させる方法の一例である。他の技術を用いることもできる。
【００４８】
当然のことながら他の鍵派生関数も同様に有用であり、特定の鍵派生関数によって必要とされるようにユーザ情報および他の情報に対して様々な置き換えが可能である。他の代替案の中には、基本的なハッシュ関数、ブロック暗号、メッセージ認証コードなどに基づく鍵派生関数がある。
【００４９】
従って、鍵派生関数を用いる上記の実施例では、鍵派生関数への入力はマスタシード、ユーザ識別子（またはその連結形態）、および時間識別子である。ユーザ識別子ＵＩＤはユーザについての情報を含み、時間値などの他の情報を含むこともできる。
【００５０】
鍵派生関数ＫＤＦは入力として、マスタシードＳＭとユーザ１用の識別子情報ＵＩＤ１を取る。サーバ１１０は、マスタシードＳＭを格納する。トークン１０２もマスタシードＳＭを格納し、ユーザ識別子情報ＵＩＤ１へのアクセスを有する。従って、トークン１０２は同じ鍵派生関数を用いて、マスタシードＳＭとユーザ識別子情報ＵＩＤ１から同じ派生シードＳＰ１を獲得することもできる。
【００５１】
そのトークンを共有する各ユーザは、一意的識別子情報を有することができる。同じ手順に従って、各ユーザ用の対応する派生シードＳＰｉを生成し、派生シードＳＰ１は認証サーバ１１０によって格納される。
【００５２】
グループ内の任意のユーザがトークンを用いてサーバサイトに認証させるときは常に、クライアントはそのユーザ用の一意的識別子をトークンに渡す。トークンは既に格納されているマスタシードとユーザの一意的識別子を内部的に組み合わせて、そのユーザに一意的な派生シードを生成する。それから、クライアントは派生シードを用いて、サーバサイトにおける認証サーバにユーザを認証させる。一実施例では、トークンは派生シードを用いて、そのユーザに一意的な認証コードを計算する。トークンはクライアントに認証コードを戻し、それから前記クライアントはそれらをサーバサイトに提供し、ユーザを認証する。
【００５３】
なお、実際の認証は派生シードを用い、決してマスタシードは用いず、それによってマスタシードのセキュリティを保護する。認証は一般にトークン１０２やクライアントコンピュータ１０８によって実現され、派生シードＳＰｉから数学的に派生させた値を検証器に送る。認証は、ハッシュ関数、ブロック暗号、メッセージ認証コード、または他の技術を用いることによって実現される。認証は時間ベースのアルゴリズムを用いることによって実現され、前記アルゴリズムに従って派生シードＳＰｉは派生の一部として時間依存情報と組み合わせられる。別の例では、チャレンジ／応答方式が用いられる。それは、トークン１０２にチャレンジ値を送る検証器１０８を含むことができる。それから、トークン１０２は派生シードＳＰｉを用いてチャレンジ値を暗号化し、その値を認証サーバ１１０に戻す。さらに別の方式は、カウンタベースの認証およびイベント同期認証（例えば、ＨＯＴＰ）を含んでいる。
【００５４】
派生シードを用いるために、装置１０２と検証器１０８が秘密を共有する際に利用する様々な認証と通信システムおよび方法を拡張できる。例えば、米国特許第４，７２０，８６０号、米国特許第４，８８５，７７８号、米国特許第４，８５６，０６２号、米国特許第４，９９８，２７９号、米国特許第５，０２３，９０８号、米国特許第５，５０８，１６１号、米国特許第５，０９７，５０５号、米国特許第５，２３７，６１４号、米国特許第５，３６７，５７２号、米国特許第５，３６１，０６２号、米国特許第５，４８５，５１９号、および米国特許第５，６５７，３８８号を参照すると、これらは共有秘密を用いる認証用の様々なシステムと方法を説明している。このようなシステムはここで説明されるシステムと方法を組み込み、認証の基本として派生シードを用いることができる。
【００５５】
たったいま説明した方式の共通の特徴は、トークン内には単一のマスタシードだけが存在し、トークンはそのマスタシードを用いて必要とあればどんな派生シードでも生成することである。上記のように、これはユーザに多数のマスタシードの管理（多くのユーザにとって紛らわしく困難になる）を要求しないという大きな利点を有する。トークンは一般に、派生シードを受け取ることもなく、格納することさえないことにも注意したい。しかし、所定の実施例では、トークンは派生シードを受け取ったり格納したりできる。それは、単一の格納されたマスタシードからの必要に応じて派生シードを生成し、派生シードを用いて所望のサイトへの認証が行われるとき、それは一般にその派生シードを消去する。
【００５６】
別の方式はもちろん、トークン内の様々な派生シードを事前に計算して格納し、要求されたときに適切な派生シードを単に提供することである。
【００５７】
上で提示された概念の別の拡張では、複数の一意的識別子を用いて派生シードを生成する。例えば、グループ内の複数の個人がトークンを共有し、その同じトークンを用いて異なるサイトに認証させたい場合、適切な可能性がある意味ある組み合わせ（人およびサイト）の各々に対して派生シードが生成される。例を簡略化するために、グループ内に二人のメンバが存在し、グループの各メンバがトークンを用いて、二つのサイト、例えば、ＡＯＬとＭＳＮの各々に認証させたいと仮定する。その場合、人およびサイトの各組み合わせに対して一つずつ、四つの派生シードがそのシステムに対して定義される。従って、サイト１における人Ａに対して、その組み合わせの対応する派生シードが人Ａの一意的識別子（ＵＩＤＡ）をマスタシード（ＳＭ）に加えて中間の結果ＳＡを生成し、それからサイト１の一意的識別子（ＳｉｔｅＩＤ１）を中間の結果に加えて派生シードＳＡ１を生成することによって生成される。
ＳＡ＝ＫＤＦ（ＳＭ，ＵＩＤＡ）
ＳＡ１＝ＫＤＦ（ＳＡ，ＳｉｔｅＩＤ１）
残りの派生シードは、人用のＵＩＤを最初に用い、それからサイト用の一意的ＩＤを用いることによって同様に生成される。上記の例は連続的な（順次）計算として派生のＳＡとＳＡ１を示しているが、これは一例にすぎず必須ではない。他の実施例では、複数の一意的識別子を用いて単一のＫＤＦを実行できる。
【００５８】
これは、エンティティの任意の組み合わせに拡張できる。言い換えると、派生シードを生成する際、複数の一意的識別子を組み合わせることができる。例えば、人Ａが、サイト１においてコンピュータＸに認証させたいと考えるかもしれない。また、人Ａが、サイト２においてコンピュータＸに認証させたいと考えるかもしれない。また、人Ｂが、サイト２においてコンピュータＹに認証させたいと考えるかもしれない。これらの組み合わせの各々に対して、異なる派生シードが存在できる。そして、その派生シードは、人用の一意的識別子、コンピュータ用の一意的識別子、およびサイト用の一意的識別子を連続的に加えることによってマスタシードから生成できる。
【００５９】
任意の数の一意的識別子をこの方法でつなぎ、単一のマスタシードから対応する派生シードを生成できる。さらに、上記のより簡単な場合のように、必要な派生シードを生成するために、認証の時点で正確な一意的識別子が提供される限り、トークンは派生シードを格納する必要はない。トークンはマスタシードと、マスタシードから派生シードを生成するために用いられる関数を格納するだけでよい。
【００６０】
サイトおよび人々に加えて、一意的識別子は認証させたいと考えるエンティティ、または認証したいと考える識別エンティティを識別する実質的に任意のものであってもよい。これは、例えば、ハードウェアの一意的ＩＤ、一意的ドメインＩＤ、グループＩＤ、中間ノードＩＤ、ニュースグループＩＤ、ＫａｚｚａＩＤ、運転免許証番号、パスポート番号、電話番号、ケーブルボックスのシリアル番号などを含んでいる。中間ノードＩＤは、フィッシング対策技術（つまり、サイトＣから来るサイトＢにおけるユーザＡ）に役立つことがある。
【００６１】
これらの概念のさらなる拡張の別の例は、図２に示されている。この特定の例は、複数の一意的識別子を用いてネットワーク内でのローカル認証を可能にし、それによって認証ごとにルート認証サーバに戻る必要性を避ける方法を示している。
【００６２】
図２では、ツリー構造に配置したネットワーク内に複数の認証サーバが存在する。ルート認証サーバはＡＳ１であり、残りの認証サーバＡＳ２、ＡＳ３、ＡＳ４、ＡＳ５、およびＡＳ６は図のように、ツリー構造を介してルート認証サーバに接続されている。上記の概念を用いて、認証はクライアントが接続したサーバでローカルに行われ、全ての認証はユーザによって保持されたトークン内の単一のマスタシードに基づいている。
【００６３】
マスタシードＳＭを格納する鍵サーバＫＳは派生シードＤＳ１を生成し、その派生シードをルートサーバＡＳ１に送る。派生シードは当業者には既知の種類のある適切な鍵派生関数を用いることによって、ルートサーバＡＳ１用の一意的識別子（つまり、ＵＩＤ１）とマスタシードＳＭを数学的に組み合わせることで既に説明したように生成される。マスタシードＳＭのコピーを含むトークンを所有するユーザは、ルートサーバＡＳ１に直接認証させることができる。これは、ルートサーバＡＳ１からその一意的識別子ＵＩＤ１を受け取り、その一意的識別子をマスタシードＳＭに加えて対応する派生シードＤＳ１を生成することによって行われる。
ＤＳ１＝ＫＤＦ（ＳＭ，ＵＩＤ１）
この演算は、ＤＳ１＝ＳＭ＋ＵＩＤ１として表すこともできる。それから、ユーザはこの派生シードＤＳ１を用いて上記のようにルートサーバに直接認証させることができる。
【００６４】
上記の実施例では、ＡＳ１用の派生シードにその一意的識別子を加えることによって、ツリー内の次の認証サーバＡＳ３用に派生シードＤＳ３が生成される。言い換えると、ルートサーバＡＳ１はＤＳ１にＵＩＤ３を加えることによって、認証サーバＡＳ３用の派生シードＤＳ３を生成する。つまり、
ＤＳ３＝ＫＤＦ（ＤＳ１，ＵＩＤ３）
他の形態を用いると、これはＤＳ３＝ＤＳ１＋ＵＩＤ３として記述できる。
【００６５】
なお、適切な鍵派生関数を選択した場合、ＤＳ３は連続的に二つの一意的識別子を加えることによってマスタシードからも生成できる。つまり、
ＤＳ３＝（ＳＭ＋ＵＩＤ１）＋ＵＩＤ３
言い換えると、ＡＳ３用の派生シードは、二つの異なるエンティティによって生成される（当然のことながら、全ての鍵派生関数がたったいま示したようにステップを分離できるとは限らない。この特定の性質を利用するには、適切な鍵派生関数を用いなければならない）。派生シードは、ルートサーバＡＳ１用および認証サーバＡＳ３用の一意的識別子が鍵サーバにとって利用可能であれば、マスタシードＳＭに基づいて鍵サーバＫＳによって生成できる。もしくは、認証サーバＡＳ３用の一意的識別子が認証サーバＡＳ１によって利用可能であれば、その派生シードＤＳ１に基づいて認証サーバＡＳ１によって生成できる。
【００６６】
この方式は、ツリー構造内の他の認証サーバまで拡張され、他のサーバ用の派生シードを生成できる。従って、各認証サーバは、ネットワークツリー内の隣接する子サーバ用の派生シードを生成できる。
【００６７】
上記の実施例では、派生シードを生成しリクエストサーバに提供する隣の認証サーバも派生シードと共に、それ自身の一意的識別子と、ルートサーバに戻る経路内のルートサーバを含む全ての認証サーバの一意的識別子を送る。従って、ユーザを認証したい任意の認証サーバは全ての一意的識別子をユーザ（またはユーザのトークン）に提供でき、前記一意的識別子によってトークンは内部的に格納しているマスタシードＳＭから認証サーバ用の派生シードを生成できる。これによって、ツリー内の場所にかかわらず、認証サーバは認証を行うために、ツリー内のさらに上の親サーバと通信しなくてもよくなる。従って、例えば、ユーザがサーバＡＳ６に認証させたい場合、サーバＡＳ６からＡＳ１，ＡＳ３、ＡＳ５、およびＡＳ６用の一意的識別子を受け取る。それから、ユーザのトークンが内部的に格納している適切な鍵派生関数を用いることによって、これらの一意的識別子を連続的にマスタシードＳＭに加えて、サーバＡＳ６用の派生シードを計算する。
【００６８】
（切断認証）：
上記の概念の別の利点は、派生シードの生成が常に行われ、システム内の他のサーバまたはエンティティ用に派生シードを生成する時点で発生させる必要がないことである。この有用性は、図３に示したネットワークによって説明される簡単な例を用いて理解される。ネットワークは、鍵サーバＫＳ、サイト１における認証サーバＡＳ、サイト１に接続したノートブックコンピュータＮＢ、およびユーザのトークンを含んでいる。
【００６９】
上記のように、サイト１における認証サーバＡＳは、その一意的識別子ＵＩＤ１を鍵サーバＫＳに提供することによって鍵サーバＫＳに登録する。鍵サーバＫＳはさらに鍵派生関数を用いて、そのマスタ鍵ＳＭと一意的識別子ＵＩＤ１を組み合わせ、サイト１用の派生シードＤＳ１を生成する。ノートブックコンピュータのユーザは、トークン（マスタシードＳＭのコピーも保持している）を用いることによってサイト１に認証させる。ユーザがサイト１に認証させることができるように、サイトＳ１における認証サーバはその一意的識別子ＵＩＤ１をノートブックコンピュータに提供し、前記ノートブックコンピュータはさらにその一意的識別子をトークンに提供する。それから、トークン（さらに関連の鍵派生関数とマスタシードＳＭも知っている）は、鍵サーバＫＳがそれを生成したのと同じ方法でＤＳ１を計算し、その派生シードを用いて認証サーバＡＳに認証させる。
【００７０】
やや後で、ユーザはサイト１における認証サーバＡＳ１ともはや通信できないように、サイト１からノートブックコンピュータを切断したいと考える可能性がある。これらの状況下では、切断されている間、そしてサイト１における認証サーバへの認証が不可能な期間に、ユーザにノートブックコンピュータへの認証を要求することが望ましい。これは、上で議論した概念を用いることによって実現される。より詳細には、ユーザは認証を切断するために、サイト１における認証サーバＡＳ１にノートブックコンピュータＮＢを登録する。それに応じて、サイト１における認証サーバＡＳ１は、ノートブックコンピュータからの一意的識別子ＵＩＤＮＢ（例えば、そのシリアル番号）と、認証サーバに既に提供されている派生シード、つまりＤＳ１を数学的に組み合わせることによって別のシードを派生させる。言い換えると、サイト１における認証サーバＡＳ１は、ＤＳ２＝ＤＳ１＋ＵＩＤＮＢの計算を行う。それから、認証サーバは、ノートブックコンピュータを切断する前に、その一意的識別子ＵＩＤ１と共に派生シードＤＳ２をノートブックコンピュータに送る。
【００７１】
オフラインの間にユーザがノートブックコンピュータに認証させることができるように、ノートブックコンピュータはユーザのトークンに、それ自身の一意的識別子ＵＩＤＮＢ、およびサイト１用の一意的識別子、つまりＵＩＤ１を送る。内部的に、トークンは鍵派生関数を用いてマスタシードＳＭと二つの識別子ＵＩＤ１、ＵＩＤＮＢを数学的に組み合わせ、ＤＳ２を生成する（つまり、ＤＳ１＝ＳＭ＋ＵＩＤ１；ＤＳ２＝ＤＳ１＋ＵＩＤＮＢ）。それから、ユーザはネットワークから切断されている間、ＤＳ２を用いてノートブックコンピュータに認証させる。
【００７２】
認証サーバのネットワークと切断認証を含む上記の処理は、上で同様に提示した原理を単に加えることによって多くのレベルおよび異なるレベルに拡張できる。
【００７３】
なお、一意的識別子は任意の値であってもよい。一意的識別子は任意の値であってもよいが、最高レベルのセキュリティに対しては値は一意的である。一意的識別子の例は、サイトの公開鍵、サイトのＵＲＬ、ユーザ名、ノートブックのシリアル番号などを含んでいる。一意的識別子とマスタシードを組み合わせることは、技術的に知られている様々な異なるアルゴリズムを用いて行うことができる。それらを共にハッシュすることが一例である。また、認証トークンは、共有秘密（対称鍵またはシード）に基づく任意の種類のトークンであってもよい。例としては、時間ベース、チャレンジ応答、時間およびイベント、イベント同期などが含まれる。また、当業者によく知られているように派生シード内に他の情報を含めることもできる。
【００７４】
当然のことながら、ここで説明した基本原理に影響を与えることなく、この出願で別のものとして示した所定の機能を組み合わせることも、組み合わさったものとして示した他の機能を分離することもできる。例えば、マスタシード生成器１００と鍵サーバ１０４は図１では、別個のエンティティであるとして示されている。しかし、これらの二つの機能は、単一のエンティティ内に組み合わせることができる。また、サーバサイト１１０は検証器または認証管理器の機能を含むものとして示したが、これらの二つの機能は、異なるエンティティによって管理されている認証管理器を用いて、サーバサイトを管理するものから分離できる。実際、ユーザがアクセスを得ようとしているサイトでなはく、第三者のサーバサイトによって認証サービスが提供される可能性が高い場合は機能を分離できる。
【００７５】
さらに、当然のことながら、サイト内に認証しているエンティティはここではユーザと呼んでいた。実際には、このエンティティは別のサイト内に認証を求めている任意のハードウェア装置、アプリケーションまたは他のソフトウェアエンティティであってもよいので、より一般的にはクライアント側エンティティと呼ぶことができる。同様に、クライアント側エンティティが認証を求めているサーバは、クライアント側エンティティが認証したい可能性があるサーバサイト、ドメイン、領域または任意の他のサーバ側エンティティであってもよい。
【００７６】
上記の説明において、マスタシードを保持し、サーバに認証させるために用いられるユーザ装置は、ここではトークンと呼んでいた。この装置は、ときには認証器と呼ばれることもある。それは、例えば、内部プロセッサ素子とメモリを含むハードウェア装置を含む様々な形態を取ることができ、ＰＣ上で実行中のコード（ソフトトークン）であってもよい。
【００７７】
さらになお、ユーザはマスタシードを格納する能力を有し、鍵派生機能を有し、鍵派生関数を知っていなければならない。この機能は、クライアントコンピュータと共にユーザによって用いられるトークンと共に有することも、これらの装置の組み合わせ内に有することもできる。
【００７８】
他の実施形態は、以降の請求項内にある。
【図面の簡単な説明】
【００７９】
【図１】ユーザのグループ用の派生シードを生成するシステムのブロック図である。
【図２】派生シードを生成し使用する方法の別の形態を示すブロック図である。
【図３】切断認証の説明に用いられるブロック図である。
【図１】
2008538264.tif 000003
【図２】
2008538264.tif 000004
【図３】
2008538264.tif 000005
【国際調査報告】
2008538264.tif 000006
2008538264.tif 000007
2008538264.tif 000008
2008538264.tif 000009
2008538264.tif 000010