【文献】
福原 英之,セキュア・リモート・アクセス 構築・運用のガイドライン,COMPUTERWORLD Get Technology Right,日本,(株)IDGジャパン,2005年11月 1日,第2巻 第11号,p.79−89
【文献】
島野 繁弘 ほか,クラウド指向サービスプラットフォームソリューション/SaaS基盤サービスと、それを支える技術,NEC技報,日本電気株式会社,2010年 4月23日,第63巻 第2号,p.53−57
(58)【調査した分野】(Int.Cl.,DB名)
前記MITMプロキシにおいて、前記ログインフォームとともに使用される前記アカウントの前記ユーザ選択の前記リクエストに応答して前記ブラウザから受信された前記アカウントの前記ユーザ選択を得るステップ
を更に含む、請求項15に記載の方法。
プロキシベースのアプリケーションに対応するコンフィグレーションプロファイル・ユニフォームリソースロケータへのリダイレクトを生じさせる、ユーザによって開始されたログインに応答して、前記プロキシベースのアプリケーションを起動するステップと、
前記コンフィグレーションプロファイル・ユニフォームリソースロケータから、VPN設定を含むコンフィグレーションプロファイルを受信するステップと、
前記コンフィグレーションプロファイルに基づき前記VPNサービスを確立するステップと
を更に含む、請求項19に記載の方法。
【発明を実施するための形態】
【0018】
以下の記載では、説明のために、多数の具体的な詳細が、本発明の完全な理解を提供するために示されている。なお、当業者に明らかなように、本発明は、それらの具体的な詳細によらずとも実施されてよい。他の事例では、構造及びデバイスは、本発明を不明りょうにしないようにブロック図形式において示されている。下付き文字又は添え字を伴わない数字の参照は、参照される数字に対応する下付き文字及び添え字の全てのインスタンスを参照すると理解される。更に、本開示において使用されている言語は、読みやすさ及び教育上の目的のために主に選択されており、発明対象を線引き又は制限し、そのような発明対象を決定するのに必要な特許請求の範囲に訴えるために選択されたものではない。「一実施形態」又は「実施形態」との明細書中の言及は、実施形態に関連して記載される特定の機構、構造、又は特性が本発明の少なくとも1つの実施形態に含まれることを意味し、「一実施形態」又は「実施形態」との複数回の参照は、必然的に全てが同じ実施形態に言及していると理解されるべきではない。
【0019】
ここで使用されるように、語「コンピュータシステム」は、単一のコンピュータ、あるいは、コンピュータシステムにおいて又はそれによって実行されるものとして記載される機能を実行するよう協働する複数のコンピュータを指すことができる。
【0020】
ここで使用されるように、語「プログラム可能なデバイス」は、単一のプログラム可能なデバイス、あるいは、プログラム可能なデバイスにおいて又はそれによって実行されるものとして記載される機能を実行するよう協働する複数のプログラム可能なデバイスを指すことができる。同様に、「マシン読み出し可能な媒体」は、単一の物理媒体、あるいは、マシン読み出し可能な媒体において記憶されているものとして記載される素材を一緒に記憶し得る複数の物理媒体を指すことができる。
【0021】
ここで使用されるように、語「アプリケーション」は、プログラムが内蔵型のソフトウェアであろうが、あるいは、他のプログラムの又はそれによって含まれるコンポーネントであろうが、あらゆる実行可能なソフトウェアプログラムを指す。
【0022】
ここで使用されるように、語「アセット」は、そのタスクのリストを完結するために使用され得るあらゆるデータ片を指す。アセットは、ユーザ・クレデンシャル、稼働統計及び個人情報を含むことができるがそれらに制限されないと考えられる。
【0023】
ここで使用されるように、語「暗号キー」は、当業者によって容易に理解されるであろうように、平文を暗号文に又は逆に暗号文を平文に変換するために、暗号化アルゴリズム又は他の暗号化プロセス内で使用されるビットの連続を指す。
【0024】
ここで使用されるように、語「ダミーストリング」は、有効なプレースホルダー、すなわち、とりわけ、実際の暗号キーのための有効なストリングとして使用され得るビットのシーケンスを指す。
【0025】
ここで使用されるように、語「キー生成器」は、暗号キーを生成するために通常使用され得る乱数発生器を指す。
【0026】
ここで使用されるように、語「変形Javascript(登録商標)」は、スクリプト生成器の出力を指す。本明細書は、JAVASCRIPTスクリプティング言語を用いる実施に関して記載されるが、本発明はそのように制限されず、如何なる所望のスクリプティング言語においても実施されてよい(JACASCRIPTは、オラクル・アメリカ・インコーポレイテッドの登録商標である。)。
【0027】
ここで使用されるように、語「ワンタップ」は、タッチスクリーン上のアクティブ領域の1回のタッチを指す。
【0028】
ここで使用されるように、語「スクリプト生成器」は、標準スクリプトを取って、セッションキーを所望の位置で挿入するソフトウェアを指す。
【0029】
ここで使用されるように、語「セッションキー」は、デバイス又はネットワークにおいてアクティブセッションの限られた時間の存続期間に使用される暗号キーを指す。
【0030】
ここで使用されるように、語「VPN」は、仮想プライベートネットワークサービス及び関連する設定又はパラメータを指す。
【0031】
以下の記載の大半は、iOSオペレーティングシステムに基づくモバイルデバイスでの実施に関して記載されるが、本発明はそのように制限されず、如何なる所望のオペレーティングシステム環境でも実施されてよい。
【0032】
様々な実施形態は、iOSデバイスのための新規且つ安全なフォームフィリング技術を提供する。この技術は、iOSデバイスにおいてiOSアプリケーション及びプロキシをインストールし、あらゆるブラウザページに基づくリクエスト及びデバイス応答を保護しながらプロキシをデバイス及びブラウザへリンクすることを進める。その場合に、ユーザ制御下で、アプリケーションは、ユーザ名、パスワード及び関連する秘密情報を自動的に入力することによって、実行されるべきアクションを選択する。
【0033】
少なくとも1つの実施形態において、ローカルプロキシは、スクリプトをブラウザに挿入するために確立される。ローカルプロキシはダウンロードされ、コンフィグレーションプロファイルが取得されてインストールされ、内部仮想プライベートネットワークサービスがアクティブにされ、ローカルプロキシは内部仮想プライベートネットワークサービスを通じて確立される。次いで、ローカルプロキシは実行され得る。
【0034】
他の実施形態では、ローカルプロキシは確立され、接続がローカルプロキシとブラウザとの間に形成される。接続は、遠隔のサーバとローカルプロキシとの間にも形成される。遠隔のサーバは、サーバプロキシを確立するようシミュレートされる。リクエストはブラウザ及びサーバプロキシのうちの少なくとも1つから受信され、応答は遠隔のサーバへ送られる。遠隔のサーバからブラウザへ送られたサーバ応答を受けると、肯定的なスクリプト挿入応答がサーバ応答に基づきブラウザから受信され、サーバ応答はバッファリングされる。挿入スクリプトが生成され、ブラウザによる使用のためにブラウザへ送られる。
【0035】
実施形態は、機密をコードに挿入する選択肢を有さないiOSにおいてそのような挿入を可能にする。これは、ネットワークフックを使用し、挿入されるコンポーネント、プロキシ及びアプリケーションの間のデータフローを制御することで、行われてよい。これは、ユーザが、どのクレデンシャルが使用されるのかを、それらをあらわにし且つ攻撃者の発見を最小限に抑えることなしに制御することを可能にする。
【0036】
図1は、iOSプロキシベースのアプリケーションの一実施形態に従うインストールプロシージャを表すフロー図であり、如何にして環境がセットアップされるのかを表す。ブロック110で、アプリケーションは、通常はワンタップ・ログインによって、呼び出される。ブロック120で、ログインは、アプリケーションに対応するコンフィグレーションプロファイル・ユニフォームリソースロケータ(URL)へリダイレクトされる。コンフィグレーションプロファイル180は、カスタム認証局182及びVPN設定184並びにiOSデバイスに関する情報186を含んでよい。
【0037】
ブロック130で、コンフィグレーションプロファイル180はiOSデバイスでインストールされ、次いで、ブロック140で、ログインは実際のアプリケーションへリダイレクトされて、アプリケーションを起動する。アプリケーションは、ブロック150で、iOS VPNサービスをアクティブにする。VPNサービスは、ブロック160で、ローカルプロキシをアクティブにし、次いで、ブロック170で、ログインプロキシをアクティブにする。
【0038】
図2は、一実施形態に従うスクリプト挿入及び使用技術20を表すフロー図である。表されるように、マン・イン・ザ・ミドル(MITM)プロキシがセットアップされ、スクリプトが挿入のために準備される。決定技術は、挿入をトリガすべきかどうかを判断するために使用される。
【0039】
スクリプト生成フェーズ210は、セッションキー214を生成するためにキー生成器212を使用する。セッションキー214は、次いで、カスタムスクリプト220を生成するためにスクリプト生成器216によって使用される。ブロック230で、スクリプトは、ブラウザのためのバッファリングされた応答に挿入される。
【0040】
挿入プロセスはブロック240で起こる。ブロック242で、挿入プロセスは、応答の本文を待つ。ブロック244で、本文の終わりが見つけられ、次いで、ブロック246で、スクリプトは、本文の終わりを示した</body>タグの前に挿入される。
【0041】
ブロック230の終わりに、ウェブページは、iOSデバイス186にあるパスワード管理アプリケーションと通信するために使用される挿入されたJavascriptコードを含む。
【0042】
制御の基本フローは、次の通りである。
【0043】
パスワード管理アプリケーションは、ローカルHTTPプロキシをセットアップし、ブロック250で接続を待ち受ける。ブラウザが接続され、ユーザがウェブページへナビゲートされると、セキュアソケットレイヤ(SSL;Secure Socket Layer)ハンドシェイクは、サーバがブロック260でウェブページを提供し、ブロック270で遠隔のサーバのアイデンティティのシミュレーションがマン・イン・ザ・ミドル(MITM;man-in-the middle)プロキシをセットアップすることができるようにすることで実行される。ブラウザは、このとき、ウェブページのリクエストを受信する準備ができている。
【0044】
ブロック270でHTTPリクエストを受信すると、リクエストは読み出され、ブロック272でサーバへ中継される。これは、ブロック280で表されるように、証明書の生成をスプーフィングすることを伴う。この証明書生成プロセスにおいて、カスタム認証局284及び対象のホスト名の一般名を使用する生成された証明書は、SSLハンドシェイクのためのシグニチャを生成して、MITMプロキシをセットアップするよう遠隔のサーバのアイデンティティをシミュレートするために使用される。ブラウザは、このとき、ブロック270でHTTPリクエストを受信する準備ができている。ブロック272で、HTTPリクエストはクライアントから読み出され、サーバへ中継される。
【0045】
ブロック290は、一実施形態に従うハイジャック決定プロセスを表し、スクリプトを応答に挿入すべきかどうかを判断する。ブロック292で、プロキシは、サーバからの応答を待つ。ブロック294で、応答のコンテキストタイプがテキスト/htmlである場合には、ハイジャック決定プロセスは、ハイジャックが望ましいことを示す。コンテキストタイプがテキスト/htmlでない場合には、ハイジャックは行われない。ハイジャック(スクリプト挿入)が行われるべき場合には、サーバからの応答は、上述されたようにスクリプト挿入を可能にするよう、中継されバッファリングされる。ブロック274で、応答をハイジャックし、ブロック210で生成されたスクリプトを挿入すると決定される場合には、ブロック278で、HTTP応答が中継され、応答はバッファリングされ、上述されたようにスクリプトが挿入される。ハイジャックが望まれない場合には、ブロック276で、応答のバイト・ツー・バイト中継が実行されて、応答をブロック270へ渡す。
【0046】
図3は、上記の
図2で説明されたリクエスト及びスクリプト挿入プロセスのためのデータフローを表すフロー図である。
図3乃至5は、ブラウザ310と、プロキシを提供するアプリケーション320と、遠隔のウェブサーバ330との間の詳細なデータフローを表す(遠隔のウェブサーバ330との間は、たとえただ1つの遠隔のウェブサーバ330しか必要とされないとしても、データフローを明りょうにするよう
図3では二度表されている。)。
【0047】
ブロック340で、ウェブページへナビゲートするとのユーザの決定があると、ブラウザ310はプロキシ320への接続を開始し、ブロック345で、対象サーバへ接続するためのリクエストを送信する。
図3で表されている例では、接続はSSLを使用したセキュア接続であるが、同様の技術は非セキュア接続に使用され得る。ブロック350で、iOSデバイス186は、SSLクライアントとして遠隔のウェブサーバ330とのSSLハンドシェイクを開始する。一方、プロキシ320は、ブロック345で、ウェブブラウザ310とSSLサーバモードにおいてSSLハンドシェイクを行っている。
【0048】
ブラウザ310は、HTTPログイン355をプロキシ320へ与える。プロキシ320は、ログイン355を、遠隔サーバ330への配信のためにiOSデバイス186へ中継する。遠隔サーバ330は応答360により応答する。応答360は、挿入プロセス200の実行のためにプロキシ320へ送られる。変形された応答360は、ブラウザ310へ返送され、ブロック370で、ウェブページが表示される。
【0049】
図4は、ログインフォーム検出及びセキュアアセットデータフローのための技術400を表すフロー図である。ウェブページ410がブラウザ310でのロードを終えた後、ブロック420で、
図2のスクリプト挿入プロセスによって挿入されたスクリプトは、ページがログインフォームを含むかどうかを判定する。多くのHTTPリクエストがページ410のために(例えば、画像、スタイルシート、などのために)作られ得るが、この判定は、現在ロードされているHTMLページ410に対して行われる。
【0050】
ウェブページ410上にログインフォームがある場合には、ブロック430で、アセットのためにリクエストが生成される。ログインフォームがない場合には、ログインは断念される。
【0051】
ブロック430〜440は、
図2で表されているスクリプト生成プロセスにおいて生成された関連する対称暗号キー214による対称暗号化アルゴリズムを用いたHTTPリクエストの暗号化を表す。そのような暗号化アルゴリズムの例となる実施形態はAES CCMモードである。なお、如何なるタイプの対称暗号化も使用され得る。
【0052】
暗号化されたリクエストはプロキシ320へ与えられる。プロキシ320は、ブロック450でリクエストを解読するために、セッションキー214を使用する。
図4において、ブラウザ310とアプリケーション/プロキシ320との間の接続は、ウェブページ410とアプリケーション320との間の非同期Javascript及びXML(AJAX)を使用する。他の技術は、望まれるように使用され得る。REST API(Representational State Transfer Application Programming Interface)460は、このプロセスのためにプロキシ320によって使用されてよい。REST APIは、動作が有限数であって、リソースがそれら自体の一意のリソースインジケータを有する標準のアプローチである。
【0053】
図5は、一実施形態に従うセキュアなフォームフィリングプロセス500を表すフロー図である。この例では、第1の応答はアカウントのリストを含み、ユーザはそれから選択するようプロンプトされる。応答はブロック505で解読され、次いで、ブロック510で、ブラウザ310はアカウントを表示し、ユーザに1つを選択するよう要求する。ブロック515で、ユーザは、例えば、アカウントに関連した領域をクリック又はタッチすることによって、アカウントを選択する。アカウントは、ウェブページ内でオーバーレイとして提示されてよい。ユーザがログインすると決めると、ログインリクエストは、ブロック520で暗号化され、ログインリクエストはアプリケーション320へ送信される。一実施形態において、リクエストは、同じ対称暗号キー214を用いて暗号化される。リクエストは、ユーザによるアカウントの選択を示す。
【0054】
この例では、暗号化された応答は、AJAXを介してプロキシ320へ与えられる。プロキシ320は、ブロック525で、REST APIを用いて応答を解読する。このリクエストに対する応答は、パスワードのプレースホルダーとなるダミーストリング530を含む。このストリング530は、プロキシによって暗号化され(ブロック535)、ブラウザによって解読され(540)、そして、ブロック545で、上記の技術を用いて正当なHTML入力に挿入される。次いで、ブロック550で、フォームが自動的にサブミットされる。このサブミッションは、ブラウザに、ユーザ名と、パスワードの一時的な代役であるダミーストリングとを含む新しいHTTPリクエストを生成させる。次いで、ブロック550で、ダミーストリングは、ログインリクエストがサーバ330へ送られる場合に、直接にネットワークストリームにおいて実時間でユーザのパスワード555によって置換される。
【0055】
次いで、サーバ330はログイン応答560を与える。ログイン応答560は、iOSデバイス186を通じてプロキシ320へ、次いでブラウザ310へ送られる。次いで、ブロック565で、ユーザは、自身の1つ以上のアクティビティに復帰する。
【0056】
上記の技術は、iOSデバイス186において実行される必要はなく、クラウドベースでありながら上記のスクリプト挿入のためにローカルアプリケーションプロキシ320と相互作用することが可能であるVPNサーバによって提供されてよい。斯様な実施形態では、VPNサーバは、ウェブページに挿入されるべきセッションキー又はアセットのいずれかへのアクセスを有さなくてよい。VPNサーバは、望まれるようにキャリア・インフラストラクチャに組み込まれてよい。
【0057】
これより
図6を参照すると、ブロック図は、一実施形態に従って、CRD510又はDWD520のいずれか一方のために使用され得るプログラム可能デバイス600を表す。
図6で表されているプログラム可能デバイスは、第1のプロセッシング要素670及び第2のプロセッシング要素680を含むマルチプロセッサプログラム可能デバイス600である。2つのプロセッシング要素670及び680が示されているが、プログラム可能デバイス600の実施形態は、そのようなプロセッシング要素をただ1つしか含まなくてもよい。
【0058】
プログラム可能デバイス600は、ポイント・ツー・ポイント相互接続システムとして表されている。当該システムにおいて、第1のプロセッシング要素670及び第2のプロセッシング要素680は、ポイント・ツー・ポイント・インターコネクト650を介して結合されている。
図6で表されているインターコネクトのいずれか又は全ては、ポイント・ツー・ポイント・インターコネクトよりむしろ、マルチドロップ・バスとして実装されてよい。
【0059】
図6で表されているように、プロセッシング要素670及び680の夫々は、第1及び第2のプロセッサコア(すなわち、プロセッサコア674A及び674B並びにプロセッサコア684A及び684B)を含むマルチコアプロセッサであってよい。そのようなコア674A、674B、684A、684Bは、
図1乃至4に関連して上述されたのと同様に命令コードを実行するよう構成されてよい。なお、他の実施形態は、望まれるように、シングルコアプロセッサであるプロセッシング要素を使用してよい。複数のプロセッシング要素670、680を備える実施形態では、夫々のプロセッシング要素は、望まれるように、異なる数のコアを有して実装されてよい。
【0060】
夫々のプロセッシング要素670、680は、少なくとも1つの共有キャッシュ646を含んでよい。共有キャッシュ646A、646Bは、コア674A、674B及び684A、684Bのようなプロセッシング要素の1つ以上のコンポーネントによって夫々利用されるデータ(例えば、命令)を記憶してよい。例えば、共有キャッシュは、プロセッシング要素670、680のコンポーネントによるより高速なアクセスのために、メモリ632、634において記憶されているデータをローカルでキャッシングしてよい。1つ以上の実施形態において、共有キャッシュ646A、646Bは、レベル2(L2)、レベル3(L3)、レベル4(L4)、又はキャッシュの他のレベルのような1つ以上のミッドレベルキャッシュ、ラストレベルキャッシュ(LLC;last level cache)、あるいは、それらの組み合わせを含んでよい。
【0061】
図6は、図面の明りょうさのために、2つのプロセッシング要素670、680を備えたプログラム可能デバイスを表すが、本発明の適用範囲はそのように制限されず、プロセッシング要素はいくつでも存在してよい。代替的に、プロセッシング要素670、680の1つ以上は、グラフィクスプロセッシングユニット(GPU;graphics processing unit)、デジタル信号プロセッシング(DSP:digital signal processing)ユニット、フィールドプログラマブルゲートアレイ、又は何らかの他のプログラム可能なプロセッシング要素のような、プロセッサ以外の他の要素であってよい。プロセッシング要素680は、プロセッシング要素670と異種又は非対称であってよい。アーキテクチャ上の、マイクロアーキテクチャ上の、熱的な、電力消費の特性、及び同様のものを含むメリットのメトリクスのスペクトルに関して、プロセッシング要素670、680の間には様々な違いが存在してよい。それらの違いは、プロセッシング要素670、680の間の非対称性及び異種性として有効に現れてよい。幾つかの実施形態において、様々なプロセッシング要素670、680は、同じダイ・パッケージに存在してよい。
【0062】
第1のプロセッシング要素670は、メモリコントローラロジック(MC)672並びにポイント・ツー・ポイント(P−P)インターフェイス676及び678を更に有してよい。同様に、第2のプロセッシング要素680は、MC682並びにP−Pインターフェイス686及び688を有してよい。
図6で表されているように、MC672及び682は、プロセッシング要素670、680を夫々のメモリ、すなわち、メモリ632及びメモリ634へ結合する。メモリ632及び634は、夫々のプロセッサへローカルで付属しているメインメモリの部分であってよい。MCロジック672及び682は、プロセッシング要素670、680に組み込まれているものとして表されているが、幾つかの実施形態において、MCロジックは、プロセッシング要素670、680に組み込まれるのではなく、それらの外にある個別ロジックであってよい。
【0063】
プロセッシング要素670及びプロセッシング要素680は、P−Pインターフェイス676及び686並びにP−Pインターコネクト652及び654を夫々介して、I/Oサブシステム690へ結合されてよい。
図6で表されているように、I/Oサブシステム690はP−Pインターフェイス694及び698を含む。更に、I/Oサブシステム690は、I/Oサブシステム690を高性能グラフィクスエンジン638と結合するインターフェイス692を含む。一実施形態において、バス639は、グラフィクスエンジン638をI/Oサブシステム690へ結合するために使用されてよい。交代に、ポイント・ツー・ポイント・インターコネクト639がそれらのコンポーネントを結合してよい。
【0064】
次いで、I/Oサブシステム690は、インターフェイス696を介して第1のリンク616へ結合されてよい。一実施形態において、第1のリンク616は、ペリフェラル・コンポーネント・インターコネクト(PCI;Peripheral Component Interconnect)バス、あるいは、PCIエクスプレスバス又は他のI/Oインターコネクトバスのようなバスであってよい。なお、本発明の適用範囲は、そのように制限されない。
【0065】
図6で表されているように、様々なI/Oデバイス614は、第1のリンク616を第2のリンク610へ結合し得るブリッジ618に沿って、第1のリンク616へ結合されてよい。一実施形態において、第2のリンク610は、ローピンカウント(LPC;low pin count)バスであってよい。様々なデバイスが第2のリンク610へ結合されてよく、例えば、キーボード/マウス612、通信デバイス626(コンピュータネットワーク603と通信してよい。)、及び、一実施形態においてコードを含み得るディスクドライブ又は他の大容量ストレージのようなデータ記憶ユニット628がある。コード630は、上記の技術のうちの1つ以上の実施形態を実行する命令を含んでよい。更に、オーディオI/O624は、第2のリンク610へ結合されてよい。
【0066】
他の実施形態が考えられる点に留意されたい。例えば、
図6のポイント・ツー・ポイント・アーキテクチャの代わりに、システムは、マルチドロップ・バス又は他のそのような通信トポロジを実装してよい。リンク616及び610は、
図6では、バスとして表されているが、如何なる望ましいタイプのリンクが使用されてもよい。加えて、
図6の要素は、代替的に、
図6で表されているよりも多い又は少ない集積チップを用いて分割されてよい。例えば、コンポーネントは、ネットワーク化された(LAN、企業ネットワーク、インターネット、及び/又はクラウドにおいて離散化された)コンピューティングデバイス(現実又は仮想)、あるいは、230の機能をまとまって実行するマイクロコントローラとして、実装されてよい。
【0067】
これより
図7を参照すると、ブロック図は、他の実施形態に従うプログラム可能デバイス700を表す。
図6の特定の態様は、
図7の他の態様を不明りょうにしないように、
図7から省略されている。
【0068】
図7は、プロセッシング要素670、680が、集積メモリ及びI/O制御ロジック(“CL”)772及び782を夫々有してよいことを表す。幾つかの実施形態において、CL772、782は、
図6に関連して記載されたもののようなメモリ制御ロジック(MC)を含んでよい。加えて、CL772、782は、I/O制御ロジックを更に含んでよい。
図7は、メモリ732、734がCL772、782へ結合され得ることだけでなく、I/Oデバイス744も制御ロジック772、782へ結合され得ることも表す。レガシーI/Oデバイス715は、インターフェイス796によってI/Oサブシステム790へ結合されてよい。夫々のプロセッシング要素770、780は、プロセッサコア774A、774B、784A及び784Bとして、
図7で表されている複数のプロセッサコアを含んでよい。
図7で表されているように、I/Oサブシステム790は、インターコネクト752及び754を用いてプロセッシング要素770及び780のP−Pインターフェイス776及び786へ接続するP−Pインターフェイス794及び798を含む。プロセッシング要素770及び780はまた、インターコネクト750並びに夫々インターフェイス778及び788によって相互接続されてよい。
【0069】
図6及び7で表されているプログラム可能デバイスは、ここで論じられる様々な実施形態を実装するために用いられ得るプログラム可能デバイスの実施形態の略図である。
図6及び7で表されているプログラム可能デバイスの様々なコンポーネントは、システム・オン・チップ(SoC;system-on-a-chip)アーキテクチャにおいて結合されてよい。
【0070】
これより
図8を参照すると、上記の技術が実装され得る例となるインフラストラクチャ800が概略的に表されている。インフラストラクチャ800は、コンピュータネットワーク802を含む。コンピュータネットワーク802は、インターネット、コーポレートネットワーク、又はローカルエリアネットワーク(LAN;Local Area Network)のような、今日利用可能な多種多様なコンピュータネットワークを含んでよい。それらのネットワークの夫々は、有線又は無線式のプログラム可能デバイスを含み、いくつのネットワークプロトコル(例えば、TCP/IP)によっても動作することができる。ネットワーク802は、ゲートウェイ及びルータ(808によって表される。)、エンドユーザコンピュータ806、並びにコンピュータサーバ804へ接続されてよい。インフラストラクチャ800は、モバイル通信デバイスとともに使用されるセルラーネットワーク803を更に含む。モバイルセルラーネットワークは、携帯電話機及び多くの他のタイプのデバイスをサポートする。インフラストラクチャ800におけるモバイルデバイスは、携帯電話機810、ラップトップ812、及びタブレット814として表されている。携帯電話機810のようなモバイルデバイスは、モバイルデバイスが移動するにつれて1つ以上のモバイルプロバイダネットワークと相互作用してよく、通常は、セルラーネットワーク803へ接続するために複数のモバイルネットワーク塔(図示せず。)と相互作用する。
図8ではセルラーネットワークと呼ばれているが、モバイルデバイスは、1よりも多いプロバイダネットワークの塔と、更には、無線アクセスポイント及びルータ808のような複数の非セルラーデバイスと相互作用してよい。加えて、モバイルデバイス810、812及び814は、所望のサービスのために、コンピュータ804及び806のような非モバイルデバイスと相互作用してよい。
【0071】
以下の例は、更なる実施形態に関連する。
【0072】
例1は、ブラウザによるリクエストに応答してローカルプロキシをダウンロードするステップと、コンフィグレーションプロファイルを取得しインストールするステップと、内部仮想プライベートネットワークサービスをアクティブにするステップと、前記内部仮想プライベートネットワークサービスを通じて前記ローカルプロキシを確立するステップと、前記ローカルプロキシを実行するステップとを有する方法である。
【0073】
例2において、例1の対象は、任意に、前記リクエストがHTTPリクエストである、ことを含むことができる。
【0074】
例3において、例1乃至2のいずれかの対象は、任意に、前記ローカルプロキシが遠隔の仮想プライベートネットワークサーバと相互作用する、ことを含むことができる。
【0075】
例4は、命令が記憶されているコンピュータ可読媒体であって、前記命令は、実行される場合にマシンに、ローカルプロキシ及び該ローカルプロキシとブラウザとの間の接続を確立するステップと、遠隔のサーバと前記ローカルプロキシとの間の接続を確立するステップと、サーバプロキシを確立するよう前記遠隔のサーバをシミュレートするステップと、前記ブラウザ及び前記サーバプロキシのうちの少なくとも1つからリクエストを受け、該リクエストを前記遠隔のサーバへ送るステップと、前記遠隔のサーバから前記ブラウザへ送られたサーバ応答を受けるステップと、前記サーバ応答に基づく肯定的なスクリプトインジェクション応答を前記ブラウザから受けるステップと、前記サーバ応答をバッファリングするステップと、挿入スクリプトを生成するステップと、前記挿入スクリプトを前記ブラウザへ送るステップとを実行させる命令を有する、コンピュータ可読媒体である。
【0076】
例5において、例4の対象は、任意に、実行される場合に前記マシンに前記挿入スクリプトを前記ブラウザへ送らせる前記命令が、実行される場合に前記マシンに、前記バッファリングされたサーバ応答を前記挿入スクリプトにより変更して、変形サーバ応答を生成するステップと、前記変形サーバ応答を前記ブラウザへ送るステップとを実行させる命令を有する、ことを含むことができる。
【0077】
例6において、例4乃至5のいずれかの対象は、任意に、前記命令が、実行される場合に前記マシンに、変更されたウェブページを前記ブラウザでレンダリングさせる命令を更に有する、ことを含むことができる。
【0078】
例7において、例4の対象は、任意に、前記命令が、実行される場合に前記マシンに、ロードされたウェブページにおいてログインフォームの存在を確立するステップと、アセットリクエストを生成するステップと、前記アセットリクエストを対称アルゴリズムにより暗号化するステップと、前記アセットリクエストを前記遠隔のサーバへ送るステップと、要求されたアセットを含むアセットリクエスト応答を前記遠隔のサーバから受けるステップと、前記アセットリクエスト応答を前記対称アルゴリズムにより解読するステップと、前記要求されたアセットを前記ローカルプロキシ及び前記ブラウザのうちの少なくとも1つへ送るステップとを実行させる命令を更に有する、ことを含むことができる。
【0079】
例8において、例7の対象は、任意に、実行される場合に前記マシンに挿入スクリプトを生成させる前記命令が、実行される場合に前記マシンに暗号キーをセキュアに生成させる命令を有し、前記対称アルゴリズムが、前記セキュアに生成された暗号キーを用いて、前記アセットリクエストを暗号化し且つ前記アセットリクエスト応答を解読する、ことを含むことができる。
【0080】
例9において、例7の対象は、任意に、実行される場合に前記マシンにロードされたウェブページにおいてログインフォームの存在を確立させる前記命令が、実行される場合に前記マシンに、少なくとも1つのアカウント選択を含むアカウント選択フォームを前記ブラウザへ送るステップと、前記少なくとも1つのアカウント選択の1つを含むアカウント選択リクエストを生成するステップと、前記アカウント選択リクエストを前記ブラウザから受けるステップとを実行させる命令を有する、ことを含むことができる。
【0081】
例10において、例9の対象は、任意に、前記アカウント選択リクエストが暗号化される、ことを含むことができる。
【0082】
例11において、例10の対象は、任意に、前記アカウント選択リクエストが対称暗号化アルゴリズムを用いて暗号化される、ことを含むことができる。
【0083】
例12において、例10の対象は、任意に、前記命令が、実行される場合に前記マシンに、ダミーストリングを含むアカウント選択応答を生成するステップと、前記アカウント選択応答を前記ブラウザへ送るステップと、前記ロードされたウェブページにおいてウェブページ入力フィールドに前記ダミーストリングを挿入するステップと、前記ダミーストリングを含む第2リクエストを前記ブラウザから受けるステップと、実時間において前記ダミーストリングを、前記遠隔のサーバから読み出されたパスワードにより置換するステップとを実行させる命令を更に有する、ことを含むことができる。
【0084】
例13は、プロセッサと、命令が記憶されているメモリとを有するプログラム可能なデバイスであって、前記命令が、実行される場合に前記プロセッサに、ローカルプロキシ及び該ローカルプロキシとブラウザとの間の接続を確立するステップと、遠隔のサーバと前記ローカルプロキシとの間の接続を確立するステップと、サーバプロキシを確立するよう前記遠隔のサーバをシミュレートするステップと、前記ブラウザ及び前記サーバプロキシのうちの少なくとも1つからリクエストを受け、該リクエストを前記遠隔のサーバへ送るステップと、前記遠隔のサーバから前記ブラウザへ送られたサーバ応答を受けるステップと、前記サーバ応答に基づく肯定的なスクリプトインジェクション応答を前記ブラウザから受けるステップと、前記サーバ応答をバッファリングするステップと、挿入スクリプトを生成するステップと、前記挿入スクリプトを前記ブラウザへ送るステップとを実行させる命令を有する、プログラム可能なデバイスである。
【0085】
例14において、例13の対象は、任意に、実行される場合に前記プロセッサに前記挿入スクリプトを前記ブラウザへ送らせる前記命令が、実行される場合に前記プロセッサに、前記バッファリングされたサーバ応答を前記挿入スクリプトにより変更して、変形サーバ応答を生成するステップと、前記変形サーバ応答を前記ブラウザへ送るステップとを実行させる命令を有する、ことを含むことができる。
【0086】
例15において、例13乃至14のいずれかの対象は、任意に、前記命令が、実行される場合に前記プロセッサに、変更されたウェブページを前記ブラウザでレンダリングさせる命令を更に有する、ことを含むことができる。
【0087】
例16において、例13乃至14のいずれかの対象は、任意に、前記命令が、実行される場合に前記プロセッサに、ロードされたウェブページにおいてログインフォームの存在を確立するステップと、アセットリクエストを生成するステップと、前記アセットリクエストを対称アルゴリズムにより暗号化するステップと、前記アセットリクエストを前記遠隔のサーバへ送るステップと、要求されたアセットを含むアセットリクエスト応答を前記遠隔のサーバから受けるステップと、前記アセットリクエスト応答を前記対称アルゴリズムにより解読するステップと、前記要求されたアセットを前記ローカルプロキシ及び前記ブラウザのうちの少なくとも1つへ送るステップとを実行させる命令を更に有する、ことを含むことができる。
【0088】
例17において、例16の対象は、任意に、実行される場合に前記プロセッサに挿入スクリプトを生成させる前記命令が、実行される場合に前記プロセッサに暗号キーをセキュアに生成させる命令を有し、前記対称アルゴリズムが、前記セキュアに生成された暗号キーを用いて、前記アセットリクエストを暗号化し且つ前記アセットリクエスト応答を解読する、ことを含むことができる。
【0089】
例18において、例16の対象は、任意に、実行される場合に前記プロセッサにロードされたウェブページにおいてログインフォームの存在を確立させる前記命令が、実行される場合に前記プロセッサに、少なくとも1つのアカウント選択を含むアカウント選択フォームを前記ブラウザへ送るステップと、前記少なくとも1つのアカウント選択の1つを含むアカウント選択リクエストを生成するステップと、前記アカウント選択リクエストを前記ブラウザから受けるステップとを実行させる命令を有する、ことを含むことができる。
【0090】
例19において、例18の対象は、任意に、前記アカウント選択リクエストが暗号化される、ことを含むことができる。
【0091】
例20において、例19の対象は、任意に、前記アカウント選択リクエストが対称暗号化アルゴリズムを用いて暗号化される、ことを含むことができる。
【0092】
例21において、例19の対象は、任意に、前記命令が、実行される場合に前記プロセッサに、ダミーストリングを含むアカウント選択応答を生成するステップと、前記アカウント選択応答を前記ブラウザへ送るステップと、前記ロードされたウェブページにおいてウェブページ入力フィールドに前記ダミーストリングを挿入するステップと、前記ダミーストリングを含む第2リクエストを前記ブラウザから受けるステップと、実時間において前記ダミーストリングを、前記遠隔のサーバから読み出されたパスワードにより置換するステップとを実行させる命令を更に有する、ことを含むことができる。
【0093】
例22は、プロセッサと、命令が記憶されているメモリとを有するプログラム可能なデバイスであって、前記命令が、実行される場合に前記プロセッサに、ローカルプロキシ及び該ローカルプロキシとブラウザとの間の接続を確立するステップと、遠隔のサーバと前記ローカルプロキシとの間の接続を確立するステップと、サーバプロキシを確立するよう前記遠隔のサーバをシミュレートするステップと、前記ブラウザ及び前記サーバプロキシのうちの少なくとも1つからリクエストを受け、該リクエストを前記遠隔のサーバへ送るステップと、前記遠隔のサーバから前記ブラウザへ送られたサーバ応答を受けるステップと、前記サーバ応答に基づく肯定的なスクリプトインジェクション応答を前記ブラウザから受けるステップと、前記サーバ応答をバッファリングするステップと、挿入スクリプトを生成するステップと、前記バッファリングされたサーバ応答を前記挿入スクリプトにより変更して、変形サーバ応答を生成するステップと、前記変形サーバ応答を前記ブラウザへ送るステップとを実行させる命令を有する、プログラム可能なデバイスである。
【0094】
例23において、例22の対象は、任意に、前記命令が、実行される場合に前記プロセッサに、ロードされたウェブページにおいてログインフォームの存在を確立するステップと、アセットリクエストを生成するステップと、前記アセットリクエストを対称アルゴリズムにより暗号化するステップと、前記アセットリクエストを前記遠隔のサーバへ送るステップと、要求されたアセットを含むアセットリクエスト応答を前記遠隔のサーバから受けるステップと、前記アセットリクエスト応答を前記対称アルゴリズムにより解読するステップと、前記要求されたアセットを前記ローカルプロキシ及び前記ブラウザのうちの少なくとも1つへ送るステップとを実行させる命令を更に有する、ことを含むことができる。
【0095】
例24において、例22乃至23のいずれかの対象は、任意に、前記命令が、実行される場合に前記プロセッサに、ダミーストリングを含むアカウント選択応答を生成するステップと、前記アカウント選択応答を前記ブラウザへ送るステップと、前記ロードされたウェブページにおいてウェブページ入力フィールドに前記ダミーストリングを挿入するステップと、前記ダミーストリングを含む第2リクエストを前記ブラウザから受けるステップと、実時間において前記ダミーストリングを、前記遠隔のサーバから読み出されたパスワードにより置換するステップとを実行させる命令を更に有する、ことを含むことができる。
【0096】
例25において、例23の対象は、任意に、実行される場合に前記プロセッサに挿入スクリプトを生成させる前記命令が、実行される場合に前記プロセッサに暗号キーをセキュアに生成させる命令を有し、前記対称アルゴリズムが、前記セキュアに生成された暗号キーを用いて、前記アセットリクエストを暗号化し且つ前記アセットリクエスト応答を解読する、ことを含むことができる。
【0097】
例26において、例23の対象は、任意に、実行される場合に前記プロセッサにロードされたウェブページにおいてログインフォームの存在を確立させる前記命令は、実行される場合に前記プロセッサに、少なくとも1つのアカウント選択を含むアカウント選択フォームを前記ブラウザへ送るステップと、前記少なくとも1つのアカウント選択の1つを含むアカウント選択リクエストを生成するステップと、前記アカウント選択リクエストを前記ブラウザから受けるステップとを実行させる命令を有する、ことを含むことができる。
【0098】
例27は、プロセッサと、該プロセッサと結合され、命令が記憶されているメモリとを有するプログラム可能なデバイスであって、前記命令が、実行される場合に前記プロセッサに、ブラウザによるリクエストに応答してローカルプロキシをダウンロードするステップと、コンフィグレーションプロファイルを取得しインストールするステップと、内部仮想プライベートネットワークサービスをアクティブにするステップと、前記内部仮想プライベートネットワークサービスを通じて前記ローカルプロキシを確立するステップと、前記ローカルプロキシを実行するステップとを実行させる命令を有する、プログラム可能なデバイスである。
【0099】
例28において、例27の対象は、任意に、前記リクエストがHTTPリクエストである、ことを含むことができる。
【0100】
例29において、例27乃至28のいずれかの対象は、任意に、前記ローカルプロキシが遠隔の仮想プライベートネットワークサーバと相互作用する、ことを含むことができる。
【0101】
上記の説明は、制限ではなく、実例であるよう意図されることが理解されるべきである。例えば、上記の実施形態は、お互いと組み合わされて使用されてよい。多くの他の実施形態は、上記の説明を読むことで当業者に明らかであろう。従って、本発明の適用範囲は、添付の特許請求の範囲を参照して、斯様な特許請求の範囲が権利を付与される等価な全範囲とともに決定されるべきである。
【0102】
[関連出願の相互参照]
本願は、2014年1月24日付けで出願された、「Automatic placeholder finder-filler」と題された米国特許仮出願第61/931247号に基づく優先権を主張するものである。なお、この先の特許出願は、その全文を参照により本願に援用される。