(57)【特許請求の範囲】
【請求項１】
第１のチャネルを介してクライアントからデュアル通信パケットを受信することが可能である通信モジュールが設けられ、
デュアル通信パケットは、クライアント外部ＩＰアドレスを収容するヘッダ、並びに、クライアント内部ＩＰアドレス及びクライアントデータポート番号を含む暗号化ポートコマンドを収容するデータペイロードを有し、
暗号化ポートコマンドを復号化することが可能であるコーデック（ｃｏｄｅｃ）が設けられ、
ヘッダからクライアント外部ＩＰアドレスを獲得し、クライアント外部ＩＰアドレスを含む修正ポートコマンドを生成することが可能である変換モジュールが設けられ、
修正ポートコマンドに基づいて第２のチャネルを確立することが可能である、サーバー。
【請求項２】
パケットフィルタリング用サーバー側ファイア・ウォールを更に有する請求項１記載のサーバー。
【請求項３】
サーバー側ファイア・ウォールと関連したネットワークアドレス変換器を更に有し、
ネットワークアドレス変換器は、クライアントとサーバーの各々に対して静的なネットワークアドレス変換エントリーを収容することが可能である、
請求項２記載のサーバー。
【請求項４】
ファイル転送プロトコル（ＦＴＰ）通信モジュールを更に有し、
第２のチャネルを介するサーバーとクライアントの間の通信セッションは安全なＦＴＰで行われる、
請求項１記載のサーバー。
【請求項５】
コーデックは、セキュア・ソケット・レイヤ（ＳＳＬ）暗号技術に基づいて復号化することが可能である、請求項１記載のサーバー。
【請求項６】
第１の通信チャネルを介してサーバーから通信パケットを受信することが可能である通信モジュールが設けられ、
通信パケットは、サーバー外部ＩＰアドレスを収容するヘッダ、並びに、サーバー内部ＩＰアドレス及びサーバーデータポート番号を含む暗号化ポートコマンドを収容するデータペイロードを有し、
暗号化ポートコマンドを復号化することが可能であるコーデック（ｃｏｄｅｃ）が設けられ、
ヘッダからサーバー外部ＩＰアドレスを獲得し、サーバー外部ＩＰアドレスを含む修正ポートコマンドを生成することが可能である変換モジュールが設けられ、
修正ポートコマンドに基づいて第２のチャネルを確立することが可能である、クライアント。
【請求項７】
パケットフィルタリング用クライアント側ファイア・ウォールを更に有する請求項６記載のクライアント。
【請求項８】
クライアント側ファイア・ウォールと関連したネットワークアドレス変換器を更に有し、
ネットワークアドレス変換器は、クライアントとサーバーの各々に対して静的なネットワークアドレス変換エントリーを収容することが可能である、
請求項２記載のクライアント。
【請求項９】
ファイル転送プロトコル（ＦＴＰ）通信モジュールを更に有し、
第２のチャネルを介するサーバーとクライアントの間の通信セッションは安全なＦＴＰで行われる、
請求項６記載のクライアント。
【請求項１０】
コーデックは、セキュア・ソケット・レイヤ（ＳＳＬ）暗号技術に基づいて復号化することが可能である、請求項６記載のクライアント。
【請求項１１】
サーバーとクライアントの間にデータソケットを確立する方法であって、
クライアント内部ＩＰアドレス及びクライアントポート番号を含むポートコマンドを暗号化する手順と、
サーバー外部ＩＰアドレス、サーバーポート番号、クライアント内部ＩＰアドレス及びクライアントポート番号を収容するヘッダと、暗号化されたポートコマンドを収容するデータペイロードと、を含むデュアル・チャネル通信パケットを生成する手順と、
サーバーとクライアントの間で通信パケットを送信する手順と、
暗号化されたポートコマンドを復号化する手順と、
ヘッダからクライアント外部ＩＰアドレスを獲得する手順と、
復号化されたポートコマンド内のクライアント内部ＩＰアドレスを、ヘッダから獲得されたクライアント外部ＩＰアドレスで上書きすることにより、復号化されたポートコマンドを修正する手順と、
修正された復号化されたポートコマンドを使用して、サーバーとクライアントの間にデータソケットを確立する手順と、
を有する方法。
【請求項１２】
クライアント側ファイア・ウォールで、クライアント外部ＩＰアドレスを用いてヘッダ内のクライアント内部ＩＰアドレスを再アドレス指定する手順を更に有する請求項１１記載の方法。
【請求項１３】
サーバー側ファイア・ウォールで、サーバー内部ＩＰアドレスを用いてヘッダ内のサーバー外部ＩＰアドレスを再アドレス指定する手順を更に有する請求項１１記載の方法。
【請求項１４】
サーバーとクライアントの間にデータソケットを確立する方法であって、
パッシブコマンドをサーバーへ送信する手順と、
サーバープライベートＩＰアドレス及びサーバーポート番号を含むポートコマンドを暗号化する手順と、
クライアント外部ＩＰアドレス、クライアントポート番号、サーバー内部ＩＰアドレス及びサーバーポート番号を収容するヘッダと、暗号化されたポートコマンドを収容するデータペイロードとを含むデュアル・チャネル通信パケットを作成する手順と、
通信パケットをクライアントへ送信する手順と、
暗号化されたポートコマンドを復号化する手順と、
ヘッダからサーバー外部ＩＰアドレスを獲得する手順と、
復号化されたポートコマンド内のサーバー内部ＩＰアドレスを、ヘッダから獲得されたサーバー外部ＩＰアドレスで上書きすることにより、復号化されたポートコマンドを修正する手順と、
修正された復号化されたポートコマンドを使用して、サーバーとクライアントの間にデータソケットを確立する手順と、
を有する方法。
【請求項１５】
サーバー側ファイア・ウォールで、サーバー外部ＩＰアドレスを用いてヘッダ内のサーバー内部ＩＰアドレスを再アドレス指定する手順を更に有する請求項１３記載の方法。
【請求項１６】
クライアント側ファイア・ウォールで、クライアント内部ＩＰアドレスを用いてヘッダ内のクライアント外部ＩＰアドレスを再アドレス指定する手順を更に有する請求項１３記載の方法。
【請求項１７】
外部ネットワークを介して情報を伝送する方法であって、
サーバーとクライアントの間に制御チャネルを確立する手順と、
サーバーとクライアントのうちの一方で、第１の部分及び第２の部分を含む第１のエンドポイントを識別する手順と、
安全な形式で第１のエンドポイントを暗号化する手順と、
暗号化された第１のエンドポイントを、第１のエンドポイントのプライベートアドレスを収容するアドレスヘッダを有する伝送パケットに収納する手順と、
アドレスヘッダ内のプライベートアドレスを、外部ネットワーク経由での伝送用の公開アドレスに変換する手順と、
制御チャネルにおいて外部ネットワークを介して伝送パケットを送信する手順と、
クライアントとサーバーのうちの他方で、伝送パケットを受信する手順と、
暗号化された第１のエンドポイントを復号化する手順と、
復号化されたエンドポイントの第１の部分をアドレスヘッダ内の公開アドレスで置き換えることによりエンドポイントを修正し、修正されたエンドポイントを使用して、クライアントとサーバーの間にデータチャネルを確立する手順と、
を有する方法。
【発明の詳細な説明】
【０００１】
〔発明の技術分野〕
本発明は、一般的に、ネットワーク通信の分野に係り、特に、ファイア・ウォールを経由する安全なデュアル・チャネル通信のためのシステム及び方法に関する。
【０００２】
〔発明の背景〕
例えば、インターネットのような分散コンピュータネットワークは、組織の内部及び外部の両方で、データ及び情報を受け渡すため頻繁に使用される。受け渡しされる情報の性質及び感度に起因して、屡々、外部ソースを介する傍受から情報を保護するため、様々なステップが行われる。一例として、ファイア・ウォール及び暗号技術は、セキュリティ上の目的のためネットワークの一つ以上のコンポーネントに組み込まれる。
【０００３】
ファイア・ウォールは、コンピュータ、又は、コンピュータのグループが外部からの攻撃に晒されることを制限するハードウェアとソフトウェアの組み合わせである。ファイア・ウォールが最も普及している環境は、インターネットに接続されたローカル・エリア・ネットワーク（ＬＡＮ）である。したがって、ファイア・ウォールは、二つ以上のネットワーク間に境界を強制するシステム、又は、システムの組み合わせである。ファイア・ウォールには、パケットフィルタ、回路ゲートウェイ、アプリケーションゲートウェイ、又は、トラストゲートウェイのような幾つかの種類がある。ネットワークレベルのファイア・ウォール、又は、パケットフィルタは、ネットワーク・プロトコル・パケットのレベルでトラフィックを調べる。
【０００４】
暗号技術は、ネットワークの一つ以上のコンポーネントで実施される。暗号には、秘密復号鍵を使用しない限り誰も読むことが出来ない形式にデータを変換することが含まれる。暗号の目的は、情報をその情報の名宛人ではない全ての人に秘密にすることによって、プライバシーを保証することである。セキュア・ソケット・レイヤ（ＳＳＬ）は、コンピュータネットワークに組み込まれる暗号技術の一つのタイプである。
【０００５】
ＳＳＬは、サーバーとブラウザ、すなわち、クライアントとの間の認証及びデータ暗号化のためのトランスポートレベル技術である。ＳＳＬは、クライアントとサーバーの間のポイント・ツー・ポイント安全性（セキュリティ）を取り決める。ＳＳＬは、ソケットを用いてデータを送信する。ソケットは、殆どのＴＣＰ／ＩＰアプリケーションに存在するコネクションレイヤにおける安全なチャネルである。ＳＳＬは、インターネット上の金銭的取引及び通信のための有力なセキュリティプロトコルである。受け渡しされる情報は暗号化され、ユーザのウェブ・ブラウザと、相手側のコンピュータサーバーだけが鍵を保有し、受け渡しされた情報を理解し復号化する能力を備えている。
【０００６】
デュアル・チャネル通信モジュールは、ネットワークの一つ以上のコンポーネントに組み込まれ、ネットワーク内でのデータの受け渡しを円滑化する。デュアル・チャネル通信は、二つ以上のチャネルを使用して通信する任意のソフトウェア及び／又はハードウェアを表す。例えば、ファイル転送プロトコル（ＦＴＰ）は、データチャネルを確立するため、制御チャネルを用いてセットアップされた非一時的制御チャネル及び一時的制御チャネルを使用し、データチャネルアドレス情報を制御チャネルを介して伝送されたパケットのペイロードに収容する。データペイロードが所定のコンポーネントに関連したファイア・ウォールへ到達する前に暗号化されるとき、ファイア・ウォールは、データペイロードに収容されたアドレス情報を復号化し変換することが不可能である。その結果として、セキュアＦＴＰは、ファイア・ウォール境界を横断するときに使用できない。
【０００７】
〔発明の概要〕
本発明は、従来技術に関連した問題点及び欠点を実質的に除去若しくは軽減するファイア・ウォールを介する安全なデュアル・チャネル通信システム及び方法を提供する。特に、クライアント側のネットワークアドレス変換（ＮＡＴ）は、暗号化されたペイロードアドレスに基づいて、ヘッダアドレス情報を使用して、サーバーで実行される。
【０００８】
本発明の具体的な一実施例によれば、サーバーとクライアントの間で通信セッションを確立することが可能であるデュアル通信モジュールを有するサーバーが提供される。サーバーは、クライアントからデュアル・チャネル通信パケットを受信することが可能であり、デュアル・チャネル通信パケットは、ヘッダ及びデータペイロードを含む。ヘッダは、クライアント外部ＩＰアドレスを収容し、データペイロードは、クライアント内部ＩＰアドレス及びクライアンとデータポート番号を含む符号化ポートコマンドを収容する。サーバーは、ポートコマンドを復号化することが可能なコーデック（ＣＯＤＥＣ）を更に具備する。変換モジュールは、ヘッダから外部ＩＰアドレスを抽出し、クライアント内部ＩＰアドレスをクライアント外部ＩＰアドレスで置換する。本発明の一実施例によれば、サーバーは、クライアント外部ＩＰアドレス、クライアントデータポート番号、サーバー内部ＩＰアドレス、及び、サーバーデータポート番号を含むデータチャネル・コーディネイト（組合せ）を確立することが可能である。
【０００９】
本発明の他の局面によれば、サーバーは、パケットフィルタリング用サーバー・ファイア・ウォールを含む。この実施例では、ファイア・ウォールは、ネットワークアドレス変換器（ＮＡＴ）を具備し、ネットワークアドレス変換器は、各クライアントと各サーバーに対し静的ネットワークアドレス変換エントリーを含む。
【００１０】
本発明の技術的効果は、改良された安全なデュアル・チャネル通信システム及び方法を提供することである。特に、暗号化されたチャネルアドレス情報は、ファイア・ウォールの向こう側で安全なセッションが得られるように変換される。その結果として、安全なデュアル・チャネル通信は、ファイア・ウォール防御とは無関係に、ネットワーク境界を横断して確立される。
【００１１】
本発明の別の技術的効果は、クライアント側でサーバー側アドレスのネットワークアドレス変換を行うことである。特に、受け渡しとネットワークアドレス変換の間に暗号化されたアドレスは、サーバー側で変換されたヘッダ情報を使用する。したがって、伝送中に暗号化された情報は、送信元と送信先の間のコネクションを確立する際に使用するため宛先で更新される（訂正される）。
【００１２】
本発明の別の技術的効果は、セキュア（安全な）ＦＴＰを実現することである。特に、通信は、ネットワーク内で実行されるソフトウェアアプリケーションからは見えない方法で扱われる。
【００１３】
本発明の別の技術的効果は、通信プロトコルの変更を必要とはせずに、アドレス指定ＦＴＰ通信システム及び方法を提供することである。
【００１４】
本発明の更に別の技術的効果は、ファイア・ウォール管理者に殆ど若しくは全く要求を課すことなく、分散コンピュータネットワークシステムにインストールされ、実行されるアドレス指定ＦＴＰ通信システム及び方法を提供することである。
【００１５】
これら以外の技術的効果は、添付図面、以下の詳細な説明及び特許請求の範囲の記載から当業者に容易に理解されるであろう。
【００１６】
本発明と本発明の効果をより完全に理解するため、以下の記述と添付図面を参照されたし。
【００１７】
〔実施例の詳細な説明〕
図１には、本発明の一実施例によるコンピュータネットワーク３０が示されている。ネットワーク３０は、公衆ネットワーク又はインターネット３６経由で接続されたクライアント３２及びサーバー３４を含む。尚、本発明は、他の適当なコンピュータネットワークと組み合わせて使用することが可能であり、クライアント３２及びサーバー３４は、一つ以上のネットワークを経由して接続されることもある。一つ以上のネットワークには、例えば、ワールド・ワイド・ウェブ、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、或いは、メトロポリタン・エリア・ネットワーク（ＭＡＮ）が含まれるが、これらは非限定的な例である。
【００１８】
図１を参照するに、クライアント３２は、ユーザがクライアント３２へアクセスできるようにするためユーザ・インタフェース３８を含む。クライアント３２は、通信リンク４０を介してデータを送受信する能力を備えている任意のコンピュータシステム、又は、コンピュータのネットワークを含む。特定の一実施例において、クライアント３２は、ファイル転送プロトコル（ＦＴＰ）モジュール４２、コーデック（ＣＯＤＥＣ）４４、及び／又は、変換器（トランスレータ）４６を含む。他の実施例では、ＦＴＰモジュール４２は、デュアル・チャネル・プロトコルを用いて通信する任意のデュアル・チャネル通信モジュールを含む。
【００１９】
ＦＴＰモジュール４２は、ユーザが他のコンピュータ（クライアント又はサーバー）との間でテキスト及びファイルを転送できるようにさせるためのハードウェア及び／又はソフトウェアである。ＦＴＰモジュール４２は、ユーザ若しくはクライアント３２が、ディレクトリの一覧を作成し、サーバー３４上に常駐するファイルの削除及びファイル名変更を実行し、クライアント３２とサーバー３４の間でワイルドカード転送を実行できるようにさせる。ＦＴＰは、ファイル転送プロトコルと呼ばれる。
【００２０】
インターネットに関して、ＦＴＰは、関連したＴＣＰ／ＩＰプロトコルの組の拡張である。ＦＴＰは、開放型システム間相互接続（ＯＳＩ）モデルのレイヤ５からレイヤ１１で動作するファイル共有プロトコルである。
【００２１】
図示された実施例の場合、クライアント側ファイア・ウォール４８は、クライアント３２とインターネット４０の間に通信リンク４０に沿って配置される。クライアント側ファイア・ウォール４８は、クライアント３２とインターネット３６の間に防壁（バリヤー）を形成し、インターネット３６から発生したセキュリティ違反にクライアント３２が晒されることを制限するハードウェアとソフトウェアの組み合わせを含む。クライアント側ファイア・ウォール４８は、ネットワークプロトコルパケットレベルでトラヒックを検査するネットワークレベルのファイア・ウォールと、アプリケーションレベル、例えば、ＦＴＰレベル、電子メールレベル、若しくは、ウェブコンテンツレベルでトラヒックを検査するアプリケーションレベルのファイア・ウォールとを含む。以下で詳述するように、クライアント側ファイア・ウォール４８は、トラヒックがクライアント３２から発生したのではなく、クライアント側ファイア・ウォール４８の外部ネットワークから発生したかのように見せるため、出力側のトラヒックを再アドレス指定する能力を備えている。これは、一方では、ファイア・ウォール４８に常駐するネットワーク・アドレス変換器５０によって実現可能にされる。実際上、各ホスト（サーバー及びクライアント）は、クライアント側ファイア・ウォール４８上に関連した静的ネットワーク・アドレス変換エントリーを保持する。Cisco SystemsTMによって製造されるようなPIXTMファイア・ウォールは、本発明の教示事項の範囲内での利用に適している。
【００２２】
クライアント３２と同様に、サーバー３４は、ＦＴＰモジュール５２、コーデック（ＣＯＤＥＣ）５４、及び／又は、変換器（トランスレータ）５６を含む。サーバー３４は、通信リンク５８を介してインターネット３６に接続される。第２のサーバー側ファイア・ウォール６０は、サーバー３４とインターネット３６の間の通信リンク５８に沿って設けられる。サーバー側ファイア・ウォール６０は、サーバー３４とインターネット３６の間に防壁（バリヤー）を形成し、インターネット３６から生じたセキュリティ違反にサーバー３４が晒されることを制限するハードウェア及びソフトウェアの組み合わせを具備する。ファイア・ウォール６０は、ネットワークプロトコルパケットレベルでトラヒックを検査するネットワークレベルのファイア・ウォール、及び／又は、アプリケーションレベル、例えば、ＦＴＰレベル、電子メールレベル、若しくは、ウェブコンテンツレベルでトラヒックを検査するアプリケーションレベルのファイア・ウォールとを含む。ネットワーク・アドレス変換器６２は、トラヒックがサーバー３４から発生したのではなく、ファイア・ウォール６０の外部ネットワークから発生したかのように見せるため、出力側のトラヒックを再アドレス指定する能力を備えている。
【００２３】
アプリケーションレベルのファイア・ウォールは、プロキシ用ファイア・ウォールとも呼ばれる。ネットワークレベルのファイア・ウォールは、パケットフィルタ用ファイア・ウォールとも呼ばれる。本発明の教示事項は、任意のパケットフィルタ用ファイア・ウォールと共に使用するため好適である。
【００２４】
例示された実施例は、クライアント側ファイア・ウォール４８とサーバー側ファイア・ウォール６０の両方を含む。当業者によって認められるように、本発明の教示事項は、クライアント、サーバー、又は、クライアントとサーバーの両方に関連付けられた少なくとも一つのファイア・ウォールを有する任意のクライアント／サーバー型コンピュータネットワークに適用可能であり、多数のファイア・ウォールがシステム全体に配置されている。
【００２５】
図２には、本発明の一実施例によりクライアント３２とサーバー３４の間にある正常モードの通信セッションを示す図である。「ファイル取得（ＧＥＴ  ＦＩＬＥ）」、「ファイル設置（ＰＵＴ  ＦＩＬＥ）」又は「ディレクトリ表示（ＤＩＳＰＬＡＹ  ＤＩＲＥＣＴＯＲＹ）」のような多種類のトランザクション、又は、データ転送は、クライアント３２のユーザから利用可能であるが、これらの例に限定されない。例えば、ユーザ・インタフェース３８側にいるユーザは、最初に、「ファイル設置」コマンド６４をクライアント３２へ送信することによって、ファイルをサーバー３４へ送信するように要求する。
【００２６】
クライアント３２とサーバー３４の間のＦＴＰ通信は、制御ソケット６６及びデータソケット６８を使用して実行される。制御ソケット６６は、ＦＴＰ通信セッションの冒頭で確立された永続的な、一時的ではないコネクションであり、セッション全体を通じて維持される。制御ソケット６６は、コマンドソケット又は制御チャネルとも呼ばれる。正常なＦＴＰ通信モードにおいて、データソケット６８は、一時的なコネクションであり、特定のデータ転送セッションの期間中に限り存在する。
【００２７】
暗号技術、例えば、セキュア・ソケット・レイヤ（ＳＳＬ）技術は、クライアント３２とサーバー３４の間の通信のため、コーデック５４及び４４を使用して、制御ソケット６６及びデータソケット６８に組み込まれる。ＳＳＬは、クライアント・サーバー間での認証及びデータ暗号化のためのトランスポート・レイヤ技術である。従って、ＳＳＬは、ソケット６６及び６８を用いてデータを送信する。これにより、送信される情報は暗号化されることが保証され、クライアント３２及びサーバー３４は、他方によって送信されたデータを理解するためのソフトウェアを備えているだけでよい。従って、この情報がインターネット３６内の存在者（エンティティ）から盗聴されるか、或いは、その他の外部存在者から盗聴された場合、盗聴実行者は、データパケットの内容を理解することができない。本発明の教示内容は、暗号技術を備えたシステムでも、或いは、暗号技術を備えていないシステムでも使用される。
【００２８】
クライアント３２が「ファイル設置」コマンド６４をユーザ・インタフェース３８から受信したとき、クライアント３２は、クライアント３２によって選択されたランダムなポート番号を含むデータソケットポート番号ＣDPを作成する。クライアント３２のコーデック４４は、関連したクライアント側ＩＰ番号ＣI(1)と、データソケットポート番号ＣDPをポートコマンド７０に符号化（エンコード）する。特定の一実施例において、ポートコマンド７０は、データポート座標ＣI(1)及びＣDPを収容する６個のオクテットフィールドを含む。
【００２９】
サーバー３４とのＦＴＰ通信を実施するため、クライアント３２は、ヘッダ７４及びデータペイロード７６を含む伝送制御プロトコル（ＴＣＰ）／インターネット・プロトコル（ＩＰ）、又は、ＴＣＰ／ＩＰソケット７２を作成する。ヘッダ７４は、サーバー３４の公開ＩＰアドレスＳI(1)と、ポート番号ＳPと、クライアント３２の秘密ＩＰアドレスＣI(1)と、ポート番号ＣPとを収容し、ＴＣＰのための他の制御情報を収容する。実際的には、ＣPは、屡々、数値２０が与えられ、ＳPは、屡々、数値２１が与えられる。これらのポート番号選択は任意的であるが、しかし、ネットワーク管理者の裁量で変更され得る。
【００３０】
データペイロード７６はポート番号７０を収容する。補助的なＴＣＰ／ＩＰパケットは、必要なデータ７８の全てのサーバー３４へ転送するため、必要に応じてクライアント３２によって作成される。しかし、各補助的なＴＣＰ／ＩＰパケットは、ヘッダ７４及びポートコマンド７０と同一であるヘッダ及びポートコマンドを含む。この明細書における説明の目的のため、「各」という語句は、指定された項目の少なくとも部分集合に含まれる全部の要素を意味する。
【００３１】
ＴＣＰ／ＩＰパケット７４は、サーバー３４へ向かって移動するときに、ファイア・ウォール４８に衝突する。ファイア・ウォール４８は、クライアント３２の秘密ＩＰアドレスＣI(1)を隠蔽するため、ＴＣＰ／ＩＰパケット７２のヘッダ７４を再アドレス指定する。従って、ファイア・ウォール４８は、ヘッダ７４内のクライアント秘密ＩＰアドレスＣI(1)をクライアント公開ＩＰアドレスＣI(2)で置き換える。しかし、ペイロード７６は暗号化されているので、ファイア・ウォール４８は、ペイロード７６内でクライアント３２の秘密ＩＰアドレスＣI(1)及びデータポート番号ＣDPを読み取り、及び／又は、再アドレス指定を行うことが出来ない。
【００３２】
ＴＣＰ／ＩＰパケット７２がファイア・ウォール６０を通過し、サーバー３４に到達するとき、ファイア・ウォール６０のネットワーク・アドレス変換器（ＮＡＴ）６２は、サーバー３４の秘密ＩＰアドレスＳI(2)をサーバー３４の公開ＩＰアドレスＳI(1)の代わりに収容するため、ヘッダ７４を再アドレス指定する。暗号化されたポートコマンド７０は、クライアント３２の秘密ＩＰアドレスＣI(1)及びデータポート番号ＣDPを含む。サーバー３４は、データソケット６８の端点（エンドポイント）座標を確定するため、暗号化されたペイロードを復号化（暗号解読）し、クライアント３２の秘密ＩＰアドレスＣI(1)及びポート番号ＣDPを決定する。しかし、サーバー３４は、クライアント３２の秘密ＩＰアドレスＣI(1）を使用してメッセージをクライアント３２向けにアドレス指定できない。なぜならば、サーバー３４からクライアント３２への全てのメッセージは、クライアント３２の公開ＩＰアドレスＣI(2)しか認識できないクライアント側ファイア・ウォール４８を通過しなければならないからである。
【００３３】
したがって、サーバー３４は、変換器５６からクライアント３２の公開ＩＰアドレスＣI(2)を取得するため内部的にGETPEERコマンドを実行する。変換器５６は、ヘッダ７４から公開ＩＰアドレスＣI(2)を読む。GETPEERコマンドは、ピア（クライアント又はサーバー）ソケット情報を変換するため使用される標準的なＴＣＰコマンドである。サーバー３４は、サーバー３４の秘密ＩＰアドレスＳI(2）及びデータポート番号ＳDPと、クライアント３２の公開ＩＰアドレスＣI(2)及びデータポート番号ＣDPとを使用して、データソケット６８の端点を判定する。このようなデータソケットの組合せの再アドレス指定は、プロトコル改造（フィックスアップ）と呼ばれる。これにより、サーバー３４は、データソケット６８を作成し、クライアント側ファイア・ウォール４８を通してデータをクライアント３２へ転送できるようになる。一実施例において、サーバー３４は、ＴＣＰ／ＩＰパケット７２内のポートコマンド７０を置き換えるため、修正ポートコマンドを作成する。修正ポートコマンドは、サーバー３４がクライアント３２と通信セッションを開設できるようにする。
【００３４】
クライアント３２は、制御ソケット６６を介してファイル名再送（RETRANS FILENAME）コマンド８０をサーバー３４へ送信する。このコマンドは、クライアント３２が送信若しくは渡したいデータを示す。サーバー３４は、データソケット６８を介して承認（ACK）コマンド８２をクライアント３２へ送信し、この要求を承認する。承認コマンドの受信後、クライアント３２は、クライアント３２がサーバー３４に置きたいファイルを含む適切なデータを、データソケット６８を経由して、送信する。クライアント３２とサーバー３４の間の通信は、エンド・オブ・ファイル（EOF)コマンドを送信することによりクライアント３２がセッションを終了するまで継続する。エンド・オブ・ファイル・コマンドは、典型的に、クライアント３２からサーバー３４へ零長さのＴＣＰ／ＩＰパケットを送信することによって実行される。エンド・オブ・ファイル・コマンドは、データソケット６８を中断させ、制御ソケット６６はそのままの状態に保つ。
【００３５】
図３は、安全なＦＴＰを用いてファイア・ウォールを通り抜ける方法を説明するフローチャートである。図３に示された方法は、正常モードのＦＴＰ通信セッションの動作を説明する。
【００３６】
図３を参照するに、この方法は、ステップ９０から始まり、ステップ９０において、ＦＴＰ通信セッションの要求がクライアント側で受信される。ステップ９２において、クライアントは、データソケット用のポート番号を割当てる。次に、ステップ９４において、クライアントは、クライアントの秘密ＩＰアドレス及びデータチャネル用のポート番号を含むポートコマンドを生成する。ステップ９６では、ポートコマンドが符号化される。
【００３７】
ステップ９８において、ヘッダ及びデータペイロードを含むＴＣＰ／ＩＰパケットが作成される。ステップ１００へ進み、サーバーの公開ＩＰアドレス、サーバーポート番号、クライアント秘密ＩＰアドレス、及び、クライアントポート番号がＴＣＰ／ＩＰパケットヘッダに挿入される。次に、ステップ１０４において、ＴＣＰ／ＩＰヘッダ内のクライアント秘密ＩＰアドレスは、クライアントに関連したファイア・ウォールで、クライアント公開ＩＰアドレスを用いて再アドレス指定される。ステップ１０６において、ＴＣＰ／ＩＰパケットは、ネットワークを介してサーバーへ送信される。
【００３８】
ステップ１０８では、ＴＣＰ／ＩＰパケット内のサーバー公開ＩＰアドレスは、サーバー側ファイア・ウォールで再アドレス指定され、サーバー秘密ＩＰアドレスによって置き換えられる。ステップ１１０において、ＴＣＰ／ＩＰパケットは、変換されたサーバー内部ＩＰアドレスに基づいて、宛先サーバーへルーティングされる。次に、ステップ１１２において、サーバーはポートコマンドを復号化する。
【００３９】
ステップ１１４へ進み、サーバー側変換器は、ＴＣＰ／ＩＰパケットヘッダからクライアント公開ＩＰアドレスを取得する。ステップ１１６で、サーバーは、クライアント秘密ＩＰアドレスを取得されたクライアント公開ＩＰアドレスで上書きすることにより修正ポートコマンドを生成する。次に、ステップ１１８において、サーバーはデータポート番号を割当てる。ステップ１２０では、サーバーからクライアントへデータソケット端点を送信する。ステップ１２２において、データソケットコネクションは、サーバーとクライアントの間に開設される。ステップ１２４において、データはデータソケットを介して送信される。最後に、ステップ１２６において、データ送信後にデータソケットは終了される。
【００４０】
上述の通り、ＦＴＰ通信の方法は、正常ＦＴＰ通信と呼ばれる。他の実施例では、クライアント／サーバーネットワークに関連したファイア・ウォールは、サーバーがクライアントとデータソケットを開設し得ないように構成される。その結果として、パッシブ（受動的）ＦＴＰ通信セッションと呼ばれるＦＴＰ通信の別の方法が設定される。パッシブモードの場合、サーバーはデータポートを開設する。これに対し、クライアントは、正常モードの場合にデータポートを開設する。
【００４１】
クライアント１３２とサーバー１３４の間でパッシブモードを使用する具体的なＦＴＰ通信セッションは、図４に示されている。一つ以上のファイア・ウォールがクライアント１３２とサーバー１３４の間に設けられる。例えば、図示された実施例の場合、クライアント側ファイア・ウォール１４８及びサーバー側ファイア・ウォール１６０は、夫々、クライアント１３２及びサーバー１３４を外部の攻撃から保護する。ファイア・ウォール１４８及び１６０は、上述のファイア・ウォール４８及び６０と同じように構成され、同じように機能する。
【００４２】
パッシブモードの場合、ユーザ・インタフェース１３８のユーザは、サーバー１３４側にファイルを設置（ファイルを持っていく）ことを要求する。クライアント１３２が、ファイル設置コマンドを受信したとき、クライアント１３２は、ＦＴＰ通信がパッシブモードで行われる旨をサーバー１３４へ通知するためのＰＡＳＶコマンド１７１をサーバー１３４へ送信する。サーバー１３４は、次に、サーバー１３４によって選択されたランダムなポート番号を含むデータソケットポート番号ＳDPを作成する。サーバー１３４は、自分の秘密ＩＰアドレス及びデータソケットポート番号ＳDPをポートコマンド１７０に符号化する。パッシブモードの場合、ポートコマンド１７０は、ＰＡＳＶ応答と呼ばれる。
【００４３】
クライアント１３２とのＦＴＰ通信を実行するため、サーバー１３４は、ヘッダ１７４及びデータペイロード１７６を含むＴＣＰ／ＩＰソケット１７２を作成する。ヘッダ１７４は、サーバー秘密ＩＰアドレスＳI(10)及びポート番号ＳPと、クライアント公開ＩＰアドレスＣI(10)及びポート番号ＣPとを収容し、ＴＣＰ用の他の制御情報を収容してもよい。データペイロード１７６は、クライアント１３２からサーバー１３４へ受け渡されるべき、ポートコマンド１７０及び任意の付加データ１７８を収容する。ＴＣＰ／ＩＰパケット１７２は、制御ソケット１６６を介してサーバー１３４からクライアント１３２へ送信される。付加ＴＣＰ／ＩＰパケットは、必要なデータの全てをクライアント１３２へ転送するため必要に応じて、サーバー１３４によって作成される。
【００４４】
ＴＣＰ／ＩＰパケット１７２は、サーバーからクライアントへ向かって移動するときに、ファイア・ウォール１６０に衝突する。ファイア・ウォール１６０は、サーバー１３４の秘密ＩＰアドレスＳI(10)を隠蔽するため、ＴＣＰ／ＩＰパケット１７２を再アドレス指定する。従って、ファイア・ウォール１６０は、サーバー１３４の秘密ＩＰアドレスＳI(10)を対応した公開ＩＰアドレスＳI(20)で置き換える。しかし、ペイロード１７６は暗号化されているので、ファイア・ウォール１６０は、ペイロード１７６のポートコマンド１７０内でサーバーの秘密ＩＰアドレスＳI(10)を読むこと、及び／又は、最アドレス指定することが不可能である。
【００４５】
ＴＣＰ／ＩＰパケット１７２は、ファイア・ウォール１４８を通過し、サーバー１３４の秘密ＩＰアドレスＳI(10)を含むポートコマンドを有するクライアント１３２に到達する。クライアント１３２は、暗号化ペイロード１７６を復号化し、サーバー１３４の秘密ＩＰアドレスＳI(10)及びポート番号ＳPを決定し、データソケット１６８の端点の組合せを設定する。しかし、クライアント１３２は、サーバー１３４の秘密ＩＰアドレスＳI(10)を使用して、メッセージをサーバー１３４へアドレス指定し得ない。なぜならば、クライアント１３２からサーバー１３４への任意のメッセージは、必ずサーバー側ファイア・ウォール１６０を通過しなければならないからである。
【００４６】
従って、クライアント１３２は、内部的にGETPEERコマンドを実行し、変換器１４６は、ヘッダ１７４からサーバー１３４の公開ＩＰアドレスＳI(20)を設定する。クライアント１３２は、サーバー１３４の公開ＩＰアドレスＳI(20）及びポート番号ＳPと、クライアント１３２の秘密ＩＰアドレスＣI(10)及びポート番号ＣPとを使用して、データソケット１６８の端点を計算する。これにより、クライアント１３２は、データソケット１６８を作成し、サーバー側ファイア・ウォール１６８を通してデータをサーバー１３４へ転送できるようになる。一つのデータソケット１６０がクライアント１３２とサーバー１３４の間に確立され、クライアント１３２とサーバー１３４の間の通信は、クライアント３２及びサーバー３４に関して既に説明したように進行する。
【００４７】
図５は、安全なＦＴＰを用いてファイア・ウォールを通り抜ける方法を説明するフローチャートである。図５に示された方法は、パッシブ（受動）モードのＦＴＰ通信セッションの動作を説明する。
【００４８】
図５を参照するに、この方法は、ステップ１９０から始まり、ステップ１９０において、ＦＴＰ通信セッションの要求がクライアント側で受信される。ステップ１９２において、クライアントは、パッシブコマンドをサーバーへ送信する。ステップ１９４において、サーバーは、ポート番号を割当てる。次に、ステップ９６において、サーバーは、サーバー内部ＩＰアドレス及びサーバーポート番号を含むポートコマンドを生成する。ステップ１９８では、ポートコマンドが符号化される。
【００４９】
ステップ２００へ進むと、サーバーは、ヘッダ及びデータペイロードを含むＴＣＰ／ＩＰパケットを作成する。ステップ２０２へ進み、サーバー内部ＩＰアドレス、サーバーポート番号、クライアント外部ＩＰアドレス、及び、クライアントポート番号がＴＣＰ／ＩＰパケットヘッダに挿入される。次に、ステップ２０４において、符号化されたポートコマンドは、データペイロードに挿入される。
【００５０】
ステップ２０６へ進むと、ＴＣＰ／ＩＰパケットレター内のサーバー秘密ＩＰアドレスは、サーバーに関連したファイア・ウォール側で、サーバー公開ＩＰアドレスを用いて再アドレス指定される。ステップ２０８において、ＴＣＰ／ＩＰパケットは、ネットワークを介してサーバーへ送信される。次に、ステップ２１０では、ＴＣＰ／ＩＰパケット内のクライアント外部アドレスは、クライアント側ファイア・ウォールで、クライアント内部アドレスを用いて再アドレス指定される。ステップ２１２において、ＴＣＰ／ＩＰパケットは、再アドレス指定されたクライアント秘密ＩＰアドレスに基づいて、宛先クライアントへルーティングされる。
【００５１】
次に、ステップ２１４において、ポートコマンドは、クライアントで復号化される。ステップ２１６において、クライアントは、ＴＣＰ／ＩＰパケットヘッダからサーバー公開ＩＰアドレスを取得する。ステップ２１８で、クライアントは、サーバー秘密ＩＰアドレスを取得されたサーバー公開ＩＰアドレスで上書きすることにより修正ポートコマンドを生成する。ステップ１１８において、クライアントははデータポート番号を割当てる。
【００５２】
ステップ２２２へ進むと、クライアントからサーバーへデータソケット端点を送信される。ステップ２２４において、データは、クライアントとサーバーの間で伝送される。最後に、ステップ２２６において、データ送信後にデータソケットは終了される。
【００５３】
本発明の教示内容は、データソケットの一部として制御情報を公開するプロトコル（任意のデュアル・チャネル・プロトコル）を含む全てのシステムに組み込まれる。上記のシステムを組み込むためにファイア・ウォールに特別の必要条件は課されない。本システムは、暗号技術の有無とは無関係に、適当なネットワークと共に動作する。
【００５４】
本発明を幾つかの実施例に関して説明したが、当業者によって様々な変更及び変形が提案されるであろう。本発明は、特許請求の範囲に記載された範囲内でこれらの変更及び変形を包含することが意図されている。
【図面の簡単な説明】
【図１】  本発明の一実施例による分散ネットワークを説明するブロック図である。
【図２】  本発明の一実施例による図１のサーバー・クライアント間の安全なファイル転送プロトコル（ＦＴＰ）通信セッションを説明するブロック図である。
【図３】  本発明の特定の一実施例による図２の安全なＦＴＰ通信セッションを確立する方法を説明するフローチャートである。
【図４】  安全なＦＴＰ通信セッションの代替的な実施例を説明するブロック図である。
【図５】  図４の安全なＦＴＰ通信セッションの代替的な実施例を説明するフローチャートである。
【図１】
0004727125.tif 000002
【図２】
0004727125.tif 000003
【図３】
0004727125.tif 000004
【図４】
0004727125.tif 000005
【図５】
0004727125.tif 000006