説明

画像を直接レンダリングしてセキュアなメモリ領域で対応するユーザ入力と相関付ける方法およびシステム

【課題】キーボード、ポインティングデバイス等を介して入力するデータをマルウエアに曝さないようにする。
【解決手段】アプリケーションおよびビデオフレームバッファを、保護されたメモリ領域に割り当て、ビデオフレームバッファのランダムな位置に画像をレンダリングして、ポインティングデバイスからのユーザ入力を、レンダリングされたキーボード画像へ相関付ける方法およびシステムを開示する。キーボード画像は、ユーザ入力に続いてランダムに再配置されてよく、セキュアなユーザ画像の上にレンダリングされてよい。承認画像は、保護されたメモリ領域から、ビデオフレームバッファのランダムな位置にレンダリングされてよく、承認画像に相関付けられていないユーザ入力に応じてランダムに再配置されてよい。

【発明の詳細な説明】
【背景技術】
【0001】
電子支払取引情報等のユーザ機密情報が機械的なキーボードまたはポインティングデバイスを介してコンピュータシステムに入力されると、その情報は、コンピュータシステムに伝達される際またはコンピュータシステム内で、キーストロークまたは入力座標を記録しうるスパイウェア等のマルウェアに曝されることとなる。
【0002】
ユーザ機密情報の受信に関連付けられたアプリケーションプログラムもまた、スパイウェア等のマルウェアに曝される危険性がある。
【図面の簡単な説明】
【0003】
【図1】データ入力画像をレンダリングして、保護されたメモリ領域で、レンダリングされた画像とユーザ入力とを相関付ける例示的な方法の処理フローチャートである。
【0004】
【図2】図1の方法を呼び出して、ネットワーク接続を介して支払取引を行う例示的な方法の処理フローチャートである。
【0005】
【図3】ディスプレイのランダムな位置に画像をレンダリングして、ユーザ入力に続いてディスプレイの別のランダムな位置に該画像を再度レンダリングする例示的な方法の処理フローチャートである。
【0006】
【図4】セキュアなメモリ領域において、ユーザ画像の上に入力表示画像をレンダリングする例示的な方法の処理フローチャートである。
【0007】
【図5】ディスプレイのランダムな位置に承認画像をレンダリングする例示的な方法の処理フローチャートである。
【0008】
【図6】レンダリングされた画像に相関付けられていないユーザ入力の数が閾値を超えた場合に処理を中止する例示的な方法の処理フローチャートである。
【0009】
【図7】データ入力画像をレンダリングして、保護されたメモリ領域でユーザ入力とレンダリングされた画像とを相関付ける別の例示的な方法の処理フローチャートである。
【0010】
【図8】例示的なコンピュータ環境をグラフィックに示す図である。
【0011】
【図9】図8の例示的なコンピュータ環境に対応する例示的なロジックおよびデータのブロック図である。
【0012】
図面では、参照番号の左端の桁は、その参照番号を最初に利用する図面を示している。
【発明を実施するための形態】
【0013】
図1は、データ入力画像をレンダリングして、保護されたメモリ領域で、レンダリングされた画像とユーザ入力とを相関付ける例示的な方法100の処理フローチャートである。
【0014】
102で、アクセス保護されたメモリ領域をコンピュータシステム内に構成する。保護されたメモリ領域へのアクセスは1以上の規則に則り制限され、保護されたメモリ領域内のデータおよび命令への、領域外の処理からのアクセスを実質的に不可能とする。保護されたメモリ領域は、システムメモリ、グラフィックメモリ、およびこれらの組み合わせの1以上の部分を含んでよい。保護されたメモリ領域は、仮想マシン管理技術を含む、ソフトウェア、ハードウェア、およびこれらの組み合わせの制御下で構成および施行されてよい。
【0015】
104で、保護されたメモリ領域でアプリケーションを開始する。アプリケーションは、コンピュータシステムのプロセッサに、キーボード画像等のデータ入力画像をレンダリングさせ、保護されたメモリ領域で、後続のユーザ入力と該画像とを相関付けさせる命令を含むことができる。
【0016】
アプリケーションは、開始前に、ソフトウェア、ハードウェア、およびこれらの組み合わせにより認証されていてよく、トラステッドエグゼキューションテクノロジーを含みうるコード署名ハッシュ技術を含む1以上のハッシュ技術により認証されていてよい。
【0017】
アプリケーションは、セキュアなメモリ領域へロードされそこで認証されてよい。または、あるいはこれに加えて、アプリケーションまたはその一部が、トラステッド・エグゼキューション・テクノロジー・モジュールに関連するアクセス保護されたファームウェア等の別のセキュアなメモリ領域へロードされてもよい。
【0018】
アプリケーションを起動する対応オペレーティングシステムがルートキット、ウィルス、ウォーム、またはスパイウェア等により危険に曝されている場合であっても、保護されたメモリ領域およびアプリケーション認証が、単独で、または互いに組み合わせられることで、アプリケーションおよび、そのアプリケーションに関連付けられたコード、制御フロー、およびデータ構造を、スパイウェアを含む悪意あるコードから保護することができる。
【0019】
102における保護されたメモリ領域の構成、および/または、104におけるアプリケーションのロード、認証、および開始は、悪意あるコードによる覗き見行為および改ざんからメモリ内のコンポーネントを保護するハイパーバイザベースのセキュリティバイザの制御下で行うことができる。
【0020】
ハイパーバイザベースのセキュリティバイザは、コードおよび/またはデータを特定して、認証対象としてコードおよび/またはデータと関連付けられた1以上の特徴を測定して、認証されたコードおよび/またはデータを保護するよう、構成されてよい。
【0021】
ハイパーバイザベースのセキュリティバイザは、オペレーティングシステム上に修正を加えることなく動作可能に構成されうる。
【0022】
ハイパーバイザベースのセキュリティバイザは、オペレーティングシステムの範囲外(つまり、動作環境に潜伏している可能性のあるマルウェアの範囲外)の保護された領域で動作するIMM(integrity measurement module)を含みうる。IMM保護された領域は、仮想マシンマネージャ(VMM)の上で動作する、保護されたハードウェアおよび/または保護された仮想マシン(VM)を含みうる。IMMは、コードのセクションのハッシュ(例えば、SHA−1ハッシュ)を含む署名ファイルに対するアプリケーションのコードのIDおよびインテグリティを検証して、コードセクションおよび対応する再配置テーブルへのエントリポイントを検証するよう構成されてよい。
【0023】
ハイパーバイザベースのセキュリティバイザは、メモリアクセス保護を遂行するメモリ保護モジュール(MPM)を含んでよく、IMMは、IMMの検証が成功してアプリケーション計測が完了した後で、MPMにメモリアクセス保護遂行を促すよう構成されてよい。
【0024】
MPMは、1以上の保護されたページテーブル(PPT)を作成して、アプリケーションの、保護されたコードおよび対応するデータページを、PPTにマッピングして、アクティブページテーブル(APT)から対応するマッピングを切り離す(sever)よう構成されてよい。VMM等のメモリマネージャは、保護されたメモリの仮想アドレス範囲および保護されたページに対応する物理アドレスのリストを管理するよう構成されてよい。ページフォルトが起こると、VMMは宛先ページの仮想アドレスを、保護されたページのアドレスのリストと比較するよう構成され、整合するものが見つかると、仮想マシン制御構造(VMCS)のページテーブルベースレジスタ(PTBR)を、PPTベースアドレスのアドレスに切り替える。そして、VMMは、PTBRをPPTアドレスからAPTベースへ切り替える。VMMは、VMMがAPTにページを追加しようとする度に、物理ページアドレスのリストをチェックしてよい。VMMが保護されたページを見つけると、VMMは保護されたページをAPTに追加することを拒否して、エラー情報を生成してよい。メモリ保護が構成されている場合、アプリケーションに関連付けられた開始ベクトルは、保護されたアプリケーション領域内で実行される第1のコードセクションであってよい。
【0025】
ハイパーバイザベースのセキュリティバイザは、我がインテルコーポレーションが開発したネットワーク(VISN)システムのVTインテグリティサービスを含みうる。
【0026】
106で、ビデオフレームバッファが、保護されたメモリ領域に割り当てられる。
【0027】
アプリケーションは、グラフィックアダプタに対応するビデオフレームバッファを、保護されたメモリ領域へ組み込み(pull into)、ビデオフレームバッファへ直接レンダリングする。1以上のビデオフレームバックバッファおよび/または他のサーフェス(surface)が、さらに、保護されたメモリ領域に割り当てられてよい。保護されたメモリ領域にある間は、ビデオフレームバッファ(バックバッファその他のサーフェスをすべて含む)は、保護されたメモリ領域の外のオペレーティングシステムおよびその他の処理が開始する書き込みおよび/または読み出し処理から実質的に保護されうる。これに対応して、ビデオフレームバッファ(バックバッファその他のサーフェスをすべて含む)は、コンピュータシステム上で動作するマルウェア(マルウェアの優先度に関わらず)の影響を実質的に受けない。
【0028】
アプリケーションは、主要な、またはビデオフレームフロントバッファおよび1以上のビデオフレームバックバッファに対応するメモリアドレスを特定または決定して、オペレーティングシステム(OS)に関連付けられたAPTから対応するページを除去して、そのページを、アプリケーションの保護された部分および他の保護されたコードおよびデータページとともにPPTに配置するよう構成されてよい。この結果、スクリーンスクレーピングアプリケーション/マルウェアによる、保護されたページに対する読み書きを防ぐことができる。
【0029】
アプリケーションは、Microsoft Windows(登録商標)のDirectZおよびOpenGL、およびLinux(登録商標) OSのOpenGLが提供するもののような直接グラフィックレンダリングを行うよう構成されうる。ビデオフレームバッファに対応するアドレスを見つけ、OSの元で実行されるアプリケーションに関して存在しうる読み書き制限を取り除くべく、対応するライブラリにアクセスしてもよい。
【0030】
102における保護されたメモリ領域でのアプリケーションの開始には、ビデオフレームバッファに対する読み書きを担う少なくともコードおよびそのコード用のデータセクションの保護が含まれてよい。
【0031】
106における、ビデオフレームバッファの、保護されたメモリ領域への割り当てには、ポインタの位置をビデオフレームバッファに特定すること、またはポインタに対応するAPT変換が含まれてよい。
【0032】
ポインタをビデオフレームバッファに配置することには、オペレーティングシステムに関連するアプリケーションプログラミングインタフェース(API)を用いて、ポインタの仮想アドレスを決定することが含まれてよい。対応する物理アドレスが、オペレーティングシステムまたはVMMが維持するページテーブルから特定されてよい。
【0033】
ポインタをビデオフレームバッファに配置することには、ポインタの物理アドレスを取得して、ページテーブル等の対応する処理アドレススペース内を見回して、物理アドレスおよび対応する仮想アドレスを見つけることが含まれてよい。ポインタの物理アドレスは、既知の物理アドレス(断てばアドレス0XA000)にマッピングされてよい。これには、各ステップに対するハイパーコール(hypercall)が含まれてよい。
【0034】
仮想アドレスおよび対応する物理アドレスは、1以上のPPTに組み込まれてよい。ビデオフレームバッファのPPTへの組み込みには、対応するメモリページをAPTに存在しないものとしてマーキングすること、および、これらメモリページをPPTへの読み書きとしてマーキングすることが含まれてよい。
【0035】
108で、ユーザ入力デバイスの画像を、ビデオフレームバッファにレンダリングする。画像は、キーボードの画像を含んでよく、これには、数字キーボード、英字キーボード、および英数字キーボードの画像の1以上が含まれてよい。
【0036】
ユーザ入力デバイスの画像は、102のアプリケーションのロードの一貫として、保護されたメモリ領域にロードおよび認証されてよい。
【0037】
グラフィックアダプタは、離散グラフィックアダプタ、共有システムメモリ(システムRAM)の場合には、グラフィックアダプタ内の1以上のメモリであるビデオRAM(VRAM)からレンダリングされてよく、エンベデッドグラフィックアダプタの場合には、アドバンスグラフィックアパーチャ(AGP)等のような汎用プロセッサを有する共有システムRAMまたはその組み合わせとして構成されてよい。
【0038】
グラフィックカードは、通常ローカルVRAMを利用するよう構成されてよく、且つ、ローカルVRAMがシステム上の処理については不十分な場合にはシステムRAMを利用するよう構成されてよい。グラフィックカードは、1以上の主要なビデオフレームバッファからレンダリングされてよい。ビデオフレームバックバッファの内容は、主要なバッファへブリット(blit)されてよく、または、アプリケーションが、バックバッファのチェーンを宣言したり、バックバッファを、チェーン内の主要なバッファにフリップしたりしてよい。
【0039】
セキュアな入出力のためには、リング3アプリケーションが多数のサーフェスを宣言してよいが、これには、キーボードをレンダリングする際のテクスチャが含まれてよい。
【0040】
グラフィックカードおよび/または対応するディスプレイは、セキュリティ保護を含んでよい。
【0041】
110で、入力表示画像のレンダリングの後に、保護されたメモリ領域にユーザ入力が受信される。ユーザ入力には位置情報が含まれてよく、これはポインティングデバイス、マウスデバイス等のカーソルデバイス、タッチパッド、およびタッチスクリーンディスプレイの1以上により生成されてよい。
【0042】
112で、ユーザ入力が入力表示画像の特徴と相関付けられる。この相関付けには、ユーザ入力の座標を、レンダリングされたキーボード画像のキーに相関付けて、キーボードのユーザ選択キーを特定することが含まれてよい。
【0043】
114で、ユーザ入力に相関付けられる画像特徴の情報を、保護されたメモリ領域に格納する。画像がキーボード画像を含む場合、この格納には、ユーザ選択キーの情報の格納が含まれてよい。
【0044】
116で、格納されているユーザ入力情報を、保護されたメモリ領域から出力して、ビデオフレームバッファを、保護されたメモリから解放してよい。
【0045】
方法100は、機密のユーザ入力(電子支払い情報等)を受信すべく呼び出される。図2は、方法100を呼び出して、ネットワーク接続を介して支払取引を行う例示的な方法200の処理フローチャートである。
【0046】
202で、ユーザコンピュータシステムと、ユーザコンピュータシステムから遠隔にあってよい別のコンピュータシステムとの間で、ネットワークを介して通信セッションが行される。例えば通信セッションは、ユーザコンピュータシステム上で動作するウェブブラウザを介して、インターネットを介して販売業者ウェブサイトまたは金融カード処理業者ウェブサイトとの間で、行うことができる。
【0047】
204で、遠隔コンピュータシステムから受信したユーザ情報のプロンプトがユーザコンピュータシステムで検出される。
【0048】
204のプロンプト検出には、クレジットカード情報、デビットカード情報、または他の支払い照会情報等の電子支払い情報についてのプロンプトの検出が含まれてよい。
【0049】
204のプロンプト検出には、工業規格のHTML(ハイパーテキスト・マークアップ・ランゲージ)クレジットカードフォーム等の1以上の規格化された支払いプロンプトの検出が含まれてよい。
【0050】
204のプロンプト検出には、クレジットカード番号フィールド、日付フィールド、および通貨単位フィールド等のクレジットカード支払取引に共通したデータ入力フィールドを探して、受信するウェブページを検索することが含まれてよい。
【0051】
プロンプトは、ウェブブラウザ等のユーザコンピュータシステム上で動作するアプリケーションにより検出可能である。プロンプトを検出するコンピュータ可読命令は、ブラウザアプリケーションと協働するブラウザプラグインとして実装可能であり、販売業者ウェブサイトまたは金融カード処理業者ウェブサイトにあまり修正を加えず、または全く修正を加えず、比較的シームレスに実装可能である。
【0052】
プロンプトの検出には、ユーザコンピュータシステム上で動作するブラウザと、販売業者ウェブサイトまたは金融カード処理業者ウェブサイトとの間のセキュアなソケット層(SSL)チャネルまたはトランスポート層セキュリティ(TLS)チャネルの傍受が含まれてよい。
【0053】
プロンプトは、ユーザコンピュータシステム上で動作するVMMにより検出可能である。
【0054】
206で、ユーザ情報のプロンプトの検出に呼応して、アプリケーションが呼び出される。206におけるアプリケーションの呼び出しは、方法100またはその一部の実行を含んでよく、保護されたメモリ領域におけるユーザからのクレジットカード情報および支払い照会情報の取得を含んでよい。
【0055】
208で、プロンプトには、保護されたメモリ領域からのユーザ入力データが読み込まれ(populated)、要求者へ返される。
【0056】
図1に戻ると、108におけるレンダリングは、比較的ランダムな位置へ、または疑似ランダムな位置へ、入力表示画像をレンダリングすることを含んでよく、ユーザ入力に続いて別のランダムな位置へ画像を再度レンダリングすることを含んでよい。ランダムな配置には、真にランダムな配置、疑似ランダムな配置、および複数の所定の位置のいずれかに対する配置が含まれてよい。ランダムな配置は、スパイウェアまたは他の悪意のあるコードがユーザ入力をレンダリング画像と相関付ける能力を低下させる一助となる。
【0057】
図3は、ランダムな位置に画像をレンダリングして、ユーザ入力に続いて別のランダムな位置に該画像を再度レンダリングする例示的な方法300の処理フローチャートである。方法300は、図1の102から106の後に行われうる。
【0058】
302で、キーボード画像をビデオフレームバッファのランダムな位置にレンダリングする。キーボード画像は、ビデオフレームバッファのサイズより小さいサイズを有し、ビデオフレームバッファ内の多数のランダムな位置へのレンダリングを可能としてよい。
【0059】
304で、ユーザ入力が受信される(図1の110に関して上述した説明を参照)。
【0060】
306で、ユーザ入力の座標を、レンダリングされたキーボード画像に相関付けて、対応するユーザ選択キーの情報を、保護されたメモリへ格納する(図1の112から114に関して上述した説明を参照)。
【0061】
308でユーザがさらなる入力を提供する場合には、310でキーボード画像をビデオフレームバッファの別のランダムな位置に再度レンダリングする。304におけるユーザ入力の受信および306における相関付けおよび格納は、ユーザデータ入力が完了するまで繰り返されてよい。キーボード画像は、各ユーザ入力毎に別のランダムな位置に再度レンダリングされてよい。例えば、ユーザが多数の桁の列を入力する場合、キーボード画像は、各桁の入力毎に別のランダムな位置に再度レンダリングされてよい。
【0062】
キーボード画像は、ユーザデータ入力完了キーの画像を含むことで、ユーザが、データ入力の完了を示すことを許可してよい。
【0063】
308でユーザデータ入力が完了すると、ユーザ選択キーの格納情報が、保護されたメモリ領域から出力されてよく、312で、ビデオフレームバッファが、保護されたメモリ領域から解放されてよい。
【0064】
図1を参照すると、108の入力表示画像のレンダリングは、ユーザ画像の上への入力表示画像のレンダリングを含む。ユーザ画像は、ユーザにより選択されて、セキュリティの尺度として予めアプリケーションに関連付けられてよい。図4は、ユーザ画像の上に入力表示画像をレンダリングする例示的な方法400の処理フローチャートである。
【0065】
402で、保護されたメモリ領域を構成する(図1の102に関して上述した説明を参照)。
【0066】
404で、保護されたメモリ領域でアプリケーションを開始する(図1の104に関して上述した説明を参照)。
【0067】
406で、ユーザ画像またはビットマップを、保護されたメモリ領域にロードする。ユーザ画像を、暗号化されたユーザ画像として記憶デバイス(ハードドライブ等)から取得してよい。暗号化されたユーザ画像は、保護されたメモリ領域へロードされ、復号化される。
【0068】
復号化は、404で開始されたアプリケーションの制御の元に行われてよく、復号化キーは、該アプリケーションのコードおよび/または静的データセクションが認証または確認された時点で、セキュリティバイザモジュールによりアプリケーションに提供されてよい。
【0069】
408で、ビデオフレームフロントバッファおよび第1および第2のビデオフレームバックバッファが、保護されたメモリ領域に割り当てられる。
【0070】
410で、第1のビデオフレームバックバッファのランダムな位置にキーボード画像をレンダリングする(図3の302に関して上述した説明を参照)。
【0071】
412で、ユーザ画像を、第2のビデオフレームバックバッファの、第1のビデオフレームバックバッファのキーボード画像のランダムな位置に対応する位置にレンダリングする。ユーザ画像のサイズは、キーボード画像のサイズより大きく、ビデオフレームフロントバッファのサイズより小さい。
【0072】
414で、第1および第2のビデオフレームバックバッファが、ビデオフレームフロントバッファとマージされる。マージは、ユーザ画像の一部をキーボード画像の上に重畳することを含む。マージは、ビットブリット(BitBlit)(bit block transfer)またはブロック画像転送(Blit)(block image transfer)として行われてよく、多数のビットマップがラスタ動作を用いて組み合わせられてよい。
【0073】
416で、ユーザ入力が受信される(図1の110に関して上述した説明を参照)。
【0074】
418で、ユーザ入力の座標を、レンダリングされたキーボード画像に相関付けて、保護されたメモリへ格納する(図1の112から114に関して上述した説明を参照)。
【0075】
420でユーザがさらなる入力を提供する場合には、422でキーボード画像およびユーザ画像を、対応する第1および第2のビデオフレームバックバッファの別のランダムな位置に再度レンダリングする。
【0076】
414におけるマージ、416におけるユーザ入力の受信、および418における相関付けおよび格納は、ユーザデータ入力が完了するまで繰り返されてよい。キーボード画像およびユーザ画像は、各ユーザ入力に続いて別のランダムな位置に再度レンダリングされてよい。
【0077】
420でユーザデータ入力が完了すると、ユーザ選択キーの格納情報が、保護されたメモリ領域から出力されてよく、424で、ビデオフレームバッファは、保護されたメモリ領域から解放されてよい。
【0078】
ユーザデータ入力が完了すると、承認画像がランダムな位置にレンダリングされて、ユーザに、対応する取引を終了させてよい。
【0079】
図5は、ビデオフレームバッファのランダムな位置に承認画像をレンダリングする例示的な方法500の処理フローチャートである。方法500は、図1の114の後、図3の308の後、および図4の420の後等の、ユーザデータ入力の完了の後に実装されてよい。
【0080】
502で、承認画像が、保護されたメモリ領域のビデオフレームバッファへレンダリングされる。承認画像はユーザ画像の上にレンダリングされてよい(図4に関して上述した説明を参照)。
【0081】
504で、ユーザ入力が受信される(図1の110に関して上述した説明を参照)。
【0082】
506で、ユーザ入力の座標を、レンダリングされた承認画像に相関付ける。
【0083】
506で、ユーザ入力の座標が承認画像に相関付けられているとき、対応するユーザ入力データ(例えばユーザ選択キーの情報)が、保護されたメモリ領域から出力されてよく、ビデオフレームバッファが、保護されたメモリ領域から解放されてよい(510)。
【0084】
506でユーザ入力の座標が承認画像に相関付けられていない場合、1以上のアクションが起こってよい。例えば、承認画像が取引キャンセル画像および編集データ画像の1以上を含むことで、取引のキャンセルまたは取引の編集といった選択肢をユーザに提供してよい。
【0085】
上述の1以上の方法は、レンダリング画像に相関付けられていないユーザ入力をカウントして、相関付けられていない入力の数が閾値を超えたら取引を中止することを含んでよい。これにより、随所をクリックするアタック(click-everywhere attack)を防ぐことができる。
【0086】
図6は、相関付けられていないユーザ入力を検出する例示的な方法600の処理フローチャートである。方法600は、ここに開示する1以上の他の方法に関して実装されうる。
【0087】
602で、画像をビデオフレームバッファのランダムな位置にレンダリングする。画像は、入力表示画像、承認画像、およびユーザ画像の1以上を含んでよい。
【0088】
604で、ユーザ入力を受信する。
【0089】
606で、ユーザ入力が、レンダリングされた画像に相関しているか否かの判断を行う。
【0090】
606でユーザ入力が、レンダリングされた画像に相関付けられている場合、処理は608へ進んで、ユーザ入力を相関付けに応じて処理する。これには、図1の112の相関付け、図3の306の相関付け、図4の418の相関付け、および図5の506の相関付けの1以上が含まれてよい。
【0091】
ユーザ入力が、レンダリングされた画像に相関付けられていない場合、処理は610に進み、エラーカウントを増分する。
【0092】
612で、エラーカウントが閾値未満である場合には、614で画像を別のランダムな位置にレンダリングして、処理は604に戻り、別のユーザ入力を受信する。
【0093】
612でエラーカウントが閾値を超えている場合、616で1以上の処理を停止または終了させてよい。これには、対応するネットワーク接続の終了、ビデオフレームバッファのコンテンツおよび/または先に入力されたユーザデータの削除、管理者への警告または報告の送信、およびアプリケーションの終了の1以上が含まれてよい。
【0094】
図7は、データ入力画像をレンダリングして、保護されたメモリ領域で、該画像に対応するユーザ入力選択を受信する例示的な方法700の処理フローチャートである。方法700の1以上の特徴は、ここに開示する1以上の他の方法に関して開示する1以上の特徴と組み合わせて実装することができる。
【0095】
702で、暗号化された、もしくは保護されたユーザ画像がセキュアなメモリ領域にロードされ、そこで復号化される。セキュアなメモリ領域は、1以上の保護されたページテーブルを用いて構成されてよい。ユーザ画像はサイトキーに類似していてよい。
【0096】
704で、キーボード画像が、セキュアな表示スクリーン上のランダムな位置の、ユーザ画像の上部にレンダリングされる。キーボード画像は、ユーザ画像の上部にブリットされてよい。キーボード画像とその元であるユーザとの組み合わせを、ここではセキュアな入力スクリーンと称する。
【0097】
706で、ユーザがキーボード画像をクリックすると、対応するキーストロークが記録され、セキュアな表示スクリーン上の出力領域に表示され、セキュアな入力画像が別の位置にランダムに再配置される。これにより、攻撃者の類推によるアタックからの保護が可能となる。
【0098】
ユーザは、クレジットカード/銀行カードの番号を、セキュアな入力スクリーンを介して入力することができる。または、あるいはこれに加えて、ユーザは、クレジットカード番号等の情報のセキュアな値にアクセスするべく、個人識別番号(PIN)を入力してもよい。秘密の鍵は、アクセス鍵により安全性を保たれてよい(上述の、暗号化されたユーザ画像に関する説明を参照)。アクセスキーは、認証されたアプリケーションに対して開示されるセキュリティバイザの機密プラットフォームキーとしてセキュアに管理されてよい。アプリケーションは、秘密の値を解除する目的にPINを利用することができる。これにより、ユーザが入力するデータ量の低減が図られ、取引の安全性を高めることができる。
【0099】
708で、ユーザデータ入力が完了すると、承認画像をセキュアな表示スクリーンにレンダリングして、ユーザに対して、取引パラメータの承認を促す。上述したように承認画像はユーザ画像の上にレンダリングされてよい。承認画像とその元であるユーザの組み合わせを、ここではセキュアな承認スクリーンと称する。
【0100】
セキュアな承認スクリーンは、保護されたメモリ領域の別のサーフェスとして視ることができるが、これは、ユーザが信用および取引情報の入力を完了したときにレンダリングされる。セキュアな承認スクリーンは、販売業者またはカード処理業者のサイトへ送られる販売業者名、取引の金額、日付、および信用証明等の取引情報を含んでよい。セキュアな承認スクリーンは、情報表示のために1以上のラインを含むことができる。
【0101】
710で、ユーザが承認画像をクリックすると、先に入力されたキーストロークまたは他の対応するユーザ情報が、セキュアなメモリ領域から出力されてよい。キーストロークその他のユーザ情報は、販売業者ネットワークサイトまたはクレジットカード処理業者ネットワークサイトへ出力されてよい。
【0102】
キーストロークその他のユーザ情報は、出力の前に暗号化および署名がなされてよい。取引情報は、販売業者またはカード処理業者の公開鍵等により暗号化されてよく、ユーザの秘密鍵で署名されてよい。取引の金額、ユーザの入力したクレジットカード番号、取引カウント、および販売業者情報の1以上に、ハッシュ関数を適用して、セキュアな取引値を生成することもできる。セキュアな取引値を販売業者またはカード処理業者に送ってよい。
【0103】
販売業者またはカード処理業者のネットワークサイトは、証明書等で、ユーザコンピュータにおいて認証されてよい。これにより、フィッシング詐欺を防ぐことができる。
【0104】
承認画像は、ランダムな位置に配置されてよく、承認画像に相関付けられていないユーザクリックに続いてランダムに再配置されてよい。これにより、攻撃者は、先のクリックを分析して承認画像の位置を判断することができなくなる。取引は、相関付けられていないユーザのクリックの数が閾値を超えたときに中止することとしてもよい。これにより、しらみつぶしに行われる随所をクリックするアタックを防ぐことができる。
【0105】
ここに開示する1以上の特徴は、ハードウェア、ソフトウェア、ファームウェア、およびこれらの組み合わせ(離散および集積回路ロジック、特定用途向けIC(ASIC)ロジック、マイクロコントローラ)による実装が可能であり、特定領域向けICパッケージまたは集積回路パッケージの組み合わせの一部としての実装が可能である。ここで利用されるソフトウェアという用語は、コンピュータプログラムロジックを記憶することで、コンピュータシステムに、ここに開示する1以上の特徴および/または特徴の組み合わせを行わせるコンピュータ可読媒体を含むコンピュータプログラムプロダクトのことを意味する。
【0106】
図8は、例示的なコンピュータ環境800をグラフィックに示す図であり、コンピュータ環境800は、プロセッサ802およびグラフィックプロセッサGPU804と称されて記載される1以上のコンピュータ命令処理ユニットを含むことで、コンピュータプログラムロジックを実行する。プロセッサ802は、1以上の汎用プロセッサおよび/またはプロセッサコアを含みうる。
【0107】
コンピュータシステム800は、メモリ806を含み、このメモリは、1以上のビデオメモリまたはVRAM812および物理システムメモリまたはランダムアクセスメモリ(RAM)808を含みえて、これには、アドバンスト・グラフィック・プロセッシング(AGP)アパーチャ・メモリ810が含まれてよい。AGPアパーチャメモリ810は、VRAM812に加えてGPU804により利用されうる。
【0108】
メモリ806は、コンピュータ・プログラム・プロダクト・ロジックまたは命令を記憶することで、1以上のプロセッサ802およびGPU804に、これに応じた1以上の機能を行わせるコンピュータ可読媒体を含むことができる。
【0109】
メモリ806の物理アドレス、あるいはその部分は、1以上の動作環境814およびアプリケーションに関して仮想化されていてよい。仮想−対−物理メモリアドレス間のメモリマッピングは、1以上のアクティブページテーブル(APT)818に維持されてよい。
【0110】
1以上のアクセス保護されたメモリ領域がメモリ806内に構成されてよく、対応するメモリアドレスマッピングが、1以上の保護されたページテーブル(PPT)820に維持されてよい。
【0111】
APT818およびPPT820は、アクセス制御マネージャ824の制御下でセキュリティバイザ環境822内に構成および施行されうる。
【0112】
図9は、図8のメモリ806に対応する例示的なロジックおよびデータのブロック図である。
【0113】
図9では、メモリ806は、PPT820で構成されうる、保護されたメモリ領域902を含む。
【0114】
保護されたメモリ領域902は、図1の104に関して上述したように認証されていてよいアプリケーションロジック904を含む。
【0115】
アプリケーションロジック904は、ビデオフレームバッファIDおよび保護ロジック906を含むことで、プロセッサ802に、ビデオフレームバッファに対応する位置またはアドレスマッピング、またはビデオフレームバッファへのポインタの位置またはアドレスマッピングを特定させることで、ビデオフレームバッファのアクセス保護を行ってよい(図1の106に関して上述した説明参照)。図9の例においては、ビデオフレームバッファ908は、保護されたメモリ領域902内に描かれている。ビデオフレームバッファ908は、1以上のバックバッファ910から912、および主要な、またはフロントバッファ914を含みうる。
【0116】
アプリケーションロジック904は、プロセッサ802に、暗号化されたユーザ画像を保護されたメモリ領域902へと取得させるユーザ画像復号化ロジック916を含みうる(図4の406に関して上述した説明参照)。図9の例では、復号化されたユーザ画像918は、保護されたメモリ領域902内に描かれている。
【0117】
アプリケーションロジック904は、図3に関して上述したように、プロセッサ802に、入力表示画像922をビデオフレームバッファ908のランダムな位置にレンダリングさせるランダムレンダリングロジック920を含みうる。ランダムレンダリングロジック920は、図4に関して上述したように、プロセッサ802に、入力表示画像922および復号化されたユーザ画像918をそれぞれバックバッファ910および912のランダムな位置にレンダリングさせて、バックバッファ910および912からフロントバッファ914へ画像をマージまたはブリットさせるロジックを含みうる。
【0118】
ランダムレンダリングロジック920は、図5の502に関して上述したように、プロセッサ802に、承認画像924をビデオフレームバッファ908のランダムな位置にレンダリングさせるロジックを含みうる。ランダムレンダリングロジック920は、図4および5に関して上述したように、プロセッサ802に、承認画像924および復号化されたユーザ画像918をそれぞれバックバッファ910および912のランダムな位置にレンダリングさせて、バックバッファ910および912からフロントバッファ914へ画像をマージまたはブリットさせるロジックを含みうる。
【0119】
アプリケーションロジック904は、図1の112および114でそれぞれ上述したように、プロセッサ802に、ユーザ入力とレンダリングされた画像とを相関付けさせ、対応するユーザ入力を、保護されたメモリ領域902に、ユーザ入力データ928として格納させる相関付けロジック926を含みうる。
【0120】
アプリケーションロジック904は、図6に関して上述したように、プロセッサ802に、レンダリングされた画像に相関付けられていないユーザ入力をカウントさせ、相関付けられていないユーザ入力の数が閾値を超えたらアプリケーションロジック904の1以上の部分を中止させる中止ロジック930を含みうる。
【0121】
アプリケーションロジック904は、図7に関して上述したように、プロセッサ802に、クレジットカード情報等の、暗号化されたユーザ値を、保護されたメモリ領域902へと取得させ、ユーザ値を復号化させるロジックを含みうる。図9の例では、復号化されたユーザ値932は、保護されたメモリ領域902内に描かれている。
【0122】
メモリ806は、プロセッサ802に、ネットワークを介して1以上の遠隔コントローラシステムとインタフェースさせるブラウザロジック934を含みうる。ブラウザロジック934は、図2の204に関して上述したように、プロセッサ802に、遠隔コンピュータシステムからのプロンプト(例えば、電子支払い情報に関するプロンプト)を検出させるプロンプト検出ロジック936を含みうる。ブラウザロジック934は、図2の206に関して上述したように、プロセッサ802に、保護されたメモリ領域902内でアプリケーションロジック904を開始させ、プロンプトにユーザ入力データ928を読み込むアプリケーション開始ロジック938を含みうる。1以上のプロンプト検出ロジック936およびアプリケーション開始ロジック938、またはそれらの部分が、VMM内に実装されてよい。
【0123】
ここに開示した方法およびシステムは、バイオメトリックスキャナを含むがこれに限定はされないコンピュータシステムに情報を送るよう構成可能な他のデバイスに関しても実装可能である。
【0124】
本明細書では、方法およびシステムを、機能、特徴、および関係を示す機能ブロックにより記載している。これら機能ブロック間の少なくとも幾らかの範囲は、説明の便宜上、自由に定義している場合がある。その機能および関係が適切に実現されるのであれば、別の定義づけも可能である。
【0125】
当業者であれば、これら機能ブロックを、適切なソフトウェアおよびその組み合わせを実行する離散コンポーネント、特定用途向けIC、プロセッサにより実装することが可能であることを理解する。
【0126】
様々な実施形態を記載してきたが、これらはあくまで例示を目的として記載されており、限定を意図していないことを理解されたい。当業者には、ここに記載した方法およびシステムの精神および範囲を逸脱せずに形態および詳細に関する様々な変更が可能であることが明らかである。従って請求項の範囲は、ここに記載した例示的な実施形態のいずれによっても限定されるべきではない。

