Processing

Please wait...

Settings

Settings

Goto Application

1. JP2019511156 - ファイアウォールによる保護ネットワーク装置

Document

Description

Title of Invention ファイアウォールによる保護ネットワーク装置 US 62/292,702 20160208 US 15/053,422 20160225 US2016036053 20160606 WO2017138975 20170817 20181005 1.SOLARIS 2.VISUAL BASIC

Technical Field

0001   0002  

Background Art

0003   0004   0005   0006  

Summary of Invention

Technical Problem

0007   0008   0009   0010   0011  

Technical Solution

0012   0013   0014   0015   0016  

Brief Description of Drawings

0017  

Description of Embodiments

0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093  

Claims

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20    

Drawings

1   2   3   4   5   6   7   8    

Description

ファイアウォールによる保護ネットワーク装置

US 62/292,702 20160208 US 15/053,422 20160225 US2016036053 20160606 WO2017138975 20170817 20181005 1.SOLARIS 2.VISUAL BASIC

Technical Field

[0001]
関連出願
この出願は、Glazemakers等による、2016年3月24日に出願された米国特許出願第15/053,422号および2016年2月8日に出願された米国特許仮出願第62/292,702号の利益を主張するとともに、それらに対して優先権を主張するものであり、これらの出願の内容全体は、本願明細書に完全に記載されているかのように、参照によって本願明細書に組み込まれるものとする。
[0002]
分野
少なくともいくつかの実施形態は、一般に、ネットワーク保護の分野に関し、より具体的には、限定するものではないが、VPNサーバやファイアウォール等のトンネルサーバを含むゲートウェイによるプライベートネットワークの保護に関する。

Background Art

[0003]
プライベートネットワークを、迷惑なネットワークアクセスから保護するために、ファイアウォールを、該プライベートネットワークからのおよび該プライベートネットワークへの通信を選択的にフィルターにかけるため、ゲートウェイに実装することができる。ファイアウォールルールを適用することにより、該ファイアウォールは、一方向または両方向において、ネットワークパケットを通過させるか、または遮断する。該ルールは、典型的には、該ネットワークパケットのソースおよび/または宛先アドレス、または、該ネットワークパケットの該ソースおよび/または宛先ポートによって定義される。
[0004]
ファイアウォールはさらに、ステートフルパケットインスペクションを実行し、それによって、例えば、TCPまたはUDPネットワーキング接続等のネットワーキング接続の状態の経過を追うことができる。このように、微細な制御は、該ルールが該ネットワーク接続に依存するようになって動的になるため可能である。該ファイアウォールは、テーブル、すなわち、すべての進行中の接続に関する状態テーブルまたは状態リストを維持することにより、すべてのオープンネットワーク接続の経過を追う。
[0005]
ゲートウェイによって通過するネットワークトラフィックをより良好に制御するため、上記ファイアウォールは、ネットワーキングパケットのペイロードデータを制御することにより、ディープパケットインスペクションをさらに実行してもよい。このように、例えば、ユーザアクセスまたは認可、プロトコルコンプライアンス、スパムフィルタリングおよびウィルス検出等の異なる種類の制御を実施することができる。
[0006]
プライベートネットワークをさらに保護するために、上記ゲートウェイのファイアウォールは、ネットワークトンネリングと組合せてもよい。その場合、該プライベートネットワークへのアクセスは、クライアント装置と該ゲートウェイとの間に安全なネットワーキングトンネルが設定されるVPN(バーチャルプライベートネットワーク)によって確立することができる。このようなトンネルの設定は、該ゲートウェイとの認証成功時にのみ許可され、該ゲートウェイは、その場合、VPNサーバとして機能する。該ゲートウェイ内でのファイアウォールとVPNサーバとの組合せにより、該プライベートネットワーク内の装置へのアクセスは、該VPNサーバによってクライアントまたはユーザレベルで、および該ファイアウォールによってネットワークレベルで許可することができる。

Summary of Invention

Technical Problem

[0007]
概要
上述したような複合ゲートウェイシステムに関しては、いくつかの問題が生じる可能性がある。第一に、ファイアウォールルールの量が、各追加的なユーザとともに増加して、大きなシステムに対しては、該すべてのルールの管理を困難にするであろう。このため、入ってくる各パケットは、それらのルールのすべてと対照して処理しなければならないであろう。
[0008]
第二の問題は、上記ゲートウェイのフェイルオーバーに関するものである。パッシブフェイルオーバーと呼ばれる一つのフェイルオーバースキームにおいては、該ゲートウェイ内のすべての情報(すなわち、ファイアウォールルール、状態リストおよびアクティブネットワーキングトンネル)は、第二の冗長ゲートウェイと常に同期されている。該第一のゲートウェイに不具合があった場合、該第二のゲートウェイは、該第一のゲートウェイから自動的に引き継ぐ。該同期のため、フェイルオーバー中に、アクティブなネットワーク接続は失われない。
[0009]
アクティブフェイルオーバーと呼ばれる別のフェイルオーバースキームでは、いくつかのゲートウェイも互いに同期されるが、該ゲートウェイ間で負荷のバランスをとることができるように、すべてが同時にアクティブになっている。また、この場合、該同期により、一つのゲートウェイは、故障時に、該ネットワーク接続を失うことなく、別のゲートウェイからすべての接続を引き継ぐことができる。
[0010]
該システムは、新たなゲートウェイを追加するだけでは拡張することができないため、上記二つのスキームに関する問題は拡張性である。第一に、同期に必要な該ゲートウェイ間の帯域幅が、ゲートウェイの量または数に関して指数関数的に増加するであろう。第二に、上記状態リストは同期状態が維持されるため、スケーリング時に、各ゲートウェイの該状態リストおよびファイアウォールルールのサイズも線形的に増加するであろう。このため、各ゲートウェイの電力およびメモリ空間を処理する該必要な帯域幅は、新たなゲートウェイの追加時に増加するであろう。
[0011]
本願明細書には、上記の問題を緩和し、および容易かつ直接的な方法で拡張および管理することができるゲートウェイを提供するさまざまな実施形態が記載されている。いくつかの実施形態を、この章で要約する。

Technical Solution

[0012]
本開示の実施形態は、ネットワーク装置を不正アクセスから守るのに役立つ。特に、本開示の実施形態は、クライアントがアクセスを許可されていないネットワーク装置のすべてのアクセス(または認識も)防ぎながら、該クライアントがアクセスを許可されているアプリケーションサーバおよび他のネットワーク装置への十分なアクセスを可能にする。
[0013]
本開示の一つの実施形態による、コンピュータが実施する方法は、クライアント装置からの要求時に、プライベートネットワークへのゲートウェイを実装するコンピュータシステムにより、該クライアント装置と該ゲートウェイとの間にネットワークトンネルを確立することと、該ネットワークトンネルの確立時に、該クライアント装置と、該プライベートネットワーク内の一つ以上のネットワーク装置との間のネットワークトラフィックを選択的に遮断しおよび可能にするための、該コンピュータシステムに関するファイアウォールルールの独立したセットを有する独立したファイアウォールサービスを開始することを含む。
[0014]
本開示は、さまざまな方法、そのような方法を実行する(コンピュータシステムを含む)さまざまな装置、およびコンピューティングシステムにより実行される場合に、該コンピューティングシステムに、そのような方法を実行させる命令を含むコンピュータ可読媒体を含む。
[0015]
他の特徴は、添付図面から、および以下の詳細な説明から明らかになるであろう。
[0016]
上記実施形態は、該添付図面の図において例としておよび非限定的に説明されており、同様の参照符号は同様の要素を示すものとする。

Brief Description of Drawings

[0017]
[fig. 1] 図1は、本開示のさまざまな態様による、迷惑なネットワークアクセスからのネットワーク装置の保護のための例示的なシステムである。
[fig. 2] 図2は、本開示の構成要素によって実行することができる、クライアント装置とプライベートネットワークとの間にネットワーキングトンネルを確立するための例示的なプロセスである。
[fig. 3] 図3は、一つの実施形態による、ゲートウェイを実装するコンピューティングシステムの異なるプロセッサコアにファイアウォールサービスを分散させる例示的なプロセスである。
[fig. 4] 図4は、一つの実施形態による、ファイアウォールサービスを実施するゲートウェイによって分離されるクライアント装置とプライベートネットワークとの間のネットワーキングトンネルの確立のための例示的なシステムである。
[fig. 5] 図5は、本開示の構成要素によって実行することができる、ゲートウェイに実装されたファイアウォールを同期する例示的なプロセスである。
[fig. 6] 図6は、本開示のさまざまな態様による、迷惑なネットワークアクセスからのネットワーク装置の保護のための、複数のゲートウェイを含む例示的なシステムである。
[fig. 7] 図7は、本開示の構成要素によって実行される、ファイアウォールサービスを一つのゲートウェイから別のゲートウェイにシームレスで転送する例示的なプロセスである。
[fig. 8] 図8は、本開示のさまざまな態様による例示的なコンピューティングシステムを示す。

Description of Embodiments

