(57)【特許請求の範囲】
【請求項１】
分離された実行環境を備え、
前記分離された実行環境は、
リモートサーバーで実行されるリモートアプリケーションにより生成されるログイン要求メッセージをブラウザアプリケーションから受信し、
前記リモートアプリケーションがセキュア記憶装置に格納された秘密情報に関連するか否かを判断し、関連すると判断した場合、前記リモートアプリケーションに関連する秘密情報を識別し、
識別された前記秘密情報で前記ログイン要求メッセージをポピュレートし、
ポピュレートされた前記ログイン要求メッセージを前記リモートアプリケーションへ送信し、
ログインの成功に応答して、前記リモートアプリケーションからログイン応答メッセージを受信し、
前記ログイン応答メッセージを前記ブラウザアプリケーションへ送信し、
前記リモートアプリケーションが前記セキュア記憶装置に格納された秘密情報に関連するか否かを判断することにより、何ら秘密情報が前記セキュア記憶装置に格納されておらず、前記リモートアプリケーションに関連しないと判断した場合、新たな秘密情報を受信し、前記新たな秘密情報を前記リモートアプリケーションに送信してログインの成功を検出し、前記ログインの成功が検出された前記新たな秘密情報を前記セキュア記憶装置に格納し、
前記分離された実行環境だけが、前記セキュア記憶装置の読み取りおよび書き込みを行える、装置。
【請求項２】
前記分離された実行環境はさらに、ユーザにより入力されたパスコードと前記セキュア記憶装置に格納されたパスコードとを比較することを含むユーザ照合を実行する証明モジュールを有する、請求項１に記載の装置。
【請求項３】
前記分離された実行環境はさらに、表示デバイスに描画されることになるパターンを生成するセキュアグラフィックモジュールを有し、
前記証明モジュールは、ユーザにより入力されたデータと、前記パターンとを比較することを含むユーザ照合を実行する、請求項２に記載の装置。
【請求項４】
前記分離された実行環境はさらに、セキュアネットワークモジュールを有し、
前記セキュアネットワークモジュールは、
前記リモートサーバー上の前記リモートアプリケーションとセキュアセッションを確立し、
前記セキュアセッション上で、前記ポピュレートされたログイン要求メッセージを前記リモートアプリケーションへ送信し、
前記ログイン応答メッセージを前記リモートアプリケーションから受信する、
請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記ログイン応答メッセージはセッションクッキーを含む、請求項１から４のいずれか１項に記載の装置。
【請求項６】
請求項１に記載の装置が備える分離された実行環境と、
クライアントプラットフォームと
を備え、
前記クライアントプラットフォームは、
ネットワークを介したリモートサーバーで動作するリモートアプリケーションに関連するログインを検出し、前記ログインをオフロードするブラウザアプリケーションと、
前記ブラウザアプリケーションを実行する少なくとも１つのプロセッサと、前記リモートサーバー上の前記リモートアプリケーションと通信リンクを確立するネットワーク回路とを含むハードウェア環境と、
秘密情報を格納するセキュア記憶装置と
を有し、
前記分離された実行環境は、前記ハードウェア環境とは独立してセキュアに分離されてコードを実行する、システム。
【請求項７】
分離された実行環境と、
クライアントプラットフォームと
を備え、
前記分離された実行環境は、
リモートサーバーで実行されるリモートアプリケーションにより生成されるログイン要求メッセージをブラウザアプリケーションから受信し、
前記分離された実行環境だけが読み取りおよび書き込みを行うことができるセキュア記憶装置に格納され、前記リモートアプリケーションに関連する秘密情報を識別し、
識別された前記秘密情報で前記ログイン要求メッセージをポピュレートし、
ポピュレートされた前記ログイン要求メッセージを前記リモートアプリケーションへ送信し、
ログインの成功に応答して、前記リモートアプリケーションからログイン応答メッセージを受信し、
前記ログイン応答メッセージを前記ブラウザアプリケーションへ送信し、
前記クライアントプラットフォームは、
ネットワークを介した前記リモートサーバーで動作する前記リモートアプリケーションに関連するログインを検出し、前記ログインをオフロードする前記ブラウザアプリケーションと、
前記ブラウザアプリケーションを実行する少なくとも１つのプロセッサと、前記リモートサーバー上の前記リモートアプリケーションと通信リンクを確立するネットワーク回路とを含むハードウェア環境と、
秘密情報を格納する前記セキュア記憶装置と
を有し、
前記分離された実行環境は、前記ハードウェア環境とは独立してセキュアに分離されてコードを実行し、
前記ブラウザアプリケーションはさらに、何らかの秘密情報が前記リモートアプリケーションに関連するか否かを判断し、判断結果が否定的な場合、前記ブラウザアプリケーションはさらに、新たな秘密情報を受信し、前記新たな秘密情報を前記リモートアプリケーションに送信してログインの成功を検出し、前記分離された実行環境はさらに、前記ログインの成功が検出された前記新たな秘密情報を前記セキュア記憶装置に格納する、システム。
【請求項８】
ネットワークを介したリモートサーバーで動作するリモートアプリケーションにより生成されるログイン要求メッセージを、分離された実行環境においてブラウザアプリケーションから受信する段階と、
前記リモートアプリケーションが前記分離された実行環境によってのみアクセス可能なセキュア記憶装置に格納された秘密情報に関連するか否かを判断し、関連すると判断した場合、前記リモートアプリケーションに関連する秘密情報を識別する段階と、
識別された前記秘密情報で前記ログイン要求メッセージをポピュレートする段階と、
ポピュレートされた前記ログイン要求メッセージを前記分離された実行環境から前記リモートアプリケーションへ送信する段階と、
ログインの成功に応答して、前記リモートアプリケーションからログイン応答メッセージを受信する段階と、
前記ログイン応答メッセージを前記分離された実行環境から前記ブラウザアプリケーションへ送信する段階と、
前記リモートアプリケーションが前記セキュア記憶装置に格納された秘密情報に関連するか否かを判断することにより、何ら秘密情報が前記セキュア記憶装置に格納されておらず、前記リモートアプリケーションに関連しないと判断した場合に、新たな秘密情報を受信し、前記新たな秘密情報を前記リモートアプリケーションに送信してログインの成功を検出し、前記ログインの成功が検出された前記新たな秘密情報を前記セキュア記憶装置に格納する段階と
を備える、方法。
【請求項９】
前記リモートサーバー上の前記リモートアプリケーションとセキュアセッションを確立する段階と、
前記セキュアセッション上で、前記ポピュレートされたログイン要求メッセージを前記分離された実行環境から前記リモートアプリケーションへ送信する段階と
をさらに備える、請求項８に記載の方法。
【請求項１０】
ユーザにより入力されたパスコードと前記セキュア記憶装置に格納されたパスコードとを比較することを含むユーザ照合を、前記分離された実行環境を介して実行する段階をさらに備える、請求項８または９に記載の方法。
【請求項１１】
表示デバイスに描画されることになるパターンを、前記分離された実行環境を用いて生成する段階と、
ユーザにより入力されたデータと、前記パターンとを前記分離された実行環境を用いて比較する段階と
をさらに備える、請求項８から１０のいずれか１項に記載の方法。
【請求項１２】
前記分離された実行環境と前記リモートサーバー上の前記リモートアプリケーションとの間でセキュアセッションを確立する段階と、
前記セキュアセッション上で、前記ポピュレートされたログイン要求メッセージを前記分離された実行環境から前記リモートアプリケーションへ送信する段階と、
前記分離された実行環境において、前記ログイン応答メッセージを前記リモートアプリケーションから受信する段階と
をさらに備える、請求項８から１１のいずれか１項に記載の方法。
【請求項１３】
前記ログイン応答メッセージはセッションクッキーを含む、請求項１２に記載の方法。
【請求項１４】
何らかの秘密情報が前記リモートアプリケーションに関連するか否かを前記分離された実行環境を介して判断し、判断結果が否定的な場合に、前記分離された実行環境により、前記新たな秘密情報を受信し、前記新たな秘密情報を前記セキュア記憶装置に格納する段階をさらに備える、請求項８から１３のいずれか１項に記載の方法。
【請求項１５】
何らかの秘密情報が前記リモートアプリケーションに関連するか否かを前記ブラウザアプリケーションを介して判断し、判断結果が否定的な場合に、新たな秘密情報を前記ブラウザアプリケーションを介して受信する段階と、
前記分離された実行環境により、前記新たな秘密情報を前記セキュア記憶装置に格納する段階と
をさらに備える、請求項８から１３のいずれか１項に記載の方法。
【請求項１６】
請求項８から１５のいずれか１項に記載の方法の前記段階を、分離された実行環境に関連するプロセッサを有する機械に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、秘密情報を保護するためのシステムおよび方法に関し、より詳細には、セキュアなユーザ認証および証明のためのシステムおよび方法に関する。
【背景技術】
【０００２】
ユーザがアプリケーション（例えば、リモートサーバーに関連するウェブアプリケーション、またはその他）へアクセスするための１つの方法にはユーザ名および一意のコード（例えば、パスワード、ＰＩＮ、またはその他）を用いることが含まれる。セキュリティを高めるため、各ウェブアプリケーションは一意のユーザ名およびコードを有さなければならない。しかし、異なるアプリケーションの数が増加するにつれ、どのユーザ名／コードが各ウェブアプリケーションに属するかを記憶しておくことはユーザにとって困難になり得る。いくつかのクライアントプラットフォーム（例えば、パーソナルコンピュータおよびその他）は各ウェブアプリケーションに関連するユーザ名／コードを格納し得るが、これらのユーザ名／コードは、マルウェアプログラムおよびその他により危険にさらされ得る（例えば、盗まれ得る）。
【図面の簡単な説明】
【０００３】
特許請求される主題の実施形態の特徴および利点は、以下の詳細な説明が進むにつれ、また図面を参照すれば明らかとなり、図面において、同様の数字は同様の部分を指す。
【図１】本開示に係る例示的な一実施形態のシステムブロック図を図示する。
【図２】本開示に係る例示的な一実施形態のシステムロジックブロック図を図示する。
【図３】本開示に係る例示的な一実施形態の動作のフローチャートを図示する。
【図４】本開示に係る他の例示的な実施形態の動作のフローチャートを図示する。  以下の詳細な説明は説明のための実施形態を参照して進めるが、それらの多くの代替、修正、および変更が当業者には明らかとなろう。
【発明を実施するための形態】
【０００４】
一般的に、本開示は、セキュアなユーザ認証および証明のためのシステムおよび方法を提供する。例えば、クライアントプラットフォーム（デスクトップ、ラップトップ、および／または、モバイルコンピューティングデバイスなどであるが、これらに限定されない）は、分離された実行環境（例えばマネージメントエンジンであるが、これに限定されない）と、リモートアプリケーションにセキュアにログインするよう構成されたブラウザアプリケーション（例えば、リモートサーバーで動作するウェブアプリケーション）を含む。ログインを要求するウェブサイトを検出すると、ブラウザアプリケーションは、分離された実行環境で実行されているセキュリティエンジンへログインプロセスをオフロードする。セキュリティエンジンは、ユーザ照合を実行し、ログイン情報を格納および送信するよう構成されている。例えば、セキュリティエンジンは、ログイン情報を格納または送信する前に、情報を入力するようユーザに要求することによりユーザ照合を実行し得る。セキュリティエンジンがユーザを照合すると、セキュリティエンジンは、特定のウェブアプリケーションに関連するログイン情報（例えば、セキュアなメモリに格納され得るユーザ名、パスワードなどの秘密情報）を識別し、識別されたログイン情報を、ログインリクエストを介してウェブアプリケーションへ送信する。セキュリティエンジンは、（例えば、ネットワークを介したリモートサーバーへの送信の前に暗号化することにより）秘密情報を保護し得る。（秘密情報を含む）ログイン情報が有効である場合、ウェブアプリケーションはクライアントプラットフォームへのアクセスを認め、ブラウザアプリケーションは、証明されたユーザとして制御を再開する。
【０００５】
したがって、システムおよび方法は、エンドユーザを証明することによりセキュリティを高めて、当該エンドユーザがクライアントプラットフォームに格納される秘密データへアクセスする適切な権限を有することを確認し得、および／または、クライアントプラットフォームに格納されたエンドユーザの秘密データへの権限を与えられていない（例えば悪意のある）アクセスを防ぎ得、これにより、有用性とセキュリティとを維持し得る。システムおよび方法は、ブラウザアプリケーション内でセキュア環境が確立されることを必須とせず、代わりに、ウェブアプリケーション（例えば、市販のウェブアプリケーション）にシームレスに統合され得、また、リモートサーバーで実行されるウェブアプリケーションが、既存のパスワードベースの証明方法を継続して用いることを可能ともし得る（つまり、システムおよび方法は、ウェブアプリケーションおよびユーザが異なる証明方法を用いることを必須としない）。システムおよび方法は、クライアントプラットフォームのオペレーティングシステム（ＯＳ）から秘密情報を保護した状態を維持し得、関連する秘密情報のみを（例えば、セキュアＨＴＴＰＳセッション、またはその他を用いて）ウェブアプリケーションへリリース／送信し得る。
【０００６】
本明細書で用いられるように、「秘密情報」または「秘密データ」という用語は、個人または団体に関する公にされていない情報またはデータを意味することが意図されており、当該ユーザまたは団体を識別するために用いられ得る。秘密情報の例には、ユーザ名、パスワード、個人識別番号（ＰＩＮ）またはコード、クレジットカード番号、社会保障番号、誕生日、旧姓、出生地、およびその他が含まれるが、これらに限定されない。追加的に、本明細書で用いられるように、悪意のあるソフトウェア（またはマルウェア）とは、動作を混乱または拒絶させるよう、プライバシーの喪失または利己的な利用に繋がる情報を取得するよう、システムのリソースへ権限を与えられていないアクセスをするよう、およびその他の不正な挙動をするよう設計されたプログラミング（例えば、コード、スクリプト、アクティブコンテンツ、および他のソフトウェア）を意味するよう意図されている。マルウェアの例には、コンピュータウイルス、ワーム、トロイの木馬、スパイウェア、不正なアドウェア、スケアウェア、クライムウェア、および他の悪意のある、および望ましくないソフトウェアまたはプログラムが含まれるが、これらに限定されない。
【０００７】
ここで図１を参照すると、本開示に係るシステム１０の一実施形態が一般的に図示されている。システム１０は、リモートサーバー２２で動作するリモートアプリケーション２０（例えばウェブアプリケーションであるが、これに限定されない）とネットワーク２４を介した通信リンク１８を確立するよう構成された分離された実行環境１４とブラウザアプリケーション１６とを含むクライアントプラットフォーム１２を含む。
【０００８】
プラットフォーム１２には、デスクトップコンピュータ、ラップトップコンピュータ、および／またはモバイルコンピューティングデバイス（スマートフォン（Ｂｌａｃｋｂｅｒｒｙ（商標）スマートフォン、ｉＰｈｏｎｅ（登録商標）スマートフォン、Ａｎｄｒｏｉｄ（商標）スマートフォン、およびその他などであるが、これらに限定されない）、タブレットコンピュータ（ｉＰａｄ（登録商標）タブレットコンピュータ、ＰＣベースのタブレットコンピュータ、および／または、現在または将来のタブレットコンピュータなどであるが、これらに限定されない）、およびウルトラモバイルパーソナルコンピュータなどであるが、これらに限定されない）が含まれ得るが、これらに限定されない。
【０００９】
本明細書においてより詳細に説明されるように、分離された実行環境１４は、クライアントプラットフォーム１２のオペレーティングシステム（ＯＳ）および／またはＢＩＯＳが、分離された実行環境１４の存在に気付かない（例えば、ＯＳおよび基本入出力システム（ＢＩＯＳ）から隠されている）ようにクライアントプラットフォーム１２の残りとは独立してセキュアに分離されてコードを実行するよう構成された実行環境である。分離された実行環境１４は、ユーザ照合／認証を実行し、秘密データを格納し、ブラウザアプリケーション１６からオフロードされたログインリクエストを処理するよう構成され得る。
【００１０】
ブラウザアプリケーション１６は、コンピュータネットワーク２４（例えばＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂであるが、これに限定されない）を介してクライアントプラットフォーム１２とリモートサーバー２２との間で（例えば、情報リソースを取得、提示、およびトラバースするために）ナビゲーションを可能とするよう構成された何らかのアプリケーションを含み得る。ブラウザアプリケーション１６の例には、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐ．（商標）が提供するＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（商標）、Ｍｏｚｉｌｌａ  Ｃｏｒｐ．（商標）が提供するＦｉｒｅｆｏｘ（商標）、Ｇｏｏｇｌｅ  Ｉｎｃ．（商標）が提供するＧｏｏｇｌｅ  Ｃｈｒｏｍｅ（商標）、Ａｐｐｌｅ  Ｉｎｃ．（商標）が提供するＳａｆａｒｉ（商標）、およびＯｐｅｒａ  Ｓｏｆｔｗａｒｅ（商標）が提供するＯｐｅｒａ（商標）などのブラウザアプリケーションが含まれるが、これらに限定されない。
【００１１】
リモートアプリケーション２０は、エンドユーザ証明（例えばログイン）を利用するリモートサーバー２２で実行される何らかのアプリケーションを含み得る。リモートアプリケーション２０の例には、電子メールアカウント（例えば、Ｇｍａｉｌ（商標）、Ｙａｈｏｏｍａｉｌ（商標）、Ｈｏｔｍａｉｌ（商標）、ＡＯＬ（商標）など）、ソーシャルネットワークアプリケーション（例えば、Ｆａｃｅｂｏｏｋ（商標）、Ｔｗｉｔｔｅｒ（商標）など）、商取引アプリケーション（例えば、ｅＢａｙ（商標）、ＰａｙＰａｌ（商標）、バンキングアプリケーションなど）、およびその他が含まれるが、これらに限定されない。ネットワーク２４には、ローカルエリアネットワーク（ＬＡＮ）、広域エリアネットワーク（ＷＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、インターネット、およびその他などであるが、これらに限定されないコンピュータネットワークが含まれ得る。
【００１２】
ここで図２を参照すると、クライアントプラットフォーム１２の一実施形態が一般的に図示されている。クライアントプラットフォーム１２は、ハードウェア環境／プラットフォーム２６、アプリケーション環境／プラットフォーム２８、および分離された実行環境１４を含む。分離された実行環境１４はクライアントプラットフォーム１２の一部として図示されているが、分離された実行環境１４は、本明細書で説明されるようにクライアントプラットフォーム１２の外部に位置付けられ得る。
【００１３】
ハードウェア環境２６は、ネットワーク回路３２、グラフィック回路３４、入出力回路３６、セキュアメモリ３８、チップセット４０、およびメモリ４２を含む。ネットワーク回路３２（ネットワークインタフェースコントローラ（ＮＩＣ）などであるが、これに限定されない）は、リモートサーバー２２と、１または複数のネットワーク２４を介して通信リンク１８を確立するよう構成される。例えば、ネットワーク回路３２は、リモートサーバー２２と、ＩＥＥＥ  ｓｔａｎｄａｒｄ  ８０２．３、またはその他に準拠して通信リンク１８を確立するよう構成され得る。しかし、これは一例も過ぎず、本開示はこのことに限定されないことを理解されよう。
【００１４】
グラフィック回路３４（グラフィックインタフェースコントローラなどであるが、これに限定されない）は、表示デバイス４４に表示されることになる画像を生成するよう構成される。入出力回路３６（Ｉ／Ｏコントローラなどであるが、これに限定されない）は、入出力デバイス４６（キーボード、マウス、トラッカー、タッチスクリーン、またはその他などであるが、これらに限定されない）から入力を受信するよう構成される。セキュアメモリ３８は、秘密情報および／またはデータを格納するよう構成される。分離された実行環境１４だけが、セキュアメモリ３８から／へデータを読み取りおよび／または書き込み得る。セキュアメモリ３８の例には、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリ、およびその他が含まれるが、これらに限定されない。
【００１５】
チップセット４０は、１または複数のプロセッサユニットまたはコア（明確にするため示されていない）を含み得、関連するメモリ４２はチップセット４０によりアクセス可能な何らかのメモリを含み得る。
【００１６】
アプリケーション環境２８は、オペレーティングシステム４８、ブラウザアプリケーション１６、１または複数のネットワークスタック５０、および１または複数のグラフィックスタック５２を含む。オペレーティングシステム４８は、Ｗｉｎｄｏｗｓ（登録商標）、Ｕｎｉｘ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｍａｃｉｎｔｏｓｈ（登録商標）に基づくオペレーティングシステム、およびプロセッサに組み込まれたオペレーティングシステムを含み得るが、これらに限定されない。
【００１７】
本明細書で用いられるように、分離された実行環境１４とは、クライアントプラットフォーム１２のＯＳおよび／またはＢＩＯＳが、分離された実行環境１４の存在に気付かない（例えば、分離された実行環境１４がＯＳおよびＢＩＯＳから隠されている）ようにクライアントプラットフォーム１２の残りとは独立してセキュアに分離されてコードを実行するよう構成された実行環境を意味することが意図されている。セキュア環境は、ホストプロセッサおよび／またはＯＳによって書き込み可能ではないメモリにセキュリティエンジンファームウェアを格納することにより確立され得る。そのようなものとして、分離された実行環境１４はさらに、クライアントプラットフォーム１２の残り（例えば、ホストチップセット４０）で実行されるソフトウェアが、コード記憶領域、または分離された実行環境１４で実行される実行コードを変更する、修正する、読み取る、または或いは影響を与えることになる動作を実行することを防ぐよう構成される。分離された実行環境１４の例には、プラットフォーム１２の残りのハードウェアとは独立した専用ハードウェア、または、ブラウザアプリケーション１６をホストするＯＳとは別個の専用仮想マシン（ＶＭ）が含まれるが、これらに限定されない。例えば、本開示と共に用いられ得る、本開示に係る分離された実行環境１４の一実施形態には、Ｉｎｔｅｌ（商標）Ｍａｎａｇｅｍｅｎｔ  Ｅｎｇｉｎｅ（Ｉｎｔｅｌ（登録商標）ＭＥ）が含まれるが、これに限定されない。
【００１８】
本明細書においてより詳細に説明されるように、分離された実行環境１４は、ユーザを証明する（例えば、特定のユーザが存在し、クライアントプラットフォーム１２を動作させていると判断する）よう構成され、権限を与えられていないアクセスから秘密情報を保護し得る（例えば、オペレーティングシステム４８からの、および／または、クライアントプラットフォーム１２で実行される何らかの悪意のあるソフトウェア（示されず）からの秘密情報へのアクセスを防ぎ得る）。分離された実行環境１４は、証明モジュール５４、セキュリティモジュール／エンジン５６、セキュアネットワークモジュール５８、および／または、セキュアグラフィックモジュール６０を含む。特に、証明モジュール５４は、ユーザと分離された実行環境１４（例えば、セキュリティエンジン５６）との間で証明されたセッションを確立する（つまり、特定のユーザが存在し、クライアントプラットフォーム１２を動作させていることを確認する）よう構成され得る。例えば、証明モジュール５４は、ユーザにより入力された証明情報を受信するよう構成され得る。証明情報は、ユーザ名、パスワード／コード、バイオメトリック情報（例えば、網膜スキャン、指紋スキャン、またはその他）、（例えば、スマートカード、チップカード、集積回路カード、またはその他に格納された）デジタル情報などを含み得るが、これらに限定されない。任意選択的に、セキュアグラフィックモジュール６０は、表示デバイス４４での出力のために、グラフィックスタック５２および／またはグラフィック回路３４を用いてセキュア画像を生成し得る。セキュア画像は、クライアントプラットフォーム１２のエンドユーザのみが表示デバイス４４で読み取ることが出来るランダムなパターンを含み得る。その後、ユーザは、パターン（つまり、証明情報）を証明モジュール５４へ入力し得る。証明情報が、（例えば、セキュア記憶装置３８に格納された）分離された実行環境１４に関連するデータに対応する（例えば合致する）場合、証明モジュール５４は、ユーザと分離された実行環境１４（例えば、セキュリティモジュール／エンジン５６）との間で証明されたセッションを確立し得る。
【００１９】
証明モジュール５４は、分離された実行環境１４に関連する新たなユーザアカウントを作成するようにも構成され得る。特に、証明モジュール５４は、新たなユーザアカウントを作成するようアクセスを認めるために、（例えばＩ／Ｏ回路３６を用いて）セキュリティデータを入力するようユーザに要求し得る。その後、証明モジュール５４は、セキュリティデータと分離された実行環境１４（例えばセキュア記憶装置３８）内に格納されたデータとを比較し、セキュリティデータが合致した場合、証明モジュール５４は新たなユーザアカウントを作成し得る。ユーザは、セキュア記憶装置３８に格納され得ユーザアカウントと関連し得る、ユーザについての秘密情報を（例えばＩ／Ｏ回路３６を用いて）入力し得る。
【００２０】
実際には、ブラウザアプリケーション１６がリモートアプリケーション２０に関連するログインフォームを検出または識別した場合、ログインプロセスは、ブラウザアプリケーション１６から、分離された実行環境１４（例えばセキュリティエンジン５６）へオフロードされる。例えば、リモートサーバー２２で実行されるリモートアプリケーション２０の位置（例えば、ウェブサイトのＵＲＬ）、部分的に処理されたリクエストメッセージ（例えば、ＨＴＴＰ  ＰＯＳＴリクエストメッセージでなどであるが、これに限定されない部分的に処理されたＨＴＴＰリクエストメッセージ）、および全ての必要なリモートアプリケーション／リモートサーバー情報（秘密データを例外とする）は、（例えばブラウザアプリケーション１６から）セキュリティエンジン５６へ送信され得る。インタフェースが、セキュリティエンジン５６とブラウザアプリケーション１６との間の通信を可能とすべく提供され得る。インタフェースの一例には、ホストに組み込まれたコントローラインタフェース（ＨＥＣＩ）バスが含まれ得る。ＨＥＣＩバスは、Ｈｏｓｔ  ＯＳ４８および／またはブラウザアプリケーション１６が、分離された実行環境１４（例えばセキュリティエンジン５６）と直接通信を行うことを可能とする。バスは、Ｈｏｓｔ  ＯＳ４８／ブラウザアプリケーション１６および分離された実行環境１４がシステム管理情報およびイベントを規格に準拠したやり方で通信出来るよう構成された双方向性の可変データレートバスを含み得る。代替的に、システム管理バス（ＳＭＢｕｓ）が用いられ得る。
【００２１】
本明細書で説明されるように分離された実行環境１４と証明されたセッションが確立された後、セキュリティエンジン５６は、リモートアプリケーション２０に関連するログインフォームが、分離された実行環境１４のユーザアカウントに現在登録されているか否かを識別／判断し得る。例えば、セキュリティエンジン５６は、セキュア記憶装置３８内で、リモートアプリケーション２０および／またはリモートサーバー２２に関連するユーザの秘密データを（例えばウェブサイトのＵＲＬを用いて）検索し得る。セキュア記憶装置３８は、ユーザの秘密データとリモートアプリケーション２０とをそれぞれが関連付ける１または複数のユーザプロフィールデータベース、および／または、リモートサーバー２２（例えばウェブサイトのＵＲＬ）を含み得る。
【００２２】
リモートアプリケーション２０に関連するログインフォームが、分離された実行環境１４内のユーザアカウントに現在登録されていない場合、セキュリティエンジン５６は、リモートアプリケーション２０に関連するログインフォームを登録するようユーザに提案し得る。ユーザが、リモートアプリケーション２０に関連するログインフォームを登録することを決定した場合、ユーザは（例えば、秘密データをブラウザアプリケーション１６へ入力することにより）リモートアプリケーション２０に関連する秘密データを入力し得、セキュリティエンジン５６は、（例えば、ブラウザアプリケーション１６がリモートアプリケーション２０へのログインの成功を検出した後に）セキュア記憶装置３８内のユーザプロフィールデータベースに秘密データを格納し得る。
【００２３】
リモートアプリケーション２０に関連するログインフォームが既に、分離された実行環境１４内のユーザアカウントに登録されていた場合、セキュリティエンジン５６は、例えばリクエストメッセージがネットワークスタック５０へ送信される前に、ブラウザアプリケーション１６により生成されるリクエストメッセージ（例えばＨＴＴＰリクエストメッセージ）を捕捉するよう構成され得る。その後、セキュリティエンジン５６はリモートアプリケーション２０のログインに関連する（セキュア記憶装置３８内のユーザプロフィールに格納された）エンドユーザの秘密データでメッセージリクエストをポピュレートし得、（秘密データを含む）ポピュレートされたメッセージリクエストをリモートアプリケーション２０へ送信し得る。
【００２４】
任意選択的に、セキュアネットワークモジュール５８は、例えばネットワークスタック５０およびネットワーク回路３２を用いて、リモートサーバー２２上のリモートアプリケーション２０と（例えば、インターネット上で通信セキュリティを提供する１または複数の暗号プロトコルを用いて）セキュア通信パイプ／リンクを確立し得る。セキュア通信パイプ／リンクは、セキュアソケット層（ＳＳＬ）、トランスポート層セキュリティ（ＴＬＳ）、および／または、ハイパーテキストトランスファープロトコルセキュア（ＨＴＴＰＳ）、セキュアハイパーテキストトランスファープロトコル（Ｓ−ＨＴＴＰ）、またはその他を含み得るが、これらに限定されない。
【００２５】
ログイン情報（例えば秘密データ）が有効である場合、リモートアプリケーション２０／リモートサーバー２２はセッションクッキーを生成し、メッセージ応答（例えば、ＨＴＴＰセットクッキーヘッダーを用いるＨＴＴＰ応答）内でセッションクッキーを送信する。ログインの成功に応答して、セキュリティエンジン５６はリモートサーバー２２からセッションクッキーを受信し得、（セッションクッキーを含む）コントロールをブラウザアプリケーション１６へ戻し得る。その後、ブラウザアプリケーション１６は、提供されたセッションクッキーによりウェブサイトのクッキー情報を更新し得、ＨＴＴＰリクエストの処理を完了し得（例えば、リダイレクトリクエストを処理し得る、およびＨＴＭＬコンテンツをロードし得る）、通常通りに機能し得る。したがってユーザは、通常通りに、証明されたブラウジングセッションにより、かつ何ら秘密データを入力する必要なくリモートアプリケーション２０およびリモートサーバー２２のブラウジングを継続し得る。
【００２６】
任意選択的に、ログインプロセスを要求する、認識されたウェブサイト（つまり、ユーザアカウントに関連するリモートアプリケーション２０）へ入ろうとユーザがブラウジングするときはいつでも、ブラウザアプリケーション１６はこの状況を検出し、セキュリティエンジン５６がユーザ照合および／または認証を実行するようトリガーする。特に、セキュリティエンジン５６は、ユーザ証明するよう、および／または、ユーザが依然として存在することを確認するため情報を入力するようユーザに要求するよう構成され得る。例えば、本明細書で説明されるように、セキュリティエンジン５６は証明モジュール５４および／またはセキュアグラフィックモジュール６０に、ユーザが入力しなければならないランダムなパターンを生成させ得る。またセキュリティエンジン５６は証明モジュール５４に、ユーザを証明するためのデータ（例えば、バイオメトリックデータ、パスワード、スマートカード／回路、またはその他）を入力するようユーザに要求させ得る。セキュリティエンジン５６は定期的および／またはランダムに、ユーザ照合および／または認証を要求するようにも構成され得る。
【００２７】
ここで図３を参照すると、本開示の一実施形態に係る方法３００の動作のフローチャートが一般的に図示されている。方法３００は、ユーザが、分離された実行環境と証明されたセッションを確立した後に実行され得る。特に、ユーザは、ブラウザアプリケーションを用いて、リモートサーバーに関連するログインページを有するウェブサイトを開き得る（動作３１０）。その後、ブラウザアプリケーションは、ログインプロセスを検出し得（動作３１２）、その後、ログインプロセスをセキュリティエンジンへオフロードし得る。例えば、ブラウザアプリケーションは、ログインリクエスト（例えば、ＵＲＬ、例えばＨＴＴＰ  ＰＯＳＴである部分的に処理されたＨＴＴＰリクエストメッセージなど）をセキュリティエンジンへ送信し得る（動作３１４）。セキュリティエンジンは任意選択的に、ユーザ照合を実行し得る。
【００２８】
ログインリクエストを受信すると、セキュリティエンジンはセキュア記憶装置内を検索し、リモートアプリケーション／リモートサーバーが、セキュア記憶装置に格納されたユーザプロフィールに関連するか否かを判断し、判断の結果が肯定的な場合、リモートアプリケーション／リモートサーバーに関連する何らかの秘密情報を識別し得る（動作３１６）。リモートアプリケーション／リモートサーバーに関連するユーザプロフィールをセキュリティエンジンが識別した場合、セキュリティエンジンは、関連する秘密データでログイン要求メッセージ（例えばＨＴＴＰリクエスト）をポピュレートする（動作３１８）。任意選択的に、セキュアネットワークモジュールは、リモートアプリケーション／リモートサーバーと、セキュアチャネル（例えばＳＳＬセッション）を確立する（動作３２０）。セキュリティエンジンは、（例えば、ＳＳＬ（例えばＨＴＴＰＳ）内でＨＴＴＰペイロードを送信する間）ポピュレートされた（秘密データを含む）リクエストメッセージをリモートアプリケーション／リモートサーバーへ送信する（動作３２２）。
【００２９】
ログイン情報（例えば秘密データ）が有効な場合、リモートアプリケーション／リモートサーバーはセッションクッキーを生成し、応答（例えば、ＨＴＴＰセットクッキーヘッダーを用いるＨＴＴＰ応答）内でセッションクッキーを送信し、ユーザはログインさせられる（動作３２４）。セキュリティエンジンはＨＴＴＰ応答をブラウザアプリケーションへ転送し得る（動作３２６）。その後、ブラウザアプリケーションは提供されたセッションクッキーによりクッキー情報を更新し得（動作３２８）、ＨＴＴＰ応答の処理を完了する（例えば、リダイレクトリクエストを処理する、ＨＴＭＬコンテンツをロードするなど）（動作３３０）。したがってブラウザアプリケーションは、リモートアプリケーション／リモートサーバーへログインさせられ、ユーザは証明されたユーザとして通常通りブラウジングを継続し得る（動作３３２）。
【００３０】
図４を参照すると、本開示の一実施形態に係る、リモートアプリケーション／リモートサーバーの参加／登録のための方法４００の動作のフローチャートが一般的に図示されている。方法４００は、ユーザが、分離された実行環境と証明されたセッションを確立した後に実行され得る。特に、ユーザはブラウザアプリケーションを用いてリモートサーバーに関連するウェブサイトのログインページへナビゲートし得る（動作４１０）。その後、ブラウザアプリケーションは、ログインプロセスを検出し得（動作４１２）、その後、ログインプロセスをセキュリティエンジンへオフロードし得る。例えば、ブラウザアプリケーションは、どのウェブページがセキュリティエンジンに以前に既に「登録」されたかを追跡するよう構成され得る。ユーザがログインページにアクセスする場合、ウェブブラウザは、秘密情報が以前に登録されたか否かをチェックし得る。しかし、少なくとも１つの実施形態によると、ブラウザアプリケーションは実際の情報へアクセス出来ないかもしれず、代わりに、ブラウザアプリケーションは、秘密情報がウェブページに関連するか否かを判断するよう構成され得る。秘密情報がウェブページに関連しないとブラウザアプリケーションが判断した場合、ブラウザアプリケーションはユーザにログイン情報を入力するようリクエストするであろう。その後、秘密情報は、セキュリティエンジンにより格納され得る（例えば、以下に説明される動作４２２を参照）。
【００３１】
代替的に、ログインページの検出に応答して、ブラウザアプリケーションはログインリクエスト（例えば、ＵＲＬ、例えばＨＴＴＰ  ＰＯＳＴである部分的に処理されたＨＴＴＰリクエストメッセージなど）をセキュリティエンジンへ送信し得る（動作４１４）。セキュリティエンジンは任意選択的に、ユーザ照合を実行し得る。ログインリクエストの受信に応答して、セキュリティエンジンはセキュア記憶装置を検索して、リモートアプリケーション／リモートサーバーが、セキュア記憶装置内に格納されたユーザプロフィールに関連するか否かを判断する（動作４１６）。セキュリティエンジンがリモートアプリケーション／リモートサーバーに関連するユーザプロフィールを識別しない場合、または、ユーザが、リモートアプリケーション／リモートサーバーに関連する秘密データを修正または更新することを決定した場合（動作４１８）、セキュリティエンジンは、本明細書で説明されるようにユーザ照合を実行し得る（動作４２０）。ユーザは、リモートアプリケーション／リモートサーバーに関連する秘密データを入力し得る（動作４２２）。ブラウザアプリケーションは、秘密データをリモートアプリケーション／リモートサーバーへ送信し得、ログインが成功だったか否かを検出し得る（動作４２４）。
【００３２】
セキュリティエンジンは、リモートアプリケーション／リモートサーバーに関連する秘密データをセキュア記憶装置のユーザプロフィールに格納し得る（動作４２６）。したがってブラウザアプリケーションは、リモートアプリケーション／リモートサーバーへログインさせられ得、ユーザは証明されたユーザとして通常通りブラウジングを継続し得る（動作４２８）。
【００３３】
図３および４は様々な実施形態に係る方法動作を図示しているが、何らかの実施形態において、これらの動作の全てが必要ではないことを理解されよう。実際、本明細書においては、本開示の他の実施形態において、図３および４に示される動作が図面のうちいずれにも詳細に示されないやり方で組み合わせられ得、依然として本開示に完全に一致し得ることが完全に予期されている。したがって、正確には１つの図面に示されていない特徴および／または動作に関連する請求項が、本開示の範囲および内容に含まれるものと見なされる。
【００３４】
したがって、本開示の少なくとも１つの実施形態に係るシステムおよび方法は、ユーザおよびリモートアプリケーション／リモートサーバー（例えばウェブサイト）が、既存のユーザ名／パスワードベースの証明方法を継続して用いることを可能とし得る。他の技術と異なり、本開示の少なくとも１つの実施形態に係るシステムおよび方法は、例えばユーザがアクティブにブラウザアプリケーションを用いている間であっても、任意の時点においてマルウェアから秘密データ（例えばパスワードなど）を保護し得る。本開示の少なくとも１つの実施形態に係るシステムおよび方法は、他のアプリケーション（例えば、ＯＳまたは他のアプリケーション）が秘密データにアクセスする（例えば、読み取る、および／または、書き込む）ことを防ぎ得、ユーザが許可する、リモートアプリケーション／リモートサーバーに関連する関連する秘密データのみを（例えば、セキュアＨＴＴＰＳセッションを用いて）リリースし得る。
【００３５】
本開示の少なくとも１つの実施形態に係るシステムおよび方法は、分離された実行環境が秘密データへのアクセスを認めるためにユーザ証明／認証を提供し得る。ユーザ証明／認証は、パスワード、プライベート識別番号、バイオメトリックデータ、ランダムなパターン、および／またはその他などの入力を含み得る。また本開示の少なくとも１つの実施形態に係るシステムおよび方法は、ブラウザアプリケーション内でセキュア環境を確立する必要性を取り除き得、むしろ代わりに、市販のブラウザアプリケーションおよびＯＳのネットワーキング機能を利用して、ブラウザベースのログインフローのセキュリティおよび有用性を向上させ得る。
【００３６】
本明細書に説明される方法の実施形態は、１または複数のプロセッサにより実行された場合に方法を実行する命令を個別に、または組み合わせで格納した１または複数の格納媒体（例えば、有形の機械可読媒体）を含むシステムで実装され得る。ここでプロセッサには、例えば、システムＣＰＵ（例えばコアプロセッサ）および／またはプログラム可能回路が含まれ得る。したがって、本明細書に説明される方法に係る動作は、いくつかの異なる物理的な位置における処理構造など、複数の物理的デバイスに分散され得ることが意図されている。また、当業者には理解されるように、方法動作は、個別に、またはサブコンビネーションで実行され得ることが意図されている。したがって、フローチャートのうちそれぞれの動作の全てが実行される必要はなく、当業者には理解されるように本開示は、そのような動作の全てのサブコンビネーションが可能とされることを明示的に意図している。
【００３７】
本明細書に説明された特定の実施形態は、コンピュータにより実行された場合に、本明細書に説明される方法および／または動作を当該コンピュータに実行させるコンピュータ実行可能命令を格納した有形の機械可読媒体として提供され得る。有形のコンピュータ可読媒体には、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク書き換え可能（ＣＤ−ＲＷ）、および光磁気ディスクを含む何らかのタイプのディスク、読み取り専用メモリ（ＲＯＭ）などの半導体デバイス、ダイナミックおよびスタティックＲＡＭ、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリなどのランダムアクセスメモリ（ＲＡＭ）、磁気カードまたは光カード、または、電子命令を格納するのに適した何らかのタイプの有形の媒体が含まれ得るが、これらに限定されない。コンピュータには、何らかの適した処理プラットフォーム、デバイス、またはシステム、コンピューティングプラットフォーム、デバイス、またはシステムが含まれ、ハードウェアおよび／またはソフトウェアの何らかの適した組み合わせを用いて実装され得る。命令には、何らかの適したタイプのコードが含まれ得、何らかの適したプログラミング言語を用いて実装され得る。
【００３８】
本明細書におけるいずれかの実施形態で用いられる「モジュール」という用語は、述べられた動作を実行するよう構成されたソフトウェア、ファームウェア、および／または回路を指す。ソフトウェアは、ソフトウェアパッケージ、コードおよび／または命令セットまたは複数ンの命令として実装され得、本明細書におけるいずれかの実施形態で用いられる「回路」は例えば単体で、または何らかの組み合わせで、ハードウェアにより実現されている回路、プログラム可能回路、状態機械回路、および／または、プログラム可能回路により実行される命令を格納したファームウェアを含みうる。モジュールは総体的または個別に、例えば集積回路（ＩＣ）、システムオンチップ（ＳｏＣ）などのより大きなシステムの一部を形成する回路として実装され得る。
【００３９】
いくつかの請求項の要素には明確とすべく名前が付されているかもしれないが、いくつかの実施例においては請求項の要素の実装順序は変更されうることが理解されよう。
【００４０】
したがって一実施形態において、本開示は装置を提供し、装置は分離された実行環境を含み、分離された実行環境は、リモートサーバーで実行されるリモートアプリケーションにより生成されるログイン要求メッセージをブラウザアプリケーションから受信し、セキュア記憶装置に格納され、リモートアプリケーションに関連する秘密情報を識別し、識別された秘密データでログイン要求メッセージをポピュレートし、ポピュレートされたログイン要求メッセージをリモートアプリケーションへ送信し、ログインの成功に応答して、リモートアプリケーションからログイン応答メッセージを受信し、ログイン応答メッセージをブラウザアプリケーションへ送信するよう構成され、分離された実行環境だけが、セキュア記憶装置の読み取りおよび書き込みを行える。
【００４１】
他の実施形態において、本開示はシステムを提供し、システムは、ブラウザアプリケーション、ハードウェア環境、秘密データを格納するよう構成されたセキュア記憶装置、および分離された実行環境を含む。ブラウザアプリケーションは、ネットワークを介したリモートサーバーで動作するリモートアプリケーションに関連するログインを検出し、ログインをオフロードするよう構成される。ハードウェア環境は、ブラウザアプリケーションを実行するよう構成された少なくとも１つのプロセッサと、リモートサーバー上のリモートアプリケーションと通信リンクを確立するよう構成されたネットワーク回路とを含む。分離された実行環境は、ハードウェア環境とは独立してセキュアに分離されてコードを実行するよう構成される。分離された実行環境はさらに、リモートアプリケーションにより生成されるログイン要求メッセージをブラウザアプリケーションから受信し、セキュア記憶装置に格納され、リモートアプリケーションに関連する秘密情報を識別し、識別された秘密データでログイン要求メッセージをポピュレートし、ポピュレートされたログイン要求メッセージをリモートアプリケーションへ送信し、ログインの成功に応答して、リモートアプリケーションからログイン応答メッセージを受信し、ログイン応答メッセージをブラウザアプリケーションへ送信するよう構成され、分離された実行環境だけが、セキュア記憶装置の読み取りおよび書き込みを行える。
【００４２】
さらに他の実施形態において、本開示は方法を提供し、方法は、ネットワークを介したリモートサーバーで動作するリモートアプリケーションにより生成されるログイン要求メッセージを、分離された実行環境においてブラウザアプリケーションから受信する段階と、分離された実行環境によってのみアクセス可能なセキュア記憶装置に格納され、リモートアプリケーションに関連する秘密情報を識別する段階と、識別された秘密データでログイン要求メッセージをポピュレートする段階と、ポピュレートされたログイン要求メッセージを分離された実行環境からリモートアプリケーションへ送信する段階と、ログインの成功に応答して、リモートアプリケーションからログイン応答メッセージを受信する段階と、ログイン応答メッセージを分離された実行環境からブラウザアプリケーションへ送信する段階とを含む。
【００４３】
またさらに他の実施形態において、本開示は少なくとも１つのコンピュータアクセス可能媒体を提供し、少なくとも１つのコンピュータアクセス可能媒体は、分離された実行環境に関連するプロセッサにより実行されると、ネットワークを介したリモートサーバーで動作するリモートアプリケーションにより生成されるログイン要求メッセージをブラウザアプリケーションから受信する動作と、分離された実行環境によってのみアクセス可能なセキュア記憶装置に格納され、リモートアプリケーションに関連する秘密情報を識別する動作と、識別された秘密データでログイン要求メッセージをポピュレートする段階と、ポピュレートされたログイン要求メッセージをリモートアプリケーションへ送信する動作と、ログインの成功に応答して、リモートアプリケーションからログイン応答メッセージを受信する動作と、ログイン応答メッセージをブラウザアプリケーションへ送信する動作とを含む動作が実行されることになる命令を格納している。
【００４４】
本明細書において採用されてきた用語および表現は、説明の用語として用いられ、制限する用語として用いられていない。そのような用語および表現を用いるにあたり、示され説明された特徴の同等物（またはその一部）を除外することは意図されておらず、様々な修正が請求項の範囲内で可能であるものと認識される。したがって、請求項はそのような同等物の全てを網羅することが意図されている。様々な特徴、態様、および実施形態が本明細書において説明されてきた。当業者には理解されるように、特徴、態様、および実施形態は互いに組み合わせが可能であり、かつ変更および修正が可能である。したがって本開示は、そのような組み合わせ、変更、および修正を包含するものと見なされるべきである。
【図１】
0005904616.tif 000002
【図２】
0005904616.tif 000003
【図３】
0005904616.tif 000004
【図４】
0005904616.tif 000005