(57)【特許請求の範囲】
【請求項１】
２つ以上のネットワーク化されたピアコンピューターを含むピアツーピアネットワークで、キャッシュされたデータを安全に取り出すための、コンピューターにより実行する方法であって、
要求されたデータを求めるブロードキャスト要求をネットワーク上で送信するステップであって、前記ブロードキャスト要求が、前記要求されたデータに関するハッシュ値のハッシュ、要求側ピアコンピューターによって生成されたランダムデータ、タイムスタンプ、前記要求側ピアコンピューターに関する識別子、および、前記要求されたデータに関するハッシュ値と前記要求側ピアコンピューターによって生成されたランダムデータと前記タイムスタンプと前記要求側ピアコンピューターに関する識別子との連結のハッシュを含む、前記送信するステップと、
キャッシング・ピア・コンピューターからの前記ブロードキャスト要求に対する応答を受信するステップであって、前記応答が、前記要求されたデータの前記キャッシング・ピア・コンピューターによる所有を証明するデータを含む、前記受信するステップと、
前記応答の受信に応答して、前記キャッシング・ピア・コンピューターから前記要求されたデータを受信するステップと、
を含む方法。
【請求項２】
前記ブロードキャスト要求を送信するステップの前に、
前記要求されたデータに関する前記ハッシュ値を求める要求をサーバーコンピューターに送信するステップと、
前記要求されたデータに関する前記ハッシュ値を前記サーバーコンピューターから受信するステップと
をさらに含む請求項１に記載の方法。
【請求項３】
前記ピアコンピューターのいずれかから前記ブロードキャスト要求に対する応答を受信することに失敗したことに応答して、前記要求されたデータを前記サーバーコンピューターから取り出すステップをさらに含む請求項２に記載の方法。
【請求項４】
前記要求されたデータを前記キャッシング・ピア・コンピューターから取り出すステップに応答して、
前記要求されたデータを格納するステップと、
文字列と連結された、前記要求されたデータに関する前記ハッシュ値のハッシュを使用して、格納した前記要求されたデータを索引付けするステップと
をさらに含む請求項３に記載の方法。
【請求項５】
前記要求されたデータを前記キャッシング・ピア・コンピューターから受信するステップが、
前記キャッシング・ピア・コンピューターに対するセキュアネットワーク接続を確立するステップと、
前記キャッシング・ピア・コンピューターから前記セキュアネットワーク接続を介して前記要求されたデータを受信するステップと
を含む請求項４に記載の方法。
【請求項６】
コンピューターによって実行されたときに、前記コンピューターに請求項１に記載の方法を実施させる、コンピューター実行可能命令が格納されたコンピューター可読媒体。
【請求項７】
請求項１に記載の方法を実施するように動作するコンピューター制御機器。
【請求項８】
２つ以上のネットワーク化されたピアコンピューターを含むピアツーピアネットワークで、キャッシュされたデータを安全に提供するための、コンピューターにより実行する方法であって、
要求されたデータを求めるブロードキャスト要求をキャッシング・ピア・コンピューターで受信するステップであって、前記ブロードキャスト要求が、前記要求されたデータに関するハッシュ値のハッシュ、要求側ピアコンピューターによって生成されたランダムデータ、タイムスタンプ、前記要求側ピアコンピューターに関する識別子、および、前記要求されたデータに関するハッシュ値と前記要求側ピアコンピューターによって生成されたランダムデータと前記タイムスタンプと前記要求側ピアコンピューターに関する識別子との連結のハッシュを含む、前記受信するステップと、
前記ブロードキャスト要求を受信したことに応答して、前記キャッシング・ピア・コンピューターが前記要求されたデータを有するかどうかを判定するステップと、
前記キャッシング・ピア・コンピューターが前記要求されたデータを有すると判定したことに応答して、前記ブロードキャスト要求に対する応答を送信するステップであって、前記応答が、前記キャッシング・ピア・コンピューターによる前記要求されたデータの所有を証明するデータを含む、前記送信するステップと、
前記要求されたデータを前記要求側ピアコンピューターに送信するステップと
を含む方法。
【請求項９】
前記キャッシング・ピア・コンピューターが前記要求されたデータを有するかどうかを判定する前記ステップが、
前記要求されたデータに関する前記ハッシュ値の前記ハッシュを求めて、前記キャッシング・ピア・コンピューターに格納された索引を探索するステップと、
前記要求されたデータに関する前記ハッシュ値の前記ハッシュの、前記索引中の位置を突き止めたことに応答して、前記キャッシングコンピューターが前記要求されたデータを有することを判定するステップと
を含む請求項８に記載の方法。
【請求項１０】
前記要求されたデータの所有を証明するデータが、前記キャッシング・ピア・コンピューターによって生成されたランダムデータ、前記要求されたデータに関するハッシュ値のハッシュ、および、前記要求されたデータに関する前記ハッシュ値と前記キャッシング・ピア・コンピューターによって生成された前記ランダムデータと前記要求側ピアコンピューターに関する識別子と前記キャッシング・ピア・コンピューターに関する識別子と前記タイムスタンプとの連結のハッシュを含む請求項９に記載の方法。
【請求項１１】
前記要求されたデータを前記要求側ピアコンピューターに送信する前記ステップが、
前記要求側ピアコンピューターとの間のセキュアネットワーク接続を確立するステップと、
前記セキュアネットワーク接続を介して前記要求側ピアコンピューターに前記要求されたデータを送信するステップと
を含む請求項１０に記載の方法。
【請求項１２】
コンピューターによって実行されたときに、前記コンピューターに請求項８に記載の方法を実施させる、コンピューター実行可能命令が格納されたコンピューター可読媒体。
【請求項１３】
２つ以上のネットワーク化されたピアコンピューターを含むピアツーピアネットワークで、キャッシュされたデータを安全に取り出す方法であって、
要求されたデータを求めるブロードキャスト要求をネットワーク上で送信するステップであって、前記ブロードキャスト要求が、前記要求されたデータに関するハッシュ値の所有を前記ピアコンピューターに対して証明するデータを含む、前記送信するステップと、
キャッシング・ピア・コンピューターからの前記ブロードキャスト要求に対する応答を受信するステップであって、前記応答が、前記キャッシング・ピアコンピューターによって生成されたランダムデータ、前記要求されたデータに関するハッシュ値のハッシュ、および、要求されたデータに関するハッシュ値と前記キャッシング・ピアコンピューターによって生成された前記ランダムデータと前記要求側ピアコンピューターに関する識別子と前記キャッシング・ピアコンピューターに関する識別子とタイムスタンプとの連結のハッシュを含む、前記受信するステップと、
前記応答の受信に応答して、前記キャッシング・ピア・コンピューターから前記要求されたデータを受信するステップと、
を含む方法。
【請求項１４】
前記ブロードキャスト要求を送信するステップの前に、
前記要求されたデータに関する前記ハッシュ値を求める要求をサーバーコンピューターに送信するステップと、
前記要求されたデータに関する前記ハッシュ値を前記サーバーコンピューターから受信するステップと
をさらに含む請求項１３に記載の方法。
【請求項１５】
前記ピアコンピューターのいずれかから前記ブロードキャスト要求に対する応答を受信することに失敗したことに応答して、前記要求されたデータを前記サーバーコンピューターから取り出すステップをさらに含む請求項１４に記載の方法。
【請求項１６】
前記要求されたデータを前記キャッシング・ピア・コンピューターから取り出すステップに応答して、
前記要求されたデータを格納するステップと、
文字列と連結された、前記要求されたデータに関する前記ハッシュ値のハッシュを使用して、格納した前記要求されたデータを索引付けするステップと
をさらに含む請求項１５に記載の方法。
【請求項１７】
前記要求されたデータを前記キャッシング・ピア・コンピューターから受信するステップが、
前記キャッシング・ピア・コンピューターに対するセキュアネットワーク接続を確立するステップと、
前記キャッシング・ピア・コンピューターから前記セキュアネットワーク接続を介して前記要求されたデータを受信するステップと
を含む請求項１６に記載の方法。
【請求項１８】
２つ以上のネットワーク化されたピアコンピューターを含むピアツーピアネットワークで、キャッシュされたデータを安全に取り出すシステムであって、前記システムが、
要求されたデータを求めるブロードキャスト要求をネットワーク上で送信し、この際、前記ブロードキャスト要求が、前記要求されたデータに関するハッシュ値のハッシュ、要求側ピアコンピューターによって生成されたランダムデータ、タイムスタンプ、前記要求側ピアコンピューターに関する識別子、および、前記要求されたデータに関するハッシュ値と前記要求側ピアコンピューターによって生成されたランダムデータと前記タイムスタンプと前記要求側ピアコンピューターに関する識別子との連結のハッシュを含み、
キャッシング・ピア・コンピューターからの前記ブロードキャスト要求に対する応答を受信し、この際、前記応答が、前記キャッシング・ピア・コンピューターによる前記要求されたデータの所有を証明するデータを含み、
前記応答の受信に応答して、前記キャッシング・ピア・コンピューターから前記要求されたデータを受信する
ように構成された要求側ピアコンピューターと、
要求されたデータを求めるブロードキャスト要求を受信し、
前記ブロードキャスト要求を受信したことに応答して、前記キャッシング・ピア・コンピューターが前記要求されたデータを有するかどうかを判定し、
前記キャッシング・ピア・コンピューターが前記要求されたデータを有すると判定したことに応答して、前記ブロードキャスト要求に対する応答を送信し、この際、前記応答が、前記キャッシング・ピアコンピューターによって生成されたランダムデータ、前記要求されたデータに関するハッシュ値のハッシュ、および、要求されたデータに関するハッシュ値と前記キャッシング・ピアコンピューターによって生成された前記ランダムデータと前記要求側ピアコンピューターに関する識別子と前記キャッシング・ピアコンピューターに関する識別子とタイムスタンプとの連結のハッシュを含む
ように構成されたキャッシング・ピア・コンピューターと、
を備えることを特徴とするシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
経済のグローバル化の結果として、多くの企業は、主要企業オフィスを、ブランチオフィスと呼ばれる多数のリモートオフィスサイトと共に運営している。企業のオフィスのすべての間のネットワーク接続性を実現するために、通常は広域ネットワーク（「ＷＡＮ」）が使用される。ＷＡＮは、広範な地理領域をカバーし、異なる地理位置で動作する多数のコンピューターを含むコンピューターネットワークである。例えば、西半球を基盤とする会社は、ＷＡＮを使用して、東半球に位置するブランチオフィスへの接続性を実現することができる。
【０００２】
世界中の企業の情報技術（「ＩＴ」）予算の大部分が、ブランチオフィス内の技術とブランチオフィスのネットワーク接続性とを確立および維持することに対して費やされる。具体的には、こうした予算の大部分が、ブランチオフィスに対するＷＡＮリンクの購入および保守に費やされる。オフィスがグローバルに分散する傾向は、ＷＡＮの使用と、企業にとっての関連するコストとを増大させることが予期される。その結果、ＷＡＮ保守コストを削減するために、一般にはＷＡＮ利用率を改良することが望ましい。
【０００３】
現在、ＷＡＮ利用率を最大にし、それによって関連するＷＡＮリンクコストを削減するために、様々な技術が使用されている。例えば、データ圧縮、サービス品質（「ＱｏＳ」）、トラフィックシェーピング、伝送制御プロトコル（「ＴＣＰ」）最適化、広域ファイルサービス（「ＷＡＦＳ」）、キャッシングのような技術、およびその他を使用して、ＷＡＮ利用率を最大にすることができる。多くの場合、こうした技術は、各ブランチオフィスに常駐するネットワークアプライアンスに集約される。遺憾ながら、こうした装置は多くの場合費用がかかり、ブランチオフィスでは利用可能ではない可能性のある管理監視も必要とする。しかし、さらに厄介なことは、こうした現在の解決策が、エンドツーエンドセキュリティが必要である環境ではうまく動作しないことである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
こうした考慮すべき点およびその他に関して、セキュアピアツーピア（「Ｐ２Ｐ」）キャッシュ共有のための方法、システム、機器、およびコンピューター可読媒体の態様が本明細書で説明される。
【課題を解決するための手段】
【０００５】
セキュアＰ２Ｐキャッシュ共有のためのシステム、機器、方法、およびコンピューター可読媒体が本明細書で提供される。本明細書で提供される開示の一態様によれば、ピアコンピューター（ｐｅｅｒ  ｃｏｍｐｕｔｅｒ）でデータを安全にキャッシュすることによってネットワークリンクの利用率が最大となる。本明細書に記載のキャッシングはネットワークスタックのアプリケーション層の下で実施されるので、キャッシングプロセスは、費用のかかるネットワークアプライアンス、クライアント・アプリケーション・プログラムまたはサーバー・アプリケーション・プログラムの修正、あるいは追加の管理サポートを必要としない。
【０００６】
本明細書に記載の一方法によれば、Ｐ２Ｐネットワーク内で動作するピアコンピューターは、キャッシュ・マネージャー・プログラムを含む。キャッシュ・マネージャー・プログラムは、ピアコンピューター上でネットワーク・プロトコル・スタックと共に実行され、アプリケーション・プロトコル・データ要求に関するプロキシとして働く。そのような要求を受信したことに応答して、キャッシュマネージャーは、サーバーコンピューターと連絡を取り、要求されたデータに関するハッシュ値（ｈａｓｈ  ｖａｌｕｅ）（本明細書では「ハッシュ」（ｈａｓｈ）とも呼ばれる）を取り出すように動作する。ハッシュ値は、要求されたデータに対するハッシュ関数の適用の結果である。サーバーコンピューターは、キャッシュマネージャーが実行中の要求側ピアコンピューターがデータに対する適切なアクセス権を有するときに、要求されたデータに関するハッシュ値を提供するだけである。例えば、サーバーコンピューターは、要求されたデータに関するハッシュ値をキャッシュマネージャーに提供する前に、要求されたデータについてアクセス制御リスト（「ＡＣＬ」）をチェックすることができ、または別のタイプのセキュリティチェックを実施することができる。
【０００７】
キャッシュマネージャーが、要求されたデータに関するハッシュ値を得ると、キャッシュマネージャーは、ネットワーク上の他のピアコンピューターに、データを求めるブロードキャスト要求を送信する。ブロードキャスト要求は、キャッシング・ピア・コンピューターと呼ばれる別のピアコンピューターが要求されたデータを有するかどうかを、要求側コンピューターが判定することを可能にする。ブロードキャスト要求は、要求されたデータに関するハッシュ値を要求側ピアが所有することを証明するのに十分なデータを含む。要求されたデータに関するハッシュ値の所有が、要求されたデータ自体の所有に対する権利を示唆するので、このことが、要求されたデータに関するハッシュ値を送信することなく実施される。
【０００８】
一実装では、ブロードキャスト要求は、要求されたデータに関するハッシュ値と、要求側ピアコンピューターによって生成されたランダムデータと、要求側ピアコンピューターに関する識別子のハッシュを含む。この実装では、ブロードキャスト要求はまた、要求側ピアによって生成されたランダムデータと連結された、要求されたデータに関するハッシュ値と、タイムスタンプと、要求側ピアコンピューターに関する識別子のハッシュも含む。ブロードキャスト要求内に含まれるデータを使用して、他のピアコンピューター上で実行中のキャッシュマネージャーは、要求側ピアコンピューターが、要求されたデータに関するハッシュ値を実際に所有しているかどうかを判定することができる。ブロードキャスト要求内のデータはまた、要求されたデータを他のピアコンピューターが所有しているかどうかを判定する際に他のピアコンピューターを援助する。
【０００９】
別のピアコンピューター上で実行中のキャッシュマネージャーが、要求されたデータに関するハッシュ値を要求側ピアコンピューターが所有しており、要求されたデータを要求側ピアコンピューターが有すると判定した場合、キャッシング・ピア・コンピューター上で実行中のキャッシュマネージャーが、要求に対する応答を生成する。応答は、要求されたデータに関するハッシュ値を送信することなく、要求されたデータのキャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含む。具体的には、一実施形態によれば、応答は、要求されたデータに関するハッシュ値と、キャッシング・ピア・コンピューターによって生成されたランダムデータのハッシュを含む。応答はまた、キャッシング・ピア・コンピューターによって生成されたランダムデータと連結された、要求されたデータに関するハッシュ値と、要求側ピアコンピューターに関する識別子と、キャッシング・ピア・コンピューターに関する識別子と、タイムスタンプのハッシュも含む。
【００１０】
要求側ピアコンピューターがキャッシング・ピア・コンピューターから要求に対する応答を受信した場合、要求側ピアコンピューター上で実行中のキャッシュマネージャーは、応答の内容を使用して、要求されたデータをキャッシング・ピア・コンピューターが実際に所有しているかどうかを判定する。要求されたデータをキャッシング・ピア・コンピューターが実際に所有している場合、要求側ピアコンピューターは、キャッシング・ピア・コンピューターに対するセキュアネットワーク接続を確立し、キャッシング・ピア・コンピューターからセキュア接続を介して、要求されたデータを取り出す。要求側ピアコンピューターが他のどんなピアコンピューターからも要求に対する応答を受信しない場合、要求側ピアコンピューターは、要求側ピアコンピューターがハッシュを得たサーバーコンピューターに対する接続を確立し、サーバーコンピューターから要求されたデータを取り出す。
【００１１】
要求側ピアコンピューターが、要求されたデータを別のピアコンピューターまたはサーバーコンピューターから得た後は、要求側ピアコンピューターは、要求されたデータをキャッシュに格納し、要求されたデータに関するハッシュ値のハッシュを使用してデータを索引付けすることができる。次いで、ピアコンピューターは、格納されたデータを使用して、データを求める他のピアコンピューターからの要求に応答することができる。このようにして、各ピアコンピューターは、要求側ピアコンピューターとキャッシング・ピア・コンピューターのどちらとしても働く。
【００１２】
上述の主題を、コンピューター制御機器、コンピュータープロセス、コンピューティングシステムとして、またはコンピュータープログラム製品やコンピューター可読媒体などの製品として実装することもできる。コンピュータープログラム製品は、コンピューターシステムで可読であり、コンピュータープロセスを実行するためのコンピュータープログラムの命令を符号化するコンピューター記憶媒体でよい。コンピュータープログラム製品はまた、コンピューティングシステムで可読であり、コンピュータープロセスを実行するためのコンピュータープログラムの命令を符号化する、搬送波上の伝播信号でもよい。上記および様々な他の特徴が、以下の発明を実施するための形態を読み、関連する図面を検討することで明らかとなるであろう。
【００１３】
この概要は、以下の発明を実施するための形態でさらに説明される概念の抜粋を単純化した形で導入するために与えられたものである。この概要は、特許請求される主題の主要な特徴または不可欠な特徴を識別するためのものではなく、特許請求される範囲を限定するのに使用されるものでもない。
【図面の簡単な説明】
【００１４】
【図１】本明細書に記載のプロセスおよびコンピューターシステムのための例示的動作環境を示すネットワーク図である。
【図２】ピアコンピューター上で実行中の例示的ネットワーク・プロトコル・スタックと、コンテンツ・サーバー・コンピューター上で実行中のネットワーク・プロトコル・スタックの態様をそれぞれ示すソフトウェアアーキテクチャ図である。
【図３Ａ】本明細書で論じられるＰ２Ｐネットワーク内でデータを安全にキャッシュする例示的プロセスの態様を示す流れ図である。
【図３Ｂ】本明細書で論じられるＰ２Ｐネットワーク内でデータを安全にキャッシュする例示的プロセスの態様を示す流れ図である。
【図３Ｃ】本明細書で論じられるＰ２Ｐネットワーク内でデータを安全にキャッシュする例示的プロセスの態様を示す流れ図である。
【図４Ａ】本明細書で論じられる一実装で使用される、データを求める要求の内容を示すデータ構造図である。
【図４Ｂ】本明細書で論じられる一実装で使用される、要求に対する応答の内容を示すデータ構造図である。
【図５】本明細書に記載の様々なコンピューターシステムを実装するのに適したコンピューターキテクチャを示すコンピューターキテクチャ図である。
【発明を実施するための形態】
【００１５】
以下の詳細な説明は、セキュアＰ２Ｐキャッシュ共有のためのシステム、方法、およびコンピューター可読媒体を対象とする。本明細書に記載の主題が、コンピューターシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と共に実行されるプログラムモジュールの一般的状況で提示されるが、他のタイプのプログラムモジュールと組み合わせた他の実装を実施できることを当業者は理解されよう。特定用途向け集積回路（「ＡＳＩＣ」）、フィールド・プログラマブル・ゲート・アレイ（「ＦＰＧＡ」）、カスタムハードウェア、または他のタイプのハードウェア装置の使用などを介して、本明細書に記載のソフトウェア構成要素をハードウェアとして実装することもできることも当業者は理解されよう。
【００１６】
本明細書に記載のように、プログラムモジュールは一般に、特定のタスクを実行し、または特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能なコンシューマエレクトロニクス、ミニコンピューター、メインフレームコンピューターなどを含む他のコンピューターシステム構成と共に本明細書に記載の主題を実施できることを当業者は理解されよう。本明細書に記載の主題はまた、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境で実施されるものとして説明され、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置のどちらにも配置することができる。しかし、スタンドアロン・コンピューター・システムおよび他のタイプのコンピューティング装置と共に本明細書に記載の実装を使用することもできることを理解されたい。
【００１７】
以下の詳細な説明では、本発明の一部を形成し、特定の実施形態または実施例の例示として示される添付の図面に対して参照がなされる。次に、いくつかの図にわたって同様の番号が同様の要素を表す図面を参照して、セキュアＰ２Ｐキャッシュ共有のためのコンピューティングシステムおよび方法の態様が説明される。
【００１８】
図１は、本明細書に記載の主題のための例示的動作環境の態様を示す。具体的には、図１は、本明細書に記載のコンピューティングシステムおよびプロセスのための動作環境を形成するコンピューティングネットワーク１００の態様を示すネットワーク図である。図１に示されるように、ネットワーク１００は、多数のピアコンピューター１０２Ａ〜１０２Ｆ（本明細書では「ピア」、「ノード」、または「クライアント」とも呼ばれる）にコンテンツサーバー１０４を接続し、ピアコンピューター１０２Ａ〜１０２Ｆを互いに接続するＷＡＮを含む。
【００１９】
図１に示されるネットワークアーキテクチャは、主要企業構内またはオフィスと複数の遠隔位置またはブランチオフィスを接続するのにビジネスで利用される典型的なネットワークアーキテクチャである。しかし、図１に示されるネットワーク環境は例に過ぎず、任意のタイプのネットワーク環境で動作するコンピューターシステム間でデータを安全に転送するのに本明細書に記載の実装を利用できることを理解されたい。その結果、図１に示され、本明細書に記載のネットワークアーキテクチャは、単なる例とみなされるべきであり、いかなる形でも限定的なものとみなされるべきではない。
【００２０】
図１に示されるＷＡＮは、コンテンツサーバー１０４が直接接続される主要企業ネットワーク１０８を含む。主要企業ネットワーク１０８は、インターネット１１０などの分散公衆コンピューティングネットワークに接続される。ブランチ・オフィス・ネットワーク１０６Ａ〜１０６Ｃもインターネット１１０に接続される。ブランチ・オフィス・ネットワーク１０６Ａ〜１０６Ｃは、２つ以上のコンピューターシステムをローカルに接続するのに適したローカルエリアネットワーク（「ＬＡＮ」）である。例えば、ピアコンピューター１０２Ａ〜１０２Ｃはブランチ・オフィス・ネットワーク１０６Ａに接続され、ピアコンピューター１０２Ｄ〜１０２Ｆはブランチ・オフィス・ネットワーク１０６Ｂに接続される。図１に示されるものより多数または少数のブランチ・オフィス・ネットワークを使用することができ、より多数または少数のピアコンピューターを各ブランチ・オフィス・ネットワークに接続できることを理解されたい。図１に示されない他のネットワークを使用して、ピアコンピューター１０２Ａ〜１０２Ｆ間のネットワーク経路、およびコンテンツサーバー１０４に対するネットワーク経路を完成することができる。
【００２１】
本明細書に記載の実装によれば、ピアコンピューター１０２Ａ〜１０２Ｆは、Ｐ２Ｐネットワーキングシステムを作成するように動作する。Ｐ２Ｐネットワーキングシステムは、計算能力、帯域幅、および記憶を比較的少数のサーバーに集中させるのではなく、主にネットワーク内の参加コンピューターの計算能力、帯域幅、および記憶に依拠するネットワークである。以下でより詳細に説明されるように、ピアコンピューター１０２Ａ〜１０２Ｆによって作成されたＰ２Ｐネットワーキングシステムは、ピア１０２Ａ〜１０２Ｆの一部またはすべてでデータをキャッシュし、キャッシュしたデータを他のピアコンピューターに安全に提供するように動作する。このようにして、ＷＡＮを介してコンテンツサーバー１０４から取り出されたデータをブランチ・オフィス・ネットワーク内にキャッシュすることができる。ピアコンピューター１０２Ａ〜１０２Ｆのうちの１つからの、データを求める後続の要求時に、ＷＡＮを介してコンテンツサーバー１０４からデータを再び取り出すのではなく、キャッシュされたデータが使用される。このようにして、ＷＡＮを介して送られるネットワークトラフィック量が削減される。このプロセスに関する追加の詳細が、図２〜５に関して以下で与えられる。
【００２２】
図１に示されるピアコンピューター１０２Ａ〜１０２Ｆのそれぞれは、標準デスクトップ、ラップトップ、ハンドヘルド、サーバー、または他のタイプのコンピューターシステムを含む。以下で詳細に論じるように、ピアコンピューター１０２Ａ〜１０２Ｆのそれぞれは、ピアコンピューター１０２Ａ〜１０２Ｆでデータを安全にキャッシュするプロセスと、要求されたデータをＰ２Ｐキャッシュから取り出し、または必要に応じてコンテンツサーバー１０４から取り出すプロセスを調整するキャッシュ・マネージャー・プログラムを含む。ピアコンピューター１０２Ａ〜１０２Ｆで使用されるソフトウェアおよびハードウェアならびにその動作に関する追加の詳細が、図２〜５に関して以下で与えられる。
【００２３】
図１に示されるコンテンツ・サーバー・コンピューター１０４は、コンテンツサーバー１０４に格納され、またはコンテンツサーバー１０４にとって利用可能なコンテンツを求める要求をピアコンピューター１０２Ａ〜１０２Ｆから受信し、その要求に応答するように動作する標準サーバーコンピューターを含む。コンテンツは、限定はしないが、電子メール（「Ｅメール」）メッセージ、コンテンツサーバー１０４または他の場所に格納されたデータファイル、コンテンツサーバー１０４に格納されたウェブページまたはインターネット１１０上のウェブページ、カレンダーイベント、連絡先、タスク、ノートなどの個人情報マネージャー（「ＰＩＭ」）データ、または他のタイプのデータを含む任意のタイプのデジタルデータを含むことができる。以下でより詳細に説明されるように、コンテンツサーバー１０４は、ピアコンピューター１０２Ａ〜１０２Ｆによって要求されたデータを一意的に記述するハッシュ値を提供することにより、ピアコンピューター１０２Ａ〜１０２Ｆでのデータのキャッシングを援助する。さらに、要求されたデータがピアコンピューター１０２Ａ〜１０２Ｆのうちの１つによってキャッシュされない場合、コンテンツサーバー１０４は、要求されたデータを要求側ピアコンピューターに直接提供する。コンテンツサーバー１０４およびその動作で使用されるハードウェアおよびソフトウェアに関する追加の詳細が、図２〜５に関して以下で説明される。
【００２４】
次に図２を参照して、Ｐ２Ｐシステムでデータを安全にキャッシュする本明細書で提示される実施形態に関して追加の詳細が与えられる。具体的には、図２は、ピアコンピューター１０２Ａ〜１０２Ｆおよびコンテンツサーバー１０４によって使用されるネットワーク・プロトコル・スタックの態様を示すソフトウェアアーキテクチャ図である。コンテンツサーバー１０４に関して、アプリケーション２０６Ａが、サーバー１０４によってプロトコルスタックの上端で実行される。アプリケーション２０６Ａは、サーバー１０４または別のネットワーク化された場所に格納されたコンテンツを求める要求を受信し、その要求に応答するサーバープリケーションを含む。例えば、一実装では、アプリケーション２０６Ａは、ウェブページおよびその中で参照されるデータを求める要求を受信し、その要求に応答するウェブ・サーバー・アプリケーションを含む。あるいは、アプリケーション２０６Ａは、Ｅメール・サーバー・アプリケーション、ファイル・サーバー・アプリケーション、または任意の他のタイプのサーバー側アプリケーションプログラムを含むこともできる。
【００２５】
アプリケーションプロトコル２０４Ａが、アプリケーション２０６Ａの直下で実行される。アプリケーションプロトコル２０４Ａは、アプリケーション特有のプロトコルである。例えば、アプリケーション２０６Ａがウェブ・サーバー・アプリケーションである場合、アプリケーションプロトコル２０４Ａは、Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（「ＨＴＴＰ」）でよい。アプリケーション２０６ＡがＥメール・サーバー・アプリケーションである場合、アプリケーションプロトコル２０４Ａは、Ｍｅｓｓａｇｉｎｇ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ（「ＭＡＰＩ」）プロトコルでよい。アプリケーション２０６Ａがファイル・サーバー・アプリケーションである場合、アプリケーションプロトコル２０４Ａは、Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｅｒｖｉｃｅ（「ＣＩＦＳ」）プロトコルでよい。図２を参照して本明細書で説明されるアプリケーションプロトコルは例に過ぎず、他の適切なアプリケーションプロトコルを使用して、他のタイプのサーバー側アプリケーションプログラムのためのプロトコルサービスを提供できることを理解されたい。
【００２６】
サーバー１０４はまた、ネットワーク・プロトコル・スタック内のアプリケーションプロトコル２０４Ａの直下でプロキシ２０８を実行する。プロキシ２０８は、ピアコンピューター１０２Ａ〜１０２Ｆ上で実行中のキャッシュマネージャー２０２Ａから要求を受信し、その要求に応答する１つまたは複数のプロトコル特有のシム２１０Ａ〜２１０Ｃを使用する。具体的には、プロトコル特有のシム２１０Ａ〜２１０Ｃは、コンテンツサーバー２０４からダウンロード可能なコンテンツの、ハッシュ値と呼ばれるシグニチャを生成する。ハッシュ値は、要求されたデータに対するハッシュ関数の適用の結果である。本明細書に記載の一実装では、シム２１０Ａ〜２１０Ｃで使用されるハッシュ関数は、暗号的に安全な一方向ハッシュ関数である。このことは、ハッシュ関数がコリジョンフリーである（すなわち、相異なる入力データは同一のハッシュを生成しない）こと、およびハッシュ値を使用して、ハッシュを生成した入力データを生成することはできないことを示唆する。そのようなハッシュ関数は当業者には周知である。シム２１０Ａ〜２１０Ｃによって生成されるハッシュ値の使用に関する追加の詳細が、図３Ａ〜４Ｂに関して以下で与えられる。
【００２７】
別の実装によれば、ハッシュ値は、データの各ブロックについて固有のキーを有する、キー付きハッシュメッセージ認証コード（「ＨＭＡＣ」）を含むことができる。この実装では、秘密がサーバー１０４によって生成および維持され、ＨＭＡＣを生成するのに使用される。秘密はまた、ＨＭＡＣと共に各ピアコンピューターに通信される。一実装では、データの所与のブロックは常に、サーバーコンピューターごとに同一の秘密を使用する。別の実装では、ブロックごとの秘密をサーバーコンピューター間で共有することができる。データ防止の各ブロックについての固有のキーと共にＨＭＡＣを使用することにより、プレーンテキストの一部を知ることができるブルートフォースアタックが防止される。
【００２８】
例えばＣＩＦＳなどの一部のプロトコルおよびアプリケーションについて、別々のサーバーが、プロトコル特有のシム２１０Ａ〜２１０Ｃによって実施されるものとして本明細書で説明した機能を提供できることを理解されたい。他のプロトコルについて、プロトコルを使用するアプリケーション２０６Ａに対するアドオンによってこの機能を提供することができる。例えば、ピアコンピューターのうちの１つの上で実行中のクライアントアプリケーションと、コンテンツサーバー１０４上で実行中のＥメールアプリケーションとの間のＭＡＰＩ通信の場合、サーバー１０４上にプロトコル特有のシム２１０Ｂが存在する。ピア上で実行中のプロキシは、シム２１０Ｂと通信して、要求されたデータに関するハッシュ値を要求する。一実装では、ピアコンピューター上で実行中のプロキシは、キャッシュマネージャー２０２Ａである。シム２１０Ａ〜２１０Ｃとキャッシュマネージャー２０２Ａの動作が、以下でより詳細に説明される。
【００２９】
図２にも示されるように、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）層２００Ａは、プロキシ２０８の下に位置する。当技術分野で周知のように、ＴＣＰ／ＩＰ層２００Ａは、送信側から受信側へのデータの確実かつ順序正しい送達を共に保証するＴＣＰプロトコルおよびインターネットプロトコルを実装する。ＴＣＰ／ＩＰ層２００Ａに関する詳細は当業者には周知である。ピアコンピューター１０２Ａ〜１０２Ｂおよびコンテンツサーバー１０４に関して図２に示されるネットワーク・プロトコル・スタックは、図２に示されない追加のプロトコル層を含むことができることを理解されたい。こうしたプロトコル層は、当技術分野で一般的に理解されている。
【００３０】
図２はまた、ピアコンピューター１０２Ａ〜１０２Ｆによって使用されるネットワーキング・プロトコル・スタックの態様も示す。具体的には、図２は、ピアコンピューター１０２Ａおよびピアコンピューター１０２Ｂの態様を示す。図２に示される例では、ピアコンピューター１０２Ａは、要求側ピアコンピューターの役割で動作中である。要求側ピアコンピューターは、コンテンツサーバー１０４または別のピアコンピューターにデータを要求したピアコンピューター１０２Ａ〜１０２Ｆのうちの１つである。図２では、ピアコンピューター１０２Ｂは、キャッシング・ピア・コンピューターの役割で動作中である。キャッシング・ピア・コンピューターは、要求側ピアコンピューターに対して利用可能にしたデータをキャッシュしたピアコンピューター１０２Ａ〜１０２Ｆのうちの１つである。
【００３１】
ピアコンピューター１０２Ａ〜１０２Ｆのそれぞれはその時々に、要求側ピアコンピューターとキャッシング・ピア・コンピューターのどちらとしても動作することがあることを理解されたい。こうした役割を同時に実施することもできる。すなわち、任意の与えられた時間に、単一のピアコンピューターは、ある要求に関して要求側ピアコンピューターとして働くことができ、別の要求に関してキャッシング・ピア・コンピューターとして働くことができる。代替実装では、ピアコンピューター１０２Ａ〜１０２Ｆの一部についてキャッシング機能をオフにすることができ、それによって、こうしたピアを要求側ピアコンピューターの役割でのみ働かせる。
【００３２】
ピア１０２Ａ〜１０２Ｂによって使用されるネットワーキング・プロトコル・スタックはまた、それぞれクライアント・アプリケーション・プログラム２０６Ｂ〜２０６Ｃも含む。こうしたクライアント・アプリケーション・プログラムは、限定はしないが、個人情報マネージャー・デスクトップ・クライアント、ファイル転送プログラム、ウェブブラウザ、または任意の他のタイプのアプリケーションプログラムを含む。本明細書で与えられるピアコンピューター１０２Ａ〜１０２Ｂによって使用されるネットワーク・プロトコル・スタックはまた、それぞれアプリケーションプロトコル２０４Ｂ〜２０４Ｃも含む。アプリケーションプロトコル２０４Ｂ〜２０４Ｃは、コンテンツサーバー１０４に関して上記で説明したのと同様のピアに関する機能を実施する。ピアコンピューター１０２Ａ〜１０２ＢのＴＣＰ／ＩＰ層２００Ｂ〜２００Ｃも、コンテンツサーバー１０４に関して上記で説明したのと同様の機能をそれぞれ実施する。
【００３３】
上記で簡潔に触れたように、各ピアコンピューター１０２Ａ〜１０２Ｂは、そのネットワーク・プロトコル・スタックの一部として、それぞれキャッシュマネージャー２０２Ａ〜２０２Ｂを含む。キャッシュマネージャーは、スタック内のアプリケーションプロトコルとＴＣＰ／ＩＰ層との間で実行される。ピア１０２Ａなどの要求側ピア上で実行中のキャッシュマネージャー２０２Ａは、データを求める要求をアプリケーションプロトコル２０４Ｂから受信するように動作する。そのような要求に応答して、キャッシュマネージャー２０２Ａはプロキシ２０８と連絡を取り、要求されたデータに関するハッシュを要求する。要求されたデータに関するハッシュ値の所有が要求されたデータ自体に対する資格の証明であるので、プロキシ２０８は、キャッシュマネージャー２０２Ａがデータに対する資格を有するかどうかを判定する。例えば、プロキシ２０８は、ピア１０２Ａがデータに対する資格を有するかどうかを判定するためにＡＣＬを検査させることができる。ピア１０２Ａがデータの所有に対する資格を有する場合、プロキシ２０８は、要求されたデータに関するハッシュ値をキャッシュマネージャー２０２Ａに返す。
【００３４】
キャッシュマネージャー２０２Ａが、要求されたデータに関するハッシュ値を得ると、キャッシュマネージャー２０２Ａは、他のピアコンピューターにブロードキャスト要求を送信し、要求されたデータを何らかの他のピアコンピューターが有するかどうかを判定する。ブロードキャスト要求は、ハッシュ値自体を送信することなく、要求されたデータに関するハッシュ値を要求側ピアが所有することを証明するのに十分なデータを含む。ブロードキャスト要求はまた、各ピアコンピューターが要求されたデータを有するかどうかを判定する際に各ピアコンピューターを援助するためのデータも含む。そのような要求で送信されるデータに関する追加の詳細が、図４Ａに関して以下で与えられる。
【００３５】
例えば図２のピアコンピューター１０２Ｂなどのピアコンピューターが、要求されたデータを有する場合、ピア上で実行中のキャッシュマネージャーは、要求に対する応答を生成し、応答を要求側ピアに送信する。応答は、ハッシュ値を送信することなく、キャッシングピアが、要求されたデータに関するハッシュ値と、要求されたデータ自体も所有することを証明するのに十分なデータを含む。キャッシングピアによって生成される応答で送信されるデータに関する追加の詳細が、図４Ｂに関して以下で与えられる。
【００３６】
要求側ピアがキャッシング・ピア・コンピューターのうちの１つから応答を受信したとき、要求側ピアは、応答が有効であることを検証する。応答が有効である場合、要求側ピアは、キャッシングピアに対するセキュア接続を確立し、要求されたデータを取り出す。キャッシングピアが要求に対する応答を提供しない場合、要求側ピアのキャッシュマネージャー２０２Ａがプロキシ２０８と連絡を取り、要求されたデータをコンテンツサーバー１０４から直接得る。要求側ピアが要求したデータを得ると、データを求める他のピアからの要求に応答する際に使用するために、データが要求側ピアにキャッシュされる。単一のデータファイルを得るためにこのプロセスを何回も反復することができることを理解されたい。例えば、ファイル全体が得られるまで、ファイルの各ブロックまたは各セクタについてプロセスを反復することができる。このプロセスに関する追加の詳細が、図３Ａ〜４Ｂに関して以下で与えられる。
【００３７】
図３Ａ〜３Ｃは、キャッシング・ピア・コンピューター、要求側ピアコンピューター、およびコンテンツサーバー１０４によってそれぞれ実行されるルーチン３００、３３０、および３７０を示す流れ図である。図３Ａ〜３Ｃに関して、ピアコンピューター１０２Ａは要求側ピアと呼ばれ、ピアコンピューター１０２Ｂはキャッシングピアと呼ばれる。ルーチン３００、３３０、および３７０はまた、図２に関して上記で説明された様々なソフトウェア構成要素を参照しながら説明される。
【００３８】
図３Ａ〜３Ｃを参照しながら説明される論理演算が、（１）コンピューティングシステム上で実行中の、コンピューターで実装される動作またはプログラムモジュールのシーケンスとして、かつ／または（２）コンピューティングシステム内の相互接続マシン論理回路または回路モジュールとして実装されることを理解されたい。実装は、コンピューティングシステムの性能要件に応じた選択の問題である。したがって、本明細書に記載の論理演算は、オペレーション、構造的装置、動作、またはモジュールと様々な形で呼ばれる。こうしたオペレーション、構造的装置、動作、およびモジュールを、ソフトウェア、ファームウェア、専用デジタルロジック、および任意の組合せとして実装することができる。
【００３９】
ルーチン３３０はオペレーション３３２で始まり、要求側ピア１０２Ａ上で実行中のアプリケーション２０６Ｂが、アプリケーションプロトコル２０４Ｂにデータを要求する。オペレーション３３４で、アプリケーションプロトコル２０４Ｂは、キャッシュマネージャー２０２Ａにデータを要求する。そのような要求を受信したことに応答して、キャッシュマネージャー２０２Ａは、要求されたデータに関するハッシュ値を、コンテンツサーバー１０４上で実行中の適切なプロトコル特有のシムに要求する。このことがオペレーション３３６で行われる。
【００４０】
ルーチン３７０はオペレーション３７２で始まり、コンテンツサーバー１０４上で実行中のプロキシ２０８が、ハッシュ値を求める要求をキャッシュマネージャー２０２Ａから受信する。オペレーション３７２から、ルーチン３７０はオペレーション３７４に進み、コンテンツサーバー１０４が、要求側ピア１０２Ａは要求されたデータに対する資格を有するかどうかを判定する。このことは、例えば、ピアコンピューターまたはそのユーザに関するアクセス権を定義するＡＣＬまたは他のタイプのデータ構造の検査によって行うことができる。要求側ピア１０２Ａがデータに対する資格を有する場合、ルーチン３７０は、判定オペレーション３７４から、図３Ｂに示され、以下で説明されるオペレーション３８０に進む。要求側ピア１０２Ａがデータに対する資格を有さない場合、ルーチン３７０はオペレーション３７４からオペレーション３７６に進み、エラーが要求側ピア１０２Ａに返される。オペレーション３３８および３４０で、エラーが要求側ピア１０２Ａによって処理される。オペレーション３７６から、ルーチン３７０はオペレーション３７８に進み、そこで終了する。
【００４１】
オペレーション３８０では、プロキシ２０８および適切なプロトコル特有のシム２１０が、上述のハッシュ関数を使用して、要求されたデータに関するハッシュ値を生成する。ハッシュ値が生成されると、コンテンツサーバー３０４は、要求側ピア１０２Ａのキャッシュマネージャー２０２Ａにハッシュ値を返す。次いで、ルーチン３７０は、以下で説明されるオペレーション３８４および３８６に進む。
【００４２】
ルーチン３３０のオペレーション３４４では、要求側ピア１０２Ａは、コンテンツサーバー１０４からハッシュ値を受信する。次いで、ルーチン３３０はオペレーション３４６に進み、要求側ピア１０２Ａが、他のピアコンピューター１０２Ａ〜１０２Ｆにブロードキャストメッセージを送信し、ピアコンピューター１０２Ａ〜１０２Ｆのうちのいずれかが要求したデータを有するかどうかを判定する。上記で簡潔に論じたように、ブロードキャストメッセージは、要求内でハッシュ値自体を送信することなく、要求側ピア１０２Ａがハッシュ値を有することを証明するのに十分なデータを含む。
【００４３】
一実装によれば、図４Ａに示されるデータ構造４００が、ブロードキャストメッセージとして送信される。図４Ａに示されるように、データ構造４００は、コンテンツサーバ１０４から受信された、要求したデータに関するハッシュ値４０４と、要求側ピア１０２Ａに関するｎｕｍｂｅｒ  ｕｓｅｄ  ｏｎｃｅ（「ＮＯＮＣＥ」）４０６と、タイムスタンプ４０８と、要求側ピアに関する識別子４１０の連結のハッシュ４０２を含む。ＮＯＮＣＥはランダムデータを含み、リプレーアタックの防止を援助し、ブロードキャスト要求に対して応答を合致させるのに使用される。タイムスタンプ４０８も、リプレーアタックの防止を援助するために含まれる。識別子４１０は、要求側ピア１０２Ａに関するＩＰアドレスまたは完全修飾ドメイン名などの要求側ピア１０２Ａに関する固有識別子を含む。ブロードキャスト要求はまた、要求されたデータ４１２に関するハッシュ値のハッシュと、要求側ピア１０２Ａに関するＮＯＮＣＥ４０６と、タイムスタンプ４０８と、要求側ピア１０２Ａに関する識別子４１０も含む。以下でより詳細に説明されるように、キャッシングピア１０２Ｂは、データ構造４００の内容を使用して、ハッシュ値を要求で送信することを必要とせずに、要求側ピア１０２Ａが要求されたデータに関するハッシュ値を所有するかどうかを判定する。
【００４４】
一実装によれば、要求されたデータ４１２に関するハッシュのハッシュは、一定文字列と連結されたハッシュのハッシュを含むことができる。例えば、一定文字列「ＭＳ＿Ｐ２Ｐ＿Ｃａｃｈｉｎｇ」をハッシュと連結することができる。ピアコンピューターは、ピアコンピューターが当該のブロックを有するかどうかに関して迅速な判定を可能にするために、このようにして生成されたハッシュ値を索引付けすることができる。ＨＭＡＣが使用される実施形態では、要求されたデータ４１２に関するハッシュのハッシュは、一定文字列の代わりに、サーバー１０４から得た秘密を使用する。
【００４５】
ルーチン３００はオペレーション３０２で始まり、キャッシングピア１０２Ｂが、要求側ピア１０２Ａによって送信されたブロードキャストメッセージを受信する。次いで、ルーチン３００はオペレーション３０４に進み、キャッシングピア３０４が、ブロードキャスト要求で提供される要求されたデータ４１２に関するハッシュのハッシュを使用して、要求されたデータの位置を突き止めることを試みる。一実装では、キャッシングピア１０２Ｂが、格納されたデータに関するハッシュ値のハッシュを使用して、キャッシュされたデータを索引付けすることができるので、このことが可能である。このようにして、キャッシングピア１０２Ｂが要求されたデータを実際に有するかどうかに関して、各キャッシングピア１０２Ｂによって迅速な判定を行うことができる。
【００４６】
オペレーション３０６では、キャッシングピア１０２Ｂが要求されたデータを有さないと判定した場合、ルーチン３００はオペレーション３０８に進み、そこで終了する。キャッシングピア１０２Ｂが要求されたデータを有すると判定した場合、ルーチン３００は、判定オペレーション３０６からオペレーション３１０に進む。オペレーション３１０では、キャッシングピア１０２Ｂは、要求側ピアが実際に、要求されたデータに関するハッシュ値を所有することを検証する。一実装では、要求されたデータのハッシュ（キャッシングピア１０２Ｂが要求されたデータを有する場合に、キャッシングピア１０２Ｂがそれを有することになる）と、要求側ピア４０６のＮＯＮＣＥ４０６と、タイムスタンプ４０８と、要求側ピア１０２Ａに関する識別子４１０のハッシュを生成することによってこのことが実施される。次いで、結果として得られる値が、ブロードキャスト要求で要求側ピア１０２Ａによって送信されたハッシュ４０２と比較される。２つの値が合致する場合、要求側ピア１０２Ａは要求されたデータに関するハッシュ値を実際に所有しており、キャッシングピア１０２Ｂからデータ自体を受信する資格を有する。
【００４７】
要求されたデータに関するハッシュ値を要求側ピア１０２Ａが所有していることをキャッシングピア１０２Ｂが検証することができない場合、ルーチン３００はオペレーション３１２からオペレーション３１４に進み、そこで終了する。要求されたデータに関するハッシュ値を要求側ピア１０２Ａが所有していることをキャッシングピア１０２Ｂが検証した場合、ルーチン３００は、オペレーション３１２からオペレーション３１６に進む。オペレーション３１６では、キャッシングピア１０２Ｂは、要求側ピア１０２Ａに対する応答を生成する。応答は、要求されたデータに関するハッシュ値を送信することなく、要求されたデータのキャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含む。
【００４８】
一実装によれば、応答では、図４Ｂに示されるデータ構造４５０が送信される。図４Ｂに示されるように、データ構造４５０は、要求されたデータに関するハッシュ値４０４と、キャッシングピア１０２Ｂによって生成されたＮＯＮＣＥ４５４と、要求側ピア１０２Ａに関する識別子４１０と、キャッシングピア１０２Ｂに関する識別子４５６と、タイムスタンプ４０８のハッシュ４５２を含む。データ構造４５０はまた、キャッシングピア１０２ＢのＮＯＮＣＥ４５４と、要求されたデータに関するハッシュ値のハッシュ４１２も含む。以下でより詳細に説明されるように、データ構造４５０に格納されたデータは、キャッシングピア１０２Ｂが要求されたデータを実際に有することを検証するのに要求側ピア１０２Ａによって使用される。
【００４９】
オペレーション３４６から、ルーチン３３０はオペレーション３４８に進み、ブロードキャストメッセージに対して何らかの応答が受信されたかどうかをキャッシュマネージャー２０２Ａが判定する。応答が受信されなかった場合、ピアコンピューターのいずれも、要求されたデータをキャッシュしていない。したがって、この場合、ルーチン３３０はオペレーション３４８からオペレーション３５０に進み、セキュア接続がコンテンツサーバー１０４との間で確立され、要求されたデータがコンテンツサーバー１０４から直接取り出される。ルーチン３７０のオペレーション３８４で、コンテンツサーバー１０４は、要求側ピア１０２Ａにデータを送信する。要求側ピア１０２Ａがデータを受信したとき、ルーチン３３０はオペレーション３５８に進み、キャッシュマネージャー２０２Ａが要求されたデータを格納し、要求されたデータに関するハッシュ値のハッシュを使用してデータを索引付けする。このようにして、他のピアからのデータを求める要求に応答する際に使用するために、データが索引付けされ、キャッシュされる。キャッシュマネージャー２０２Ａはまた、要求されたデータをアプリケーション２０６Ｂに返す。次いで、ルーチン３３０はオペレーション３６０に戻り、そこで終了する。
【００５０】
オペレーション３４８で、応答がブロードキャストメッセージに対して受信されたとキャッシュマネージャー２０２Ａが判定した場合、ルーチン３３０はオペレーション３４８からオペレーション３５２に進み、応答が受信される。本明細書に記載の方式で複数の応答を受信および処理できることを理解されたい。さらに、複数の応答が受信されたとき、要求側ピア１０２Ａは、キャッシングピアのいずれが最も多くのデータを有するか、キャッシングピアに対するネットワーク接続の速度が最も高いか、または待ち時間が最も長いかを含む様々な要素に基づいて、応答するキャッシングピアのいずれがデータを取り出すかを選ぶことができる。
【００５１】
ルーチン３７０のオペレーション３５４で、要求側ピア１０２Ａは、有効な応答がキャッシングピア１０２Ｂによって受信されたかどうかを判定する。一実装では、このことが、要求されたデータに関するハッシュ値４０４と、キャッシングピア１０２Ｂによって生成されたＮＯＮＣＥ４５４と、要求側ピア１０２Ａに関する識別子４１０と、キャッシングピア１０２Ｂに関する識別子４５６と、タイムスタンプ４０８のハッシュを生成することによって実施される。次いで、生成されたハッシュが、応答で送信されたハッシュ４５２と比較される。２つの値が合致する場合、応答は有効であり、要求されたデータをキャッシングピア１０２Ｂから取り出すことができる。したがって、応答が無効であると要求側ピア１０２Ａが判定した場合、ルーチン３３０は、オペレーション３５４からオペレーション３６０に分岐し、そこで終了する。応答が有効である場合、ルーチン３３０はオペレーション３５６に進む。
【００５２】
オペレーション３５６で、要求側ピア１０２Ａは、例えばＳｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ（「ＳＳＬ」）接続を使用することなどにより、キャッシングピア１０２Ｂに対するセキュアネットワーク接続を確立する。さらにオペレーション３５６では、要求側ピア１０２Ａがキャッシングピア１０２Ａから要求したデータを取り出す。具体的には、ＨＭＡＣが使用される実施形態では、要求側ピア１０２Ａが、秘密と連結されたデータのハッシュのハッシュをキャッシングピア１０２Ｂに送信する。ブロックごとの秘密もキャッシングピア１０２Ｂに送信しなければならない。次いで、キャッシングピア１０２Ｂは、秘密を使用して、要求側ピア１０２Ａの権限を検証する。要求側ピア１０２Ａの権限が検証された場合、ルーチン３００のオペレーション３２０で、キャッシングピア１０２Ｂは接続を確立し、要求されたデータを送信する。要求されたデータが要求側ピア１０２Ａで受信されると、オペレーション３５８で、データが索引付けされ、キャッシュされ、アプリケーション２０６Ｂに返される。次いで、ルーチン３３０はオペレーション３６０に進み、そこで終了する。
【００５３】
次に図５を参照して、本明細書で提示される様々な実施形態で使用されるコンピューター５００に関する例示的コンピューターキテクチャが論じられる。図５に示されるコンピューターキテクチャは、従来型デスクトップ、ラップトップコンピューター、ハンドヘルド、またはサーバーコンピューターを示し、上述のピアコンピューター１０２Ａ〜１０２Ｆまたはコンテンツサーバー１０４を具体化するのに使用することができる。図５に示されるコンピューターアーキテクチャは、中央演算処理装置５０２（「ＣＰＵ」）と、ランダムアクセスメモリ５０８（「ＲＡＭ」）および読取り専用メモリ（「ＲＯＭ」）５１０を含むシステムメモリ５０６と、メモリをＣＰＵ５０２に結合するシステムバス５０４とを含む。起動時などにコンピューター５００内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システムが、ＲＯＭ５１０に格納される。コンピューター５００は、以下でより詳細に説明されるオペレーティングシステム５２０、アプリケーションプログラム、およびその他のプログラムモジュールを格納する大容量記憶装置５１８をさらに含む。
【００５４】
大容量記憶装置５１８は、バス５０４に接続された大容量記憶コントローラ（図示せず）を介してＣＰＵ５０２に接続される。大容量記憶装置５１８およびその関連するコンピューター可読媒体は、コンピューター５００に対する不揮発性記憶を実現する。本明細書に含まれるコンピューター可読媒体の説明は、ハードディスクやＣＤ−ＲＯＭドライブなどの大容量記憶装置を指すが、コンピューター可読媒体はコンピューター５００によってアクセスすることのできる入手可能などんな媒体でもよいことを理解されたい。
【００５５】
例えば、限定はしないが、コンピューター可読媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、コンピューター可読命令、データ構造、プログラムモジュール、他のデータなどの情報を記憶するために何らかの方法または技術で実装された、揮発性および不揮発性の、取外し可能および取外し不能な媒体を含む。コンピューター記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、またはその他の固体メモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（「ＤＶＤ」）、ＨＤ−ＤＶＤ、Ｂｌｕｅ−ｒａｙ、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピューター５００でアクセスすることのできる他のどんな媒体も含む。
【００５６】
本発明の様々な実施形態によれば、コンピューター５００は、図１に関して上記で説明したＷＡＮなどのネットワーク５１４を介したリモートコンピューターに対する論理接続を使用するネットワーク環境で動作することができる。コンピューター５００は、バス５０４に接続されたネットワーク・インターフェース・ユニット５１２を介してネットワーク５１４に接続することができる。ネットワーク・インターフェース・ユニット５１２を使用して、他のタイプのネットワークおよびリモート・コンピューター・システムに接続することもできることを理解されたい。コンピューター５００はまた、キーボード、マウス、または電子スタイラス（図５には示さず）を含むいくつかの他の装置から入力を受け取って処理する入出力コントローラ５１６も含むことができる。同様に、入出力コントローラは、ディスプレイ画面、プリンタ、または他のタイプの出力装置（やはり図５には示さず）に出力を提供することができる。
【００５７】
上記で簡潔に触れたように、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮによるＷＩＮＤＯＷＳ  ＸＰオペレーティングシステム、ＷＩＮＤＯＷＳ  ＶＩＳＴＡオペレーティングシステムなどの、ネットワーク化されたコンピューターの動作を制御するのに適したオペレーティングシステム５２０を含むいくつかのプログラムモジュールおよびデータファイルを、コンピューター５００の大容量記憶装置５１８およびＲＡＭ５０８に格納することができる。大容量記憶装置５１８およびＲＡＭ５０８はまた、１つまたは複数のプログラムモジュールも格納することができる。具体的には、大容量記憶装置５１８およびＲＡＭ５０８は、クライアントアプリケーション２０６Ｂ、キャッシュマネージャー２０２Ｂ、ハッシュ５２２Ｂ、他のピアまたはコンテンツサーバー１０４から受信したデータ５２４Ｂなど、図２に示され、図２を参照しながら上記で説明したソフトウェア構成要素を格納することができる。コンテンツサーバー１０４の場合、大容量記憶装置５１８を使用して、サーバープリケーション２０６Ａ、プロキシ２０８、プロトコル特有のシム２１０、ハッシュ５２２Ａ、およびデータ５２４Ａを格納することができる。他のデータおよびプログラムモジュールもピア１０２Ａ〜１０２Ｆおよびコンテンツサーバー１０４の大容量記憶装置５１８上に格納することができる。
【００５８】
上記に基づいて、セキュアＰ２Ｐキャッシングのためのシステム、方法、機器、データ構造、およびコンピューター可読媒体が本明細書で提供されることを理解されたい。本明細書で提示される主題がコンピューターの構造的特徴、方法動作、コンピューター可読媒体に特有の術語で説明されたが、添付の特許請求の範囲で定義される本発明は必ずしも本明細書に記載の特定の特徴、動作、または媒体に限定されないことを理解されたい。むしろ、この特定の特徴、動作、および媒体は、特許請求の範囲を実装する例示的形態として開示される。上述の主題は、例示として与えられたものに過ぎず、限定として解釈されるべきではない。図示および説明される例示的な実施形態および応用例に追従することなく、かつ添付の特許請求の範囲に記載の本発明の真の精神および範囲から逸脱することなく、本明細書に記載の主題に対して様々な修正および変更を行うことができる。
【図１】
0004762347.tif 000002
【図２】
0004762347.tif 000003
【図３Ａ】
0004762347.tif 000004
【図３Ｂ】
0004762347.tif 000005
【図３Ｃ】
0004762347.tif 000006
【図４Ａ】
0004762347.tif 000007
【図４Ｂ】
0004762347.tif 000008
【図５】
0004762347.tif 000009