(57)【要約】  ユーザオペレーティングシステム（ＯＳ）１２及びサービスＯＳ１４に通信結合された仮想マシンマネージャ（ＶＭＭ）１６を備える仮想ユーザ認証システム１０。ＶＭＭ１６は、ユーザＯＳ１２上で実行されるアプリケーション２０を宛先とするキーストローク入力を受け取って、当該キーストローク入力をサービスＯＳ１４へ通信するように構成され、当該キーストローク入力は、サービスＯＳ１４によって処理される。【選択図】図１
2009545065.tif 000002
【特許請求の範囲】
【請求項１】
仮想ユーザ認証システム（１０）であって、
ユーザオペレーティングシステム（ＯＳ）（１２）及びサービスＯＳ（１４）に通信結合された仮想マシンマネージャ（ＶＭＭ）（１６）
を備え、
該ＶＭＭ（１６）は、前記ユーザＯＳ（１２）上で実行されるアプリケーション（２０）を宛先とするキーストローク入力を受け取って、該キーストローク入力を前記サービスＯＳ（１４）へ通信するように構成され、
該キーストローク入力は、該サービスＯＳ（１４）によって処理される
仮想ユーザ認証システム。
【請求項２】
前記ユーザＯＳ（１２）上に配置され、前記アプリケーション（２０）への前記キーストローク入力を取り出す（retrieve）ように構成されているキーストロークエージェント（７０）
をさらに備える請求項１に記載の仮想ユーザ認証システム。
【請求項３】
前記サービスＯＳ（１４）は、前記キーストローク入力が、セキュリティの影響を受けるクレデンシャル（credential）に関連付けられているか否かを判断するように構成されている
請求項１に記載の仮想ユーザ認証システム。
【請求項４】
前記サービスＯＳ（１４）は、前記キーストローク入力が、セキュリティの影響を受けるクレデンシャルに関連付けられている場合に、該キーストローク入力の文字（character）に対応する任意のプレースホルダ（placeholder）文字を生成するように構成されている
請求項１に記載の仮想ユーザ認証システム。
【請求項５】
前記任意のプレースホルダ文字は、前記ユーザＯＳ（１２）の仮想キーボードドライバ（６０）へ通信される
請求項４に記載の仮想ユーザ認証システム。
【請求項６】
前記ユーザＯＳ（１２）上に配置され、前記キーストローク入力に関連付けられる終了文字（termination character）が入力されたとの判断に応答して該キーストローク入力を取り出すように構成されているキーストロークエージェント（７０）
をさらに備える請求項１に記載の仮想ユーザ認証システム。
【請求項７】
仮想マシンマネージャ（ＶＭＭ）（１６）において、ユーザオペレーティングシステム（ＯＳ）（１２）上で実行されるアプリケーション（２０）を宛先とするキーストローク入力を受け取ることと、
前記ＶＭＭ（１６）からの前記キーストローク入力をサービスＯＳ（１４）へ送ることと、
前記キーストローク入力を前記サービスＯＳ（１４）によって処理することと
を含む仮想ユーザ認証方法。
【請求項８】
前記キーストローク入力が、セキュリティの影響を受けるクレデンシャルに関連付けられているか否かを前記サービスＯＳ（１４）によって判断すること
をさらに含む請求項７に記載の仮想ユーザ認証方法。
【請求項９】
前記キーストローク入力がセキュリティクレデンシャルに関連付けられている場合に、該キーストローク入力の文字に対応する任意のプレースホルダ文字を前記サービスＯＳ（１４）によって生成すること
をさらに含む請求項７に記載の仮想ユーザ認証方法。
【請求項１０】
前記任意のプレースホルダ文字を前記ユーザＯＳ（１２）の仮想キーボードドライバ（６０）へ送ること
をさらに含む請求項９に記載の仮想ユーザ認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ユーザ認証システム及び仮想ユーザ認証方法に関する。
【背景技術】
【０００２】
コンピューティングプラットフォームのユーザは、通例、そのユーザに関連付けられる１つ又は複数のセキュリティクレデンシャル（credential）（たとえば、ユーザ名、パスワード、個人識別番号（ＰＩＮ）等）の有効性を確認することによって認証される。
認証情報は、暗号トークン又はスマートカードと組み合わせて使用されて、ユーザのセキュリティ及び真性さを強化するための多要素認証を提供することもできる。
しかしながら、メモリスキャン及びキーストロークロギング又はこれらのいずれか（メモリスキャン及び／又はキーストロークロギング）を行うさまざまなプログラムが存在する。
したがって、セキュリティクレデンシャルは、（たとえば、セキュリティ強化された（security-hardened）暗号トークン又はスマートカードにアクセスするのに使用されるとき）セキュリティ侵害（compromise）の影響を受けやすい。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明にかかる仮想ユーザ認証システム（１０）は、ユーザオペレーティングシステム（ＯＳ）（１２）及びサービスＯＳ（１４）に通信結合された仮想マシンマネージャ（ＶＭＭ）（１６）を備え、該ＶＭＭ（１６）は、前記ユーザＯＳ（１２）上で実行されるアプリケーション（２０）を宛先とするキーストローク入力を受け取って、該キーストローク入力を前記サービスＯＳ（１４）へ通信するように構成され、該キーストローク入力は、該サービスＯＳ（１４）によって処理される。
【０００４】
次に、本発明及びその利点のより完全な理解のために、添付図面に関して取り入れられた以下の説明を参照する。
【図面の簡単な説明】
【０００５】
【図１】本発明による仮想ユーザ認証システムの一実施形態を示す図である。
【図２Ａ】本発明による仮想ユーザ認証方法の一実施形態を示すフロー図である。
【図２Ｂ】本発明による仮想ユーザ認証方法の一実施形態を示すフロー図である。
【図３】本発明による仮想ユーザ認証システムの別の実施形態を示す図である。
【発明を実施するための形態】
【０００６】
本発明の好ましい実施形態及びその利点は、図面の図１〜図３を参照することによって最も良く理解される。同じ数字は、さまざまな図面の同じ対応する部分について使用されている。
【０００７】
図１は、本発明による仮想ユーザ認証システム１０の一実施形態を示す図である。
図１に示す実施形態では、システム１０は、ユーザオペレーティングシステム（ＯＳ）１２と、サービスＯＳ１４と、仮想マシンマネージャ（ＶＭＭ）１６とを備える。
ＶＭＭ１６は、パーティション化されたメモリ空間上に配置されたユーザＯＳ１２及びサービスＯＳ１４のそれぞれに対するハードウェアインターフェースを仮想化するためのソフトウェアレイヤを備える。
図１に示す実施形態では、オペレーティングシステムの２つのインスタンスが、ＶＭＭ１６によってインターフェースされるものとして示されている。
しかしながら、より多くの数のオペレーティングシステムをＶＭＭ１６を使用して仮想化することができることが理解されるべきである。
【０００８】
図１に示す実施形態では、ユーザＯＳ１２は、コンピューティングプラットフォームのユーザがさまざまなアプリケーション２０にアクセスし且つ／又はさまざまなアプリケーション２０をその他の方法で利用するために利用される１次オペレーティングシステムであるように構成される。このさまざまなアプリケーション２０は、ワープロアプリケーション、インターネットブラウザまたは財務管理アプリケーション等であるが、これらに限定されるものではない。
【０００９】
サービスＯＳ１４は、キーボード／キーストローク入力デバイス３０から受け取られた、アプリケーション（複数可）２０を宛先とする（たとえば、その特定のアプリケーション２０に情報を提供するために入力されている）キーストロークを処理するのに使用される。
たとえば、サービスＯＳ１４は、ＶＭＭ１６及びユーザＯＳ１２上に存在するキーストロークエージェント７０とインターフェースして、ユーザによる特定のキーストローク入力が、特定のアプリケーション２０の、セキュリティの影響を受けるクレデンシャル（security sensitive credential）（たとえば、ユーザ名、パスワード、個人識別番号（ＰＩＮ）、社会保障番号、又はセキュリティが関心事である他のタイプの情報）に関連付けられているか否かを判断するように構成されている。
サービスＯＳ１４は、特定のアプリケーション２０に対応するキーストローク入力を処理し、ユーザＯＳ１２のキーボード／入力プロトコルスタックに関連付けられ且つ／又は該キーボード／入力プロトコルスタックとその他の方法で統合され得るキーストロークロガー及び／又はスキャンアプリケーションにユーザの実際のキーストローク入力が提示されないように特定のアプリケーション２０にキーストローク入力を提供することを容易にし、それによって、ユーザ認証及び／又はセキュリティクレデンシャルのセキュリティを高める。
【００１０】
図１に示す実施形態では、ＶＭＭ１６は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせで構成することができる仮想キーボードドライバ３２を備える。
仮想キーボードドライバ３２は、キーボード／キーストローク入力デバイス３０から入力を受け取り、そのキーストローク入力をサービスＯＳ１４へ通信する（キーボード／キーストローク入力デバイス３０からの入力は、図１では、キーストローク入力４０として特定されている）。
したがって、動作中、ユーザＯＳ２０上に存在し且つ／又はユーザＯＳ２０上でその他の方法で実行される特定のアプリケーション２０を宛先とする、キーボード／キーストローク入力デバイス３０からの入力は、ＶＭＭ１６によってインターセプト（intercept）され、代わりにサービスＯＳ１４へ送られる。
【００１１】
図１では、サービスＯＳ１４は、物理キーボードドライバ５０と、フィルタドライバ５２と、キーストロークバッファ５４とを備える。
物理キーボードドライバ５０及びフィルタドライバ５２は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組み合わせで構成することができる。
物理キーボードドライバ５０は、ＶＭＭ１６から受け取ったキーストローク入力４０を受け取り且つ／又はその他の方法で処理する。
フィルタドライバ５２は、物理キーボードドライバ５０及び／又はアプリケーション２０とインターフェースして、キーストローク入力４０がセキュリティクレデンシャルに関連付けられているか否かを判断する。
たとえば、本発明のいくつかの実施形態では、ユーザが、特定のアプリケーション２０及び／又は特定のアプリケーション２０に関連付けられる機能を起動し且つ／又はその他の方法で実行することに応答して、フィルタドライバ５２は、アプリケーション２０とインターフェースして、キーストローク入力４０がアプリケーション２０のセキュリティクレデンシャル入力（たとえば、ユーザ名、パスワード、又は他のタイプのセキュリティクレデンシャルの入力ウィンドウ）に関連付けられているか否かを判断する。
キーストローク入力４０がセキュリティクレデンシャルに関連付けられているとフィルタドライバ５２が判断する場合、フィルタドライバ５２は、キーストローク入力４０を形成する文字（character）に対応する任意の又は種々雑多なプレースホルダ（placeholder）文字列を生成する。
たとえば、キーストローク入力４０が、「ＢＬＤ１３５９」と定義されたパスワードを含む場合、フィルタドライバ５２は、キーストローク入力４０の文字のそれぞれについて、任意の文字を生成する。
したがって、この例では、フィルタドライバ５２は、「Ｐ＊＊＄＆Ｎ２」と定義された文字列を生成する場合がある。
任意のプレースホルダ文字は、所定の文字列（たとえば、すべてアスタリスク）又はランダムに生成された文字列で構成することができることが理解されるべきである。
【００１２】
任意のプレースホルダ文字は、図１の矢印６２によって示されるように、ユーザＯＳ１２に関連付けられる仮想キーボードドライバ６０へフィルタドライバ５２によって送られる。
仮想キーボードドライバ６０は、フィルタドライバ５２から任意のプレースホルダ文字を受け取り、それがあたかもキーボード入力４０であるかのようにこの任意のプレースホルダ文字を処理する。
たとえば、仮想キーボードドライバ６０は、任意のプレースホルダ文字を、ユーザインターフェース及び／又は表示デバイス上の、アプリケーション２０に対応する入力ウィンドウ内に表示することができる。
しかしながら、少なくとも、セキュリティクレデンシャルに関連付けられるキーストローク入力４０については、キーストローク入力４０は、仮想キーボードドライバ６０によって受け取られず、且つ／又は、その他の方法で処理されないことが理解されるべきである。
したがって、仮想キーボードドライバ６０に結び付けられ且つ／又は仮想キーボードドライバ６０とその他の方法でインターフェースし得るキーストロークロガー及び／又はスキャナは、キーストローク入力４０へのアクセスが制限されていることになり且つ／又は全くアクセスすることができないことになる。
【００１３】
好ましくは、フィルタドライバ５２は、キーストローク入力４０もキーストロークバッファ５４内へバッファリングさせる。
図１では、ユーザＯＳ１２上に存在するキーストロークエージェント７０は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせで構成することができ、キーストローク入力４０の終了文字（termination character）がサービスＯＳ１４によって受け取られたことに応答して、フィルタドライバ５２及び／又はキーストロークバッファ５４とインターフェースする。
本明細書で使用されるように、キーストローク入力４０の終了文字は、一般に、標準的な「キャリッジリターン」（ＣＲ）文字がその後に続く特定のキーストローク入力の最後又は最終の文字、又は、ユーザがその他の方法で合図して（たとえば、「ＯＫ」ボタンをクリックする等）入力の終了を示したときの特定のキーストローク入力の最後又は最終の文字として定義される。
したがって、たとえば、「ＢＬＤ１３５９」と定義されたパスワードの場合、入力の終了は、文字が数字「９」であって、その後にキャリッジリターン（ＥＮＴＥＲキー）シーケンス又はアプリケーション内の動作の起動（たとえば、「ＯＫ」ボタンのクリック）が続くときに合図される。
キーストロークエージェント７０は、キーストローク入力４０の終了文字を受け取ったことに応答して、キーストロークバッファ５４とインターフェースして、キーストロークバッファ５４からキーストローク入力４０を自動的に取り出し（retrieve）、そのキーストローク入力４０が宛先とする特定のアプリケーション２０にキーストローク入力４０を提供する。
したがって、この例では、メモリロケーションをスキャンして、セキュリティクレデンシャルを決定し且つ／又はその他の方法で特定し得る期間は大幅に削減される。
上述した例では、キーストローク入力４０は、終了文字が受け取られるまで、キーストロークバッファ５４に記憶され且つ／又はバッファリングされる。
しかしながら、キーストローク入力４０は、キーストローク入力４０を宛先のアプリケーション２０に提供する前に、キーストローク入力４０のすべての文字をバッファリングすることなく処理され得ることも理解されるべきである。
たとえば、本発明のいくつかの実施形態では、キーストロークエージェント７０は、キーストローク入力４０の個々の文字及び／又は文字群を連続的且つ／又は定期的に取り出し、宛先のアプリケーションへこのようなキーストローク入力４０を提供するように構成され得る。
【００１４】
上述した実施形態では、フィルタドライバ５２は、キーストローク入力４０がセキュリティクレデンシャルに関連付けられている場合に、任意のプレースホルダ文字を生成する。
しかしながら、フィルタドライバ５２は、（たとえば、セキュリティクレデンシャルに関連付けられていようがいまいが）すべてのタイプのキーストローク入力４０について任意のプレースホルダ文字を生成して仮想キーボードドライバ６０へ送るように構成され得ることが理解されるべきである。
さらに、キーストローク入力４０がセキュリティクレデンシャルに関連付けられていない場合には、キーストローク入力４０を、仮想キーボードドライバ６０によって処理するために、仮想キーボードドライバ６０へ直接通信することができることも理解されるべきである。
【００１５】
図２Ａ及び図２Ｂは、本発明による仮想ユーザ認証方法の一実施形態を示すフロー図である。
この方法は、ブロック２００で開始する。ブロック２００において、キーストローク入力４０がＶＭＭ１６で受け取られる。
ブロック２０２において、仮想キーボードドライバ３２が、キーストローク入力４０をサービスＯＳ１４へ通信する。
判定ブロック２０４において、キーストローク入力４０がセキュリティクレデンシャル及び／又はセキュリティ関係アプリケーション２０に関連付けられているか否かの判断が行われる。
キーストローク入力４０がセキュリティクレデンシャル及び／又はセキュリティ関係アプリケーション２０に関連付けられていない場合、この方法はブロック２０６へ進む。
ブロック２０６において、フィルタドライバ５２は、キーストローク入力４０をユーザＯＳ１２の仮想キーボードドライバ６０へ送り且つ／又はその他の方法で通信する。
この方法はブロック２０８へ進む。ブロック２０８において、仮想キーボードドライバ６０は、受け取ったキーストローク入力４０を宛先のアプリケーション２０に提供する。
【００１６】
判定ブロック２０４において、キーストローク入力４０がセキュリティクレデンシャル及び／又はセキュリティ関係アプリケーション２０に関連付けられていると判断される場合、この方法はブロック２１０へ進む。
ブロック２１０において、フィルタドライバ５２は、任意の且つ／又は種々雑多なプレースホルダ文字を生成する。
ブロック２１２において、フィルタドライバ５２は、ユーザＯＳ１２の仮想キーボードドライバ６０へプレースホルダ文字を送り且つ／又はその他の方法で通信する。
ブロック２１４において、フィルタドライバ５２は、キーストローク入力４０をキーストロークバッファ５４内へバッファリングさせる。
【００１７】
判定ブロック２１６において、宛先のアプリケーション２０へのキーストローク入力４０の終了文字が入力されたか否か／受け取られたか否かの判断が行われる。
終了文字が、まだ入力されていない／受け取られていない場合、この方法はブロック２１４へ進む。
ブロック２１４において、キーストローク入力４０は、キーストロークバッファ５４内にバッファリングされ続ける。
判定ブロック２１６において、キーストローク入力４０の終了文字が入力された／受け取られたと判断される場合、この方法はブロック２１８へ進む。
ブロック２１８において、キーストロークエージェント７０は、キーストロークバッファ５４とインターフェースして、キーストロークバッファ５４からキーストローク入力４０を取り出し且つ／又はその他の方法で取得する。
ブロック２２０において、キーストロークエージェント７０は、キーストロークバッファ５４から取り出されたキーストローク入力４０を宛先のアプリケーション２０に提供する。
【００１８】
図１、図２Ａ、及び図２Ｂに関して図示して説明した実施形態では、キーストローク入力４０を処理することに関連付けられるさまざまなタイプの通信及び／又は機能が、サービスＯＳ１４とユーザＯＳ１２との間で直接実行される（たとえば、ユーザＯＳ１２のキーストロークエージェント７０によるサービスＯＳ１４のキーストロークバッファ５４との間の通信及び／又はキーストロークバッファ５４へのアクセス、サービスＯＳ１４のフィルタドライバ５２とユーザＯＳ１２の仮想キーボードドライバ６０との間の通信等）。
しかしながら、キーストローク入力４０の処理に関連付けられるさまざまなタイプの通信及び／又は機能は、サービスＯＳ１４とユーザＯＳ１２との間でＶＭＭ１６を介して処理され得、且つ／又はその他の方法で通信され得ることが理解されるべきである。
たとえば、本発明のいくつかの実施形態では、フィルタドライバ５２によって生成された任意の且つ／又は種々雑多なプレースホルダ文字が、サービスＯＳ１４によってＶＭＭ１６へ通信され、ＶＭＭ１６は、それら任意の且つ／又は種々雑多なプレースホルダ文字を仮想キーボードドライバ６０へ通信する。
さらに、たとえば、本発明のいくつかの実施形態では、バッファ５４に記憶されたキーストローク入力４０は、ＶＭＭ１６へ通信され、ＶＭＭ１６は、キーストロークエージェント７０とインターフェースして、実際のキーストローク入力４０を特定のアプリケーション２０に提供することを容易にする。
したがって、本発明のいくつかの実施形態では、ＶＭＭ１６は、キーストローク入力４０を処理するための異なるＯＳパーティション間の通信のゲートキーパ又はコントローラとして動作する。
【００１９】
図３は、本発明による仮想ユーザ認証システム１０の別の実施形態を示す図である。
図３では、（たとえば、セキュリティクレデンシャル入力の）任意のプレースホルダ文字を仮想キーボードドライバ６０へ送るための矢印６２によって示されるように、フィルタドライバ５２は、仮想キーボードドライバ６０と直接的に通信し且つ／又はインターフェースするように示されている。
図３に示す実施形態では、キーストローク入力が、セキュリティクレデンシャルに関連付けられていない場合、このような非セキュリティクレデンシャル入力は、矢印９０によって示されるように、サービスＯＳ１４からＶＭＭ１６へ通信して戻され、矢印９２によって示されるように、ＶＭＭ１６によってユーザＯＳ１２に提供される。
【００２０】
このように、キーストローク入力が宛先とするオペレーティングシステム上に存在し得るキーロガー又は他のタイプのキーストロークスキャンアプリケーション（たとえば、このようなオペレーティングシステム上で実行されるアプリケーション）が、キーストローク入力にほとんどアクセスすることができないか又は全くアクセスすることができないように、本発明の実施形態は、キーストローク入力を処理するためのバイバスメカニズムを提供する。
たとえば、本発明の実施形態は、キーストローク入力をインターセプトして、異なるオペレーティングシステム又はプラットフォームを通じてキーストローク入力を処理する仮想マシンマネージャを処理して利用する。
さらに、本発明の実施形態は、好ましくはキーストローク入力のすべてが受け取られるまで、バイパスオペレーティングシステムにキーストローク入力をバッファリングし、キーストローク入力のすべてが受け取られたときに、キーストローク入力は、取り出されて宛先のアプリケーションへロードされ、それによって、このようなキーストローク入力のメモリ空間をスキャンするのに利用可能な時間が大幅に削減される。
【符号の説明】
【００２１】
１２・・・ユーザＯＳ
１４・・・サービスＯＳ
１６・・・仮想マシンマネージャ
２０・・・アプリケーション
３０・・・キーボード／キーストローク入力デバイス
３２，６０・・・仮想キーボードドライバ
４０・・・キーストローク入力
５０・・・物理キーボードドライバ
５２・・・フィルタドライバ
５４・・・キーストロークバッファ
７０・・・キーストロークエージェント
【図１】
2009545065.tif 000003
【図２Ａ】
2009545065.tif 000004
【図２Ｂ】
2009545065.tif 000005
【図３】
2009545065.tif 000006
【国際調査報告】
2009545065.tif 000007
2009545065.tif 000008