セキュア通信に関連する改良
データ通信媒体を介して第1のリモート側コンピュータと第2のリモート側コンピュータの間で電子メール通信等のセキュアなピアツーピアデータ通信を行う方法を説明する。この方法は、各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、第1のリモート側コンピュータにおいてデータ通信を生成する段階と、第2のリモート側コンピュータの現在の接続状態を確認する段階と、第2のリモート側コンピュータの接続状態が、現在第2のリモート側コンピュータがデータ通信媒体に接続されていることを示しているときだけ、データ通信を途中で記憶せずに第1のリモート側コンピュータから直接第2のリモート側コンピュータにデータ通信を直接送る段階とを含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュア通信に関する改良に関し、より詳細にはセキュアなピアツーピア電子メール及びデータ通信ならびにボイスオーバーアイピー(Voice over IP)に関するがこれらに限定されない。本発明の更に他の様相は、通信ネットワークを保護し且つそのIPアドレス指定範囲を拡大するためにネットワークアドレス変換器(NAT)が提供されるときでも直接ピアツーピア通信を支援する方法を対象とする。本発明は、また、係る通信システムと係る通信システムを使用するネットワークにおいて極めて高いレベルのセキュリティを実現することにも適用される。
【背景技術】
【0002】
間接通信が望ましいときに通信ネットワークを介してメッセージを伝送する様々な方法がある。しかしながら、メッセージのコピーを記憶しそれをハッカーが読み取ることができる状態で本質的にセキュアでないため、この形のメッセージ送信と関連した固有の問題がある。WO03/014955A1に記載されたそのような問題の幾つかは、ピアツーピア通信を使用することにより対処されている。しかしながら、以前に提案され使用された解決策の主な問題は、そのような通信の設定の複雑さである。この先行技術の文書に提示された解決策は、通信を容易にするために相変わらず中央サーバの働きを必要とするため、本質的にセキュアでなく煩雑である。これにより、プロセス全体が面倒なものになりセキュリティ侵害に弱くなる。
【0003】
通信プロセスの間に記憶される電子メールのセキュリティを高める暗号化技術が知られている。しかしながら、暗号化技術は、完全にセキュアとは言えず、従ってハッキング技術の高度化により、本質的に実行可能な代案を提供しない。
【0004】
NATは、複数のコンピュータが、インターネットへの接続等の通信にアドレス空間を共用できるようにするために使用される装置である。NATには、平均的PCユーザの能力をはるかに超える複雑な機構がないと、ピアツーピア通信がNATの背後で正常に機能しないという欠点がある。ピアツーピア通信の状況におけるNATと関連する問題は、米国特許出願2004/0064584 A1に記載されている。
【発明の開示】
【課題を解決するための手段】
【0005】
前述のシステムを改良することが望まれており、より詳細にはよりセキュアなシステムが必要である。また、管理がより容易でユーザがより使い易いシステムを提供すること望まれている。特に、ピアツーピア通信を容易するためにユーザが中央サーバにログオンする必要がない通信システム、或いはピアツーピア通信の間ノードでのメッセージの一時的記憶さえ必要とする通信システムが望まれている。従って、理想的には「純粋な」ピアツーピア通信システムが必要とされる。
【0006】
本発明の一様相は、最もセキュアなピアツーピア電子メール通信が、例えば、セキュアでない環境、即ち送信元や宛先以外の通信経路内の場所にメッセージを記憶する必要がないものであるという認識にある。この場合、電子メールが送信されているときに、ハッカーが電子メールを読み取る可能性はほんのわずかである。例えばPKI(公開鍵インフラストラクチャ)を使って送信用の電子メールを暗号化することによって、送信中のハッキングの危険を最小にすることができる。
【0007】
より具体的には、本発明の一様相によれば、第1のリモート側コンピュータと第2のリモート側コンピュータの間でデータ通信媒体を介して電子メール通信等のセキュアなピアツーピアデータ通信を実行する方法であって、各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、第1のリモート側コンピュータにおいてデータ通信を生成する段階と、第2のリモート側コンピュータの現在の接続状態を確認する段階と、第2のリモート側コンピュータの接続状態からデータ通信媒体に現在接続されることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送信する段階とを含む方法が提供される。
【0008】
「記憶(storage)」という語は、本明細書で使用されるとき、完全なメッセージの記憶を指すことを理解されたい。そのような記憶は、無許可の第三者がメッセージの完全なコピーを不法に得る可能性を提供することになる。通信プロトコルは、多くの場合、例えばパケットに分割されるメッセージなどのメッセージの一部分の何らかの一時記憶を含む。メッセージの一部分のそのような一時的且つ部分的な記憶は、送信中のメッセージの完全なコピーを第三者が得ることをできなくするので、本発明のこの様相により許容可能である。
【0009】
従って、本発明は、送信元から宛先までの途中に完全なデータメッセージの非セキュアな記憶がないため、先行技術より優れた著しい改善を提供する。より正確に言うと、宛先がオンラインでない場合でも、宛先によってピアツーピア通信チャネルが確立されるまで、メッセージが常に送信元にセキュアに一時的に記憶され、その結果、データメッセージのセキュアでない記憶を途中でする必要がなくなる。
【0010】
本発明は、ユーザ名とそのIPアドレスの中央レポジトリがあるシステムで実施される。しかしながら、中央レポジトリは、実際のピアツーピア通信自体には使用されず、むしろ送信者の場所に提供された通信手段を更新する働きをする。ユーザは、中央レポジトリに登録され、ユーザ固有のIPアドレスの名前が割り当てられる。次に、登録されたユーザは、ピアツーピア通信を容易にする個人用通信サーバを自分のコンピュータにダウンロードしインストールする。登録ユーザが、個人用通信サーバを使用することにより決定されるようにオンラインになると、そのことが中央レポジトリに通知され、ユーザの状態をオフラインからオンラインに変化させることができる。この状態の変化は、プッシュメカニズムによって他の全てのユーザに通信することができ、その結果、受信者と送信者の両方がその瞬間に通信を送受信できるはずであるという情報により、既存のオンラインユーザと、接続されたばかりのユーザとの間で実行しなければならないピアツーピア通信を極めてセキュアに行うことができる。
【0011】
更に、前述のシステムには、メッセージ送信機能を制御するソフトウエアコンポーネントがダウンロードされクライアントのパーソナルコンピュータに常駐している。後で詳しく説明するように、電子メールメッセージ送信の実施例の場合は、電子メールサーバを含み、この電子メールサーバは、Microsoft OutlookTMなどのローカル電子メールクライアントと協力して、ユーザが中央サーバにアクセスすることなく、実際にはユーザ対話なしに、全てのデータメッセージの送受信を処理する。換言すると、クライアントのパーソナルコンピュータは、所望のピアツーピア通信を制御することができ、このプロセスは、ユーザの視点から見て極めて容易である。
【0012】
本発明の更に他の利点には、特に電子メールメッセージ送信に関して、スパム電子メールを受け取るのを防ぐ機能がある。電子メールアドレスが全て中央データベースによって認定されたとき、スパムの送信元を直ちに断つことができる。更に、従来の電子メールアドレスと違って、本発明では受信者のアドレスを容易に入手できない。
【0013】
また、ユーザに通話が可能な人を瞬時に通知することができ、すなわち、電話をかけたい人にこの状況情報がプッシュされたときは常にオンラインなので、VOIPを比較的容易に実現できることを理解されたい。VOIP接続は、インターネットを介しているため、無料であり、従って、ユーザが標準インターネット接続料の追加費用を支払うことなく長距離と近距離の通話をすることができる。
【0014】
従って、本発明により、ユーザは、業務と個人の機密情報を全く秘密に送受信することができる。また、本発明が、従来の電子メールと共に使用される場合、本発明は、故障、災害、物理的攻撃、又はサイバー攻撃が起きた場合にサービスの継続性を提供するバックアップシステムを従来の電子メールサーバに提供する。
【0015】
本発明は、ISP等の第三者が、受信した電子メールから広告や他の目的のために送信者や他の業務に関する個人情報を収集できなくする。また、高価な電子メールサーバ等の追加の装置が必要なく、また技術サポートの費用が減少し、コストを大幅に削減することができる。
【0016】
後で詳しく説明するように、本発明は、ファイアウォールより機能することができ、追加の構成を必要としない。本発明は、Microsoft OutlookTMやNovell GroupwiseTM等の既存の電子メールアプリケーションとシームレスに組み合わせることができる。
【0017】
IPアドレスが、受信者の実際のIPアドレスのときは、IPアドレスでのピアツーピア通信は比較的容易である。しかしながら、NATが使用されるときは、送信者が受信者を一意に識別することができず、NATのファイアウォールとしてのセキュリティ機能のために、ピアツーピア通信は困難になる。本発明の別の様相は、この特定の問題(後述する)を対象とする。
【0018】
本発明のこの様相は、また、通信サーバであって、この通信サーバを含む第1のリモート側コンピュータと第2のリモート側コンピュータとの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を実行するように構成され、各リモート側コンピュータのデータ通信ネットワークに対する接続のアドレス詳細及び現在状態を受け取る受信手段と、第1のリモート側コンピュータにおいてデータ通信を生成するメッセージ生成モジュールと、第2のリモート側コンピュータの現在の接続状態を確認する確認モジュールと、第2のリモート側コンピュータの接続状態から、第2のリモート側コンピュータがデータ通信ネットワークに現在接続されていることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送るように構成された伝送モジュールとを含む通信サーバを提供するとも考えられる。
【0019】
本発明の本様相は、また、通信システムであって、前述のような複数の通信サーバと、データ通信ネットワークによって複数の通信サーバに接続可能なデータサーバとを含み、データサーバが、通信ネットワークに対する各通信サーバの接続の現在状態を、各通信サーバの現在のネットワークアドレスと共に受け取り、収集し、記憶し、且つこの情報の少なくとも一部分を複数の通信サーバに転送して、それらの通信サーバが、複数の通信サーバ間でピアツーピア通信を行うことを可能にするように構成された通信システムにも適用される。
【0020】
本発明の第2の様相によれば、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のピアツーピアデータ通信を確立するのを支援するように構成された通信サーバであって、サーバが、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルに提供され、通信サーバがサーバネットワーク内の他の階層レベルにある他の通信サーバに動作可能に接続することを可能にする接続手段と、複数のローカルユーザコンピュータを通信サーバに登録する登録手段と、それぞれの登録したローカルユーザコンピュータの登録詳細を記憶するデータストアであって、登録詳細が、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含むデータストアとを有し、接続手段が、記憶した登録詳細をサーバネットワークの次に高い階層レベルにおける隣りの通信サーバに転送し、且つ階層ネットワーク内の低いレベルにある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶するように構成された通信サーバが提供される。
【0021】
伝送サーバの階層ネットワークの使用は、メッセージ送信ネットワークがより効率的に動作することができるので極めて有利である。詳細には、大量で大きなペイロードのメッセージ送信トラフィックによって通信ネットワークに大きな負荷がかかるとき、階層構造の通信媒体を使用することによって、通信システム全体に必要以上の負担をかけることなく多量のトラフィックをローカルに処理することができる。VoIPメッセージトラフィックは、特に重いペイロードを含むことがあり、利用可能な帯域幅の多くを使い果たすことがある。階層構造を使用してアドレス指定の詳細を分散的に記録することにより、通信ネットワークの特定の部分にトラフィックを局在化させ、それによりネットワークの他の部分の性能特性に影響を及ぼさないようにすることができる。例えば、ほとんどのVOIP通話が地理的にローカルな送信元と宛先の間にあるVOIP通信では、これは、性能的な大きな利点がある。
【0022】
本発明の第2の様相は、また、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援する方法であって、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルにある通信サーバ上で実施され、サーバネットワーク内の他の階層レベルにある通信サーバに対する動作可能なネットワーク接続を確立する段階と、複数のローカルユーザコンピュータを通信サーバに登録する段階と、それぞれの登録したローカルユーザコンピュータの、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含む登録詳細を記憶する段階とを含み、確立する段階が、記憶した登録詳細を、サーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに転送する段階と、階層ネットワーク内の低いレベルにおある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶する段階とを含む方法にも適用される。
【0023】
本発明の第3の様相によれば、送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援するために、ピアツーピア通信メッセージの指定受信者コンピュータを探索する方法であって、通信サーバの階層ネットワーク内で実施され、指定受信者コンピュータの識別と送信者コンピュータの識別を含むデータ通信の要求をローカルサーバに送る段階と、指定受信者がローカルサーバに知られているかどうかを判断する段階と、指定受信者がローカルサーバに知られている場合に指定受信者に関して記憶した詳細を取り出し、その詳細を送信者コンピュータに送る段階と、指定受信者がローカルに知られていない場合にサーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに要求を転送し、これにより該通信サーバがローカルサーバになる段階と、指定受信者が見つかるか或いは階層ネットワーク内の一番上にあるサーバの確認が終わるまで、決定する段階、取り出す段階、及び転送する段階を繰り返す段階とを含む方法が提供される。
【0024】
階層的通信ネットワークを使用するこの方法は、宛先アドレスを見つける手続きが先行技術よりもかなり高速になるため有利である。その理由は、最初に送信元に対する地理的ローカルアドレスが確認され、その後で階層ネットワークの高い方にあるリモートアドレスが徐々に、そのアドレスが見つかるまで又は一番上に達するまで確認されるからである。この場合も、多数の通信がローカル宛先に実際に向けられるときに、そのような通信を素早く見つけることができ、また通信サーバのネットワークの潜在的管理負担を軽減することができる。
【0025】
本発明のこの第3の様相は、また、送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立する方法であって、複数の通信サーバからなる階層的サーバネットワーク内で実施され、前述の指定受信者コンピュータを探索する方法と、指定受信者コンピュータの現在のグローバル通信アドレスを送信者コンピュータに通信する段階と、送信者コンピュータの現行グローバル通信アドレスを指定受信者コンピュータに通信する段階と、グローバル通信アドレスを使用して送信者コンピュータと指定受信者コンピュータの間でピアツーピア通信チャネルを設定する段階とを含む方法にも適用される。
【0026】
本発明の第4の様相によれば、第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するために使用される伝送サーバであって、第1のユーザコンピュータから、伝送サーバに登録された第2のユーザコンピュータに対する接続の要求を受け取る受信手段と、第2のユーザコンピュータに対する接続の現在の接続状態を検証する検証手段と、第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないこと分かった場合に、要求の詳細をウォッチとして記憶するデータストアと、検証手段に応答して、第2のユーザコンピュータの状態が変化して、第2のユーザコンピュータとのピアツーピア通信を現在確立することができることが示された場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る応答手段とを含み、検証手段が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認すると共に更新するように構成され、この更新から、第2のユーザの状態がオンラインに変化したことが分かったときに対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する伝送サーバが提供される。
【0027】
本発明のこの第4の様相による伝送サーバは、指定受信者の接続状態を監視する機構を備え、この機構は、メッセージ送信者の資源を有利に含まない。より正確に言うと、この伝送サーバは、指定受信者の接続状態を有効に監視することができ、ピアツーピア通信が可能になるように変化したときに、メッセージ送信者に通知することができる。これは、データメッセージをセキュアでない可能性のある場所に途中で記憶しないデータメッセージ送信を支援する。
【0028】
本発明の第4の様相は、また、第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するのを支援する方法であって、第1のユーザコンピュータから、ローカルに登録された第2のユーザコンピュータに対する接続の要求を受け取る段階と、第2のユーザコンピュータに対する接続の現在の接続状態を検証する段階と、第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないことが分かった場合に、要求の詳細をウォッチとして記憶する段階と、検証する段階に応答して、第2のユーザコンピュータの状態が変化し、第2のユーザコンピュータとのピアツーピア通信を現在確立したことを示している場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る段階とを含み、検証する段階が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認し更新し、この更新から、第2のユーザ状態がオンラインに変化したことが分かったときに、対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する方法で実現される。
【0029】
本発明の第5の様相は、ピアツーピア通信に対応できるようにNAT及びファイアウォールと関連した問題を克服する事柄に取り組む。本発明のこの様相は、実際のローカルアドレスがNATのリモート通信側に常に見えていない場合でも、受信者の実際のローカルアドレスの決定を含む指定受信者の能力の一連の通信(調査)の実施を送信することによってNATのマッピング機能を決定することができるという認識にある。そのような調査は、通信制御チャネルの使用と、指定受信者が、NATの変換機能を推定できるようにNATを介してメッセージ内のデータとしてそのローカルアドレスを送る重要な機能とを含む。他の調査は、潜在的な指定受信者に関する調査結果を提供する能力を含む。
【0030】
NATのマッピング機能を有効に特定する利点は、このマッピング機能を使用して、NATによって所望の単一受信位置に逆にマッピングされる適切にアドレス指定された通信をNATに送ることができることである。NATは、マッピング機能が特定されたことに全く気づかず、その結果、直接ピアツーピア通信に対応することができる。
【0031】
NAT及びファイアウォールと関連した問題を克服する代替の方法は、伝送サーバに対して確立されたTCP/IPリンクを使用して、ピアツーピア通信を支援するUDP通信チャネルの作成を支援することである。より具体的には、本発明の第5の様相によれば、第1と第2のユーザコンピュータの間で、少なくとも第1のユーザコンピュータの通信が第1のネットワークアドレス変換器(NAT)によって処理されるデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立する方法であって、第1のユーザコンピュータと伝送サーバの間で第1のNATによって確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続を要求する段階と、伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートする段階と、第1のユーザコンピュータにある第2のUDPポートを開く段階と、伝送サーバが第2のUDPポートの第1のNATアドレスを決定できるように、第2のUDPポートから第1のNATを介して第1のUDPポートにデータパケットを送信する段階と、伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを取得する段階と、第1と第2のユーザコンピュータの間にセキュアなピアツーピア通信を確立することができるように、第1と第2のユーザコンピュータのそれれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する段階とを含む方法が提供される。
【0032】
ピアツーピア通信を確立しようとするとき、NAT横断が大きな問題であることを理解されたい。本発明のこの第5の様相は、NATの1つが非対称の場合でも、ピアツーピア通信のNAT横断を可能にする単純で実行可能の解決策を提供する。
【0033】
本発明の第5の様相は、また、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、少なくとも第1のユーザコンピュータの通信が、第1のネットワークアドレス変換器(NAT)によって処理され、第1のNATによって第1のユーザコンピュータと伝送サーバの間に確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続の要求を受け取る要求受信手段と、伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する確立する手段と、TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートするレポート手段と、第1のユーザコンピュータに設定された第2のUDPポートから、第1のNATを介して第1のUDPポートに送られるデータパケットを受け取るデータパケット受信手段であって、伝送サーバが、第2のUDPポートの第1のNATアドレスを決定するように構成されたデータパケット受信手段と、伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを得る取得手段と、第1と第2のユーザコンピュータが間にセキュアなピアツーピア通信を確立できるように、第1と第2のユーザコンピュータのそれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する手段とを有する伝送サーバにも適用される。
【0034】
NAT横断に関係する最も複雑な状況は、ファイアウォールの実施が厳密か或いは両側に非対称NATがあるために、直接ピアツーピア接続を単純に実現できないときに起こる。この状況は、非対称NATを横断するように「擬似」ピアツーピア通信を確立することによって解決することができる。より詳細には、本発明の第6の様相によれば、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアな疑似ピアツーピアデータ通信チャンネルを確立する方法であって、両方のユーザコンピュータの通信が、第1と第2の非対称ネットワークアドレス変換器(NAT)によって処理され、それぞれの第1と第2の非対称NATを介した各ユーザコンピュータから伝送サーバへの伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを作成する段階と、第1のNATによる第1のユーザコンピュータと伝送サーバの間のTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、第1と第2のUDPポートのアドレスを、それぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートする段階と、第1のユーザコンピュータに第3のUDPポートを開くと共に第2のユーザコンピュータに第4のUDPポートを開く段階と、データパケットを第3のUDPポートから第1のNATを介して第1のUDPポートに送り、第4のUDPポートから第2のNATを介して第2のUDPに送り、それにより伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスとを決定できるようにする段階と、第1のUDPポートで受け取ったデータパケットを第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、伝送サーバからデータパケットを有効に返送することによって、第1と第2のユーザコンピュータ間の擬似ピアツーピア通信を確立するようにする段階とを含む方法が提供される。
【0035】
前述のように、擬似ピアツーピア通信は、本発明のこの様相が、信頼できる仲介者の役割をするローカル伝送サーバでメッセージを「返送する(bounce)」ことができる能力によって実現される。これにより、ローカル伝送サーバが常にローカル非対称に知られており、その結果ファイアウォールの最も厳しい規則でもそのような間接擬似ピアツーピア通信が妨げられないので、未知の送信者の問題が軽減される。更に、そのような間接通信チャネルのセキュリティが低下する可能性は、跳ね返されたパケットが、信頼できる介在者の役割をする伝送サーバによって最小限の分析で且つ必ず記憶なしに転送されるようにすることによって最小になる。
【0036】
ファイアウォール動作のばかげた(極めて厳しい)解釈に遭遇した場合、本発明のこの様相は、ある方向で真のピアツーピア通信を実現し、他の方向でローカル伝送サーバで跳ね返るように構成される。この変形例は、セキュリティの低下を最小にするために行う価値がある。例えば、電子メール送信の場合は、電子メールを直接送り、肯定応答を返すように構成すると有利である。
【0037】
本発明のこの第6の様相は、また、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアな擬似ピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、両方のユーザコンピュータの通信が、それぞれの第1と第2の非対称ネットワークアドレス変換器(NAT)によって取り扱われ、伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを、各ユーザコンピュータから伝送サーバまで、それぞれの第1と第2の非対称NATを介して作成する作成する手段と、第1のユーザコンピュータと伝送サーバの間で第1のNATによるTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する確立手段と、第1と第2のUDPポートのアドレスをそれぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートするレポート手段と、第1のコンピュータに設定された第3のUDPポートから第1のNATを介して第1のUDPポートに送られ、第2のユーザコンピュータに設定された第4のUDPポートから第2のNATを介して第2のUDPに送られたデータパケットとを受け取り、それにより、伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスを決定できるようにする受け取る手段と、第1のUDPポートで受け取ったデータパケットを、第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを、第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、第1と第2のユーザコンピュータの間の擬似ピアツーピア通信が、伝送サーバからデータパケットを有効に返送することによって確立される伝送サーバにも適用される。
【0038】
本発明の第7の様相によれば、送信者コンピュータと指定受信者コンピュータ間のデータ通信ネットワークを介したピアツーピア通信を確立するのを支援するために、ユーザコンピュータを伝送サーバの階層接続ネットワークに接続する方法であって、接続ネットワーク内のローカル伝送サーバと同じ階層レベルにある複数のピア転送サーバのそれぞれの現行負荷を示す情報を受け取る段階と、ローカルユーザコンピュータをローカル伝送サーバに接続する要求を受け取る段階と、ローカルサーバの現行負荷をピアサーバのそれぞれと比較する段階と、ローカル伝送サーバの負荷が、ピアサーバの内のいずれかのピアサーバの負荷より著しく大きい場合に、最も低い負荷を有するピアサーバに接続すべきであることを示す応答をローカルユーザコンピュータに送る段階と、ローカル伝送サーバの負荷が、ピアサーバの内のどのピアサーバの負荷より著しく大きくない場合に接続要求を受け入れ、ローカル伝送サーバの現行負荷を更新する段階とを含む方法が提供される。
【0039】
本発明のこの様相は、通信ネットワークのロードバランシングの問題に取り組む。ローカルサーバの現行負荷の大きさを伝送サーバの階層内で維持することによって、ピアツーピア接続を確立する要求を常に効率的に再分配するができる。負荷の点でバランスのとれた通信を維持することによって、ネットワーク自体が効率的になり、性能の低下も最小限に抑えられる。
【0040】
本発明の第8の様相によれば、通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された認証済み通信サーバのネットワークにノードを結合する方法であって、認証サーバから受け取ったユーザ識別とパスワードを使用して、認証サーバにノードを認証させる段階と、ネットワークに加わるためにノードを接続しなければならない特定の通信サーバの識別の通知を受ける段階と、特定の通信サーバに接続するために、認証サーバから特定の通信サーバ及びノードに固有のデータを要求する段階と、特定の通信サーバ及びノードに固有のデータと、ノードと特定の通信サーバによって共有される共有暗号鍵とを受け取る段階と、特定の通信サーバ及びノードに固有のデータと、暗号鍵によって暗号化されたグローバルデータとを特定の通信サーバに送り、その結果、特定の通信サーバが、ネットワークにノードを認証させそれにより認証サーバからの検証を求めることなしにネットワークに参加するツールを有するようにする段階とを含む方法が提供される。
【0041】
本発明のこの様相は、ネットワークに参加したい新しいノードの認証手続を実施する極めてセキュアな方法を提供する。これは、メッセージ送信元が、ネットワークにアクセスすることでメッセージ送信元に特権が与えられ、例えば通信ネットワークの他のメンバと自由に通信することが許可されるピアツーピア通信が容易なネットワークに参加したい状況で特に重要である。
【0042】
本発明の第9の様相によれば、相互接続された伝送サーバノードの第1の階層レルム(hierarchical realm)を、相互接続された伝送サーバノードの第2の階層レルムに接続する方法であって、各レルム内にローカル認証サーバを提供する段階であって、認証サーバが、それぞれの階層レルムの最も高いレベルにある主ノードに接続され、レルム内の全てのサーバに関連した認証問題を制御するように調整される段階と、第1の階層レルムの主ノードを第2の階層レルムの認証サーバに登録する段階と、第1の階層レルムの主ノードを第2の階層レルムの認証サーバに対して認証する段階と、階層レルムを結合するために第1の階層レルムの主ノードが接続しなければならない最も下のノードサーバの識別に関する通知を受ける段階と、第2の階層レルムの最も下のノードサーバと第1の階層レルムの主ノードの両方の共有データと共有暗号鍵を受け取る段階と、受け取った共用データと共有暗号鍵を使って、第1の階層レルムの主ノードを第2の階層レルムの最も下のノードサーバに対して認証し、それにより第2のレルムの認証サーバからの検証を求めることなく第1と第2のレルムを結合する段階とを含む方法が提供される。
【0043】
本発明のこの様相は、独自の通信ネットワーク(レルム)を持つ企業が、結果的にセキュリティの損失なしに参加することができるという点で有利である。また、極めて大きいサイズの既存のネットワークになるものを結合するために、前述の簡単な方法で高い方のレルムの許可を修正するだけでよいので、各レルムの完全性は損なわれない。これは、ピアツーピア技術を使用して全く異なる組織の人の間の通信が極めてセキュアに可能になることを意味する。
【発明を実施するための最良の形態】
【0044】
図1を参照すると、本発明を実施するシステム10が示されている。この実施形態は、現時点で好ましい電子メール通信に関して説明される。しかしながら、例えばボイスオーバーアイピー(VoIP)やインスタントメッセージ等の任意の形態の電子通信伝送も使用できることを理解されたい。更に、本発明をインターネット等の広域ネットワークを介した通信に関して説明するが、本発明は、ローカルエリアネットワークによって実施することもでき、或いは移動体通信によって実現することもできる。
【0045】
システム10は、異なる場所に提供された2台のパーソナルコンピュータ(PC)12及び14を含む。第1のPCは、ローカルPC12であり、第2のPCはリモートPC14であり、システム10は、これらの2台のコンピュータ12と14の間のピアツーピア通信に対応している。各PC12と14は通信機能が同一であり、従って1台を詳しく説明するだけでよい。
【0046】
各PC12と14は、この実施形態において、それぞれ対応するインターネットゲートウェイ18及び20を介してインターネット16に接続されている。また、ローカルPC12にあるインターネットゲートウェイ18は、ローカルPC12が、全てローカルインターネットゲートウェイ18を利用するLAN24上の複数のローカルPC12の内の1台として提供されるようにNAT22を含む。また、リモートPC14は、LAN26上に提供されているが、このケースでは、NATは提供されておらず、リモートPC14は固有IPアドレスを有する。
【0047】
インターネット16に接続されたデータサーバ28も提供される。データサーバ28は、管理するユーザ名32とIPアドレス34のローカルデータベース30を有する。ローカルデータベース30は、また、登録ユーザの接続状態36を記憶する。これらのユーザ名32とアドレス34は、ローカルPC12とリモートPC14のものを含み、一般に知られているため本明細書で詳しく説明しない登録手順によってデータベース30に提供される。データサーバ28が、ローカルPC12やリモートPC14等の登録されたPC間のピアツーピア通信において能動的な役割を果たさないことを理解されよう。しかしながら、データサーバ28は、最新のアドレス情報34とそのアドレスの状態36、即ちオンラインかオフラインかについて、登録されたすべてのPC12、14を更新する。
【0048】
インターネット16に全て接続された複数の伝送サーバ機構(TSM)40が提供される。これらのTSM40は、ローカルPC12とリモートPC14間のピアツーピア通信の適切なアドレス34を確立する役割をする。各TSM40は、登録されたPC12及び14の可能な各アドレスに関するアドレス指定情報を記憶するための情報のローカル記憶装置42と関連付けられる。より具体的には、これらのローカル記憶装置は、PC識別44のリストとPC識別44に対応するIPアドレス46のリストを含む。IPアドレス46のリストにおいて、TSM40自体が所与のPCをアドレス指定する役割をする場合に直接IPアドレス46が提供される。そうでない場合、即ちTSM40がその役割をしない場合は、その役割をするTSM40のIPアドレス(或いは他の適切な識別)が提供される。TSM40の動作、特にNAT横断(NAT traversal)に関しては、後で詳細に説明する。
【0049】
ローカルPC12とリモートPC14はそれぞれ、TCP/IPによって個人メールサーバ52に接続されたMicrosoft OutlookTM等のメールクライアント50を備える。メールサーバ52は、それ自体のローカルデータ記憶装置54を備え、ネットワークインタフェース56にも接続されている。メールサーバ52は、ピアツーピア通信プロトコルを利用するために、ダウンロードされたソフトウェアで提供され、ユーザによってインストールされる。メールサーバ52は、オンラインになったことを知らせるためにデータサーバ28と連絡をとらなければならないので、データサーバ28のネットワークアドレスを記憶する。全てのピアツーピア通信は、メールクライアント50の動作に影響を及ぼさないように個人メールサーバ52によって透過的に経路指定される。
【0050】
この実施形態で使用されるネットワークインタフェース56とインターネットゲートウェイ18、20は、全く従来通りのものであり、本明細書で更に詳しい説明は必要ない。
【0051】
次に、システム10の一般的な動作モードを説明する。ユーザが、データサーバ28に詳細を提供することによってサービスに登録された後、個人電子メールサーバ52が、ユーザのPC12及び14にダウンロードされローカルにインストールされる。個人電子メールサーバ52は、電子メールクライアント50とネットワークインタフェース56に動作可能に接続され、これらは両方とも、PC12及び14上に既に提供されている。電子メールクライアント50との電子メール通信は全て個人電子メールサーバ52を介して行われる。
【0052】
メッセージを送信する際、ユーザは、電子メールを作成し、次にそれを個人電子メールサーバ52に送る。指定受信者の状態に関して記憶された最新情報で示されたように指定受信者がオンラインの場合、電子メールメッセージは、指定受信者のPC14に直接送信される。他の場合は、指定受信者のPC14がオンラインになり、それがデータサーバ28からの最新オンライン状態メッセージを受け取ることによって示されるまで、電子メールメッセージは、キューに記憶される。
【0053】
メッセージを送信する前に、指定受信者の実際の現行IPアドレス34が、TSM40によって決定される。このプロセスは、後で詳細に説明する。指定受信者の現行IPアドレス34が確認されると、電子メールメッセージのピアツーピア通信が実行される。
【0054】
図2を参照して、このプロセス60を実行する方法の例を、2人のユーザAlice62とBob64に関して説明する。プロセス60は、最初に、Aliceの個人電子メールサーバ52が、彼女がオンラインになったというメッセージをデータサーバ28に送り66、彼女がBob64にメッセージを送信したいことを示す68。次に、データサーバ28は、Bobの現行のアドレス詳細を返す69。次に、Aliceの個人電子メールサーバ52は、この情報を使ってメッセージをアドレス指定し、メッセージを暗号化し70、それをBobがオンラインになったときに送信するためにローカルに記憶する72。
【0055】
Aliceがオンラインであり(そのことを示すメッセージはデータサーバ28に既に送られている66)Bobがオンラインになった(そのことを示すメッセージをデータサーバ28に送る74)少し後で、データサーバ28は、Bob64がオンラインになったことを示すメッセージをすべてのユーザに送信する76。このメッセージは、Aliceの個人電子メールサーバ52によって受け取られ、記憶されたメッセージをBob64に直接送ることができる78。メッセージを受け取ると、Bobの個人電子メールサーバ52はそのメッセージを記憶する80。Bobの電子メールクライアント50が、入力メッセージ(取得メッセージ)を確認するときは82、メッセージが解読され84、Bob64が読むために電子メールクライアント50に送られる86。
【0056】
次に、図3から図6を参照して、各個人メールサーバ52で実行される実際のプロセスを説明する。
【0057】
ここで図3を参照して、個人電子メールサーバ52の動作90を説明する。動作90は、最初に、サーバ52を起動し92、データサーバ(DS)28に接続される94。データサーバ28のアドレスは、メールサーバ52が既に知っており、ローカルメモリ54に記憶されている。データサーバ28は、幾つかのTSM40のロケーションアドレスを提供し、その内の1つは、システム10が作業するのに利用可能でなければならない。次に、メールサーバ52は、TSM40との接続を確立しようとする96。その一部として、TSM40がオンラインかどうかを知る確認が行われる98。TSM40がオンラインでなく接続できない場合は、メールサーバ52はオフラインであると見なされる100。続いて、プロセス90は、インターネット16に再接続し102、その接続を前述のDS段階94に返すことができる。
【0058】
しかしながら、TSM40がオンラインの場合は104、5つの異なる選択肢(状態)のいずれかが利用可能になる。第1に、PC12及び14が遮断された場合106にプロセス90が終了する選択肢108がある。第2に、メールサーバ52を強制的にログアウトさせることができ110、それによりプロセス90が前述のようにオフライン状態100になる。第3に、メールクライアント50からメールサーバ52に接続しようとしている場合は112、メールクライアント50の信用証明が、既に記憶されている情報と照合され114、受け入れ可能な場合は、クライアントからの接続を行なうことができる116(図4を参照して後で詳しく説明するように)。クライアント信用証明が検証されない場合は、接続が拒絶され118、メールサーバ52が、オンライン状態に戻る120か、強制的にオフラインにされ122、インターネット16に接続し102、プロセス90を再開しなければならない。
【0059】
更に他の選択肢(状態)は、メールサーバ52がメッセージを受け取り124、そのメッセージをユーザに提示するためにメールクライアント52に提供することである。このプロセス124は、後で図5を参照して詳細に説明する。
【0060】
メールサーバがオンラインなった後で利用可能な最後の選択肢(状態)は、メッセージの送信に関する。送信を待っているメッセージがあるかどうかを判断するために確認が行われる126。送信するメッセージがない場合128、プロセス90は終了し、メールサーバ52はオンライン状態104に戻る。送信するメッセージがある場合は、図6を参照して後で詳しく説明するようなMessageWaitingToSendプロセス130が実行される。この後者のプロセス130が終了した後、メールサーバ52がオンライン状態104に戻る。
【0061】
次に図4を参照して、ConnectionFromClientプロセス116を説明する。プロセス116は、最初に、メールクライアント52(例えば、MSOutlookTM)からSMPT接続要求を受け取る140。プロセス116は、セキュリティのために、メールクライアント52が許可されているかどうか判断する142。許可されていない場合は、許可が失敗し144、ユーザに通知するメッセージがメールクライアント52に送られる146。そうでない場合、許可は成功し148、メールサーバ52は、メールクライアント50からの電子メールメッセージを受け取る150。これは、メッセージの要素が連続的に転送される多段階プロセスである(例えば、「送信元(from)」アドレス、「送信先(to)」アドレス、メッセージの本文の順で送られる)。このプロセスは、完全なメッセージを受け取るまで実行される。送信されるメッセージがまだ他にあるかどうかを判断する確認が行われ152、ある場合は、転送プロセス150、152を繰り返す。受信するメッセージがもうない場合154、メールサーバ52は、メールクライアント50から切断される156。
【0062】
受信したメッセージを処理する前に、メールクライアント50と関連付けられた送信許可を判断する確認を行うことができる158。メールクライアント50が、特定の指定受信者に送信する妥当な許可を持っていないと判断した場合は160、電子メールメッセージは送信されない162。しかしながら、送信許可が適所にある場合は、宛先ユーザ情報を取得する164。この段階は、全ての登録指定受信者のアドレス情報をデータサーバ28に要求し取得することを含む。このデータは、そのユーザのメッセージの暗号化に使用するためのユーザの公開鍵(図示せず)を含む。アドレス情報を別の電子メールメッセージと関連して最近既に受け取ってある場合は、この情報が、キャッシュに保持されている場合がある。従って、DS28からそのアドレス情報を探す前に、特定の指定受信者のアドレス情報がキャッシュにあるかどうかを調べるための確認(図示せず)を行うことができる。
【0063】
次に、指定受信者が認識済みメールユーザかどうかを判断する確認を行う166。認識済みメールユーザでない場合は168、システムがアドレスを知らないので、メールサーバ52は、メッセージを送信できないことだけをメールクライアント50に通知する170。しかしながら、指定受信者が登録ユーザとして認識されている場合は172、電子メールメッセージが、公開鍵インフラストラクチャ(PKI)暗号化技術を暗号化/解読に使用することができるように、前に取得してある指定受信者の公開鍵で暗号化される174。
【0064】
次に、暗号化したメッセージが、後で図6に関して説明するMessageWaitingToSendプロセス130に渡される。
【0065】
次に図5を参照して、MessageReceivedプロセス124を説明する。電子メールメッセージを受け取るために、メールサーバ52は、ログインされていなくてもよいが、メールサーバ52はインターネット16に接続されていなければならない。電子メールメッセージを受け取ると180、ユーザにそのメッセージが通知され182、これは、例えば通知受信ポップウィンドウ184の生成により実行することができる。受信した電子メールメッセージは、記憶装置54に記憶され、メールクライアントからの「取得(get)」(取り出し)が保留される。記憶装置は、コンピュータのハードディスクでよいが、最もセキュアな解決策では、受信したメッセージは、取り出されるまでRAMに記憶される。待機中に186、何らかの理由でメールサーバ52を遮断しなければならない場合188、未送付のメッセージは、半永久記憶装置(一般に、ハードディスク)に記憶され190、プロセス124は終了する192。
【0066】
メールサーバ52が、メールクライアント50から取得要求を受け取ったとき194、プロセス124は、メールクライアント50が許可されているかどうかを判断する確認をする196。許可されていない場合は、クライアント許可が失敗し198、その結果メールクライアント50の取得手順が失敗する200。このことは、受信者ユーザとAmteus(システム全体の動作を管理する権限を持ち、ユーザが登録される)に通知される202。
【0067】
メールクライアント50が許可された場合204は、2つの操作が並列に実行される。ローカルに記憶された受信者の秘密鍵を取り出し206、未送付の電子メールメッセージを取り出す208。次に、取り出した秘密鍵を使用してメッセージを解読する試み210が実行される。解読が成功しなかった場合212は、送信者に通知される214。これは、メールサーバ52が、送付が失敗したことを述べる電子メールを送信者に返すことによって実現される。次に、プロセス124は、前のクライアント許可が失敗した場合198と同じように続き、即ちメールクライアント「取得」手順が失敗する200。このことは、受信者ユーザとAmteusに通知される202。
【0068】
一方、解読が成功した場合は216、解読済み電子メールメッセージが、ユーザに表示するためにメールクライアントに転送され、即ちメールクライアントによる「取得」が成功する218。次に、メッセージ受信プロセス124は、送付されるメッセージがまだ他にあるかどうかを確認する220。メッセージ222がもうない場合は、メッセージ受信プロセス124は終了する192。送付されるメッセージが更に他にある場合224、プロセスは、クライアント認証が成功した段階204に戻り226、前に述べた通りに続く。
【0069】
次に図6を参照して、図3のメッセージ送信待機プロセス130について説明する。送信を待つ電子メールメッセージがキューにあるときは230、宛先の状態を判断しなければならない232。宛先の現在状態がキャッシ内にあるかどうか判断する確認234を行なう。現在状態がキャッシュ内にある場合は、キャッシュから取り出す236。現在状態がキャッシュ238内にない場合は、DS28から取り出し240、キャッシュが取り出された状態で更新される。
【0070】
宛先がオフラインかどうかを判断するために宛先の状態を確認する242。宛先がオフライン244の場合は、メッセージを送信することができず、暗号化されたメッセージは、単に、後で伝送を試みるためにメッセージ待機キューに記憶される246。一方、宛先がオンラインの場合は、暗号化されたメッセージをキュー(RAM内又はハードディスクから)から取り出し248、そのメッセージが、ピアーツーピアー通信として指定受信者に直接送られる250。電子メールメッセージの正確なアドレス指定方法とメッセージの送信方法の詳細は、図7に概略的に示されており、後で説明する。
【0071】
メッセージの送信を確認し252、何らかの理由で送信が失敗した場合254は、送信エラー状態256が入力され、エラータイプを決定する手順が続く。この状態256は、メールサーバ52が何らかの理由で停止された258場合のメッセージ送信待機プロセス130の最初になる。この送信エラー状態256において、Amteusには、並行してエラータイプの決定が通知される260。エラーが宛先がオフラインになっていることによるものかどうか判断する確認を行う262。これは、指定受信者の状態が変化したばかりの場合に起こる可能性がある。宛先がオフライン244の場合は、後で送信するために暗号化メッセージが記憶される246。これにより、このメッセージ送信待機プロセス130の手順が終了するが、プロセス130自体は終了せず、電子メールメッセージがキュー内で送信されるのをまだ待っている状態になる。
【0072】
エラーが、宛先がオフラインになっているためではない場合は、エラーには別の原因があり264、それが永久的な障害が一時的な障害かを判断する確認が行なわれる266。永久的な障害268の場合(例えば、ユーザがなくなったか、電子メールが大きすぎる場合)、メールサーバは、メッセージが送付不能であったと言うメッセージを受け取る270。しかしながら、エラーが一時的な障害272による(例えば、接続不良による)場合、暗号化された電子メールメッセージが、キューに戻されて記憶され242、このメッセージ送信待機プロセス130の手順が終了する。
【0073】
電子メールメッセージの送信結果に戻ると、メッセージが送付された274ことが確認された場合は、セキュリティのために電子メールのローカルコピーが削除される276。送信成功の通知がAmteusに送られ260、送信されるのを待っている電子メールメッセージがあるかどうかを判断する確認278が行われる。ある場合、プロセス130は、その電子メールメッセージの宛先(指定受信者)の状態の確認232に戻り、前述のように続けることを繰り返す。送信されるのを待っている電子メールメッセージがない場合は、処理するメッセージは他になく280、このメッセージ送信待機プロセス130の手順が終了する。
【0074】
次に図7を参照して、TSMの操作及び対話について説明し、詳細には、TSMが、ピアツーピア通信に必要な指定受信者のアドレス指定をどのように確立するかを説明する。
【0075】
最初に、TSMは、アドレス調査プロセスを常に実行しており、その結果、指定受信者への電子メールメッセージの送付が必要な時はいつも、その指定受信者のアドレス情報に関する最新の現行情報を所有していることを理解されたい。そのような調査は、改良したUDP(ユーザダイアグラムプロトコル)を使用して実行され、ユーザの実際の直接IPネットワークアドレスを確立するのに役立つ試みを含む。これらの試みは、NAT横断を可能にし、図9aから図9iを参照して後でより詳しく説明される。
【0076】
受信者の現行IPアドレスを決定し送信者に送るロセス274で、最初に、送信者に、リストを保持する主TSM40からTSMのリストが送られる290。次に、メールサーバ52は、リストの最初のTSM40にコンタクトする試みを行い292、成功したかどうか確認する294。コンタクトが成功しなかった場合296は、リストにある次のTSM40を取り出し、接続する別の試み292を行う。このプロセスは、1つの接続が成功する298まで続く。
【0077】
接続した後、特定のTSMが、このメールサーバ52の接続があることを他の全てのTSM40に通知する300。この接続は、ロードバランシングに関してどのTSM40を使用するのが最も便利かに基づいて行うことができる。次に、送信者メールサーバ52は、接続されたTSM40に、指定受信者メールサーバ52に接続したいことを通信する302。指定受信者は、ユーザIDで識別される。TSM40の仕事は、指定受信者メールサーバ52のIPアドレスを決定することである。次に、選択されたTSM40は、そのアドレス指定リスト(ローカルに記憶された)を確認して304、指定受信者メールサーバ52への直接接続を有するかどうか確認する。直接接続を有する場合、即ち受信者メールサーバ52の固有アドレスが分かっている場合は、その固有アドレスが、送信者メールサーバ52に渡される306。このアドレスは、図9aから図9iを参照して後で説明する技術を使用して決定される。受信者メールサーバ52に自分の固有アドレスがない場合は、少なくともTSM40(アドレスを有する)のアドレスがある。従って、この場合、選択されたTSM40は、アドレスを参照しそれを送信者メールサーバ52に返す306ことができるように問合せを適切なTSM40に中継する308。
【0078】
送信者メールサーバ52は、指定受信者メールサーバ52の固有直接IPアドレスを受け取った後で、受信者メールサーバ52に直接接続され310、標準のインターネットプロトコルを使用して電子メールメッセージを送信する312。即ち、電子メールメッセージは、メッセージをそれぞれ自分のヘッダを有するパケットに分割し、任意の適切な経路によって送られるそのようなパケットを受信者に送信し、そこで指定受信者に表わすために再び組み立てることによって、従来のIP通信がインターネット16で送られのと同じように送られる。
【0079】
図8は、ユーザ320、そのメールクライアント50、322、及び管理者324の様々なアクティビティを示す概略図である。様々なアクティビティは、図に示したように関連付けられた機能にグループ化される。より具体的には、ユーザ320は、関連付けられた機能の3つの異なるグループ、即ちセットアップアクティビティ326、支払いアクティビティ328、及びファイル関連アクティビティ330を実行することができる。メールクライアント50、322は、単一グループのメールサーバ関連アクティビティ332を実行することができる。管理者324は、単一グループのユーザ関連アクティビティ334を実行することができる。そのような各グループを構成する機能は、図8に示されており、熟練した本明細書の対象者には明らかであり、従って本明細書では更に詳しい説明は行わない。
【0080】
図9a〜図9fは、指定受信者の固有IPアドレスを決定する際にTSM40が実行する6つの段階の操作を示し説明する。より具体的には、図9aに最初の状態が示されており、ここで、クライアントA350は、NAT A352を介してサーバS354にTCP/IP接続し、同様にクライアントB356は、NAT B358を介してサーバS354にTCP/IP接続を確立している。段階1と示したこの段階で、クライアントA350は、クライアントB356とのピアツーピア接続を確立することを望む。
【0081】
図9bに示した段階2Aで、クライアントA350は、NAT A352を介してサーバS354にピアツーピア要求を行う。サーバS354は、この要求を受け取ると、IPアドレスS1ポートs1362のUDPポート360を開く。次に、段階2Bで、図9cに示したように、サーバS354は、既に確立してあるTCP/IP通信手段364によって、UDPポート360のアドレス(S1:s1)362をクライアントA350にレポートする。次に、クライアントA350は、アドレスA:a368で自分自身のUDPポート366を開く。このポートアドレス368は、NAT A352によってA1:a1370に変換される。一方、クライアントA350とサーバS354の間にはUDP通信チャネル372が設定される。
【0082】
図9dに示した段階3で、サーバS354は、図9cに関して説明したものと同じようにクライアントB356とのUDPチャネルを確立できるように、IPアドレスS2:s2378の第2のUDPポート376を開く。次に、サーバS354は、既に確立されているTCP/IP通信手段364によって、UDPポート376のアドレス(S2:s2)378をクライアントB356にレポートする。次に、クライアントB350は、アドレスB:b382でそれ自体のUDPポート380を開く。このポートアドレス382は、NAT B358によってB1:b1384に変換される。一方、図9eで分かるようにクライアントB356とサーバS354との間にUDP通信チャネル386が確立される。
【0083】
図9eを参照すると、指定受信者の固有IPアドレスを確立するプロセスの段階4が示されており、ここで、クライアントAとクライアントBの間でUDP通信を実行する方法を説明する。クライアントBは、アドレスB:b382を有するUDPポート380からアドレスS2:s2378を有するサーバUDPポート376にUDPパケットを送る。しかしながら、サーバS354には、それらのパケットがネットワーク変換UDPポートアドレスB1:b1384から来ていることが分かる。同じように、UDPパケットは、クライアントA350からアドレスS1:s1362を有するサーバUDPポート360で受け取ることができる。
【0084】
サーバS354は、ネットワーク変換ポートアドレスA1:a1370から受け取ったパケットをB1:b1384に、ネットワーク解釈ポートアドレスB1:b1384から受け取ったパケットをA1:a1370に転送することができる。これにより、クライアントA350とクライアントB356は、互いに直接UDP接続していると信じることができる。
【0085】
図9fは、プロセスの段階5を示し、ピアツーピア通信の一般的なケースを確立する。この場合、サーバS354は最初にクライアントA350に、クライアントB356がネットワーク変換ポートアドレスB1:b1384上で話していることを通知する。また、サーバS354は、クライアントB356に、クライアントA350がネットワーク変換ポートアドレスA1:a1370上で話していることを通知する。従って、クライアントA350とクライアントB356が直接話す能力は、各クライアントが互いのネットワーク変換アドレス370、384を有するときに確立される。しかしながら、クライアントA350上で動作するアプリケーション(図示せず)によって、通信は、UDPポートA:a366と、アドレスB1:b1384又はポートアドレスB1:b1384とS1:s1362両方と間の第1のUDPチャネル388を介したものでもよい。同様に、クライアントB356上で動作するアプリケーション(図示せず)によっては、通信は、UDPポートB:b380と、アドレスA1:a1370又はポートアドレスA1:a1370とS2:s2378両方と間の第2のUDPチャネル390を介したものでもよい。
【0086】
図9gは、両方のNATが対称なケースで図5の一般的なケースがどのように適用されるかを示す。より具体的には、段階6Aにおいて、NAT A352が対称NATである場合、クライアントBは、ネットワーク変換ポートアドレスA1:a1370からUDPパケットを受け取る。同様に、NAT B358が対称NATである場合、クライアントAは、ネットワーク変換ポートアドレスB1:b1384からUDPパケットを受け取る。そのようなUDPパケットトラフィックを検出すると、サーバSに通知され、NAT Aとその第1のポート362の間とNAT Bとその第2のポート376の間のUDP接続372が切断される。これは、図9gに示した状況である。またこれに続いて、クライアントAとBからサーバS354へのTCP接続364が切断されるが、これは、クライアントAとB上で作動するアプリケーションに依存する。
【0087】
図9hは、NATの一方が非対称であるときに図9gのソリューションがうまくいかないようすを示す。より具体的には、NAT B358が非対称である場合、ポートアドレスB:b382からネットワーク変換アドレスA1:a1370に向けられるUDPパケットトラフィックは、B2:b2392から来るように見えるが、相変わらず第2のUDPチャネル390を介してクライアントAによって受け取られる。しかしながら、ネットワーク変換アドレスA1:a1370からネットワーク変換アドレスB1:b1384へのUDPパケットトラフィックは、そのポートがクライアントB356への通信に使用されなくなるので、NAT B358によって遮られる。
【0088】
図9iは、非対称NATの一方のNATを処理する方法のこの実施形態によって提供されるソリューションを示す。より具体的には、段階6Bで、クライアントAは、ネットワーク変換アドレスB1:b1384ではなくネットワーク変換アドレスB2:b2392から来るUDPパケットトラフィックを見る。従って、NAT A352は、ネットワーク変換アドレスB1:b1384に向けられたUDPトラフィック出力をネットワーク変換アドレスB2:b2392に切り換える。NAT A352がこれを行うことができ、その理由は、NAT B358が、このアドレスを使ってNAT A352のネットワーク変換アドレスA1:a1370に書き込んでおり、従ってIPが通るからである。このように、非対称NATがあるときでも双方向通信が確立される。
【0089】
NATA352が非対称でNAT B358が対称な場合は、図9iに関して前に述べたプロセスと同じプロセスが逆に行われる。
【0090】
NAT A352とNAT B358の両方が非対称な場合、純粋なピアツーピア通信は不可能である。トラフィックは、継続するか、仲介の役割をするサーバS354によって再び確立される。NAT A352とNAT B358の両方が見ることができる他の任意のアドレスを仲介として代用できることに注意されたい。この状況に対処するこの手法は、後で第2の実施形態に関して詳細に説明する。
【0091】
次に、図10から図16を参照して本発明の第2の実施形態を説明する。第2の実施形態は、第1の実施形態と多くの点で類似しており、従って、以下の説明は、第1と第2の実施形態との違いに焦点を当てる。簡潔に説明しただけの第1の実施形態の幾つかの様相は、完全性のために第2の実施形態の説明では詳しく述べる。
【0092】
第2の実施形態によるセキュア通信システム400は分散されており、その大きさのために複雑になることがある。ある意味では、全体的な構造は、図10に示したような階層木402と見なすことができる。きわめて高い視点から、システム400は、システム管理レベル404、伝送サーバレベル406及びエンドポイントレベル408の3つの論理レベルに見える。図10に示したボックスは、複数の極めて異なる方法で実際に実現することができる論理機能を表わす。
【0093】
木402の最上レベル404は、システム400の管理機能に関係する。このレベル404は、システム400を使用することを許可された全てのコンピュータのデータベース410(図12を参照)を保持し、個々のピアツーピア通信を確立することを許可するかどうかを制御する。
【0094】
セキュリティもこの管理レベル404から制御される。低いレベルの個々の通信接続は、管理レベル404から許可を受けなければならなず、そのような許可を受けた後で、低い管理レベルは、例えばそれらのレベル自体の間で暗号鍵を取り決めた後で追加接続を作成することができる。
【0095】
また、管理レベル404には、カスタマイズ可能な詳細レベルまで、作成された追加接続が通知され、低いレベルで生じるイベントを記録することもできる。そのようなイベントには、少なくともネットワークにそれぞれ試みられたアクセスがある。
【0096】
管理レベル404は、ネットワークの動作に関する管理レポートを作成することもでき、これはシステム400の制御と管理に極めて役立つ。
【0097】
最も低いレベル408には、「エンドポイント」412がある。これらのエンドポイントは、「ソフトフォン」(VOIP通話を処理するソフトウェア)とローカラーズした電子メールサーバを含む。しかしながら、エンドポイント412は、他の形のデータ通信ツールを含むこともできる。エンドポイント412は、システム400及びそれにより提供されるセキュアな通信方法を使用可能にするためにユーザのコンピュータにインストールされたキーコンポーネントである。各エンドポイント412は、本質的に、ユーザの場所に提供されるときはセキュアであり、従って、エンドポイント412での通信の記憶域は、決してデータ通信の安全性を損なうことはない。
【0098】
管理レベル404とエンドポイント412の間には、複数の伝送サーバ414で構成されたいわゆる分散「トランスポート層」406が提供される。この層406は、実際には、ユーザと管理者に見えないままであるが、この層は、2種類の通信、即ちアドレスと状態を決定する通信と実際のピアツーピアデータ通信の伝送を容易にするという点で、システム400の不可欠な構成要素である。エンドポイント412と管理層404だけが、トランスポート層406を構成する伝送サーバ414を介して通信する。これは、簡潔性と拡張性の利点を提供する。
【0099】
次に図11を参照し、管理レベル404について詳しく説明する。管理レベル404は、図11に示した例において、システム400の制御の効率的な管理を可能にする階層木構造を有する。管理層の分散した性質は、図11から明らかであり、階層の一番上には、1つの中央位置から実行されるAmteus グローバル管理ノード416があることが分かる。次に、例えば登録ユーザ間の通信を制御したい企業又は行政体(図示せず)のコンピュータで実施することができるクライアント管理ノード418(図11の例では1つだけ示した)が提供される。クライアント指定位置にあるクライアントは、図11に示した単一のクライアント管理ノード418を実行する。
【0100】
階層における次の層は、図11に3つ示した所与のクライアントの地域管理ノード422の層420である。これらの地域管理ノード422は、分散トランスポート層406(単に点線として表わした)を介してエンドポイント412(EP1〜EP3)に接続する。この最も低い管理レベル420は、地理に基づき、後で詳述するロードバランシングを含む幾つかの事柄にとって重要である。同様に、この例では、更に他のエンドポイントEP4 412が、トランスポート層406を介してAmteus グローバル管理ノード416で直接実施される管理機能を有する。
【0101】
次に、管理レベル404の働き方を説明し、例として示す。エンドポイント412によって表わされた各ユーザは、1つの管理ノード416、418、422、一般にその地域管理ノード422に登録される。この登録は、階層的管理木を上に送られ、その結果、登録詳細が、それより高いレベルの全ての管理ノード418、416に保持される。そのような管理ノード418、416に記憶された登録情報は、登録処理の間に収集されるとき、エンドポイント412の現在の動作状態と共にユーザに関する全ての詳細を含む。エンドポイント412間のピアツーピア通信を許可するかどうかに関する決定も、両方のユーザ登録詳細が入手可能な階層における最も低いレベルで得られる。そのようなエンドポイント412の動作状態に生じた変化は、より高いレベルの管理ノードに渡される。
【0102】
EP(エンドポイント)412は、一般に、電話及び/又は電子メールユーザである。図11に示した例では、EP1 412は、クライアントのロンドン支店に基盤を置く。EP1 412の詳細は、ロンドン地域管理ノード422と、それより高いレベルにある全ての管理ノード416、418に記憶される。EP2及びEP3 412は、クライアントのアテネ事務所に基盤を置く。そのような詳細は、アテネ地域管理ノード422と、それより高いレベルの全ての管理ノード416、418に記憶される。EP4 412は、Amteusだけが知っている個人Amteus加入者であり、従って、EP4 412はAmteus グローバル管理ノード416にだけ登録されている。
【0103】
EP2 412がEP3 412と通信したいと仮定すると、アテネ地域管理ノード422は、両方のエンドポイントユーザ412を知っており、従ってその要求は、アテネ管理ノード422によってアテネでローカルに処理される。詳細は、情報としてより高いレベルの管理ノード416、418に送られることがあるが、そのような高いレベルのノード416、518は、所望の通信チャネルの設定には必要ない。
【0104】
EP1 412がEP2 412と通信したい場合、EP1 412は、ロンドンのローカル管理ノード422に要求を出す。このロンドン地域管理ノード422は、EP2 412について何も知らず、従って、EP1の状態を通話設定になるように変更し、要求を階層木の上のクライアント管理ノード418に渡す。
【0105】
クライアント管理ノード418は、通話の両方の側を知っており、従って所望の通話設定を処理することができる。クライアント管理ノード418は、最新の状況情報を持っているのでEP2 416が使用中かどうかを知っているが、後で述べるように、これに関する見解は最新でなく、この見解が提供される可能性は僅かである。クライアント管理ノード418がEP2 416を使用中と見なした場合は、そのようにロンドン地域管理ノード422に通知し、ロンドン地域管理ノード422はEP1412に通知する。従って、セットアップの要求は、失敗に終わる。
【0106】
そうでない場合、クライアント管理ノード418は、EP1の状態を「通話設定」であるとマークし、要求をアテネ地域管理ノード422に下に渡す。アテネ地域管理ノード422は、EP2 416が現在使用中であることができる(即ち、クライアント管理ノード422の状態が実際には最新でなかった)。その場合、アテネ地域管理ノード422は失敗コード「使用中(busy)」をクライアント管理ノード418に返し、クライアント管理ノード418は、前の場合と同じように通信チャネルを設定する要求を取り消す。
【0107】
そうでない場合、アテネ地域管理ノード422は、通話要求をEP2 412に転送する。EP2 412は、通話を受け入れるかどうかを決定し、適切な応答を経路に沿ってEP1 412に返す。
【0108】
EP1 412がEP4 412と通信したい場合は、類似のプロセスが行われる。この場合、最初の要求が、その地域管理ノード422とクライアントノード418を介してAmteusグローバル管理ノード416まで完全に渡される。次に、Amteusグローバル管理ノード416は、EP4 412と直接通信して接続を確立する。
【0109】
前に使用した「ローカル」という語は、サーバに対して地理的に地方にあることを意味するものである。しかしながら、最も厳密な意味では、この用語は単に、サーバとエンドポイント間に相対的な直接接続があり、エンドポイントがそのサーバに登録されており、そのためそのエンドポイントがサーバに対してローカルになることを意味する。
【0110】
次に図12を参照すると、図10の階層402の伝送レベル406は、階層木構造で互いに接続された伝送サーバ414からなる。各伝送サーバ414は、メッセージを途中で記憶することなくある場所(エンドポイント)412から別の場所412への通信の伝送を容易にする役割をする。階層木の一番上には、主伝送サーバ424が提供され、これは、管理階層の一番上にあるAmteusグローバル管理(データベース)サーバ410に接続される。また、故障した場合の主伝送サーバ424のバックアップとして、ホットスタンバイ伝送サーバ426が提供される。階層の次のレベル430には、主伝送サーバ424に接続された3つの地域伝送サーバ1、2及び3 428が示されている。これらの地域伝送サーバ428は、次に、それぞれのエンドポイント1.1、1.2、2.1及び3.1 412と接続される。
【0111】
前述の伝送レベル406は、事前に定義されていない動的構造を表わす。より正確に言うと、ネットワークを構成するために伝送サーバ414を動的に接続する規則が定義され提供される。更に、図10に機能的に別の層として示した管理レベル404は、伝送サーバ406の階層ネットワークに実際に組み込まれ、ピアツーピア通信の設定に利用される。最後に、ネットワークには、ネットワークセキュリティを改善するセキュリティオーバレイが組み込まれている。この実施形態において、オーバレイは、ネットワークの全てのノードに適用される機能規則として実施され、即ち、その規則とは、ノードがエンドポイント412を既に知っていない限り、そのノードのそのエンドポイント412に対する通信を許可しないというものである。ノードが、所望のエンドポイント412の識別を個人的に知らないときは、通信の要求を階層木の更に上に渡す。
【0112】
図13を参照すると、各伝送サーバ414は、より高いレベルの伝送サーバ414に対するクライアントリンク(アップリンク)430及び/又は管理(データベース)サーバ410に対するクライアントリンク432を有する(この両方は、便宜上図13に示されている)。伝送サーバ414が階層木の一番上にあるとき、アップリンク430は、管理データベースサーバ410に対するものであるが、他の場合は、より高いレベルの伝送サーバ414に対するものであることに注意されたい。伝送サーバ木の一番下には、図12に関して前に説明したようなエンドポイント412がある。また、各伝送サーバ414は、ダウンリンク434、即ちサーバ接続を有し、その接続により、より低レベルの伝送サーバ414とエンドポイント412は、サーバ414に対する接続を開始することができる。各伝送サーバ414のアップリンク430は、TCP/IPクライアントであり、一方、ダウンリンク434はTCP/IPサーバである。
【0113】
各伝送サーバ414は、ネットワークアドレス変換を受けない環境で動作する。即ち、各伝送サーバ414はそれ自体の公開IPアドレス436を有し、このIPアドレスは、それ自体の伝送サーバID438と同様に動的に割り当てられることがある。このIPアドレスは、その伝送サーバ414に接続されたエンドポイントIDのリスト442、各エンドポイント412に対する接続の状態444、及びエンドポイント414と関連付けられた許可446と共に、ローカルデータベース440に記憶される。必要に応じてこの情報にアクセスし更新するためにデータベースサーバ448が提供される。データベース440に記憶されたエンドポイント(ユーザ)情報のリストは、後述するように構成される。
【0114】
データベース440には2つのリストが提供され、その1つは、現在オンライン444であるローカルに登録されたユーザのIDのコンパイルであり、もう1つは、ウォッチ(watch)が記録されたローカルに登録されたエンドポイント412のIDのコンパイル450である。ウォッチは、特定のエンドポイント412が接続されているが、例えば使用中のときに通信に利用できないときに記録される。ウォッチは、宛先エンドポイント412の状態を監視し、通信に利用可能になるとき、ウォッチのトリガ機構(図示せず)は通知プロセスを作動させる。通知プロセスは、所望の宛先エンドポイントに対する接続状態の変化を監視することに関心を記録したエンドポイント412及び伝送サーバ414の全てにメッセージを送る。更に、状態の変化は、階層ネットワークの更により高いレベルに通知される。
【0115】
データベース440は、エンドポイント412の1組の公開暗号鍵451も記憶する。これらは、後でより詳しく説明するように、様々なエンドポイント412から送られた暗号化されたメッセージを解読するために使用される。
【0116】
伝送サーバ414は、また、伝送サーバ414の現在の地理的位置を決定する位置決めモジュール452と、階層ネットワーク内の異なる隣り合った伝送サーバ414に対する接続を確認するハートビートモニタ454とを含む。サーバ制御モジュール456は、データベースサーバ448と共に、そのようなリンク、モジュール及びデータベースの全ての動作を管理する。
【0117】
ネットワークの伝送サーバ414は、エンドポイントと全く同じように管理システム404(図11に示した)による許可を受けなければならない。以上述べたように、各伝送サーバ414は、伝送サーバ414の役割をする許可と共に、データベース440にそれ自体のエントリを有し、ユーザIDを有する。
【0118】
伝送サーバ414は、位置決めモジュール452の機能により「位置認識(location aware)」する。これは複数の異なる方法で達成することができる。例えば、1つの単純な方法は、位置決めモジュール452をウィンドウズベースにすることであり、その場合、位置決めモジュールが動作しているシステムの現在のタイムゾーンを決定することができる。
【0119】
ハートビートモニタ454を使用することにより、全ての伝送サーバ414は、その親伝送サーバ414に規則的なハートビートを送信する(規則的なハートビートがある場合)。ハートビートは、伝送サーバの登録接続(ローディング)に関する更新情報を含み、親伝送サーバ414と子伝送サーバ414の間の通信リンクの存在を確認する信号である。ハートビートモニタ454の目的は、システム400のロードバランシングを制御することである。より具体的には、ハートビート情報は、発信(地域)伝送サーバ414に現在直接登録されているいくつかのエンドポイント412のカウント(使用カウント(usage count))を含む。各(親)伝送サーバ414は、ハートビートを受け取ると、同じレベルにある他の全ての伝送サーバのダウンリンクのIPアドレスとポートと、更に使用カウントのリストを提供するメッセージを返す。従って(図12において)、主伝送サーバ424は、伝送サーバ414からハートビートを受け取ったとき、それぞれの地域伝送サーバ1及び3 412のそれぞれのアドレス及び使用カウントを返す。
【0120】
次に図14を参照すると、この実施形態のこの様相のロードバランシング手順460の流れ図が示されている。図から分かるように、新しいクライアント(エンドポイント412又は低いレベルの伝送サーバ414)が、伝送サーバ414に接続しようとするとき、段階464で、伝送サーバ414が、新しいクライアントのハートビート信号を含む要求を受け取る。次に、伝送サーバ414は、段階466で、それ自体の記憶した使用カウントU1と、同じレベルにあり地理的に少なくとも近い(例えば、同じタイムゾーンの)他の伝送サーバ414の使用カウントU2、U3、U4を取り出す。次に、伝送サーバは、段階468及び470で、その使用カウントU1を、同じ階層レベルにある他の近くの伝送サーバ414のU2、U3、U4と比較する。使用カウントU1が、その仲間414の誰かの使用カウントU2、U3、U4より大きい場合は、段階472で、ピアツーピア通信を実現するために、新しいクライアントに伝送サーバ414(現在最も低い使用カウントを有する)に接続するように命じる応答を返す。次に、段階474で、現行伝送サーバ414との接続が断たれ、段階476でロードバランシング手順460が終了する。そうでない場合は、段階478で接続要求が受け入れられ、段階480でクライアントのユーザカウントが読み込まれ、段階482で、伝送サーバ414のローカル使用カウントが、クライアントのユーザカウントの大きさだけ増分される。その後で、ロードバランシング手順が終了する。
【0121】
この基本原理を更に高度なレベルに拡張することができる。例えば、受信伝送サーバ414は、自分の階層レベルと地理的位置で要求を受け入れることができると決定した後で、新しい接続に地理的に近く且つその接続をより適切に処理できる低いレベルの伝送サーバ414があるかどうかを調べる。これは、ユーザが伝送サーバの木の末端で接続された場合にいつでもシステム全体の性能が高まるので、有利であると考えられる。その理由は、ピアツーピア通信の大部分が、厳しい帯域幅で通常ローカルなボイスオーバーIP(voice over IP)トラフィックであるからである。従って、この主トラフィックをローカル伝送サーバレベルで維持することによって、階層システム406全体にこのトラフィックの負担がかからなくなる。そうでないと、このトラフィックによって、システム400がかなり遅くなる。
【0122】
新しい接続を受け入れる伝送サーバ414は、それ自体の親伝送サーバのアドレスを新しい子ユーザに通知する。また、その親伝送サーバ414に新規ユーザの接続を通知する。その後で、親伝送サーバ414は、新規ユーザが接続されているとみなす。
【0123】
接続された後で、新規ユーザ412は、メッセージを以下のカテゴリで伝送サーバ414に送信し始めることができる。
・管理要求
伝送サーバ414は、要求に自分自身の伝送アドレス/ポート438のタグを付けた後で、その要求を親伝送サーバ414に渡す。
・接続された伝送サーバ414に向けられたメッセージ。これは、TCP/IPによる従来の方式で送られ、特別の操作を必要としない。
・親以外の別のエンドポイント412又は伝送サーバ414に向けられたメッセージ。このメッセージは、送信元と宛先のエンドポイントのユーザIDを含む。伝送サーバ414は、現在接続されているユーザ(エンドポイント)のリストにあるユーザIDを調べる。このリストは、その伝送サーバ414に登録されたユーザのリスト442を調べ、対応するそれぞれの状態444を調べることにより作成される。ユーザを見つけた場合は、多くの場合一以上の低いレベルの伝送サーバ414を介して、そのユーザにメッセージが送られる。ユーザが見つからなかった場合は、メッセージが、伝送サーバの親伝送サーバ414に渡される。伝送サーバ木424の一番上に達しても宛先が見つからなかった場合は、送信元に失敗がレポートされる。このプロセスは、木の一番上のユーザIDから元のメッセージ送信元に有効に応答メッセージを返す。各伝送サーバの親414に記憶されたデータを確認するプロセスは、ユーザの各登録が木の上の各ノードの親に返され、その結果全ての接続の情報が木の一番上にあるという事実による。従って、所望のユーザが木424の一番上に見つからなかった場合は、そのユーザはネットワークに登録されていな可能性がある。
【0124】
エンドポイント412が、親伝送サーバ414に対する直接接続を失ったときは、その祖父伝送サーバ414に接続しようとすることを理解されたい。次に、祖父伝送サーバ414は、代替接続を元のレベルで見つけることができる。
【0125】
図10の階層402のエンドポイントレベル408で、各エンドポイント412は、その親伝送サーバ414に1つのクライアントTCP/IP接続を有する。この接続は、高いレベルの伝送サーバ414と管理サーバ410、404の両方へのアクセスに使用される。
【0126】
例えば、各エンドポイント412は、VoIP通信を容易にするためにユーザとの通信インターフェース(図示せず)を提供する。この実施形態において、各エンドポイント412は、いわゆる「マルチメディア」エンジン(図示せず)も使用する。このマルチメディアエンジンは、マイクロフォン、スピーカ又はヘッドホン、Waveファイルプレーヤ及びレコーダ、並びにビデオプレーヤ及びレコーダを構成する。マルチメディアエンジンは、また、音声を様々な波形式の間で変換し、減衰させ、増幅し、混合することができるディジタル信号処理モジュールを含む。マルチメディアエンジンの機能が当該技術分野で一般的ものであり、また熟練した本明細書の対象者は、そのようなエンジンを構成するために更に詳しい説明を必要としないので、マルチメディアエンジンについてはこれ以上説明しない。
【0127】
次に図15と図16を参照して、前述のシステム400を使用してピアツーピア接続を確立する方法500について説明する。方法500は、本質的に、第1の段階(図15に示した)で、指定されたエンドポイント412間に所望のピアツーピア接続を確立できるかどうかを設定し、第2の段階(図16に示した)で、発信元412と所望の宛先412の間にピアツーピア接続を確立する2段階プロセスである。ピアツーピア接続を確立した後で、標準のインターネット通信プロトコルを使用して(この実施形態では専用UDPチャネル372を介して)、発信元412と宛先412間のセキュアな直接双方向通信が可能になる。以下の説明は、前述の第1と第2の段階に関するものである。
【0128】
エンドポイント412間でピアツーピア(P2P)接続を確立することができる。これらの接続は、次に、現在の実施形態では音声と電子メールデータを送信するために使用されるが、他の通信形態も使用することができる。
【0129】
第1の新しいP2P接続の必要性は、最初に、例えばエンドポイント412でエンドユーザが別のエンドユーザにVoIP電話をかけることを決定したときに生じる。この段階で、接続の発信者(発信元)は、所望の宛先のネットワークアドレス(ターゲットユーザのID)しか知っておらず、その発信者は、ターゲットユーザの状態(即ち、ユーザがオンラインか、使用中か、など)を知らない。(発信者は、アドレス帳により、ターゲットユーザが最近オンラインであったことなどを知っている場合があるが、現在の状態を確信することはない。)
【0130】
次に図15を参照すると、第1の段階を実施する方法500は、最初に、発信元ユーザ412が段階502で、「私(ユーザS)はユーザDと通信したい。」という形の要求を伝送サーバ414に送る。伝送サーバ414は、接続ユーザ412のリスト442、444を調べて、段階506で、ユーザDが見つかったかどうかを確認する。接続されたユーザD412を見つけた場合、段階508で、ユーザD412が通話可能かどうか確認する。そうでない場合は、段階510で「失敗−使用中(Failed - Busy)」の応答を返し、段階512でユーザDに対するウォッチを設定することが好ましい。最後に、ユーザSは、段階514で所定の時間期間待ち、次に再び接続を試み及び/又は単にユーザDの可能状態の変化に応じて現行伝送サーバで作動しているウォッチの通知を待つ。しかしながら、段階508でユーザDが通話可能な場合は、段階516で、伝送サーバ414が、ユーザSとユーザD両方の状態を「通話設定処理中」状態に変化させる。次に、伝送サーバ414は、段階518で、できるかぎり現行伝送サーバ414より低いレベルの他の伝送サーバ414を介してユーザDに要求を送る。この時点で、ユーザDは、段階520で見つかり接続されたと見なされ、プロセス500は、図16に関して後で述べるように続く。
【0131】
次に、通信に使用可能になるという状態の変化がユーザDの状態がに生じた場合、このことが、ユーザDのローカル伝送サーバ414に通知され、ユーザSのウオッチ設定が作動する。次に、ユーザSは、段階514で、ユーザDの通話可能性の通知を受け、第1の段階が再び始まることができる(前に述べたように)。代替又は組み合わせにおいて、ユーザSは、段階514で、図15に示したように最初からプロセス500を再開する前に所定の時間待つことができる。
【0132】
段階506で行なった確認から判断されたように、ユーザDが、伝送サーバ(TS)に現在接続されていない場合は、段階522で、親伝送サーバ414が存在するかどうか判断するために確認が行なわれる。親伝送サーバ414が存在する場合は、段階524で要求が親伝送サーバ414に送られる。その後で、親伝送サーバ414は、段階526で、現行伝送サーバと見なされ、プロセスは引き続き、現行伝送サーバ414が、段階504で登録されたエンドユーザ412のリストを確認する。段階522で行った確認によって親伝送サーバ414がないと判断された場合、伝送サーバは、段階528で、接続失敗を示す応答をエンドポイントに送り、段階530でプロセスが終了する。
【0133】
伝送サーバ414に高いレベルの伝送サーバ414から到着した発信要求は、ユーザが接続されていない場合に、要求を来た場所に転送するのではなく失敗を返す点以外は全く同じように処理される。
【0134】
次に図16を参照して、通信プロセス500の第2の段階を説明する。ユーザDは、接続された後で、ピアツーピア通信を容易にするために直接接続できるように、現行IPアドレスとポート番号をユーザSに伝えなければならない。従って、ユーザDが、ユーザSから呼を受けとったときにまだオンラインで且つ使用可能な場合に、段階532でその状態を「通話設定」に変化させる。次に、ユーザDが、段階534でRINGING1メッセージをその親に送り、親は必ず伝送サーバ414になる。また、RINGING1メッセージは、発信者(ユーザS)のユーザIDを含み、それにより、中間伝送サーバ414は、そのメッセージを、オリジナル発呼要求と同じ仕組みを使用して返すことができる。
【0135】
また、伝送サーバ414は、段階536でRINGING1メッセージを受け取ると、最初に、段階536でUDP(ユーザダイアグラムプロトコル)チャネル372を構成する。次に、段階540で、UDPチャネルの外部IPアドレスとポート番号を含むRINGING2メッセージを構成し、また段階540でこのメッセージをエンドポイントユーザDと発呼者のエンドポイントユーザSの両方に送る。RINGING2メッセージは、RINGING1メッセージを受け取った伝送サーバ414のユーザIDも含み、その理由は、そのユーザIDがピアツーピア接続を確立するために使用されるからである。
【0136】
伝送サーバ414がRINGING1メッセージを決して送信しないことを理解されたい。従って、伝送サーバに到着したRINGING1メッセージは、常に、エンドポイント412から直接来たと見なされる。
【0137】
エンドポイント412が、段階542でRINGING2メッセージを受け取ると、エンドポイント412は、段階544で、通話設定状態であるかどうか確認する。そうでない場合は、段階546で、通話に対しての指定されたものを全てリセットし、段階530でプロセス500は終了する。別の状況では、各エンドポイント412が、段階548で、UDPチャネルを設定し、段階550で、RINGING2メッセージで指定されたポートにメッセージを定期的に送り始める。これは、被呼者に最も近い伝送サーバ414になる。一般的なネットワーク障害が何もなければ、これらのメッセージのほとんどは正確に到達するはずである。
【0138】
ユーザDに最も近い伝送サーバ414が、各エンドポイント412から最初のUDPメッセージを受け取ったとき、段階552で、エンドポイントのUDPチャネル372の(後述するように、後で変換され可能性がある)ネットワークアドレスとポート番号を抽出する。伝送サーバ414は、次に各エンドポイントのUDPチャネル372に応答を返すことができ(図示せず)、この応答は、UDPネットワークアドレスと他のエンドポイントのUDPチャネルのポート番号を含み、これらの応答は、ファイアウォールが存在する場合でも各エンドポイントに到達するはずである。(エンドポイントが最初に伝送サーバに書き込むので、これは、エンドポイントにある通常のファイアウォールの働きによって可能なはずである。)
【0139】
伝送サーバ414が、両方のエンドポイントからパケットを受け取った後で、伝送サーバ414は、そのUDPポートを外部からどのようにアドレス指定するかを知る。次に、伝送サーバ414は、段階554で、他のエンドポイントのアドレスを伝えるTALKDIRECTメッセージを各エンドポイント412に送る。段階556でそのようなUDPアドレスを受け取った後で、エンドポイント412は、発信元エンドポイント412と互いに通信して、段階556で宛先エンドポイント412への直接UDP通信チャネル372を設定することができ、次にプロセス500は、段階530で終了する。
【0140】
ほとんどの場合、前記の手順により、これら直通通信を問題なく確立することができる。しかしながら、ネットワークアドレス変換(NAT)がエンドポイントでのファイアウォール動作と同時に存在する場合は、問題が生じることがある。そのような問題は、多くの状況で、第1の実施形態の図9aから図9iに示した例を参照して前に述べたような克服することができる。
【0141】
第1と第2の実施形態の両方に使用される手法は、更に後で詳しく説明され、NAT352、358の様々な全ての組み合わせを処理する仕組みについても説明される。
【0142】
ネットワークアドレス変換器(NAT)352、358は、広義には、対称と非対称2つのクラスの変換機能に分類される。対称NATは、パケットの宛先に関係なく同じインターネット側アドレス及びポートの組み合わせを使用し、一方、非対称NATは、宛先ごとに異なるインターネット側アドレス/ポートの組み合わせを使用する。この理由が何であるかはっきりと分からないが、未知の発信元からデータパケットを受け入れないことが賢明であるという確信に基づくと考えられる。
【0143】
これらのNATの必要性に関して少し考えると次のことが分かる。1.受信者は、各パケットが誰から来たかを知ることができ、NATの必要なしに未知の発信元からのパケットを必要に応じて容易に拒否することができる。2.インターネットパケットのIPアドレスとポートは偽造が容易である。NATによるそのような厳格な動作は、長い時間かなり有能なハッカーを阻止できる可能性は少ない。
【0144】
ファイアウォールは、また、ピアツーピア通信を確立しようとするときに問題を引き起こす可能性がある。通常のファイアウォール動作は、「話しかけられるまで話してはならない」という規則を課すことである。AとBが互いに話したい場合は、A又はBのどちらが最初に話さなければならない。次に、他方が応えることができる。しかし、Aが最初に話し、Bがファイアウォールの後ろにある場合、Bは、Aにパケットが書き込まれるまでパケットが見えない。
【0145】
適度に有効なファイアウォールの挙動は、前述のように規則が実施されることを要求する。実際には、多くのファイアウォールは、この規則を「話しかけられる前に話す人は、再び聞かれることはない」と解釈する。そのような挙動は、ピアツーピア通信チャネルを確立しようとする際に深刻な問題を引き起こすことがある。
【0146】
前述の実施形態において、状況を改善する幾つかの手順が実施される。最初に、非対称NATが通常、新しい宛先に書き込むために任意のポートを開かず、元のポート+1(或いは、第1と第2の書き込みの間に行われた回数により2、3等)になることが多いことを理解されたい。この実施形態において、非対称NATに遭遇したとき、RINGING2メッセージに示されたポートアドレスより上のいくつかの連続するポートが、この可能性に対応するために書き込まれる。
【0147】
幾つかの製造業者は、ファイアウォール/NATが、一般に、動作を調べセキュリティ制約に従って修正される場合があるuPnP(ユニバーサルプラグアンドプレイ)インタフェースを実施することを表明している。この実施形態は、伝送サーバ414で実施されたuPnPインタフェース(図示せず)を含む。
【0148】
一部のケースでは、ファイアウォールの実施が厳密なため或いはNAT352と358が両方とも非対称であるため、単純に直接ピアツーピア接続を実行することができない。そのような場合、この実施形態は、信頼できる仲介の役割をするローカル伝送サーバ414でメッセージを「返送する」ように構成される。これにより、ローカル伝送サーバ414が常にローカル非対称NAT352、358に知られているように未知送信者の問題が緩和され、その結果、例えばファイアウォールでの最も厳密な規則でも、そのような間接的擬似ピアツーピア通信が妨げられなくなる。更に、跳ね返されたパケットが、信頼できる仲介の役割をする伝送サーバ414によって最小限の分析で且つ必ず記憶なしに転送されるようにすることによって、そのような間接通信チャネルのセキュリティが低下する可能性が低くなる。
【0149】
ファイアウォール動作のばかげた(極めて厳しい)解釈に遭遇した場合に、このシステムは、ある方向で真のピアツーピア通信を実施し、他の方向でローカル伝送サーバ414で跳ね返るように構成される。この変形例は、安全性の低下が最小になるので行う価値がある。例えば、電子メールを伝送する場合、電子メールが直接送られ、肯定応答が跳ね返されるように構成すると有利である。
【0150】
以下に、非対称NAT352、358があるはずであること或いは厳密なファイアウォールが適所にあることをシステム10が自動的に見つける実際の方法を説明する。ハイレベルの観点から見ると、図16に関して前に説明したように、ローカル伝送サーバ414が、両方のエンドポイント412のUDPポートのアドレスを知っているとき、ローカル伝送サーバ414は、他方のエンドポイントのアドレスを示すTALKDIRECTメッセージをそれぞれに送信する。エンドポイント412は、直接通信することを試み、またタイマー(図示せず)を設定する。パケットを直接受け取った場合、伝送サーバ414には、接続が通話中であることが伝えられ、タイマーが停止されそれ以上使用されない。しかしながら、パケットを受け取らずタイマーが作動した(即ち、所定の時間期間が経過した)場合は、TALKTHROUGHメッセージが、伝送サーバ414に送られ、そこから他のエンドポイント412に送られ、指定宛先エンドポイント412のローカルサーバ414に更に他の通信が直接送られようとしていることを示す。その後で、メッセージは、所望のエンドポイント412に対してローカルな伝送サーバ414で「跳ね返される」。
【0151】
システム10は、被呼者が呼を受け入れる前にピアツーピア接続を確立し始める。呼が受け入れられない場合は、ピアツーピア接続はすぐに終了される。このシステム10は、呼が受け入れられたときだけプロセスを開始し、タイムアウト/TALKTHROUGH手順を実施する場合、これにより、例えば音声リンクを確立する際の有害な遅延が生じる可能性がある。これはまた、大部分の呼/電子メール(ユーザがログインした場合)が受け入れられるケースである。
【0152】
次に、本発明の第3の実施形態を図17から図20に関して説明する。第3の実施形態は、セキュリティに関する問題を除き第2の実施形態と極めて似ている。より具体的には、第3の実施形態は、後述するような頑強なセキュリティシステムにより各ノードに記憶された許可446を代用する。
【0153】
先行技術のセキュアでない通信システムは使用できず、そのような通信システムは、登録ユーザのセキュリティを損なう好ましくないユーザを得る。既知のセキュアでない製品は、より多くの人がシステムを使用するときに、特性が高められそれにより「人気のある」システム自体を傷つける攻撃者を招くという事実によって、ユーザの数に固有の上限がある。この効果は、制御システムでの負帰還と少し似たものとして働く。
【0154】
第3の実施形態は、最初からセキュリティを組み込むことによってこのサイクルを減衰させる。システム10から攻撃者を完全になくすことはできないが、攻撃者がいることで登録ユーザのシステム10の可用性が損なわれないようにするために十分に効果的なセキュリティが組み込まれる。攻撃者を完全になくすシステムの設計が、実際には設計者の破綻の原因になることを理解されたい。
【0155】
第3の実施形態のセキュリティ要件は、以下の通りである。
要件1:NODEがシステム10に認証されなければならない。
要件2:NODEを介したTSリンクへの通信が機密でなければならない。
要件3:CLIENTが互いに認証されなければならない(相互認証)
要件4:CLIENTとCLIENTの間の接続の通信が機密でなければならない。
【0156】
セキュリティ要件1と2の適合
以下の用語の多くは、RFC1510(ケルベロス認証システム)からのものである。ケルベロスは、ユーザ又はホストの識別を検証するために使用される認証メカニズムであり、これは、また、Microsoft Windows Server 2003のサービスに好ましい認証方法である。ケルベロス認証プロトコルは、クライアントとサーバ間又はあるサーバと別のサーバ間にネットワーク接続を確立する前に、これらの間で相互認証する仕組みを提供する。このプロトコルは、クライアントとサーバ間の最初のトランザクションがセキュアでない通信ネットワーク上で行われることを想定する。そのようなセキュアでない環境は、インターネットによって適切に例示することができ、この場合、攻撃者が、クライアントかサーバのどちらかを容易に装うことができ、正当なクライアントとサーバ間の通信を容易に盗聴したり改竄したりすることができる。
【0157】
ケルベロス技術は、共有する秘密を伴う認証技術に大きく依存する。基本的な概念は全く単純である。即ち、秘密を2人だけが知っている場合、一方の人は、他方の人が秘密を知っていることを確認することにより他方の人の同一性を検証することができる。パスワードは、秘密鍵暗号法を使用して秘密が維持される。より正確に言うと、パスワードを共有することより、通信パートナは、暗号鍵を共有し、この鍵の知識を使用して互いの同一性を検証する。この技術が機能するためには、共有鍵が対称でなければならず、即ち、単一の鍵で暗号化と解読の両方ができなければならない。一方の側は、ある情報を暗号化することによって鍵の知識を証明し、他方の側はそれを解読することによって鍵の知識を証明する。
【0158】
基本原理は、以下のように機能できる認証符号によって実施される。秘密鍵認証を使用する単純なプロトコルは、通信扉の外側にいる人が中に入りたいときに始まる。アクセス権を得るために、その人は、秘密鍵で暗号化された情報の形の認証符号を提示する。認証符号の情報は、プロトコルが実行されるたびに違っていなければならなず、そうでないと、通信を偶然盗み聞きした人が誰でも昔の認証符号を再使用することができてしまう。
【0159】
認証符号を受け入れると、扉の番人はその認証符号を解読し、中にあるものから解読が成功したかどうかを知る。解読が成功した場合、門番は、認証符号を提示した人が適正な鍵を持っていることを知る。2人だけが適正な鍵を持っており、門番がその1人であり、従って他の人は、認証符号を提示した人であるはずである。
【0160】
扉の外側にいる人が相互認証を望む場合は、少し違いのある同じプロトコルを逆に実行することができる。門番は、元の認証符号から情報の一部を取り出し、それを新しい認証符号で暗号化し、次に扉の外側で待っている人に新しい認証符号を与えることができる。次に、扉の外側にいる人は、門番の認証符号を解読し、結果をオリジナルの認証符号と比較することができる。合致した場合、扉の外側の人は、門番がオリジナルを解読できたことを知り、従って正しい鍵を持っているはずである。
【0161】
図17に、この実施形態でケルベロス技術を使用する方法の基本原理を示す。この場合、サーバ602、クライアント604、及び鍵配布センター606が提供される。クライアント604は、サーバ602に接続することを望み、最初に、サーバ602への有効接続を確立するチケットを獲得するために鍵配布センター(KDC)606に申し込む。チケットは、実質的に、既にシステム600が認証したサーバ602にクライアント604を認証させるために使用される。
【0162】
図18と図19を参照して次に説明するこの第3の実施形態のセキュリティ方式の詳細な説明では、以下に示す頭文字を使用する。
TS=伝送サーバ414。
NODE=CLIENTとTSの組み合わせ。単にCLIENT又はTSと呼ぶこともある。その場合、NODE608に関して説明する特定の役割は減少するが、他の機能は利用可能である。
AS=認証サーバ610。
KEY=NODE608に割り当てられたパスワードに基づく値。
TGS=チケット交付サーバ612
REALM614=AS610を共有するNODE608のコミュニティ。
【0163】
最初に、幾つかのNODE608を含む特定のREALM614と関連付けられた認証サーバ610が使用可能であると仮定する。AS610は、登録された各NODE608ごとの{USERNAME,PASSWORD}ダブレットの相当物をそのローカルデータベース616に記憶する。次に、図19に示したように、ネットワークに接続したいNODE_A608のクライアントが、インターネットブラウザ618を使って登録するKDC610のウェブサーバ620に接続し、それによりユーザ名「UserA」622とパスワード「pwdA」624を取得したと仮定する。
【0164】
手順の基本的な仕組みを、以下の頭文字を使って説明する。
NODE_A=ユーザ名Aを持つNODE608。
TGT_A=NODE_Aのチケット交付チケット626。
S_A=AS610とNODE_A608間のセッション鍵628。
K_AB=NODE_AとNODE_B間の共有鍵630。
TICKET_AB=NODE_AがNODE_Bに対するアクセス権を取得できるチケット632。
{X}K_Y=鍵K_Yによって暗号化された値X。
【0165】
次に図18と図19を参照すると、認証プロセスの最初で、NODE_A608が起動し、以下に示すようにシステム600に認証される。
1.NODE_A608は、TS414に接続され、AS_REQ634メッセージを、NODE_A608が属するREALM614のAS610に送信する(一般に、このメッセージは、AS610に接続された状態のTS414が見つかるまで階層ネットワークを遡る)。
2.AS610は、セッション鍵S_A628を生成し、pwdA624で共に暗号化されたTGT_A626とS_A628を含むAS_RESPメッセージ636を返す。
【0166】
また、AS610は、認証セキュリティを高めるために暗号化されたTIMESTAMP(図示せず)を返すこともできる。これは、AS610が、ネットワーク時間プロトコル(NTP)又は単純なNTP接続によって信頼できるソースから時間を受け取り、NODE608が、システム600の認証を受けるときにASの時間と同期されることを仮定している。NODE608は、ASから送られたTIMESTAMPをその現行Win32チックカウントと関連付け、自分自身のTIMESTAMP値を生成する必要があるときは新しい現在時刻を計算しなければならない。
【0167】
NODE_A608が認証された後で、ネットワークに参加するために現在「リンク」しなければならない(即ち、VoIP呼を行ない受けることができる)TS414の名前がネットワークから通知され、またターゲットTS414をNODE_B608と呼ぶと仮定する。タイムスタンプが使用されている場合、手順は以下の通りである。
1.TGT_A626とNODE_B608の名前を含むTGS_REQメッセージ638をAS610に送る。
2.AS610は、K_AB630(S_A628で暗号化された)とTICKET_AB632を含むTGS_RESPメッセージ640を返す。
3.NODE_A608は、K_AB630の値を抽出し、現在のTIMESTAMP値を計算し、認証符号を{TIMESTAMP}K_ABとしてNODE_B608に生成する。NODE_A608は、{TIMESTAMP}K_ABとNODE_B608へのTICKET_AB632を含むAP_REQメッセージ642をNODE_B608に送る。
4.NODE_A608がリンクすることをNODE_B608が許可するために、NODE_Bは、TICKET_AB632を解読してK_AB630を抽出し、次に{TIMESTAMP}K_ABを解読してTIMESTAMPを検証できなければならない。これが成功したと仮定すると、NODE_B608は、NODE_A608がNODE_B608を認証することを可能にする{TIMESTAMP+1}K_ABを含むAP_RESPメッセージ644を返す。
【0168】
熟練した本明細書の対象者には、タイムスタンプを使用しない場合に以上の操作がどのように行われるか容易に明らかであり、従って、タイムスタンプなしに上記の一連のイベントを実行する方法の明示的な説明はこれ以上行わない。
【0169】
この時点で、NODE_A608は、NODE_B608を介してネットワークに「リンク」されている(実際には、NODE_AのCLIENT604がNODE_B608のTS414のサーバとなる)。
【0170】
以上の実施態様は、ケルベロス認証システムの適応されたサブセットに基づいており、基本的なプロトコル、メッセージ及びデータ構造を再使用するが、この実施形態の新しい認証技術をピアツーピア通信の状況で有効に使用できるようにする機能が異なる。
【0171】
セキュリティ要件3と4の適合
認証プロセスのこの段階を説明するために以下の頭文字を使用する。
DH_PK_A=CLIENT_Aのディフィー−ヘルマン公開鍵646。
DH_SK_A=CLIENT_Aのディフィー−ヘルマン秘密鍵648。
DH_PK_B=CLIENT_Bのディフィー−ヘルマン公開鍵650。
DH_SK_B=CLIENT_Bのディフィー−ヘルマン秘密鍵652。
K_AC=NODE_AとNODE_C間の共有鍵654。
【0172】
次に図19を参照すると、ネットワークに現在接続されているNODE_A608内のCLIENT_A604が、NODE_C608内のCLIENT_C604に電話をかけたいとき、この実施形態は、CLIENT604が互いに認証し、それらの間に確立された接続(ピアツーピア接続等)を介したその後の通信が、共有鍵K_AC654によって暗号化されることを必要とする。
【0173】
CLIENTとCLIENT間で可能な2つのタイプの認証を検討する。そのような認証の第1のものは、「誘導による認証(Authentication-by-induction)」と言われ、実質上、CLIENT_A604とCLIENT_C604間の接続を確立できる前にNODE_A608とNODE_C608間にあるはずの認証済みリンクチェーンに乗る。その手順は以下の通りである。
1.CLIENT_A604は、ディフィー=ヘルマン(DH)鍵ペアを生成し、DH_PK_A646を含むメッセージをCLIENT_C604に送る。このメッセージは、それらのクライアントを接続する認証済みリンクチェーン656を介して送られる(通信チャネル設定プロトコルの一部として)。
2.メッセージを受け取ると、CLIENT_C604は、そのメッセージが既に認証された発信元から送られたはずであると仮定する(CLIENT_C604は、その発信元を正式に認証する立場になく、従って、この形の認証の間接的な弱い表現が「誘導による認証」である)。
3.CLIENT_C604は、ディフィー=ヘルマン(DH)鍵ペアを生成し、DH_PK_B650の値を含むメッセージをCLIENT_A604に送る。メッセージは、同じ(異なってもよいが)認証済みリンクチェーン656を介してCLIENT_A604に送られる。
4.このとき、CLIENT_A604とCLIENT_C604は両方とも、共有鍵K_AC654を独立に計算する立場にある。DH_PK_A646又はDH_PK_B650を傍受する側は、K_AC654を計算し、CLIENT_A604又はCLIENT_C604に扮する立場にない。
5.CLIENT_A604とCLIENT_C604は、K_AC654を使用して、信頼性の高い通信を可能にするために、高度暗号化システム(AES:Advanced Encryption System)の大量の暗号鍵又はその等価物を生成する。
【0174】
概して、「誘導による認証」は、真の認証ではなく、むしろ次のように要約される。
「私は、認証済みの相手X(相手の名前がX)と機密通話を確立したが、私にはこれを検証する手段がない」(VoIP通話は、例えば電子メールのよりも心配が少ないことは明らかである)。
【0175】
また、AS610を使用してCLIENT_A604とCLIENT_C604が互いを認証できるTICKET632を生成することができるが、通信チャネル設定の一部としてこの操作を行う際の一時的オーバヘッドが大きすぎる。従って、「誘導による認証」は、この代案より優先的に使用される。
【0176】
第2の可能な認証のタイプは、Amteusシステム600に外部から提供されるが、Amteusシステム600が相互運用しなければならないものである。外部から提供される公開鍵インフラストラクチャ(PKI)が利用可能であり、またCLIENTが公開鍵使用可能(PKE)であると仮定する。そのような状況において、前述のプロトコルは、CLIENT_A604とCLIENT_C604間で送られたメッセージにデジタル署名するRSA暗号アルゴリズムに拡張され、その結果、強力な認証が利用可能になる(PKIは当該技術分野において十分に理解されているので、PKIの更に詳しい考察は本明細書で行わない)。
【0177】
この実施形態は、あまりセキュアでなくより実際的な「誘導による認証」手法を使用する。
【0178】
認証サーバの複製
先行技術のケルベロスシステムにおいて、認証用のセキュリティデータベースの管理はできるだけ単純に維持され、これと同じ原理がこの実施形態に適用される。この実施形態の特徴は、以下の通りである。
−静的データだけを維持し、セッション又は呼関連データ(即ち、動的データ)の記憶を回避しようとする。
−アカウントを作成し、アカウント詳細を修正し、アカウントを削除するために読み出し/書き込みのマスタコピーを維持する。
−マスターコピーを幾つかの読み出し専用コピーに定期的に複製する。
【0179】
クロスレルム認証
この実施形態では、複数のREALMS614があってよく、これらのREALMS614は、管理システム404のために階層的に組織される。この点で、異なるREALMS614内のNODE608間の認証(いわゆる「クロスレルム認証(cross-realm authentication)」と呼ばれる)が実行される。
【0180】
クロスレルム認証は、事実上、前述の既存のTGS(チケット交付サービス)システム600に乗る。REALM_A614内のNODE_A608が、REALM_B614内のNODE_B608にリンクしたい場合は、TGS_B638、340をREALM_A608用のAS610に登録する必要がある。このように、NODE_A608は、段階634で、単にTGS_AからTGT626を要求し、このTGT626は、NODE_B608に送るTICKET632を得て新しいリンクを達成するために、TGS_Bに送られる。
【0181】
レルム614が階層的に編成されている場合でも(図21を参照)、通常、2つの通信レルム614が、一方向だけの登録ではなく、互いに登録されなければならない。
【0182】
以下で、クロスレルム認証及び許可についてより詳細に説明する。しかしながら、その前に、図20aと図20bを参照して、実施形態で使用されるNODEセキュリティ動作の概要を説明する。
【0183】
一般に、NODE608はサブシステムの集合であり、その関連するサブセットを図20aと図20bに示す。NODE608に対する接続又はリンクが行なわれる。ここで、一時的でNODE−NODE間の暗号化を必要としない単純な接続と、より永久的な構成で、関連付けられた暗号鍵630、654を有するリンクとを区別する。
【0184】
図20aと図20bは、2つのNODE608を示し、これらのNODE68は両方とも同一のサブシステムを含む(即ち、これらのノードは、同じ実行可能なサブシステムの異なる例である)。親NODE608(図20a)は、データクライアント(DC)656がデータサーバ(DS)612に接続され且つKDC610がアクティブであるという点で主NODEである。子NODE608(図20b)は、DSに接続されておらず、従ってDC656とKDC610は存在するがアクティブではない。主NODE608は、そのセキュリティサービス660を使用して、その子から受け取った全てのセキュリティ要求を処理する。
【0185】
CLIENT604とTS414は、ハンドル(図示せず)を使用してSS660と通信する。ハンドルは、親NODE608へのCLIENT接続/リンク662か、子NODE608からのTS接続/リンク664かに関係なく、各接続又はリンク(即ち、それぞれのアクティブなサーバストリーム)と関連付けられる。
【0186】
NODE608が起動したとき、DC656は、DS658に接続しログインすることを試み、成功した場合はKDC610も初期化される。後で分かるように、CLIENT604が、同じREALM614内の別のNODE608にリンクできないので、主NODE608をそれ自体のKDC610に対して認証する必要はないことに注意されたい。
【0187】
ほとんど全ての場合において、CLIENTサブシステムは、親NODE608に対するリンク662を確立しようとする(このことは、主NODE608にも当てはまり、その場合、リンクは、後で示すようにクロスレルムである)。SS660は、親NODE608に送るセキュリティ要求を構築し更に親NODE608から受け取ったセキュリティ応答を処理するように指示される。親NODE608に対するリンクが確立された後で、CLIENT604は、リンクメッセージを暗号化するか又は解読するためにSS660に呼を送ることができる。SS660に適切な呼が行われずにCLIENT604がセキュリティメッセージを受け取った場合、即ちこのNODE608が、メッセージのターゲットでない場合、CLIENT604は、選択した宛先NODE608にメッセージが達して消費されるまで、メッセージをTS414に送って階層を更に下がる。
【0188】
子NODE608は、メッセージをTS414に通信する。TS414が、メッセージをセキュリティメッセージであると識別した場合は、SS660への適切な呼が行われ、すなわち、呼が失敗した場合或いはターゲットが階層を更に上った場合は、TS414は、親NODE608に渡すためにセキュリティメッセージをCLIENT604に送る。
【0189】
アクティブな(DS658に接続された)KDC610がNODE608で使用可能な場合は、このKDC610が主NODE608なので、TS414で子から受け取ったセキュリティ要求は、このNODE608によって満たされなければならず、それより高くは送られない。
【0190】
注:最も単純な実施態様は、CLIENT604がリンク構成の管理に幾つかの状態を割り当てることである。SS660は、CLIENT604やTS414に呼を返さない。サブシステムが緻密に一体化されており、その結果、CLIENT604とTS414が、セキュリティ要求及び応答を管理するために状態を維持しなければならないと仮定する。
【0191】
REALM614は、前述のように、(Windows Domainと類似の)1組の登録ユーザであり、この場合、各ユーザは、そのREALM614に登録され(一般に、ウェブサーバ620によって)、そのREALM614のDS612上に維持されたアカウント(図示せず)を有する。
【0192】
次に図21を参照すると、DS(データサーバ)612は、特定のREALM614の全ての認証データを保持し、このデータは、作成されるREALM614の外には広がらない。主NODE666は、実質上、REALM614のセキュリティの根本であり、セキュリティ要求は、階層を上に広がることを許可されない。
【0193】
動的データが階層を上下に伝わることができるようにするために、あるREALM614内の子NODE668を「より高い」REALM614内の適切な親NODE670に参加させる何らかの手段が必要であり、木トポロジーの性質は、そのようなリンク672を1つだけ必要とすることである。図20と図21は、この実施形態によって提供される解決策を示し、REALM A614の主NODE666は、「より高い」REALM B614内の親NODE670にリンクすることが許可される。このリンク672は、REALM A614の主666をREALM B614に対して認証しリンク672を作成できるようにDS B612内にアカウントが設定されるので可能である。
【0194】
リンク672がクロスレルムなので、ここで、呼データがREALM A614からREALM B614に伝わりREALM C614まで下りることができ、NODE X608は、NODE Y608に対してクロスレルムVoIP通話674を行うことができる。
【0195】
次に、クロスレルムリンクがどのように達成されるかを例示する詳細なシナリオを説明する。
【0196】
主NODE:起動
データサーバ(DS)612が既に動作していると仮定する。主NODE666は、DS612に対してローカルに起動し、一般に、DS612にログインしKDC用の鍵628を生成することを可能にするコマンド引き数が供給される(副NODEは、同じ引き数で起動される)。よりレベルの高いREALM614のアカウントにログインするために、GUIによって任意の{ユーザ名,パスワード}が供給される。
【0197】
1.ブートストラップシーケンスによって、DC(データクライアント)656がローカルDS612にログインするように指示される。
2.ブートストラップシーケンスは、手順procedureSecurityService::Initialise()を呼び出す。KDC610は、その鍵を生成し、DC656とハンドシェイクを確立する。
3.ユーザは、CLIENT604が(別のREALM614内の)親NODE670にリンクできるように、{ユーザ名,パスワード}を入力する。
4.CLIENT604は、手順SecurityService::CreateSecurityContext()によって親ノード656に対する新しい接続のハンドルを獲得する。
5.CLIENT604は、AS_REQメッセージ634を構築するために手順SecurityService::BuildAsReq()を呼び出し、次にAS_REQメッセージ634を親NODE670に送る。
6.CLIENT604は、AS_REPメッセージ636を受け取り、それを手順SecurityService::ProcessAsRep()に渡す。
7.CLIENT604は、接続したいNODEのIDで手順SecurityService::BuildTgsReq()を呼び出し、従ってSS(セキュリティサービス)660は、適切なTGS_REQメッセージ638を構築することができる。TGS_REQメッセージ638は、親NODE670に送られる。
8.CLIENT604は、TGS_REPメッセージ640を受け取り、それを手順SecurityService::ProcessTgsRep()に渡す。
9.この時点で、CLIENT604は、既存のリンク接続状態を促進するか、別の親NODE670への再接続を促進する(しかし、いずれの場合も、ターゲットNODEは、手順BuildTgsReq()呼で指定されたNODEでなければならない)。CLIENT604は、手順SecurityService::BuildApReq()を呼び出してAP_REQメッセージ642を構成し、次にCLIENT604は、それを親NODE670に送る。
10.CLIENT604は、AP_REPメッセージ644を受け取り、それを手順SecurityService::ProcessApRes()に渡す。この呼が首尾良く完了した際、SS660には、親NODE670へのリンク672上の暗号化/解読操作を支援するために必要なセキュリティコンテキストがあるはずである。
【0198】
非主NODE:起動
1.NODE608にはDSログイン引き数が供給されず、従って、ブートストラップシーケンスは、ローカルDS612にログインするようにDC656に指示しない。
2.ブートストラップシーケンスは、手順SecurityService::Initialise()を呼び出す。KDC610には鍵を生成するためのパラメータが供給されず、DC656は、KDC610がDS612に接続されないことを示す。
3.ユーザは{ユーザ名,パスワード}を入力して、CLIENT604が同じREALM614内の親NODEにリンクできるようにする(リンクは主NODE666に対するものでそうでなくてもよい)。
4.CLIENT604は、手順SecurityService::CreateSecurityContext()によって親ノードに対する新しい接続のハンドルを取得する。
5.CLIENT604は、手順SecurityService::BuildAsReq()を呼び出してAS_REQメッセージ634と構築し、AS_REQメッセージ634を親NODEに送る。
6.CLIENT604は、AS_REPメッセージ636を受け取り、それを手順SecurityService::ProcessAsRep()に渡す。
7.CLIENT604は、接続したいNODE608のIDで手順SecurityService::BuildTgsReq()を呼び出し、従ってSS660は、適切なTGS_REQメッセージ638を構築することができる。TGS_REQメッセージ638が、親NODEに送られる。
8.CLIENT604は、TGS_REPメッセージ640を受け取り、それを手順SecurityService::ProcessTgsRep()に渡す。
9.この時点で、CLIENT604は、既存リンク接続状態或いは別の親NODEへの再接続を促進する(しかし、いずれの場合も、ターゲットNODEは、手順BuildTgsReq()呼で指定されたNODE608でなければならない)。CLIENTは、手順SecurityService::BuildApReq()を呼び出して、CLIENT604が親NODEに送るAP_REQメッセージ642を構築する。
10.CLIENT604は、AP_REPメッセージ644を受け取り、それを手順SecurityService::ProcessApRes()に渡す。この呼び出しが首尾良く完了した時点で、SS660には、親NODEへのリンク上の暗号化/解読操作を支援するのに必要なセキュリティコンテキストがあるはずである。
【0199】
主NODE:子NODEからAS_REQ又はTGS_REQ要求を受け取る
主NODE666が初期化され、セキュリティ要求を受け入れることができるKDC610を有すると仮定する。
【0200】
1.TS414は、子NODE668からAS_REQメッセージ634を受け取る。接続/リンクがセキュリティコンテキストを有する場合は、メッセージを解読するために手順SecurityService::DecryptLinkData()が呼び出される。
2.TS414は、AS_REQメッセージ634を手順SecurityService::ProcessAsReq()に渡す。要求を満たすために、KDC610は、AS_REQメッセージ634からユーザ名を抽出し、そのユーザ名を使って(DC656により)DS612内に保持された(ハッシュされた)パスワードを要求する。
3.これが成功した場合、手順SecurityService::ProcessAsReq()はAS_REPメッセージ636を返す.(注:SS660が要求を処理しているとき、セキュリティコンテキストは不要である。この点は、SS660が応答を処理しているときと異なる)。
4.TS414は、AS_REPメッセージ636を、AS_REQメッセージ634を送った子NODE668に送る。
【0201】
主NODE666がTGS_REQメッセージ638を受け取った場合は、(リンクされるNODE608の(ハッシュされた)パスワードをDS612が要求すること以外)同じ手順に従う。
【0202】
非主NODE:子NODEからAS_REQ又はTGS_REQを受け取る
1.TS414は、子NODE668からAS_REQメッセージ634を受け取る。接続/リンクが次にセキュリティコンテキストを有する場合は、メッセージ634を解読するために手順SecurityService::DecryptLinkData()が呼び出される。
2.TS414は、AS_REQメッセージ634を手順SecurityService::ProcessAsRe()に渡し、この手順は、アクティブなKDC610が利用できないことを示すための適切なエラーコードを返す。
3.TS414は、親NODE670に渡すCLIENT604にAS_REPメッセージ636を送る。
【0203】
主又は非主NODE:AP_REQを受け取る
AP_REQメッセージ642を受け取るNODE608はどれも、首尾良くそのメッセージをローカルに処理するか、或いはエラーメッセージを返さなければならず、そのメッセージを渡すことはできない。
【0204】
1.TS414は、子NODE668からAP_REQメッセージ642を受け取る。既存のセキュリティコンテキスト、従ってリンクは、この接続に利用できないはずであり、従ってメッセージを解読する必要はない。
2.TS414は、AP_REQメッセージ642を手順SecurityService:: ProcessApReq()に渡し、この手順は、そのローカルNODEパスワード(KDC610ではなく)を使用してメッセージ642を処理し、返すための適切なAP_REPメッセージ644を生成する。手順SecurityService::ProcessAsReq()が成功した場合は、完全なセキュリティコンテキストが確立され、子NODE668に対する接続は、リンク促進状態である。
3.TS414は、子NODE668にAP_REPメッセージ644を返す。
【0205】
主又は非主NODE:親NODEからAS_REP又はTGS_REPを受け取る
主NODE666内のCLIENT604が、AS_REPメッセージ636又はTGS_REPメッセージ640を受け取る場合、主NODE666は、オリジナルAS_REQメッセージ634又はTGS_REQメッセージ638の発信元でなければならず、これについては、起動するケースを既に前に検討した(既存のセキュリティコンテキストがあってはならない)。
【0206】
AS_REPメッセージ636又はTGS_REPメッセージ640を受け取るNODE608が主NODE666でない場合は、要求は、適切な子NODE668に下げるためにTS414に送られる。この場合、親NODE670へのリンク672のセキュリティコンテキストがなければならず、受信したメッセージを解読するために手順SecurityService::DecryptLinkData()が呼び出される。子NODE668まで下がるリンク672には、セキュリティコンテキストがあってもなくてもよい(このNODE608にリンクするために、子NODE668が、AS_REQ634とTGS_REQメッセージ638を上の高いレベルのKDC610に送ってもよい)。
【0207】
主又は非主NODE:親NODEからAP_REPを受け取る
これについては、起動のケースに関しては既に説明した。
【0208】
以上の説明が、SecurityService::DecryptLinkData()等の幾つかの手順を参照しているが、これらの手順の詳細は、これらの手順の機能が所定の状況および前述の機能を実施するための比較的重要なことではなく、従ってこの詳細は、熟練した本明細書の対象者の技巧と知識の一部にであることを理解されたい。
【0209】
以上の実施形態は、登録ユーザの最新状態をオンラインで送信するプッシュメカニズムを使用して説明した。しかしながら、代替の実施形態において、これは、電子メールサーバが、電子メールを送る人を識別し、次にDSからその人の状態情報を要求するプルメカニズムによるものでもよい。プルメカニズムの利点は、こデータサーバの伝送オーバヘッドが最小になることである。しかしながら、プッシュメカニズムの利点は、電子メールサーバに使用し易いことである。
【0210】
本発明が、前述の特定の実施形態に限定されないことを理解されたい。例えば、送信される電子メールメッセージを、別々に暗号化された複数の部分及び各部分に分割することができる。次に、各部分をそれぞれの伝送サーバ機構に別々に送ることができる。各部分は、宛先に別々に送られ、指定受信者が解読し再構築することができる。これの利点は、1通の電子メールメッセージを傍受し解読を成功してもメッセージが開示されないことである。これは、通信のセキュリティを改善する極めて頑強な方法である。一般に、電子メールのテキストをサンプリングして、送られたメッセージの一部分を得ることができ、例えば5つのTSMを使用し、電子メールテキストの5番目ごとの文字をサンプリングして5つの電子メールテキストの内の1つを作成することができる。他の電子メールメッセージも、5番目ごとの文字でサンプリングされるが、その電子メールメッセージはそれぞれ、最初の電子メールメッセージと異なるオフセットを有することになる。
【0211】
本発明は、また、有線ネットワークを使用せずに、無線通信ネットワーク(WIFIを使用するネットワーク等)に適用可能であることを理解されたい。また、このピアツーピア通信システムにおける発信元及び宛先の通信装置として、コンピュータではなく、PDA(携帯情報端末)と移動電話を使用することもできる。
【0212】
最後に、熟練した本明細書の対象者は、PKIではない他の暗号化技術を使用することができることを理解するであろう。
【図面の簡単な説明】
【0213】
【図1】本発明の例示的な実施形態によるシステムの概略ブロック図である。
【図2】2人のユーザBobとAliceの間のピアツーピア通信を可能にするために図1のシステムをどのように使用できるかの例を示す概略図である。
【図3】図1の個人電子メールサーバの全体的な操作方法を示すブロック図である。
【図4】図3の方法のConnect from Clientサブルーチンのブロック図である。
【図5】図3の方法のMessage Receiveサブルーチンのブロック図である。
【図6】図3の方法のMessage Waiting To Sendサブルーチンのブロック図である。
【図7】指定受信者の固有アドレスを決定するための伝送サーバ機構とメールサーバ間の対話を示す流れ図である。
【図8】様々なエンティティによるシステムの様々な使用法を示す概略図である。
【図9a】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9b】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9c】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9d】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9e】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9f】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9g】図9aから図9fで行った調査を対称NATのケースと非対称NATのケースにどのように適用できるかを示す図である。
【図9h】図9aから図9fで行った調査を対称NATのケースと非対称NATのケースにどのように適用できるかを示す図である。
【図9i】図9aから図9fで行った調査を対称NATのケースと非対称NATのケースにどのように適用できるかを示す図である。
【図10】本発明の第2の実施形態の全体的な機能木構造を示す概略ブロック図である。
【図11】図10の木構造の管理レベルの階層的性質を示す概略ブロック図である。
【図12】図10の木構造の伝送サーバ層の階層的性質を示す概略ブロック図である。
【図13】図12の伝送サーバ層の一般的伝送サーバの機能要素を示す概略ブロック図である。
【図14】図10の管理層に対する新しい接続のロードバランシングのプロセスを示す流れ図である。
【図15a】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第1段階を示す流れ図である。
【図15b】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第1段階を示す流れ図である。
【図15c】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第1段階を示す流れ図である。
【図16】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第2段階を示す流れ図。
【図17】本発明の第3の実施形態においてケルベロス技術の原理をどのように適用するかを示す概略ブロック図である。
【図18】ネットワークに接続しようとする際の第3の実施形態の主な段階を示す構成図である。
【図19】ネットワークによるセキュリティの視点から中央データサーバに登録しその後でピアツーピア通信をどのように支援するかの詳細を示す概略ブロック図である。
【図20a】図19の階層ネットワークの親ノードの概略ブロック図である。
【図20b】図19の階層ネットワークの子ノードの概略ブロック図である。
【図21】ユーザコンピュータXとYの間でピアツーピア通話を実現する際にクロスレルムリンクがどのように達成されるかを示す概略ブロック図である。
【技術分野】
【0001】
本発明は、セキュア通信に関する改良に関し、より詳細にはセキュアなピアツーピア電子メール及びデータ通信ならびにボイスオーバーアイピー(Voice over IP)に関するがこれらに限定されない。本発明の更に他の様相は、通信ネットワークを保護し且つそのIPアドレス指定範囲を拡大するためにネットワークアドレス変換器(NAT)が提供されるときでも直接ピアツーピア通信を支援する方法を対象とする。本発明は、また、係る通信システムと係る通信システムを使用するネットワークにおいて極めて高いレベルのセキュリティを実現することにも適用される。
【背景技術】
【0002】
間接通信が望ましいときに通信ネットワークを介してメッセージを伝送する様々な方法がある。しかしながら、メッセージのコピーを記憶しそれをハッカーが読み取ることができる状態で本質的にセキュアでないため、この形のメッセージ送信と関連した固有の問題がある。WO03/014955A1に記載されたそのような問題の幾つかは、ピアツーピア通信を使用することにより対処されている。しかしながら、以前に提案され使用された解決策の主な問題は、そのような通信の設定の複雑さである。この先行技術の文書に提示された解決策は、通信を容易にするために相変わらず中央サーバの働きを必要とするため、本質的にセキュアでなく煩雑である。これにより、プロセス全体が面倒なものになりセキュリティ侵害に弱くなる。
【0003】
通信プロセスの間に記憶される電子メールのセキュリティを高める暗号化技術が知られている。しかしながら、暗号化技術は、完全にセキュアとは言えず、従ってハッキング技術の高度化により、本質的に実行可能な代案を提供しない。
【0004】
NATは、複数のコンピュータが、インターネットへの接続等の通信にアドレス空間を共用できるようにするために使用される装置である。NATには、平均的PCユーザの能力をはるかに超える複雑な機構がないと、ピアツーピア通信がNATの背後で正常に機能しないという欠点がある。ピアツーピア通信の状況におけるNATと関連する問題は、米国特許出願2004/0064584 A1に記載されている。
【発明の開示】
【課題を解決するための手段】
【0005】
前述のシステムを改良することが望まれており、より詳細にはよりセキュアなシステムが必要である。また、管理がより容易でユーザがより使い易いシステムを提供すること望まれている。特に、ピアツーピア通信を容易するためにユーザが中央サーバにログオンする必要がない通信システム、或いはピアツーピア通信の間ノードでのメッセージの一時的記憶さえ必要とする通信システムが望まれている。従って、理想的には「純粋な」ピアツーピア通信システムが必要とされる。
【0006】
本発明の一様相は、最もセキュアなピアツーピア電子メール通信が、例えば、セキュアでない環境、即ち送信元や宛先以外の通信経路内の場所にメッセージを記憶する必要がないものであるという認識にある。この場合、電子メールが送信されているときに、ハッカーが電子メールを読み取る可能性はほんのわずかである。例えばPKI(公開鍵インフラストラクチャ)を使って送信用の電子メールを暗号化することによって、送信中のハッキングの危険を最小にすることができる。
【0007】
より具体的には、本発明の一様相によれば、第1のリモート側コンピュータと第2のリモート側コンピュータの間でデータ通信媒体を介して電子メール通信等のセキュアなピアツーピアデータ通信を実行する方法であって、各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、第1のリモート側コンピュータにおいてデータ通信を生成する段階と、第2のリモート側コンピュータの現在の接続状態を確認する段階と、第2のリモート側コンピュータの接続状態からデータ通信媒体に現在接続されることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送信する段階とを含む方法が提供される。
【0008】
「記憶(storage)」という語は、本明細書で使用されるとき、完全なメッセージの記憶を指すことを理解されたい。そのような記憶は、無許可の第三者がメッセージの完全なコピーを不法に得る可能性を提供することになる。通信プロトコルは、多くの場合、例えばパケットに分割されるメッセージなどのメッセージの一部分の何らかの一時記憶を含む。メッセージの一部分のそのような一時的且つ部分的な記憶は、送信中のメッセージの完全なコピーを第三者が得ることをできなくするので、本発明のこの様相により許容可能である。
【0009】
従って、本発明は、送信元から宛先までの途中に完全なデータメッセージの非セキュアな記憶がないため、先行技術より優れた著しい改善を提供する。より正確に言うと、宛先がオンラインでない場合でも、宛先によってピアツーピア通信チャネルが確立されるまで、メッセージが常に送信元にセキュアに一時的に記憶され、その結果、データメッセージのセキュアでない記憶を途中でする必要がなくなる。
【0010】
本発明は、ユーザ名とそのIPアドレスの中央レポジトリがあるシステムで実施される。しかしながら、中央レポジトリは、実際のピアツーピア通信自体には使用されず、むしろ送信者の場所に提供された通信手段を更新する働きをする。ユーザは、中央レポジトリに登録され、ユーザ固有のIPアドレスの名前が割り当てられる。次に、登録されたユーザは、ピアツーピア通信を容易にする個人用通信サーバを自分のコンピュータにダウンロードしインストールする。登録ユーザが、個人用通信サーバを使用することにより決定されるようにオンラインになると、そのことが中央レポジトリに通知され、ユーザの状態をオフラインからオンラインに変化させることができる。この状態の変化は、プッシュメカニズムによって他の全てのユーザに通信することができ、その結果、受信者と送信者の両方がその瞬間に通信を送受信できるはずであるという情報により、既存のオンラインユーザと、接続されたばかりのユーザとの間で実行しなければならないピアツーピア通信を極めてセキュアに行うことができる。
【0011】
更に、前述のシステムには、メッセージ送信機能を制御するソフトウエアコンポーネントがダウンロードされクライアントのパーソナルコンピュータに常駐している。後で詳しく説明するように、電子メールメッセージ送信の実施例の場合は、電子メールサーバを含み、この電子メールサーバは、Microsoft OutlookTMなどのローカル電子メールクライアントと協力して、ユーザが中央サーバにアクセスすることなく、実際にはユーザ対話なしに、全てのデータメッセージの送受信を処理する。換言すると、クライアントのパーソナルコンピュータは、所望のピアツーピア通信を制御することができ、このプロセスは、ユーザの視点から見て極めて容易である。
【0012】
本発明の更に他の利点には、特に電子メールメッセージ送信に関して、スパム電子メールを受け取るのを防ぐ機能がある。電子メールアドレスが全て中央データベースによって認定されたとき、スパムの送信元を直ちに断つことができる。更に、従来の電子メールアドレスと違って、本発明では受信者のアドレスを容易に入手できない。
【0013】
また、ユーザに通話が可能な人を瞬時に通知することができ、すなわち、電話をかけたい人にこの状況情報がプッシュされたときは常にオンラインなので、VOIPを比較的容易に実現できることを理解されたい。VOIP接続は、インターネットを介しているため、無料であり、従って、ユーザが標準インターネット接続料の追加費用を支払うことなく長距離と近距離の通話をすることができる。
【0014】
従って、本発明により、ユーザは、業務と個人の機密情報を全く秘密に送受信することができる。また、本発明が、従来の電子メールと共に使用される場合、本発明は、故障、災害、物理的攻撃、又はサイバー攻撃が起きた場合にサービスの継続性を提供するバックアップシステムを従来の電子メールサーバに提供する。
【0015】
本発明は、ISP等の第三者が、受信した電子メールから広告や他の目的のために送信者や他の業務に関する個人情報を収集できなくする。また、高価な電子メールサーバ等の追加の装置が必要なく、また技術サポートの費用が減少し、コストを大幅に削減することができる。
【0016】
後で詳しく説明するように、本発明は、ファイアウォールより機能することができ、追加の構成を必要としない。本発明は、Microsoft OutlookTMやNovell GroupwiseTM等の既存の電子メールアプリケーションとシームレスに組み合わせることができる。
【0017】
IPアドレスが、受信者の実際のIPアドレスのときは、IPアドレスでのピアツーピア通信は比較的容易である。しかしながら、NATが使用されるときは、送信者が受信者を一意に識別することができず、NATのファイアウォールとしてのセキュリティ機能のために、ピアツーピア通信は困難になる。本発明の別の様相は、この特定の問題(後述する)を対象とする。
【0018】
本発明のこの様相は、また、通信サーバであって、この通信サーバを含む第1のリモート側コンピュータと第2のリモート側コンピュータとの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を実行するように構成され、各リモート側コンピュータのデータ通信ネットワークに対する接続のアドレス詳細及び現在状態を受け取る受信手段と、第1のリモート側コンピュータにおいてデータ通信を生成するメッセージ生成モジュールと、第2のリモート側コンピュータの現在の接続状態を確認する確認モジュールと、第2のリモート側コンピュータの接続状態から、第2のリモート側コンピュータがデータ通信ネットワークに現在接続されていることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送るように構成された伝送モジュールとを含む通信サーバを提供するとも考えられる。
【0019】
本発明の本様相は、また、通信システムであって、前述のような複数の通信サーバと、データ通信ネットワークによって複数の通信サーバに接続可能なデータサーバとを含み、データサーバが、通信ネットワークに対する各通信サーバの接続の現在状態を、各通信サーバの現在のネットワークアドレスと共に受け取り、収集し、記憶し、且つこの情報の少なくとも一部分を複数の通信サーバに転送して、それらの通信サーバが、複数の通信サーバ間でピアツーピア通信を行うことを可能にするように構成された通信システムにも適用される。
【0020】
本発明の第2の様相によれば、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のピアツーピアデータ通信を確立するのを支援するように構成された通信サーバであって、サーバが、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルに提供され、通信サーバがサーバネットワーク内の他の階層レベルにある他の通信サーバに動作可能に接続することを可能にする接続手段と、複数のローカルユーザコンピュータを通信サーバに登録する登録手段と、それぞれの登録したローカルユーザコンピュータの登録詳細を記憶するデータストアであって、登録詳細が、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含むデータストアとを有し、接続手段が、記憶した登録詳細をサーバネットワークの次に高い階層レベルにおける隣りの通信サーバに転送し、且つ階層ネットワーク内の低いレベルにある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶するように構成された通信サーバが提供される。
【0021】
伝送サーバの階層ネットワークの使用は、メッセージ送信ネットワークがより効率的に動作することができるので極めて有利である。詳細には、大量で大きなペイロードのメッセージ送信トラフィックによって通信ネットワークに大きな負荷がかかるとき、階層構造の通信媒体を使用することによって、通信システム全体に必要以上の負担をかけることなく多量のトラフィックをローカルに処理することができる。VoIPメッセージトラフィックは、特に重いペイロードを含むことがあり、利用可能な帯域幅の多くを使い果たすことがある。階層構造を使用してアドレス指定の詳細を分散的に記録することにより、通信ネットワークの特定の部分にトラフィックを局在化させ、それによりネットワークの他の部分の性能特性に影響を及ぼさないようにすることができる。例えば、ほとんどのVOIP通話が地理的にローカルな送信元と宛先の間にあるVOIP通信では、これは、性能的な大きな利点がある。
【0022】
本発明の第2の様相は、また、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援する方法であって、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルにある通信サーバ上で実施され、サーバネットワーク内の他の階層レベルにある通信サーバに対する動作可能なネットワーク接続を確立する段階と、複数のローカルユーザコンピュータを通信サーバに登録する段階と、それぞれの登録したローカルユーザコンピュータの、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含む登録詳細を記憶する段階とを含み、確立する段階が、記憶した登録詳細を、サーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに転送する段階と、階層ネットワーク内の低いレベルにおある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶する段階とを含む方法にも適用される。
【0023】
本発明の第3の様相によれば、送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援するために、ピアツーピア通信メッセージの指定受信者コンピュータを探索する方法であって、通信サーバの階層ネットワーク内で実施され、指定受信者コンピュータの識別と送信者コンピュータの識別を含むデータ通信の要求をローカルサーバに送る段階と、指定受信者がローカルサーバに知られているかどうかを判断する段階と、指定受信者がローカルサーバに知られている場合に指定受信者に関して記憶した詳細を取り出し、その詳細を送信者コンピュータに送る段階と、指定受信者がローカルに知られていない場合にサーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに要求を転送し、これにより該通信サーバがローカルサーバになる段階と、指定受信者が見つかるか或いは階層ネットワーク内の一番上にあるサーバの確認が終わるまで、決定する段階、取り出す段階、及び転送する段階を繰り返す段階とを含む方法が提供される。
【0024】
階層的通信ネットワークを使用するこの方法は、宛先アドレスを見つける手続きが先行技術よりもかなり高速になるため有利である。その理由は、最初に送信元に対する地理的ローカルアドレスが確認され、その後で階層ネットワークの高い方にあるリモートアドレスが徐々に、そのアドレスが見つかるまで又は一番上に達するまで確認されるからである。この場合も、多数の通信がローカル宛先に実際に向けられるときに、そのような通信を素早く見つけることができ、また通信サーバのネットワークの潜在的管理負担を軽減することができる。
【0025】
本発明のこの第3の様相は、また、送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立する方法であって、複数の通信サーバからなる階層的サーバネットワーク内で実施され、前述の指定受信者コンピュータを探索する方法と、指定受信者コンピュータの現在のグローバル通信アドレスを送信者コンピュータに通信する段階と、送信者コンピュータの現行グローバル通信アドレスを指定受信者コンピュータに通信する段階と、グローバル通信アドレスを使用して送信者コンピュータと指定受信者コンピュータの間でピアツーピア通信チャネルを設定する段階とを含む方法にも適用される。
【0026】
本発明の第4の様相によれば、第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するために使用される伝送サーバであって、第1のユーザコンピュータから、伝送サーバに登録された第2のユーザコンピュータに対する接続の要求を受け取る受信手段と、第2のユーザコンピュータに対する接続の現在の接続状態を検証する検証手段と、第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないこと分かった場合に、要求の詳細をウォッチとして記憶するデータストアと、検証手段に応答して、第2のユーザコンピュータの状態が変化して、第2のユーザコンピュータとのピアツーピア通信を現在確立することができることが示された場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る応答手段とを含み、検証手段が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認すると共に更新するように構成され、この更新から、第2のユーザの状態がオンラインに変化したことが分かったときに対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する伝送サーバが提供される。
【0027】
本発明のこの第4の様相による伝送サーバは、指定受信者の接続状態を監視する機構を備え、この機構は、メッセージ送信者の資源を有利に含まない。より正確に言うと、この伝送サーバは、指定受信者の接続状態を有効に監視することができ、ピアツーピア通信が可能になるように変化したときに、メッセージ送信者に通知することができる。これは、データメッセージをセキュアでない可能性のある場所に途中で記憶しないデータメッセージ送信を支援する。
【0028】
本発明の第4の様相は、また、第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するのを支援する方法であって、第1のユーザコンピュータから、ローカルに登録された第2のユーザコンピュータに対する接続の要求を受け取る段階と、第2のユーザコンピュータに対する接続の現在の接続状態を検証する段階と、第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないことが分かった場合に、要求の詳細をウォッチとして記憶する段階と、検証する段階に応答して、第2のユーザコンピュータの状態が変化し、第2のユーザコンピュータとのピアツーピア通信を現在確立したことを示している場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る段階とを含み、検証する段階が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認し更新し、この更新から、第2のユーザ状態がオンラインに変化したことが分かったときに、対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する方法で実現される。
【0029】
本発明の第5の様相は、ピアツーピア通信に対応できるようにNAT及びファイアウォールと関連した問題を克服する事柄に取り組む。本発明のこの様相は、実際のローカルアドレスがNATのリモート通信側に常に見えていない場合でも、受信者の実際のローカルアドレスの決定を含む指定受信者の能力の一連の通信(調査)の実施を送信することによってNATのマッピング機能を決定することができるという認識にある。そのような調査は、通信制御チャネルの使用と、指定受信者が、NATの変換機能を推定できるようにNATを介してメッセージ内のデータとしてそのローカルアドレスを送る重要な機能とを含む。他の調査は、潜在的な指定受信者に関する調査結果を提供する能力を含む。
【0030】
NATのマッピング機能を有効に特定する利点は、このマッピング機能を使用して、NATによって所望の単一受信位置に逆にマッピングされる適切にアドレス指定された通信をNATに送ることができることである。NATは、マッピング機能が特定されたことに全く気づかず、その結果、直接ピアツーピア通信に対応することができる。
【0031】
NAT及びファイアウォールと関連した問題を克服する代替の方法は、伝送サーバに対して確立されたTCP/IPリンクを使用して、ピアツーピア通信を支援するUDP通信チャネルの作成を支援することである。より具体的には、本発明の第5の様相によれば、第1と第2のユーザコンピュータの間で、少なくとも第1のユーザコンピュータの通信が第1のネットワークアドレス変換器(NAT)によって処理されるデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立する方法であって、第1のユーザコンピュータと伝送サーバの間で第1のNATによって確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続を要求する段階と、伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートする段階と、第1のユーザコンピュータにある第2のUDPポートを開く段階と、伝送サーバが第2のUDPポートの第1のNATアドレスを決定できるように、第2のUDPポートから第1のNATを介して第1のUDPポートにデータパケットを送信する段階と、伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを取得する段階と、第1と第2のユーザコンピュータの間にセキュアなピアツーピア通信を確立することができるように、第1と第2のユーザコンピュータのそれれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する段階とを含む方法が提供される。
【0032】
ピアツーピア通信を確立しようとするとき、NAT横断が大きな問題であることを理解されたい。本発明のこの第5の様相は、NATの1つが非対称の場合でも、ピアツーピア通信のNAT横断を可能にする単純で実行可能の解決策を提供する。
【0033】
本発明の第5の様相は、また、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、少なくとも第1のユーザコンピュータの通信が、第1のネットワークアドレス変換器(NAT)によって処理され、第1のNATによって第1のユーザコンピュータと伝送サーバの間に確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続の要求を受け取る要求受信手段と、伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する確立する手段と、TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートするレポート手段と、第1のユーザコンピュータに設定された第2のUDPポートから、第1のNATを介して第1のUDPポートに送られるデータパケットを受け取るデータパケット受信手段であって、伝送サーバが、第2のUDPポートの第1のNATアドレスを決定するように構成されたデータパケット受信手段と、伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを得る取得手段と、第1と第2のユーザコンピュータが間にセキュアなピアツーピア通信を確立できるように、第1と第2のユーザコンピュータのそれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する手段とを有する伝送サーバにも適用される。
【0034】
NAT横断に関係する最も複雑な状況は、ファイアウォールの実施が厳密か或いは両側に非対称NATがあるために、直接ピアツーピア接続を単純に実現できないときに起こる。この状況は、非対称NATを横断するように「擬似」ピアツーピア通信を確立することによって解決することができる。より詳細には、本発明の第6の様相によれば、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアな疑似ピアツーピアデータ通信チャンネルを確立する方法であって、両方のユーザコンピュータの通信が、第1と第2の非対称ネットワークアドレス変換器(NAT)によって処理され、それぞれの第1と第2の非対称NATを介した各ユーザコンピュータから伝送サーバへの伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを作成する段階と、第1のNATによる第1のユーザコンピュータと伝送サーバの間のTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、第1と第2のUDPポートのアドレスを、それぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートする段階と、第1のユーザコンピュータに第3のUDPポートを開くと共に第2のユーザコンピュータに第4のUDPポートを開く段階と、データパケットを第3のUDPポートから第1のNATを介して第1のUDPポートに送り、第4のUDPポートから第2のNATを介して第2のUDPに送り、それにより伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスとを決定できるようにする段階と、第1のUDPポートで受け取ったデータパケットを第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、伝送サーバからデータパケットを有効に返送することによって、第1と第2のユーザコンピュータ間の擬似ピアツーピア通信を確立するようにする段階とを含む方法が提供される。
【0035】
前述のように、擬似ピアツーピア通信は、本発明のこの様相が、信頼できる仲介者の役割をするローカル伝送サーバでメッセージを「返送する(bounce)」ことができる能力によって実現される。これにより、ローカル伝送サーバが常にローカル非対称に知られており、その結果ファイアウォールの最も厳しい規則でもそのような間接擬似ピアツーピア通信が妨げられないので、未知の送信者の問題が軽減される。更に、そのような間接通信チャネルのセキュリティが低下する可能性は、跳ね返されたパケットが、信頼できる介在者の役割をする伝送サーバによって最小限の分析で且つ必ず記憶なしに転送されるようにすることによって最小になる。
【0036】
ファイアウォール動作のばかげた(極めて厳しい)解釈に遭遇した場合、本発明のこの様相は、ある方向で真のピアツーピア通信を実現し、他の方向でローカル伝送サーバで跳ね返るように構成される。この変形例は、セキュリティの低下を最小にするために行う価値がある。例えば、電子メール送信の場合は、電子メールを直接送り、肯定応答を返すように構成すると有利である。
【0037】
本発明のこの第6の様相は、また、第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアな擬似ピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、両方のユーザコンピュータの通信が、それぞれの第1と第2の非対称ネットワークアドレス変換器(NAT)によって取り扱われ、伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを、各ユーザコンピュータから伝送サーバまで、それぞれの第1と第2の非対称NATを介して作成する作成する手段と、第1のユーザコンピュータと伝送サーバの間で第1のNATによるTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する確立手段と、第1と第2のUDPポートのアドレスをそれぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートするレポート手段と、第1のコンピュータに設定された第3のUDPポートから第1のNATを介して第1のUDPポートに送られ、第2のユーザコンピュータに設定された第4のUDPポートから第2のNATを介して第2のUDPに送られたデータパケットとを受け取り、それにより、伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスを決定できるようにする受け取る手段と、第1のUDPポートで受け取ったデータパケットを、第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを、第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、第1と第2のユーザコンピュータの間の擬似ピアツーピア通信が、伝送サーバからデータパケットを有効に返送することによって確立される伝送サーバにも適用される。
【0038】
本発明の第7の様相によれば、送信者コンピュータと指定受信者コンピュータ間のデータ通信ネットワークを介したピアツーピア通信を確立するのを支援するために、ユーザコンピュータを伝送サーバの階層接続ネットワークに接続する方法であって、接続ネットワーク内のローカル伝送サーバと同じ階層レベルにある複数のピア転送サーバのそれぞれの現行負荷を示す情報を受け取る段階と、ローカルユーザコンピュータをローカル伝送サーバに接続する要求を受け取る段階と、ローカルサーバの現行負荷をピアサーバのそれぞれと比較する段階と、ローカル伝送サーバの負荷が、ピアサーバの内のいずれかのピアサーバの負荷より著しく大きい場合に、最も低い負荷を有するピアサーバに接続すべきであることを示す応答をローカルユーザコンピュータに送る段階と、ローカル伝送サーバの負荷が、ピアサーバの内のどのピアサーバの負荷より著しく大きくない場合に接続要求を受け入れ、ローカル伝送サーバの現行負荷を更新する段階とを含む方法が提供される。
【0039】
本発明のこの様相は、通信ネットワークのロードバランシングの問題に取り組む。ローカルサーバの現行負荷の大きさを伝送サーバの階層内で維持することによって、ピアツーピア接続を確立する要求を常に効率的に再分配するができる。負荷の点でバランスのとれた通信を維持することによって、ネットワーク自体が効率的になり、性能の低下も最小限に抑えられる。
【0040】
本発明の第8の様相によれば、通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された認証済み通信サーバのネットワークにノードを結合する方法であって、認証サーバから受け取ったユーザ識別とパスワードを使用して、認証サーバにノードを認証させる段階と、ネットワークに加わるためにノードを接続しなければならない特定の通信サーバの識別の通知を受ける段階と、特定の通信サーバに接続するために、認証サーバから特定の通信サーバ及びノードに固有のデータを要求する段階と、特定の通信サーバ及びノードに固有のデータと、ノードと特定の通信サーバによって共有される共有暗号鍵とを受け取る段階と、特定の通信サーバ及びノードに固有のデータと、暗号鍵によって暗号化されたグローバルデータとを特定の通信サーバに送り、その結果、特定の通信サーバが、ネットワークにノードを認証させそれにより認証サーバからの検証を求めることなしにネットワークに参加するツールを有するようにする段階とを含む方法が提供される。
【0041】
本発明のこの様相は、ネットワークに参加したい新しいノードの認証手続を実施する極めてセキュアな方法を提供する。これは、メッセージ送信元が、ネットワークにアクセスすることでメッセージ送信元に特権が与えられ、例えば通信ネットワークの他のメンバと自由に通信することが許可されるピアツーピア通信が容易なネットワークに参加したい状況で特に重要である。
【0042】
本発明の第9の様相によれば、相互接続された伝送サーバノードの第1の階層レルム(hierarchical realm)を、相互接続された伝送サーバノードの第2の階層レルムに接続する方法であって、各レルム内にローカル認証サーバを提供する段階であって、認証サーバが、それぞれの階層レルムの最も高いレベルにある主ノードに接続され、レルム内の全てのサーバに関連した認証問題を制御するように調整される段階と、第1の階層レルムの主ノードを第2の階層レルムの認証サーバに登録する段階と、第1の階層レルムの主ノードを第2の階層レルムの認証サーバに対して認証する段階と、階層レルムを結合するために第1の階層レルムの主ノードが接続しなければならない最も下のノードサーバの識別に関する通知を受ける段階と、第2の階層レルムの最も下のノードサーバと第1の階層レルムの主ノードの両方の共有データと共有暗号鍵を受け取る段階と、受け取った共用データと共有暗号鍵を使って、第1の階層レルムの主ノードを第2の階層レルムの最も下のノードサーバに対して認証し、それにより第2のレルムの認証サーバからの検証を求めることなく第1と第2のレルムを結合する段階とを含む方法が提供される。
【0043】
本発明のこの様相は、独自の通信ネットワーク(レルム)を持つ企業が、結果的にセキュリティの損失なしに参加することができるという点で有利である。また、極めて大きいサイズの既存のネットワークになるものを結合するために、前述の簡単な方法で高い方のレルムの許可を修正するだけでよいので、各レルムの完全性は損なわれない。これは、ピアツーピア技術を使用して全く異なる組織の人の間の通信が極めてセキュアに可能になることを意味する。
【発明を実施するための最良の形態】
【0044】
図1を参照すると、本発明を実施するシステム10が示されている。この実施形態は、現時点で好ましい電子メール通信に関して説明される。しかしながら、例えばボイスオーバーアイピー(VoIP)やインスタントメッセージ等の任意の形態の電子通信伝送も使用できることを理解されたい。更に、本発明をインターネット等の広域ネットワークを介した通信に関して説明するが、本発明は、ローカルエリアネットワークによって実施することもでき、或いは移動体通信によって実現することもできる。
【0045】
システム10は、異なる場所に提供された2台のパーソナルコンピュータ(PC)12及び14を含む。第1のPCは、ローカルPC12であり、第2のPCはリモートPC14であり、システム10は、これらの2台のコンピュータ12と14の間のピアツーピア通信に対応している。各PC12と14は通信機能が同一であり、従って1台を詳しく説明するだけでよい。
【0046】
各PC12と14は、この実施形態において、それぞれ対応するインターネットゲートウェイ18及び20を介してインターネット16に接続されている。また、ローカルPC12にあるインターネットゲートウェイ18は、ローカルPC12が、全てローカルインターネットゲートウェイ18を利用するLAN24上の複数のローカルPC12の内の1台として提供されるようにNAT22を含む。また、リモートPC14は、LAN26上に提供されているが、このケースでは、NATは提供されておらず、リモートPC14は固有IPアドレスを有する。
【0047】
インターネット16に接続されたデータサーバ28も提供される。データサーバ28は、管理するユーザ名32とIPアドレス34のローカルデータベース30を有する。ローカルデータベース30は、また、登録ユーザの接続状態36を記憶する。これらのユーザ名32とアドレス34は、ローカルPC12とリモートPC14のものを含み、一般に知られているため本明細書で詳しく説明しない登録手順によってデータベース30に提供される。データサーバ28が、ローカルPC12やリモートPC14等の登録されたPC間のピアツーピア通信において能動的な役割を果たさないことを理解されよう。しかしながら、データサーバ28は、最新のアドレス情報34とそのアドレスの状態36、即ちオンラインかオフラインかについて、登録されたすべてのPC12、14を更新する。
【0048】
インターネット16に全て接続された複数の伝送サーバ機構(TSM)40が提供される。これらのTSM40は、ローカルPC12とリモートPC14間のピアツーピア通信の適切なアドレス34を確立する役割をする。各TSM40は、登録されたPC12及び14の可能な各アドレスに関するアドレス指定情報を記憶するための情報のローカル記憶装置42と関連付けられる。より具体的には、これらのローカル記憶装置は、PC識別44のリストとPC識別44に対応するIPアドレス46のリストを含む。IPアドレス46のリストにおいて、TSM40自体が所与のPCをアドレス指定する役割をする場合に直接IPアドレス46が提供される。そうでない場合、即ちTSM40がその役割をしない場合は、その役割をするTSM40のIPアドレス(或いは他の適切な識別)が提供される。TSM40の動作、特にNAT横断(NAT traversal)に関しては、後で詳細に説明する。
【0049】
ローカルPC12とリモートPC14はそれぞれ、TCP/IPによって個人メールサーバ52に接続されたMicrosoft OutlookTM等のメールクライアント50を備える。メールサーバ52は、それ自体のローカルデータ記憶装置54を備え、ネットワークインタフェース56にも接続されている。メールサーバ52は、ピアツーピア通信プロトコルを利用するために、ダウンロードされたソフトウェアで提供され、ユーザによってインストールされる。メールサーバ52は、オンラインになったことを知らせるためにデータサーバ28と連絡をとらなければならないので、データサーバ28のネットワークアドレスを記憶する。全てのピアツーピア通信は、メールクライアント50の動作に影響を及ぼさないように個人メールサーバ52によって透過的に経路指定される。
【0050】
この実施形態で使用されるネットワークインタフェース56とインターネットゲートウェイ18、20は、全く従来通りのものであり、本明細書で更に詳しい説明は必要ない。
【0051】
次に、システム10の一般的な動作モードを説明する。ユーザが、データサーバ28に詳細を提供することによってサービスに登録された後、個人電子メールサーバ52が、ユーザのPC12及び14にダウンロードされローカルにインストールされる。個人電子メールサーバ52は、電子メールクライアント50とネットワークインタフェース56に動作可能に接続され、これらは両方とも、PC12及び14上に既に提供されている。電子メールクライアント50との電子メール通信は全て個人電子メールサーバ52を介して行われる。
【0052】
メッセージを送信する際、ユーザは、電子メールを作成し、次にそれを個人電子メールサーバ52に送る。指定受信者の状態に関して記憶された最新情報で示されたように指定受信者がオンラインの場合、電子メールメッセージは、指定受信者のPC14に直接送信される。他の場合は、指定受信者のPC14がオンラインになり、それがデータサーバ28からの最新オンライン状態メッセージを受け取ることによって示されるまで、電子メールメッセージは、キューに記憶される。
【0053】
メッセージを送信する前に、指定受信者の実際の現行IPアドレス34が、TSM40によって決定される。このプロセスは、後で詳細に説明する。指定受信者の現行IPアドレス34が確認されると、電子メールメッセージのピアツーピア通信が実行される。
【0054】
図2を参照して、このプロセス60を実行する方法の例を、2人のユーザAlice62とBob64に関して説明する。プロセス60は、最初に、Aliceの個人電子メールサーバ52が、彼女がオンラインになったというメッセージをデータサーバ28に送り66、彼女がBob64にメッセージを送信したいことを示す68。次に、データサーバ28は、Bobの現行のアドレス詳細を返す69。次に、Aliceの個人電子メールサーバ52は、この情報を使ってメッセージをアドレス指定し、メッセージを暗号化し70、それをBobがオンラインになったときに送信するためにローカルに記憶する72。
【0055】
Aliceがオンラインであり(そのことを示すメッセージはデータサーバ28に既に送られている66)Bobがオンラインになった(そのことを示すメッセージをデータサーバ28に送る74)少し後で、データサーバ28は、Bob64がオンラインになったことを示すメッセージをすべてのユーザに送信する76。このメッセージは、Aliceの個人電子メールサーバ52によって受け取られ、記憶されたメッセージをBob64に直接送ることができる78。メッセージを受け取ると、Bobの個人電子メールサーバ52はそのメッセージを記憶する80。Bobの電子メールクライアント50が、入力メッセージ(取得メッセージ)を確認するときは82、メッセージが解読され84、Bob64が読むために電子メールクライアント50に送られる86。
【0056】
次に、図3から図6を参照して、各個人メールサーバ52で実行される実際のプロセスを説明する。
【0057】
ここで図3を参照して、個人電子メールサーバ52の動作90を説明する。動作90は、最初に、サーバ52を起動し92、データサーバ(DS)28に接続される94。データサーバ28のアドレスは、メールサーバ52が既に知っており、ローカルメモリ54に記憶されている。データサーバ28は、幾つかのTSM40のロケーションアドレスを提供し、その内の1つは、システム10が作業するのに利用可能でなければならない。次に、メールサーバ52は、TSM40との接続を確立しようとする96。その一部として、TSM40がオンラインかどうかを知る確認が行われる98。TSM40がオンラインでなく接続できない場合は、メールサーバ52はオフラインであると見なされる100。続いて、プロセス90は、インターネット16に再接続し102、その接続を前述のDS段階94に返すことができる。
【0058】
しかしながら、TSM40がオンラインの場合は104、5つの異なる選択肢(状態)のいずれかが利用可能になる。第1に、PC12及び14が遮断された場合106にプロセス90が終了する選択肢108がある。第2に、メールサーバ52を強制的にログアウトさせることができ110、それによりプロセス90が前述のようにオフライン状態100になる。第3に、メールクライアント50からメールサーバ52に接続しようとしている場合は112、メールクライアント50の信用証明が、既に記憶されている情報と照合され114、受け入れ可能な場合は、クライアントからの接続を行なうことができる116(図4を参照して後で詳しく説明するように)。クライアント信用証明が検証されない場合は、接続が拒絶され118、メールサーバ52が、オンライン状態に戻る120か、強制的にオフラインにされ122、インターネット16に接続し102、プロセス90を再開しなければならない。
【0059】
更に他の選択肢(状態)は、メールサーバ52がメッセージを受け取り124、そのメッセージをユーザに提示するためにメールクライアント52に提供することである。このプロセス124は、後で図5を参照して詳細に説明する。
【0060】
メールサーバがオンラインなった後で利用可能な最後の選択肢(状態)は、メッセージの送信に関する。送信を待っているメッセージがあるかどうかを判断するために確認が行われる126。送信するメッセージがない場合128、プロセス90は終了し、メールサーバ52はオンライン状態104に戻る。送信するメッセージがある場合は、図6を参照して後で詳しく説明するようなMessageWaitingToSendプロセス130が実行される。この後者のプロセス130が終了した後、メールサーバ52がオンライン状態104に戻る。
【0061】
次に図4を参照して、ConnectionFromClientプロセス116を説明する。プロセス116は、最初に、メールクライアント52(例えば、MSOutlookTM)からSMPT接続要求を受け取る140。プロセス116は、セキュリティのために、メールクライアント52が許可されているかどうか判断する142。許可されていない場合は、許可が失敗し144、ユーザに通知するメッセージがメールクライアント52に送られる146。そうでない場合、許可は成功し148、メールサーバ52は、メールクライアント50からの電子メールメッセージを受け取る150。これは、メッセージの要素が連続的に転送される多段階プロセスである(例えば、「送信元(from)」アドレス、「送信先(to)」アドレス、メッセージの本文の順で送られる)。このプロセスは、完全なメッセージを受け取るまで実行される。送信されるメッセージがまだ他にあるかどうかを判断する確認が行われ152、ある場合は、転送プロセス150、152を繰り返す。受信するメッセージがもうない場合154、メールサーバ52は、メールクライアント50から切断される156。
【0062】
受信したメッセージを処理する前に、メールクライアント50と関連付けられた送信許可を判断する確認を行うことができる158。メールクライアント50が、特定の指定受信者に送信する妥当な許可を持っていないと判断した場合は160、電子メールメッセージは送信されない162。しかしながら、送信許可が適所にある場合は、宛先ユーザ情報を取得する164。この段階は、全ての登録指定受信者のアドレス情報をデータサーバ28に要求し取得することを含む。このデータは、そのユーザのメッセージの暗号化に使用するためのユーザの公開鍵(図示せず)を含む。アドレス情報を別の電子メールメッセージと関連して最近既に受け取ってある場合は、この情報が、キャッシュに保持されている場合がある。従って、DS28からそのアドレス情報を探す前に、特定の指定受信者のアドレス情報がキャッシュにあるかどうかを調べるための確認(図示せず)を行うことができる。
【0063】
次に、指定受信者が認識済みメールユーザかどうかを判断する確認を行う166。認識済みメールユーザでない場合は168、システムがアドレスを知らないので、メールサーバ52は、メッセージを送信できないことだけをメールクライアント50に通知する170。しかしながら、指定受信者が登録ユーザとして認識されている場合は172、電子メールメッセージが、公開鍵インフラストラクチャ(PKI)暗号化技術を暗号化/解読に使用することができるように、前に取得してある指定受信者の公開鍵で暗号化される174。
【0064】
次に、暗号化したメッセージが、後で図6に関して説明するMessageWaitingToSendプロセス130に渡される。
【0065】
次に図5を参照して、MessageReceivedプロセス124を説明する。電子メールメッセージを受け取るために、メールサーバ52は、ログインされていなくてもよいが、メールサーバ52はインターネット16に接続されていなければならない。電子メールメッセージを受け取ると180、ユーザにそのメッセージが通知され182、これは、例えば通知受信ポップウィンドウ184の生成により実行することができる。受信した電子メールメッセージは、記憶装置54に記憶され、メールクライアントからの「取得(get)」(取り出し)が保留される。記憶装置は、コンピュータのハードディスクでよいが、最もセキュアな解決策では、受信したメッセージは、取り出されるまでRAMに記憶される。待機中に186、何らかの理由でメールサーバ52を遮断しなければならない場合188、未送付のメッセージは、半永久記憶装置(一般に、ハードディスク)に記憶され190、プロセス124は終了する192。
【0066】
メールサーバ52が、メールクライアント50から取得要求を受け取ったとき194、プロセス124は、メールクライアント50が許可されているかどうかを判断する確認をする196。許可されていない場合は、クライアント許可が失敗し198、その結果メールクライアント50の取得手順が失敗する200。このことは、受信者ユーザとAmteus(システム全体の動作を管理する権限を持ち、ユーザが登録される)に通知される202。
【0067】
メールクライアント50が許可された場合204は、2つの操作が並列に実行される。ローカルに記憶された受信者の秘密鍵を取り出し206、未送付の電子メールメッセージを取り出す208。次に、取り出した秘密鍵を使用してメッセージを解読する試み210が実行される。解読が成功しなかった場合212は、送信者に通知される214。これは、メールサーバ52が、送付が失敗したことを述べる電子メールを送信者に返すことによって実現される。次に、プロセス124は、前のクライアント許可が失敗した場合198と同じように続き、即ちメールクライアント「取得」手順が失敗する200。このことは、受信者ユーザとAmteusに通知される202。
【0068】
一方、解読が成功した場合は216、解読済み電子メールメッセージが、ユーザに表示するためにメールクライアントに転送され、即ちメールクライアントによる「取得」が成功する218。次に、メッセージ受信プロセス124は、送付されるメッセージがまだ他にあるかどうかを確認する220。メッセージ222がもうない場合は、メッセージ受信プロセス124は終了する192。送付されるメッセージが更に他にある場合224、プロセスは、クライアント認証が成功した段階204に戻り226、前に述べた通りに続く。
【0069】
次に図6を参照して、図3のメッセージ送信待機プロセス130について説明する。送信を待つ電子メールメッセージがキューにあるときは230、宛先の状態を判断しなければならない232。宛先の現在状態がキャッシ内にあるかどうか判断する確認234を行なう。現在状態がキャッシュ内にある場合は、キャッシュから取り出す236。現在状態がキャッシュ238内にない場合は、DS28から取り出し240、キャッシュが取り出された状態で更新される。
【0070】
宛先がオフラインかどうかを判断するために宛先の状態を確認する242。宛先がオフライン244の場合は、メッセージを送信することができず、暗号化されたメッセージは、単に、後で伝送を試みるためにメッセージ待機キューに記憶される246。一方、宛先がオンラインの場合は、暗号化されたメッセージをキュー(RAM内又はハードディスクから)から取り出し248、そのメッセージが、ピアーツーピアー通信として指定受信者に直接送られる250。電子メールメッセージの正確なアドレス指定方法とメッセージの送信方法の詳細は、図7に概略的に示されており、後で説明する。
【0071】
メッセージの送信を確認し252、何らかの理由で送信が失敗した場合254は、送信エラー状態256が入力され、エラータイプを決定する手順が続く。この状態256は、メールサーバ52が何らかの理由で停止された258場合のメッセージ送信待機プロセス130の最初になる。この送信エラー状態256において、Amteusには、並行してエラータイプの決定が通知される260。エラーが宛先がオフラインになっていることによるものかどうか判断する確認を行う262。これは、指定受信者の状態が変化したばかりの場合に起こる可能性がある。宛先がオフライン244の場合は、後で送信するために暗号化メッセージが記憶される246。これにより、このメッセージ送信待機プロセス130の手順が終了するが、プロセス130自体は終了せず、電子メールメッセージがキュー内で送信されるのをまだ待っている状態になる。
【0072】
エラーが、宛先がオフラインになっているためではない場合は、エラーには別の原因があり264、それが永久的な障害が一時的な障害かを判断する確認が行なわれる266。永久的な障害268の場合(例えば、ユーザがなくなったか、電子メールが大きすぎる場合)、メールサーバは、メッセージが送付不能であったと言うメッセージを受け取る270。しかしながら、エラーが一時的な障害272による(例えば、接続不良による)場合、暗号化された電子メールメッセージが、キューに戻されて記憶され242、このメッセージ送信待機プロセス130の手順が終了する。
【0073】
電子メールメッセージの送信結果に戻ると、メッセージが送付された274ことが確認された場合は、セキュリティのために電子メールのローカルコピーが削除される276。送信成功の通知がAmteusに送られ260、送信されるのを待っている電子メールメッセージがあるかどうかを判断する確認278が行われる。ある場合、プロセス130は、その電子メールメッセージの宛先(指定受信者)の状態の確認232に戻り、前述のように続けることを繰り返す。送信されるのを待っている電子メールメッセージがない場合は、処理するメッセージは他になく280、このメッセージ送信待機プロセス130の手順が終了する。
【0074】
次に図7を参照して、TSMの操作及び対話について説明し、詳細には、TSMが、ピアツーピア通信に必要な指定受信者のアドレス指定をどのように確立するかを説明する。
【0075】
最初に、TSMは、アドレス調査プロセスを常に実行しており、その結果、指定受信者への電子メールメッセージの送付が必要な時はいつも、その指定受信者のアドレス情報に関する最新の現行情報を所有していることを理解されたい。そのような調査は、改良したUDP(ユーザダイアグラムプロトコル)を使用して実行され、ユーザの実際の直接IPネットワークアドレスを確立するのに役立つ試みを含む。これらの試みは、NAT横断を可能にし、図9aから図9iを参照して後でより詳しく説明される。
【0076】
受信者の現行IPアドレスを決定し送信者に送るロセス274で、最初に、送信者に、リストを保持する主TSM40からTSMのリストが送られる290。次に、メールサーバ52は、リストの最初のTSM40にコンタクトする試みを行い292、成功したかどうか確認する294。コンタクトが成功しなかった場合296は、リストにある次のTSM40を取り出し、接続する別の試み292を行う。このプロセスは、1つの接続が成功する298まで続く。
【0077】
接続した後、特定のTSMが、このメールサーバ52の接続があることを他の全てのTSM40に通知する300。この接続は、ロードバランシングに関してどのTSM40を使用するのが最も便利かに基づいて行うことができる。次に、送信者メールサーバ52は、接続されたTSM40に、指定受信者メールサーバ52に接続したいことを通信する302。指定受信者は、ユーザIDで識別される。TSM40の仕事は、指定受信者メールサーバ52のIPアドレスを決定することである。次に、選択されたTSM40は、そのアドレス指定リスト(ローカルに記憶された)を確認して304、指定受信者メールサーバ52への直接接続を有するかどうか確認する。直接接続を有する場合、即ち受信者メールサーバ52の固有アドレスが分かっている場合は、その固有アドレスが、送信者メールサーバ52に渡される306。このアドレスは、図9aから図9iを参照して後で説明する技術を使用して決定される。受信者メールサーバ52に自分の固有アドレスがない場合は、少なくともTSM40(アドレスを有する)のアドレスがある。従って、この場合、選択されたTSM40は、アドレスを参照しそれを送信者メールサーバ52に返す306ことができるように問合せを適切なTSM40に中継する308。
【0078】
送信者メールサーバ52は、指定受信者メールサーバ52の固有直接IPアドレスを受け取った後で、受信者メールサーバ52に直接接続され310、標準のインターネットプロトコルを使用して電子メールメッセージを送信する312。即ち、電子メールメッセージは、メッセージをそれぞれ自分のヘッダを有するパケットに分割し、任意の適切な経路によって送られるそのようなパケットを受信者に送信し、そこで指定受信者に表わすために再び組み立てることによって、従来のIP通信がインターネット16で送られのと同じように送られる。
【0079】
図8は、ユーザ320、そのメールクライアント50、322、及び管理者324の様々なアクティビティを示す概略図である。様々なアクティビティは、図に示したように関連付けられた機能にグループ化される。より具体的には、ユーザ320は、関連付けられた機能の3つの異なるグループ、即ちセットアップアクティビティ326、支払いアクティビティ328、及びファイル関連アクティビティ330を実行することができる。メールクライアント50、322は、単一グループのメールサーバ関連アクティビティ332を実行することができる。管理者324は、単一グループのユーザ関連アクティビティ334を実行することができる。そのような各グループを構成する機能は、図8に示されており、熟練した本明細書の対象者には明らかであり、従って本明細書では更に詳しい説明は行わない。
【0080】
図9a〜図9fは、指定受信者の固有IPアドレスを決定する際にTSM40が実行する6つの段階の操作を示し説明する。より具体的には、図9aに最初の状態が示されており、ここで、クライアントA350は、NAT A352を介してサーバS354にTCP/IP接続し、同様にクライアントB356は、NAT B358を介してサーバS354にTCP/IP接続を確立している。段階1と示したこの段階で、クライアントA350は、クライアントB356とのピアツーピア接続を確立することを望む。
【0081】
図9bに示した段階2Aで、クライアントA350は、NAT A352を介してサーバS354にピアツーピア要求を行う。サーバS354は、この要求を受け取ると、IPアドレスS1ポートs1362のUDPポート360を開く。次に、段階2Bで、図9cに示したように、サーバS354は、既に確立してあるTCP/IP通信手段364によって、UDPポート360のアドレス(S1:s1)362をクライアントA350にレポートする。次に、クライアントA350は、アドレスA:a368で自分自身のUDPポート366を開く。このポートアドレス368は、NAT A352によってA1:a1370に変換される。一方、クライアントA350とサーバS354の間にはUDP通信チャネル372が設定される。
【0082】
図9dに示した段階3で、サーバS354は、図9cに関して説明したものと同じようにクライアントB356とのUDPチャネルを確立できるように、IPアドレスS2:s2378の第2のUDPポート376を開く。次に、サーバS354は、既に確立されているTCP/IP通信手段364によって、UDPポート376のアドレス(S2:s2)378をクライアントB356にレポートする。次に、クライアントB350は、アドレスB:b382でそれ自体のUDPポート380を開く。このポートアドレス382は、NAT B358によってB1:b1384に変換される。一方、図9eで分かるようにクライアントB356とサーバS354との間にUDP通信チャネル386が確立される。
【0083】
図9eを参照すると、指定受信者の固有IPアドレスを確立するプロセスの段階4が示されており、ここで、クライアントAとクライアントBの間でUDP通信を実行する方法を説明する。クライアントBは、アドレスB:b382を有するUDPポート380からアドレスS2:s2378を有するサーバUDPポート376にUDPパケットを送る。しかしながら、サーバS354には、それらのパケットがネットワーク変換UDPポートアドレスB1:b1384から来ていることが分かる。同じように、UDPパケットは、クライアントA350からアドレスS1:s1362を有するサーバUDPポート360で受け取ることができる。
【0084】
サーバS354は、ネットワーク変換ポートアドレスA1:a1370から受け取ったパケットをB1:b1384に、ネットワーク解釈ポートアドレスB1:b1384から受け取ったパケットをA1:a1370に転送することができる。これにより、クライアントA350とクライアントB356は、互いに直接UDP接続していると信じることができる。
【0085】
図9fは、プロセスの段階5を示し、ピアツーピア通信の一般的なケースを確立する。この場合、サーバS354は最初にクライアントA350に、クライアントB356がネットワーク変換ポートアドレスB1:b1384上で話していることを通知する。また、サーバS354は、クライアントB356に、クライアントA350がネットワーク変換ポートアドレスA1:a1370上で話していることを通知する。従って、クライアントA350とクライアントB356が直接話す能力は、各クライアントが互いのネットワーク変換アドレス370、384を有するときに確立される。しかしながら、クライアントA350上で動作するアプリケーション(図示せず)によって、通信は、UDPポートA:a366と、アドレスB1:b1384又はポートアドレスB1:b1384とS1:s1362両方と間の第1のUDPチャネル388を介したものでもよい。同様に、クライアントB356上で動作するアプリケーション(図示せず)によっては、通信は、UDPポートB:b380と、アドレスA1:a1370又はポートアドレスA1:a1370とS2:s2378両方と間の第2のUDPチャネル390を介したものでもよい。
【0086】
図9gは、両方のNATが対称なケースで図5の一般的なケースがどのように適用されるかを示す。より具体的には、段階6Aにおいて、NAT A352が対称NATである場合、クライアントBは、ネットワーク変換ポートアドレスA1:a1370からUDPパケットを受け取る。同様に、NAT B358が対称NATである場合、クライアントAは、ネットワーク変換ポートアドレスB1:b1384からUDPパケットを受け取る。そのようなUDPパケットトラフィックを検出すると、サーバSに通知され、NAT Aとその第1のポート362の間とNAT Bとその第2のポート376の間のUDP接続372が切断される。これは、図9gに示した状況である。またこれに続いて、クライアントAとBからサーバS354へのTCP接続364が切断されるが、これは、クライアントAとB上で作動するアプリケーションに依存する。
【0087】
図9hは、NATの一方が非対称であるときに図9gのソリューションがうまくいかないようすを示す。より具体的には、NAT B358が非対称である場合、ポートアドレスB:b382からネットワーク変換アドレスA1:a1370に向けられるUDPパケットトラフィックは、B2:b2392から来るように見えるが、相変わらず第2のUDPチャネル390を介してクライアントAによって受け取られる。しかしながら、ネットワーク変換アドレスA1:a1370からネットワーク変換アドレスB1:b1384へのUDPパケットトラフィックは、そのポートがクライアントB356への通信に使用されなくなるので、NAT B358によって遮られる。
【0088】
図9iは、非対称NATの一方のNATを処理する方法のこの実施形態によって提供されるソリューションを示す。より具体的には、段階6Bで、クライアントAは、ネットワーク変換アドレスB1:b1384ではなくネットワーク変換アドレスB2:b2392から来るUDPパケットトラフィックを見る。従って、NAT A352は、ネットワーク変換アドレスB1:b1384に向けられたUDPトラフィック出力をネットワーク変換アドレスB2:b2392に切り換える。NAT A352がこれを行うことができ、その理由は、NAT B358が、このアドレスを使ってNAT A352のネットワーク変換アドレスA1:a1370に書き込んでおり、従ってIPが通るからである。このように、非対称NATがあるときでも双方向通信が確立される。
【0089】
NATA352が非対称でNAT B358が対称な場合は、図9iに関して前に述べたプロセスと同じプロセスが逆に行われる。
【0090】
NAT A352とNAT B358の両方が非対称な場合、純粋なピアツーピア通信は不可能である。トラフィックは、継続するか、仲介の役割をするサーバS354によって再び確立される。NAT A352とNAT B358の両方が見ることができる他の任意のアドレスを仲介として代用できることに注意されたい。この状況に対処するこの手法は、後で第2の実施形態に関して詳細に説明する。
【0091】
次に、図10から図16を参照して本発明の第2の実施形態を説明する。第2の実施形態は、第1の実施形態と多くの点で類似しており、従って、以下の説明は、第1と第2の実施形態との違いに焦点を当てる。簡潔に説明しただけの第1の実施形態の幾つかの様相は、完全性のために第2の実施形態の説明では詳しく述べる。
【0092】
第2の実施形態によるセキュア通信システム400は分散されており、その大きさのために複雑になることがある。ある意味では、全体的な構造は、図10に示したような階層木402と見なすことができる。きわめて高い視点から、システム400は、システム管理レベル404、伝送サーバレベル406及びエンドポイントレベル408の3つの論理レベルに見える。図10に示したボックスは、複数の極めて異なる方法で実際に実現することができる論理機能を表わす。
【0093】
木402の最上レベル404は、システム400の管理機能に関係する。このレベル404は、システム400を使用することを許可された全てのコンピュータのデータベース410(図12を参照)を保持し、個々のピアツーピア通信を確立することを許可するかどうかを制御する。
【0094】
セキュリティもこの管理レベル404から制御される。低いレベルの個々の通信接続は、管理レベル404から許可を受けなければならなず、そのような許可を受けた後で、低い管理レベルは、例えばそれらのレベル自体の間で暗号鍵を取り決めた後で追加接続を作成することができる。
【0095】
また、管理レベル404には、カスタマイズ可能な詳細レベルまで、作成された追加接続が通知され、低いレベルで生じるイベントを記録することもできる。そのようなイベントには、少なくともネットワークにそれぞれ試みられたアクセスがある。
【0096】
管理レベル404は、ネットワークの動作に関する管理レポートを作成することもでき、これはシステム400の制御と管理に極めて役立つ。
【0097】
最も低いレベル408には、「エンドポイント」412がある。これらのエンドポイントは、「ソフトフォン」(VOIP通話を処理するソフトウェア)とローカラーズした電子メールサーバを含む。しかしながら、エンドポイント412は、他の形のデータ通信ツールを含むこともできる。エンドポイント412は、システム400及びそれにより提供されるセキュアな通信方法を使用可能にするためにユーザのコンピュータにインストールされたキーコンポーネントである。各エンドポイント412は、本質的に、ユーザの場所に提供されるときはセキュアであり、従って、エンドポイント412での通信の記憶域は、決してデータ通信の安全性を損なうことはない。
【0098】
管理レベル404とエンドポイント412の間には、複数の伝送サーバ414で構成されたいわゆる分散「トランスポート層」406が提供される。この層406は、実際には、ユーザと管理者に見えないままであるが、この層は、2種類の通信、即ちアドレスと状態を決定する通信と実際のピアツーピアデータ通信の伝送を容易にするという点で、システム400の不可欠な構成要素である。エンドポイント412と管理層404だけが、トランスポート層406を構成する伝送サーバ414を介して通信する。これは、簡潔性と拡張性の利点を提供する。
【0099】
次に図11を参照し、管理レベル404について詳しく説明する。管理レベル404は、図11に示した例において、システム400の制御の効率的な管理を可能にする階層木構造を有する。管理層の分散した性質は、図11から明らかであり、階層の一番上には、1つの中央位置から実行されるAmteus グローバル管理ノード416があることが分かる。次に、例えば登録ユーザ間の通信を制御したい企業又は行政体(図示せず)のコンピュータで実施することができるクライアント管理ノード418(図11の例では1つだけ示した)が提供される。クライアント指定位置にあるクライアントは、図11に示した単一のクライアント管理ノード418を実行する。
【0100】
階層における次の層は、図11に3つ示した所与のクライアントの地域管理ノード422の層420である。これらの地域管理ノード422は、分散トランスポート層406(単に点線として表わした)を介してエンドポイント412(EP1〜EP3)に接続する。この最も低い管理レベル420は、地理に基づき、後で詳述するロードバランシングを含む幾つかの事柄にとって重要である。同様に、この例では、更に他のエンドポイントEP4 412が、トランスポート層406を介してAmteus グローバル管理ノード416で直接実施される管理機能を有する。
【0101】
次に、管理レベル404の働き方を説明し、例として示す。エンドポイント412によって表わされた各ユーザは、1つの管理ノード416、418、422、一般にその地域管理ノード422に登録される。この登録は、階層的管理木を上に送られ、その結果、登録詳細が、それより高いレベルの全ての管理ノード418、416に保持される。そのような管理ノード418、416に記憶された登録情報は、登録処理の間に収集されるとき、エンドポイント412の現在の動作状態と共にユーザに関する全ての詳細を含む。エンドポイント412間のピアツーピア通信を許可するかどうかに関する決定も、両方のユーザ登録詳細が入手可能な階層における最も低いレベルで得られる。そのようなエンドポイント412の動作状態に生じた変化は、より高いレベルの管理ノードに渡される。
【0102】
EP(エンドポイント)412は、一般に、電話及び/又は電子メールユーザである。図11に示した例では、EP1 412は、クライアントのロンドン支店に基盤を置く。EP1 412の詳細は、ロンドン地域管理ノード422と、それより高いレベルにある全ての管理ノード416、418に記憶される。EP2及びEP3 412は、クライアントのアテネ事務所に基盤を置く。そのような詳細は、アテネ地域管理ノード422と、それより高いレベルの全ての管理ノード416、418に記憶される。EP4 412は、Amteusだけが知っている個人Amteus加入者であり、従って、EP4 412はAmteus グローバル管理ノード416にだけ登録されている。
【0103】
EP2 412がEP3 412と通信したいと仮定すると、アテネ地域管理ノード422は、両方のエンドポイントユーザ412を知っており、従ってその要求は、アテネ管理ノード422によってアテネでローカルに処理される。詳細は、情報としてより高いレベルの管理ノード416、418に送られることがあるが、そのような高いレベルのノード416、518は、所望の通信チャネルの設定には必要ない。
【0104】
EP1 412がEP2 412と通信したい場合、EP1 412は、ロンドンのローカル管理ノード422に要求を出す。このロンドン地域管理ノード422は、EP2 412について何も知らず、従って、EP1の状態を通話設定になるように変更し、要求を階層木の上のクライアント管理ノード418に渡す。
【0105】
クライアント管理ノード418は、通話の両方の側を知っており、従って所望の通話設定を処理することができる。クライアント管理ノード418は、最新の状況情報を持っているのでEP2 416が使用中かどうかを知っているが、後で述べるように、これに関する見解は最新でなく、この見解が提供される可能性は僅かである。クライアント管理ノード418がEP2 416を使用中と見なした場合は、そのようにロンドン地域管理ノード422に通知し、ロンドン地域管理ノード422はEP1412に通知する。従って、セットアップの要求は、失敗に終わる。
【0106】
そうでない場合、クライアント管理ノード418は、EP1の状態を「通話設定」であるとマークし、要求をアテネ地域管理ノード422に下に渡す。アテネ地域管理ノード422は、EP2 416が現在使用中であることができる(即ち、クライアント管理ノード422の状態が実際には最新でなかった)。その場合、アテネ地域管理ノード422は失敗コード「使用中(busy)」をクライアント管理ノード418に返し、クライアント管理ノード418は、前の場合と同じように通信チャネルを設定する要求を取り消す。
【0107】
そうでない場合、アテネ地域管理ノード422は、通話要求をEP2 412に転送する。EP2 412は、通話を受け入れるかどうかを決定し、適切な応答を経路に沿ってEP1 412に返す。
【0108】
EP1 412がEP4 412と通信したい場合は、類似のプロセスが行われる。この場合、最初の要求が、その地域管理ノード422とクライアントノード418を介してAmteusグローバル管理ノード416まで完全に渡される。次に、Amteusグローバル管理ノード416は、EP4 412と直接通信して接続を確立する。
【0109】
前に使用した「ローカル」という語は、サーバに対して地理的に地方にあることを意味するものである。しかしながら、最も厳密な意味では、この用語は単に、サーバとエンドポイント間に相対的な直接接続があり、エンドポイントがそのサーバに登録されており、そのためそのエンドポイントがサーバに対してローカルになることを意味する。
【0110】
次に図12を参照すると、図10の階層402の伝送レベル406は、階層木構造で互いに接続された伝送サーバ414からなる。各伝送サーバ414は、メッセージを途中で記憶することなくある場所(エンドポイント)412から別の場所412への通信の伝送を容易にする役割をする。階層木の一番上には、主伝送サーバ424が提供され、これは、管理階層の一番上にあるAmteusグローバル管理(データベース)サーバ410に接続される。また、故障した場合の主伝送サーバ424のバックアップとして、ホットスタンバイ伝送サーバ426が提供される。階層の次のレベル430には、主伝送サーバ424に接続された3つの地域伝送サーバ1、2及び3 428が示されている。これらの地域伝送サーバ428は、次に、それぞれのエンドポイント1.1、1.2、2.1及び3.1 412と接続される。
【0111】
前述の伝送レベル406は、事前に定義されていない動的構造を表わす。より正確に言うと、ネットワークを構成するために伝送サーバ414を動的に接続する規則が定義され提供される。更に、図10に機能的に別の層として示した管理レベル404は、伝送サーバ406の階層ネットワークに実際に組み込まれ、ピアツーピア通信の設定に利用される。最後に、ネットワークには、ネットワークセキュリティを改善するセキュリティオーバレイが組み込まれている。この実施形態において、オーバレイは、ネットワークの全てのノードに適用される機能規則として実施され、即ち、その規則とは、ノードがエンドポイント412を既に知っていない限り、そのノードのそのエンドポイント412に対する通信を許可しないというものである。ノードが、所望のエンドポイント412の識別を個人的に知らないときは、通信の要求を階層木の更に上に渡す。
【0112】
図13を参照すると、各伝送サーバ414は、より高いレベルの伝送サーバ414に対するクライアントリンク(アップリンク)430及び/又は管理(データベース)サーバ410に対するクライアントリンク432を有する(この両方は、便宜上図13に示されている)。伝送サーバ414が階層木の一番上にあるとき、アップリンク430は、管理データベースサーバ410に対するものであるが、他の場合は、より高いレベルの伝送サーバ414に対するものであることに注意されたい。伝送サーバ木の一番下には、図12に関して前に説明したようなエンドポイント412がある。また、各伝送サーバ414は、ダウンリンク434、即ちサーバ接続を有し、その接続により、より低レベルの伝送サーバ414とエンドポイント412は、サーバ414に対する接続を開始することができる。各伝送サーバ414のアップリンク430は、TCP/IPクライアントであり、一方、ダウンリンク434はTCP/IPサーバである。
【0113】
各伝送サーバ414は、ネットワークアドレス変換を受けない環境で動作する。即ち、各伝送サーバ414はそれ自体の公開IPアドレス436を有し、このIPアドレスは、それ自体の伝送サーバID438と同様に動的に割り当てられることがある。このIPアドレスは、その伝送サーバ414に接続されたエンドポイントIDのリスト442、各エンドポイント412に対する接続の状態444、及びエンドポイント414と関連付けられた許可446と共に、ローカルデータベース440に記憶される。必要に応じてこの情報にアクセスし更新するためにデータベースサーバ448が提供される。データベース440に記憶されたエンドポイント(ユーザ)情報のリストは、後述するように構成される。
【0114】
データベース440には2つのリストが提供され、その1つは、現在オンライン444であるローカルに登録されたユーザのIDのコンパイルであり、もう1つは、ウォッチ(watch)が記録されたローカルに登録されたエンドポイント412のIDのコンパイル450である。ウォッチは、特定のエンドポイント412が接続されているが、例えば使用中のときに通信に利用できないときに記録される。ウォッチは、宛先エンドポイント412の状態を監視し、通信に利用可能になるとき、ウォッチのトリガ機構(図示せず)は通知プロセスを作動させる。通知プロセスは、所望の宛先エンドポイントに対する接続状態の変化を監視することに関心を記録したエンドポイント412及び伝送サーバ414の全てにメッセージを送る。更に、状態の変化は、階層ネットワークの更により高いレベルに通知される。
【0115】
データベース440は、エンドポイント412の1組の公開暗号鍵451も記憶する。これらは、後でより詳しく説明するように、様々なエンドポイント412から送られた暗号化されたメッセージを解読するために使用される。
【0116】
伝送サーバ414は、また、伝送サーバ414の現在の地理的位置を決定する位置決めモジュール452と、階層ネットワーク内の異なる隣り合った伝送サーバ414に対する接続を確認するハートビートモニタ454とを含む。サーバ制御モジュール456は、データベースサーバ448と共に、そのようなリンク、モジュール及びデータベースの全ての動作を管理する。
【0117】
ネットワークの伝送サーバ414は、エンドポイントと全く同じように管理システム404(図11に示した)による許可を受けなければならない。以上述べたように、各伝送サーバ414は、伝送サーバ414の役割をする許可と共に、データベース440にそれ自体のエントリを有し、ユーザIDを有する。
【0118】
伝送サーバ414は、位置決めモジュール452の機能により「位置認識(location aware)」する。これは複数の異なる方法で達成することができる。例えば、1つの単純な方法は、位置決めモジュール452をウィンドウズベースにすることであり、その場合、位置決めモジュールが動作しているシステムの現在のタイムゾーンを決定することができる。
【0119】
ハートビートモニタ454を使用することにより、全ての伝送サーバ414は、その親伝送サーバ414に規則的なハートビートを送信する(規則的なハートビートがある場合)。ハートビートは、伝送サーバの登録接続(ローディング)に関する更新情報を含み、親伝送サーバ414と子伝送サーバ414の間の通信リンクの存在を確認する信号である。ハートビートモニタ454の目的は、システム400のロードバランシングを制御することである。より具体的には、ハートビート情報は、発信(地域)伝送サーバ414に現在直接登録されているいくつかのエンドポイント412のカウント(使用カウント(usage count))を含む。各(親)伝送サーバ414は、ハートビートを受け取ると、同じレベルにある他の全ての伝送サーバのダウンリンクのIPアドレスとポートと、更に使用カウントのリストを提供するメッセージを返す。従って(図12において)、主伝送サーバ424は、伝送サーバ414からハートビートを受け取ったとき、それぞれの地域伝送サーバ1及び3 412のそれぞれのアドレス及び使用カウントを返す。
【0120】
次に図14を参照すると、この実施形態のこの様相のロードバランシング手順460の流れ図が示されている。図から分かるように、新しいクライアント(エンドポイント412又は低いレベルの伝送サーバ414)が、伝送サーバ414に接続しようとするとき、段階464で、伝送サーバ414が、新しいクライアントのハートビート信号を含む要求を受け取る。次に、伝送サーバ414は、段階466で、それ自体の記憶した使用カウントU1と、同じレベルにあり地理的に少なくとも近い(例えば、同じタイムゾーンの)他の伝送サーバ414の使用カウントU2、U3、U4を取り出す。次に、伝送サーバは、段階468及び470で、その使用カウントU1を、同じ階層レベルにある他の近くの伝送サーバ414のU2、U3、U4と比較する。使用カウントU1が、その仲間414の誰かの使用カウントU2、U3、U4より大きい場合は、段階472で、ピアツーピア通信を実現するために、新しいクライアントに伝送サーバ414(現在最も低い使用カウントを有する)に接続するように命じる応答を返す。次に、段階474で、現行伝送サーバ414との接続が断たれ、段階476でロードバランシング手順460が終了する。そうでない場合は、段階478で接続要求が受け入れられ、段階480でクライアントのユーザカウントが読み込まれ、段階482で、伝送サーバ414のローカル使用カウントが、クライアントのユーザカウントの大きさだけ増分される。その後で、ロードバランシング手順が終了する。
【0121】
この基本原理を更に高度なレベルに拡張することができる。例えば、受信伝送サーバ414は、自分の階層レベルと地理的位置で要求を受け入れることができると決定した後で、新しい接続に地理的に近く且つその接続をより適切に処理できる低いレベルの伝送サーバ414があるかどうかを調べる。これは、ユーザが伝送サーバの木の末端で接続された場合にいつでもシステム全体の性能が高まるので、有利であると考えられる。その理由は、ピアツーピア通信の大部分が、厳しい帯域幅で通常ローカルなボイスオーバーIP(voice over IP)トラフィックであるからである。従って、この主トラフィックをローカル伝送サーバレベルで維持することによって、階層システム406全体にこのトラフィックの負担がかからなくなる。そうでないと、このトラフィックによって、システム400がかなり遅くなる。
【0122】
新しい接続を受け入れる伝送サーバ414は、それ自体の親伝送サーバのアドレスを新しい子ユーザに通知する。また、その親伝送サーバ414に新規ユーザの接続を通知する。その後で、親伝送サーバ414は、新規ユーザが接続されているとみなす。
【0123】
接続された後で、新規ユーザ412は、メッセージを以下のカテゴリで伝送サーバ414に送信し始めることができる。
・管理要求
伝送サーバ414は、要求に自分自身の伝送アドレス/ポート438のタグを付けた後で、その要求を親伝送サーバ414に渡す。
・接続された伝送サーバ414に向けられたメッセージ。これは、TCP/IPによる従来の方式で送られ、特別の操作を必要としない。
・親以外の別のエンドポイント412又は伝送サーバ414に向けられたメッセージ。このメッセージは、送信元と宛先のエンドポイントのユーザIDを含む。伝送サーバ414は、現在接続されているユーザ(エンドポイント)のリストにあるユーザIDを調べる。このリストは、その伝送サーバ414に登録されたユーザのリスト442を調べ、対応するそれぞれの状態444を調べることにより作成される。ユーザを見つけた場合は、多くの場合一以上の低いレベルの伝送サーバ414を介して、そのユーザにメッセージが送られる。ユーザが見つからなかった場合は、メッセージが、伝送サーバの親伝送サーバ414に渡される。伝送サーバ木424の一番上に達しても宛先が見つからなかった場合は、送信元に失敗がレポートされる。このプロセスは、木の一番上のユーザIDから元のメッセージ送信元に有効に応答メッセージを返す。各伝送サーバの親414に記憶されたデータを確認するプロセスは、ユーザの各登録が木の上の各ノードの親に返され、その結果全ての接続の情報が木の一番上にあるという事実による。従って、所望のユーザが木424の一番上に見つからなかった場合は、そのユーザはネットワークに登録されていな可能性がある。
【0124】
エンドポイント412が、親伝送サーバ414に対する直接接続を失ったときは、その祖父伝送サーバ414に接続しようとすることを理解されたい。次に、祖父伝送サーバ414は、代替接続を元のレベルで見つけることができる。
【0125】
図10の階層402のエンドポイントレベル408で、各エンドポイント412は、その親伝送サーバ414に1つのクライアントTCP/IP接続を有する。この接続は、高いレベルの伝送サーバ414と管理サーバ410、404の両方へのアクセスに使用される。
【0126】
例えば、各エンドポイント412は、VoIP通信を容易にするためにユーザとの通信インターフェース(図示せず)を提供する。この実施形態において、各エンドポイント412は、いわゆる「マルチメディア」エンジン(図示せず)も使用する。このマルチメディアエンジンは、マイクロフォン、スピーカ又はヘッドホン、Waveファイルプレーヤ及びレコーダ、並びにビデオプレーヤ及びレコーダを構成する。マルチメディアエンジンは、また、音声を様々な波形式の間で変換し、減衰させ、増幅し、混合することができるディジタル信号処理モジュールを含む。マルチメディアエンジンの機能が当該技術分野で一般的ものであり、また熟練した本明細書の対象者は、そのようなエンジンを構成するために更に詳しい説明を必要としないので、マルチメディアエンジンについてはこれ以上説明しない。
【0127】
次に図15と図16を参照して、前述のシステム400を使用してピアツーピア接続を確立する方法500について説明する。方法500は、本質的に、第1の段階(図15に示した)で、指定されたエンドポイント412間に所望のピアツーピア接続を確立できるかどうかを設定し、第2の段階(図16に示した)で、発信元412と所望の宛先412の間にピアツーピア接続を確立する2段階プロセスである。ピアツーピア接続を確立した後で、標準のインターネット通信プロトコルを使用して(この実施形態では専用UDPチャネル372を介して)、発信元412と宛先412間のセキュアな直接双方向通信が可能になる。以下の説明は、前述の第1と第2の段階に関するものである。
【0128】
エンドポイント412間でピアツーピア(P2P)接続を確立することができる。これらの接続は、次に、現在の実施形態では音声と電子メールデータを送信するために使用されるが、他の通信形態も使用することができる。
【0129】
第1の新しいP2P接続の必要性は、最初に、例えばエンドポイント412でエンドユーザが別のエンドユーザにVoIP電話をかけることを決定したときに生じる。この段階で、接続の発信者(発信元)は、所望の宛先のネットワークアドレス(ターゲットユーザのID)しか知っておらず、その発信者は、ターゲットユーザの状態(即ち、ユーザがオンラインか、使用中か、など)を知らない。(発信者は、アドレス帳により、ターゲットユーザが最近オンラインであったことなどを知っている場合があるが、現在の状態を確信することはない。)
【0130】
次に図15を参照すると、第1の段階を実施する方法500は、最初に、発信元ユーザ412が段階502で、「私(ユーザS)はユーザDと通信したい。」という形の要求を伝送サーバ414に送る。伝送サーバ414は、接続ユーザ412のリスト442、444を調べて、段階506で、ユーザDが見つかったかどうかを確認する。接続されたユーザD412を見つけた場合、段階508で、ユーザD412が通話可能かどうか確認する。そうでない場合は、段階510で「失敗−使用中(Failed - Busy)」の応答を返し、段階512でユーザDに対するウォッチを設定することが好ましい。最後に、ユーザSは、段階514で所定の時間期間待ち、次に再び接続を試み及び/又は単にユーザDの可能状態の変化に応じて現行伝送サーバで作動しているウォッチの通知を待つ。しかしながら、段階508でユーザDが通話可能な場合は、段階516で、伝送サーバ414が、ユーザSとユーザD両方の状態を「通話設定処理中」状態に変化させる。次に、伝送サーバ414は、段階518で、できるかぎり現行伝送サーバ414より低いレベルの他の伝送サーバ414を介してユーザDに要求を送る。この時点で、ユーザDは、段階520で見つかり接続されたと見なされ、プロセス500は、図16に関して後で述べるように続く。
【0131】
次に、通信に使用可能になるという状態の変化がユーザDの状態がに生じた場合、このことが、ユーザDのローカル伝送サーバ414に通知され、ユーザSのウオッチ設定が作動する。次に、ユーザSは、段階514で、ユーザDの通話可能性の通知を受け、第1の段階が再び始まることができる(前に述べたように)。代替又は組み合わせにおいて、ユーザSは、段階514で、図15に示したように最初からプロセス500を再開する前に所定の時間待つことができる。
【0132】
段階506で行なった確認から判断されたように、ユーザDが、伝送サーバ(TS)に現在接続されていない場合は、段階522で、親伝送サーバ414が存在するかどうか判断するために確認が行なわれる。親伝送サーバ414が存在する場合は、段階524で要求が親伝送サーバ414に送られる。その後で、親伝送サーバ414は、段階526で、現行伝送サーバと見なされ、プロセスは引き続き、現行伝送サーバ414が、段階504で登録されたエンドユーザ412のリストを確認する。段階522で行った確認によって親伝送サーバ414がないと判断された場合、伝送サーバは、段階528で、接続失敗を示す応答をエンドポイントに送り、段階530でプロセスが終了する。
【0133】
伝送サーバ414に高いレベルの伝送サーバ414から到着した発信要求は、ユーザが接続されていない場合に、要求を来た場所に転送するのではなく失敗を返す点以外は全く同じように処理される。
【0134】
次に図16を参照して、通信プロセス500の第2の段階を説明する。ユーザDは、接続された後で、ピアツーピア通信を容易にするために直接接続できるように、現行IPアドレスとポート番号をユーザSに伝えなければならない。従って、ユーザDが、ユーザSから呼を受けとったときにまだオンラインで且つ使用可能な場合に、段階532でその状態を「通話設定」に変化させる。次に、ユーザDが、段階534でRINGING1メッセージをその親に送り、親は必ず伝送サーバ414になる。また、RINGING1メッセージは、発信者(ユーザS)のユーザIDを含み、それにより、中間伝送サーバ414は、そのメッセージを、オリジナル発呼要求と同じ仕組みを使用して返すことができる。
【0135】
また、伝送サーバ414は、段階536でRINGING1メッセージを受け取ると、最初に、段階536でUDP(ユーザダイアグラムプロトコル)チャネル372を構成する。次に、段階540で、UDPチャネルの外部IPアドレスとポート番号を含むRINGING2メッセージを構成し、また段階540でこのメッセージをエンドポイントユーザDと発呼者のエンドポイントユーザSの両方に送る。RINGING2メッセージは、RINGING1メッセージを受け取った伝送サーバ414のユーザIDも含み、その理由は、そのユーザIDがピアツーピア接続を確立するために使用されるからである。
【0136】
伝送サーバ414がRINGING1メッセージを決して送信しないことを理解されたい。従って、伝送サーバに到着したRINGING1メッセージは、常に、エンドポイント412から直接来たと見なされる。
【0137】
エンドポイント412が、段階542でRINGING2メッセージを受け取ると、エンドポイント412は、段階544で、通話設定状態であるかどうか確認する。そうでない場合は、段階546で、通話に対しての指定されたものを全てリセットし、段階530でプロセス500は終了する。別の状況では、各エンドポイント412が、段階548で、UDPチャネルを設定し、段階550で、RINGING2メッセージで指定されたポートにメッセージを定期的に送り始める。これは、被呼者に最も近い伝送サーバ414になる。一般的なネットワーク障害が何もなければ、これらのメッセージのほとんどは正確に到達するはずである。
【0138】
ユーザDに最も近い伝送サーバ414が、各エンドポイント412から最初のUDPメッセージを受け取ったとき、段階552で、エンドポイントのUDPチャネル372の(後述するように、後で変換され可能性がある)ネットワークアドレスとポート番号を抽出する。伝送サーバ414は、次に各エンドポイントのUDPチャネル372に応答を返すことができ(図示せず)、この応答は、UDPネットワークアドレスと他のエンドポイントのUDPチャネルのポート番号を含み、これらの応答は、ファイアウォールが存在する場合でも各エンドポイントに到達するはずである。(エンドポイントが最初に伝送サーバに書き込むので、これは、エンドポイントにある通常のファイアウォールの働きによって可能なはずである。)
【0139】
伝送サーバ414が、両方のエンドポイントからパケットを受け取った後で、伝送サーバ414は、そのUDPポートを外部からどのようにアドレス指定するかを知る。次に、伝送サーバ414は、段階554で、他のエンドポイントのアドレスを伝えるTALKDIRECTメッセージを各エンドポイント412に送る。段階556でそのようなUDPアドレスを受け取った後で、エンドポイント412は、発信元エンドポイント412と互いに通信して、段階556で宛先エンドポイント412への直接UDP通信チャネル372を設定することができ、次にプロセス500は、段階530で終了する。
【0140】
ほとんどの場合、前記の手順により、これら直通通信を問題なく確立することができる。しかしながら、ネットワークアドレス変換(NAT)がエンドポイントでのファイアウォール動作と同時に存在する場合は、問題が生じることがある。そのような問題は、多くの状況で、第1の実施形態の図9aから図9iに示した例を参照して前に述べたような克服することができる。
【0141】
第1と第2の実施形態の両方に使用される手法は、更に後で詳しく説明され、NAT352、358の様々な全ての組み合わせを処理する仕組みについても説明される。
【0142】
ネットワークアドレス変換器(NAT)352、358は、広義には、対称と非対称2つのクラスの変換機能に分類される。対称NATは、パケットの宛先に関係なく同じインターネット側アドレス及びポートの組み合わせを使用し、一方、非対称NATは、宛先ごとに異なるインターネット側アドレス/ポートの組み合わせを使用する。この理由が何であるかはっきりと分からないが、未知の発信元からデータパケットを受け入れないことが賢明であるという確信に基づくと考えられる。
【0143】
これらのNATの必要性に関して少し考えると次のことが分かる。1.受信者は、各パケットが誰から来たかを知ることができ、NATの必要なしに未知の発信元からのパケットを必要に応じて容易に拒否することができる。2.インターネットパケットのIPアドレスとポートは偽造が容易である。NATによるそのような厳格な動作は、長い時間かなり有能なハッカーを阻止できる可能性は少ない。
【0144】
ファイアウォールは、また、ピアツーピア通信を確立しようとするときに問題を引き起こす可能性がある。通常のファイアウォール動作は、「話しかけられるまで話してはならない」という規則を課すことである。AとBが互いに話したい場合は、A又はBのどちらが最初に話さなければならない。次に、他方が応えることができる。しかし、Aが最初に話し、Bがファイアウォールの後ろにある場合、Bは、Aにパケットが書き込まれるまでパケットが見えない。
【0145】
適度に有効なファイアウォールの挙動は、前述のように規則が実施されることを要求する。実際には、多くのファイアウォールは、この規則を「話しかけられる前に話す人は、再び聞かれることはない」と解釈する。そのような挙動は、ピアツーピア通信チャネルを確立しようとする際に深刻な問題を引き起こすことがある。
【0146】
前述の実施形態において、状況を改善する幾つかの手順が実施される。最初に、非対称NATが通常、新しい宛先に書き込むために任意のポートを開かず、元のポート+1(或いは、第1と第2の書き込みの間に行われた回数により2、3等)になることが多いことを理解されたい。この実施形態において、非対称NATに遭遇したとき、RINGING2メッセージに示されたポートアドレスより上のいくつかの連続するポートが、この可能性に対応するために書き込まれる。
【0147】
幾つかの製造業者は、ファイアウォール/NATが、一般に、動作を調べセキュリティ制約に従って修正される場合があるuPnP(ユニバーサルプラグアンドプレイ)インタフェースを実施することを表明している。この実施形態は、伝送サーバ414で実施されたuPnPインタフェース(図示せず)を含む。
【0148】
一部のケースでは、ファイアウォールの実施が厳密なため或いはNAT352と358が両方とも非対称であるため、単純に直接ピアツーピア接続を実行することができない。そのような場合、この実施形態は、信頼できる仲介の役割をするローカル伝送サーバ414でメッセージを「返送する」ように構成される。これにより、ローカル伝送サーバ414が常にローカル非対称NAT352、358に知られているように未知送信者の問題が緩和され、その結果、例えばファイアウォールでの最も厳密な規則でも、そのような間接的擬似ピアツーピア通信が妨げられなくなる。更に、跳ね返されたパケットが、信頼できる仲介の役割をする伝送サーバ414によって最小限の分析で且つ必ず記憶なしに転送されるようにすることによって、そのような間接通信チャネルのセキュリティが低下する可能性が低くなる。
【0149】
ファイアウォール動作のばかげた(極めて厳しい)解釈に遭遇した場合に、このシステムは、ある方向で真のピアツーピア通信を実施し、他の方向でローカル伝送サーバ414で跳ね返るように構成される。この変形例は、安全性の低下が最小になるので行う価値がある。例えば、電子メールを伝送する場合、電子メールが直接送られ、肯定応答が跳ね返されるように構成すると有利である。
【0150】
以下に、非対称NAT352、358があるはずであること或いは厳密なファイアウォールが適所にあることをシステム10が自動的に見つける実際の方法を説明する。ハイレベルの観点から見ると、図16に関して前に説明したように、ローカル伝送サーバ414が、両方のエンドポイント412のUDPポートのアドレスを知っているとき、ローカル伝送サーバ414は、他方のエンドポイントのアドレスを示すTALKDIRECTメッセージをそれぞれに送信する。エンドポイント412は、直接通信することを試み、またタイマー(図示せず)を設定する。パケットを直接受け取った場合、伝送サーバ414には、接続が通話中であることが伝えられ、タイマーが停止されそれ以上使用されない。しかしながら、パケットを受け取らずタイマーが作動した(即ち、所定の時間期間が経過した)場合は、TALKTHROUGHメッセージが、伝送サーバ414に送られ、そこから他のエンドポイント412に送られ、指定宛先エンドポイント412のローカルサーバ414に更に他の通信が直接送られようとしていることを示す。その後で、メッセージは、所望のエンドポイント412に対してローカルな伝送サーバ414で「跳ね返される」。
【0151】
システム10は、被呼者が呼を受け入れる前にピアツーピア接続を確立し始める。呼が受け入れられない場合は、ピアツーピア接続はすぐに終了される。このシステム10は、呼が受け入れられたときだけプロセスを開始し、タイムアウト/TALKTHROUGH手順を実施する場合、これにより、例えば音声リンクを確立する際の有害な遅延が生じる可能性がある。これはまた、大部分の呼/電子メール(ユーザがログインした場合)が受け入れられるケースである。
【0152】
次に、本発明の第3の実施形態を図17から図20に関して説明する。第3の実施形態は、セキュリティに関する問題を除き第2の実施形態と極めて似ている。より具体的には、第3の実施形態は、後述するような頑強なセキュリティシステムにより各ノードに記憶された許可446を代用する。
【0153】
先行技術のセキュアでない通信システムは使用できず、そのような通信システムは、登録ユーザのセキュリティを損なう好ましくないユーザを得る。既知のセキュアでない製品は、より多くの人がシステムを使用するときに、特性が高められそれにより「人気のある」システム自体を傷つける攻撃者を招くという事実によって、ユーザの数に固有の上限がある。この効果は、制御システムでの負帰還と少し似たものとして働く。
【0154】
第3の実施形態は、最初からセキュリティを組み込むことによってこのサイクルを減衰させる。システム10から攻撃者を完全になくすことはできないが、攻撃者がいることで登録ユーザのシステム10の可用性が損なわれないようにするために十分に効果的なセキュリティが組み込まれる。攻撃者を完全になくすシステムの設計が、実際には設計者の破綻の原因になることを理解されたい。
【0155】
第3の実施形態のセキュリティ要件は、以下の通りである。
要件1:NODEがシステム10に認証されなければならない。
要件2:NODEを介したTSリンクへの通信が機密でなければならない。
要件3:CLIENTが互いに認証されなければならない(相互認証)
要件4:CLIENTとCLIENTの間の接続の通信が機密でなければならない。
【0156】
セキュリティ要件1と2の適合
以下の用語の多くは、RFC1510(ケルベロス認証システム)からのものである。ケルベロスは、ユーザ又はホストの識別を検証するために使用される認証メカニズムであり、これは、また、Microsoft Windows Server 2003のサービスに好ましい認証方法である。ケルベロス認証プロトコルは、クライアントとサーバ間又はあるサーバと別のサーバ間にネットワーク接続を確立する前に、これらの間で相互認証する仕組みを提供する。このプロトコルは、クライアントとサーバ間の最初のトランザクションがセキュアでない通信ネットワーク上で行われることを想定する。そのようなセキュアでない環境は、インターネットによって適切に例示することができ、この場合、攻撃者が、クライアントかサーバのどちらかを容易に装うことができ、正当なクライアントとサーバ間の通信を容易に盗聴したり改竄したりすることができる。
【0157】
ケルベロス技術は、共有する秘密を伴う認証技術に大きく依存する。基本的な概念は全く単純である。即ち、秘密を2人だけが知っている場合、一方の人は、他方の人が秘密を知っていることを確認することにより他方の人の同一性を検証することができる。パスワードは、秘密鍵暗号法を使用して秘密が維持される。より正確に言うと、パスワードを共有することより、通信パートナは、暗号鍵を共有し、この鍵の知識を使用して互いの同一性を検証する。この技術が機能するためには、共有鍵が対称でなければならず、即ち、単一の鍵で暗号化と解読の両方ができなければならない。一方の側は、ある情報を暗号化することによって鍵の知識を証明し、他方の側はそれを解読することによって鍵の知識を証明する。
【0158】
基本原理は、以下のように機能できる認証符号によって実施される。秘密鍵認証を使用する単純なプロトコルは、通信扉の外側にいる人が中に入りたいときに始まる。アクセス権を得るために、その人は、秘密鍵で暗号化された情報の形の認証符号を提示する。認証符号の情報は、プロトコルが実行されるたびに違っていなければならなず、そうでないと、通信を偶然盗み聞きした人が誰でも昔の認証符号を再使用することができてしまう。
【0159】
認証符号を受け入れると、扉の番人はその認証符号を解読し、中にあるものから解読が成功したかどうかを知る。解読が成功した場合、門番は、認証符号を提示した人が適正な鍵を持っていることを知る。2人だけが適正な鍵を持っており、門番がその1人であり、従って他の人は、認証符号を提示した人であるはずである。
【0160】
扉の外側にいる人が相互認証を望む場合は、少し違いのある同じプロトコルを逆に実行することができる。門番は、元の認証符号から情報の一部を取り出し、それを新しい認証符号で暗号化し、次に扉の外側で待っている人に新しい認証符号を与えることができる。次に、扉の外側にいる人は、門番の認証符号を解読し、結果をオリジナルの認証符号と比較することができる。合致した場合、扉の外側の人は、門番がオリジナルを解読できたことを知り、従って正しい鍵を持っているはずである。
【0161】
図17に、この実施形態でケルベロス技術を使用する方法の基本原理を示す。この場合、サーバ602、クライアント604、及び鍵配布センター606が提供される。クライアント604は、サーバ602に接続することを望み、最初に、サーバ602への有効接続を確立するチケットを獲得するために鍵配布センター(KDC)606に申し込む。チケットは、実質的に、既にシステム600が認証したサーバ602にクライアント604を認証させるために使用される。
【0162】
図18と図19を参照して次に説明するこの第3の実施形態のセキュリティ方式の詳細な説明では、以下に示す頭文字を使用する。
TS=伝送サーバ414。
NODE=CLIENTとTSの組み合わせ。単にCLIENT又はTSと呼ぶこともある。その場合、NODE608に関して説明する特定の役割は減少するが、他の機能は利用可能である。
AS=認証サーバ610。
KEY=NODE608に割り当てられたパスワードに基づく値。
TGS=チケット交付サーバ612
REALM614=AS610を共有するNODE608のコミュニティ。
【0163】
最初に、幾つかのNODE608を含む特定のREALM614と関連付けられた認証サーバ610が使用可能であると仮定する。AS610は、登録された各NODE608ごとの{USERNAME,PASSWORD}ダブレットの相当物をそのローカルデータベース616に記憶する。次に、図19に示したように、ネットワークに接続したいNODE_A608のクライアントが、インターネットブラウザ618を使って登録するKDC610のウェブサーバ620に接続し、それによりユーザ名「UserA」622とパスワード「pwdA」624を取得したと仮定する。
【0164】
手順の基本的な仕組みを、以下の頭文字を使って説明する。
NODE_A=ユーザ名Aを持つNODE608。
TGT_A=NODE_Aのチケット交付チケット626。
S_A=AS610とNODE_A608間のセッション鍵628。
K_AB=NODE_AとNODE_B間の共有鍵630。
TICKET_AB=NODE_AがNODE_Bに対するアクセス権を取得できるチケット632。
{X}K_Y=鍵K_Yによって暗号化された値X。
【0165】
次に図18と図19を参照すると、認証プロセスの最初で、NODE_A608が起動し、以下に示すようにシステム600に認証される。
1.NODE_A608は、TS414に接続され、AS_REQ634メッセージを、NODE_A608が属するREALM614のAS610に送信する(一般に、このメッセージは、AS610に接続された状態のTS414が見つかるまで階層ネットワークを遡る)。
2.AS610は、セッション鍵S_A628を生成し、pwdA624で共に暗号化されたTGT_A626とS_A628を含むAS_RESPメッセージ636を返す。
【0166】
また、AS610は、認証セキュリティを高めるために暗号化されたTIMESTAMP(図示せず)を返すこともできる。これは、AS610が、ネットワーク時間プロトコル(NTP)又は単純なNTP接続によって信頼できるソースから時間を受け取り、NODE608が、システム600の認証を受けるときにASの時間と同期されることを仮定している。NODE608は、ASから送られたTIMESTAMPをその現行Win32チックカウントと関連付け、自分自身のTIMESTAMP値を生成する必要があるときは新しい現在時刻を計算しなければならない。
【0167】
NODE_A608が認証された後で、ネットワークに参加するために現在「リンク」しなければならない(即ち、VoIP呼を行ない受けることができる)TS414の名前がネットワークから通知され、またターゲットTS414をNODE_B608と呼ぶと仮定する。タイムスタンプが使用されている場合、手順は以下の通りである。
1.TGT_A626とNODE_B608の名前を含むTGS_REQメッセージ638をAS610に送る。
2.AS610は、K_AB630(S_A628で暗号化された)とTICKET_AB632を含むTGS_RESPメッセージ640を返す。
3.NODE_A608は、K_AB630の値を抽出し、現在のTIMESTAMP値を計算し、認証符号を{TIMESTAMP}K_ABとしてNODE_B608に生成する。NODE_A608は、{TIMESTAMP}K_ABとNODE_B608へのTICKET_AB632を含むAP_REQメッセージ642をNODE_B608に送る。
4.NODE_A608がリンクすることをNODE_B608が許可するために、NODE_Bは、TICKET_AB632を解読してK_AB630を抽出し、次に{TIMESTAMP}K_ABを解読してTIMESTAMPを検証できなければならない。これが成功したと仮定すると、NODE_B608は、NODE_A608がNODE_B608を認証することを可能にする{TIMESTAMP+1}K_ABを含むAP_RESPメッセージ644を返す。
【0168】
熟練した本明細書の対象者には、タイムスタンプを使用しない場合に以上の操作がどのように行われるか容易に明らかであり、従って、タイムスタンプなしに上記の一連のイベントを実行する方法の明示的な説明はこれ以上行わない。
【0169】
この時点で、NODE_A608は、NODE_B608を介してネットワークに「リンク」されている(実際には、NODE_AのCLIENT604がNODE_B608のTS414のサーバとなる)。
【0170】
以上の実施態様は、ケルベロス認証システムの適応されたサブセットに基づいており、基本的なプロトコル、メッセージ及びデータ構造を再使用するが、この実施形態の新しい認証技術をピアツーピア通信の状況で有効に使用できるようにする機能が異なる。
【0171】
セキュリティ要件3と4の適合
認証プロセスのこの段階を説明するために以下の頭文字を使用する。
DH_PK_A=CLIENT_Aのディフィー−ヘルマン公開鍵646。
DH_SK_A=CLIENT_Aのディフィー−ヘルマン秘密鍵648。
DH_PK_B=CLIENT_Bのディフィー−ヘルマン公開鍵650。
DH_SK_B=CLIENT_Bのディフィー−ヘルマン秘密鍵652。
K_AC=NODE_AとNODE_C間の共有鍵654。
【0172】
次に図19を参照すると、ネットワークに現在接続されているNODE_A608内のCLIENT_A604が、NODE_C608内のCLIENT_C604に電話をかけたいとき、この実施形態は、CLIENT604が互いに認証し、それらの間に確立された接続(ピアツーピア接続等)を介したその後の通信が、共有鍵K_AC654によって暗号化されることを必要とする。
【0173】
CLIENTとCLIENT間で可能な2つのタイプの認証を検討する。そのような認証の第1のものは、「誘導による認証(Authentication-by-induction)」と言われ、実質上、CLIENT_A604とCLIENT_C604間の接続を確立できる前にNODE_A608とNODE_C608間にあるはずの認証済みリンクチェーンに乗る。その手順は以下の通りである。
1.CLIENT_A604は、ディフィー=ヘルマン(DH)鍵ペアを生成し、DH_PK_A646を含むメッセージをCLIENT_C604に送る。このメッセージは、それらのクライアントを接続する認証済みリンクチェーン656を介して送られる(通信チャネル設定プロトコルの一部として)。
2.メッセージを受け取ると、CLIENT_C604は、そのメッセージが既に認証された発信元から送られたはずであると仮定する(CLIENT_C604は、その発信元を正式に認証する立場になく、従って、この形の認証の間接的な弱い表現が「誘導による認証」である)。
3.CLIENT_C604は、ディフィー=ヘルマン(DH)鍵ペアを生成し、DH_PK_B650の値を含むメッセージをCLIENT_A604に送る。メッセージは、同じ(異なってもよいが)認証済みリンクチェーン656を介してCLIENT_A604に送られる。
4.このとき、CLIENT_A604とCLIENT_C604は両方とも、共有鍵K_AC654を独立に計算する立場にある。DH_PK_A646又はDH_PK_B650を傍受する側は、K_AC654を計算し、CLIENT_A604又はCLIENT_C604に扮する立場にない。
5.CLIENT_A604とCLIENT_C604は、K_AC654を使用して、信頼性の高い通信を可能にするために、高度暗号化システム(AES:Advanced Encryption System)の大量の暗号鍵又はその等価物を生成する。
【0174】
概して、「誘導による認証」は、真の認証ではなく、むしろ次のように要約される。
「私は、認証済みの相手X(相手の名前がX)と機密通話を確立したが、私にはこれを検証する手段がない」(VoIP通話は、例えば電子メールのよりも心配が少ないことは明らかである)。
【0175】
また、AS610を使用してCLIENT_A604とCLIENT_C604が互いを認証できるTICKET632を生成することができるが、通信チャネル設定の一部としてこの操作を行う際の一時的オーバヘッドが大きすぎる。従って、「誘導による認証」は、この代案より優先的に使用される。
【0176】
第2の可能な認証のタイプは、Amteusシステム600に外部から提供されるが、Amteusシステム600が相互運用しなければならないものである。外部から提供される公開鍵インフラストラクチャ(PKI)が利用可能であり、またCLIENTが公開鍵使用可能(PKE)であると仮定する。そのような状況において、前述のプロトコルは、CLIENT_A604とCLIENT_C604間で送られたメッセージにデジタル署名するRSA暗号アルゴリズムに拡張され、その結果、強力な認証が利用可能になる(PKIは当該技術分野において十分に理解されているので、PKIの更に詳しい考察は本明細書で行わない)。
【0177】
この実施形態は、あまりセキュアでなくより実際的な「誘導による認証」手法を使用する。
【0178】
認証サーバの複製
先行技術のケルベロスシステムにおいて、認証用のセキュリティデータベースの管理はできるだけ単純に維持され、これと同じ原理がこの実施形態に適用される。この実施形態の特徴は、以下の通りである。
−静的データだけを維持し、セッション又は呼関連データ(即ち、動的データ)の記憶を回避しようとする。
−アカウントを作成し、アカウント詳細を修正し、アカウントを削除するために読み出し/書き込みのマスタコピーを維持する。
−マスターコピーを幾つかの読み出し専用コピーに定期的に複製する。
【0179】
クロスレルム認証
この実施形態では、複数のREALMS614があってよく、これらのREALMS614は、管理システム404のために階層的に組織される。この点で、異なるREALMS614内のNODE608間の認証(いわゆる「クロスレルム認証(cross-realm authentication)」と呼ばれる)が実行される。
【0180】
クロスレルム認証は、事実上、前述の既存のTGS(チケット交付サービス)システム600に乗る。REALM_A614内のNODE_A608が、REALM_B614内のNODE_B608にリンクしたい場合は、TGS_B638、340をREALM_A608用のAS610に登録する必要がある。このように、NODE_A608は、段階634で、単にTGS_AからTGT626を要求し、このTGT626は、NODE_B608に送るTICKET632を得て新しいリンクを達成するために、TGS_Bに送られる。
【0181】
レルム614が階層的に編成されている場合でも(図21を参照)、通常、2つの通信レルム614が、一方向だけの登録ではなく、互いに登録されなければならない。
【0182】
以下で、クロスレルム認証及び許可についてより詳細に説明する。しかしながら、その前に、図20aと図20bを参照して、実施形態で使用されるNODEセキュリティ動作の概要を説明する。
【0183】
一般に、NODE608はサブシステムの集合であり、その関連するサブセットを図20aと図20bに示す。NODE608に対する接続又はリンクが行なわれる。ここで、一時的でNODE−NODE間の暗号化を必要としない単純な接続と、より永久的な構成で、関連付けられた暗号鍵630、654を有するリンクとを区別する。
【0184】
図20aと図20bは、2つのNODE608を示し、これらのNODE68は両方とも同一のサブシステムを含む(即ち、これらのノードは、同じ実行可能なサブシステムの異なる例である)。親NODE608(図20a)は、データクライアント(DC)656がデータサーバ(DS)612に接続され且つKDC610がアクティブであるという点で主NODEである。子NODE608(図20b)は、DSに接続されておらず、従ってDC656とKDC610は存在するがアクティブではない。主NODE608は、そのセキュリティサービス660を使用して、その子から受け取った全てのセキュリティ要求を処理する。
【0185】
CLIENT604とTS414は、ハンドル(図示せず)を使用してSS660と通信する。ハンドルは、親NODE608へのCLIENT接続/リンク662か、子NODE608からのTS接続/リンク664かに関係なく、各接続又はリンク(即ち、それぞれのアクティブなサーバストリーム)と関連付けられる。
【0186】
NODE608が起動したとき、DC656は、DS658に接続しログインすることを試み、成功した場合はKDC610も初期化される。後で分かるように、CLIENT604が、同じREALM614内の別のNODE608にリンクできないので、主NODE608をそれ自体のKDC610に対して認証する必要はないことに注意されたい。
【0187】
ほとんど全ての場合において、CLIENTサブシステムは、親NODE608に対するリンク662を確立しようとする(このことは、主NODE608にも当てはまり、その場合、リンクは、後で示すようにクロスレルムである)。SS660は、親NODE608に送るセキュリティ要求を構築し更に親NODE608から受け取ったセキュリティ応答を処理するように指示される。親NODE608に対するリンクが確立された後で、CLIENT604は、リンクメッセージを暗号化するか又は解読するためにSS660に呼を送ることができる。SS660に適切な呼が行われずにCLIENT604がセキュリティメッセージを受け取った場合、即ちこのNODE608が、メッセージのターゲットでない場合、CLIENT604は、選択した宛先NODE608にメッセージが達して消費されるまで、メッセージをTS414に送って階層を更に下がる。
【0188】
子NODE608は、メッセージをTS414に通信する。TS414が、メッセージをセキュリティメッセージであると識別した場合は、SS660への適切な呼が行われ、すなわち、呼が失敗した場合或いはターゲットが階層を更に上った場合は、TS414は、親NODE608に渡すためにセキュリティメッセージをCLIENT604に送る。
【0189】
アクティブな(DS658に接続された)KDC610がNODE608で使用可能な場合は、このKDC610が主NODE608なので、TS414で子から受け取ったセキュリティ要求は、このNODE608によって満たされなければならず、それより高くは送られない。
【0190】
注:最も単純な実施態様は、CLIENT604がリンク構成の管理に幾つかの状態を割り当てることである。SS660は、CLIENT604やTS414に呼を返さない。サブシステムが緻密に一体化されており、その結果、CLIENT604とTS414が、セキュリティ要求及び応答を管理するために状態を維持しなければならないと仮定する。
【0191】
REALM614は、前述のように、(Windows Domainと類似の)1組の登録ユーザであり、この場合、各ユーザは、そのREALM614に登録され(一般に、ウェブサーバ620によって)、そのREALM614のDS612上に維持されたアカウント(図示せず)を有する。
【0192】
次に図21を参照すると、DS(データサーバ)612は、特定のREALM614の全ての認証データを保持し、このデータは、作成されるREALM614の外には広がらない。主NODE666は、実質上、REALM614のセキュリティの根本であり、セキュリティ要求は、階層を上に広がることを許可されない。
【0193】
動的データが階層を上下に伝わることができるようにするために、あるREALM614内の子NODE668を「より高い」REALM614内の適切な親NODE670に参加させる何らかの手段が必要であり、木トポロジーの性質は、そのようなリンク672を1つだけ必要とすることである。図20と図21は、この実施形態によって提供される解決策を示し、REALM A614の主NODE666は、「より高い」REALM B614内の親NODE670にリンクすることが許可される。このリンク672は、REALM A614の主666をREALM B614に対して認証しリンク672を作成できるようにDS B612内にアカウントが設定されるので可能である。
【0194】
リンク672がクロスレルムなので、ここで、呼データがREALM A614からREALM B614に伝わりREALM C614まで下りることができ、NODE X608は、NODE Y608に対してクロスレルムVoIP通話674を行うことができる。
【0195】
次に、クロスレルムリンクがどのように達成されるかを例示する詳細なシナリオを説明する。
【0196】
主NODE:起動
データサーバ(DS)612が既に動作していると仮定する。主NODE666は、DS612に対してローカルに起動し、一般に、DS612にログインしKDC用の鍵628を生成することを可能にするコマンド引き数が供給される(副NODEは、同じ引き数で起動される)。よりレベルの高いREALM614のアカウントにログインするために、GUIによって任意の{ユーザ名,パスワード}が供給される。
【0197】
1.ブートストラップシーケンスによって、DC(データクライアント)656がローカルDS612にログインするように指示される。
2.ブートストラップシーケンスは、手順procedureSecurityService::Initialise()を呼び出す。KDC610は、その鍵を生成し、DC656とハンドシェイクを確立する。
3.ユーザは、CLIENT604が(別のREALM614内の)親NODE670にリンクできるように、{ユーザ名,パスワード}を入力する。
4.CLIENT604は、手順SecurityService::CreateSecurityContext()によって親ノード656に対する新しい接続のハンドルを獲得する。
5.CLIENT604は、AS_REQメッセージ634を構築するために手順SecurityService::BuildAsReq()を呼び出し、次にAS_REQメッセージ634を親NODE670に送る。
6.CLIENT604は、AS_REPメッセージ636を受け取り、それを手順SecurityService::ProcessAsRep()に渡す。
7.CLIENT604は、接続したいNODEのIDで手順SecurityService::BuildTgsReq()を呼び出し、従ってSS(セキュリティサービス)660は、適切なTGS_REQメッセージ638を構築することができる。TGS_REQメッセージ638は、親NODE670に送られる。
8.CLIENT604は、TGS_REPメッセージ640を受け取り、それを手順SecurityService::ProcessTgsRep()に渡す。
9.この時点で、CLIENT604は、既存のリンク接続状態を促進するか、別の親NODE670への再接続を促進する(しかし、いずれの場合も、ターゲットNODEは、手順BuildTgsReq()呼で指定されたNODEでなければならない)。CLIENT604は、手順SecurityService::BuildApReq()を呼び出してAP_REQメッセージ642を構成し、次にCLIENT604は、それを親NODE670に送る。
10.CLIENT604は、AP_REPメッセージ644を受け取り、それを手順SecurityService::ProcessApRes()に渡す。この呼が首尾良く完了した際、SS660には、親NODE670へのリンク672上の暗号化/解読操作を支援するために必要なセキュリティコンテキストがあるはずである。
【0198】
非主NODE:起動
1.NODE608にはDSログイン引き数が供給されず、従って、ブートストラップシーケンスは、ローカルDS612にログインするようにDC656に指示しない。
2.ブートストラップシーケンスは、手順SecurityService::Initialise()を呼び出す。KDC610には鍵を生成するためのパラメータが供給されず、DC656は、KDC610がDS612に接続されないことを示す。
3.ユーザは{ユーザ名,パスワード}を入力して、CLIENT604が同じREALM614内の親NODEにリンクできるようにする(リンクは主NODE666に対するものでそうでなくてもよい)。
4.CLIENT604は、手順SecurityService::CreateSecurityContext()によって親ノードに対する新しい接続のハンドルを取得する。
5.CLIENT604は、手順SecurityService::BuildAsReq()を呼び出してAS_REQメッセージ634と構築し、AS_REQメッセージ634を親NODEに送る。
6.CLIENT604は、AS_REPメッセージ636を受け取り、それを手順SecurityService::ProcessAsRep()に渡す。
7.CLIENT604は、接続したいNODE608のIDで手順SecurityService::BuildTgsReq()を呼び出し、従ってSS660は、適切なTGS_REQメッセージ638を構築することができる。TGS_REQメッセージ638が、親NODEに送られる。
8.CLIENT604は、TGS_REPメッセージ640を受け取り、それを手順SecurityService::ProcessTgsRep()に渡す。
9.この時点で、CLIENT604は、既存リンク接続状態或いは別の親NODEへの再接続を促進する(しかし、いずれの場合も、ターゲットNODEは、手順BuildTgsReq()呼で指定されたNODE608でなければならない)。CLIENTは、手順SecurityService::BuildApReq()を呼び出して、CLIENT604が親NODEに送るAP_REQメッセージ642を構築する。
10.CLIENT604は、AP_REPメッセージ644を受け取り、それを手順SecurityService::ProcessApRes()に渡す。この呼び出しが首尾良く完了した時点で、SS660には、親NODEへのリンク上の暗号化/解読操作を支援するのに必要なセキュリティコンテキストがあるはずである。
【0199】
主NODE:子NODEからAS_REQ又はTGS_REQ要求を受け取る
主NODE666が初期化され、セキュリティ要求を受け入れることができるKDC610を有すると仮定する。
【0200】
1.TS414は、子NODE668からAS_REQメッセージ634を受け取る。接続/リンクがセキュリティコンテキストを有する場合は、メッセージを解読するために手順SecurityService::DecryptLinkData()が呼び出される。
2.TS414は、AS_REQメッセージ634を手順SecurityService::ProcessAsReq()に渡す。要求を満たすために、KDC610は、AS_REQメッセージ634からユーザ名を抽出し、そのユーザ名を使って(DC656により)DS612内に保持された(ハッシュされた)パスワードを要求する。
3.これが成功した場合、手順SecurityService::ProcessAsReq()はAS_REPメッセージ636を返す.(注:SS660が要求を処理しているとき、セキュリティコンテキストは不要である。この点は、SS660が応答を処理しているときと異なる)。
4.TS414は、AS_REPメッセージ636を、AS_REQメッセージ634を送った子NODE668に送る。
【0201】
主NODE666がTGS_REQメッセージ638を受け取った場合は、(リンクされるNODE608の(ハッシュされた)パスワードをDS612が要求すること以外)同じ手順に従う。
【0202】
非主NODE:子NODEからAS_REQ又はTGS_REQを受け取る
1.TS414は、子NODE668からAS_REQメッセージ634を受け取る。接続/リンクが次にセキュリティコンテキストを有する場合は、メッセージ634を解読するために手順SecurityService::DecryptLinkData()が呼び出される。
2.TS414は、AS_REQメッセージ634を手順SecurityService::ProcessAsRe()に渡し、この手順は、アクティブなKDC610が利用できないことを示すための適切なエラーコードを返す。
3.TS414は、親NODE670に渡すCLIENT604にAS_REPメッセージ636を送る。
【0203】
主又は非主NODE:AP_REQを受け取る
AP_REQメッセージ642を受け取るNODE608はどれも、首尾良くそのメッセージをローカルに処理するか、或いはエラーメッセージを返さなければならず、そのメッセージを渡すことはできない。
【0204】
1.TS414は、子NODE668からAP_REQメッセージ642を受け取る。既存のセキュリティコンテキスト、従ってリンクは、この接続に利用できないはずであり、従ってメッセージを解読する必要はない。
2.TS414は、AP_REQメッセージ642を手順SecurityService:: ProcessApReq()に渡し、この手順は、そのローカルNODEパスワード(KDC610ではなく)を使用してメッセージ642を処理し、返すための適切なAP_REPメッセージ644を生成する。手順SecurityService::ProcessAsReq()が成功した場合は、完全なセキュリティコンテキストが確立され、子NODE668に対する接続は、リンク促進状態である。
3.TS414は、子NODE668にAP_REPメッセージ644を返す。
【0205】
主又は非主NODE:親NODEからAS_REP又はTGS_REPを受け取る
主NODE666内のCLIENT604が、AS_REPメッセージ636又はTGS_REPメッセージ640を受け取る場合、主NODE666は、オリジナルAS_REQメッセージ634又はTGS_REQメッセージ638の発信元でなければならず、これについては、起動するケースを既に前に検討した(既存のセキュリティコンテキストがあってはならない)。
【0206】
AS_REPメッセージ636又はTGS_REPメッセージ640を受け取るNODE608が主NODE666でない場合は、要求は、適切な子NODE668に下げるためにTS414に送られる。この場合、親NODE670へのリンク672のセキュリティコンテキストがなければならず、受信したメッセージを解読するために手順SecurityService::DecryptLinkData()が呼び出される。子NODE668まで下がるリンク672には、セキュリティコンテキストがあってもなくてもよい(このNODE608にリンクするために、子NODE668が、AS_REQ634とTGS_REQメッセージ638を上の高いレベルのKDC610に送ってもよい)。
【0207】
主又は非主NODE:親NODEからAP_REPを受け取る
これについては、起動のケースに関しては既に説明した。
【0208】
以上の説明が、SecurityService::DecryptLinkData()等の幾つかの手順を参照しているが、これらの手順の詳細は、これらの手順の機能が所定の状況および前述の機能を実施するための比較的重要なことではなく、従ってこの詳細は、熟練した本明細書の対象者の技巧と知識の一部にであることを理解されたい。
【0209】
以上の実施形態は、登録ユーザの最新状態をオンラインで送信するプッシュメカニズムを使用して説明した。しかしながら、代替の実施形態において、これは、電子メールサーバが、電子メールを送る人を識別し、次にDSからその人の状態情報を要求するプルメカニズムによるものでもよい。プルメカニズムの利点は、こデータサーバの伝送オーバヘッドが最小になることである。しかしながら、プッシュメカニズムの利点は、電子メールサーバに使用し易いことである。
【0210】
本発明が、前述の特定の実施形態に限定されないことを理解されたい。例えば、送信される電子メールメッセージを、別々に暗号化された複数の部分及び各部分に分割することができる。次に、各部分をそれぞれの伝送サーバ機構に別々に送ることができる。各部分は、宛先に別々に送られ、指定受信者が解読し再構築することができる。これの利点は、1通の電子メールメッセージを傍受し解読を成功してもメッセージが開示されないことである。これは、通信のセキュリティを改善する極めて頑強な方法である。一般に、電子メールのテキストをサンプリングして、送られたメッセージの一部分を得ることができ、例えば5つのTSMを使用し、電子メールテキストの5番目ごとの文字をサンプリングして5つの電子メールテキストの内の1つを作成することができる。他の電子メールメッセージも、5番目ごとの文字でサンプリングされるが、その電子メールメッセージはそれぞれ、最初の電子メールメッセージと異なるオフセットを有することになる。
【0211】
本発明は、また、有線ネットワークを使用せずに、無線通信ネットワーク(WIFIを使用するネットワーク等)に適用可能であることを理解されたい。また、このピアツーピア通信システムにおける発信元及び宛先の通信装置として、コンピュータではなく、PDA(携帯情報端末)と移動電話を使用することもできる。
【0212】
最後に、熟練した本明細書の対象者は、PKIではない他の暗号化技術を使用することができることを理解するであろう。
【図面の簡単な説明】
【0213】
【図1】本発明の例示的な実施形態によるシステムの概略ブロック図である。
【図2】2人のユーザBobとAliceの間のピアツーピア通信を可能にするために図1のシステムをどのように使用できるかの例を示す概略図である。
【図3】図1の個人電子メールサーバの全体的な操作方法を示すブロック図である。
【図4】図3の方法のConnect from Clientサブルーチンのブロック図である。
【図5】図3の方法のMessage Receiveサブルーチンのブロック図である。
【図6】図3の方法のMessage Waiting To Sendサブルーチンのブロック図である。
【図7】指定受信者の固有アドレスを決定するための伝送サーバ機構とメールサーバ間の対話を示す流れ図である。
【図8】様々なエンティティによるシステムの様々な使用法を示す概略図である。
【図9a】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9b】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9c】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9d】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9e】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9f】指定受信者の固有IPアドレスを決定する際にTSMによって実行される調査を示す概略ブロック図である。
【図9g】図9aから図9fで行った調査を対称NATのケースと非対称NATのケースにどのように適用できるかを示す図である。
【図9h】図9aから図9fで行った調査を対称NATのケースと非対称NATのケースにどのように適用できるかを示す図である。
【図9i】図9aから図9fで行った調査を対称NATのケースと非対称NATのケースにどのように適用できるかを示す図である。
【図10】本発明の第2の実施形態の全体的な機能木構造を示す概略ブロック図である。
【図11】図10の木構造の管理レベルの階層的性質を示す概略ブロック図である。
【図12】図10の木構造の伝送サーバ層の階層的性質を示す概略ブロック図である。
【図13】図12の伝送サーバ層の一般的伝送サーバの機能要素を示す概略ブロック図である。
【図14】図10の管理層に対する新しい接続のロードバランシングのプロセスを示す流れ図である。
【図15a】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第1段階を示す流れ図である。
【図15b】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第1段階を示す流れ図である。
【図15c】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第1段階を示す流れ図である。
【図16】図10の第2の実施形態のネットワークを使用してピアツーピア接続を確立する第2段階を示す流れ図。
【図17】本発明の第3の実施形態においてケルベロス技術の原理をどのように適用するかを示す概略ブロック図である。
【図18】ネットワークに接続しようとする際の第3の実施形態の主な段階を示す構成図である。
【図19】ネットワークによるセキュリティの視点から中央データサーバに登録しその後でピアツーピア通信をどのように支援するかの詳細を示す概略ブロック図である。
【図20a】図19の階層ネットワークの親ノードの概略ブロック図である。
【図20b】図19の階層ネットワークの子ノードの概略ブロック図である。
【図21】ユーザコンピュータXとYの間でピアツーピア通話を実現する際にクロスレルムリンクがどのように達成されるかを示す概略ブロック図である。
【特許請求の範囲】
【請求項1】
第1のリモート側コンピュータと第2のリモート側コンピュータの間でデータ通信媒体を介して電子メール通信等のセキュアなピアツーピアデータ通信を実行する方法であって、
各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、
第1のリモート側コンピュータにおいてデータ通信を生成する段階と、
第2のリモート側コンピュータの現在の接続状態を確認する段階と、
第2のリモート側コンピュータの接続状態からデータ通信媒体に現在接続されることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送信する段階とを含む方法。
【請求項2】
受け取る段階が、リモート側コンピュータの内の何れかの接続状態が変化するたびに繰り返される、請求項1に記載の方法。
【請求項3】
現在状態を記憶するデータサーバから第2のリモート側コンピュータの接続状態を要求する段階を更に含み、
受け取る段階が、要求する段階に応答して実行される、請求項1に記載の方法。
【請求項4】
データサーバに、第1のリモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を提供する段階を更に含む、請求項1から3のいずれか1項に記載の方法。
【請求項5】
第2のリモート側コンピュータに関する情報によりデータ通信を暗号化し、それにより受け取ったときに第2のリモート側コンピュータだけが通信を解読できるようにする段階を更に含む、請求項1から4のいずれか1項に記載の方法。
【請求項6】
受け取る段階が、暗号化する段階を実行するために第2のリモート側コンピュータに関する情報を受け取る段階を含む、請求項5に記載の方法。
【請求項7】
第1のリモート側コンピュータが、ローカルに相互接続された複数のセキュアなコンピュータを第1のリモート側位置に含み、生成する段階は、受け取る段階、確認する段階及び送信する段階とは別のコンピュータ上で実行される、請求項1から6のいずれか1項に記載の方法。
【請求項8】
リモート側コンピュータが互いに通信する能力に関する1組の許可を記憶する段階と、
第1のリモート側コンピュータの第2のリモート側コンピュータと通信する許可を確認する段階と、
確認する段階によって、第1のリモート側コンピュータが第2のリモート側コンピュータと通信する許可を有することが分かった場合だけ、送信する段階が行われるのを許可する、請求項1から7のいずれか1項に記載の方法。
【請求項9】
データ通信において第2のリモート側コンピュータであるように指定された指定受信者の識別を検証する段階を更に含む、請求項1から8のいずれか1項に記載の方法。
【請求項10】
第2のリモート側コンピュータの接続状態から、第2のリモート側コンピュータが現在、データ通信媒体を介してメッセージを受け取ることができないことが分かった場合に、確認する段階の後でデータ通信をローカルに一時的に記憶して所定の時間期間待つ段階と、
その後で、確認する段階と送信する段階を繰り返す段階を更に含む、請求項1から9のいずれか1項に記載の方法。
【請求項11】
第1のリモート側コンピュータから第2のリモート側コンピュータへのデータ通信の送信を評価し、送信が失敗した場合に、
送信失敗の原因を決定し、決定された原因によって、
第1のリモート側コンピュータにおいて送信失敗通知を生成する段階と、
所定の時間期間待まって送信する段階を繰り返す段階のいずれかの段階を実行する段階を更に含む、請求項1から10のいずれか1項に記載の方法。
【請求項12】
データ通信を複数の個別のデータメッセージに分割する段階を更に含み、
送信する段階が、更に、データメッセージのそれぞれを別々に第2のリモート側コンピュータに送り、それによりデータ通信手順のセキュリティを改善する段階を含む、請求項1から11のいずれか1項に記載の方法。
【請求項13】
データ通信が、ボイスオーバーIP通信を含む、請求項1から12のいずれか1項に記載の方法。
【請求項14】
通信サーバであって、この通信サーバを含む第1のリモート側コンピュータと第2のリモート側コンピュータとの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を実行するように構成され、
各リモート側コンピュータのデータ通信ネットワークに対する接続のアドレス詳細及び現在状態を受け取る受信手段と、
第1のリモート側コンピュータにおいてデータ通信を生成するメッセージ生成モジュールと、
第2のリモート側コンピュータの現在の接続状態を確認する確認モジュールと、
第2のリモート側コンピュータの接続状態から、第2のリモート側コンピュータがデータ通信ネットワークに現在接続されていることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送るように構成された伝送モジュールとを含む通信サーバ。
【請求項15】
通信システムであって、
請求項14に記載の複数の通信サーバと、
データ通信ネットワークによって複数の通信サーバに接続可能なデータサーバとを含み、
データサーバが、通信ネットワークに対する各通信サーバの接続の現在状態を、各通信サーバの現在のネットワークアドレスと共に受け取り、収集し、記憶し、且つこの情報の少なくとも一部分を複数の通信サーバに転送して、それらの通信サーバが、複数の通信サーバ間でピアツーピア通信を行うことを可能にするように構成された通信システム。
【請求項16】
中央データサーバが、ユーザダイアグラムプロトコル(UDP)を使用して複数の通信サーバの現行アドレスを調査するように構成された、請求項15に記載の通信システム。
【請求項17】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のピアツーピアデータ通信を確立するのを支援するように構成された通信サーバであって、サーバが、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルに提供され、
通信サーバがサーバネットワーク内の他の階層レベルにある他の通信サーバに動作可能に接続することを可能にする接続手段と、
複数のローカルユーザコンピュータを通信サーバに登録する登録手段と、
それぞれの登録したローカルユーザコンピュータの登録詳細を記憶するデータストアであって、登録詳細が、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含むデータストアとを有し、
接続手段が、記憶した登録詳細をサーバネットワークの次に高い階層レベルにおける隣りの通信サーバに転送し、且つ階層ネットワーク内の低いレベルにある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶するように構成された通信サーバ。
【請求項18】
記憶された登録詳細が、通信サーバのサーバネットワーク識別、少なくとも1つの登録されたローカルユーザコンピュータのサーバネットワーク識別、及びローカルユーザコンピュータの通信サーバとの接続の現在状態を含む、請求項17に記載の通信サーバ。
【請求項19】
記憶された登録詳細が、階層における低いレベルからの通信サーバのサーバネットワーク識別と、低いレベルの通信サーバの登録ローカルユーザコンピュータのサーバネットワーク識別と含む、請求項17又は18に記載の通信サーバ。
【請求項20】
記憶された登録詳細が、ローカルに登録された各ユーザコンピュータのグローバネットワークアドレスを含む、請求項18又は19に記載の通信サーバ。
【請求項21】
記憶された登録詳細が、ローカルに登録された各ユーザコンピュータの公開暗号鍵を含む、請求項17から20のいずれか1項に記載の通信サーバ。
【請求項22】
接続手段が、第2のユーザコンピュータに対する接続を確立する要求を受け取ったときに、第2のユーザコンピュータのローカル登録に関してデータストアを確認し、第2のユーザコンピュータの識別がローカルデータストアに記憶されている場合に要求を受け入れるように構成された、請求項17から21のいずれか1項に記載の通信サーバ。
【請求項23】
第2のユーザコンピュータがローカルに登録されていることが分からない場合に、登録確認手段が、隣りの通信サーバに要求を転送するように接続手段に指示するように構成された、請求項22に記載の通信サーバ。
【請求項24】
接続手段が、更に、登録したユーザコンピュータの状態に関してデータストアを確認するするように構成された状態確認手段を含み、接続手段が、第2のユーザコンピュータが登録され、第2のユーザコンピュータの状態から第2のユーザコンピュータに接続することができることが分かる場合に、第2のユーザコンピュータとの通信を確立しようとするように構成された、請求項22又は23に記載の通信サーバ。
【請求項25】
接続手段が、第2のユーザコンピュータに接続する要求の受け入れに応答して第2のユーザコンピュータの状態を更新するように構成された、請求項22から24のいずれか1項に記載の通信サーバ。
【請求項26】
接続手段が、第2のユーザコンピュータに接続する要求の受け入れに応答して第1と第2のユーザコンピュータのデータ接続状態を設定するように構成された、請求項22から25のいずれか1項に記載の通信サーバ。
【請求項27】
第2のユーザコンピュータに対する接続の要求に対する応答を構成するように構成された応答手段を更に含み、
応答手段が、第2のユーザコンピュータの現在のネットワークアドレスを第1のユーザコンピュータに送り、第1のユーザコンピュータの現在のネットワークアドレスを第2のユーザコンピュータに送るように構成された、請求項17から26のいずれか1項に記載の通信サーバ。
【請求項28】
応答手段が、第2のユーザコンピュータのグローバネットワークアドレスを決定するように構成された、請求項27に記載の通信サーバ。
【請求項29】
グローバネットワークアドレスが、UDPチャネルアドレスを含む、請求項28に記載の通信サーバ。
【請求項30】
データストアが、更に、リモート側コンピュータが互いに通信する能力に関する1組の許可を含み、
サーバは、更に、記憶された1組の許可を使用して第1のユーザコンピュータが第2のユーザコンピュータと通信することを許可されているかどうかを判断する手段を更に含む、請求項17から29のいずれか1項に記載の通信サーバ。
【請求項31】
データ通信ネットワークを介して、複数のユーザコンピュータの内の特定のユーザコンピュータ間で電子メール通信等のセキュアなピアツーピアデータ通信を実行する通信システムであって、
階層的に接続されたサーバネットワーク内に配置され、サーバネットワークのノードをそれぞれ表わす、請求項17に記載の複数の通信サーバを有し、サーバネットワークが、複数のユーザコンピュータの内の特定のユーザコンピュータ間の通信の確立を支援するために複数のユーザコンピュータに接続可能である通信システム。
【請求項32】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援する方法であって、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルにある通信サーバ上で実施され、
サーバネットワーク内の他の階層レベルにある通信サーバに対する動作可能なネットワーク接続を確立する段階と、
複数のローカルユーザコンピュータを通信サーバに登録する段階と、
それぞれの登録したローカルユーザコンピュータの、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含む登録詳細を記憶する段階とを含み、
確立する段階が、記憶した登録詳細を、サーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに転送する段階と、階層ネットワーク内の低いレベルにおある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶する段階とを含む方法。
【請求項33】
送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援するために、ピアツーピア通信メッセージの指定受信者コンピュータを探索する方法であって、通信サーバの階層ネットワーク内で実施され、
指定受信者コンピュータの識別と送信者コンピュータの識別を含むデータ通信の要求をローカルサーバに送る段階と、
指定受信者がローカルサーバに知られているかどうかを判断する段階と、
指定受信者がローカルサーバに知られている場合に指定受信者に関して記憶した詳細を取り出し、その詳細を送信者コンピュータに送る段階と、
指定受信者がローカルに知られていない場合にサーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに要求を転送し、これにより該通信サーバがローカルサーバになる段階と、
指定受信者が見つかるか或いは階層ネットワーク内の一番上にあるサーバの確認が終わるまで、決定する段階、取り出す段階、及び転送する段階を繰り返す段階とを含む方法。
【請求項34】
指定受信者コンピュータを識別することなく階層ネットワークの一番上に達した場合に、接続失敗の通知を送信者コンピュータに送る段階を更に含む、請求項33に記載の方法。
【請求項35】
指定受信者コンピュータが識別された後で指定受信者コンピュータに対する接続の状態を確認する段階を更に含む、請求項33又は34に記載の方法。
【請求項36】
指定受信者コンピュータに対する接続が利用できない場合に送信者コンピュータに接続失敗の通知を送る段階を更に含む、請求項35に記載の方法。
【請求項37】
起こり得る状態の変化を許容するために所定の時間期間待ち、その後で送信する段階、判断する段階、及び取り出す段階、転送する段階、及び繰り返す段階を再び実行する段階を更に含む、請求項36記載の方法。
【請求項38】
取り出す段階が、指定受信者が通信サーバに知られているがそこにローカルに登録されていない場合に、指定受信者が登録された階層内の低いレベルにある通信サーバに要求を送る段階を含む、請求項33から37のいずれか1項に記載の方法。
【請求項39】
取り出す段階が、指定受信者の記憶した詳細の一部としてローカルに登録されたサーバから指定受信者のネットワーク位置を取り出す段階を含む、請求項38に記載の方法。
【請求項40】
所望の指定受信者コンピュータを見つける際に将来使用する監視機能をサーバに記憶し実行する段階を更に含み、監視機能が、ローカルサーバに追加された任意の新しいコンピュータの識別を所望の指定受信者コンピュータの識別と比較し、一致した場合に送信者コンピュータに通知する段階を更に含む、請求項33から39のいずれか1項に記載の方法。
【請求項41】
記憶された1組の許可を使用して、送信者コンピュータが、所望の指定受信者コンピュータとの通信が許可されているかどうかを判断し、記憶された許可によってそのような通信が許可される場合だけ送信する段階を実行できるようにする、請求項33から40のいずれか1項に記載の方法。
【請求項42】
送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立する方法であって、複数の通信サーバからなる階層的サーバネットワーク内で実施され、
請求項33から41のいずれか1項に記載の指定受信者コンピュータを探索する方法と、
指定受信者コンピュータの現在のグローバル通信アドレスを送信者コンピュータに通信する段階と、
送信者コンピュータの現行グローバル通信アドレスを指定受信者コンピュータに通信する段階と、
グローバル通信アドレスを使用して送信者コンピュータと指定受信者コンピュータの間でピアツーピア通信チャネルを設定する段階とを含む方法。
【請求項43】
リモート側コンピュータが互いに通信する能力に関する1組の許可を記憶する段階と、
送信者コンピュータが指定受信者コンピュータと通信する機能に関する記憶された1組の許可を確認する段階と、
この確認する段階から、送信者コンピュータが指定受信者コンピュータと通信する許可を持つことが分かった場合だけ、第1と第2の通信段階と送信段階とを行うことを許可する段階を更に含む、請求項42に記載の方法。
【請求項44】
送信者コンピュータとローカルサーバの間で第1の直接チャネルを設定する段階を更に含む、請求項42又は43の記載の方法。
【請求項45】
第2の通信段階が、第1の直接チャネルを介して行なわれる、請求項44に記載の方法。
【請求項46】
指定受信者コンピュータとローカルサーバの間で第2の直接チャネルを設定する段階を更に含む、請求項42から45のいずれか1項に記載の方法。
【請求項47】
第1の通信段階が、第2の直接チャネルを介して行なわれる、請求項46に記載の方法。
【請求項48】
第1又は第2の直接チャネルを設定する段階が、第1又は第2のUDP(ユーザダイアグラムプロトコル)直接チャネルを設定する段階を含む、請求項44から47のいずれか1項に記載の方法。
【請求項49】
第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するために使用される伝送サーバであって、
第1のユーザコンピュータから、伝送サーバに登録された第2のユーザコンピュータに対する接続の要求を受け取る受信手段と、
第2のユーザコンピュータに対する接続の現在の接続状態を検証する検証手段と、
第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないこと分かった場合に、要求の詳細をウォッチとして記憶するデータストアと、
検証手段に応答して、第2のユーザコンピュータの状態が変化して、第2のユーザコンピュータとのピアツーピア通信を現在確立することができることが示された場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る応答手段とを含み、
検証手段が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認すると共に更新するように構成され、この更新から、第2のユーザの状態がオンラインに変化したことが分かったときに対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する伝送サーバ。
【請求項50】
データストアが、第2のユーザコンピュータの識別と第1のユーザコンピュータの識別を記憶するように構成された、請求項49に記載の伝送サーバ。
【請求項51】
受信手段が、第2のユーザコンピュータに対する接続の複数の要求を受け取るように構成され、データストアが、第2のユーザコンピュータに対するウォッチの各要求の詳細を記憶するように構成され、応答手段が、第2のユーザコンピュータの接続状態がオンラインに変化した後で、複数のメッセージを第2のコンピュータに対する接続を要求したユーザコンピュータのそれぞれに一つずつ送信するように構成された、請求項49又は50に記載の伝送サーバ。
【請求項52】
伝送サーバが、伝送サーバの階層に接続されるように構成された、請求項49から51のいずれか1項に記載の伝送サーバ。
【請求項53】
伝送サーバが、登録されたユーザコンピュータのそれぞれの接続状態の詳細を階層内のより高い位置にある伝送サーバに送るように構成され、応答手段が、第2のユーザコンピュータのオンライン状態を示すメッセージを階層内のより高い位置にある少なくとも1つの伝送サーバに送信するように構成された、請求項52に記載の伝送サーバ。
【請求項54】
データストアが、伝送サーバに登録されたユーザコンピュータの異なるものに対して複数の異なるウォッチを記憶するように構成され、
検証する手段が、登録されたユーザコンピュータの全てに対する現在の接続状態を定期的に確認し更新するように構成され、この更新から、任意のユーザ状態がオンラインに変化したことが分かったときに、複数の記憶されたウォッチの中から対応するウォッチの存在を確認し、それが見つかった場合に、応答手段を活動化して見つかったウォッチに対応するメッセージを送信する、請求項49から53のいずれか1項に記載の伝送サーバ。
【請求項55】
データストアが、現在オンラインになっている登録ユーザコンピュータのリストを記憶するように構成され、
伝送サーバが、更に、データストアにウォッチを記憶する前に現在のオンラインのユーザコンピュータのリストを確認するオンライン確認手段を更に含む、請求項49から54のいずれか1項に記載の伝送サーバ。
【請求項56】
登録ユーザコンピュータの状態からその登録ユーザコンピュータがオンラインに変化したことが分かったときに、監視中のユーザコンピュータの識別を現在オンラインリストに転送する転送手段を更に含む、請求項55に記載の伝送サーバ。
【請求項57】
第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するのを支援する方法であって、
第1のユーザコンピュータから、ローカルに登録された第2のユーザコンピュータに対する接続の要求を受け取る段階と、
第2のユーザコンピュータに対する接続の現在の接続状態を検証する段階と、
第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないことが分かった場合に、要求の詳細をウォッチとして記憶する段階と、
検証する段階に応答して、第2のユーザコンピュータの状態が変化し、第2のユーザコンピュータとのピアツーピア通信を現在確立したことを示している場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る段階とを含み、
検証する段階が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認し更新し、この更新から、第2のユーザ状態がオンラインに変化したことが分かったときに、対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する方法。
【請求項58】
第1と第2のユーザコンピュータの間で、少なくとも第1のユーザコンピュータの通信が第1のネットワークアドレス変換器(NAT)によって処理されるデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立する方法であって、
第1のユーザコンピュータと伝送サーバの間で第1のNATによって確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続を要求する段階と、
伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、
TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートする段階と、
第1のユーザコンピュータの第2のUDPポートを開く段階と、
伝送サーバが第2のUDPポートの第1のNATアドレスを決定できるように、第2のUDPポートから第1のNATを介して第1のUDPポートにデータパケットを送信する段階と、
伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを取得する段階と、
第1と第2のユーザコンピュータの間にセキュアなピアツーピア通信を確立することができるように、第1と第2のユーザコンピュータのそれれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する段階とを含む方法。
【請求項59】
第1のNATを介して第1のユーザコンピュータから伝送サーバへのTCP/IP通信リンクを作成する段階を更に含む、請求項58に記載の方法
【請求項60】
作成する段階が、第2のユーザコンピュータが登録された伝送サーバネットワーク上のローカル伝送サーバを探索し識別し、そのローカル伝送サーバに接続する段階を含む、請求項59に記載の方法。
【請求項61】
第2のユーザコンピュータが、伝送サーバに登録され、それらの間に第2のNATを介してTCP/IP通信リンクが確立され、取得する段階が、更に、
伝送サーバにおいて第4のUDPポートを確立する段階と、
TCP/IP通信リンクを介して第4のUDPポートのアドレスを第2のユーザコンピュータにレポートする段階と、
第2のユーザコンピュータにある第3のUDPポートを開く段階と、
第3のUDPポートから第2のNATアドレスを介して第4のUDPポートにデータパケットを送り、伝送サーバが第2のユーザコンピュータの第3のUDPポートの第2のNATアドレスを決定できるようにする段階とを含む、請求項58から60のいずれか1項に記載の方法。
【請求項62】
第1のユーザコンピュータが、第2のUDPポートの宛先を第1のUDPポートから第3のUDPポートに切り替えることを更に含む、請求項58から61のいずれか1項に記載の方法
【請求項63】
第1のユーザコンピュータが、第2のUDPポートから第2のユーザコンピュータの第3のUDPポートにピアツーピアメッセージを直接送るように構成された、請求項62に記載の方法。
【請求項64】
第2のユーザコンピュータが、第3のUDPポートの宛先を第4のUDPポートから第2のUDPポートに切り替えることを更に含む、請求項58から63のいずれか1項に記載の方法。
【請求項65】
第2のユーザコンピュータが、第3のUDPポートから第2のユーザコンピュータの第2のUDPポートにピアツーピアメッセージを直接送るように構成された、請求項64に記載の方法。
【請求項66】
第1と第2のユーザコンピュータの間にピアツーピア通信が確立されたときに第1のUDPポートの非活動性を検出する段階と、
第1のUDPポートを閉じることによって第1のユーザコンピュータとの接続を断つ段階とを含む、請求項58から65のいずれか1項に記載の方法。
【請求項67】
伝送サーバが、第1のユーザコンピュータとのTCP/IP接続を切断することを更に含む、請求項66に記載の方法
【請求項68】
第1と第2のユーザコンピュータの間にピアツーピア通信が確立されたときに、第4のUDPポートの非活動性を検出する段階と、
第4のUDPポートを閉じることによって第2のユーザコンピュータとの接続を断つ段階とを含む、請求項58から67のいずれか1項に記載の方法。
【請求項69】
伝送サーバが、第2のユーザコンピュータとのTCP/IP接続を切断することを更に含む、請求項68に記載の方法。
【請求項70】
第1又は第2のNATが、宛先ごとのUDPポートが異なる非対称NATであり、
非対称NATからの直接接続の新しいアドレスを記録する段階と、
UDPポート出力を非対称NATの新しいアドレスにアドレス指定しなおす段階とを含む、請求項58から69のいずれか1項に記載の方法。
【請求項71】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、少なくとも第1のユーザコンピュータの通信が、第1のネットワークアドレス変換器(NAT)によって処理され、
第1のNATによって第1のユーザコンピュータと伝送サーバの間に確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続の要求を受け取る要求受信手段と、
伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する確立する手段と、
TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートするレポート手段と、
第1のユーザコンピュータに設定された第2のUDPポートから、第1のNATを介して第1のUDPポートに送られるデータパケットを受け取るデータパケット受信手段であって、伝送サーバが、第2のUDPポートの第1のNATアドレスを決定するように構成されたデータパケット受信手段と、
伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを得る取得手段と、
第1と第2のユーザコンピュータが間にセキュアなピアツーピア通信を確立できるように、第1と第2のユーザコンピュータのそれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する手段とを有する伝送サーバ。
【請求項72】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアな疑似ピアツーピアデータ通信チャンネルを確立する方法であって、両方のユーザコンピュータの通信が、第1と第2の非対称ネットワークアドレス変換器(NAT)によって処理され、
それぞれの第1と第2の非対称NATを介した各ユーザコンピュータから伝送サーバへの伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを作成する段階と、
第1のNATによる第1のユーザコンピュータと伝送サーバの間のTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、
第1と第2のUDPポートのアドレスを、それぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートする段階と、
第1のユーザコンピュータに第3のUDPポートを開くと共に第2のユーザコンピュータに第4のUDPポートを開く段階と、
データパケットを第3のUDPポートから第1のNATを介して第1のUDPポートに送り、第4のUDPポートから第2のNATを介して第2のUDPに送り、それにより伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスとを決定できるようにする段階と、
第1のUDPポートで受け取ったデータパケットを第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、伝送サーバからデータパケットを有効に返送することによって、第1と第2のユーザコンピュータ間の擬似ピアツーピア通信を確立するようにする段階とを含む方法。
【請求項73】
転送する段階が、受け取ったデータパケットを転送前に瞬間的且つ一時的に記憶する段階を含む、請求項72に記載の方法。
【請求項74】
生成する段階が、第2のユーザコンピュータが登録された伝送サーバネットワーク上のローカル伝送サーバを探索し識別し、このローカル伝送サーバに接続する段階を含む、請求項72又は73に記載の方法。
【請求項75】
伝送サーバが、擬似ピアツーピア通信を確立した後で第1と第2のユーザコンピュータとのTCP/IP接続を断つことを更に含む、請求項72から74のいずれか1項に記載の方法。
【請求項76】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアな擬似ピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、両方のユーザコンピュータの通信が、それぞれの第1と第2の非対称ネットワークアドレス変換器(NAT)によって取り扱われ、
伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを、各ユーザコンピュータから伝送サーバまで、それぞれの第1と第2の非対称NATを介して作成する作成する手段と、
第1のユーザコンピュータと伝送サーバの間で第1のNATによるTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する確立手段と、
第1と第2のUDPポートのアドレスをそれぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートするレポート手段と、
第1のコンピュータに設定された第3のUDPポートから第1のNATを介して第1のUDPポートに送られ、第2のユーザコンピュータに設定された第4のUDPポートから第2のNATを介して第2のUDPに送られたデータパケットとを受け取り、それにより、伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスを決定できるようにする受け取る手段と、
第1のUDPポートで受け取ったデータパケットを、第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを、第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、第1と第2のユーザコンピュータの間の擬似ピアツーピア通信が、伝送サーバからデータパケットを有効に返送することによって確立される伝送サーバ。
【請求項77】
送信者コンピュータと指定受信者コンピュータ間のデータ通信ネットワークを介したピアツーピア通信を確立するのを支援するために、ユーザコンピュータを伝送サーバの階層接続ネットワークに接続する方法であって、
接続ネットワーク内のローカル伝送サーバと同じ階層レベルにある複数のピア転送サーバのそれぞれの現行負荷を示す情報を受け取る段階と、
ローカルユーザコンピュータをローカル伝送サーバに接続する要求を受け取る段階と、
ローカルサーバの現行負荷をピアサーバのそれぞれと比較する段階と、
ローカル伝送サーバの負荷が、ピアサーバの内のいずれかのピアサーバの負荷より著しく大きい場合に、最も低い負荷を有するピアサーバに接続すべきであることを示す応答をローカルユーザコンピュータに送る段階と、
ローカル伝送サーバの負荷が、ピアサーバの内のどのピアサーバの負荷より著しく大きくない場合に接続要求を受け入れ、ローカル伝送サーバの現行負荷を更新する段階とを含む方法。
【請求項78】
伝送サーバの現行負荷が、伝送サーバに登録されたユーザコンピュータの数によって決定される、請求項77に記載の方法。
【請求項79】
ローカル伝送サーバの現行負荷を階層ネットワーク内のさらに高いレベルの伝送サーバに転送する段階を更に含む、請求項77又は78に記載の方法。
【請求項80】
転送する段階が、ローカル伝送サーバの現行IPアドレス及びポートを送出する段階を含む、請求項79に記載の方法。
【請求項81】
転送する段階が、ハートビート信号を一定間隔で送出することを含み、各ハートビート信号が、ローカル伝送サーバの負荷に関する更新された最新情報を提供する、請求項79又は80に記載の方法。
【請求項82】
受け取る段階が、複数のピア転送サーバのそれぞれの現行IPアドレスとポートを示す情報を受け取る段階を含む、請求項77から81のいずれか1項に記載の方法。
【請求項83】
受け取る段階が、複数のピア転送サーバのそれぞれに関するハートビート信号を定期的に受け取る段階を含み、ハートビート信号が、ピア転送サーバの識別とピア転送サーバの現行負荷を示す情報を含む、請求項77から82のいずれか1項に記載の方法。
【請求項84】
ローカル伝送サーバの地理的位置を決定する段階を更に含む、請求項77から83のいずれか1項に記載の方法。
【請求項85】
受け取る段階が、複数のピア転送サーバのそれぞれの地理的位置に関する情報を受け取る段階を含む、請求項84に記載の方法。
【請求項86】
地理情報が、ローカル又はピア転送サーバに関するタイムゾーン情報を含む、請求項84又は85に記載の方法。
【請求項87】
比較する段階が、ローカルサーバの現行負荷をローカルユーザと同じ地理的位置にある各ピアサーバと比較する段階を含み、
送信する段階が、ローカル伝送サーバの負荷が、同じ地理的位置にあるピアサーバのいずれかの負荷よりも極めて大きい場合に、最も小さい負荷を有するローカルユーザコンピュータと同じ地理的位置にあるピア伝送サーバに接続すべきであることを示す応答を送る送信段階とを含む、請求項85又は請求項85に従属する請求項86に記載の方法。
【請求項88】
送信段階が、ローカル伝送サーバに対する接続ネットワークの隣接するより高い階層レベルにある親伝送サーバの通信アドレスを送る段階を含む、請求項77から87のいずれか1項に記載の方法。
【請求項89】
ローカル伝送サーバに接続され、階層的接続ネットワーク内の低いレベルにある全ての子伝送サーバの負荷を取得し検討する段階と、
各子サーバによりローカルサーバの現行負荷を評価する段階と、
ローカル伝送サーバの負荷がいずれかの子サーバの負荷よりも著しく大きい場合に、最も小さい負荷を有する子サーバに接続するべきであることを示す応答をローカルユーザコンピュータに送る段階とを含む、請求項77から88のいずれか1項に記載の方法。
【請求項90】
ローカル伝送サーバの地理的位置を決定する段階を更に含み、取得する段階が、複数の子伝送サーバのそれぞれの地理的位置に関する情報を受け取る段階を含む、請求項89に記載の方法。
【請求項91】
地理情報が、ローカル又は子伝送サーバに関するタイムゾーン情報を含む、請求項90に記載の方法。
【請求項92】
評価する段階が、ローカルサーバの現行負荷をローカルユーザと同じ地理的位置にある子サーバのそれぞれと比較する段階を含み、
送信段階が、ローカル伝送サーバの負荷が、同じ地理的位置のいずれかの子サーバの負荷よりも著しく大きい場合に、最も小さい負荷を有するローカルユーザコンピュータと同じ地理的位置にある子伝送サーバに接続するべきであることを示す応答をローカルユーザコンピュータに送る段階を含む、請求項90又は91に記載の方法。
【請求項93】
通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された認証済み通信サーバのネットワークにノードを結合する方法であって、
認証サーバから受け取ったユーザ識別とパスワードを使用して、認証サーバにノードを認証させる段階と、
ネットワークに加わるためにノードを接続しなければならない特定の通信サーバの識別の通知を受ける段階と、
特定の通信サーバに接続するために、認証サーバから特定の通信サーバ及びノードに固有のデータを要求する段階と、
特定の通信サーバ及びノードに固有のデータと、ノードと特定の通信サーバによって共有される共有暗号鍵とを受け取る段階と、
特定の通信サーバ及びノードに固有のデータと、暗号鍵によって暗号化されたグローバルデータとを特定の通信サーバに送り、その結果、特定の通信サーバが、ネットワークにノードを認証させそれにより認証サーバからの検証を求めることなしにネットワークに加わるツールを有するようにする段階とを含む方法。
【請求項94】
ノードが、特定の通信サーバの信憑性を検証する情報を有するように、特定の通信サーバからの共有暗号鍵で暗号化された確認データを受け取る段階を更に含む、請求項93に記載の方法。
【請求項95】
ネットワークの認証サーバにノードを登録することによってユーザIDとパスワードを取得する段階を更に含む、請求項93又は94記載の方法。
【請求項96】
通知を受ける段階が、要求する段階で使用されるチケット生成チケットを受け入れる段階を含む、請求項93から95のいずれか1項に記載の方法。
【請求項97】
通知を受ける段階が、受け取る段階で使用されるノードのセッション鍵を得る段階を含む、請求項96に記載の方法。
【請求項98】
チケット生成チケットとセッション鍵がパスワードで暗号化され、更に、チケット生成チケットとセッション鍵を解読する段階を含む、請求項93から97のいずれか1項に記載の方法。
【請求項99】
要求する段階が、チケット生成チケットと特定の通信サーバの識別を認証サーバに送る段階を含む、請求項96から98のいずれか1項に記載の方法。
【請求項100】
受け取る段階が、特定の通信サーバとノードに固有のチケットを取得する段階を含む、請求項93から99のいずれか1項に記載の方法。
【請求項101】
チケットが、共有暗号鍵のコピーを含む、請求項100に記載の方法。
【請求項102】
セッション鍵で暗号化された共有鍵を解読する段階を更に含む、請求項101に記載の方法。
【請求項103】
タイムスタンプの値をグローバルデータとして計算する段階を更に含む、請求項93から102のいずれか1項に記載の方法。
【請求項104】
特定の通信サーバが、受け取ったデータを共有鍵を使って解読する段階を更に含む、請求項93から103のいずれか1項に記載の方法。
【請求項105】
特定の通信サーバが、受け取ったデータの有効性を検証する段階を更に含む、請求項93から104のいずれか1項に記載の方法。
【請求項106】
特定の通信サーバが、解読した受信データが受け入れ可能であるという確認を送ることを更に含む、請求項104又は105に記載の方法。
【請求項107】
所定の方式で修正された認証データを受け取る段階を更に含む、請求項93から106のいずれか1項に記載の方法。
【請求項108】
修正された認証情報が暗号化され、修正された認証情報を解読する段階を更に含む、請求項107に記載の方法。
【請求項109】
第1のユーザコンピュータが、通信サーバに登録されたユーザコンピュータ間のピアツーピアデータ通信の確立に使用されるように設定された認証済み通信サーバのネットワークの一部である第2のユーザコンピュータとセキュアに通信する方法であって、
第1のコンピュータを、請求項1から16のいずれか1項に記載されたようなネットワークに結合する段階と、
第1と第2のユーザコンピュータにおいて公開鍵と秘密鍵を作成する段階と、
第1と第2のユーザコンピュータ間でネットワークを介して公開鍵を交換する段階と、
第1と第2のユーザコンピュータのそれぞれにおいて、非共有秘密鍵と共有公開鍵から共有暗号化/解読鍵を作成する段階と、
共有暗号鍵を使用して、第1と第2のユーザコンピュータ間のピアツーピア接続を介して第1と第2のユーザコンピュータ間で直接送られるデータメッセージを暗号化する段階とを含む方法。
【請求項110】
相互接続された伝送サーバノードの第1の階層レルム(hierarchical realm)を、相互接続された伝送サーバノードの第2の階層レルムに接続する方法であって、
各レルム内にローカル認証サーバを提供する段階であって、認証サーバが、それぞれの階層レルムの最も高いレベルにある主ノードに接続され、レルム内の全てのサーバに関連した認証問題を制御するように構成される段階と、
第1の階層レルムの主ノードを第2の階層レルムの認証サーバに登録する段階と、
第1の階層レルムの主ノードを第2の階層レルムの認証サーバに対して認証する段階と、
階層レルムを結合するために第1の階層レルムの主ノードが接続しなければならない最も下のノードサーバの識別に関する通知を受ける段階と、
第2の階層レルムの最も下のノードサーバと第1の階層レルムの主ノードの両方の共有データと共有暗号鍵を受け取る段階と、
受け取った共用データと共有暗号鍵を使って、第1の階層レルムの主ノードを第2の階層レルムの最も下のノードサーバに対して認証し、それにより第2のレルムの認証サーバからの検証を求めることなく第1と第2のレルムを結合する段階とを含む方法。
【請求項111】
第2のレルムの特定の最も下のノードサーバに接続するために、第1のレルムの主ノードと第2のレルムの最も下のノードサーバに固有のデータを認証サーバから要求する段階を更に含む、請求項110記載の方法。
【請求項112】
最の下のサーバが、主ノードを第2の階層レルムに対して認証するツールを有するように、共有暗号鍵によって暗号化された共用データとグローバルデータを最も下のノードサーバに送る段階を更に含む、請求項110又は111に記載の方法。
【請求項113】
認証段階が、第2の階層レルムの最も下のノードサーバを介して行なわれる、請求項110から112のいずれか1項に記載の方法。
【請求項114】
第2の階層レルムの主ノードを第1の階層レルムの認証サーバに登録する段階と、
第2の階層レルムの主ノードを第1の階層レルムの認証サーバに対して認証する段階とを含む、請求項110から113のいずれか1項に記載の方法。
【請求項115】
伝送サーバの第1のレルムに接続された第1のユーザコンピュータが、通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された伝送サーバの第2のレルムに接続された第2のユーザコンピュータとセキュアに通信する方法であって、
請求項110から114のいずれか1項に記載の伝送サーバの第2のレルムに第1のレルムの第1のユーザコンピュータを接続する段階と、
第1と第2のユーザコンピュータについて相互接続されたレルム内のネットワーク位置を決定する段階と、
確立したネットワーク位置を使用して第1と第2のユーザコンピュータ間のピアツーピア通信チャネルを確立する段階と、
確立されたピアツーピア通信チャネルで暗号化したデータ通信を送る段階とを含む方法。
【請求項116】
使用する段階が、
第1と第2のユーザコンピュータで公開鍵と秘密鍵を作成する段階と、
ネットワークを介して第1と第2のユーザコンピュータ間で公開鍵を交換する段階と、
第1と第2のユーザコンピュータのそれぞれにおいて、非共有秘密鍵と共有公開鍵から共有暗号化/解読鍵を作成する段階と、
共有暗号鍵を使用して、第1と第2のユーザコンピュータ間に確立されたピアツーピア接続を介して第1と第2のユーザコンピュータ間で直接送信されるデータメッセージを暗号化する段階とを含む、請求項115に記載の方法。
【請求項1】
第1のリモート側コンピュータと第2のリモート側コンピュータの間でデータ通信媒体を介して電子メール通信等のセキュアなピアツーピアデータ通信を実行する方法であって、
各リモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を受け取る段階と、
第1のリモート側コンピュータにおいてデータ通信を生成する段階と、
第2のリモート側コンピュータの現在の接続状態を確認する段階と、
第2のリモート側コンピュータの接続状態からデータ通信媒体に現在接続されることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送信する段階とを含む方法。
【請求項2】
受け取る段階が、リモート側コンピュータの内の何れかの接続状態が変化するたびに繰り返される、請求項1に記載の方法。
【請求項3】
現在状態を記憶するデータサーバから第2のリモート側コンピュータの接続状態を要求する段階を更に含み、
受け取る段階が、要求する段階に応答して実行される、請求項1に記載の方法。
【請求項4】
データサーバに、第1のリモート側コンピュータのアドレス詳細とデータ通信媒体に対する接続の現在状態を提供する段階を更に含む、請求項1から3のいずれか1項に記載の方法。
【請求項5】
第2のリモート側コンピュータに関する情報によりデータ通信を暗号化し、それにより受け取ったときに第2のリモート側コンピュータだけが通信を解読できるようにする段階を更に含む、請求項1から4のいずれか1項に記載の方法。
【請求項6】
受け取る段階が、暗号化する段階を実行するために第2のリモート側コンピュータに関する情報を受け取る段階を含む、請求項5に記載の方法。
【請求項7】
第1のリモート側コンピュータが、ローカルに相互接続された複数のセキュアなコンピュータを第1のリモート側位置に含み、生成する段階は、受け取る段階、確認する段階及び送信する段階とは別のコンピュータ上で実行される、請求項1から6のいずれか1項に記載の方法。
【請求項8】
リモート側コンピュータが互いに通信する能力に関する1組の許可を記憶する段階と、
第1のリモート側コンピュータの第2のリモート側コンピュータと通信する許可を確認する段階と、
確認する段階によって、第1のリモート側コンピュータが第2のリモート側コンピュータと通信する許可を有することが分かった場合だけ、送信する段階が行われるのを許可する、請求項1から7のいずれか1項に記載の方法。
【請求項9】
データ通信において第2のリモート側コンピュータであるように指定された指定受信者の識別を検証する段階を更に含む、請求項1から8のいずれか1項に記載の方法。
【請求項10】
第2のリモート側コンピュータの接続状態から、第2のリモート側コンピュータが現在、データ通信媒体を介してメッセージを受け取ることができないことが分かった場合に、確認する段階の後でデータ通信をローカルに一時的に記憶して所定の時間期間待つ段階と、
その後で、確認する段階と送信する段階を繰り返す段階を更に含む、請求項1から9のいずれか1項に記載の方法。
【請求項11】
第1のリモート側コンピュータから第2のリモート側コンピュータへのデータ通信の送信を評価し、送信が失敗した場合に、
送信失敗の原因を決定し、決定された原因によって、
第1のリモート側コンピュータにおいて送信失敗通知を生成する段階と、
所定の時間期間待まって送信する段階を繰り返す段階のいずれかの段階を実行する段階を更に含む、請求項1から10のいずれか1項に記載の方法。
【請求項12】
データ通信を複数の個別のデータメッセージに分割する段階を更に含み、
送信する段階が、更に、データメッセージのそれぞれを別々に第2のリモート側コンピュータに送り、それによりデータ通信手順のセキュリティを改善する段階を含む、請求項1から11のいずれか1項に記載の方法。
【請求項13】
データ通信が、ボイスオーバーIP通信を含む、請求項1から12のいずれか1項に記載の方法。
【請求項14】
通信サーバであって、この通信サーバを含む第1のリモート側コンピュータと第2のリモート側コンピュータとの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を実行するように構成され、
各リモート側コンピュータのデータ通信ネットワークに対する接続のアドレス詳細及び現在状態を受け取る受信手段と、
第1のリモート側コンピュータにおいてデータ通信を生成するメッセージ生成モジュールと、
第2のリモート側コンピュータの現在の接続状態を確認する確認モジュールと、
第2のリモート側コンピュータの接続状態から、第2のリモート側コンピュータがデータ通信ネットワークに現在接続されていることが分かったときだけ、データ通信を途中で記憶することなく第1のリモート側コンピュータから第2のリモート側コンピュータにデータ通信を直接送るように構成された伝送モジュールとを含む通信サーバ。
【請求項15】
通信システムであって、
請求項14に記載の複数の通信サーバと、
データ通信ネットワークによって複数の通信サーバに接続可能なデータサーバとを含み、
データサーバが、通信ネットワークに対する各通信サーバの接続の現在状態を、各通信サーバの現在のネットワークアドレスと共に受け取り、収集し、記憶し、且つこの情報の少なくとも一部分を複数の通信サーバに転送して、それらの通信サーバが、複数の通信サーバ間でピアツーピア通信を行うことを可能にするように構成された通信システム。
【請求項16】
中央データサーバが、ユーザダイアグラムプロトコル(UDP)を使用して複数の通信サーバの現行アドレスを調査するように構成された、請求項15に記載の通信システム。
【請求項17】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のピアツーピアデータ通信を確立するのを支援するように構成された通信サーバであって、サーバが、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルに提供され、
通信サーバがサーバネットワーク内の他の階層レベルにある他の通信サーバに動作可能に接続することを可能にする接続手段と、
複数のローカルユーザコンピュータを通信サーバに登録する登録手段と、
それぞれの登録したローカルユーザコンピュータの登録詳細を記憶するデータストアであって、登録詳細が、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含むデータストアとを有し、
接続手段が、記憶した登録詳細をサーバネットワークの次に高い階層レベルにおける隣りの通信サーバに転送し、且つ階層ネットワーク内の低いレベルにある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶するように構成された通信サーバ。
【請求項18】
記憶された登録詳細が、通信サーバのサーバネットワーク識別、少なくとも1つの登録されたローカルユーザコンピュータのサーバネットワーク識別、及びローカルユーザコンピュータの通信サーバとの接続の現在状態を含む、請求項17に記載の通信サーバ。
【請求項19】
記憶された登録詳細が、階層における低いレベルからの通信サーバのサーバネットワーク識別と、低いレベルの通信サーバの登録ローカルユーザコンピュータのサーバネットワーク識別と含む、請求項17又は18に記載の通信サーバ。
【請求項20】
記憶された登録詳細が、ローカルに登録された各ユーザコンピュータのグローバネットワークアドレスを含む、請求項18又は19に記載の通信サーバ。
【請求項21】
記憶された登録詳細が、ローカルに登録された各ユーザコンピュータの公開暗号鍵を含む、請求項17から20のいずれか1項に記載の通信サーバ。
【請求項22】
接続手段が、第2のユーザコンピュータに対する接続を確立する要求を受け取ったときに、第2のユーザコンピュータのローカル登録に関してデータストアを確認し、第2のユーザコンピュータの識別がローカルデータストアに記憶されている場合に要求を受け入れるように構成された、請求項17から21のいずれか1項に記載の通信サーバ。
【請求項23】
第2のユーザコンピュータがローカルに登録されていることが分からない場合に、登録確認手段が、隣りの通信サーバに要求を転送するように接続手段に指示するように構成された、請求項22に記載の通信サーバ。
【請求項24】
接続手段が、更に、登録したユーザコンピュータの状態に関してデータストアを確認するするように構成された状態確認手段を含み、接続手段が、第2のユーザコンピュータが登録され、第2のユーザコンピュータの状態から第2のユーザコンピュータに接続することができることが分かる場合に、第2のユーザコンピュータとの通信を確立しようとするように構成された、請求項22又は23に記載の通信サーバ。
【請求項25】
接続手段が、第2のユーザコンピュータに接続する要求の受け入れに応答して第2のユーザコンピュータの状態を更新するように構成された、請求項22から24のいずれか1項に記載の通信サーバ。
【請求項26】
接続手段が、第2のユーザコンピュータに接続する要求の受け入れに応答して第1と第2のユーザコンピュータのデータ接続状態を設定するように構成された、請求項22から25のいずれか1項に記載の通信サーバ。
【請求項27】
第2のユーザコンピュータに対する接続の要求に対する応答を構成するように構成された応答手段を更に含み、
応答手段が、第2のユーザコンピュータの現在のネットワークアドレスを第1のユーザコンピュータに送り、第1のユーザコンピュータの現在のネットワークアドレスを第2のユーザコンピュータに送るように構成された、請求項17から26のいずれか1項に記載の通信サーバ。
【請求項28】
応答手段が、第2のユーザコンピュータのグローバネットワークアドレスを決定するように構成された、請求項27に記載の通信サーバ。
【請求項29】
グローバネットワークアドレスが、UDPチャネルアドレスを含む、請求項28に記載の通信サーバ。
【請求項30】
データストアが、更に、リモート側コンピュータが互いに通信する能力に関する1組の許可を含み、
サーバは、更に、記憶された1組の許可を使用して第1のユーザコンピュータが第2のユーザコンピュータと通信することを許可されているかどうかを判断する手段を更に含む、請求項17から29のいずれか1項に記載の通信サーバ。
【請求項31】
データ通信ネットワークを介して、複数のユーザコンピュータの内の特定のユーザコンピュータ間で電子メール通信等のセキュアなピアツーピアデータ通信を実行する通信システムであって、
階層的に接続されたサーバネットワーク内に配置され、サーバネットワークのノードをそれぞれ表わす、請求項17に記載の複数の通信サーバを有し、サーバネットワークが、複数のユーザコンピュータの内の特定のユーザコンピュータ間の通信の確立を支援するために複数のユーザコンピュータに接続可能である通信システム。
【請求項32】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援する方法であって、複数の通信サーバからなるサーバネットワーク内の所与の階層レベルにある通信サーバ上で実施され、
サーバネットワーク内の他の階層レベルにある通信サーバに対する動作可能なネットワーク接続を確立する段階と、
複数のローカルユーザコンピュータを通信サーバに登録する段階と、
それぞれの登録したローカルユーザコンピュータの、各ローカルユーザコンピュータのアドレス情報とデータ通信ネットワークに対する接続の現在状態を含む登録詳細を記憶する段階とを含み、
確立する段階が、記憶した登録詳細を、サーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに転送する段階と、階層ネットワーク内の低いレベルにおある接続された通信サーバの任意のローカルユーザコンピュータの登録詳細を受け取り記憶する段階とを含む方法。
【請求項33】
送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して、電子メール通信等のセキュアなピアツーピアデータ通信を確立するのを支援するために、ピアツーピア通信メッセージの指定受信者コンピュータを探索する方法であって、通信サーバの階層ネットワーク内で実施され、
指定受信者コンピュータの識別と送信者コンピュータの識別を含むデータ通信の要求をローカルサーバに送る段階と、
指定受信者がローカルサーバに知られているかどうかを判断する段階と、
指定受信者がローカルサーバに知られている場合に指定受信者に関して記憶した詳細を取り出し、その詳細を送信者コンピュータに送る段階と、
指定受信者がローカルに知られていない場合にサーバネットワーク内の次に高い階層レベルにある隣りの通信サーバに要求を転送し、これにより該通信サーバがローカルサーバになる段階と、
指定受信者が見つかるか或いは階層ネットワーク内の一番上にあるサーバの確認が終わるまで、決定する段階、取り出す段階、及び転送する段階を繰り返す段階とを含む方法。
【請求項34】
指定受信者コンピュータを識別することなく階層ネットワークの一番上に達した場合に、接続失敗の通知を送信者コンピュータに送る段階を更に含む、請求項33に記載の方法。
【請求項35】
指定受信者コンピュータが識別された後で指定受信者コンピュータに対する接続の状態を確認する段階を更に含む、請求項33又は34に記載の方法。
【請求項36】
指定受信者コンピュータに対する接続が利用できない場合に送信者コンピュータに接続失敗の通知を送る段階を更に含む、請求項35に記載の方法。
【請求項37】
起こり得る状態の変化を許容するために所定の時間期間待ち、その後で送信する段階、判断する段階、及び取り出す段階、転送する段階、及び繰り返す段階を再び実行する段階を更に含む、請求項36記載の方法。
【請求項38】
取り出す段階が、指定受信者が通信サーバに知られているがそこにローカルに登録されていない場合に、指定受信者が登録された階層内の低いレベルにある通信サーバに要求を送る段階を含む、請求項33から37のいずれか1項に記載の方法。
【請求項39】
取り出す段階が、指定受信者の記憶した詳細の一部としてローカルに登録されたサーバから指定受信者のネットワーク位置を取り出す段階を含む、請求項38に記載の方法。
【請求項40】
所望の指定受信者コンピュータを見つける際に将来使用する監視機能をサーバに記憶し実行する段階を更に含み、監視機能が、ローカルサーバに追加された任意の新しいコンピュータの識別を所望の指定受信者コンピュータの識別と比較し、一致した場合に送信者コンピュータに通知する段階を更に含む、請求項33から39のいずれか1項に記載の方法。
【請求項41】
記憶された1組の許可を使用して、送信者コンピュータが、所望の指定受信者コンピュータとの通信が許可されているかどうかを判断し、記憶された許可によってそのような通信が許可される場合だけ送信する段階を実行できるようにする、請求項33から40のいずれか1項に記載の方法。
【請求項42】
送信者コンピュータと指定受信者コンピュータの間でデータ通信ネットワークを介して電子メール通信等のセキュアなピアツーピアデータ通信を確立する方法であって、複数の通信サーバからなる階層的サーバネットワーク内で実施され、
請求項33から41のいずれか1項に記載の指定受信者コンピュータを探索する方法と、
指定受信者コンピュータの現在のグローバル通信アドレスを送信者コンピュータに通信する段階と、
送信者コンピュータの現行グローバル通信アドレスを指定受信者コンピュータに通信する段階と、
グローバル通信アドレスを使用して送信者コンピュータと指定受信者コンピュータの間でピアツーピア通信チャネルを設定する段階とを含む方法。
【請求項43】
リモート側コンピュータが互いに通信する能力に関する1組の許可を記憶する段階と、
送信者コンピュータが指定受信者コンピュータと通信する機能に関する記憶された1組の許可を確認する段階と、
この確認する段階から、送信者コンピュータが指定受信者コンピュータと通信する許可を持つことが分かった場合だけ、第1と第2の通信段階と送信段階とを行うことを許可する段階を更に含む、請求項42に記載の方法。
【請求項44】
送信者コンピュータとローカルサーバの間で第1の直接チャネルを設定する段階を更に含む、請求項42又は43の記載の方法。
【請求項45】
第2の通信段階が、第1の直接チャネルを介して行なわれる、請求項44に記載の方法。
【請求項46】
指定受信者コンピュータとローカルサーバの間で第2の直接チャネルを設定する段階を更に含む、請求項42から45のいずれか1項に記載の方法。
【請求項47】
第1の通信段階が、第2の直接チャネルを介して行なわれる、請求項46に記載の方法。
【請求項48】
第1又は第2の直接チャネルを設定する段階が、第1又は第2のUDP(ユーザダイアグラムプロトコル)直接チャネルを設定する段階を含む、請求項44から47のいずれか1項に記載の方法。
【請求項49】
第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するために使用される伝送サーバであって、
第1のユーザコンピュータから、伝送サーバに登録された第2のユーザコンピュータに対する接続の要求を受け取る受信手段と、
第2のユーザコンピュータに対する接続の現在の接続状態を検証する検証手段と、
第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないこと分かった場合に、要求の詳細をウォッチとして記憶するデータストアと、
検証手段に応答して、第2のユーザコンピュータの状態が変化して、第2のユーザコンピュータとのピアツーピア通信を現在確立することができることが示された場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る応答手段とを含み、
検証手段が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認すると共に更新するように構成され、この更新から、第2のユーザの状態がオンラインに変化したことが分かったときに対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する伝送サーバ。
【請求項50】
データストアが、第2のユーザコンピュータの識別と第1のユーザコンピュータの識別を記憶するように構成された、請求項49に記載の伝送サーバ。
【請求項51】
受信手段が、第2のユーザコンピュータに対する接続の複数の要求を受け取るように構成され、データストアが、第2のユーザコンピュータに対するウォッチの各要求の詳細を記憶するように構成され、応答手段が、第2のユーザコンピュータの接続状態がオンラインに変化した後で、複数のメッセージを第2のコンピュータに対する接続を要求したユーザコンピュータのそれぞれに一つずつ送信するように構成された、請求項49又は50に記載の伝送サーバ。
【請求項52】
伝送サーバが、伝送サーバの階層に接続されるように構成された、請求項49から51のいずれか1項に記載の伝送サーバ。
【請求項53】
伝送サーバが、登録されたユーザコンピュータのそれぞれの接続状態の詳細を階層内のより高い位置にある伝送サーバに送るように構成され、応答手段が、第2のユーザコンピュータのオンライン状態を示すメッセージを階層内のより高い位置にある少なくとも1つの伝送サーバに送信するように構成された、請求項52に記載の伝送サーバ。
【請求項54】
データストアが、伝送サーバに登録されたユーザコンピュータの異なるものに対して複数の異なるウォッチを記憶するように構成され、
検証する手段が、登録されたユーザコンピュータの全てに対する現在の接続状態を定期的に確認し更新するように構成され、この更新から、任意のユーザ状態がオンラインに変化したことが分かったときに、複数の記憶されたウォッチの中から対応するウォッチの存在を確認し、それが見つかった場合に、応答手段を活動化して見つかったウォッチに対応するメッセージを送信する、請求項49から53のいずれか1項に記載の伝送サーバ。
【請求項55】
データストアが、現在オンラインになっている登録ユーザコンピュータのリストを記憶するように構成され、
伝送サーバが、更に、データストアにウォッチを記憶する前に現在のオンラインのユーザコンピュータのリストを確認するオンライン確認手段を更に含む、請求項49から54のいずれか1項に記載の伝送サーバ。
【請求項56】
登録ユーザコンピュータの状態からその登録ユーザコンピュータがオンラインに変化したことが分かったときに、監視中のユーザコンピュータの識別を現在オンラインリストに転送する転送手段を更に含む、請求項55に記載の伝送サーバ。
【請求項57】
第1と第2のユーザコンピュータの間で電子メール通信等のピアツーピアデータ通信を確立するのを支援する方法であって、
第1のユーザコンピュータから、ローカルに登録された第2のユーザコンピュータに対する接続の要求を受け取る段階と、
第2のユーザコンピュータに対する接続の現在の接続状態を検証する段階と、
第2のユーザコンピュータの現在の接続状態から、第2のユーザコンピュータとのピアツーピア通信を現在確立できないことが分かった場合に、要求の詳細をウォッチとして記憶する段階と、
検証する段階に応答して、第2のユーザコンピュータの状態が変化し、第2のユーザコンピュータとのピアツーピア通信を現在確立したことを示している場合に、第2のユーザコンピュータのオンライン状態を示すメッセージを第1のユーザコンピュータに送る段階とを含み、
検証する段階が、第2のユーザコンピュータに対する現在の接続状態を定期的に確認し更新し、この更新から、第2のユーザ状態がオンラインに変化したことが分かったときに、対応するウォッチの存在を確認し、ウォッチが見つかった場合に応答手段を活動化してメッセージを送信する方法。
【請求項58】
第1と第2のユーザコンピュータの間で、少なくとも第1のユーザコンピュータの通信が第1のネットワークアドレス変換器(NAT)によって処理されるデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立する方法であって、
第1のユーザコンピュータと伝送サーバの間で第1のNATによって確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続を要求する段階と、
伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、
TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートする段階と、
第1のユーザコンピュータの第2のUDPポートを開く段階と、
伝送サーバが第2のUDPポートの第1のNATアドレスを決定できるように、第2のUDPポートから第1のNATを介して第1のUDPポートにデータパケットを送信する段階と、
伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを取得する段階と、
第1と第2のユーザコンピュータの間にセキュアなピアツーピア通信を確立することができるように、第1と第2のユーザコンピュータのそれれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する段階とを含む方法。
【請求項59】
第1のNATを介して第1のユーザコンピュータから伝送サーバへのTCP/IP通信リンクを作成する段階を更に含む、請求項58に記載の方法
【請求項60】
作成する段階が、第2のユーザコンピュータが登録された伝送サーバネットワーク上のローカル伝送サーバを探索し識別し、そのローカル伝送サーバに接続する段階を含む、請求項59に記載の方法。
【請求項61】
第2のユーザコンピュータが、伝送サーバに登録され、それらの間に第2のNATを介してTCP/IP通信リンクが確立され、取得する段階が、更に、
伝送サーバにおいて第4のUDPポートを確立する段階と、
TCP/IP通信リンクを介して第4のUDPポートのアドレスを第2のユーザコンピュータにレポートする段階と、
第2のユーザコンピュータにある第3のUDPポートを開く段階と、
第3のUDPポートから第2のNATアドレスを介して第4のUDPポートにデータパケットを送り、伝送サーバが第2のユーザコンピュータの第3のUDPポートの第2のNATアドレスを決定できるようにする段階とを含む、請求項58から60のいずれか1項に記載の方法。
【請求項62】
第1のユーザコンピュータが、第2のUDPポートの宛先を第1のUDPポートから第3のUDPポートに切り替えることを更に含む、請求項58から61のいずれか1項に記載の方法
【請求項63】
第1のユーザコンピュータが、第2のUDPポートから第2のユーザコンピュータの第3のUDPポートにピアツーピアメッセージを直接送るように構成された、請求項62に記載の方法。
【請求項64】
第2のユーザコンピュータが、第3のUDPポートの宛先を第4のUDPポートから第2のUDPポートに切り替えることを更に含む、請求項58から63のいずれか1項に記載の方法。
【請求項65】
第2のユーザコンピュータが、第3のUDPポートから第2のユーザコンピュータの第2のUDPポートにピアツーピアメッセージを直接送るように構成された、請求項64に記載の方法。
【請求項66】
第1と第2のユーザコンピュータの間にピアツーピア通信が確立されたときに第1のUDPポートの非活動性を検出する段階と、
第1のUDPポートを閉じることによって第1のユーザコンピュータとの接続を断つ段階とを含む、請求項58から65のいずれか1項に記載の方法。
【請求項67】
伝送サーバが、第1のユーザコンピュータとのTCP/IP接続を切断することを更に含む、請求項66に記載の方法
【請求項68】
第1と第2のユーザコンピュータの間にピアツーピア通信が確立されたときに、第4のUDPポートの非活動性を検出する段階と、
第4のUDPポートを閉じることによって第2のユーザコンピュータとの接続を断つ段階とを含む、請求項58から67のいずれか1項に記載の方法。
【請求項69】
伝送サーバが、第2のユーザコンピュータとのTCP/IP接続を切断することを更に含む、請求項68に記載の方法。
【請求項70】
第1又は第2のNATが、宛先ごとのUDPポートが異なる非対称NATであり、
非対称NATからの直接接続の新しいアドレスを記録する段階と、
UDPポート出力を非対称NATの新しいアドレスにアドレス指定しなおす段階とを含む、請求項58から69のいずれか1項に記載の方法。
【請求項71】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアなピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、少なくとも第1のユーザコンピュータの通信が、第1のネットワークアドレス変換器(NAT)によって処理され、
第1のNATによって第1のユーザコンピュータと伝送サーバの間に確立された伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを介しての直接接続の要求を受け取る要求受信手段と、
伝送サーバにおいて第1のユーザダイアグラムプロトコル(UDP)ポートを確立する確立する手段と、
TCP/IP通信リンクを介して第1のユーザコンピュータに第1のUDPポートのアドレスをレポートするレポート手段と、
第1のユーザコンピュータに設定された第2のUDPポートから、第1のNATを介して第1のUDPポートに送られるデータパケットを受け取るデータパケット受信手段であって、伝送サーバが、第2のUDPポートの第1のNATアドレスを決定するように構成されたデータパケット受信手段と、
伝送サーバにおいて第2のユーザコンピュータの第3のUDPポートアドレスを得る取得手段と、
第1と第2のユーザコンピュータが間にセキュアなピアツーピア通信を確立できるように、第1と第2のユーザコンピュータのそれぞれに互いのユーザコンピュータのUDPポートアドレスを通知する手段とを有する伝送サーバ。
【請求項72】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して電子メール通信チャネル等のセキュアな疑似ピアツーピアデータ通信チャンネルを確立する方法であって、両方のユーザコンピュータの通信が、第1と第2の非対称ネットワークアドレス変換器(NAT)によって処理され、
それぞれの第1と第2の非対称NATを介した各ユーザコンピュータから伝送サーバへの伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを作成する段階と、
第1のNATによる第1のユーザコンピュータと伝送サーバの間のTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する段階と、
第1と第2のUDPポートのアドレスを、それぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートする段階と、
第1のユーザコンピュータに第3のUDPポートを開くと共に第2のユーザコンピュータに第4のUDPポートを開く段階と、
データパケットを第3のUDPポートから第1のNATを介して第1のUDPポートに送り、第4のUDPポートから第2のNATを介して第2のUDPに送り、それにより伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスとを決定できるようにする段階と、
第1のUDPポートで受け取ったデータパケットを第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、伝送サーバからデータパケットを有効に返送することによって、第1と第2のユーザコンピュータ間の擬似ピアツーピア通信を確立するようにする段階とを含む方法。
【請求項73】
転送する段階が、受け取ったデータパケットを転送前に瞬間的且つ一時的に記憶する段階を含む、請求項72に記載の方法。
【請求項74】
生成する段階が、第2のユーザコンピュータが登録された伝送サーバネットワーク上のローカル伝送サーバを探索し識別し、このローカル伝送サーバに接続する段階を含む、請求項72又は73に記載の方法。
【請求項75】
伝送サーバが、擬似ピアツーピア通信を確立した後で第1と第2のユーザコンピュータとのTCP/IP接続を断つことを更に含む、請求項72から74のいずれか1項に記載の方法。
【請求項76】
第1と第2のユーザコンピュータ間でデータ通信ネットワークを介して、電子メール通信チャネル等のセキュアな擬似ピアツーピアデータ通信チャンネルを確立するのを支援する伝送サーバであって、両方のユーザコンピュータの通信が、それぞれの第1と第2の非対称ネットワークアドレス変換器(NAT)によって取り扱われ、
伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信リンクを、各ユーザコンピュータから伝送サーバまで、それぞれの第1と第2の非対称NATを介して作成する作成する手段と、
第1のユーザコンピュータと伝送サーバの間で第1のNATによるTCP/IP通信リンクを介して受け取る直接接続の要求を受け取ったときに、伝送サーバに第1と第2のユーザダイアグラムプロトコル(UDP)ポートを確立する確立手段と、
第1と第2のUDPポートのアドレスをそれぞれのTCP/IP通信リンクを介して第1と第2のユーザコンピュータにそれぞれレポートするレポート手段と、
第1のコンピュータに設定された第3のUDPポートから第1のNATを介して第1のUDPポートに送られ、第2のユーザコンピュータに設定された第4のUDPポートから第2のNATを介して第2のUDPに送られたデータパケットとを受け取り、それにより、伝送サーバが、第3のUDPポートの第1のNATアドレスと第4のUDPポートの第2のNATアドレスを決定できるようにする受け取る手段と、
第1のUDPポートで受け取ったデータパケットを、第2のUDPポートを介して第4のUDPポートのNATアドレスに転送し、第2のUDPポートで受け取ったデータパケットを、第1のUDPポートを介して第3のUDPポートのNATアドレスに転送し、それにより、第1と第2のユーザコンピュータの間の擬似ピアツーピア通信が、伝送サーバからデータパケットを有効に返送することによって確立される伝送サーバ。
【請求項77】
送信者コンピュータと指定受信者コンピュータ間のデータ通信ネットワークを介したピアツーピア通信を確立するのを支援するために、ユーザコンピュータを伝送サーバの階層接続ネットワークに接続する方法であって、
接続ネットワーク内のローカル伝送サーバと同じ階層レベルにある複数のピア転送サーバのそれぞれの現行負荷を示す情報を受け取る段階と、
ローカルユーザコンピュータをローカル伝送サーバに接続する要求を受け取る段階と、
ローカルサーバの現行負荷をピアサーバのそれぞれと比較する段階と、
ローカル伝送サーバの負荷が、ピアサーバの内のいずれかのピアサーバの負荷より著しく大きい場合に、最も低い負荷を有するピアサーバに接続すべきであることを示す応答をローカルユーザコンピュータに送る段階と、
ローカル伝送サーバの負荷が、ピアサーバの内のどのピアサーバの負荷より著しく大きくない場合に接続要求を受け入れ、ローカル伝送サーバの現行負荷を更新する段階とを含む方法。
【請求項78】
伝送サーバの現行負荷が、伝送サーバに登録されたユーザコンピュータの数によって決定される、請求項77に記載の方法。
【請求項79】
ローカル伝送サーバの現行負荷を階層ネットワーク内のさらに高いレベルの伝送サーバに転送する段階を更に含む、請求項77又は78に記載の方法。
【請求項80】
転送する段階が、ローカル伝送サーバの現行IPアドレス及びポートを送出する段階を含む、請求項79に記載の方法。
【請求項81】
転送する段階が、ハートビート信号を一定間隔で送出することを含み、各ハートビート信号が、ローカル伝送サーバの負荷に関する更新された最新情報を提供する、請求項79又は80に記載の方法。
【請求項82】
受け取る段階が、複数のピア転送サーバのそれぞれの現行IPアドレスとポートを示す情報を受け取る段階を含む、請求項77から81のいずれか1項に記載の方法。
【請求項83】
受け取る段階が、複数のピア転送サーバのそれぞれに関するハートビート信号を定期的に受け取る段階を含み、ハートビート信号が、ピア転送サーバの識別とピア転送サーバの現行負荷を示す情報を含む、請求項77から82のいずれか1項に記載の方法。
【請求項84】
ローカル伝送サーバの地理的位置を決定する段階を更に含む、請求項77から83のいずれか1項に記載の方法。
【請求項85】
受け取る段階が、複数のピア転送サーバのそれぞれの地理的位置に関する情報を受け取る段階を含む、請求項84に記載の方法。
【請求項86】
地理情報が、ローカル又はピア転送サーバに関するタイムゾーン情報を含む、請求項84又は85に記載の方法。
【請求項87】
比較する段階が、ローカルサーバの現行負荷をローカルユーザと同じ地理的位置にある各ピアサーバと比較する段階を含み、
送信する段階が、ローカル伝送サーバの負荷が、同じ地理的位置にあるピアサーバのいずれかの負荷よりも極めて大きい場合に、最も小さい負荷を有するローカルユーザコンピュータと同じ地理的位置にあるピア伝送サーバに接続すべきであることを示す応答を送る送信段階とを含む、請求項85又は請求項85に従属する請求項86に記載の方法。
【請求項88】
送信段階が、ローカル伝送サーバに対する接続ネットワークの隣接するより高い階層レベルにある親伝送サーバの通信アドレスを送る段階を含む、請求項77から87のいずれか1項に記載の方法。
【請求項89】
ローカル伝送サーバに接続され、階層的接続ネットワーク内の低いレベルにある全ての子伝送サーバの負荷を取得し検討する段階と、
各子サーバによりローカルサーバの現行負荷を評価する段階と、
ローカル伝送サーバの負荷がいずれかの子サーバの負荷よりも著しく大きい場合に、最も小さい負荷を有する子サーバに接続するべきであることを示す応答をローカルユーザコンピュータに送る段階とを含む、請求項77から88のいずれか1項に記載の方法。
【請求項90】
ローカル伝送サーバの地理的位置を決定する段階を更に含み、取得する段階が、複数の子伝送サーバのそれぞれの地理的位置に関する情報を受け取る段階を含む、請求項89に記載の方法。
【請求項91】
地理情報が、ローカル又は子伝送サーバに関するタイムゾーン情報を含む、請求項90に記載の方法。
【請求項92】
評価する段階が、ローカルサーバの現行負荷をローカルユーザと同じ地理的位置にある子サーバのそれぞれと比較する段階を含み、
送信段階が、ローカル伝送サーバの負荷が、同じ地理的位置のいずれかの子サーバの負荷よりも著しく大きい場合に、最も小さい負荷を有するローカルユーザコンピュータと同じ地理的位置にある子伝送サーバに接続するべきであることを示す応答をローカルユーザコンピュータに送る段階を含む、請求項90又は91に記載の方法。
【請求項93】
通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された認証済み通信サーバのネットワークにノードを結合する方法であって、
認証サーバから受け取ったユーザ識別とパスワードを使用して、認証サーバにノードを認証させる段階と、
ネットワークに加わるためにノードを接続しなければならない特定の通信サーバの識別の通知を受ける段階と、
特定の通信サーバに接続するために、認証サーバから特定の通信サーバ及びノードに固有のデータを要求する段階と、
特定の通信サーバ及びノードに固有のデータと、ノードと特定の通信サーバによって共有される共有暗号鍵とを受け取る段階と、
特定の通信サーバ及びノードに固有のデータと、暗号鍵によって暗号化されたグローバルデータとを特定の通信サーバに送り、その結果、特定の通信サーバが、ネットワークにノードを認証させそれにより認証サーバからの検証を求めることなしにネットワークに加わるツールを有するようにする段階とを含む方法。
【請求項94】
ノードが、特定の通信サーバの信憑性を検証する情報を有するように、特定の通信サーバからの共有暗号鍵で暗号化された確認データを受け取る段階を更に含む、請求項93に記載の方法。
【請求項95】
ネットワークの認証サーバにノードを登録することによってユーザIDとパスワードを取得する段階を更に含む、請求項93又は94記載の方法。
【請求項96】
通知を受ける段階が、要求する段階で使用されるチケット生成チケットを受け入れる段階を含む、請求項93から95のいずれか1項に記載の方法。
【請求項97】
通知を受ける段階が、受け取る段階で使用されるノードのセッション鍵を得る段階を含む、請求項96に記載の方法。
【請求項98】
チケット生成チケットとセッション鍵がパスワードで暗号化され、更に、チケット生成チケットとセッション鍵を解読する段階を含む、請求項93から97のいずれか1項に記載の方法。
【請求項99】
要求する段階が、チケット生成チケットと特定の通信サーバの識別を認証サーバに送る段階を含む、請求項96から98のいずれか1項に記載の方法。
【請求項100】
受け取る段階が、特定の通信サーバとノードに固有のチケットを取得する段階を含む、請求項93から99のいずれか1項に記載の方法。
【請求項101】
チケットが、共有暗号鍵のコピーを含む、請求項100に記載の方法。
【請求項102】
セッション鍵で暗号化された共有鍵を解読する段階を更に含む、請求項101に記載の方法。
【請求項103】
タイムスタンプの値をグローバルデータとして計算する段階を更に含む、請求項93から102のいずれか1項に記載の方法。
【請求項104】
特定の通信サーバが、受け取ったデータを共有鍵を使って解読する段階を更に含む、請求項93から103のいずれか1項に記載の方法。
【請求項105】
特定の通信サーバが、受け取ったデータの有効性を検証する段階を更に含む、請求項93から104のいずれか1項に記載の方法。
【請求項106】
特定の通信サーバが、解読した受信データが受け入れ可能であるという確認を送ることを更に含む、請求項104又は105に記載の方法。
【請求項107】
所定の方式で修正された認証データを受け取る段階を更に含む、請求項93から106のいずれか1項に記載の方法。
【請求項108】
修正された認証情報が暗号化され、修正された認証情報を解読する段階を更に含む、請求項107に記載の方法。
【請求項109】
第1のユーザコンピュータが、通信サーバに登録されたユーザコンピュータ間のピアツーピアデータ通信の確立に使用されるように設定された認証済み通信サーバのネットワークの一部である第2のユーザコンピュータとセキュアに通信する方法であって、
第1のコンピュータを、請求項1から16のいずれか1項に記載されたようなネットワークに結合する段階と、
第1と第2のユーザコンピュータにおいて公開鍵と秘密鍵を作成する段階と、
第1と第2のユーザコンピュータ間でネットワークを介して公開鍵を交換する段階と、
第1と第2のユーザコンピュータのそれぞれにおいて、非共有秘密鍵と共有公開鍵から共有暗号化/解読鍵を作成する段階と、
共有暗号鍵を使用して、第1と第2のユーザコンピュータ間のピアツーピア接続を介して第1と第2のユーザコンピュータ間で直接送られるデータメッセージを暗号化する段階とを含む方法。
【請求項110】
相互接続された伝送サーバノードの第1の階層レルム(hierarchical realm)を、相互接続された伝送サーバノードの第2の階層レルムに接続する方法であって、
各レルム内にローカル認証サーバを提供する段階であって、認証サーバが、それぞれの階層レルムの最も高いレベルにある主ノードに接続され、レルム内の全てのサーバに関連した認証問題を制御するように構成される段階と、
第1の階層レルムの主ノードを第2の階層レルムの認証サーバに登録する段階と、
第1の階層レルムの主ノードを第2の階層レルムの認証サーバに対して認証する段階と、
階層レルムを結合するために第1の階層レルムの主ノードが接続しなければならない最も下のノードサーバの識別に関する通知を受ける段階と、
第2の階層レルムの最も下のノードサーバと第1の階層レルムの主ノードの両方の共有データと共有暗号鍵を受け取る段階と、
受け取った共用データと共有暗号鍵を使って、第1の階層レルムの主ノードを第2の階層レルムの最も下のノードサーバに対して認証し、それにより第2のレルムの認証サーバからの検証を求めることなく第1と第2のレルムを結合する段階とを含む方法。
【請求項111】
第2のレルムの特定の最も下のノードサーバに接続するために、第1のレルムの主ノードと第2のレルムの最も下のノードサーバに固有のデータを認証サーバから要求する段階を更に含む、請求項110記載の方法。
【請求項112】
最の下のサーバが、主ノードを第2の階層レルムに対して認証するツールを有するように、共有暗号鍵によって暗号化された共用データとグローバルデータを最も下のノードサーバに送る段階を更に含む、請求項110又は111に記載の方法。
【請求項113】
認証段階が、第2の階層レルムの最も下のノードサーバを介して行なわれる、請求項110から112のいずれか1項に記載の方法。
【請求項114】
第2の階層レルムの主ノードを第1の階層レルムの認証サーバに登録する段階と、
第2の階層レルムの主ノードを第1の階層レルムの認証サーバに対して認証する段階とを含む、請求項110から113のいずれか1項に記載の方法。
【請求項115】
伝送サーバの第1のレルムに接続された第1のユーザコンピュータが、通信サーバに登録されたユーザコンピュータ間でピアツーピアデータ通信を確立する際に使用するように設定された伝送サーバの第2のレルムに接続された第2のユーザコンピュータとセキュアに通信する方法であって、
請求項110から114のいずれか1項に記載の伝送サーバの第2のレルムに第1のレルムの第1のユーザコンピュータを接続する段階と、
第1と第2のユーザコンピュータについて相互接続されたレルム内のネットワーク位置を決定する段階と、
確立したネットワーク位置を使用して第1と第2のユーザコンピュータ間のピアツーピア通信チャネルを確立する段階と、
確立されたピアツーピア通信チャネルで暗号化したデータ通信を送る段階とを含む方法。
【請求項116】
使用する段階が、
第1と第2のユーザコンピュータで公開鍵と秘密鍵を作成する段階と、
ネットワークを介して第1と第2のユーザコンピュータ間で公開鍵を交換する段階と、
第1と第2のユーザコンピュータのそれぞれにおいて、非共有秘密鍵と共有公開鍵から共有暗号化/解読鍵を作成する段階と、
共有暗号鍵を使用して、第1と第2のユーザコンピュータ間に確立されたピアツーピア接続を介して第1と第2のユーザコンピュータ間で直接送信されるデータメッセージを暗号化する段階とを含む、請求項115に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9a】
【図9b】
【図9c】
【図9d】
【図9e】
【図9f】
【図9g】
【図9h】
【図9i】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15a】
【図15b】
【図15c】
【図16】
【図17】
【図18】
【図19】
【図20a】
【図20b】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9a】
【図9b】
【図9c】
【図9d】
【図9e】
【図9f】
【図9g】
【図9h】
【図9i】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15a】
【図15b】
【図15c】
【図16】
【図17】
【図18】
【図19】
【図20a】
【図20b】
【図21】
【公表番号】特表2008−508573(P2008−508573A)
【公表日】平成20年3月21日(2008.3.21)
【国際特許分類】
【出願番号】特願2007−518679(P2007−518679)
【出願日】平成17年6月28日(2005.6.28)
【国際出願番号】PCT/GB2005/002509
【国際公開番号】WO2006/000802
【国際公開日】平成18年1月5日(2006.1.5)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ウィンドウズ
2.WINDOWS
【出願人】(507000121)アムテウス・セキュアー・コミュニケーションズ・リミテッド (1)
【Fターム(参考)】
【公表日】平成20年3月21日(2008.3.21)
【国際特許分類】
【出願日】平成17年6月28日(2005.6.28)
【国際出願番号】PCT/GB2005/002509
【国際公開番号】WO2006/000802
【国際公開日】平成18年1月5日(2006.1.5)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ウィンドウズ
2.WINDOWS
【出願人】(507000121)アムテウス・セキュアー・コミュニケーションズ・リミテッド (1)
【Fターム(参考)】
[ Back to top ]