種々の実施形態の以下の説明において、上記で特定された添付図面に対する参照がなされ、これらは、本明細書の一部を形成し、その中で、本明細書に記載の態様が実施され得る種々の実施形態の説明として示される。他の実施形態が利用され得、かつ構造的及び機能的な変形が本明細書に記載の範囲を逸脱することなくなされ得ることが理解されるべきである。種々の態様は、他の実施形態が可能であり、種々の異なる手法で実施または実行されることが可能である。
以下でより詳細に説明される主題の一般的な紹介として、本明細書で説明する態様は、モバイルデバイス上で実行している移動式事業者のアプリケーションから、モバイルデバイスが利用できる公衆網接続を介して、事業者の私設網にモバイルVPN接続を生成することに向けられる。デバイスからのすべてのアウトバウンドトラフィックを傍受する従来のデバイスレベルのVPN接続とは異なり、本明細書に記載のモバイルVPN接続は、管理されているアプリケーションのみのトラフィックを傍受してトンネリングすることができる。モバイルデバイス管理(MDM)プロファイルまたはモバイルアプリケーション管理(MAM)ポリシーは、モバイルデバイス上にインストールされたモバイルアプリケーションが、事業者の私設網へのモバイルVPN接続の生成に適していることを指定する。いったん生成されると、以下マイクロVPN及び/またはマイクロVPNとも呼ばれるモバイルVPN接続は、1つ以上の指定されている事業者モバイルアプリケーションから事業者の私設網へのトラフィックをトンネリングするだけである。他のモバイルアプリケーションからのトラフィックは、事業者モバイルアプリケーション用に生成されたモバイルVPNを介して傍受されることも、トンネリングされることもない。複数のモバイルVPN接続は、複数の移動式事業者アプリケーションを有するモバイルデバイス上で同時に動作することができ、各モバイルVPN接続は、特定の通信プロトコルに従って、それぞれの事業者モバイルアプリケーション用のデータをトンネリングする。開示の全体を通じて、このようなアプリケーションごとのモバイルVPNを生成する異なる実装形態が説明される。異なるモバイルアプリケーションは、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、及びドメインネームシステム(DNS)アドレス指定プロトコルなどの異なるデータ転送/通信プロトコルを使用して、データを通信することができる。マイクロVPNを生成するシステムアーキテクチャ及び方法は、これらのデータ転送プロトコルの各々に応じて異なる場合がある。
現在のVPNシステムは、単一デバイスレベルのVPN接続を介して、デバイス(例えば、モバイルデバイス)上で実行しているすべてのアプリケーションからトラフィックを傍受する。このような従来のVPNシステムでは、エンタープライズアプリケーションと同様にパケットを傍受する必要のない非エンタープライズアプリケーションからパケットが傍受される。加えて、現在のVPNシステムは、システムレベルのデーモンを使用して、管理されているアプリケーションと管理されていないアプリケーションの両方からのすべてのパケットを傍受する。このようなシステムレベルのデーモンによるパケットの連続的な傍受は、バッテリの消耗を引き起こす。しかしながら、本明細書に記載のモバイルVPNの実装形態は、管理されているアプリケーション、管理されているアプリケーションと、サードパーティーのライブラリ間で交換されるシステムコール及びすべてのアプリケーショントラフィック(直接及び間接の両方)が宛先に確実にトンネリングされるように、エンタープライズモバイルアプリケーションが参照するサードパーティーライブラリによって発行された任意のシステムコールからの低レベルのシステムコールを傍受する。
本明細書で使用される語法及び用語法は、説明の目的のためであり、限定するものとみなされるべきではないことが理解されるべきである。その代わりに、本明細書で使用される語句及び用語には、それらの最も広い解釈及び趣旨が所与されるべきである。「含む(including)」及び「含む(comprising)」、ならびにそれらの派生語の使用は、これ以降に列挙される項目及びその等価物、ならびに追加の項目及びその等価物を包含することを意味するものである。用語「装着される(mounted)」、「接続される(connected)」、「連結される(coupled)」、「位置付けられる(positioned)」、「係合される(engaged)」、ならびに同様の用語は、直接と間接との両方で装着する、接続する、連結する、位置付ける、及び係合することを意味するものである。
〈コンピューティングアーキテクチャ〉
コンピュータのソフトウェア、ハードウェア、及びネットワークは、とりわけ、スタンドアロン環境、ネットワーク化された環境、遠隔アクセス(別名遠隔デスクトップ)環境、仮想化環境、及び/またはクラウドベースの環境を含む、種々の異なるシステム環境において利用され得る。図1は、スタンドアロン環境及び/またはネットワーク化された環境において、本明細書に記載の1つ以上の例示的な態様を実装するために使用され得る、システムアーキテクチャ及びデータ処理デバイスの一例を説明する。種々のネットワークノード103、105、107、及び109は、インターネットなどのワイドエリアネットワーク(WAN)101を介して相互接続され得る。専用イントラネット、企業ネットワーク、LAN、メトロポリタンエリアネットワーク(MAN)、無線ネットワーク、パーソナルネットワーク(PAN)などを含む、他のネットワークも使用され得るか、または代替的に使用され得る。ネットワーク101は、例示目的のためであり、少数または追加のコンピュータネットワークと置換され得る。ローカルエリアネットワーク(LAN)は、1つ以上の任意の既知のLANトポロジーを有し得、イーサネット(登録商標)など1つ以上の種々の異なるプロトコルを使用し得る。デバイス103、105、107、109、及び他のデバイス(図示せず)は、ツイストペア配線、同軸ケーブル、光ファイバー、電波、または他の通信媒体を介して1つ以上のネットワークに接続され得る。
用語「ネットワーク」は、本明細書で使用され、かつ図面に示されるとき、システム内で遠隔ストレージデバイスが1つ以上の通信経路を介して一緒に連結されるシステムだけでなく、ストレージ能力を有するシステムなどにしばしば連結され得るスタンドアロン型デバイスも意味する。したがって、用語「ネットワーク」は、「物理ネットワーク」だけでなく、物理ネットワーク全体に存在する(単一のエンティティに帰属可能な)データから構成される「コンテンツネットワーク」も含む。
コンポーネントは、データサーバー103、ウェブサーバー105、及びクライアントコンピュータ107、109を含み得る。データサーバー103は、本明細書に記載の1つ以上の例示的な態様を行うためのデータベース及び制御ソフトウェアの全体のアクセス、制御、及び管理を提供する。データサーバー103は、ユーザがデータと相互作用し、必要に応じてデータを取得するためのウェブサーバー105に接続され得る。代替的に、データサーバー103は、ウェブサーバー自体として機能してもよく、インターネットに直接接続されてもよい。データサーバー103は、直接もしくは間接的な接続を介して、または幾つかの他のネットワークを介して、ネットワーク101(例えば、インターネット)経由でウェブサーバー105に接続され得る。ユーザは、遠隔コンピュータ107、109を使用して、例えば、ウェブサーバー105によってホスティングされた1つ以上の外部に露出されたウェブサイトを介して、データサーバー103に接続するためのウェブブラウザを使用して、データサーバー103と相互作用し得る。クライアントコンピュータ107、109は、データサーバー103に格納されたデータにアクセスするようにデータサーバー103と協調して使用され得るか、または他の目的のために使用され得る。例えば、クライアントデバイス107から、ユーザは、当該技術分野で既知のように、インターネットブラウザを使用して、またはウェブサーバー105及び/もしくはデータサーバー103とコンピュータネットワーク(インターネットなど)上で通信するソフトウェアアプリケーションを実行していることによって、ウェブサーバー105にアクセスし得る。
サーバー及びアプリケーションは、同じ物理マシン上で組み合わせされてもよく、別個の仮想アドレスもしくは論理アドレスを保持してもよく、または別個の物理マシン上に存在してもよい。
図1は、使用され得るネットワークアーキテクチャの一例のみを説明するものであり、本明細書でさらに記載されるように、使用される具体的なネットワークアーキテクチャ及びデータ処理デバイスが変更されてもよく、それらが提供する機能には二次的なものであるということを当業者は理解するであろう。例えば、ウェブサーバー105及びデータサーバー103によって提供されるサービスは、単一のサーバー上で組み合わされ得る。
各コンポーネント103、105、107、109は、任意のタイプの既知のコンピュータ、サーバー、またはデータ処理デバイスであり得る。データサーバー103は、例えば、レートサーバー103の全体の動作を制御するプロセッサ111を含み得る。データサーバー103は、ランダムアクセスメモリ(RAM)113、リードオンリーメモリ(ROM)115、ネットワークインターフェース117、入出力インターフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタなど)、及びメモリ121をさらに含み得る。入出力(I/O)119は、データまたはファイルを読み取り、書き込み、表示し、及び/または印刷するための種々のインターフェースユニット及びドライブを含み得る。メモリ121は、データ処理デバイス103の全体の動作を制御するためのオペレーティングシステムソフトウェア123、本明細書に記載の態様を行うようにデータサーバー103に命令するための制御論理125、及び本明細書に記載の態様と共に使用されてもよいか、または使用されなくてもよい二次的なサポート及び/または他の機能を提供する他のアプリケーションソフトウェア127をさらに含み得る。制御論理はまた、データサーバーソフトウェア125としても本明細書では称され得る。データサーバーソフトウェアの機能は、制御論理に符号化された規則に基づいて自動的になされる動作または決定、入力をシステムに提供するユーザによって手動でなされる動作または決定、及び/またはユーザ入力(例えば、クエリ、データ更新など)に基づいた自動処理の組み合わせによってなされる動作または決定を意味する。
メモリ121は、第1のデータベース129及び第2のデータベース131など、本明細書で説明される1つ以上の態様の実行において使用されるデータも記憶し得る。幾つかの実施形態おいて、第1のデータベースは、第2のデータベースを(例えば、別個のテーブル、レポートなどとして)含み得る。つまり、情報を、単一のデータベースに格納できるか、またはシステム設計に依存して、異なる論理データベース、仮想データベース、もしくは物理データベースに分散できる。デバイス105、107、109は、デバイス103に関して記載されるように、同様のまたは異なるアーキテクチャを有し得る。本明細書に記載のデータ処理デバイス103(またはデバイス105、107、109)の機能が、例えば、複数のコンピュータにわたって処理負荷を分配したり、地理的な位置、ユーザアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分離したりするために、複数のデータ処理デバイスにわたって分散され得ることを当業者は理解するであろう。
1つ以上の態様は、1つ以上のコンピュータまたは本明細書に記載の他のデバイスによって実行される1つ以上のプログラムモジュールにおいてなど、コンピュータ使用可能データもしくは可読データ及び/またはコンピュータ実行可能命令において具現化され得る。一般に、プログラムモジュールは、コンピュータまたは他のデバイス内のプロセッサによって実行されたときに、特定のタスクを実行しているか、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行用に後でコンパイルされるソースコードプログラミング言語で書き込まれ得るか、または(限定はされないが)ハイパーテキストマークアップ言語(HTML)もしくは拡張可能マークアップ言語(XML)などのスクリプト言語で書き込まれ得る。コンピュータ実行可能命令は、不揮発性ストレージデバイスなどのコンピュータ可読媒体に格納され得る。ハードディスク、CD−ROM、光学ストレージデバイス、磁気ストレージデバイス、及び/またはこれらの任意の組み合わせを含む、任意の好適なコンピュータ可読ストレージ媒体が利用され得る。加えて、本明細書に記載のデータまたはイベントを表す種々の伝送(非ストレージ)媒体は、金属配線、光ファイバー、及び/または無線伝送媒体(例えば、空気及び/または空間)などの信号伝導媒体を経由して移動する電磁波の形態で、送信元と送信先との間で転送され得る。本明細書に記載の種々の態様は、方法、データ処理システム、またはコンピュータプログラム製品として具現化され得る。したがって、種々の機能が、ソフトウェア、ファームウェア、及び/またはハードウェアもしくは集積回路などのハードウェア等価物、フィールドプログラマブルゲートアレイ(FPGA)などの全体または一部において具現化され得る。特定のデータ構造を使って、本明細書に記載の1つ以上の態様をより効率的に実装してもよく、かかるデータ構造は、本明細書に記載のコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内であると企図される。
図2をさらに参照すると、本明細書に記載の1つ以上の態様は、遠隔アクセス環境で実装され得る。図2は、本明細書に記載の1つ以上の例示的な態様に従って使用され得る例示的なコンピューティング環境200における汎用コンピューティングデバイス201を含むシステムアーキテクチャの例を示す。汎用コンピューティングデバイス201は、管理されているアプリケーションへのアクセスをそのユーザにセキュアな環境で提供するように構成されたモバイルコンピューティングデバイスであってもよい。汎用コンピューティングデバイス201は、サーバー、ならびにRAM205、ROM207、I/Oモジュール209、及びメモリ215を含むサーバー関連のコンポーネントの全体の動作を制御するためのプロセッサ203を有し得る。
I/Oモジュール209としては、汎用コンピューティングデバイス201のユーザが入力を提供し得るためのマウス、キーパッド、タッチ画面、スキャナ、光学読取デバイス、及び/またはスタイラス(または他の入力デバイス(複数可))が挙げられ、また、音声出力を提供するための1つ以上のスピーカ、ならびにテキスト出力、視聴覚出力、及び/またはグラフィカルな出力を提供するための映像ディスプレイデバイスも挙げられる。ソフトウェアは、メモリ215及び/または他のストレージデバイス内に格納されて、本明細書に記載の種々の機能を行うために、汎用コンピューティングデバイス201を専用コンピューティングデバイスに構成するために命令をプロセッサ203に提供し得る。例えば、メモリ215は、オペレーティングシステム217、アプリケーションプログラム219、及び関連付けられたデータベース221などのコンピューティングデバイス201によって使用されるソフトウェアを格納してもよい。
コンピューティングデバイス201は、端末240などの1つ以上の遠隔コンピュータ(クライアントデバイスとも称される)への接続をサポートするネットワーク化された環境内で動作し得る。端末240は、汎用コンピューティングデバイス103または201に対して、上に記載の要素の多くまたはすべてを含むパーソナルコンピュータ、モバイルデバイス、ラップトップ型コンピュータ、タブレット、またはサーバーであり得る。図2に示されるネットワーク接続には、ローカルエリアネットワーク(LAN)225及びワイドエリアネットワーク(WAN)229が含まれるが、他のネットワークを含むこともできる。LANネットワーキング環境で使用される場合、コンピューティングデバイス201は、ネットワークインターフェースまたはアダプタ223を経由してLAN225に接続され得る。WANネットワーキング環境で使用される場合、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)などのWAN229上で通信を確立するためのモデム227または他のワイドエリアネットワークインターフェースを含み得る。示されるネットワーク接続が例示的なものであり、通信リンクをコンピュータ間に確立する他の手段が使用され得るということが理解されるであろう。コンピューティングデバイス201及び/または端末240はまた、バッテリ、スピーカ、及びアンテナ(図示せず)など種々の他のコンポーネントを含むモバイル端末(例えば、携帯電話、スマートフォン、パーソナルデジタルアシスタント(PDA)、ノート型パソコンなど)でもあり得る。
本明細書に記載の態様はまた、多くの他の汎用または専用コンピューティングシステムの環境または構成でも動作可能であり得る。本明細書に記載の態様での使用のために好適であり得る他のコンピューティングシステム、環境、及び/または構成の実施例としては、限定はされないが、パーソナルコンピュータ、サーバーコンピュータ、携帯型またはラップトップ型デバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家電製品、ネットワークパーソナルコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスなどのいずれかを含む分散型コンピューティング環境が挙げられる。
図2に示されるように、1つ以上のクライアントデバイス240は、1つ以上のサーバー206a〜206n(「サーバー206(複数可)」として本明細書では概して称される)と通信し得る。一実施形態において、コンピューティング環境200は、サーバー206(複数可)とクライアントマシン240(複数可)との間に設置されるネットワーク機器を含み得る。ネットワーク機器は、クライアント/サーバー接続を管理し得、場合によって、複数のバックエンドサーバー206間でクライアント接続の負荷を分散することができる。
クライアントマシン240(複数可)は、幾つかの実施形態において、単一のクライアントマシン240または単一グループのクライアントマシン240と称され得る一方、サーバー206(複数可)は、単一のサーバー206または単一グループのサーバー206と称され得る。一実施形態において、単一のクライアントマシン240は、2つ以上のサーバー206と通信するが、別の実施形態では、単一のサーバー206は、2つ以上のクライアントマシン240と通信する。また別の実施形態では、単一のクライアントマシン240は、単一のサーバー206と通信する。
クライアントマシン240は、幾つかの実施形態において、完全に網羅しているわけではないが、クライアントマシン(複数可)、クライアント(複数可)、クライアントコンピュータ(複数可)、クライアントデバイス(複数可)、クライアントコンピューティングデバイス(複数可)、ローカルマシン、遠隔マシン、クライアントノード(複数可)、エンドポイント(複数可)、またはエンドポイントノード(複数可)といった用語のいずれか1つによって参照することができる。サーバー206は、幾つかの実施形態において、完全に網羅しているわけではないが、サーバー(複数可)、ローカルマシン、遠隔マシン、サーバーファーム(複数可)、またはホストコンピューティングデバイス(複数可)といった用語のいずれか1つによって参照され得る。
一実施形態において、クライアントマシン240は、仮想マシンであり得る。仮想マシンは、任意の仮想マシンであり得るが、幾つかの実施形態では、仮想マシンは、例えば、Citrix Systems、IBM、VMwareによって開発されたハイパーバイザーなどのタイプ1もしくはタイプ2のハイパーバイザー、または任意の他のハイパーバイザーによって管理される任意の仮想マシンであってもよい。幾つかの態様において、仮想マシンは、ハイパーバイザーによって管理され得るが、態様では、仮想マシンは、サーバー206上で実行しているハイパーバイザーまたはクライアント240上で実行しているハイパーバイザーによって管理されてもよい。
幾つかの実施形態では、サーバー206または他の遠隔に位置するマシン上で遠隔で実行しているアプリケーションによって生成されるアプリケーション出力を表示するクライアントデバイス240が含まれる。これらの実施形態では、クライアントデバイス240は、仮想マシンの受信側プログラム(receiver program)またはアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示し得る。一実施例において、アプリケーションは、デスクトップであるが、他の実施例では、アプリケーションは、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルアプリケーション及び/または遠隔アプリケーションを組み込むことができるオペレーティングシステムのインスタンス用のユーザインターフェースを提供するグラフィカルシェルを含み得る。アプリケーションは、本明細書で使用されるとき、オペレーティングシステム(及び任意選択でデスクトップも)のインスタンスがロードされた後で実行しているプログラムである。
サーバー206は、幾つかの実施形態において、遠隔プレゼンテーションプロトコルまたは他のプログラムを使用して、データを、クライアント上で実行しているシンクライアントまたは遠隔ディスプレイアプリケーションに送信し、サーバー206上で実行しているアプリケーションによって生成されるディスプレイ出力を提示する。シンクライアントまたは遠隔ディスプレイプロトコルは、完全に網羅しているわけではないが、フロリダ州フォートローダーデールのCitrix Systems,Inc.によって開発されたIndependent Computing Architecture(ICA)プロトコル、またはワシントン州レドモンドのMicrosoft Corporationによって製造されたRemote Desktop Protocol(RDP)といった、プロトコルリストのうちのいずれか1つであり得る。
遠隔コンピューティング環境は、サーバー206a〜206nが、サーバーファーム206、例えば、クラウドコンピューティング環境に、論理的に一緒にグループ化されるように、2つ以上のサーバー206a〜206nを含み得る。サーバーファーム206は、地理的に分散される一方、論理的にグループ化されるサーバー206、または互いに近接して位置する一方、論理的にグループ化されるサーバー206を含み得る。サーバーファーム206内の地理的に分散されたサーバー206a〜206nは、幾つかの実施形態において、WAN(ワイド)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信することができ、その場合、異なる地理的領域は、異なる大陸、大陸の異なる領域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けることができる。幾つかの実施形態において、サーバーファーム206は、単一のエンティティとして管理され得るが、他の実施形態では、サーバーファーム206は、複数のサーバーファームを含むことができる。
幾つかの実施形態では、サーバーファームは、実質的に同様のタイプのオペレーティングシステムプラットフォーム(例えば、WINDOWS(登録商標)、UNIX(登録商標)、LINUX、iOS、ANDROID(登録商標)、SYMBIANなど)を実行しているサーバー206を含むことができる。他の実施形態において、サーバーファーム206は、第1のタイプのオペレーティングシステムプラットフォームを実行している1つ以上のサーバーの第1のグループと、第2のタイプのオペレーティングシステムプラットフォームを実行している1つ以上のサーバーの第2のグループとを含み得る。
サーバー206は、必要に応じて、例えば、ファイルサーバー、アプリケーションサーバー、ウェブサーバー、プロキシサーバー、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバー、仮想化サーバー、展開サーバー、セキュアなソケット層(SSL)VPNサーバー、ファイアウォール、ウェブサーバー、アプリケーションサーバーなどの任意のタイプのサーバーとして、あるいはマスタアプリケーションサーバー、アクティブディレクトリを実行しているサーバー、またはファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するアプリケーション高速化プログラムを実行しているサーバーとして構成されてもよい。また他のタイプのサーバーが使用されてもよい。
幾つかの実施形態では、クライアントマシン240から要求を受信し、要求を第2のサーバー106bに転送し、第2のサーバー106bからの応答でクライアントマシン240によって生成された要求に応答する、第1のサーバー106aが含まれる。第1のサーバー106aは、クライアントマシン240に対して利用可能なアプリケーションのリスト、及びアプリケーションのリスト内で特定されたアプリケーションをホスティングするアプリケーションサーバー206と関連付けられたアドレス情報を獲得し得る。次いで、第1のサーバー106aは、ウェブインターフェースを使用してクライアントの要求に対する応答を提示し、クライアント240と直接通信して、クライアント240に、特定されたアプリケーションへのアクセスを提供することができる。1つ以上のクライアント240及び/または1つ以上のサーバー206は、ネットワーク230、例えば、ネットワーク101上でデータを送信し得る。
図2は、デスクトップ仮想化システムのハイレベルアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、仮想デスクトップ及び/または仮想アプリケーションを1つ以上のクライアントアクセスデバイス240に提供するように構成された少なくとも1つの仮想化サーバー206を含む、単一のサーバーシステムもしくは複数のサーバーシステム、またはクラウドシステムであってもよい。本明細書で使用されるとき、デスクトップは、1つ以上のアプリケーションがホスティング及び/または実行され得るグラフィカル環境または空間を意味する。デスクトップは、ローカルアプリケーション及び/または遠隔アプリケーションを組み込むことができるオペレーティングシステムのインスタンス用のユーザインターフェースを提供するグラフィカルシェルを含み得る。アプリケーションは、オペレーティングシステム(及び任意選択でデスクトップも)のインスタンスがロードされた後で実行しているプログラムを含み得る。オペレーティングシステムの各インスタンスは、物理的(例えば、デバイスごとに1つのオペレーティングシステム)であっても、仮想(例えば、単一のデバイス上で実行しているOSの多くのインスタンス)であってもよい。各アプリケーションは、ローカルデバイス上で実行されても、遠隔に位置するデバイス(例えば、遠隔型)上で実行されてもよい。
示された第1のモビリティアプリケーション及び第2のモビリティアプリケーションは第1の及び
〈企業モビリティ管理アーキテクチャ〉
図3は、BYOD環境で使用するための企業モビリティ技術アーキテクチャ300を表す。本アーキテクチャは、モバイルデバイス302のユーザが、企業リソースまたは個人リソースにモバイルデバイス302からアクセスすること、及び個人での使用のためにモバイルデバイス302を使用することの両方を可能にする。ユーザは、ユーザによって購入されるモバイルデバイス302、または企業によってユーザに提供されるモバイルデバイス302を使用して、かかる企業リソース304または企業サービス308にアクセスし得る。ユーザは、ビジネスでの使用のみのため、またはビジネス及び個人での使用のためにモバイルデバイス302を利用してもよい。モバイルデバイスは、iOSオペレーティングシステム、Android(登録商標)オペレーティングシステムなどにおいて実行し得る。企業は、ポリシーを実装するように選び、モバイルデバイス304を管理してもよい。ポリシーは、モバイルデバイスが特定され、セキュア化されるかまたはセキュリティが検証され、かつ企業リソースに選択的または完全なアクセスが提供され得るようにファイアウォールまたはゲートウェイを通して埋め込まれ得る。ポリシーは、モバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイルデバイス、アプリケーション、及びデータ管理ポリシーの幾つかの組み合わせであり得る。モバイルデバイス管理ポリシーのアプリケーションを通して管理されるモバイルデバイス304は、登録されたデバイスと称され得る。
幾つかの実施形態において、モバイルデバイスのオペレーティングシステムは、管理される区分310及び管理されない区分312に分離され得る。管理される区分310は、それに適用されるポリシーを有して、管理される区分上で実行しているアプリケーション及び管理される区分に格納されたデータをセキュア化し得る。管理される区分上で実行しているアプリケーションは、セキュアなアプリケーションであり得る。他の実施形態において、すべてのアプリケーションは、アプリケーションから別々に受信され、1つ以上のセキュリティパラメータ、特性、リソース制限、及び/またはアプリケーションがデバイス上で実行しているときにモバイルデバイス管理システムによって実施される他のアクセス制御を定義する1つ以上のポリシーファイルのセットに従って実行し得る。それぞれのポリシーファイルに従って動作することによって、各アプリケーションは、1つ以上の他のアプリケーション及び/もしくはリソースとの通信が許容または制限され、それによって仮想区分を作成し得る。したがって、本明細書で使用されるとき、区分は、メモリの物理的に区分された部分(物理区分)、メモリの論理的に区分された部分(論理区分)、ならびに/または本明細書に記載の複数のアプリケーション上の1つ以上のポリシー及び/もしくはポリシーファイルの実施結果として作成された仮想区分(仮想区分)を意味し得る。言い換えると、管理されているアプリケーション上でポリシーを実施することによって、それらのアプリケーションは、他の管理されているアプリケーション及び信頼された企業リソースと通信することのみができるように制限され、それによって管理されないアプリケーション及びデバイスによって入り込めない仮想区分を作成し得る。
セキュアなアプリケーションは、電子メールアプリケーション、ウェブブラウザアプリケーション、サービスとしてのソフトウェア(SaaS)アクセスアプリケーション、Windows(登録商標) Applicationアクセスアプリケーションなどであり得る。セキュアなアプリケーションは、セキュアなネイティブアプリケーション314、セキュアなアプリケーションランチャー318によって実行されるセキュアな遠隔アプリケーション322、セキュアなアプリケーションランチャー318によって実行される仮想化アプリケーション326などであり得る。セキュアなネイティブアプリケーション314は、セキュアなアプリケーションラッパ320によってラッピングされ得る。セキュアなアプリケーションラッパ320は、セキュアなネイティブアプリケーションがデバイス上で実行されるとき、モバイルデバイス302上で実行される組み込まれたポリシーを含み得る。セキュアなアプリケーションラッパ320は、モバイルデバイス302上で実行しているセキュアなネイティブアプリケーション314を、セキュアなネイティブアプリケーション314がセキュアなネイティブアプリケーション314の実行の際に要求されたタスクを完了することを要求し得る、企業においてホスティングされたリソースに向けるメタデータを含み得る。セキュアなアプリケーションランチャー318によって実行されるセキュアな遠隔アプリケーション322は、セキュアなアプリケーションランチャーアプリケーション318内で実行され得る。セキュアなアプリケーションランチャー318によって実行される仮想化アプリケーション326は、企業リソース304などにおいて、モバイルデバイス302上のリソースを利用し得る。セキュアなアプリケーションランチャー318によって実行される仮想化アプリケーション326によってモバイルデバイス302上で使用されるリソースは、ユーザインタラクションリソース、処理リソースなどを含み得る。ユーザインタラクションリソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力などを収集し、送信するように使用さ得る。処理リソースは、ユーザインターフェース、企業リソース304から受信した処理データなどを提示するように使用され得る。セキュアなアプリケーションランチャー318によって実行される仮想化アプリケーション326によって企業リソース304において使用されるリソースは、ユーザインターフェース生成リソース、処理リソースなどを含み得る。ユーザインターフェース生成リソースは、ユーザインターフェースをアセンブリングする、ユーザインターフェースを修正する、ユーザインターフェースを最新にするなどのように使用され得る。処理リソースは、情報を作成する、情報を読み取る、情報を更新する、情報を消去するなどのように使用され得る。例えば、仮想化アプリケーションは、グラフィカルユーザインターフェース(GUI)に関連するユーザインタラクションを記録し、それらをサーバープリケーションに通信し得、サーバープリケーションは、ユーザインタラクションデータを、サーバー上で動作するアプリケーションへの入力として使用する。この配置では、企業は、サーバー側のアプリケーションならびにアプリケーションに関連するデータ、ファイルなどを維持するように選出し得る。企業は、モバイルデバイス上での展開のためにアプリケーションをセキュア化することによって、本明細書の原則に従って、幾つかのアプリケーションを「可動化」するように選出し得るが、本配置はまた、ある特定のアプリケーションのために選出され得る。例えば、幾つかのアプリケーションは、モバイルデバイス上での使用のためにセキュア化されてもよいが、他のアプリケーションは、モバイルデバイス上での展開のために用意されていないか、または適切でない場合があるため、企業は、モバイルユーザアクセスを、仮想化技術によって用意されていないアプリケーションに提供することを選出し得る。別の例として、企業は、大容量で複雑なデータセット(例えば、マテリアルリソースプランニングアプリケーション)を含む大容量で複雑なアプリケーションを有し得、その場合、モバイルデバイスのためのアプリケーションをカスタマイズすることは非常に困難であるか、またはそうでなければ望ましくないため、企業は、アプリケーションへのアクセスを仮想化技術によって提供することを選出し得る。また別の例として、企業は、企業によって、セキュア化されているモバイル環境に対してもあまりに機密性が高いとみなされ得る高度にセキュア化されているデータ(例えば、人材データ、顧客データ、工学データ)を維持するアプリケーションを有し得るため、企業は、仮想化技術を使用することを選出して、かかるアプリケーション及びデータへのモバイルアクセスを許可し得る。企業は、モバイルデバイス上の完全にセキュア化されているアプリケーション及び完全に機能的なアプリケーションの両方、ならびに仮想化アプリケーションを提供して、サーバー側でより適切に動作されるとみなされるアプリケーションへのアクセスを可能にすることを選出し得る。一実施形態において、仮想化アプリケーションは、セキュアなストレージ位置のうちの1つにおける携帯電話の幾つかのデータ、ファイルなどを格納し得る。例えば、企業は、ある特定の情報が電話に格納されることを可能にする一方で、他の情報を許可しないことを選出し得る。
仮想化アプリケーションに関連して、本明細書に記載の通り、モバイルデバイスは、GUIを提示し、次いでGUIとのユーザインタラクションを記録するように設計されている仮想化アプリケーションを有し得る。アプリケーションは、ユーザインタラクションを、アプリケーションとのユーザインタラクションとしてサーバー側のアプリケーションによって使用されるようにサーバー側に通信し得る。応答して、サーバー側のアプリケーションは、モバイルデバイスに新しいGUIを返送し得る。例えば、新しいGUIは、静的ページ、動的ページ、アニメーションなどであり、それによって遠隔に位置するリソースへのアクセスを提供し得る。
セキュアなアプリケーションは、モバイルデバイスの管理される区分310におけるセキュアなデータコンテナ328に格納されたデータにアクセスし得る。セキュアなデータコンテナ内でセキュア化されているデータは、セキュアなラッピングされたアプリケーション314、セキュアなアプリケーションランチャー322によって実行されるアプリケーション、セキュアなアプリケーションランチャー322によって実行される仮想化アプリケーション326などによってアクセスされ得る。セキュアなデータコンテナ328内に格納されるデータとしては、ファイル、データベースなどが挙げられ得る。セキュアなデータコンテナ328内に格納されるデータは、特定のセキュアなアプリケーション330、共有されたセキュアなアプリケーション332などに制限されるデータを含み得る。セキュアなアプリケーションに制限されたデータは、セキュアな一般データ334及び非常にセキュアなデータ338を含み得る。セキュアな一般データは、高度暗号化標準(AES)128ビット暗号化などの強い形式の暗号化を使用し得るが、非常にセキュアなデータ338は、AES256ビット暗号化などの非常に強い形式の暗号化を使用し得る。セキュアなデータコンテナ328内に格納されたデータは、デバイスマネージャ324からのコマンド受信時にデバイスから消去さ得る。セキュアなアプリケーションは、デュアルモードオプション340を有し得る。デュアルモードオプション340は、ユーザに、セキュア化されているアプリケーションを、セキュア化されていないモードまたは管理されないモードで動作するためのオプションを提示し得る。セキュア化されていないモードまたは管理されないモードでは、セキュアなアプリケーションは、モバイルデバイス302の管理されない区分312上のセキュア化されていないデータコンテナ342内に格納されるデータにアクセスし得る。セキュア化されていないデータコンテナ内に格納されるデータは、パーソナルデータ344であり得る。セキュア化されていないデータコンテナ342内に格納されるデータはまた、モバイルデバイス302の管理されない区分312上で実行しているセキュア化されていないアプリケーション348によってアクセスもされ得る。セキュア化されていないデータコンテナ342内に格納されたデータは、セキュアなデータコンテナ328内に格納されたデータがモバイルデバイス302から消去された場合にモバイルデバイス302上に残存し得る。企業は、モバイルデバイスから、企業によって所有、ライセンス取得、または制御されている選択のもしくはすべてのデータ、ファイル、及び/またはアプリケーション(企業データ)を消去することを望む一方で、ユーザによって所有、ライセンス取得、または制御さているパーソナルデータ、ファイル、及び/またはアプリケーション(パーソナルデータ)をそのままにするか、または別様に保存することを望み得る。この動作は、選択的ワイプと称され得る。本明細書に記載の態様に従って配置された企業データ及びパーソナルデータで、企業は選択的ワイプを実行し得る。
モバイルデバイスは、企業において、企業リソース304及び企業サービス308をパブリックインターネット348などに接続し得る。モバイルデバイスは、仮想私設網接続を経由して企業リソース304及び企業サービス308に接続し得る。マイクロVPNまたはアプリケーション特定VPNとも称される仮想私設網接続は、特定のアプリケーション350、特定のデバイス、モバイルデバイスの特定のセキュア化されている領域、及び同種のもの352に特定され得る。例えば、電話のセキュア化されている領域におけるラッピングされたアプリケーションの各々は、おそらくユーザまたはデバイスの属性情報に関連して、VPNへのアクセスがアプリケーションに関連した属性に基づいて容認されるように、アプリケーション特定VPNを経由して企業リソースにアクセスし得る。仮想私設網接続は、Microsoft Exchangeトラフィック、Microsoft Active Directoryトラフィック、ハイパーテキスト転送プロトコル (HTTP)トラフィック、ハイパーテキスト転送プロトコルセキュア(HTTPS)トラフィック、アプリケーション管理トラフィックなどを実行し得る。仮想私設網接続は、シングルサインオン認証プロセス354をサポートし、可能にし得る。シングルサインオンプロセスは、ユーザが認証資格情報の単一のセットを提供することを可能にし得、次いで、資格情報が認証サービス358によって検証される。次いで、認証サービス358は、ユーザに認証資格情報を各個人の企業リソース304に提供することを要求していることなく、複数の企業リソース304へのユーザアクセスを容認し得る。
仮想私設網接続は、アクセスゲートウェイ360によって確立及び管理され得る。アクセスゲートウェイ360は、企業リソース304のモバイルデバイス302への配信を管理し、加速し、かつ向上させる性能向上特性を含み得る。アクセスゲートウェイは、モバイルデバイス302からパブリックインターネット348までのトラフィックを再ルーティングし、モバイルデバイス302が、パブリックインターネット348上で動作する公衆利用可能でセキュア化されないアプリケーションにアクセスすることを可能にし得る。モバイルデバイスは、転送ネットワーク362を介してアクセスゲートウェイに接続し得る。転送ネットワーク362は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、私設網などであり得る。
企業リソース304は、電子メールサーバー、ファイル共有サーバー、SaaSアプリケーション、ウェブアプリケーションサーバー、Windows(登録商標)アプリケーションサーバーなどを含み得る。電子メールサーバーは、Exchangeサーバー、Lotus Notesサーバーなどを含み得る。ファイル共有サーバーは、ShareFileサーバーなどを含み得る。SaaSアプリケーションは、Salesforceなどを含み得る。Windows(登録商標)アプリケーションサーバーは、ローカルのWindows(登録商標)オペレーティングシステムなどで動作するように意図されているアプリケーションを提供するように構築されている任意のアプリケーションサーバーを含み得る。企業リソース304は、プレミスベースのリソース、クラウドベースのリソースなどであり得る。企業リソース304は、直接またはアクセスゲートウェイ360を経由して、モバイルデバイス302によってアクセスされ得る。企業リソース304は、転送ネットワーク362を介してモバイルデバイス302によってアクセスされ得る。転送ネットワーク362は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、私設網などであり得る。
企業サービス308は、認証サービス358、脅威検出サービス364、デバイスマネージャサービス324、ファイル共有サービス368、ポリシーマネージャサービス370、ソーシャルインテグレーションサービス372、アプリケーションコントローラサービス374などを含み得る。認証サービス358は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、データ認証サービスなどを含み得る。認証サービス358は、証明書を使用し得る。証明書は、企業リソース304などによってモバイルデバイス302上に格納され得る。モバイルデバイス302上に格納される証明書は、モバイルデバイス上の暗号化された位置に格納され得、証明書は、認証時などにおける使用のためにモバイルデバイス302上に一時的に格納され得る。脅威検出サービス364には、侵入検出サービス、認証されていないアクセス試行検出サービスなどが含まれ得る。認証されていないアクセス試行検出サービスには、デバイス、アプリケーション、データなどにアクセスする認証されていない試行が含まれ得る。デバイス管理サービス324には、構成、プロビジョニング、セキュリティ、サポート、監視、報告、及びデコミッショニングサービスが含まれ得る。ファイル共有サービス368には、ファイル管理サービス、ファイルストレージサービス、ファイル協働サービスなどが含まれ得る。ポリシーマネージャサービス370には、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービスなどが含まれ得る。ソーシャルインテグレーションサービス372には、連絡先組み込みサービス、協働サービス、ならびにFacebook、Twitter、及びLinkedInなどのソーシャルネットワークの組み込みなどが含まれ得る。アプリケーションコントローラサービス374には、管理サービス、プロビジョニングサービス、展開サービス、割り当てサービス、取り消しサービス、ラッピングサービスなどが含まれ得る。
企業モビリティの技術アーキテクチャ300は、アプリケーションストア378を含み得る。アプリケーションストア378は、ラッピングされていないアプリケーション380、事前にラッピングされたアプリケーション382などを含み得る。アプリケーションは、アプリケーションコントローラ374からアプリケーションストア378内に置かれ得る。アプリケーションストア378は、パブリックインターネット348などを経由して、アクセスゲートウェイ360を経由してモバイルデバイス302によってアクセスされ得る。アプリケーションストアには、直感的で、かつ使いやすいユーザインターフェースが提供され得る。
ソフトウェア開発キット384は、本説明において前述されたようなアプリケーションをラッピングすることによって、ユーザによって選択されたアプリケーションをセキュア化する能力をユーザに提供し得る。次いで、ソフトウェア開発キット384を使用してラッピングされたアプリケーションが、アプリケーションコントローラ374を使用してアプリケーションストア378内に置かれることによってモバイルデバイス302に対して利用可能になり得る。
企業モビリティのテクニカルアーキテクチャ300は、管理及び分析能力588を含み得る。管理及び分析能力588は、どのようにリソースが使用されるか、どれほどの頻度でリソースが使用されるかなどに関する情報を提供し得る。リソースには、デバイス、アプリケーション、データなどが含まれ得る。どのようにリソースが使用されるかには、どのデバイスがどのアプリケーションをダウンロードするか、どのアプリケーションがどのデータにアクセスするかなどが含まれ得る。どれほどの頻度でリソースが使用されるかには、どれほどの頻度でアプリケーションがダウンロードされたか、アプリケーションによってデータの特定のセットが何回アクセスされたかなどが含まれ得る。
図4は、別の例示的な企業モビリティ管理システム400である。図3に関して上に記載のモビリティ管理システム300のコンポーネントのうちの幾つかは、簡潔性のために省略されている。図4に示されるシステム400のアーキテクチャは、図3に関して上に記載のシステム300のアーキテクチャに関する多くの点で同様であり、上で述べられていない追加の特性を含み得る。
この場合、左手側は、ゲートウェイサーバー406(アクセスゲートウェイ及びアプリケーションコントローラ機能を含む)と相互作用して、種々の企業リソース408、及び右手側上方に示されるような、Exchange、Sharepoint、公開鍵基盤(PKI)リソース、Kerberosリソース、証明書発行サービスなどのサービス409にアクセスする、クライアントエージェント404を備えた、登録されたモバイルデバイス402を表す。詳細に示されないが、モバイルデバイス402はまた、アプリケーションの選択及びダウンロード用に企業アプリケーションストア(StoreFront)と相互作用もし得る。
クライアントエージェント404は、High−Definition User Experience(HDX)/ICA表示リモーティングプロトコルを使用してアクセスされる企業データセンタにおいてホスティングされる、Windows(登録商標)アプリケーション/デスクトップ用のUI(ユーザインターフェース)仲介として作用する。クライアントエージェント404はまた、ネイティブiOSまたはAndroid(登録商標)アプリケーションなどの、モバイルデバイス402上でのネイティブアプリケーションのインストール及び管理もサポートする。例えば、上の図で示される管理されているアプリケーション410(メール、ブラウザ、ラッピングされたアプリケーション)は、デバイス上においてローカルで実行しているすべてネイティブアプリケーションである。クライアントエージェント404及びこのアーキテクチャのアプリケーション管理フレームワークは、企業リソース/サービス408への接続性及びSSO(シングルサインオン)など、ポリシー駆動型管理の能力及び特性を提供するように作用する。クライアントエージェント404は、他のゲートウェイサーバーコンポーネントへのSSOを含む通常アクセスゲートウェイ(AG)へ、企業への一次ユーザ認証を扱う。クライアントエージェント404は、ゲートウェイサーバー406からポリシーを取得して、モバイルデバイス402上での管理されているアプリケーション410の行動を制御する。
ネイティブアプリケーション410とクライアントエージェント404との間のセキュアなプロセス間通信(IPC)リンク412は、クライアントエージェントが、各アプリケーションを「ラッピング」するアプリケーション管理フレームワーク414によって実施されるポリシーを提供することを可能にする管理チャネルを表す。IPCチャネル412はまた、クライアントエージェント404が、企業リソース408への接続性及びSSOを可能にする資格情報及び認証情報を提供することも可能にする。最後に、IPCチャネル412は、アプリケーション管理フレームワーク414が、オンライン及びオフライン認証など、クライアントエージェント404によって実装されるユーザインターフェース機能を呼び出すことを可能にする。
クライアントエージェント404とゲートウェイサーバー406との間の通信は、本質的に、ネイティブの管理されているアプリケーション410の各々をラッピングするアプリケーション管理フレームワーク414の管理チャネルの延長である。アプリケーション管理フレームワーク414は、クライアントエージェント404にポリシー情報を要求し、次にゲートウェイサーバー406にポリシー情報を要求している。アプリケーション管理フレームワーク414は、認証を要求し、クライアントエージェント404は、ゲートウェイサーバー406(NetScaler Access Gatewayとしても知られる)のゲートウェイサービス部分にログインする。クライアントエージェント404はまた、ゲートウェイサーバー406上のサポートサービスを呼び出し、サポートサービスは、入力素材を生成してローカルデータボルト416用の暗号化鍵を導出し得るか、または下記でより完全に説明されるように、PKI保護リソースへの直接認証を有効にし得るクライアント証明書を提供し得る。
より詳細には、アプリケーション管理フレームワーク414は、管理されているアプリケーション410の各々を「ラッピング」する。これは、明確な構築ステップを介して、または構築後処理ステップを介して組み込まれ得る。アプリケーション管理フレームワーク414は、アプリケーション410の最初の起動においてクライアントエージェント404と「対」になって、セキュアなIPCチャネルを開始し、そのアプリケーション用のポリシーを取得し得る。アプリケーション管理フレームワーク414は、クライアントエージェントのログイン依存性など、ローカルに適用するポリシーの関連する部分、及びローカルOSサービスがどのように使用され得るか、またはローカルOSサービスがアプリケーション410とどのように相互作用し得るかを制限する格納ポリシーの幾つかを実施し得る。
アプリケーション管理フレームワーク414は、セキュアなIPCチャネル412上でクライアントエージェント404によって提供されるサービスを使用して、認証及び内部ネットワークアクセスを容易にし得る。プライベート及び共有データボルト416(コンテナ)のための鍵管理はまた、管理されているアプリケーション410とクライアントエージェント404との間の適切なインタラクションによって管理され得る。ボルト416は、オンライン認証後のみに利用可能であり得るか、またはポリシーによって許容される場合、オフライン認証後に利用可能にされ得る。ボルト416の最初の使用は、オンライン認証を要求し得、オフラインアクセスは、オンライン認証が再度要求される前に、最大でもポリシー最新化期間に限定され得る。
内部リソースへのネットワークアクセスは、個々の管理されているアプリケーション410からアクセスゲートウェイ406を通じて直接生じ得る。アプリケーション管理フレームワーク414は、各アプリケーション410の代わりに、ネットワークアクセスを組織化することを担う。クライアントエージェント404は、オンライン認証に続いて取得される好適な時間が限定された二次資格情報を提供することによってこれらのネットワーク接続を容易にし得る。リバースウェブプロキシ接続、及びエンドツーエンドVPN様式トンネル418などネットワーク接続の複数のモードが使用され得る。
メール及びブラウザの管理されているアプリケーション410は、特別な状態を有し、任意のラッピングされたアプリケーションに対して一般的に利用可能でない場合がある設備を利用し得る。例えば、メールアプリケーションは、完全なAGログオンを要求せずに、延長された期間にわたってExchangeにアクセスすることを許容する特別なバックグラウンドネットワークアクセス機構を使用し得る。ブラウザアプリケーションは、複数のプライベートデータボルトを使用して異なる種類のデータを分離し得る。
このアーキテクチャは、種々の他のセキュリティ特性の組み込みをサポートする。例えば、ゲートウェイサーバー406(ゲートウェイサーバー406のゲートウェイサービスも含む)は、場合によって、アクティブディレクトリ(AD)パスワードを妥当性確認する必要がない。ADパスワードがある状況下において一部のユーザのための認証要因として使用されるか否かは、企業の裁量に委ねられることができる。ユーザがオンラインまたはオフラインである(すなわち、ネットワークに接続されているか、または接続されていない)場合、異なる認証方法が使用され得る。
ステップアップ認証は、強い認証を要求している高度に分類されたデータへのアクセスを有することを許容された、管理されているネイティブアプリケーション410をゲートウェイサーバー406が特定し、以前のさらに弱いレベルのログインの後、これが、再認証がユーザによって要求されることを意味する場合でも、これらのアプリケーションへのアクセスが適切な認証を実行した後のみに許可されることを確実にし得る、特性である。
この解決方法の別のセキュリティ特性は、モバイルデバイス402上でのデータボルト416(コンテナ)の暗号化である。ボルト416は、ファイル、データベース、及び構成を含むデバイス上のすべてのデータが保護されるように暗号化され得る。オンラインボルトについて、鍵はサーバー(ゲートウェイサーバー406)上に格納され得、オフラインボルトについて、鍵のローカルコピーは、ユーザパスワードまたは生体妥当性確認によって保護され得る。データがセキュアなコンテナ416内のデバイス402上にローカルに格納される場合、AES256暗号化アルゴリズムの最小限が利用されることが好ましい。
他のセキュアなコンテナ特性も実装され得る。例えば、アプリケーション410内で起こるすべてのセキュリティ事象がログされ、バックエンドに報告される、ロギング特性が含まれ得る。アプリケーション410がタンパリングを検出した場合、関連付けられた暗号化鍵がランダムデータで上書きされ、ユーザデータが破壊されたファイルシステム上にヒントを残さなくてもよいなどのデータ消去がサポートされ得る。スクリーンショット保護は別の特性であり、アプリケーションが、任意のデータがスクリーンショットに格納されることを防止し得る。例えば、鍵ウィンドウの隠された特徴が、はい、に設定され得る。これにより、画面上に現在表示されているすべてのコンテンツが隠され、その結果、任意のコンテンツが通常は存在するはずである空白のスクリーンショットがもたらされ得る。
例えば、データをコピーするか、または外部アプリケーションへ送信することによって、任意のデータがアプリケーションコンテナの外部にローカルに転送されることを防止することによって、ローカルなデータ転送を防止し得る。キーボードキャッシュ特性は、センシティブなテキストフィールドのためのオートコレクト機能を無効にするように動作し得る。SSL証明書の妥当性確認が動作可能であり得るため、アプリケーションは、サーバーSSL証明書を、キーチェーンに格納する代わりに、特別に妥当性確認する。デバイス上でデータを暗号化するために使用される鍵が、ユーザによって提供されるパスフレーズまたは生体データを使用して生成される(オフラインアクセスが要求される場合)ように、暗号化鍵生成特性が使用され得る。オフラインアクセスが要求されない場合、ランダムに生成され、サーバー側に格納された別の鍵で排他的論理和がとられてもよい。ユーザパスワードから生成された鍵が、その暗号学的ハッシュを作成するのではなく、KDF(鍵導出機能、とりわけパスワードベースの鍵導出機能2(PBKDF2))を使用するように、鍵導出機能が動作し得る。後者は鍵を総当たり攻撃または辞書攻撃に対して脆弱にする。
さらに、1つ以上の初期化ベクトルが暗号化方法において使用され得る。初期化ベクトルは、同じ暗号化データの複数のコピーに異なる暗号文出力を生成させ、反射攻撃及び暗号解読攻撃の両方を防ぐ。これはまた、データを暗号化するために使用される特定の初期化ベクトルが知られていない場合、攻撃者が、盗まれた暗号化鍵ででも、任意のデータを解読することを防止する。さらに、ユーザがアプリケーション内で認証した後のみアプリケーションデータが解読される、認証後の解読が使用され得る。別の特性は、必要とされる場合のみにメモリ内に(及びディスク内ではなく)保持され得る、メモリ内のセンシティブなデータに関し得る。例えば、ログイン資格情報は、ログイン後にメモリから消去され得、暗号化鍵及びObjective−C事象変数の中の他のデータは、容易に参照され得るため、格納されない。その代わりに、メモリがこれらのために手動で割り当てられ得る。
非アクティビティのポリシーが定義された期間の後、ユーザセッションが終了される、非アクティブタイムアウトが実装され得る。
アプリケーション管理フレームワーク414からのデータ漏洩は、他の方法で防止され得る。例えば、アプリケーション410がバックグラウンドに置かれる場合、メモリは所定の(構成可能な)期間の後に削除され得る。バックグラウンド化される場合、アプリケーションの最後に表示された画面のスナップショットが撮られて、フォアグラウンドプロセスを固定し得る。スクリーンショットは、機密データを含み得るゆえに削除されるべきである。
別のセキュリティ特性は、1つ以上のアプリケーションにアクセスするためのAD(アクティブディレクトリ)422パスワードの使用を伴わないOTP(ワンタイムパスワード)420の使用に関する。場合によって、一部のユーザは自分のADパスワードを知らない(または知ることが許可されていない)ので、これらのユーザは、SecurIDのようなハードウェアOTPシステム(OTPは、EntrustまたはGemaltoなどの異なる販売者によって提供され得る)を使用することによってなど、OTP420を使用して認証し得る。場合によっては、ユーザがユーザIDで認証した後、テキストがOTP420を有するユーザに送信される。場合によっては、これは、単一のフィールドであるプロンプトで、オンライン使用のためだけに実装され得る。
オフライン使用が企業ポリシーを介して許可される、それらのアプリケーション410に対するオフライン認証のためのオフラインパスワードが実装され得る。例えば、企業は、StoreFrontがこの方式でアクセスされることを望み得る。この場合、クライアントエージェント404は、ユーザがカスタムオフラインパスワードを設定することを要求し得、ADパスワードは使用されない。ゲートウェイサーバー406は、ポリシーを提供して、標準Windows(登録商標) Serverの複雑性要件は修正されてもよいが、これらの要件に説明されるような最小限の長さ、文字クラスの構成、ならびにパスワードの経過年に関するパスワード標準を制御及び実施し得る。
別の特性は、(アプリケーション管理フレームワークマイクロVPN特性を介してPKI保護ウェブリソースにアクセスする目的のための)二次資格情報としてのある特定のアプリケーション410のためのクライアント側の証明書の有効化に関するに。例えば、アプリケーションは、かかる証明書を利用してもよい。この場合、クライアントエージェント404からの証明書がゲートウェイサーバー406によって回収され、キーチェーンにおいて使用され得る、ActiveSyncプロトコルを使用する証明書ベースの認証がサポートされ得る。管理されているアプリケーションの各々は、ゲートウェイサーバー406において定義されているラベルによって特定される、1つの関連付けられたクライアント証明書を有し得る。
ゲートウェイサーバー406は、企業の特定用途ウェブサービスと相互作用し、クライアント証明書の発行をサポートして、関連する管理されているアプリケーションが内部PKI保護リソースを認証することを許容し得る。
クライアントエージェント404及びアプリケーション管理フレームワーク414は、内部PKI保護ネットワークリソースに対する認証のためのクライアント証明書を取得及び使用することをサポートするように強化され得る。種々の度合いのセキュリティ及び/または分離要件に合致するように、1つ以上の証明書がサポートされ得る。証明書は、メール及びブラウザの管理されているアプリケーションによって、及び最終的に任意のラッピングされたアプリケーション(もし、それらのアプリケーションが、アプリケーション管理フレームワークがhttps要求を仲介することが合理的である、ウェブサービススタイル通信パターンを使用するのであれば)によって使用され得る。
iOS上でのアプリケーション管理クライアント証明書サポートは、公開鍵暗号化標準(PKCS)12BLOB(バイナリラージオブジェクト)を、管理されているアプリケーションの各々のiOSキーチェーンの中に、使用期間ごとに、インポートすることに依存し得る。プリケーション管理フレームワークのクライアント証明書サポートは、プライベートメモリ内の鍵ストレージでのHTTPS実装を使用し得る。クライアント証明書は、iOSキーチェーン内には決して存在することはなく、潜在的に、強力に保護されている「オンラインのみ」のデータ値以外、持続されない。
また相互SSLが実装され、モバイルデバイス402が企業に対して及びその逆に対して認証されることを要求していることによって追加のセキュリティを提供し得る。またゲートウェイサーバー406に対する認証のための仮想スマートカードが実装され得る。
Kerberosの限定されたサポート及び完全なサポートの両方が追加の特性であってもよい。完全なサポート特性は、ADパスワードまたは信頼されたクライアント証明書を使用する、アクティブディレクトリ(AD)422への完全なKerberosログインを行い、かつKerberosサービスチケットを取得してHTTP交渉認証チャレンジに応答するための能力に関する。限定されたサポート特性は、HTTP交渉認証チャレンジに応答して、(制約付き委任の対象である)Kerberosサービスチケットを取得及び使用できるようにAGEEがKerberosプロトコルの移行を呼び出すことをサポートするCitrix Access Gateway Enterprise Edition(AGEE)における制約付き委任に関する。この機構は、リバースウェブプロキシ(別名、コーポレート仮想私設網(CVPN))モードで、http(httpsではない)接続がVPN及びMicroVPNモードでプロキシされるときに、作動する。
別の特性は、脱獄またはルーティングの検出の際に自動的に生じ、管理コンソールからのプッシュされたコマンドとして生じ得、かつアプリケーション410が実行していないときでも遠隔消去機能を含み得る、アプリケーションコンテナのロッキング及び消去に関する。
エンタープライズアプリケーションストア及びアプリケーションコントローラのマルチサイトアーキテクチャまたは構成がサポートされ得、これにより、故障の場合、ユーザが幾つかの異なる位置のうちの1つからサービスを受けることを許容する。
場合によっては、管理されているアプリケーション410は、API(例はOpenSSL)を介して証明書及びプライベート鍵にアクセスすることが許容され得る。企業の信頼されている管理されているアプリケーション410は、アプリケーションのクライアント証明書及びプライベート鍵によって特定の公開鍵動作を実行しているように許容され得る。アプリケーションがブラウザのように挙動し、証明書アクセスが要求されない場合、アプリケーションが「私は誰」に対する証明書を読み取る場合、アプリケーションが証明書を使用してセキュアなセッショントークンを構築する場合、及びアプリケーションが重要なデータ(例えば、取引ログ)のデジタル署名のために、または一時的なデータ暗号化のためにプライベート鍵を使用する場合など、種々の使用の状況が特定され、適切に処理され得る。
本開示の種々の態様を提供及び/または実施する際に使用され得る、コンピューティングアーキテクチャ及び企業モビリティ管理アーキテクチャの幾つかの実施例を論じたが、多くの実施形態をここでより詳細に説明する。特に、上で紹介したように、本開示の幾つかの態様は、一般に、アプリケーション固有のVPNサーバーを介して、各モバイルアプリケーションのアプリケーションネットワークトラフィックを、私設網にトンネリングすることに関する。アプリケーション固有のVPNサーバーは、所与の1つのモバイルアプリケーションに対してのみ、VPN接続を管理し、それぞれのモバイルアプリケーションによって発行されたシステムコールを傍受して、関連するすべてのネットワークトラフィックを私設網にトンネリングすることができる。
〈モバイルVPNトンネリング〉
図5は、TCPトンネリングプロトコルを使用するモバイルVPN接続を管理する例示的なモバイルVPNシステム500を示す。図5に示す実施形態によると、MDMシステムによって管理されているエンタープライズモバイルアプリケーションは、私設網へのセキュアなVPN接続を介して、企業リソースにアクセスすることができる。例えば、管理されているアプリケーション502は、例えばマイクロVPNを使用して、公衆回線を介してアクセスゲートウェイ516に接続し、図4の企業モビリティ管理システム400のようなMDMシステムによって管理されていないモバイルアプリケーションのような、セキュリティ対策が施されていないモバイルアプリケーション及び/または管理されていないモバイルアプリケーションによってアクセスできないアクセスゲートウェイ516を介して、セキュアなポータルにアクセスすることができる。
幾つかの実施形態では、モバイルVPNシステム500は、インバウンドトラフィック及びアウトバウンドトラフィックを、管理されているアプリケーション502から管理することができる。管理されているアプリケーション502が実行しているモバイルデバイス(例えば、図4のモバイルデバイス402)は、管理されているアプリケーション502が、520へのアクセスを有するデバイスによってアクセスできない私設網520と通信することを要求しているか否かを監視することができる。例えば、私設回線520は、アクセスを備えた企業アプリケーションのみが仮想私設網接続を介してアクセスすることができるファイアウォールによって公衆網(例えば、インターネット)から分離されてもよい。管理されているアプリケーション502のモバイルデバイスは、公衆網に接続され得る。モバイルデバイス上で実行している管理されていないモバイルアプリケーションは、公衆網にアクセスすることができる管理されているアプリケーション520もまた、公衆網にアクセスすることができる。私設網520にアクセスするために、管理されているアプリケーション520は、公衆網を介して、私設網520へのVPN接続を確立する必要があり得る。例えば、管理されているアプリケーションは、管理されているアプリケーション502のアウトバウンドトラフィックを私設網520に転送することができるモバイルデバイスのポートを介して、アクセスゲートウェイ516にVPN接続をセットアップする要求を発行することができる。これに加えて、またはこれに代えて、アクセスゲートウェイ516はまた、管理されているアプリケーション502宛ての私設網520からの通信を送信し、管理されているアプリケーション502に返送することもできる。
管理されているアプリケーション502は、幾つかの異なる通信プロトコルを使用して私設網520と通信することができる。例えば、管理されているアプリケーション502は、異なるトンネリング及び/または通信プロトコルを使用して、私設網520とトンネリング接続及び/または仮想私設網接続を確立することができる。管理されているアプリケーション502と私設網520との間のVPN接続を確立するために使用されるモバイルVPNシステムのシステムアーキテクチャは、管理されているアプリケーション502によってサポートされるトンネリング及び/または通信プロトコルのタイプに応じて変化し得る。VPN接続によって私設網520と通信するための各管理されているアプリケーション502については、モバイルデバイスが使用するトンネリングプロトコルのタイプを決定することができる。トンネリングプロトコルを決定すると、モバイルデバイスは、VPN接続を介してトンネリングされるアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508をどのように処理するかを適切に決定することができる。図5に示す実施形態は、TCP私設網接続及びTCPトンネリングプロトコルと同様のネットワークアーキテクチャに依存する他の私設網接続を容易にするために使用されるモバイルVPNシステム500を示す。図6は、UDP私設網接続及びUDPトンネリングプロトコルと同様のネットワークアーキテクチャに依存する他の私設網接続を容易にするために使用されるモバイルVPNシステム600を示す。図7は、DNS私設網接続及びDNSトンネリングプロトコルと同様のネットワークアーキテクチャに依存する他の私設網接続を容易にするために使用されるモバイルVPNシステム600を示す。UDP私設網接続及びDNS私設網接続については、それぞれ以下の図6及び7でより詳しく説明する。
幾つかの実施形態では、モバイルデバイス及び/または管理されているアプリケーション502は、管理されているアプリケーション502及び管理されているアプリケーション502が通信する任意の関連する動的ライブラリ504によって行われるすべてのシステムコールを傍受する。管理されているアプリケーション502によって呼び出される動的ライブラリ504が生成するすべてのアプリケーションネットワークトラフィック506及びライブラリネットワークトラフィック508を傍受するために、管理されているアプリケーション502及び関連する動的ライブラリ504によって行われるすべてのシステムコールが傍受され得る。従来のシステムとは異なり高レベルのアプリケーショントラフィックを傍受する代わりに、モバイルVPNシステム500は、アプリケーショントラフィック(例えばシステムコール)の最低レベルを傍受することができる。管理されているアプリケーション502及びその関連ライブラリがモバイルデバイスのオペレーティングシステムに行うすべてのシステムコールを傍受することによって、モバイルデバイスは、ローカルデバイスソケット518上の接続を開始するためにすべてのシステムコールを特定することができる。例えば、モバイルデバイスは、モバイルデバイスのローカルデバイスソケット518上の私設仮想網520へのトンネル及び/または仮想私設網接続を開始するために、connect()及びconnectx()など、すべてのシステムコールを特定することができる。管理されているアプリケーション502及びその関連する動的ライブラリ504によって作られたモバイルデバイス上のソケット接続のこのようなすべてのインスタンスを特定することにより、モバイルデバイスは、管理されているアプリケーション502によるすべての要求及び/または試みを傍受して、私設仮想網520と通信する、及び/または仮想私設網接続を介して、アプリケーションネットワークトラフィック506及びライブラリネットワークトラフィック508をトンネリングすることを実現する。アプリケーションネットワークトラフィック506及び/またはライブラリネットワーク506は、私設網520に伝達するトラフィックペイロードを含むメッセージと共にVPNに接続するためのこのようなシステムコールを含むことができる。アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィック508内に存在するVPN(例えば、この例ではconnect()及びconnectx()システムコール)に接続するためのシステムコールを傍受することにより、モバイルデバイスは、管理されているアプリケーション502からすべてのVPNトラフィックを傍受することができる。本開示では、connect()及びconnectx()が例として使用されるが、モバイルデバイスは、様々な異なるタイプのモバイルオペレーティングシステム(例えば、iOS、Android(登録商標)、Firefox OS、Windows(登録商標) Phone OS、Blackberry OS、Tizen OS、Ubuntu Touch OSなど)によって行われることが知られているすべてのシステムコールについて、アプリケーションネットワークトラフィック506及びライブラリネットワークトラフィック508におけるシステムコールを監視することができる。
幾つかの実施形態では、VPNに接続するシステムコールが傍受されると、このようなシステムを使用するアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508は、動的ポートにリダイレクトされる。モバイルデバイスは、私設網520への傍受されたVPNシステムコールに関連するアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508をトンネリングするために、モバイルデバイスからTCP接続が確立される動的ポートを生成することができる。モバイルデバイスは、複数の異なる動的ポート510a〜nをローカルデバイスソケット518上に生成することができる。各モバイルデバイスは、私設網520との通信を要求している管理されているアプリケーション502のような複数の管理されているモバイルアプリケーションを有することができる。各管理されているアプリケーション502について、モバイルデバイスは、モバイルデバイス上のすべての動的ポート510a〜nからの1つ以上の動的ポート510a〜510cを割り振ることができる。動的ポートは、トラフィックの宛先ネットワークアドレスを決定することによって、特定のタイプのアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508にアサインすることができる。モバイルデバイスは、マッピングテーブル520を参照して、1つ以上のメッセージの宛先ネットワークアドレスに基づいて、1つ以上のメッセージ(例えば、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508)をアサインする動的ポートを決定することができる。マッピングテーブル520は、異なる宛先ネットワークアドレス512a〜nを備えたモバイルデバイスのすべての動的ポート510a〜510nのマッピングを含むことができる。傍受されたシステムコールから異なる宛先ネットワークアドレスに対する新たな要求が受信されると、モバイルデバイスは、モバイルデバイスのローカルデバイスソケット518に新しい動的ポートを生成して、そのような宛先ネットワークアドレスにトラフィックをルーティングし、新たに生成された動的ポートと、新たに生成された動的ポートがトラフィックをトンネリングするように作成される私設網520内の対応する宛先ネットワークアドレスとの間の関連付けを行うためにマッピングテーブル520をアップデートする。
幾つかの実施形態では、私設網へのトラフィックを処理するために、アプリケーション固有のプロキシTCPサーバー514が各動的ポートで生成される。各動的ポートで、ローカルデバイスソケット518の動的ポートからの接続が生成され、動的ポートをプロキシTCPサーバー514に接続して、私設網520への各TCP VPN接続のトラフィックメッセージのルーティングを処理する。プロキシサーバー514は、オンラインウェブサーバーを使用して、アプリケーションネットワークトラフィック506を管理されているモバイルアプリケーション502から私設網520にトンネリングするためのプロキシを作成することができる。プロキシサーバー514は、アプリケーション固有のサーバーであってもよく、それが役割を果たすように構成されているモバイルアプリケーションのアプリケーションネットワークトラフィックのみを処理してもよい。これに加えて、またはこれに代えて、モバイルデバイスの動的ポートで生成される各TCP接続及び/またはTCPトンネルは、管理されているアプリケーション502にのみ専用にサービスを提供することができる。したがって、VPN接続は、管理されているモバイルアプリケーションのみに対してアプリケーションネットワークトラフィックをトンネリングするアプリケーション固有のVPNである。
幾つかの実施形態では、モバイルVPNシステム500は、各管理されているアプリケーション502について1つ以上のTCPトンネリング接続をセットアップ及び維持することができる。アクセスゲートウェイ516へのTCP接続が確立されると、すでにマッピングテーブル520内で行われた、及びローカルデバイスソケット518内ですでに生成された動的ポートに対応する、宛先ネットワークアドレスを特定するアプリケーションネットワークトラフィック及び/またはシステムコールは、マッピングテーブル520内で特定された関連性に従って、宛先ネットワークアドレスに対応する動的ポートにルーティングされ得る。TCP接続が作成されると(例えば、アプリケーション固有のTCPプロキシサーバー514へのソケット接続がローカルデバイスソケット518内の動的ポート510bで生成された、及びプロキシサーバー514がアクセスゲートウェイ516にソケットを開いた)、動的ポート510bからアクセスゲートウェイ516への(例えば、VPNトンネル)間のTCP接続は、モバイルVPNシステム500によって積極的に維持される。例えば、TCP肯定応答メッセージ及び他のネットワーク管理メッセージは、TCP接続の状況、帯域幅の使用量、及びセキュリティを監視するためのTCP接続に対応するアクセスゲートウェイ516と動的ポートとの間で交換され得る。TCP接続は、そのTCP接続の使用を必要とする将来的なアプリケーションネットワークトラフィックがある場合に使用され得る。
幾つかの実施形態では、各モバイルデバイス上のMDMプロファイル(またはMAMポリシー)は、私設網520とのVPN接続を必要とする企業に管理されているアプリケーションのリストを維持することができる。管理されているモバイルアプリケーション502のソースコードは、私設網520への管理されているアプリケーション502のトラフィックのみをトンネリングするために専用のTCPマイクロVPN接続を生成するためのプログラミング及び/または命令を含むことができる。幾つかの実施形態では、管理されているアプリケーション502がモバイルデバイス上で起動されると、モバイルデバイス502は、管理されているアプリケーション502が通信するように構成された様々な異なる宛先ネットワークに対して、モバイルデバイスの複数の異なる動的ポート(例えば、動的ポート510a〜c)上で複数の異なるマイクロVPN接続を開始することができる。モバイルデバイスは、宛先ネットワークアドレス512a〜cと、動的ポート510a〜cと、これらの動的ポート上の対応するアプリケーション固有のTCPプロキシサーバー514との間の関連付けを行うことができる。管理されているアプリケーション502が起動すると、管理されているアプリケーション502が追加の宛先ネットワークアドレス用のアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508を生成するので、モバイルデバイスは、モバイルデバイスのローカルデバイスソケット518上に追加の動的ポートを生成し、要求された新たな宛先ネットワークアドレスへのトラフィックをトンネリングするために、追加の専用プロキシサーバーへのソケット接続を作成し、新たな宛先ネットワークアドレス及び新たに割り当てられた動的ポートとの間の関連付けを行うために、マッピングテーブル520を更新する。
幾つかの実施形態では、複数の異なるVPN接続は、同一のモバイルアプリケーションに対して存在し得る。複数の異なる動的ポート及びそれらに関連するプロキシサーバーは、同一のモバイルアプリケーションのアプリケーションネットワークを使用可能にするために存在し得る。各動的ポート及びその動的ポート上で起動するプロキシサーバー514は、管理されているアプリケーションに対する所与のTCP接続のアプリケーションネットワークトラフィックを処理することができる。モバイルデバイスは2つ以上の管理されているアプリケーションを含むことができるので、複数の異なる組の動的ポート及びTCPプロキシサーバーが、モバイルデバイス上で実行しているこれらの異なる管理されているアプリケーション用のTCPトンネルを同時にセットアップして、私設網520にトラフィックをトンネリングすることができる。
幾つかの実施形態では、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508がローカルデバイスソケット518上の動的ポートに達すると、管理されているアプリケーション502からのそのようなネットワークトラフィックのペイロードは、動的ポートのプロキシサーバー514に転送され得る。例えば、図5の例示的な実施形態に示すように、管理されているアプリケーション506からのアプリケーションネットワークトラフィック506は、宛先IPアドレス512bの宛先ネットワークアドレスを含むことができる。宛先IPアドレス512bが動的ポート510bと関連していると特定することにより、宛先IPアドレス512bに接続するシステムコールに関連するアプリケーションネットワークトラフィックは、動的ポート510bにルーティングされ得る。ソケット接続は、動的ポート510bのローカルデバイスソケット518から作成され、アプリケーション固有のプロキシTCPサーバー514に接続し得る。アプリケーション固有のプロキシTCPサーバー514は、マイクロVPNサーバーであり得る。アプリケーション固有のプロキシTCPサーバー514は、モバイルデバイスにアクセス可能な公衆網から私設網520へのルーティングトラフィックを処理することができるアクセスゲートウェイ516へのソケット接続を生成することができる。アプリケーション固有のプロキシTCPサーバー514で、管理されているアプリケーション502からのアプリケーションネットワークトラフィック506は、アクセスゲートウェイ516を介して、私設網520にトンネリングされるために再パケット化され得る。例えば、アプリケーションネットワークトラフィック506のペイロードは、私設網520へのTCP接続によって使用されるTCPプロトコルに従って抽出されフォーマットされ得る。アクセスゲートウェイ516は、私設網520に送信されるトンネリングプロトコルに従って再パケット化される着信ペイロードを要求していることができる。したがって、アプリケーション固有のプロキシTCPサーバー514は、アクセスゲートウェイ516及び/または私設網520によって使用されるプロトコルを特定し、私設網520に送信するために正しくフォーマットされる着信アプリケーションネットワークトラフィック506のパケットを再パケット化することができる。
モバイルVPNシステム500によれば、宛先ネットワークアドレスを指定するシステムコールが管理されているモバイルアプリケーション502から傍受されると、アプリケーション固有のTCP VPNトンネルが生成されて、アプリケーションネットワークトラフィック506及び/または傍受されたシステムコールに関連するライブラリネットワークトラフィック508をトンネリングして、VPNトンネルに接続する。宛先ネットワークアドレスを指定するVPN接続システムコールを傍受すると、モバイルVPNシステム500は、VPN接続システムコールに関連するアプリケーションネットワークトラフィックをトンネリングするために、ローカルデバイスソケット518内の動的ポートを自動的に生成して割り当てて、VPN接続システムコールの宛先ネットワークアドレスに対応する割り振られた動的ポート上にアプリケーション固有のプロキシTCPサーバー514を生成し、そのアプリケーションネットワークトラフィックをトンネリングするために、アクセスゲートウェイ516へのソケット接続を生成してし、そのトラフィックをアクセスゲートウェイ516にトンネリングするために、アプリケーション固有のプロキシTCPサーバー514でネットワークトラフィックの再パケット化を処理することができる。
図6は、UDPトンネリングプロトコルを使用してモバイルVPNを管理する例示的なモバイルVPNシステム600を示す。モバイルVPNシステム600のシステムアーキテクチャは、モバイルVPNシステム500のそれと類似しているが、モバイルVPNシステム500の主要な特徴とは異なる。管理されているアプリケーション502がUDPプロトコルを使用して通信し、及び/またはアクセスゲートウェイ516がUDPトンネリング接続を必要とすると判定すると、管理されているアプリケーション502は、モバイルVPNシステム600を使用して、アクセスゲートウェイ516を介して私設網520へのトンネリング接続を作成する。UDPは、TCPと異なりコネクションレスプロトコルであるため、TCPモバイルVPNシステム500とは異なり、アクセスゲートウェイ516を備えたモバイルデバイスによってアクティブなUDP接続を維持する必要はない。それに加えて、TCPモバイルVPNシステム500でのような動的ポートの代わりに、モバイルデバイス上の固定ポート(例えば、固定ポート610)を介してモバイルデバイスとアクセスゲートウェイ516との間にUDP VPN接続が確立される。さらに、UDPはコネクションレスプロトコルであり、1つの固定ポートのみが各モバイルアプリケーションのトラフィックを私設網520にトンネリングするのに使用されるため、アクセスゲートウェイ516を介して私設網520にトラフィックをトンネリングするために、モバイルアプリケーションごとに1つのプロキシVPNサーバーのみが使用される。
幾つかの実施形態では、管理されているアプリケーション502がUDP通信プロトコルを使用することをモバイルデバイスが決定すると、VPNに接続するために管理されているアプリケーション502によって作られるUDPシステムコールは、傍受され得る。管理されているアプリケーション502及びそれに関連するライブラリがモバイルデバイスのオペレーティングシステムに行うすべてのシステムコールを傍受することにより、モバイルデバイスは、ソケット上の接続を開始するためにすべてのシステムコールを特定することができる。例えば、モバイルデバイスは、connect()及びsendto()のようなすべてのシステムコールを特定することができ、モバイルデバイスのデバイスソケット上で私設仮想網520へのトンネル及び/または仮想私設網接続を開始することができる。モバイルデバイスは、管理されているアプリケーション502及びそれに関連する動的ライブラリ504によって作られたモバイルデバイス上のソケット接続のすべてのインスタンスを特定することによって、管理されているアプリケーション502によるすべての要求及び/または試みを傍受して、私設仮想網520と通信する及び/またはアプリケーションネットワークトラフィック506及びライブラリネットワークトラフィック508を、仮想私設網接続を通じてトンネリングすることを実現する。アプリケーションネットワークトラフィック506及び/またはライブラリネットワーク506は、私設網520に伝達するためのトラフィックペイロードを含むメッセージと共にVPNに接続するためのシステムコールを含むことができる。アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィック508に存在するVPNに接続するためのUDPシステムコール(例えば、この例ではconnect()及びsendto()システムコール)を傍受することによって、モバイルデバイスは、管理されているアプリケーション502からすべてのVPNトラフィックを傍受することができる。connect()及びsendto()が本開示において実施例として使用されているが、モバイルデバイスは、様々な異なるタイプのモバイルオペレーションシステム(例えば、iOS、Android(登録商標)、Firefox OS、Windows(登録商標) Phone OS、Blackberry OS、Tizen OS、Ubuntu Touch OSなど)によって作られる既知のすべてのUDPシステムコールについて、アプリケーションネットワークトラフィック506及びライブラリネットワークトラフィック508におけるシステムコールを監視することができる。
幾つかの実施形態では、VPNに接続するためのシステムコールが傍受されると、管理されているアプリケーション502に対してこのようなシステムコールを使用するアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508は、固定ポート610にリダイレクトされる。モバイルデバイスは、私設網520への傍受されたVPNシステムコールに関連するアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508をトンネリングするために、モバイルデバイスからUDP VPN接続が確立される固定ポートを割り振ることができる。各モバイルデバイスは、私設網520との通信を要求している管理されているアプリケーション502のような管理されているモバイルアプリケーションを有することができる。各管理されているアプリケーション502について、モバイルデバイスは、モバイルデバイス上のすべての固定ポートから1つの固定ポートを割り振ることができる。各UDPシステムコールは、各アプリケーショントラフィックパケットが向けられるべき実際の宛先IPアドレスを指定するので、モバイルUDP VPNシステム600は、固定ポート610上のアプリケーション固有のプロキシUDPサーバー614を使用して、アクセスゲートウェイ516を介してシステムコールに関連するトラフィックを直接宛先に向けることができる。VPN接続及びUDPシステムコールが傍受されると、モバイルデバイスは、このようなアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508を固定ポート610にリダイレクトすることができる。
幾つかの実施形態では、アプリケーション固有のプロキシUDPサーバー614は、固定ポート610で生成され、私設網520へのトラフィックのルーティングを処理する。モバイルデバイスの固定ポート610のような各固定ポートでは、固定ポートをプロキシUDPサーバー614に接続して、私設網520への各UDP VPN接続のトラフィックメッセージのルーティングを処理するためのソケットが生成される。プロキシサーバー614は、オンラインウェブサーバーを使用して、管理されているアプリケーション502から私設網520にアプリケーションネットワークトラフィック506をトンネリングするためのプロキシを生成することができる。プロキシサーバー614は、アプリケーション固有のサーバーであり得、それが役割を果たすように構成されたモバイルアプリケーションのアプリケーションネットワークトラフィックのみを処理することができる。これに加えて、またはこれに代えて、モバイルデバイスの固定ポートで生成される各UDP接続及び/またはUDPトンネルは、管理されているアプリケーション502のみにその役割を果たすことができる。したがって、VPN接続は、管理されているアプリケーションのみのアプリケーションネットワークトラフィックをトンネリングするアプリケーション固有のVPNであり得る。
幾つかの実施形態では、管理されているアプリケーション502がUDP接続要求でアプリケーショントラフィック及び/またはシステムコールを傍受する場合、モバイルデバイス502は、モバイルデバイスの固定ポート610上で1つのマイクロVPN接続を開始することができる。モバイルデバイスが2つ以上の管理されているアプリケーションを含むことができるので、複数の異なる固定ポート及びUDPプロキシサーバーは、私設網520へのトラフィックをトンネリングするために、モバイルデバイス上で実行しているこれらの異なる管理されているアプリケーションの各々に対して1つのUDPトンネルを同時にセットアップすることができる。
幾つかの実施形態では、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508が固定ポート610に達すると、管理されているアプリケーション502からのこのようなネットワークトラフィックのペイロードは、固定ポート610のUDP VPNプロキシサーバー614に転送され得る。ソケットは、動的ポート610で作成され得、アプリケーション固有のプロキシUDPサーバー614に接続することができる。アプリケーション固有のプロキシUDPサーバー614は、マイクロVPNサーバーであり得る。アプリケーション固有のプロキシUDPサーバー614は、モバイルデバイスにアクセス可能な公衆網から私設網520へのトラフィックのルーティングを処理することができるアクセスゲートウェイ516にソケットを生成することができる。アプリケーション固有のプロキシUDPサーバー614では、管理されているアプリケーション502からのアプリケーションネットワークトラフィック506は、アクセスゲートウェイ516を介して私設網520にトンネリングされるように再パケット化され得る。例えば、アプリケーションネットワークトラフィック506のペイロードは、私設網520へのUDP接続によって使用されるUDPプロトコルに従って抽出されフォーマットされ得る。アクセスゲートウェイ516は、私設網520に送信されるトンネリングプロトコルに従って再パケット化される着信ペイロードパケットを要求することができる。したがって、アプリケーション固有のプロキシUDPサーバー614は、アクセスゲートウェイ516及び/または私設網520によって使用されるプロトコルを識別して、私設網520への送信用に正しくフォーマットされるべき着信アプリケーションネットワークトラフィック506を再パケット化することができる。
モバイルVPNシステム500によると、宛先ネットワークアドレスを指定するシステムコールが管理されているアプリケーション502から傍受されると、アプリケーション固有のUDP VPNトンネルが作成され得、傍受されたシステムコールに関連するアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508をトンネリングして、VPNトンネルに接続することができる。宛先ネットワークアドレスを指定するVPN接続システムコールを傍受すると、モバイルVPNシステム600は、VPN接続システムコールに関連するアプリケーションネットワークトラフィックをトンネリングするために、自動的に固定ポートを割り振ることができ、管理されているアプリケーションに対応する割り振られたポート上にアプリケーション固有のプロキシUDPサーバー614を生成し、そのアプリケーションネットワークトラフィックをトンネリングするために、アクセスゲートウェイ516にソケットを生成し、そのトラフィックをアクセスゲートウェイ516にトンネリングするために、アプリケーション固有のプロキシUDPサーバー614でネットワークトラフィックの再パケット化を処理することができる。
幾つかの実施形態では、モバイルVPNシステム600は、VPN接続システムコールから直接私設網520に向けられるアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508をリダイレクトすることができる。例えば、モバイルVPNシステム600は、UDP VPN接続システムコール(例えば、connect()及びsendto()UDPシステムコール)内で見いだされる実際の宛先IPアドレスを抽出して、そのようなトラフィックを固定ポート610上のアプリケーション固有のプロキシUDPサーバー614に直接リダイレクトすることができる。UDP VPN接続システムコールには宛先IPアドレスがすでに含まれているため、実際の宛先IPアドレスを解決するために、TCPシステムコールとは異なり、動的ポートにリダイレクトする必要はない。アプリケーション固有のプロキシUDPサーバー614は、アクセスゲートウェイ516を介して、私設網520にUDPトラフィックをフォーマットすることができる。アプリケーショントラフィックが私設網520に送信されると、管理されているアプリケーション502とアクセスゲートウェイ516及び/または私設網520との間でアクティブなUDP接続が維持されないことがある。
図7は、DNSトンネリングプロトコルを使用するモバイルVPNを管理する例示的なモバイルVPNシステム700を示す。図7に示す実施形態によると、管理されているアプリケーション502は、例えば、マイクロVPNを使用して公衆網を介してアクセスゲートウェイ516に接続し、アクセスゲートウェイ516を介して、セキュアなポータルにアクセスすることができる。
幾つかの実施形態では、モバイルデバイス及び/または管理されているアプリケーション502は、管理されているアプリケーション502及び管理されているアプリケーション502が通信する任意の関連する動的ライブラリ504によって行われるすべてのシステムコールを傍受する。モバイルVPNシステム700は、管理されているアプリケーション502が、私設網520に接続するためにDNSトンネリングプロトコル及び/またはDNS通信プロトコルを使用することを決定することができる。管理されているアプリケーション502がDNSプロトコルを使用するという決定に応答して、モバイルVPNシステムは、VPNに接続するためのすべてのDNSシステムコールを監視することができる。従来のDNS VPNシステムでは、管理されているアプリケーション502、その関連する動的ライブラリ504、及びモバイルデバイス上で実行している他のモバイルアプリケーションからすべてのDNSクエリを受信するグローバル(例えば、システムレベルの)DNSデーモン714が存在し得る。従来のシステムでは、すべてのモバイルアプリケーションからの各DNSクエリは、グローバルDNSデーモン714宛てである。しかしながら、本開示では、単一のモバイルアプリケーションのDNSトラフィックのみを処理するアプリケーション固有のDNSサーバー708を生成するシステム及び方法について説明する。
幾つかの実施形態では、モバイルVPNシステム700は、VPNに接続するためのすべてのシステムコールを傍受するために、管理されているアプリケーション502及びその関連する動的ライブラリ504によって発行されたすべてのシステムコールを傍受することができる。管理されているアプリケーション502及び/または動的ライブラリ504によって行われるDNS VPNシステムコールは、システムコールに関連するDNSクエリのDNS解決のためのグローバルDNSデーモン714へのパスを含むことができる。グローバルDNSデーモン714及びアプリケーション固有のDNSデーモン710などのDNSデーモンは、管理されているアプリケーション502及び動的ライブラリ504からのDNSクエリを解決し、そのようなシステムコールに関連するアプリケーションネットワークトラフィック506及びライブラリネットワークトラフィック508を命令するように構成され得る。
幾つかの実施形態では、モバイルVPNシステム700が私設網520に接続する、及び/または私設網520と通信する、管理されているアプリケーション502及び動的ライブラリ504によって発行されたDNSシステムコールを傍受すると、モバイルVPNシステムは、アプリケーション固有のDNSデーモン710へのこのようなDNSシステムコールと関連するアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508をリダイレクトすることができる。各管理されているモバイルアプリケーション502について、モバイルVPNシステム700は、ローカルデーモンソケット706を、アプリケーションサンドボックスパス704に生成することができる。モバイルVPNシステム700は、アプリケーション固有のDNSプロキシサーバー708を、ローカルドメインソケット706に通信可能に連結されたアプリケーションサンドボックスパス704に生成することができる。アプリケーション固有のDNSプロキシサーバー708は、私設網520へのアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィックのルーティングを処理するために使用され得るアプリケーション固有のDNSデーモン710を含むことができる。例えば、アプリケーション固有のDNSデーモン710は、リダイレクトされたアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508内のDNSクエリ上でDNS解決を実行して、さらなるDNS解決のために、私設網520及び/またはグローバルDNSデーモン714に転送するために、公衆網716(例えば、インターネット)を介してアクセスゲートウェイ516にそのようなトラフィックを向けることができる。
幾つかの実施形態では、モバイルVPNシステム700は、各DNS VPN接続システムコール内に含まれるDNSパスを、アプリケーション固有のDNSプロキシサーバー708が位置するアプリケーションサンドボックスパス704と置換及び/または書き換えすることができる。管理されているアプリケーション502によって発行された各DNS VPN接続システムコールに関連するアプリケーションネットワークトラフィック506及びライブラリネットワークトラフィック508を、アプリケーションサンドボックスパス704のローカルドメインソケット706にリダイレクトすることによって、モバイルVPNシステム700は、各モバイルアプリケーションのアプリケーショントラフィックを、外部ユーザ/外部プロセスが悪意のある目的(例えば、トラフィックをリダイレクトするためにDNSデーモンをハッキングすること)を追跡及び/または検出することができない固有のサンドボックスパスにリダイレクトすることができる。モバイルVPNシステム700は、ローカルドメインソケット706を生成して、アプリケーション固有のDNSプロキシサーバー708に接続し、私設網520への管理されているアプリケーション502に対するトラフィックメッセージのルーティングを処理することができる。プロキシサーバー708は、オンラインウェブサーバーを使用して、管理されているモバイルアプリケーション502から私設網520へのアプリケーションネットワークトラフィック506をトンネリングするためのプロキシを作成することができる。プロキシサーバー708は、アプリケーション固有のサーバーであり得、それが役割を果たすように構成されたモバイルアプリケーションのアプリケーションネットワークトラフィックのみを処理することができる。それに加えて、またはこの代わりに、ローカルドメインソケット706で生成される各DNS接続及び/またはDNSトンネルは、管理されているアプリケーション502のみの役割を果たすために専用であり得る。したがって、VPN接続は、管理されているモバイルアプリケーションのみのアプリケーションネットワークトラフィックをトンネリングするアプリケーション固有のVPNであり得る。
幾つかの実施形態では、各モバイルデバイス上のMDMプロファイルは、私設網520でVPN接続を必要とする企業に管理されているアプリケーションのリストを維持することができる。管理されているモバイルアプリケーション502のソースコードは、管理されているアプリケーション502から発行されたDNS VPN接続システムコールの受信時に、私設網520への管理されているアプリケーション502のトラフィックのみをトンネリングするために専用のDNSマイクロVPN接続を生成するプログラミング及び/または命令を含むことができる。
幾つかの実施形態では、複数の異なる管理されているアプリケーションは、同一のモバイルデバイス上で実行していることができ、私設網520にDNSトンネルを要求することができる。モバイルデバイスは2つ以上の管理されているアプリケーションを含むことができるので、複数の異なる組のローカルドメインソケット及びアプリケーション固有のDNSプロキシサーバーは、私設網520へのトラフィックをトンネリングするために、モバイルデバイス上で実行しているこれらの異なる管理されているアプリケーションのDNSトラフィック転送を同時にセットアップすることができる。
幾つかの実施形態では、リダイレクトの成功時に、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508がアプリケーションサンドボックスパス704のローカルドメインソケット706に達すると、管理されているアプリケーション502からのそのようなネットワークトラフィックのペイロードは、ローカルドメインソケット708によってアプリケーション固有のDNSプロキシサーバー708に伝送され得る。例えば、図5の例示的な実施形態に示すように、管理されているアプリケーション506からのアプリケーションネットワークトラフィック506は、私設網520でドメインネームを指定するDNSクエリを含むことができる。アプリケーション固有のDNSプロキシサーバー708は、そのようなネットワークトラフィック内でDNSクエリを処理して、ネットワークトラフィックの宛先ネットワークアドレスを指定することができる。アプリケーション固有のDNSプロキシサーバー708は、マイクロVPNサーバーであり得る。アプリケーション固有のDNSプロキシサーバー708は、モバイルデバイスにアクセス可能な公衆網から私設網520にトラフィックのルーティングを処理することができる、アクセスゲートウェイ516にソケットを生成することができる。アプリケーション固有のDNSプロキシサーバー708では、管理されているアプリケーション502からのアプリケーションネットワークトラフィック506は、アクセスゲートウェイ516を介して、私設網520トンネリングされるように再パケット化され得る。例えば、アプリケーションネットワークトラフィック506のペイロードは、私設網520へのDNS接続によって使用されるDNSプロトコルに従って抽出及びフォーマットされ得る。アプリケーション固有のDNSプロキシサーバー708は、アプリケーションネットワークトラフィック506のこれらのフォーマットされたペイロードを、公衆網716を介してアクセスゲートウェイ516に送信することができる。例えば、アプリケーション固有のDNSプロキシサーバー708は、アクセスゲートウェイ516がアクセスされ得る公衆網716と直接通信することができる。したがって、アプリケーション固有のDNSプロキシサーバー708は、公衆網716によってアクセスゲートウェイ516に送信され得るアプリケーションネットワークトラフィック506のペイロードをフォーマットすることができる。アクセスゲートウェイ516は、私設網520に送信されるトンネリングプロトコルに従って再パケット化される着信ペイロードパケットを要求していることができる。したがって、アプリケーション固有のDNSプロキシサーバー708は、アクセスゲートウェイ516及び/または私設網520によって使用されるプロトコルを識別して、私設網520に伝送するために正しくフォーマットされる着信アプリケーションネットワークトラフィック506を再パケット化することができる。
幾つかの実施形態では、アプリケーション固有のDNSデーモン710は、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508を、さらなるDNS解決及び/または処理のために、グローバルDNSデーモンに向けることができる。アプリケーション固有のDNSデーモン710は、アクセスゲートウェイ516及び/またはモバイルVPNシステム700によって使用されるポリシーを使用して、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508の関連するDNSクエリを処理することができる。例えば、アプリケーション固有のDNSデーモン710は、アプリケーション502のアプリケーションサンドボックスパス704を通じて受信された、DNS要求及び/または関連するアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508が、アプリケーション固有のDNSデーモン710によってローカルに解決され得るか否かを判定することができる。アプリケーション固有のDNSデーモン710で実行され得ないアクセスゲートウェイ516のポリシーに従ってさらなる再フォーマットを要求しているDNS要求は、グローバルDNSデーモン714に転送され得る。アプリケーション固有のDNSデーモン710は、クライアントソケット712がグローバルDNSデーモン714に接続するために存在することができる、ローカルドメインソケット706からシステムレベルのDNSパス702に受信されたアプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508をリダイレクトすることができる。アプリケーション固有のDNSデーモン710は、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508のDNSクエリ内の宛先パスを、システムレベルのDNSパス702に置換して、トラフィックをパス702のクライアントソケット712に送信することができる。アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508がクライアントソケット712に達すると、トラフィックは、クライアントソケット712に通信可能に連結されたグローバルDNSデーモン714によって受信され得る。グローバルDNSデーモン714は、アクセスゲートウェイ516のポリシーに従って、アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508を処理及び/または再フォーマットして、アクセスゲートウェイ516を介して私設網520に伝送するトラフィックを準備することができる。グローバルDNSデーモン714は、公衆網716によって間接的にアクセスゲートウェイと通信することができる。グローバルDNSデーモン714は、公衆網716を介してアクセスゲートウェイ516にネットワークトラフィックを送信するために、モバイルデバイス上に構成されたDNSウェブサーバーを使用することができる。グローバルDNSデーモン714は、アクセスゲートウェイ516がアクセスされ得る公衆網716と直接通信することができる。したがって、グローバルDNSデーモン714は、モバイルデバイス上に構成されたDNSサーバーに、アプリケーションネットワークトラフィック506のペイロードをフォーマットして、公衆網716を介してアクセスゲートウェイ516に送信するように命令することができる。
グローバルDNSデーモン714は、アプリケーション固有のDNSデーモン710がそのようなリダイレクトされたトラフィックパケットに対して実行しなかったDNSクエリを解決することができる。アプリケーションネットワークトラフィック506及び/またはライブラリネットワークトラフィック508の処理時に、グローバルDNSデーモン714は、それらをアクセスゲートウェイ516に送信することができる。
図8は、本明細書で説明する1つ以上の例示的な態様による、アプリケーションごとにモバイルTCP VPN接続を生成する方法を示すフローチャートを表示する。1つ以上の実施形態では、図8の方法及び/またはその1つ以上のステップは、コンピューティングデバイス(例えば、汎用コンピューティングデバイス201)によって実行され得る。他の実施形態では、図8に示す方法及び/またはその1つ以上のステップは、非一時的なコンピュータ可読メモリのような、コンピュータ可読媒体に記憶されたコンピュータに実行可能な命令において具現化され得る。
図8Aに示すように、この方法は、モバイルデバイスがモバイルアプリケーションによって使用されるトンネルプロトコルを決定することができるステップ802で開始することができる。例えば、モバイルデバイスは、モバイルアプリケーションのソースコード及び/または通信プロトコルを調べて、公衆網及び/または私設網と通信するモバイルアプリケーションによって使用される通信プロトコルを決定することができる。モバイルアプリケーションは、それがアクセスする公衆網を使用してアクセスゲートウェイにアクセスして、私設網へのVPNトンネルを作成することができる。これに加えて、またはこれに代えて、公衆網から私設網にアクセスするために使用されるアクセスゲートウェイの通信プロトコル及び/またはトンネリングプロトコルを検査して、モバイルアプリケーションがVPN接続をセットアップするために、アクセスゲートウェイと通信するために使用する通信プロトコルを決定することができる。
ステップ804では、モバイルデバイスは、モバイルアプリケーションがTCPトンネリングプロトコルを使用するか否かを判定することができる。モバイルデバイスは、ステップ802で検査されたシステムコール及び/または通信プロトコルが、使用されているTCP通信及び/またはトンネリングプロトコルのインジケータを含むか否かを監視することにより、モバイルVPNシステムがTCPトンネリングプロトコルを使用するか否かを判定することができる。例えば、モバイルデバイスは、既知のTCPシステムコール、通信プロセス、及び/またはTCP通信プロトコルを示すフックについて、モバイルアプリケーションからの通信及び/またはシステムコールを検査することができる。モバイルアプリケーションがTCPトンネリングプロトコルを使用しないと判定する場合、この方法は、図8Bのステップ832に進むことができる。
ステップ806では、モバイルアプリケーションがTCPトンネリングプロトコルを使用すると判定する場合、モバイルデバイスは、モバイルアプリケーションからのシステムコール及びモバイルアプリケーションによって使用される任意のサードパーティーライブラリを傍受することができる。モバイルデバイスは、VPNネットワーク(例えば、connect()及びconnect()システムコール)に接続するための特定のTCPシステムコールについて、モバイルアプリケーション及び/またはその関連するライブリによって発行されたすべてのシステムコールを検査することができる。モバイルデバイスは、VPNネットワークに接続するためのすべてのシステムコールを識別し、またそのような傍受されたシステムコールに関連するすべてのアプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックを特定することもできる。
ステップ808では、モバイルデバイスは、モバイルアプリケーション及び/またはその関連するサードパーティーライブラリによって行われる各傍受されたシステムコールから宛先ネットワークを特定することができる。例えば、VPN接続システムコール及び/またはそれらに関連するトラフィックメッセージは、1つ以上の宛先ネットワークアドレス及び/または中間アドレスを含むことができる。モバイルデバイスは、モバイルアプリケーション及び/またはその関連するライブラリからのアプリケーショントラフィックメッセージ及び/またはシステムコール内に含まれるそのようなネットワークアドレスを識別して、そのようなアプリケーショントラフィックを最適にルーティングする方法を決定することができる。その特定のアプリケーションについて、以前にモバイルデバイスによって遭遇されていない宛先アドレスが検出された場合、新しい宛先ネットワークを提供するために、新しい動的ポートを生成することができる。具体的には、モバイルデバイスは、動的ポートを生成して、その動的ポートとトラフィックにルーティングするために生成されたネットワークアドレスを関連付けることができる。モバイルデバイスは、新たに生成された動的ポートとそれに対応する宛先ネットワークアドレスとの関連付けによって、モバイルデバイスの動的ポートと宛先ネットワークアドレスとのマッピングを更新することができる。
ステップ810では、モバイルデバイスは、宛先ネットワークアドレスを使用することにより、トラフィックをルーティングするための動的ポートを特定することができる。動的ポートの宛先ネットワークアドレスへのマッピングを参照することによって、モバイルデバイスは、モバイルアプリケーション及び/またはその関連する動的ライブラリから宛先ネットワークアドレスへトラフィックをルーティングするために使用されるべき動的ポートを特定することができる。
ステップ812では、モバイルデバイスは、アプリケーション固有のプロキシサーバーを識別された動的ポートで生成することができる。動的ポートでは、アクセスゲートウェイを介した私設網への管理されているアプリケーションのトラフィックのTCP接続を維持するように構成されたプロキシサーバーにソケットを作成することができる。例えば、プロキシサーバーは、対応する動的ポート上のモバイルデバイスと、私設網へアプリケーショントラフィックを導かねばならないアクセスゲートウェイとの間でTCP接続を開始して維持するように生成することができる。アプリケーション固有のプロキシサーバーは、管理されているモバイルアプリケーションによって行われるシステムコールを傍受し、役割を果たすように構成されたネットワークアドレス宛てのトラフィックを選択するように構成することができる。アプリケーション固有のプロキシサーバーは、モバイルデバイスにアクセス可能な公衆網から私設網へのトラフィックのルーティングを処理するアクセスゲートウェイにソケットを生成することができる。アプリケーション固有のプロキシサーバーでは、管理されているアプリケーションからのアプリケーションネットワークトラフィックは、アクセスゲートウェイを介して、私設網にトンネリングされるように再パケット化され得る。例えば、アプリケーションネットワークトラフィックのペイロードは、私設網へのTCP接続によって使用されるTCPプロトコルに従って抽出されてフォーマットされ得る。アクセスゲートウェイは、私設網に送信されるトンネリングプロトコルに従って再パケット化される着信ペイロードパケットを要求することができる。したがって、アプリケーション固有のプロキシサーバーは、アクセスゲートウェイ及び/または私設網によって使用されるプロトコルを識別して、私設網に伝送するために正しくフォーマットされる着信アプリケーションネットワークトラフィックメッセージを再パケット化することができる。
ステップ814では、モバイルデバイスは、識別された動的ポートのプロキシサーバーとアクセスゲートウェイとの間にTCP接続を確立することができる。例えば、アプリケーション固有のTCP VPNトンネルは、プロキシサーバーによって生成されて、アクセスゲートウェイを介して私設網へのVPNトンネルを接続するために、アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックをトンネリングすることができる。モバイルデバイスはまた、関連するアプリケーション固有のプロキシサーバーに、アクセスゲートウェイにソケットを生成するように命令することもできる。モバイルデバイスは、アプリケーション固有のプロキシサーバーに、対応する動的ポートに向けられ得る将来のTCPトラフィック用のアクセスゲートウェイとの確立されたTCP接続を維持するように命令することができる。モバイルデバイスは、アプリケーション固有のプロキシサーバーに、モバイルアプリケーションがモバイルデバイス上で実行している限り、将来の使用のためにTCP接続を維持するためにネットワーク管理メッセージを交換するよう命令することができる。
ステップ816では、モバイルデバイスは、ターゲット宛先ネットワークアドレス宛てのアプリケーショントラフィックを検出することができる。例えば、アプリケーション固有のプロキシサーバー及び/またはモバイルデバイスは、管理されているアプリケーションがVPN接続に接続するために、システムコールを発行したことを検出することができる。これに加えて、またはこれに代えて、アプリケーション固有のプロキシサーバーは、役割を果たすように構成された宛先アドレスが管理されているアプリケーションによって生成されたアプリケーションネットワークトラフィックを検出することができる。管理されているアプリケーションは、モバイルデバイス及び/またはアプリケーション固有のプロキシサーバーの命令の下で、アプリケーショントラフィックを、プロキシサーバーへの対応する動的ポートのソケットを介してアプリケーション固有のプロキシサーバーに向けることができる。
ステップ818では、モバイルデバイスは、動的ポートで検出されたアプリケーショントラフィックのペイロードを、プロキシサーバーに伝えることができる。例えば、モバイルデバイスは、関連するアプリケーション固有のプロキシサーバーに、アプリケーションゲートウェイによって使用されるTCPプロトコル及び/または通信規格に従って、アプリケーションネットワークトラフィックのペイロードを再パケット化するように命令することができる。
ステップ820では、モバイルデバイスは、ペイロードがアプリケーショントラフィックの宛先アドレスに直接送信され得るか否かを判定することができる。モバイルデバイスは、ネットワークトラフィックが公衆網アドレス及び/またはモバイルデバイスにアクセス可能な公衆網を介して私設網に送信されるか否かを判定することができる。例えば、幾つかの実施形態では、アプリケーショントラフィックの宛先ネットワークアドレスは、公衆網(例えば、インターネット)によってモバイルデバイスにアクセス可能なアクセスゲートウェイを介してのみアクセス可能な私設網アドレスであり得る。他の実施形態では、アプリケーショントラフィックの宛先ネットワークアドレスは、アクセスゲートウェイを介してトラフィックをルーティングせずに、モバイルデバイスにアクセス可能であり得る。モバイルデバイスは、アプリケーションネットワークトラフィックの宛先ネットワークアドレスを検査して、アプリケーショントラフィックを、その最終宛先に送信するためにさらなる処理及び/または再パケット化が必要か否かを判定することができる(例えば、アクセスゲートウェイを介してその宛先にルーティングされるアプリケーショントラフィックをフォーマットする)。ペイロードが宛先ネットワークアドレスに直接送信できるか否か、またはアクセスゲートウェイを介してトンネリングする必要があるか否かを判定する際に、モバイルデバイスは、アプリケーション固有のTCPサーバーが、アプリケーショントラフィックの宛先ネットワークアドレスにアクセスできるか否か、及び/または宛先ネットワークアドレスの要件に従って、アプリケーションネットワークをフォーマットすることができるか否かを判定することができる。アプリケーション固有のTCPサーバーが実行できないようにさらに再フォーマットする必要のあるアプリケーションネットワークトラフィックは、アクセスゲートウェイに転送される可能性がある。
ステップ822では、ペイロードがモバイルデバイスから宛先ネットワークアドレスに直接送信され得ると判定したことに応答して、モバイルデバイスは、アプリケーショントラフィックを、その宛先ネットワークアドレスに直接送信することができる。例えば、アプリケーション固有のTCPプロキシサーバーは、トラフィックがアドレス指定されるべき宛先ネットワークアドレスを指定することができる。アプリケーション固有のデーモンは、アプリケーショントラフィックを適切に転送するために、宛先ネットワークアドレスによって使用される通信プロトコルに従って、受信されたアプリケーショントラフィックのペイロードを再パケット化することができる。
ステップ824では、ペイロードが宛先アドレスに直接送信できないと判定したことに応答して、モバイルデバイスは、アプリケーショントラフィックを、プロキシサーバーからアクセスゲートウェイに送信することができる。アプリケーショントラフィックがアプリケーション固有のプロキシサーバーによって適切にフォーマットされると、モバイルデバイスは、プロキシサーバーに、再パケット化されたアプリケーショントラフィックをアクセスゲートウェイに送信するように命令することができる。アクセスゲートウェイは、アプリケーショントラフィックを私設網に送信するように、モバイルデバイスによって命令され得る。アプリケーション固有のTCPプロキシサーバーは、アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックの宛先パスを、アクセスゲートウェイの宛先パスに置換することができる。アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックが、アクセスゲートウェイに達すると、モバイルデバイスは、アクセスゲートウェイのポリシーに従って、アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックを処理及び/または再フォーマットして、アクセスゲートウェイを介して私設網に伝送するために、そのようなトラフィックを準備するようにアクセスゲートウェイに命令することができる
図8Bは、本明細書に記載された1つ以上の例示的な態様に従って、アプリケーションごとにモバイルUDP VPN接続を生成する方法を示すフローチャートを表示する。1つ以上の実施形態では、図8Bの方法及び/またはその1つ以上のステップは、コンピューティングデバイス(例えば、汎用コンピューティングデバイス201)によって実行され得る。他の実施形態では、図8B及び/またはその1つ以上のステップは、非一時的なコンピュータ可読メモリのようなコンピュータ可読媒体に記憶されたコンピュータに実行可能な命令において具現化され得る。
図8Bに示すように、ステップ832では、モバイルデバイスは、モバイルアプリケーションがUDPトンネリングプロトコルを使用するか否かを判定することができる。モバイルデバイスは、ステップ802で検査されたシステムコール及び/または通信プロトコルが、使用されているUDP通信及び/またはトンネリングプロトコルのインジケータを含むか否かを監視することにより、モバイルVPNシステムがUDPトンネリングプロトコルを使用するか否かを判定することができる。例えば、モバイルデバイスは、既知のUDPシステムコール、通信プロセス、及び/またはUDP通信プロトコルを示すフックについて、モバイルアプリケーションからの通信及び/またはシステムコールを検査することができる。モバイルアプリケーションがUDPトンネリングプロトコルを使用しないと判定する場合、この方法は、図8Cのステップ852に進む。
ステップ834では、モバイルアプリケーションがUDPトンネリングプロトコルを使用すると判定する場合、モバイルデバイスは、モバイルアプリケーションからのシステムコール及びモバイルアプリケーションによって使用される任意のサードパーティーライブラリを傍受することができる。モバイルデバイスは、VPNネットワーク(例えば、connect()及びsendto()システムコール)に接続するための特定のUDPシステムコールについて、モバイルアプリケーション及び/またはその関連するライブリによって発行されたすべてのシステムコールを検査することができる。モバイルデバイスは、VPNネットワークに接続するためのすべてのシステムコールを識別し、またそのような傍受されたシステムコールに関連するすべてのアプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックを特定することもできる。
ステップ836では、モバイルデバイスは、モバイルアプリケーション及び/またはその関連するサードパーティーライブラリによって行われる各傍受システムコールから宛先ネットワークを特定することができる。例えば、VPN接続システムコール及び/またはそれらに関連するトラフィックメッセージは、1つ以上の宛先ネットワークアドレス(例えば、私設網アドレスのIPアドレス)を含むことができる。モバイルデバイスは、モバイルアプリケーション及び/またはその関連するライブラリからのアプリケーショントラフィックメッセージ及び/またはシステムコールに含まれるネットワークアドレスを識別して、そのようなアプリケーショントラフィックを最適にルーティングする方法を決定する。
ステップ838では、モバイルデバイスは、宛先ネットワークアドレスに対応する固定ポートのマッピングを使用して、アプリケーショントラフィックをルーティングする固定ポートを特定することができる。例えば、モバイルデバイスは、モバイルデバイスのどの固定通信ポートが、トラフィックを、対応する管理されているアプリケーションからアクセスゲートウェイにトラフィックを転送するために使用されるプロキシサーバーにトンネリングするために割り当てられたかを特定することができる。管理されているアプリケーションからアプリケーショントラフィックをトンネリングするために使用する固定ポートを特定する際に、モバイルデバイスは、どの通信ポートが利用可能であるか、及び/または管理されているアプリケーションを提供するためにすでに専用化されているかを判定することができる。
ステップ840では、モバイルデバイスは、アプリケーション固有のUDPプロキシサーバーを、識別された固定ポートに生成することができる。モバイルデバイスの識別された固定通信ポートでは、管理されているアプリケーションのトラフィックを処理し、アクセスゲートウェイを介して前記トラフィックを私設網にトンネリングするように構成されたプロキシサーバーにソケットを生成することができる。アプリケーション固有のプロキシサーバーは、それが役割を果たすように構成された管理されているモバイルアプリケーションに対して行われるシステムコールを傍受するように構成され得る。アプリケーション固有のプロキシサーバーは、モバイルデバイスにアクセス可能な公衆網から私設網へのトラフィックのルーティングを処理することができるアクセスゲートウェイにソケットを生成することができる。アプリケーション固有のプロキシサーバーでは、管理されているアプリケーションからのアプリケーションネットワークトラフィックは、アクセスゲートウェイを介して私設網にトンネリングされるように再パケット化され得る。例えば、アプリケーションネットワークトラフィックのペイロードは、私設網と通信するアクセスゲートウェイによって使用されるUDPプロトコルに従って抽出及びフォーマットされ得る。アクセスゲートウェイは、私設網に送信されるUDPトンネリングプロトコルに従って、再パケット化される着信ペイロードパケットを要求することができる。したがって、アプリケーション固有のプロキシサーバーは、アクセスゲートウェイ及び/または私設網によって使用されるプロトコルを識別して、私設網に送信するために正しくフォーマットされる着信アプリケーションネットワークトラフィックを再パケット化することができる。
ステップ842では、モバイルデバイスは、ターゲット宛先アドレス宛てのアプリケーショントラフィックを検出することができる。例えば、アプリケーション固有のプロキシサーバー及び/またはモバイルデバイスは、管理されているアプリケーションがVPN接続に接続するためのシステムコールを発行したことを検出することができる。これに加えて、またはこれに代えて、アプリケーション固有のプロキシサーバーは、役割を果たすように構成された宛先アドレスを備えたアプリケーションネットワークトラフィックが管理されているアプリケーションによって生成されたことを検出することができる。管理されているアプリケーションは、モバイルデバイス及び/またはアプリケーション固有のプロキシサーバーの命令の下で、アプリケーショントラフィックを、プロキシサーバーへの対応する固定ポートのソケットを介してアプリケーション固有のプロキシサーバーに向けることができる。
ステップ844では、モバイルデバイスは、固定ポートのアプリケーショントラフィックのペイロードを、UDPプロキシサーバーに伝送することができる。例えば、モバイルデバイスは、関連するアプリケーション固有のプロキシサーバーに、アプリケーションゲートウェイによって使用されるTCPプロトコル及び/または通信規格に従って、アプリケーションネットワークトラフィックのペイロードを再パケット化するように命令することができる。
ステップ846では、モバイルデバイスは、ペイロードが、アプリケーショントラフィックの宛先アドレスに直接送信されるか否かを判定することができる。モバイルデバイスは、ネットワークトラフィックがモバイルデバイスにアクセス可能な公衆網を介して、公衆網アドレス及び/または私設網に送信されるか否かを判定することができる。例えば、幾つかの実施形態では、アプリケーショントラフィックの宛先ネットワークアドレスは、公衆網(例えば、インターネット)によってモバイルデバイスにアクセス可能なアクセスゲートウェイを介してのみアクセス可能な私設網アドレスであり得る。他の実施形態では、アプリケーショントラフィックの宛先ネットワークアドレスは、アクセスゲートウェイを介してトラフィックをルーティングせずにモバイルデバイスにアクセス可能であり得る。モバイルデバイスは、アプリケーションネットワークトラフィックの宛先ネットワークアドレスを検査して、アプリケーショントラフィックを、その最終宛先に送信するためにさらなる処理及び/または再パケット化が必要か否かを判定することができる(例えば、アクセスゲートウェイを介してその宛先にルーティングされるアプリケーショントラフィックをフォーマットする)。ペイロードが宛先ネットワークアドレスに直接送信できるか否か、またはアクセスゲートウェイを介してトンネリングする必要があるか否かを判定する際に、モバイルデバイスは、アプリケーション固有のUDPプロキシサーバーが、アプリケーショントラフィックの宛先ネットワークアドレスにアクセスできるか否か、及び/または宛先ネットワークアドレスの要件に従って、アプリケーションネットワークをフォーマットすることができるか否かを判定することができる。アプリケーション固有のUDPプロキシサーバーが実行できないようにさらに再フォーマットすることを必要とするアプリケーションネットワークトラフィックは、アクセスゲートウェイに転送され得る。
ステップ848では、ペイロードがモバイルデバイスから宛先ネットワークアドレスに直接送信され得ると判定したことに応答して、モバイルデバイスは、アプリケーショントラフィックを、その宛先ネットワークアドレスに直接送信することができる。例えば、アプリケーション固有のUDPプロキシサーバーは、トラフィックがアドレス指定されるべき宛先ネットワークアドレスを指定することができる。アプリケーション固有のデーモンは、アプリケーショントラフィックを適切に転送するために、宛先ネットワークアドレスによって使用される通信プロトコルに従って、受信されたアプリケーショントラフィックのペイロードを再パケット化することができる。
ステップ850では、ペイロードが宛先アドレスに直接送信できないと判定したことに応答して、モバイルデバイスは、アプリケーショントラフィックを、UDPプロキシサーバーからアクセスゲートウェイに送信することができる。アプリケーショントラフィックがアプリケーション固有のプロキシサーバーによって適切にフォーマットされると、モバイルデバイスは、プロキシサーバーに、再パケット化されたアプリケーショントラフィックをアクセスゲートウェイに送信するように命令することができる。アクセスゲートウェイは、アプリケーショントラフィックを私設網に送信するように、モバイルデバイスによって命令され得る。アプリケーション固有のUDPプロキシサーバーは、アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックの宛先パスを、アクセスゲートウェイの宛先パスに置換することができる。アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックが、アクセスゲートウェイに達すると、モバイルデバイスは、アクセスゲートウェイのポリシーに従って、アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックを処理及び/または再フォーマットして、アクセスゲートウェイを介して私設網に伝送するために、そのようなトラフィックを準備するようにアクセスゲートウェイに命令することができる
図8Cは、本明細書に記載の1つ以上の例示的な態様による、アプリケーションごとにモバイルDNS VPN接続を生成する方法を解説するフローチャートを示す。1つ以上の実施形態では、図8Cの方法及び/またはその1つ以上のステップは、コンピューティングデバイス(例えば、汎用コンピューティングデバイス201)によって実行され得る。他の実施形態では、図8Cに示す方法及び/またはその1つ以上のステップは、非一時的なコンピュータ可読メモリのような、コンピュータ可読媒体に記憶されたコンピュータに実行可能な命令において具現化され得る。
図8Cに示すように、ステップ852では、モバイルデバイスは、モバイルアプリケーションがDNSトンネリングプロトコルを使用するか否かを判定することができる。モバイルデバイスは、ステップ802で検査されたシステムコール及び/または通信プロトコルがDNSのインジケータを含むか否かを監視することにより、モバイルVPNシステムが、DNSトンネリングプロトコルを使用するか否かを判定することができる。例えば、モバイルデバイスは、既知のDNSシステムコール、DNSクエリ、通信プロセス、及び/またはDNS通信プロトコルを示すフックについて、モバイルアプリケーションからの通信及び/またはシステムコールを検査することができる。モバイルアプリケーションがDNSトンネリングプロトコルを使用しないと判定し、モバイルアプリケーションもTCPまたはUDPトンネリングプロトコルを使用しないと判定した場合、この方法は終了することができる。
ステップ854では、モバイルアプリケーションがDNSトンネリングプロトコルを使用すると判定する場合、モバイルデバイスは、モバイルアプリケーションからのシステムコール及びモバイルアプリケーションによって使用される任意のサードパーティーライブラリを傍受することができる。モバイルデバイスは、VPNネットワークに接続するための特定のDNSシステムコールについて、モバイルアプリケーション及び/またはその関連するライブラリによって発行されたすべてのシステムコールを検査することができる。モバイルデバイスは、VPNネットワークに接続するためのすべてのシステムコールを識別し、またそのような傍受されたシステムコールに関連するすべてのアプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックを特定することもできる。
ステップ856では、モバイルデバイスは、アプリケーション固有のプロキシサーバーを、ローカルドメインソケットで生成することができる。モバイルデバイスは、アプリケーション固有のDNSプロキシサーバーが私設網にトンネリングされるトラフィックを受信することができるアプリケーションサンドボックスパスを生成することができる。モバイルデバイスは、管理されているアプリケーションのトラフィックを処理して、前記トラフィックを、アクセスゲートウェイを介して私設網にトンネリングするように構成されたプロキシサーバーにローカルソケットを生成することができる。モバイルデバイスはまた、アプリケーションサンドボックスで生成されたローカルソケットに通信可能に連結されたアプリケーション固有のプロキシサーバーを生成することもできる。アプリケーション固有のプロキシサーバーは、1つの管理されているアプリケーション専用に生成され、アクセスゲートウェイを介してそのトラフィックを私設網にトンネリングすることができる。アプリケーション固有のプロキシサーバーは、役割を果たすように構成された管理されているモバイルアプリケーションに対して行われたシステムコールを傍受するように構成され得る。アプリケーション固有のプロキシサーバーは、モバイルデバイスにアクセス可能な公衆網から私設網へのトラフィックのルーティングを処理することができるアクセスゲートウェイにソケットを生成することができる。モバイルデバイスは、アプリケーション固有のデーモンを、アプリケーション固有のDNSプロキシサーバーで生成して、それに向けられたDNSアプリケーショントラフィックのDNSクエリを解決することができる。アプリケーション固有のプロキシサーバーでは、管理されているアプリケーションからのアプリケーションネットワークトラフィックは、アクセスゲートウェイを介して、私設網にトンネリングされるように再パケット化され得る。例えば、プロキシサーバーは、アプリケーションネットワークトラフィックのペイロードを抽出して、私設網と通信するアクセスゲートウェイによって使用されるDNSプロトコルに従ってそれをフォーマットするように構成され得る。アクセスゲートウェイは、私設網に送信されるDNSトンネリングプロトコルに従って再パケット化される着信ペイロードパケットを要求していることができる。したがって、アプリケーション固有のプロキシサーバーは、アクセスゲートウェイ及び/または私設網によって使用されるプロトコルを識別して、私設網に伝送するために正しくフォーマットされる着信アプリケーションネットワークトラフィックメッセージを再パケット化することができる。
ステップ858では、モバイルデバイスは、アプリケーションサーバーとシステム全体のDNSデーモンとの間にリンクを生成することができる。例えば、モバイルデバイスは、アプリケーション固有のプロキシDNSサーバーとシステム全体のDNSデーモンとの間にソケットを生成することができる。このようなリンクは、アプリケーション固有のDNSデーモンが解決できない可能性のあるアプリケーショントラフィックを転送するために生成され、システム全体のDNSデーモンの支援を必要とする可能性がある。
ステップ860では、モバイルデバイスは、傍受されたシステムコールからのDNSデーモンアドレスを特定することができる。このような傍受されたシステムコールに関連するVPN接続及び/またはアプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックは、システムコール及び/またはアプリケーショントラフィックが向けられるDNSデーモンのアドレスを特定するために検査され得る。DNSトラフィック及び/またはシステムコールは、DNSデーモンによって解決される必要があるDNSクエリを含み、DNSデーモンのパス及び/またはアドレスを含むことができる。
ステップ862では、モバイルデバイスは、DNSデーモンアドレスとローカルドメインソケットへのアプリケーションサンドボックスパスを置換して、アプリケーション固有のプロキシサーバーに接続することができる。ステップ860で、傍受されたシステムコールからDNSデーモンアドレス及び/またはパスを特定すると、モバイルデバイスは、システムコール及び/またはアプリケーションネットワークトラフィック内のDNSデーモンのパスと、アプリケーション固有のDNSデーモンが実行できるアプリケーションサンドボックスパスを置換することができる。モバイルデバイスは、アプリケーションがVPNを介して送信されるシステムコール及び/またはアプリケーショントラフィックを生成して、対応する識別されたモバイルアプリケーションのアプリケーション固有DNSデーモンが実行しているアプリケーションプロキシサーバーを特定する。モバイルデバイスは、このようなシステムコール及び/または関連するアプリケーショントラフィックを、識別されたプロキシサーバーに向けることができる。
ステップ864では、アプリケーション固有のDNSデーモンのアプリケーションからのDNSクエリは、ローカルドメインソケットで受信され得る。モバイルデバイスは、所与のアプリケーションのDNSクエリ、システムコール、及び/またはアプリケーショントラフィックを転送するために使用するアプリケーション固有のプロキシサーバーを決定すると、モバイルデバイスは、そのモバイルアプリケーションからのDNSクエリを、識別されたプロキシサーバーのアプリケーション固有のDNSデーモンに転送する。アプリケーション固有のプロキシサーバーのローカルソケットは、このようなトラフィックメッセージを受信することができ、具体的には、このようなトラフィックメッセージに対するDNSクエリを受信することができる。
ステップ866では、モバイルデバイスは、アプリケーション固有のデーモンが受信されたDNSクエリを解決するか否かを判定することができる。モバイルデバイスは、アプリケーション固有のプロキシサーバーに、ステップ864で受信したDNSクエリを解決できるか否かを判定するように命令することができる。例えば、アプリケーション固有のDNSデーモンは、アクセスゲートウェイによって使用されるポリシーを使用して、アプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックの関連するDNSクエリを処理するように命令され得る。例えば、アプリケーション固有のDNSデーモンは、対応するアプリケーションのアプリケーションサンドボックスパスを介して受信された、DNS要求及び/または関連するアプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックがアプリケーション固有のDNSデーモンによってローカルに解決され得るか否かを判定することができる。アクセスゲートウェイのポリシーに従ってさらに再フォーマットする必要があり、アプリケーション固有のDNSデーモンで実行できないDNS要求は、システムレベルのDNSデーモンに転送され得る。
ステップ868では、アプリケーション固有のデーモンがDNSクエリを解決できないという判定に応答して、モバイルデバイスは、DNSクエリを、システムレベルのDNSデーモンに送信することができる。例えば、アプリケーション固有のDNSデーモンは、ローカルドメインソケットから受信したアプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックを、ステップ858で生成されたリンク(例えば、ソケット)によってシステムレベルのDNSパスにリダイレクトすることができる。アプリケーション固有のDNSデーモンは、プロキシサーバーで解決できないアプリケーションネットワークトラフィック及び/ライブラリネットワークトラフィックのDNSクエリ内の宛先パスを、システムレベルのDNSパスの宛先パスと置換して、システムレベルのデーモンにトラフィックを送信することができる。アプリケーションネットワークトラフィック及び/ライブラリネットワークトラフィックがシステムレベルのDNSデーモンに達すると、モバイルデバイスは、システムレベルのDNSデーモンに、アクセスゲートウェイのポリシーに従ってアプリケーションネットワークトラフィック及び/またはライブラリネットワークトラフィックを処理及び/または再フォーマットして、アクセスゲートウェイを介して私設網に伝送するためにそのようなトラフィックを準備するように命令することができる。システムレベルのDNSデーモンは、アプリケーション固有のDNSデーモンがこのようなリダイレクトされたトラフィックパケットに対して実行しなかったDNSクエリを解決することができる。
ステップ870では、アプリケーション固有のデーモンがDNSクエリを解決することができるという判定に応答して、モバイルデバイスは、アプリケーション固有のプロキシサーバーのアプリケーション固有のデーモンに、アクセスゲートウェイのVPNプロトコルに従ってDNSクエリを解決するように命令することができる。例えば、アプリケーション固有のデーモンは、トラフィックがアドレス指定されるべき私設網の宛先ネットワークアドレスを指定することができる。アプリケーション固有のデーモンは、アクセスゲートウェイを介してアプリケーショントラフィックを私設網に転送するために、アクセスゲートウェイによって使用されるDNS及び/または通信プロトコルに従って受信されたアプリケーショントラフィックのペイロードを再パケット化することができる。
ステップ872では、モバイルデバイスは、DNS解決時に、アプリケーション固有のプロキシサーバーからアクセスゲートウェイにアプリケーショントラフィックを送信することができる。アプリケーショントラフィックが適切にフォーマット及び解決されると、モバイルデバイスは、プロキシサーバーに、再パケット化されたアプリケーショントラフィックをアクセスゲートウェイに送信するように命令することができる。アクセスゲートウェイは、アプリケーショントラフィックを私設網に送信するように、モバイルデバイスによって命令され得る。
主題は、構造的特徴及び/または方法的な作用に特化した言語で説明されたが、付属の請求項において定義された主題は、上記で説明された特定の機能または作用に必ずしも限定されないことが理解されるべきである。むしろ、上記で説明された特定の特徴及び作用は、下記の請求項の例示の実施例として説明される。
関連出願の相互参照
本出願は、「MICRO VPN TUNNEING FOR MOBILE PLATFORM」と題する、2015年5月11日に出願された。米国非仮特許出願第14/708,464号の優先権を主張するこの先行出願は、その全体が参照により本明細書に組み込まれる。