(57)【要約】  【解決手段】  認証メカニズムが、計算機器のユーザによって個別の基準で投入されることが可能であって、かつ認証局のような役割を果たすことが認められる実体の証書からなる信用ある人々の記憶を使用する。結果として、各機器が証書を提示するか又は信用ある人々の記憶中で機器によって署名された証書チェーンを提示する限り、例え機器が証書を提示しなくとも、第三者認証局によって署名された証書チェーンを提示しなくとも、ピアツーピア接続が生成できる。リモートユーザは一度認証されると、ローカルプロセスにユーザ役を演じてもらい、ユーザのパスワード又はパスワードタイプをそのユーザの証書のハッシュに変更後、そのユーザにログインすることによって適切なトークンを生成してホスト機器上の信用あるリソースにアクセスできる。そのトークンは、リモートユーザが信用あるリソースへのアクセスが認証されるか否かを判定するために標準的手法で参照される。【選択図】 図３
2008537256.tif 000002
【特許請求の範囲】
【請求項１】
第１の計算機器の認証を第２の計算機器で実行するための計算機実行可能命令を有する計算機可読媒体であって、前記計算機可読命令が、
前記第１の計算機器からの１つ以上の証書を前記第２の計算機器で受信することと、
前記１つ以上の証書の最後の証書が信用ある人々の記憶の実体によって署名されているか否かを判定することからなり、前記信用ある人々の記憶の実体が前記第２の計算機器の信用ある人々の記憶中に配置された署名入り証書によって識別され、及びさらに前記第２の計算機器の前記信用ある人々の記憶が前記第２の計算機器の信用あるルートの記憶とは異なる証書からなっており、
更に、前記１つ以上の証書の最初の証書が前記第１の計算機器を識別するか否かの判定と、
前記１つ以上の証書の各証書が前記１つ以上の証書の以前の証書によって認証されるか否かの判定と、
前記１つ以上の証書のうち前記最後の証書が前記信用ある人々の記憶の実体によって署名され、前記１つ以上の証書の前記最初の証書が前記第１の計算機器を識別し、かつ前記１つ以上の証書の各証書が前記１つ以上の証書の前記以前の証書によって認証されている場合、前記第１の計算機器を認証することと、からなるステップを実行する計算機実行可能命令を有する計算機可読媒体。
【請求項２】
前記第２の計算機器の前記信用ある人々の記憶が、前記第２の計算機器のユーザによって信頼できると見なされた実体の署名入り証書からなっており、該署名入り証書が前記第２の計算機器の前記ユーザの指示で前記第２の計算機器の前記信用ある人々の記憶中に配置されていることを特徴とする請求項１記載の計算機可読媒体。
【請求項３】
前記１つ以上の証書がグループ証書で終了する証書チェーンからなり、前記グループ証書は、前記信用あるルートの記憶又は前記信用ある人々の記憶の何れの中にも格納されずに個別基準でルートの証書として提供されることを特徴とする請求項１記載の計算機可読媒体。
【請求項４】
前記第２の計算機器の前記信用ある人々の記憶が、前記第２の計算機器上に現在ログオンしたユーザに対応するログオンユーザの信用ある人々の記憶であって、さらに前記第２の計算機器の各ユーザが対応する信用ある人々の記憶を有することを特徴とする請求項１記載の計算機可読媒体。
【請求項５】
前記第２の計算機器の前記信用ある人々の記憶中の署名入り証書によって識別された各実体が前記第２の計算機器上に対応するアカウントを有することを特徴とする請求項１記載の計算機可読媒体。
【請求項６】
前記計算機実効可能命令が、さらに、前記第１の計算機器のユーザから前記第２の計算機器上の信用あるリソースにアクセスするためのリクエストを受信することと、
前記第２の計算機器上の前記ユーザのアカウントのパスワード要素を変更することと、
前記変更されたパスワード要素を使用して前記ユーザアカウントへログインすることによって前記ユーザ役を演じ、前記ユーザのアカウントへの前記ログインがトークンを生成する事と、
前記トークンを用いて前記信用あるリソースにアクセスすることと、及び
前記第１の計算機器にて前記ユーザへの前記アクセスの結果を提供することとからなるステップを実行することを特徴とする請求項１記載の計算機可読媒体。
【請求項７】
前記ユーザのアカウントへの前記ログインがリモートプロシージャコールを介してカーネルモードプロセスへ証明書及び前記変更されたパスワード要素を供給することを含むことを特徴とする請求項６記載の計算機可読媒体。
【請求項８】
第２の計算機器にて信用あるリソースへアクセスするために、第１の計算機器にてユーザに権限を付与するための計算機実行可能な命令を有する計算機可読媒体であって、前記計算機可読命令が
前記ユーザから前記第２の計算機器上の前記信用あるリソースにアクセスするためのリクエストを受信することと、
前記第２の計算機器上の前記ユーザのアカウントのパスワード要素を変更することと、
前記変更されたパスワード要素を使用して前記ユーザのアカウントへログインすることによって前記ユーザ役を演じ、前記ユーザのアカウントへの前記ログインがトークンを生成する事と、
前記トークンを用いて前記信用あるリソースにアクセスすることと、及び
前記第１の計算機器にて前記ユーザへの前記アクセスの結果を提供することとからなるステップを実行することを特徴とする計算機可読媒体。
【請求項９】
前記ユーザアカウントの前記パスワード要素の前記変更が、前記ユーザアカウントへログインするために前記ユーザの証書のハッシュを使用できるようにパスワードプロトコルを変更することからなる請求項８記載の計算機可読媒体。
【請求項１０】
前記ユーザアカウントへの前記ログインが、リモートプロシージャコールを介して高特権プロセスへ証明書及び前記変更したパスワード要素を提供することからなる請求項８記載の計算機可読媒体。
【請求項１１】
前記結果の提供は、前記トークンを用いた前記信用あるリソースのアクセスが成功しなかった場合、前記第１の計算機器の前記ユーザへ失敗表示を与えることと、前記トークンを用いた前記信用あるリソースのアクセスが成功した場合、前記第１の計算機器の前記ユーザへ前記信用あるリソースからのデータを与えることからなり、前記データがバイト送信型命令（send-bytes-type command）を介して取得されていることを特徴とする請求項８記載の計算機可読媒体。
【請求項１２】
前記計算機実行可能命令が、さらに、
前記第１の計算機器から１つ以上の証書を前記第２の計算機器で受信することと、
前記１つ以上の証書の最後の証書が信用ある人々の記憶の実体によって署名されているか否かを判定することからなり、前記信用ある人々の記憶の実体が前記第２の計算機器の信用ある人々の記憶中に配置された署名入り証書によって識別され、及びさらに前記第２の計算機器の前記信用ある人々の記憶が前記第２の計算機器の信用あるルートの記憶とは異なる証書からなっており、
更に、前記１つ以上の証書の最初の証書が前記第１の計算機器を識別するか否かの判定と、
前記１つ以上の証書の各証書が前記１つ以上の証書の以前の証書によって認証されるか否かの判定と、
前記１つ以上の証書のうち前記最後の証書が前記信用ある人々の記憶の実体によって署名され、前記１つ以上の証書の前記最初の証書が前記第１の計算機器を識別し、かつ前記１つ以上の証書の各証書が前記１つ以上の証書の前記以前の証書によって認証されている場合、第１の計算機器を認証することと、からなるステップを実行する計算機実行可能命令を特徴とする請求項８記載の計算機可読媒体。
【請求項１３】
前記第２の計算機器の前記信用ある人々の記憶が、前記第２の計算機器のユーザによって信頼できると見なされた実体の署名付きの証書からなり、該署名付き証書が前記第２の計算機器の前記ユーザの指示で前記第２の計算機器の前記信用ある人々の記憶中に配置されていることを特徴とする請求項１２記載の計算機可読媒体。
【請求項１４】
前記第２の計算機器の前記信用ある人々の記憶が前記第２の計算機器上に現在ログオンしているユーザに対応するログオンユーザの信用ある人々の記憶であって、さらに前記第２の計算機器の各ユーザが対応する信用ある人々の記憶を有することを特徴とする請求項１２記載の計算機可読媒体。
【請求項１５】
信用ある人々の記憶とは異なる署名付き証書からなる信用あるルートの記憶を含み、
前記信用ある人々の記憶が前記計算機器のユーザによって信頼できると見なされた実体の署名付き証書からなり、前記署名付き証書が前記ユーザの指示で前記信用ある人々の記憶中に配置されており、
更に、ネットワークインタフェースを含み、該ネットワークインタフェースは、別の計算機器からの１つ以上の証書の受信からなるステップを実行し、
処理装置を含み、該処理装置は、前記１つ以上の証書の最後の証書が信用ある人々の記憶の実体によって署名されている場合、前記別の計算機器を認証することからなるステップを実行し、前記１つ以上の証書の最初の証書が前記別の計算機器を識別し、かつ前記１つ以上の証書の各証書が前記１つ以上の証書の以前の証書によって認証される場合、前記信用ある人々の記憶の実体が前記信用ある人々の記憶中の署名付き証書によって識別されることを特徴とする計算機器。
【請求項１６】
前記ネットワークインタフェースがさらに前記別の計算機器上のユーザからの前記計算機器上の信用あるリソースへアクセスするリクエストの受信からなるステップを実行し、および前記処理装置がさらに前記計算機器上の前記ユーザのアカウントのパスワード要素の変更と、前記変更したパスワード要素を使用し、前記ユーザのアカウントへログインすることによって前記ユーザ役を演ずることからなるステップを実行し、前記ユーザのアカウントへの前記ログインがトークンを生成し、前記トークンを使って前記信用あるリソースにアクセスし、及び前記別の計算機器にて前記ユーザへ前記アクセスの結果を提供することを特徴とする請求項１５記載の計算機器。
【請求項１７】
前記ユーザのアカウントの前記パスワード要素の前記変更が、前記ユーザのアカウントへログインするために前記ユーザの証書のハッシュを使用できるようにパスワードプロトコルを変更することからなる請求項１６記載の計算機器。
【請求項１８】
前記ユーザのアカウントへの前記ログインが、リモートプロシージャコールを介して前記計算機器上のカーネルモードのプロセスに証明書及び前記変更されたパスワード要素を供給することを特徴とする請求項１６記載の計算機器。
【請求項１９】
前記信用ある人々の記憶が前記計算機器の各ユーザに特定であることを特徴とする請求項１５記載の計算機器。
【請求項２０】
前記信用ある人々の記憶中の署名入り証書によって識別された各実体が前記計算機器上に対応するアカウントを有することを特徴とする請求項１５記載の計算機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にピアツーピア通信に関し、さらに具体的にはピアツーピアネットワークにおいて仲間（ピア）を認証及び権限付与するためのメカニズムに関する。
【背景技術】
【０００２】
従来、ネットワーク接続は、クライアント計算機器とサーバ計算機器との間で形成され、そこではサーバがデータの中央の保存場所として動作する。それ故、クライアントの要求を遂行する特定のサーバをクライアントが選択し、そのサーバへの接続を試みる。サーバへの接続の試みの中で、クライアントは、身分を証明するもの及び、しかるべき場合、保護された情報に対してクライアントアクセスを許すようなパスワード又は同様のセキュリティ情報を差し出す。サーバは、そのクライアントの身分証明及び、必要であれば、セキュリティ情報と、そのサーバがアクセス許可に同意済みのクライアント群のデータベースとを比較する。クライアントの身分証明及びセキュリティ情報がそのデータベース中のエントリと一致する場合、サーバはそのクライアントのアクセスを許可する。
【０００３】
しかし上記システムは、クライアントがサーバの身元を検証できるいくつかの仕組みを有していると仮定している。例えば多くのクライアントは、電話会社によって割り当てられたサーバへの電話番号をダイヤルすることによってモデム接続を介し、特定のサーバと接続してきた。この場合、その電話番号は、電話会社によって割り当てられた目的地のみに接続されることが保証されているので、クライアントの認証情報が適切なサーバに受信されているということをクライアントは確かめることができる。しかし、インターネットおよびワールドワイドウェブ（ＷＷＷ）の成長が顕著になるにつれ、ルータとして知られる仲介の計算機器を通過する専用のネットワーク接続を介するクライアントとサーバ間の接続がますます多く形成された。このルータは、頻繁に変えられるインターネットアドレスに人が読めるサーバ名と関連付ける経路指定テーブル又は同様の情報を基本としてクライアントの通信を特定のサーバへ導く。１つ以上の経路指定テーブルが危険にさらされた場合、クライアントの通信は、不適切なサーバへと導かれる。自らを適切なサーバとして提示しているこのような不適切なサーバは多くの場合、クライアントの認証情報を取得することを目的としている。したがって、サーバが実際にそれ自身が提示しているものであることをクライアントに証明できるようなサーバメカニズムの必要性が発生した。
【０００４】
認証局（ＣＡ）は、クライアントが通信しているそのサーバが実際にそれ自身が提示しているものであることを独立して検証する機能を果たす。具体的に言うとサーバは、クライアントが信用する第三者認証局と共にクライアントが検証できる、署名付き証書（ｃｅｒｔｉｆｉｃａｔｅ）のような保護された識別子をクライアントに提供する。今日採用されている一共通メカニズムでは、クライアントが保護された識別子をデコードするために使用する認証局の公開キーは、信頼できる方法で、クライアントが受信しているので、クライアントは、その保護された識別子を検証できる。このメカニズムを使用し、サーバがクライアントに提出した保護された識別子は、認証局の非公開キーによって署名されたそのサーバの証書になり得る。その認証局だけが認証局の非公開キーにアクセスでき、かつ認証局の公開キーだけが署名付き証書のようなものをデコードできるため、認証局の公開キーを使用して、署名付き証書がクライアントによって適切にデコードされる場合、クライアントは、その認証局がその証書に署名し及びその中に含まれる情報を検証したと判定する。クライアントが一度そのサーバが称しているものを納得すると、前述したようにクライアントは、そのサーバによる自身の識別に進める。
【０００５】
しかし、ピアツーピアネットワークでは、クライアントが接続できる中央サーバは存在しない。代わりにクライアント計算機器は、一連のクライアント対クライアント接続によるネットワークを形成しながら相互に通信する。クライアント対クライアント接続は、前述の方法で安全とされるが、各個別のクライアント機器が独立した第三者認証局にそれ自身を登録することは、非現実的である。したがって必要なのは、第三者認証局に登録する費用及び複雑さを要求することなく、一クライアントが別のクライアントに対してそれ自身を認証できるメカニズムである。同様に、一度クライアントが認証された時、一クライアントが別のクライアントのデータ及びリソースにアクセスできる権限付与のメカニズムの必要性がある。
【発明の開示】
【課題を解決するための手段】
【０００６】
そのために、本発明の一実施形態では、信用ある人々の記憶（ｔｒｕｓｔｅｄ  ｐｅｏｐｌｅ  ｓｔｏｒｅ）が証書と共に手動で投入され、その信用ある人々の記憶中の証書と一致しているクライアントが提示している証書は、第三者認証局の必要性なしに認証される。
【０００７】
別の実施形態では、クライアントの一グループは、特別に作成されたグループ証書を介して認証される。
【０００８】
さらに一実施形態では、クライアント又はクライアントのグループは、クライアントの証書から信用ある人々の記憶又は信用あるルートの記憶（ｔｒｕｓｔｅｄ  ｒｏｏｔ  ｓｔｏｒｅ）の中に存在する証書まで、信用の連鎖を証明する証書チェーンを提示することによって認証される。
【０００９】
さらにもう一つの実施形態では、一クライアントが別のクライアントによって一度、認証されると、第２のクライアント上の第１のクライアントのアカウントのパスワードを既知の値に変更し、その後第２のクライアントのデータ及びリソースへのアクセスを許可するために使用できるユーザトークンを生成するために第１のクライアントにログインすることによって、他のクライアント上のデータ及びリソースへのアクセスが許可される。
【００１０】
ここでの説明は、主にピアツーピアネットワークにおける計算機器の認証及び権限付与に焦点を当てているが、より慣習的なクライント―サーバネットワーク環境、又は第三者認証局が実用的ではない場所での任意のネットワークトポロジに対してこの説明が等価的に適用可能であることが十分理解されるだろう。さらに後述は、独立した計算機器上で動作しているプロセスを指しているが、ここで説明したメカニズムは、マルチプロセス、又はマルチプロセス風の動作を有する単一の計算機器に等価的に適用できる。添付の図の参照と共に進行する例示した実施形態についての以下詳細な説明から本発明の追加的な特徴及び利点が、はっきりと理解できるであろう。
【発明を実施するための最良の形態】
【００１１】
添付の請求項は詳細に本発明の特徴を説明しているが、目的及び利点と共に本発明が添付の図面と一緒に以下の詳細な記述から視覚的にはっきりと理解されるだろう。
【００１２】
計算機器上の信用ある人々の記憶は、信用ある機器に関する情報と共に手動で投入され、かつ第三者認証局（ＣＡ）による署名付きの証書の費用及び複雑さに頼ることをせずに信用ある機器が計算機器に対して自らを認証できるように使用される。本質的に、それら情報がその信用ある人々の記憶内に配置されている信用ある機器を選択しながら、認証局の機能が、ユーザによって、又は計算機器上の信用あるプロセスによって、手動で実行される。識別情報を送信している機器が実際に信用ある機器かを計算機器に判定させるために、その情報は、一度信用ある人々の記憶において、他の機器から受信した識別情報と比較される。
【００１３】
機器が一度認証されると、その認証された機器向けに適切なユーザトークンを生成することによってデータ及び計算機のリソースへのアクセスが許可される。信用ある機器に対応するアカウント用のパスワードは、信用ある人々の記憶中にストアされた情報から取得される識別子のような既知の数量へカーネルモードで動作するプロセスによって変更される。一度変更されると、そのユーザトークンが認証された機器へのログインによって生成され、それによって特定のリソース及びデータへアクセスするようにそれに権限付与される。
【００１４】
機器の認証とシステムリソース及びデータへのアクセス権限の付与の双方のために、下位互換性を最大に提供し、及び認証及び権限付与の機能が可能な限り効果的に設計されるように、既存のソフトウェア及びハードウェアコンポーネントを利用する。
【００１５】
図面では、同一の参照番号は同一の要素を参照しており、図１中に示される計算機器（１００）のように、本発明では内部接続された計算機器との関連で実装されるものとして図的に記述する。必須ではないが、本発明は、この計算機器によって実行される、プログラムモジュールのような、計算機実行可能な命令としても一般的関連で記述する。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、及び特定のタスクを実行又は特定の抽象データタイプを実装する同種のものを含む。さらに当業者は、本発明が携帯端末、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能な家庭用電化製品、ネットワークＰＣ、マイクロコンピュータ、メインフレームコンピュータ、及び同種のものを含む、多くの異なる計算機器と共に実践できることに気づくであろう。前記のように、本発明は、通信ネットワークを経由してリンクされたリモートプロセッシング機器によって実行されるタスクである分散計算機環境で実践されてもよい。分散計算機環境では、プログラムモジュールは、ローカル及びリモート双方のメモリストレージ機器内に配置されてもよい。
【００１６】
図１では、本発明が実装される典型的な計算機器（１００）を示す。計算機器（１００）は、適合する計算機器の一例にすぎず本発明の使用又は機能の範囲に関していかなる制限も示す意図はない。典型的な計算機器（１００）は、メモリパーティション、仮想マシン、マルチプロセッサ、又は１つの物理的コンピューティング構造に多重計算機器に属するような後述の動作を実行させる同様なプログラミングテクニックを経由するような１つ以上の仮想計算機器を実装できる。
【００１７】
本発明は、プログラムモジュールのような、計算機によって実行され得る計算機実行可能な命令の一般的コンテキストにて説明される。プログラムモジュールは、一般に特定のタスクの実行又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などを含む。分散計算機環境においては、タスクは、コミュニケーションネットワークを経由してリンクされたリモートプロセッシング機器によって実行され得る。分散計算機環境において、プログラムモジュールが、メモリストレージ機器を含むローカル及びリモート双方のコンピュータストレージメディア中に配置されてもよい。
【００１８】
計算機器（１００）のコンポーネントは、限定しないが、処理ユニット（１２０）、システムメモリ（１３０）、及び処理ユニット（１２０）とシステムメモリを含む様々なシステムコンポーネントとを接続するシステムバス（１２１）を含み得る。システムバス（１２１）は、メモリバス又はメモリコントローラ、周辺バス、及び様々なバスアーキテクチャの中から任意のものを使用するローカルバスを含むバス構造の数種のうち任意のものであり得る。例であって限定しないが、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、画像電子機器標準化団体（ＶＥＳＡ）ローカルバス、及び周辺機器相互接続（ＰＣＩ）バスまたメザニン（Ｍｅｚｚａｎｉｎｅ）バスとして知られているものも含む。さらに処理装置（１２０）は、１つ以上の物理プロセッサ又はプロセッシングコアを含む。
【００１９】
計算機器（１００）は、一般に多様な計算機可読媒体を含む。計算機可読媒体は、計算機器（１００）によってアクセス可能な任意の有効な媒体であって、揮発性及び不揮発性媒体、取り外し可能及び取り外し不可能媒体の双方を含む。例であって限定しないが、計算機可読媒体は、コンピュータストレージメディア及び通信媒体からなってもよい。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータのような情報のストア用の任意の方法又は技術で実装された揮発性及び不揮発性媒体、取り外し可能及び取り外し不可能媒体の双方を含む。コンピュータストレージメディアは、限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は別の磁気ストレージ機器、又は所望の情報をストアするのに使用でき計算機器（１００）によってアクセスできる他の任意の媒体を含む。通信媒体は、一般にコンピュータ可読命令、データ構造、プログラムモジュール又は搬送波のような変調データ信号又は他の移送メカニズム内の他のデータを包含し、及び任意の情報伝達媒体を含む。語句「変調データ信号」は、その特徴の組を１つ以上有するか又はその信号内の情報を暗号化する方法で変更された信号であることを意味する。例であって限定しないが、通信媒体は、ワイヤードネットワーク又は直接ワイヤード接続のようなワイヤードメディア、及び音響、無線、赤外線および他のワイヤレスメディアを含む。上記の任意の組み合わせもまた計算機可読媒体の範囲内に含まれる。
【００２０】
システムメモリ（１３０）は、読み取り専用メモリ（ＲＯＭ）（１３１）及びランダムアクセスメモリ（ＲＡＭ）（１３２）のような揮発性及び／又は不揮発性のメモリの形式のコンピュータストレージメディアを含む。スタートアップの間のようにコンピュータ（１１０）内部の要素間で情報の伝達を援助する基本ルーチンを含む、基本的な入力／出力システム（１３３）（ＢＩＯＳ）は、一般にＲＯＭ（１３１）内にストアされる。ＲＡＭ（１３２）は、一般に処理装置（１２０）によって直接アクセスされるか及び／又はその上で現在動作しているデータ及び／又はプログラムモジュールを含んでいる。例であって限定しないが、図１は、オペレーティングシステム（１３４）、アプリケーションプログラム（１３５）、他のプログラムモジュール（１３６）、及びプログラムデータ（１３７）を例示している。
【００２１】
計算機器（１００）は、また別の取り外し可能／取り外し不可能式、揮発性／不揮発性のコンピュータストレージメディアも含んでもよい。例に過ぎないが、図１は、取り外し不可能式、不揮発性の磁気媒体から読み込み又は書き込むハードディスクドライブ（１４１）、取り外し可能式、不揮発性の磁気ディスク（１５２）から読み込み又は書き込む磁気ディスクドライブ（１５１）、及びＣＤ  ＲＯＭ又は別の光媒体のような取り外し可能式、不揮発性の光ディスク（１５６）から読み込み又は書き込む光ディスクドライブ（１５５）を例示している。典型的な動作環境において使用される別の取り外し可能式／取り外し不可能式、揮発性／不揮発性のストレージメディアが、限定しないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ、及び同種のものを含む。ハードディスクドライブ（１４１）は、一般にインタフェース（１４０）のような取り外し不可能式のメモリインタフェースを介してシステムバス（１２１）に接続し、及び磁気ディスクドライブ（１５１）及び光ディスクドライブ（１５５）は、一般的にインタフェース（１５０）のような、取り外し可能式のメモリインタフェースによってシステムバス（１２１）に接続している。
【００２２】
前述した及び図１に例示したドライブ及びそれに関連したコンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール及び計算機器（１００）向けの他のデータのストレージを提供する。図１において、例えばハードディスクドライブ（１４１）は、オペレーティングシステム（１４４）、アプリケーションプログラム（１４５）、他のプログラムモジュール（１４６）及びプログラムデータ（１４７）のストアとして例示されている。ここで留意すべきは、これらのコンポーネントは、オペレーティングシステム（１３４）、アプリケーションプログラム（１３５）、別のプログラム（１３６）、及びプログラムデータ（１３７）と同様のものか又は異なるものでもあり得ることである。オペレーティングシステム（１４４）、アプリケーションプログラム（１４５）、他のプログラムモジュール（１４６）及びプログラムデータ（１４７）は、最小限に異なる複写物であるものを例示するため、ここでは既知だが異なる番号である。ユーザは、キーボード（１６２）及びポインティング機器（１６１）、一般にマウス、トラックボール又はタッチパッドのように呼ばれる入力機器を介して、計算機器（１００）へコマンド及び情報を入力し得る。（示さないが）別の入力機器がマイクロホン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、又は同種のものを含んでもよい。これら及び別の入力機器は多くの場合、システムバスに接続されたユーザ入力インタフェース（１６０）を介して処理装置（１２０）へ接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス（ＵＳＢ）のような別のインタフェース及びバス構造によっても接続され得る。モニタ（１９１）又は別のタイプの表示機器もまたビデオインタフェース（１９０）のようなインタフェースを介してシステムバス（１２１）と接続される。モニタに追加してコンピュータはまたスピーカ（１９７）及びプリンタ（１９６）のような他の周辺出力機器を含んでもよく、それらは、出力周辺インタフェース（１９５）を介して接続され得る。
【００２３】
計算機器（１００）は、ネットワーク環境において、１つ以上のリモートコンピュータへの論理接続を使用して動作できる。図１は、リモート計算機器（１８０）への一般的ネットワーク接続（１７１）を例示している。一般的ネットワーク接続（１７１）及び図１中に例示されたネットワーク接続は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、ワイヤレスネットワーク、イーサネット（登録商標）プロトコル、トークン―リングプロトコルに適応したネットワーク、又はインターネット又はワールドワイドウェブ（ＷＷＷ）を含む他の論理的、物理的、ワイヤレスネットワークを含む、任意の多様な異なるタイプのネットワーク及びネットワーク接続である。
【００２４】
ネットワーク環境内で使用される際に、計算機器（１００）は、ワイヤード又はワイヤレスネットワークインタフェースカード、モデム、又は同類のネットワーク機器であり得るネットワークインタフェース又はアダプタ（１７０）を介して一般的ネットワーク接続（１７１）に接続される。ネットワーク環境において、計算機器（１００）、又はその一部に関連して記述されたプログラムモジュールがリモートのメモリストレージ機器内部にストアされてもよい。示されたネットワーク接続が典型的なものであり、コンピュータ間の通信リンクを確立する別の手段が使用されてもよいことが理解されるであろう。
【００２５】
後の説明の中で本発明は、示されていない場合、１つ以上の計算機器によって実行される動作及び操作のシンボリック表示への参照を伴って記述される。そのような動作や操作それ自体は、コンピュータ実行されるものとして何度も参照され、構造化された形式でデータを表現している電気的信号の計算機器の処理装置による操作を含む。この操作は、データを変換し、又はその計算機器のメモリシステム内の場所でそれを維持管理し、それらは再構成され、さもなければ当業者によってよく理解された方法で計算機器の動作が変更される。データが維持管理されるデータ構造は、データのフォーマットによって定義された特定のプロパティを有するメモリの物理的な位置である。しかし、本発明は前述の文脈において記述されているが、当業者がここで後に説明される多様な動作及び操作がまたハードウェアでも実現され得ると理解するように、それを限定するつもりはない。
【００２６】
図２では、計算機器（２０１）及び計算機器（２０２）の間の一連の通信が例示されている。計算機器（２０１）及び（２０２）は、詳細に前述した計算機器（１００）と同タイプの計算機器か又は、限定しないが、携帯端末、ラップトップ計算機器、メインフレーム計算機器、タスクスペシフィック計算機器、及び同種のものを含む、前記リストした別のタイプの任意の計算機器でもあり得る。図２中に例示されるように、計算機器（２０１）及び（２０２）は、双方ともマルチクライアントネットワークのハブとして設計された専用サーバとして動作する計算機器でない限り、「ピア同士」である。代わりに計算機器（２０１）及び（２０２）は、おそらく同種の計算能力を構成し、及びおそらく１人以上の人間のユーザによって直接使用される。しかし、当業者にとって明らかなようにピア計算機器は、ピアとして動作するためにコンピュータ的に同種である必要はない。
【００２７】
ピアツーピアネットワーク通信接続は、計算機器（２０１）と計算機器（２０２）の間で形成され得る。図２は、一般に使用される「トランスポート層セキュリティ（ＴＬS）プロトコルと呼ばれるセキュリティプロトコルを例示している。後述ではＴＬＳプロトコルに焦点を当てるが、当業者にとってわかるように、本発明はこのプロトコルに限定せずに、本発明の実施形態によって意図された認証メカニズムを実行できるように各計算機器（２０１）及び（２０２）に計算機器（２０１）及び（２０２）に十分な多くの別のプロトコルが提供される。
【００２８】
図２中に例示されるように、ＴＬＳプロトコルは、ClientHello構造からなる、１つ以上の開始メッセージ（２１０）を別のピア機器へ送信する１つのピア機器である、本例では計算機器（２０１）によって開始される。このClientHello構造は、特に、現在時刻、ランダム値、機器（２０１）によってサポートされる暗号アルゴリズムのリスト、及び機器（２０１）によってサポートされる圧縮アルゴリズムのリストからなる。図２中に例示された通信を説明するために、「クライアント」及び「サーバ」という語句は、ＴＬＳプロトコルによって使用されるものと同様に使用され、すなわち、「クライアント」は、通信を開始する計算機器であり、及び「サーバ」は、開始されている通信を有する計算機器である。付け加えると、当業者によってわかるように、ClientHello構造からなるメッセージ（２１０）が、開始メッセージのように例示されているが、図２中に例示された通信は、計算機器（２０１）がClientHello構造を送信することの計算機器（２０２）からのリクエストによっても同等に開始され得る。この場合、計算機器（２０２）からのリクエストは、前述のClientHello構造からなるメッセージ（２１０）によって応答される。
【００２９】
メッセージ（２１０）への応答として、計算機器（２０２）は、ServerHello構造、機器（２０２）に関する証書又は証書チェーン、ServerKeyExchange構造、CertificateRequest構造、及びServerHelloDoneメッセージからなるメッセージ（２１２）を送信する。ServerHello構造は、特に、（ClientHello内のランダム値とは異なる）ランダム値、セッション識別子、ClientHello内に提供されたリストから選択された選択暗号化アルゴリズム、及びClientHello内に提供されたリストから選択された選択圧縮アルゴリズムから構成される。前記証書又は機器（２０２）に関する証書は、さらに詳細に後述するように、ServerHello構造内で指定された選択暗号化アルゴリズムに対して適切な証書又は証書チェーンからなる。ServerKeyExchange構造は、公開キーのような情報からなり、プレマスタ・シークレット（乱数）の通信を保護するため、又はプレマスタ・シークレット内のキー交換結果を完了するために計算機器（２０１）によって使用される。証書又は証書チェーンが計算機器（２０１）がプレマスタ・シークレットを交換可能な十分な情報を含む場合、メッセージ（２１２）は、ServerKeyExchange構造を含む必要はない。CertificateRequest構造は、計算機器（２０１）がその証書を提供するというリクエストと、さらにリクエストされた証書のタイプリスト及び受け付けられる証書の権限付与のリストとからなり得る。そしてServerHelloDoneメッセージは、メッセージ（２１２）として送信される前述した情報送信の完了を示す。
【００３０】
メッセージ（２１２）に応答して、計算機器（２０１）は、信用ある人々の記憶（２０３）又は信用あるルートの記憶（２０５）のいずれかの中にストアされた証書を参照することによって、計算機器（２０２）を認証するためにメッセージ（２１２）を介して受信した証書又は証書チェーンを使用できる。さらに具体的に言うと、より詳細に後述するように、計算機器（２０１）は、メッセージ（２１２）を介して受信した証書又は証書チェーンと、信用ある人々の記憶（２０３）又は信用あるルートの記憶（２０５）中の証書へ戻るチェーンのいずれか中にストアされた証書を比較できる。計算機器（２０２）が認証される場合、計算機器（２０１）は、計算機器（２０１）に関する証書又は証書チェーン、ClientKeyExchange構造、CertificateVerify構造、ChangeCipherSpecメッセージ、及びFinishedメッセージからなるメッセージ（２１４）を送信できる。証書又は機器（２０１）に関する証書は、さらに詳細に後述するように、メッセージ（２１２）のServerHello構造中に指定された選択された暗号化アルゴリズムに対して適切な証書又は証書チェーンからなり得る。ClientKeyExchange構造は、プレマスタ・シークレットの暗号化バージョン、又は計算機器（２０１）及び（２０２）の双方に関して独立して同じプレマスタ・シークレットを導き出すのに十分な情報からなり得る。CertificateVerify構造は、機器（２０１）の証書又は複数の証書の明示的な検証を提供する。ChangeCipherSpecメッセージは、前述のように、メッセージ（２１４）中に含まれる情報の送信が完了したということを示す次のFinishedメッセージを送信するため、計算機器（２０１）が同意した暗号化アルゴリズムを採用し、同意したキーと共にそれを使用することを示す。
【００３１】
メッセージ（２１４）中の機器（２０１）から証書又は証書チェーンの受信後、計算機器（２０２）は、さらに後で詳述する方法で、信用あるルートの記憶（２０６）又は信用ある人々の記憶（２０４）中にストアされた証書を参照することによって計算機器（２０１）を認証するために証書又は証書チェーンを使用できる。計算機器（２０１）が認証される場合、機器（２０２）は、適切な暗号化アルゴリズム及び暗号化キーが使用されているかを確認するためにメッセージ（２１４）の一部として送信されたFinishedメッセージを検証する。計算機器（２０２）は、続いて機器（２０２）が次の通信を暗号化するための同意された暗号化アルゴリズム及びキーを用いることの指標、及び指示されたように暗号化されたFinishedメッセージからなるメッセージ（２１４）を送信する。
【００３２】
計算機器（２０１）がメッセージ（２１４）の一部として送信されたFinishedメッセージを適切にデコードできた場合、それは機器（２０２）が適切な暗号化アルゴリズム及びキーを使用していることが検証できる。機器（２０１）及び（２０２）の双方とも相互に認証し合い、及び共通の暗号化アルゴリズム及びキーの組を確立しているので、安全とされる方法でデータ（２２０）を交換するために次に進むことができる。
【００３３】
前述したように、従来、証書が認証局（ＣＡ）によって署名されるので、証書が計算機器を認証する。１つの既知のメカニズムにおいて、認証局は認証局の非公開キーを使用して、証書自身からのデータのような、データをいくつか暗号化することによって証書に署名する。当業者にとって知られているように、非公開キーは、単一のエンティティによって秘密に維持管理され、対応する公開キーによってあとで複号化する情報の暗号化のために使用される。非公開キーは、公開キーから導くことはできないので、公開キーが広く流通される。したがって、計算機器が認証局の公開キーを知っていて、かつ証書中の暗号化されたデータを適切にデコードできる場合、計算機器は、認証局がその証書に署名したと判定できる。さらに計算機器が認証局を「信用する」ならば、計算機器は、署名付きの証書を提示している機器にその信頼を拡張することができ、ゆえにその機器を認証できる。
【００３４】
従来、認証局は情報を検証し証書に署名することをビジネスとする企業及び内部ネットワークに関して、企業の情報技術（ＩＴ）部門を含む。例えば、企業のＩＴ部門によって維持管理され、保護される企業のネットワークにおいて、他の従業員によって信用できることを示すために、そのＩＴ部門は、認証局のような役割を果たし、その企業の従業員の証書に署名する。しかし、このような認証局は、企業のイントラ通信に対して有効であるに過ぎない。従業員が、その企業の外部の計算機器と接続しようとする場合、外部の機器は、その企業のＩＴ部門を信用ある権限付与者であると認めず、結果として、その企業のＩＴ部門によって署名された証書を基にしてその従業員を認証しないであろう。このような場合、情報を検証することをビジネスとするような会社である第三者認証局が利用される。例えば、第三者会社は、独立した認証局のように行動でき、その認証局によって署名された証書を提供することを望んでいる者は、その会社が証書に署名する前に要求者の身元及び正当性を検証できるように様々な情報を提供することを要求される。会社が証書への署名に先んじて情報を念入りに検証する場合、信用に値する認証局としての評判を大きくでき、異なる企業エンティティのように異なる環境からの２つ以上の計算機器が相互に認証できるように利用される。
【００３５】
認証局からの証書は、証書内部に含まれた暗号化された情報が認証局自身の非公開キーによって暗号化されているため、「自署（ｓｅｌｆ−ｓｉｇｎｅｄ）」であると呼ぶ。このような認証局からの自署証書は「ルートの」証書として知られ、信頼できる方法で１つ以上の計算機器へ配信される。例えば、前述した企業シナリオにおいて、企業のＩＴ部門を認証局のように行動させるルート証書は、ＩＴ部門によって各計算機器上にプレインストール又は、ポータブルのストレージメディアを使用してＩＴ部門のメンバーによって手動でインストールできる。この場合、企業の計算機器のうち１つが相互に接続しようとするとき、それは、企業のＩＴ部門によって署名された証書を提示できる。暗号化された情報を解読するため、及びそれによって証書を検証するのに必要とされる公開キーがすでにルート証書の一部として機器上にあるので、他の機器がその証書を検証することが可能である。同様に独立した第三者認証局用のルート証書は、製造者によって計算機器上にプレインストール可能か又はウェブブラウザ又は既知のソフトウェア会社又は機構製のファイル転送プログラムのような個人ユーザが信頼しているソースからのソフトウェアと共にバンドルすることが可能である。この場合、一計算機器が別の計算機器に、知られている第三者認証局によって署名された証書を提示する場合、別の計算機器は、その証書を検証し、かつ第１の計算機器を認証できる。なぜならば第三者認証局の自署証書がプレインストールされたという事実によって、それによって別の計算機器に認証局の公開キーを提供し、及び暗号化した情報が認証局の非公開キーを使用し暗号化されたということを検証させることができ、それによって現在の機器を認証させることができるからである。
【００３６】
残念なことに前述したように、独立した第三者認証局は、証書に署名するのに多くの場合、支払を要求し、個人、小組織、教育協会、慈善事業者、及び同種のものに対して前記認証局を使用することを実用的でないものにしている。例えば、小さな天文クラブでは、専門のサーバ計算機器の購入をクラブが節約し、ピアツーピア接続からなるネットワークを通してメンバーに天文のデジタル写真を共有させたいだろう。同様に、ゲームをプレイし又は友人とファイルを共有するためにピアツーピアネットワークを設定したい個人もいるであろう。いずれの場合も、高価な第三者認証局を基本にしないで前記ピアツーピアを確立しようとしている計算機器を認証するためのメカニズムが必要とされている。
【００３７】
図３では、本発明の一実施形態による機器認証のための一メカニズムが例示されている。従来、前述したように、信用あるいくつかの方法を通して計算機器上に認証局用のルート証書が事前にストアされている。前記証書は、認証局及びその公開キーを識別し、及び対応する非公開キーを使用し自署している。機器上にストアされたとき、ルートの証書は、共通の場所にストアされ、「信用あるルートの記憶」として呼ばれる。当業者にとって認識されるように、図２中に例示された、信用あるルートの記憶（２０５）及び（２０６）のような信用あるルートの記憶は、特定のフォルダ又は同様のファイルシステムエンティティである必要はないが、所与の計算機器のファイルシステム内部の位置のどこであっても、ルートの証書の概念化された集合体を参照することだけは可能である。
【００３８】
したがって、図３中に示すように、本発明の一実施形態によって接続している機器を認証するために、受信機器は、ステップ（３０１）によって例示されるように証書を最初に受信できる。次にステップ（３０３）で、受信機器は、それが受信した証書が、信用あるルートの記憶内に証書がストアされている認証局によって署名されたものか否かを判定できる。接続機器は、しばしば証書のチェーンを提供し、そのチェーン中の最初の証書が自身の証書である。その最初の証書は、証書チェーン中の次の証書の中で指定された公開キーを用いて解読され得る暗号化部分を含むことができる。その非公開キーの所有者のみが暗号化部分を作ることができるので、最初の証書の暗号化部分は、第２の証書に対応しているエンティティによる第１の証書の検証として働く。この方法で各証書は、証書チェーン中の後続の証書によって正当性が立証される。しかし最終的に、信用あるルートの記憶中にストアされた証書を有する認証局によって署名された証書を伴ってそのチェーンが終了しない場合、受信計算機器は接続しているその機器を認証しない。
【００３９】
したがってステップ（３０３）では、まず接続している機器によって送信された証書が、受信機器の信用する認証局によって認証されるかを受信機器が判定する。前述のように、クライアントの信用あるルートの記憶中に認証局の証書がストアされている場合、その認証局はクライアントによって信用されている。また前述のように、その認証局によって指定された公開キーによってのみ解読される暗号化データを含むときは、その認証局によって暗号化されたということを示し、その認証局のみが自身の非公開キーにアクセスできるので、証書はその認証局によって認証されていると判定できる。証書チェーンが送信された場合、ステップ（３０３）で受信機器は、そのチェーン中の最後の証書が受信機器の信用する認証局によって認証されたかを判定できる。
【００４０】
証書が受信機器が信用する認証局によって認証される場合、ステップ（３０７）で示されるように、受信機器は次に、その証書が接続している機器に対応しているかを判定できる。その証書が証書チェーン中の最後の証書のみであったなら、接続している機器を識別しない。しかし、接続している機器が単一の証書のみを送信する場合、その証書は、受信機器が信用する認証局によって認証されていて、かつ、接続している機器を適切に識別していなければならない。これらの双方の場合、受信機器は、図３中のステップ（３１７）によって示されるように接続を許される。
【００４１】
しかし、接続している機器が１つの証書のみを送信し、かつ接続している機器を識別しない場合、受信機器は、その証書がステップ（３０７）で接続している機器を識別せずに、ステップ（３０９）でチェーン中に別の証書がないと判定し、したがってステップ（３１５）によって示されるように接続している機器によって求められた接続を拒否する。証書チェーンが接続している機器を識別した証書で始まっていない場合、受信機器は同様にその接続を拒否する。
【００４２】
ステップ（３０９）で、受信機器が、信用ある認証局によって最後の証書が認証された証書チェーン中に、追加的な証書があると判定した場合、ステップ（３１１）で直前の証書を検査し、またステップ（３１３）に示すように、前の証書が後の証書によって証明されているかを判定する。当業者にとってわかるように、証書チェーン中の各証書が前の証書を証明しない場合、信用関係が崩壊し、及び証書チェーンはそれを送信した機器の証明に失敗する。結果としてステップ（３１３）で、受信機器が、証書チェーン中に断絶（ｂｒｅａｋ）があると判定した時、示したようにステップ（３１５）でその接続を拒否する。しかし、現在検査されている証書が後の証書によって証明される場合、受信機器は、現在検査されている証書がその接続している機器を識別するか否かを判定するためにステップ（３０７）へ戻る。前述のように判定される場合、受信機器は、送信機器を認証し、ステップ（３１７）で接続を許可し、一方判定されない場合、受信機器はまた前述のステップ（３０９）で示されるようにそのチェーン中の証書をさらにチェックする。
【００４３】
しかし前述のように、様々なピアツーピアネットワーク状況の中で、個別の機器に第三者認証局によって署名された証書を呈することを要求することは非実用的である。したがって、本実施形態で意図する「信用ある人々の記憶」が信用あるルートの記憶に付加して使用される。信用あるルートの記憶と同じように、信用ある人々の記憶は、所与の計算機器上の特定のユーザが信用するエンティティからの証書を用いて投入できる。しかし、信用あるルートの記憶と違って、信用ある人々の記憶中にある証書を所有するエンティティは、そのユーザに対して認証局のような動作は許されない。信用ある人々の記憶は、信用あるルートの記憶への参照にて前述したように、計算機器のファイルシステムの特定のセクション又はエレメントを参照する必要はなくむしろ、そのファイルシステム内部のどこに置かれようとも信用ある人々の記憶の一部と考慮される証書すべての概念的集合を指す。
【００４４】
信用あるルートの記憶と信用ある人々の記憶とのもう１つの相違は、信用ある人々の記憶が個人ユーザによってより容易に投入できることである。個人ユーザが潜在的防護（ｐｏｔｅｎｔｉａｌ  ｓａｆｅｇｕａｒｄｓ）を低減可能な信頼できる人を選択できるので、最初そこに証書が配置された選択されたユーザだけに信用ある人々の記憶の適用性を制限することによって、リスクのあらゆる増大を抑えることができる。
【００４５】
ユーザは、多様なメカニズムを通して証書を受信でき、これらの証書が信頼できるか否かを判定できる。例えば、２名の友人は電話又は生の会話を通して自分たちのコンピュータがピアツーピア接続を形成できるようにお互いに証書を電子メール送信することに同意し得る。次にその友人からとされる証書を含む電子メールを友人のうちの一人が受信する場合、受信者は自分の信用ある人々の記憶へその証書を追加することで選択可能な信用できる十分なしるし（ｉｎｄｉｃｉａ）が実現する。代替として、ポータブル計算機可読媒体上の証書を持って来て計算機器に証書を複写すること、又は小包配達サービスを通してポータブル計算機可読媒体上の証書を送るといった物理的な手段によって、帯域外（ｏｕｔ−ｏｆ−ｂａｎｄ）でも受信できる。
【００４６】
計算機器上に信用ある人々の記憶が、一度信用あるエンティティ用に証書を構成すると、そのエンティティは、最初、第三者認証局によって署名された証書を取得せずにその計算機器とピアツーピア接続を形成できる。具体的に言うと、そのエンティティの証書が信用ある人々の記憶中にある場合、証書はエンティティを認証するために使用され得る。例えば、受信計算機器の信用ある人々の記憶中に送信計算機器がそれを識別する自署証書をすでに有する場合、送信計算機器は、自署した証書を提供することによって認証され得る。詳細に前述したように、この自署した証書は、送信機器に関する情報からなり、及びその送信機器の非公開キーによって暗号化された暗号情報からなる。送信機器の自らの証書は、信用ある人々の記憶中にすでにあるので、受信機器は、信用ある人々の記憶中のその証書によって提供される公開キーを使用でき、送信機器によって送信された自署証書の一部である暗号化情報を解読でき、それによって、自署の証書が実際に送信機器の非公開キーによって署名されたか否かを判定でき、それによって送信機器を認証できる。
【００４７】
代替例として、送信計算機器が受信計算機器の信用ある人々の記憶中にストアされたものを識別する第三者によって署名された証書を有することができる。この場合、送信計算機器は、詳細に前述したものと同様な手法で第三者が署名した証書を提供することによって認証され得る。この手法は、（第三者が単に信用あるルートの記憶へ追加された場合のように）第三者によって署名された証書をユーザが受け入れるということを要求せずに、第三者が署名した証書と共にユーザが信用ある人々の記憶中に投入できる追加的利点を有する。したがって、以上のように、信用ある人々の記憶中にストアされた証書は、エンティティを識別することだけを要求され、このような証書は自署した証書のみであるという本発明の基の他いかなる要求もない。
【００４８】
図３のステップ（３０３）で、受信した証書又は証書チェーンが信用あるルートの記憶中のいかなる認証局によっても署名されていないことを受信機器が判定する場合、ステップ（３０５）で信用ある人々の記憶をチェックできる。したがって、これらの機器のうち１つが例えば、受信機器とピアツーピアネットワークを形成することを試行中自署した証書を送信しようとする場合、その機器の証書が信用ある人々の記憶中にあり、かつその機器は自分自身のために認証局として動作できるので自署した証書は、それを十分に認証できる。この方法で、ピアツーピア接続を形成することを求めている機器は、第三者認証局によって署名された証書を有する非効率性と出費の負担を必要としない。
【００４９】
詳細に前述したように、また図３中のステップ（３０７）〜（３１３）によって例示されたように、接続機器は、それを認証するための証書のチェーンを受信機器に送信できる。このような証書のチェーンはルート証書のような、目にすることになるであろうように個人にグループ用に単一の証書を生成できるようにするグループ証書を有している場合、小さな組織、クラブ、慈善団体、又は同種のものの中のエンティティ間のピアツーピア接続を簡単化するために等しく効果的である。数人のメンバーの間でイメージを共有するのを容易にするためにピアツーピアネットワークを確立することを求める上記天文クラブの仮定に戻ると、メンバーの一人はグループ証書を生成可能で、これは詳細に前述したように、自署の証書に類似しており、そのグループ証書を承認する他のメンバーを有している。具体的に言うと、他の各メンバーがグループ証書を「承認」すると、グループのいかなるメンバーも積極的に認証するということを示唆する。結果として、グループ証書は、詳細に前述したように、ルート証書と類似した方法で動作する。しかし、信用あるルートの記憶、又は信用ある人々の記憶へグループ証書を追加し、参加するというセキュリティ問題を回避するために、本発明の一実施形態によって意図する一メカニズムが、それ自身のストレージ中でグループ証書を維持管理し、かつ要求された際、認証プロセスへそれを提供する。したがって前述したように、認証プロセスは次に進み、ルート証書のようにグループ証書を扱うことができる。例えば、任意の別のメンバーとのピアツーピア接続を形成するグループの任意のメンバーにとって、各メンバーはグループ証書によって署名された証書を単に他のメンバーに提示する。グループ証書は、ルート証書のように扱われるため、グループ証書によって署名された証書は。送信メンバーを認証するのに十分である。しかし、グループ証書が信用あるルートの記憶、又は信用ある人々の記憶中に実際には存在しないので、グループ証書を認証プロセスへ提供するメカニズムによって制御可能な、個人を基準にしたグループメンバーの認証が発生する。
【００５０】
さらに、グループ作成者に連絡できない他のメンバーは、証書に署名し、管理者のように証書を発行する権限を有する他の参加グループメンバーの一人に単に願い出る。このメンバーがピアツーピア接続を形成することを求める際、彼等の証書及び別のメンバーの証書からなる証書のチェーンを提示し、そこでは彼等の証書が他のメンバーの証書によって署名されていて、他のメンバーの証書はグループ証書によって署名されている。図３中に示すように、ステップ（３０１）で、受信機器がこの証書チェーンを受信する場合、ステップ（３０３）に示されるように、そのチェーンの最後の証書がルート証書として動作するグループ証書によって署名されているか否か決定する。このような場合、その後受信機器はステップ（３０７）〜（３１３）によって示すようなチェーンを通して、各証書が後続の証書によって署名され、かつチェーン中の最初の証書がピアツーピア接続の生成を求めている機器を識別することを確証するように反復する。前の例ではこのプロセスは、チェーン中の最後の証書すなわち他のメンバーの証書が認証局のように動作するグループ証書によって署名され、参加メンバーの証書が他のメンバーによって署名され、それによってチェーンが完了し、参加メンバーを認証するということを示す。
【００５１】
前述したように証書又は証書チェーンは、詳細に前述したＴＬＳアルゴリズムのようなアルゴリズムの一部として交換される。したがって、ＴＬＳのようなアルゴリズムの能力を利用し、証書が交換された後、前述したステップを実行するための追加的メカニズムを単に挿入することによって、本発明の実施形態によって意図するメカニズムが効果的に実装できる。その挿入は、信用あるルートの記憶中にストアされた認証局を基にした認証された機器であるＴＬＳのようなアルゴリズムの要素に影響するので、本発明の実施形態で意図する追加的なメカニズムは、図３中のステップ（３０３）によって示されるような、このタイプの認証を実行できる。代替として本発明の実施形態で意図するメカニズムは、信用ある人々の記憶中にストアされた認証局を基にして最終的に認証される証書又は証書チェーンを提示するエンティティの認証に排他的に焦点を当てる。
【００５２】
図４を参照すると、前述したメカニズムの１つの可能な実装が、図４中に示したpeerssp.dll（４０３）のようなダイナミックリンクライブラリ（ＤＬＬ）又は同様なコンポーネントを通して存在し得る。peerssp.dll（４０３）は、信用あるルートの記憶、信用ある人々の記憶又はグループ証書を参照することによるような例えば、ピアツーピア接続におけるエンティティ認証能力を含むpeerssp.dll（４０３）の能力にアプリケーションがアクセスできるように、セキュリティサービスプロバイダ（ＳＳＰ）インタフェース（４０５）を提供する。
【００５３】
ピアツーピアネットワークを通して一度、２つ以上の機器が接続されると、機器の１つは、別の機器の信用あるリソースにアクセスすることを求める。この場合、信用あるリソースをホストしている機器は、リクエストしている機器がそれにアクセスすることが許されるか否かを判定することによって、リクエストしている機器へのアクセスを許すか否かを判定する。一般に、ピアツーピアネットワークのコンテキスト以外では、ユーザがそれらのリソースにアクセスを認められている計算機器のアカウントを有している場合、そのユーザは計算機器のそのリソースにアクセスすることが許可される。ユーザがその計算機器上のアカウントにログインするときに計算機器のオペレーティングシステムのローカルシステムオーソリティ（ＬＳＡ）コンポーネントによって生成されるトークンの中にこのアカウント権限が反映される。従来、ユーザはＬＳＡにユーザ名及びパスワードを提供することによってアカウントにログインする。そのユーザ名とパスワードが特定のアカウントに割り当てられたユーザ名とパスワードと一致する場合、そのユーザはＬＳＡによってそのアカウントにログインし、適切なトークンが生成される。
【００５４】
その後、ユーザが信用あるリソースにアクセスすることを求めるとき、オペレーティングシステム、又はユーザがリソースにアクセスすることを許す別のプロセスは、先ずそのユーザが信用あるリソースにアクセスすることを許可されているかを判定するためにユーザのトークンをチェックする。ユーザが許可された場合、オペレーティングシステム又は他のプロセスは、ユーザのリクエストに応答する。さらに具体的に言うと、リソースにアクセスするユーザリクエストは、一般に図４中に例示されるアプリケーション（４０１）のようなアプリケーションを通して作成される。アプリケーション（４０１）は、ユーザの依頼でリクエストのパラメータとして信用あるリソースを指定し、「open file」コマンド、又は同様なコマンドを使用することによって、信用あるリソースへのアクセスを要求する。オペレーティングシステム、又はリソースへのアクセスを認める他のプロセスは、ユーザのトークンをチェック後、ユーザにリソースへのアクセスを認めるか否かを判定する。ユーザが許可される場合、オペレーティングシステム、又は他のプロセスは、成功インジケータを伴って応答する。そのインジケータを受信すると、アプリケーション（４０１）は、その後それらを処理し、ユーザにその情報を提供するために、実際に信用あるリソースの内容を受信するため、「send bytes」又は同様のリクエストを発行する。しかし、そのユーザが許可されない場合、オペレーティングシステム、又は他のプロセスは、ダイアログボックス又は同様の告知形式でアプリケーション（４０１）によってユーザに提示される失敗インジケータを伴って応答する。
【００５５】
ピアツーピアネットワークにおけるユーザは、同様な手段を通してリモート計算機器上の信用あるリソースへのアクセスを許され得る。具体的に言うと、ピアツーピアネットワークを通して通信するアプリケーションは、アクセスするそのユーザ役になって、アクセスされた計算機器上で走っているリモートプロセスを有する。しかし、アクセスされている計算機器上のアクセスユーザ用トークンを生成するため、そのアクセスしているユーザは、その計算機器にログオンを許可される。コンピュータごとにすべてのユーザに関して手動でアカウントを作成することを回避するために、本発明の実施形態は、ユーザが手動でアカウントを作成せずにログオン可能による自動メカニズムを意図する。
【００５６】
図５では、本発明の一実施形態で意図するリモート計算機器上にユーザが自動的にログオンするためのメカニズムを例示する。示したように、ユーザの情報が詳細に前述した方法でステップ（５０１）で信用あるユーザの記憶に追加される。ユーザが一度信用あるユーザの記憶に追加されると、ステップ（５０３）によって例示されるように、ユーザが追加された信用あるユーザの記憶の計算機器上でそのユーザ用にアカウントが生成され得る。次に、リクエストしている機器から、ユーザは、そのホスト機器とピアツーピア接続を形成した後で、ステップ（５０５）によって例示されるように、認証を必要とする信用あるリソースのようなリソースを要求できる。
【００５７】
ホスト機器上でユーザ役を演ずるために、要求したリソースへのユーザアクセスを許すかどうかを判定することを目的として、本発明の一実施形態で意図する１つ以上のプロセスが、ステップ（５０３）で生成されたアカウント及びそのリモートユーザのために既知の値にそのプロセスを変更できるパスワードを使用してそのホスト機器上のリモートユーザにログインすることにより、そのリモートユーザ用のトークンを生成する。その役割を実行する１つ以上のプロセスは、ローカルシステムプロセスとして実行されるので、プロセスは、ステップ（５０３）で生成されたアカウントのパスワードを変更できる。具体的に言うと、プロセス又はそのユーザ役を演じているプロセスによって、そのパスワードは自動的に決定されるリモートユーザの証書内部に含まれる情報のいくつか又はすべてのハッシュのような値に変更できる。したがって、ステップ（５０７）で示されるように、ステップ（５０５）でリモートユーザが信用あるリソースを要求した後、ホストコンピュータ上でプロセス又はそのリモートユーザ役を演じているプロセスがそのユーザのアカウントのパスワードを既知の値に変更し、その新しく選択したパスワードを使用してそのユーザのアカウントにログインすることによってステップ（５０９）で生成したユーザトークンを有することができる。いくつかのオペレーティングシステム上では、リモートユーザのアカウントに対応するパスワードへの変更というよりもむしろ、プロセス又はリモートユーザ役を演じているプロセスは、ユーザのログオン時にケルベロスパスワードのようなより慣習的なパスワードではなく単に証書ハッシュのような異なるタイプのパスワードを指定できる。
【００５８】
ユーザトークンが一度生成されると、信用あるリソースは、詳細に前述した同様な方法でアクセスが試みられ得る。具体的に言うと、プロセス又はホストコンピュータ上でそのリモートユーザ役を演じているプロセスが、オペレーティングシステム、又はその信用あるリソースへのアクセスを制御する他のプロセスに、そのユーザが信用あるリソースへのアクセスを許可されるか否かを判定するために、ユーザのトークンをチェックさせるために、「open file」コマンドを使用する。そのユーザが信用あるリソースへのアクセスを許可されない場合、オペレーティングシステム、又はその信用あるリソースへのアクセスを制御する他のプロセスは、そのプロセス又はリモートユーザ役を演じているプロセスへ失敗インジケータを返し、示されたその失敗はリクエスト機器上の１つ以上のプロセスへピアツーピア接続を介して転送され、ユーザに失敗を知らせることができる。しかし、ユーザが信用あるリソースへのアクセスを許可される場合、オペレーティングシステム、又はその信用あるリソースへのアクセスを制御する他のプロセスは、プロセス又はリモートユーザ役を演じているプロセスへ成功インジケータを返し、そこでは役割を演じるプロセス又はプロセスは、信用あるリソース内部に含まれるデータを要求するために「send bytes」コマンドを使用する。しかし、ホスト計算機器上でそのデータを消費するのではなくむしろ、「send bytes」コマンドの結果として、受信されたデータはピアツーピア接続を越えてリモート計算機器へ単に転送される。そこで、ローカルプロセス又はプロセスがデータを消費し、そのユーザへそれを提示する。
【００５９】
図４では、peerssp.dll（４０３）のような単一のＤＬＬが、前述した役割を演じる機能の大部分を与える。例えば、アプリケーション（４０１）のようなアプリケーションは、リモート機器上を除き、アプリケーションのプロセス空間の内部で示されるpeerssp.dll（４０３）のようなリモート機器上のＤＬＬによって公開された適切な機能を呼び出すことによってアクセスされるリモート機器上の信用あるリソースを要求する。その要求は、図４中のpeerssp.dll（４０３）のようなホスト機器上のリモートユーザ役を演じるホスト機器上のＤＬＬへ転送される。トークンの生成は、高特権プロセスなので、peerssp.dll（４０３）は、認証サービス（４１１）のような、より高い特権を有するコンポーネントと通信できる。リモートユーザ役を演じることにおいて、このようにpeerssp.dll（４０３）のようなプロセスは、リモートプロシージャコール（４０７）を介して高い特権の認証サービス（４１１）へユーザをログオンさせるために必要な証明書（ｃｒｅｄｅｎｔｉａｌｓ）を渡す。ユーザのログオンが成功した場合、高い特権の認証サービス（４１１）は、同様のリモートプロシージャコールのメカニズムを介し、peerssp.dllのように、ユーザモードプロセスへその結果であるトークンを返すことができる。
【００６０】
最近のオペレーティングシステムの中には、複数のユーザを同時に１つの計算機器にログインさせるものもある。この場合、１人のユーザは、ピア計算機器に対して、その信用ある人々の記憶へ他のユーザが追加しない間に証書を追加し得る。本発明の実施形態によって意図するメカニズムは、どのユーザが、現在計算機器のリソースにアクセス中であって、リモート機器認証のための基としてユーザの信用ある人々の記憶を使用するかを判定させるためのチェックをする。
【００６１】
以上のように、本発明の実施形態はユーザの制御下で投入可能であり、証書も最終的に第三者認証局によって署名された証書も必要とせずにピア機器を認証することの可能な信用ある人々の記憶を意図する。本発明の実施形態は、追加としてリモートユーザの信用あるリソースへのアクセス許可の判定のために既存のメカニズムを応用できるようにホスト計算機器上のリモートユーザ役を演じることを意図している。前の詳細説明は、特定のアルゴリズムを基にしたものであるが、本発明に関して別の同様なアルゴリズムを排他するために、これらのアルゴリズムだけを要求するものではない。例えば、前述した証書は公開／非公開キー暗号を使用して署名されたが、任意の適切な暗号化アルゴリズムによって安全とされる任意の証書が同等に本発明に提供可能である。同様に、前の詳述では、単一のＤＬＬモジュールを参照したが、本発明の実施形態は、ライブラリ、ルーチン、サブルーチン、オペレーティングシステムプロセス、又は任意の他の可能なプログラミング構築物の任意の組み合わせで実装できる。
【００６２】
この発明の原理が適用され得る多くの可能な実施形態を考慮すると、描いている図面に関してここで説明された実施形態は、単に図的に表わしているに過ぎず、発明の範囲を制限するものとしてとらえるべきでないことが認識される。例えば当業者は、ソフトウェアとして表わして例示した実施形態の要素の中にはハードウェア及びその逆で実装され得るものもあり、又は例示された実施形態が本発明の趣旨から逸脱することなく、その構成の中で詳細に修正できることが認識されよう。したがってここで説明された発明は、以下の請求範囲及びそれと同等なものの範囲内で生じ得る実施形態のようなすべてのものを意図している。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施形態を実装され得る典型的な計算機器を一般的に例示しているブロック図である。
【図２】本発明の一実施形態による認証メカニズムの動作を一般的に例示している。
【図３】本発明の一実施形態による認証メカニズムによって実行される動作を一般的に例示している。
【図４】本発明の一実施形態によって企図される認証メカニズムにより使用されるソフトウェアコンポーネントを一般的に例示している。
【図５】本発明の一実施形態による認証メカニズムによって実行される動作を一般的に例示している。
【図１】
2008537256.tif 000003
【図２】
2008537256.tif 000004
【図３】
2008537256.tif 000005
【図４】
2008537256.tif 000006
【図５】
2008537256.tif 000007
【国際調査報告】
2008537256.tif 000008