様々な実施形態の下記の説明において、上記で明らかにされ、本明細書の一部を形成する添付の図面が参照され、図面において、本明細書が説明される実施形態が実行されてもよい様々な実施形態が例証によって示される。他の実施形態が利用されてもよく、本明細書で説明される範囲から逸脱せずに、構造的及び機能的な修正が行われてもよいことが理解されるべきである。他の実施形態の様々な態様が可能であり、様々な異なる方法で実行される、または行われることができる。
以下により詳細に説明される主題への一般的な導入として、本明細書において説明される態様は、サーバ及び/またはペアリングした装置のような他の装置から取得されたエントロピーに基づいてクライアント装置を認証するシステム及び方法を対象とする。システムは、クライアント装置、アプリケーション、及び/またはクライアント装置のユーザを認証するためにデータをロック解除する、暗号学的鍵のような鍵を生成してもよい。サーバエントロピー及び/またはペアリングした装置エントロピーから生成された鍵が、4桁または6桁のPINのような短いPINによって生成された鍵よりも強固であり得るので、データセキュリティは、改善され得る。認証中、クライアント装置は、サーバから署名済みデータを受信してもよい。署名済みデータは、限時チケット、及びPINまたはパスワードのようなユーザのパスコードの暗号化されたコピーを含んでもよい。英数字パスワードは、短い数字のPINよりも大きなエントロピーを提供し得る。PINは、一方で、政府または他の管理環境において、より頻繁に使用され得る。PINはまた、モバイル装置上で頻繁にタイプすることがパスワードよりも容易であり得る。簡潔さのために、ユーザPINが、ユーザ及び/またはクライアント装置の認証のために本明細書において説明される。ただし、パスワード(または任意の他のパスコード)が認証のためにPINの代わりに使用されてもよい。
署名済みデータに含まれた限時チケットは、数時間から数日(例えば、24時間、72時間等)の範囲について検証されてもよい。現在時間がチケット検証ウィンドウ内である場合、暗号学的鍵は、クライアント装置に記憶されるPINを復号化するために使用されてもよい。暗号学的鍵は、サーバ上で作成された鍵素材を含んでもよい。ユーザによって入力されたPINは、ユーザ及び/またはクライアント装置を認証するために正しいPINに照らされてもよい。鍵は、追加のパスワード、証明書、クッキー、及び他の機密情報を含むクライアント装置上の暗号化されたヴォルトをクライアント装置がロック解除することを許容してもよい。
本明細書で使用される表現法及び用語法は説明の目的のためであり、限定であると見做されるべきではないことが理解されるべきである。むしろ、本明細書で使用される表現及び用語は、その最も幅広い解釈及び意味が与えられるべきである。「含む」及び「備える」ならびにそれらの変形の使用は、その後に挙げられた項目及びその等価物、ならびに追加の項目及びその等価物を包括することを意味する。「装着される」、「接続される」、「連結される」、「位置決めされる」、「係止される」、及び同様の用語の使用は、直接的と間接的との両方で装着する、接続する、連結する、位置決めする、及び係止することを含むことを意味する。
〈コンピューティングアーキテクチャ〉
コンピュータソフトウェア、ハードウェア、及びネットワークは、とりわけ、スタンドアロン、ネットワーク接続環境、リモートアクセス(別名、リモートデスクトップ)、仮想化された環境、及び/またはクラウドベースの環境などの様々な異なるシステム環境において利用されてもよい。図1は、スタンドアロン及び/またはネットワーク接続された環境において本明細書において説明される1つ以上の例証的な態様を実装するために使用され得る、システムアーキテクチャ及びデータ処理装置の一例を例証する。様々なネットワークノード103、105、107及び109は、インターネットなどの広域ネットワーク(WAN)101を介して相互接続されてもよい。私用イントラネット、企業ネットワーク、LAN、メトロポリタンエリアネットワーク(MAN)無線ネットワーク、個人ネットワーク(PAN)などを含む他のネットワークもまた、または代替的に使用されてもよい。ネットワーク101は例証の目的のためであり、より少ない、または追加のコンピュータネットワークと置き換えられてもよい。ローカルエリアネットワーク(LAN)は、知られているLANトポロジのうちの1つ以上を有してもよく、イーサネット(登録商標)などの様々な異なるプロトコルのうちの1つ以上を使用してもよい。装置103、105、107、109及び他の装置(図示せず)は、ツイストペアケーブル、同軸ケーブル、光ファイバー、電波、または他の通信媒体を介したネットワークのうちの1つ以上に接続されてもよい。
本明細書で使用され、図面において示されるような「ネットワーク」という用語は、遠隔記憶装置が1つ以上の通信経路を介して互いに連結されるシステムのみを示さず、記憶能力を有するこのようなシステムに時々連結されてもよいスタンドアロン装置も示す。続いて、「ネットワーク」という用語は、「物理ネットワーク」だけではなく、すべての物理ネットワーク上にある単一のエンティティにデータを属させることができるものからなる「コンテンツネットワーク」も含む。
構成要素は、データサーバ103と、ウェブサーバ105と、クライアントコンピュータ107、109とを含んでもよい。データサーバ103は、本明細書で説明される1つ以上の例証的な態様を実行するための、データベースのアクセス、制御、及び管理の全体、ならびに制御ソフトウェアを提供する。データサーバ103は、ユーザが相互作用し、要求されたデータを取得する、ウェブサーバ105に接続されてもよい。代替的に、データサーバ103は、ウェブサーバ自体として作用してもよく、インターネットに直接接続されてもよい。データサーバ103は、直接または間接接続、若しくは他のネットワークを介して、ネットワーク101(例えば、インターネット)を通してウェブサーバ105に接続されてもよい。ユーザは、例えばウェブブラウザを使用して、ウェブサーバ105によってホスティングされた1つ以上の外部に露出されたウェブサイトを介してデータサーバ103に接続するなど、リモートコンピュータ107、109を使用してデータサーバ103と相互作用してもよい。クライアントコンピュータ107、109は、データサーバ103と協調して使用され、クライアントコンピュータ107、109に記憶されているデータにアクセスしてもよく、または他の目的のために使用されてもよい。例えば、クライアント装置107からユーザは、当分野において知られるように、インターネットブラウザを使用するか、またはコンピュータネットワーク(例えば、インターネット)上でウェブサーバ105及び/またはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスしてもよい。
サーバ及びアプリケーションは、同じ物理マシン上で組み合わせられ、別々の仮想または論理アドレスを保持してもよく、または別々の物理マシン上にあってもよい。図1は、使用されてもよいネットワークアーキテクチャの単なる1つの例を例証し、当業者は、使用される特定のネットワークアーキテクチャ及びデータ処理装置が変化し得、本明細書でさらに説明されるように、それらが提供する機能性を伴うことを理解するであろう。例えば、ウェブサーバ105及びデータサーバ103によって提供されるサービスは、単一のサーバ上で組み合わせられてもよい。
各構成要素103、105、107、109は、任意の知られた種類のコンピュータ、サーバ、またはデータ処理装置であってもよい。データサーバ103は、例えば、レートサーバ103の動作全体を制御する処理装置111を含んでもよい。データサーバ103は、ランダムアクセスメモリ(RAM)113と、読み取り専用メモリ(ROM)115と、ネットワークインターフェース117と、入力/出力(I/O)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は、クライアントアクセス装置用の仮想マシンを提供するように構成された、単一のサーバまたは複合サーバデスクトップ仮想システム(例えば、リモートアクセスまたはクラウドシステム)においてサーバ206aとして使用されてもよい。一般的なコンピューティング装置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」と呼ばれる)と通信状態にあってもよい。1つの実施形態では、コンピューティング環境200は、サーバ206とクライアントマシン240との間に設置されたネットワーク機器を含んでもよい。ネットワーク機器は、クライアント/サーバ接続を管理してもよく、いくつかの場合では、複数のバックエンドサーバ206内のクライアント接続をロードバランシングすることができる。
クライアントマシン240は、いくつかの実施形態では、単一のクライアントマシン240またはクライアントマシン240の単一のグループを指してもよく、一方で、サーバ206は単一のサーバ206またはサーバ206の単一のグループを指してもよい。1つの実施形態では、単一のクライアントマシン240は、1つ以上のサーバ206と通信し、一方で、別の実施形態では、単一のサーバ206は、1つ以上のクライアントマシン240と通信する。さらに別の実施形態では、単一のクライアントマシン240は、単一のサーバ206と通信する。
クライアントマシン240は、いくつかの実施形態では、クライアントマシン、クライアント、クライアントコンピュータ、クライアント装置、クライアントコンピュータ、装置、ローカルマシン、リモートマシン、クライアントノード、エンドポイント、またはエンドポイントノードの非網羅的用語のうちのいずれか1つによって参照されることができる。サーバ206は、いくつかの実施形態では、サーバ、ローカルマシン、リモートマシン、サーバファーム、またはホストコンピューティング装置の非網羅的用語のうちのいずれか1つによって参照されることができる。
1つの実施形態では、クライアントマシン240は仮想マシンであってもよい。仮想マシンは任意の仮想マシンであってもよく、一方で、いくつかの実施形態では、仮想マシンは、例えばCitrix Systems、IBM、VMwareによって開発されたハイパーバイザまたは任意の他のハイパーバイザなどのタイプ1またはタイプ2のハイパーバイザによって管理される任意の仮想マシンであってもよい。いくつかの態様では、仮想マシンはハイパーバイザによって管理されてもよく、一方で、いくつかの態様では、仮想マシンはサーバ206上で実行するハイパーバイザまたはクライアント240上で実行するハイパーバイザによって管理されてもよい。
いくつかの実施形態は、サーバ206または他の遠隔に位置するマシン上で遠隔実行するアプリケーションによって生成されたアプリケーション出力を表示するクライアント装置240を含む。これらの実施形態では、クライアント装置240は、仮想マシン受信プログラムまたはアプリケーションを実行して、出力をアプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに表示しもよい。1つの例では、アプリケーションはデスクトップであり、一方で、他の例では、アプリケーションはデスクトップを生成する、または提示するアプリケーションである。デスクトップは、ローカル及び/またはリモートアプリケーションが組み込まれることができる動作システムの事象用のユーザインターフェースを提供するグラフィカルシェルを含んでもよい。本明細書において使用されるようなアプリケーションは、動作システム(及び、選択的に、デスクトップも)の事象がロードされた後に実行するプログラムである。
サーバ206は、いくつかの実施形態では、リモート提示プロトコルまたは他のプログラムを使用し、データをシンクライアントまたはクライアント上で実行するリモートディスプレイアプリケーションを送信し、サーバ206上で実行するアプリケーションによって生成された表示出力を提示する。シンクライアントまたはリモート提示プロトコルは、以下のプロトコルの非網羅的リスト、Ft.Lauderdale,FloridaのCitrix Systems,Inc.によって開発されたIndependent Computing Architecture(ICA)プロトコル、またはRedmond,WashingtonのMicrosoft Corporationによって製造されたRemote Desktop Protocolのうちの任意の1つであることができる。
リモートコンピューティング環境は、サーバ206a−206nが例えばクラウドコンピューティング環境などにおいてサーバファーム206内に互いに論理的にグループ化されるように、1つ以上のサーバ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は、例えばファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、セキュアなSockets Layer(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバ、またはマスターアプリケーションサーバとして、アクティブデイレクトリを実行するサーバ、ファイアウォール機能、アプリケーション機能、またはロードバランシング機能を提供するアプリケーション加速プログラムなど、必要に応じて、任意のタイプのサーバとして構成されてもよい。他のサーバタイプも使用されてもよい。
いくつかの実施形態は、クライアントマシン240から要求を受信し、要求を第2のサーバ106bに転送し、第2のサーバ106bからの応答でクライアントマシン240によって生成された要求に応答する第1のサーバ106aを含む。第1のサーバ106aは、クライアントマシン240及びウェルに利用可能なアプリケーションの列挙を、アプリケーションの列挙内で識別されたアプリケーションをホスティングするアプリケーションサーバ206に関連するアドレス情報として取得してもよい。次に、第1のサーバ106aは、ウェブインターフェースを使用してクライアントの要求への応答を提示することができ、クライアント240と直接通信して、クライアント240に識別されたアプリケーションへのアクセスを提供することができる。1つ以上のクライアント240及び/または1つ以上のサーバ206は、例えばネットワーク101などのネットワーク230上でデータを送信してもよい。
図2は、例証的なデスクトップ仮想化システムのハイレベルアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、単一サーバまたはマルチサーバシステム、若しくは仮想デスクトップ及び/または仮想アプリケーションを1つ以上のクライアントアクセス装置240に提供するように構成された少なくとも1つの仮想化サーバ206を含むクラウドシステムであってもよい。本明細書で使用されるように、デスクトップは、1つ以上のアプリケーションがホスティングされてもよい、及び/または実行されてもよいグラフィック環境または空間を指す。デスクトップは、ローカル及び/またはリモートアプリケーションが組み込まれることができる動作システムの事象に対するユーザインターフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、動作システム(及び、選択的に、デスクトップも)の事象がロードされた後に実行するプログラムを含んでもよい。動作システムの各事象は、物理的(例えば、装置あたり1つの動作システム)または仮想的(例えば、単一の装置上で実行するOSの多くの事象)であってもよい。各アプリケーションは、ローカル装置で実行されてもよく、または遠隔に位置する装置(例えば、リモートの)上で実行してもよい。
図3をさらに参照すると、コンピュータ装置301は、仮想化環境における仮想化サーバ、例えば、単一サーバ、マルチサーバ、またはクラウドコンピューティング環境として構成されてもよい。図3に例証された仮想化サーバ301は、図2に例証されたサーバ206の1つ以上の実施形態によって、または他の知られたコンピューティング装置によって、展開及び/または実装されることができる。仮想化サーバ301に含まれているものは、1つ以上の物理的ディスク304、1つ以上の物理的装置306、1つ以上の物理的プロセッサ308、及び1つ以上の物理的メモリ316を含むことができるハードウェア層である。いくつかの実施形態において、ファームウェア312は、物理的メモリ316のメモリ要素内に記憶されることができ、また物理的プロセッサ308のうちの1つ以上によって実行されることができる。仮想化サーバ301は、物理的メモリ316のメモリ要素に記憶されてもよく、また物理的プロセッサ308のうちの1つ以上によって実行されてもよい、動作システム314をさらに含んでもよい。またさらに、ハイパーバイザ302が、物理的メモリ316のメモリ要素に記憶されてもよく、また物理的プロセッサ308のうちの1つ以上によって実行されることができる。
物理的プロセッサ308の1つ以上で実行するものは、1つ以上の仮想マシン332A−C(一般的に332)であってもよい。各仮想マシン332は、仮想ディスク326A−C及び仮想プロセッサ328A−Cを有してもよい。いくつかの実施形態において、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行してもよい。制御プログラム320は、制御仮想マシン、Dom0、Domain0、またはシステム管理及び/若しくは制御用に使用される他の仮想マシンと呼ばれてもよい。いくつかの実施形態において、1つ以上の仮想マシン332B−Cは、仮想プロセッサ328B−Cを使用して、ゲスト動作システム330A−Bを実行することができる。
仮想化サーバ301は、仮想化サーバ301と通信するハードウェアの1つ以上の断片を有するハードウェア層310を含んでもよい。いくつかの実施形態において、ハードウェア層310は、1つ以上の物理的ディスク304、1つ以上の物理的装置306、1つ以上の物理的プロセッサ308、及び1つ以上のメモリ216を含むことができる。物理的構成要素304、306、308、及び316は、例えば、上記の任意の構成要素を含んでもよい。物理的装置306は、例えば、ネットワークインターフェースカード、ビデオカード、キーボード、マウス、入力装置、モニタ、ディスプレイ装置、スピーカ、光学ドライブ、記憶装置、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、負荷分散装置、仮想私用ネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータ等)、または仮想化サーバ301と接続された若しくは通信する任意の装置を含んでもよい。ハードウェア層310の物理的メモリ316は、任意のタイプのメモリを含んでもよい。物理的メモリ316は、データを記憶してもよく、またいくつかの実施形態において1つ以上のプログラム、または一組の実行可能命令を記憶してもよい。図3は、ファームウェア312が仮想化サーバ301の物理的メモリ316内に記憶される実施形態を例証する。物理的メモリ316に記憶されているプログラムまたは実行可能命令は、仮想化サーバ301の1つ以上のプロセッサ308によって実行されることができる。
仮想化サーバ301はまた、ハイパーバイザ302を含む。いくつかの実施形態において、ハイパーバイザ302は、任意の数の仮想マシン332を作成及び管理するために仮想化サーバ301上でプロセッサ308によって実行されたプログラムであってもよい。ハイパーバイザ302は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと呼ばれてもよい。いくつかの実施形態において、ハイパーバイザ302は、実行可能命令及びコンピューティングマシン上で実行する仮想マシンを監視するハードウェアの任意の組み合わせであることができる。ハイパーバイザ302は、ハイパーバイザが仮想サーバ301上で実行する動作システム314内において実行する、タイプ2のハイパーバイザであってもよい。次に、仮想マシンは、ハイパーバイザの上のレベルで実行する。いくつかの実施形態において、タイプ2のハイパーバイザは、タイプ2のハイパーバイザがユーザの動作システムと相互作用するように、ユーザの動作システムのコンテキスト内で実行する。他の実施形態において、仮想化環境における1つ以上の仮想化サーバ201は、タイプ1のハイパーバイザ(図示せず)を代わりに含んでもよい。タイプ1のハイパーバイザは、ハードウェア及びハードウェア層310内のリソースに直接アクセスすることによって仮想化サーバ301上で実行してもよい。つまり、タイプ2のハイパーバイザ302は、示されるように、ホスト動作システム314を通してシステムリソースにアクセスするが、一方でタイプ1のハイパーバイザは、ホスト動作システム314なしで全システムリソースに直接アクセスしてもよい。タイプ1のハイパーバイザは、仮想化サーバ301の1つ以上の物理的プロセッサ308上で直接実行してもよく、物理的メモリ316に記憶されているプログラムデータを含んでもよい。
ハイパーバイザ302は、いくつかの実施形態において、システムリソースへの直接的なアクセスを有する動作システム330または制御プログラム320を模擬する任意の方式において、仮想マシン332上で実行している動作システム330または制御プログラム320に仮想リソースを提供することができる。システムリソースは、限定されるものではないが、物理的装置306、物理的ディスク304、物理的プロセッサ308、物理的メモリ316及び仮想化サーバ301ハードウェア層310に含まれた任意の他の構成要素を含むことができる。ハイパーバイザ302は、仮想ハードウェアをエミュレートするか、物理的ハードウェアを区分けするか、物理的ハードウェアを仮想化するか、及び/またはコンピューティング環境へのアクセスを提供する仮想マシンを実行するために使用されてもよい。また他の実施形態において、ハイパーバイザ302は、仮想化サーバ301上で実行している仮想マシン332についてのプロセッサスケジュール及びメモリ区分を制御する。ハイパーバイザ302は、Palo Alto,CaliforniaのVMWare,Inc.,によって製造されたもの、開発がオープンソースXen.orgコミュニティによって監督されるオープンソース製品である、XENハイパーバイザ、Microsoftによって提供されるHyperV、VirtualServer若しくは仮想PCハイパーバイザ、またはその他を含んでもよい。いくつかの実施形態において、仮想化サーバ301は、ゲスト動作システムが実行し得る仮想マシンプラットフォームを作成するハイパーバイザ302を実行する。これらの実施形態において、仮想化サーバ301は、ホストサーバと呼ばれてもよい。このような仮想化サーバの例は、Fort Lauderdale,FLのCitrix Systems, Inc.,によって提供されるXEN SERVERである。
ハイパーバイザ302は、ゲスト動作システム330が実行する1つ以上の仮想マシン332B−C(一般的に332)を作成してもよい。いくつかの実施形態において、ハイパーバイザ302は、仮想マシン332を作成するために仮想マシンイメージをロードしてもよい。他の実施形態において、ハイパーバイザ302は、仮想マシン332内でゲスト動作システム330を実行してもよい。また他の実施形態において、仮想マシン332は、ゲスト動作システム330を実行してもよい。
仮想マシン332を作成することに加えて、ハイパーバイザ302は、少なくとも1つの仮想マシン332の実行を制御してもよい。他の実施形態において、ハイパーバイザ302は、仮想化サーバ301によって提供された少なくとも1つのハードウェアリソース(例えば、ハードウェア層310内において利用可能な任意のハードウェアリソース)の抽象概念を有する少なくとも1つの仮想マシン332を提供してもよい。他の実施形態において、ハイパーバイザ302は、仮想マシン332が仮想化サーバ301において利用可能な物理的プロセッサ308にアクセスする方式を制御してもよい。物理的プロセッサ308へのアクセスを制御することは、仮想マシン332が、プロセッサ308へのアクセスを有するべきか否か、またどの程度の物理的プロセッサ能力が仮想マシン332に提供されるかを判定することを含んでもよい。
図3に示されるように、仮想化サーバ301は、1つ以上の仮想マシン332をホストまたは実行してもよい。仮想マシン332は、プロセッサ308によって実行されたときに、仮想マシン332が物理的コンピューティング装置とほとんど同様にプログラム及びプロセスを実行することができるように、物理的コンピュータの動作を模倣する、一組の実行可能命令である。図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施形態を例証するが、一方で他の実施形態において仮想化サーバ301は、任意の数の仮想マシン332をホストすることができる。ハイパーバイザ302は、いくつかの実施形態において、その仮想マシン332に利用可能な物理的ハードウェア、メモリ、プロセッサ及び他のシステムリソースの固有仮想ビューを有する各仮想マシン332を提供する。いくつかの実施形態において、固有仮想ビューは、仮想マシン許可、1つ以上の仮想マシン識別情報に対するポリシーエンジンのアプリケーション、仮想マシンにアクセスしているユーザ、仮想マシン上で実行しているアプリケーション、仮想マシンによってアクセセスされたネットワーク、または任意の他の所望の条件のうちの1つ以上に基づくことができる。事象について、ハイパーバイザ302は、1つ以上のセキュアではない仮想マシン332及び1つ以上のセキュアな仮想マシン332を作成してもよい。セキュアではない仮想マシン332は、セキュアな仮想マシン332がアクセスを許可され得るリソース、ハードウェア、メモリ位置、及びプログラムにアクセスすることを防がれてもよい。他の実施形態において、ハイパーバイザ302は、仮想マシン332にとって利用可能な物理的ハードウェア、メモリ、プロセッサ及び他のシステムリソースの実質的に同様の仮想ビューを有する各仮想マシン332を提供してもよい。
各仮想マシン332は、仮想ディスク326A−C(一般的に326)及び仮想プロセッサ328A−C(一般的に328)を含んでもよい。仮想ディスク326は、いくつかの実施形態において、仮想化サーバ301の1つ以上の物理的ディスク304、または仮想化サーバ301の1つ以上の物理的ディスク304の一部分の仮想化されたビューである。物理的ディスク304の仮想化されたビューは、ハイパーバイザ302によって生成、提供、及び管理されることができる。いくつかの実施形態において、ハイパーバイザ302は、物理的ディスク304の固有ビューを有する各仮想マシン332を提供する。したがって、これらの実施形態において、各仮想マシン332に含まれた特定の仮想ディスク326は、他の仮想ディスク326と比較されたときに固有であることができる。
仮想プロセッサ328は、仮想化サーバ301の1つ以上の物理的プロセッサ308の仮想化されたビューであることができる。いくつかの実施形態において、物理的プロセッサ308の仮想化されたビューは、ハイパーバイザ302によって生成、提供及び管理されることができる。いくつかの実施形態において、仮想プロセッサ328は、少なくとも1つの物理的プロセッサ308の同じ性質のうちの実質的にすべてを有する。他の実施形態において、仮想プロセッサ308は、仮想プロセッサ328の性質のうちの少なくともいくつかが対応する物理的プロセッサ308の性質とは異なるように、物理的プロセッサ308の修正されたビューを提供する。
図4をさらに参照すると、本明細書において説明されるいくつかの態様が、クラウド基盤環境に実装されてもよい。図4は、クラウドコンピューティング環境(またはクラウドシステム)400の例を例証する。図4に見られるように、クライアントコンピュータ411−414は、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403、記憶リソース404、及びネットワークリソース405)にアクセスするためにクラウド管理サーバ410と通信してもよい。
管理サーバ410は、1つ以上の物理的サーバ上に実装されてもよい。管理サーバ410は、例えば、とりわけ、Ft.Lauderdale,FLのCitrix Systems,Inc.によるCLOUDSTACK、またはOPENSTACKを動作させてもよい。管理サーバ410は、クラウドハードウェア及びクラウドソフトウェア、例えば、ホストコンピュータ403、データ記憶装置404、及びネットワーク接続装置405を含む、様々なコンピューティングリソースを管理してもよい。クラウドハードウェアリソース及びクラウドソフトウェアリソースは、私用構成要素及び/または公共構成要素を含んでもよい。例えば、クラウドは、1つ以上の特定の顧客コンピュータ若しくはクライアントコンピュータ411−414によって、及び/または私用ネットワーク上で使用されることになる私用クラウドとして構成されてもよい。他の実施形態において、公共クラウドまたは混成公共私用クラウドは、オープンネットワークまたは混成ネットワーク上で他の顧客によって使用されてもよい。
管理サーバ410は、クラウドオペレータ及びクラウド顧客がクラウドシステムと相互作用し得るように通るユーザインターフェースを提供するように構成されてもよい。例えば、管理サーバ410は、クラウドオペレータがクラウドリソースを管理し、仮想化層を構成し、顧客アカウントを管理し、そして他のクラウド管理タスクを行うことを許容するために、ユーザインターフェースを有する、一組のアプリケーションプログラミングインターフェース(API)及び/または1つ以上のクラウドオペレータコンソールアプリケーション(例えば、ウェブ基盤スタンドアロンアプリケーション)を提供してもよい。管理サーバ410はまた、クライアントコンピュータ411−414を介してエンドユーザからクラウドコンピューティング要求、例えば、クラウド内において仮想マシンを作成、修正、または削除する要求を受信するように構成されたユーザインターフェースを有する、一組のAPI及び/または1つ以上の顧客コンソールアプリケーションを含んでもよい。クライアントコンピュータ411−414は、インターネットまたは他の通信ネットワークを介して管理サーバ410に接続されてもよく、管理サーバ410によって管理されたコンピューティングリソースのうちの1つ以上へのアクセスを要求してもよい。クライアント要求に応答して、管理サーバ410は、クライアント要求に基づいてクラウドシステムのハードウェア層における物理的リソースを選択及び供給するように構成されたリソースマネージャを含んでもよい。例えば、管理サーバ410及びクラウドシステムの追加の構成要素は、ネットワーク(例えば、インターネット)上で顧客に計算リソース、データ記憶サービス、ネットワーク接続能力、ならびにコンピュータプラットフォーム及びアプリケーションサポートを提供する、クライアントコンピュータ411−414の顧客に対して仮想マシン及びその動作環境(例えば、ハイパーバイザ、記憶リソース、ネットワーク要素によって提案されたサービス等)を供給、作成、及び管理するように構成されてもよい。クラウドシステムはまた、セキュリティサービス、開発環境、ユーザインターフェースなどを含む、様々な特定のサービスを提供するように構成されてもよい。
特定のクライアント411−414は、例えば、同じエンドユーザの代わりに仮想マシンを作成する異なるクライアントコンピュータ、または同じ企業または組織と密接な関係がある異なるクライアントコンピュータに関連されてもよい。他の例において、特定のクライアント411−414は、例えば、異なる企業または組織と密接な関係があるユーザに関連がなくてもよい。関連がないクライアントについて、任意の1人のユーザの仮想マシンまたは仮想記憶装置上の情報は、他のユーザから隠されてもよい。
ここでクラウドコンピューティング環境の物理的ハードウェア層を参照すると、利用可能区域401−402(または区域)は、一緒に配置された一組の物理的コンピューティングリソースと呼ばれてもよい。区域は、コンピューティングリソースの全体クラウドにおいて他の区域から地理的に分離されてもよい。例えば、区域401は、Californiaに位置する第1のクラウドデータセンターであってもよく、区域402は、Floridaに位置する第2のクラウドデータセンターであってもよい。管理サーバ410は、利用可能な区域のうちの1つ、または別個の位置に位置してもよい。各区域は、ゲートウェイを通して、管理サーバ410のような区域の外側にある装置と接続する内部ネットワークを含んでもよい。クラウドのエンドユーザ(例えば、クライアント411−414)は、区域間の区別を認識してもよく、認識しなくてもよい。例えば、エンドユーザは、特定量のメモリ、処理電力、及びネットワーク能力を有する仮想マシンの作成を要求してもよい。管理サーバ410は、ユーザの要求に応答してもよく、仮想マシンが区域401または区域402のどちらからのリソースを使用して作成されたかをユーザが知ることなく、仮想マシンを作成するようにリソースを割り当ててもよい。他の例において、クラウドシステムは、仮想マシン(または他のクラウドリソース)が特定の区域または区域内の特定のリソース403−405に割り当てられることをエンドユーザが要求することを許容してもよい。
この例において、各区域401−402は、クラウドコンピューティングサービスを顧客に提供するために使用されてもよい、様々な物理的ハードウェア構成要素(またはコンピューティングリソース)403−405、例えば、物理的ホスティングリソース(または処理リソース)、物理的ネットワークリソース、物理的記憶リソース、スイッチ、及び追加のハードウェアリソースの配置を含んでもよい。クラウド区域401−402における物理的ホスティングリソースは、仮想マシン事象を作成及びホストするように構成されてもよい、上記の仮想化サーバ301のような、1つ以上のコンピュータサーバ403を含んでもよい。クラウド区域401または402における物理的ネットワークリソースは、ファイアウォール、ネットワークアドレス変換器、負荷分散装置、仮想私用ネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータなどのような、クラウド顧客にネットワークサービスを提供するように構成されたハードウェア及び/またはソフトウェアを備える、1つ以上のネットワーク要素405(例えば、ネットワークサービスプロバイダ)を含んでもよい。クラウド区域401−402における記憶リソースは、記憶ディスク(例えば、ソリッドステートドライブ(SSD)、磁気ハードディスク等)及び他の記憶装置を含んでもよい。
図4に示されるクラウドコンピューティング環境例はまた、仮想マシンを作成及び管理し、クラウドの物理的リソースを使用して顧客に他のサービスを提供するように構成された追加のハードウェアリソース及び/またはソフトウェアリソースを有する仮想化層(例えば、図1−3に示されるように)を含んでもよい。仮想化層は、図3において上述されたように、ネットワーク仮想化、記憶装置仮想化等を提供するために他の構成要素を伴う、ハイパーバイザを含んでもよい。仮想化層は、物理的リソースから別個の層であってもよく、または物理的リソースと同じハードウェアリソース及び/またはソフトウェアリソースのうちのいくつか若しくはすべてを共有してもよい。例えば、仮想化層は、物理的コンピューティングリソースを有する仮想化サーバ403の各々においてインストールされたハイパーバイザを含んでもよい。知られたクラウドシステム、例えば、WINDOWS(登録商標) AZURE (Redmond Washingtonのmicrosoft Corporation)、AMAZON EC2(Seattle, Washingtonのamazon.com Inc.)、IBM BLUE CLOUD(Armonk,New YorkのIBM Corporation)、または他のものが、これに代えて使用されてもよい。
〈エンタープライズモビリティ管理アーキテクチャ〉
図5は、BYOD環境で使用するためのエンタープライズモビリティ管理アーキテクチャ500を示す。本アーキテクチャは、モバイル装置502のユーザがモバイル装置502から企業または個人のリソースにアクセスすることと、モバイル装置502を個人的な使用のために使用することの両方を可能にする。ユーザは、ユーザによって購入されたモバイル装置502、または企業によってユーザに提供されたモバイル装置502を使用して、このような企業リソース504または企業サービス508にアクセスしてもよい。ユーザは、ビジネスでの使用のみのため、またはビジネス及び個人での使用のためにモバイル装置502を利用してもよい。モバイル装置はiOS動作システム、Android(登録商標)動作システムなどにおいて実行してもよい。企業は、ポリシーを実施するように選び、モバイル装置504を管理してもよい。ポリシーは、モバイル装置が識別されてもよく、セキュアにされてもよく、またはセキュリティを認証されてもよく、及び企業リソースに選択的または完全なアクセスが提供されてもよい方法で、ファイアウォールまたはゲートウェイを通して埋め込まれてもよい。ポリシーは、モバイル装置管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイル装置、アプリケーション、及びデータ管理ポリシーのいくつの組み合わせであってもよい。モバイル装置管理ポリシーのアプリケーションを通して管理されるモバイル装置504は、登録された装置と呼ばれてもよい。
いくつかの実施形態では、モバイル装置の動作システムは、管理される区分510及び管理されない区分512に分離されてもよい。管理される区分510は、管理される区分510に適用されるポリシーを有し、管理される区分上で実行するアプリケーション及び管理される区分において記憶されているデータをセキュアにしてもよい。管理される区分上で実行するアプリケーションは、セキュアなアプリケーションであってもよい。他の実施形態では、すべてのアプリケーションは、アプリケーションから別々に受信され、1つ以上のセキュリティパラメータ、特性、リソース規制、及び/またはアプリケーションが装置上で実行しているときにモバイル装置管理システムによって行われる他のアクセス制御を定義する1つ以上のポリシーファイルのセットに従って実行してもよい。それぞれのポリシーファイルに従って動作することによって、各アプリケーションは、1つ以上の他のアプリケーション及び/またはリソースとの通信が許容され、または規制され、それによって仮想区分を作成してもよい。したがって、本明細書で使用されるように、区分は、メモリの物理的に区分された部分(物理区分)、メモリの論理的に区分された部分(論理区分)、及び/または本明細書で説明されるような複数のアプリケーション上の1つ以上のポリシー及び/またはポリシーファイルの実行の結果として作成された仮想区分(仮想区分)を指してもよい。言い換えると、管理されるアプリケーション上でポリシーを行うことによって、それらのアプリケーションは、他の管理されるアプリケーション及び信用された企業リソースと通信することのみができるように規制され、それによって管理されないアプリケーション及び装置によって入り込めない仮想区分を作成してもよい。
セキュアなアプリケーションは、電子メールアプリケーション、ウェブブラウザアプリケーション、サービスとしてのソフトウェア(Saas)アクセスアプリケーション、Windows(登録商標) Applicationアクセスアプリケーションなどであってもよい。セキュアなアプリケーションは、セキュアなネイティブアプリケーション514、セキュアなアプリケーションランチャー518によって実行されるセキュアなリモートアプリケーション522、セキュアなアプリケーションランチャー518によって実行される仮想化アプリケーション526などであってもよい。セキュアなネイティブアプリケーション514は、セキュアなアプリケーションラッパ520によってラッピングされてもよい。セキュアなアプリケーションラッパ520は、セキュアなネイティブアプリケーションが装置上で実行されるとき、モバイル装置502上で実行される、組み込まれたポリシーを含んでもよい。セキュアなアプリケーションラッパ520は、モバイル装置502上で実行するセキュアなネイティブアプリケーション514を、セキュアなネイティブアプリケーション514がセキュアなネイティブアプリケーション514の実行の際に要求されたタスクを完了することを要求してもよい、企業においてホスティングされたリソースに向けるメタデータを含んでもよい。セキュアなアプリケーションランチャー518によって実行されるセキュアなリモートアプリケーション522は、セキュアなアプリケーションランチャーアプリケーション518内で実行されてもよい。セキュアなアプリケーションランチャー518によって実行される仮想化アプリケーション526は企業リソース504などにおいて、モバイル装置502上のリソースを利用してもよい。セキュアなアプリケーションランチャー518によって実行される仮想化アプリケーション526によってモバイル装置502上で使用されるリソースは、ユーザインタラクションリソース、処理リソースなどを含んでもよい。ユーザインタラクションリソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力などを収集し、送信するように使用されてもよい。処理リソースは、ユーザインターフェース、企業リソース504から受信した処理データなどを提示するように使用されてもよい。セキュアなアプリケーションランチャー518によって実行される仮想化アプリケーション526によって企業リソース504において使用されるリソースは、ユーザインターフェース生成リソース、処理リソースなどを含んでもよい。ユーザインターフェース生成リソースは、ユーザインターフェースをアセンブリングする、ユーザインターフェースを修正する、ユーザインターフェースを最新にするなどのように使用されてもよい。処理リソースは、情報を作成する、情報を読み取る、情報を更新する、情報を消去するなどのように使用されてもよい。例えば、仮想アプリケーションは、グラフィカルユーザインターフェース(GUI)に関連するユーザインタラクションを記録してもよく、及びユーザインタラクションをサーバアプリケーションに通信してもよく、サーバアプリケーションは、ユーザインタラクションデータを、サーバ上で動作するアプリケーションへの入力として使用する。この配置では、企業はサーバ側上のアプリケーションならびにアプリケーションに関連するデータ、ファイルなどを維持するように選出してもよい。企業は、モバイル装置上の配置用にアプリケーションをセキュアにすることによって、本明細書における原則に従って、いくつかのアプリケーションを「可動化」するように選出するが、本配置は特定のアプリケーション用にも選出されてもよい。例えば、いくつかのアプリケーションは、モバイル装置上の使用のためにセキュアにされてもよいが、他のアプリケーションは、モバイル装置上の配置に対して用意されていない、または適切ではないかもしれないので、企業は、仮想化技術を通して用意されていないアプリケーションへのモバイルユーザアクセスを提供するように選出してもよい。別の例として、企業は、大きく、複合型のデータセット(例えば、マテリアルリソースプランニングアプリケーション)を含む大きな複合アプリケーションを有してもよく、その場合、モバイル装置用にアプリケーションをカスタマイズすることは非常に困難である、またはそうでなければ望ましくないため、企業は仮想化技術を通してアプリケーションへのアクセスを提供するように選出してもよい。さらに別の例として、企業は、企業によって、セキュアにされたモバイル環境に対してもあまりに機密性が高いと見做され得る、高度にセキュアにされたデータ(例えば、人材データ、顧客データ、工学データ)を維持するアプリケーションを有してもよいため、企業は仮想化技術を使用するように選出し、このようなアプリケーション及びデータへのモバイルアクセスを許可してもよい。企業は、モバイル装置上の、完全にセキュアである、及び完全に機能的である、両方のアプリケーション、ならびに仮想化アプリケーションを提供して、サーバ側でより適切に動作されると見做されたアプリケーションへのアクセスを許容するように選出してもよい。一実施形態では、仮想化アプリケーションは、セキュアな記憶位置のうちの1つにおける携帯電話上のいくつかのデータ、ファイルなどを記憶してもよい。例えば、企業は、電話上に記憶される特定の情報を許容するように選出し、一方で、他の情報を許可しなくてもよい。
本明細書で説明されるような仮想化アプリケーションに関連して、モバイル装置は、GUIを提示し、次にGUIとのユーザインタラクションを記録するように設計された仮想化アプリケーションを有してもよい。アプリケーションは、ユーザインタラクションを、サーバ側アプリケーションによってアプリケーションとのユーザインタラクションとして使用されるようにサーバ側に通信してもよい。応答して、サーバ側のアプリケーションは、新しいGUIをモバイル装置に返送してもよい。例えば、新しいGUIは、静的ページ、動的ページ、アニメーションなどであり、それによって遠隔に位置するリソースへのアクセスを提供してもよい。
セキュアなアプリケーションは、モバイル装置の管理される区分510におけるセキュアなデータコンテナ528に記憶されているデータにアクセスしてもよい。セキュアなデータコンテナにおいてセキュアにされたデータは、セキュアなラッピングされたアプリケーション514、セキュアなアプリケーションランチャー522によって実行されるアプリケーション、セキュアなアプリケーションランチャー522によって実行される仮想化アプリケーション526などによってアクセスされてもよい。セキュアなデータコンテナ528に記憶されるデータは、ファイル、データベースなどを含んでもよい。セキュアなデータコンテナ528に記憶されるデータは、特定のセキュアなアプリケーション530、共有されたセキュアなアプリケーション532などに規制されるデータを含んでもよい。セキュアなアプリケーションに規制されたデータは、セキュアな一般データ534及び非常にセキュアなデータ538を含んでもよい。セキュアな一般データは、Advanced Encryption Standard(AES)128ビット暗号化などの強い形式の暗号化を使用してもよく、一方で、非常にセキュアなデータ538は、AES256ビット暗号化など非常に強い形式の暗号化を使用してもよい。セキュアなデータコンテナ528に記憶されているデータは、装置マネージャ524から命令を受信すると装置から消去されてもよい。セキュアなアプリケーションは、デュアルモードオプション540を有してもよい。デュアルモードオプション540は、ユーザに、セキュアにされたアプリケーションをセキュアにされない、または管理されないモードで動作するオプションを提示してもよい。セキュアにされない、または管理されないモードでは、セキュアなアプリケーションは、モバイル装置502の管理されない区分512上のセキュアにされないデータコンテナ542に記憶されるデータにアクセスしてもよい。セキュアにされないデータコンテナに記憶されるデータはさらに、個人データ544であってもよい。セキュアにされないデータコンテナ542に記憶されるデータは、モバイル装置502の管理されない区分512上で実行するセキュアにされないアプリケーション548によってアクセスされてもよい。セキュアにされないデータコンテナ542に記憶されているデータは、セキュアなデータコンテナ528に記憶されているデータがモバイル装置502から消去されるとき、モバイル装置502上に残ってもよい。企業は、企業によって所有された、ライセンスが取得された、または制御された(企業データ)、選択された、またはすべてのデータ、ファイル、及び/またはアプリケーションをモバイル装置から消去することを望み、一方で、ユーザによって所有された、ライセンスが取得された、または制御された(個人データ)個人データ、ファイル、及び/またはアプリケーションをそのままにする、またはそうでなければ保存することを望んでもよい。この動作は、選択的ワイプと呼ばれてもよい。本明細書で説明される態様に従って配置された企業及び個人データで、企業は選択的ワイプを実行してもよい。
モバイル装置は、企業において、企業リソース504及び企業サービス508を公共のインターネット548などに接続してもよい。モバイル装置は、仮想私用ネットワーク接続を通して企業リソース504及び企業サービス508に接続してもよい。マイクロVPNまたはアプリケーション特定VPNとも呼ばれる仮想私用ネットワーク接続は、特定のアプリケーション550、特定の装置、モバイル装置の特定のセキュアにされた範囲など552に特化してもよい。例えば、電話のセキュアにされた範囲におけるラッピングされたアプリケーションの各々は、おそらくユーザまたは装置属性情報に関連して、VPNへのアクセスがアプリケーションに関連した属性に基づいて認められるように、アプリケーション特定VPNを通して企業リソースにアクセスしてもよい。仮想私用ネットワーク接続は、Microsoft Exchangeトラフィック、Microsoft Active Directoryトラフィック、HyperText送信プロトコル(HTTP)トラフィック、HyperText送信プロトコルセキュア(HTTPS)トラフィック、アプリケーション管理トラフィックなどを実行してもよい。仮想私用ネットワーク接続は、シングルサインオン認証プロセス554を支援し、可能にしてもよい。シングルサインオンプロセスは、ユーザが認証資格情報の単一のセットを提供することを可能にしてもよく、次に、資格情報は、認証サービス558によって確認される。次に、認証サービス558は、ユーザが各個人の企業リソース504へ認証資格情報を提供することを要求せずに、複数の企業リソース504へのユーザアクセスを認めてもよい。
仮想私用ネットワーク接続は、アクセスゲートウェイ560によって確立されてもよく、かつ、管理されてもよい。アクセスゲートウェイ560は、企業リソース504のモバイル装置502への配信を管理し、増進し、向上させる性能向上特性を含んでもよい。アクセスゲートウェイは、モバイル装置502から公共インターネット548へのトラフィックを再ルーティングし、モバイル装置502が、公共のインターネット548上で動作する、公共に利用可能でセキュアにされないアプリケーションにアクセスすることを可能にしてもよい。モバイル装置は、転送ネットワーク562を介してアクセスゲートウェイに接続してもよい。転送ネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、公共のネットワーク、個人のネットワークなどであってもよい。
企業リソース504は、電子メールサーバ、ファイル共有サーバ、SaaSアプリケーション、ウェブアプリケーションサーバ、Windows(登録商標)アプリケーションサーバなどを含んでもよい。電子メールサーバは、Exchangeサーバ、Lotus Notesサーバなどを含んでもよい。ファイル共有サーバは、ShareFileサーバなどを含んでもよい。SaaSアプリケーションは、Salesforceなどを含んでもよい。Windows(登録商標)アプリケーションサーバは、ローカルWindows(登録商標)動作システムなどで動作するように意図されたアプリケーションを提供するように構築された任意のアプリケーションサーバを含んでもよい。企業リソース504は、プレミスベースのリソース、クラウドベースのリソースなどであってもよい。企業リソース504は、直接、またはアクセスゲートウェイ560を通して、モバイル装置502によってアクセスされてもよい。企業リソース504は、転送ネットワーク562を介してモバイル装置502によってアクセスされてもよい。転送ネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、公共のネットワーク、個人のネットワークなどであってもよい。
企業サービス508は、認証サービス558、脅威検出サービス564、装置マネージャサービス524、ファイル共有サービス568、ポリシーマネージャサービス570、ソーシャルインテグレーションサービス572、アプリケーションコントローラサービス574などを含んでもよい。認証サービス558は、ユーザ認証サービス、装置認証サービス、アプリケーション認証サービス、データ認証サービスなどを含んでもよい。認証サービス558は証明書を使用してもよい。証明書は、企業リソース504などによってモバイル装置502上に記憶されてもよい。モバイル装置502上に記憶される証明書は、モバイル装置上の暗号化された位置に記憶されてもよく、証明書は認証の時などにおける使用のためにモバイル装置502上に一時的に記憶されてもよい。脅威検出サービス564は、侵入検出サービス、認証されていないアクセス試行検出するサービスなどを含んでもよい。認証されていないアクセス試行検出サービスは、アクセス装置、アプリケーション、データなどへの認証されていない試行を含んでもよい。装置管理サービス524は、構成、提供、セキュリティ、支援、監視、報告、及びデコミッショニングサービスを含んでもよい。ファイル共有サービス568は、ファイル管理サービス、ファイル記憶サービス、ファイル協働サービスなどを含んでもよい。ファイルマネージャサービス570は、装置ポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービスなどを含んでもよい。ソーシャルインテグレーションサービス572は、連絡先組み込みサービス、協働サービス、Facebook、Twitter、及びLinkedInなどのソーシャルネットワークの組み込みなどを含んでもよい。アプリケーションコントローラサービス574は、管理サービス、提供サービス、配置サービス、割り当てサービス、取り消しサービス、ラッピングサービスなどを含んでもよい。
エンタープライズモビリティテクニカルアーキテクチャ500は、アプリケーションストア578を含んでもよい。アプリケーションストア578は、ラッピングされないアプリケーション580、事前にラッピングされたアプリケーション582などを含んでもよい。アプリケーションは、アプリケーションコントローラ574からアプリケーションストア578に置かれてもよい。アプリケーションストア578は、公共のインターネット548などを通して、アクセスゲートウェイ560を通してモバイル装置502によってアクセスされてもよい。アプリケーションストアには、直感的で、かつ、使いやすいユーザインターフェースが提供されてもよい。
ソフトウェア開発キット584は、本説明において前述されたようなアプリケーションをラッピングすることによって、ユーザによって選択されたアプリケーションをセキュアにする能力をユーザに提供してもよい。次に、ソフトウェア配置キット584を使用してラッピングされたアプリケーションは、アプリケーションコントローラ574を使用してアプリケーションストア578に置くことによってモバイル装置502に対して利用可能になってもよい。
エンタープライズモビリティテクニカルアーキテクチャ500は、管理及び分析能力588を含んでもよい。管理及び分析能力588は、どのようにリソースが使用されるか、どれほどの頻度でリソースが使用されるか、などに関係する情報を提供してもよい。リソースは、装置、アプリケーション、データなどを含んでもよい。どのようにリソースが使用されるかは、どの装置がどのアプリケーションをダウンロードするか、どのアプリケーションがどのデータにアクセスするか、などを含んでもよい。どれほどの頻度でリソースが使用されるかは、どれほどの頻度でアプリケーションがダウンロードされたか、アプリケーションによってデータの特定のセットが何回アクセスされたか、などを含んでもよい。
図6は、別の例証的なエンタープライズモビリティ管理システム600である。図5を参照して上記で説明されたモビリティ管理システム500の構成要素のうちのいくつかは、簡潔性のために省略されている。図6において示されるシステム600のアーキテクチャは、図5を参照して前記で説明されたシステム500のアーキテクチャに関する多くの点で同様であり、上記で述べられていない追加の特性を含んでもよい。
この場合、左手側は、ゲートウェイ606(アクセスゲートウェイ及びアプリケーションコントローラ機能を含む)と相互作用して様々な企業リソース608、及び右手側上方に示されるような、Exchange、Sharepoint、公開鍵基盤(PKI)リソース、Kerberosリソース、証明書発行サービスなどのサービス609にアクセスする、クライアントエージェント604を備えた、登録されたモバイル装置602を表す。詳細に示されないが、モバイル装置602はさらに、アプリケーションの選択及びダウンロードのために企業アプリケーションストア(StoreFront)と相互作用してもよい。
クライアントエージェント604は、High−Definition User Experience(HDX)/ICA表示リモーティングプロトコルを使用してアクセスされる企業データセンタにおいてホスティングされる、Windows(登録商標)アプリケーション/デスクトップ用のUI(ユーザインターフェース)仲介として作用する。クライアントエージェント604はさらに、ネイティブiOSまたはAndroid(登録商標)アプリケーションなどの、モバイル装置602上でのネイティブアプリケーションのインストール及び管理を支援する。例えば、上記の図において示された、管理されたアプリケーション610(メール、ブラウザ、ラッピングされたアプリケーション)は、装置上においてローカルで実行するすべてネイティブアプリケーションである。クライアントエージェント604及びこのアーキテクチャのアプリケーション管理フレームワークは、企業リソース/サービス608への接続性及びSSO(シングルサインオン)など、ポリシー駆動型管理能力及び特性を提供するように作用する。クライアントエージェント604は、他のゲートウェイサーバ構成要素へのSSOを含む通常アクセスゲートウェイ(AG)へ、企業への一次ユーザ認証を扱う。クライアントエージェント604は、ゲートウェイサーバ606からポリシーを取得し、モバイル装置602上での管理されたアプリケーション610の行動を制御する。
ネイティブアプリケーション610とクライアントエージェント604との間のセキュアなプロセス間通信(IPC)リンク612は、クライアントエージェントが、各アプリケーションを「ラッピング」する、アプリケーション管理フレームワーク614によって実行されるポリシーを提供することを許容する、管理チャネルを表す。IPCチャネル612はさらに、クライアントエージェント604が、企業リソース608への接続性及びSSOを可能にする資格情報及び認証情報を提供することを許容する。最後に、IPCチャネル612は、アプリケーション管理フレームワーク614を許容し、オンライン及びオフライン認証など、クライアントエージェント604によって実施されるユーザインターフェース機能を引き起こす。
クライアントエージェント604とゲートウェイサーバ606との間の通信は、本質的に、ネイティブの管理されたアプリケーション610の各々をラッピングするアプリケーション管理フレームワーク614の管理チャネルの延長である。アプリケーション管理フレームワーク614は、クライアントエージェント604からのポリシー情報を要求し、クライアントエージェント604は次にゲートウェイサーバ606からのポリシー情報を要求する。アプリケーション管理フレームワーク614は認証を要求し、クライアントエージェント604はゲートウェイサーバ606(NetScaler Access Gatewayとしても知られる)のゲートウェイサービス部分にログインする。クライアントエージェント604はまた、ゲートウェイサーバ606上の支援サービスを呼び出し、支援サービスは、入力素材を生成して、ローカルデータヴォルト616用の暗号化鍵を導出してもよく、または、下記でより完全に説明されるように、PKI保護リソースへの直接認証を可能にしてもよいクライアント証明書を提供してもよい。
より詳細には、アプリケーション管理フレームワーク614は、各管理されたアプリケーション610を「ラッピング」する。これは、明確な構築ステップを介して、または構築後処理ステップを介して組み込まれてもよい。アプリケーション管理フレームワーク614は、アプリケーション610の第1のローンチにおいてクライアントエージェント604と「対」であり、セキュアなIPCチャネルを開始し、アプリケーション用のポリシーを取得してもよい。アプリケーション管理フレームワーク614は、クライアントエージェントログイン依存性など、ローカルに適用するポリシーの関連する部分、及びローカルOSサービスがどのように使用されてもよいか、またはローカルOSサービスがアプリケーション610とどのように相互作用してもよいかを規制する格納ポリシーのいくつかを行ってもよい。
アプリケーション管理フレームワーク614は、セキュアなIPCチャネル612上でクライアントエージェント604によって提供されるサービスを使用して、認証及び内部ネットワークアクセスを容易にしてもよい。私用及び共有データヴォルト616(コンテナ)用の鍵管理はさらに、管理されたアプリケーション610とクライアントエージェント604との間の適切なインタラクションによって管理されてもよい。ヴォルト616は、オンライン認証の後のみに利用可能であってもよく、またはポリシーによって許容される場合、オフライン認証の後に利用可能にされてもよい。ヴォルト616の最初の使用は、オンライン認証を要求し、オフラインアクセスは、オンライン認証が再度要求される前のポリシー最新化期間の多くにおいてに、限定されてもよい。
内部リソースへのネットワークアクセスは、アクセスゲートウェイ606を通して個別の管理されたアプリケーション610から直接生じてもよい。アプリケーション管理フレームワーク614は、各アプリケーション610の代わりに、ネットワークアクセスを組織化することを担う。クライアントエージェント604は、オンライン認証に続いて取得される好適な時間が限定された二次資格情報を提供することによってこれらのネットワーク接続を容易にしてもよい。リバースウェブプロキシ接続、及びエンドツーエンドVPN様式トンネル618などネットワーク接続の複数のモードが使用されてもよい。
メール及びブラウザ管理アプリケーション610は特別な状態を有し、任意のラッピングされたアプリケーションに一般的に利用可能であり得ない施設を利用してもよい。例えば、メールアプリケーションは、完全なAGログオンを要求せずに、延長された期間にExchangeにアクセスすることを許容する特別なバックグラウンドネットワークアクセス機構を使用してもよい。ブラウザアプリケーションは、複数の私用データヴォルトを使用して異なる種類のデータを分けてもよい。
このアーキテクチャは、様々な他のセキュリティ特性の組み込みを支援する。例えば、いくつかの場合におけるゲートウェイサーバ606(ゲートウェイサーバ606のゲートウェイサービスも含む)は、アクティブデイレクトリ(AD)パスワードを必要としない。ADパスワードが、いくつかの状況において一部のユーザに対する認証要因として使用されるかどうかは企業の裁量に委ねられることができる。ユーザがオンラインまたはオフラインである(すなわち、ネットワークに接続されている、または接続されていない)場合、異なる認証方法が使用されてもよい。
ステップアップ認証は、強い認証を要求する高度に分類されたデータへのアクセスを有することを許容された、管理されたネイティブアプリケーション610をゲートウェイサーバ606が識別してもよく、以前のさらに弱いレベルのログインの後、これが、再認証がユーザによって要求されることを意味する場合でも、これらのアプリケーションへのアクセスが適切な認証を実行した後のみに許可されることを確実にする、特性である。
この解決方法の別のセキュリティ特性は、モバイル装置602上でのデータヴォルト616(コンテナ)の暗号化である。ヴォルト616は暗号化され、その結果、ファイル、データベース、及び構成を含む、装置上のすべてのデータが保護されてもよい。オンラインヴォルトについて、鍵はサーバ(ゲートウェイサーバ606)上に記憶されてもよく、オフラインヴォルトについて、鍵のローカルコピーは、ユーザパスワードまたはバイオメトリック認証によって保護されてもよい。データがセキュアなコンテナ616における装置602上にローカルに記憶される場合、AES256暗号化アルゴリズムの最小限が利用されることが好ましい。
他のセキュアなコンテナ特性も実施されてもよい。例えば、アプリケーション610内で起こるすべてのセキュリティ事象がログされ、バックエンドに報告される、ロギング特性が含まれてもよい。アプリケーション610がタンパリングを検出する場合、関連する暗号化鍵がランダムデータ上に書き込まれ、ユーザデータが破棄されたファイルシステム上にヒントを残さなくてもよいなど、データワイピングが支援されてもよい。アプリケーションが任意のデータがスクリーンショットに記憶されることを防いでもよい、スクリーンショット保護が別の特性である。例えば、鍵ウィンドウの隠された特徴は、はい、に設定されてもよい。これは、どのようなコンテンツでも隠されるスクリーン上に現在表示され、任意のコンテンツが通常ある空白のスクリーンショットを結果としてもたらすことを引き起こしてもよい。
例えば、外部アプリケーションにコピーする、または送信することによって、任意のデータがアプリケーションコンテナの外部にローカルに転送されることを防ぐことによってなど、ローカルデータ転送が防がれてもよい。キーボードキャッシュ特性は、感応性のテキストフィールドに対するオートコレクト機能を無効にするように動作してもよい。SSL証明書認証は、アプリケーションが、キーチェーンに記憶される代わりに、サーバSSL証明書を特別に認証するように動作可能であってもよい。装置上でデータを暗号化するために使用される鍵が、ユーザによって提供されるパスフレーズまたはバイオメトリックデータを使用して生成される(オフラインアクセスが要求される場合)ように、暗号化鍵生成特性が使用されてもよい。オフラインアクセスが要求されない場合、ランダムに生成され、サーバ側に記憶されている別の鍵で排他的論理和がとられてもよい。ユーザパスワードから生成された鍵が、その暗号学的ハッシュを作成するのではなく、KDF(鍵導出機能、とりわけパスワードベースの鍵導出機能2(PBKDF2))を使用するように、鍵導出機能が動作してもよい。後者は総当たり攻撃または辞書攻撃に脆弱な鍵を作る。
さらに、1つ以上の初期化ベクトルが暗号化方法において使用されてもよい。初期かベクトルは、同じ暗号化データの複数のコピーに異なる暗号文出力を生成させ、反射攻撃及び暗号解読攻撃の両方を防ぐ。これはまた、データを暗号化するために使用される特定の初期化ベクトルが知られていない場合、攻撃者が、盗まれた暗号化鍵ででも、任意のデータを解読することを防ぐ。さらに、次に、ユーザがアプリケーション内で認証された後のみにアプリケーションデータが解読される、認証の解読が使用されてもよい。別の特性は、必要とされる場合のみにメモリに(及びディスクにではなく)保持されてもよい、メモリにおける感応性データに関してもよい。例えば、ログイン資格情報はログイン後にメモリからワイピングされてもよく、暗号化鍵及びObjective−C事象変数の中の他のデータは、簡単に参照され得るため、記憶されない。その代わりに、メモリがこれらに手動で割り当てられてもよい。
非アクティビティのポリシーが定義された期間の後、ユーザセッションが終了される、非アクティブタイムアウトが実施されてもよい。
アプリケーション管理フレームワーク614からのデータ漏れは、他の方法で防がれてもよい。例えば、アプリケーション610がバックグラウンドに置かれる場合、メモリは所定の(構成可能な)期間の後に削除されてもよい。バックグラウンド化される場合、アプリケーションの最後に表示されたスクリーンのスナップショットが撮られて、フォアグラウンドプロセスを固定してもよい。スクリーンショットは、機密データを含んでもよく、したがって、削除されるべきである。
別のセキュリティ特性は、1つ以上のアプリケーションへのアクセスに対するAD(アクティブデイレクトリ)622パスワードの使用を伴わずに、OTP(ワンタイムパスワード)620の使用に関する。いくつかの場合では、一部のユーザは自分のADパスワードを知らない(または知ることが許可されていない)ので、これらのユーザは、SecurIDのようなハードウェアOTPシステムを使用することによって(OTPは、EntrustまたはGemaltoなどの異なる販売者によって提供されてもよい)など、OTP620を使用して認証してもよい。いくつかの場合では、ユーザがユーザIDで認証した後、テキストがOTP620でユーザに送信される。いくつかの場合では、これは、単一のフィールドであるプロンプトで、オンラインの使用のみのために実施されてもよい。
オフライン使用が企業ポリシーを介して許可される、それらのアプリケーション610に対するオフライン認証用のオフラインパスワードが実施されてもよい。例えば、企業は、StoreFrontがこの方式でアクセスされることを望み得る。この場合、クライアントエージェント604は、ユーザがカスタムオフラインパスワードを設定することを要求してもよく、ADパスワードは使用されない。ゲートウェイサーバ606は、標準Windows(登録商標)サーバパスワード複雑性要件は修正されてもよいが、これらの要件に説明されるような、最小限の長さ、文字クラスの成分、パスワードの経過年に関するパスワードの標準を制御し、行うようにポリシーを提供してもよい。
別の特性は、第2の資格情報としての、特定のアプリケーション610に対するクライアント側の証明書の可能化(アプリケーション管理フレームワークマイクロVPN特性を介したPKI保護されたウェブリソースにアクセスするため)に関する。例えば、アプリケーションはこのような証明書を利用してもよい。この場合、クライアントエージェント604からの証明書がゲートウェイサーバ606によって取得されてもよく、キーチェーンに使用されてもよい、ActiveSyncプロトコルを使用する証明書ベースの認証が支援されてもよい。各管理されたアプリケーションは、ゲートウェイサーバ606において定義されたラベルによって識別された、1つの関連付けられたクライアント証明書を有してもよい。
ゲートウェイサーバ606は、企業の特定用途ウェブサービスと相互作用し、クライアント証明書の発行を支援して、関連する管理されたアプリケーションが内部PKI保護リソースを認証することを許容してもよい。
クライアントエージェント604及びアプリケーション管理フレームワーク614は、内部PKI保護ネットワークリソースへの認証に対するクライアント証明書を取得すること、及び使用することを支援するように強化されてもよい。様々な度合いのセキュリティ及び/または分離要件に合致するなどのように、1つ以上の証明書が支援されてもよい。証明書は、メール及びブラウザ管理アプリケーションによって、及び最終的に任意のラッピングされたアプリケーション(もし、それらのアプリケーションが、アプリケーション管理フレームワークがhttps要求を仲介することが合理的である、ウェブサービススタイル通信パターンを使用するのであれば)によって使用されてもよい。
iOS上のアプリケーション管理クライアント証明書支援は、公開鍵暗号化標準(PKCS)12BLOB(バイナリラージオブジェクト)を使用の各期間に対する各管理されたアプリケーションにおけるiOSキーチェーン内にインポートすることに依存してもよい。アプリケーション管理フレームワーククライアント証明書支援は、私用メモリ内鍵格納でHTTPS実施を使用してもよい。クライアント証明書は、iOSキーチェーンに存在することはなく、強く保護された「オンラインのみ」のデータ値にあり得る以外、持続されない。
相互SSLはさらに、モバイル装置602が企業に、及びその逆に対して認証されることを要求することによって追加のセキュリティを提供するように実施されてもよい。ゲートウェイサーバ606への認証のための仮想スマートカードも実施されてもよい。
限定されたKerberos支援、及び完全なKerberos支援の両方が追加の特性であってもよい。完全な支援特性は、ADパスワードまたは信用されたクライアント証明書を使用する、アクティブデイレクトリ(AD)622への完全なKerberosログインを行う、及びKerberosサービスチケットを取得してHTTP交渉認証チャレンジに応答するための能力に関する。限定された支援特性は、AGEEがKerberosプロトコル移行を引き起こすことを支援し、HTTP交渉認証チャレンジに応答してKerberosサービスチケット(制約付き委任)を取得し、使用することができる、Citrix Access Gateway Enterprise Edition(AGEE)における制約付き委任に関する。この機構は、リバースウェブプロキシ(別名企業仮想私用ネットワーク(CVPN))モードで、http(httpsではない)接続がVPN及びMicroVPNモードにおいてプロキシされるときに、作動する。
別の特性は、脱獄またはルーティングの検出の際に自動的に生じ、管理コンソールからのプッシュされたコマンドとして生じてもよく、アプリケーション610が実行していないときにリモートワイプ機能を含んでもよい、アプリケーションコンテナロッキング及びワイピングに関する。
エンタープライズアプリケーションストア及びアプリケーションコントローラのマルチサイトアーキテクチャまたは構成は、ユーザが失敗の場合にいくつかの異なる位置のうちの1つからサービスを受けることを許容するように支援されてもよい。
いくつかの場合、管理されたアプリケーション610は、API(例はOpenSSL)を介して証明書及び私用鍵にアクセスすることが許容されてもよい。企業の信用され、管理されたアプリケーション610は、アプリケーションのクライアント証明書及び私用鍵で特定の公開鍵動作を実行するように許容されてもよい。アプリケーションがブラウザのように振る舞い、証明書アクセスが要求されない場合、アプリケーションが「私は誰」に対する証明書を読み取る場合、アプリケーションが証明書を使用してセキュアなセッショントークンを構築する場合、アプリケーションが重要なデータ(例えば、取引ログ)のデジタル署名に対する、または一時的なデータ暗号化に対する私用鍵を使用する場合など、様々な使用の状況が識別され、適切に処理されてもよい。
〈クライアント装置の認証〉
図7Aは、本明細書において説明される1つ以上の例証的な態様による、クライアント装置702を登録する方法例を例証する。クライアント装置702は、端子240、クライアントコンピュータ411−414、モバイル装置502、またはモバイル装置602のような、上記のクライアント装置のいずれかを備えてもよい。クライアント装置702はまた、クライアントエージェント604または任意の他の管理及び/若しくは信頼されたアプリケーションのような、アプリケーション(AppNとして例証される)を含んでもよい。図7Aに例証されたサーバ704は、コンピューティング装置201、サーバ206、仮想化サーバ301、管理サーバ410、エンタープライズリソース504、エンタープライズサービス508、アクセスゲートウェイ560、またはゲートウェイサーバ606のような、上記のサーバのいずれかを備えてもよい。図7に例証されたデータベース706は、上記のデータベース及び/または記憶装置のいずれかを備えてもよい。いくつかの態様において、データベース706は、長期間持続的記憶装置を備えてもよい。データベース706は、サーバ704から別個の装置を備えてもよく、またはサーバ704に統合されてもよい。
ステップ712において、クライアント装置702が展開(例えば、有効化)され、ログオン要求をサーバ704に送信してもよい。例えば、図7Aに例証される登録ステップは、モバイルアプリケーションのようなアプリケーションがクライアント装置702にインストールされた後に開始されてもよい。ログオンを行うために、クライアント装置702は、ユーザ資格情報(例えば、ユーザ名及びパスワード、PIN、アカウント番号等)をサーバ704に送信してもよく、サーバ704は、ユーザ資格情報に基づいてクライアント装置702を認証してもよい。クライアント装置702がステップ712においてログオンされる場合、方法は、ステップ714に進んでもよい。
ステップ714において、サーバ704は、クライアント装置702に対し、サーバ704によって提供されたアクセスサービス用のそのポリシー及び暗号学的公開鍵のようなサーバ704の公開鍵を送信してもよい。クライアント装置702は、サーバ704の公開鍵を受信しそれをメモリに記憶してもよい。
ステップ716において、クライアント装置702は、サーバ704に対し、暗号学的公開鍵のようなクライアント装置702の公開鍵を送信してもよい。言い換えると、クライアント装置702及びサーバ704は、交換されたデータを復号化するために使用される公開鍵を交換してもよい。サーバ704は、受信し、受信した公開鍵を記憶してもよい。
ステップ718及び720において、PIN、パスコード、生体情報、スマートカード視覚情報、または任意の他のタイプの資格情報のような、資格情報が、クライアント装置702のユーザ用に作成されてもよい。PINは、初回またはユーザがPINを変更するかどうかの、ユーザがPINを作成することを所望する度に作成されてもよい。
図7Bは、本明細書において説明される1つ以上の例証的な態様による、クライアント装置702上でPINを作成する方法例を例証する。図7Bに例証されたCreatePin()関数がまた、ステップ722に対してさらに詳細に以下に説明されることになるように、暗号化されたデータブロッブを生成し、暗号化されたデータブロッブをサーバ704に送信するために使用されてもよい。
図7Aに戻り簡潔な参照によると、ステップ720において、クライアント装置702は、4桁または6桁のPINのような、PINをユーザに入力させてもよい。ユーザは、選択したPINを確認するためにPINを2回入力させられてもよい。ステップ722において、クライアント装置702は、サーバ704に送信するために暗号化されたデータブロッブを生成してもよい。図7Bに戻り、要素718Bを参照すると、データブロッブが、userID(例えば、ユーザ名、ユーザアカウント番号等)及び/またはdeviceID(例えば、MACアドレス、シリアル番号、IMEI番号等)を含んでもよい。データブロッブはまた、図7Bに例証される擬似コードにおいて「salt」と呼ばれる、ランダム番号または擬似ランダム番号を含んでもよい。ランダムまたは擬似ランダム番号は、例えば、128バイト長であってもよい。
要素718Aを参照すると、データブロッブはまた、以下の例においてさらに詳細に説明されることになるように、限時チケットまたは鍵を生成するために使用され得る、時間データを含んでもよい。いくつかの態様において、時間データは、クライアント装置702のプロセッサのティック数を備えてもよい。例えば、時間データは、最大ティック値(例えば、プロセッサティック数がロールオーバーすることになる値)、ティック数の秒への変換(例えば、秒単位のティック)、及び現在のプロセッサティック数を含んでもよい。時間は、いくつかの装置上で簡単に修正されることができ、したがってあまりセキュアではないので、クライアント装置702は、装置のクロックタイムよりもむしろプロセッサのティック数を使用してもよい。
ステップ722Aにおいて(及び同様に図7Aに例証されたステップ722において)、クライアント装置702は、ユーザのPIN、クライアント装置及び/またはユーザを識別するメタデータ、ならびに時間データを含む、データブロッブを暗号化してもよい。データブロッブは、サーバの公開鍵を使用して暗号化されてもよい。ステップ722Bにおいて、クライアント装置702は、TLS、SSL、または任意の他の暗号化プロトコルを介してサーバ704に暗号化されたデータブロッブを送信してもよい。クライアント装置702はまた、例えば、セキュアなZeroMemory()関数またはPIN及び/若しくはデータブロッブをメモリからセキュアに除去するための任意の他の関数を呼び出すことによって、PIN及び/またはデータブロッブをそのメモリからセキュアに削除してもよい。
図7Aに戻り簡潔な参照によると、ステップ724において、サーバ704は、暗号化されたデータブロッブをクライアント装置702から受信してもよい。データを受信することに応答して、サーバ704は、データ上で様々な処理を行ってもよい。図7Cは、本明細書において説明される1つ以上の例証的な態様による、サーバ704が暗号化されたデータを受信し、それを処理する方法例を例証する。
ステップ724Aにおいて、サーバ704は、その秘密鍵を取得し、データブロッブにアクセスするために暗号化されたデータブロッブを秘密鍵により復号化してもよい。上記のように、データ724Bは、userID、deviceID、PIN、最大ティック値、秒に対するティックの比率、及び/または現在のプロセッサティック数を含んでもよい。ステップ724Cにおいて、サーバ704は、データベース706の情報の1つ以上の断片を記憶してもよい。サーバ704はまた、そのメモリからユーザの暗号化されたPIN及び/またはサーバの秘密鍵をセキュアに削除してもよい。
図7Aに戻ると、ステップ726、728、730、及び732において、サーバ704は、クライアント装置702用の署名済み満了チケットを生成してもよい。満了チケットは、クライアント装置702用にサーバ704によって生成された静的サーバエントロピーを含んでもよい。ステップ728において、サーバ704は、データベース706において、追加のクライアント装置メタデータを有する静的エントロピーを記憶してもよい。メタデータは、userID及び/またはdeviceIDのような、クライアント装置702を識別する情報を含んでもよい。静的エントロピーは、クライアント装置702のような特定のクライアント装置に所属する全満了チケットに対して同じであってもよい。言い換えると、サーバ704は、特定のクライアント装置用に、クライアント装置の寿命に対して1回、静的エントロピーを生成してもよい。サーバ704はまた、静的エントロピーをクライアント装置702に暗号化して送信してもよい(例証せず)。
満了チケットはまた、クライアント装置702用にサーバ704によって生成された動的な限時サーバエントロピーを含んでもよい。ステップ726において、サーバ704は、クライアントメタデータを有する動的エントロピーをデータベース706に記憶してもよい。限時サーバエントロピーは、新しい満了チケットが作成される度に変化してもよい。いくつかの態様において、静的サーバエントロピーと異なって、限時サーバエントロピーは、クライアント装置702に記憶されない。代わりに、限時サーバエントロピーは、サーバ704から(または後述される、ペアリングした装置から)取り出され、各々の使用後、クライアント装置702によって即座に消されてもよい。
満了チケットはまた、暗号学的鍵を作成するためにPIN、静的エントロピー、及び動的エントロピーを使用する鍵導出関数を含んでもよい。暗号学的鍵は、ユーザのPINを暗号化し、静的サーバエントロピーを暗号化するために使用されてもよい。ステップ730において、サーバ704は、例えば、クライアント装置702のユーザまたは所有者を識別する情報のような追加の装置識別情報、クライアント装置702が登録された(例えば、登記された)時間、及び/または追加の検査データを含む、追加のデータをデータベース706に選択的に記憶してもよい。
ステップ732において、サーバ704は、署名済み満了チケットを生成してもよい。図7D及び図7Eは、本明細書において説明される1つ以上の例証的な態様による、満了チケットを作成する方法例を例証する。サーバ704は、チケットを生成するためにCreateSigned−expiration−ticket()関数を呼び出してもよい。この関数への入力は、userID、deviceID、PIN、最大ティック数、秒単位のティック、及び/または現在のティック値を含んでもよい。
いくつかの態様において、CreateSigned−expiration−ticket()関数は、クライアント装置702による強固な認証の後を含む、クライアント装置702がサーバ704から署名済み満了チケットを要求する度に呼び出されてもよい。強固な認証は、ユーザ名及びパスワード、ならびに選択的に2段階認証コードの検証を含んでもよい。図7Dを参照すると、ステップ732Aにおいて、サーバ704は、乱数発生器を使用して乱数を生成してもよい。乱数は、Federal Information Processing Standard Publication Series(FIPS)乱数発生器モジュールからの64の暗号学的にランダムなバイトを含んでもよい。使用され得る他の代表的な乱数発生器は、Mersenne Twister乱数発生器及びarc4random乱数発生器を含む。サーバ704は、動的な限時サーバエントロピーとして生成された乱数を設定してもよい。
ステップ726Aにおいて(及び同様に図7Aに例証されたステップ726において)、サーバ704は、限時サーバエントロピーをデータベース706に記憶してもよい。エントロピーは、userID、deviceID、及び/またはクライアント装置702を識別する任意の他の情報と共に記憶されてもよい。
ステップ732Bにおいて、サーバ704は、データベース706から、予め生成されデータベース706に記憶され得る、クライアント装置702用の静的サーバエントロピーを要求して受信してもよい。一方で、サーバが、ステップ732Cにおいて、クライアント装置702用の静的サーバエントロピーがデータベース706に記憶されていないことを判定した場合、サーバ704は、ステップ732Dにおいて、静的エントロピーを生成してもよい。例えば、これは、クライアント装置702が署名済み満了チケットを要求し、静的エントロピーがまだ生成されていない初回であり得る。ステップ728Aにおいて(及び同様に図7Aに例証されたステップ728において)、サーバ704は、静的エントロピーをデータベース706に記憶してもよい。エントロピーは、userID、deviceID、及び/またはクライアント装置702を識別する任意の他の情報と共に記憶されてもよい。
ステップ732Eにおいて、サーバ704は、静的エントロピー用の暗号化鍵を生成してもよい。例えば、サーバ704は、Password−Based Key Derivation Function 2(PBKDF2)のような、鍵導出関数(KDF)を使用してもよい。KDFへの入力は、KDF繰り返し回数(例えば、100,000回)、PIN、及び/または限時サーバエントロピーを含んでもよい。言い換えると、静的エントロピー用の鍵は、限時エントロピーに基づいてもよい。鍵導出関数の繰り返し回数が、可変であり、100,000回よりも多くても少なくてもよい。
図7D及び7Eは、ユーザがPINを使用して認証される例を例証する。静的エントロピーは、PIN及び限時サーバエントロピーの両方をKDF内に入力することによって生成された鍵によって暗号化される。したがって、静的エントロピーは、疑似コードの以下の部分において例証されるように、PIN及び限時サーバエントロピーの両方に基づいて生成された鍵を使用して復号化されることになる。
key−for−static−entropy=KDF(entered−pin,time−limited−server−entropy)
static−entropy=Decrypt(key−for−static−entropy,encrypted−static−entropy)
代替的態様において、ユーザは、PINを入力することを有することなく認証されてもよい。ユーザにPINの入力を要求することなく静的エントロピーを作成するために、サーバ704は、疑似コードの以下の部分において例証されるように、PINではなく、限時サーバエントロピーに基づいてKDFを実行してもよい。したがって、静的エントロピーは、PINではなく、限時サーバエントロピーに基づいて生成された鍵を使用して復号化されることになる。
key−for−static−entropy=KDF(time−limited−server−entropy)
static−entropy=Decrypt(key−for−static−entropy,encrypted−static−entropy)
PINを使用することと、PINを使用しないこととの間には、セキュリティトレードオフがある。以下にさらに詳細に説明されることになるように、セキュリティの追加の層が、PINを使用しない場合に使用されてもよい。例えば、クライアント装置702は、認証を行うために、マウスのようなペアリングした装置、またはサーバ704と登録された他の装置の通信範囲内にあることを要求されてもよい。PINが使用される例(図7D)に戻ると、サーバ704は、ステップ732Fにおいて、例えばPBKDF2を使用することによって、ユーザのPIN用の暗号化鍵を生成してもよい。代表的なPIN暗号化鍵用のKDFへの入力は、遂行するKDF繰り返し回数(例えば、100,000回)、限時サーバエントロピー、及び/または静的サーバエントロピーを含んでもよい。したがって、静的エントロピー用の鍵とPIN用の鍵とは、異なってもよく、クライアント装置702に送信される暗号化データは、結果的に異なってもよい。さらに、PIN用の鍵に対して限時エントロピー及び静的エントロピーの両方を使用することによって、KDFへの入力は、より長くなり、結果的に破ることがより難しくなるであろう。静的エントロピー及び/またはPIN用の鍵を生成するためにサーバ704が使用し得るKDFの他の例は、例えば、Unix(登録商標) crypt()関数、bcrypt()関数、scrypt()関数、HMAC−based Extract−and−Expand Key Derivation Function (HKDF)等を含んでもよい。
ステップ732Gにおいて、サーバ704は、生成された暗号化鍵を使用してユーザのPIN及び静的エントロピーの各々を暗号化してもよい。サーバ704は、例えば、Advanced Encryption Standardを含む、従来の暗号化標準を使用してもよい。PINを暗号化するための暗号化アルゴリズムへの入力は、PIN及びPIN用の暗号化鍵を含む。静的エントロピーを暗号化するための暗号化アルゴリズムへの入力は、静的エントロピーデータ及び静的エントロピー用の鍵を含む。上記の限時サーバエントロピー及び静的エントロピーは、データベース706のような、セキュアなメモリに記憶されてもよい。サーバ704はまた、静的エントロピー用の鍵及びユーザのPIN用の鍵をそのメモリからセキュアに削除してもよい。
図7Eは、本明細書において説明される1つ以上の例証的な態様による、図7Dの満了チケットを作成する方法例の続きを例証する。サーバ704は、限時サーバエントロピー用の満了時間が満了したか否かを判定してもよい。ステップ732Hにおいて、サーバ704は、サーバにおける現在時間(例えば、nowTime)を判定してもよい。いくつかの態様において、サーバ704は、タイムゾーンの問題を回避するために基準時間として特定のタイムゾーンを使用してもよい。例えば、サーバ704は、Greenwich Mean Time(GMT)を使用してもよい。
サーバ704はまた、クライアント装置PINバリデータがクライアント装置で満了することになる時間のような、満了時間を計算してもよい。満了時間は、管理者によって設定され得る満了ポリシーに基づいてもよい。サーバ704は、満了時間(例えば、expirationTimeSeconds)を計算するために、CalculateExpirationTimeFrom()関数に現在時間(例えば、nowTime)を入力してもよい。
ステップ732Iにおいて、サーバ704は、現在時間とチケットの満了時間との間の時間量(例えば、lifetimeSeconds)を計算してもよい。サーバ704がクライアント装置のティック値(時間値ではなく)を使用する場合、サーバ704は、ステップ732Jにおいて、満了ティック数(例えば、tickEnd)を計算してもよい。例えば、サーバ704は、満了ティック数を計算するために使用される関数に、lifetimeSeconds値、tickRollover値、tickPerSecond値、及びtickNow値を入力してもよい。満了ティック数は、チケットが満了するときクライアント装置702において予期されるティック数を含んでもよい。
満了ティック数を計算するための例として(例えば、tickEnd)、lifetimeSeconds値が50、tickRollover値が1000、tickPerSecond値が10、及びtickNow値が現在のティック値(例えば、TNow)であると仮定する。lifetimeSecondsは、ティックに変換される(例えば、50lifetimeSeconds×10tickPerSecond=500ticks)。この例は、以下の図に例証される。
0|−−−−−−−−−−−−−TNow−−−−−−−−−−−−−|1000
TNowが500未満の場合、その後、以下の図に例証されるように、ステップ814D(以下に説明されることになる)が正であり、tickStartは、tickEndよりも小さい値を有する。
0|−−tickStart−−−−−−−−tickEnd−−−−|1000
0|−−−−−−−−−−−−−TNow−−−−−−−−−−−−−|1000
したがって、TNowがティック開始値とティック終了値との間にあるか否かをアルゴリズムが判定する。否である場合、その後、TNowは、tickEndよりも大きいか、またはtickStart未満であるかのいずれかである(例えば、以下に説明されることになるように、ステップ814Eが正である)。一方で、TNowが500以上である場合、TNowは、以下の図に例証されるように、tickRolloverをラップアラウンドすることになる。
0|−−−−−−tickEnd−−tickStart−−−−−−−|1000
0|−TNow−−−−−−−−−−−−−−−−−−Tnow−|1000
ラップアラウンドがある場合、TNowは、依然としてtickStart値とtickEnd値との「間」にある。しかしながら、ラップアラウンドにより、TNowがtickStartよりも大きいか、またはtickEnd未満であり、ステップ814Fは、以下に説明されることになるように、誤となる。満了ティック数を演算する(秒における満了時間値を使用するのではなく)1つの理由は、クライアント装置702が、ティックが正当である時間を人為的に増加するためにローカル時間値を簡単にリセットすることができないことを保証するためである。このセキュリティ特性は、クライアント装置702のプロセッサにおけるティック数が、ティック数がゼロにラップアラウンドする(例えば、最大ティック値またはtickRolloverに達する)まで一定に増加し得る理由で使用され得る。
ステップ732Kにおいて、サーバ704は、上記の情報のうちの1つ以上を暗号化することによって、PINバリデータ(例えば、timeBasedPinValidator)のような、時間基準バリデータを生成してもよい。例えば、サーバは、PINバリデータが満了する(秒において)ときにクライアント装置702における満了時間、PINバリデータが満了するときにクライアント装置702のプロセッサにおけるティック数(及び同様にPINバリデータが作成されたときのクライアント装置702のプロセッサにおけるティック数)、暗号化されたPIN、暗号化された静的エントロピー、及び/または1つ以上の暗号化鍵を生成するために使用されたKDFを暗号化してもよい。時間基準PINバリデータは、クライアント装置702の公開鍵を使用して暗号化されてもよい。ステップ732Lにおいて、サーバ704はまた、ユーザのIDまたはクライアント装置のIDのような、クライアント装置識別情報を伴って、この情報のうちの1つ以上をデータベース706に保存してもよい。
ステップ732Mにおいて、サーバ704は、サーバの秘密鍵を取得し、サーバの秘密鍵を使用して時間基準PINバリデータを署名してもよい。暗号化及び署名済みPINバリデータは、クライアント装置702がPINバリデータ関数を構築及び/または演算するために使用するデータからなるPINバリデータであり得る、署名済み満了チケットと呼ばれてもよい。図7D及び7Eに例証されたCreateSigned−expiration−ticket()は、署名済み満了チケットをサーバ704に返してもよい。図7Aに戻ると、サーバ704は、ステップ734において(及び同様に図7Cに例証されたステップ734Aにおいて)署名済み満了チケットをクライアント装置702に送信してもよい。
いくつかの態様において、クライアント装置702におけるPINバリデータは、PINバリデータが満了したか否かを判定するために、クライアント装置時間及びクライアント装置のプロセッサのティック数のうちの1つ以上を確認してもよい。サーバ704はまた、サーバ704が限時サーバエントロピーをクライアント装置702に送信する前に並行して強制的に満了時間としてもよい。クライアント装置702をまた確認することの目的は、サーバ704との不必要な往復通信を回避することである。
図8Aは、本明細書において説明される1つ以上の例証的な態様による、PINのような、クライアント装置702識別情報を検証する方法例を例証する。例えば、方法は、PIN検証手順を含んでもよく、PIN検証は、クライアント装置702上の信頼されたAppがユーザに正しいPINを入力させることによってクライアント装置702のユーザを認証する場合に起動してもよい。
ステップ812において、クライアント装置702は、サーバ704からチケットを受信することに応答して、署名済み満了チケットの署名を検証してもよい。図8Bは、本明細書において説明される1つ以上の例証的な態様による、クライアント装置が満了チケットを受信する(及び署名を検証する)方法例を例証する。
いくつかの態様において、クライアント装置702は、新しい満了チケットを取得するためにクライアント装置702がサーバ704と強固な認証を行う度に署名を検証してもよい。ステップ812Aにおいて、クライアント装置702は、クライアント装置702によって予め記憶され得る、サーバの公開鍵を取得してもよい。ステップ812Bにおいて、クライアント装置702は、サーバの公開鍵を使用して署名済み満了チケットの署名を検証してもよい。署名が正しいことを検証することができない場合、クライアント装置702は、エラーを表示し、データを選択的に破棄してもよい。満了チケットの署名が正しいことが検証された場合、クライアント装置702は、ステップ814(図8Aに例証される)においてクライアント装置の秘密鍵を使用して時間基準PINバリデータを復号化してもよい。クライアント装置702は、ステップ812Cにおいて署名済み満了チケット選択的に記憶してもよい。
図8C及び8Dは、本明細書において説明される1つ以上の例証的な態様による、PINを検証する方法例を例証する。図8Bに例証されたReceive−signed−expiration−ticket()関数は、図8Cに例証されたVerifyPin()関数に含まれてもよい。図8C及び8Dに例証された方法は、ユーザの入力されたPINをクライアント装置702上で検証するために使用されてもよく、PINが検証されることになる度に呼び出されてもよい。以下に説明されることになるように、PIN検証が成功した場合、静的サーバエントロピーが返されてもよく、静的サーバエントロピーが、ヴォルト616のような1つ以上のセキュアヴォルトをロック解除すべく、1つ以上の鍵を作成するために、選択的に使用(ポリシーに応じて)されてもよい。
図8Cを参照すると、ステップ812Dにおいて、クライアント装置702は、入力されたPINが正しいことを指示するトリガー(例えば、correctPin)をリセット(例えば、誤に設定)してもよい。クライアント装置702はまた、サーバの公開鍵及び署名済み満了チケットを取得してもよい。ステップ812Bにおいて、クライアント装置702は、上述のように、VerifySignature()を呼び出し、サーバ公開鍵を入力することによって、署名済み満了チケットの署名を検証してもよい。署名が正しいことを検証することができない場合、クライアント装置702は、エラーを表示し、データを選択的に破棄してもよい。クライアント装置702はまた、ユーザにサーバ704と強固な認証を行うことを指示してもよい。満了チケットの署名を検証することによって、クライアント装置702は、例えば、脱獄装置上で、満了チケットが改ざんされることを防いでもよい。ステップ814Aにおいて(及び同様に図8Aに例証されたステップ814において)、満了チケットの署名が正しいことが検証された場合、クライアント装置702は、クライアント装置の秘密鍵を取得し、時間基準PINバリデータを取得すべく、満了チケットを復号化するために秘密鍵を使用してもよい。
一度、クライアント装置702が時間基準PINバリデータにアクセスすると、クライアント装置702は、満了チケットが満了しているか否かを判定してもよい。ステップ814Bにおいて、クライアント装置702は、秒における現在の装置時間(例えば、deviceTimeSeconds)及びクライアント装置プロセッサの現在のティック数(例えば、tickNow)を判定してもよい。クライアント装置702はまた、ティック開始数(例えば、tickStart)及び/またはティック終了数(例えば、tickEnd)を含む、満了チケットの時間またはティックデータを読み取ってもよい。クライアント装置702はまた、暗号化されたPIN(例えば、encryptedPin)及び/または暗号化された静的サーバエントロピー(例えば、encrypted−static−entropy)にアクセスしてもよい。
ステップ814Cにおいて、クライアント装置702は、現在の装置時間が満了時間以上であるか否かを判定してもよい。そうである場合、チケットが満了しており、クライアント装置702は、エラーを返し、ユーザにサーバ704と強固な認証を行うことを指示してもよい。否である場合、クライアント装置702は、ステップ814Dにおいて、ティック開始数がティック終了数未満であるか否かを判定してもよい。そうである場合、クライアント装置702は、ステップ814Eにおいて、(1)ティック終了数が現在のティック数以下であるか否か、(2)現在のティック数がティック開始数以下であるか否かを判定してもよい。(1)または(2)のいずれの場合においても、クライアント装置702は、ティック数がロールオーバーしているか否か、したがって満了時間が満了したか否かを判定してもよい。クライアント装置702は、エラーを返し、ユーザにサーバ704と強固な認証を行うことを指示してもよい。
図8Dを参照すると、(1)の場合及び(2)の場合のいずれも正ではない場合、クライアント装置702は、ステップ814Fにおいて、ティック終了数が現在のティック数以下、かつ現在のティック数がティック開始数以下であるか否かを判定してもよい。そうである場合、クライアント装置702は、ティック数がロールオーバーしており、したがってチケットが満了していることを判定してもよい。クライアント装置702は、エラーを返し、ユーザにサーバ704と強固な認証を行うことを指示してもよい。ティック終了数が現在のティック数以上、または現在のティック数がティック開始数以上のいずれかである場合、クライアント装置702は、チケットが満了していないことを判定し、図8Aに例証されたステップ816に進んでもよい。
ステップ816において、クライアント装置702は、署名済みユーザ装置ID要求を作成してもよい。この要求は、ユーザのID及び/またはクライアント装置IDを含んでもよい。ステップ818(及び同様に図8Dに例証されたステップ818A)において、クライアント装置702は、クライアント装置の秘密鍵を使用して要求にデジタル的に署名し、サーバ704に要求を送信してもよい。言い換えると、クライアント装置702は、クライアント装置702用の限時サーバエントロピーを取り出すためにサーバ704に要求を送信してもよい。限時サーバエントロピーは、一度受信されると、ユーザによって入力されたPINを検証するために、正しいPINを復号化するために使用されてもよい。クライアント装置702がPIN検証処理中のサーバ704との通信においてエラーに遭遇した場合、クライアント装置702は、ユーザにサーバ704と強固な認証を行うことを指示してもよい。
ステップ820において、サーバ704は、限時サーバエントロピーに対する署名済み要求を受信してもよい。図8Eは、本明細書において説明される1つ以上の例証的な態様による、サーバ704が限時エントロピーに対するクライアント要求を操作する方法例を例証する。
ステップ820Aにおいて、サーバ704は、データベース706に記憶され得る限時チケットの満了時間に現在時間を照らしてもよい。限時チケットは、userID及び/またはクライアントdeviceIDを使用して識別されてもよい。現在時間がチケットの満了時間以上である場合、サーバ704は、チケットが満了していることを判定し、エラーを返し、ユーザにサーバ704と強固な認証(例えば、ユーザのユーザ名、パスワード、及び選択的に2段階認証コードを使用する)を行うことを要求してもよい。
チケットが満了していない場合、サーバ704は、ステップ820Bにおいて、要求におけるデジタル的署名を検証することを試行してもよい。特に、サーバ704は、userID及び/またはクライアントdeviceIDを使用するクライアント装置702の公開鍵を取得してもよい。要求における署名が無効である場合、サーバ704は、エラーを返し、ユーザにサーバ704と強固な認証を行うことを要求してもよい。一方で、要求における署名が有効である場合、サーバ704は、ステップ822A(及び同様に図8Aに例証されるステップ822)において、データベース706から限時サーバエントロピーを要求してもよい。
図8Aに戻ると、ステップ824において、データベース706は、限時サーバエントロピーをサーバ704に返してもよい。ステップ826(及び同様に図8Eに例証されるようにステップ826A)において、サーバ704は、クライアント装置702の公開鍵を使用してエントロピーを暗号化し、限時エントロピーをクライアント装置702に送信してもよい。例えば、限時エントロピーは、TLSまたはSSLを使用してセキュアであってもよい。
別の例において、クライアント装置702は、限時サーバエントロピーを記憶(キャッシュ)してもよい。キャッシュを行うことは、セキュリティと使用性との間のトレードオフとしてのポリシー構成に基づいて許容されてもよい。クライアント装置702が限時サーバエントロピーをキャッシュする場合、その後、PIN検証は、オフラインで行われることができる(例えば、サーバ704に接続することなく)。キャッシュ満了時間は、固定時間間隔、クライアントアプリケーション寿命、及び/またはユーザ無活動の間隔に基づいて判定されてもよい。キャッシュされた限時サーバエントロピーは、それがサーバ704から受信されたときに、クライアント装置702の公開鍵により暗号化されてもよい。追加的または代替的に、キャッシュされた限時サーバエントロピーは、PINのような、ユーザ資格情報により暗号化されてもよい。これらの例において、クライアント装置702は、限時サーバエントロピーに対する要求をサーバ704に送信するのではなく、ユーザ資格情報を受信することに応答してキャッシュされた限時サーバエントロピーを取り出してもよい。
ステップ828において、クライアント装置702は、受信した限時サーバエントロピーをクライアント装置の秘密鍵を使用して復号化してもよい。例えば、また図8Dを参照すると、ステップ828Aにおいて、クライアント装置702は、PBKDF2のような、鍵導出関数を使用して静的エントロピー用の暗号学的鍵を導出するために、限時サーバエントロピー及び入力されたPINを使用してもよい。クライアント装置702は、KDF繰り返し回数(例えば、100,000)、ユーザによって入力されたPIN、及びサーバ704から受信した限時サーバエントロピーを図8Dに例証されたPBKDF2()関数に入力してもよい。ステップ828Bにおいて、クライアント装置702は、サーバ704からPINバリデータの部分として予め受信した静的エントロピーを復号化するために鍵を使用してもよい。予め説明されたように、静的サーバエントロピーは、限時サーバエントロピーを使用して暗号化されていてもよく、満了時間に達していない場合にクライアント装置702によってアクセスされてもよい。ステップ828Cにおいて、クライアント装置702は、KDFを使用する別の暗号学的鍵、例えば、PINをロック解除するために使用される鍵を導出するために静的エントロピー及び限時エントロピーを使用してもよい。例えば、PIN用の鍵を判定するための鍵導出関数はまた、PBKDF2()関数を含んでもよい。ステップ828Dにおいて、クライアント装置702は、暗号化されたPINを復号化するためにPIN用の導出された鍵を使用してもよい。
ステップ830A(及び同様に図8Aに例証されたステップ830)において、クライアント装置702は、復号化されたPINをユーザによって入力されたPINと比較してもよい。PINが一致しない場合、クライアント装置702は、ユーザのPINをユーザに再入力させてもよい。手順は、繰り返されてもよく、鍵素材は、クライアント装置のメモリからスクラブされてもよい。例えば、クライアント装置702は、図8C及び8Dに例証されたVerifyPin()関数を再び呼び出してもよい。クライアント装置702及び/またはサーバ704は、ユーザによって行われた再試行の回数を計数してもよい。再試行の回数が閾値を超えている場合、クライアント装置702及び/またはサーバ704は、ユーザに強固な認証を行うことを要求してもよい。一方で、PINが一致した場合、クライアント装置702は、クライアント装置702上で追加の鍵及び/または暗号学的ヴォルト(例えば、ヴォルト616)を復号化するために静的エントロピーを使用してもよい。ヴォルトは、追加の認証鍵、パスワード、クッキー、セッションチケット、無効タイマー、及び管理されたアプリケーションによって保護された他のデータのような、追加の機密データを含んでもよい。
上述の検証処理は、ユーザのクライアント装置702が盗難または紛失された場合に有益であり得る、いくつかのセキュリティ特徴を有する。ヴォルトに記憶されている機密データは、限時サーバエントロピーがクライアント装置702のメモリに書き込まれず、各使用後にメモリからスクラブされ得るので、復号化及びアクセスされることができない。したがって、盗人は、限時サーバエントロピーを使用して暗号化される、静的エントロピー用の鍵を回復することができない。さらに、静的エントロピーは、暗号化されていない状態でクライアント装置702のメモリに書き込まれることはないであろう。むしろ、静的エントロピーは、PIN及び/または限時サーバエントロピーから導出された鍵により暗号化されてもよい。したがって、暗号化された静的サーバエントロピーは、クライアント装置702のプログラムメモリまたはディスクのいずれかに安全に記憶されてもよい。暗号化鍵は、一方で、ディスク上に記憶されず、クライアント装置702のプログラムメモリに一時的に記憶され、使用後にメモリから削除されてもよい。したがって、クライアント装置702が盗まれ、装置のディスクが読み取られた場合、ヴォルトを復号化するための鍵は、メモリにおいて見つけることができない。さらに、KDFが構成可能であり、経過時間で修正、増強、変化されてもよい。KDFは、限時サーバエントロピーが、盗まれたクライアント装置702から回復されることができるデータを使用して、盗人がKDF関数上で総当たり攻撃を動作するために予期される時間よりも短い時間で検証されるように構成されていてもよい。さらに、ユーザのPINは、サーバ704上で回復可能な形式で記憶されていなくてもよい。したがって、サーバ704に侵入する攻撃者は、ユーザのPINを読み取ることができない。
図7及び8に例証された例において、クライアント装置702は、ヴォルト鍵にアクセスするために限時サーバエントロピーをサーバ704から取得する。これらの例において、クライアント装置702は、ユーザのPINによる認証をユーザが所望するときはいつでも、サーバ704に接続される(例えば、インターネットを介して)必要があることになる。以下に説明されることになるように、ユーザは、クライアント装置702がサーバ704に接続することができない場合、ペアリングした装置のような、認証プロキシを使用して代替的に認証を行ってもよい。したがって、ユーザは、インターネット接続が利用可能でない場合でさえ、保護されたヴォルトのソフトウェアを使用し得る。
図9は、本明細書において説明される1つ以上の例証的な態様による、クライアント装置702を認証するためのペアリングした装置708を登録する方法例を例証する。以下に説明されることになるように、ペアリングした装置708は、サーバ704が利用可能ではない場合にクライアント装置702を認証するために使用されてもよい。このように、ペアリングした装置708は、サーバ704に対するプロキシとして働いてもよい。ペアリングした装置708は、サーバ704と登録及び/または認証されることができる任意の装置を含んでもよい。いくつかの態様において、ペアリングした装置708は、クライアント装置702のような、別の装置と、及び/またはクライアント装置702のユーザのような、特定のユーザとペアリングされてもよい。代表的なペアリングした装置708は、マウス(例えば、CITRIX Mouse)、スマートウォッチ、携帯電話、ラップトップコンピュータ、デスクトップコンピュータ等を含んでもよい。いくつかの態様において、ペアリングした装置708は、Bluetooth(登録商標)、近距離無線通信(NFC)、若しくはWi−Fiを介して無線でペアリングされるように、クライアント装置702に無線で接続されてもよく、またはUSBのように、クライアント装置702に有線で接続されてもよい。ペアリングした装置708はまた、ローカルプログラマブル記憶装置を含んでもよい。
ステップ912において、装置708は、サーバ704のURLと共に構成されてもよい。例えば、ユーザは、サーバURLを手動でタイプしてもよい。これに代えて、ユーザは、サーバ管理者からの電子メールにおいて提供されたURLをクリックしてもよい。選択的に、ユーザは、管理者によって提供されたワンタイムパスワード(OTP)をタイプ入力してもよい。これに代えて、ユーザは、管理者からの電子メールにおいて提供されたURLをクリックしてもよい。URLは、特定の装置及びユーザ用に管理者によって関連付けられ予め承認されているトークンを含んでもよい。ペアリングされたマウスまたはスマートウォッチのような、他の装置について、ユーザがその装置をサーバURLと共に構成するために動作し得るコンパニオンアプリケーションがあってもよい。マウスの場合において、コンパニオンアプリケーションは、ペアリングした装置708上で動作し、サーバ704との通信を代理してもよい。
ステップ914において、装置708は、ペアリング要求をサーバ704に送信してもよい。ペアリング要求は、装置708を識別する情報(例えば、製造者及び型式、MACアドレス、シリアル番号、IPアドレス等)ならびにクライアント装置702及び/またはクライアント装置702のユーザを識別する情報(例えば、ユーザ名、アカウント番号等)を含んでもよい。要求はまた、OTPを含んでもよい。
ステップ916において、サーバ704は、ペアリング要求を受信し、クライアント装置702及び/またはユーザがペアリング要求を承認することを要求してもよい。例えば、サーバ704は、ペアリング要求に含まれた情報に基づいてクライアント装置702を識別し、クライアント装置702、または異なるクライアント装置のような、ユーザと関連付けられた他の装置上にインストールされたアプリケーションに承認要求を送信してもよい。ユーザがペアリング要求を承認する場合、クライアント装置702または他の装置は、サーバの承認要求に応答してもよい。いくつかの態様において、ペアリングは、ユーザ入力なしで承認されてもよい。例えば、ペアリング要求は、ユーザ資格情報(例えば、PIN、パスワード等)、OTP、トークン等を含んでもよい。クライアント装置702とペアリングした装置708との間のBTまたはNFC接続からの情報はまた、要求を自動的に承認するために使用されてもよい。QRコード(登録商標)がまた、要求を承認するために使用されてもよい。例えば、サーバ704は、装置708と関連付けられ、クライアント装置702上に表示されることになるQRコード(登録商標)を生成してもよい。装置708は、その後、例えば、カメラを使用してクライアント装置702上に表示されたQRコード(登録商標)を走査することができる。装置708は、その後、走査されたQRコード(登録商標)をサーバ704に返送することができ、こうしてペアリング要求を完了する。
ステップ918において、サーバ704は、装置708がペアリングを承認されていることに応答して、データベース706から限時サーバエントロピーを探すか、またはそうでなければ取得してもよい。ステップ920において、サーバ704は、限時サーバエントロピーの満了時間を判定してもよい。サーバはまた、クライアント装置702の公開鍵により限時サーバエントロピーを暗号化してもよい。サーバ704は、限時サーバエントロピー及び限時サーバエントロピーの満了時間をペアリングした装置708に送信してもよい。いくつかの態様において、限時サーバエントロピーは、暗号化されてもよいが、満了時間は、暗号化されなくてもよい。限時サーバエントロピーがクライアント装置702の公開鍵により暗号化されるので、ペアリングした装置708は、限時サーバエントロピーを読み取ることができないであろう。満了時間は、一方で、ペアリングした装置708が満了時間を読み取ることができるように、暗号化されていない状態(例えば、クライアント装置の鍵を使用して暗号化されないが、サーバ704によって選択的に署名される)で送信されてもよい。
ペアリングした装置708は、クライアント装置702によって将来的に使用するために、暗号化された限時サーバエントロピー及び満了時間をローカルに記憶してもよい。ペアリングした装置708は、限時サーバエントロピーを使用するためにクライアント装置702(または別の装置)から要求を待ってもよい。ペアリングした装置708上に記憶されている限時サーバエントロピーにアクセスするクライアント装置702は、図10及び11を参照して以下にさらに詳細に説明されることになる。
ステップ922において、ペアリングした装置は、現在時間を満了時間に照らすことによって限時サーバエントロピーが満了しているか否かを確認してもよい(例えば、周期的または適時に)。限時サーバエントロピーが満了していない場合、ペアリングした装置708は、限時サーバエントロピーを使用するためにクライアント装置702からの要求を待つことを継続してもよい。限時サーバエントロピーが満了している場合、ペアリングした装置708は、ステップ924においてサーバ704からの限時サーバエントロピーを再度要求してもよい。ステップ926において、サーバ704は、限時サーバエントロピーを有するペアリングした装置708を提供するためにユーザからの承認を選択的に取得してもよい。サーバ704は、第1のペアリング要求に対して、または構成可能な頻度(例えば、他のペアリング要求ごと、4回のペアリング要求ごと等)によって、各ペアリング要求に対するユーザ承認を要求するように構成されることができる。
ステップ928において、サーバ704は、データベース706からの限時サーバエントロピーにアクセスしてもよい。ステップ930において、サーバ704は、サーバ(管理)ポリシーによるような、限時サーバエントロピーの新しい満了時間を判定してもよい。ペアリングした装置708は、一度、現在時間限時サーバエントロピーの満了時間に到達すると、サーバ704に問合せを行ってもよい。サーバ704はまた、クライアント装置702の公開鍵により限時サーバエントロピーを暗号化し、暗号化されたエントロピー及び新しい満了時間をペアリングした装置708に送信してもよい。ペアリングした装置708は、クライアント装置702によって将来的に使用するための限時サーバエントロピーを記憶してもよい。上述のように、ペアリングした装置708は、限時サーバエントロピーが満了しているか否かを周期的または適時に確認してもよい。
図10は、本明細書において説明される1つ以上の例証的な態様による、ペアリングした装置708を使用してクライアント装置702を認証する方法例を例証する。ステップ1012において(及びステップ818と同様)、クライアント装置702は、限時サーバエントロピーに対して、サーバ704に要求を送信することを試行してもよい。しかしながら、クライアント装置702は、サーバ704から要求に対する応答を受信しないことがあり、ステップ1014において、サーバ704がオフラインであるか、またはそうでなければ到達不可能(例えば、クライアント装置702とサーバ704との間の接続が確立されることができない)であることを判定する。
サーバ704がオフラインであるか、またはそうでなければ到達不可能であることの判定に応答して、クライアント装置702は、ステップ1016において、ローカル装置及び/またはクライアント装置702に接続された装置のような、別の装置が到達可能であるか、及び/または限時エントロピーを有するか否かを判定してもよい。これに代えて、クライアント装置702は、エントロピーがサーバ704から取得されることができないことの第1の判定を行うことなく、ペアリングした装置708から限時エントロピーを取得することを試行してもよい。クライアント装置702がペアリングした装置708を識別した場合、クライアント装置702は、ステップ1018において、限時サーバエントロピーに対する要求をペアリングした装置708に送信してもよい。ステップ1020において、ペアリングした装置708は、ユーザから、限時サーバエントロピーに対する要求の承認を選択的に受信してもよい。例えば、ユーザは、ペアリングした装置708上の物理的ボタンまたはタッチ画面ボタンを押すこと、サーバ704、ペアリングした装置708、及び/若しくはクライアント装置702にサインオンを行うための資格情報を入力すること、または承認を指示する他の入力を提供することによって、要求を承認してもよい。一度承認されると、ペアリングした装置708は、ステップ1022において、限時サーバエントロピーをクライアント装置702に送信してもよい。上述されたように、限時サーバエントロピーは、クライアント装置702の公開鍵により暗号化されてもよく、ペアリングした装置708は、エントロピーを復号化するために対応する秘密鍵を有しないので、エントロピーへのアクセスを有しないことがある。言い換えると、ペアリングした装置708は、ペアリングした装置708が自身で解釈、読み取り、及び/または復号化することができない暗号化された不透明な値を伝達してもよい。
図8Aを参照して上述されたように、クライアント装置702は、図8Aに例証されたステップ828と同様、暗号化された限時サーバエントロピーを復号化し、静的エントロピーを復号化するためにそれを使用してもよい。クライアント装置702は、図8Aに例証されたステップ830と同様、クライアント装置702に記憶されている暗号化されたPINをさらに復号化し、そのPINをユーザによって入力されたPINに照らしてもよい。PINが一致する場合、クライアント装置702は、クライアント装置702でヴォルトに保持されたデータのような、追加の機密データへのアクセスを認めてもよい。
PINを使用しない認証は、図7A、7D及び7Eを参照して上述された。サーバ704を使用するPINレス認証と同様、PINレス認証はまた、ペアリングした装置708を使用してクライアント装置702を認証するときにも使用されてもよい。例えば、静的エントロピー用の鍵は、PINではなく、限時サーバエントロピーを使用して生成されてもよい。したがって、クライアント装置702は、PINではなく、ペアリングした装置708から受信して限時サーバエントロピーを使用して静的エントロピーを復号化してもよい。
PINを使用することとPINを使用しないこととの間には、セキュリティトレードオフがある。盗人は、ユーザのPINを知ることなくセキュアヴォルトを復号化することができ得る。しかしながら、ペアリングした装置708は、PINレスの場合において(及びPINを使用する場合において同様)セキュリティの追加の層を追加してもよい。例えば、クライアント装置702を盗んだ盗人は、クライアント装置702がペアリングした装置708の通信範囲の外側にある場合、ペアリングした装置708に記憶されている限時エントロピーにアクセスすることができなくなる。したがって、Bluetooth(登録商標)またはNFCのような、より短い通信範囲を有するローカル通信ネットワークプロトコルは、追加されたセキュリティのために使用されてもよい。盗人は、セキュアにされたヴォルトを復号化するために、クライアント装置702とペアリングした装置708との両方を盗まなければならないことになる。さらに、アプリケーションポリシーは、クライアント装置702がペアリングした装置708から限時サーバエントロピーを取り出すことができる時間間隔、及びエントロピーがどの程度の時間、使用されることができるかを定義することができる。
本明細書において説明された態様は、複数装置にわたるユーザのシングルサインオン(SSO)のために使用されてもよい。言い換えると、第1の装置の暗号化されたヴォルトに記憶されているデータは、ユーザの制御において他の装置と共有されてもよい。これは、ユーザが装置間をシームレスにローミングすることを許容し、1つの装置から別の装置に切替えるときに接続及びアプリケーションを再認証しなくてもよい。
図11は、本明細書において説明される1つ以上の例証的な態様による、第1の装置702がペアリングした装置708を介して第2の装置710と機密データを共有する方法例を例証する。図12は、本明細書において説明される1つ以上の例証的な態様による、第1の装置702がサーバ704を介して第2の装置710と機密データを共有する方法例を例証する。いくつかの態様において、第1の装置または第2の装置が、サーバ704が利用不可能である(例えば、第1の装置702とサーバ704との間の接続、及び/または第2の装置710とサーバ704との間の接続が確立されることができない)と判定した場合に、第1の装置702は、ペアリングした装置708を介して第2の装置710と機密データを共有してもよい。他の態様において、機密データは、サーバ704が利用不可能である判定をまず行うことなく、ペアリングした装置708を介して共有されてもよい。図11及び12は、ここで一緒に説明されることになる。
第1の装置702上のアプリケーションは、ウェブブラウザを使用して企業イントラネットリソースをブラウジングするような、第1の装置702のユーザにサーバ704上のリソースにアクセスする方法を提供してもよい。第1の装置702は、MicroVPN接続のような、サーバ704へのVPN接続を介してこれらのリソースにアクセスしてもよい。いくつかの態様において、サーバ704は、ウェブブラウザがHTTPまたはHTTPSを介してイントラネットリソースにアクセスすることを許容するプロキシとして作用してもよい。上述されたように、第1の装置702は、VPNエンドポイントに接続するために第1の装置702によって使用される認証チケットまたはクッキーのような、機密データを記憶するヴォルト616を有してもよい。ヴォルトは、静的エントロピーから導出されるヴォルト暗号化鍵によって暗号化されてもよい。いくつかの態様において、VPN認証チケットにアクセスすることは、例えば、ユーザのユーザ名、パスワード、及び選択的に2段階認証コードを使用する完全な認証を要求してもよい。ユーザ体験の考え方から、ユーザが1つの装置から別の装置に切替わるときにVPN認証チケットがユーザを追従することを許容することは、利点になるであろう。
簡潔な例として、管理されたアプリケーションブラウザが、電話のような小さい画面の装置上で開かれ、ユーザが、インターネット(例えば、http://internal.company.tld/)を介して利用可能な長い文章を読んでいることを仮定する。ユーザは、ドキュメントをより良好に読むために、小さい画面の装置から、タブレットのような、より大きな画面の装置に切替えることを望み得る。タブレットへのシングルサインオンは、電話に記憶されているVPN認証チケットが電話からタブレットにユーザを追従する場合、実現されてもよい。これは、完全な認証資格情報を入力する必要なく、ユーザが管理されたアプリケーションブラウザを即座に開くことを許容することになる。電話における無効タイマーはまた、ユーザが管理されたアプリケーション上で依然として有効なので、タブレットまでユーザを追従してもよい。
図11及び12を参照すると、データ(例えば、VPN認証チケット、無効タイマー、及び/または他の機密データ)は、2つの異なる方法における第1の装置702上のApp1及び第2の装置710上のApp2のような、2つの管理されたアプリケーション間で共有されることができる。図11において、データは、ペアリングした装置708を介して共有されてもよい。このシナリオにおいて、サーバ704は、オンラインまたは共有されることになるデータを利用可能である必要はない。いくつかの態様において、第1の装置702と第2の装置710との両方は、Bluetooth(登録商標)、NFC、またはWi−Fiのような、短距離通信プロトコルを介してペアリングした装置708と通信してもよく、またはUSB越しに広域に接続されてもよい。これに代えて図12において、データは、サーバ704を介して共有されてもよい。
ステップ1112及び1212において、第1の装置702は、第2の装置710の公開鍵を有して構成されてもよい。例えば、第2の装置710は、その公開鍵を第1の装置702に直接送信するか、またはペアリングした装置708若しくはサーバ704のような、プロキシを通して送信してもよい。同様に、第2の装置710は、第1の装置702の公開鍵を有して構成されてもよい。
ステップ1114及び1214において、第1の装置702は、機密データ(例えば、VPN認証チケット、無効タイマー、及び/または他の機密データ)を暗号化してもよい。第1の装置702は、第2の装置710の公開鍵によりデータを暗号化してよい。第1の装置702はまた、その秘密鍵によりデータを署名してもよい。ステップ1116及び1216において、第1の装置702は、暗号化されたデータをペアリングした装置708(図11)またはサーバ704(図12)に送信してもよい。VPN認証チケットは、一度、第1の装置702において利用可能になると、送信されてもよい(例えば、ペアリングした装置708と共有されてもよい)。これに代えて、ポーリングがサポートされている場合、暗号されたチケットは、要求に応じて送信されてもよく、ポリシーは、その機能を制御するために配置されてもよい。ペアリングした装置708またはサーバ704は、第1の装置702の署名を検証し、ローカルまたはデータベース、例えば、サーバ704がデータ転送用のプロキシとして作用する場合においてデータベース706に暗号化されたデータを記憶してもよい。
ステップ1118及び1218において、第2の装置710は、ペアリングした装置708(図11)またはサーバ704(図12)から機密ヴォルトデータを要求してもよい。例えば、ユーザは、第2の装置710をピックアップし、第1の装置702上のApp1としての管理されたアプリケーションと同じまたは類似であり得る、管理されたアプリケーションApp2にアクセスしてもよい。ユーザは、PIN、パスワード、または他の資格情報を入力することによるように、第2の装置710に選択的にサインオンしてもよい。第2の装置710は、ユーザによって入力された資格情報を検証してもよい。
ステップ1120及び1220において、ペアリングした装置708(図11)またはサーバ704(図12)は、第2の装置710に暗号化されたヴォルトデータを送信してもよい。上述されたように、データは、第2の装置710の公開鍵により暗号化されてもよい。ステップ1122及び1222において、第2の装置710は、暗号化されたデータを受信してもよい。第2の装置710は、その秘密鍵を使用してデータを復号化してもよい。第2の装置710はまた、その秘密鍵により暗号化されたデータのハッシュを署名してもよい。データが復号化された後、第2の装置710は、VPN接続を介して企業イントラネットリソースのような1つ以上のリソースにアクセスするためにデータを使用してもよい。上述されたように、無効タイマーは、動作を継続してもよい、第2の装置710に送信されるデータに含まれてもよい。これに代えて、第2の装置710は、アプリケーションに対して新しい無効タイマーを開始してもよい。
上述の例において、サーバ704は、クライアント装置702によって使用される静的エントロピー及び限時エントロピー用のエントロピーのソースとして作用する。代替的態様において、システムは、エントロピーの追加のソースとしてペアリングした装置708を使用してもよい。図7Aを参照すると(例えば、ステップ726において、またはこれに関して)、ペアリングした装置708は、限時のペアリングした装置のエントロピーを生成し、エントロピーをサーバ704に送信してもよい。ペアリングした装置708は、エントロピーをサーバ704に直接送信してもよく、クライアント装置702のような、プロキシを通して送信してもよい。ペアリングした装置708は、例えば、ペアリングした装置708で乱数発生器を使用して、限時のペアリングした装置のエントロピーを生成してもよい。サーバ704は、限時のペアリングした装置のエントロピーを受信し、データベース706においてエントロピーを選択的に記憶してもよく、これは、ペアリング装置708が紛失された場合に有益となり得る。
ステップ732において、サーバ704は、満了チケットを生成するために両方の限時エントロピーを組み合わせてもよい。特に、及び図7Dを参照して、サーバ704は、ステップ732Eにおいて、静的サーバエントロピー用の鍵を生成するために、PBKDF2のような、KDFに限時サーバエントロピーと限時のペアリングした装置のエントロピーとの両方を入力してもよい。サーバエントロピー及びペアリングした装置のエントロピーは、同時に満了してもよく、異なる時間に満了してもよい。サーバ704は、ステップ732Fにおいて、PINが使用される場合、PIN用の鍵を生成するために両方の限時エントロピー(静的サーバエントロピーに加えて)を入力してもよい。
代替的態様において、サーバ704は、静的サーバエントロピー及び/またはPIN用の鍵を生成するために、限時のペアリングした装置のエントロピーを使用してもよい(かつ限時サーバエントロピーを使用しない)。言い換えると、限時のペアリングした装置のエントロピーは、上述の例において限時サーバエントロピーを置換してもよい。サーバ704は、同様に、静的サーバエントロピーを静的なペアリングした装置のエントロピーと置換してもよい。
いくつかの態様において、ペアリングした装置708は、管理するエントロピー及び生成する鍵に対してサーバ704と同様に機能してもよい。例えば、ペアリングした装置708は、サーバ704による関与なく、それ自身の静的なペアリングした装置のエントロピーを生成してもよく、限時のペアリングした装置のエントロピーを使用して静的なペアリングした装置のエントロピー用の鍵を生成してもよい。
いくつかの態様において、クライアント装置702は、サーバ関与なしで、それ自身においてエントロピー及び該エントロピー用の鍵を生成してもよい。初回使用中の初期PIN入力後、クライアント装置702は、エントロピー及び鍵を生成するためにパスフレーズ及びPINを直接的に使用してもよい。パスフレーズは、暗号化鍵を構築するために十分なエントロピーを含んでもよい。クライアント装置702は、生成されたエントロピー及び任意の追加のメタデータ(例えば、クライアント装置702を識別するデータ)を記憶のためにサーバ704及び/またはデータベース706に送信してもよい。クライアント装置702によるこの初期修正されたブートストラッピングステップの後、方法が上記のように進んでもよい。
主題は、構造的特徴及び/または方法的な作用に特化した言語で説明されたが、付属の請求項において定義された主題は、上記で説明された特定の機能または作用に必ずしも限定されないことが理解されるべきである。むしろ、上記で説明された特定の特徴及び作用は、下記の請求項の例示の実施として説明される。
関連出願の相互参照
本出願は、2015年4月15日に出願され、“AUTHENTICATION OF A CLIENT DEVICE BASED ON ENTROPY FROM A SERVER OR OTHER DEVICE”と題された米国非仮出願第14/687,737号の利益を主張するものであり、その全体が参照により本明細書に組み込まれる。