(57)【要約】  データ通信媒体を介して第１のリモート側コンピュータと第２のリモート側コンピュータの間で電子メール通信等のセキュアなピアツーピアデータ通信を行う方法を説明する。この方法は、各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、第１のリモート側コンピュータにおいてデータ通信を生成する段階と、第２のリモート側コンピュータの現在の接続状態を確認する段階と、第２のリモート側コンピュータの接続状態が、現在第２のリモート側コンピュータがデータ通信媒体に接続されていることを示しているときだけ、データ通信を途中で記憶せずに第１のリモート側コンピュータから直接第２のリモート側コンピュータにデータ通信を直接送る段階とを含む方法。【選択図】図１
2008508573.tif 000002
【特許請求の範囲】
【請求項１】
第１のリモート側コンピュータと第２のリモート側コンピュータの間でデータ通信媒体を介して電子メール通信等のセキュアなピアツーピアデータ通信を実行する方法であって、
各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、
第１のリモート側コンピュータにおいてデータ通信を生成する段階と、
第２のリモート側コンピュータの現在の接続状態を確認する段階と、
第２のリモート側コンピュータの接続状態からデータ通信媒体に現在接続されることが分かったときだけ、データ通信を途中で記憶することなく第１のリモート側コンピュータから第２のリモート側コンピュータにデータ通信を直接送信する段階とを含む方法。
【請求項２】
受け取る段階が、リモート側コンピュータの内の何れかの接続状態が変化するたびに繰り返される、請求項１に記載の方法。
【請求項３】
現在状態を記憶するデータサーバから第２のリモート側コンピュータの接続状態を要求する段階を更に含み、
受け取る段階が、要求する段階に応答して実行される、請求項１に記載の方法。
【請求項４】
データサーバに、第１のリモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を提供する段階を更に含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
第２のリモート側コンピュータに関する情報によりデータ通信を暗号化し、それにより受け取ったときに第２のリモート側コンピュータだけが通信を解読できるようにする段階を更に含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
受け取る段階が、暗号化する段階を実行するために第２のリモート側コンピュータに関する情報を受け取る段階を含む、請求項５に記載の方法。
【請求項７】
第１のリモート側コンピュータが、ローカルに相互接続された複数のセキュアなコンピュータを第１のリモート側位置に含み、生成する段階は、受け取る段階、確認する段階及び送信する段階とは別のコンピュータ上で実行される、請求項１から６のいずれか１項に記載の方法。
【請求項８】
リモート側コンピュータが互いに通信する能力に関する１組の許可を記憶する段階と、
第１のリモート側コンピュータの第２のリモート側コンピュータと通信する許可を確認する段階と、
確認する段階によって、第１のリモート側コンピュータが第２のリモート側コンピュータと通信する許可を有することが分かった場合だけ、送信する段階が行われるのを許可する、請求項１から７のいずれか１項に記載の方法。
【請求項９】
データ通信において第２のリモート側コンピュータであるように指定された指定受信者の識別を検証する段階を更に含む、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
第２のリモート側コンピュータの接続状態から、第２のリモート側コンピュータが現在、データ通信媒体を介してメッセージを受け取ることができないことが分かった場合に、確認する段階の後でデータ通信をローカルに一時的に記憶して所定の時間期間待つ段階と、
その後で、確認する段階と送信する段階を繰り返す段階を更に含む、請求項１から９のいずれか１項に記載の方法。
【請求項１１】
第１のリモート側コンピュータから第２のリモート側コンピュータへのデータ通信の送信を評価し、送信が失敗した場合に、
送信失敗の原因を決定し、決定された原因によって、
第１のリモート側コンピュータにおいて送信失敗通知を生成する段階と、
所定の時間期間待まって送信する段階を繰り返す段階のいずれかの段階を実行する段階を更に含む、請求項１から１０のいずれか１項に記載の方法。
【請求項１２】
データ通信を複数の個別のデータメッセージに分割する段階を更に含み、
送信する段階が、更に、データメッセージのそれぞれを別々に第２のリモート側コンピュータに送り、それによりデータ通信手順のセキュリティを改善する段階を含む、請求項１から１１のいずれか１項に記載の方法。
【請求項１３】
データ通信が、ボイスオーバーＩＰ通信を含む、請求項１から１２のいずれか１項に記載の方法。
【請求項１４】
通信サーバであって、この通信サーバを含む第１のリモート側コンピュータと第２のリモート側コンピュータとの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を実行するように構成され、
各リモート側コンピュータのデータ通信ネットワークに対する接続のアドレス詳細及び現在状態を受け取る受信手段と、
第１のリモート側コンピュータにおいてデータ通信を生成するメッセージ生成モジュールと、
第２のリモート側コンピュータの現在の接続状態を確認する確認モジュールと、
第２のリモート側コンピュータの接続状態から、第２のリモート側コンピュータがデータ通信ネットワークに現在接続されていることが分かったときだけ、データ通信を途中で記憶することなく第１のリモート側コンピュータから第２のリモート側コンピュータにデータ通信を直接送るように構成された伝送モジュールとを含む通信サーバ。
【請求項１５】
通信システムであって、
請求項１４に記載の複数の通信サーバと、
データ通信ネットワークによって複数の通信サーバに接続可能なデータサーバとを含み、
データサーバが、通信ネットワークに対する各通信サーバの接続の現在状態を、各通信サーバの現在のネットワークアドレスと共に受け取り、収集し、記憶し、且つこの情報の少なくとも一部分を複数の通信サーバに転送して、それらの通信サーバが、複数の通信サーバ間でピアツーピア通信を行うことを可能にするように構成された通信システム。
【請求項１６】
中央データサーバが、ユーザダイアグラムプロトコル（ＵＤＰ）を使用して複数の通信サーバの現行アドレスを調査するように構成された、請求項１５に記載の通信システム。
【請求項１７】
第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のピアツーピアデータ通信を確立するのを支援するように構成された通信サーバであって、サーバが、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルに提供され、
通信サーバがサーバネットワーク内の他の階層レベルにある他の通信サーバに動作可能に接続することを可能にする接続手段と、
複数のローカルユーザコンピュータを通信サーバに登録する登録手段と、
それぞれの登録したローカルユーザコンピュータの登録詳細を記憶するデータストアであって、登録詳細が、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含むデータストアとを有し、
接続手段が、記憶した登録詳細をサーバネットワークの次に高い階層レベルにおける隣りの通信サーバに転送し、且つ階層ネットワーク内の低いレベルにある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶するように構成された通信サーバ。
【請求項１８】
記憶された登録詳細が、通信サーバのサーバネットワーク識別、少なくとも１つの登録されたローカルユーザコンピュータのサーバネットワーク識別、及びローカルユーザコンピュータの通信サーバとの接続の現在状態を含む、請求項１７に記載の通信サーバ。
【請求項１９】
記憶された登録詳細が、階層における低いレベルからの通信サーバのサーバネットワーク識別と、低いレベルの通信サーバの登録ローカルユーザコンピュータのサーバネットワーク識別と含む、請求項１７又は１８に記載の通信サーバ。
【請求項２０】
記憶された登録詳細が、ローカルに登録された各ユーザコンピュータのグローバネットワークアドレスを含む、請求項１８又は１９に記載の通信サーバ。
【請求項２１】
記憶された登録詳細が、ローカルに登録された各ユーザコンピュータの公開暗号鍵を含む、請求項１７から２０のいずれか１項に記載の通信サーバ。
【請求項２２】
接続手段が、第２のユーザコンピュータに対する接続を確立する要求を受け取ったときに、第２のユーザコンピュータのローカル登録に関してデータストアを確認し、第２のユーザコンピュータの識別がローカルデータストアに記憶されている場合に要求を受け入れるように構成された、請求項１７から２１のいずれか１項に記載の通信サーバ。
【請求項２３】
第２のユーザコンピュータがローカルに登録されていることが分からない場合に、登録確認手段が、隣りの通信サーバに要求を転送するように接続手段に指示するように構成された、請求項２２に記載の通信サーバ。
【請求項２４】
接続手段が、更に、登録したユーザコンピュータの状態に関してデータストアを確認するするように構成された状態確認手段を含み、接続手段が、第２のユーザコンピュータが登録され、第２のユーザコンピュータの状態から第２のユーザコンピュータに接続することができることが分かる場合に、第２のユーザコンピュータとの通信を確立しようとするように構成された、請求項２２又は２３に記載の通信サーバ。
【請求項２５】
接続手段が、第２のユーザコンピュータに接続する要求の受け入れに応答して第２のユーザコンピュータの状態を更新するように構成された、請求項２２から２４のいずれか１項に記載の通信サーバ。
【請求項２６】
接続手段が、第２のユーザコンピュータに接続する要求の受け入れに応答して第１と第２のユーザコンピュータのデータ接続状態を設定するように構成された、請求項２２から２５のいずれか１項に記載の通信サーバ。
【請求項２７】
第２のユーザコンピュータに対する接続の要求に対する応答を構成するように構成された応答手段を更に含み、
応答手段が、第２のユーザコンピュータの現在のネットワークアドレスを第１のユーザコンピュータに送り、第１のユーザコンピュータの現在のネットワークアドレスを第２のユーザコンピュータに送るように構成された、請求項１７から２６のいずれか１項に記載の通信サーバ。
【請求項２８】
応答手段が、第２のユーザコンピュータのグローバネットワークアドレスを決定するように構成された、請求項２７に記載の通信サーバ。
【請求項２９】
グローバネットワークアドレスが、ＵＤＰチャネルアドレスを含む、請求項２８に記載の通信サーバ。
【請求項３０】
データストアが、更に、リモート側コンピュータが互いに通信する能力に関する１組の許可を含み、
サーバは、更に、記憶された１組の許可を使用して第１のユーザコンピュータが第２のユーザコンピュータと通信することを許可されているかどうかを判断する手段を更に含む、請求項１７から２９のいずれか１項に記載の通信サーバ。
【請求項３１】
データ通信ネットワークを介して、複数のユーザコンピュータの内の特定のユーザコンピュータ間で電子メール通信等のセキュアなピアツーピアデータ通信を実行する通信システムであって、
階層的に接続されたサーバネットワーク内に配置され、サーバネットワークのノードをそれぞれ表わす、請求項１７に記載の複数の通信サーバを有し、サーバネットワークが、複数のユーザコンピュータの内の特定のユーザコンピュータ間の通信の確立を支援するために複数のユーザコンピュータに接続可能である通信システム。
【請求項３２】
第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援する方法であって、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルにある通信サーバ上で実施され、
サーバネットワーク内の他の階層レベルにある通信サーバに対する動作可能なネットワーク接続を確立する段階と、
複数のローカルユーザコンピュータを通信サーバに登録する段階と、
それぞれの登録したローカルユーザコンピュータの、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含む登録詳細を記憶する段階とを含み、
確立する段階が、記憶した登録詳細を、サーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに転送する段階と、階層ネットワーク内の低いレベルにおある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶する段階とを含む方法。
【請求項３３】
送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援するために、ピアツーピア通信メッセージの指定受信者コンピュータを探索する方法であって、通信サーバの階層ネットワーク内で実施され、
指定受信者コンピュータの識別と送信者コンピュータの識別を含むデータ通信の要求をローカルサーバに送る段階と、
指定受信者がローカルサーバに知られているかどうかを判断する段階と、
指定受信者がローカルサーバに知られている場合に指定受信者に関して記憶した詳細を取り出し、その詳細を送信者コンピュータに送る段階と、
指定受信者がローカルに知られていない場合にサーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに要求を転送し、これにより該通信サーバがローカルサーバになる段階と、
指定受信者が見つかるか或いは階層ネットワーク内の一番上にあるサーバの確認が終わるまで、決定する段階、取り出す段階、及び転送する段階を繰り返す段階とを含む方法。
【請求項３４】
指定受信者コンピュータを識別することなく階層ネットワークの一番上に達した場合に、接続失敗の通知を送信者コンピュータに送る段階を更に含む、請求項３３に記載の方法。
【請求項３５】
指定受信者コンピュータが識別された後で指定受信者コンピュータに対する接続の状態を確認する段階を更に含む、請求項３３又は３４に記載の方法。
【請求項３６】
指定受信者コンピュータに対する接続が利用できない場合に送信者コンピュータに接続失敗の通知を送る段階を更に含む、請求項３５に記載の方法。
【請求項３７】
起こり得る状態の変化を許容するために所定の時間期間待ち、その後で送信する段階、判断する段階、及び取り出す段階、転送する段階、及び繰り返す段階を再び実行する段階を更に含む、請求項３６記載の方法。
【請求項３８】
取り出す段階が、指定受信者が通信サーバに知られているがそこにローカルに登録されていない場合に、指定受信者が登録された階層内の低いレベルにある通信サーバに要求を送る段階を含む、請求項３３から３７のいずれか１項に記載の方法。
【請求項３９】
取り出す段階が、指定受信者の記憶した詳細の一部としてローカルに登録されたサーバから指定受信者のネットワーク位置を取り出す段階を含む、請求項３８に記載の方法。
【請求項４０】
所望の指定受信者コンピュータを見つける際に将来使用する監視機能をサーバに記憶し実行する段階を更に含み、監視機能が、ローカルサーバに追加された任意の新しいコンピュータの識別を所望の指定受信者コンピュータの識別と比較し、一致した場合に送信者コンピュータに通知する段階を更に含む、請求項３３から３９のいずれか１項に記載の方法。
【請求項４１】
記憶された１組の許可を使用して、送信者コンピュータが、所望の指定受信者コンピュータとの通信が許可されているかどうかを判断し、記憶された許可によってそのような通信が許可される場合だけ送信する段階を実行できるようにする、請求項３３から４０のいずれか１項に記載の方法。
【請求項４２】
送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立する方法であって、複数の通信サーバからなる階層的サーバネットワーク内で実施され、
請求項３３から４１のいずれか１項に記載の指定受信者コンピュータを探索する方法と、
指定受信者コンピュータの現在のグローバル通信アドレスを送信者コンピュータに通信する段階と、
送信者コンピュータの現行グローバル通信アドレスを指定受信者コンピュータに通信する段階と、
グローバル通信アドレスを使用して送信者コンピュータと指定受信者コンピュータの間でピアツーピア通信チャネルを設定する段階とを含む方法。
【請求項４３】
リモート側コンピュータが互いに通信する能力に関する１組の許可を記憶する段階と、
送信者コンピュータが指定受信者コンピュータと通信する機能に関する記憶された１組の許可を確認する段階と、
この確認する段階から、送信者コンピュータが指定受信者コンピュータと通信する許可を持つことが分かった場合だけ、第１と第２の通信段階と送信段階とを行うことを許可する段階を更に含む、請求項４２に記載の方法。
【請求項４４】
送信者コンピュータとローカルサーバの間で第１の直接チャネルを設定する段階を更に含む、請求項４２又は４３の記載の方法。
【請求項４５】
第２の通信段階が、第１の直接チャネルを介して行なわれる、請求項４４に記載の方法。
【請求項４６】
指定受信者コンピュータとローカルサーバの間で第２の直接チャネルを設定する段階を更に含む、請求項４２から４５のいずれか１項に記載の方法。
【請求項４７】
第１の通信段階が、第２の直接チャネルを介して行なわれる、請求項４６に記載の方法。
【請求項４８】
第１又は第２の直接チャネルを設定する段階が、第１又は第２のＵＤＰ（ユーザダイアグラムプロトコル）直接チャネルを設定する段階を含む、請求項４４から４７のいずれか１項に記載の方法。
【請求項４９】
第１と第２のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するために使用される伝送サーバであって、
第１のユーザコンピュータから、伝送サーバに登録された第２のユーザコンピュータに対する接続の要求を受け取る受信手段と、
第２のユーザコンピュータに対する接続の現在の接続状態を検証する検証手段と、
第２のユーザコンピュータの現在の接続状態から、第２のユーザコンピュータとのピアツーピア通信を現在確立できないこと分かった場合に、要求の詳細をウォッチとして記憶するデータストアと、
検証手段に応答して、第２のユーザコンピュータの状態が変化して、第２のユーザコンピュータとのピアツーピア通信を現在確立することができることが示された場合に、第２のユーザコンピュータのオンライン状態を示すメッセージを第１のユーザコンピュータに送る応答手段とを含み、
検証手段が、第２のユーザコンピュータに対する現在の接続状態を定期的に確認すると共に更新するように構成され、この更新から、第２のユーザの状態がオンラインに変化したことが分かったときに対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する伝送サーバ。
【請求項５０】
データストアが、第２のユーザコンピュータの識別と第１のユーザコンピュータの識別を記憶するように構成された、請求項４９に記載の伝送サーバ。
【請求項５１】
受信手段が、第２のユーザコンピュータに対する接続の複数の要求を受け取るように構成され、データストアが、第２のユーザコンピュータに対するウォッチの各要求の詳細を記憶するように構成され、応答手段が、第２のユーザコンピュータの接続状態がオンラインに変化した後で、複数のメッセージを第２のコンピュータに対する接続を要求したユーザコンピュータのそれぞれに一つずつ送信するように構成された、請求項４９又は５０に記載の伝送サーバ。
【請求項５２】
伝送サーバが、伝送サーバの階層に接続されるように構成された、請求項４９から５１のいずれか１項に記載の伝送サーバ。
【請求項５３】
伝送サーバが、登録されたユーザコンピュータのそれぞれの接続状態の詳細を階層内のより高い位置にある伝送サーバに送るように構成され、応答手段が、第２のユーザコンピュータのオンライン状態を示すメッセージを階層内のより高い位置にある少なくとも１つの伝送サーバに送信するように構成された、請求項５２に記載の伝送サーバ。
【請求項５４】
データストアが、伝送サーバに登録されたユーザコンピュータの異なるものに対して複数の異なるウォッチを記憶するように構成され、
検証する手段が、登録されたユーザコンピュータの全てに対する現在の接続状態を定期的に確認し更新するように構成され、この更新から、任意のユーザ状態がオンラインに変化したことが分かったときに、複数の記憶されたウォッチの中から対応するウォッチの存在を確認し、それが見つかった場合に、応答手段を活動化して見つかったウォッチに対応するメッセージを送信する、請求項４９から５３のいずれか１項に記載の伝送サーバ。
【請求項５５】
データストアが、現在オンラインになっている登録ユーザコンピュータのリストを記憶するように構成され、
伝送サーバが、更に、データストアにウォッチを記憶する前に現在のオンラインのユーザコンピュータのリストを確認するオンライン確認手段を更に含む、請求項４９から５４のいずれか１項に記載の伝送サーバ。
【請求項５６】
登録ユーザコンピュータの状態からその登録ユーザコンピュータがオンラインに変化したことが分かったときに、監視中のユーザコンピュータの識別を現在オンラインリストに転送する転送手段を更に含む、請求項５５に記載の伝送サーバ。
【請求項５７】
第１と第２のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するのを支援する方法であって、
第１のユーザコンピュータから、ローカルに登録された第２のユーザコンピュータに対する接続の要求を受け取る段階と、
第２のユーザコンピュータに対する接続の現在の接続状態を検証する段階と、
第２のユーザコンピュータの現在の接続状態から、第２のユーザコンピュータとのピアツーピア通信を現在確立できないことが分かった場合に、要求の詳細をウォッチとして記憶する段階と、
検証する段階に応答して、第２のユーザコンピュータの状態が変化し、第２のユーザコンピュータとのピアツーピア通信を現在確立したことを示している場合に、第２のユーザコンピュータのオンライン状態を示すメッセージを第１のユーザコンピュータに送る段階とを含み、
検証する段階が、第２のユーザコンピュータに対する現在の接続状態を定期的に確認し更新し、この更新から、第２のユーザ状態がオンラインに変化したことが分かったときに、対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する方法。
【請求項５８】
第１と第２のユーザコンピュータの間で、少なくとも第１のユーザコンピュータの通信が第１のネットワークアドレス変換器（ＮＡＴ）によって処理されるデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立する方法であって、
第１のユーザコンピュータと伝送サーバの間で第１のＮＡＴによって確立された伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを介しての直接接続を要求する段階と、
伝送サーバにおいて第１のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する段階と、
ＴＣＰ／ＩＰ通信リンクを介して第１のユーザコンピュータに第１のＵＤＰポートのアドレスをレポートする段階と、
第１のユーザコンピュータの第２のＵＤＰポートを開く段階と、
伝送サーバが第２のＵＤＰポートの第１のＮＡＴアドレスを決定できるように、第２のＵＤＰポートから第１のＮＡＴを介して第１のＵＤＰポートにデータパケットを送信する段階と、
伝送サーバにおいて第２のユーザコンピュータの第３のＵＤＰポートアドレスを取得する段階と、
第１と第２のユーザコンピュータの間にセキュアなピアツーピア通信を確立することができるように、第１と第２のユーザコンピュータのそれれぞれに互いのユーザコンピュータのＵＤＰポートアドレスを通知する段階とを含む方法。
【請求項５９】
第１のＮＡＴを介して第１のユーザコンピュータから伝送サーバへのＴＣＰ／ＩＰ通信リンクを作成する段階を更に含む、請求項５８に記載の方法
【請求項６０】
作成する段階が、第２のユーザコンピュータが登録された伝送サーバネットワーク上のローカル伝送サーバを探索し識別し、そのローカル伝送サーバに接続する段階を含む、請求項５９に記載の方法。
【請求項６１】
第２のユーザコンピュータが、伝送サーバに登録され、それらの間に第２のＮＡＴを介してＴＣＰ／ＩＰ通信リンクが確立され、取得する段階が、更に、
伝送サーバにおいて第４のＵＤＰポートを確立する段階と、
ＴＣＰ／ＩＰ通信リンクを介して第４のＵＤＰポートのアドレスを第２のユーザコンピュータにレポートする段階と、
第２のユーザコンピュータにある第３のＵＤＰポートを開く段階と、
第３のＵＤＰポートから第２のＮＡＴアドレスを介して第４のＵＤＰポートにデータパケットを送り、伝送サーバが第２のユーザコンピュータの第３のＵＤＰポートの第２のＮＡＴアドレスを決定できるようにする段階とを含む、請求項５８から６０のいずれか１項に記載の方法。
【請求項６２】
第１のユーザコンピュータが、第２のＵＤＰポートの宛先を第１のＵＤＰポートから第３のＵＤＰポートに切り替えることを更に含む、請求項５８から６１のいずれか１項に記載の方法
【請求項６３】
第１のユーザコンピュータが、第２のＵＤＰポートから第２のユーザコンピュータの第３のＵＤＰポートにピアツーピアメッセージを直接送るように構成された、請求項６２に記載の方法。
【請求項６４】
第２のユーザコンピュータが、第３のＵＤＰポートの宛先を第４のＵＤＰポートから第２のＵＤＰポートに切り替えることを更に含む、請求項５８から６３のいずれか１項に記載の方法。
【請求項６５】
第２のユーザコンピュータが、第３のＵＤＰポートから第２のユーザコンピュータの第２のＵＤＰポートにピアツーピアメッセージを直接送るように構成された、請求項６４に記載の方法。
【請求項６６】
第１と第２のユーザコンピュータの間にピアツーピア通信が確立されたときに第１のＵＤＰポートの非活動性を検出する段階と、
第１のＵＤＰポートを閉じることによって第１のユーザコンピュータとの接続を断つ段階とを含む、請求項５８から６５のいずれか１項に記載の方法。
【請求項６７】
伝送サーバが、第１のユーザコンピュータとのＴＣＰ／ＩＰ接続を切断することを更に含む、請求項６６に記載の方法
【請求項６８】
第１と第２のユーザコンピュータの間にピアツーピア通信が確立されたときに、第４のＵＤＰポートの非活動性を検出する段階と、
第４のＵＤＰポートを閉じることによって第２のユーザコンピュータとの接続を断つ段階とを含む、請求項５８から６７のいずれか１項に記載の方法。
【請求項６９】
伝送サーバが、第２のユーザコンピュータとのＴＣＰ／ＩＰ接続を切断することを更に含む、請求項６８に記載の方法。
【請求項７０】
第１又は第２のＮＡＴが、宛先ごとのＵＤＰポートが異なる非対称ＮＡＴであり、
非対称ＮＡＴからの直接接続の新しいアドレスを記録する段階と、
ＵＤＰポート出力を非対称ＮＡＴの新しいアドレスにアドレス指定しなおす段階とを含む、請求項５８から６９のいずれか１項に記載の方法。
【請求項７１】
第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、少なくとも第１のユーザコンピュータの通信が、第１のネットワークアドレス変換器（ＮＡＴ）によって処理され、
第１のＮＡＴによって第１のユーザコンピュータと伝送サーバの間に確立された伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを介しての直接接続の要求を受け取る要求受信手段と、
伝送サーバにおいて第１のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する確立する手段と、
ＴＣＰ／ＩＰ通信リンクを介して第１のユーザコンピュータに第１のＵＤＰポートのアドレスをレポートするレポート手段と、
第１のユーザコンピュータに設定された第２のＵＤＰポートから、第１のＮＡＴを介して第１のＵＤＰポートに送られるデータパケットを受け取るデータパケット受信手段であって、伝送サーバが、第２のＵＤＰポートの第１のＮＡＴアドレスを決定するように構成されたデータパケット受信手段と、
伝送サーバにおいて第２のユーザコンピュータの第３のＵＤＰポートアドレスを得る取得手段と、
第１と第２のユーザコンピュータが間にセキュアなピアツーピア通信を確立できるように、第１と第２のユーザコンピュータのそれぞれに互いのユーザコンピュータのＵＤＰポートアドレスを通知する手段とを有する伝送サーバ。
【請求項７２】
第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアな疑似ピアツーピアデータ通信チャンネルを確立する方法であって、両方のユーザコンピュータの通信が、第１と第２の非対称ネットワークアドレス変換器（ＮＡＴ）によって処理され、
それぞれの第１と第２の非対称ＮＡＴを介した各ユーザコンピュータから伝送サーバへの伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを作成する段階と、
第１のＮＡＴによる第１のユーザコンピュータと伝送サーバの間のＴＣＰ／ＩＰ通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第１と第２のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する段階と、
第１と第２のＵＤＰポートのアドレスを、それぞれのＴＣＰ／ＩＰ通信リンクを介して第１と第２のユーザコンピュータにそれぞれレポートする段階と、
第１のユーザコンピュータに第３のＵＤＰポートを開くと共に第２のユーザコンピュータに第４のＵＤＰポートを開く段階と、
データパケットを第３のＵＤＰポートから第１のＮＡＴを介して第１のＵＤＰポートに送り、第４のＵＤＰポートから第２のＮＡＴを介して第２のＵＤＰに送り、それにより伝送サーバが、第３のＵＤＰポートの第１のＮＡＴアドレスと第４のＵＤＰポートの第２のＮＡＴアドレスとを決定できるようにする段階と、
第１のＵＤＰポートで受け取ったデータパケットを第２のＵＤＰポートを介して第４のＵＤＰポートのＮＡＴアドレスに転送し、第２のＵＤＰポートで受け取ったデータパケットを第１のＵＤＰポートを介して第３のＵＤＰポートのＮＡＴアドレスに転送し、それにより、伝送サーバからデータパケットを有効に返送することによって、第１と第２のユーザコンピュータ間の擬似ピアツーピア通信を確立するようにする段階とを含む方法。
【請求項７３】
転送する段階が、受け取ったデータパケットを転送前に瞬間的且つ一時的に記憶する段階を含む、請求項７２に記載の方法。
【請求項７４】
生成する段階が、第２のユーザコンピュータが登録された伝送サーバネットワーク上のローカル伝送サーバを探索し識別し、このローカル伝送サーバに接続する段階を含む、請求項７２又は７３に記載の方法。
【請求項７５】
伝送サーバが、擬似ピアツーピア通信を確立した後で第１と第２のユーザコンピュータとのＴＣＰ／ＩＰ接続を断つことを更に含む、請求項７２から７４のいずれか１項に記載の方法。
【請求項７６】
第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアな擬似ピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、両方のユーザコンピュータの通信が、それぞれの第１と第２の非対称ネットワークアドレス変換器（ＮＡＴ）によって取り扱われ、
伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを、各ユーザコンピュータから伝送サーバまで、それぞれの第１と第２の非対称ＮＡＴを介して作成する作成する手段と、
第１のユーザコンピュータと伝送サーバの間で第１のＮＡＴによるＴＣＰ／ＩＰ通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第１と第２のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する確立手段と、
第１と第２のＵＤＰポートのアドレスをそれぞれのＴＣＰ／ＩＰ通信リンクを介して第１と第２のユーザコンピュータにそれぞれレポートするレポート手段と、
第１のコンピュータに設定された第３のＵＤＰポートから第１のＮＡＴを介して第１のＵＤＰポートに送られ、第２のユーザコンピュータに設定された第４のＵＤＰポートから第２のＮＡＴを介して第２のＵＤＰに送られたデータパケットとを受け取り、それにより、伝送サーバが、第３のＵＤＰポートの第１のＮＡＴアドレスと第４のＵＤＰポートの第２のＮＡＴアドレスを決定できるようにする受け取る手段と、
第１のＵＤＰポートで受け取ったデータパケットを、第２のＵＤＰポートを介して第４のＵＤＰポートのＮＡＴアドレスに転送し、第２のＵＤＰポートで受け取ったデータパケットを、第１のＵＤＰポートを介して第３のＵＤＰポートのＮＡＴアドレスに転送し、それにより、第１と第２のユーザコンピュータの間の擬似ピアツーピア通信が、伝送サーバからデータパケットを有効に返送することによって確立される伝送サーバ。
【請求項７７】
送信者コンピュータと指定受信者コンピュータ間のデータ通信ネットワークを介したピアツーピア通信を確立するのを支援するために、ユーザコンピュータを伝送サーバの階層接続ネットワークに接続する方法であって、
接続ネットワーク内のローカル伝送サーバと同じ階層レベルにある複数のピア転送サーバのそれぞれの現行負荷を示す情報を受け取る段階と、
ローカルユーザコンピュータをローカル伝送サーバに接続する要求を受け取る段階と、
ローカルサーバの現行負荷をピアサーバのそれぞれと比較する段階と、
ローカル伝送サーバの負荷が、ピアサーバの内のいずれかのピアサーバの負荷より著しく大きい場合に、最も低い負荷を有するピアサーバに接続すべきであることを示す応答をローカルユーザコンピュータに送る段階と、
ローカル伝送サーバの負荷が、ピアサーバの内のどのピアサーバの負荷より著しく大きくない場合に接続要求を受け入れ、ローカル伝送サーバの現行負荷を更新する段階とを含む方法。
【請求項７８】
伝送サーバの現行負荷が、伝送サーバに登録されたユーザコンピュータの数によって決定される、請求項７７に記載の方法。
【請求項７９】
ローカル伝送サーバの現行負荷を階層ネットワーク内のさらに高いレベルの伝送サーバに転送する段階を更に含む、請求項７７又は７８に記載の方法。
【請求項８０】
転送する段階が、ローカル伝送サーバの現行ＩＰアドレス及びポートを送出する段階を含む、請求項７９に記載の方法。
【請求項８１】
転送する段階が、ハートビート信号を一定間隔で送出することを含み、各ハートビート信号が、ローカル伝送サーバの負荷に関する更新された最新情報を提供する、請求項７９又は８０に記載の方法。
【請求項８２】
受け取る段階が、複数のピア転送サーバのそれぞれの現行ＩＰアドレスとポートを示す情報を受け取る段階を含む、請求項７７から８１のいずれか１項に記載の方法。
【請求項８３】
受け取る段階が、複数のピア転送サーバのそれぞれに関するハートビート信号を定期的に受け取る段階を含み、ハートビート信号が、ピア転送サーバの識別とピア転送サーバの現行負荷を示す情報を含む、請求項７７から８２のいずれか１項に記載の方法。
【請求項８４】
ローカル伝送サーバの地理的位置を決定する段階を更に含む、請求項７７から８３のいずれか１項に記載の方法。
【請求項８５】
受け取る段階が、複数のピア転送サーバのそれぞれの地理的位置に関する情報を受け取る段階を含む、請求項８４に記載の方法。
【請求項８６】
地理情報が、ローカル又はピア転送サーバに関するタイムゾーン情報を含む、請求項８４又は８５に記載の方法。
【請求項８７】
比較する段階が、ローカルサーバの現行負荷をローカルユーザと同じ地理的位置にある各ピアサーバと比較する段階を含み、
送信する段階が、ローカル伝送サーバの負荷が、同じ地理的位置にあるピアサーバのいずれかの負荷よりも極めて大きい場合に、最も小さい負荷を有するローカルユーザコンピュータと同じ地理的位置にあるピア伝送サーバに接続すべきであることを示す応答を送る送信段階とを含む、請求項８５又は請求項８５に従属する請求項８６に記載の方法。
【請求項８８】
送信段階が、ローカル伝送サーバに対する接続ネットワークの隣接するより高い階層レベルにある親伝送サーバの通信アドレスを送る段階を含む、請求項７７から８７のいずれか１項に記載の方法。
【請求項８９】
ローカル伝送サーバに接続され、階層的接続ネットワーク内の低いレベルにある全ての子伝送サーバの負荷を取得し検討する段階と、
各子サーバによりローカルサーバの現行負荷を評価する段階と、
ローカル伝送サーバの負荷がいずれかの子サーバの負荷よりも著しく大きい場合に、最も小さい負荷を有する子サーバに接続するべきであることを示す応答をローカルユーザコンピュータに送る段階とを含む、請求項７７から８８のいずれか１項に記載の方法。
【請求項９０】
ローカル伝送サーバの地理的位置を決定する段階を更に含み、取得する段階が、複数の子伝送サーバのそれぞれの地理的位置に関する情報を受け取る段階を含む、請求項８９に記載の方法。
【請求項９１】
地理情報が、ローカル又は子伝送サーバに関するタイムゾーン情報を含む、請求項９０に記載の方法。
【請求項９２】
評価する段階が、ローカルサーバの現行負荷をローカルユーザと同じ地理的位置にある子サーバのそれぞれと比較する段階を含み、
送信段階が、ローカル伝送サーバの負荷が、同じ地理的位置のいずれかの子サーバの負荷よりも著しく大きい場合に、最も小さい負荷を有するローカルユーザコンピュータと同じ地理的位置にある子伝送サーバに接続するべきであることを示す応答をローカルユーザコンピュータに送る段階を含む、請求項９０又は９１に記載の方法。
【請求項９３】
通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された認証済み通信サーバのネットワークにノードを結合する方法であって、
認証サーバから受け取ったユーザ識別とパスワードを使用して、認証サーバにノードを認証させる段階と、
ネットワークに加わるためにノードを接続しなければならない特定の通信サーバの識別の通知を受ける段階と、
特定の通信サーバに接続するために、認証サーバから特定の通信サーバ及びノードに固有のデータを要求する段階と、
特定の通信サーバ及びノードに固有のデータと、ノードと特定の通信サーバによって共有される共有暗号鍵とを受け取る段階と、
特定の通信サーバ及びノードに固有のデータと、暗号鍵によって暗号化されたグローバルデータとを特定の通信サーバに送り、その結果、特定の通信サーバが、ネットワークにノードを認証させそれにより認証サーバからの検証を求めることなしにネットワークに加わるツールを有するようにする段階とを含む方法。
【請求項９４】
ノードが、特定の通信サーバの信憑性を検証する情報を有するように、特定の通信サーバからの共有暗号鍵で暗号化された確認データを受け取る段階を更に含む、請求項９３に記載の方法。
【請求項９５】
ネットワークの認証サーバにノードを登録することによってユーザＩＤとパスワードを取得する段階を更に含む、請求項９３又は９４記載の方法。
【請求項９６】
通知を受ける段階が、要求する段階で使用されるチケット生成チケットを受け入れる段階を含む、請求項９３から９５のいずれか１項に記載の方法。
【請求項９７】
通知を受ける段階が、受け取る段階で使用されるノードのセッション鍵を得る段階を含む、請求項９６に記載の方法。
【請求項９８】
チケット生成チケットとセッション鍵がパスワードで暗号化され、更に、チケット生成チケットとセッション鍵を解読する段階を含む、請求項９３から９７のいずれか１項に記載の方法。
【請求項９９】
要求する段階が、チケット生成チケットと特定の通信サーバの識別を認証サーバに送る段階を含む、請求項９６から９８のいずれか１項に記載の方法。
【請求項１００】
受け取る段階が、特定の通信サーバとノードに固有のチケットを取得する段階を含む、請求項９３から９９のいずれか１項に記載の方法。
【請求項１０１】
チケットが、共有暗号鍵のコピーを含む、請求項１００に記載の方法。
【請求項１０２】
セッション鍵で暗号化された共有鍵を解読する段階を更に含む、請求項１０１に記載の方法。
【請求項１０３】
タイムスタンプの値をグローバルデータとして計算する段階を更に含む、請求項９３から１０２のいずれか１項に記載の方法。
【請求項１０４】
特定の通信サーバが、受け取ったデータを共有鍵を使って解読する段階を更に含む、請求項９３から１０３のいずれか１項に記載の方法。
【請求項１０５】
特定の通信サーバが、受け取ったデータの有効性を検証する段階を更に含む、請求項９３から１０４のいずれか１項に記載の方法。
【請求項１０６】
特定の通信サーバが、解読した受信データが受け入れ可能であるという確認を送ることを更に含む、請求項１０４又は１０５に記載の方法。
【請求項１０７】
所定の方式で修正された認証データを受け取る段階を更に含む、請求項９３から１０６のいずれか１項に記載の方法。
【請求項１０８】
修正された認証情報が暗号化され、修正された認証情報を解読する段階を更に含む、請求項１０７に記載の方法。
【請求項１０９】
第１のユーザコンピュータが、通信サーバに登録されたユーザコンピュータ間のピアツーピアデータ通信の確立に使用されるように設定された認証済み通信サーバのネットワークの一部である第２のユーザコンピュータとセキュアに通信する方法であって、
第１のコンピュータを、請求項１から１６のいずれか１項に記載されたようなネットワークに結合する段階と、
第１と第２のユーザコンピュータにおいて公開鍵と秘密鍵を作成する段階と、
第１と第２のユーザコンピュータ間でネットワークを介して公開鍵を交換する段階と、
第１と第２のユーザコンピュータのそれぞれにおいて、非共有秘密鍵と共有公開鍵から共有暗号化／解読鍵を作成する段階と、
共有暗号鍵を使用して、第１と第２のユーザコンピュータ間のピアツーピア接続を介して第１と第２のユーザコンピュータ間で直接送られるデータメッセージを暗号化する段階とを含む方法。
【請求項１１０】
相互接続された伝送サーバノードの第１の階層レルム（hierarchical realm）を、相互接続された伝送サーバノードの第２の階層レルムに接続する方法であって、
各レルム内にローカル認証サーバを提供する段階であって、認証サーバが、それぞれの階層レルムの最も高いレベルにある主ノードに接続され、レルム内の全てのサーバに関連した認証問題を制御するように構成される段階と、
第１の階層レルムの主ノードを第２の階層レルムの認証サーバに登録する段階と、
第１の階層レルムの主ノードを第２の階層レルムの認証サーバに対して認証する段階と、
階層レルムを結合するために第１の階層レルムの主ノードが接続しなければならない最も下のノードサーバの識別に関する通知を受ける段階と、
第２の階層レルムの最も下のノードサーバと第１の階層レルムの主ノードの両方の共有データと共有暗号鍵を受け取る段階と、
受け取った共用データと共有暗号鍵を使って、第１の階層レルムの主ノードを第２の階層レルムの最も下のノードサーバに対して認証し、それにより第２のレルムの認証サーバからの検証を求めることなく第１と第２のレルムを結合する段階とを含む方法。
【請求項１１１】
第２のレルムの特定の最も下のノードサーバに接続するために、第１のレルムの主ノードと第２のレルムの最も下のノードサーバに固有のデータを認証サーバから要求する段階を更に含む、請求項１１０記載の方法。
【請求項１１２】
最の下のサーバが、主ノードを第２の階層レルムに対して認証するツールを有するように、共有暗号鍵によって暗号化された共用データとグローバルデータを最も下のノードサーバに送る段階を更に含む、請求項１１０又は１１１に記載の方法。
【請求項１１３】
認証段階が、第２の階層レルムの最も下のノードサーバを介して行なわれる、請求項１１０から１１２のいずれか１項に記載の方法。
【請求項１１４】
第２の階層レルムの主ノードを第１の階層レルムの認証サーバに登録する段階と、
第２の階層レルムの主ノードを第１の階層レルムの認証サーバに対して認証する段階とを含む、請求項１１０から１１３のいずれか１項に記載の方法。
【請求項１１５】
伝送サーバの第１のレルムに接続された第１のユーザコンピュータが、通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された伝送サーバの第２のレルムに接続された第２のユーザコンピュータとセキュアに通信する方法であって、
請求項１１０から１１４のいずれか１項に記載の伝送サーバの第２のレルムに第１のレルムの第１のユーザコンピュータを接続する段階と、
第１と第２のユーザコンピュータについて相互接続されたレルム内のネットワーク位置を決定する段階と、
確立したネットワーク位置を使用して第１と第２のユーザコンピュータ間のピアツーピア通信チャネルを確立する段階と、
確立されたピアツーピア通信チャネルで暗号化したデータ通信を送る段階とを含む方法。
【請求項１１６】
使用する段階が、
第１と第２のユーザコンピュータで公開鍵と秘密鍵を作成する段階と、
ネットワークを介して第１と第２のユーザコンピュータ間で公開鍵を交換する段階と、
第１と第２のユーザコンピュータのそれぞれにおいて、非共有秘密鍵と共有公開鍵から共有暗号化／解読鍵を作成する段階と、
共有暗号鍵を使用して、第１と第２のユーザコンピュータ間に確立されたピアツーピア接続を介して第１と第２のユーザコンピュータ間で直接送信されるデータメッセージを暗号化する段階とを含む、請求項１１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュア通信に関する改良に関し、より詳細にはセキュアなピアツーピア電子メール及びデータ通信ならびにボイスオーバーアイピー（Voice over IP）に関するがこれらに限定されない。本発明の更に他の様相は、通信ネットワークを保護し且つそのＩＰアドレス指定範囲を拡大するためにネットワークアドレス変換器（ＮＡＴ）が提供されるときでも直接ピアツーピア通信を支援する方法を対象とする。本発明は、また、係る通信システムと係る通信システムを使用するネットワークにおいて極めて高いレベルのセキュリティを実現することにも適用される。
【背景技術】
【０００２】
間接通信が望ましいときに通信ネットワークを介してメッセージを伝送する様々な方法がある。しかしながら、メッセージのコピーを記憶しそれをハッカーが読み取ることができる状態で本質的にセキュアでないため、この形のメッセージ送信と関連した固有の問題がある。ＷＯ０３／０１４９５５Ａ１に記載されたそのような問題の幾つかは、ピアツーピア通信を使用することにより対処されている。しかしながら、以前に提案され使用された解決策の主な問題は、そのような通信の設定の複雑さである。この先行技術の文書に提示された解決策は、通信を容易にするために相変わらず中央サーバの働きを必要とするため、本質的にセキュアでなく煩雑である。これにより、プロセス全体が面倒なものになりセキュリティ侵害に弱くなる。
【０００３】
通信プロセスの間に記憶される電子メールのセキュリティを高める暗号化技術が知られている。しかしながら、暗号化技術は、完全にセキュアとは言えず、従ってハッキング技術の高度化により、本質的に実行可能な代案を提供しない。
【０００４】
ＮＡＴは、複数のコンピュータが、インターネットへの接続等の通信にアドレス空間を共用できるようにするために使用される装置である。ＮＡＴには、平均的ＰＣユーザの能力をはるかに超える複雑な機構がないと、ピアツーピア通信がＮＡＴの背後で正常に機能しないという欠点がある。ピアツーピア通信の状況におけるＮＡＴと関連する問題は、米国特許出願２００４／００６４５８４  Ａ１に記載されている。
【発明の開示】
【課題を解決するための手段】
【０００５】
前述のシステムを改良することが望まれており、より詳細にはよりセキュアなシステムが必要である。また、管理がより容易でユーザがより使い易いシステムを提供すること望まれている。特に、ピアツーピア通信を容易するためにユーザが中央サーバにログオンする必要がない通信システム、或いはピアツーピア通信の間ノードでのメッセージの一時的記憶さえ必要とする通信システムが望まれている。従って、理想的には「純粋な」ピアツーピア通信システムが必要とされる。
【０００６】
本発明の一様相は、最もセキュアなピアツーピア電子メール通信が、例えば、セキュアでない環境、即ち送信元や宛先以外の通信経路内の場所にメッセージを記憶する必要がないものであるという認識にある。この場合、電子メールが送信されているときに、ハッカーが電子メールを読み取る可能性はほんのわずかである。例えばＰＫＩ（公開鍵インフラストラクチャ）を使って送信用の電子メールを暗号化することによって、送信中のハッキングの危険を最小にすることができる。
【０００７】
より具体的には、本発明の一様相によれば、第１のリモート側コンピュータと第２のリモート側コンピュータの間でデータ通信媒体を介して電子メール通信等のセキュアなピアツーピアデータ通信を実行する方法であって、各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、第１のリモート側コンピュータにおいてデータ通信を生成する段階と、第２のリモート側コンピュータの現在の接続状態を確認する段階と、第２のリモート側コンピュータの接続状態からデータ通信媒体に現在接続されることが分かったときだけ、データ通信を途中で記憶することなく第１のリモート側コンピュータから第２のリモート側コンピュータにデータ通信を直接送信する段階とを含む方法が提供される。
【０００８】
「記憶（storage）」という語は、本明細書で使用されるとき、完全なメッセージの記憶を指すことを理解されたい。そのような記憶は、無許可の第三者がメッセージの完全なコピーを不法に得る可能性を提供することになる。通信プロトコルは、多くの場合、例えばパケットに分割されるメッセージなどのメッセージの一部分の何らかの一時記憶を含む。メッセージの一部分のそのような一時的且つ部分的な記憶は、送信中のメッセージの完全なコピーを第三者が得ることをできなくするので、本発明のこの様相により許容可能である。
【０００９】
従って、本発明は、送信元から宛先までの途中に完全なデータメッセージの非セキュアな記憶がないため、先行技術より優れた著しい改善を提供する。より正確に言うと、宛先がオンラインでない場合でも、宛先によってピアツーピア通信チャネルが確立されるまで、メッセージが常に送信元にセキュアに一時的に記憶され、その結果、データメッセージのセキュアでない記憶を途中でする必要がなくなる。
【００１０】
本発明は、ユーザ名とそのＩＰアドレスの中央レポジトリがあるシステムで実施される。しかしながら、中央レポジトリは、実際のピアツーピア通信自体には使用されず、むしろ送信者の場所に提供された通信手段を更新する働きをする。ユーザは、中央レポジトリに登録され、ユーザ固有のＩＰアドレスの名前が割り当てられる。次に、登録されたユーザは、ピアツーピア通信を容易にする個人用通信サーバを自分のコンピュータにダウンロードしインストールする。登録ユーザが、個人用通信サーバを使用することにより決定されるようにオンラインになると、そのことが中央レポジトリに通知され、ユーザの状態をオフラインからオンラインに変化させることができる。この状態の変化は、プッシュメカニズムによって他の全てのユーザに通信することができ、その結果、受信者と送信者の両方がその瞬間に通信を送受信できるはずであるという情報により、既存のオンラインユーザと、接続されたばかりのユーザとの間で実行しなければならないピアツーピア通信を極めてセキュアに行うことができる。
【００１１】
更に、前述のシステムには、メッセージ送信機能を制御するソフトウエアコンポーネントがダウンロードされクライアントのパーソナルコンピュータに常駐している。後で詳しく説明するように、電子メールメッセージ送信の実施例の場合は、電子メールサーバを含み、この電子メールサーバは、Microsoft OutlookTMなどのローカル電子メールクライアントと協力して、ユーザが中央サーバにアクセスすることなく、実際にはユーザ対話なしに、全てのデータメッセージの送受信を処理する。換言すると、クライアントのパーソナルコンピュータは、所望のピアツーピア通信を制御することができ、このプロセスは、ユーザの視点から見て極めて容易である。
【００１２】
本発明の更に他の利点には、特に電子メールメッセージ送信に関して、スパム電子メールを受け取るのを防ぐ機能がある。電子メールアドレスが全て中央データベースによって認定されたとき、スパムの送信元を直ちに断つことができる。更に、従来の電子メールアドレスと違って、本発明では受信者のアドレスを容易に入手できない。
【００１３】
また、ユーザに通話が可能な人を瞬時に通知することができ、すなわち、電話をかけたい人にこの状況情報がプッシュされたときは常にオンラインなので、ＶＯＩＰを比較的容易に実現できることを理解されたい。ＶＯＩＰ接続は、インターネットを介しているため、無料であり、従って、ユーザが標準インターネット接続料の追加費用を支払うことなく長距離と近距離の通話をすることができる。
【００１４】
従って、本発明により、ユーザは、業務と個人の機密情報を全く秘密に送受信することができる。また、本発明が、従来の電子メールと共に使用される場合、本発明は、故障、災害、物理的攻撃、又はサイバー攻撃が起きた場合にサービスの継続性を提供するバックアップシステムを従来の電子メールサーバに提供する。
【００１５】
本発明は、ＩＳＰ等の第三者が、受信した電子メールから広告や他の目的のために送信者や他の業務に関する個人情報を収集できなくする。また、高価な電子メールサーバ等の追加の装置が必要なく、また技術サポートの費用が減少し、コストを大幅に削減することができる。
【００１６】
後で詳しく説明するように、本発明は、ファイアウォールより機能することができ、追加の構成を必要としない。本発明は、Microsoft OutlookTMやNovell GroupwiseTM等の既存の電子メールアプリケーションとシームレスに組み合わせることができる。
【００１７】
ＩＰアドレスが、受信者の実際のＩＰアドレスのときは、ＩＰアドレスでのピアツーピア通信は比較的容易である。しかしながら、ＮＡＴが使用されるときは、送信者が受信者を一意に識別することができず、ＮＡＴのファイアウォールとしてのセキュリティ機能のために、ピアツーピア通信は困難になる。本発明の別の様相は、この特定の問題（後述する）を対象とする。
【００１８】
本発明のこの様相は、また、通信サーバであって、この通信サーバを含む第１のリモート側コンピュータと第２のリモート側コンピュータとの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を実行するように構成され、各リモート側コンピュータのデータ通信ネットワークに対する接続のアドレス詳細及び現在状態を受け取る受信手段と、第１のリモート側コンピュータにおいてデータ通信を生成するメッセージ生成モジュールと、第２のリモート側コンピュータの現在の接続状態を確認する確認モジュールと、第２のリモート側コンピュータの接続状態から、第２のリモート側コンピュータがデータ通信ネットワークに現在接続されていることが分かったときだけ、データ通信を途中で記憶することなく第１のリモート側コンピュータから第２のリモート側コンピュータにデータ通信を直接送るように構成された伝送モジュールとを含む通信サーバを提供するとも考えられる。
【００１９】
本発明の本様相は、また、通信システムであって、前述のような複数の通信サーバと、データ通信ネットワークによって複数の通信サーバに接続可能なデータサーバとを含み、データサーバが、通信ネットワークに対する各通信サーバの接続の現在状態を、各通信サーバの現在のネットワークアドレスと共に受け取り、収集し、記憶し、且つこの情報の少なくとも一部分を複数の通信サーバに転送して、それらの通信サーバが、複数の通信サーバ間でピアツーピア通信を行うことを可能にするように構成された通信システムにも適用される。
【００２０】
本発明の第２の様相によれば、第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のピアツーピアデータ通信を確立するのを支援するように構成された通信サーバであって、サーバが、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルに提供され、通信サーバがサーバネットワーク内の他の階層レベルにある他の通信サーバに動作可能に接続することを可能にする接続手段と、複数のローカルユーザコンピュータを通信サーバに登録する登録手段と、それぞれの登録したローカルユーザコンピュータの登録詳細を記憶するデータストアであって、登録詳細が、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含むデータストアとを有し、接続手段が、記憶した登録詳細をサーバネットワークの次に高い階層レベルにおける隣りの通信サーバに転送し、且つ階層ネットワーク内の低いレベルにある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶するように構成された通信サーバが提供される。
【００２１】
伝送サーバの階層ネットワークの使用は、メッセージ送信ネットワークがより効率的に動作することができるので極めて有利である。詳細には、大量で大きなペイロードのメッセージ送信トラフィックによって通信ネットワークに大きな負荷がかかるとき、階層構造の通信媒体を使用することによって、通信システム全体に必要以上の負担をかけることなく多量のトラフィックをローカルに処理することができる。ＶｏＩＰメッセージトラフィックは、特に重いペイロードを含むことがあり、利用可能な帯域幅の多くを使い果たすことがある。階層構造を使用してアドレス指定の詳細を分散的に記録することにより、通信ネットワークの特定の部分にトラフィックを局在化させ、それによりネットワークの他の部分の性能特性に影響を及ぼさないようにすることができる。例えば、ほとんどのＶＯＩＰ通話が地理的にローカルな送信元と宛先の間にあるＶＯＩＰ通信では、これは、性能的な大きな利点がある。
【００２２】
本発明の第２の様相は、また、第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援する方法であって、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルにある通信サーバ上で実施され、サーバネットワーク内の他の階層レベルにある通信サーバに対する動作可能なネットワーク接続を確立する段階と、複数のローカルユーザコンピュータを通信サーバに登録する段階と、それぞれの登録したローカルユーザコンピュータの、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含む登録詳細を記憶する段階とを含み、確立する段階が、記憶した登録詳細を、サーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに転送する段階と、階層ネットワーク内の低いレベルにおある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶する段階とを含む方法にも適用される。
【００２３】
本発明の第３の様相によれば、送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援するために、ピアツーピア通信メッセージの指定受信者コンピュータを探索する方法であって、通信サーバの階層ネットワーク内で実施され、指定受信者コンピュータの識別と送信者コンピュータの識別を含むデータ通信の要求をローカルサーバに送る段階と、指定受信者がローカルサーバに知られているかどうかを判断する段階と、指定受信者がローカルサーバに知られている場合に指定受信者に関して記憶した詳細を取り出し、その詳細を送信者コンピュータに送る段階と、指定受信者がローカルに知られていない場合にサーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに要求を転送し、これにより該通信サーバがローカルサーバになる段階と、指定受信者が見つかるか或いは階層ネットワーク内の一番上にあるサーバの確認が終わるまで、決定する段階、取り出す段階、及び転送する段階を繰り返す段階とを含む方法が提供される。
【００２４】
階層的通信ネットワークを使用するこの方法は、宛先アドレスを見つける手続きが先行技術よりもかなり高速になるため有利である。その理由は、最初に送信元に対する地理的ローカルアドレスが確認され、その後で階層ネットワークの高い方にあるリモートアドレスが徐々に、そのアドレスが見つかるまで又は一番上に達するまで確認されるからである。この場合も、多数の通信がローカル宛先に実際に向けられるときに、そのような通信を素早く見つけることができ、また通信サーバのネットワークの潜在的管理負担を軽減することができる。
【００２５】
本発明のこの第３の様相は、また、送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立する方法であって、複数の通信サーバからなる階層的サーバネットワーク内で実施され、前述の指定受信者コンピュータを探索する方法と、指定受信者コンピュータの現在のグローバル通信アドレスを送信者コンピュータに通信する段階と、送信者コンピュータの現行グローバル通信アドレスを指定受信者コンピュータに通信する段階と、グローバル通信アドレスを使用して送信者コンピュータと指定受信者コンピュータの間でピアツーピア通信チャネルを設定する段階とを含む方法にも適用される。
【００２６】
本発明の第４の様相によれば、第１と第２のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するために使用される伝送サーバであって、第１のユーザコンピュータから、伝送サーバに登録された第２のユーザコンピュータに対する接続の要求を受け取る受信手段と、第２のユーザコンピュータに対する接続の現在の接続状態を検証する検証手段と、第２のユーザコンピュータの現在の接続状態から、第２のユーザコンピュータとのピアツーピア通信を現在確立できないこと分かった場合に、要求の詳細をウォッチとして記憶するデータストアと、検証手段に応答して、第２のユーザコンピュータの状態が変化して、第２のユーザコンピュータとのピアツーピア通信を現在確立することができることが示された場合に、第２のユーザコンピュータのオンライン状態を示すメッセージを第１のユーザコンピュータに送る応答手段とを含み、検証手段が、第２のユーザコンピュータに対する現在の接続状態を定期的に確認すると共に更新するように構成され、この更新から、第２のユーザの状態がオンラインに変化したことが分かったときに対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する伝送サーバが提供される。
【００２７】
本発明のこの第４の様相による伝送サーバは、指定受信者の接続状態を監視する機構を備え、この機構は、メッセージ送信者の資源を有利に含まない。より正確に言うと、この伝送サーバは、指定受信者の接続状態を有効に監視することができ、ピアツーピア通信が可能になるように変化したときに、メッセージ送信者に通知することができる。これは、データメッセージをセキュアでない可能性のある場所に途中で記憶しないデータメッセージ送信を支援する。
【００２８】
本発明の第４の様相は、また、第１と第２のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するのを支援する方法であって、第１のユーザコンピュータから、ローカルに登録された第２のユーザコンピュータに対する接続の要求を受け取る段階と、第２のユーザコンピュータに対する接続の現在の接続状態を検証する段階と、第２のユーザコンピュータの現在の接続状態から、第２のユーザコンピュータとのピアツーピア通信を現在確立できないことが分かった場合に、要求の詳細をウォッチとして記憶する段階と、検証する段階に応答して、第２のユーザコンピュータの状態が変化し、第２のユーザコンピュータとのピアツーピア通信を現在確立したことを示している場合に、第２のユーザコンピュータのオンライン状態を示すメッセージを第１のユーザコンピュータに送る段階とを含み、検証する段階が、第２のユーザコンピュータに対する現在の接続状態を定期的に確認し更新し、この更新から、第２のユーザ状態がオンラインに変化したことが分かったときに、対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する方法で実現される。
【００２９】
本発明の第５の様相は、ピアツーピア通信に対応できるようにＮＡＴ及びファイアウォールと関連した問題を克服する事柄に取り組む。本発明のこの様相は、実際のローカルアドレスがＮＡＴのリモート通信側に常に見えていない場合でも、受信者の実際のローカルアドレスの決定を含む指定受信者の能力の一連の通信（調査）の実施を送信することによってＮＡＴのマッピング機能を決定することができるという認識にある。そのような調査は、通信制御チャネルの使用と、指定受信者が、ＮＡＴの変換機能を推定できるようにＮＡＴを介してメッセージ内のデータとしてそのローカルアドレスを送る重要な機能とを含む。他の調査は、潜在的な指定受信者に関する調査結果を提供する能力を含む。
【００３０】
ＮＡＴのマッピング機能を有効に特定する利点は、このマッピング機能を使用して、ＮＡＴによって所望の単一受信位置に逆にマッピングされる適切にアドレス指定された通信をＮＡＴに送ることができることである。ＮＡＴは、マッピング機能が特定されたことに全く気づかず、その結果、直接ピアツーピア通信に対応することができる。
【００３１】
ＮＡＴ及びファイアウォールと関連した問題を克服する代替の方法は、伝送サーバに対して確立されたＴＣＰ／ＩＰリンクを使用して、ピアツーピア通信を支援するＵＤＰ通信チャネルの作成を支援することである。より具体的には、本発明の第５の様相によれば、第１と第２のユーザコンピュータの間で、少なくとも第１のユーザコンピュータの通信が第１のネットワークアドレス変換器（ＮＡＴ）によって処理されるデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立する方法であって、第１のユーザコンピュータと伝送サーバの間で第１のＮＡＴによって確立された伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを介しての直接接続を要求する段階と、伝送サーバにおいて第１のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する段階と、ＴＣＰ／ＩＰ通信リンクを介して第１のユーザコンピュータに第１のＵＤＰポートのアドレスをレポートする段階と、第１のユーザコンピュータにある第２のＵＤＰポートを開く段階と、伝送サーバが第２のＵＤＰポートの第１のＮＡＴアドレスを決定できるように、第２のＵＤＰポートから第１のＮＡＴを介して第１のＵＤＰポートにデータパケットを送信する段階と、伝送サーバにおいて第２のユーザコンピュータの第３のＵＤＰポートアドレスを取得する段階と、第１と第２のユーザコンピュータの間にセキュアなピアツーピア通信を確立することができるように、第１と第２のユーザコンピュータのそれれぞれに互いのユーザコンピュータのＵＤＰポートアドレスを通知する段階とを含む方法が提供される。
【００３２】
ピアツーピア通信を確立しようとするとき、ＮＡＴ横断が大きな問題であることを理解されたい。本発明のこの第５の様相は、ＮＡＴの１つが非対称の場合でも、ピアツーピア通信のＮＡＴ横断を可能にする単純で実行可能の解決策を提供する。
【００３３】
本発明の第５の様相は、また、第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、少なくとも第１のユーザコンピュータの通信が、第１のネットワークアドレス変換器（ＮＡＴ）によって処理され、第１のＮＡＴによって第１のユーザコンピュータと伝送サーバの間に確立された伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを介しての直接接続の要求を受け取る要求受信手段と、伝送サーバにおいて第１のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する確立する手段と、ＴＣＰ／ＩＰ通信リンクを介して第１のユーザコンピュータに第１のＵＤＰポートのアドレスをレポートするレポート手段と、第１のユーザコンピュータに設定された第２のＵＤＰポートから、第１のＮＡＴを介して第１のＵＤＰポートに送られるデータパケットを受け取るデータパケット受信手段であって、伝送サーバが、第２のＵＤＰポートの第１のＮＡＴアドレスを決定するように構成されたデータパケット受信手段と、伝送サーバにおいて第２のユーザコンピュータの第３のＵＤＰポートアドレスを得る取得手段と、第１と第２のユーザコンピュータが間にセキュアなピアツーピア通信を確立できるように、第１と第２のユーザコンピュータのそれぞれに互いのユーザコンピュータのＵＤＰポートアドレスを通知する手段とを有する伝送サーバにも適用される。
【００３４】
ＮＡＴ横断に関係する最も複雑な状況は、ファイアウォールの実施が厳密か或いは両側に非対称ＮＡＴがあるために、直接ピアツーピア接続を単純に実現できないときに起こる。この状況は、非対称ＮＡＴを横断するように「擬似」ピアツーピア通信を確立することによって解決することができる。より詳細には、本発明の第６の様相によれば、第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアな疑似ピアツーピアデータ通信チャンネルを確立する方法であって、両方のユーザコンピュータの通信が、第１と第２の非対称ネットワークアドレス変換器（ＮＡＴ）によって処理され、それぞれの第１と第２の非対称ＮＡＴを介した各ユーザコンピュータから伝送サーバへの伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを作成する段階と、第１のＮＡＴによる第１のユーザコンピュータと伝送サーバの間のＴＣＰ／ＩＰ通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第１と第２のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する段階と、第１と第２のＵＤＰポートのアドレスを、それぞれのＴＣＰ／ＩＰ通信リンクを介して第１と第２のユーザコンピュータにそれぞれレポートする段階と、第１のユーザコンピュータに第３のＵＤＰポートを開くと共に第２のユーザコンピュータに第４のＵＤＰポートを開く段階と、データパケットを第３のＵＤＰポートから第１のＮＡＴを介して第１のＵＤＰポートに送り、第４のＵＤＰポートから第２のＮＡＴを介して第２のＵＤＰに送り、それにより伝送サーバが、第３のＵＤＰポートの第１のＮＡＴアドレスと第４のＵＤＰポートの第２のＮＡＴアドレスとを決定できるようにする段階と、第１のＵＤＰポートで受け取ったデータパケットを第２のＵＤＰポートを介して第４のＵＤＰポートのＮＡＴアドレスに転送し、第２のＵＤＰポートで受け取ったデータパケットを第１のＵＤＰポートを介して第３のＵＤＰポートのＮＡＴアドレスに転送し、それにより、伝送サーバからデータパケットを有効に返送することによって、第１と第２のユーザコンピュータ間の擬似ピアツーピア通信を確立するようにする段階とを含む方法が提供される。
【００３５】
前述のように、擬似ピアツーピア通信は、本発明のこの様相が、信頼できる仲介者の役割をするローカル伝送サーバでメッセージを「返送する（bounce）」ことができる能力によって実現される。これにより、ローカル伝送サーバが常にローカル非対称に知られており、その結果ファイアウォールの最も厳しい規則でもそのような間接擬似ピアツーピア通信が妨げられないので、未知の送信者の問題が軽減される。更に、そのような間接通信チャネルのセキュリティが低下する可能性は、跳ね返されたパケットが、信頼できる介在者の役割をする伝送サーバによって最小限の分析で且つ必ず記憶なしに転送されるようにすることによって最小になる。
【００３６】
ファイアウォール動作のばかげた（極めて厳しい）解釈に遭遇した場合、本発明のこの様相は、ある方向で真のピアツーピア通信を実現し、他の方向でローカル伝送サーバで跳ね返るように構成される。この変形例は、セキュリティの低下を最小にするために行う価値がある。例えば、電子メール送信の場合は、電子メールを直接送り、肯定応答を返すように構成すると有利である。
【００３７】
本発明のこの第６の様相は、また、第１と第２のユーザコンピュータ間でデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアな擬似ピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、両方のユーザコンピュータの通信が、それぞれの第１と第２の非対称ネットワークアドレス変換器（ＮＡＴ）によって取り扱われ、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信リンクを、各ユーザコンピュータから伝送サーバまで、それぞれの第１と第２の非対称ＮＡＴを介して作成する作成する手段と、第１のユーザコンピュータと伝送サーバの間で第１のＮＡＴによるＴＣＰ／ＩＰ通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第１と第２のユーザダイアグラムプロトコル（ＵＤＰ）ポートを確立する確立手段と、第１と第２のＵＤＰポートのアドレスをそれぞれのＴＣＰ／ＩＰ通信リンクを介して第１と第２のユーザコンピュータにそれぞれレポートするレポート手段と、第１のコンピュータに設定された第３のＵＤＰポートから第１のＮＡＴを介して第１のＵＤＰポートに送られ、第２のユーザコンピュータに設定された第４のＵＤＰポートから第２のＮＡＴを介して第２のＵＤＰに送られたデータパケットとを受け取り、それにより、伝送サーバが、第３のＵＤＰポートの第１のＮＡＴアドレスと第４のＵＤＰポートの第２のＮＡＴアドレスを決定できるようにする受け取る手段と、第１のＵＤＰポートで受け取ったデータパケットを、第２のＵＤＰポートを介して第４のＵＤＰポートのＮＡＴアドレスに転送し、第２のＵＤＰポートで受け取ったデータパケットを、第１のＵＤＰポートを介して第３のＵＤＰポートのＮＡＴアドレスに転送し、それにより、第１と第２のユーザコンピュータの間の擬似ピアツーピア通信が、伝送サーバからデータパケットを有効に返送することによって確立される伝送サーバにも適用される。
【００３８】
本発明の第７の様相によれば、送信者コンピュータと指定受信者コンピュータ間のデータ通信ネットワークを介したピアツーピア通信を確立するのを支援するために、ユーザコンピュータを伝送サーバの階層接続ネットワークに接続する方法であって、接続ネットワーク内のローカル伝送サーバと同じ階層レベルにある複数のピア転送サーバのそれぞれの現行負荷を示す情報を受け取る段階と、ローカルユーザコンピュータをローカル伝送サーバに接続する要求を受け取る段階と、ローカルサーバの現行負荷をピアサーバのそれぞれと比較する段階と、ローカル伝送サーバの負荷が、ピアサーバの内のいずれかのピアサーバの負荷より著しく大きい場合に、最も低い負荷を有するピアサーバに接続すべきであることを示す応答をローカルユーザコンピュータに送る段階と、ローカル伝送サーバの負荷が、ピアサーバの内のどのピアサーバの負荷より著しく大きくない場合に接続要求を受け入れ、ローカル伝送サーバの現行負荷を更新する段階とを含む方法が提供される。
【００３９】
本発明のこの様相は、通信ネットワークのロードバランシングの問題に取り組む。ローカルサーバの現行負荷の大きさを伝送サーバの階層内で維持することによって、ピアツーピア接続を確立する要求を常に効率的に再分配するができる。負荷の点でバランスのとれた通信を維持することによって、ネットワーク自体が効率的になり、性能の低下も最小限に抑えられる。
【００４０】
本発明の第８の様相によれば、通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された認証済み通信サーバのネットワークにノードを結合する方法であって、認証サーバから受け取ったユーザ識別とパスワードを使用して、認証サーバにノードを認証させる段階と、ネットワークに加わるためにノードを接続しなければならない特定の通信サーバの識別の通知を受ける段階と、特定の通信サーバに接続するために、認証サーバから特定の通信サーバ及びノードに固有のデータを要求する段階と、特定の通信サーバ及びノードに固有のデータと、ノードと特定の通信サーバによって共有される共有暗号鍵とを受け取る段階と、特定の通信サーバ及びノードに固有のデータと、暗号鍵によって暗号化されたグローバルデータとを特定の通信サーバに送り、その結果、特定の通信サーバが、ネットワークにノードを認証させそれにより認証サーバからの検証を求めることなしにネットワークに参加するツールを有するようにする段階とを含む方法が提供される。
【００４１】
本発明のこの様相は、ネットワークに参加したい新しいノードの認証手続を実施する極めてセキュアな方法を提供する。これは、メッセージ送信元が、ネットワークにアクセスすることでメッセージ送信元に特権が与えられ、例えば通信ネットワークの他のメンバと自由に通信することが許可されるピアツーピア通信が容易なネットワークに参加したい状況で特に重要である。
【００４２】
本発明の第９の様相によれば、相互接続された伝送サーバノードの第１の階層レルム（hierarchical realm）を、相互接続された伝送サーバノードの第２の階層レルムに接続する方法であって、各レルム内にローカル認証サーバを提供する段階であって、認証サーバが、それぞれの階層レルムの最も高いレベルにある主ノードに接続され、レルム内の全てのサーバに関連した認証問題を制御するように調整される段階と、第１の階層レルムの主ノードを第２の階層レルムの認証サーバに登録する段階と、第１の階層レルムの主ノードを第２の階層レルムの認証サーバに対して認証する段階と、階層レルムを結合するために第１の階層レルムの主ノードが接続しなければならない最も下のノードサーバの識別に関する通知を受ける段階と、第２の階層レルムの最も下のノードサーバと第１の階層レルムの主ノードの両方の共有データと共有暗号鍵を受け取る段階と、受け取った共用データと共有暗号鍵を使って、第１の階層レルムの主ノードを第２の階層レルムの最も下のノードサーバに対して認証し、それにより第２のレルムの認証サーバからの検証を求めることなく第１と第２のレルムを結合する段階とを含む方法が提供される。
【００４３】
本発明のこの様相は、独自の通信ネットワーク（レルム）を持つ企業が、結果的にセキュリティの損失なしに参加することができるという点で有利である。また、極めて大きいサイズの既存のネットワークになるものを結合するために、前述の簡単な方法で高い方のレルムの許可を修正するだけでよいので、各レルムの完全性は損なわれない。これは、ピアツーピア技術を使用して全く異なる組織の人の間の通信が極めてセキュアに可能になることを意味する。
【発明を実施するための最良の形態】
【００４４】
図１を参照すると、本発明を実施するシステム１０が示されている。この実施形態は、現時点で好ましい電子メール通信に関して説明される。しかしながら、例えばボイスオーバーアイピー（ＶｏＩＰ）やインスタントメッセージ等の任意の形態の電子通信伝送も使用できることを理解されたい。更に、本発明をインターネット等の広域ネットワークを介した通信に関して説明するが、本発明は、ローカルエリアネットワークによって実施することもでき、或いは移動体通信によって実現することもできる。
【００４５】
システム１０は、異なる場所に提供された２台のパーソナルコンピュータ（ＰＣ）１２及び１４を含む。第１のＰＣは、ローカルＰＣ１２であり、第２のＰＣはリモートＰＣ１４であり、システム１０は、これらの２台のコンピュータ１２と１４の間のピアツーピア通信に対応している。各ＰＣ１２と１４は通信機能が同一であり、従って１台を詳しく説明するだけでよい。
【００４６】
各ＰＣ１２と１４は、この実施形態において、それぞれ対応するインターネットゲートウェイ１８及び２０を介してインターネット１６に接続されている。また、ローカルＰＣ１２にあるインターネットゲートウェイ１８は、ローカルＰＣ１２が、全てローカルインターネットゲートウェイ１８を利用するＬＡＮ２４上の複数のローカルＰＣ１２の内の１台として提供されるようにＮＡＴ２２を含む。また、リモートＰＣ１４は、ＬＡＮ２６上に提供されているが、このケースでは、ＮＡＴは提供されておらず、リモートＰＣ１４は固有ＩＰアドレスを有する。
【００４７】
インターネット１６に接続されたデータサーバ２８も提供される。データサーバ２８は、管理するユーザ名３２とＩＰアドレス３４のローカルデータベース３０を有する。ローカルデータベース３０は、また、登録ユーザの接続状態３６を記憶する。これらのユーザ名３２とアドレス３４は、ローカルＰＣ１２とリモートＰＣ１４のものを含み、一般に知られているため本明細書で詳しく説明しない登録手順によってデータベース３０に提供される。データサーバ２８が、ローカルＰＣ１２やリモートＰＣ１４等の登録されたＰＣ間のピアツーピア通信において能動的な役割を果たさないことを理解されよう。しかしながら、データサーバ２８は、最新のアドレス情報３４とそのアドレスの状態３６、即ちオンラインかオフラインかについて、登録されたすべてのＰＣ１２、１４を更新する。
【００４８】
インターネット１６に全て接続された複数の伝送サーバ機構（ＴＳＭ）４０が提供される。これらのＴＳＭ４０は、ローカルＰＣ１２とリモートＰＣ１４間のピアツーピア通信の適切なアドレス３４を確立する役割をする。各ＴＳＭ４０は、登録されたＰＣ１２及び１４の可能な各アドレスに関するアドレス指定情報を記憶するための情報のローカル記憶装置４２と関連付けられる。より具体的には、これらのローカル記憶装置は、ＰＣ識別４４のリストとＰＣ識別４４に対応するＩＰアドレス４６のリストを含む。ＩＰアドレス４６のリストにおいて、ＴＳＭ４０自体が所与のＰＣをアドレス指定する役割をする場合に直接ＩＰアドレス４６が提供される。そうでない場合、即ちＴＳＭ４０がその役割をしない場合は、その役割をするＴＳＭ４０のＩＰアドレス（或いは他の適切な識別）が提供される。ＴＳＭ４０の動作、特にＮＡＴ横断（NAT traversal）に関しては、後で詳細に説明する。
【００４９】
ローカルＰＣ１２とリモートＰＣ１４はそれぞれ、ＴＣＰ／ＩＰによって個人メールサーバ５２に接続されたMicrosoft OutlookTM等のメールクライアント５０を備える。メールサーバ５２は、それ自体のローカルデータ記憶装置５４を備え、ネットワークインタフェース５６にも接続されている。メールサーバ５２は、ピアツーピア通信プロトコルを利用するために、ダウンロードされたソフトウェアで提供され、ユーザによってインストールされる。メールサーバ５２は、オンラインになったことを知らせるためにデータサーバ２８と連絡をとらなければならないので、データサーバ２８のネットワークアドレスを記憶する。全てのピアツーピア通信は、メールクライアント５０の動作に影響を及ぼさないように個人メールサーバ５２によって透過的に経路指定される。
【００５０】
この実施形態で使用されるネットワークインタフェース５６とインターネットゲートウェイ１８、２０は、全く従来通りのものであり、本明細書で更に詳しい説明は必要ない。
【００５１】
次に、システム１０の一般的な動作モードを説明する。ユーザが、データサーバ２８に詳細を提供することによってサービスに登録された後、個人電子メールサーバ５２が、ユーザのＰＣ１２及び１４にダウンロードされローカルにインストールされる。個人電子メールサーバ５２は、電子メールクライアント５０とネットワークインタフェース５６に動作可能に接続され、これらは両方とも、ＰＣ１２及び１４上に既に提供されている。電子メールクライアント５０との電子メール通信は全て個人電子メールサーバ５２を介して行われる。
【００５２】
メッセージを送信する際、ユーザは、電子メールを作成し、次にそれを個人電子メールサーバ５２に送る。指定受信者の状態に関して記憶された最新情報で示されたように指定受信者がオンラインの場合、電子メールメッセージは、指定受信者のＰＣ１４に直接送信される。他の場合は、指定受信者のＰＣ１４がオンラインになり、それがデータサーバ２８からの最新オンライン状態メッセージを受け取ることによって示されるまで、電子メールメッセージは、キューに記憶される。
【００５３】
メッセージを送信する前に、指定受信者の実際の現行ＩＰアドレス３４が、ＴＳＭ４０によって決定される。このプロセスは、後で詳細に説明する。指定受信者の現行ＩＰアドレス３４が確認されると、電子メールメッセージのピアツーピア通信が実行される。
【００５４】
図２を参照して、このプロセス６０を実行する方法の例を、２人のユーザＡｌｉｃｅ６２とＢｏｂ６４に関して説明する。プロセス６０は、最初に、Ａｌｉｃｅの個人電子メールサーバ５２が、彼女がオンラインになったというメッセージをデータサーバ２８に送り６６、彼女がＢｏｂ６４にメッセージを送信したいことを示す６８。次に、データサーバ２８は、Ｂｏｂの現行のアドレス詳細を返す６９。次に、Ａｌｉｃｅの個人電子メールサーバ５２は、この情報を使ってメッセージをアドレス指定し、メッセージを暗号化し７０、それをＢｏｂがオンラインになったときに送信するためにローカルに記憶する７２。
【００５５】
Ａｌｉｃｅがオンラインであり（そのことを示すメッセージはデータサーバ２８に既に送られている６６）Ｂｏｂがオンラインになった（そのことを示すメッセージをデータサーバ２８に送る７４）少し後で、データサーバ２８は、Ｂｏｂ６４がオンラインになったことを示すメッセージをすべてのユーザに送信する７６。このメッセージは、Ａｌｉｃｅの個人電子メールサーバ５２によって受け取られ、記憶されたメッセージをＢｏｂ６４に直接送ることができる７８。メッセージを受け取ると、Ｂｏｂの個人電子メールサーバ５２はそのメッセージを記憶する８０。Ｂｏｂの電子メールクライアント５０が、入力メッセージ（取得メッセージ）を確認するときは８２、メッセージが解読され８４、Ｂｏｂ６４が読むために電子メールクライアント５０に送られる８６。
【００５６】
次に、図３から図６を参照して、各個人メールサーバ５２で実行される実際のプロセスを説明する。
【００５７】
ここで図３を参照して、個人電子メールサーバ５２の動作９０を説明する。動作９０は、最初に、サーバ５２を起動し９２、データサーバ（ＤＳ）２８に接続される９４。データサーバ２８のアドレスは、メールサーバ５２が既に知っており、ローカルメモリ５４に記憶されている。データサーバ２８は、幾つかのＴＳＭ４０のロケーションアドレスを提供し、その内の１つは、システム１０が作業するのに利用可能でなければならない。次に、メールサーバ５２は、ＴＳＭ４０との接続を確立しようとする９６。その一部として、ＴＳＭ４０がオンラインかどうかを知る確認が行われる９８。ＴＳＭ４０がオンラインでなく接続できない場合は、メールサーバ５２はオフラインであると見なされる１００。続いて、プロセス９０は、インターネット１６に再接続し１０２、その接続を前述のＤＳ段階９４に返すことができる。
【００５８】
しかしながら、ＴＳＭ４０がオンラインの場合は１０４、５つの異なる選択肢（状態）のいずれかが利用可能になる。第１に、ＰＣ１２及び１４が遮断された場合１０６にプロセス９０が終了する選択肢１０８がある。第２に、メールサーバ５２を強制的にログアウトさせることができ１１０、それによりプロセス９０が前述のようにオフライン状態１００になる。第３に、メールクライアント５０からメールサーバ５２に接続しようとしている場合は１１２、メールクライアント５０の信用証明が、既に記憶されている情報と照合され１１４、受け入れ可能な場合は、クライアントからの接続を行なうことができる１１６（図４を参照して後で詳しく説明するように）。クライアント信用証明が検証されない場合は、接続が拒絶され１１８、メールサーバ５２が、オンライン状態に戻る１２０か、強制的にオフラインにされ１２２、インターネット１６に接続し１０２、プロセス９０を再開しなければならない。
【００５９】
更に他の選択肢（状態）は、メールサーバ５２がメッセージを受け取り１２４、そのメッセージをユーザに提示するためにメールクライアント５２に提供することである。このプロセス１２４は、後で図５を参照して詳細に説明する。
【００６０】
メールサーバがオンラインなった後で利用可能な最後の選択肢（状態）は、メッセージの送信に関する。送信を待っているメッセージがあるかどうかを判断するために確認が行われる１２６。送信するメッセージがない場合１２８、プロセス９０は終了し、メールサーバ５２はオンライン状態１０４に戻る。送信するメッセージがある場合は、図６を参照して後で詳しく説明するようなMessageWaitingToSendプロセス１３０が実行される。この後者のプロセス１３０が終了した後、メールサーバ５２がオンライン状態１０４に戻る。
【００６１】
次に図４を参照して、ConnectionFromClientプロセス１１６を説明する。プロセス１１６は、最初に、メールクライアント５２（例えば、ＭＳＯｕｔｌｏｏｋTM）からＳＭＰＴ接続要求を受け取る１４０。プロセス１１６は、セキュリティのために、メールクライアント５２が許可されているかどうか判断する１４２。許可されていない場合は、許可が失敗し１４４、ユーザに通知するメッセージがメールクライアント５２に送られる１４６。そうでない場合、許可は成功し１４８、メールサーバ５２は、メールクライアント５０からの電子メールメッセージを受け取る１５０。これは、メッセージの要素が連続的に転送される多段階プロセスである（例えば、「送信元（from）」アドレス、「送信先（to）」アドレス、メッセージの本文の順で送られる）。このプロセスは、完全なメッセージを受け取るまで実行される。送信されるメッセージがまだ他にあるかどうかを判断する確認が行われ１５２、ある場合は、転送プロセス１５０、１５２を繰り返す。受信するメッセージがもうない場合１５４、メールサーバ５２は、メールクライアント５０から切断される１５６。
【００６２】
受信したメッセージを処理する前に、メールクライアント５０と関連付けられた送信許可を判断する確認を行うことができる１５８。メールクライアント５０が、特定の指定受信者に送信する妥当な許可を持っていないと判断した場合は１６０、電子メールメッセージは送信されない１６２。しかしながら、送信許可が適所にある場合は、宛先ユーザ情報を取得する１６４。この段階は、全ての登録指定受信者のアドレス情報をデータサーバ２８に要求し取得することを含む。このデータは、そのユーザのメッセージの暗号化に使用するためのユーザの公開鍵（図示せず）を含む。アドレス情報を別の電子メールメッセージと関連して最近既に受け取ってある場合は、この情報が、キャッシュに保持されている場合がある。従って、ＤＳ２８からそのアドレス情報を探す前に、特定の指定受信者のアドレス情報がキャッシュにあるかどうかを調べるための確認（図示せず）を行うことができる。
【００６３】
次に、指定受信者が認識済みメールユーザかどうかを判断する確認を行う１６６。認識済みメールユーザでない場合は１６８、システムがアドレスを知らないので、メールサーバ５２は、メッセージを送信できないことだけをメールクライアント５０に通知する１７０。しかしながら、指定受信者が登録ユーザとして認識されている場合は１７２、電子メールメッセージが、公開鍵インフラストラクチャ（ＰＫＩ）暗号化技術を暗号化／解読に使用することができるように、前に取得してある指定受信者の公開鍵で暗号化される１７４。
【００６４】
次に、暗号化したメッセージが、後で図６に関して説明するMessageWaitingToSendプロセス１３０に渡される。
【００６５】
次に図５を参照して、MessageReceivedプロセス１２４を説明する。電子メールメッセージを受け取るために、メールサーバ５２は、ログインされていなくてもよいが、メールサーバ５２はインターネット１６に接続されていなければならない。電子メールメッセージを受け取ると１８０、ユーザにそのメッセージが通知され１８２、これは、例えば通知受信ポップウィンドウ１８４の生成により実行することができる。受信した電子メールメッセージは、記憶装置５４に記憶され、メールクライアントからの「取得（get）」（取り出し）が保留される。記憶装置は、コンピュータのハードディスクでよいが、最もセキュアな解決策では、受信したメッセージは、取り出されるまでＲＡＭに記憶される。待機中に１８６、何らかの理由でメールサーバ５２を遮断しなければならない場合１８８、未送付のメッセージは、半永久記憶装置（一般に、ハードディスク）に記憶され１９０、プロセス１２４は終了する１９２。
【００６６】
メールサーバ５２が、メールクライアント５０から取得要求を受け取ったとき１９４、プロセス１２４は、メールクライアント５０が許可されているかどうかを判断する確認をする１９６。許可されていない場合は、クライアント許可が失敗し１９８、その結果メールクライアント５０の取得手順が失敗する２００。このことは、受信者ユーザとＡｍｔｅｕｓ（システム全体の動作を管理する権限を持ち、ユーザが登録される）に通知される２０２。
【００６７】
メールクライアント５０が許可された場合２０４は、２つの操作が並列に実行される。ローカルに記憶された受信者の秘密鍵を取り出し２０６、未送付の電子メールメッセージを取り出す２０８。次に、取り出した秘密鍵を使用してメッセージを解読する試み２１０が実行される。解読が成功しなかった場合２１２は、送信者に通知される２１４。これは、メールサーバ５２が、送付が失敗したことを述べる電子メールを送信者に返すことによって実現される。次に、プロセス１２４は、前のクライアント許可が失敗した場合１９８と同じように続き、即ちメールクライアント「取得」手順が失敗する２００。このことは、受信者ユーザとＡｍｔｅｕｓに通知される２０２。
【００６８】
一方、解読が成功した場合は２１６、解読済み電子メールメッセージが、ユーザに表示するためにメールクライアントに転送され、即ちメールクライアントによる「取得」が成功する２１８。次に、メッセージ受信プロセス１２４は、送付されるメッセージがまだ他にあるかどうかを確認する２２０。メッセージ２２２がもうない場合は、メッセージ受信プロセス１２４は終了する１９２。送付されるメッセージが更に他にある場合２２４、プロセスは、クライアント認証が成功した段階２０４に戻り２２６、前に述べた通りに続く。
【００６９】
次に図６を参照して、図３のメッセージ送信待機プロセス１３０について説明する。送信を待つ電子メールメッセージがキューにあるときは２３０、宛先の状態を判断しなければならない２３２。宛先の現在状態がキャッシ内にあるかどうか判断する確認２３４を行なう。現在状態がキャッシュ内にある場合は、キャッシュから取り出す２３６。現在状態がキャッシュ２３８内にない場合は、ＤＳ２８から取り出し２４０、キャッシュが取り出された状態で更新される。
【００７０】
宛先がオフラインかどうかを判断するために宛先の状態を確認する２４２。宛先がオフライン２４４の場合は、メッセージを送信することができず、暗号化されたメッセージは、単に、後で伝送を試みるためにメッセージ待機キューに記憶される２４６。一方、宛先がオンラインの場合は、暗号化されたメッセージをキュー（ＲＡＭ内又はハードディスクから）から取り出し２４８、そのメッセージが、ピアーツーピアー通信として指定受信者に直接送られる２５０。電子メールメッセージの正確なアドレス指定方法とメッセージの送信方法の詳細は、図７に概略的に示されており、後で説明する。
【００７１】
メッセージの送信を確認し２５２、何らかの理由で送信が失敗した場合２５４は、送信エラー状態２５６が入力され、エラータイプを決定する手順が続く。この状態２５６は、メールサーバ５２が何らかの理由で停止された２５８場合のメッセージ送信待機プロセス１３０の最初になる。この送信エラー状態２５６において、Ａｍｔｅｕｓには、並行してエラータイプの決定が通知される２６０。エラーが宛先がオフラインになっていることによるものかどうか判断する確認を行う２６２。これは、指定受信者の状態が変化したばかりの場合に起こる可能性がある。宛先がオフライン２４４の場合は、後で送信するために暗号化メッセージが記憶される２４６。これにより、このメッセージ送信待機プロセス１３０の手順が終了するが、プロセス１３０自体は終了せず、電子メールメッセージがキュー内で送信されるのをまだ待っている状態になる。
【００７２】
エラーが、宛先がオフラインになっているためではない場合は、エラーには別の原因があり２６４、それが永久的な障害が一時的な障害かを判断する確認が行なわれる２６６。永久的な障害２６８の場合（例えば、ユーザがなくなったか、電子メールが大きすぎる場合）、メールサーバは、メッセージが送付不能であったと言うメッセージを受け取る２７０。しかしながら、エラーが一時的な障害２７２による（例えば、接続不良による）場合、暗号化された電子メールメッセージが、キューに戻されて記憶され２４２、このメッセージ送信待機プロセス１３０の手順が終了する。
【００７３】
電子メールメッセージの送信結果に戻ると、メッセージが送付された２７４ことが確認された場合は、セキュリティのために電子メールのローカルコピーが削除される２７６。送信成功の通知がＡｍｔｅｕｓに送られ２６０、送信されるのを待っている電子メールメッセージがあるかどうかを判断する確認２７８が行われる。ある場合、プロセス１３０は、その電子メールメッセージの宛先（指定受信者）の状態の確認２３２に戻り、前述のように続けることを繰り返す。送信されるのを待っている電子メールメッセージがない場合は、処理するメッセージは他になく２８０、このメッセージ送信待機プロセス１３０の手順が終了する。
【００７４】
次に図７を参照して、ＴＳＭの操作及び対話について説明し、詳細には、ＴＳＭが、ピアツーピア通信に必要な指定受信者のアドレス指定をどのように確立するかを説明する。
【００７５】
最初に、ＴＳＭは、アドレス調査プロセスを常に実行しており、その結果、指定受信者への電子メールメッセージの送付が必要な時はいつも、その指定受信者のアドレス情報に関する最新の現行情報を所有していることを理解されたい。そのような調査は、改良したＵＤＰ（ユーザダイアグラムプロトコル）を使用して実行され、ユーザの実際の直接ＩＰネットワークアドレスを確立するのに役立つ試みを含む。これらの試みは、ＮＡＴ横断を可能にし、図９ａから図９ｉを参照して後でより詳しく説明される。
【００７６】
受信者の現行ＩＰアドレスを決定し送信者に送るロセス２７４で、最初に、送信者に、リストを保持する主ＴＳＭ４０からＴＳＭのリストが送られる２９０。次に、メールサーバ５２は、リストの最初のＴＳＭ４０にコンタクトする試みを行い２９２、成功したかどうか確認する２９４。コンタクトが成功しなかった場合２９６は、リストにある次のＴＳＭ４０を取り出し、接続する別の試み２９２を行う。このプロセスは、１つの接続が成功する２９８まで続く。
【００７７】
接続した後、特定のＴＳＭが、このメールサーバ５２の接続があることを他の全てのＴＳＭ４０に通知する３００。この接続は、ロードバランシングに関してどのＴＳＭ４０を使用するのが最も便利かに基づいて行うことができる。次に、送信者メールサーバ５２は、接続されたＴＳＭ４０に、指定受信者メールサーバ５２に接続したいことを通信する３０２。指定受信者は、ユーザＩＤで識別される。ＴＳＭ４０の仕事は、指定受信者メールサーバ５２のＩＰアドレスを決定することである。次に、選択されたＴＳＭ４０は、そのアドレス指定リスト（ローカルに記憶された）を確認して３０４、指定受信者メールサーバ５２への直接接続を有するかどうか確認する。直接接続を有する場合、即ち受信者メールサーバ５２の固有アドレスが分かっている場合は、その固有アドレスが、送信者メールサーバ５２に渡される３０６。このアドレスは、図９ａから図９ｉを参照して後で説明する技術を使用して決定される。受信者メールサーバ５２に自分の固有アドレスがない場合は、少なくともＴＳＭ４０（アドレスを有する）のアドレスがある。従って、この場合、選択されたＴＳＭ４０は、アドレスを参照しそれを送信者メールサーバ５２に返す３０６ことができるように問合せを適切なＴＳＭ４０に中継する３０８。
【００７８】
送信者メールサーバ５２は、指定受信者メールサーバ５２の固有直接ＩＰアドレスを受け取った後で、受信者メールサーバ５２に直接接続され３１０、標準のインターネットプロトコルを使用して電子メールメッセージを送信する３１２。即ち、電子メールメッセージは、メッセージをそれぞれ自分のヘッダを有するパケットに分割し、任意の適切な経路によって送られるそのようなパケットを受信者に送信し、そこで指定受信者に表わすために再び組み立てることによって、従来のＩＰ通信がインターネット１６で送られのと同じように送られる。
【００７９】
図８は、ユーザ３２０、そのメールクライアント５０、３２２、及び管理者３２４の様々なアクティビティを示す概略図である。様々なアクティビティは、図に示したように関連付けられた機能にグループ化される。より具体的には、ユーザ３２０は、関連付けられた機能の３つの異なるグループ、即ちセットアップアクティビティ３２６、支払いアクティビティ３２８、及びファイル関連アクティビティ３３０を実行することができる。メールクライアント５０、３２２は、単一グループのメールサーバ関連アクティビティ３３２を実行することができる。管理者３２４は、単一グループのユーザ関連アクティビティ３３４を実行することができる。そのような各グループを構成する機能は、図８に示されており、熟練した本明細書の対象者には明らかであり、従って本明細書では更に詳しい説明は行わない。
【００８０】
図９ａ〜図９ｆは、指定受信者の固有ＩＰアドレスを決定する際にＴＳＭ４０が実行する６つの段階の操作を示し説明する。より具体的には、図９ａに最初の状態が示されており、ここで、クライアントＡ３５０は、ＮＡＴ Ａ３５２を介してサーバＳ３５４にＴＣＰ／ＩＰ接続し、同様にクライアントＢ３５６は、ＮＡＴ Ｂ３５８を介してサーバＳ３５４にＴＣＰ／ＩＰ接続を確立している。段階１と示したこの段階で、クライアントＡ３５０は、クライアントＢ３５６とのピアツーピア接続を確立することを望む。
【００８１】
図９ｂに示した段階２Ａで、クライアントＡ３５０は、ＮＡＴ Ａ３５２を介してサーバＳ３５４にピアツーピア要求を行う。サーバＳ３５４は、この要求を受け取ると、ＩＰアドレスＳ１ポートｓ1３６２のＵＤＰポート３６０を開く。次に、段階２Ｂで、図９ｃに示したように、サーバＳ３５４は、既に確立してあるＴＣＰ／ＩＰ通信手段３６４によって、ＵＤＰポート３６０のアドレス（Ｓ1：ｓ1）３６２をクライアントＡ３５０にレポートする。次に、クライアントＡ３５０は、アドレスＡ：ａ３６８で自分自身のＵＤＰポート３６６を開く。このポートアドレス３６８は、ＮＡＴ Ａ３５２によってＡ1：ａ1３７０に変換される。一方、クライアントＡ３５０とサーバＳ３５４の間にはＵＤＰ通信チャネル３７２が設定される。
【００８２】
図９ｄに示した段階３で、サーバＳ３５４は、図９ｃに関して説明したものと同じようにクライアントＢ３５６とのＵＤＰチャネルを確立できるように、ＩＰアドレスＳ2：ｓ2３７８の第２のＵＤＰポート３７６を開く。次に、サーバＳ３５４は、既に確立されているＴＣＰ／ＩＰ通信手段３６４によって、ＵＤＰポート３７６のアドレス（Ｓ2：ｓ2）３７８をクライアントＢ３５６にレポートする。次に、クライアントＢ３５０は、アドレスＢ：ｂ３８２でそれ自体のＵＤＰポート３８０を開く。このポートアドレス３８２は、ＮＡＴ Ｂ３５８によってＢ1：ｂ1３８４に変換される。一方、図９ｅで分かるようにクライアントＢ３５６とサーバＳ３５４との間にＵＤＰ通信チャネル３８６が確立される。
【００８３】
図９ｅを参照すると、指定受信者の固有ＩＰアドレスを確立するプロセスの段階４が示されており、ここで、クライアントＡとクライアントＢの間でＵＤＰ通信を実行する方法を説明する。クライアントＢは、アドレスＢ：ｂ３８２を有するＵＤＰポート３８０からアドレスＳ2：ｓ2３７８を有するサーバＵＤＰポート３７６にＵＤＰパケットを送る。しかしながら、サーバＳ３５４には、それらのパケットがネットワーク変換ＵＤＰポートアドレスＢ1：ｂ1３８４から来ていることが分かる。同じように、ＵＤＰパケットは、クライアントＡ３５０からアドレスＳ1：ｓ1３６２を有するサーバＵＤＰポート３６０で受け取ることができる。
【００８４】
サーバＳ３５４は、ネットワーク変換ポートアドレスＡ1：ａ1３７０から受け取ったパケットをＢ1：ｂ1３８４に、ネットワーク解釈ポートアドレスＢ1：ｂ1３８４から受け取ったパケットをＡ1：ａ1３７０に転送することができる。これにより、クライアントＡ３５０とクライアントＢ３５６は、互いに直接ＵＤＰ接続していると信じることができる。
【００８５】
図９ｆは、プロセスの段階５を示し、ピアツーピア通信の一般的なケースを確立する。この場合、サーバＳ３５４は最初にクライアントＡ３５０に、クライアントＢ３５６がネットワーク変換ポートアドレスＢ1：ｂ1３８４上で話していることを通知する。また、サーバＳ３５４は、クライアントＢ３５６に、クライアントＡ３５０がネットワーク変換ポートアドレスＡ1：ａ1３７０上で話していることを通知する。従って、クライアントＡ３５０とクライアントＢ３５６が直接話す能力は、各クライアントが互いのネットワーク変換アドレス３７０、３８４を有するときに確立される。しかしながら、クライアントＡ３５０上で動作するアプリケーション（図示せず）によって、通信は、ＵＤＰポートＡ：ａ３６６と、アドレスＢ1：ｂ1３８４又はポートアドレスＢ1：ｂ1３８４とＳ1：ｓ1３６２両方と間の第１のＵＤＰチャネル３８８を介したものでもよい。同様に、クライアントＢ３５６上で動作するアプリケーション（図示せず）によっては、通信は、ＵＤＰポートＢ：ｂ３８０と、アドレスＡ1：ａ1３７０又はポートアドレスＡ1：ａ1３７０とＳ2：ｓ2３７８両方と間の第２のＵＤＰチャネル３９０を介したものでもよい。
【００８６】
図９ｇは、両方のＮＡＴが対称なケースで図５の一般的なケースがどのように適用されるかを示す。より具体的には、段階６Ａにおいて、ＮＡＴ Ａ３５２が対称ＮＡＴである場合、クライアントＢは、ネットワーク変換ポートアドレスＡ1：ａ1３７０からＵＤＰパケットを受け取る。同様に、ＮＡＴ Ｂ３５８が対称ＮＡＴである場合、クライアントＡは、ネットワーク変換ポートアドレスＢ1：ｂ1３８４からＵＤＰパケットを受け取る。そのようなＵＤＰパケットトラフィックを検出すると、サーバＳに通知され、ＮＡＴ Ａとその第１のポート３６２の間とＮＡＴ Ｂとその第２のポート３７６の間のＵＤＰ接続３７２が切断される。これは、図９ｇに示した状況である。またこれに続いて、クライアントＡとＢからサーバＳ３５４へのＴＣＰ接続３６４が切断されるが、これは、クライアントＡとＢ上で作動するアプリケーションに依存する。
【００８７】
図９ｈは、ＮＡＴの一方が非対称であるときに図９ｇのソリューションがうまくいかないようすを示す。より具体的には、ＮＡＴ Ｂ３５８が非対称である場合、ポートアドレスＢ：ｂ３８２からネットワーク変換アドレスＡ1：ａ1３７０に向けられるＵＤＰパケットトラフィックは、Ｂ2：ｂ2３９２から来るように見えるが、相変わらず第２のＵＤＰチャネル３９０を介してクライアントＡによって受け取られる。しかしながら、ネットワーク変換アドレスＡ1：ａ1３７０からネットワーク変換アドレスＢ1：ｂ1３８４へのＵＤＰパケットトラフィックは、そのポートがクライアントＢ３５６への通信に使用されなくなるので、ＮＡＴ Ｂ３５８によって遮られる。
【００８８】
図９ｉは、非対称ＮＡＴの一方のＮＡＴを処理する方法のこの実施形態によって提供されるソリューションを示す。より具体的には、段階６Ｂで、クライアントＡは、ネットワーク変換アドレスＢ1：ｂ1３８４ではなくネットワーク変換アドレスＢ2：ｂ2３９２から来るＵＤＰパケットトラフィックを見る。従って、ＮＡＴ  Ａ３５２は、ネットワーク変換アドレスＢ1：ｂ1３８４に向けられたＵＤＰトラフィック出力をネットワーク変換アドレスＢ2：ｂ2３９２に切り換える。ＮＡＴ Ａ３５２がこれを行うことができ、その理由は、ＮＡＴ Ｂ３５８が、このアドレスを使ってＮＡＴ Ａ３５２のネットワーク変換アドレスＡ1：ａ1３７０に書き込んでおり、従ってＩＰが通るからである。このように、非対称ＮＡＴがあるときでも双方向通信が確立される。
【００８９】
ＮＡＴＡ３５２が非対称でＮＡＴ Ｂ３５８が対称な場合は、図９ｉに関して前に述べたプロセスと同じプロセスが逆に行われる。
【００９０】
ＮＡＴ Ａ３５２とＮＡＴ Ｂ３５８の両方が非対称な場合、純粋なピアツーピア通信は不可能である。トラフィックは、継続するか、仲介の役割をするサーバＳ３５４によって再び確立される。ＮＡＴ Ａ３５２とＮＡＴ Ｂ３５８の両方が見ることができる他の任意のアドレスを仲介として代用できることに注意されたい。この状況に対処するこの手法は、後で第２の実施形態に関して詳細に説明する。
【００９１】
次に、図１０から図１６を参照して本発明の第２の実施形態を説明する。第２の実施形態は、第１の実施形態と多くの点で類似しており、従って、以下の説明は、第１と第２の実施形態との違いに焦点を当てる。簡潔に説明しただけの第１の実施形態の幾つかの様相は、完全性のために第２の実施形態の説明では詳しく述べる。
【００９２】
第２の実施形態によるセキュア通信システム４００は分散されており、その大きさのために複雑になることがある。ある意味では、全体的な構造は、図１０に示したような階層木４０２と見なすことができる。きわめて高い視点から、システム４００は、システム管理レベル４０４、伝送サーバレベル４０６及びエンドポイントレベル４０８の３つの論理レベルに見える。図１０に示したボックスは、複数の極めて異なる方法で実際に実現することができる論理機能を表わす。
【００９３】
木４０２の最上レベル４０４は、システム４００の管理機能に関係する。このレベル４０４は、システム４００を使用することを許可された全てのコンピュータのデータベース４１０（図１２を参照）を保持し、個々のピアツーピア通信を確立することを許可するかどうかを制御する。
【００９４】
セキュリティもこの管理レベル４０４から制御される。低いレベルの個々の通信接続は、管理レベル４０４から許可を受けなければならなず、そのような許可を受けた後で、低い管理レベルは、例えばそれらのレベル自体の間で暗号鍵を取り決めた後で追加接続を作成することができる。
【００９５】
また、管理レベル４０４には、カスタマイズ可能な詳細レベルまで、作成された追加接続が通知され、低いレベルで生じるイベントを記録することもできる。そのようなイベントには、少なくともネットワークにそれぞれ試みられたアクセスがある。
【００９６】
管理レベル４０４は、ネットワークの動作に関する管理レポートを作成することもでき、これはシステム４００の制御と管理に極めて役立つ。
【００９７】
最も低いレベル４０８には、「エンドポイント」４１２がある。これらのエンドポイントは、「ソフトフォン」（ＶＯＩＰ通話を処理するソフトウェア）とローカラーズした電子メールサーバを含む。しかしながら、エンドポイント４１２は、他の形のデータ通信ツールを含むこともできる。エンドポイント４１２は、システム４００及びそれにより提供されるセキュアな通信方法を使用可能にするためにユーザのコンピュータにインストールされたキーコンポーネントである。各エンドポイント４１２は、本質的に、ユーザの場所に提供されるときはセキュアであり、従って、エンドポイント４１２での通信の記憶域は、決してデータ通信の安全性を損なうことはない。
【００９８】
管理レベル４０４とエンドポイント４１２の間には、複数の伝送サーバ４１４で構成されたいわゆる分散「トランスポート層」４０６が提供される。この層４０６は、実際には、ユーザと管理者に見えないままであるが、この層は、２種類の通信、即ちアドレスと状態を決定する通信と実際のピアツーピアデータ通信の伝送を容易にするという点で、システム４００の不可欠な構成要素である。エンドポイント４１２と管理層４０４だけが、トランスポート層４０６を構成する伝送サーバ４１４を介して通信する。これは、簡潔性と拡張性の利点を提供する。
【００９９】
次に図１１を参照し、管理レベル４０４について詳しく説明する。管理レベル４０４は、図１１に示した例において、システム４００の制御の効率的な管理を可能にする階層木構造を有する。管理層の分散した性質は、図１１から明らかであり、階層の一番上には、１つの中央位置から実行されるAmteus グローバル管理ノード４１６があることが分かる。次に、例えば登録ユーザ間の通信を制御したい企業又は行政体（図示せず）のコンピュータで実施することができるクライアント管理ノード４１８（図１１の例では１つだけ示した）が提供される。クライアント指定位置にあるクライアントは、図１１に示した単一のクライアント管理ノード４１８を実行する。
【０１００】
階層における次の層は、図１１に３つ示した所与のクライアントの地域管理ノード４２２の層４２０である。これらの地域管理ノード４２２は、分散トランスポート層４０６（単に点線として表わした）を介してエンドポイント４１２（ＥＰ１〜ＥＰ３）に接続する。この最も低い管理レベル４２０は、地理に基づき、後で詳述するロードバランシングを含む幾つかの事柄にとって重要である。同様に、この例では、更に他のエンドポイントＥＰ４ ４１２が、トランスポート層４０６を介してAmteus グローバル管理ノード４１６で直接実施される管理機能を有する。
【０１０１】
次に、管理レベル４０４の働き方を説明し、例として示す。エンドポイント４１２によって表わされた各ユーザは、１つの管理ノード４１６、４１８、４２２、一般にその地域管理ノード４２２に登録される。この登録は、階層的管理木を上に送られ、その結果、登録詳細が、それより高いレベルの全ての管理ノード４１８、４１６に保持される。そのような管理ノード４１８、４１６に記憶された登録情報は、登録処理の間に収集されるとき、エンドポイント４１２の現在の動作状態と共にユーザに関する全ての詳細を含む。エンドポイント４１２間のピアツーピア通信を許可するかどうかに関する決定も、両方のユーザ登録詳細が入手可能な階層における最も低いレベルで得られる。そのようなエンドポイント４１２の動作状態に生じた変化は、より高いレベルの管理ノードに渡される。
【０１０２】
ＥＰ（エンドポイント）４１２は、一般に、電話及び／又は電子メールユーザである。図１１に示した例では、ＥＰ１ ４１２は、クライアントのロンドン支店に基盤を置く。ＥＰ１ ４１２の詳細は、ロンドン地域管理ノード４２２と、それより高いレベルにある全ての管理ノード４１６、４１８に記憶される。ＥＰ２及びＥＰ３ ４１２は、クライアントのアテネ事務所に基盤を置く。そのような詳細は、アテネ地域管理ノード４２２と、それより高いレベルの全ての管理ノード４１６、４１８に記憶される。ＥＰ４ ４１２は、Ａｍｔｅｕｓだけが知っている個人Ａｍｔｅｕｓ加入者であり、従って、ＥＰ４ ４１２はAmteus グローバル管理ノード４１６にだけ登録されている。
【０１０３】
ＥＰ２ ４１２がＥＰ３ ４１２と通信したいと仮定すると、アテネ地域管理ノード４２２は、両方のエンドポイントユーザ４１２を知っており、従ってその要求は、アテネ管理ノード４２２によってアテネでローカルに処理される。詳細は、情報としてより高いレベルの管理ノード４１６、４１８に送られることがあるが、そのような高いレベルのノード４１６、５１８は、所望の通信チャネルの設定には必要ない。
【０１０４】
ＥＰ１ ４１２がＥＰ２ ４１２と通信したい場合、ＥＰ１ ４１２は、ロンドンのローカル管理ノード４２２に要求を出す。このロンドン地域管理ノード４２２は、ＥＰ２ ４１２について何も知らず、従って、ＥＰ１の状態を通話設定になるように変更し、要求を階層木の上のクライアント管理ノード４１８に渡す。
【０１０５】
クライアント管理ノード４１８は、通話の両方の側を知っており、従って所望の通話設定を処理することができる。クライアント管理ノード４１８は、最新の状況情報を持っているのでＥＰ２ ４１６が使用中かどうかを知っているが、後で述べるように、これに関する見解は最新でなく、この見解が提供される可能性は僅かである。クライアント管理ノード４１８がＥＰ２ ４１６を使用中と見なした場合は、そのようにロンドン地域管理ノード４２２に通知し、ロンドン地域管理ノード４２２はＥＰ１４１２に通知する。従って、セットアップの要求は、失敗に終わる。
【０１０６】
そうでない場合、クライアント管理ノード４１８は、ＥＰ１の状態を「通話設定」であるとマークし、要求をアテネ地域管理ノード４２２に下に渡す。アテネ地域管理ノード４２２は、ＥＰ２ ４１６が現在使用中であることができる（即ち、クライアント管理ノード４２２の状態が実際には最新でなかった）。その場合、アテネ地域管理ノード４２２は失敗コード「使用中（busy）」をクライアント管理ノード４１８に返し、クライアント管理ノード４１８は、前の場合と同じように通信チャネルを設定する要求を取り消す。
【０１０７】
そうでない場合、アテネ地域管理ノード４２２は、通話要求をＥＰ２ ４１２に転送する。ＥＰ２ ４１２は、通話を受け入れるかどうかを決定し、適切な応答を経路に沿ってＥＰ１ ４１２に返す。
【０１０８】
ＥＰ１ ４１２がＥＰ４ ４１２と通信したい場合は、類似のプロセスが行われる。この場合、最初の要求が、その地域管理ノード４２２とクライアントノード４１８を介してAmteusグローバル管理ノード４１６まで完全に渡される。次に、Amteusグローバル管理ノード４１６は、ＥＰ４ ４１２と直接通信して接続を確立する。
【０１０９】
前に使用した「ローカル」という語は、サーバに対して地理的に地方にあることを意味するものである。しかしながら、最も厳密な意味では、この用語は単に、サーバとエンドポイント間に相対的な直接接続があり、エンドポイントがそのサーバに登録されており、そのためそのエンドポイントがサーバに対してローカルになることを意味する。
【０１１０】
次に図１２を参照すると、図１０の階層４０２の伝送レベル４０６は、階層木構造で互いに接続された伝送サーバ４１４からなる。各伝送サーバ４１４は、メッセージを途中で記憶することなくある場所（エンドポイント）４１２から別の場所４１２への通信の伝送を容易にする役割をする。階層木の一番上には、主伝送サーバ４２４が提供され、これは、管理階層の一番上にあるAmteusグローバル管理（データベース）サーバ４１０に接続される。また、故障した場合の主伝送サーバ４２４のバックアップとして、ホットスタンバイ伝送サーバ４２６が提供される。階層の次のレベル４３０には、主伝送サーバ４２４に接続された３つの地域伝送サーバ１、２及び３ ４２８が示されている。これらの地域伝送サーバ４２８は、次に、それぞれのエンドポイント１．１、１．２、２．１及び３．１ ４１２と接続される。
【０１１１】
前述の伝送レベル４０６は、事前に定義されていない動的構造を表わす。より正確に言うと、ネットワークを構成するために伝送サーバ４１４を動的に接続する規則が定義され提供される。更に、図１０に機能的に別の層として示した管理レベル４０４は、伝送サーバ４０６の階層ネットワークに実際に組み込まれ、ピアツーピア通信の設定に利用される。最後に、ネットワークには、ネットワークセキュリティを改善するセキュリティオーバレイが組み込まれている。この実施形態において、オーバレイは、ネットワークの全てのノードに適用される機能規則として実施され、即ち、その規則とは、ノードがエンドポイント４１２を既に知っていない限り、そのノードのそのエンドポイント４１２に対する通信を許可しないというものである。ノードが、所望のエンドポイント４１２の識別を個人的に知らないときは、通信の要求を階層木の更に上に渡す。
【０１１２】
図１３を参照すると、各伝送サーバ４１４は、より高いレベルの伝送サーバ４１４に対するクライアントリンク（アップリンク）４３０及び／又は管理（データベース）サーバ４１０に対するクライアントリンク４３２を有する（この両方は、便宜上図１３に示されている）。伝送サーバ４１４が階層木の一番上にあるとき、アップリンク４３０は、管理データベースサーバ４１０に対するものであるが、他の場合は、より高いレベルの伝送サーバ４１４に対するものであることに注意されたい。伝送サーバ木の一番下には、図１２に関して前に説明したようなエンドポイント４１２がある。また、各伝送サーバ４１４は、ダウンリンク４３４、即ちサーバ接続を有し、その接続により、より低レベルの伝送サーバ４１４とエンドポイント４１２は、サーバ４１４に対する接続を開始することができる。各伝送サーバ４１４のアップリンク４３０は、ＴＣＰ／ＩＰクライアントであり、一方、ダウンリンク４３４はＴＣＰ／ＩＰサーバである。
【０１１３】
各伝送サーバ４１４は、ネットワークアドレス変換を受けない環境で動作する。即ち、各伝送サーバ４１４はそれ自体の公開ＩＰアドレス４３６を有し、このＩＰアドレスは、それ自体の伝送サーバＩＤ４３８と同様に動的に割り当てられることがある。このＩＰアドレスは、その伝送サーバ４１４に接続されたエンドポイントＩＤのリスト４４２、各エンドポイント４１２に対する接続の状態４４４、及びエンドポイント４１４と関連付けられた許可４４６と共に、ローカルデータベース４４０に記憶される。必要に応じてこの情報にアクセスし更新するためにデータベースサーバ４４８が提供される。データベース４４０に記憶されたエンドポイント（ユーザ）情報のリストは、後述するように構成される。
【０１１４】
データベース４４０には２つのリストが提供され、その１つは、現在オンライン４４４であるローカルに登録されたユーザのＩＤのコンパイルであり、もう１つは、ウォッチ（watch）が記録されたローカルに登録されたエンドポイント４１２のＩＤのコンパイル４５０である。ウォッチは、特定のエンドポイント４１２が接続されているが、例えば使用中のときに通信に利用できないときに記録される。ウォッチは、宛先エンドポイント４１２の状態を監視し、通信に利用可能になるとき、ウォッチのトリガ機構（図示せず）は通知プロセスを作動させる。通知プロセスは、所望の宛先エンドポイントに対する接続状態の変化を監視することに関心を記録したエンドポイント４１２及び伝送サーバ４１４の全てにメッセージを送る。更に、状態の変化は、階層ネットワークの更により高いレベルに通知される。
【０１１５】
データベース４４０は、エンドポイント４１２の１組の公開暗号鍵４５１も記憶する。これらは、後でより詳しく説明するように、様々なエンドポイント４１２から送られた暗号化されたメッセージを解読するために使用される。
【０１１６】
伝送サーバ４１４は、また、伝送サーバ４１４の現在の地理的位置を決定する位置決めモジュール４５２と、階層ネットワーク内の異なる隣り合った伝送サーバ４１４に対する接続を確認するハートビートモニタ４５４とを含む。サーバ制御モジュール４５６は、データベースサーバ４４８と共に、そのようなリンク、モジュール及びデータベースの全ての動作を管理する。
【０１１７】
ネットワークの伝送サーバ４１４は、エンドポイントと全く同じように管理システム４０４（図１１に示した）による許可を受けなければならない。以上述べたように、各伝送サーバ４１４は、伝送サーバ４１４の役割をする許可と共に、データベース４４０にそれ自体のエントリを有し、ユーザＩＤを有する。
【０１１８】
伝送サーバ４１４は、位置決めモジュール４５２の機能により「位置認識（location aware）」する。これは複数の異なる方法で達成することができる。例えば、１つの単純な方法は、位置決めモジュール４５２をウィンドウズベースにすることであり、その場合、位置決めモジュールが動作しているシステムの現在のタイムゾーンを決定することができる。
【０１１９】
ハートビートモニタ４５４を使用することにより、全ての伝送サーバ４１４は、その親伝送サーバ４１４に規則的なハートビートを送信する（規則的なハートビートがある場合）。ハートビートは、伝送サーバの登録接続（ローディング）に関する更新情報を含み、親伝送サーバ４１４と子伝送サーバ４１４の間の通信リンクの存在を確認する信号である。ハートビートモニタ４５４の目的は、システム４００のロードバランシングを制御することである。より具体的には、ハートビート情報は、発信（地域）伝送サーバ４１４に現在直接登録されているいくつかのエンドポイント４１２のカウント（使用カウント（usage count））を含む。各（親）伝送サーバ４１４は、ハートビートを受け取ると、同じレベルにある他の全ての伝送サーバのダウンリンクのＩＰアドレスとポートと、更に使用カウントのリストを提供するメッセージを返す。従って（図１２において）、主伝送サーバ４２４は、伝送サーバ４１４からハートビートを受け取ったとき、それぞれの地域伝送サーバ１及び３ ４１２のそれぞれのアドレス及び使用カウントを返す。
【０１２０】
次に図１４を参照すると、この実施形態のこの様相のロードバランシング手順４６０の流れ図が示されている。図から分かるように、新しいクライアント（エンドポイント４１２又は低いレベルの伝送サーバ４１４）が、伝送サーバ４１４に接続しようとするとき、段階４６４で、伝送サーバ４１４が、新しいクライアントのハートビート信号を含む要求を受け取る。次に、伝送サーバ４１４は、段階４６６で、それ自体の記憶した使用カウントＵ1と、同じレベルにあり地理的に少なくとも近い（例えば、同じタイムゾーンの）他の伝送サーバ４１４の使用カウントＵ2、Ｕ3、Ｕ4を取り出す。次に、伝送サーバは、段階４６８及び４７０で、その使用カウントＵ1を、同じ階層レベルにある他の近くの伝送サーバ４１４のＵ2、Ｕ3、Ｕ4と比較する。使用カウントＵ1が、その仲間４１４の誰かの使用カウントＵ2、Ｕ3、Ｕ4より大きい場合は、段階４７２で、ピアツーピア通信を実現するために、新しいクライアントに伝送サーバ４１４（現在最も低い使用カウントを有する）に接続するように命じる応答を返す。次に、段階４７４で、現行伝送サーバ４１４との接続が断たれ、段階４７６でロードバランシング手順４６０が終了する。そうでない場合は、段階４７８で接続要求が受け入れられ、段階４８０でクライアントのユーザカウントが読み込まれ、段階４８２で、伝送サーバ４１４のローカル使用カウントが、クライアントのユーザカウントの大きさだけ増分される。その後で、ロードバランシング手順が終了する。
【０１２１】
この基本原理を更に高度なレベルに拡張することができる。例えば、受信伝送サーバ４１４は、自分の階層レベルと地理的位置で要求を受け入れることができると決定した後で、新しい接続に地理的に近く且つその接続をより適切に処理できる低いレベルの伝送サーバ４１４があるかどうかを調べる。これは、ユーザが伝送サーバの木の末端で接続された場合にいつでもシステム全体の性能が高まるので、有利であると考えられる。その理由は、ピアツーピア通信の大部分が、厳しい帯域幅で通常ローカルなボイスオーバーＩＰ（voice over IP）トラフィックであるからである。従って、この主トラフィックをローカル伝送サーバレベルで維持することによって、階層システム４０６全体にこのトラフィックの負担がかからなくなる。そうでないと、このトラフィックによって、システム４００がかなり遅くなる。
【０１２２】
新しい接続を受け入れる伝送サーバ４１４は、それ自体の親伝送サーバのアドレスを新しい子ユーザに通知する。また、その親伝送サーバ４１４に新規ユーザの接続を通知する。その後で、親伝送サーバ４１４は、新規ユーザが接続されているとみなす。
【０１２３】
接続された後で、新規ユーザ４１２は、メッセージを以下のカテゴリで伝送サーバ４１４に送信し始めることができる。
・管理要求
伝送サーバ４１４は、要求に自分自身の伝送アドレス／ポート４３８のタグを付けた後で、その要求を親伝送サーバ４１４に渡す。
・接続された伝送サーバ４１４に向けられたメッセージ。これは、ＴＣＰ／ＩＰによる従来の方式で送られ、特別の操作を必要としない。
・親以外の別のエンドポイント４１２又は伝送サーバ４１４に向けられたメッセージ。このメッセージは、送信元と宛先のエンドポイントのユーザＩＤを含む。伝送サーバ４１４は、現在接続されているユーザ（エンドポイント）のリストにあるユーザＩＤを調べる。このリストは、その伝送サーバ４１４に登録されたユーザのリスト４４２を調べ、対応するそれぞれの状態４４４を調べることにより作成される。ユーザを見つけた場合は、多くの場合一以上の低いレベルの伝送サーバ４１４を介して、そのユーザにメッセージが送られる。ユーザが見つからなかった場合は、メッセージが、伝送サーバの親伝送サーバ４１４に渡される。伝送サーバ木４２４の一番上に達しても宛先が見つからなかった場合は、送信元に失敗がレポートされる。このプロセスは、木の一番上のユーザＩＤから元のメッセージ送信元に有効に応答メッセージを返す。各伝送サーバの親４１４に記憶されたデータを確認するプロセスは、ユーザの各登録が木の上の各ノードの親に返され、その結果全ての接続の情報が木の一番上にあるという事実による。従って、所望のユーザが木４２４の一番上に見つからなかった場合は、そのユーザはネットワークに登録されていな可能性がある。
【０１２４】
エンドポイント４１２が、親伝送サーバ４１４に対する直接接続を失ったときは、その祖父伝送サーバ４１４に接続しようとすることを理解されたい。次に、祖父伝送サーバ４１４は、代替接続を元のレベルで見つけることができる。
【０１２５】
図１０の階層４０２のエンドポイントレベル４０８で、各エンドポイント４１２は、その親伝送サーバ４１４に１つのクライアントＴＣＰ／ＩＰ接続を有する。この接続は、高いレベルの伝送サーバ４１４と管理サーバ４１０、４０４の両方へのアクセスに使用される。
【０１２６】
例えば、各エンドポイント４１２は、ＶｏＩＰ通信を容易にするためにユーザとの通信インターフェース（図示せず）を提供する。この実施形態において、各エンドポイント４１２は、いわゆる「マルチメディア」エンジン（図示せず）も使用する。このマルチメディアエンジンは、マイクロフォン、スピーカ又はヘッドホン、Ｗａｖｅファイルプレーヤ及びレコーダ、並びにビデオプレーヤ及びレコーダを構成する。マルチメディアエンジンは、また、音声を様々な波形式の間で変換し、減衰させ、増幅し、混合することができるディジタル信号処理モジュールを含む。マルチメディアエンジンの機能が当該技術分野で一般的ものであり、また熟練した本明細書の対象者は、そのようなエンジンを構成するために更に詳しい説明を必要としないので、マルチメディアエンジンについてはこれ以上説明しない。
【０１２７】
次に図１５と図１６を参照して、前述のシステム４００を使用してピアツーピア接続を確立する方法５００について説明する。方法５００は、本質的に、第１の段階（図１５に示した）で、指定されたエンドポイント４１２間に所望のピアツーピア接続を確立できるかどうかを設定し、第２の段階（図１６に示した）で、発信元４１２と所望の宛先４１２の間にピアツーピア接続を確立する２段階プロセスである。ピアツーピア接続を確立した後で、標準のインターネット通信プロトコルを使用して（この実施形態では専用ＵＤＰチャネル３７２を介して）、発信元４１２と宛先４１２間のセキュアな直接双方向通信が可能になる。以下の説明は、前述の第１と第２の段階に関するものである。
【０１２８】
エンドポイント４１２間でピアツーピア（Ｐ２Ｐ）接続を確立することができる。これらの接続は、次に、現在の実施形態では音声と電子メールデータを送信するために使用されるが、他の通信形態も使用することができる。
【０１２９】
第１の新しいＰ２Ｐ接続の必要性は、最初に、例えばエンドポイント４１２でエンドユーザが別のエンドユーザにＶｏＩＰ電話をかけることを決定したときに生じる。この段階で、接続の発信者（発信元）は、所望の宛先のネットワークアドレス（ターゲットユーザのＩＤ）しか知っておらず、その発信者は、ターゲットユーザの状態（即ち、ユーザがオンラインか、使用中か、など）を知らない。（発信者は、アドレス帳により、ターゲットユーザが最近オンラインであったことなどを知っている場合があるが、現在の状態を確信することはない。）
【０１３０】
次に図１５を参照すると、第１の段階を実施する方法５００は、最初に、発信元ユーザ４１２が段階５０２で、「私（ユーザＳ）はユーザＤと通信したい。」という形の要求を伝送サーバ４１４に送る。伝送サーバ４１４は、接続ユーザ４１２のリスト４４２、４４４を調べて、段階５０６で、ユーザＤが見つかったかどうかを確認する。接続されたユーザＤ４１２を見つけた場合、段階５０８で、ユーザＤ４１２が通話可能かどうか確認する。そうでない場合は、段階５１０で「失敗−使用中（Failed - Busy）」の応答を返し、段階５１２でユーザＤに対するウォッチを設定することが好ましい。最後に、ユーザＳは、段階５１４で所定の時間期間待ち、次に再び接続を試み及び／又は単にユーザＤの可能状態の変化に応じて現行伝送サーバで作動しているウォッチの通知を待つ。しかしながら、段階５０８でユーザＤが通話可能な場合は、段階５１６で、伝送サーバ４１４が、ユーザＳとユーザＤ両方の状態を「通話設定処理中」状態に変化させる。次に、伝送サーバ４１４は、段階５１８で、できるかぎり現行伝送サーバ４１４より低いレベルの他の伝送サーバ４１４を介してユーザＤに要求を送る。この時点で、ユーザＤは、段階５２０で見つかり接続されたと見なされ、プロセス５００は、図１６に関して後で述べるように続く。
【０１３１】
次に、通信に使用可能になるという状態の変化がユーザＤの状態がに生じた場合、このことが、ユーザＤのローカル伝送サーバ４１４に通知され、ユーザＳのウオッチ設定が作動する。次に、ユーザＳは、段階５１４で、ユーザＤの通話可能性の通知を受け、第１の段階が再び始まることができる（前に述べたように）。代替又は組み合わせにおいて、ユーザＳは、段階５１４で、図１５に示したように最初からプロセス５００を再開する前に所定の時間待つことができる。
【０１３２】
段階５０６で行なった確認から判断されたように、ユーザＤが、伝送サーバ（ＴＳ）に現在接続されていない場合は、段階５２２で、親伝送サーバ４１４が存在するかどうか判断するために確認が行なわれる。親伝送サーバ４１４が存在する場合は、段階５２４で要求が親伝送サーバ４１４に送られる。その後で、親伝送サーバ４１４は、段階５２６で、現行伝送サーバと見なされ、プロセスは引き続き、現行伝送サーバ４１４が、段階５０４で登録されたエンドユーザ４１２のリストを確認する。段階５２２で行った確認によって親伝送サーバ４１４がないと判断された場合、伝送サーバは、段階５２８で、接続失敗を示す応答をエンドポイントに送り、段階５３０でプロセスが終了する。
【０１３３】
伝送サーバ４１４に高いレベルの伝送サーバ４１４から到着した発信要求は、ユーザが接続されていない場合に、要求を来た場所に転送するのではなく失敗を返す点以外は全く同じように処理される。
【０１３４】
次に図１６を参照して、通信プロセス５００の第２の段階を説明する。ユーザＤは、接続された後で、ピアツーピア通信を容易にするために直接接続できるように、現行ＩＰアドレスとポート番号をユーザＳに伝えなければならない。従って、ユーザＤが、ユーザＳから呼を受けとったときにまだオンラインで且つ使用可能な場合に、段階５３２でその状態を「通話設定」に変化させる。次に、ユーザＤが、段階５３４でＲＩＮＧＩＮＧ１メッセージをその親に送り、親は必ず伝送サーバ４１４になる。また、ＲＩＮＧＩＮＧ１メッセージは、発信者（ユーザＳ）のユーザＩＤを含み、それにより、中間伝送サーバ４１４は、そのメッセージを、オリジナル発呼要求と同じ仕組みを使用して返すことができる。
【０１３５】
また、伝送サーバ４１４は、段階５３６でＲＩＮＧＩＮＧ１メッセージを受け取ると、最初に、段階５３６でＵＤＰ（ユーザダイアグラムプロトコル）チャネル３７２を構成する。次に、段階５４０で、ＵＤＰチャネルの外部ＩＰアドレスとポート番号を含むＲＩＮＧＩＮＧ２メッセージを構成し、また段階５４０でこのメッセージをエンドポイントユーザＤと発呼者のエンドポイントユーザＳの両方に送る。ＲＩＮＧＩＮＧ２メッセージは、ＲＩＮＧＩＮＧ１メッセージを受け取った伝送サーバ４１４のユーザＩＤも含み、その理由は、そのユーザＩＤがピアツーピア接続を確立するために使用されるからである。
【０１３６】
伝送サーバ４１４がＲＩＮＧＩＮＧ１メッセージを決して送信しないことを理解されたい。従って、伝送サーバに到着したＲＩＮＧＩＮＧ１メッセージは、常に、エンドポイント４１２から直接来たと見なされる。
【０１３７】
エンドポイント４１２が、段階５４２でＲＩＮＧＩＮＧ２メッセージを受け取ると、エンドポイント４１２は、段階５４４で、通話設定状態であるかどうか確認する。そうでない場合は、段階５４６で、通話に対しての指定されたものを全てリセットし、段階５３０でプロセス５００は終了する。別の状況では、各エンドポイント４１２が、段階５４８で、ＵＤＰチャネルを設定し、段階５５０で、ＲＩＮＧＩＮＧ２メッセージで指定されたポートにメッセージを定期的に送り始める。これは、被呼者に最も近い伝送サーバ４１４になる。一般的なネットワーク障害が何もなければ、これらのメッセージのほとんどは正確に到達するはずである。
【０１３８】
ユーザＤに最も近い伝送サーバ４１４が、各エンドポイント４１２から最初のＵＤＰメッセージを受け取ったとき、段階５５２で、エンドポイントのＵＤＰチャネル３７２の（後述するように、後で変換され可能性がある）ネットワークアドレスとポート番号を抽出する。伝送サーバ４１４は、次に各エンドポイントのＵＤＰチャネル３７２に応答を返すことができ（図示せず）、この応答は、ＵＤＰネットワークアドレスと他のエンドポイントのＵＤＰチャネルのポート番号を含み、これらの応答は、ファイアウォールが存在する場合でも各エンドポイントに到達するはずである。（エンドポイントが最初に伝送サーバに書き込むので、これは、エンドポイントにある通常のファイアウォールの働きによって可能なはずである。）
【０１３９】
伝送サーバ４１４が、両方のエンドポイントからパケットを受け取った後で、伝送サーバ４１４は、そのＵＤＰポートを外部からどのようにアドレス指定するかを知る。次に、伝送サーバ４１４は、段階５５４で、他のエンドポイントのアドレスを伝えるＴＡＬＫＤＩＲＥＣＴメッセージを各エンドポイント４１２に送る。段階５５６でそのようなＵＤＰアドレスを受け取った後で、エンドポイント４１２は、発信元エンドポイント４１２と互いに通信して、段階５５６で宛先エンドポイント４１２への直接ＵＤＰ通信チャネル３７２を設定することができ、次にプロセス５００は、段階５３０で終了する。
【０１４０】
ほとんどの場合、前記の手順により、これら直通通信を問題なく確立することができる。しかしながら、ネットワークアドレス変換（ＮＡＴ）がエンドポイントでのファイアウォール動作と同時に存在する場合は、問題が生じることがある。そのような問題は、多くの状況で、第１の実施形態の図９ａから図９ｉに示した例を参照して前に述べたような克服することができる。
【０１４１】
第１と第２の実施形態の両方に使用される手法は、更に後で詳しく説明され、ＮＡＴ３５２、３５８の様々な全ての組み合わせを処理する仕組みについても説明される。
【０１４２】
ネットワークアドレス変換器（ＮＡＴ）３５２、３５８は、広義には、対称と非対称２つのクラスの変換機能に分類される。対称ＮＡＴは、パケットの宛先に関係なく同じインターネット側アドレス及びポートの組み合わせを使用し、一方、非対称ＮＡＴは、宛先ごとに異なるインターネット側アドレス／ポートの組み合わせを使用する。この理由が何であるかはっきりと分からないが、未知の発信元からデータパケットを受け入れないことが賢明であるという確信に基づくと考えられる。
【０１４３】
これらのＮＡＴの必要性に関して少し考えると次のことが分かる。１．受信者は、各パケットが誰から来たかを知ることができ、ＮＡＴの必要なしに未知の発信元からのパケットを必要に応じて容易に拒否することができる。２．インターネットパケットのＩＰアドレスとポートは偽造が容易である。ＮＡＴによるそのような厳格な動作は、長い時間かなり有能なハッカーを阻止できる可能性は少ない。
【０１４４】
ファイアウォールは、また、ピアツーピア通信を確立しようとするときに問題を引き起こす可能性がある。通常のファイアウォール動作は、「話しかけられるまで話してはならない」という規則を課すことである。ＡとＢが互いに話したい場合は、Ａ又はＢのどちらが最初に話さなければならない。次に、他方が応えることができる。しかし、Ａが最初に話し、Ｂがファイアウォールの後ろにある場合、Ｂは、Ａにパケットが書き込まれるまでパケットが見えない。
【０１４５】
適度に有効なファイアウォールの挙動は、前述のように規則が実施されることを要求する。実際には、多くのファイアウォールは、この規則を「話しかけられる前に話す人は、再び聞かれることはない」と解釈する。そのような挙動は、ピアツーピア通信チャネルを確立しようとする際に深刻な問題を引き起こすことがある。
【０１４６】
前述の実施形態において、状況を改善する幾つかの手順が実施される。最初に、非対称ＮＡＴが通常、新しい宛先に書き込むために任意のポートを開かず、元のポート＋１（或いは、第１と第２の書き込みの間に行われた回数により２、３等）になることが多いことを理解されたい。この実施形態において、非対称ＮＡＴに遭遇したとき、ＲＩＮＧＩＮＧ２メッセージに示されたポートアドレスより上のいくつかの連続するポートが、この可能性に対応するために書き込まれる。
【０１４７】
幾つかの製造業者は、ファイアウォール／ＮＡＴが、一般に、動作を調べセキュリティ制約に従って修正される場合があるｕＰｎＰ（ユニバーサルプラグアンドプレイ）インタフェースを実施することを表明している。この実施形態は、伝送サーバ４１４で実施されたｕＰｎＰインタフェース（図示せず）を含む。
【０１４８】
一部のケースでは、ファイアウォールの実施が厳密なため或いはＮＡＴ３５２と３５８が両方とも非対称であるため、単純に直接ピアツーピア接続を実行することができない。そのような場合、この実施形態は、信頼できる仲介の役割をするローカル伝送サーバ４１４でメッセージを「返送する」ように構成される。これにより、ローカル伝送サーバ４１４が常にローカル非対称ＮＡＴ３５２、３５８に知られているように未知送信者の問題が緩和され、その結果、例えばファイアウォールでの最も厳密な規則でも、そのような間接的擬似ピアツーピア通信が妨げられなくなる。更に、跳ね返されたパケットが、信頼できる仲介の役割をする伝送サーバ４１４によって最小限の分析で且つ必ず記憶なしに転送されるようにすることによって、そのような間接通信チャネルのセキュリティが低下する可能性が低くなる。
【０１４９】
ファイアウォール動作のばかげた（極めて厳しい）解釈に遭遇した場合に、このシステムは、ある方向で真のピアツーピア通信を実施し、他の方向でローカル伝送サーバ４１４で跳ね返るように構成される。この変形例は、安全性の低下が最小になるので行う価値がある。例えば、電子メールを伝送する場合、電子メールが直接送られ、肯定応答が跳ね返されるように構成すると有利である。
【０１５０】
以下に、非対称ＮＡＴ３５２、３５８があるはずであること或いは厳密なファイアウォールが適所にあることをシステム１０が自動的に見つける実際の方法を説明する。ハイレベルの観点から見ると、図１６に関して前に説明したように、ローカル伝送サーバ４１４が、両方のエンドポイント４１２のＵＤＰポートのアドレスを知っているとき、ローカル伝送サーバ４１４は、他方のエンドポイントのアドレスを示すＴＡＬＫＤＩＲＥＣＴメッセージをそれぞれに送信する。エンドポイント４１２は、直接通信することを試み、またタイマー（図示せず）を設定する。パケットを直接受け取った場合、伝送サーバ４１４には、接続が通話中であることが伝えられ、タイマーが停止されそれ以上使用されない。しかしながら、パケットを受け取らずタイマーが作動した（即ち、所定の時間期間が経過した）場合は、ＴＡＬＫＴＨＲＯＵＧＨメッセージが、伝送サーバ４１４に送られ、そこから他のエンドポイント４１２に送られ、指定宛先エンドポイント４１２のローカルサーバ４１４に更に他の通信が直接送られようとしていることを示す。その後で、メッセージは、所望のエンドポイント４１２に対してローカルな伝送サーバ４１４で「跳ね返される」。
【０１５１】
システム１０は、被呼者が呼を受け入れる前にピアツーピア接続を確立し始める。呼が受け入れられない場合は、ピアツーピア接続はすぐに終了される。このシステム１０は、呼が受け入れられたときだけプロセスを開始し、タイムアウト／ＴＡＬＫＴＨＲＯＵＧＨ手順を実施する場合、これにより、例えば音声リンクを確立する際の有害な遅延が生じる可能性がある。これはまた、大部分の呼／電子メール（ユーザがログインした場合）が受け入れられるケースである。
【０１５２】
次に、本発明の第３の実施形態を図１７から図２０に関して説明する。第３の実施形態は、セキュリティに関する問題を除き第２の実施形態と極めて似ている。より具体的には、第３の実施形態は、後述するような頑強なセキュリティシステムにより各ノードに記憶された許可４４６を代用する。
【０１５３】
先行技術のセキュアでない通信システムは使用できず、そのような通信システムは、登録ユーザのセキュリティを損なう好ましくないユーザを得る。既知のセキュアでない製品は、より多くの人がシステムを使用するときに、特性が高められそれにより「人気のある」システム自体を傷つける攻撃者を招くという事実によって、ユーザの数に固有の上限がある。この効果は、制御システムでの負帰還と少し似たものとして働く。
【０１５４】
第３の実施形態は、最初からセキュリティを組み込むことによってこのサイクルを減衰させる。システム１０から攻撃者を完全になくすことはできないが、攻撃者がいることで登録ユーザのシステム１０の可用性が損なわれないようにするために十分に効果的なセキュリティが組み込まれる。攻撃者を完全になくすシステムの設計が、実際には設計者の破綻の原因になることを理解されたい。
【０１５５】
第３の実施形態のセキュリティ要件は、以下の通りである。
要件１：ＮＯＤＥがシステム１０に認証されなければならない。
要件２：ＮＯＤＥを介したＴＳリンクへの通信が機密でなければならない。
要件３：ＣＬＩＥＮＴが互いに認証されなければならない（相互認証）
要件４：ＣＬＩＥＮＴとＣＬＩＥＮＴの間の接続の通信が機密でなければならない。
【０１５６】
セキュリティ要件１と２の適合
以下の用語の多くは、ＲＦＣ１５１０（ケルベロス認証システム）からのものである。ケルベロスは、ユーザ又はホストの識別を検証するために使用される認証メカニズムであり、これは、また、Microsoft Windows Server 2003のサービスに好ましい認証方法である。ケルベロス認証プロトコルは、クライアントとサーバ間又はあるサーバと別のサーバ間にネットワーク接続を確立する前に、これらの間で相互認証する仕組みを提供する。このプロトコルは、クライアントとサーバ間の最初のトランザクションがセキュアでない通信ネットワーク上で行われることを想定する。そのようなセキュアでない環境は、インターネットによって適切に例示することができ、この場合、攻撃者が、クライアントかサーバのどちらかを容易に装うことができ、正当なクライアントとサーバ間の通信を容易に盗聴したり改竄したりすることができる。
【０１５７】
ケルベロス技術は、共有する秘密を伴う認証技術に大きく依存する。基本的な概念は全く単純である。即ち、秘密を２人だけが知っている場合、一方の人は、他方の人が秘密を知っていることを確認することにより他方の人の同一性を検証することができる。パスワードは、秘密鍵暗号法を使用して秘密が維持される。より正確に言うと、パスワードを共有することより、通信パートナは、暗号鍵を共有し、この鍵の知識を使用して互いの同一性を検証する。この技術が機能するためには、共有鍵が対称でなければならず、即ち、単一の鍵で暗号化と解読の両方ができなければならない。一方の側は、ある情報を暗号化することによって鍵の知識を証明し、他方の側はそれを解読することによって鍵の知識を証明する。
【０１５８】
基本原理は、以下のように機能できる認証符号によって実施される。秘密鍵認証を使用する単純なプロトコルは、通信扉の外側にいる人が中に入りたいときに始まる。アクセス権を得るために、その人は、秘密鍵で暗号化された情報の形の認証符号を提示する。認証符号の情報は、プロトコルが実行されるたびに違っていなければならなず、そうでないと、通信を偶然盗み聞きした人が誰でも昔の認証符号を再使用することができてしまう。
【０１５９】
認証符号を受け入れると、扉の番人はその認証符号を解読し、中にあるものから解読が成功したかどうかを知る。解読が成功した場合、門番は、認証符号を提示した人が適正な鍵を持っていることを知る。２人だけが適正な鍵を持っており、門番がその１人であり、従って他の人は、認証符号を提示した人であるはずである。
【０１６０】
扉の外側にいる人が相互認証を望む場合は、少し違いのある同じプロトコルを逆に実行することができる。門番は、元の認証符号から情報の一部を取り出し、それを新しい認証符号で暗号化し、次に扉の外側で待っている人に新しい認証符号を与えることができる。次に、扉の外側にいる人は、門番の認証符号を解読し、結果をオリジナルの認証符号と比較することができる。合致した場合、扉の外側の人は、門番がオリジナルを解読できたことを知り、従って正しい鍵を持っているはずである。
【０１６１】
図１７に、この実施形態でケルベロス技術を使用する方法の基本原理を示す。この場合、サーバ６０２、クライアント６０４、及び鍵配布センター６０６が提供される。クライアント６０４は、サーバ６０２に接続することを望み、最初に、サーバ６０２への有効接続を確立するチケットを獲得するために鍵配布センター（ＫＤＣ）６０６に申し込む。チケットは、実質的に、既にシステム６００が認証したサーバ６０２にクライアント６０４を認証させるために使用される。
【０１６２】
図１８と図１９を参照して次に説明するこの第３の実施形態のセキュリティ方式の詳細な説明では、以下に示す頭文字を使用する。
ＴＳ＝伝送サーバ４１４。
ＮＯＤＥ＝ＣＬＩＥＮＴとＴＳの組み合わせ。単にＣＬＩＥＮＴ又はＴＳと呼ぶこともある。その場合、ＮＯＤＥ６０８に関して説明する特定の役割は減少するが、他の機能は利用可能である。
ＡＳ＝認証サーバ６１０。
ＫＥＹ＝ＮＯＤＥ６０８に割り当てられたパスワードに基づく値。
ＴＧＳ＝チケット交付サーバ６１２
ＲＥＡＬＭ６１４＝ＡＳ６１０を共有するＮＯＤＥ６０８のコミュニティ。
【０１６３】
最初に、幾つかのＮＯＤＥ６０８を含む特定のＲＥＡＬＭ６１４と関連付けられた認証サーバ６１０が使用可能であると仮定する。ＡＳ６１０は、登録された各ＮＯＤＥ６０８ごとの｛ＵＳＥＲＮＡＭＥ，ＰＡＳＳＷＯＲＤ｝ダブレットの相当物をそのローカルデータベース６１６に記憶する。次に、図１９に示したように、ネットワークに接続したいＮＯＤＥ＿Ａ６０８のクライアントが、インターネットブラウザ６１８を使って登録するＫＤＣ６１０のウェブサーバ６２０に接続し、それによりユーザ名「ＵｓｅｒＡ」６２２とパスワード「ｐｗｄＡ」６２４を取得したと仮定する。
【０１６４】
手順の基本的な仕組みを、以下の頭文字を使って説明する。
ＮＯＤＥ＿Ａ＝ユーザ名Ａを持つＮＯＤＥ６０８。
ＴＧＴ＿Ａ＝ＮＯＤＥ＿Ａのチケット交付チケット６２６。
Ｓ＿Ａ＝ＡＳ６１０とＮＯＤＥ＿Ａ６０８間のセッション鍵６２８。
Ｋ＿ＡＢ＝ＮＯＤＥ＿ＡとＮＯＤＥ＿Ｂ間の共有鍵６３０。
ＴＩＣＫＥＴ＿ＡＢ＝ＮＯＤＥ＿ＡがＮＯＤＥ＿Ｂに対するアクセス権を取得できるチケット６３２。
｛Ｘ｝Ｋ＿Ｙ＝鍵Ｋ＿Ｙによって暗号化された値Ｘ。
【０１６５】
次に図１８と図１９を参照すると、認証プロセスの最初で、ＮＯＤＥ＿Ａ６０８が起動し、以下に示すようにシステム６００に認証される。
１．ＮＯＤＥ＿Ａ６０８は、ＴＳ４１４に接続され、ＡＳ＿ＲＥＱ６３４メッセージを、ＮＯＤＥ＿Ａ６０８が属するＲＥＡＬＭ６１４のＡＳ６１０に送信する（一般に、このメッセージは、ＡＳ６１０に接続された状態のＴＳ４１４が見つかるまで階層ネットワークを遡る）。
２．ＡＳ６１０は、セッション鍵Ｓ＿Ａ６２８を生成し、ｐｗｄＡ６２４で共に暗号化されたＴＧＴ＿Ａ６２６とＳ＿Ａ６２８を含むＡＳ＿ＲＥＳＰメッセージ６３６を返す。
【０１６６】
また、ＡＳ６１０は、認証セキュリティを高めるために暗号化されたＴＩＭＥＳＴＡＭＰ（図示せず）を返すこともできる。これは、ＡＳ６１０が、ネットワーク時間プロトコル（ＮＴＰ）又は単純なＮＴＰ接続によって信頼できるソースから時間を受け取り、ＮＯＤＥ６０８が、システム６００の認証を受けるときにＡＳの時間と同期されることを仮定している。ＮＯＤＥ６０８は、ＡＳから送られたＴＩＭＥＳＴＡＭＰをその現行Ｗｉｎ３２チックカウントと関連付け、自分自身のＴＩＭＥＳＴＡＭＰ値を生成する必要があるときは新しい現在時刻を計算しなければならない。
【０１６７】
ＮＯＤＥ＿Ａ６０８が認証された後で、ネットワークに参加するために現在「リンク」しなければならない（即ち、ＶｏＩＰ呼を行ない受けることができる）ＴＳ４１４の名前がネットワークから通知され、またターゲットＴＳ４１４をＮＯＤＥ＿Ｂ６０８と呼ぶと仮定する。タイムスタンプが使用されている場合、手順は以下の通りである。
１．ＴＧＴ＿Ａ６２６とＮＯＤＥ＿Ｂ６０８の名前を含むＴＧＳ＿ＲＥＱメッセージ６３８をＡＳ６１０に送る。
２．ＡＳ６１０は、Ｋ＿ＡＢ６３０（Ｓ＿Ａ６２８で暗号化された）とＴＩＣＫＥＴ＿ＡＢ６３２を含むＴＧＳ＿ＲＥＳＰメッセージ６４０を返す。
３．ＮＯＤＥ＿Ａ６０８は、Ｋ＿ＡＢ６３０の値を抽出し、現在のＴＩＭＥＳＴＡＭＰ値を計算し、認証符号を｛ＴＩＭＥＳＴＡＭＰ｝Ｋ＿ＡＢとしてＮＯＤＥ＿Ｂ６０８に生成する。ＮＯＤＥ＿Ａ６０８は、｛ＴＩＭＥＳＴＡＭＰ｝Ｋ＿ＡＢとＮＯＤＥ＿Ｂ６０８へのＴＩＣＫＥＴ＿ＡＢ６３２を含むＡＰ＿ＲＥＱメッセージ６４２をＮＯＤＥ＿Ｂ６０８に送る。
４．ＮＯＤＥ＿Ａ６０８がリンクすることをＮＯＤＥ＿Ｂ６０８が許可するために、ＮＯＤＥ＿Ｂは、ＴＩＣＫＥＴ＿ＡＢ６３２を解読してＫ＿ＡＢ６３０を抽出し、次に｛ＴＩＭＥＳＴＡＭＰ｝Ｋ＿ＡＢを解読してＴＩＭＥＳＴＡＭＰを検証できなければならない。これが成功したと仮定すると、ＮＯＤＥ＿Ｂ６０８は、ＮＯＤＥ＿Ａ６０８がＮＯＤＥ＿Ｂ６０８を認証することを可能にする｛ＴＩＭＥＳＴＡＭＰ＋１｝Ｋ＿ＡＢを含むＡＰ＿ＲＥＳＰメッセージ６４４を返す。
【０１６８】
熟練した本明細書の対象者には、タイムスタンプを使用しない場合に以上の操作がどのように行われるか容易に明らかであり、従って、タイムスタンプなしに上記の一連のイベントを実行する方法の明示的な説明はこれ以上行わない。
【０１６９】
この時点で、ＮＯＤＥ＿Ａ６０８は、ＮＯＤＥ＿Ｂ６０８を介してネットワークに「リンク」されている（実際には、ＮＯＤＥ＿ＡのＣＬＩＥＮＴ６０４がＮＯＤＥ＿Ｂ６０８のＴＳ４１４のサーバとなる）。
【０１７０】
以上の実施態様は、ケルベロス認証システムの適応されたサブセットに基づいており、基本的なプロトコル、メッセージ及びデータ構造を再使用するが、この実施形態の新しい認証技術をピアツーピア通信の状況で有効に使用できるようにする機能が異なる。
【０１７１】
セキュリティ要件３と４の適合
認証プロセスのこの段階を説明するために以下の頭文字を使用する。
ＤＨ＿ＰＫ＿Ａ＝ＣＬＩＥＮＴ＿Ａのディフィー−ヘルマン公開鍵６４６。
ＤＨ＿ＳＫ＿Ａ＝ＣＬＩＥＮＴ＿Ａのディフィー−ヘルマン秘密鍵６４８。
ＤＨ＿ＰＫ＿Ｂ＝ＣＬＩＥＮＴ＿Ｂのディフィー−ヘルマン公開鍵６５０。
ＤＨ＿ＳＫ＿Ｂ＝ＣＬＩＥＮＴ＿Ｂのディフィー−ヘルマン秘密鍵６５２。
Ｋ＿ＡＣ＝ＮＯＤＥ＿ＡとＮＯＤＥ＿Ｃ間の共有鍵６５４。
【０１７２】
次に図１９を参照すると、ネットワークに現在接続されているＮＯＤＥ＿Ａ６０８内のＣＬＩＥＮＴ＿Ａ６０４が、ＮＯＤＥ＿Ｃ６０８内のＣＬＩＥＮＴ＿Ｃ６０４に電話をかけたいとき、この実施形態は、ＣＬＩＥＮＴ６０４が互いに認証し、それらの間に確立された接続（ピアツーピア接続等）を介したその後の通信が、共有鍵Ｋ＿ＡＣ６５４によって暗号化されることを必要とする。
【０１７３】
ＣＬＩＥＮＴとＣＬＩＥＮＴ間で可能な２つのタイプの認証を検討する。そのような認証の第１のものは、「誘導による認証（Authentication-by-induction）」と言われ、実質上、ＣＬＩＥＮＴ＿Ａ６０４とＣＬＩＥＮＴ＿Ｃ６０４間の接続を確立できる前にＮＯＤＥ＿Ａ６０８とＮＯＤＥ＿Ｃ６０８間にあるはずの認証済みリンクチェーンに乗る。その手順は以下の通りである。
１．ＣＬＩＥＮＴ＿Ａ６０４は、ディフィー＝ヘルマン（ＤＨ）鍵ペアを生成し、ＤＨ＿ＰＫ＿Ａ６４６を含むメッセージをＣＬＩＥＮＴ＿Ｃ６０４に送る。このメッセージは、それらのクライアントを接続する認証済みリンクチェーン６５６を介して送られる（通信チャネル設定プロトコルの一部として）。
２．メッセージを受け取ると、ＣＬＩＥＮＴ＿Ｃ６０４は、そのメッセージが既に認証された発信元から送られたはずであると仮定する（ＣＬＩＥＮＴ＿Ｃ６０４は、その発信元を正式に認証する立場になく、従って、この形の認証の間接的な弱い表現が「誘導による認証」である）。
３．ＣＬＩＥＮＴ＿Ｃ６０４は、ディフィー＝ヘルマン（ＤＨ）鍵ペアを生成し、ＤＨ＿ＰＫ＿Ｂ６５０の値を含むメッセージをＣＬＩＥＮＴ＿Ａ６０４に送る。メッセージは、同じ（異なってもよいが）認証済みリンクチェーン６５６を介してＣＬＩＥＮＴ＿Ａ６０４に送られる。
４．このとき、ＣＬＩＥＮＴ＿Ａ６０４とＣＬＩＥＮＴ＿Ｃ６０４は両方とも、共有鍵Ｋ＿ＡＣ６５４を独立に計算する立場にある。ＤＨ＿ＰＫ＿Ａ６４６又はＤＨ＿ＰＫ＿Ｂ６５０を傍受する側は、Ｋ＿ＡＣ６５４を計算し、ＣＬＩＥＮＴ＿Ａ６０４又はＣＬＩＥＮＴ＿Ｃ６０４に扮する立場にない。
５．ＣＬＩＥＮＴ＿Ａ６０４とＣＬＩＥＮＴ＿Ｃ６０４は、Ｋ＿ＡＣ６５４を使用して、信頼性の高い通信を可能にするために、高度暗号化システム（ＡＥＳ：Advanced Encryption System）の大量の暗号鍵又はその等価物を生成する。
【０１７４】
概して、「誘導による認証」は、真の認証ではなく、むしろ次のように要約される。
「私は、認証済みの相手Ｘ（相手の名前がＸ）と機密通話を確立したが、私にはこれを検証する手段がない」（ＶｏＩＰ通話は、例えば電子メールのよりも心配が少ないことは明らかである）。
【０１７５】
また、ＡＳ６１０を使用してＣＬＩＥＮＴ＿Ａ６０４とＣＬＩＥＮＴ＿Ｃ６０４が互いを認証できるＴＩＣＫＥＴ６３２を生成することができるが、通信チャネル設定の一部としてこの操作を行う際の一時的オーバヘッドが大きすぎる。従って、「誘導による認証」は、この代案より優先的に使用される。
【０１７６】
第２の可能な認証のタイプは、Ａｍｔｅｕｓシステム６００に外部から提供されるが、Ａｍｔｅｕｓシステム６００が相互運用しなければならないものである。外部から提供される公開鍵インフラストラクチャ（ＰＫＩ）が利用可能であり、またＣＬＩＥＮＴが公開鍵使用可能（ＰＫＥ）であると仮定する。そのような状況において、前述のプロトコルは、ＣＬＩＥＮＴ＿Ａ６０４とＣＬＩＥＮＴ＿Ｃ６０４間で送られたメッセージにデジタル署名するＲＳＡ暗号アルゴリズムに拡張され、その結果、強力な認証が利用可能になる（ＰＫＩは当該技術分野において十分に理解されているので、ＰＫＩの更に詳しい考察は本明細書で行わない）。
【０１７７】
この実施形態は、あまりセキュアでなくより実際的な「誘導による認証」手法を使用する。
【０１７８】
認証サーバの複製
先行技術のケルベロスシステムにおいて、認証用のセキュリティデータベースの管理はできるだけ単純に維持され、これと同じ原理がこの実施形態に適用される。この実施形態の特徴は、以下の通りである。
−静的データだけを維持し、セッション又は呼関連データ（即ち、動的データ）の記憶を回避しようとする。
−アカウントを作成し、アカウント詳細を修正し、アカウントを削除するために読み出し／書き込みのマスタコピーを維持する。
−マスターコピーを幾つかの読み出し専用コピーに定期的に複製する。
【０１７９】
クロスレルム認証
この実施形態では、複数のＲＥＡＬＭＳ６１４があってよく、これらのＲＥＡＬＭＳ６１４は、管理システム４０４のために階層的に組織される。この点で、異なるＲＥＡＬＭＳ６１４内のＮＯＤＥ６０８間の認証（いわゆる「クロスレルム認証（cross-realm authentication）」と呼ばれる）が実行される。
【０１８０】
クロスレルム認証は、事実上、前述の既存のＴＧＳ（チケット交付サービス）システム６００に乗る。ＲＥＡＬＭ＿Ａ６１４内のＮＯＤＥ＿Ａ６０８が、ＲＥＡＬＭ＿Ｂ６１４内のＮＯＤＥ＿Ｂ６０８にリンクしたい場合は、ＴＧＳ＿Ｂ６３８、３４０をＲＥＡＬＭ＿Ａ６０８用のＡＳ６１０に登録する必要がある。このように、ＮＯＤＥ＿Ａ６０８は、段階６３４で、単にＴＧＳ＿ＡからＴＧＴ６２６を要求し、このＴＧＴ６２６は、ＮＯＤＥ＿Ｂ６０８に送るＴＩＣＫＥＴ６３２を得て新しいリンクを達成するために、ＴＧＳ＿Ｂに送られる。
【０１８１】
レルム６１４が階層的に編成されている場合でも（図２１を参照）、通常、２つの通信レルム６１４が、一方向だけの登録ではなく、互いに登録されなければならない。
【０１８２】
以下で、クロスレルム認証及び許可についてより詳細に説明する。しかしながら、その前に、図２０ａと図２０ｂを参照して、実施形態で使用されるＮＯＤＥセキュリティ動作の概要を説明する。
【０１８３】
一般に、ＮＯＤＥ６０８はサブシステムの集合であり、その関連するサブセットを図２０ａと図２０ｂに示す。ＮＯＤＥ６０８に対する接続又はリンクが行なわれる。ここで、一時的でＮＯＤＥ−ＮＯＤＥ間の暗号化を必要としない単純な接続と、より永久的な構成で、関連付けられた暗号鍵６３０、６５４を有するリンクとを区別する。
【０１８４】
図２０ａと図２０ｂは、２つのＮＯＤＥ６０８を示し、これらのＮＯＤＥ６８は両方とも同一のサブシステムを含む（即ち、これらのノードは、同じ実行可能なサブシステムの異なる例である）。親ＮＯＤＥ６０８（図２０ａ）は、データクライアント（ＤＣ）６５６がデータサーバ（ＤＳ）６１２に接続され且つＫＤＣ６１０がアクティブであるという点で主ＮＯＤＥである。子ＮＯＤＥ６０８（図２０ｂ）は、ＤＳに接続されておらず、従ってＤＣ６５６とＫＤＣ６１０は存在するがアクティブではない。主ＮＯＤＥ６０８は、そのセキュリティサービス６６０を使用して、その子から受け取った全てのセキュリティ要求を処理する。
【０１８５】
ＣＬＩＥＮＴ６０４とＴＳ４１４は、ハンドル（図示せず）を使用してＳＳ６６０と通信する。ハンドルは、親ＮＯＤＥ６０８へのＣＬＩＥＮＴ接続／リンク６６２か、子ＮＯＤＥ６０８からのＴＳ接続／リンク６６４かに関係なく、各接続又はリンク（即ち、それぞれのアクティブなサーバストリーム）と関連付けられる。
【０１８６】
ＮＯＤＥ６０８が起動したとき、ＤＣ６５６は、ＤＳ６５８に接続しログインすることを試み、成功した場合はＫＤＣ６１０も初期化される。後で分かるように、ＣＬＩＥＮＴ６０４が、同じＲＥＡＬＭ６１４内の別のＮＯＤＥ６０８にリンクできないので、主ＮＯＤＥ６０８をそれ自体のＫＤＣ６１０に対して認証する必要はないことに注意されたい。
【０１８７】
ほとんど全ての場合において、ＣＬＩＥＮＴサブシステムは、親ＮＯＤＥ６０８に対するリンク６６２を確立しようとする（このことは、主ＮＯＤＥ６０８にも当てはまり、その場合、リンクは、後で示すようにクロスレルムである）。ＳＳ６６０は、親ＮＯＤＥ６０８に送るセキュリティ要求を構築し更に親ＮＯＤＥ６０８から受け取ったセキュリティ応答を処理するように指示される。親ＮＯＤＥ６０８に対するリンクが確立された後で、ＣＬＩＥＮＴ６０４は、リンクメッセージを暗号化するか又は解読するためにＳＳ６６０に呼を送ることができる。ＳＳ６６０に適切な呼が行われずにＣＬＩＥＮＴ６０４がセキュリティメッセージを受け取った場合、即ちこのＮＯＤＥ６０８が、メッセージのターゲットでない場合、ＣＬＩＥＮＴ６０４は、選択した宛先ＮＯＤＥ６０８にメッセージが達して消費されるまで、メッセージをＴＳ４１４に送って階層を更に下がる。
【０１８８】
子ＮＯＤＥ６０８は、メッセージをＴＳ４１４に通信する。ＴＳ４１４が、メッセージをセキュリティメッセージであると識別した場合は、ＳＳ６６０への適切な呼が行われ、すなわち、呼が失敗した場合或いはターゲットが階層を更に上った場合は、ＴＳ４１４は、親ＮＯＤＥ６０８に渡すためにセキュリティメッセージをＣＬＩＥＮＴ６０４に送る。
【０１８９】
アクティブな（ＤＳ６５８に接続された）ＫＤＣ６１０がＮＯＤＥ６０８で使用可能な場合は、このＫＤＣ６１０が主ＮＯＤＥ６０８なので、ＴＳ４１４で子から受け取ったセキュリティ要求は、このＮＯＤＥ６０８によって満たされなければならず、それより高くは送られない。
【０１９０】
注：最も単純な実施態様は、ＣＬＩＥＮＴ６０４がリンク構成の管理に幾つかの状態を割り当てることである。ＳＳ６６０は、ＣＬＩＥＮＴ６０４やＴＳ４１４に呼を返さない。サブシステムが緻密に一体化されており、その結果、ＣＬＩＥＮＴ６０４とＴＳ４１４が、セキュリティ要求及び応答を管理するために状態を維持しなければならないと仮定する。
【０１９１】
ＲＥＡＬＭ６１４は、前述のように、（Ｗｉｎｄｏｗｓ  Ｄｏｍａｉｎと類似の）１組の登録ユーザであり、この場合、各ユーザは、そのＲＥＡＬＭ６１４に登録され（一般に、ウェブサーバ６２０によって）、そのＲＥＡＬＭ６１４のＤＳ６１２上に維持されたアカウント（図示せず）を有する。
【０１９２】
次に図２１を参照すると、ＤＳ（データサーバ）６１２は、特定のＲＥＡＬＭ６１４の全ての認証データを保持し、このデータは、作成されるＲＥＡＬＭ６１４の外には広がらない。主ＮＯＤＥ６６６は、実質上、ＲＥＡＬＭ６１４のセキュリティの根本であり、セキュリティ要求は、階層を上に広がることを許可されない。
【０１９３】
動的データが階層を上下に伝わることができるようにするために、あるＲＥＡＬＭ６１４内の子ＮＯＤＥ６６８を「より高い」ＲＥＡＬＭ６１４内の適切な親ＮＯＤＥ６７０に参加させる何らかの手段が必要であり、木トポロジーの性質は、そのようなリンク６７２を１つだけ必要とすることである。図２０と図２１は、この実施形態によって提供される解決策を示し、ＲＥＡＬＭ Ａ６１４の主ＮＯＤＥ６６６は、「より高い」ＲＥＡＬＭ Ｂ６１４内の親ＮＯＤＥ６７０にリンクすることが許可される。このリンク６７２は、ＲＥＡＬＭ Ａ６１４の主６６６をＲＥＡＬＭ Ｂ６１４に対して認証しリンク６７２を作成できるようにＤＳ Ｂ６１２内にアカウントが設定されるので可能である。
【０１９４】
リンク６７２がクロスレルムなので、ここで、呼データがＲＥＡＬＭ Ａ６１４からＲＥＡＬＭ Ｂ６１４に伝わりＲＥＡＬＭ Ｃ６１４まで下りることができ、ＮＯＤＥ Ｘ６０８は、ＮＯＤＥ Ｙ６０８に対してクロスレルムＶｏＩＰ通話６７４を行うことができる。
【０１９５】
次に、クロスレルムリンクがどのように達成されるかを例示する詳細なシナリオを説明する。
【０１９６】
主ＮＯＤＥ：起動
データサーバ（ＤＳ）６１２が既に動作していると仮定する。主ＮＯＤＥ６６６は、ＤＳ６１２に対してローカルに起動し、一般に、ＤＳ６１２にログインしＫＤＣ用の鍵６２８を生成することを可能にするコマンド引き数が供給される（副ＮＯＤＥは、同じ引き数で起動される）。よりレベルの高いＲＥＡＬＭ６１４のアカウントにログインするために、ＧＵＩによって任意の｛ユーザ名，パスワード｝が供給される。
【０１９７】
１．ブートストラップシーケンスによって、ＤＣ（データクライアント）６５６がローカルＤＳ６１２にログインするように指示される。
２．ブートストラップシーケンスは、手順procedureSecurityService::Initialise()を呼び出す。ＫＤＣ６１０は、その鍵を生成し、ＤＣ６５６とハンドシェイクを確立する。
３．ユーザは、ＣＬＩＥＮＴ６０４が（別のＲＥＡＬＭ６１４内の）親ＮＯＤＥ６７０にリンクできるように、｛ユーザ名，パスワード｝を入力する。
４．ＣＬＩＥＮＴ６０４は、手順SecurityService::CreateSecurityContext()によって親ノード６５６に対する新しい接続のハンドルを獲得する。
５．ＣＬＩＥＮＴ６０４は、ＡＳ＿ＲＥＱメッセージ６３４を構築するために手順SecurityService::BuildAsReq()を呼び出し、次にＡＳ＿ＲＥＱメッセージ６３４を親ＮＯＤＥ６７０に送る。
６．ＣＬＩＥＮＴ６０４は、ＡＳ＿ＲＥＰメッセージ６３６を受け取り、それを手順SecurityService::ProcessAsRep()に渡す。
７．ＣＬＩＥＮＴ６０４は、接続したいＮＯＤＥのＩＤで手順SecurityService::BuildTgsReq()を呼び出し、従ってＳＳ（セキュリティサービス）６６０は、適切なＴＧＳ＿ＲＥＱメッセージ６３８を構築することができる。ＴＧＳ＿ＲＥＱメッセージ６３８は、親ＮＯＤＥ６７０に送られる。
８．ＣＬＩＥＮＴ６０４は、ＴＧＳ＿ＲＥＰメッセージ６４０を受け取り、それを手順SecurityService::ProcessTgsRep()に渡す。
９．この時点で、ＣＬＩＥＮＴ６０４は、既存のリンク接続状態を促進するか、別の親ＮＯＤＥ６７０への再接続を促進する（しかし、いずれの場合も、ターゲットＮＯＤＥは、手順BuildTgsReq()呼で指定されたＮＯＤＥでなければならない）。ＣＬＩＥＮＴ６０４は、手順SecurityService::BuildApReq()を呼び出してＡＰ＿ＲＥＱメッセージ６４２を構成し、次にＣＬＩＥＮＴ６０４は、それを親ＮＯＤＥ６７０に送る。
１０．ＣＬＩＥＮＴ６０４は、ＡＰ＿ＲＥＰメッセージ６４４を受け取り、それを手順SecurityService::ProcessApRes()に渡す。この呼が首尾良く完了した際、ＳＳ６６０には、親ＮＯＤＥ６７０へのリンク６７２上の暗号化／解読操作を支援するために必要なセキュリティコンテキストがあるはずである。
【０１９８】
非主ＮＯＤＥ：起動
１．ＮＯＤＥ６０８にはＤＳログイン引き数が供給されず、従って、ブートストラップシーケンスは、ローカルＤＳ６１２にログインするようにＤＣ６５６に指示しない。
２．ブートストラップシーケンスは、手順SecurityService::Initialise()を呼び出す。ＫＤＣ６１０には鍵を生成するためのパラメータが供給されず、ＤＣ６５６は、ＫＤＣ６１０がＤＳ６１２に接続されないことを示す。
３．ユーザは｛ユーザ名，パスワード｝を入力して、ＣＬＩＥＮＴ６０４が同じＲＥＡＬＭ６１４内の親ＮＯＤＥにリンクできるようにする（リンクは主ＮＯＤＥ６６６に対するものでそうでなくてもよい）。
４．ＣＬＩＥＮＴ６０４は、手順SecurityService::CreateSecurityContext()によって親ノードに対する新しい接続のハンドルを取得する。
５．ＣＬＩＥＮＴ６０４は、手順SecurityService::BuildAsReq()を呼び出してＡＳ＿ＲＥＱメッセージ６３４と構築し、ＡＳ＿ＲＥＱメッセージ６３４を親ＮＯＤＥに送る。
６．ＣＬＩＥＮＴ６０４は、ＡＳ＿ＲＥＰメッセージ６３６を受け取り、それを手順SecurityService::ProcessAsRep()に渡す。
７．ＣＬＩＥＮＴ６０４は、接続したいＮＯＤＥ６０８のＩＤで手順SecurityService::BuildTgsReq()を呼び出し、従ってＳＳ６６０は、適切なＴＧＳ＿ＲＥＱメッセージ６３８を構築することができる。ＴＧＳ＿ＲＥＱメッセージ６３８が、親ＮＯＤＥに送られる。
８．ＣＬＩＥＮＴ６０４は、ＴＧＳ＿ＲＥＰメッセージ６４０を受け取り、それを手順SecurityService::ProcessTgsRep()に渡す。
９．この時点で、ＣＬＩＥＮＴ６０４は、既存リンク接続状態或いは別の親ＮＯＤＥへの再接続を促進する（しかし、いずれの場合も、ターゲットＮＯＤＥは、手順BuildTgsReq()呼で指定されたＮＯＤＥ６０８でなければならない）。ＣＬＩＥＮＴは、手順SecurityService::BuildApReq()を呼び出して、ＣＬＩＥＮＴ６０４が親ＮＯＤＥに送るＡＰ＿ＲＥＱメッセージ６４２を構築する。
１０．ＣＬＩＥＮＴ６０４は、ＡＰ＿ＲＥＰメッセージ６４４を受け取り、それを手順SecurityService::ProcessApRes()に渡す。この呼び出しが首尾良く完了した時点で、ＳＳ６６０には、親ＮＯＤＥへのリンク上の暗号化／解読操作を支援するのに必要なセキュリティコンテキストがあるはずである。
【０１９９】
主ＮＯＤＥ：子ＮＯＤＥからＡＳ＿ＲＥＱ又はＴＧＳ＿ＲＥＱ要求を受け取る
主ＮＯＤＥ６６６が初期化され、セキュリティ要求を受け入れることができるＫＤＣ６１０を有すると仮定する。
【０２００】
１．ＴＳ４１４は、子ＮＯＤＥ６６８からＡＳ＿ＲＥＱメッセージ６３４を受け取る。接続／リンクがセキュリティコンテキストを有する場合は、メッセージを解読するために手順SecurityService::DecryptLinkData()が呼び出される。
２．ＴＳ４１４は、ＡＳ＿ＲＥＱメッセージ６３４を手順SecurityService::ProcessAsReq()に渡す。要求を満たすために、ＫＤＣ６１０は、ＡＳ＿ＲＥＱメッセージ６３４からユーザ名を抽出し、そのユーザ名を使って（ＤＣ６５６により）ＤＳ６１２内に保持された（ハッシュされた）パスワードを要求する。
３．これが成功した場合、手順SecurityService::ProcessAsReq()はＡＳ＿ＲＥＰメッセージ６３６を返す．（注：ＳＳ６６０が要求を処理しているとき、セキュリティコンテキストは不要である。この点は、ＳＳ６６０が応答を処理しているときと異なる）。
４．ＴＳ４１４は、ＡＳ＿ＲＥＰメッセージ６３６を、ＡＳ＿ＲＥＱメッセージ６３４を送った子ＮＯＤＥ６６８に送る。
【０２０１】
主ＮＯＤＥ６６６がＴＧＳ＿ＲＥＱメッセージ６３８を受け取った場合は、（リンクされるＮＯＤＥ６０８の（ハッシュされた）パスワードをＤＳ６１２が要求すること以外）同じ手順に従う。
【０２０２】
非主ＮＯＤＥ：子ＮＯＤＥからＡＳ＿ＲＥＱ又はＴＧＳ＿ＲＥＱを受け取る
１．ＴＳ４１４は、子ＮＯＤＥ６６８からＡＳ＿ＲＥＱメッセージ６３４を受け取る。接続／リンクが次にセキュリティコンテキストを有する場合は、メッセージ６３４を解読するために手順SecurityService::DecryptLinkData()が呼び出される。
２．ＴＳ４１４は、ＡＳ＿ＲＥＱメッセージ６３４を手順SecurityService::ProcessAsRe()に渡し、この手順は、アクティブなＫＤＣ６１０が利用できないことを示すための適切なエラーコードを返す。
３．ＴＳ４１４は、親ＮＯＤＥ６７０に渡すＣＬＩＥＮＴ６０４にＡＳ＿ＲＥＰメッセージ６３６を送る。
【０２０３】
主又は非主ＮＯＤＥ：ＡＰ＿ＲＥＱを受け取る
ＡＰ＿ＲＥＱメッセージ６４２を受け取るＮＯＤＥ６０８はどれも、首尾良くそのメッセージをローカルに処理するか、或いはエラーメッセージを返さなければならず、そのメッセージを渡すことはできない。
【０２０４】
１．ＴＳ４１４は、子ＮＯＤＥ６６８からＡＰ＿ＲＥＱメッセージ６４２を受け取る。既存のセキュリティコンテキスト、従ってリンクは、この接続に利用できないはずであり、従ってメッセージを解読する必要はない。
２．ＴＳ４１４は、ＡＰ＿ＲＥＱメッセージ６４２を手順ＳecurityService:: ProcessApReq()に渡し、この手順は、そのローカルＮＯＤＥパスワード（ＫＤＣ６１０ではなく）を使用してメッセージ６４２を処理し、返すための適切なＡＰ＿ＲＥＰメッセージ６４４を生成する。手順SecurityService::ProcessAsReq()が成功した場合は、完全なセキュリティコンテキストが確立され、子ＮＯＤＥ６６８に対する接続は、リンク促進状態である。
３．ＴＳ４１４は、子ＮＯＤＥ６６８にＡＰ＿ＲＥＰメッセージ６４４を返す。
【０２０５】
主又は非主ＮＯＤＥ：親ＮＯＤＥからＡＳ＿ＲＥＰ又はＴＧＳ＿ＲＥＰを受け取る
主ＮＯＤＥ６６６内のＣＬＩＥＮＴ６０４が、ＡＳ＿ＲＥＰメッセージ６３６又はＴＧＳ＿ＲＥＰメッセージ６４０を受け取る場合、主ＮＯＤＥ６６６は、オリジナルＡＳ＿ＲＥＱメッセージ６３４又はＴＧＳ＿ＲＥＱメッセージ６３８の発信元でなければならず、これについては、起動するケースを既に前に検討した（既存のセキュリティコンテキストがあってはならない）。
【０２０６】
ＡＳ＿ＲＥＰメッセージ６３６又はＴＧＳ＿ＲＥＰメッセージ６４０を受け取るＮＯＤＥ６０８が主ＮＯＤＥ６６６でない場合は、要求は、適切な子ＮＯＤＥ６６８に下げるためにＴＳ４１４に送られる。この場合、親ＮＯＤＥ６７０へのリンク６７２のセキュリティコンテキストがなければならず、受信したメッセージを解読するために手順SecurityService::DecryptLinkData()が呼び出される。子ＮＯＤＥ６６８まで下がるリンク６７２には、セキュリティコンテキストがあってもなくてもよい（このＮＯＤＥ６０８にリンクするために、子ＮＯＤＥ６６８が、ＡＳ＿ＲＥＱ６３４とＴＧＳ＿ＲＥＱメッセージ６３８を上の高いレベルのＫＤＣ６１０に送ってもよい）。
【０２０７】
主又は非主ＮＯＤＥ：親ＮＯＤＥからＡＰ＿ＲＥＰを受け取る
これについては、起動のケースに関しては既に説明した。
【０２０８】
以上の説明が、SecurityService::DecryptLinkData()等の幾つかの手順を参照しているが、これらの手順の詳細は、これらの手順の機能が所定の状況および前述の機能を実施するための比較的重要なことではなく、従ってこの詳細は、熟練した本明細書の対象者の技巧と知識の一部にであることを理解されたい。
【０２０９】
以上の実施形態は、登録ユーザの最新状態をオンラインで送信するプッシュメカニズムを使用して説明した。しかしながら、代替の実施形態において、これは、電子メールサーバが、電子メールを送る人を識別し、次にＤＳからその人の状態情報を要求するプルメカニズムによるものでもよい。プルメカニズムの利点は、こデータサーバの伝送オーバヘッドが最小になることである。しかしながら、プッシュメカニズムの利点は、電子メールサーバに使用し易いことである。
【０２１０】
本発明が、前述の特定の実施形態に限定されないことを理解されたい。例えば、送信される電子メールメッセージを、別々に暗号化された複数の部分及び各部分に分割することができる。次に、各部分をそれぞれの伝送サーバ機構に別々に送ることができる。各部分は、宛先に別々に送られ、指定受信者が解読し再構築することができる。これの利点は、１通の電子メールメッセージを傍受し解読を成功してもメッセージが開示されないことである。これは、通信のセキュリティを改善する極めて頑強な方法である。一般に、電子メールのテキストをサンプリングして、送られたメッセージの一部分を得ることができ、例えば５つのＴＳＭを使用し、電子メールテキストの５番目ごとの文字をサンプリングして５つの電子メールテキストの内の１つを作成することができる。他の電子メールメッセージも、５番目ごとの文字でサンプリングされるが、その電子メールメッセージはそれぞれ、最初の電子メールメッセージと異なるオフセットを有することになる。
【０２１１】
本発明は、また、有線ネットワークを使用せずに、無線通信ネットワーク（ＷＩＦＩを使用するネットワーク等）に適用可能であることを理解されたい。また、このピアツーピア通信システムにおける発信元及び宛先の通信装置として、コンピュータではなく、ＰＤＡ（携帯情報端末）と移動電話を使用することもできる。
【０２１２】
最後に、熟練した本明細書の対象者は、ＰＫＩではない他の暗号化技術を使用することができることを理解するであろう。
【図面の簡単な説明】
【０２１３】
【図１】本発明の例示的な実施形態によるシステムの概略ブロック図である。
【図２】２人のユーザＢｏｂとＡｌｉｃｅの間のピアツーピア通信を可能にするために図１のシステムをどのように使用できるかの例を示す概略図である。
【図３】図１の個人電子メールサーバの全体的な操作方法を示すブロック図である。
【図４】図３の方法のConnect from Clientサブルーチンのブロック図である。
【図５】図３の方法のMessage Receiveサブルーチンのブロック図である。
【図６】図３の方法のMessage Waiting To Sendサブルーチンのブロック図である。
【図７】指定受信者の固有アドレスを決定するための伝送サーバ機構とメールサーバ間の対話を示す流れ図である。
【図８】様々なエンティティによるシステムの様々な使用法を示す概略図である。
【図９ａ】指定受信者の固有ＩＰアドレスを決定する際にＴＳＭによって実行される調査を示す概略ブロック図である。
【図９ｂ】指定受信者の固有ＩＰアドレスを決定する際にＴＳＭによって実行される調査を示す概略ブロック図である。
【図９ｃ】指定受信者の固有ＩＰアドレスを決定する際にＴＳＭによって実行される調査を示す概略ブロック図である。
【図９ｄ】指定受信者の固有ＩＰアドレスを決定する際にＴＳＭによって実行される調査を示す概略ブロック図である。
【図９ｅ】指定受信者の固有ＩＰアドレスを決定する際にＴＳＭによって実行される調査を示す概略ブロック図である。
【図９ｆ】指定受信者の固有ＩＰアドレスを決定する際にＴＳＭによって実行される調査を示す概略ブロック図である。
【図９ｇ】図９ａから図９ｆで行った調査を対称ＮＡＴのケースと非対称ＮＡＴのケースにどのように適用できるかを示す図である。
【図９ｈ】図９ａから図９ｆで行った調査を対称ＮＡＴのケースと非対称ＮＡＴのケースにどのように適用できるかを示す図である。
【図９ｉ】図９ａから図９ｆで行った調査を対称ＮＡＴのケースと非対称ＮＡＴのケースにどのように適用できるかを示す図である。
【図１０】本発明の第２の実施形態の全体的な機能木構造を示す概略ブロック図である。
【図１１】図１０の木構造の管理レベルの階層的性質を示す概略ブロック図である。
【図１２】図１０の木構造の伝送サーバ層の階層的性質を示す概略ブロック図である。
【図１３】図１２の伝送サーバ層の一般的伝送サーバの機能要素を示す概略ブロック図である。
【図１４】図１０の管理層に対する新しい接続のロードバランシングのプロセスを示す流れ図である。
【図１５ａ】図１０の第２の実施形態のネットワークを使用してピアツーピア接続を確立する第１段階を示す流れ図である。
【図１５ｂ】図１０の第２の実施形態のネットワークを使用してピアツーピア接続を確立する第１段階を示す流れ図である。
【図１５ｃ】図１０の第２の実施形態のネットワークを使用してピアツーピア接続を確立する第１段階を示す流れ図である。
【図１６】図１０の第２の実施形態のネットワークを使用してピアツーピア接続を確立する第２段階を示す流れ図。
【図１７】本発明の第３の実施形態においてケルベロス技術の原理をどのように適用するかを示す概略ブロック図である。
【図１８】ネットワークに接続しようとする際の第３の実施形態の主な段階を示す構成図である。
【図１９】ネットワークによるセキュリティの視点から中央データサーバに登録しその後でピアツーピア通信をどのように支援するかの詳細を示す概略ブロック図である。
【図２０ａ】図１９の階層ネットワークの親ノードの概略ブロック図である。
【図２０ｂ】図１９の階層ネットワークの子ノードの概略ブロック図である。
【図２１】ユーザコンピュータＸとＹの間でピアツーピア通話を実現する際にクロスレルムリンクがどのように達成されるかを示す概略ブロック図である。
【図１】
2008508573.tif 000003
【図２】
2008508573.tif 000004
【図３】
2008508573.tif 000005
【図４】
2008508573.tif 000006
【図５】
2008508573.tif 000007
【図６】
2008508573.tif 000008
【図７】
2008508573.tif 000009
【図８】
2008508573.tif 000010
【図９ａ】
2008508573.tif 000011
【図９ｂ】
2008508573.tif 000012
【図９ｃ】
2008508573.tif 000013
【図９ｄ】
2008508573.tif 000014
【図９ｅ】
2008508573.tif 000015
【図９ｆ】
2008508573.tif 000016
【図９ｇ】
2008508573.tif 000017
【図９ｈ】
2008508573.tif 000018
【図９ｉ】
2008508573.tif 000019
【図１０】
2008508573.tif 000020
【図１１】
2008508573.tif 000021
【図１２】
2008508573.tif 000022
【図１３】
2008508573.tif 000023
【図１４】
2008508573.tif 000024
【図１５ａ】
2008508573.tif 000025
【図１５ｂ】
2008508573.tif 000026
【図１５ｃ】
2008508573.tif 000027
【図１６】
2008508573.tif 000028
【図１７】
2008508573.tif 000029
【図１８】
2008508573.tif 000030
【図１９】
2008508573.tif 000031
【図２０ａ】
2008508573.tif 000032
【図２０ｂ】
2008508573.tif 000033
【図２１】
2008508573.tif 000034
【国際調査報告】
2008508573.tif 000035
2008508573.tif 000036
2008508573.tif 000037
2008508573.tif 000038
2008508573.tif 000039
2008508573.tif 000040