【特許請求の範囲】
【請求項1】
アプリケーションプログラムの少なくとも一部を、アクセス保護されたメモリ領域で開始する段階と、
ビデオフレームバッファを前記アクセス保護されたメモリ領域に割り当てる段階と、
キーボード画像を、前記ビデオフレームバッファのランダムな位置にレンダリングする段階と、
ユーザ入力の座標を、前記レンダリングされたキーボード画像のキーと相関付ける段階と、
前記アクセス保護されたメモリ領域に、前記キーの情報を格納する段階と、
前記ユーザ入力に応じて、前記ビデオフレームバッファの別のランダムな位置に、前記キーボード画像を再度レンダリングする段階と、
前記相関付ける段階および前記格納する段階を、別のユーザ入力に対して繰り返す段階と、
前記アクセス保護されたメモリ領域から、前記キーの前記情報を出力する段階とを備え、
前記割り当てる段階、前記レンダリングする段階、前記相関付ける段階、前記格納する段階、前記再度レンダリングする段階、前記繰り返す段階、および前記出力する段階は、前記アクセス保護されたメモリ領域内で、前記アプリケーションプログラムの少なくとも前記一部の制御下において行われる方法。
【請求項2】
前記ビデオフレームバッファ、前記キーボード画像、並びに前記アプリケーションプログラムおよび1以上の保護されたページテーブル内の対応するデータに関連付けられた物理アドレスおよび仮想アドレス間の変換を維持する段階と、
前記保護されたページテーブルへのアクセスを実質的に前記アプリケーションプログラムに制限する段階と、
前記ビデオフレームバッファへのポインタに関連付けられた物理アドレスおよび仮想アドレス間の変換を、アクティブページテーブル内で利用不可能として特定する段階とをさらに備える請求項1に記載の方法。
【請求項3】
前記アプリケーションプログラムの少なくとも前記一部を開始する段階は、前記アプリケーションプログラムの前記少なくとも一部を前記保護されたメモリ領域で、トラステッドエグゼキューションモジュールの制御下でロード、認証、および開始する段階を有する請求項1に記載の方法。
【請求項4】
通信ネットワークの上で、遠隔コンピュータシステムとインタフェースする段階と、
前記遠隔コンピュータシステムからユーザ情報のプロンプトを検出する段階と、
前記プロンプトに応じて、前記アプリケーションプログラムの前記少なくとも一部を前記アクセス保護されたメモリ領域内で呼び出す段階とをさらに備え、
前記出力する段階は、前記プロンプトに前記キーの前記情報を読み込み、前記読み込みの行われたプロンプトを前記通信ネットワークを介して前記遠隔コンピュータシステムに返送する段階を有する請求項1に記載の方法。
【請求項5】
前記ユーザ入力が前記キーボード画像に相関付けられていない場合、エラーカウントを増分する段階と、
前記エラーカウントが閾値を超える場合、前記アプリケーションの少なくとも一部を中止する段階と、
前記ユーザ入力が前記キーボード画像と相関付けされておらず、前記エラーカウントが前記閾値未満である場合、前記キーボード画像を前記ビデオフレームバッファの別のランダムな位置に再度レンダリングする段階とをさらに備える請求項1に記載の方法。
【請求項6】
ユーザ画像を前記アクセス保護されたメモリ領域にロードして、復号化する段階をさらに備え、
前記キーボード画像をレンダリングする段階および前記キーボード画像を再度レンダリングする段階は、各々、前記キーボード画像を、前記ユーザ画像の少なくとも一部の上の、前記ビデオフレームバッファの対応するランダムな位置にレンダリングする段階を有する請求項1に記載の方法。
【請求項7】
前記ユーザ入力が前記キーボード画像に相関付けられていない場合、エラーカウントを増分する段階と、
前記エラーカウントが閾値を超える場合、前記アプリケーションの少なくとも一部を中止する段階と、
前記ユーザ入力が前記キーボード画像と相関付けされておらず、前記エラーカウントが前記閾値未満である場合、前記キーボード画像を、前記ユーザ画像の少なくとも前記一部の上の前記ビデオフレームバッファの別のランダムな位置に再度レンダリングする段階とをさらに備える請求項6に記載の方法。
【請求項8】
ユーザデータ入力が完了すると、承認画像を、前記ユーザ画像の少なくとも一部の上の前記ビデオフレームバッファのランダムな位置にレンダリングする段階と、
後続のユーザ入力の座標を、前記レンダリングされた承認画像と相関付ける段階と、
前記後続のユーザ入力の前記座標と前記承認画像との相関付けに応じて、前記キーの前記情報を出力する段階と、
前記後続のユーザ入力が前記承認画像と相関付けられていない場合、前記エラーカウントを増分する段階と、
前記後続のユーザ入力が前記承認画像と相関付けられておらず、前記エラーカウントが前記閾値未満である場合、前記承認画像を、前記ユーザ画像の少なくとも一部の上の、前記ビデオフレームバッファの別のランダムな位置に再度レンダリングする段階と、
前記エラーカウントが閾値を超える場合、前記アプリケーションの少なくとも一部を中止する段階とをさらに備える請求項7に記載の方法。
【請求項9】
前記ビデオフレームバッファを前記アクセス保護されたメモリ領域に割り当てる段階は、
前記ビデオフレームバッファの一部を前記アクセス保護されたメモリ領域に割り当て、前記アクセス保護されたメモリ領域の外の1以上の処理による前記ビデオフレームバッファの残りの部分へのアクセスを許可する段階を有し、
前記レンダリングする段階および前記再度レンダリングする段階は、前記アクセス保護されたメモリ領域に割り当てられた前記ビデオフレームバッファの前記一部に関して行われる請求項1に記載の方法。
【請求項10】
プロセッサに関連機能を行わせるコンピュータプログラムロジックを記憶するコンピュータ可読媒体を備えるコンピュータプログラムプロダクトであって、
プロセッサに、アクセス保護されたメモリ領域を構成させるメモリ保護ロジックと、
前記プロセッサに、前記アクセス保護されたメモリ領域にビデオフレームバッファを割り当てさせ、前記アクセス保護されたメモリ領域から前記ビデオフレームバッファのランダムな位置にキーボード画像をレンダリングさせ、ユーザ入力に応じて、前記キーボード画像を前記アクセス保護されたメモリ領域から前記ビデオフレームバッファの別のランダムな位置に再度レンダリングさせ、ユーザ入力の座標を前記キーボード画像のキーと相関付けさせ、前記アクセス保護されたメモリ領域に対応するキーの情報を格納させ、前記アクセス保護されたメモリ領域から前記キーの前記情報を出力させるアプリケーションロジックとを備えるコンピュータプログラムプロダクト。
【請求項11】
前記保護されたメモリ領域で、前記アプリケーションロジックの少なくとも一部をロード、認証、および開始させるトラステッドエグゼキューションロジックをさらに備える請求項10に記載のコンピュータプログラムプロダクト。
【請求項12】
前記アプリケーションロジックは、
前記プロセッサに、前記保護されたメモリ領域でユーザ画像をロードおよび復号化させる画像復号化ロジックと、
前記プロセッサに、前記キーボード画像を、前記アクセス保護されたメモリ領域から、前記ビデオフレームバッファの前記ランダムな位置の、前記復号化されたユーザ画像の上にレンダリングおよび再度レンダリングさせるレンダリングロジックとを有する請求項10に記載のコンピュータプログラムプロダクト。
【請求項13】
前記レンダリングロジックは、
前記プロセッサに、ユーザデータ入力に応じて、承認画像を、前記アクセス保護されたメモリ領域から、前記ビデオフレームバッファのランダムな位置の前記復号化されたユーザ画像の上にレンダリングさせるロジックを有する請求項12に記載のコンピュータプログラムプロダクト。
【請求項14】
前記アプリケーションロジックは、
前記プロセッサに、レンダリングされた画像に相関付けられていないユーザ入力をカウントさせ、相関付けられていないユーザ入力の数が閾値を超える場合、前記アプリケーションまたはその一部を中断させる中止ロジックをさらに有する請求項13に記載のコンピュータプログラムプロダクト。
【請求項15】
前記プロセッサに、遠隔コンピュータシステムからのユーザ入力のプロンプトを検出させるプロンプト検出ロジックと、
前記プロセッサに、検出されたプロンプトに応じて、前記メモリ保護ロジックを呼び出させ、対応するアクセス保護されたメモリ領域で前記アプリケーションを呼び出させる呼び出しロジックと、
前記プロセッサに、前記プロンプトに前記キーの前記情報を読み込ませ、前記読み込みの行われたプロンプトを前記遠隔コンピュータシステムへ出力させるロジックとをさらに備える請求項10に記載のコンピュータプログラムプロダクト。
【請求項16】
前記プロンプト検出ロジックは、
前記プロセッサに、ブラウザロジック実行中に前記プロンプトを検出させるブラウザプラグインロジックを有する請求項15に記載のコンピュータプログラムプロダクト。
【請求項17】
前記ブラウザプラグインロジックは、
前記プロセッサに、前記遠隔コンピュータシステムの対応するウェブサイトに対する修正を実質的に伴わずに前記プロンプトを検出させるロジックを含む請求項16に記載のコンピュータプログラムプロダクト。
【請求項18】
前記ブラウザプラグインロジックは、
前記プロセッサに、前記プロセッサおよび前記遠隔コンピュータシステムの間のセキュアなソケット層チャネルおよびトランスポート層セキュリティチャネルの1以上を傍受させるロジックを含む請求項16に記載のコンピュータプログラムプロダクト。
【請求項19】
前記メモリ保護ロジックは、
前記プロセッサに、前記ビデオフレームバッファ、前記キーボード画像、並びに前記アプリケーションロジックおよび1以上の保護されたページテーブル内の対応するデータに関連付けられた物理アドレスおよび仮想アドレス間の変換を維持させるロジックと、
前記プロセッサに、前記保護されたページテーブルへのアクセスを実質的に前記アプリケーションロジックに制限させるロジックと、
前記プロセッサに、前記ビデオフレームバッファへのポインタに関連付けられた物理アドレスおよび仮想アドレス間の変換を、アクティブページテーブル内で利用不可能として特定させるロジックとを有する請求項10に記載のコンピュータプログラムプロダクト。
【請求項20】
システムであって、
プロセッサと、
グラフィックプロセッサと、
前記グラフィックプロセッサがアクセス可能な画定されたビデオフレームバッファを内部に有し、前記プロセッサに連結されたメモリと、
コンピュータプログラムプロダクトとを備え、
前記コンピュータプログラムプロダクトは、プロセッサに関連機能を行わせるコンピュータプログラムロジックを記憶するコンピュータ可読媒体を有し、
プロセッサに、前記メモリ内にアクセス保護されたメモリ領域を構成させるメモリ保護ロジックと、
前記プロセッサに、前記アクセス保護されたメモリ領域に前記ビデオフレームバッファを割り当てさせ、前記アクセス保護されたメモリ領域から前記ビデオフレームバッファのランダムな位置にキーボード画像をレンダリングさせ、ユーザ入力に応じて、前記キーボード画像を前記アクセス保護されたメモリ領域から前記ビデオフレームバッファの別のランダムな位置に再度レンダリングさせ、ユーザ入力の座標を前記キーボード画像のキーと相関付けさせ、前記アクセス保護されたメモリ領域に対応するキーの情報を格納させ、前記アクセス保護されたメモリ領域から前記キーの前記情報を出力させるアプリケーションロジックと、
前記プロセッサに、前記アクセス保護されたメモリ領域で、前記アプリケーションロジックの少なくとも一部をロード、認証、および開始させるトラステッドエグゼキューションロジックとを有するシステム。
【請求項21】
前記アプリケーションロジックは、
前記プロセッサに、前記保護されたメモリ領域でユーザ画像をロードおよび復号化させる画像復号化ロジックと、
前記プロセッサに、前記キーボード画像を、前記アクセス保護されたメモリ領域から、前記ビデオフレームバッファの前記ランダムな位置の、前記復号化されたユーザ画像の上にレンダリングおよび再度レンダリングさせるレンダリングロジックとを有する請求項20に記載のシステム。
【請求項22】
前記レンダリングロジックは、
前記プロセッサに、ユーザデータ入力に応じて、承認画像を、前記アクセス保護されたメモリ領域から、前記ビデオフレームバッファのランダムな位置の前記復号化されたユーザ画像の上にレンダリングさせるロジックを有する請求項21に記載のシステム。
【請求項23】
前記アプリケーションロジックは、
前記プロセッサに、レンダリングされた画像に相関付けられていないユーザ入力をカウントさせ、相関付けられていないユーザ入力の数が閾値を超える場合、前記アプリケーションまたはその一部を中断させる中止ロジックをさらに有する請求項22に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−170543(P2010−170543A)
【公開日】平成22年8月5日(2010.8.5)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−293555(P2009−293555)
【出願日】平成21年12月24日(2009.12.24)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】