[0018]
詳細な説明
次に、本発明の一部を構成し、および具体的な実施形態例を例示として示す添付図面を参照して、本発明の主題をより完全に説明する。しかし、発明の主題は、さまざまな異なる形態で具体化することができ、そのため、カバーされたまたは請求された発明の主題は、本願明細書に記載されたいずれかの実施形態例に限定されないものと解釈されるように意図され、実施形態例は、単に例示として記載されている。同様に、請求されたまたはカバーされた発明の主題に対しては、合理的な幅広い範囲が意図されている。特に、例えば、発明の主題は、方法、装置、構成要素またはシステムとして具体化することができる。そのため、実施形態は、例えば、ハードウェア、ソフトウェア、ファームウェアまたは(本質的にソフトウェア以外の)これらの組合せの形を取ることができる。したがって、以下の詳細な説明は、限定的な意味で解釈されるように意図されていない。
[0019]
添付図面において、いくつかの形状構成は、特定の構成要素の詳細(図に示す何らかのサイズ、材料および同様の詳細は、例示的であり、かつ限定的ではないことが意図されている)を示すように誇張されている可能性がある。そのため、本願明細書で開示されている具体的な構造上および機能的な詳細は、限定するものとしてではなく、当業者に教示して、開示されている実施形態をさまざまに採用するための単なる典型的な基盤として解釈すべきである。
[0020]
「一つの実施形態」または「実施形態」に関するこの明細書における言及は、該実施形態とともに記載されている具体的な機能、構造または特徴が、本開示の少なくとも一つの実施形態に含まれていることを意味する。該明細書のさまざまな個所における「一つの実施形態において」というフレーズの登場は、必ずしもすべてが同じ実施形態を指すものではなく、他の実施形態を互いに除外した、独立したまたは代替的な実施形態でもない。さらに、いくつかの実施形態によって提示することができ、およびその他によっては提示できないさまざまな機能が記載されている。同様に、いくつかの実施形態のための要件である可能性があるが、その他の実施形態のための要件ではないさまざまな要件が記載されている。
[0021]
本願明細書に示されている該方法の該要素の任意の組合せおよび/またはサブセットは、互いに組合せてもよく、さまざまな条件に基づいて、選択的に実行しまたは実行しなくてもよく、任意の所望の回数だけ繰り返してもよく、および任意の適当な順番でまたは任意の適当なシステム、装置および/またはプロセスとともに実施してもよい。本願明細書に記載されおよび示されている該方法は、何らかの適当な方法で、例えば、一つ以上のコンピュータシステム上で実行するソフトウェアを介して実施することができる。該ソフトウェアは、有形のコンピュータ可読媒体(例えば、コンピュータシステムのメモリ)に格納されたコンピュータ可読命令を含んでもよく、およびさまざまな実施形態の該方法を実行するための一つ以上のプロセッサによって実行することができる。
[0022]
図1は、本開示のさまざまな態様による、迷惑なネットワークアクセスからのネットワーク装置の保護のための例示的なシステムを示す。この実施例では、三つのネットワーク装置(アプリケーションサーバ141、142および143)が、プライベートネットワーク140の一部となっている。該サーバ141〜143へのアクセスは、プライベートネットワークアドレスを介して該プライベートネットワーク140内から得られる。これに関連して、「プライベート」という用語は、該アプリケーションサーバ141〜143が、グローバルにルーティング可能ではないことを指している。換言すると、該アプリケーションサーバ141〜143は、それらのプライベートネットワークアドレスによって、外部のプライベートネットワーク140から対処することができない。
[0023]
該プライベートネットワーク140および図1の他の構成要素は、インターネットプロトコル(IP)または送信制御プロトコル/インターネットプロトコル(TCP/IP)とも呼ばれている任意の数および任意の種類の通信プロトコルを利用することができる。例えば、該プライベートネットワーク140は、インターネットプロトコルバージョン4のRFC1918、または、インターネットプロトコルバージョン6またはIPv6のRFC4193によって設定されているアドレス範囲を有することができる。
[0024]
ネットワーキング装置141〜143は、該ネットワーク140を通じて他のコンピューティング装置へサービスを提供するアプリケーションサーバに相当する。例えば、メールサーバー、ファイルサーバー、顧客関係管理(Customer Relationship Management)またはCRMサービス、企業資源計画(Enterprise Resource Planning)またはERPサービス、および/またはドキュメント管理サービス等の任意の数および任意の種類のアプリケーションサーバおよび関連するサービスを、本開示の実施形態とともに用いることができる。
[0025]
その場合、データ接続は、該サービスに関連するポート上(または、ポート範囲)のそれぞれのアプリケーションサーバによって、通信ソケットを開くことにより、アプリケーションサーバ141〜143のいずれかによって確立することができる。アプリケーションサーバ141〜143は、物理的ネットワーキングインタフェースがプライベートネットワークアドレスと関連付けられている物理的装置に対応させることができる。別法として、アプリケーションサーバ141〜143は、一つ以上の物理的サーバで作動する仮想サーバインスタンスに対応させてもよい。仮想サーバインスタンスは、各々が、関連するプライベートネットワークアドレスとの仮想ネットワークインタフェースを有することができる。仮想サーバインスタンスは、(ソフトウェアコンテナ、仮想エンジン、仮想専用サーバおよび/またはjailとしても知られている)一つ以上のユーザスペースインスタンスを含んでもよく、および該ユーザスペースインスタンスとともに作動してもよい。このようなユーザスペースインスタンスは、例えば、DOCKERソフトウェアツールを介することを含む任意の適当な方法で実施することができる。
[0026]
図1に示す実施例において、該プライベートネットワーク140は、ゲートウェイ100によって外部ネットワークから隔離され、それにより、該外部ネットワークと、該プライベートネットワーク140との間のネットワーキングトラフィックを管理された方法で可能にしている。図1の該システムは、該プライベートネットワーク上で作動する該サービスを利用するための、該プライベートネットワーク140内の該アプリケーションサーバ141〜143のうちの一つ以上へのアクセス権を有する「トラステッドクライアント」としてクライアント121〜126を識別することができる。該クライアント121〜126は、物理的ハードウェアおよび/または仮想コンポーネントであってもよく、または、該ハードウェアおよび/またはコンポーネントを含んでもよい。例えば、クライアント121〜126は、携帯機器等の物理的装置上で作動する仮想オペレーティングシステムを含んでもよい。該システムは、該クライアント121〜126がアクセスできるようになっている該アプリケーションサーバ141〜143の選択に関するネットワークアクセスを許可することもでき、および該クライアント121〜126がアクセスできないようになっているいずれかのアプリケーションサーバへのネットワークアクセスを拒否することができる。
[0027]
該クライアント121〜126による該アプリケーションサーバ141〜143へのアクセスを制御するために、ネットワーキングトンネル131〜133が、該クライアント121〜126と該ゲートウェイ100との間に確立される。このように、該プライベートネットワーク140は、該クライアント121〜126まで拡張される。いくつかの実施形態において、仮想専用回線(または「VPN」)は、トンネル131〜133を介して確立される。このようにして、クライアント121〜126は、該プライベートネットワーク140内では物理的になっていないが、該プライベートネットワーク140の範囲内でのプライベートネットワークアドレスが与えられ、およびそれに伴って、(以下で、より詳細に説明するように、アクセスできるようになっているという条件で)それら各々のプライベートネットワークアドレスによって、すべてのアプリケーションサーバ141〜143に潜在的にアクセスすることができる。
[0028]
クライアント121〜126からのすべての最初のネットワーク接続要求は、ゲートウェイ100に実装されたトンネルモジュール101によって処理される。一つの実施形態において、トンネルモジュール101は、該最初の接続(例えば、典型的には、届いている最初のTLSパケット)を調べた後、メタデータの場合には該接続を(以下で説明する)管理モジュール102へハンドオーバするか否かを、または、該クライアントからの実際のトンネルトラフィック(すなわち、データ)の場合には(以下で説明する)トンネルサービス150、151の一方へハンドオーバするか否かを判断する。一旦、該接続がハンドオーバされると(例えば、このことは、ファイルディスクリプタを、管理モジュール102へ、または、該トンネルサービスモジュールの一つへ引き渡すことによって行うことができる)、トンネルモジュール101は、もはや関与しない。その結果、該接続は、該クライアントから管理モジュール102へ、または、選択されたトンネルサービス150、151へ直接進む。
[0029]
該最初のネットワーク接続要求は、現存するトンネル内での新たなクライアント装置または新たなネットワーク接続要求による新たなトンネルを確立するための接続要求であってもよい。該トンネル131〜133内での該接続を通じて進むデータは、暗号化により、例えば、インターネットプロトコルセキュリティ(または、「IPsecプロトコル」)、トランスポートレイヤーセキュリティ(または、「TLS」)および/またはデータグラムトランスポートレイヤーセキュリティ(または、「DTLS」)に従ってさらに保護してもよい。実施例では、該トンネルモジュール101は、TLSまたはSSLに従って作動し、および該ネットワーキング接続をTCPネットワーク接続として設定する。そうするために、該クライアントは、該ゲートウェイ100のオープンポートまたはポート範囲に、好ましくは、TLS/SSLで暗号化されたTCP接続のための標準ポート443へ該要求を送信する。
[0030]
ゲートウェイ100はさらに、ファイアウォールサービス111〜116を実装している。その場合、各ファイアウォールサービスは、それぞれのクライアント装置と、該プライベートネットワーク内の該ネットワーク装置141〜143との間のネットワークトラフィックを選択的に遮断しおよび可能にするファイアウォールを実装している。各ファイアウォールサービスは、それぞれのクライアント装置のためのアクセスルールを定義するファイアウォールルールのセットも備えている。換言すると、ゲートウェイ100は、各接続済みのクライアント121〜126のための別々のファイアウォールを作動させる。このことの利点は、ファイアウォールサービスの該ファイアウォールルールのサイズが、接続済みのクライアントの量に伴って増大しないということである。このように、接続済みのクライアントの増加は、単一のファイアウォールサービスによって管理しなければならないファイアウォールルールの該量の増加によるパフォーマンス損失をもたらさない。
[0031]
図2は、図1による該ゲートウェイ100を含む、本開示の構成要素によって実行することができる例示的なプロセスを示す。このプロセスにより、クライアント装置121〜126は、該ゲートウェイ100を介して該プライベートネットワーク140に接続される。実施例として、クライアント装置121に関して該プロセスを説明する。第一のステップ201において、該トンネルモジュール101は、該ゲートウェイ100との第一のネットワーク接続を確立するために、クライアントネットワーキング装置121から第一の接続要求、例えば、該ゲートウェイのポート443で受信した安全なTCPネットワーク接続要求を受信する。その結果、該ネットワーク接続が、ステップ202の下で、例えば、TCPネットワーク接続の場合、三方向ハンドシェイクによって確立される。この第一のネットワーク接続は、該クライアント121と、該ゲートウェイ100との間で、より具体的には、該ゲートウェイ100に実装された該管理モジュール102によって制御情報をやりとりするのに用いられる。該接続が制御目的のためであることを理解するために、該トンネルモジュールは、新たに確立された各ネットワーク接続を通じてやりとりされた第一のデータパケットを検査することができる。該データパケットが制御データパケットである場合、該トンネルモジュール101は、該ネットワーク接続を制御接続として識別し、この接続を通じて受信したすべての追加的なパケットを該管理モジュール102へリダイレクトする。該制御データパケットは、例えば、該TLSパケットのヘッダ内の特定のTSL拡張フィールドを検査することによって識別してもよい。
[0032]
次のステップ203では、該管理モジュール102は、該第一のネットワーク接続を通じて、該クライアント装置121からトンネル情報を受信する。この情報は、クライアントトンネルリストとも呼ばれる。このクライアントトンネルリストは、該ゲートウェイとの該ネットワーキングトンネル131を確立するための情報、例えば、該ゲートウェイによって該クライアントを認証するための認証情報を含む。該管理モジュール102による認証の成功の後、該プロセスはステップ204へ進む。
[0033]
ステップ204において、該管理モジュール102は、クライアント121からクライアントアクセスリストを受信する。このクライアントアクセスリストは、該クライアント装置がアクセスできるようになっている該プライベートネットワーク140内の該ネットワーキング装置またはアプリケーションの一覧表から成る。該一覧表は、例えば、該プライベートネットワーク140内のそれぞれのネットワーキング装置を識別するIPv4またはIPv6ネットワークアドレス等のネットワークアドレスを含む。また、該それぞれのネットワーキング装置への該アクセスを、一つ以上の特定のアプリケーションに制限するために、ポート数またはポート数範囲を指定してもよい。また、該一覧表は、そのホスト名によって、または、完全修飾ドメイン名(fully qualified domain name:FQDN)によってそれぞれのネットワーキング装置を識別してもよい。また、該一覧表は、一つ以上のそれぞれのネットワーキング装置が受信することができる場所からのさらなるサービスを指定することにより、該それぞれのネットワーキング装置を間接的に識別してもよい。このようなサービスは、例えば、Amazonクラウド内の仮想インスタンスに割り当てられたメタデータによるAWS REST APIを用いて、ネットワーク装置のリストの検索を可能にするAmazon Web Serviceであってもよい。
[0034]
該クライアント121はさらに、プライベートネットワーク140への該クライアントアクセスを管理する認証サービスからこのクライアントアクセスリストおよび/またはトンネルリストを検索することができる。該クライアントが、該クライアントアクセスリストおよび/またはトンネルリストに不正にアクセスする状況を避けるために、これらのリストは、変更できないようにしてもよい(すなわち、該リストの一方または両方の変更を該管理モジュール102によって検出できるように保護してもよい)。
[0035]
さらに、該クライアントを認証し、およびクライアントおよびトンネルリストを提供するためのさまざまな方法およびシステムが、米国特許第9,148,408(B1)号明細書に開示されており、該明細書は、参照によって、その全体が本願明細書に組み込まれるものとする。
[0036]
次に、ステップ205において、該トンネルモジュール101は、該クライアント121の要求時に、該クライアント121との第二のネットワーク接続を確立する。これは、新たな接続であるため、該トンネルモジュール101は、この第二の接続を通じて受信した該第一のデータパケットを検査する。該クライアント121は、該ゲートウェイ100との制御情報のやりとりのために該第一の接続を既に確立しているため、この第二の接続は、実際のネットワーキングトンネル131のために用いられる。そのため、検査したデータパケットは、まだ確立されていないネットワーキングトンネル131のための第一のパケットとして識別される。
[0037]
より具体的には、一つの実施形態においては、各トンネル(131、132、133)のために、二つの接続(例えば、TLSトンネルの場合、二つのTCP接続)が必要である。一方の接続は、トークン(メタデータ)をアップロードするためのものであり、他方の接続は、実際のトンネルトラフィックのためのものである。該トンネル131は、ステップ207(以下を参照)の後だけに確立され、および該ファイアウォールは、デフォルトで遮断されるため、ステップ208(以下を参照)後のトラフィックを可能にするだけである。
[0038]
その後、ステップ206において、該トンネルモジュール101は、該第二のネットワーク接続(該クライアント121から来る該トラフィックをトンネリングするのに関与している該接続)をトンネルサービス150に通す。トンネルサービス150および151は、トンネルトラフィック(131、132、133)を処理する。トンネルサービス150、151は、該ゲートウェイ100上に実装された各クライアント(121、122、…126)に行き来する該トラフィックの解読/暗号化に関与している。そして、該トンネルサービスは、該管理モジュール102を用いて、該ネットワーキングトンネル131を確立することができるか否かを確認する。次のステップ207では、該トンネルサービス150は、該ファイアウォールサービス111を開始することにより、該ネットワーキングトンネル131を確立する。この瞬間から、該第二のネットワーク接続ならびに該ネットワーキングトンネル131を通じてやりとりしたすべてのデータは、ファイアウォールサービス111を通過する。換言すると、該ネットワーキングトンネル131からのペイロードデータは、該開始されたファイアウォールサービス111へ転送される。このファイアウォールサービス111は、該クライアント121とプライベートネットワーク140との間のすべてのトラフィックをデフォルトで遮断するファイアウォールを実施する。次のステップ208では、ファイアウォールサービス111は、該管理モジュール102から該ファイアウォールルールを検索することにより、適切なファイアウォールルールを該ファイアウォールに適用する。その動作時の該管理モジュール102は、それらのファイアウォールルールを該クライアントアクセスリストから引き出す。
[0039]
より具体的には、一つの実施形態において、該アクセスルールは、基本的に記述的なファイアウォールルールであり、該管理モジュール102は、それらの記述のうちのいくつかを書き込む。いくつかの実施例は、以下の通りである。
[0040]
1.1.1.1ポート80へのTCPトラフィックを可能にする(これは、ファイアウォールルールと完全に一致するアクセスルールであることに留意する)。
[0041]
www.google.comポート80へのTCPトラフィックを可能にする(これは、複数のFWルールへの翻訳、例えば、
173.194.71.103ポート80へのTCPトラフィックを可能にする
173.194.71.105ポート80へのTCPトラフィックを可能にする
173.194.71.99ポート80へのTCPトラフィックを可能にする
等を必要とするアクセスルールであることに留意する)。
したがって、一つのアクセスルールが、例えば、多くのファイアウォールルールを生じさせることができる。場合により、アクセスルールは、AWSウェブサービスのようなIAASプロバイダへの発呼とすることができ、および例えば、次のような[該記述にファイナンスを有するすべてのインスタンス]へのTCPトラフィックを可能にすることができる。
[0042]
このようにして、図2による該プロセスにより、該クライアント装置121と、該ゲートウェイ100との間のネットワークトンネル131は、該クライアント装置121と、該プライベートネットワーク140内の該ネットワーク装置141〜143との間のネットワークトラフィックを選択的に遮断しおよび可能にするファイアウォールルールの独立したセットを備えた独立したファイアウォールとともに確立される。このプロセスは、該プライベートネットワーク140に接続しているすべてのクライアント121〜126に対して実行され、それによって、それぞれのファイアウォールサービス111〜116を取得する。
[0043]
さらなる実施形態によれば、該ゲートウェイ100は、複数のプロセッサコアを備えているコンピュータシステムに実装される。その場合、管理モジュール102、トンネルモジュール101、トンネルサービス150およびファイアウォールサービス111、112および113は、該プロセッサコア上で実行されるコンピュータ可読命令により、該コンピュータシステム上で実施することができる。その場合、該ゲートウェイ100は、各プロセッサコア上で実行する独立したトンネルサービスを含む。このことは、図1の該例示的な実施形態によって図示されており、トンネルサービス150と、ファイアウォールサービス111、112および113は、第一のプロセッサコア160に実装され、およびトンネルサービス151と、ファイアウォールサービス114、115および116は、第二のプロセッサコア161に実装されている。トンネルサービス150および151は、例えば、該それぞれのプロセッサコア上で実行するソフトウェアプロセスとして実装することができる。該ファイアウォールサービスは、該それぞれのソフトウェアプロセスによって実行するソフトウェアスレッド(すなわち、該それぞれのトンネルサービス)として実装してもよい。
[0044]
別々のトンネルサービスを各プロセッサコア上で実行させるという利点は、該ファイアウォールサービス間のプロセス間通信と、ファイアウォールサービスと該トンネルサービスとの間の通信が、該同じコアに限定されるということである。その結果として、より多くのプロセッサコアを追加することによって、該ゲートウェイ100の機能が高められた場合、プロセス間通信の増加によるパフォーマンスの損失はなくなるであろう。
[0045]
図3は、図1による該ゲートウェイ100を含む、本開示の構成要素によって実行することができる例示的なプロセスを示す。該プロセスにより、該クライアント接続、すなわち、該ネットワーキングトンネルは、異なるコア160、161にわたって分散させることができる。該プロセスは、図2のステップ205に関して上述したように、ステップ305における第二の接続の確立時に始動する。次いで、該プロセスは、ステップ306に進み、この場合、該トンネルモジュールは、該第二の接続を転送することになる該トンネルサービス150、151の一方を選択する。このことは、いくつかの方法で行うことができる。例えば、該トンネルモジュールは、毎回、隣のプロセッサコアに該接続を転送することによるラウンドロビン方式で該接続を分散させることができる。別法として、該トンネルモジュールは、最も多くのリソース、例えば、処理能力、メモリまたはこれらの任意の組合せが利用可能である該プロセッサに該接続を転送してもよい。該プロセッサコアが選択されると、該トンネルモジュール101は、図2のステップ206に関して上述したように、ステップ307において、該第二の接続を該選択したトンネルサービスに転送する。
[0046]
図4は、本開示によるゲートウェイ100に、例えば、図1の該ファイアウォールサービス111〜116として実装することができる例示的なファイアウォールサービス411の詳細を示す。例示のため、ファイアウォールサービス411は、クライアント121とプライベートネットワーク140との間に該ネットワーキングトンネル131を備えているファイアウォールサービス111に相当すると仮定する。ファイアウォールサービス411が開始される場合、該サービスは、該それぞれのクライアント装置121と、該プライベートネットワーク140内の該ネットワーク装置141〜143との間のネットワークトラフィックを選択的に遮断しおよび可能にするファイアウォールコンポーネント420を備えている。どの該トラフィックが遮断され、または可能にされるかに従って該ファイアウォール420により用いられる該ルールが、ファイアウォールルール421として格納される。これらのルールは、例えば、該ゲートウェイ100を実装している該コンピューティングシステムのメモリ内にあるファイルまたはデータベースに格納することができる。
[0047]
ファイアウォール420は、ステートフルパケットインスペクションを実行するように構成されたステートフルファイアウォールとすることができ、それにより、クライアント121と、該プライベートネットワーク140内のネットワーク装置141〜143との間の該ネットワーキングトンネル131を通じて確立されたネットワーキング接続の状態の経過を追うことができる。このような各接続は、TCPまたはUDPネットワーク接続に関連している可能性がある。このようにして、該ルールが、該ネットワーク接続に依存するようになり、それに伴って動的になるため、精微な制御が可能である。該ファイアウォールは、すべての保留中の接続とともに、リスト、すなわち、該状態リスト422を維持することにより、すべてのオープンネットワーク接続の経過を追う。それらの状態は、例えば、該ゲートウェイ100を実装している該コンピューティングシステムのメモリ内にあるファイルまたはデータベースに格納することができる。
[0048]
このようにして、各ファイアウォールサービス411は、独立した状態リスト422を維持する。このことの利点は、該ファイアウォールサービス411の該状態リストの該サイズが、該ゲートウェイ100に接続されたクライアントの量に伴って増大しないということである。このようにして、接続済みのクライアントの増加は、単一のファイアウォールサービスによって管理しなければならない該状態の量の増加によるパフォーマンスの損失をもたらさない。
[0049]
ファイアウォールサービス411は、該クライアント121へ送信した、または、該クライアントから受信したデータをそれぞれ暗号化および解読するための暗号化および/または解読コンポーネント423をさらに含むことができる。さらに、暗号化および解読は、該インターネットプロトコルセキュリティ(または、「IPsecプロトコル」)、トランスポートレイヤーセキュリティ(または、「TLS」)および/またはデータグラムトランスポートレイヤーセキュリティ(または、「DTLS」)に従って実行してもよい。さらに、暗号化および解読は、該ファイアウォールサービス411がその上で作動する該プロセッサコア内のハードウェアコンポーネントによって速められるハードウェアであってもよい。
[0050]
図5は、本開示の構成要素、例えば、図4の該ファイアウォールサービス411によって実行することができる例示的なプロセスを示す。このプロセスにより、バックアップを該コンピュータシステム、すなわち、該ファイアウォールサービス411がその上で作動する該ゲートウェイの故障中に利用することができるように、該ファイアウォールサービスのバックアップが行われる。ステップ501では、ファイアウォール420は、クライアント121と、該プライベートネットワーク140内のネットワーキング装置またはネットワーキングアプリケーションとの間のネットワーク接続の確立を可能にする。このようにして、このネットワーク接続は、既に確立されているネットワーキングトンネル131を通じて確立される。この新たな接続を通じて該トラフィックの経過を追うために、およびそれに伴って、この接続のトラフィックが該ファイアウォール420を通過することを可能にするために、該ファイアウォールは、ステップ501で、該接続を該ファイアウォール状態リスト422とともに登録する。次いで、ステップ502において、該ファイアウォール420は、該状態リスト422を複製して、ステップ503において、秘密署名鍵で該複製に署名する。このようにして、該ファイアウォールは、該複製が、未許可のパーティによって変更されていないことを後に確認することができる。その後、ステップ504において、該複製が該クライアント121へ送信される。このようにして、該状態リスト、すなわち、該ファイアウォール420の該状態が、該クライアント121と同期される。該状態リストは、ステップ502で署名されているため、該状態リストに対する変更を、該署名をチェックすることによって発見することができる。
[0051]
図5の該プロセスにより、該ゲートウェイ100内の各ファイアウォールの独立したバックアップを実行することができる。このことには、いくつかの利点がある。まず第一に、毎回、状態の限定されたセットのみが送信される必要があるため、このことは、迅速に行うことができる。その結果として、該システムが拡張される場合、単一のファイアウォールサービス411の同期のための時間は増加しない。第二に、このことは、以下で論証するように拡張可能であるフェイルオーバー構成を可能にする。
[0052]
図6は、一つの実施形態による、プライベートネットワーク140へのアクセスを保護するためのシステムを示す。アクセスは、各々が、一つ以上のファイアウォールサービスを実装している、トンネルモジュール101(図示せず)、管理モジュール102(図示せず)および一つ以上のトンネルサービス150、151(図示せず)を実装することによってもまた、ゲートウェイ100に相当するゲートウェイ600、601および602によって制御される。明確にするために、ゲートウェイ600内には、二つのファイアウォールサービス611Aおよび616Aのみが図示されている。
[0053]
図7は、該ゲートウェイ600〜602のうちの一つの故障の場合に、図6の該構成要素によって実行することができる例示的なプロセスを示す(以下の実施例では、ゲートウェイ600の故障について説明する)。該プロセスのステップ701において、ゲートウェイ600は、該プライベートネットワーク内のネットワーキング装置141〜143へのアクセスを該クライアント621に与えるために、クライアント装置621との第一のネットワーキングトンネル631を確立する。これにより、該ファイアウォールサービス611Aが開始され、それによって該ファイアウォールルールおよび状態リストをさらに含むステートフルファイアウォールを実施する。ステップ701は、例えば、図2に従って実行することができる。
[0054]
該ネットワーキングトンネル631の確立後、ファイアウォールサービス611Aは、該状態リストの複製またはアップデート650を該クライアント装置621へ定期的に送信することにより、該状態リストを該クライアント621と継続的に同期させる。例えば、該状態は、実際の状態が変化したときにのみ同期される必要がある。したがって、該クライアントが、該保護されているサーバに対して新たな接続を開かない場合、状態同期は行われない。また、この同期は、設定可能であり、および例えば、継続的に、または、少なくとも一秒〜五秒ごと等に行うことができる。該ネットワーキングトンネル631が定位置にある限り、該同期は、ループ703〜702によって図示されているように能動的である。さらに、該状態リストの該同期は、図5に示すような該プロセスに従って実行することができる。
[0055]
例示的な説明のため、特定の時点で、該ネットワーキングトンネル631が切断されると仮定する。この切断の結果として、該プロセスは、ステップ704に進む。該ネットワーキングトンネル631の該切断は、いくつかの要因により、例えば、該クライアント621と該ゲートウェイ600との間のネットワーキング経路の故障、または、該ゲートウェイ600自体の故障等によって引き起こされる可能性がある。該クライアントが、該ネットワーキングトンネルの該故障を検知した場合、該クライアントは、第二のゲートウェイ601との新たなネットワーキングトンネル632を確立し、そのことは、プライベートネットワーク140へのアクセスも与える。このことは、例えば、該トンネル認証情報653およびクライアントアクセスリスト652を該第二のゲートウェイ601へ転送することによる図2に示すような該プロセスによって行うことができる。
[0056]
より具体的には、一つの実施形態において、利用可能なゲートウェイ(600、601、602)のすべてに関する情報は、上述した該トンネルリストの一部である。この情報は、例えば、上記参照によって本願明細書に組み込まれる、米国特許第9,148,408(B1)号明細書に開示されているような中央認証サーバ(制御部)から来る可能性がある。この情報は、該第一の接続時(すなわち、該第一の接続に不具合が生じる前)に利用可能である。該中央認証サーバは、単純に、該トンネルリストから別の候補を取得して、該接続を確立する。複製またはアップデート650から来るソース情報のみが、一旦、新たなトンネルが確立されると同期される該ファイアウォールサービスからの実際の接続状態である。
[0057]
該トンネル632の確立時に、該同じアクセスリスト652が、該ファイアウォールルールを引き出すためにゲートウェイ601の該管理モジュールによって利用されたため、ファイアウォールサービス611Aで用いられるような同一のファイアウォールルールを用いて、該ファイアウォールサービス611Bがゲートウェイ601で開始される。
[0058]
該第二のネットワークトンネル632の確立時に、該クライアント621はまた、該プロセスのステップ705で、該状態リスト651を該ゲートウェイ601へ送信する。一つの実施形態において、該複製またはアップデート650は、状態リスト651の該ソースである。該接続は、フェイルオーバーの前に、トンネル631へ行っている。該能動的接続の間、該状態は、クライアント621と継続的に同期され、また、該状態が、ファイアウォールサービス611Aのためにアップデートされたときにアップデートされる。該トンネルが中断した場合、新たなトンネルが確立されて、受信した最新の状態651がファイアウォールサービス611Bに同期される。
[0059]
該状態リスト651は、例えば、該管理モジュールへ転送することができる。該管理モジュールは、該状態リストが、該クライアントによって変更されていないことをチェックし、その後、ステップ706で、該ファイアウォールの該状態を回復させるために、該状態リストを、その状態リストとして利用する該ファイアウォールサービス611Bに提供する。該ファイアウォールの該状態を回復させた後、該クライアントは、ステップ707で、該プライベートネットワーク140との通信を再開し、(該最初のネットワーキングトンネル631を通じて確立した該保留中のネットワーク接続の喪失を伴うことなく)継続的なフェイルオーバーを実現する。
[0060]
別法として、該状態リストは、該ネットワーキングトンネルを通じて、該ファイアウォールサービス611Bに直接、送信してもよく、この場合、このサービスは、該状態リストが変更されていないことをチェックすることになる。このチェックは、該ゲートウェイ間での該同じ(共用)秘密署名鍵を用いることによって行うことができる。一つの実施形態においては、ファイアウォール状態は、該クライアント上のメモリに一時的に格納されているため、該状態に関する不正な改ざんという潜在的なリスクがある。このリスクを避けるために、該状態は、該ゲートウェイ間での秘密共有鍵で署名される。そのため、該状態が改ざんされた場合、該署名は破棄され、該状態は受け入れられないことになる。
[0061]
図7の該プロセスには、該ゲートウェイ600とゲートウェイ601との間のファイアウォールルールおよび状態に関して同期は必要ないという利点がある。そのため、該システムは、該ゲートウェイ間の帯域要件を要することなく、ゲートウェイ(例えば、ゲートウェイ602)を追加することによって、容易に拡張することができる(該ゲートウェイ間で利用される任意の帯域に対しても要件がないことに留意する)。さらに、ゲートウェイ600の故障時に、該ネットワーキングトンネルは、該ゲートウェイ601および602にわたって移すことができる。例えば、該ファイアウォールサービス616Aは、サービス616Bとしてゲートウェイ602へ移動させることができるとともに、ファイアウォール616Aは、サービス611Bとしてゲートウェイ601へ移される。
[0062]
図8は、上記の実施形態による、該ゲートウェイを実装する適切な例示的コンピューティングシステム800を示す。コンピューティングシステム800は、一般に、適当な汎用コンピュータとして構成することができ、およびバス810と、一つ以上のプロセッサコア802と、ローカルメモリ804と、一つ以上の光学式入力インタフェース814と、一つ以上の光学式出力インタフェース816と、一つ以上の通信インタフェース812と、記憶素子インタフェース806と、一つ以上の記憶素子808とを備えていてもよい。バス810は、該コンピューティングシステム800の構成要素間での通信を可能にする一つ以上のコンダクタを備えていてもよい。プロセッサコア802は、プログラミング命令を解釈して実行する、従来の何らかの種類のプロセッサまたはマイクロプロセッサを含んでもよい。ローカルメモリ804は、ランダムアクセスメモリ(RAM)またはプロセッサコア802による実行のための情報および命令を格納する別の種類の動的記憶装置および/または読出し専用メモリ(ROM)またはプロセッサ802によって用いられる静的情報および命令を格納する別の種類の静的記憶装置を含んでもよい。入力インタフェース814は、オペレータが、情報を該コンピューティング装置800に入力することを可能にする、一つ以上の従来の機構、例えば、キーボード820、マウス830、ペン、音声認識および/または生態認証機構等を備えていてもよい。出力インタフェース816は、情報を該オペレータに対して出力する一つ以上の従来の機構、例えば、ディスプレイ840を備えていてもよい。通信インタフェース812は、トランシーバーのような何らかの機構、例えば、コンピューティングシステム800が、他の装置および/またはシステム801と通信することを可能にする一つ以上のイーサネット(登録商標)インタフェースを備えていてもよい。コンピューティングシステム800の該通信インタフェース812は、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)、例えば、インターネットを用いて、このような別のコンピューティングシステムに接続することができる。記憶素子インタフェース806は、記憶インタフェース、例えば、シリアルATA(Serial Advanced Technology Attachment:SATA)インタフェース、または、バス810を、一つ以上のローカルディスク、例えば、SATAディスクドライブ等の一つ以上の記憶素子808に接続するためのスモールコンピュータシステムインタフェース(Small Computer System Interface:SCSI)等を備えていてもよく、およびこれらの記憶素子808へのデータの書込みおよび/または該記憶素子からのデータの読出しを制御することができる。上記の記憶素子808は、例えば、ローカルディスクとして説明されているが、一般に、リムーバルマグネティックディスク、CD−ROMまたはDVD−ROMディスク等の光学記憶媒体、ソリッドステートドライブ、フラッシュメモリカード等の何らかの他の適当なコンピュータ可読媒体を用いることができるであろう。上述した該システム800は、物理的なハードウェア上の仮想マシンとして作動してもよい。
[0063]
上記プロセスに従って実行されるステップは、コンピュータが実行可能な命令として実施してもよい。その場合、それらの命令は、該プロセスの実行時に、プロセッサコア802上で実行することができる。このようにして、例えば、トンネルモジュール101、管理モジュール102、トンネルサービス150、151およびファイアウォールサービス111〜116によって実行されるステップは、コンピューティングシステム800上の命令として実施することができ、それによってゲートウェイ100を実装することができる。プロセッサコア802は、プロセッサコア802は、ゲートウェイ100のプロセッサコア160、161に相当する。その場合、トンネルサービス150、151は、各該プロセッサコア802上で作動する。そして、各プロセッサコア802は、それぞれが該トンネルサービスのうちの一つによって開始された独立したファイアウォールサービスを作動させる。クライアント装置121〜126と、該ゲートウェイ100との間のデータパケット通信は、ネットワーキングインタフェース812を通じて実行することができる。また、ゲートウェイ100とプライベートネットワーク140との間のデータパケット通信は、ネットワーキングインタフェース812を通じてやりとりすることができる。該コンピュータ実行可能命令は、記憶素子808または何らかのコンピュータ可読記憶媒体上に格納されるコンピュータプログラムプロダクトを構成してもよく、または、該コンピュータプログラムプロダクトの一部であってもよい。
[0064]
本開示の実施形態とともに作動するシステム、装置および構成要素間の通信は、何らかの適当な通信方法、例えば、電話網、エクストラネット、イントラネット、該インターネット、加盟店端末装置(販売時点情報管理装置、携帯情報端末(例えば、iPhone(登録商標)、Palm Pilot(登録商標)、Blackberry(登録商標))、携帯電話、キオスク等)、オンライン通信、衛星通信、オフライン通信、無線通信、トランスポンダ通信、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、バーチャルプライベートネットワーク(VPN)、ネットワーク装置またはリンク装置、キーボード、マウスおよび/または何らかの適当な通信またはデータ入力様式等を用いて実行することができる。本開示のシステムおよび装置は、TCP/IP通信プロトコルならびにIPX、Appletalk、IP−6、NetBIOS、OSI、何らかのトンネリングプロトコル(例えば、IPsec,SSH)または任意の数の既存または将来のプロトコルを利用することができる。
[0065]
いくつかの実施形態は、十分に機能するコンピュータおよびコンピュータシステムにおいて実施することができるが、さまざまな実施形態は、さまざまな形態のコンピューティングプロダクトとして分散させることができ、および特定の種類のマシン、または、該分散を実際に行うのに用いられるコンピュータ可読媒体とは無関係に適用されることが可能である。
[0066]
機械可読媒体は、データ処理システムによって実行される場合に、該システムにさまざまな方法を実行させるソフトウェアおよびデータを格納するのに用いることができる。該実行可能なソフトウェアおよびデータは、例えば、ROM、揮発性RAM、不揮発性メモリおよび/またはキャッシュを含むさまざまな場所に格納することができる。このソフトウェアおよび/またはデータの一部は、これらの記憶装置のうちのいずれか一つに格納してもよい。さらに、該データおよび命令は、集中型サーバまたはピアツーピアネットワークから取得することができる。該データおよび命令の異なる部分は、異なる時間に、および異なる通信セッション時に、または、同じ通信セッション時に、異なる集中型サーバおよび/またはピアツーピアネットワークから取得することができる。該データおよび命令は、該アプリケーションの実行前に、全体として取得することができる。別法として、該データおよび命令の一部は、実行が必要な場合に、ジャストインタイムで動的に取得することができる。したがって、該データおよび命令は、特定のインスタンス時に、全体として機械可読媒体上にあることは必要ない。
[0067]
コンピュータ可読媒体の実例は、限定するものではないが、特に、記録可能なおよび記録不可能なタイプの媒体、例えば、揮発性および不揮発性メモリデバイス、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリデバイス、フロッピーおよび他のリムーバブルディスク、磁気ディスク記憶媒体、光学記憶媒体(例えば、コンパクトディスク読取り専用メモリ(CD ROM)、デジタル多用途ディスク(DVD)等)を含む。該コンピュータ可読媒体は、該命令を格納することができる。
[0068]
さまざまな実施形態において、上記技術的方法を実施するために、配線回路をソフトウェア命令とともに用いることができる。したがって、該技術的方法は、ハードウェア回路およびソフトウェアのいずれかの特定の組合せに限定されず、該データ処理システムによって実行される該命令のためのどの特定のソースにも限定されない。
[0069]
該図面のいくつかは、複数の動作を特定の順序で示しているが、順序依存ではない動作は、順序を変えてもよく、および他の動作は、組合せまたは抜き出してもよい。いくつかの順序変えまたは他のグループ化について具体的に述べたが、他のことも当業者には明白であり、そのため、代替例の網羅的なリストも存在しない。さらに、上記段階は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの任意の組合せで実施することができることを認識すべきである。
[0070]
簡潔にするために、従来のデータネットワーキング、アプリケーション開発、および該システムの他の機能的態様(および該システムの個々の作動構成要素の構成要素)は、本願明細書には詳細に記載されていない可能性がある。さらに、本願明細書に含まれている該さまざまな図面に示す接続ラインは、該さまざまな要素間の例示的な機能的関係および/または物理的結合を表すことが意図されている。実際のシステムにおいては、多くの代替的または追加的な機能的関係または物理的接続が存在する可能性があることに留意すべきである。
[0071]
本願明細書で説明した該さまざまなシステム構成要素は、次のもの、すなわち、デジタルデータを処理するプロセッサを含むホストサーバまたは他のコンピューティングシステム、該プロセッサに結合された、デジタルデータを格納するための記憶装置、該プロセッサに結合された、デジタルデータを入力するための入力デジタイザ、該記憶装置に格納され、および該プロセッサによってアクセス可能な、該プロセッサによってデジタルデータの処理を指示するためのアプリケーションプログラム、該プロセッサおよび記憶装置に結合された、該プロセッサによって処理されたデジタルデータから得られる情報を表示するためのディスプレイ装置、および複数のデータベースのうちの一つ以上を含んでもよい。本願明細書で用いられるさまざまなデータベースは、出荷データ、パッケージデータ、および/または該システムの該動作において有用な何らかのデータを含んでもよい。
[0072]
ウェブブラウザおよび/またはウェブブラウザを利用するアプリケーションインタフェース接続を介して、さまざまな機能を実行してもよい。そのようなブラウザアプリケーションは、さまざまな機能を実行するためのコンピューティングユニットまたはシステム内にインストールされたインターネットブラウジングソフトウェアを備えてもよい。それらのコンピューティングユニットまたはシステムは、一つのコンピュータまたはコンピュータのセットの形態をとってもよく、および、ラップトップ、ノートブック、タブレット、ハンドヘルドコンピュータ、携帯情報端末、セットトップボックス、ワークステーション、コンピュータサーバ、メインフレームコンピュータ、ミニコンピュータ、PCサーバ、コンピュータのネットワークセット、パーソナルコンピュータおよびタブレットコンピュータ、例えば、iPad(登録商標)、iMAC、MacBook、キオスク、端末、販売時点情報管理(POS)装置および/または端末、テレビジョン、または、ネットワークを通じてデータを受信することが可能な他の何らかの装置等を含む、どのような種類のコンピューティング装置またはシステムを用いてもよい。さまざまな実施形態は、Microsoft Internet Explorer、Mozilla Firefox、Google Chrome、Apple Safari、Opera、または、該インターネットをブラウジングするために利用可能な他の何らかの無数のソフトウェアパッケージを利用することができる。
[0073]
さまざまな実施形態は、何らかの適当なオペレーティングシステム(例えば、Windows NT、95/98/2000/CE/Mobile/、Windows7/8、OS2、UNIX(登録商標)、Linux(登録商標)、Solaris、MacOS、PalmOS等)ならびに典型的にはコンピュータに付随する従来のさまざまなサポートソフトウェアおよびドライバとともに作動することができる。さまざまな実施形態は、何らかの適当なパーソナルコンピュータ、ネットワークコンピュータ、ワークステーション、携帯情報端末、携帯電話、スマートフォン、ミニコンピュータ、メインフレーム等を含んでもよい。実施形態は、セキュリティプロトコル、例えば、セキュアソケットレイヤ(SSL)、トランスポートレイヤセキュリティ(TLS)およびセキュアシェル(SSH)等を実装してもよい。実施形態は、http、https、ftpおよびsftpを含む何らかの所望のアプリケーションレイヤプロトコルを実装してもよい。
[0074]
該さまざまなシステムコンポーネントは、例えば、典型的には、標準モデム通信、ケーブルモデム、衛星ネットワーク、ISDN、デジタル加入者線(DSL)、または、さまざまな無線通信方法とともに接続に用いられるような、ローカルループを通じてインターネットサービスプロバイダ(IPS)への接続を含むデータリンクを通じてネットワークに独立して、別々にまたは一緒に適切に結合することができる。本開示の実施形態は、インタラクティブテレビジョン(ITV)ネットワーク等の何らかの適当な種類のネットワークとともに作動することができることに留意されたい。
[0075]
該システムは、クラウドコンピューティングを利用して、部分的または完全に実施してもよい。「クラウド」または「クラウドコンピューティング」は、最小限の管理労力またはサービスプロバイダのやりとりで、迅速にプロビジョニングし、および解放することができる設定可能なコンピューティングリソース(例えば、ネットワーク、サーバ、ストレージ、アプリケーションおよびサービス)の共有プールへの便利なオンデマンドネットワークアクセスを可能にするモデルを含む。クラウドコンピューティングは、位置独立のコンピューティングを含んでもよく、それにより、共有サーバは、要求に応じて、リソース、ソフトウェアおよびデータを、コンピュータや他の装置へ提供する。
[0076]
さまざまな実施形態は、ウェブサービス、ユーティリティコンピューティング、普及している個別化コンピューティング、セキュリティおよびアイデンティティソリューション、自律コンピューティング、クラウドコンピューティング、コモディティコンピューティング、モビリティおよび無線ソリューション、オープンソース、生態認証、グリッドコンピューティングおよび/またはメッシュコンピューティングとともに用いてもよい。
[0077]
本願明細書で説明したデータベースは、どれも、リレーショナル構造、階層構造、グラフィック構造またはオブジェクト指向構造および/または他の何らかのデータベース構成を含んでいてもよい。さらに、該データベースは、何らかの適当な方法で、例えば、データテーブルまたはルックアップテーブルとして体系化してもよい。各レコードは、単一のファイル、一連のファイル、リンクされた一連のデータフィールドまたは他の何らかのデータ構造とすることができる。特定のデータの関連付けは、任意の所望のデータ関連付け方法、例えば、当技術分野において既知のまたは実施されている方法によって実現することができる。例えば、該関連付けは、手動でまたは自動的に実現することができる。
[0078]
どのようなデータベース、システム、装置、サーバー、または、該システムの他の構成要素も、単一の場所に、または、複数の場所に配置することができ、この場合、各データベースまたはシステムは、さまざまな適切なセキュリティ機能、例えば、ファイアウォール、アクセスコード、暗号化、解読、圧縮、復元等のうちのいずれかを含む。
[0079]
暗号化は、当技術分野において現在利用可能な方法、または、利用可能になる可能性がある方法、例えば、Twofish、RSA、EI、Gamal、Schorr signature、DSA、PGP、PKIおよび対称および非対称暗号系のうちのいずれかによって実行することができる。
[0080]
実施形態は、標準的なダイヤルアップ、ケーブル、DSL、または、当技術分野において公知の他のインターネットプロトコルを用いて、該インターネットまたはイントラネットに接続することができる。トランザクションは、他のネットワークのユーザからの不正アクセスを防ぐために、ファイアウォールを介して送ることができる。
[0081]
本願明細書で説明した該コンピュータは、適当なウェブサイト、または、ユーザがアクセス可能な他のインターネットベースのグラフィカルユーザインタフェースを提供することができる。例えば、Microsoft Internet Information Server(IIS)、Microsoft Transaction Server(MTS)およびMicrosoft SQL Severは、Microsoftオペレーティングシステム、Microsoft NTウェブサーバソフトウェア、Microsoft SQL ServerデータベースシステムおよびMicrosoft Commerce Serverとともに用いてもよい。さらに、Active Data Object(ADO)準拠のデータベース管理システムを提供するために、AccessまたはMicrosoft SQL Server、Oracle、Sybase、Informix、MySQL、Interbase等のコンポーネントを用いてもよい。別の実施例では、Apacheウェブサーバを、Linux(登録商標)オペレーティングシステム、MySQLデータベース、およびPerl、PHPおよび/またはPythonプログラミング言語とともに用いることができる。
[0082]
本願明細書で説明した該通信、入力、記憶、データベースまたは表示のうちのいずれかは、ウェブページを有するウェブサイトを介して容易にすることができる。「ウェブページ」という用語は、本願明細書において用いる場合、該ユーザとやりとりするのに用いられる可能性があるドキュメントおよびアプリケーションの種類を限定することを意味しない。例えば、典型的なウェブサイトは、標準的なHTMLドキュメントに加えて、さまざまな形式、すなわち、Java(登録商標)アプレット、JavaScript(登録商標)、アクティブサーバーページ(active server page:ASP)、CGI(common gateway interface)スクリプト、XML(extensible markup language)、動的HTML、カスケードスタイルシート(cascading style sheet:CSS)、AJAX(Asynchronous Javascript(登録商標) And XML)、ヘルパーアプリケーション、プラグイン等を含んでもよい。サーバーは、ウェブサーバから要求を受け取るウェブサービスを含んでもよく、該要求は、URLおよびIPアドレスを含む。該ウェブサーバは、適当なウェブページを検索し、および該ウェブページのための該データまたはアプリケーションをIPアドレスに送信する。ウェブサービスは、該インターネット等の通信手段を通じて、他のアプリケーションとやりとりすることが可能であるアプリケーションである。
[0083]
さまざまな実施形態は、ブラウザベースのドキュメント内にデータを表示するために、所望の任意の数の方法を採用してもよい。例えば、データは、標準的なテキストとして表示してもよく、または、固定リスト、スクロール可能なリスト、ドロップダウンリスト、編集可能なテキストフィールド、固定テキストフィールド、ポップアップウィンドウ等の中に表示することができる。同様に、実施形態は、ウェブページ内のデータを変更するための所望の任意の数の方法、例えば、キーボード、メニュー項目の選択、チェックボックス、オプションボックス等を用いるフリーテキストエントリを利用してもよい。
[0084]
本願明細書で説明した該例示的システムおよび方法は、機能ブロック構成要素、スクリーンショット、オプション選択およびさまざまな処理ステップに関して記載されている可能性がある。このような機能ブロックは、特定の機能を実行するように構成された任意の数のハードウェアおよび/またはソフトウェアコンポーネントによって実現してもよいことを正しく認識すべきである。例えば、該システムは、一つ以上のマイクロプロセッサまたは他の制御装置の制御下で、さまざまな機能を実行することができるさまざまな集積回路コンポーネント、例えば、記憶素子、処理要素、論理素子、ルックアップテーブル等を利用してもよい。同様に、該システムのソフトウェア要素は、さまざまなアルゴリズムが、データ構造、オブジェクト、プロセス、ルーチンまたは他のプログラミング要素の任意の組合せによって実装されている状態で、C、C++、C#、Java(登録商標)、JavaScript(登録商標)、VBScript、Macromedia Cold Fusion、COBOL、Microsoft Active Server Pages、アセンブリ、PERL、PHP、AWK、Python、Visual Basic、SQLストアドプロシージャ、PL/SQL、任意のUNIX(登録商標)シェルスクリプト、拡張可能マークアップ言語(XML)等の任意のプログラミング言語またはスクリプト言語とともに実装することができる。さらに、該システムは、データ送信、シグナリング、データ処理、ネットワーク制御等のための任意の数の従来の技術的方法を採用してもよいことに留意すべきである。さらにまた、該システムは、クライアント側のスクリプト言語、例えば、JavaScript(登録商標)、VBScript等に関するセキュリティ問題を検出または防止するのに用いることができる。
[0085]
本開示の該システムおよび方法は、現存のシステムのカスタマイズ化、アドオンプロダクト、アップグレードされたソフトウェアを実行する処理装置、スタンドアロンシステム、分散システム、方法、データ処理システム、データ処理用装置および/またはコンピュータプログラムプロダクトとして具体化することができる。したがって、該システムまたはモジュールの任意の部分は、コードを実行する処理装置、インターネットベースの実施形態、全体がハードウェア実施形態、または、該インターネット、ソフトウェアおよびハードウェアの実施形態を組合せた態様の形態をとることができる。さらに、該システムは、該記憶媒体内にコンピュータ可読プログラムコード手段を具体化させたコンピュータ可読記憶媒体上のコンピュータプログラムプロダクトの形態をとることができる。ハードディスク、CD−ROM、光学記憶装置、磁気記憶装置等を含む、何らかの適当なコンピュータ可読記憶媒体を利用することができる。
[0086]
本願明細書では、該システムおよび方法は、さまざまな実施形態による方法、装置(例えば、システム)およびコンピュータプログラムプロダクトのスクリーンショット、ブロック図およびフローチャートのイラストに関して説明されている。該ブロック図および該フローチャートの図の各機能ブロック、および該ブロック図およびフローチャートの図における機能ブロックの組合せを、それぞれ、コンピュータプログラム命令によって実装することができることは理解されるであろう。
[0087]
それらのコンピュータプログラム命令は、該コンピュータまたは他のプログラム可能なデータ処理装置上で実行する該命令が、該フローチャートの一つのブロックまたは複数のブロック内で指定されている該機能を実施するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または、マシンを形成するための他のプログラム可能なデータ処理装置上にロードすることができる。これらのコンピュータプログラム命令は、該コンピュータ可読メモリ内に格納された該命令が、該フローチャートのブロックまたは複数のブロック内で指定された該機能を実施する命令手段を含む製品をもたらすように、特定の方法でコンピュータまたは他のプログラム可能なデータ処理装置が機能するように指示することができるコンピュータ可読メモリにも格納することができる。該コンピュータプログラム命令は、該コンピュータまたは他のプログラム可能な装置上で実行する該命令が、該フローチャートのブロックまたは複数のブロックで指定された該機能を実施するためのステップを生成するように、一連の作動ステップを、該コンピュータまたは他のプログラム可能な装置上で実行させてコンピュータ実施プロセスを生成するコンピュータまたは他のプログラム可能なデータ処理装置上にロードすることもできる。
[0088]
したがって、該ブロック図およびフローチャートの図の機能ブロックは、該指定された機能を実行するための手段の組合せ、該指定された機能を実行するためのステップの組合せ、および該指定された機能を実行するためのプログラム命令手段をサポートする。また、該ブロック図およびフローチャートの図の各機能ブロック、および該ブロック図およびフローチャートの図の機能ブロックの組合せを、該指定された機能またはステップを実行する専用ハードウェアベースのコンピュータシステム、または、専用ハードウェアとコンピュータ命令の適当な組合せのいずれかによって実装することができることは理解されるであろう。さらに、プロセスフローの図およびその記述は、ユーザウィンドウ、ウェブページ、ウェブサイト、ウェブフォーム、プロンプト等を参照してもよい。熟練者は、本願明細書に記載された図示ステップが、該ウィンドウ、ウェブページ、ウェブフォーム、ポップアップウィンドウ、プロンプト等の利用を含む任意の数の形態で構成してもよいことを正しく認識するであろう。さらに、図示されおよび記載されているような複数のステップを単一のウェブページおよび/またはウィンドウに結合してもよいが、単純化のために既に拡張されている可能性があることを正しく認識すべきである。他の事例では、単一のプロセスステップとして図示されおよび記載されているステップは、複数のウェブページおよび/またはウィンドウに分けてもよいが、単純化のために既に結合されている可能性がある。
[0089]
「非一時的」という該用語は、クレームの範囲から伝播する一時的信号自体のみを取り除くように理解すべきであり、および伝播する一時的信号自体だけではないすべての標準的なコンピュータ可読媒体に対する権利を放棄するものではない。換言すると、該「非一時的なコンピュータ可読媒体」という用語の意味は、In Re Nuijtenにおいて判決が下されて、米国特許法第101条の下で、特許性の有る対象の範囲から外された、一時的なコンピュータ可読媒体の当該種類のみを除外するように解釈すべきである。
[0090]
本願明細書において、利益、他の利点、および課題に対する解決策について、特定の実施形態に関して説明してきた。しかし、該利益、利点、課題に対する解決策、および何らかの利益、利点または解決策を発生させ、またはより顕著にさせる可能性がある何らかの要素は、本開示の重要な、所要の、または、本質的な形状構成または要素として解釈すべきではない。
[0091]
本開示は方法を含むが、該方法は、有形のコンピュータ可読担体上に、例えば、磁気または光メモリ、または、磁気または光学ディスク上のコンピュータプログラム命令として具体化してもよいことが意図されている。当業者に対して公知されている、上述した例示的な実施形態の該要素に対するすべての構造的、化学的および機能的等価物は、参照によって本願明細書に明確に組み込まれ、および本発明のクレームによって包含されることが意図されている。また、装置または方法は、それらが本発明のクレームによって包含されるようにするために、本開示によって解決しようとする各課題またはすべての課題に対処する必要はない。さらに、本開示における要素、構成要素または方法ステップは、該要素、構成要素または方法ステップが該クレームにおいて明白に列挙されているか否かに関係なく、公衆に提供されることが意図されている。本願明細書におけるクレーム要素は、該要素が、「〜する手段」というフレーズを用いて明確に列挙されていない限り、米国特許法第112条の第六項の規定により解釈すべきではない。「備える」、「備えている」という該用語、または、これらの他の任意の変形は、本願明細書で用いる場合、要素の一覧を備えるプロセス、方法、物品または装置が、それらの要素のみを含むのではなく、明確に列挙されていない、または、そのようなプロセス、方法、物品または装置に固有のものではない他の要素を含んでもよいように、非排他的包含をカバーすることが意図されている。
[0092]
「A、BまたはCのうちの少なくとも一つ」、「A、BおよびCのうちの少なくとも一つ」、「一つ以上のA、BまたはC」または「A、BおよびCのうちの一つ以上」と同様のフレーズが用いられている場合、該フレーズは、実施形態において、Aのみが存在している可能性があること、実施形態において、Bのみが存在している可能性があること、実施形態において、Cのみが存在している可能性があること、または、単一の実施形態において、該要素A、BおよびCの任意の組合せ、例えば、AおよびB、AおよびC、BおよびC、または、AおよびBおよびCが存在している可能性があることを意味するように解釈されることが意図されている。
[0093]
本開示の該範囲から逸脱することなく、該開示されている実施形態に対して、変形および変更を行ってもよい。それらのおよびその他の変形または変更は、以下のクレームで述べられているように、本開示の該範囲内に含まれることが意図されている。

