(57)【特許請求の範囲】
【請求項１】
ＶＰＮ（Virtual  Private  Network）クライアントを介してユーザ装置上のユーザ・アプリケーションと企業ネットワーク上の企業アプリケーションとの間で接続を確立する前記ユーザ装置における方法であって、
当該方法は、
前記ユーザ装置の上でインスタンスとして生成され、前記ユーザ装置上のユーザ・アプリケーションと個別に関係付けられているＶＰＮエージェントにより、前記ユーザ装置上の前記ユーザ・アプリケーションから生じた要求を傍受するステップであって、前記要求は、前記接続を確立するために前記ユーザ装置上のオペレーティング・システム・サービスへの要求である、ステップと、
前記ユーザ装置内において、前記傍受された要求に基づいて、前記ユーザ・アプリケーションと関連する通信トラフィックだけを伝送対象とするように構成され、前記ＶＰＮクライアントと前記ＶＰＮエージェントとの間を接続する通信チャネルを確立するステップであって、前記ＶＰＮクライアントは、前記ユーザ装置から前記企業ネットワークへと通信トラフィックをセキュアに伝送するためのＶＰＮトンネルを実装するように構成され、前記ＶＰＮクライアントと前記ＶＰＮエージェントの両者は、前記ユーザ装置上に常駐していることを特徴とする、ステップと、
を含む方法。
【請求項２】
前記要求は、ソケットＡＰＩ（Application  Program  Interface）の呼び出し動作を含む、請求項１記載の方法。
【請求項３】
前記ＶＰＮクライアントと前記ＶＰＮエージェントとの間で通信チャネルを確立するステップは、前記ＶＰＮクライアントと前記ＶＰＮエージェントとの間でループバックインタフェースを形成するステップを含む、
請求項１記載の方法。
【請求項４】
前記ループバックインタフェースを形成するステップは、前記要求における宛先アドレスをループバックインタフェースのアドレスに変更するステップを含む、
請求項３記載の方法。
【請求項５】
前記エージェント手段が、前記ループバックインタフェースにおいて待ち受けするように前記ＶＰＮクライアントに要求するステップを更に含む、
請求項４記載の方法。
【請求項６】
前記ＶＰＮエージェントは、前記ＶＰＮクライアントにより前記ユーザ・アプリケーションと関連付けされ、前記ユーザ装置上で実行中の他の如何なるユーザ・アプリケーションとも関係付けられていない、
請求項１記載の方法。
【請求項７】
前記ＶＰＮエージェントにより傍受するステップは、自身のためにソケットを作成することを要求しているユーザ・アプリケーションからのＡＰＩ（Application  Program  Interface）呼び出しをフックするステップを含む、
請求項１記載の方法。
【請求項８】
ユーザ・アプリケーションからＶＰＮ（Virtual  Private  Network）を介して企業アプリケーションにデータパケットを送信するためのユーザ装置における方法であって、
当該方法では、
通信チャネルを介してデータパケットが伝送されることを可能とするために、前記データパケットの宛先アドレスをループバック・インタフェースのアドレスに変更するステップであって、前記通信チャネルは、前記ユーザ・アプリケーションと関連する通信トラフィックだけを伝送対象とするように構成され、ＶＰＮクライアントとＶＰＮエージェントとの間を接続し、前記ＶＰＮエージェントは前記ユーザ・アプリケーションと関係付けられ、前記ループバック・インタフェースのアドレスは、前記企業アプリケーションとの接続を確立するためのオペレーティング・システム・サービスへの要求を前記ＶＰＮエージェントが傍受したことに応答して、前記ユーザ・アプリケーションと関連付けされ、前記要求は、前記ユーザ・アプリケーションから生じた要求であることを特徴とする、ステップと、
前記通信チャネルを介して、前記データパケットを前記ＶＰＮクライアントに転送するステップと、
を含むことを特徴とする方法。
【請求項９】
前記ＶＰＮクライアントにより、前記ループバックインタフェースのアドレスをＶＰＮトンネルに関連付けされたアドレスにマッピングするステップを更に含む、
請求項８記載の方法。
【請求項１０】
TCP/IP（Transport  Control  Protocol/Internet  Protocol）スタックを使用して、前記マッピングに従ってVPNトンネルを介して送信するためのデータパケットを作成するステップを更に含む、
請求項９記載の方法。
【請求項１１】
ＶＰＮ（Virtual  Private  Network）クライアントを介して企業ネットワーク上の企業アプリケーションとユーザ装置上のユーザ・アプリケーションとの間の接続を確立するためのユーザ装置における方法であって、
当該方法は、
前記ユーザ装置の上でインスタンスとして生成され、前記ユーザ装置上のユーザ・アプリケーションと個別に関係付けられているＶＰＮエージェントにより、前記ユーザ装置上の前記ユーザ・アプリケーションから生じた要求を傍受するステップであって、前記要求は、前記ユーザ・アプリケーションと接続するための他のアプリケーションによる要求を待ち受けするのを可能にするオペレーティング・システム・サービスへの要求である、ステップと、
企業アプリケーションからの接続要求を送出するように前記ＶＰＮエージェントから前記ＶＰＮクライアントに要求するステップと、
ＶＰＮトンネルを介して前記企業アプリケーションからの接続要求を前記ＶＰＮクライアントにより受信するステップと、
前記ユーザ装置内において、受信された接続要求に基づいて、前記ＶＰＮクライアントと前記ＶＰＮエージェントとの間で通信チャネルを確立するステップであって、前記通信チャネルは、前記前記ユーザ・アプリケーションと関連する通信トラフィックだけを伝送対象とし、前記ＶＰＮクライアントと前記ＶＰＮエージェントとの間を接続するように構成され、前記ＶＰＮクライアントは、前記ユーザ装置から前記企業ネットワークへと通信トラフィックをセキュアに伝送するためのＶＰＮトンネルを実装するように構成され、前記ＶＰＮクライアントと前記ＶＰＮエージェントの両者は、前記ユーザ装置上に常駐していることを特徴とする、ステップと、
を含む方法。
【請求項１２】
前記オペレーティング・システム・サービスへの要求は、ソケットＡＰＩ（Application  Program  Interface）のコールを含む、
請求項１１記載の方法。
【請求項１３】
前記ＶＰＮクライアントと前記ＶＰＮエージェントとの間の通信チャネルを確立するステップは、前記ＶＰＮクライアント・アプリケーションと前記ＶＰＮエージェントとの間のループバック・インタフェースを作成するステップを含む、
請求項１１記載の方法。
【請求項１４】
前記エージェント手段は、前記VPNクライアントにより前記ユーザアプリケーションと関連付けされ、前記ユーザ装置上で実行中の他の如何なるユーザ・アプリケーションとも関係付けられていない、
請求項１１記載の方法。
【請求項１５】
前記ＶＰＮエージェントにより傍受するステップは、ソケットの作成のためにＡＰＩ（Application  Program  Interface）の呼び出しをフックするステップを更に含む、
請求項１１記載の方法。
【請求項１６】
ＶＰＮ（Virtual  Private  Network）に基づいて、企業アプリケーションへのリモート・アクセスを行うためのシステムであって、
企業アプリケーションを含む企業ネットワークと、
ユーザ・アプリケーションから企業アプリケーションへの接続を確立するためのオペレーティング・システム・サービスへの要求を傍受し、前記傍受された要求に基づいて、ＶＰＮクライアントと前記ＶＰＮエージェント・モジュールとの間の通信チャネルを前記ユーザ装置内で確立するＶＰＮエージェント・モジュールであって、前記ユーザ装置の上でインスタンスとして生成され、前記ユーザ装置上のユーザ・アプリケーションと個別に関係付けられているＶＰＮエージェント・モジュールを含むユーザ装置と、
を備え、
前記通信チャネルは、前記前記ユーザ・アプリケーションと関連する通信トラフィックだけを伝送対象とし、前記ＶＰＮクライアントと前記ＶＰＮエージェントとの間を接続するように構成され、前記ＶＰＮクライアントは、前記ユーザ装置から前記企業ネットワークへと通信トラフィックをセキュアに伝送するためのＶＰＮトンネルを実装するように構成され、前記ＶＰＮクライアントと前記ＶＰＮエージェントの両者は、前記ユーザ装置上に常駐している、
ことを特徴とするシステム。
【請求項１７】
前記要求は、ソケットＡＰＩ（Application  Program  Interface）の呼び出しを含む、
請求項１６記載のシステム。
【請求項１８】
前記ＶＰＮエージェント・モジュールは、前記ＶＰＮクライアントを実装する前記ＶＰＮクライアント・アプリケーションと前記ＶＰＮエージェント・モジュールとの間でループバック・インタフェースを形成する、
請求項１６記載のシステム。
【請求項１９】
前記ＶＰＮエージェント・モジュールは、前記ループバック・インタフェースを待ち受けするように前記ＶＰＮクライアントに要求する、
請求項１８記載のシステム。
【請求項２０】
前記エージェントモジュールは、前記VPNクライアントにより前記ユーザアプリケーションと関連付けされ、前記ユーザ装置上で実行中の他の如何なるユーザ・アプリケーションとも関係付けられていない、
請求項１６記載のシステム。
【請求項２１】
前記要求は、ソケットＡＰＩ（Application  Program  Interface）の呼び出しを含み、
ＶＰＮクライアントと前記ＶＰＮエージェント・モジュールとの間の通信チャネルを前記ユーザ装置内で確立するステップは、前記ＶＰＮクライアントを実装する前記ＶＰＮクライアント・アプリケーションと前記ＶＰＮエージェント・モジュールとの間でループバック・インタフェースを形成し、
前記ループバック・インタフェースは、前記ユーザ・アプリケーションが、前記ＶＰＮクライアントとの間でデータパケットを送受信することを可能とする仮想的なインターフェースであり、前記ＶＰＮクライアントとの間の前記データパケットの送受信は、物理的なインターフェースに付与されたＩＰアドレスではなく、前記仮想的なインターフェースに付与されたＩＰアドレスを介して実行される、
ことを特徴とする請求項１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、VPN（Virtual  Private  Network）を通してセキュアなネットワークにおけるリモートアプリケーションへのアクセスに関するものであり、より詳細には、リモートアップリケーションによるデータ転送に関する。
【背景技術】
【０００２】
ネットワークは、通信とリソースの共有のために纏められるハードウェアとソフトウェアとからなるシステムである。ネットワークは、伝送媒体を相互接続し、伝送を制御する伝送ハードウェア及び装置、及び、伝送における問題を検出して訂正するのと同様に、データをデコードしてフォーマット化するソフトウェアのようなリソースを含む。今日使用されている幾つかのタイプのネットワークが存在する。ローカルエリアネットワーク（LAN）及びワイドエリアネットワーク（WLAN）のようなネットワークのなかには、リソースが、互いに物理的に接続されているものがある。VPN（Virtual  Private  Network）のような他のネットワークでは、リソース間のリンクのうちの幾つかが、より大きなネットワークを通して経路制御される仮想接続により搬送される。
【０００３】
VPNは、典型的に、遠隔のオフィス又は個々のユーザに企業網へのセキュアなアクセスを提供するため、Internetのような公衆通信基盤を使用する。VPNは、L2TP（Layer  Two  Tunneling  Protocol）、SSL（Secure  Socket  Layer）プロトコル、IPSec（Internet  Protocol  Security）プロトコルのようなセキュリティプロシジャ及びトンネリングプロトコルを通してプライバシーを保持する一方で、共有される公衆基板を使用することで機能する。
【０００４】
従来のVPNシステムは、VPNへの接続及びリモートアプリケーションの使用を可能にするコンピュータ装置におけるモジュールを確立するため、ユーザのコンピュータ装置でインストールされて管理されるクライアントソフトウェアと呼ばれる専用ソフトウェアを必要とする。ユーザコンピュータでソフトウェアを維持することは、比較的高価であって時間がかかるので、クライアントのないVPNシステムが開発された。これらのクライアントのないVPNシステムは、クライアントソフトウェアで事前に構成される装置を必要としない。しかし、係るクライアントのないVPNシステムは、スタティックポートのリモートアプリケーションに対する適用性により制限される。VoIP（Voice  over  Internet  Protocol）及びビデオ会議のようなダイナミックポートの適用の需要が増すにつれて、ダイナミックポートの適用をサポートすることができるクライアントのないVPNアクセスを提供する方法を実現することが有利である。
【発明の概要】
【課題を解決するための手段】
【０００５】
VPNを通して企業網へのセキュアなアクセスをユーザ装置に提供する方法及びシステムが記載される。ユーザ装置は、VPNクライアント及びユーザアプリケーションを含む。ユーザ装置におけるエージェントは、ユーザアプリケーションから生じる接続を確立するためにオペレーティングシステムサービスへの要求を傍受することができ、通信チャネルは、傍受された要求に基づいて、エージェントとVPNクライアントアプリケーションとの間で確立することができる。その後、ユーザアプリケーションにより送出されるパケットは、ループバックインタフェースを通してVPNクライアントにリダイレクトされる。VPNは、企業網とVPNトンネルを確立し、データパケットを企業網に送出することができる。同様に、企業ネットワークからVPNクライアントにより受信されたパケットは、ループバックインタフェースを通してリモートアプリケーションに送出される。本発明の１実施の形態では、ユーザアプリケーション及びVPNクライアントは、ユーザ装置に動的にダウンロードされる場合がある。VPNクライアントは、ユーザ装置でユーザアプリケーションを実行し、エージェントとユーザアプリケーションを関連付けする。
【０００６】
当業者であれば、添付図面と共に好適な実施の形態の以下の詳細な説明を読んだ後に、本発明の範囲を理解し、本発明の更なる態様を認識するであろう。
【図面の簡単な説明】
【０００７】
本明細書に組み込まれ且つ本明細書の一部を形成する添付図面は、本発明の幾つかの態様を例示するものであって、説明と合わせて、本発明の原理を説明するのに役立つものである。
【図１】本発明の１実施の形態に係る、VPNを通してリモートアクセスをリモートユーザが取得することができるネットワークの例を示すブロック図である。
【図２】本発明の１実施の形態に係る、ユーザのコンピュータ装置の例を示すブロック図である。
【図３】例となるVPNクライアントアプリケーションを示すブロック図である。
【図４】図３のVPNクライアントアプリケーションのモジュールを例示する図である。
【図５】VPNクライアントアプリケーションを実現する例示的な方法を例示する図である。
【図６】ユーザアプリケーションからVPNクライアントアプリケーションにパケットを伝達する方法を示すフローチャートである。
【図７】VPNクライアントからユーザアプリケーションにパケットを伝達する方法を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に述べられる実施の形態は、当業者が本発明を実施するのを可能にするために必要な情報を表すものであり、本発明を実施する最良の形態を例示するものである。添付図面に照らして以下の記載を読むことで、当業者であれば、本発明の概念を理解し、本実施の形態で特に対処されない概念の応用を認識されるであろう。これらの概念及び応用は、本実施の形態の開示及び特許請求の範囲に含まれることを理解されたい。  
本発明は、VPN（Virtual  Private  Network）を通してリモートアクセスを提供する方法及び装置を提供するものである。本方法及び装置は、ユーザのコンピュータ装置について管理者権限を有することなしに、Internetのような公衆網を通して接続されるユーザのコンピュータ装置を使用して、企業ネットワーク内のリソースにユーザがアクセスするのを可能にする。
【０００９】
図１は、公衆網１０６を介して企業網１０４と通信する例となるユーザ装置１０２を示す。ユーザ装置１０２は、ラップトップ、パーソナルデジタルアシスタント（PDA）及びパーソナルコンピュータのような様々なタイプのコンピュータ装置を含む場合がある。ユーザ装置１０２は、Internet  booth,  kiosk等における装置のような、公的にアクセス可能な装置を含む。
【００１０】
企業ネットワーク１０４及び公衆網１０６は、有線又は無線ネットワーク、或いはこれらの組み合わせである場合がある。企業網１０４は、企業網１０４内でデータが伝送されるのを可能にするために互いに接続されるルータ又はスイッチのようなネットワークエレメントを含む。企業網１０４は、電子メールサーバ、ホスト、リソース、及びこの例で図示されない他の一般的なネットワークエレメントのような多くのコンポーネントを有する場合がある。本発明は、任意の特定の方式で構成される企業網との使用に限定されるものではなく、従って、企業網１０４の内部構成の詳細は、本発明を曖昧にするのを回避するために省略される。
【００１１】
好適な実施の形態では、企業網１０４は、企業アプリケーション１０８及びVPNゲートウェイ１１０を含む。VPNは知られており、本発明は、特定のタイプの外部リソースが使用される特定の実施の形態に制限されるものではない。VPNゲートウェイ１１０は、ユーザがユーザ装置１０２を使用するのを可能にし、たとえばユーザ装置１０２と企業網１０４との間のVPNトンネルの形成により、セキュアなやり方で公衆網１０６にわたり企業網１０４へのリモートアクセスを得る。企業アプリケーション１０８は、サーバファーム又はサーバファームの一部である１つのサーバ又は様々なサーバに含まれる。様々なタイプのサーバは知られており、本発明は、特定のタイプのサーバが使用される特定の実施の形態に限定されるものではない。
【００１２】
慣習的に、ユーザが企業網へのリモートアクセスを得ることを望むとき、リモートユーザは、企業網にアクセスするために使用されるユーザのコンピュータでVPNクライアントをインストールすることが必要である。インストールされたVPNクライアントは、リモートコンピュータがVPNトンネルを通して企業網に接続するのを可能にする。今日入手可能なVPNクライアントは、高水準のユーザ権限（たとえば管理者のユーザ権限）を必要とするカーネルレベルのコンポーネントが装置でインストールされるのを必要とする。VPNクライアントは、特定のコンピュータで特にインストールされるので、ユーザが異なるコンピュータからアクセスを得るのを望むとき、ユーザは、そのコンピュータでVPNクライアントをインストールすることが必要である。たとえば、ユーザが家から企業網１０４にログインするのを望む場合、ユーザは、それらの家のコンピュータでVPNクライアントをインストールし、次いで、企業網１０４にアクセスするためにVPNクライアントを使用する。ユーザがVPNクライアントがインストールされているコンピュータを持たずに旅行している場合、公的に利用可能な装置の管理者のユーザ権限が一般的に許可されないために、VPNアクセスは実現不可能である。
【００１３】
これらの制限を克服するため、本発明の実施の形態によれば、VPNトンネルは、図１に示されるVPNクライアント１１２のような動的にダウンロード可能なVPNクライアントを使用して確立される。VPNクライアント１１２は、たとえばウェブポータル、又はUSB装置のような外部メモリ装置からダウンロード可能である。好適な実施の形態では、ユーザは、VPNクライアント１１２がユーザ装置１０２にダウンロードされる前に、ウェブポータル又はメモリ装置により認証される。
【００１４】
あるセッションの間にVPNクライアントを動的にダウンロードすることで、ユーザ装置１０２に、VPNクライアントが事前にロードされる必要がない。従って、インターネットブラウザをもつ任意のコンピュータは、企業網１０４にログインするために使用される。セッションがひとたび終了されるとVPNクライアント１１２のコンポーネントの可用性が終了されるように、動的にダウンロードされたコンポーネントは、セッションの終了に応じて削除される場合がある。従って、ユーザは、公的に利用可能なコンピュータからでさえ、企業網にアクセスすることができる。
【００１５】
１実施の形態では、VPNクライアント１１２は、ウェブインタフェースを通して遠隔的に実行されるユーザアプリケーション１１４に共にダウンロードされる場合がある。動作において、ユーザは、認証されると、ユーザが利用可能とされるアプリケーションのリストが提供される。ユーザアプリケーションの選択に応じて、ユーザアプリケーション１１４及びVPNクライアント１１２の両者がユーザ装置１０２に動的にダウンロードされる。VPNクライアント１１２は、ユーザアプリケーション１１４を実行し、ユーザアプリケーション１１４から生じているソケットコールのような接続を確立する要求を傍受するため、ユーザアプリケーション１１４とVPNエージェント１１６を関連付けする。
【００１６】
さらに、VPNエージェント１１６は、リモートアプリケーション１１４から生じているデータパケットのようなパケットをリダイレクトするため、VPNクライアント１１２との通信チャネルを確立する。また、VPNクライアント１１２は、パケットを暗号化して送出するため、VPNゲートウェイ１１０との論理トンネル又はVPNトンネルを確立する。ユーザ装置１０２の実施の形態の様々な態様は、図２〜図４を参照して詳細に説明される。
【００１７】
図２は、ユーザ装置１０２の例を示す。説明の容易さのため、図２に示される実施の形態は、ユーザ装置１０２が公衆網１０６でのトンネルを使用して通信する準備がされているように、VPNクライアント１１２が動的にダウンロードされた状態を示す。先に説明されたように、セッションがひとたび終了されると、VPNコンポーネントの一部又は全部は、ユーザ装置１０２を通常の構成に戻すため、コンピュータから除かれる。
【００１８】
好適な実施の形態では、ユーザ装置１０２は、中央処理装置（CPU）２０２、メモリ２０４及びネットワークインタフェース２０６を含む。CPU２０２は、メモリ２０４に記憶されている処理モジュールの制御ロジックを実現する。メモリ２０４は、揮発性メモリ及び不揮発性メモリを含む。ユーザ装置１０２は、ネットワークインタフェース２０６を介して公衆網１０６及び企業網１０４とデータのやり取りを行う。ネットワークインタフェース２０６は、たとえば公衆網１０６上の物理リンク、及びVPNクライアント１１２を通して確立されるVPNネットワークに接続するために構成されるポートを含む物理アダプタを含む。
【００１９】
動作において、説明されたように、VPNクライアント１１２及びユーザアプリケーション１１４は、ユーザ装置１０２に動的にダウンロードされる。VPNクライアント１１２は、ユーザアプリケーション１１４とVPNエージェント１１６を関連付けする。このため、VPNクライアント１１２は、ユーザアプリケーション１１４を実行し、VPNエージェント１１６がユーザアプリケーション１１４により生成されるソケットコールのような接続を確立するためのオペレーティングシステムサービスへの要求を傍受することができるように、VPNエージェント１１６をユーザアプリケーションと関連付けする。ソケットコールは、ソケットの形成に関連するコール、宛先ソケットアドレスを取得することに関連するコール等を含む。１実現では、ソケットコールは、Microsoft  Corporationにより提供されるWindows  Operating  Systemにおいて利用可能なWinSock  APIのようなアプリケーションプログラムインタフェース（API）と相互作用するコールである場合がある。
【００２０】
さらに、VPNエージェント１１６は、VPNクライアント１１２と通信チャネルを確立することができる。これは、VPNエージェントにより傍受される要求における宛先アドレスをループバックインタフェースアドレスに変えることで達成することができる。ループバックインタフェースは、オペレーティングシステムと統合され、意図的な処理又は変更なしにソースエンティティにデータを送出するために使用される仮想ネットワークインタフェースである。ループバックのために最も一般的に使用されるIPアドレスは、IPv4用の127.0.0.1であるが、レンジ127.0.0.0〜127.255.255.255における任意のアドレスがIPアドレスにマッピングされる。ループバックインタフェースは、同じコンピュータ上のアプリケーションと通信するためにコンピュータ上のネットワーククライアントにより使用される場合がある。ループバックインタフェース２０８は、VPNクライアント１１２又はユーザアプリケーション１１４の何れかにパケットを送出するために構成される。
【００２１】
さらに、VPNクライアント１１２は、VPNゲートウェイ１１０と論理トンネル又はVPNトンネルを確立し、トンネルIPアドレスを受信する。１実施の形態では、トンネルIPアドレスは、VPNゲートウェイ１１０でのプロキシのIPアドレス及び企業アプリケーション１０８のIPアドレスに対応する。
【００２２】
動作において、ユーザアプリケーション１１４が企業アプリケーション１０８にパケットを送出するとき、パケットは、ループバックインタフェース２０８を介してVPNクライアント１１２にリダイレクトされる。次いで、クライアントは、パケットを暗号化し、VPNトンネルを介してVPNゲートウェイ１１０に送出する。同様に、VPNゲートウェイ１１０からVPNクライアント１１２により受信されたパケットは、ループバックインタフェース２０８を介してユーザアプリケーション１１４に送出される。
【００２３】
図３は、本発明の１実施の形態に係る、ユーザ装置１０２における例示的なVPNクライアント１１２を例示する。ユーザ装置１０２は、ネットワークインタフェース２０６における物理インタフェース３０２のIPアドレスが割り当てられる。物理インタフェース３０２は、ネットワークカードのようなネットワークアダプタであり、このアダプタは、ユーザ装置１０２を任意のネットワークとを接続する。物理インタフェース３０２は、デバイスドライバのような様々なモジュールを通して、ユーザ装置１０２のオペレーティングシステムによりサポートされる有線又は無線ネットワークアダプタの何れかとすることができる。
【００２４】
説明されたように、認証の成功に応じて、ユーザには、様々な場所に位置される多数の事前に設定されたユーザアプリケーションへのアクセスが提供される。１実施の形態では、事前に設定されたリモートアプリケーションは、USB装置に位置することができる。ユーザは、ユーザアプリケーション１１４のような所望のアプリケーションを事前に設定されたユーザアプリケーションのなかから選択することができる。
【００２５】
選択されたユーザアプリケーション１１４は、VPNクライアント１１２と共にユーザ装置１０２でダウンロードされ、VPNクライアント１１２により実行される。たとえば異なるユーザアプリケーションが先に選択されているために、VPNクライアント１１２がユーザ装置１０２で既に実行されている場合、VPNクライアント１１２は、再びダウンロードされない。VPNクライアント１１２は、ユーザアプリケーション１１４と関連付けされたVPNエージェント１１６を始動する。VPNエージェントの始動は、ユーザアプリケーション１１４に対するHook  DLL（Dynamic-link  Library）ファイルの関連付けを含む。
【００２６】
実行において、ユーザアプリケーション１１４は、システムコールを呼び出し、物理インタフェース３０２を通した通信経路を確立する。１実現では、Windows  operating  systemの場合、実行しているユーザアプリケーション１１４は、WinSock  APIコールを呼び出す。これらのシステム又はAPIコールは、物理インタフェース３０２でのソケットの形成のため、及び通信経路を確立するために宛先インターネットプロトコル（IP）アドレスを取得するため、ユーザアプリケーション１１４により生成される。VPNクライアント１１２は、VPNエージェント１１６をリモートアプリケーション１１４と関連付けするため、ユーザアプリケーション１１４により生成されたAPIコールをフックする。
【００２７】
フッキング“hooking”とは、アプリケーションにより行われたライブラリファンクションコール又はAPIコールを傍受することでイベントハンドラとして機能するプログラミング技術である。一般に、フックシステムは、Winsock.dllのようなフックサーバとフックドライバという２つの部分を含んでいる。フックサーバは、APIコールを傍受するために、アプリケーションのアドレス空間にフックドライバを注入する。また、フックサーバは、フックドライバを制御し、フックドライバと通信する。フックドライバは、アプリケーションにより始動されるAPIコールの実際の傍受を実行する。
【００２８】
VPNクライアント１１２は、フックサーバとして機能し、VPNエージェント１１６を形成し、VPNエージェント１１６をリモートアプリケーション１１４と関連付けすることでフッキングを実行する。VPNエージェント１１６は、API傍受ロジック、言い換えればリモートアプリケーション１１４により生成されたAPIコールを傍受する命令のセットを含む。VPNエージェント１１６は、リモートアプリケーション１１４により生成されたソケットAPIコールをモニタし、ソケットイベントをVPNクライアント１１２に伝達する。従って、新たなユーザアプリケーション１１４がユーザ装置１０２で実行されるたびに、VPNクライアント１１２は、新たなVPNエージェント１１６を作成して、新たなVPNエージェント１１６を新たなリモートアプリケーション１１４と関連付けする。従って、新たなリモートアプリケーション１１４により生成されたWinSock  APIコールは、新たなVPNエージェント１１６により傍受され、VPNクライアント１１２に伝達される。
【００２９】
さらに、説明されたように、VPNエージェント１１６は、ループバックインタフェース２０８を介してVPNクライアント１１２と通信チャネルを確立し、VPNクライアント１１２は、VPNゲートウェイ１１０と、SSLトンネルのようなVPNネットワークコネクションを確立する。ループバックインタフェースは、物理インタフェース３０２のIPアドレスを通してではなく、仮想インタフェースのIPアドレスを通してVPNクライアント１１２からのデータパケットをユーザアプリケーション１１４が送信及び受信するのを可能にする仮想インタフェースである。SSLトンネルは、VPNゲートウェイからトンネルのIPアドレスを受信することで確立される。SSLトンネルは、最初のユーザアプリケーション１１４が実行されたときに、VPNクライアント１１２により一度だけ確立される。その後、新たなユーザアプリケーション１１４が実行されるたびに、更なるSSLセッションは、前に作成されたSSLトンネルにおける新たなユーザアプリケーション１１４について確立される。
【００３０】
ループバックインタフェース２０８は、企業網１０８にユーザアプリケーション１１４からパケットを送出するため、出口フロー（egress  flow）の間にVPNクライアント１１２にパケットを送出する。図３を参照して、出口フローの間にパケットにより後続される経路は、1E，2E及び3Eにより示される。
【００３１】
１つの実現では、VPNエージェント１１６は、パケットのソースアドレスを依然として物理インタフェース３０２のアドレスのままにする一方で、ユーザアプリケーション１１４により生成されたパケットの宛先アドレスをループバックインタフェース２０８のIPアドレスに変える。結果として、パケットは、物理インタフェース３０２からループバックインタフェース２０８に経路制御される。ループバックインタフェース２０８は、VPNクライアント１１２に物理インタフェース３０２から受信されたパケットを送出する。VPNクライアント１１２は、パケットを受信するためにループバックインタフェースに対応するソケットを待ち受け（listen）する。
【００３２】
VPNクライアント１１２で、パケットのソースIPアドレスは、VPNゲートウェイ１１０により提供されるプロキシソースIPアドレスに変更される。パケットの変更されたソースIPアドレスは、SSLトンネルの一方の端のIPアドレスとして振舞う。また、パケットの宛先IPアドレスは、VPNゲートウェイ１１０により提供される仮想的な宛先IPアドレスに変更される。パケットの変更された宛先IPアドレスは、企業網１０４における企業アプリケーション１０８のIPアドレスに対応し、SSLトンネルの他方の端のIPアドレスとして振舞う。
【００３３】
以下に変更されたパケットと呼ばれる、変更されたソース及び宛先IPアドレスを持つパケットは、次いで、SSLトンネルを通して企業アプリケーション１０８への送信のために、VPNクライアント１１２によりSSLプロトコルを使用してカプセル化及び暗号化される。カプセル化されたSSLパケットには、ソースIPアドレスとして物理インタフェース３０２のIPアドレスが提供され、送信のために宛先IPアドレスとしてVPNゲートウェイ１１０の物理IPアドレスが提供される。従って、物理インタフェース３０２からVPNゲートウェイ１１０にパケットが送信される。ユーザ装置１０２からパケットを受信した後、VPNゲートウェイ１１０は、パケットのカプセルを解き、企業アプリケーション１０８にパケットを送出する。
【００３４】
同様に、入口フロー（ingress  flow）の間、VPNクライアント１１２及びループバックインタフェース２０８を通して企業アプリケーション１０８から、ユーザアプリケーション１１４によりパケットが受信される。図３を参照して、入口フローの間にパケットに後続される経路は、1I，2I及び3Iにより示される。
【００３５】
実現において、入口フローの間、ループバックインタフェース２０８は、VPNクライアント１１２からのパケットを受信し、パケットをユーザアプリケーション１１４に経路制御する。ユーザアプリケーション１１４は、企業アプリケーション１０８からの接続要求を待つ間、待ち受けイベントを呼び出し、この待ち受けイベントについて、ユーザアプリケーション１１４は、企業アプリケーション１０８にユーザアプリケーション１１４の状態を伝達するため、WinSock  APIコールのようなAPIコールを呼び出す。APIコールは、VPNエージェント１１６により傍受され、このVPNエージェントは、VPNクライアント１１２にソケットの待ち受け情報を伝達する。VPNクライアント１１２は、トンネルを通して企業アプリケーション１０８からの接続要求を受信したとき、ループバックインタフェース２０８を通してユーザアプリケーションへの接続要求を始動する。
【００３６】
代わりに、企業アプリケーション１０８は、VPNゲートウェイ１１０に応答パケットを送出する。VPNゲートウェイ１１０は、応答パケットを暗号化し、SSLトンネルを通して応答パケットを送出するために応答パケットにヘッダを付加する。VPNゲートウェイ１１０により付加されるヘッダは、宛先アドレスとしてユーザ装置１０２のトンネルIPアドレスを含む。VPNクライアント１１２は、応答パケットを受信する。
【００３７】
応答パケットを受信すると、VPNクライアント１１２は、応答パケットの包装を解き、包装が解かれた応答パケットをループバックインタフェース２０８を通してユーザアプリケーション１１４に送出する。このため、ループバックインタフェース２０８は、VPNクライアント１１２から受信されたパケットを、ユーザアプリケーション１１４に対応する物理インタフェース３０２のソケットアドレスに送出する。物理インタフェース３０２は、入口フロー3Iにより示されるように、ユーザアプリケーション１１４にパケットを送出する。
【００３８】
説明されるように、データパケットの出口フロー及び入口フローの両者の間、VPNエージェント１１６は、ループバックインタフェース２０８及び物理インタフェース３０２に関するソケットの待ち受け情報をVPNクライアント１１２に動的に伝達する。従って、VPNクライアント１１２は、幾つかのスタティックポートで待ち受けるために事前に設定される。結果として、システムは、VoIP、ビデオ会議等のようなダイナミックポートを使用する応用をサポートする。
【００３９】
図４は、例となるVPNクライアント１１２におけるモジュールを例示する。１実施の形態では、VPNクライアント１１２は、コントロールモジュール４０２、データハンドリングモジュール４０４、ソケットエントリマッピングモジュール４０６、TCP/IP（Transmission  Control/Internet  Protocol）スタック４０８及びトンネリングハンドリングモジュール４１０を含む。
【００４０】
ユーザの認証の成功に応じて、事前に設定されたユーザアプリケーションへのリンクがユーザに表示される。ユーザは、ユーザ装置１０２で表示されるリンクから多数のユーザアプリケーションを選択する。ユーザにより選択された、ユーザアプリケーション１１４のような第一のユーザアプリケーションについて、ユーザアプリケーションは、VPNクライアント１１２と共にユーザ装置１０２にダウンロードされる。その後、ユーザアプリケーションのみがユーザによる選択に応じて個別にダウンロードされる。
【００４１】
VPNクライアント１１２は、コントロールモジュール４０２を使用してダウンロードされたユーザアプリケーションを実行する。コントロールモジュール４０２は、ユーザにより選択された各リモートアプリケーション１１４と個別のVPNエージェント１１６を関連付けする。先に説明されたように、VPNエージェント１１６は、実行のときに、関連付けされたリモートアプリケーション１１４により呼び出されたWinSock  APIコールを傍受する。また、コントロールモジュール４０２は、それぞれのVPNエージェント１１６とVPNクライアント１１２との間で通信チャネルを確立する。通信チャネルは、ソケットの作成、削除及び変更のようなソケットイベントを伝達するために確立される。それぞれのVPNエージェント１１６は、関連付けされたユーザアプリケーション１１４をVPNクライアント１１２にパケットを向け直すためにループバックインタフェース２０８を形成する。さらに、コントロールモジュール４０２は、データのセキュアな送信のため、ユーザ装置１０２とVPNゲートウェイ１１０との間のトンネルを確立する。データパケットの形式におけるデータは、ループバックインタフェース２０８及びVPNクライアント１１２を通して、ユーザ装置１０２におけるユーザアプリケーション１１４とVPNゲートウェイ１１０との間で転送される。
【００４２】
VPNクライアント１１２は、データハンドリングモジュール４０４を使用して、ループバックインタフェース２０８から又はループバックインタフェースに、データパケットを受信及び／又は送出する。データハンドリングモジュール４０４は、データパケットの伝送のために、オペレーティングシステムで作成されたソケットのような実際のソケットと、VPNトンネルで作成されたソケットのようなトンネルソケットとの間のマッピングを使用する。
【００４３】
ソケットエントリマッピングモジュール４０６は、ソケットのIPアドレスのような、実際のソケットとトンネルソケットに関する情報を有するエントリを含む場合がある。これらのエントリにより、データハンドリングモジュール４０４は、これを通してデータパケットが経路制御される必要がある適切なループバックインタフェースを識別するのを可能にする。
【００４４】
TCP/IPスタック４０８は、ヘッダの生成及び変更、データパケットを送出及び／受信するタイミングのような様々な機能と関連されるプロトコルに対処する。さらに、TCP/IPスタック４０８は、データハンドリングモジュール４０４にインタフェースを提供する。
【００４５】
データパケットのカプセル化、カプセル化されたデータパケットの開放、送信及び受信は、トンネルハンドリングモジュール４１０を通して対処される。たとえば、トンネルハンドリングモジュール４１０は、VPNゲートウェイ１１０に送出されるように、データパケットをそれらのSSLヘッダと共に暗号化してカプセル化する。また、トンネルハンドリングモジュール４１０は、データパケットのカプセル化を開放し、ユーザアプリケーション１１４への送信のためにデータハンドリングモジュール４０４に送出する。
【００４６】
従って、コントロールモジュール４０２、データハンドリングモジュール４１０は、トンネルを通してデータパケットの出力先を変更するために共に機能する。
【００４７】
図５は、VPNクライアント１１２を実現する例示的な方法５００を示すフローチャートであり、図６は、ユーザアプリケーション１１４からVPNクライアント１１２にパケットを伝達する方法６００を示すフローチャートである。これらの例示的な方法は、コンピュータが実行可能な命令からなる一般的な環境において記載される。一般に、コンピュータが実行可能な命令は、特定の機能を実行するか、特定の抽象的なデータタイプを実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、手順、モジュール、機能等を含むことができる。コンピュータが実行可能な命令は、コンピュータ読み取り可能な記録媒体に記憶されており、実行のために適切な装置にロード又は埋め込まれる。
【００４８】
本方法５００は、ブロック５０２で始動し、ここでウェブブラウザを通してアクセスすることができる企業網のウェブポータルのようなVPNポータルリンクは、ユーザによりアクセスされる。別の例では、VPNクライアント１１２は、ウェブブラウザを通して企業網１０４のウェブポータルからアクセスされる。
【００４９】
ブロック５０４で、ユーザは、VPNゲートウェイ１１０で認証される。企業アプリケーション１０８に対するセキュア且つ制限されたアクセスを提供するため、ユーザは、様々な技術を使用することで、VPNゲートウェイ１１０で認証される。例えば、ユーザは、専用のユーザ名及びパスワードによりVPNゲートウェイ１１０で認証される。ユーザの認証は、VPNゲートウェイ１１０が、ユーザがアクセスするのが許可された企業アプリケーションを識別するのを容易にする。
【００５０】
ブロック５０６で、ユーザは、実行されることが望まれるユーザアプリケーション１１４についてユーザアプリケーションのリンクを選択する。VPNゲートウェイ１１０でのユーザの認証が成功したとき、所望のユーザアプリケーション１１４は、ユーザが許可されたアクセスを有する多数のユーザアプリケーションのなかから選択することができる。
【００５１】
ブロック５０８で、リンクを介して選択されたVPNクライアント１１３及びユーザアプリケーション１１４がダウンロードされて実行される。選択されるユーザアプリケーション１１４は、必要な機能を実行するためにVPNクライアント１１２により実行される。ステップ５０４〜５０８の代替的な実現では、VPNクライアント１１２は、ユーザアプリケーション１１４と同様に、中間装置において配置される場合がある。たとえば、USB（Universal  Serial  Bus）装置で配置することができる。さらに、係る装置は、ステップ５０４においてユーザの認証について更なる証印を含む場合がある。
【００５２】
ブロック５１０で、VPNエージェント１１６は、ユーザアプリケーション１１４と関連される。たとえば、VPNクライアント１１２は、VPNエージェント１１６にユーザアプリケーションを関連付けするため、ユーザアプリケーション１１４により生成されたソケットAPIコールのフッキングを始動する。VPNエージェント１１６は、API傍受ロジックを含むモジュールである。言い換えれば、VPNエージェント１１６は、WindowsのプラットフォームでWinSock  APIコールのようなAPIコールを傍受する。
【００５３】
ブロック５１２で、ユーザアプリケーション１１４とVPNクライアント１１２との間で通信チャネルが確立される。実現において、ユーザアプリケーション１１４が関連されたVPNエージェント１１６は、様々な技術を使用することで、ループバックインタフェース２０８を通して、ユーザアプリケーション１１４とVPNクライアント１１２との間で通信チャネルを確立するのを容易にする。たとえば、VPNエージェント１１６は、通信チャネルを確立するためのWindowsオペレーティングシステムが設けられる、WinSock  APIコールを通して、ソケットを作成する機能を利用することができる。
【００５４】
ブロック５１４で、VPNクライアント１１２とVPNゲートウェイ１１０との間に論理チャネルが確立される。VPNクライアント１１２は、様々な公知の技術を使用することで、VPNゲートウェイ１１０への論理トンネルを確立して、企業網においてVPNクライアント１１２と企業アプリケーション１０８との間に通信チャネルを提供する。
【００５５】
ブロック５１６で、トンネルのIPアドレスは、企業アプリケーション１０８との通信のために受信される。ユーザ装置１０２と企業網１０４との間の通信を容易にするため、トンネルのIPアドレスは、VPNゲートウェイ１１０からVPNクライアント１１２により受信される。
【００５６】
本方法５００が記載される順序は、限定されるものとして解釈されるべきではなく、本方法又は代替的な方法を実現するために、任意の数の記載された方法ブロックが任意の順序で結合することができる。さらに、個々のブロックは、本明細書で記載される手段の精神及び範囲から逸脱することなしに、本方法から削除される場合がある。さらに、本方法は、適切なハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせで実現することができる。
【００５７】
図６は、ユーザアプリケーション１１４が企業アプリケーション１０８との接続の確立を要求した場合に、VPNクライアント１１２にユーザアプリケーション１１４からパケットを伝達する方法６００を示す。
【００５８】
ブロック６０２で、ユーザアプリケーション１１４に関連するVPNエージェント１１６は、ユーザアプリケーション１１４からの要求を傍受して、企業アプリケーション１０８との接続を確立する。典型的に、パケットを送信又は受信するために、ユーザアプリケーション１１４は、物理アダプタ又はインタフェース３０２と接続することが必要とされる。ユーザアプリケーション１１４は、パケットを送出する前に、物理インタフェース３０２におけるソケットを作成する必要がある。ユーザアプリケーション１１４は、ソケットコールを立てることで、物理インタフェース３０２と一般的に情報のやり取りをする。たとえば、Windowsのプラットフォーム環境では、ユーザアプリケーション１１４は、WinSock  APIコールを生成して、物理インタフェース３０２がデータトラフィックを送信するためにソケットを作成するのを要求する。さらに、コールは、送出すべきパケットの目的地のIPアドレスを確認するように物理インタフェース３０への要求を含む。ユーザアプリケーション１１４から生じる、宛先アドレスを取得するこの要求は、本方法６００のブロック６０２でVPNエージェント１１６により傍受される。
【００５９】
ブロック６０４で、宛先アドレスの要求に応答して、VPNエージェント１１６は、ルップバックインタフェース２０８を作成する。これは、ループバックインタフェースアドレスへの接続を確立するため、要求における宛先アドレスを変更することで達成することができる。ループバックインタフェース２０８は、パケットを一時的に保持し、それらをユーザ装置１０２内の予め決定された位置又はアプリケーションにリダイレクトする中間モジュールとしての役割を果たす。ブロック６０６で、VPNエージェントは、ルップバックインタフェース２０８に向けられるパケットを待ち受けする要求をVPNクライアントに送出する。
【００６０】
ブロック６０８で、ユーザアプリケーション１１４から生じるパケットには、宛先アドレスとしてループバックインタフェース２０８のアドレスが割り当てられる。従って、パケットは、ループバックインタフェース２０８にリダイレクトされる。
【００６１】
ブロック６１０で、VPNクライアントは、本来、企業アプリケーション１０８行きのパケットを受信し、ループバックインタフェース２０８でのパケットの到達に応じて、パケットは、VPNクライアント１１２に送出される。
【００６２】
図７は、企業アプリケーション１１８がユーザアプリケーション１１４との接続の確立を要求する場合、VPNクライアント１１２からユーザアプリケーション１１４へのパケットを伝達する方法７００を示す。
【００６３】
ブロック７０２で、ユーザアプリケーション１１４と関連付けされたVPNエージェント１１６は、ユーザアプリケーション１１４からの要求を傍受し、接続するために他のアプリケーションについて待ち受けを可能にする。この要求は、物理インタフェース３０２にWinSock  APIコールを含む場合がある。
【００６４】
ブロック７０４で、VPNエージェントは、ループバックインタフェース２０８を介して企業アプリケーション１０８からユーザアプリケーション１１４に、VPNクライアントが受信した要求を送出するようにVPNクライアントに要求する。
【００６５】
ブロック７０６で、企業アプリケーション１０８は、VPNクライアント１１２とVPNゲートウェイ１１０との間で確立されるトンネルを通して接続要求を送出する。
【００６６】
ブロック７０８で、VPNクライアント１１２は、ループバックインタフェース２０８を通して、ユーザアプリケーション１１４との接続を始動する。
【００６７】
本方法６００及び７００が記載される順序は、限定するものとして解釈されるべきではなく、任意の数の記載される方法ブロックを本方法又は代替的な方法を実現する任意の順序で結合することができる。さらに、個々のブロックは、本明細書で記載された主題の精神及び範囲から逸脱することなしに、本方法から削除される場合がある。更に、本方法は、適切なハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせで実現することができる。
【図１】
0005620400.tif 000002
【図２】
0005620400.tif 000003
【図３】
0005620400.tif 000004
【図４】
0005620400.tif 000005
【図５】
0005620400.tif 000006
【図６】
0005620400.tif 000007
【図７】
0005620400.tif 000008