(57)【要約】サーバレス環境においてセキュアな非同期メッセージの公開及び取り出しを提供するためのシステム。このシステムは、ピアツーピアネットワーク等のアドホックな且つセグメント化されたネットワーク上で使用することができる。このシステムは、分散ハッシュテーブル（ＤＨＴ）を介して非同期メッセージ要求／応答の送信及び記憶を行う方法、非同期メッセージングサービスを介してＲＳＳフィードを確立する方法、インターネットメッセージバディ認証の要求の公開及び保留中のバディ要求の取り出しを行う方法を提供することができる。【選択図】図１
2009534938.tif 000002
【特許請求の範囲】
【請求項１】
サーバレス環境において非同期メッセージの公開及び受信を行う方法であって、
送信側識別子を含むメッセージを提供するステップ、
送信側秘密鍵を使用して前記メッセージに署名するステップ、並びに
前記メッセージ及び署名を第１の一般に利用可能な永続インデックスストアに挿入するステップ、
を含み、
前記メッセージは、前記受信側に関連付けられる鍵によってインデックスされる、
方法。
【請求項２】
請求項１に記載の方法であって、
前記受信側に関連付けられる前記鍵に基づいて前記メッセージを取り出すステップ、
前記送信側識別子に基づいて前記送信側の公開鍵を取得するステップ、及び
前記メッセージが前記送信側の前記秘密鍵によって署名されているか否かを、前記取得された公開鍵を使用して判断するステップ、
をさらに含む、方法。
【請求項３】
請求項２に記載の方法であって、前記メッセージ及び署名を受信側公開鍵を使用して暗号化するステップ、並びに、前記メッセージを受信側秘密鍵で解読するステップをさらに含む、方法。
【請求項４】
請求項２に記載の方法であって、前記メッセージが、予測されるフォーマット及びシンタックスを有するか否かを判断するステップをさらに含む、方法。
【請求項５】
請求項２に記載の方法において、前記送信側の公開鍵を取得するステップは、前記送信側識別子に基づき、第２の一般に利用可能な永続インデックスストアにおいて前記公開鍵の検索を行うステップを含む、方法。
【請求項６】
請求項１に記載の方法において、前記一般に利用可能な永続インデックスストアは、分散ハッシュテーブルである、方法。
【請求項７】
請求項１に記載の方法において、前記鍵は、受信側ＩＤと、組み合わせを一意なものにするインスタンスＩＤとの組み合わせから形成される、方法。
【請求項８】
請求項６に記載の方法において、前記受信側ＩＤは、受信側公開鍵及び受信側公開鍵の派生物のうちの一方である、方法。
【請求項９】
請求項１に記載の方法において、前記メッセージは、バディリストメッセージ、リアルシンプルシンジケーション（ＲＳＳ）フィード、及び更新されたファイルのうちの１つを含む、方法。
【請求項１０】
コンピュータシステムであって、
ピアツーピアネットワークの第１の分散ハッシュテーブルと、
第１の鍵に基づいてデータを暗号化すると共に、第２の対応する鍵を使用して前記データを解読するための非対称暗号コンポーネントと、
第１のピアノードの秘密鍵に基づき、前記暗号コンポーネントを介してメッセージに署名すると共に、受信側ＩＤによってインデックスされる前記第１の分散ハッシュテーブルに前記メッセージを挿入する前記第１のピアノードと、
前記受信側ＩＤに基づいて前記第１の分散ハッシュテーブルから前記メッセージを取り出し、前記メッセージの送信側識別子に基づいて第２の分散ハッシュテーブルから前記第１のピアノードの公開鍵を取り出すと共に、前記メッセージが前記第１のピアノードの前記秘密鍵によって署名されているか否かを、前記暗号コンポーネントを介して、前記第１のピアノードの前記取り出された公開鍵を使用して判断する第２のノードと、
を備える、コンピュータシステム。
【請求項１１】
請求項１０に記載のコンピュータシステムにおいて、前記第１のピアノードは、受信側公開鍵に基づき前記暗号コンポーネントを介して前記メッセージを暗号化し、前記第２のノードは、前記受信側公開鍵に対応する前記第２のノードの秘密鍵に基づき前記暗号コンポーネントを介して前記メッセージを解読する、コンピュータ。
【請求項１２】
請求項１０に記載のコンピュータシステムにおいて、前記メッセージは、前記第１のピアノードからのバディ要求であり、前記第２のピアノードは、前記第１の分散ハッシュテーブルを介して前記要求を取り出す、コンピュータシステム。
【請求項１３】
請求項１２に記載のコンピュータシステムにおいて、前記第２のピアノードは、前記バディ要求を受理すると判断すると、前記第２のピアノードの秘密鍵に基づき前記暗号コンポーネントを介して応答メッセージに署名し、前記第１のピアノードの公開鍵に基づき前記暗号コンポーネントを介して前記応答メッセージを暗号化すると共に、前記暗号化された応答メッセージを、前記第１のピアノードに関連付けられるＩＤによってインデックスされる前記第１の分散ハッシュテーブルに挿入する、コンピュータシステム。
【請求項１４】
請求項１０に記載のコンピュータシステムにおいて、前記メッセージは、前記第１のピアノードによって公開されるＲＳＳフィードメッセージである、コンピュータシステム。
【請求項１５】
請求項１０に記載のコンピュータシステムにおいて、前記メッセージは、前記第２のピアノードによって消費されるＲＳＳフィードである、コンピュータシステム。
【請求項１６】
請求項１０に記載のコンピュータシステムにおいて、前記第１のピアノードは、前記メッセージを介してファイル更新通知を公開する、コンピュータシステム。
【請求項１７】
請求項１０に記載のコンピュータシステムにおいて、前記メッセージは、ファイル更新通知を表し、前記第２のピアノードは、前記メッセージを介して前記ファイル更新通知を取り出す、コンピュータシステム。
【請求項１８】
コンピュータ可読媒体であって、
送信側秘密鍵を使用してメッセージに署名するステップ、
受信側公開鍵を使用して前記メッセージを暗号化するステップ、及び
受信側に関連付けられる鍵によってインデックスされる一般に利用可能な永続インデックスストアに前記メッセージを挿入するステップ、
を含むオペレーションを行うためのコンピュータ実行可能命令を有する、コンピュータ可読媒体。
【請求項１９】
請求項１８に記載のコンピュータ可読媒体であって、
前記受信側に関連付けられた前記鍵に基づいてエントリーを取り出すステップ、
受信側秘密鍵で前記メッセージを解読するステップ、
前記メッセージの送信側識別子に基づいて前記送信側の公開鍵を取得するステップ、及び
前記メッセージが前記送信側秘密鍵によって署名されているか否かを、前記送信側の前記公開鍵を使用して判断するステップ、
をさらに含む、コンピュータ可読媒体。
【請求項２０】
請求項１９に記載のコンピュータ可読媒体であって、前記メッセージが、予測されるフォーマット及びシンタックスを有するか否かを判断するステップをさらに含む、コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
非同期メッセージングは、ネットワーク上で実行される多数の異なるアプリケーションで使用することができる。しかしながら、これらのアプリケーションは、専用サーバによって提供される非同期メッセージング機能を使用する場合があり、それによって、アプリケーションがサーバレスシステムで独立して機能することが妨げられるおそれがある。このような１つのアプリケーションは、インスタントメッセージング（ＩＭ）アプリケーションのバディリスト（buddy list）機能である場合がある。
【０００２】
慣用的には、メッセージングシステムは、ＩＭバディ要求メッセージの受信及びＩＭバディ返答メッセージの公開を行うための専用サーバを使用する場合がある。このシステムは、すべてのユーザが、特定のサービスに加入し、そのサービス及びすべてのサーバを信頼することを必要とする場合がある。また、システムは、インターネット接続性も必要とする場合がある。専用サーバを使用することによって、サーバレスシステムにおいて提供することができる柔軟性も提供されない。或いは、要求メッセージ及び応答メッセージを促進するために、電子メールが、非同期メッセージングシステムとして使用される場合もある。
【発明の開示】
【０００３】
特許請求されるシステム及び方法は、信頼されるサーバから独立した非同期メッセージングシステムを提供することができる。特許請求されるシステムは、サーバベースのセキュリティの必要性を削減する既存のメッセージングシステムのセキュリティモデルを提供する。非同期メッセージングシステムは、バディリスト要求を安全に公開すると共に取り出された要求を認証するネットワーク上でのインスタントメッセージング（ＩＭ）システムで使用することができる。システムは、分散ハッシュテーブル（ＤＨＴ）を介して非同期メッセージ要求／応答の送信及び記憶を行う方法を提供することができる。この方法は、ＲＳＳフィード、及び文書管理／ファイル複製サービスで更新通知を提供すること等、サーバレスシステム上の他の非同期メッセージングアプリケーションで使用することもできる。
【発明を実施するための最良の形態】
【０００４】
以下の本文は、多数の異なる実施形態の詳細な説明を述べているが、この説明の法的範囲は、本特許の最後に述べられている特許請求の範囲の文言によって定められることが理解されるべきである。この詳細な説明は、単に例示として解釈されるべきであり、すべての可能な実施形態を説明することは、不可能ではないとしても実際的ではないため、すべての可能な実施形態を説明するものではない。現在の技術又は本特許の出願日後に開発される技術のいずれかを使用して多数の代替的な実施形態を実施することができる。それでもなお、これらの実施形態は特許請求の範囲内に含まれる。
【０００５】
「本明細書で使用される場合、「用語『  』は、これによって、……を意味するように定義される」という文又は同様の文を使用して、用語が本特許で明示的に定義されていない限り、その用語の明白な意味又は通常の意味を越えて、明示的又は暗示的のいずれにもその用語の意味を限定する意図はなく、このような用語の範囲は、（特許請求の範囲の文言以外の）本特許のいずれかの部分でなされるいずれの陳述に基づいても限定されるように解釈されるべきでないことも理解されるべきである。本特許の最後にある特許請求の範囲に列挙されたどの用語も、単一の意味と一致するように本特許で参照される限りにおいて（それは、読み手を混乱させないよう明確にするためだけに行われているものである）、このような請求項の用語は、暗示又は別の方法でその単一の意味に限定されることが意図されるものではない。最後に、請求項の要素は、いずれの構造も詳述することなく、「手段」という言葉及び機能を列挙することによって定義されていない限り、どの請求項の要素の範囲も、米国特許法第１１２条第６パラグラフの適用に基づいて解釈されることは意図されていない。
【０００６】
図１は、特許請求される方法及び装置のブロックのシステムを実施することができる適したコンピューティングシステム環境１００の一例を示している。このコンピューティングシステム環境１００は、適したコンピューティング環境の単なる一例であり、特許請求の範囲の方法及び装置の使用又は機能の範囲に関して何らの限定も示唆するように意図されていない。コンピューティング環境１００は、この例示の動作環境１００に示すいずれか１つのコンポーネント又はコンポーネントの組み合わせに関してどの依存関係も要件も有するものとして解釈されるべきではない。
【０００７】
特許請求される方法及び装置のブロックは、他の多数の汎用又は専用のコンピューティングシステム環境又は構成と共に動作する。特許請求の範囲の方法又は装置と共に使用するのに適し得る既知のコンピューティングシステム、環境、及び／又は構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイス又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル一般消費者向け電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システム又はデバイスの任意のものを含む分散コンピューティング環境等が含まれるが、これらに限定されるものではない。
【０００８】
特許請求される方法及び装置のブロックは、プログラムモジュール等のコンピュータ実行可能命令がコンピュータによって実行される一般的な状況で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか又は特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。これらの方法及び装置は、タスクが、通信ネットワークを通じてリンクされているリモート処理デバイスによって実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルコンピュータストレージ媒体及びリモートコンピュータストレージ媒体の双方に配置することができる。
【０００９】
図１を参照すると、特許請求される方法及び装置のブロックを実施する１つの例示的なシステムは、コンピュータ１１０の形態の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、処理ユニット１２０と、システムメモリ１３０と、システムメモリを含むさまざまなシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１とが含まれ得るが、これらに限定されるものではない。システムバス１２１は、いくつかのタイプのバス構造の任意のものとすることができる。これらのいくつかのタイプのバス構造には、さまざまなバスアーキテクチャの任意のものを使用するメモリバス又はメモリコントローラと、周辺バスと、ローカルバスとが含まれる。限定ではなく例として、このようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バスと、マイクロチャネルアーキテクチャ（ＭＣＡ）バスと、エンハンスドＩＳＡ（ＥＩＳＡ）バスと、ビデオエレクトロニクス標準化団体（ＶＥＳＡ）ローカルバスと、メザニンバスとしても既知である周辺コンポーネント相互接続（ＰＣＩ）バスとが含まれる。
【００１０】
コンピュータ１１０は、通常、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる任意の利用可能な媒体とすることができ、揮発性媒体及び不揮発性媒体の双方、着脱可能媒体及び着脱不能媒体の双方が含まれる。限定ではなく例として、コンピュータ可読媒体は、コンピュータストレージ媒体と通信媒体とを含むことができる。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータ等の情報のストレージのための任意の方法又は技術で実施される、揮発性及び不揮発性の着脱可能及び着脱不能な媒体の双方が含まれる。コンピュータストレージ媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気ストレージデバイス、又は、所望の情報を記憶するのに使用することができ且つコンピュータ１１０がアクセスすることができる他の任意の媒体が含まれるが、これらに限定されるものではない。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、搬送波又は他のトランスポートメカニズム等の変調されたデータ信号で具現化し、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、その特性の１つ又は複数が、その信号内の情報を符号化するように設定又は変更されている信号を意味する。限定ではなく例として、通信媒体には、有線ネットワーク又は直接有線接続等の有線媒体と、音響媒体、ＲＦ媒体、赤外線媒体、他の無線媒体等の無線媒体とが含まれる。上記の任意のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００１１】
システムメモリ１３０は、読み出し専用メモリ（ＲＯＭ）１３１及びランダムアクセスメモリ（ＲＡＭ）１３２等の揮発性メモリ並びに／又は不揮発性メモリの形態のコンピュータストレージ媒体を含む。立ち上げ時等に、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ）は、通常、ＲＯＭ１３１に記憶される。ＲＡＭ１３２は、通常、処理ユニット１２０によって即座にアクセス可能であり、且つ／又は、処理ユニット１２０によって現在処理中のデータ及び／又はプログラムモジュールを含む。限定ではなく例として、図１は、オペレーティングシステム１３４と、アプリケーションプログラム１３５と、他のプログラムモジュール１３６と、プログラムデータ１３７とを示している。
【００１２】
コンピュータ１１０は、他の着脱可能／着脱不能な揮発性／不揮発性コンピュータストレージ媒体も含むことができる。単なる例として、図１は、着脱不能不揮発性磁気媒体からの読み出し又はこの磁気媒体への書き込みを行うハードディスクドライブ１４０と、着脱可能不揮発性磁気ディスク１５２からの読み出し又はこの磁気ディスク１５２への書き込みを行う磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭ又は他の光媒体等の着脱可能不揮発性光ディスク１５６からの読み出し又はこの光ディスク１５６への書き込みを行う光ディスクドライブ１５５とを示している。この例示の動作環境で使用することができる他の着脱可能／着脱不能な揮発性／不揮発性コンピュータストレージ媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等が含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は、通常、インターフェース１４０等の着脱不能メモリインターフェースを通じてシステムバス１２１に接続され、磁気ディスクドライブ１５１及び光ディスクドライブ１５５は、通常、インターフェース１５０等の着脱可能メモリインターフェースによってシステムバス１２１に接続される。
【００１３】
上述し且つ図１に示したドライブ及びそれらに関連付けられるコンピュータストレージ媒体は、コンピュータ１１０のコンピュータ可読命令、データ構造、プログラムモジュール、及び他のデータのストレージを提供する。図１では、たとえば、ハードディスクドライブ１４１が、オペレーティングシステム１４４と、アプリケーションプログラム１４５と、他のプログラムモジュール１４６と、プログラムデータ１４７とを記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、及びプログラムデータ１３７と同じである場合もあるし、異なる場合もあることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、及びプログラムデータ１４７は、最低でも、それらが別のコピーであることを示すために、ここでは、異なる符号を与えられている。ユーザは、入力デバイスを通じてコンピュータ２０にコマンド及び情報を入力することができる。この入力デバイスは、キーボード１６２及び一般にマウスと称されるポインティングデバイス１６１、トラックボール、又はタッチパッド等である。他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナ等が含まれ得る。これらの入力デバイス及び他の入力デバイスは、多くの場合、システムバスに結合されているユーザ入力インターフェース１６０を通じて処理ユニット１２０に接続されているが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）等の他のインターフェース及びバス構造によって接続されてもよい。モニタ１９１又は他のタイプの表示デバイスも、ビデオインターフェース１９０等のインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７及びプリンタ１９６等の他の周辺出力デバイスも含むことができる。これらの他の周辺出力デバイスは、出力周辺インターフェース１９０を通じて接続することができる。
【００１４】
コンピュータ１１０は、リモートコンピュータ１８０等の１つ又は複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、又は他の一般的なネットワークノードとすることができ、通常、コンピュータ１１０に関して上述した要素の多く又はすべてを含む。ただし、図１には、メモリストレージデバイス１８１しか示されていない。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１とワイドエリアネットワーク（ＷＡＮ）１７３とを含むが、他のネットワークも含むことができる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、及びインターネットでは一般的である。
【００１５】
コンピュータ１１０は、ＬＡＮネットワーキング環境で使用されるとき、ネットワークインターフェース又はアダプタ１７０を通じてＬＡＮ１７１に接続される。コンピュータ１１０は、ＷＡＮネットワーキング環境で使用されるとき、通常、インターネット等のＷＡＮ１７３によって通信を確立するためのモデム１７２又は他の手段を含む。モデム１７２は、内蔵又は外付けとすることができ、ユーザ入力インターフェース１６０又は他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク接続環境では、コンピュータ１１０に関して示したプログラムモジュール又はその一部は、リモートメモリストレージデバイスに記憶することができる。限定ではなく例として、図１は、リモートアプリケーションプログラム１８５を、メモリデバイス１８１上に存在するものとして示している。図示したネットワーク接続は、例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することもできることが理解されるであろう。
【００１６】
ピアツーピア（Ｐ２Ｐ）システムは、たとえば、セントラルサーバの援助なしに、非集中的な形式で互いに通信するノードのネットワークを使用する。ピアツーピアネットワークの各ノード（たとえば、アプリケーション又はデバイス）は、直接接続を通じてネットワーク上の別のノードと通信することもできるし、各ノードは、目的のノードへ通信を中継する中間ノードを使用して間接的に通信することもできる。
【００１７】
図２は、Ｐ２Ｐシステム２００の高レベルの描写を示している。システム２００は、ピアエンティティ（２０２〜２１２）の集まりを含む。ピアエンティティ（２０２〜２１２）は、ネットワーク又はネットワークの組み合わせを介して互いに結合されているパーソナルコンピュータデバイスとすることができる。図２は、各ピアエンティティ（２０２〜２１２）が他のすべてのピアエンティティ（２０２〜２１２）に接続されている一例を示している。それ以外の場合には、１つ又は複数のピアエンティティ（２０２〜２１２）は、１つ又は複数の中間参加者（２０２〜２１２）を介して他のピアエンティティ（２０２〜２１２）に接続することができる。
【００１８】
インスタントメッセージングアプリケーション等の或るアプリケーションは、ピアツーピアネットワーク等の非集中的なサーバレスネットワークにおける使用に、より良く適することができる。しかしながら、既存のＩＭアプリケーションは、専用のセントラルサーバを使用して、ユーザ間通信リンクを提供及び維持することを含むＩＭ機能を提供する場合がある。いくつかのＩＭアプリケーションは、現在、通信リンクをサーバなしでユーザ間に確立することができるピアツーピアネットワーク上で実行される場合がある一方、或るＩＭ機能は、依然としてセントラルサーバによって維持される場合がある。たとえば、ピアツーピアネットワーク上で実行されるいくつかのＩＭアプリケーションは、サーバの援助なしで通信リンクを管理する場合がある一方、それらのＩＭアプリケーションは、依然としてセントラルサーバに依拠して、アクセス制御リスト機能、すなわちバディリスト機能を提供する場合がある。
【００１９】
ユーザバディリストは、そのユーザが関係を有する他のユーザ、すなわちバディの集まりを表すことができる。バディであることは、或る特権を有することを意味することができる。たとえば、バディがユーザについてのプレゼンス情報を取得することを可能にすることができる。これは、ユーザがオンラインであることの表示とすることができる。また、バディであることによって、他のユーザが通信することができない可能性がある場合に、そのバディがユーザと通信することを可能にすることができる。バディリストは、アクセス制御リストの一例であり、この文書におけるすべての引用は、このようなすべてのアクセス制御リストの総称であるとみなされるべきである。
【００２０】
図３は、一般的な非同期バディリスト認可プロセスを示している。一般に、第１のユーザＡがバディリストを作成する必要がある場合、ユーザＡは、プレゼンス情報の監視／取り出しを行う認可を要求する要求を、見込みバディに発行することができる（３０１）。ユーザは、その間ずっとオンラインでもなく接続されてもいない場合があるため、ＩＭシステムは、要求メッセージ及び応答メッセージをキャッシュすることができる。このように、ユーザＢがオンラインであるか否かの判断を最初に行うことができる（３０２）。ユーザＢがオンラインである場合には、この要求はユーザＢへ配信することができ（３０３）、そうでない場合には、この要求は後の配信のためにキャッシュすることができる（３０４）。見込みバディは、この要求を受信すると、要求を受理するか、又は拒否するかを判断し（３０５）、適切な応答を発行する（３０６）。応答が発行されると、要求側がオンラインであるか否かの判断を行うことができる（３０７）。要求側がオンラインである場合には、要求側は応答を受信することができ（３０８）、そうでない場合には、要求は後の配信のためにキャッシュすることができる（３０９）。要求が受理された場合には、応答によって、ユーザＡがユーザＢに関するプレゼンス情報を取り出すことを可能にすることができ、さらに、ユーザＢと通信することを可能にすることができる。
【００２１】
この認可プロセスは、通例、サーバによって促進することができ、上述したように、要求側が、バディがオンラインである場合には見込みバディを見つけ、且つ／又は、後の配信のために認可要求をキャッシュすることが可能になる。このサーバベースの手法は、すべてのユーザが単一のサーバに署名して信頼すること、及び、すべてのユーザがインターネット接続性を有することを必要とする場合がある。１つの代替的なメカニズムは、電子メール（別の非同期メッセージングプロセス）を使用して要求及び応答を交換することを伴うことができる。
【００２２】
ピアツーピアネットワークは、サーバ及びそのサーバのセットアップ及び維持に必要な付随するリソースドレイン（resource drain）の必要性を取り除くために実施することができるため、セントラルサーバに依拠してＩＭ機能の一部を提供することは、ピアツーピアネットワークを使用してＩＭアプリケーションをサポートする目的と矛盾し得る。特許請求される非同期メッセージングシステムは、サーバベースのセキュリティの必要性を低減するか又は取り除くことができるセキュリティプロセスを実施することができ、それによって、サーバとの独立性がより高い手法を非同期メッセージングに提供することができる。特許請求される方法及びシステムは、分散ハッシュテーブル等の非サーバベースのキャッシュシステムを使用して、バディリストにおいて管理を容易にすることができる。
【００２３】
図４は、分散ハッシュテーブル（ＤＨＴ）４００を示している。このＤＨＴは、サーバ独立型の永続インデックスシステム（server-independent persistent indexing system）を表すことができる。分散ハッシュテーブル４００は、ピアツーピアネットワーク４０５を形成する一群のピアエンティティ４０１〜４０４上に保持することができる。分散ハッシュテーブル４００のエントリーは、たとえばハッシュ関数を使用して、論理的に分割又はグループ化することができる。ハッシュ関数は、取り出しをより効率的に行うことができるように、或る論理順序でエントリーを共にグループ化又はクラスタ化することができる。ＤＨＴは、１）ノード４０１〜４０４等の複数のノードにわたるテーブルコンテンツの分散、及び、２）レコードの公開及び取り出しを行う方法を提供するルーティングメカニズム（図示せず）の２つの主要なプロパティを有することができる。
【００２４】
ＤＨＴで使用されるルーティングメカニズム及び分散は、Ｃｈｏｒｄ、Ｐａｓｔｒｙ、ＰＮＲＰ，Ｔａｐｅｓｔｒｙ等のオーバーレイプロトコル又は基盤プロトコル（substrate protocol）によって提供することができる。これらの基盤プロトコルは、Ｐ２ＰネットワークのＤＨＴを維持すると共に、ユーザがピアツーピア形式で永続データレコードを公開することを可能にすることができるＤＨＴ上のデータキャッシュサービスを提供することができる。これらのレコードは、公開側によって明示的に削除されるまで、又は、期限切れで無効となるまで、ＤＨＴに存続することができる。これらのプロトコルは、組織的な方法でレコードを一箇所に寄せ集め、それによって、取り出しをより効率的にする上述したようなハッシュ関数に基づくことができる。ＤＨＴは、ピアツーピアアーキテクチャ上に構築することができるため、インターネット接続性を必要としない場合があることに留意すべきである。ＤＨＴは、サブネットスコープ上又はローカルネットワークスコープ上に構築することができる。
【００２５】
特定のユーザについて複数のＩＭ要求が存在し得るため、特定のユーザ又は鍵の複数のレコードを集約するのに、キャッシュ又はインデックスサービスが必要とされる場合がある。ＤＨＴシステムの中には、単一のＩＤの下で複数のレコード又はエントリーを記憶することができるもの、すなわち非一意の鍵を可能にするものもあれば、非一意の鍵をサポートせず、各鍵につき単一のエントリーのみを許容することができるものもある。ＤＨＴが非一意の鍵のエントリーをサポートしていない場合、或るシーケンスを主キーシーケンスに付加して、そのエントリーを同じ主キーの他のエントリーと区別することができる。シーケンスにエントリーを公開したい各ノードが、現在公開されている最も高い値の鍵を見つけて、その現在最も高い値に１を加えた付加値を使用するように、付加される数字は、単調増加する値とすることができる。これを図５の表に示すことができる。鍵列５０１は、レコード列５０４の下にある複数の異なるレコード５０３に対応する複数の異なる鍵５０２を示している。（これらの鍵は、レコードの一部とみなすことができるが、例示のため、レコードは図示するように区分することができる。）図５に示すように、一組の鍵は、共通のシーケンス、すなわちプライマリＩＤ５０５で始めることができるが、付加されたシーケンス又はインスタンスＩＤ５０６で終了する場合がある。インスタンスＩＤ５０６は、プライマリＩＤ５０５に基づき新しい各エントリーについて順次生成することもできるし、ランダムに生成することもできる。インスタンスＩＤ５０６の主な特徴は、インスタンスＩＤ５０６が、プライマリＩＤ５０５と結合して特定のインデックス又はＤＨＴの一意の鍵を形成することとすることができる。複数のレコードを同じ鍵で公開することを可能にするＤＨＴからレコードを取り出す際に、問い合わせに必要なものは、プライマリＩＤに基づいて問い合わせることのみとすることができる。ＤＨＴが一意の鍵を必要とするとき、「インスタンスＩＤ」を各鍵に付加することによって、プライマリＩＤシーケンスを有するすべてのエントリーについて問い合わせることができ、これによって、その主キーにマッピングするすべてのレコード（たとえば、すべてのインスタンスＩＤ）を返すことができる。
【００２６】
図６は、特許請求の範囲のバディリストの実施形態で使用されるＤＨＴエントリーを示している。メッセージ又はレコード６００は、鍵６０１と、メッセージ６０２と、要求側識別データ６０３と、署名６０４とを含むことができる。鍵６０１は、受信側ＩＤ６０５の部分と、インスタンスＩＤ６０６の部分とを含むことができる。特許請求される非同期メッセージングシステムのバディリストの実施態様では、エントリーのメッセージ部は、バディ要求又はバディ応答を示すことができる。公開側名は、公開側のＩＤ又は公開鍵等の任意の識別情報とすることができる。バディ要求側の場合、この情報は、要求側を識別することになる。公開側名又は公開側識別情報は、ユーザ公開鍵に対して統計的に一意である暗号的一意識別子（Cryptographically Unique Identifier）（ＣＵＩ）コールサインとすることができる。たとえば、ＣＵＩは、ハッシュ関数等のアルゴリズムを使用してユーザ公開鍵から導出することができる。一実施形態では、ＣＵＩは、公開鍵等のより長いユーザ識別子を、「Callsigns」と題する米国特許出願第１０／８８２０７９号に記載されたピアツーピアシステムで使用されるピア名（Peer Name）等の、より短くよりユーザ管理しやすい形態で表すのに使用することができる。レコードの署名６０４は、公開側（たとえば、バディリスト要求側）秘密鍵を使用して署名することができる。メッセージ又はレコード全体は、受信側公開鍵を使用して暗号化することができる（６０７）。
【００２７】
図７は、バディ要求公開プロセスの実施形態を示している。ターゲットユーザとのバディ関連付けを形成したいバディ要求側は、最初に、バディ要求レコードを構築することができる（７０１）。このバディ要求レコードは、要求メッセージと、要求側名と、要求側公開鍵と、署名とを含む。要求側は、要求側の秘密鍵を使用してバディ要求に署名することができる（７０２）。オプションとして、要求側は、ターゲットユーザ又はバディの公開鍵を使用してバディ要求を暗号化することもできる（７０３）。要求側は、次に、ターゲットユーザの名称をレコード鍵として使用して、バディ要求レコードをＤＨＴに挿入することができる（７０４）。要求側は、応答が受信されるまで、このレコードを必要に応じてリフレッシュすることができる（７０５）。
【００２８】
高度化された一実施形態では、ブロック７０５は、オプションの継続時間パラメータを使用することを伴うことができる。この実施形態では、図６のレコード６００は、継続時間パラメータで補うことができる。この継続時間パラメータは、満了時間又は有効性継続時間を提供することができる。この継続時間の長さは、上述した認証システムで使用される公開・秘密鍵ペアを提供するのに使用される暗号の強度と直接一致し得る。代替的に、この継続時間は、他のセキュリティパラメータに対応してもよい。したがって、図７のブロック７０５は、レコードをチェックして、継続時間パラメータが満了したか否かを判断することを含むことができる。継続時間パラメータが満了すると、レコード又はエントリーは、無効とすることができ、ＤＨＴから削除することができる。ユーザ又はＩＭプログラムが要求の存続を意図している場合、そのエントリーは、同じバディについての（おそらく、異なるインスタンスＩＤの下の）新しいエントリーと交換することができる。
【００２９】
図８は、メッセージ取り出しプロセスの実施形態を示している。受信側のＩＤの下にあるすべてのレコードについてＤＨＴに対して問い合わせることができる（８０１）。ＤＨＴが、非一意の鍵をサポートしていない場合、この問い合わせは、受信側のＩＤを部分的に含むすべてのレコードについて行うことができる（ここで、ＩＤの他の部分は、上述したように、受信側ＩＤに付加されたインスタンスＩＤとすることができる）。したがって、ＤＴＨに公開された保留中のすべてのバディ要求は、この問い合わせを介して取り出すことができる。取り出された要求は、（必要ならば）最初に、受信側の秘密鍵を使用して解読することができる（８０２）。このプロセスは、メッセージが、レコードを取り出したユーザを対象にしたものであるという保証を提供することができる。レコードを解読することができない場合、メッセージは、危殆化されている（８０３）か又は破損している場合があり、そのレコードを廃棄することができる。レコードが適切に解読された場合、署名を、要求側／送信側の公開鍵に対してチェックして、メッセージが要求側から来たものであるか否かを判断することができる（８０４）。署名が検証されない場合、メッセージは、危殆化されている場合がある（８０３）。
【００３０】
要求側／送信側の公開鍵は、メッセージ本体の一部とすることができる。或いは、たとえばユーザＩＤとすることができる要求側名、受信側は、公開鍵ディレクトリを介して要求側ユーザ名に対応する公開鍵を取得することを可能にすることができる。この公開鍵ディレクトリは、ＩＭシステムの既存の部分、又は、ＩＭアプリケーションが実行されているオペレーティングシステム若しくはネットワークインフラストラクチャの一部とすることができる。たとえば、この機能は、ピアツーピアネットワークによって提供することができる。
【００３１】
署名が要求側／送信側の公開鍵によって検証された場合、予測されるフォーマット及びシンタックスについてメッセージをさらにチェックすることができ（８０５）、そうでない場合には、メッセージは、危殆化されている場合がある（８０３）。メッセージフォーマットのチェックを使用して、たとえば、メッセージが、署名を一致させるためにハックされていないことを保証することができる。ハックされたメッセージを提供して、暗号化された署名を一致させることは、統計的に困難であるかもれしれないが不可能でない場合がある。しかしながら、ハッキングの結果、メッセージは、意図されるフォーマット又は予測されるフォーマットと一致しなくなる可能性がある。したがって、メッセージの最初のチェックを行って、メッセージフォーマットが、予測されるフォーマットを遵守しているか否かを判断することができる。たとえば、連絡先情報が通信される場合、その連絡先情報は、１０文字フォーマットを必要とすることができる。
【００３２】
代替的に又は加えて、メッセージのシンタックスをチェックしてもよい。たとえば、連絡先情報は、オプション及びそれらのオプション間の特定の関係のリストに限定することができる。したがって、フォーマットが２つのエントリーを必要とし、且つ、最初のエントリーが２番目のエントリーに関係付けられて（シンタックス）、それらのエントリーがこの予測されるシンタックスに一致しない場合、何者か又は何かが、メッセージに不正変更を加えている場合がある（８０３）。
【００３３】
図９は、ユーザ／バディが、要求が有効であると判断したときの当該ユーザ／バディ応答プロセスを示している。各要求について、ユーザは、その要求が受理されたか、又は拒否されたかを示す応答メッセージを、必要なあらゆる証明書と共に構築することができる（９０１）。これらの証明書を使用して、たとえば、要求側のバディ特権（buddy privilege）を有効にすることができる。ユーザは、ユーザ秘密鍵を使用してメッセージに署名することができる（９０２）。オプションとして、ユーザは、要求側公開鍵を使用して応答メッセージを暗号化することができる（９０３）。ユーザは、次に、要求側の名称、鍵、又はＩＤをレコード鍵として使用して、応答メッセージをＤＨＴに公開することができる（９０４）。応答レコードは、必要に応じて更新することができる（９０５）。この更新は、上述したプロセスと同様の継続時間パラメータに依存することができる。要求側は、オンラインになると、公開された応答レコードを、図８に示すプロセスと同様の方法で取得することができる。応答が受理である場合、要求側は、証明書を使用してバディとの通信を有効にすることができ、バディに関するプレゼンス情報を取得することができる。
【００３４】
インスタントメッセージングアプリケーションを実行するサーバレスピアツーピアネットワークの場合、特許請求されるシステムは、バディリスト機能を提供するサーバに対する依存関係を取り除くことができる。特許請求される非同期メッセージングシステムは、複数のアプリケーションで使用することができるメッセージ通知のメカニズムも提供することができる。たとえば、特許請求されるシステムは、ＲＳＳフィードを提供するのに使用することができる。この実施形態では、新しいコンテンツをＩＤ鍵の下に掲示することができる。ＲＳＳアグリゲータは、次に、ＩＤに基づいて、更新されたフィードを求めてＤＨＴストアに定期的に問い合わせることができる。このＩＤは特定のフィードに対応することができる。インスタンスＩＤは、日付及び／又は時刻によってレコードをマーキングするように機能するシーケンス情報を含むことができる。アグリゲータは、次に、順番にフィードを取り出すことができる。さらに、特許請求されるシステムは、ＤＨＴを使用して更新通知を提供することができる文書管理システム又はファイル複製システムで使用することができる。非同期メッセージングシステムは、実際のコンテンツの変更が、上述した方法で掲示された場合に、それらの変更を実際に提供することができる。
【図面の簡単な説明】
【００３５】
【図１】特許請求の範囲に従って動作することができるコンピューティングシステムのブロック図である。
【図２】一般的なピアツーピアネットワークを示す図である。
【図３】一般的なバディリスト作成プロセスを示す図である。
【図４】分散ハッシュテーブルを示す図である。
【図５】プライマリＩＤとインスタンスＩＤとの組み合わせを使用するエントリーを有する一意の鍵の表を示す図である。
【図６】特許請求の範囲の一実施形態で使用されるレコードを示す図である。
【図７】バディ要求公開プロセスを示す図である。
【図８】バディ要求取り出しプロセスを示す図である。
【図９】バディ応答公開プロセスを示す図である。
【図１】
2009534938.tif 000003
【図２】
2009534938.tif 000004
【図３】
2009534938.tif 000005
【図４】
2009534938.tif 000006
【図５】
2009534938.tif 000007
【図６】
2009534938.tif 000008
【図７】
2009534938.tif 000009
【図８】
2009534938.tif 000010
【図９】
2009534938.tif 000011
【国際調査報告】
2009534938.tif 000012
2009534938.tif 000013