Claims

[1]
クライアント装置からの要求に応答して、プライベートネットワークへの第一のゲートウェイを実装する第一のコンピュータシステムにより、前記クライアント装置と前記第一のゲートウェイとの間に第一のネットワークトンネルを確立することと、
前記第一のネットワークトンネルの確立後に、前記クライアント装置と、前記プライベートネットワーク内の一つ以上のネットワーク装置との間のネットワークトラフィックを選択的に遮断しおよび可能にするための、前記第一のコンピュータに関するファイアウォールルールの独立したセットを有する独立したファイアウォールサービスを開始することと、を含む、コンピュータが実施する方法。
[2]
前記独立したファイアウォールサービスは、前記クライアント装置と、前記プライベートネットワーク内の前記ネットワーク装置との間のネットワーク接続の状態の経過を追うための状態リストを含むステートフルファイアウォールである、請求項1に記載の方法。
[3]
前記第一のコンピュータシステムにより、前記状態リストと前記クライアント装置を同期させることをさらに含む、請求項2に記載の方法。
[4]
前記第一のコンピュータシステムにより、前記状態リストを、前記クライアント装置が変更できないようにすることをさらに含む、請求項3に記載の方法。
[5]
前記第一のネットワークトンネルの故障に応動して、第二のコンピュータシステムにより、前記プライベートネットワークへの第二のゲートウェイを実装することをさらに含み、前記実装することは、
前記クライアント装置から、前記クライアント装置と前記第二のゲートウェイとの間に第二のネットワークトンネルを確立するための第二の要求を受信することと、
前記クライアント装置から、前記状態リストを受信することと、
前記クライアント装置と前記第二のゲートウェイとの間に第二のネットワークトンネルを確立することと、
前記第二のネットワークトンネルの確立後に、前記クライアント装置と、前記プライベートネットワーク内の前記一つ以上のネットワーク装置との間のネットワークトラフィックを選択的に遮断しおよび可能にするための、前記第二のコンピュータシステムに関するファイアウォールルールの前記独立したセットを用いて、第二の独立したファイアウォールサービスを開始することと、
前記状態リストを用いて、前記第二の独立したファイアウォールサービス内の前記独立したファイアウォールサービスの前記状態を復元することと、を含む、請求項3に記載の方法。
[6]
前記第一のコンピュータシステムにより、前記クライアント装置から、前記クライアント装置と通信できるようになっている前記プライベートネットワーク内の前記ネットワーク装置のクライアントアクセスを示すクライアントアクセスリストを受信することと、
前記クライアントアクセスリストの受信後に、前記クライアントアクセスリストから、前記独立したファイアウォールサービスの場合のファイアウォールルールを決定することと、
前記第一のネットワークトンネルの前記故障に応動して、前記第二のコンピュータシステムにより、前記クライアント装置から、前記クライアントアクセスリストを受信することと、
前記第二のコンピュータシステムにより、前記クライアントアクセスリストから、前記第二の独立したファイアウォールサービスの場合のファイアウォールルールを決定することと、をさらに含む、請求項5に記載の方法。
[7]
前記第一のコンピュータシステムは、複数のプロセッサコアを備え、
前記第一のコンピュータシステムは、各プロセッサコア上でプロセスを実行するように構成され、および
前記独立したファイアウォールサービスを開始することは、前記プロセスにより、前記独立したファイアウォールサービスを、前記複数のプロセッサコアのうちの一つに供給するための新たな処理スレッドを開始することをさらに含む、請求項1に記載の方法。
[8]
前記独立したファイアウォールサービスを開始することは、前記複数のプロセッサコアのうちの一つを選択し、それによって前記独立したファイアウォールサービスを実行するための前記プロセスを選択することをさらに含み、前記方法は、前記独立したファイアウォールサービスの開始後に、前記第一のネットワークトンネルからのペイロードデータを前記新たな処理スレッドへ送ることをさらに含む、請求項7に記載の方法。
[9]
前記新たな処理スレッドにより、前記クライアント装置のためのペイロードデータを暗号化することと、
前記クライアント装置からのペイロードデータを解読することと、をさらに含む、請求項7に記載の方法。
[10]
前記複数のプロセッサコアは、前記暗号化することまたは解読することの少なくとも一方を実行するためのハードウェアアクセラレーションを備える、請求項9に記載の方法。
[11]
少なくとも一つのプロセッサコアであって、各コアがプロセスを動作させるように構成されたプロセッサコアと、
前記少なくとも一つのプロセッサコアに、
クライアント装置からの要求に応答して、前記クライアント装置と、プライベートネットワークへのゲートウェイとの間にネットワークトンネルを確立するように、および
前記ネットワークトンネルの確立後に、前記クライアント装置と、前記プライベートネットワーク内の一つ以上のネットワーク装置との間のネットワークトラフィックを選択的に遮断しおよび可能にするためのファイアウォールルールの独立したセットを有する独立したファイアウォールサービスを開始するように、命令するように構成された命令を格納する記憶装置と、
を備えるシステム。
[12]
前記独立したファイアウォールサービスを開始することは、前記複数のプロセッサコアの第一のコアの第一のプロセスにより、前記独立したファイアウォールサービスを、前記複数のプロセッサコアの第二のコア上に供給するための新たな処理スレッドを開始することをさらに含む、請求項11に記載のシステム。
[13]
前記第二のコアは、前記独立したファイアウォールサービスを実行する、請求項12に記載のシステム。
[14]
前記命令はさらに、前記独立したファイアウォールサービスを開始した後に、前記ネットワークトンネルからのペイロードデータを前記新たな処理スレッドへ送るように、前記少なくとも一つのプロセッサコアに命令するように構成される、請求項13に記載のシステム。
[15]
前記ファイアウォールルールの独立したセットを格納する記憶装置をさらに備える、請求項11に記載のシステム。
[16]
コンピュータ可読命令を格納する非一時的なコンピュータ可読記憶媒体であって、実行時に、第一のコンピュータシステムに、
クライアント装置からの要求に応答して、前記クライアント装置と第一のゲートウェイとの間に第一のネットワークトンネルを確立させ、および
前記第一のネットワークトンネルの確立後に、前記クライアント装置と、前記プライベートネットワーク内の一つ以上のネットワーク装置との間のネットワークトラフィックを選択的に遮断しおよび可能にするための、前記第一のコンピュータシステムに関するファイアウォールルールの独立したセットを有する独立したファイアウォールサービスを開始させる、非一時的なコンピュータ可読記憶媒体。
[17]
前記命令はさらに、前記第一のコンピュータシステムに、前記第一のネットワークトンネルの故障に応動して、第二のコンピュータシステムによる、前記プライベートネットワークへの第二のゲートウェイの実装を生じさせ、前記実装は、前記クライアント装置と前記第二のゲートウェイとの間に第二のネットワークトンネルを確立し、前記実装はさらに、前記ファイアウォールルールの独立したセットを用いて第二の独立したファイアウォールサービスを開始する、請求項16に記載の記憶媒体。
[18]
前記命令はさらに、前記第一のコンピュータシステムに、
前記クライアント装置と通信できるようになっている、前記プライベートネットワーク内の前記ネットワーク装置のクライアントアクセスを示すクライアントアクセスリストを受信させ、
前記クライアントアクセスリストから、前記独立したファイアウォールサービスの場合のファイアウォールルールを決定させ、
前記第一のネットワークトンネルの故障に応動して、前記第二のコンピュータシステムへの前記クライアントアクセスリストの提供を生じさせる、請求項17に記載の記憶媒体。
[19]
前記独立したファイアウォールサービスは、前記クライアント装置と前記ネットワーク装置との間のネットワーク接続の状態の経過を追うための状態リストを備えるステートフルファイアウォールである、請求項16に記載の記憶媒体。
[20]
前記命令はさらに、前記第一のコンピュータシステムに、前記クライアント装置のためのペイロードデータを暗号化させる、請求項16に記載の記憶媒体。

Drawings

[ Fig. 1]

[ Fig. 2]

[ Fig. 3]

[ Fig. 4]

[ Fig. 5]

[ Fig. 6]

[ Fig. 7]

[ Fig. 8]