(57)【特許請求の範囲】
【請求項１】
コンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施す方法であって、
前記セキュリティルールによって検査された前記コンピュータネットワークの各アスペクトの定義を生成する過程と、
前記アスペクトの定義によって、前記アスペクトの少なくとも１つを制御する前記セキュリティルールを生成する過程と、
前記セキュリティルールを、前記セキュリティルールに従って前記データパケットを検査し選択的変更を施すパケットフィルタリングモジュールの動作を制御するためのパケットフィルタリング処理言語命令セットに変換するセキュリティルール変換過程と、
前記セキュリティルールに従って前記データパケットを検査し選択的変更を施すために、仮想パケットフィルタリングマシンを実現する前記パケットフィルタリングモジュールと、前記コンピュータネットワークを接続する過程と、
前記パケットフィルタモジュールが前記パケットフィルタリング処理言語命令を実行して前記仮想パケットフィルタリングマシンを操作し、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施すパケットフィルタリング処理言語命令実行過程とを有することを特徴とするコンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施す方法。
【請求項２】
前記アスペクトが、ネットワークオブジェクトを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記アスペクトが、ネットワークサービスを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記アスペクトが、ネットワークサービスを含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記アスペクトたる前記オブジェクトの定義が、前記オブジェクトのアドレスを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記セキュリティルール変換過程の前記フィルタリング処理言語命令セットが、スクリプトの形態であり、前記スクリプトを、前記パケットフィルタリング処理言語命令実行過程において実行される前記命令セットにコンパイルするコンパイラを含んでいることを特徴とする請求項１に記載の方法。
【請求項７】
前記コンピュータネットワークの各アスペクトの定義を生成する過程、及び前記セキュリティルールを生成する過程の双方において、グラフィカルな定義がなされることを特徴とする請求項１に記載の方法。
【請求項８】
前記選択的変更が、暗号化、復号化、署名生成、及び署名確認からなる処理のグループから選択されることを特徴とする請求項１に記載の方法。
【請求項９】
コンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施すセキュリティシステムであって、前記セキュリティルールによって検査される前記コンピュータネットワークの各アスペクトが予め定義されており、前記セキュリティルールが前記アスペクトによって前もって定義されており、かつパケットフィルタリング処理言語命令に変換される、該セキュリティシステムを操作する方法において、
前記セキュリティルールによって検査される前記コンピュータネットワークの少なくとも１つのエンティティにおいて、前記コンピュータネットワークに接続されたパケットフィルタリングモジュールを設ける過程であって、前記パケットフィルタリングモジュールが、前記コンピュータネットワークに、または前記コンピュータネットワークから出入りする前記データパケットを検査し選択的変更を施す仮想パケットフィルタリングマシンを実現する、該過程と、
前記パケットフィルタモジュールが前記パケットフィルタリング処理言語命令を実行して前記仮想パケットフィルタリングマシンを操作し、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施すパケットフィルタリング処理言語命令実行過程とを有することを特徴とするセキュリティシステムを操作する方法。
【請求項１０】
前記アスペクトが、ネットワークオブジェクトを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記アスペクトが、ネットワークサービスを含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記アスペクトが、ネットワークサービスを含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記アスペクトたる前記オブジェクトの定義が、前記オブジェクトのアドレスを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記仮想パケットフィルタリングマシンが、データ抽出操作を実行することを特徴とする請求項９に記載の方法。
【請求項１５】
前記仮想パケットフィルタリングマシンが、論理演算を実行することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記仮想パケットフィルタリングマシンが、比較処理を実行することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記選択的変更が、暗号化、復号化、署名生成、及び署名確認からなる処理のグループから選択されることを特徴とする請求項９に記載の方法。
【請求項１８】
コンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施すセキュリティシステムであって、前記セキュリティルールによって検査される前記コンピュータネットワークの各アスペクトが予め定義されており、前記セキュリティルールが前記アスペクトによって前もって定義されており、かつパケットフィルタリング処理言語命令に変換される、該セキュリティシステムを操作する方法において、
前記セキュリティルールによって検査される前記コンピュータネットワークの少なくとも１つのエンティティにおいて、前記コンピュータネットワークに接続されたパケットフィルタリングモジュールを設ける過程であって、前記パケットフィルタリングモジュールが、前記コンピュータネットワークに、または前記コンピュータネットワークから出入りする前記データパケットを検査し選択的変更を施す仮想パケットフィルタリングマシンをエミュレートする、該過程と、
前記パケットフィルタリングモジュールが、パケットフィルタリング処理を実行するための前記パケットフィルタリング処理言語命令を読み出し、実行する過程と、
前記パケットフィルタリング処理言語命令を読み出し、実行する過程において得られた結果を記憶装置に格納する過程と、
前記パケットフィルタリングモジュールが、格納された前記結果を用いて、前記パケットフィルタリング処理言語命令に基づいた前記仮想パケットフィルタリングマシンの操作を行い、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施す過程とを有することを特徴とするセキュリティシステムを操作する方法。
【請求項１９】
前記アスペクトが、ネットワークオブジェクトを含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記アスペクトが、ネットワークサービスを含むことを特徴とする請求項１８に記載の方法。
【請求項２１】
前記アスペクトが、ネットワークサービスを含むことを特徴とする請求項１９に記載の方法。
【請求項２２】
前記アスペクトたる前記オブジェクトの定義が、前記オブジェクトのアドレスを含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記選択的変更が、暗号化、復号化、署名生成、及び署名確認からなる処理のグループから選択されることを特徴とする請求項１８に記載の方法。
【請求項２４】
コンピュータネットワークを行き来する到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施すセキュリティシステムであって、前記セキュリティルールによって制御される前記コンピュータネットワークの各アスペクトが予め定義されており、前記セキュリティルールが前記アスペクトによって前もって定義されており、かつパケットフィルタリング処理言語命令に変換される、該セキュリティシステムにおいて、
前記セキュリティルールに従って動作し、前記コンピュータネットワークに、または前記コンピュータネットワークから出入りする前記データパケットを検査し選択的変更を施す仮想パケットフィルタリングマシンを実現する、前記コンピュータネットワークに接続されたパケットフィルタリングモジュールと、
前記パケットフィルタリング処理言語命令を読み出し実行する、前記パケットフィルタリングモジュールと一体化された処理手段であって、前記パケットフィルタリングモジュールの操作を行い、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施す、該処理手段とを有することを特徴とするセキュリティシステム。
【請求項２５】
前記選択的変更が、暗号化、復号化、署名生成、及び署名確認からなる処理のグループから選択されることを特徴とする請求項２４に記載のセキュリティシステム。
【請求項２６】
図面に記載された実施例と実質的に同一であることを特徴とする請求項１乃至２３の何れか１つに記載の方法。
【発明の詳細な説明】
発明の背景
本出願は、一般に、コンピュータネットワークの機密保護、即ちセキュリティを制御する方法に関する。詳述すると、本出願は、外部及び内部のデスティネーション（終点）から、及びそこへ向かってネットワーク上を流れる情報を制御するコンピュータネットワークセキュリティのための、容易に変更可能、若しくは拡張可能な方法に関する。
接続性、即ちコネクティビティとセキュリティとは、多くの組織のコンピューティング環境における２つの両立困難な目的である。典型的な最近のコンピューティングシステムは、数多くのサービスに透過的にアクセスできるネットワーク通信網の周りに構築される。このようなサービスはグローバルに利用可能であり、これが最近のコンピューティングソリューションの唯一の最も重要な特徴であろう。接続性に対する要求は、組織内部及びその外部の双方から要求されているものである。
ネットワークサービスを無許可の使用から保護することは、全ての組織にとって非常に重要なことである。例えば、ユニックスワークステーションはひとたびインターネットに接続されると全世界に全てのサービスを提供し、そのサービスは次のテーブル上の別のステーションにも提供される。現在の技術を用いると、１つの組織は不正アクセスに対する防備のために、外界または他のサイトへの全ての接続が不可能になるほどその接続性を犠牲にしなければならない。
高度なセキュリティの必要性が高まるにつれ、ネットワークリソースへのアクセスを制御する手段が管理上の優先すべき事項となってきた。また、コストを節約し、生産性を維持するために、アクセスコントロールは、単純に校正でき、ユーザ及びアプリケーションに対して透過的なものでなければならない。セットアップコスト及びテイクダウン時間を最小限にすることも重要な要素である。
パケットフィルタリングは、通過するトラヒックを制御することによって接続性を確保しつつセキュリティを与え、１つのネットワーク内、及び接続されたネットワーク間の双方において、イリーガルな通信が試みられることを防止する方法である。
従来のパケットフィルタリングのインプリメンテーションでは、固定フォーマットに従ったりストテーブルによりアクセスを特定することができる。この方法の自由度は、所定の組織のセキュリティポリシーを表すものに限定されている。また、この方法は、適用対象、即ちオブジェクトが、特定のテーブルにおいて規定されたプロトコル及びサービスの組に限定されている。この方法では、元のテーブルにおいて特定されていない異なるプロトコル若しくはサービスの導入が不可能なのである。
パケットフィルタリングを実現する他の方法では、その組織の各セキュリティポリシーについて、コンピュータオペレーティングシステムのコードを手で調整する。この方法での限界は、将来のネットワークトポロジーの変化、新たなプロトコルの使用、サービスの強化、及び将来セキュリティが脅かされる可能性に対処できる自由度がないことである。この方法では、コンピュータプログラムを適切なものに変更するために専門家による大量の作業が必要であることがシステムの欠点であって、システムのセットアップ及び維持にコストがかさむ。
更に、企業、支社、及びビジネス上のパートナーとの間の長距離の通信のセキュリティの必要性は、近年のビジネスの現実においては不可欠なものにまで高まってきている。歴史的には、完全に私設の企業間の長距離の業務処理のためには、ネットワーク間のポイントツーポイント接続が用いられた。しかし、このようなシステムでは自由度を欠き、法外なコストがかさむことから、広く使用されるには到らなかった。インターネットのような公衆ネットワークは、長距離のインターネットワーキング用の自由度の高い低コストのソリューションを提供する。専用ラインを確立する代わりに、インターネットを媒介物として使用することにより企業間の通信が可能である。ローカルなインターネットプロバイダにひとたび接続すると、私設ネットワークはたちまち世界中のデスティネーションに接続することが可能になる。
なんらかの公衆セグメントを使用する私設ネットワークは、仮想私設ネットワーク、またはバーチャルプライベートネットワーク（ＶＰＮ）と呼ばれる。ＶＰＮは専用私設ネットワークと較べて極めて低コストで自由度が高い。各施設ネットワークは、ローカルインターネットプロバイダに接続するだけでよい。新たな接続を加えることも、簡単でコストがかからない。しかし、ＶＰＮの主な欠点は、セグメントのなかにセキュリティを施されていないところも含まれるため機密保護の安全性を欠くことである。インターネットへの接続は、その企業を２つの危険にさらす。それは、（１）企業内ネットワークへの不当なインターネットアクセス（ブレークイン）、及び（２）インターネット内を通過していく企業通信の傍受及び干渉である。
インターネット上の通信に伴うセキュリティのリスクがあることによって、企業はＶＰＮの利点を完全に享受できない。インターネット上でビジネスを実行するために（即ち、送金、クレジット情報の獲得及び認証、製品の販売及び配布）には、信頼性が高く効果的なセキュリティを施すソリューションが必要なのである。
発明の要約
従って、米国特許出願第０８／１６８，０４１号の一部継続出願である本発明の目的は、コンピュータネットワーク内の情報フローを制御する、改善された、柔軟性を有し容易に変更が可能なセキュリティメソッドを提供することである。
本発明の別の目的は、ネットワーク上で内部及び外部のデスティネーションとの間を行き来する情報フローを、情報の暗号化、ソース及び／若しくはデスティネーションアドレスの変更の少なくとも一方の処理を含む形で制御することである。
本発明の更に別の目的は、システム内のノードを通過する暗号化された情報パケットを各パケット毎に検査することができるパケットフィルタによって情報フローを制することである。
本発明の更に別の目的は、好ましくは非破壊接続有効性検査の後に、予め許可されたパケットのみを通過させることができるパケットフィルタによって情報フローを制御することである。
本発明の更に別の目的は、ノードにおける所定の、パケットを受容する（通過させる）か拒絶する（破棄する）かを定めるセキュリティ方針を実現する命令セットによって制御される、予め許可されたパケットのみを通過させる汎用パケットフィルタモジュールを提供することである。
本発明の更に別の目的は、システム管理者による変更が容易で、その変更に際してパケットフィルタ自体の特性の変更や大量のコードの書き込みが不要な、コンピュータネットワーク用セキュリティメソッドを提供することである。
本発明の更に別の目的は、改善された接続有効性チェック機構を提供することである。
本発明の更に別の目的は、何らかの暗号化手段、即ちデスティネーションアドレスの変更、受信基準としての外部入力の受け取り、及びネットワーク通信の拒絶または変更によりパケットを変更する能力を付与することである。
本発明の更に別の目的は、インターネットのような機密保護がなされない公衆ネットワーク上でのデータフローの機密保護のための暗号化スキームを提供し、仮想私設ネットワーク（ＶＰＮ）を構築できるようにすることである。
本発明の１つの側面によれば、暗号化によりネットワーク上のトランザクションの機密を保護し、異なるアドレス指定方法でさまざまなネットワーク間の相互接続をなし、また、通信のソースが許可を付与されており、ネットワーク上の通信の有効性が確認された場合にのみ、情報のパケットを通過させる方法を提供するとともに、それを達成するのに必要な情報が最小限ですみ、好ましくはフェールセーフ機能を備えたコンピュータシステムが提供される。
また、本発明の好適実施例に基づき、コンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施す方法であって、前記セキュリティルールによって検査された前記コンピュータネットワークの各アスペクトの定義を生成する過程と、前記アスペクトの定義によって、前記アスペクトの少なくとも１つを制御する前記セキュリティルールを生成する過程と、前記セキュリティルールを、前記セキュリティルールに従って前記データパケットを検査し選択的変更を施すパケットフィルタリングモジュールの動作を制御するためのパケットフィルタリング処理言語命令セットに変換するセキュリティルール変換過程と、前記セキュリティルールに従って前記データパケットを検査し選択的変更を施すために、仮想パケットフィルタリングマシンを実現する前記パケットフィルタリングモジュールと、前記コンピュータネットワークを接続する過程と、前記パケットフィルタモジュールが前記パケットフィルタリング処理言語命令を実行して前記仮想パケットフィルタリングマシンを操作し、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施すパケットフィルタリング処理言語命令実行過程とを有することを特徴とするコンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施す方法が提供される。
更に、本発明の１つのアスペクトとして、ネットワークオブジェクト、ネットワークサービス、若しくはその双方が含まれ得る。更に、オブジェクト定義はオブジェクトのアドレスを含み、また、セキュリティルール変更過程のフィルタリング処理言語命令はスクリプトの形態であって、そのスクリプトをコンパイルして、パケットフィルタリング処理言語命令実行過程において実行される命令に変換するコンパイラを更に含む。
更に、ネットワークのアスペクトを生成する過程、及びセキュリティルールを生成する過程の双方はグラフィック的に定義され、選択的変更処理は、暗号化、復号化、署名生成、及び署名確認からなる処理のグループから選択される。
また、本発明の別の好適実施例に基づき、コンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施すセキュリティシステムであって、前記セキュリティルールによって検査される前記コンピュータネットワークの各アスペクトが予め定義されており、前記セキュリティルールが前記アスペクトによって前もって定義されており、かつパケットフィルタリング処理言語命令に変換される、該セキュリティシステムを操作する方法において、前記セキュリティルールによって検査される前記コンピュータネットワークの少なくとも１つのエンティティにおいて、前記コンピュータネットワークに接続されたパケットフィルタリングモジュールを設ける過程であって、前記パケットフィルタリングモジュールが、前記コンピュータネットワークに、または前記コンピュータネットワークから出入りする前記データパケットを検査し選択的変更を施す仮想パケットフィルタリングマシンを実現する、該過程と、前記パケットフィルタモジュールが前記パケットフィルタリング処理言語命令を実行して前記仮想パケットフィルタリングマシンを操作し、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施すパケットフィルタリング処理言語命令実行過程とを有することを特徴とするセキュリティシステムを操作する方法が提供される。
また、本発明の更に別の好適実施例に基づき、コンピュータネットワークにおける到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施すセキュリティシステムであって、前記セキュリティルールによって検査される前記コンピュータネットワークの各アスペクトが予め定義されており、前記セキュリティルールが前記アスペクトによって前もって定義されており、かつパケットフィルタリング処理言語命令に変換される、該セキュリティシステムを操作する方法において、前記セキュリティルールによって検査される前記コンピュータネットワークの少なくとも１つのエンティティにおいて、前記コンピュータネットワークに接続されたパケットフィルタリングモジュールを設ける過程であって、前記パケットフィルタリングモジュールが、前記コンピュータネットワークに、または前記コンピュータネットワークから出入りする前記データパケットを検査し選択的変更を施す仮想パケットフィルタリングマシンをエミュレートする、該過程と、前記パケットフィルタリングモジュールが、パケットフィルタリング処理を実行するための前記パケットフィルタリング処理言語命令を読み出し、実行する過程と、前記パケットフィルタリング処理言語命令を読み出し、実行する過程において得られた結果を記憶装置に格納する過程と、
前記パケットフィルタリングモジュールが、格納された前記結果を用いて、前記パケットフィルタリング処理言語命令に基づいた前記仮想パケットフィルタリングマシンの操作を行い、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施す過程とを有することを特徴とするセキュリティシステムを操作する方法が提供される。
更に、本発明の別の好適実施例に基づき、コンピュータネットワークを行き来する到着及び発信データパケットを、セキュリティルールに従って検査し選択的変更を施すセキュリティシステムであって、前記セキュリティルールによって制御される前記コンピュータネットワークの各アスペクトが予め定義されており、前記セキュリテイルールが前記アスペクトによって前もって定義されており、かつパケットフィルタリング処理言語命令に変換される、該セキュリティシステムにおいて、前記セキュリティルールに従って動作し、前記コンピュータネットワークに、または前記コンピュータネットワークから出入りする前記データパケットを検査し選択的変更を施す仮想パケットフィルタリングマシンを実現する、前記コンピュータネットワークに接続されたパケットフィルタリングモジュールと、前記パケットフィルタリング処理言語命令を読み出し実行する、前記パケットフィルタリングモジュールと一体化された処理手段であって、前記パケットフィルタリングモジュールの操作を行い、前記コンピュータネットワークから、または前記コンピュータネットワークへの前記データパケットの出入りを受容若しくは拒絶し、そのようにして受容された前記データパケットを選択的変更を施す、該処理手段とを有することを特徴とするセキュリティシステムが提供される。
【図面の簡単な説明】
第１図は、ネットワークトポロジーの一例である。
第２図は、第１図のトポロジーのネットワークに適用された本発明のセキュリティシステムを示した図である。
第３図は、第２図のネットワーク管理部のコンピュータスクリーン上の表示を詳細に示した図である。
第４図は、グラフィカル情報をフィルタリング処理スクリプトに変換するサブシステムの流れ図である。
第５図は、本発明を利用したコンピュータネットワーク上での情報の流れを示す流れ図である。
第６図は、第５図に示すパケットフィルタの動作を示す流れ図である。
第７図は、第６図に示す仮想フィルタリングマシンの動作を示す流れ図である。
第８図は、第７図のデータ抽出方法を示す流れ図である。
第９図は、第７図の論理演算を示す流れ図である。
第１０図は、第７図の比較処理を示す流れ図である。
第１１図は、メモリへのリテラル値の入力方法を示す流れ図である。
第１２図は、条件付き分岐操作を示す流れ図である。
第１３図は、算術演算またはビット単位の演算を示す流れ図である。
第１４図は、探索操作を示す流れ図である。
第１５図は、記録操作を示す流れ図である。
第１６図は、本発明に基づいて構築されたファイヤウォールを用いている構成の一例を示す高レベルのブロック図である。
第１７図は、セッション鍵の交換中に、２つのファイヤウォール間で転送されるデータを示す高レベルのブロック図である。
第１８図は、セッションデータの交換中に、暗号化処理を用いて他のファイヤウォールへパケットを転送するファイヤウォールによって実行されるプロセスを示す、高レベルの論理流れ図である。
第１９図は、セッションデータの交換中に、他のファイヤフォールからの暗号化されたパケットを受け取るファイヤウォールによって実行されるプロセスを示す、高レベルの論理流れ図である。
第２０図は、ベーシック鍵の交換中に、２つのファイヤウォール間で転送されるデータを示す高レベルのブロック図である。
第２１図は、本発明に基づいて構築されたファイヤウォール、及びクライアントパーソナルコンピュータを用いている構成の一例を示す高レベルのブロック図である。
第２２図は、セッション鍵の交換中に、クライアントパーソナルコンピュータとファイヤウォールとの間で転送されるデータを示す高レベルのブロック図である。
第２３図は、ベーシック鍵の交換中に、クランアントパーソナルコンピュータとファイヤウォールとの間で転送されるデータを示す高レベルのブロック図である。
詳細な説明
到着及び発信データパケットフローの防護
第１図を参照すると、ネットワークトポロジーの一例が示されている。この例においては、メインサイト１００が、ワークステーション１０２に実現されたシステム管理機構を含んでいる。このワークステーションはネットワークに接続されており、このネットワークには、ワークステーション１０４、ルータ１１０、及びゲートウェイ１０６が含まれている。ルータ１１０は、衛星１１２を介してリモートサイトのゲートウェイ１２２に接続されている。ゲートウェイ１０６はルータ１０８を介してインターネットに接続されている。リモートサイト１２０はネットワークに接続されたワークステーション１２４を含み、このワークステーション１２４はゲートウェイ１２２を介してインターネットに接続されている。ここに示す特定の構成は一例として選択されたものに過ぎず、本発明が機能を発揮し得るネットワークの型を限定しようとするものではない。ネットワークがとり得る構成の数は実質的に無限であり、このような構成をセットアップするための技術は当業者には周知である。本発明は実現可能な任意の形態の上で動作し得るものである。
第２図は、本発明のシステムが組み込まれた第１図のネットワークを示した図である。第２図において、第１図にも示されている構成要素は同じ符号を付して示した。図に示すように、システム管理部１０２は、制御モジュール２１０、パケットフィルタジェネレータ２０８、ディスプレイ２０６、及び記憶媒体２１２を含む。パケットフィルタ２０４は、システム管理部、第１図のワークステーション１０４、及びゲートウェイ１０６上にインストールされている。ゲートウェイ１０６は、このようなフィルタを２つ有し、１つはネットワークへの接続部に、他方はルータ１０８への接続部に設けられている。ルータ１０８及び１１０はそれぞれ、セキュリティシステムによって生成されたプログラミングスクリプトテーブルを有しているが、これは本発明の一部分を構成するものではなく、詳細については説明しない。当業者には周知のように、これらのテーブルは、ルータをプログラムするのに従来より用いられてきたテーブルに対応するものである。
パケットフィルタ２０４は、リモートサイト１２０のゲートウェイ１２２上にもインストールされている。パケットフィルタの１つは、衛星１１２とゲートウェイ１２２との間のコネクション上にインストールされており、第２のパケットフィルタはインターネットとゲートウェイ１２２との間のコネクション上にインストールされており、第３のパケットフィルタはゲートウェイとネットワークとの間のコネクション上にインストールされている。
当業者には周知のように、情報はネットワーク上をパケットの形態で流れる。第２図におけるパケットフィルタの位置は、ワークステーション、ルータ、またはゲートウェイのようなネットワーク上の特定の対象機器、即ちオブジェクトからのデータフロー、若しくはその特定のオブジェクトへのデータフローを制御できるように選択される。従って、第１図のワークステーション１０４のそれぞれはパケットフィルタを有し、これらのワークステーションへの情報の流れ、若しくはこれらのワークステーションからの情報の流れは個別に制御される。しかし、リモートサイト１２０において、パケットフィルタはゲートウェイ１２２とネットワークとの間のコネクション上に設置されており、従ってワークステーション１２４へのデータフロー、若しくはそのワークステーションからのデータフローを個別に制御することはできない。このような個別化された制御が必要な場合は、同様にパケットフィルタを各ワークステーション１２４上に設置することができる。各パケットフィルタはネットワークのセットアップ時、若しくはセキュリティシステムのインストール時にインストールされるが、追加的なパケットフィルタを後日インストールすることも可能である。このパケットフィルタは、防護の必要なワークステーション若しくはゲートウェイ等のホストデバイス上にインストールされる。
各パケットフィルタはシステム管理部１０２におけるパケットフィルタジェネレータ２０８によって生成された命令セットに基づいて動作する。これらの命令セットによって、単にパケットの通過許可若しくは不許可についてのパラメータを含むテーブルに対してパケットの内容をチェックするのではなく、そのパケットについて複雑な操作を施すことが可能となる。従って、各パケットフィルタは、パケットフィルタ自体の構造を変化させることなく、複数のセキュリティルールを取り扱うとともに、極めて柔軟にセキュリティルールの変更を行うことができることになる。
システム管理者は、モニタ２０６上に表示されるグラフィカルユーザインタフェース（ＧＵＩ）を介してセキュリティルールを入力する。ＧＵＩについては第３図を参照しつつ後に詳しく説明する。この情報は、パケットフィルタジェネレータ２０８によって処理され、その結果得られたコードはネットワーク内の適切なパケットフィルタ若しくはフィルタに転送されて、所望の機能を発揮することになる。制御モジュール２１０により、システム管理者がネットワークの動作を追跡することが可能となり、また記憶媒体２１２によりネットワーク上の操作及びネットワークへの不法な侵入の試みの記録を保持しておくことが可能となる。これによって、システム管理者が、セキュリティルールがうまく機能を発揮しているか否かということや、ネットワークの動作に関する情報を完全に与えられ得ることになる。従って、接続性を制限することなくネットワークのセキュリティを維持するための適切なネットワークの変更を、セイキュリティ管理者が施すことが可能となるのである。
第３図は、第２図コンピュータスクリーン２０６上の表示を詳細に示した図である。スクリーンは、４つのウィンドウに分けられており、左側には２つの小さいウィンドウが、右側には２つの大きなウィンドウが配置される形となっている。ネットワークのオブジェクト（object）及びサービス（services）は、本発明のセキュリティメソッドにおいて規定されなければならないネットワークの２つのアスペクト（aspect）である。ウィンドウ３０４は、ワークステーション、ゲートウェイ、及びシステムに接続された他のコンピュータハードウェア等のネットワークオブジェクトを定めるために用いられる。いくつかのデバイスを、例えば、会社の財務部、研究開発部、及び経営者といったようにグループ化してまとめることも可能である。従って、パケットフィルタの適切な配置により、データフローの制御を、ネットワーク上の個別のコンピュータに対してのみならず、ネットワーク上のコンピュータのグループに対しても行うことが可能である。これにより、システムオペレータがネットワーク上の通信の管理に当たって自由度を大きくすることができる。例えば、会社の最高責任者（ＣＥＯ）や役員のような上層部の経営者は財務部のチーフと同様に財務部と直接通信を行うことができるが、他のグループからの通信はフィルタリングするようにすることができる。また、特定のコンピュータの組に対して、全てのグループからの電子メールを受け取ることができるが、それ以外の情報のリクエストを制限するようにすることもできる。これによってシステムオペレータが、そのネットワークの対外セキュリティと同様、内部的なセキュリティを施すことが可能となる。このオブジェクト定義は、ネットワーク上のオブジェクトのアドレスや、そのオブジェクトがネットワークの内部（internal）または外部（external）の何れに存在するか、パケットフィルタがそのオブジェクト上にインストールされているか否かを示す名前及びグループ、及びグラフィカルシンボルを含む。グラフィカルシンボルはルールベースマネージャ３０２とともに用いられる。
同様に、ネットワークサービス（service）はスクリーン上のブロック３０６において定義される。これらのネットワークサービスは、ｌｏｇｉｎ、ｒｏｕｔｅ、ｓｙｓｌｏｇ、及びｔｅｌｎｅｔ等を含み得る。各サービスは、一般的な若しくは特別なプロパティによって定義される。一般的プロパティは、例えば、ｔｅｌｎｅｔ用のポート番号２３と等価な“ｄｐｏｒｔ”（デスティネートョン  ポート）のような、サービスを指定するコードストリングを含んでいる。発信するパケット及び到着するパケットを指定するこのコードストリングは内容が識別される。特別なプロパティはサービスの名称、そのサービスを提供するのに用いられるポートの名称、コネクションレスセッションが不使用の状態にあり得る秒数の制限時間、即ちそのセッションが終了したことが推定される前に何れかの方向に伝送されるパケットが存在しない状態にある秒数の制限時間を含む。サービス定義の他の要素には、受信した、ＵＤＰのようなコネクションレスプロトコルを用いるサービスに対する発信コネクション及びＲＰＣサービス用のプログラム番号が含まれ得る。グラフィックシンボル及びその色は特定される。
ブロック３０２はルールベース（rule base)マネージャであり、これは新たなセキュリティルールをグラフィック形式でシステム内に入力できるようにする、即ちシステム管理者を、特定のセキュリテイルールを実現するため、若しくはセキュリティルールの変更のためにコードを書く必要性から解放させるものである。新たなセキュリティルールをシステムに入力するために必要な要素は４つだけである。第１要素はデータパケットのソース（source）であり、第３要素はパケットのデスティネーション（destination）である。第２要素は関連するサービス（services）のタイプであり、第４要素は実行が必要なアクション（action）である。この実行され得るアクションには、パケットがソースからデスティネーションに送られる場合であるパケットの受容（accept）、若しくはソースからデスティネーションにパケットが送られない場合であるパケットの拒絶（reject）が含まれる。パケットが拒絶された場合には、何のアクションも行われないか、またはパケットがデスティネーションに届かなかったことを表す否定応答（ＮＡＣＫ）が返送され得る。更に特定され得る別の要素は、その上でルールが施行されるオブジェクトを特定する、ルールのインストール先（install on）である（第２図参照）。インストール位置が特定されない場合には、システムはパケットフィルタモジュールを、デフォルト値である通信のデスティネーション（ＤＳＴ）上に設置する。しかし、このオブジェクトはデスティネーションである必要はない。例えば、インターネットからローカルホストに向かう通信は必ずゲートウェイを通過する。従って、ゲートウェイ（gateway）がソース、若しくはデスティネーションでない場合でも、ゲートウェイ上でルールを施行することが可能である。頭文字またはグラフィックシンボルを用いてデータを入力することによって、各ルールは即座に入力されてベリファイされ得、このとき書き込み、コンパイル及び新たなコードのチェックを行う必要は無い。従って、システム管理者は、セキュリティ用コンピュータプログラム作成の専門家である必要はない。サービスがシステムに既に入力されたサービスの１つである限り、システム管理機構のホストとしての役目を果たすコンピュータは、後に詳しく述べるように、入力された情報を処理して適当なパケットフィルタのための命令セットを生成する。
ブロック３０８はセキュリティシステムのセットアップ及び動作の概要を示すシステムステータス一覧（system status view）である。本発明を実行する必要はない。このシステム一覧は、グラフィカルシンボルを用いてシステムの概要を表示する。この概要には、例えば、ホストアイコン、ホストネーム、ルールベースを含むファイル名であるルールベースネーム、ホストにルールベースがインストールされた日付等を含まれ得る。この概要は、ホストと通信が行われたか否かということと共に、ホストによって検査され、廃棄され、及び記録されたパケット数を示すホストステータスを表示し得る。
第４図は、ＧＵＩ上の情報をパケットフィルタ用に用いられるルールを含むフィルタスクリプトに変換するサブシステムを示す流れ図である。好適実施例においては、フィルタスクリプトジェネレータの出力は、オブジェクトコードにコンパイルされ、次いで後に説明するように、パケットフィルタモジュールによってインプリメントされる。
サブシステム４００はブロック４０２から処理を開始し、ＧＵＩからの第１ルールを含むブロック４０４に処理を進める。第１ルールは第３図に示すように、新たなセキュリティルールが特定されるスクリーン上の第１行である。次いで、制御はブロック４０６に進み、ここでルールソースネットワークオブジェクトと一致するコードが生成される。即ち、データパケットが発せられるシステムのオブジェクトの１つを表すものとしてパケットのソースがソースコートブロックに入力される。次いで、処理はブロック４０８に進み、ここでデータパケットがその行き先（デスティネーション）としているネットワークのオブジェクトを示すべく、デスティネーションコードブロックにコードが生成される。次いで、制御はブロック４１０に進み、ここで選択されたルールサービスに一致するコードが生成される。ルールサービスは以前に定義されており、システム内に格納されているか、定義されていない場合には、サービスを調整するセキュリティルールがシステムに入力されるときに定義される。次いで処理はブロック４１２に進み、ここでデータブロック４０６、４０８、及び４１０が一致しているならば、即ち、チェックの結果が真であるならば、パケットの受容若しくは拒絶を決定するコードを生成する。受容若しくは拒絶のアクションは、セキュリティルールにおいて選択されたアクションに基づいている。次いで制御は決定ブロック４１４に進み、ここでシステムに追加的なルールを入力するか否かが決定される。システムにこれ以上のルールを入力しない場合には、サブシステムはブロック４１８で終了する。更にシステムに入力するルールが存在する場合には、処理はブロック４１６に進み、ここで新たなルールが入力されて処理はブロック４０６に戻り、プロセスが反復されてＧＵＩの次の行に示されている次のセキュリティルールが処理される。
通信プロトコルは層を成しており、これはプロトコルスタックとも称される。ＩＳＯ（国際標準化機構）は、通信プロトコル層の設定のためのフレームワークを提示する汎用モデルを定めた。このモデルは存在する通信プロトコルの機能の理解のための基本的な参照モデルとしての役目を果たす。
0003847343.tif 000002
通信プロトコルによって、利用するＩＳＯモデルにおけるレベルは異なる。ある層におけるプロトコルは、他の層において採用されているプロトコルに対する認識は持っていなくてもよい。これは、セキュリティアクションを作る重要な要素である。例えば、アプリケーション層（レベル７）が通信しようとするソースコンピュータ（レベル２，３）を識別することができず、従って十分なセキュリティを提供し得なくともよい。
第５図は、本発明のフィルタパケットモジュールがＩＳＯモデル内でどのように使用されているかを示した図である。ＩＳＯモデルの通信レイヤは、第５図の左側の符号５０２で示した部分に示されている。レベル１、即ちブロック５０４はネットワークの様々なオブジェクトと接続するための線であり得るネットワークのハードウェアコネクションである。レベル２、即ち第５図のブロック５０６は、ネットワーク上の各コンピュータ内に設置されたネットワークインタフェースハードウェアである。本発明のパケットフィルタモジュールは、このレベルと、ネットワークソフトウェアであるレベル３との間に入る。構成を完成させるためＩＳＯモデルの他のレベルについて簡単に述べると、レベル４、即ちブロック５１０は１つのセグメントから次のセグメントへのデータの配送に関連し、レベル５、即ちブロック５１２はネットワーク上の“セッション”の開設及び遮断を同期させる。レベル６、即ちブロック５１４はネットワーク上の様々なコンピュータの間のデータの変換に関連し、レベル７、即ちブロック５１６はアプリケーションプログラムである。
パケットフィルタモジュールが存在するコンピュータにパケットが入ってゆくとき、レイヤ１及び２を通過した後、向きを変えて第５図の右側に示すパケットフィルタ５２０に進んでゆく。このパケットはブロック５２２において受信される。ブロック５２４においては、パケットはセキュリティルールと比較され、パケットがルールに一致するものであるか否かの判定がなされる。パケットがルールに一致する場合には、システム管理機構のログにその旨が記録され、不法な試行によりシステムへの入力がなされる場合には、警告が発せられ得る。次いで、制御はブロック５３４に進み、そこでセキュリティルールの要求するところに基づいてパケットを通過させるか否かが決定される。パケットを通過させる決定がなされた場合には、次いでパケットはレベル３、即ちブロック５０８に進む。パケットを通過させない決定がなされた場合には、ブロック５２８において否定応答（ＮＡＣＫ）が送られ、このオプションが選択された場合には、制御はブロック５３０に進み、ここでパケットが破棄、即ちそのデスティネーションに向けて通過されないことになる。同様に、アプリケーションが別のデスティネーションに送るべきパケットを生成した場合には、パケットはＩＳＯモデルのレベル３、即ちブロック５０８からブロック５２２に進み、パケットを通過させる場合にレベル３、即ちブロック５０８でなく、レベル２、即ちブロック５０６に進むことを除いて、前述のものと全く同じプロセスによって処理が進められる。次にレベル２においてパケットはネットワーク上をブロック５０４、即ちレベル１に送られる。パケットがルールに一致しない場合には、次のルールが検索され、そのパケットがこのルールに一致するか否かが検査される。デフォルトルールは特定のソース、デスティネーション、またはサービスとは無関係に任意のパケットに一致するように設けられたルールである。このｅｍｐｔｙルールのみがパケットを廃棄させるアクションを有している。一致する他のルールが存在しない場合、このルールが検索され、パケットを破棄させる効果をもたらす。パケットの破棄はこのような状況の下で取り得る最も安全なステップである。勿論、ｅｍｐｔｙルールを、パケットを通過させるように記述することもできる。
第６図を参照すると、第５図のブロック５２０が符号６００を付して詳細に示されている。第６図における一般的な表示及び第７図〜第１０図に示されたより詳細な表示は、“パケットフィルタモジュール”なる用語の、ここで用いられている正確な定義を含んでいる。これらの図面において示されている機能は、パケットフィルタモジュールを動作させるための最小限の機能である。第１１図〜第１５図に示すのは、パケットフィルタモジュールに含まれ得るが、その言葉の最小限の意味においては必要ではない追加的な特徴である。
パケットフィルタモジュール“仮想マシン”として実現される。この仮想マシンは、この応用例のために、ネットワーク上のコンピュータであるホストコンピュータに存在する、第６図〜第１０図に示すマシンのエミュレーションとして定義され得る。
仮想マシンは、パケットを受信するブロック６０２から処理を開始する。このブロック６０２は第５図のブロック５２２に相当する。処理はブロック６０４に進み、ここでフィルタリング操作命令が命令メモリ（図示せず）から得られる。このフィルタリング操作命令は第２図に示すパケットフィルタジェネレータ２０８によって生成されたフィルタリング操作命令である。ブロック６０４でフィルタリング操作が取り込まれた後、処理は、メモリ６１８が初期化されるブロック６０６に進む。ブロック６０８においては、第１仮想マシン操作命令が取り込まれ、ブロック６１０でそれが実行される。仮想マシンは中間値を格納するのに用いられ得るスタック若しくはレジスタ６１８のようなメモリ機構を有している。スタック若しくはレジスタの使用方法については、以下に示すテーブルに関連してより詳細に示されている。次いで処理は決定ブロック６１４に進み、ここではストップ状態に到達したか否かが判定される。ストップ状態に到達していた場合は、パケットを受容するか拒絶するかの決定がなされる。この決定はブロック６１６において実行される。パケットが通過させられた場合は、パケットは第５図に示すように処理される。パケットが拒絶された場合は、このパケットは破棄され、ブロック５２８及び５３０において示すように否定応答（ＮＡＣＫ）が送られてもよい。ブロック６１４においてストップ状態に到達していない場合は、次の操作命令がブロック６１６において得られ、処理はブロック６１０から反復される。
ステップ５、即ちブロック６１０において実行され得る処理操作のタイプは、第７図においてより明確に示されている。第７図において、ブロック６１０及びブロック６１４は第６図に示したものと同一のものである。コネクション６１３に、並列に示されたこれらの処理操作が割り込んだ形となっている。ブロック６１０において行われるオペレーションに対しては、処理はそのようなタスクが実行される適当なブロック７０２、７０４、若しくは７０６に進む。ブロック７０２において、データの抽出が行われ、ブロック７０４において、論理演算が行われ、ブロック７０６において比較処理が行われる。第７図の右側に示すように、他のブロックが仮想マシンによって実行され得る処理操作と並列に追加されうる。ブロック７０２、７０４、及び７０６に示すようなサブセットは、本発明の仮想マシンにとって必要不可欠の構成要素である。これらの構成要素は第８図、第９図及び第１０図にそれぞれ詳細に示されている。仮想マシンによって実行され得る処理操作に所望に応じて含まれる追加的な構成要素は第１１図〜第１５図にそれぞれ示されている。
データ抽出ブロック７０２は第８図にその詳細が示されている。このプロセスはブロック８０２から開始され、ブロック８０４に進み、そこでパケット８０６内の特定のアドレスからデータが抽出される。このアドレスは、スタックメモリ６１８、命令コードから取り込まれたものである。抽出されるデータの量もスタックメモリ、または命令コードによって決定される。抽出されたデータは、ブロック８０８においてメモリスタック８１０に入れられる。プロセスはブロック８１２で終了する。これらの図面において、制御の流れは縦方向の１直線上の矢印によって示されているが、データの流れは右側の２本の矢印によって示されている。
第９図に示すのは、論理演算７０４の詳細である。論理演算はブロック９０２から開始され、制御はブロック９０４に進み、ここでメモリ９０６から第１値が取り込まれる。ブロック９０８において、メモリから第２値が取り込まれ、論理オペレーションはブロック９１０において実行される。論理演算の結果が真であった場合は、ブロック９１２において１がメモり内にセットされ、論理演算の結果が偽であった場合は、ブロック９１４において０がメモリ９０６内にセットされる。プロセスはブロック９１６において終了する。
仮想マシンのための最後の、即ち第３の必須の処理操作は第１０図にその詳細が示されている。比較処理ブロック７０６はブロック１００２から開始され、制御は１００４に進み、ここでメモリ１００６から第１値が取り込まれる。制御は１００８に進み、ここでメモリ１００６から第２値が取り込まれる。第１値と第２値との間の比較処理がブロック１０１０で行われる。比較処理の結果が真であった場合には、ブロック１０１２においてメモリ１００６内に１がセットされ、比較処理の結果が偽であった場合は、ブロック１０１４においてメモリ１００６内に０がセットされる。プロセスはブロック１０１６において終了する。
以下のオペレーションは第７図には示されていないが、第７図における破線の右側に追加することができ、ブロック７０２、７０４、及び７０６と同様に、即ち並列に接続される。第１１図に示すのはメモリへのリテラル値の入力である。このプロセスはブロック１１０２から開始され、制御はブロック１１０６に進んで、ここでリテラル値が命令コードから得られる。この値はブロック１１０８においてメモリ内にセットされ、プロセスはブロック１１１０で終了する。
条件付き分岐操作が第１２図に示されている。このプロセスはブロック１２０２から開始され、制御はブロック１２０４に進み、ここで命令コードから得られた分岐条件がチェックされる。分岐条件が真であった場合は、ブロック１２０８においてメモリスタック１２０２から獲得され、ブロック１２１０においてチェックされる。ブロック１２１０における比較の結果が真であった場合には、次のステップがＮにセットされ、プロセスはブロック１２１６で終了する。ブロック１２１０における比較の結果が偽であった場合には、プロセスはブロック１２１６で終了する。分岐条件が偽であった場合には、ブロック１２０４において、処理は直接ブロック１２１４に進む。
算術演算またはビット単位の演算が第１３図に示されている。このプロセスはブロック１３０２から開始され、制御はブロック１３０４に進み、ここでメモリ１３０６から第１値が取り込まれる。第２値はブロック１３０８においてメモリ１３０６から取り込まれ、ブロック１３１０において、算術演算またはビット単位の演算がメモリ１３０６から得られた２つの値に対して施される。算術演算またはビット単位の演算の結果は、ブロック１３１２においてメモリ内にセットされ、プロセスはブロック１３１６で終了する。
セキュリティルールを実現する第１命令セットから、第２セキュリティルールのための第２命令セットにデータを送る必要がある場合に用いられる探索操作が、第１４図に示されている。第６図のブロック６０６に示すように、新たなセキュリティルールが処理される度にメモリは初期化される。従って、第１セキュリティルールによってメモリにセットされる情報を、第２セキュリティルールは使用することができない。この問題を克服するために、各ルールに対してテーブル１〜３を含む個別のメモリ１４１０が与えられ、このテーブル１〜３は前述の問題を克服するために用いられ得る。テーブルへのデータの入力については第１５図に示されており、後に説明する。探索操作は１４０２から開始され、制御はブロック１４０４に進み、ここでメモリ１４０６から値が取り込まれる。制御はブロック１４０８に進み、ここで参照したテーブルで前記値を探索することによって、メモリ１４１０のテーブル１〜３からデータが取り出される。制御はブロック１４１２に進み、ここでブロックがテーブル内にあるか否かが判定される。この判定の結果Ｙｅｓであれば、ブロック１４１６においてメモリ１４０６に１がセットされる。この判定の結果がＮｏであれば、ブロック１４１４においてメモリ１４０６に０がセットされる。
第１５図を参照すると、プロセスはブロック１５０２から開始され、制御はブロック１５０４に進み、ここでメモリ１５０６から値が取り込まれる。次いで制御はブロック１５０８に進み、ここでメモリ１５０６から取り込まれた値が、メモリ１５１０内のテーブル１〜３内の適当な位置に配置される。制御はブロック１５１２に進み、ここでテーブル内への値の格納が成功したか否かに関する判定がなされる。格納が成功であった場合には、ブロック１５１６においてメモリ１５０６内に１がセットされる。格納できなかった場合には、ブロック１５１４においてメモリ１５０６内に０がセットされる。プロセスはブロック１５１８で終了する。
本発明のパケットフィルタリングメソッドを用いて実現されるセキュリティルールの一例として、システム内のＴｅｌｎｅｔサービスへのアクセスを許さないセキュリティルールの例を挙げて以下説明する。ＴｅｌｎｅｔはＴＣＰサービスであって、特定のＴＣＰデスティネーションポート番号を有するものとして定義される。これは、パケットの９バイト目の位置にＴＣＰプロトコル値６を有し、かつ、パケットの２２バイト目の位置に、２バイトのデータであるデスティネーションＴｅｌｎｅｔプロトコル番号２３を有することによって識別される。このことは全てのＴｅｌｎｅｔリクエストパケットにおいてみられることである。
以下に示す表における第１の操作は、パケットの９バイト目の位置からＩＰプロトコルを取り出し、これをメモリ内におくことである。表の右側の列の“メモリ値”に示すように、この値６はメモリスタックの最上部におかれる。
次いで第２の操作が行われる。即ち上述のＴＣＰプロトコル（ポート）番号６が、メモリ内の第２位置におかれる。第３のステップにおいて、スタックの上位の２つの層の値を比較し、結果“真”を得る。
0003847343.tif 000003
次いでスタックの上位２つの層における値６は消去され、結果“真”を示す値１がスタックの最上位におかれる。第４のステップにおいて、パケット上の２２バイト目の位置にあるＴＣＰプロトコル番号２３が取り出され、スタックの第２層のメモリロケーションにおかれる。第５のステップにおいてＴｅｌｎｅｔプロトコル番号のリテラル値がスタックの第３層のメモリロケーションにおかれる。第６のステップにおいて、ＴｅｌｎｅｔのＴＣＰプロトコルを含む第２、第３メモリ層のデータ値を、期待される値と比較し、結果“真”を得る。スタックの第２及び第３の層の値は消去され、結果“真”を表す値１で置き換えられる。第７のステップにおいて、ＴＣＰ及びＴｅｌｎｅｔの双方がそれぞれ一致をみたか否かを確かめるべく、論理演算が実行される。この判定はＡＮＤ演算を用いてなされる。この場合、結果は“真”であり、スタックの上位２層における値が消去されて結果“真”を示す値１で置き換えられる。第８のステップにおいて、条件付き分岐操作が実行され、このときメモリ値が真である場合は、プログラムはＴｅｌｎｅｔリクエストを通過させない破棄状態に分岐する。以上より、Ｔｅｌｎｅｔリクエストを破棄させるルールがインプリメントされたことになる。
データフローの暗号化−導入
前に述べたように、企業間、支社間、及びビジネスパートナー間での長距離通信は、最近のビジネスには欠かせないものとなった。本発明を利用することにより、インターネットのような機密保持がなされていない公衆ネットワーク上に、仮想的な私設ネットワークであるバーチャルプライベートネットワーク（ＶＰＮ）を構築することができ、これによって機密が防護され、かつ自由度の高い通信が可能となる。
発信パケットの暗号化と到着パケットの復号化、パケツトへの署名、またはアドレス変換等によるパケットの変更は、パケットのフィルタモジュールによって実行される。パケットを変更するか否かの決定は、ルールベースに基づいてなされる。全てのパケットの変更、即ち暗号化、復号化、署名、及びアドレス変換は、ルールベースのコンテンツに従って選択的に実行される。例えば、暗号化が行われる場合には、ルールベース内の１つのルールが、特定のソース、デスティネーション、及びサービスの型を有するパケットに施される暗号化処理を明示的に要求しなければならない。暗号化命令はパケットフィルタリング操作記述言語に翻訳されるが、このパケットフィルタリング操作記述言語はネットワーク内の仮想パケットフィルタリングマシンにインストールされ、そこで実行される。
上述のように、パケットフィルタモジュールは、パケットを拒絶するか、受容するかを決定する。拒絶する場合には、パケットは破棄される。受容される場合には、パケットは様々な方法で変更され得る。あり得る変更の例を挙げると、暗号化、復号化、及びアドレス変換等があるが、これらに限定されるものではない。以下、パケットフィルタモジュールによって選択的に実行されるパケットの暗号化及び復号化について詳細に説明する。
全体を通して用いられる表記
以下の表記は本明細書全体を通して使用されるものである。
0003847343.tif 000004
全体を通して用いられる用語の定義
以下の定義は、本発明の処理操作を理解する助けとなるものである。
0003847343.tif 000005
本発明に基づいて構成されたファイヤウォールを用いているネットワークの実施例を示す高レベルのブロック図が第１６図に示されている。図面に示されたネットワークの例は、本発明のシステムの暗号化能力を説明するために用いられるが、これは、説明のための例として取り上げたものに過ぎない。当業者は、本発明のシステムを、他のネットワークに対しても同様に適用することができよう。ホスト１及びホスト２は共に、それぞれの私設ＬＡＮに接続される。更に、ファイヤウォール１６０４がそのＬＡＮを通してホスト１に接続されており、同様にファイヤウォール２がそのＬＡＮを通してホスト２に接続される。両ファイヤウォールはインターネットのような公衆ネットワーク１６０６に接続される。また、この公衆ネットワークは機密が保護されず、信頼できないということが仮定されている。認証局１（ＣＡ１）１６０２は、ホスト１及びファイヤウォール１に対する認証局（ＣＡ）として機能する。認証局２（ＣＡ２）１６１２は、ホスト２及びファイヤウォール２に対する認証局として機能する。別の実施例では、両ファイヤウォールに対して、ただ１つのＣＡが設けられる。各実施例において、ＣＡの機能は全て同様である。ただ１つの違いは、ファイヤウォールが用いるどのＣＡが公開鍵が登録されるかという点だけである。
ホスト１及びホスト２の間の通信は機密保護されることが必要である。ホスト１からの通信は、ファイヤウォール機能を備えたネットワークオブジェクトとしての役目を果たすファイヤウォール１を介して、インターネット（即ち公衆ネットワーク）にルーティングされる。同様に、ホスト２からの通信は、同様にファイヤウォール機能を備えたネットワークオブジェクトとしての役目を果たすファイヤウォール２を介して、インターネットにルーティングされる。ホスト２への通信において、ファイヤウォール１はホスト１からホスト２に向けて送られたパケットを代行受信し（intercept）、暗号化する。ファイヤウォール２は、ホスト２に向けられて送られた暗号化されたパケットを受け取り、これらのパケットを復号化する。逆方向の通信においては、ファイヤウォール２がホスト２からホスト１に向けられたパケットを暗号化する。ファイヤウォール１は暗号化されたパケットを受信し、それらを復号化してホスト１に送る。ファイヤウォール１及びファイヤウォール２によって実行される暗号化及び復号化操作は、ホスト１及びホスト２に対して透過的である。
ホスト１がホスト２とのセッションを開設した場合、ホスト１はインターネットプロトコル（ＩＰ）パケットをホスト２に送る。ファイヤウォール１はパケットを代行受信し、ホスト１及びホスト２の間の通信が暗号化、復号化、アドレス変換等何らかの形で変更されるべきか否かを判断する。この決定は、ＩＳＯ層からの情報及び前のパケットから得て保持されていた情報に基づいて各コネクションごとに個別に行われる。この決定プロセスは、ステートフルマルチレイヤインスペクション（ＳＭＬＩ）と称される。各ファイヤウォールは、前に述べたように、ネットワークオブジェクト間の到着通信データ及び発信通信データの双方をいかに取り扱うかをファイヤウォールに指示するルールベースを保持している。ホスト１及びホスト２の間の通信は暗号化されるべきか、または電子署名されるべきかが決定された後、ファイヤウォール１は一時的にパケットを留まらせ、セッション鍵交換を開始する。これについては後に詳述する。通信の暗号化または署名が施され得る前に、両サイドは共通鍵の照合をする必要がある。この共通鍵はセッション鍵Ｒと称され、各セッションのスタート時ごとに新たなものが生成される。機密保護されていないインターネットまたは公衆ネットワークを使用することから、ファイヤウォール１とファイヤウォール２の間の通信のみが暗号化されるということに注意されたい。ホスト１とファイヤウォール１との間の通信及びホスト２とファイヤウォール２との間の通信は、私的であって機密保護されていることが仮定され得る私設ＬＡＮ上で行われることから、暗号化されない。
セッション鍵交換−ファイヤウォール／ファイヤウォール
セッション鍵交換の間に２つのファイヤウォール間を送られるデータを示す高レベルブロック図が第１７図に示されている。以下に述べるスキームは、ＳＭＬＩを用いた暗号化処理のインプリメンテーションの一例に過ぎず、本発明の範囲はこれに限定されず、他の暗号化技術も用いられ得る。本発明の技術を実施するＳＭＬＩプロセスにおいて他の暗号化技術を利用し得るということは当業者には明らかであろう。例えば、他の実施例においてはＳＫＩＰ標準が用いられる。データの暗号化を開始するべく、ファイヤウォール１は、初めにホスト２に対してリクエストパケットを送る。このリクエストパケットは、ファイヤウォール２でなくホスト２に向けて送られるが、これはファイヤウォール１が、ホスト２を担当するファイヤウォールのＩＰアドレスを認識していないからである。リクエストパケット及び応答パケットによって、ホスト１とホスト２との間の暗号化されるべき全ての通信に対して用いられる共通鍵、即ちセッション鍵Ｒの両サイドでの照合が可能となる。前述のように、実際に暗号化されるのは、ファイヤウォール１とファイヤウォール２との間の通信のみである。
一般に、セッション鍵Ｒは、デスティネーションとも称される通信を仕掛けられた側のオブジェクト（即ちファイヤウォール２）１６０８によって生成され、暗号化されてソースとも称される通信を仕掛けた側のオブジェクト（即ちファイヤウォール１）１６０４に送られる。この２つのパケット交換は、暗号化された通信が開始され得る状態になる前に行われなければならない。暗号化セッションが確立された後、状態情報は両ファイヤウォール内に保持され、ここで、留められていた元のパケットが両ファイヤウォールを暗号化されて通過させられる。ファイヤウォール２は同じセッション鍵Ｒを用いてホスト２からホスト１に送られるパケットを暗号化する。
ここでセッション鍵交換について詳細に説明する。共通秘密セッション鍵Ｒを照合するために、本発明においては、“スタティックな”ディフィー・ヘルマン・スキーム（Diffie-Hellman scheme）を用いる。各ディフィー・ヘルマン鍵は、私的部分と公開部分とを有する。両サイドは、それぞれの私的部分及び公開部分を有する。ソース（即ちファイヤウォール１）及びデスティネーション（即ちファイヤウォール２）に対する私的鍵は、それぞれＳｐｖｔ及びＤｐｖｔである。次いで、ソース及びデスティネーションの鍵の公開部分は以下のように定められる。
Ｓpub＝ｇSpvt（ｍｏｄ）ｐ
Ｄpub＝ｇDpvt（ｍｏｄ）ｐ
ソース及びデスティネーションの双方は、セッション鍵交換を有効なものとするために、互いの公開鍵を知っていなければならない。一方の側が他方の公開鍵を知らない場合、若しくは有している鍵が、古いものと認められる場合には、ベーシック鍵交換が開始される。これについては後に詳述する。両サイドは互いの公開鍵を用いて、ベーシック鍵Ｂを導出する。ソースは以下の計算を行う。
Ｂ＝｛ｇDpvt（ｍｏｄ）ｐ｝Spvt（ｍｏｄ）ｐ
＝ｇSpvtDpvt（ｍｏｄ）ｐ
同様に、デスティネーションは以下の計算を行う。
Ｂ＝｛ｇSpvt（ｍｏｄ）ｐ｝Dpvt（ｍｏｄ）ｐ
＝ｇSpvtDpvt（ｍｏｄ）ｐ
従って、両サイドはベーシック鍵Ｂを共有することになる。セッション鍵Ｒの暗号化に際して使用するときには、ベーシック鍵Ｂを短縮したものが生成され、これをＴＢと称する。
一般に、各ファイヤウォールはディフィー・ヘルマン鍵とファイヤウォール機能を備えたネットワークオブジェクトを結びつけるテーブルを保持している。更に、ファイヤウォールは、ＩＰアドレスとそのようなオブジェクトの１つとを結びつけるバインディング（binding）を有していなければならない。第１７図に示す構成においては、ファイヤウォール１内のデータベースは、ファイヤウォール２の存在を認識するように構成されていなければならない。ファイヤウォール１は、ホスト２の暗号化ファイヤウォールがファイヤウォール２であることも認識していなければならない。ファイヤウォール１は、ファイヤウォール２の暗号化ファイヤウォールとしての役目を果たしうる可能性のあるファイヤウォールのリストを有しうる。各ファイヤウォールのバインディング及びネットワークオブジェクトデータベースは、個々の管理ユニットによってスタティックに管理される。
ファイヤウォール間の通信を暗号化するために、ファイヤウォールは、それ自身のベーシック私的鍵と、それが通信する必要のある、ファイヤウォール機能を備えた各ネットワークオブジェクトのベーシック公開鍵とを知っていなければならない。ビジネスパートナーのセグメントのファイヤウォールのような、外部に存在する、ファイヤウォール機能を備えたネットワークオブジェクトのベーシック公開鍵も、暗号化セッションを開設できるようにするために知っていなければならない。このような、ベーシック鍵とファイヤウォール機能を備えたネットワークオブジェクトの間のスタティックバインディングは、ファイヤウォールの内側のデータベースに予め確立されていてもよいが、後に説明するベーシック鍵交換を用いて、通信の進行中に求めることも可能である。
共通秘密ベーシック鍵Ｂがひとたび２つのファイヤウォールによって照合されると、それは、セッションに用いられる実際の鍵、即ちセッション鍵Ｒを暗号化するのに用いられる。同じセッション鍵Ｒは、ホスト１からホスト２への、あるいはホスト２からホスト１へのデータを暗号化するために、ソース及びデスティネーションの双方によって使用される。
ソースからデスティネーションへのリクエストの要素が第１７図において右向きの矢印の上に示されている。この暗号メソッドは、１または２以上の、ソースが実行可能なセッションデータの暗号化のための暗号化メソッドを含む（即ちＤＥＳ、ＦＷＺ１、ＲＣ４、ＲＣ５、ＩＤＥＡ、トリプルＤＥＳ等）。鍵メソッドは、１または２以上の、ソースが実行可能なセッション鍵Ｒの暗号化のための暗号化メソッドを含む（即ちＤＥＳ、ＦＷＺ１、ＲＣ４、ＲＣ５、ＩＤＥＡ、トリプルＤＥＳ等）。メッセージダイジェストメソッド（message digest method）（即ちＭＤメソッド）若しくはメッセージ保全メソッド（message integrity method）は、ソースが実行可能なデータ保全を実行するための１または２以上のメソッドまたはアルゴリズムを含む（即ちＭＤ５、ＳＨＡ等）。データ保全には、メッセージの一部または全ての暗号ハッシュ（cryptographic hash）の計算を伴うのが一般的である。
提案されたソース公開鍵ＩＤは、デスティネーションが使用するとソースが推定しているベーシック公開鍵を、ＩＤ番号を介して識別する。同様に、提案されたデスティネーションベーシック公開鍵ＩＤは、デスティネーションが使用するとソースが推定しているベーシック公開鍵を識別する。ホスト２を防護するファイヤウォール機能を備えたネットワークオブジェクトが複数存在する場合には、どのファイヤウォール機能を備えたネットワークオブジェクトが、実際にホスト２を防護しているかをソースが認識していないため、ソースからのリクエストパケットには、多数の提案されたベーシック公開鍵が含まれる。各提案されたベーシック公開鍵は、それぞれ異なるファイヤウォール機能を備えたネットワークオブジェクトに対応している。
このリクエストにはチャレンジ鍵Ｃも含まれており、このチャレンジ鍵Ｃは、セッション鍵交換若しくはセッションデータそのものに対して途中で攻撃を仕掛ける妨害者の裏をかくために使用される、ソース（即ちファイヤウォール１）によって選択された任意のビットフィールドである。
デスティネーション（即ちファイヤウォール２）は、リクエストパケットを受け取り、またその内容に基づいて、ソースに送り返される応答パケットを生成する。応答パケットの要素は、第１７図における左向き矢印の上に示されている。応答パケットはリクエストパケットと類似したフォーマットを有するが、チャレンジ鍵Ｃのフィールドが、暗号化されたセッション鍵Ｒを保持するフィールドに置き換えられている点が異なっている。ここで、暗号メソッド、鍵メソッド、及びＭＤメソッドのそれぞれは、リクエストにあるようなオプションのリスト以外にただ１つの要素を有する。そのリストされた要素は、リクエストにおいてリストに挙げられたオプションから、デスティネーションによって選択された要素である。同様に、選択されたソースベーシック公開鍵ＩＤ及び選択されたデスティネーションベーシック公開鍵ＩＤの双方は、リクエストで送られたオプションリストからデスティネーションによって選択された鍵ＩＤを表すただ１つの鍵ＩＤを含んでいる。
応答において送られるセッション鍵Ｒは、実際には２つの鍵を含む。１つはセッションデータ暗号化鍵（session data encryption key）Ｅ、もう１つはセッションデータ保全鍵（session data integrity key）Ｉである。従って、セッション鍵Ｒは以下のように定義される。
Ｒ＝Ｅ＋Ｉ
セッション鍵は、暗号メソッド（即ち暗号化メソッド）及びＭＤメソッド、またはメッセージダイジェストメソッドの双方に対して生成される任意のバイトストリームである。その長さは、暗号化メソッド及びＭＤメソッドによって必要とされる鍵の長さの和である。それがひとたび生成されると、ＭＤメソッド、即ちＭＤ５によって選択され、ＳＩＧ（Ｒ）によって表されるセッション鍵の署名が得られる。セッションＲとＳＩＧ（Ｒ）の組み合わせは、次いで短縮されたベーシック鍵ＴＢ及びチャレンジ鍵Ｃの組み合わせによって形成された鍵を用いて暗号化される。これによって、
ＥＮＣ(TC+C)（Ｒ＋ＳＩＧ（Ｒ））
が形成され、これは応答においてソースに送られる。
署名またはハッシュチェックサムの計算によって、ソースが受け取ったパケットが実際にベーシック鍵Ｂを認識しているエンティティによって形成されたという認証を、ソース側が得られる。従って応答パケットに対して強力な認証が与えられることになる。更に、ソースがチャレンジ鍵Ｃを選択することから、同じことを再度行うのは不可能である。
セッションデータ交換
セッションデータ交換中暗号化技術を用いてパケットを別のファイヤウォールに転送するときにファイヤウォールによって実行されるプロセスを示す高レベルの論理流れ図が第１８図に示されている。図面には示されていないが、別の実施例では、セッションデータ交換を実行するためにＩＰＳＥＣ標準が使用される。以前に述べたように、ソース及びデスティネーションがひとたびセッション鍵Ｒを照合すると、暗号化された両ファイヤウォール間の通信が進行する。パケットの代行受信及び変更は、ＩＳＯモデルのレベル２とレベル３の間で起こる。両方向の通信とも、同じセッション鍵Ｒを用いて暗号化及び復号化される。送出されるパケットは、普通のＴＣＰ／ＩＰパケットに極めて類似したものである。このパケットは、それが暗号化されているか否かを示す、あるいはその場合どの鍵が使用されるかという情報を含んでいない。この情報は、２つのファイヤウォールによって維持されている状態のなかにのみ存在する。暗号化されるトラフィックの効率及びバンド幅を増大させる役目を果たすパケットの長さの変更を行うことなく、暗号化はその場所で行われる。一般に、転送されるパケットのそれぞれは、２つの部分に分かれる。それは暗号化されないクリアテキスト部分と、暗号化される暗号化テキスト部分である。クリアテキスト部分はＩＰヘッダ及びＴＣＰ／ＵＤＰヘッダを含む。パケットの残りの部分はそのデータＭを意味しており、クリアテキスト部分から算出される補助鍵Ａとセッション鍵Ｒの組み合わせを用いて暗号化される。このプロセスは後に詳述する。
パケット転送時にファイヤウォールによって実行される第１ステップは、パケットそれ自体のクリアテキストの内容から補助鍵Ａを生成することである（ステップ１８００）。使用される部分は、パケットのタイプ及びプロトコルのタイプ（即ちＲＰＣ、ＵＤＰ、ＴＣＰ、ＩＣＭＰ等）に従っており、以下のようなフィールドを含み得る。即ち、例えば、ＩＰ−ＩＤ（一部分のみ）、ＲＰＣ−ＸＩＤ、ＲＰＣ−ＰＲＯＧＮＵＭ、ＴＣＰ−ＳＥＱ、ＴＣＰ−ＡＣＫ、ＵＤＰ−ＬＥＮ、ＩＣＭＰ−ＴＹＰＥ、ＩＣＭＰ−ＣＯＤＥ、及びＩＰ−ＰＲＯＴＯである。次に、補助鍵Ａ、セッションデータ保全鍵Ｉ及びパケットのデータ部分Ｍがバッファに配置される（ステップ１８０２）。次いで、ＭＤメソッドを用いてバッファのコンテンツに署名が生成され（ステップ１８０４）、それは以下のように表される。
ＳＩＧ（Ａ＋Ｉ＋Ｍ）
生成された署名のビットは、次いでパケットヘッダにおかれる（ステップ１８０６）。パケットに署名ビットを追加することは、データの保全のために重要である。パケットの長さが変更されないことから、パケットの一部分は署名ビットで上書きされなければならない。ここでパケットが暗号化される前に署名ビットがパケット内に格納されることになる。ＴＣＰパケットの場合、２８ビットの署名が以下のように格納される。
●署名の最下位８ビットが、ＩＰ−ＩＤの最上位８ビットを置き換える。
●１の補数演算を用いて次の１６ビットがＴＣＰ−ＣＳＵＭフィールドに加えられる。
●次の４ビットが使用されないＴＣＰ−Ｘ２ニブルに格納する（これは所望に応じて行われる）。
ＵＤＰパケットに対しては、３２ビットの署名が以下のように格納される。
●署名の第１１６ビットが補数演算を用いてＵＤＰ−ＣＳＵＭフィールドに追加され、もとのＵＤＰ−ＣＳＵＭフィールドが０である場合は、同様に１の補数演算を用いてＵＤＰ−ＣＳＵＭフィールドに、ＵＤＰ−ＳＰＯＲＰ及びＵＤＰ−ＤＰＯＲＴフィールドが追加される。
●次の１６ビットはＵＤＰ−ＬＥＮフィールドに格納される。
署名ビットがひとたびパケット内に格納されると、パケットのデータ部分Ｍは暗号化され（ステップ１８０８）、これは以下のように表される。
ＥＮＣ(E+A)  （Ｍ）
この暗号化は、セッションデータ暗号化鍵Ｅ及び補助鍵Ａの組み合わせを用いた暗号メソッドで行われる。最後に、パケットは公衆ネットワーク上を転送される（ステップ１８１０）。
セッションデータ交換中に別のファイヤウォールからの暗号化されたパケットを受け取るときにファイヤウォールによって実行されるプロセスを示す高レベルの論理流れ図が第１９図に示されている。初めに、署名を認証するために、補助鍵Ａがパケットの内容から生成されなければならない（ステップ１９００）。次いで、パケットのデータ部分Ｍが暗号メソッド及びセッションデータ暗号化鍵Ｅ及び補助鍵Ａの組み合わせを用いて復号化される（ステップ１９０２）。これは以下のように表される。
ＤＣＲ(E+A)（ＥＮＣ（E+A）（Ｍ））
次に、署名ビットがパケットヘッダから抽出される（ステップ１９０４）。次いで、補助鍵Ａ上の署名、セッションデータ保全鍵Ｉ及びパケットデータＭがＭＤメソッドを用いて生成される（ステップ１９０６）。これは以下のように表される。
ＳＩＧ（Ａ＋Ｉ＋Ｍ）
次いで２つの署名が互いに比較される（ステップ１９０８）。署名が一致した場合は、署名データを上書きされたパケットに対して何らかのデータの置き換えが行われた後、パケットが送られる（ステップ１９１０）。署名が一致しない場合は、パケットは破棄される（ステップ１９１２）。
ベーシック鍵交換
前に説明したように、ファイヤウォールを備えたネットワークオブジェクトの間の通信を暗号化するために、ファイヤウォールはそれ自身の私的ベーシック鍵及びそれが通信する必要のある各ファイヤウォールの公開ベーシック鍵を認識していなければならない。ビジネスパートナーに属するファイヤウォールのような外部ファイヤウォールに属する公開ベーシック鍵も、暗号化されたセッションの生成のために認識されなければならない。ベーシック鍵とファイヤウォールらのスタティックな結合は、データベース内においてファイヤウォールに対して既に確立されているはずであり、若しくはベーシック鍵交換を用いて処理の進行中に成立させることができる。更に、ベーシック鍵はセキュリテイーを改善するために、随時変更されてもよい。本発明においては、ベーシック公開鍵がファイヤウォール内部のデータベース内に既に存在しない場合は、ベーシック公開鍵を処理進行中に得ることができる。一般に、デスティネーションのベーシック公開鍵をソースが認識していない場合、若しくはソースによって使用されるデスティネーションベーシック公開鍵が古いものであると認められた場合には、ベーシック公開鍵が得られなければならない。
何れの場合においても、ベーシック公開鍵の交換は、転送されるディフィー・ヘルマン鍵の認証を確保するために検証される。一般にメッセージの検証により、システムに対し途中で攻撃を仕掛ける妨害者の裏をかくことができる。
ベーシック鍵を交換するプロセスを以下に詳しく説明する。ベーシック鍵交換中に２つのファイヤウォール間で転送されるデータを示した高レベルのブロック図が第２０図に示されている。両サイドの何れかがその通信相手（peer）のための有効鍵を有していない場合か、古くなった鍵を有していない場合か、古くなった鍵を有していることを認識した場合には常に、認証されたベーシック鍵を送るように他の側にリクエストを行う。
ベーシック鍵交換の開始のしかたには、ベーシック公開鍵が更新若しくは交換されなければならないということをどちらの側が認識したかによって決まる２つの方式があり得る。典型的には、他方のベーシック鍵を有していない側がそのことを認識する。例えば、第１６図を参照すると、開始側、即ちファイヤウォール１が、ファイヤウォール２に対するベーシック公開鍵を有していないことを認識した場合には、そこでベーシック鍵交換が開始される。別のシナリオでは、ファイヤウォール２がファイヤウォール１からのリクエストを受け取ったとき、ファイヤウォール１に対するベーシック公開鍵の古いバージョンを有していることを確認する（これはリクエストにおいて送られた、提案されたベーシック公開鍵とデータベース内のデータを比較することによって行われる）。後者のシナリオの一例が第２０図に示されている。
ベーシック鍵リクエストの要素は、第２０図の左向き矢印の上に示されている。ベーシックリクエストは、ソースベーシック公開鍵ＩＤ、デスティネーションベーシック公開鍵ＩＤ、暗号メソッド、鍵メソッド、及びＭＤメソッドを含む。これらの要素は、本明細書のセッション鍵交換−ファイヤウォール／ファイヤウォールと題されたセクションにおいて上述したものと同一のものである。ベーシック鍵交換が起こらなければならないときには、認証された鍵更新または鍵ｓｙｎｃを他方に送る側が、リクエストにＣＡ公開鍵ＩＤフィールドを追加する。この新たなフィールドはどの鍵が更新を要求しているかを示し、それによってファイヤウォール２がファイヤウォール１からの応答を受け取ることを要求する認証局（ＣＡ）鍵（即ちＲＳＡ鍵）のＩＤである。このメッセージを受け取ったとき、ファイヤウォール１はそのベーシック公開鍵Ｓｐｕｂをファイヤウォール２に送るが、その前にＣＡ公開鍵と共にＣＡによってなされる認証を受ける。認証はベーシック公開鍵の電子署名を生成するプロセスである。ファイヤウォール１に対しては、ＣＡ１（１６０２）が、ファイヤウォール１のベーシック公開鍵（第１６図）を確認するためのＣＡ公開鍵を生成する。ファイヤウォール２が署名の確認を行うために、ＣＡ１、即ちファイヤウォール１用の認証局（ＣＡ）からのＣＡ公開鍵を受け取らなければならない。
ファイヤウォール１による応答の要素は、第２０図の右向き矢印の上に示されている。この要素はＣＡ公開鍵ＩＤ、ソースベーシック公開鍵Ｓｐｕｂ及びＩＰアドレスまたはソースアドレスを含んでいる。更に、ソースベーシック公開鍵の署名が送られるが、これは以下のように表される。
ＳＩＧ（Ｓpub）
好適実施例においては、この署名の生成過程では、初めに、電子署名を生成するＭＤメソッドを用いて、送られるべきベーシック公開鍵から中間的署名を生成する。次いで、最終的に転送される署名を生成するべく、この中間的署名がＲＳＡ復号化関数に入力される。ソース（即ちファイヤウォール１）のＩＰアドレスは、そのファイヤウォール、即ちファイヤウォール１とベーシック公開鍵（Ｓｐｕｂ）との間のバインド（連結）を確認するために含まれている。
ファイヤウォール１からの認証を受け取ったとき、ファイヤウォール２はＣＡ公開鍵を用いてそれを確認することができる。正しいと確認された場合には、ファイヤウォール２は、そのデータベースをファイヤウォール１の新たなベーシック公開鍵に更新する。ここで、セッション鍵交換が完了し、セッションデータの通信が行われ得ることになる。
ここで、ベーシック公開鍵が、各ファイヤウォールとそのＣＡとの間を機密保持された通信チャネルを介して通信されることに注意されたい。１または２以上のＣＡが存在する場合には、１つのＣＡの公開鍵は他のＣＡに妨げられることなく送られる。このメッセージは、ＣＡ公開鍵の以前の値を用いて署名されるか、あるいは新たに得られたＣＡ公開鍵がＦＡＸまたは電話等のマニュアルな手段を用いて確認され得る。
セッション鍵交換−クライアント／ファイヤウォール
以前に説明したように、ビジネス上、企業ネットワークへの外部からのアクセスの必要性が高まってきている。会社のＬＡＮまたはＷＡＮ環境から物理的外部で働いているが、それに接続する必要のある社員の数も増加している。本発明により、システムの外部ユーザを確認することが可能となり、外部ユーザ若しくはクライアントとホストシステムとの間の暗号化された通信が可能となる。
本発明に基づいて構築されたファイヤウォール及びクライアントパーソナルコンピュータを備えた構成の例を示す高レベルのブロック図が第２１図に示されている。パーソナルコンピュータ（ＰＣ）２１００は、説明の便宜上ここではリソースと称され、クライアントまたは外部ユーザがＬＡＮに接続されたホスト２１０４のログインするのに使用される。このＰＣは公衆ネットワーク１６０６に接続されており、ファイヤウォール２１０２を介して、説明の便宜上サーバまたはデスティネーションと称されるホストと通信を行う。ＰＣとホストとの間の全ての通信は、ファイヤウォールを通してなされる。このＰＣはホストにログインし、それとファイヤウォールとの間の暗号化通信を実行するのに必要な機能を発揮するべく適切にプログラムがなされている。第１６図に示されている構成と同様に、第２１図の構成においても、暗号化通信はＰＣとファイヤウォールとの間でのみ行われる。ホストに対しては、ファイヤウォールは透過的であり、データがＰＣから直接入ってくるものとみなすことができる。
ファイヤウォールに対するクライアント用のセッションデータ交換プロセスは、ファイヤウォールに対するファイヤウォールのそれに類似している。しかし、セッション鍵交換及びベーシック鍵交換プロセスに異なる点がある。ファイヤウォール−ファイヤウォールセッション鍵交換においては、各セッションが異なるセッション鍵を受信していた。セッションは、２つの特定のネットワークオブジェクト間のコネクションであるのみならず、同じネットワークオブジェクト間の異なるサービスの間のコネクションを含み得る。これに対し、クライアントはホストとのセッション及びクライアントがリクエストした動作若しくはサービスがいかなるものであれ、同じ鍵を用いてセッションが暗号化されるときに、クライアントとホストの間の全ての通信を初期化する。更に、ファイヤウォール間の通信においては、両サイドが互いの認証公開鍵を有していた。クライアントとファイヤウォール間の通信においては、このことはクライアントに対してのみ当てはまり、サーバはクライアントが送るネーム／パスワードのデータ対を用いてクライアントを識別する。
セッション鍵交換中のクライアントパーソナルコンピュータとファイヤウォール間のデータ転送を示す高レベルブロック図が、第２２図に示されている。クライアントによるリクエストにおいて送られた要素は、右向きの矢印の上に示されている。この要素は、名前（name）、暗号メソッド、鍵メソッド、ＭＤメソッド、パスワードメソッド、ソースベーシック公開鍵Ｓｐｕｂ、提案されたデスティネーションベーシック公開鍵ＩＤ、チャレンジ鍵Ｃ、暗号化されたパスワード及び署名を含んでいる。名前は、クライアントを現在用いているユーザを識別するのに用いられる。暗号メソッド、鍵メソッド及びＭＤメソッドについては以前に説明した。パスワードメソッドは、パスワードの暗号化に際してどの暗号メソッドを用いるかを示す。暗号化されたパスワードは以下のように表され得る。
ＥＮＣ(TB+C)（Ｐ）
ソースベーシック公開鍵Ｓｐｕｂは、ファイヤウォールがユーザのリスト及びそれに関連するベーシック公開鍵を保持していない時は常に送られる。送られるデータは、本明細書のベーシック鍵交換−ファイヤウォール／ファイヤウォールなる表題のセクションで説明したように、ファイヤウォール１からファイヤウォール２（第２０図）に送られるデータに類似したものである。デスティネーションベーシック公開鍵ＩＤは、本明細書のセッション鍵交換−ファイヤウォール／ファイヤウォールなる表題のセクションで説明したのと同一のものである。
署名はデスティネーション、即ち受け取り側に対してメッセージが変更されなかったことを確認する役目を果たす。この署名は、第２２図においてＴで表されているリクエストまたはメッセージの全内容のうち、署名フィールドを除く全内容を取り出し、Ｔと暗号化されていないパスワード及び短縮されたベーシック公開鍵ＴＢを結びつけることによって生成され、以下のように表される。
ＳＩＧ（Ｔ＋Ｐ＋ＴＢ）
この署名はリクエストに追加され、次いでこのリクエストはファイヤウォールに送られる。
リクエストが受け取られた後、ファイヤウォールは、クライアントのソースベーシック公開鍵Ｓｐｕｂを認識する。ここで、ベーシック鍵Ｂ及び短縮されたベーシック鍵ＴＢの生成が可能となる。次いで、パスワードＰの暗号化が可能となる。ひとたびＰが認識されると、ファイヤウォールはリクエスト内の署名を確認することができる。次に、ファイヤウォールはクライアントからのリクエストにおいて送られたチャレンジ鍵Ｃ及び短縮されたベーシック鍵ＴＢを用いて、任意のセッション鍵Ｒ及びＲの署名を生成してそれを暗号化する。これを式で表すと以下のようになる。
ＥＮＣ(TB+C)（Ｒ＋ＳＩＧ（Ｒ））
次いで、署名が、第２２図においてＵで示されたリクエストの内容と共に、短縮されたベーシック鍵ＴＢから生成される。これを式で表すと以下のようになる。
ＳＩＧ（Ｕ＋ＴＢ）
次いでファイヤウォールは、その要素が第２２図の左向き矢印の上に示されている応答を生成する。この応答はデスティネーションベーシック公開鍵ＩＤ、暗号メソッド、鍵メソッド及びＭＤメソッド、暗号化されたセッション鍵及び署名を含む。
セッション鍵がクライアントとファイヤウォールの双方によってひとたび認識されると、ファイヤウォールを介してのＰＣとホストの間の通信セッションを進めることができるようになり、ＰＣとファイヤウォールとの間の暗号化通信はホストに対して透過的となる。鍵交換の数を減らすために、セッション鍵Ｒは同じファイヤウォールを通る全ての暗号化コネクションに対して用いられる。所定の時間の経過後、即ち数分間の経過後、セッション鍵Ｒは破棄される。
ベーシック鍵交換−クライアント／ファイヤウォール
ファイヤウォールとファイヤウォールとの間の通信とは異なり、認証された鍵の交換は、ファイヤウォールのベーシック公開鍵でクライアントを更新するためにのみ必要である。ベーシック鍵交換開始には２つの場合があり得る。その１つはクライアントがファイヤウォールベーシック公開鍵を有していない場合、もう１つはファイヤウォールが、リクエストに際してクライアントによって使用されるベーシック公開鍵が古くなっていることを確認した場合である。
このプロセスは、以前にベーシック鍵交換−ファイヤウォール／ファイヤウォールなる表題のセクションで説明したようなベーシック鍵交換に類似したものである。しかし、以下のような相違点がある。クライアントがファイヤウォールのベーシック公開鍵を有していないことを認識した場合、リクエストにおけるデスティネーションベーシック公開鍵ＩＤフィールドの代わりにＣＡ公開鍵ＩＤフィールドを用いる。このことは第２３図の右向き矢印の上に示されている。第２３図は、ベーシック鍵交換中のクライアントパーソナルコンピュータとファイヤウォールとの間のデータ転送を示す高レベルのブロック図である。この鍵ＩＤは、ファイヤウォールからの応答を受け取ることを要求しているクライアントによる認証局（ＣＡ）鍵（即ちＲＳＡ鍵）のＩＤである。
ファイヤウォールは、クライアントからリクエストを受け取ったとき、リクエストを元に、クライアントがファイヤウォールのベーシック公開鍵をリクエストしているのか、リクエストにおける鍵ＩＤがファイヤウォールのベーシック公開鍵と一致していないか否かを判定する。ファイヤウォールの応答の要素は、図面の左向き矢印の上に示されている。この応答は、元の提案されたデスティネーションベーシック公開鍵ＩＤ、ＣＡ公開鍵ＩＤ、デスティネーションベーシック公開鍵Ｄｐｕｂ、デスティネーションのアドレス、及び署名を有している。元のデステイネーションベーシック公開鍵は、デスティネーションからの場合と同様に取り出される。デスティネーションベーシック公開鍵の署名が送られるが、この署名を式で表すと以下のようになる。
ＳＩＧ（Ｄpub）
好適実施例において、この署名の生成は、電子署名を生成するＭＤメソッドを用いて、送られたベーシック公開鍵から中間的署名を生成することによってなされる。次いで、この中間的署名は、最終的に転送される署名を生成するべくＲＳＡ復号化機構に入力される。デステイネーション（即ちファイヤウォール）のＩＰアドレスは、ファイヤウォールとベーシック公開鍵Ｄｐｕｂとの間のバインドを確認するために含まれている。
ファイヤウォールからの認証のためのデータを受け取ったとき、クライアントはＣＡ公開鍵を用いてそれを認証することができる。それが正しいと認証された場合には、クライアントはそのデータベースをファイヤウォールの新たな公開鍵で更新する。
ファイヤウォールの応答を受け取った後、クライアントはメッセージを送り返して認証を完了する。メッセージの要素は、第２３図の下側の右向き矢印の上に示されている。このメッセージには、暗号化されたパスワード及び署名が含まれている。応答がひとたび受け取られると、クライアントはベーシック鍵Ｂ及び短縮されたベーシック鍵ＴＢを生成することができる。次いでクライアントはパスワードＰを暗号化し、これを式で表すと以下のようになる。
ＥＮＣ(TB+C)（Ｐ）
この署名は第２２図における右向き矢印の上に示されたような、ファイヤウォールに送られる元のリクエスト（Ｔとして表されている）と、クリアテキストパスワードＰ、及び短縮されたベーシックキーＴＢの組み合わせを元にして、ＭＤメソッドを用いて生成され、これを式で表すと以下のようになる。
ＳＩＧ（Ｔ＋Ｐ＋ＴＢ）
次いで、暗号化されたパスワード及び署名がファイヤウォールに送られる。こうしてセッションキー交換が完了し、セッションデータ通信が開始できるようになる。
本発明のいくつかの実施例について以上説明してきたが、その様々な変更、改良、及び別の形態の応用が可能であることは明らかであろう。
【図１】
0003847343.tif 000006
【図２】
0003847343.tif 000007
【図３】
0003847343.tif 000008
0003847343.tif 000009
0003847343.tif 000010
0003847343.tif 000011
0003847343.tif 000012
【図４】
0003847343.tif 000013
【図５】
0003847343.tif 000014
【図６】
0003847343.tif 000015
【図７】
0003847343.tif 000016
【図８】
0003847343.tif 000017
【図９】
0003847343.tif 000018
【図１０】
0003847343.tif 000019
【図１１】
0003847343.tif 000020
【図１２】
0003847343.tif 000021
【図１３】
0003847343.tif 000022
【図１４】
0003847343.tif 000023
【図１５】
0003847343.tif 000024
【図１６】
0003847343.tif 000025
【図１７】
0003847343.tif 000026
【図１８】
0003847343.tif 000027
【図１９】
0003847343.tif 000028
【図２０】
0003847343.tif 000029
【図２１】
0003847343.tif 000030
【図２２】
0003847343.tif 000031
【図２３】
0003847343.tif 000032