(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022174727
(43)【公開日】2022-11-24
(54)【発明の名称】仮想多重化接続のためのシステムおよび方法
(51)【国際特許分類】
H04L 67/142 20220101AFI20221116BHJP
H04L 67/02 20220101ALI20221116BHJP
【FI】
H04L67/142
H04L67/02
【審査請求】未請求
【請求項の数】30
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022076269
(22)【出願日】2022-05-02
(31)【優先権主張番号】17/316,975
(32)【優先日】2021-05-11
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】519170209
【氏名又は名称】インテグリティ セキュリティ サービシーズ エルエルシー
(74)【代理人】
【識別番号】110000796
【氏名又は名称】弁理士法人三枝国際特許事務所
(72)【発明者】
【氏名】ロケッツ ニール
(57)【要約】 (修正有)
【課題】ターゲットアプリケーションとソースアプリケーションとの間の複数の仮想伝送制御プロトコル接続を容易にするシステム、デバイス及び方法を提供する。
【解決手段】システムは、サーバプロキシとクライアントプロキシとサーバプロキシとクライアントプロキシとの間に介在するネットワークプロテクションとを含む。サーバプロキシは、ターゲット識別子を含むステートレスプロトコルを介してクライアントプロキシからオープン要求を受信する。サーバプロキシは、ターゲット識別子に基づいてサーバプロキシとターゲットアプリケーション間の接続をオープンし、セッション識別子及びシーケンス識別子のオープン要求のステータスを示す応答をクライアントプロキシに提供し、セッション識別子及びインクリメントされたシーケンス識別子を含むデータ要求をクライアントプロキシから受信し、データ要求をターゲットアプリケーションに提供する。
【選択図】
図2A
【特許請求の範囲】
【請求項1】
ターゲットアプリケーションとソースアプリケーションとの間の複数の仮想伝送制御プロトコル接続を容易にするためのシステムであって、
サーバプロキシと、
クライアントプロキシと、
前記サーバプロキシと前記クライアントプロキシとの間に介在するネットワークプロテクションを含み、
前記サーバプロキシが、
ステートレスプロトコルを介して前記クライアントプロキシからオープン要求を受信する動作あって、前記オープン要求がターゲット識別子を含む、動作と、
前記ターゲット識別子に基づいて前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をオープンする動作と、
前記ステートレスプロトコルを介して、前記オープン要求のステータスを示す前記クライアントプロキシへの応答を提供する動作であって、前記応答は、セッション識別子およびシーケンス識別子のうちの少なくとも1つを含む、動作と、
前記ステートレスプロトコルを介して、前記クライアントプロキシからデータ要求を受信する動作あって、前記データ要求は、前記セッション識別子およびインクリメント済みシーケンス識別子を含み、前記インクリメント済みシーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応する、動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続を通して前記ターゲットアプリケーションにデータ要求を提供する動作と、を含む動作を、前記サーバプロキシのプロセッサに実行させるコンピュータ実行可能命令を含んでおり、また前記クライアントプロキシが、
ユニフォームリソースロケータに基づいて前記ステートレスプロトコルを介して前記サーバプロキシに前記オープン要求を送信する動作と、
前記ステートレスプロトコルを介して、前記オープン要求に対する応答を受信する動作と、
前記ステートレスプロトコルを介して、前記セッション識別子および所定の値だけインクリメントされたインクリメント済みシーケンス識別子とを含むデータ要求を前記サーバプロキシに提供する動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシを通して前記ターゲットアプリケーションから1つまたは複数のデータメッセージを受信する動作と、を含む動作を、前記クライアントプロキシのプロセッサに実行させる第2コンピュータ実行可能命令を含んでいる、システム。
【請求項2】
前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、請求項1のシステム。
【請求項3】
前記シーケンス識別子が、ランダムに生成されたインクリメント可能な値を含む、請求項1のシステム。
【請求項4】
前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つが、応答および1つまたは複数のデータメッセージのヘッダに付加される、請求項1のシステム。
【請求項5】
前記サーバプロキシによって実行される動作がさらに、前記サーバプロキシおよび前記ターゲットアプリケーションのうちの1つまたは複数によって、前記クライアントプロキシから受信した前記セッション識別子および前記インクリメント済みシーケンス識別子のうちの少なくとも1つに基づいてデータ要求を認証することを含む、請求項1のシステム。
【請求項6】
前記サーバプロキシによって実行される動作がさらに、前記認証に基づいて、前記ターゲットアプリケーションと前記サーバプロキシとの間の接続をクローズすることと、前記ステートレスプロトコルを介して前記クライアントプロキシにエラー応答を送信することとを含む、請求項5のシステム。
【請求項7】
前記クライアントプロキシによって実行される動作がさらに、
前記ステートレスプロトコルを介して、前記サーバプロキシからの通信なしに所定期間の後にポーリング命令を送信する動作であって、ポーリング命令は、前記セッション識別子と、所定の値だけインクリメントされたインクリメント済みシーケンス番号とを含む、動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシからポーリング応答を受信する動作であって、前記ポーリング応答は、前記サーバプロキシと前記ターゲットアプリケーションのうちの1つによって所定の値だけインクリメントされた前記インクリメント済みシーケンス番号と、ノーコンテンツインジケータと前記クライアントプロキシ宛てバッファリング済みメッセージのカウントのうちの1つと、を含んでおり、前記バッファリング済みメッセージは、所定期間の間に前記サーバプロキシでバッファリングされる、動作と
を含む、請求項1のシステム。
【請求項8】
前記クライアントプロキシによって実行される動作がさらに、
前記ソースアプリケーションとの通信に基づいて、前記ソースアプリケーションと前記クライアントプロキシとの間の接続をクローズする動作と、
前記ステートレスプロトコルを介して前記サーバプロキシにクローズ要求を送信する動作と
を含む、請求項1のシステム。
【請求項9】
前記サーバプロキシによって実行される動作がさらに、
前記クローズ要求を受信する動作と、
前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をクローズする動作と
を含む、請求項8のシステム。
【請求項10】
ターゲットアプリケーションと外部デバイス間の複数の仮想伝送制御プロトコル接続を容易にするためのサーバプロキシであって、前記サーバプロキシが、
ステートレスプロトコルを介して前記外部デバイスからオープン要求を受信する動作であって、オープン要求にはターゲット識別子が含まれている、動作と、
前記ターゲット識別子に基づいて前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をオープンする動作と、
前記ステートレスプロトコルを介して、オープン要求のステータスを示す前記外部デバイスへオープンステータス応答を提供する動作であって、前記オープンステータス応答にはセッション識別子およびシーケンス識別子のうちの少なくとも1つが含まれている、動作と、
前記ステートレスプロトコルを介して、前記セッション識別子とインクリメント済みシーケンス識別子を含む前記外部デバイスからのデータ要求を受信する動作であって、前記インクリメント済みシーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応する、動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続を介して、受信したデータ要求から前記ターゲットアプリケーションにデータを提供する動作と、
を含む動作を、プロセッサに実行させるコンピュータ実行可能命令を含んでいる、サーバプロキシ。
【請求項11】
前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、請求項10のサーバプロキシ。
【請求項12】
前記シーケンス識別子が、ランダムに生成されたインクリメント可能な値を含む、請求項10のサーバプロキシ。
【請求項13】
前記サーバプロキシが、前記外部デバイスを宛先とし、前記データ要求に応答して前記ターゲットアプリケーションから受信した、1つまたは複数の応答メッセージをバッファリングするように構成される、請求項10のサーバプロキシ。
【請求項14】
前記動作がさらに、
第2応答を前記外部デバイスに提供する動作を含み、第2応答は、前記サーバによって所定の値だけインクリメントされたシーケンス番号、および前記データ要求のステータスと、サーバプロキシに現在バッファリングされて外部デバイス宛てのデータメッセージのカウントを示す値とのうち、少なくとも1つを含む、請求項10のサーバプロキシ。
【請求項15】
前記動作がさらに、
前記セッション識別子と前記インクリメント済みシーケンス番号のうちの少なくとも1つに基づいて、前記データ要求を認証する動作を含む、請求項10のサーバプロキシ。
【請求項16】
前記動作がさらに、前記認証の結果に基づいて、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をクローズすることを含む、請求項15のサーバプロキシ。
【請求項17】
前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つが、前記オープンステータス応答および前記データ要求のヘッダに付加される、請求項11のサーバプロキシ。
【請求項18】
前記サーバプロキシと前記ターゲットアプリケーションとの間でオープンされる接続が、ステートフル接続を含む、請求項10のサーバプロキシ。
【請求項19】
前記動作がさらに、
前記ステートレスプロトコルを介して、前記外部デバイスからの通信なしに、所定期間の後に前記外部デバイスからのポーリング要求を受信する動作であって、前記ポーリング要求は、前記セッション識別子と、前記外部デバイスによって所定の値だけインクリメントされた前記インクリメント済みシーケンス番号とを含んでいる、動作と、
前記ステートレスプロトコルを介して、ポーリング応答を提供する動作であって、前記ポーリング応答は、所定の値だけインクリメントされた前記インクリメント済みシーケンス番号を含み、また、ノーコンテンツインジケータと所定の期間中に前記外部デバイス用にバッファリングされたメッセージのカウントのうちの、少なくとも1つを含んでいる、動作とを含む、請求項10のサーバプロキシ。
【請求項20】
前記動作がさらに、バッファリング済みメッセージのカウントが0より大きいことを前記ポーリング応答が示す場合、前記ステートレスプロトコルを介して、前記バッファリング済みメッセージを前記外部デバイスに送信することを含む、請求項19のサーバプロキシ。
【請求項21】
前記外部デバイスが、少なくとも1つのネットワークプロテクションデバイスによってサーバプロキシから分離されている、請求項10のサーバプロキシ。
【請求項22】
ターゲットアプリケーションと通信するためのクライアントプロキシであって、
ユニフォームリソースロケータに基づくステートレスプロトコルを介してオープン要求を提供する動作であって、前記オープン要求には、ターゲット識別子が含まれている、動作と、
前記ステートレスプロトコルを介して前記オープン要求への応答を受信する動作であって、前記応答は前記オープン要求のステータスを示し、セッション識別子とシーケンス識別子のうちの少なくとも1つを含む、動作と、
前記ステートレスプロトコルを介して、前記セッション識別子とインクリメント済み前記シーケンス識別子とを含むデータ要求を提供する動作であって、インクリメント済み前記シーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応している、動作と、
前記ステートレスプロトコルを介して、前記ターゲットアプリケーションから発信された1つ以上のデータ応答を受信する動作と、
を含む動作を、プロセッサに実行させるコンピュータ実行可能命令を含む、クライアントプロキシ。
【請求項23】
前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、請求項22のクライアントプロキシ。
【請求項24】
前記シーケンス識別子が、ランダムに生成されたインクリメント可能な値を含む、請求項22のクライアントプロキシ。
【請求項25】
前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つが、前記応答および前記データ要求のヘッダに付加される、請求項23のクライアントプロキシ。
【請求項26】
前記動作がさらに、
前記ステートレスプロトコルを介して、前記ターゲットアプリケーションと通信することなく、所定期間の後にポーリング要求を提供する動作であって、前記ポーリング要求は、前記セッション識別子と、所定の値だけインクリメントされた前記インクリメント済みシーケンス番号を含む、動作と、
前記ステートレスプロトコルを介して、ポーリング応答を受信する動作であって、前記ポーリング応答が、前記クライアントプロキシから所定の値だけリモートでインクリメントされた1つまたは複数の前記インクリメント済みシーケンス番号と、ノーコンテンツインジケータと、前記クライアントプロキシ宛てに、所定期間中にバッファリングされたバッファリング済みメッセージのカウントとを含む、動作と
を含む、請求項22のクライアントプロキシ。
【請求項27】
前記クライアントデバイスとセキュアな前記アプリケーションとの間に、ファイアウォールとゲートウェイデバイスのうち少なくとも1つが介在している、請求項22のクライアントプロキシ。
【請求項28】
前記動作がさらに、
ステートフル接続を介して、ソースアプリケーションに1つまたは複数のデータメッセージを送信することを含む、請求項22のクライアントプロキシ。
【請求項29】
セキュアな環境内のターゲットアプリケーションとセキュアな環境の外部デバイスとの間の仮想伝送制御プロトコル接続を介して通信を実行するための方法であって、
ステートレスプロトコルを介して前記外部デバイスからオープン要求を受信することであって、前記オープン要求にはターゲット識別子が含まれている、受信することと、
前記ターゲット識別子に基づいて、前記ターゲットアプリケーションとのセキュアな環境内のネットワークリソースを介してステートフル接続をオープンすることと、
前記ステートレスプロトコルを介して、前記オープン要求のステータスを示す前記外部デバイスへ応答を提供することであって、前記応答には、セッション識別子とシーケンス識別子のうち少なくとも1つが含まれている、提供することと、
前記ステートレスプロトコルを介して、前記セッション識別子とインクリメント済みシーケンス識別子とを含む前記外部デバイスからのデータ要求を受信することであって、前記インクリメント済みシーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応する、受信することと、
前記ステートレスプロトコルを介して、受信済み前記データ要求から前記ステートフル接続を介して前記ターゲットアプリケーションにデータを送信することと、
を含む、方法。
【請求項30】
前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、請求項29の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、2つ以上の異なるプロテクト済みネットワーク間でデータを送信するためのシステム、デバイス、および方法に関する。より詳細には、本開示は、ステートレスプロトコルを介してステートフルな多重化伝送制御プロトコル接続をエミュレートするための改良されたシステム、デバイス、および方法に関する。
【背景技術】
【0002】
ネットワーク通信の開始以来、ネットワークセキュリティは、個人間でも、また企業間でも、非常に重要になっている。ネットワークを攻撃から守るためのツールは、ネットワーク間においてセキュアで確実で信頼性の高い通信を可能にするために欠かせないものとなっている。
【0003】
伝送制御プロトコル(TCP)接続は、インターネットプロトコルスイートの主要なプロトコルの1つであり、インターネットプロトコル(「IP」)のトランスポート層の一部を形成している。TCPは、インターネットプロトコル(「IP」)ネットワークを介して通信を行う様々なホスト上で動作するアプリケーション間において、ステートフルで、順序付けされた、エラーチェック済みのバイトストリーム配信を提供する。モノのインターネット(「IoT」)に関連する多くのインターネットアプリケーションは、TCPに依存しており、例えば、セキュアソケッツレイヤ(「SSL」)およびトランスポートレイヤセキュリティ(「TLS」)は、TCPを介して実行されることが多い。
【0004】
TCPはコネクション型であり、クライアントとサーバとの間の接続は、データがTCPを介して送信される前に確立される。一般的にクライアントからの接続要求をリスンする(パッシブオープン)サーバは、通常、要求を受信し、クライアントデバイスとの接続をオープンする。確立された接続は、双方向のステートフルな(および概して長命な)接続である。
【0005】
TCPの安定性と可用性により、脆弱性が生じる。例えば、TCP接続は特に、サービス妨害、接続ハイジャック、TCP拒否、およびリセット攻撃を受けることが多い。これに基づいて、多くのサーバオペレータもクライアントも同様に、例えば、ファイアウォール、ゲートウェイ、プロキシなどを含む1つまたは複数のメカニズムを介して、内部ローカルエリアネットワーク(「LAN」)を外部広域ネットワーク(「WAN」)から保護し分離する。
【0006】
これらのプロテクトメカニズムは、内部攻撃に対する所望のバリアを提供する一方で、プロテクトメカニズムの背後に位置するサーバアプリケーションへのアクセスを求めるクライアントデバイスが接続を確立しようとするときに障害となる場合がある。
【発明の概要】
【0007】
本発明者らは、様々なネットワークプロテクトメカニズムに対応するため、またプロテクトメカニズムの背後に位置する様々なアプリケーションに対するクライアントアクセスを可能にするために、ステートレスで短命の一方向の技術的アプローチを使用して、TCP接続の双方向性、ステートフル性、および長命をエミュレートする仮想TCP接続を創出することが望ましいと判断した。
【0008】
したがって、本技術は、仮想の多重化された送信プロトコル(「TCP」)接続を提供できる改善されたシステム、デバイス、および方法を含む。いくつかの実施形態では、ターゲットアプリケーションとソースアプリケーションとの間の複数の仮想伝送制御プロトコル接続を容易にするためのシステムが提供される。前記システムは、サーバプロキシと、クライアントプロキシと、サーバプロキシとクライアントプロキシとの間に介在するネットワークプロテクションとを含む。前記サーバプロキシは、ステートレスプロトコルを介してクライアントプロキシからオープン要求を受信することであって、前記オープン要求がターゲット識別子を含む、受信することと、前記ターゲット識別子に基づいて前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をオープンすることと、前記ステートレスプロトコルを介して、前記オープン要求のステータスを示す前記クライアントプロキシへの応答を提供することであって、前記応答がセッション識別子およびシーケンス識別子のうちの少なくとも1つを含む、提供することと、前記ステートレスプロトコルを介して、前記クライアントプロキシからのデータ要求を受信することであって、前記データ要求が前記セッション識別子およびインクリメント済みシーケンス識別子を含み、前記インクリメント済みシーケンス識別子が所定の値だけインクリメントされたシーケンス識別子に対応する、受信することと、前記ステートレスプロトコルを介して、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続を通じて前記ターゲットアプリケーションに前記データ要求を提供することと、を含む動作を、前記サーバプロキシのプロセッサに実行させるコンピュータ実行可能命令を含む。前記クライアントプロキシは、ユニフォームリソースロケータに基づいて前記ステートレスプロトコルを介して前記サーバプロキシに前記オープン要求を送信することと、前記ステートレスプロトコルを介して前記オープン要求に対する応答を受信することと、前記ステートレスプロトコルを介して、前記セッション識別子および所定の値だけインクリメントされた前記インクリメント済みシーケンス識別子を含む前記データ要求を前記サーバプロキシに提供することと、前記ステートレスプロトコルを介して、前記サーバプロキシによって前記ターゲットアプリケーションから1つまたは複数のデータメッセージを受信することと、を含む動作を、前記クライアントプロキシのプロセッサに実行させる第2コンピュータ実行可能命令を含む。
【0009】
そのようなシステムを提供することにより、TCP接続を仮想的にエミュレートするために、一方向で、ステートレスで、従来型短命のプロトコルを実装することができ、またプロテクトメカニズムの背後に配置されたプロテクト済みアプリケーションへのより広範でよりセキュアなアクセスが可能になる。
【0010】
1つまたは複数のデータメッセージの各々は、少なくとも、前記セッション識別子と、所定の値だけインクリメントされた後続のインクリメント済みシーケンス番号とを含み得る。
【0011】
前記ステートレスプロトコルは、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つであり得る。
【0012】
前記シーケンス識別子は、ランダムに生成されたインクリメント可能な値を含み得る。
【0013】
セッション識別子、シーケンス番号、およびインクリメント済みシーケンス番号のうちの少なくとも1つは、応答および1つまたは複数のデータメッセージの、ヘッダに付加され得る。
【0014】
前記サーバプロキシによって実行される動作はさらに、前記サーバプロキシおよび前記ターゲットアプリケーションのうちの1つまたは複数によって、前記クライアントプロキシから受信した前記セッション識別子および前記インクリメント済みシーケンス識別子のうちの少なくとも1つに基づいて前記データ要求を認証することを含み得る。
【0015】
前記サーバプロキシによって実行される動作はさらに、前記認証に基づいて、前記ターゲットアプリケーションと前記サーバプロキシとの間の接続をクローズすることと、前記ステートレスプロトコルを介して前記クライアントプロキシにエラー応答を送信することと、を含み得る。
【0016】
前記クライアントプロキシによって実行される動作はさらに、前記ステートレスプロトコルを介して、前記サーバプロキシからの通信なしに所定期間の後にポーリング命令を送信することであって、前記ポーリング命令が、前記セッション識別子と、所定の値だけインクリメントされた前記インクリメント済みシーケンス番号とを含む、送信することと、前記ステートレスプロトコルを介して、前記サーバプロキシからポーリング応答を受信することであって、前記ポーリング応答が、前記サーバプロキシと前記ターゲットアプリケーションのうちの1つによって所定の値だけインクリメントされた前記インクリメント済みシーケンス番号と、ノーコンテンツインジケータとクライアントプロキシ宛てのバッファリング済みメッセージのカウントのうちの1つとを含み、前記バッファリング済みメッセージが、所定期間中に前記サーバプロキシでバッファリングされる、受信することと、を含み得る。
【0017】
前記クライアントプロキシによって実行される動作はさらに、前記ソースアプリケーションとの通信に基づいて、前記ソースアプリケーションとク前記ライアントプロキシとの間の接続をクローズすることと、前記ステートレスプロトコルを介して前記サーバプロキシにクローズ要求を送信することと、を含み得る。
【0018】
前記サーバプロキシによって実行される動作はさらに、前記クローズ要求を受信することと、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をクローズすることと、を含み得る。
【0019】
本開示のさらなる実施形態によると、ターゲットアプリケーションと外部デバイスとの間の複数の仮想伝送制御プロトコル接続を容易にするためのサーバプロキシが提供される。前記サーバプロキシは、ステートレスプロトコルを介して前記外部デバイスからオープン要求を受信することであって、前記オープン要求がターゲット識別子を含む、受信することと、前記ターゲット識別子に基づいて前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をオープンすることと、前記ステートレスプロトコルを介して、前記オープン要求のステータスを示す前記外部デバイスにオープンステータス応答を提供することであって、前記オープンステータス応答がセッション識別子およびシーケンス識別子のうちの少なくとも1つを含む、提供することと、前記ステートレスプロトコルを介して、前記セッション識別子および前記インクリメント済みシーケンス識別子を含む前記外部デバイスからデータ要求を受信することであって、前記インクリメント済みシーケンス識別子は所定の値だけインクリメントされた前記シーケンス識別子に対応する、受信することと、前記ステートレスプロトコルを介して、前記受信したデータ要求からのデータを、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続を介して前記ターゲットアプリケーションに提供することと、を含む動作を、プロセッサに実行させるコンピュータ実行可能命令を含む。
【0020】
前記ステートレスプロトコルは、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含み得る。
【0021】
前記シーケンス識別子は、ランダムに生成されたインクリメント可能な値を含み得る。
【0022】
前記サーバプロキシは、前記外部デバイスを宛先とし、前記データ要求に応答して前記ターゲットアプリケーションから受信した、1つまたは複数の応答メッセージをバッファリングするように構成され得る。
【0023】
前記動作はさらに、第2応答を外部デバイスに提供することを含むことができ、第2応答は、前記サーバによって所定の値だけインクリメントされた前記シーケンス番号を含み、また、前記データ要求のステータス、および前記サーバプロキシに現在バッファリングされて前記外部デバイス宛てのデータメッセージのカウントを示す値のうち、少なくとも1つを含む。
【0024】
前記動作はさらに、前記セッション識別子および前記インクリメント済みシーケンス番号のうちの少なくとも1つに基づいて、前記データ要求を認証することを含み得る。
【0025】
前記動作は、認証の結果に基づいて、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をクローズすることを含み得る。
【0026】
前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つは、前記オープンステータス応答と前記データ要求の、ヘッダに付加され得る。
【0027】
前記サーバプロキシと前記ターゲットアプリケーションとの間でオープンされる接続は、ステートフル接続であってもよい。
【0028】
前記動作はさらに、前記ステートレスプロトコルを介して、前記外部デバイスからの通信なしに、所定期間の後に前記外部デバイスからのポーリング要求を受信することであて、前記ポーリング要求が、前記セッション識別子と、前記外部デバイスによって所定の値だけインクリメントされた前記インクリメント済みシーケンス番号とを含む、受信することと、前記ステートレスプロトコルを介して、ポーリング応答を提供することであって、前記ポーリング応答が、所定の値だけインクリメントされた前記インクリメント済みシーケンス番号と、ノーコンテンツインジケータと所定期間中に外部デバイス用にバッファリングされたメッセージのカウントのうちの少なくとも1つを含む、提供することと、を含み得る。
【0029】
前記動作はさらに、前記ポーリング応答が、バッファリング済みメッセージのカウントが0より大きいことを示す場合、前記ステートレスプロトコルを介して、前記バッファリング済みメッセージを前記外部デバイスに送信することを含み得る。
【0030】
前記外部デバイスは、少なくとも1つのネットワークプロテクションデバイスによって前記サーバプロキシから分離されてもよい。
【0031】
本開示のさらに別の実施形態によれば、ターゲットアプリケーションと通信するためのクライアントプロキシが提供される。前記クライアントプロキシは、ユニフォームリソースロケータに基づいてステートレスプロトコルを介してオープン要求を提供することであって、前記オープン要求がターゲット識別子を含む、提供することと、前記ステートレスプロトコルを介して、前記オープン要求に対する応答を受信することであって、前記応答が、前記オープン要求のステータスを示し、セッション識別子およびシーケンス識別子のうちの少なくとも1つを含む、受信することと、前記ステートレスプロトコルを介して、前記セッション識別子およびインクリメント済みシーケンス識別子を含むデータ要求を提供することであって、前記インクリメント済みシーケンス識別子が、所定の値だけインクリメントされた前記シーケンス識別子に対応する、提供することと、前記ステートレスプロトコルを介して、前記ターゲットアプリケーションから発信される1つまたは複数のデータ応答を受信することと、を含む動作を、プロセッサに実行させるコンピュータ実行可能命令を含む。
【0032】
前記ステートレスプロトコルは、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つであり得る。
【0033】
前記シーケンス識別子は、ランダムに生成されたインクリメント可能な値を含み得る。
【0034】
前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つは、前記応答と前記データ要求の、ヘッダに付加され得る。
【0035】
前記動作はさらに、前記ステートレスプロトコルを介して、前記ターゲットアプリケーションと通信することなく、所定期間の後にポーリング要求を提供することであって、前記ポーリング要求が、前記セッション識別子と、所定の値だけインクリメントされた前記インクリメント済みシーケンス番号を含む、提供することと、前記ステートレスプロトコルを介して、ポーリング応答を受信することであって、前記ポーリング応答が、前記クライアントプロキシから所定の値だけリモートでインクリメントされた1つまたは複数のインクリメント済みシーケンス番号と、ノーコンテンツインジケータと、前記クライアントプロキシ宛てに、所定期間中にバッファリングされたバッファリング済みメッセージのカウントとを含む、受信することと、を含み得る。
【0036】
前記クライアントデバイスと前記セキュアなアプリケーションとの間に、ファイアウォールとゲートウェイデバイスのうち少なくとも1つが介在してもよい。
【0037】
前記動作はさらに、ステートフル接続を介して、ソースアプリケーションに1つまたは複数の前記データメッセージを送信することを含み得る。
【0038】
本開示のさらに別の実施形態によれば、セキュアな環境内のターゲットアプリケーションと前記セキュアな環境の外部デバイスとの間の仮想伝送制御プロトコル接続を介して通信を実行するための方法が提供される。前記方法は、ステートレスプロトコルを介して前記外部デバイスからオープン要求を受信することであって、前記オープン要求にはターゲット識別子が含まれている、受信することと、前記ターゲット識別子に基づいて、前記セキュリティな環境内のネットワークリソースを介して前記ターゲットアプリケーションとのステートフル接続をオープンすることと、前記ステートレスプロトコルを介して、オープン要求のステータスを示す前記外部デバイスへの応答を提供することであって、前記応答には、セッション識別子とシーケンス識別子のうち少なくとも1つが含まれている、提供することと、前記ステートレスプロトコルを介して、前記セッション識別子とインクリメント済みシーケンス識別子とを含む前記外部デバイスからデータ要求を受信することであって、前記インクリメント済みシーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応する、受信することと、前記ステートレスプロトコルを介して、前記受信したデータ要求から前記ステートフル接続によって前記ターゲットアプリケーションにデータを送信することと、を含む。
【0039】
前記ステートレスプロトコルは、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つであり得る。
【0040】
他の点で矛盾しない限り、上記の要素と本明細書内の要素との組み合わせが可能であると考えている。
【0041】
前述の概略的な記述および以下の詳細な記述は共に、例示的かつ説明的なものにすぎず、特許請求の範囲に記載の本開示を限定するものではないことを理解されたい。
【図面の簡単な説明】
【0042】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、開示された主題の多数の特徴の例を示している。添付の図面は、説明と共に、本明細書に記載の様々な技術の原理を説明するのに役立つ。
【0043】
【
図1A】本発明の実施形態による例示的な構成を示す概略図である。
【
図1B】本発明の実施形態による別の例示的な構成を示す概略図である。
【
図2A】本発明の実施形態を実施するための例示的なメッセージングシーケンスを示すスイムレーン図である。
【
図2B】本発明の実施形態を実施するための例示的なメッセージングシーケンスを示すスイムレーン図である。
【
図2C】本発明の実施形態を実施するための例示的なメッセージングシーケンスを示すスイムレーン図である。
【
図2D】本発明の実施形態を実施するための例示的なメッセージングシーケンスを示すスイムレーン図である。
【
図3A】本開示の実施形態によるクライアント側の方法を示すフローチャートである。
【
図3B】本開示の実施形態によるサーバ側の方法を示すフローチャートである。
【
図4】本明細書に記載の例示的な実施形態と一致するシステムおよび方法のために実装できる例示的なコンピューティングシステムのブロック図である。
【発明を実施するための形態】
【0044】
ここで、本明細書に記載の技術の様々な実施態様を詳細に参照していただくと、それらの例が添付の図面に示されている。便宜上、図面全体を通して同じ参照番号を使用して、同一または類似のパーツを指している。
【0045】
本開示の実施形態は、広域ネットワーク(「WAN」)を介してリンクされた異なるローカルネットワーク上に位置するデバイス間の通信およびデータ転送を容易にすることを意図している。本開示の異なるネットワークは、1つまたは複数のネットワークプロテクションデバイスを介してWANからも互いからも分離されてもよく、1つのネットワーク上のデバイスに向けられたパケットは、WANに到達し、最終的には別のネットワーク上のデバイスに到達するために、ネットワークプロテクションデバイスを通過しなければならない。本開示において言及される1つまたは複数のネットワークプロテクションデバイスは、WANとローカルネットワークとの間の分離を提供する任意の適切なネットワークプロテクションデバイス、例えば、ルータ、ゲートウェイ、ファイアウォール、モデム、端末アダプタ等を含み得る。そのようなデバイスはさらに、ポート転送、ネットワークアドレス変換、フィルタリング、セキュリティ機能などの様々なサービスを実行するように構成されてもよい。本開示の実施形態はさらに、以下に説明するように、ネットワークプロテクションデバイス140がインバウンドおよび/またはアウトバウンドのネットワークトラフィックを特に制限する通信を、容易にすることを意図している。本開示の実施形態は、データ交換がステートレスプロトコルを介して行われる場合でも、異なるローカルネットワーク上のデバイス間で状態が維持されるようにする。この技術的効果は、少なくとも、各コンピューティングデバイスがそれぞれの状態を独立してローカルに維持することと、その後の通信中に参照されるセッション識別子および/またはシーケンス番号を用いて維持された状態にインデックスを付けることによって、達成される。
【0046】
図1Aは、本発明の実施形態による例示的な構成を示す概略図である。システム100は、とりわけ、クライアントデバイス110と、クライアントプロキシエージェント210と、サーバプロキシエージェント220と、複数の通信ネットワーク704~708を介してクライアント110およびそのソースアプリケーション115によって使用されるターゲットアプリケーション130へのアクセスを提供する1つまたは複数のサーバ120とを含み、これらは、ネットワークプロテクションデバイス140を介したネットワークパケットの通過を必要とする。図示の例では、ネットワークプロテクションによって保護されたデバイス120、220およびネットワーク708は、セキュアなネットワーク環境125と考えることができる。
【0047】
図1Bは、本発明の実施形態による別の例示的な構成100’を示す概略図である。
図1Bの実施形態は、
図1Aの実施形態と同様であるが、ただし、クライアントプロキシエージェント210の機能はクライアント110内に実装され、サーバプロキシエージェント220の機能はサーバデバイス120内に実装されている。当業者は、他の構成も可能であり、本実施例を限定するような意図はないことを理解されるであろう。
【0048】
様々な実施形態では、クライアントデバイス110は、任意の適切なコンピューティングデバイスを含むことができ、これらは、ネットワークを介して通信するように構成され、また、サーバデバイス120上で実行される1つまたは複数のターゲットアプリケーション130からのデータコンシューマとして、および/またはターゲットアプリケーションへのデータプロバイダとして、ソースアプリケーション115を実行するように構成される。例えば、パーソナルコンピュータ、モバイルデバイス、ビデオゲームコンソールなどである。いくつかの実施形態によれば、クライアントデバイス110は、とりわけ、モノのインターネット(IoT)センサ、家電製品、車両、または車両の一部であるデバイス(例えば、車載ユニット(OBU)など)であってもよい。例えば、クライアントデバイス110は、車両、船舶(例えば、ボート)、航空機、宇宙船、医療機器、ロボット、ドローン、無線もしくは有線通信モジュール、またはIoTデバイスを含むことができる。いくつかの例では、クライアントデバイス110は、とりわけ、交通制御装置(例えば、信号機、交通灯、または電子交通標識)の路側ユニット(RSU)、デジタル広告板、歩行者警告システム、オートバイセンサ、自転車センサ、電子標識、街灯センサ、または工事警告センサに対応し得る。
【0049】
クライアントデバイス110は、様々なアプリケーションを実行して、クライアントデバイスおよび/またはそのユーザにサービスまたは情報を提供するよう構成され得る。例えば、クライアントデバイス110は、プロビジョニング情報(例えば、セキュリティ証明書、許可など)を取得するように構成されたアプリケーション115を、例えば、サーバ120からそのような情報を要求することによって、実行するように構成され得る。クライアントデバイス110はまた、例えば、クライアントデバイス110によって生成された情報、および/またはサーバ120から受信された情報といった、プロビジョニング情報を、要求しているデバイスに提供するように構成されたアプリケーション115を実行するように構成されてもよい。クライアントデバイス110によって任意の数のソースアプリケーション115を実行することができ、そのようなアプリケーションは、本開示の範囲から逸脱することなく任意の数の異なる機能を提供する。
【0050】
いくつかの実施形態によれば、また
図1Bに示すように、クライアントデバイス110は、クライアントプロキシエージェント210に関連する機能を提供することができ、このような機能については、以下でより詳細に説明する。例えば、クライアントプロキシエージェント210は、接続クライアント側で要求を開始することができ、すなわち、1つまたは複数のソースアプリケーション115に代わって要求者として作動することが可能であり、とりわけ、クライアント110がセキュアなネットワーク環境125の外部にある場合に、可能である。
【0051】
サーバデバイス120は、ターゲットアプリケーション130とも呼ばれ得る、1つまたは複数のサーバアプリケーション130を実行するように構成され得る。本明細書で使用する場合、「サーバアプリケーション」および「ターゲットアプリケーション」という用語は、コンピューティングデバイス(例えば、サーバデバイス120)上で実行されていて、セキュアなネットワーク環境125内に配置された(例えば、ネットワークプロテクションデバイス140によって保護された)、ソフトウェアアプリケーション130などを意味すると理解されてもよい。
【0052】
クライアントデバイス110は、ソースアプリケーション115とも呼ばれ得る、1つまたは複数のクライアントアプリケーション115を実行するように構成され得る。本明細書で使用する場合、「クライアントアプリケーション」および「ソースアプリケーション」という用語は、プロテクト済みソフトウェアアプリケーション(サーバアプリケーション130など)など(例えば、サービス、インターフェースなど)へのアクセスを必要とする、コンピューティングデバイス(例えば、クライアントデバイス110)上で実行されているソフトウェアアプリケーション115など(例えば、サービス、インターフェースなど)を意味すると理解されてもよい。図示の例では、プロテクト済みサーバアプリケーション130は、クライアントネットワーク704とは異なるネットワーク(例えば、プロテクト済みローカルネットワーク708)にリンクされたコンピューティングデバイス(例えば、サーバデバイス120)上で実行されている。動作中、クライアントアプリケーション115のうちの1つまたは複数は、ターゲットアプリケーション130へのアクセスを(例えば、データ消費、ストレージなどのために)必要とし、および/またはターゲットアプリケーションからの情報を必要とし得る。
【0053】
様々な実施形態において、サーバデバイス120は、プロテクト済みローカルネットワーク708からの発信(outgoing)トラフィックのためにネットワークプロテクションデバイス140によってブロックおよび/またはフィルタリングされる1つまたは複数のネットワークポートを介して、プロテクト済みローカルネットワーク708内で通信することができる。特に、本開示の実施形態によれば、セキュアなネットワーク環境125の外部で動作するクライアント/ソースアプリケーション115は、後述するように、サーバプロキシ220を介してオープンしている単一のポートを介してルーティングしながら、セキュアなネットワーク環境125内のサーバ/ターゲットアプリケーション130への接続をいくつでもオープン可能にすることができる。
【0054】
サーバデバイス120は、様々なデバイスから要求メッセージを受信し、そのようなメッセージに応答して、例えばデータ、ステータス情報などを含む応答メッセージを返すように構成されてもよい。例えば、クライアントデバイス110は、サーバ120へのクエリを使用してデータセットを要求することができ、サーバ120は、クエリを実行し、応答データセットおよび/または他の情報(例えば、セット内にデータが無いことを示すステータスメッセージ)を含む1つまたは複数のパケットを用いてクライアント110に応答することができる。
【0055】
いくつかの実施形態によれば、また
図1Bに示すように、サーバデバイス120はさらに、クライアントプロキシエージェント210に関連する機能を提供することができるが、このような機能については、以下でより詳細に説明する。例えば、サーバプロキシエージェント220は、接続クライアント側から要求を受信することができ、とりわけ、セキュアなネットワーク環境125内からクライアントアプリケーション115と1つまたは複数のサーバアプリケーション122との間の仲介者として、機能することができる。
【0056】
サーバ120およびそのローカル通信ネットワーク708は、とりわけ、セキュアなネットワークインフラストラクチャ125内に配置されてもよく、これは、セキュアなネットワークインフラストラクチャの外部に位置するクライアントまたは他のデバイスとの一部またはすべての通信を禁止するように構成されてもよい。より具体的には、図示のような様々な実施形態では、ネットワークプロテクションデバイス140は、1つまたは複数のポートでの外部通信を禁止するように、および/または各パケットがセキュアなネットワークインフラストラクチャ125の境界を通過するときに各パケットをスキャンして、パケットをブロックするかどうかを決定するように、構成することができる。WAN706を介してセキュアなネットワークインフラストラクチャ125の境界に到達するパケットを含む広域ネットワーク(「WAN」)トラフィック(例えば、インターネットトラフィック、セルラーネットワークトラフィックなど)は、ネットワークトラフィック(例えば、パケット)がセキュアなネットワークインフラストラクチャ125に(例えば、ネットワーク708に進むために)入ることを許可され得るかどうかを決定するよう機能する、ネットワークプロテクションデバイス140を通過するように方向づけされ得る。
【0057】
様々な実施形態において、セキュアなネットワークインフラストラクチャ125は、例えば、セキュアなネットワークインフラストラクチャ125に出入りするデータパケットから成る限定または特定のネットワークトラフィックのみを許可することによってプロテクト動作を実行するように構成された、1つまたは複数のネットワークプロテクションデバイス140(例えば、ゲートウェイ、ファイアウォールなど)を含むことができる。プロテクト動作はさらに、例えば、ハイパーテキストトランスファープロトコル(「HTTP」)接続およびハイパーテキストトランスファープロトコルセキュアド(「HTTPS」)接続のような、より容易に制御されるステートレスで短命の接続を介したデータトラフィックを提供しながら、長命のステートフル接続(例えば、伝送制御プロトコル(「TCP」)接続)の使用および可用性を制限することを含み得る。
【0058】
本開示の実施形態によれば、セキュアなネットワーク環境125外のデバイス(例えば、クライアントデバイス110、クライアントプロキシエージェント210など)とセキュアなネットワーク環境125内のデバイス(例えば、サーバプロキシエージェント220および/またはサーバ120)との間の通信を実施するために、所定のポートを使用するステートレスで短命の接続プロトコルを事前に選択することができる。例えば、いくつかの実施形態によれば、クライアントプロキシエージェント210とサーバプロキシエージェント220との間の通信は、ポート443(例えば、ネットワークプロテクションデバイス140のポート443)上のHTTPSを使用して実施され得る。したがって、この例では、ポート443上のHTTPSは、セキュアなネットワークインフラストラクチャ125の外部にあるデバイス110への指定された通信チャネルとして、事前に選択されてもよい。本開示の範囲から逸脱することなく、任意の適切なプロトコルおよびポートを選択することができる。
【0059】
クライアントデバイス110とクライアントネットワーク704との間の通信のために、任意の適切なプロトコル、例えばTCPを実装することができる。同様に、セキュアなネットワーク環境125内で、サーバデバイス120とサーバローカルネットワーク708との間の通信のために、任意の適切な通信プロトコル、例えば、TCPを実装することができる。言い換えれば、それぞれのローカルネットワーク内の通信のために、ステートフルで長命の接続プロトコルを実装することができ、それによってセキュリティを侵害することなく通信を強化することができる。
【0060】
クライアントプロキシエージェント210は、複数のソースクライアントアプリケーション115とサーバプロキシエージェント220との間の複数の接続を管理するように構成され得る。例えば、1つまたは複数のソースクライアントアプリケーション115は、クライアントプロキシエージェント210およびサーバプロキシエージェント220を介して1つまたは複数のターゲットサーバアプリケーション130との通信を開始することができ、クライアントプロキシエージェント210は、クライアントソースアプリケーション115に関連する接続の各々について、セッション識別子、シーケンス番号、および1つまたは複数のターゲット識別子(例えば、ターゲットポート識別子)のうちの、少なくとも1つを維持するように構成され得る。様々な実施形態において、セッション識別子、シーケンス番号、およびターゲット識別子は、
図2A~2Dに関してより詳細に説明するように、サーバ120および/またはサーバプロキシエージェント220によって生成または提供されてもよい。
【0061】
クライアントプロキシエージェント210は、クライアント110上で実行されているソースクライアントアプリケーション115から受信したメッセージを受信し、再パッケージ化し、リダイレクトするとともに、サーバプロキシエージェント220を介してターゲットサーバアプリケーション130から受信した応答メッセージを処理するように構成され得る。すなわち、クライアントプロキシエージェント210は、クライアントデバイス110およびサーバ120と、その中の各アプリケーションとの間の仲介者として機能するように構成される。例えば、クライアントプロキシエージェント210は、ローカルクライアントネットワーク704上の所定のポート(すなわち、バウンドポート)上のステートフル接続(例えば、TCP接続)を介してクライアントアプリケーション115からメッセージを受信することができる。クライアントプロキシエージェント210は、メッセージを受信したポートに基づいてクライアントアプリケーション115を識別することができる。例えば、クライアントプロキシエージェント210は、1つまたは複数のルックアップテーブル(例えば、データベース、ファイル構造など)を含むことができ、ルックアップテーブルは、クライアントアプリケーション115をバウンドポートにリンクさせ、追加のアプリケーション情報、例えばステートレスで短命のプロトコルを介したサーバプロキシエージェント220への要求の再送信に関連する情報、を含んでいる。そのような情報は、例えばアドレス情報を含むことができ、アドレス情報は、ユニフォームリソースロケータ(「URL」)(例えば、インターネットプロトコルアドレス、ドメインネームサービス(「DNS」)アドレスなど)、および特に、所望のサーバ120およびサーバアプリケーション130に連絡するためのターゲットポートなどである。
【0062】
識別された情報に基づいて、クライアントプロキシエージェント210は、要求に関連する識別された情報の一部または全部を含む、対応する要求をパッケージ化するように構成され得る。例えば、クライアントプロキシエージェント210は、アドレス識別子と、選択されたステートレスショートライフプロトコルと一致するプロトコルスタックとを使用して、送信要求を再パッケージ化するように構成されてもよく、その後、所定のポートを介して、所定のステートレスプロトコルを介して指定されたアドレス(例えば、URL)にメッセージを送信(すなわち、ダイレクト)することができる。再パッケージングおよび再送信については、2A~2Dに関して以下により詳細に説明する。
【0063】
いくつかの実施形態によれば、クライアントプロキシエージェント210は、クライアントデバイス110とは分離されてもよく、クライアントデバイス110とサーバ120との間の通信を実行するための任意の適切なデバイス上で実行されてもよい。任意の数のクライアントプロキシエージェント210、例えば、1つのクライアントプロキシエージェント210が各サーバ120に対して存在してもよく、各サーバは、サーバのローカルネットワーク708への(事前選択されたステートレスプロトコルを介した)仮想ステートフル接続を形成することを意図したサーバアプリケーション130を有する。
【0064】
クライアントプロキシエージェント210はまた、サーバプロキシエージェント220がサーバ120から受信したデータを求めてサーバプロキシエージェント220に定期的にポーリングするように構成されてもよい。例えば、サーバプロキシエージェント220が、クライアントプロキシエージェント210による読み取りを待っているデータがまだ有ることを示す応答を送信した場合、および/または、クライアントプロキシエージェント210が、所定の閾値時間が経過した後(例えば、通信なしで1分後)にサーバプロキシエージェント220にデータを要求しなかった場合、その後、クライアントプロキシエージェント210は、サーバプロキシエージェント220をポーリングして、ポーリング要求を送信することによってデータおよび/またはステータスメッセージを要求し、取得することができる。あるいは、サーバプロキシエージェント220は、現在サーバプロキシエージェント220においてバッファリング中のコンテンツまたは利用可能なコンテンツが無い(例えば、応答データが無い)ことを示すインジケータを含む、応答を送信することができる。いくつかの実施形態では、所定の閾値期間は設定可能であってもよく、例えば、待ち時間、アプリケーション性能などに基づいて設定されてもよい。
【0065】
サーバプロキシエージェント220は、セキュアなネットワーク環境125内から、ネットワークプロテクションアプリケーションまたはデバイス140を介して、1つまたは複数のクライアントプロキシエージェント210によるアクセスを、1つまたは複数のサーバアプリケーション130に供与または提供するように構成され得る。サーバプロキシエージェント220は、本開示の実施形態による機能を可能にする目的で、ネットワークプロテクションデバイス140によってWANトラフィックに対してオープンされた1つまたは複数のポートを介して、1つまたは複数のクライアントデバイス110および/またはクライアントプロキシ210から要求を受信するように構成され得る。
【0066】
様々な実施形態において、要求メッセージを送信するため、また要求メッセージに関連するデータおよび/またはステータス情報を受信ためにセキュアなネットワーク環境125内で、サーバプロキシエージェント220は、ターゲットアプリケーション130を実行するサーバ120への1つまたは複数の接続をオープンするように構成される。例えば、サーバ120上のターゲットポート(すなわち、クライアントプロキシエージェント210が、識別済みクライアントアプリケーション115に基づいて要求メッセージの中で指定したポート)を含むサーバプロキシエージェント220によって、要求(例えば、オープン要求)が受信されると、サーバプロキシエージェント220は、その要求を認証(例えば、ターゲットポートが既知のサーバアプリケーションにリンクされた既知のポートであるかどうかを判定)し、次いで、サーバ120と、ターゲットポートによって識別された関連するターゲットアプリケーション130との、ステートフルで長命の接続をオープンしようと試みるよう構成され得る。
【0067】
クライアントプロキシエージェント210と同様に、サーバプロキシエージェント220は、ターゲットポート(すなわち、クライアントプロキシエージェント210から受信する際の)を、サーバアプリケーション130と、サーバ120およびアプリケーション130に関連する様々な他のアプリケーション情報とにリンクする、1つまたは複数のルックアップテーブル(例えば、データベース、ファイル構造など)を含むことができる。例えば、そのような情報はアドレス情報を含むことができ、アドレス情報は、ユニフォームリソースロケータ(「URL」)(例えば、インターネットプロトコルアドレス、ドメインネームサービス(「DNS」)アドレスなど)と、特に、所望のサーバ120およびサーバアプリケーション130に連絡するためのターゲットポートなどである。
【0068】
サーバプロキシエージェント220は、とりわけ、要求と共に受信した指示されたターゲットポートに基づいて、要求および/またはメッセージが有効であるかどうかを判定することができる。例えば、サーバプロキシエージェント220が、ルックアップにターゲットポートが存在しないと判定した場合、サーバプロキシエージェント220は、要求が無効であると判定することができる。いくつかの実施形態では、ターゲットポートがルックアップテーブルなどにおいてサーバアプリケーション130にマッピングされ、それにより、サーバ/アプリケーションが有効であると識別されたとサーバプロキシエージェント220は判定するかもしれないが、それにもかかわらず、その後のサーバ120への要求は失敗する場合がある。そのような実施形態において、サーバ120は、失敗接続を示すステータスを有するエラー応答メッセージをサーバプロキシエージェント220に送り返すように構成されてもよい。対照的に、サーバ120によって接続の確立が成功すると、サーバプロキシ220は、アプリケーション130とクライアントアプリケーション115との間で現在オープンしているセッションを識別する、セッションIDおよび任意選択的にシーケンス番号で応答するように構成されてもよい。これにより、クライアントプロキシ210に対して、接続が良好にオープンしたことが通知される。
【0069】
サーバプロキシエージェント220は、複数のソースクライアントアプリケーション115とそれ自体との間の複数の接続、ならびに1つまたは複数のターゲットサーバアプリケーション130とそれ自体との間の接続を管理するように構成され得る。例えば、1つまたは複数のソースクライアントアプリケーション115は、クライアントプロキシエージェント210およびサーバプロキシエージェント220を介して、1つまたは複数のターゲットサーバアプリケーション130との通信を開始することができる。サーバプロキシエージェント220は、クライアントソースアプリケーションに関連する接続の各々に対して、セッション識別子、シーケンス番号、および1つまたは複数のターゲット識別子(例えば、ターゲットポート識別子)のうちの少なくとも1つを生成および維持するように構成されてもよく、
図2A~2Dに関してより詳細に説明するように、この情報に基づいてクライアント宛てメッセージを付加するように構成されてもよい。例えば、サーバプロキシエージェント220は、オープン要求に応答して、一意のセッション識別子および任意選択でランダムな初期シーケンス番号をセキュアに生成するように構成され得る。
【0070】
サーバプロキシエージェント220はさらに、クライアントデバイス110および/またはソースクライアントアプリケーション115向けのデータをバッファリングするように構成され得る。例えば、ソースクライアントアプリケーション115によって開始されたデータ要求に対する1つまたは複数の応答メッセージは、クライアントプロキシエージェント210からの通信(例えば、ポーリング要求)を待ちながら、サーバプロキシエージェント220にバッファリングされてもよい。このようなバッファリングは、サーバプロキシエージェント220が、クライアントプロキシエージェント210が通信を行っていないことを認識したときに(例えば、4分というような所定の時間内に)、ターゲットサーバアプリケーション130からデータメッセージを受信すると実行され、また、サーバプロキシエージェント220のストレージデバイス(例えば、ランダムアクセスメモリ、パーマネントストレージなど)および/またはサーバプロキシエージェント220がアクセス可能な外部ストレージデバイスを用いて実現され得る。
【0071】
サーバプロキシエージェント220は、ターゲットサーバアプリケーション130からのメッセージを受信し、再パッケージ化し、クライアントプロキシエージェント210に送信するように構成され得る。クライアントプロキシエージェント210と同様に、サーバプロキシエージェント220は、ターゲットサーバアプリケーション130から受信したデータを、クライアントプロキシエージェント210への送信に適した形式に再パッケージ化することができる。サーバプロキシエージェント220はさらに、例えば、ターゲットサーバアプリケーション130からの再パッケージ化されたメッセージをクライアントプロキシ210において認証できるようにするために、発信データおよび状態データを含む、ターゲットサーバアプリケーション130によって確立された各セッションの情報を維持するように構成され得る。
【0072】
クライアントプロキシエージェント210およびサーバプロキシエージェント220の各々は、ネットワークプロテクションデバイス140をトラバースするために、所定のポートを介して所定のステートレスプロトコルによって通信するように構成され得る。例えば、HTTPおよび/またはHTTPSは、プロキシエージェント220、210に連絡するためのインターネットプロトコルアドレス指定(例えば、IPv4、IPv6など)を使用して、ステートレスプロトコルとして実装されてもよい。所定のポートは、例えば、HTTPポート80の場合やHTTPSの場合であれば、ポート443であってもよい。当業者であれば、他のアドレス指定スキームが(例えば、ドメインネームサービス(「DNS」)などを使用して)実装され得ること、およびステートレスプロトコルのデフォルトポートは、例えばセキュリティ目的で、必要に応じて変更され得ることを承知であろう。
【0073】
選択された短命のステートレスプロトコルに関連するデータパケット構造は、セキュアなネットワーク環境125内の1つまたは複数のサーバ120上のアプリケーション130向けの様々なデータを内包するヘッダおよびボディ部分を含むことができる。したがって、クライアントプロキシエージェント210およびサーバプロキシエージェント220は、選択された短命のステートレスプロトコルを介して送受信されるデータパケットのヘッダおよびボディ部分を操作し修正するように構成され得る。そのような修正は、以下で詳細に説明する。
【0074】
本開示の例示的な実施形態は、1つのサーバデバイス120、1つのクライアントデバイス110、1つのクライアントプロキシエージェント210、および1つのサーバプロキシエージェント220を有するシステムに関して説明されているが、任意の数のそのようなデバイス、エージェント、アプリケーションなどが実装されてもよい。例えば、複数のサーバデバイス120は、セキュアなネットワーク環境125内の様々なサーバアプリケーション130で構成されてもよく、一方、複数のクライアントデバイス110は、セキュアなネットワーク環境125の外部から複数のサーバデバイスのうちの1つまたは複数に、(例えば、所望のアプリケーション130がどこにあるかに応じて)アクセスするように構成されてもよい。このような例では、他の変形例の中でも、各クライアントデバイス110に対応する1つのクライアントプロキシエージェント210と、各サーバ120に対応する1つのサーバプロキシエージェント220とが実装されてもよい。
【0075】
図2A~2Dは、本発明の実施形態を実施するためのメッセージングシーケンスの具体的な例を示すスイムレーン図である。
図2A~2Dの各スイムレーン図は、クライアントプロキシエージェント210およびサーバプロキシエージェント220を介したソースクライアントアプリケーション115とターゲットサーバアプリケーション130との間の通信のフェーズを表す。スイムレーン図に関連して、
図3Aは、本開示の実施形態によるクライアント側の方法300の一例を示すフローチャートであり、
図3Bは、本開示の実施形態によるサーバ側の方法350の一例を示すフローチャートである。
【0076】
図2Aは、本開示の実施形態による、ソースクライアントアプリケーション115とターゲットサーバアプリケーション130との間の仮想接続のための接続開放シーケンスを示すスイムレーン
図200であり、ターゲットアプリケーション130は、セキュアなネットワーク環境125内に位置するサーバ120上で実行されている。ソースクライアントアプリケーション115は、クライアントプロキシエージェント210によって受信されるオープンメッセージ(メッセージ251)を介して、ソースアプリケーション115とクライアントプロキシエージェント210との間の接続のオープンを開始することができる(
図3Aの動作302)。いくつかの実施形態では、オープンメッセージ251は、クライアントローカルネットワーク704を介して(例えば、TCP接続を介して)、送受信されてもよい。サーバアプリケーション識別のためのサーバプロキシエージェント220宛てのターゲット識別子(例えば、ターゲットポート識別子)を含むオープンメッセージ251は、上述したように、要求を行っているクライアントアプリケーション115を識別する機能を有し得るクライアントプロキシエージェント210の所定のポートに送信される。例えば、ソースアプリケーション115は、ターゲットポート識別子1001を用いて、クライアントプロキシエージェント210に対するTCPオープン要求251をポート1000上で開始することができる。
【0077】
オープンメッセージ251を受信すると、クライアントプロキシエージェント210は、例えば、クライアントプロキシエージェント210にメッセージを送信したポートに基づいて、(例えば、アプリケーション/ポートのリンケージまたはマッピングを含む、ルックアップテーブルなどに対してクエリを実行することによって)、ソースアプリケーション115を識別することができる(
図3Aの動作304)。例えば、メッセージが送信されたポート1000は、ルックアップテーブルに見られるように、クライアントデバイス110上で実行されている第1クライアントアプリケーション115「foo」にリンクされてもよい。
【0078】
示した例では、クライアントプロキシエージェント210はまた、例えば、オープンメッセージに含まれるターゲットポート識別子(この例ではターゲットポート1001)に基づいて、ターゲットサーバアプリケーション130を識別しようと試みる(動作252および304)。クライアントプロキシエージェント210は、要求に含まれるターゲットポート識別子に基づいて、クライアントソースアプリケーション115が接続したいターゲットサーバアプリケーション130を決定するためにルックアップテーブルにクエリを行うことができる。例えば、クライアントプロキシエージェント210は、ポート1001を検索し、例えばアドレス情報(例えばURL)、ターゲットサーバアプリケーション名(例えば「bar」)、データタイプ、予想される応答時間など、ターゲットアプリケーション130に関連する情報を判定または発見することができる。
【0079】
クライアントプロキシエージェント210がルックアップテーブル内でサーバアプリケーション130を識別することができない場合(
図3Aの動作304のNo)、クライアントプロキシエージェント210は、中でも、クライアント110の要求側クライアントアプリケーション115に、エラーメッセージを返すように構成されてもよい(
図3Aの動作306、
図2Aには図示なし)。例えば、クライアントプロキシエージェント210は、ルックアップテーブル内でポート1001を検索し、結果が存在しないという決定をすることができる。結果が存在しないことに基づいて、クライアントプロキシエージェント210は、オープン要求が無効であると判断することができ、ソースクライアントアプリケーション115に対してエラーメッセージ306で応答することができる。
【0080】
ターゲットサーバアプリケーション130を識別して(
図3Aの動作304のYes)、例えばルックアップテーブルから、アドレス情報を含む追加情報を取得すると、クライアントプロキシエージェント210は、システム100で使用するために選択され実装されたステートレスプロトコル(例えば、HTTP、HTTPSなど)を介して、オープンメッセージ251を、対応するオープン要求253として再パッケージ化することができる。例えば、クライアントプロキシエージェント210は、ステートレスプロトコルを介してサーバプロキシエージェント220のアドレス(例えば、URL)に送信されるべきHTTPS POST/オープン要求253を準備することができる。そうするために、クライアントプロキシエージェント210は、以前にクライアントプロキシ210によって実行されたソースアプリケーション115およびターゲットサーバアプリケーション130の識別に基づいて、ソースポート識別子および/またはターゲットポート識別子をPOSTメッセージ(例えば、POSTメッセージのヘッダ)に付加することができる。
【0081】
上記で使用した例をそのまま続けて説明すると、オープンメッセージ251は、第1ソースアプリケーション115がポート1000を介して送信したもので、ターゲットポート表示1001を含んでおり、このメッセージは、HTTPS POST要求253に変換されて、(例えば、ネットワークプロテクションデバイス140の)ポート443に送信されてもよく、このメッセージはまた、要求251に含まれたターゲットサーバアプリケーションポート1001に基づいてルックアップテーブルから識別されたアドレス(例えば、URL)にアドレス指定される。いくつかの実施形態では、ソースポート識別子(例えば、ポート1000)は、HTTPS POST253のヘッダに付加されてもよい。特に、ソースポート識別子およびソースポート識別子の変更は、システム100の様々な実施形態において実施されてもされなくてもよい。
【0082】
選択されたステートレスで短命のプロトコルに準拠するフォーマットに再パッケージ化されると、クライアントプロキシエージェント210は、ターゲットサーバアプリケーション130に対応する識別済みアドレスにオープン要求を送信することができる(メッセージ253で、
図3Aには図示なし)。例えば、オープン要求253は、ポート443上でHTTPSを介して上記で識別されたURLまたはIPアドレスに送信されてもよく、それによって、ネットワークプロテクションデバイス140の通過と、セキュアなネットワーク環境125内に配置されたサーバプロキシエージェント220による受信とを可能にする。
【0083】
いくつかの実施形態によれば、および上述したように、ネットワークプロテクションデバイス140は、ポート転送用に構成されたゲートウェイおよび/またはルータを含むことができ、それにより、本明細書に記載の機能および動作をサポートする1つ(または複数)の特定のポート上でメッセージまたは要求を受信すると、例えば、特定のポートがデフォルトでHTTPSポート443(または他の所定のポート)になり、ゲートウェイおよび/またはルータは、処理のためにメッセージまたは要求をサーバプロキシエージェント220に自動的にリダイレクト(すなわち、転送)することができる。
【0084】
特別に構成されたポートを介してネットワークプロテクション140を通過し、ステートレスで短命のプロトコルを使用することができるオープン要求253を受信すると(
図3Bの動作352)、サーバプロキシエージェント220は、オープン要求253のヘッダで指定されたターゲットポートが、セキュアなネットワーク環境125内にあるサーバ130の有効なターゲットポートであるかどうかを判定することができる(動作254)(
図3Bの動作354)。例えば、クライアントプロキシエージェント210と同様に、サーバプロキシエージェント220はルックアップテーブルを使用すること、またはターゲットポートとターゲットサーバアプリケーション130および他の関連情報とをリンクまたは他の様態で関連付ける情報を含む、他の適切なデータ構造を使用すること、ができる。上記の例を進めると、ターゲットポート識別子「1001」は、サーバ120上のターゲットサーバアプリケーション130にリンクされてもよく、サーバプロキシエージェント220は、サーバ120においてターゲットサーバアプリケーション130とコンタクトするため、またはインターフェース接続するための、アドレス指定情報などをルックアップテーブルから取得することができる。
【0085】
サーバプロキシエージェント220が、オープン要求のヘッダに含まれるターゲットポート識別子に基づいてターゲットサーバアプリケーション130および/またはターゲットサーバ120を識別できない場合(例えば、動作254の間にルックアップテーブルにターゲットポートのエントリが無い場合)(
図3Bの動作354のNo)、サーバプロキシエージェント220は、ステートレスで短命のプロトコルを介して、不適切な要求を示すエラー応答(メッセージ255)をクライアントプロキシエージェント210(
図3Aと3Bには図示なし)に送信することができる(
図3Bの動作356)。例えば、クライアントプロキシエージェント210とサーバプロキシエージェント220との間の通信用のステートレスで短命のプロトコルとしてHTTPまたはHTTPSが実装されている場合、サーバプロキシエージェント220は、HTTP404エラー応答を返して、ターゲットサーバアプリケーション130および/またはターゲットサーバ120が認識されなかったこと、または有効でないこと、を示すことができる。
【0086】
一方、サーバプロキシエージェント220が、オープン要求のヘッダに含まれるターゲットポート識別子に基づいて、ターゲットサーバアプリケーション130および/またはターゲットサーバ120を識別した場合(
図3Bの動作354のYes)、サーバプロキシエージェント220は、サーバアプリケーション130とのステートフルで長命の接続(例えば、TCP)を確立することができる(メッセージ256、
図3Bには図示なし)。例えば、サーバプロキシエージェント220は、サーバアプリケーション130が存在するサーバ120に対してTCPオープンメッセージを発行することができる。サーバプロキシエージェント220は、クライアントプロキシエージェント210からのオープン要求のヘッダに提供されたターゲットポート識別子を識別している間にルックアップで発見された情報に基づいて、サーバ120をアドレス指定することができる。当業者であれば、サーバプロキシエージェント220とサーバアプリケーション130との間の通信には任意の適切なプロトコルが使用されること、およびTCPは単に例として挙げていること、を理解されるであろう。
【0087】
サーバプロキシエージェント220とサーバアプリケーション130との間で接続の確立が成功すると、サーバアプリケーション130および/またはサーバ120は、オープンステータスメッセージで応答することができる(メッセージ257、
図3Bのステップ358)。オープンステータスメッセージ257は、ステータスならびに追加情報含むことができ、追加情報は例えば、サーバ120上のターゲットサーバアプリケーション130との現行セッション用のサーバ120のターゲットポートを示す新しい仮想接続(「vcon」)ターゲットポート識別子である。例えば、接続の確立に成功すると、サーバ120は、TCP ACK(例えば、メッセージ257)をサーバプロキシエージェント220に送信することができ、TCP ACKのヘッダに含まれているものは、サーバ120によって、例えば1888のような新しい通信ターゲットポートに付加されてもよく、それによって成功を示し、ターゲットサーバアプリケーション130と通信する際に参照される新しいvconポートを提供する。
【0088】
これに応えて、サーバプロキシエージェント220は、所望の識別子、例えばクライアントアプリケーション115からターゲットサーバアプリケーション130への確立された接続に対応する一意のセッション識別子、を生成するが(動作359)、この一意のセッション識別子は、ターゲットサーバアプリケーション130とソースクライアントアプリケーション115との間の通信全体を通して維持される。例えば、サーバプロキシエージェント220は、一意のセッション識別子をグローバルな一意の識別子(「GUID」)としてランダムに生成することができる。さらに、サーバプロキシエージェント220は、セッションの初期シーケンス番号としてランダムシーケンス番号(例えば、ランダム整数)をセキュアに生成することができる。例えば、サーバプロキシエージェント220は、例として乱数生成器に供給される初期シード値に基づいて、セッション番号をランダムに生成することができる。さらなる実施形態によれば、ランダムシーケンス番号は、ターゲットサーバアプリケーション130によって生成されてもよい。さらなる実施形態によれば、サーバプロキシエージェント220のオペレーティングシステムに関連付けられた乱数生成器(例えば、セキュアな乱数生成器)を、乱数生成用に使用することができる。そのような実施形態では、エントロピーは、例えば、プロセッサ温度、ユーザインタラクションなどを介して含まれ得る。
【0089】
次いで、サーバプロキシエージェント220は、一意のセッション識別子、シーケンス番号を格納し、また、いくつかの実施形態によれば、以下でより詳細に説明するように、今後の参照のためにvconターゲット識別子を格納する。
【0090】
一意のセッション識別子とシーケンス番号の生成および格納に続いて、サーバプロキシエージェント220は、サーバアプリケーション130/サーバデバイス120への接続が成功したことを示すオープンステータス応答(メッセージ258)を作成し、ステートレスプロトコルを介してクライアントプロキシエージェント210にメッセージを送信することができる(
図3B、動作358)。次いで、サーバプロキシエージェント220は、一意のセッション識別子、シーケンス番号を含むことができ、また、いくつかの実施形態によれば、オープンステータス応答258においてvconターゲット識別子を含むことができる。このオープンステータス応答258は、システム100内で使用するために選択されたステートレスで短命のプロトコルに基づいてパッケージ化され得る。例えば、一意のセッション識別子およびシーケンス番号を含むように、HTTPS200「OK」メッセージのヘッダが付加されてもよい。このようにして、HTTPS200「OK」メッセージは、ステートレスで短命のプロトコルを介してクライアントプロキシエージェント210に付加される。
【0091】
クライアントプロキシエージェント210は、オープンステータス応答258を受信する(
図3Aの動作308)。メッセージステータスが成功を示していると判定すると、クライアントプロキシエージェント210は、以前に確立されたステートフルで短命の接続プロトコル(例えば、TCP)を介して、一意のセッション識別子と、シーケンス番号と、実装されている場合にはvconターゲットポート識別子とを含む、成功したオープンステータスを示す情報を、ソースクライアントアプリケーション115に送信259を行うことができる(
図3Aには図示なし)。ソースクライアントアプリケーション115は、成功を示すオープンステータスメッセージを受信すると、一意のセッション識別子と、シーケンス番号と、実装されている場合にはvconターゲットポート識別子とを使用して、サーバアプリケーション130との通信を開始することができる。
【0092】
図2Bは、本開示の実施形態によるデータ要求検証シーケンスの一例を示すスイムレーン
図201である。特に、
図2Bのイベント、動作、およびメッセージは、
図2Aに関して強調されているように、通信チャネルの接続が成功した後に実行される。
【0093】
通信チャネルが設定された後、ソースクライアントアプリケーション115は、ターゲットサーバアプリケーション130へデータメッセージ261を通信することができるように、クライアントプロキシエージェント210へ、1つまたは複数のデータメッセージ261を送信することができる(
図3Aの動作310)。例えば、ソースクライアントアプリケーション115は、データ、これは例えば、ソースクライアントアプリケーション115によって選択されたデジタル証明書および/またはその他のデータといった識別データ、を準備することができ、ソースクライアントアプリケーション115は、その(例えば識別情報などを含む)データを、以前に確立されたステートフルで長命の接続を介して、クライアントプロキシエージェント210へ送信することができる。
【0094】
次に、クライアントプロキシエージェント210は、ソースクライアントアプリケーション115から受信したデータメッセージ261を、サーバプロキシエージェント220へ送信するために、再パッケージ化してデータ要求にする。データは、クライアントプロキシエージェント210とソースクライアントアプリケーション115との間の通信用に使用される事前選択されたステートレスで短命のプロトコルに従って、再パッケージ化され得る。様々な実施形態では、クライアントプロキシエージェント210における再パッケージ化は、例えば、データパケット(例えば、ヘッダへの付加)と併せて、少なくとも、以前に取得した一意のセッション識別子と、所定量(例えば、1、2、10、15など)だけインクリメントされたシーケンス番号とを含み得る。いくつかの実施形態によれば、シーケンス番号は、サーバプロキシエージェント220に知られている値だけ、または期待されている値だけ、インクリメントされてもよい。あるいは、シーケンス番号を、最初はランダムな値でインクリメントすることができ、一旦確立すると、通信セッションの存続期間を通して使用することができる。いくつかの実施形態によれば、インクリメント値は、セッションIDによって定義されるようにセッションの確立が成功したときに、例えば、クライアントプロキシ210によってサーバプロキシ220へ、あるいはその逆へ、伝達されてもよい。
【0095】
いくつかの実施形態では、クライアントプロキシエージェント210は、ソースクライアントアプリケーション115から受信したデータを、例えば、HTTPS/データ要求262のボディに挿入し、HTTPS/データ要求262のヘッダを変更して、おそらく特に、一意のセッション識別子とインクリメント済みのシーケンス番号とを含むフィールド/情報を含めることができる。特に、いくつかの実装形態では、vconターゲットポート識別子も、再パッケージ化されたデータ要求のヘッダに含まれ得る。
【0096】
様々な実施形態において、クライアントプロキシエージェント210は、その後、以下でより詳細に説明する検証目的でサーバプロキシエージェント220から受信され得る後続の通信と比較するために、インクリメント済みシーケンス番号をインクリメントして保存する。
【0097】
次いで、クライアントプロキシエージェント210は、ネットワークプロテクションデバイス140内のオープンポートを介して、ステートレスで短命のプロトコルによってデータ要求262をサーバプロキシエージェント220に送信することができる(
図3A、動作310)。例えば、セッション識別子およびインクリメント済みシーケンス番号を含む再パッケージ化されたデータ要求262は、HTTPSを介してポート443に送信され、それによってネットワークプロテクションデバイス140を通過し、サーバプロキシエージェント220に到着し得る。
【0098】
クライアントプロキシ210からデータ要求262を受信すると(
図3Bの動作360)、次に、サーバプロキシエージェント220は、263において、一意のセッション識別子に基づいて、およびいくつかの実施形態ではインクリメント済みシーケンス番号に基づいて、データ要求262を認証することを引き受ける。上述したように、様々な実施形態において、サーバプロキシエージェント220は、今後の参照のためにすべての一意のセッション識別子および関連するシーケンス番号を格納する。そのような実施形態では、データ要求262を受信すると、サーバプロキシエージェント220は、一意のセッション識別子およびシーケンス番号を取得するためにデータ要求262のヘッダを検査または処理することができ、次いで、要求に含まれるセッション識別子が、サーバ120に関連付けられた現行セッションの既知のセッション識別子であるかどうかを判定することができる。
【0099】
セッション識別子が、サーバプロキシエージェント220によって認証され得ない場合(例えば、は現在アクティブなセッション識別子の中に無い)、データ要求262は、失敗したデータ要求としてフラグが立てられ、サーバプロキシエージェント220は、エラー応答264を、クライアントプロキシエージェント210に送り返すことができる(
図3Aと3Bには図示なし)。次いで、クライアントプロキシエージェント210は、例えば、セッションが不明であるか、サーバ120で期限切れになっているために、通信が失敗したことを、ソースクライアントアプリケーション115および/またはクライアントデバイス110に通知することができる。その後、ソースクライアントアプリケーション115は、必要に応じて、ターゲットサーバアプリケーション130との接続および通信のチャネルを再確立するための適切な動作を行うことができる。
【0100】
いくつかの実施形態によれば、サーバプロキシエージェント220がシーケンス番号および/またはセッション識別子を認証することができず、クライアントプロキシエージェント210が、応答として、失敗したデータ要求を示すエラー応答を受信すると、クライアントプロキシエージェント210は、ソースクライアントアプリケーション115によって確立されたステートフルで長命の接続をクローズすることができる。あるいは、クライアントプロキシエージェント210は、ソースクライアントアプリケーション115に、データ要求262の再送信を所定回数試行させることができる。
【0101】
様々な実施形態において、要求検証処理263のさらなる機能として、データ要求262と共に受信したセッション識別子が、ターゲットサーバアプリケーション130との保留中のセッションに対応する既知のセッション識別子と一致するとき、サーバプロキシエージェント220は次に、データ要求262と共に受信したシーケンス番号を、そのセッション識別子に関連付けられた以前に格納したシーケンス番号と比較して、受信したシーケンス番号が、所定の値(例えば、1)だけインクリメントされた格納済みシーケンス番号と一致するかどうかを判定することができる。所定の値(例えば、1)だけインクリメントされた格納済みシーケンス番号が、データ要求262で受信したシーケンス番号と一致しない場合、データ要求262は、失敗したデータ要求としてフラグが立てられ、エラー応答264がクライアントプロキシエージェント210に送信される。所定の値だけインクリメントされた格納済みシーケンス番号が、データ要求262とともに受信したシーケンス番号と一致する場合、データ要求262は認証され、サーバプロキシエージェント220は、
図2Cにおいて強調されているように、データ要求262の処理を進めることができる。
【0102】
図2Cは、本開示の実施形態によるデータトランザクションシーケンスの一例を示すスイムレーン
図201である。
図2Cの下方約1/3に示すように、データ要求262の検証が成功した後、クライアントプロキシエージェント210は、サーバプロキシエージェント220とサーバ130との間に以前に確立されたステートフルで長命な接続を介して、また実装されている場合はターゲットサーバアプリケーション130の指示されたvconターゲットポート上で、対応するデータメッセージ266をターゲットサーバアプリケーション130に送信することができる。
【0103】
次いで、ターゲットサーバアプリケーション130は、ターゲットサーバアプリケーション130によって定義された規則および命令に従ってデータ要求266を処理して、要求者(例えば、クライアントアプリケーション115)に応答データを送信または提供するかどうか、および/またはどのデータを提供するか、を決定することができる。例えば、ターゲットサーバアプリケーション130は、デジタル証明書のデータ要求を含むメッセージ266を受信すると、例えば、データメッセージ266に含まれるデータに基づいて、要求者がそのような証明書を受信する権利があることを認証するステップを始めることができる。
【0104】
ターゲットサーバアプリケーション130が、ソースクライアントアプリケーション115が無効な要求を行ったと判定した場合、ターゲットサーバアプリケーション130は、その要求が無効であることを示すステータスメッセージ270を、ステートフルで長命の接続を介してサーバプロキシエージェント220へ送信することができる。次いで、サーバプロキシエージェント220は、所定のステートレスで短命のプロトコル(例えば、HTTPS)に従って無効要求ステータスメッセージ270を再パッケージ化し、再パッケージ化されたステータス応答271をクライアントプロキシエージェント210に送信することができる。例えば、そのようなステータス応答は、HTTP400無効な要求応答として実装されてもよい。様々な実施形態において、ステータスメッセージ270は、セッション識別子、好ましくは、所定の値だけインクリメントされたシーケンス番号を含むように再パッケージ化され、これは、例えば、ステータスメッセージ271のヘッダに付加されてもよく、それにより、クライアントプロキシエージェント210は、どのソースクライアントアプリケーション115が無効な要求(例えば、261)を発行したかを判定することができる。
【0105】
一方、データメッセージ266内の要求が有効なデータ要求であるとターゲットサーバアプリケーション130が判定した場合、ターゲットサーバアプリケーション130は、その規則および命令の中に規定されるようにデータ要求を処理することができる。上記の例を進めると、例えばデータメッセージ266に含まれるデータに基づいて、サーバアプリケーション130がデジタル証明書要求は有効であると判断した場合、ターゲットサーバアプリケーション130は証明書を生成または取得し、それをデータメッセージ270に含めるかまたは再パッケージ化することによって、証明書をサーバプロキシエージェント220に送信することができる。サーバプロキシエージェント220への送信は、サーバアプリケーション130とサーバプロキシエージェント220との間に以前に確立されたステートフルで長命の接続を介して行われてもよい。
【0106】
サーバアプリケーション130からデータメッセージ270を受信すると、サーバプロキシエージェント220は、事前選択されたステートレスで短命のプロトコルに基づいて、データメッセージ270を再フォーマットまたは再パッケージ化して、対応するデータ応答271にするよう構成される。例えば、サーバプロキシエージェント220は、まず、データ要求(例えば、262)に関連付けられたセッション用に以前に格納したシーケンス番号を取得し、次いで、そのシーケンス番号を所定の値(例えば、1)だけインクリメントする。次いで、サーバプロキシエージェント220は、HTTPSデータ応答を生成し、HTTPSデータ応答に、データ要求に関連付けられた一意のセッション識別子およびインクリメント済みシーケンス番号を含める(例えば、そのヘッダに追加する)ことができる。さらに、HTTPSデータメッセージのボディは、ターゲットサーバアプリケーション130から返されたデジタル証明書および/または他のデータを含むように付加されてもよい。あるいは、いくつかの実施形態によれば、サーバプロキシエージェント220は、ステートレスプロトコルを介してオープンステータス応答258の後に生成された応答を有する一意のセッション識別子および/またはインクリメント済みシーケンス番号を含まない場合もある。そのような実施形態(ならびに任意選択的に他の実施形態)では、サーバプロキシエージェント220は、受信した要求ごとに1つだけ応答を生成することができ、したがって、クライアントプロキシエージェント210は、既知のセッション識別子と、セッションが既に確立されているターゲットサーバアプリケーション130から受信した応答ごとの既知のインクリメント値とに基づいて、セッション識別子および/または一意のシーケンス識別子を暗黙的に識別することができる。
【0107】
いくつかの実施形態によれば、データ要求メッセージ266に応答して、ターゲットサーバアプリケーション130は、ソースクライアントアプリケーション115向けの複数の応答データメッセージ270を生成することができる。ターゲットサーバアプリケーション130は、クライアントプロキシエージェント210を介してソースクライアントアプリケーション115に送信するために、複数の応答メッセージをサーバプロキシエージェント220に提供することができる。そのような実施形態では、データメッセージ271は、複数のメッセージカウントに対応するメッセージカウントを含むことができ(例えば、ヘッダ、ボディなどに付加される)、複数のメッセージは、サーバプロキシエージェント220においてバッファリングされてもよく、ソースクライアントアプリケーション115向けとされてもよい。例えば、ソースクライアントアプリケーション115によって開始されたデータ要求またはクエリは、ターゲットサーバアプリケーション130に、複数のデータセットおよび/または1つのデータセットを検索させることができ、データセットはサイズが大きく、送信するためにパースを行って、より小さいピースまたはパケットにすることが必要である。次いで、データメッセージ271は、クエリに応答して、ソースクライアントアプリケーション115向けのデータセットおよび/またはパケットの数を示すようにフォーマットされ得る。
【0108】
図2Cの例に示すように、サーバプロキシエージェントは次に、例えば、ステートレスで短命のプロトコルを介して、かつ特別なポート(例えば、443)などを介して、またはネットワークプロテクションデバイス140を介して、クライアントプロキシエージェント210に、再パッケージ化されたステータス/データ応答271を提供または送信することができる(
図3Bの動作362)。
【0109】
データ/ステータス応答271を取得または受信すると(
図3Aの動作314)、クライアントプロキシエージェント210は、通信のセキュリティを確保するため、また意図したソースクライアントアプリケーション115を判定および/または認証するために、データ/ステータス応答271を認証するように構成され得る。データ/ステータス応答271の検証は、例えば、クライアントプロキシエージェント210に格納された既知の値との比較によりデータステータス応答271のヘッダに提供された一意のセッション識別子およびシーケンス番号をチェックすることによって、実行され得る。クライアントプロキシエージェント210は、データステータスメッセージ271のヘッダから一意のセッション識別子を抽出し、セッション識別子がクライアントプロキシサーバ210にとって既知であるかどうかを(例えば、アクティブなセッション識別子をルックアップすることによって)決定することができる。ルックアップに基づいてセッション識別子がクライアントプロキシサーバエージェント210にとって未知である場合、応答は無効として処理され得る(例えば、廃棄)。一方、セッション識別子がクライアントプロキシサーバエージェント210にとって既知である場合、クライアントプロキシエージェント210は、いくつかの実施形態では、その後、データ/ステータスメッセージ271とともに提供されるシーケンス番号を抽出することができ、また、シーケンス番号をクライアントプロキシエージェント210において以前に格納したシーケンス番号と比較して、シーケンス番号が所定の値だけ適切にインクリメントされたかどうかを判定することができる。シーケンス番号が所定の値だけインクリメントされると、データ/ステータス応答271が認証され、次いで、以前に確立されたステートフルで長命の接続によってソースクライアントアプリケーション115に送信され得る(データ/ステータスメッセージ273、
図3Aには図示なし)。
【0110】
あるいは、サーバプロキシエージェント220がセッション識別子および/またはインクリメント済みシーケンス番号を含まない実施形態によれば、クライアントプロキシエージェント210は、データ/ステータス応答271を取得または受信すると、サーバプロキシエージェント220によって確立された信頼できるセッションに基づいて、クライアントデバイス110において、関連するソースアプリケーション115に応答を転送することができる。
【0111】
クライアントプロキシエージェント210が、(例えば、データ/状況メッセージ271のヘッダ内の命令に基づいて)ソースクライアントアプリケーション115宛ての複数のメッセージを示すデータ/ステータス応答271を受信した場合(
図3A、動作314)、または、クライアントプロキシエージェント210とサーバプロキシエージェント220との間の通信が所定の閾値期間(例えば、4分後にタイムアウト)に無かった場合には、クライアントプロキシエージェント210は、ステートレスで短命のプロトコルを介してサーバプロキシエージェント220にポーリング要求276を送信して(
図3A、3Bには図示なし)、ステートレスで短命の接続を介したソースクライアントアプリケーション115のキュー内の次のメッセージに対応する、後続のデータ/ステータスメッセージ278をサーバプロキシエージェント220に送信させることができる。例えば、クライアントプロキシエージェント210は、サーバプロキシエージェント220から、ヘッダがソースクライアントアプリケーション115向けの2つのメッセージを示しているメッセージを受信することができる。サーバプロキシエージェント220からの最初のメッセージの受信に続いて、クライアントプロキシエージェント210は、サーバプロキシエージェント220に、HTTPS/poll要求(メッセージ276)を送信することができる。これに応えて、次にサーバプロキシエージェント220は、ソースクライアントアプリケーション115向けの第2メッセージを送信することができる(例えば、
図3Bの動作362と同様)。後続のデータ/ステータスメッセージ278の各々は、初期データ/ステータスメッセージ271に関して上述したもの(例えば、272)と同様の方法で認証されてもよく、検証時に、データは、ステートフルな長命の接続を介してソースクライアントアプリケーション115に送信される(メッセージ282)。あるいは、クライアントプロキシエージェント210用にデータメッセージが現在バッファリングされていない場合、サーバプロキシエージェント220は、ポーリング要求ポーリングに対するポーリング応答において「ノーコンテンツ」インジケータを送信することができる。
【0112】
図2Dは、本開示の実施形態による接続クロージングシーケンスを強調するスイムレーン
図201である。本明細書で説明するように、ソースクライアントアプリケーション115が、ネットワークプロテクション140による新規の通信チャネルを介して、セキュアなネットワーク125内のターゲットサーバアプリケーション130との所望のデータトランザクションを完了すると、クライアントアプリケーション115は、クライアントアプリケーション115とクライアントプロキシエージェント210との間で以前に確立されたステートフルで長命の接続を通したクローズ接続メッセージ261を介して、クライアントプロキシエージェント210との接続をクローズすることができる。クローズ接続メッセージ261を受信すると、クライアントプロキシエージェント210は、ソースクライアントアプリケーション115とのステートフルで長命の接続をクローズすることができ、次いで、サーバプロキシエージェント220に送信するためのステートレスで短命のプロトコルを介した送信を求めるクローズ要求262を準備することができる。セキュアでないネットワーク704と706のクライアントプロキシエージェント210によって用意されたクローズ要求は、例えば、一意のセッション識別子と、所定の値だけインクリメントされた最新のシーケンス番号をヘッダに含めることができる。
【0113】
セキュアなネットワーク環境125内のサーバプロキシエージェント220は、クローズ要求262を受信すると、例えば上述したように(すなわち、セッション識別子と、以前に格納した値との適合性を保証するために任意選択的にシーケンス番号とを確認することによって)、クローズ要求262を認証することができる(動作263)。クローズ要求が認証されると、サーバプロキシエージェント220は、その後、サーバアプリケーション130にクローズ接続メッセージを発行することができ(メッセージ266)、それによって、サーバプロキシエージェント220とターゲットサーバアプリケーション130との間で以前に確立されたステートフルで長命の接続がクローズすることになる。
【0114】
サーバプロキシエージェント220が、クローズ要求262を認証できない場合(例えば、未知のセッション識別子、無効なシーケンス番号など)、上述したように、不正な要求であることを示すエラー応答(図示せず)を、クライアントプロキシエージェント210に送ることができる。対照的に、接続の検証およびクロージングが成功した場合、クローズステータス応答267は、例えば、ステートレスで短命のプロトコルを介して送信され得る。様々な実施形態において、クローズステータスメッセージ267は、例えば、クローズステータスメッセージ267のヘッダに、セッション識別子およびインクリメント済みシーケンス番号を含むことができる。
【0115】
図4は、本技術の実施形態と一致するシステムおよび方法を実施するために使用され得る一例のコンピューティングシステム400のブロック図である。他の構成要素および/または配置も使用することができる。いくつかの実装形態では、コンピューティングシステム400を使用して、とりわけ、クライアントデバイス110、サーバデバイス120、クライアントプロキシエージェント210、サーバプロキシエージェント220、およびネットワークプロテクションデバイス140など、本開示の実施形態の様々なコンポーネントを少なくとも部分的に実装することができる。いくつかの実装形態では、コンピューティングシステム400と同様の一連のコンピューティングシステムは、それぞれ専用のハードウェアでカスタマイズされてもよいし、および/またはコンポーネントを実装するための専用サーバとしてプログラムされてもよく、これらは、ネットワーク404を介して互いに通信することができ、ネットワークは、ネットワーク704、706、708のうちの1つまたは複数であるか、または1つまたは複数に接続してもよい。
【0116】
図4に示す例では、コンピューティングシステム400は、中央処理装置(CPU)406、メモリ408、入力/出力(I/O)モジュール410、および不揮発性ストレージデバイス410などの複数のコンポーネントを含む。システム400は、様々な方法で実装され得る。例えば、統合プラットフォーム(例えば、サーバ、ワークステーション、パーソナルコンピュータ、ラップトップなど)としての実装は、CPU406、メモリ408、およびI/Oモジュール412を備えることができる。そのような構成では、コンポーネント406、408、410は、ローカルデータバス450を介して接続および通信することができ、外部I/O接続を介して(例えば、別個のデータベースシステムとして実装される)データリポジトリ416にアクセスすることができる。I/Oモジュール412は、直接通信リンク(例えば、配線接続またはローカルWi-Fi(登録商標)接続)を介して、ローカルエリアネットワーク(LAN)などのネットワークを介して、もしくは携帯電話ネットワークまたはインターネットなどのWANを介して、および/または他の適切な接続を介して、外部デバイスに接続することができる。システム400は、スタンドアロンであってもよいし、またはより大きなシステムのサブシステムであってもよい。
【0117】
CPU406は、1つまたは複数の既知のプロセッサまたは処理デバイスであってもよく、例えば、カリフォルニア州サンタクララのIntel(登録商標)Corporationによって製造されたCore(登録商標)ファミリーのマイクロプロセッサ、またはカリフォルニア州サニーベールのAMD(登録商標) Corporationによって製造されたRyzen(登録商標)ファミリーのマイクロプロセッサなどである。メモリ408は、本技術の実装に関連する特定の機能、方法、およびプロセスを実行するためにCPU406によって実行または使用される命令および情報を格納するように構成された1つまたは複数の高速ストレージデバイスであってもよい。ストレージデバイス410は、揮発性または不揮発性、磁気、半導体、テープ、光学、または他のタイプのストレージデバイスまたはコンピュータ可読媒体であってもよく、これには、CDおよびDVDなどのデバイスおよび長期ストレージを意図したソリッドステートデバイスなどが含まれる。
【0118】
図示の実施態様では、ストレージデバイス410は、1つまたは複数のプログラムまたはアプリケーション418を含み、これらは、CPU406によって実行されると、本技術と一致する様々な動作、手順、プロセス、または方法を実行する。あるいは、CPU406は、システム400から遠隔に配置された1つまたは複数のプログラムを実行することができる。例えば、システム400は、ネットワーク404を介して1つまたは複数のリモートプログラムにアクセスすることができ、これらのプログラムは、実行されると、本技術の実装に関連する機能およびプロセスを実行する。
【0119】
一実装形態では、ストレージデバイス410は、とりわけ、ソースクライアントアプリケーション115、ターゲットサーバアプリケーション130、クライアントプロキシエージェント210、および/またはサーバプロキシエージェント220について、本明細書で説明する機能および動作を実行するためのアプリケーション418を含むことができる。いくつかの実装形態では、メモリ408はまた、本技術に補助機能を提供する他の方法およびプロセスを実装する他のプログラムまたはアプリケーションを含むことができる。いくつかの例では、ストレージデバイス410は、任意の適切な非一時的コンピュータ可読媒体を含むことができる。例えば、非一時的コンピュータ可読媒体は、本明細書に記載の技術による命令を実行するようにCPU406に指示するコンピュータ実行可能命令を含むことができる。
【0120】
ストレージデバイス410はまた、本技術とは無関係の他のプログラム(図示せず)、および/またはCPU406によって実行されると当技術分野で周知のいくつかの機能を実行するオペレーティングシステム(図示せず)で、構成されてもよい。例として、オペレーティングシステムは、Microsoft Windows(登録商標)、Unix(登録商標)、Linux(登録商標)、Apple Computer(登録商標)オペレーティングシステム、または他のオペレーティングシステムであってもよい。オペレーティングシステムの選択、およびオペレーティングシステムの使用さえも、本技術にとって重要ではない。
【0121】
I/Oモジュール412は、システム400によってデータを受信および/または送信できるようにする1つまたは複数の入力/出力デバイスを備えることができる。例えば、I/Oモジュール412は、ユーザからのデータの入力を可能にするキーボード、タッチスクリーン、マウスなどのような1つまたは複数の入力デバイスを含むことができる。さらに、I/Oモジュール412は、データを出力またはユーザに提示することを可能にする、ディスプレイ画面、CRTモニタ、LCDモニタ、プラズマディスプレイ、プリンタ、スピーカデバイスなどのような1つまたは複数の出力デバイスを含むことができる。I/Oモジュール412はまた、コンピューティングシステム400が、ネットワーク404内のデバイスを含む他のマシンおよびデバイスとの、例えばデジタルな通信を可能にする、1つまたは複数のデジタルおよび/またはアナログの通信入出力デバイスを含むことができる。他の構成および/または複数の入力および/または出力デバイスが、I/Oモジュール412に組み込まれてもよい。
【0122】
図示の実装形態では、システム400はネットワーク404(例えば、インターネット、プライベートネットワーク、仮想プライベートネットワーク、セルラーネットワークもしくは他のネットワーク、またはこれらの組み合わせ)に接続され、ネットワークは、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、クライアントデバイスなどの様々なシステムおよびコンピューティングマシンに接続することができる。一般に、システム400は、ネットワーク404を介して、外部のマシンおよびデバイスからデータを入力し、外部のマシンおよびデバイスにデータを出力することができる。
【0123】
図4に示す例示的な実装形態では、データリポジトリ416は、システム400によってホストされる。他の実装形態では、データリポジトリ416は、システム400の外部のスタンドアロンデータベースであってもよい。様々な実施形態において、データリポジトリ416は、本技術と一致するシステムおよび方法を実施するために使用されるデータを管理および格納することができる。例えば、データリポジトリ416は、識別情報を含むデータ構造を管理し格納することができ、識別情報は、例として、1つまたは複数のソースクライアントアプリケーション115、例えばルックアップテーブル内のターゲットサーバアプリケーション130、および同様のものについての、ターゲット情報(例えば、URL、アドレス、および/またはポート情報)である。
【0124】
いくつかの実施形態では、データリポジトリ416は、情報を格納し、システム400を介してアクセスおよび/または管理される1つまたは複数のデータベースを含むことができる。例として、データリポジトリ416は、Oracle(登録商標)データベース、Sybase(商標)データベース、または他のリレーショナルデータベースであってもよい。しかしながら、本技術と一致するシステムおよび方法は、異なったデータ構造またはデータベースに限定されず、データベースまたはデータ構造の用途であっても限定されない。
【0125】
当業者であれば、
図4のシステムのコンポーネントおよび実装の詳細は、説明を簡潔かつ明確にするために提示された例であることを認識するであろう。他のコンポーネントおよび実装の詳細が使用されてもよい。
【0126】
前述の例は、説明を明確にするために、サーバおよびクライアントデバイスなどのコンピュータ化されたデバイスの特定の例を使用しているが、本技術はこれらの特定の例に限定されない。本技術と一致する様々な実装形態は、多種多様なコンピュータ機器と共に使用されてもよいし、コンピュータ機器用に使用されてもよく、コンピュータ機器は、例えば数ある中でも、医療機器(例えば、透析機、輸液ポンプなど)、ロボット、ドローン、自動運転車両、および無線通信モジュール(例えば、埋め込み型ユニバーサル集積回路カード(eUICC))などである。
【0127】
当業者であれば、本開示を評価するにあたり、様々な実施形態において、一意のセッション識別子およびシーケンス番号に基づいて、クライアントプロキシエージェント210とサーバプロキシエージェント220との間のセキュアな通信を、複数のソースクライアントアプリケーション115のためのネットワークプロテクションデバイス140内の1つのオープンポートを介して実現することができ、それによって、ステートレスで短命の接続プロトコルを介したサーバ120との仮想多重接続へと至ることが理解されるであろう。さらに、実装を比較的小さくすることで、オーバーヘッドが低減され、性能が向上する。エンドポイントの数を制限することで、実装は簡略化される。
【0128】
本明細書に開示した技術の仕様および実施の考察から、本技術の他の実施態様が、当業者には明らかであろう。例示的な実施形態の様々な変更、ならびに開示の主題が関係する当業者にとって明らかな主題の他の実施形態は、開示した主題の範囲内にあると見なされる。
【0129】
例えば、クライアントプロキシエージェント210とサーバプロキシエージェント220との間に暗号化されていないチャネルが望まれるいくつかの実施形態によれば、HTTPプロトコルが実装され得る。そのような実施形態において通信を保護するために、セキュリティ構造、例えばDiffie Hellman鍵交換が、仮想接続のオープンステージにおいて実装されてもよい。
【0130】
さらに、いくつかの実施形態によれば、オープン仮想接続が別々にポーリングされるのとは対照的に、同じクライアントプロキシエージェント210に出入りする仮想接続用のデータが合体されてもよく、それによってパフォーマンスが向上する。
【0131】
また、ステートレスプロトコルを介して送信される1つまたは複数(例えば、すべて)の要求および応答に対し、クライアントプロキシエージェント210とサーバプロキシエージェント220との間で相互認証を実施することができる。例えば、クライアントプロキシエージェント210およびサーバプロキシエージェント220の各々は、信頼できる認証局によってアサインされたそれぞれの証明書が割り当てられてもよい。クライアントプロキシエージェント210からの各要求は、クライアントプロキシエージェント210に割り当てられた証明書を、サーバプロキシエージェント220に提示することができ、それに応えて、サーバプロキシエージェント220が、自身に割り当てられた証明書を、クライアントプロキシエージェント210に確認のために提示することができる。同様に、サーバプロキシエージェント220によってクライアントプロキシエージェント210に送信される各応答について、プロセスを逆に行うことができる。そのようなプロセスによって、サーバプロキシエージェント220およびクライアントプロキシエージェント210は、例えば、ターゲットサーバアプリケーション130への不正接続をオープンする目的で様々なポート識別子を示すサーバプロキシエージェント220への繰り返し要求といった、悪意のある攻撃のリスクおよび/または影響を減らすことが可能になり得る。
【0132】
本開示は、以下の条項を含む実施形態を含むが、これらの条項に限定するものではない。
条項1 ターゲットアプリケーションとソースアプリケーションとの間の複数の仮想伝送制御プロトコル接続を容易にするためのシステムであって、
サーバプロキシと、
クライアントプロキシと、
前記サーバプロキシと前記クライアントプロキシとの間に介在するネットワークプロテクションを含み、
前記サーバプロキシが、
ステートレスプロトコルを介して前記クライアントプロキシからオープン要求を受信する動作あって、前記オープン要求がターゲット識別子を含む、動作と、
前記ターゲット識別子に基づいて前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をオープンする動作と、
前記ステートレスプロトコルを介して、前記オープン要求のステータスを示す前記クライアントプロキシへの応答を提供する動作であって、前記応答は、セッション識別子およびシーケンス識別子のうちの少なくとも1つを含む、動作と、
前記ステートレスプロトコルを介して、前記クライアントプロキシからデータ要求を受信する動作あって、前記データ要求は、前記セッション識別子およびインクリメント済みシーケンス識別子を含み、前記インクリメント済みシーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応する、動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続を通して前記ターゲットアプリケーションにデータ要求を提供する動作と、を含む動作を、前記サーバプロキシのプロセッサに実行させるコンピュータ実行可能命令を含んでおり、また前記クライアントプロキシが、
ユニフォームリソースロケータに基づいて前記ステートレスプロトコルを介して前記サーバプロキシに前記オープン要求を送信する動作と、
前記ステートレスプロトコルを介して、前記オープン要求に対する応答を受信する動作と、
前記ステートレスプロトコルを介して、前記セッション識別子および所定の値だけインクリメントされたインクリメント済みシーケンス識別子とを含むデータ要求を前記サーバプロキシに提供する動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシを通して前記ターゲットアプリケーションから1つまたは複数のデータメッセージを受信する動作と、を含む動作を、前記クライアントプロキシのプロセッサに実行させる第2コンピュータ実行可能命令を含んでいる、システム。
条項2 前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、条項1のシステム。
条項3 前記シーケンス識別子が、ランダムに生成されたインクリメント可能な値を含む、条項1~2のいずれかのシステム。
条項4 前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つが、応答および1つまたは複数のデータメッセージのヘッダに付加される、条項1~3のいずれかのシステム。
条項5 前記サーバプロキシによって実行される動作がさらに、前記サーバプロキシおよび前記ターゲットアプリケーションのうちの1つまたは複数によって、前記クライアントプロキシから受信した前記セッション識別子および前記インクリメント済みシーケンス識別子のうちの少なくとも1つに基づいてデータ要求を認証することを含む、条項1~4のいずれかのシステム。
条項6 前記サーバプロキシによって実行される動作がさらに、認証に基づいて、前記ターゲットアプリケーションと前記サーバプロキシとの間の接続をクローズすることと、前記ステートレスプロトコルを介して前記クライアントプロキシにエラー応答を送信することとを含む、条項5のシステム。
条項7 前記クライアントプロキシによって実行される動作がさらに、
前記ステートレスプロトコルを介して、前記サーバプロキシからの通信なしに所定期間の後にポーリング命令を送信する動作であって、ポーリング命令は、前記セッション識別子と、所定の値だけインクリメントされたインクリメント済みシーケンス番号とを含む、動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシからポーリング応答を受信する動作であって、前記ポーリング応答は、前記サーバプロキシと前記ターゲットアプリケーションのうちの1つによって所定の値だけインクリメントされた前記インクリメント済みシーケンス番号と、ノーコンテンツインジケータと前記クライアントプロキシ宛てバッファリング済みメッセージのカウントのうちの1つと、を含んでおり、前記バッファリング済みメッセージは、所定期間の間に前記サーバプロキシでバッファリングされる、動作と
を含む、条項1~6のいずれかのシステム。
条項8 前記クライアントプロキシによって実行される動作がさらに、
前記ソースアプリケーションとの通信に基づいて、前記ソースアプリケーションと前記クライアントプロキシとの間の接続をクローズする動作と、
前記ステートレスプロトコルを介して前記サーバプロキシにクローズ要求を送信する動作と
を含む、条項1~7のいずれかのシステム。
条項9 前記サーバプロキシによって実行される動作がさらに、
前記クローズ要求を受信する動作と、
前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をクローズする動作と
を含む、条項8のシステム。
条項10 ターゲットアプリケーションと外部デバイス間の複数の仮想伝送制御プロトコル接続を容易にするためのサーバプロキシであって、前記サーバプロキシが、
ステートレスプロトコルを介して前記外部デバイスからオープン要求を受信する動作であって、オープン要求にはターゲット識別子が含まれている、動作と、
前記ターゲット識別子に基づいて前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をオープンする動作と、
前記ステートレスプロトコルを介して、オープン要求のステータスを示す前記外部デバイスへオープンステータス応答を提供する動作であって、前記オープンステータス応答にはセッション識別子およびシーケンス識別子のうちの少なくとも1つが含まれている、動作と、
前記ステートレスプロトコルを介して、前記セッション識別子と前記インクリメント済みシーケンス識別子を含む前記外部デバイスからのデータ要求を受信する動作であって、前記インクリメント済みシーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応する、動作と、
前記ステートレスプロトコルを介して、前記サーバプロキシと前記ターゲットアプリケーション間の接続を介して、受信したデータ要求から前記ターゲットアプリケーションにデータを提供する動作と、
を含む動作を、プロセッサに実行させるコンピュータ実行可能命令を含んでいる、サーバプロキシ。
条項11 前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、条項10のサーバプロキシ。
条項12 前記シーケンス識別子が、ランダムに生成されたインクリメント可能な値を含む、条項10~11のいずれかのサーバプロキシ。
条項13 前記サーバプロキシが、前記外部デバイスを宛先とし、前記データ要求に応答して前記ターゲットアプリケーションから受信した、1つまたは複数の応答メッセージをバッファリングするように構成される、条項10~12のいずれかのサーバプロキシ。
条項14 前記動作がさらに、
第2応答を前記外部デバイスに提供する動作を含み、第2応答は、前記サーバによって所定の値だけインクリメントされたシーケンス番号、およびデータ要求のステータスと、サーバプロキシに現在バッファリングされて外部デバイス宛てのデータメッセージのカウントを示す値とのうち、少なくとも1つを含む、条項10~13のいずれかのサーバプロキシ。
条項15 前記動作がさらに、
前記セッション識別子と前記インクリメント済みシーケンス番号のうちの少なくとも1つに基づいて、前記データ要求を認証する動作を含む、条項10~14のいずれかのサーバプロキシ。
条項16 前記動作がさらに、前記認証の結果に基づいて、前記サーバプロキシと前記ターゲットアプリケーションとの間の接続をクローズすることを含む、条項15のサーバプロキシ。
条項17 前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つが、前記オープンステータス応答および前記データ要求のヘッダに付加される、条項11~16のいずれかのサーバプロキシ。
条項18 前記サーバプロキシと前記ターゲットアプリケーションとの間でオープンされる接続が、ステートフル接続を含む、条項10~17のいずれかのサーバプロキシ。
条項19 前記動作がさらに、
前記ステートレスプロトコルを介して、前記外部デバイスからの通信なしに、所定期間の後に前記外部デバイスからのポーリング要求を受信する動作であって、前記ポーリング要求は、前記セッション識別子と、外部デバイスによって所定の値だけインクリメントされた前記インクリメント済みシーケンス番号とを含む、動作と、
前記ステートレスプロトコルを介して、ポーリング応答を提供する動作であって、前記ポーリング応答は、所定の値だけインクリメントされた前記インクリメント済みシーケンス番号を含み、また、ノーコンテンツインジケータと所定期間中に前記外部デバイス用にバッファリングされたメッセージのカウントのうちの、少なくとも1つを含む、動作とを含む、条項10~18のいずれかのサーバプロキシ。
条項20 前記動作がさらに、バッファリング済みメッセージのカウントが0より大きいことを前記ポーリング応答が示す場合、前記ステートレスプロトコルを介して、前記バッファリング済みメッセージを前記外部デバイスに送信することを含む、条項19のサーバプロキシ。
条項21 前記外部デバイスが、少なくとも1つのネットワークプロテクションデバイスによってサーバプロキシから分離されている、条項10~20のいずれかのサーバプロキシ。
条項22 ターゲットアプリケーションと通信するためのクライアントプロキシであって、クライアントプロキシは、コンピュータ実行可能命令を含み、これらの命令によってプロセッサは、
ユニフォームリソースロケータに基づくステートレスプロトコルを介してオープン要求を提供する動作であって、前記オープン要求には、ターゲット識別子が含まれている、動作と、
前記ステートレスプロトコルを介して前記オープン要求への応答を受信する動作であって、前記応答は前記オープン要求のステータスを示し、セッション識別子とシーケンス識別子のうちの少なくとも1つを含む、動作と、
前記ステートレスプロトコルを介して、前記セッション識別子とインクリメント済み前記シーケンス識別子とを含むデータ要求を提供する動作であって、インクリメント済み前記シーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応している、動作と、
前記ステートレスプロトコルを介して、前記ターゲットアプリケーションから発信された1つ以上のデータ応答を受信する動作
を含む、動作を実行する、クライアントプロキシ。
条項23 前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、条項22のクライアントプロキシ。
条項24 前記シーケンス識別子が、ランダムに生成されたインクリメント可能な値を含む、条項22~23のいずれかのクライアントプロキシ。
条項25 前記セッション識別子、前記シーケンス番号、および前記インクリメント済みシーケンス番号のうちの少なくとも1つが、前記応答および前記データ要求のヘッダに付加される、条項23~24のいずれかのクライアントプロキシ。
条項26 前記動作がさらに、
前記ステートレスプロトコルを介して、前記ターゲットアプリケーションと通信することなく、所定期間の後にポーリング要求を提供する動作であって、前記ポーリング要求は、前記セッション識別子と、所定の値だけインクリメントされた前記インクリメント済みシーケンス番号を含む、動作と、
前記ステートレスプロトコルを介して、ポーリング応答を受信する動作であって、前記ポーリング応答が、前記クライアントプロキシから所定の値だけリモートでインクリメントされた1つまたは複数の前記インクリメント済みシーケンス番号と、ノーコンテンツインジケータと、前記クライアントプロキシ宛てに、所定期間中にバッファリングされたバッファリング済みメッセージのカウントとを含む、動作と
を含む、条項22~25のいずれかのクライアントプロキシ。
条項27 前記クライアントデバイスと前記セキュアなアプリケーションとの間に、ファイアウォールとゲートウェイデバイスのうち少なくとも1つが介在している、条項22~26のいずれかのクライアントプロキシ。
条項28 前記動作がさらに、
ステートフル接続を介して、ソースアプリケーションに1つまたは複数の前記データメッセージを送信することを含む、条項22~27のいずれかのクライアントプロキシ。
条項29 セキュアな環境内のターゲットアプリケーションとセキュアな環境の外部のデバイスとの間の仮想伝送制御プロトコル接続を介して通信を実行するための方法であって、
ステートレスプロトコルを介して前記外部デバイスからオープン要求を受信することであって、前記オープン要求にはターゲット識別子が含まれている、受信することと、
前記ターゲット識別子に基づいて、前記ターゲットアプリケーションとのセキュアな環境内のネットワークリソースを介してステートフル接続をオープンすることと、
前記ステートレスプロトコルを介して、前記オープン要求のステータスを示す前記外部デバイスへ応答を提供することであって、前記応答には、セッション識別子とシーケンス識別子のうち少なくとも1つが含まれている、提供することと、
前記ステートレスプロトコルを介して、前記セッション識別子と前記インクリメント済みシーケンス識別子とを含む前記外部デバイスからのデータ要求を受信することであって、前記インクリメント済みシーケンス識別子は、所定の値だけインクリメントされた前記シーケンス識別子に対応する、受信することと、
前記ステートレスプロトコルを介して、前記受信済みデータ要求からス前記テートフル接続を介して前記ターゲットアプリケーションにデータを送信することと、
を含む、方法。
条項30 前記ステートレスプロトコルが、ハイパーテキストトランスファープロトコルおよびハイパーテキストトランスファープロトコルセキュアドのうちの1つを含む、条項29の方法。
【外国語明細書】