JP6083097B2 - ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法 - Google Patents

ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法 Download PDF

Info

Publication number
JP6083097B2
JP6083097B2 JP2014547269A JP2014547269A JP6083097B2 JP 6083097 B2 JP6083097 B2 JP 6083097B2 JP 2014547269 A JP2014547269 A JP 2014547269A JP 2014547269 A JP2014547269 A JP 2014547269A JP 6083097 B2 JP6083097 B2 JP 6083097B2
Authority
JP
Japan
Prior art keywords
umhpic
security
application
umhppic
service request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014547269A
Other languages
English (en)
Other versions
JP2015500543A (ja
JP2015500543A5 (ja
Inventor
エー. バウマン,アンドリュー
エー. バウマン,アンドリュー
シー. ハント,ギャレン
シー. ハント,ギャレン
ペイナド,マーカス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015500543A publication Critical patent/JP2015500543A/ja
Publication of JP2015500543A5 publication Critical patent/JP2015500543A5/ja
Application granted granted Critical
Publication of JP6083097B2 publication Critical patent/JP6083097B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Casings For Electric Apparatus (AREA)
  • Medical Preparation Storing Or Oral Administration Devices (AREA)
  • Exchange Systems With Centralized Control (AREA)

Description

従来のソフトウェア・アプリケーションは種々のオペレーティング・システム機能に依存する。オペレーティング・システムは、スレッド・スケジューリング、メモリ割り当て、仮想メモリ、デバイス・アクセス等などの基本コンピューテーション・サービスを提供するためのアプリケーション・プログラミング・インタフェース(API)・セットを提供し得る。更に、オペレーティング・システムは、グラフィカル・ユーザ・インタフェース(GUI)サービス、クリップボード・サービス等などの更なるオペレーティング・システム・サービスを提供するAPIの豊富な機能セットを提供し得る。
特定のセキュリティ対応のプロセッサは、セキュアな実行環境を提供することができる。前述のセキュリティ対応のプロセッサは、保護メモリ空間を提供し、セキュリティ対応プロセッサは、保護メモリ空間に記憶されたコード及びデータが、保護メモリ空間外のコードによってアクセス可能でないことを確実にする。セキュリティ対応プロセッサは、保護メモリ空間内のコードと環境外のコードとの間で実行が進むことを可能にする、以降、ゲートとして表す明確に定義された出口及び入口機能を提供する。
セキュリティ対応プロセッサは、保護メモリ空間内のカーネルモード実行、又は入出力デバイスへのアクセスを可能にしない。その結果、セキュリティ対応プロセッサの保護されたメモリ領域は、従来のソフトウェア・アプリケーションを実行するには制限的過ぎる。
本概要は、詳細な説明に更に後述する本開示の単純化された概念を紹介するために記載している。本概要は、特許請求の範囲に記載の主題の本質的な構成を識別することを意図するものでなく、特許請求の範囲に記載の主題の範囲を規定するために使用されることを意図するものでもない。
アプリケーションは、セキュリティ対応プロセッサによって提供されるユーザモード・ハードウェア保護アイソレーション・コンテナ(UMHPIC)内で実行する。アプリケーションの一部としてUMHPIC内で実行するライブラリ・オペレーティング・システムは、高レベル要求を含む大半のオペレーティング・システム要求を満たす。UMHPICアウェア・プラットフォーム・アダプテーション・レイヤ(U−PAL)は、UMHPIC外に存在するオペレーティング・システム・リソースを利用する一方で、UMHPIC内で、UMHPICを特に知らないアプリケーションが実行することを可能にする。U−PALは、UMHPIC内で実行し、スレッド・スケジューリング、ファイル・システム相互作用、及びリソース割り当てがアプリケーションに代わって適切に処理されることを確実にするセキュアなサービス・コンポーネントを含む。U−PALは、UMHPIC内に存在するトラステッド部分、及び外部実行環境においてユーザ・モードで実行する非トラステッド部分を備えるサンキング・コンポーネントを含む。トラステッド・サンキング・コンポーネントは、セキュリティ対応プロセッサによって制御される出口ゲートを介して、非トラステッド・サンキング・コンポーネントにシステム・コールを転送する。非トラステッド・サンキング・コンポーネントは、セキュリティ対応プロセッサによって制御されたエントリ・ゲートを介してオペレーティング・システムからUMHPICにシステム・コール結果を転送する。
UMHPICにおいてアプリケーションを実行するためのセキュアな実行環境を示す概略図である。 実施例による、セキュアな実行環境を提供するために使用可能な例示的なコンピューティング・システムを示すブロック図である。 UMHPICにおいて実行するアプリケーションにセキュリティを提供するための例示的なプロセスを示すフロー図である。 UMHPIC内で実行するアプリケーションと、UMHPIC外で実行するホスト・プラットフォームとの間のリソース要求相互作用を容易化する例示的なプロセスを示すフロー図である。 ホスト・プラットフォームからの非同期通知及び実行の要求を処理するための例示的なプロセスを示すフロー図である。
詳細な説明は、添付図面を参照して説明する。図では、参照符号の最も左の文字は、参照符号が最初に現れる図を識別する。別々の図において同じ参照符号を使用していることは、同様な、又は同一の項目を示す。
上述のように、従来のソフトウェア・アプリケーションは、オペレーティング・システム機能の豊富な機能セットに依存する。本出願の実施例は、セキュアな実行環境外の何れのコードのトラスティングもなしで、セキュアな実行環境(以降、ユーザモード・ハードウェア保護アイソレーション・コンテナ(UMHPIC)として表す)内で、セキュアな実行環境内で実行するために特に記述されている訳でないアプリケーション(未修正アプリケーション)が実行することを可能にする。ホスト・オペレーティング・システムなどの、UMHPIC外のコードが、UMHPIC内のコードに対するサービスを拒絶し得る一方、UMHPIC外のコードは、UMHPIC内のコードの実行をタンパリングし、又はスヌープすることが可能でない。UMHPIC内の従来の未修正アプリケーションの実行は、通常、UMHPIC外で実行する「ホスト」オペレーティング・システムのトラスティングを必要とする。未修正アプリケーションは通常、3つの理由でホスト・オペレーティング・システムをトラスティングする。第1に、従来のアプリケーションは、オペレーティング・システムからの豊富でかつ種々のサービスを活用し、第2に、未修正アプリケーションは、実行及びデータが、UMHPICと外部実行環境との間で転送されることを可能にするようセキュリティ対応プロセッサの特定の入口ゲート及び出口ゲートを起動するよう構成されておらず、第3に、上記アプリケーションは、そのセキュリティについてオペレーティング・システムの正しい動作に依存する。本明細書の実施例は更に、UMHPIC内で実行される対象の、「ULTRA−LOW COST SANDBOXING FOR APPLICATION APPLIANCES」と題する、米国特許出願第12/834,895号に記載されたものなどのサンドボックス環境も実施可能にする。
本明細書記載の実施例は、部分的にUMHPIC内に存在し、部分的に外部実行環境にあるUMHPICアウェア・プラットフォーム・アダプテーション・レイヤ(U−PAL)を含む。U−PALは、UMHPICにおいて実行するアプリケーションと、UMHPIC外で実行するホスト・プラットフォームとの間のシステム・リソース要求相互作用を容易化する。更に、容易化することの一部として、1つ又は複数のセキュリティ関連動作が行われる。セキュリティ関連動作は、とりわけ、ホスト・プラットフォームがUMHPIC外で実行しても、リソースへのアクセスにホスト・プラットフォームをアプリケーションが利用することを可能にし、したがって、「非トラステッド」コードである。
実施例では、アプリケーションは、そのUMHPIC内にトラステッド・ライブラリ・オペレーティング・システムを含む。大半のオペレーティング・システム要求は、必要に応じてU−PALのサービスを起動するライブラリ・オペレーティング・システムによって満たされる。U−PALは、今度は、ホスト・オペレーティング・システムからのサービスを起動する。U−PALのトラステッド部分(すなわち、UMHPIC内に存在し、UMHPIC内で実行する部分)は、UMHPIC内で実行するアプリケーションにサービス・インタフェースを提示する。U−PALの非トラステッド部分(すなわち、UMHPIC外のユーザ・モードにおいて存在し、実行する部分)は、ホスト・コンピュータ・システムによって提供されるプラットフォーム・アダプテーション・レイヤ(PAL)経由などで、オペレーティング・システムとインタフェースする。
U−PALは、セキュアなサービス・コンポーネント、及びサンキング・コンポーネントを含む。セキュアなサービス・コンポーネントはUMHPIC内で実行し、したがって、アプリケーションの観点から「トラステッド」コンポーネントである。セキュアなサービス・コンポーネントは、スレッド・スケジューリング、ファイル・システム相互作用、及びリソース割り当てを含むシステム・サービス全てが、未修正アプリケーションに代わって適切に処理され、それにより、非トラステッド・ホスト・オペレーティング・システムが可能になる。サンキング・コンポーネントは、UMHPIC内に存在するトラステッド部分、及びUMHPIC外のユーザ・モードで実行する非トラステッド部分を含む。サンキング・コンポーネントは、UMHPIC外で実行するホスト・オペレーティング・システム機能へのアクセスを、セキュアなサービス・コンポーネントを含む、U−PALのトラステッド部分に提供する。サンキング・コンポーネント及びセキュアなサービス・コンポーネントは併せて、ライブラリOSとともにパッケージングされたアプリケーションなどの未修正アプリケーションが、UMHPIC内で実行することを可能にする。
本明細書及び特許請求の範囲記載の処理、システム、及びデバイスはいくつかのやり方で実現し得る。例示的な実現形態は、以下の図を参照して以下に記載する。
未修正アプリケーションをUMHPICにおいて実行するための例示的な環境
図1は、UMHPICにおいてアプリケーションを実行するためのセキュアな実行環境の概略図である。システム100の局面は、未修正アプリケーションのセキュアな実行環境を実現することができる種々の適切なコンピューティング・デバイス・タイプ上で実現し得る。適切なコンピューティング・デバイスは、1つ又は複数のパソコン、サーバ、サーバ・ファーム、データセンタ、特殊用途向コンピュータ、タブレット型コンピュータ、ゲーム・コンソール、スマートフォン、これらの組み合わせ、又は未修正アプリケーションを実行するためのセキュアな実行環境の全部又は一部を記憶し、実行することができる何れかの他のコンピューティング・デバイスを含み、又はその一部であり得る。
システム100は、UMHPIC104を含むセキュアな実行環境をインスタンス化するよう構成されたセキュリティ対応プロセッサ102を含む。UMHPIC104は、メモリ108又はユーザモード・メモリ106内の保護メモリ領域に存在している。UMHPIC104との間で実行及びデータを、UMHPIC104上で実行するコードが転送することを可能にするセキュリティ対応プロセッサ102によって提供される特定の入口及び出口ゲート以外は、UMHPIC104に記憶されたコード及びデータは、UMHPIC104外のコードにアクセス可能でない。
スレッドはUMHPIC104を出て、出口ゲートを通って、保護されていないメモリに戻る。出口ゲートは、コール命令経由などで直接呼び出し得、又は間接的に、プロセッサ例外経由などで呼び出し得る。UMHPIC104は暗号化機構によって保護し得る。例えば、セキュリティ対応プロセッサ102は、UMHPIC104に対する書き込み動作を暗号化し、読み出し動作を復号化するよう構成される。更に、UMHPIC104は、暗号ハッシュ(帯域内(インライン)又は帯域外)によって追跡することが可能であり、セキュリティ対応プロセッサ102は、メモリが改変されていないことを読み出し動作時に検証する事が可能である。他の実施例では、UMHPI104が存在するメモリ空間は、セキュリティ対応プロセッサ102の同じチップ上にあり得、メモリ空間は、実行が入口ゲートに入る際にセキュリティ対応プロセッサ102がアクセスすることを可能にするように隔離することができる。種々の実施例では、セキュリティ対応プロセッサ102は、システムオンチップ(SOC)などの単一チップ内で実現し得、又は、システム100のプロセッサ及び更なるチップセットにわたって実現し得る。
アプリケーション110はUMHPIC104内で実行する。すなわち、以下に更に詳細に説明する明確に定義された入口及び出口ゲート経由を除いて、非トラステッド・コード112又はホスト・オペレーティング・システム(OS)114を含む、UMHPIC104外で実行するコードが、UMHPIC104内のコード又はデータをタンパリング又はスヌープすることを阻止するように、セキュリティ対応プロセッサ102はアプリケーション110を実行する。例えば、UMHPIC104外に記憶されたスレッド実行コードはUMHPIC104に記憶されたデータにアクセスすることが可能でない。セキュリティ対応プロセッサ102は、限定列挙でないが、データがプロセッサを出る際の暗号化、外部タンパリングを検出するためのデータの署名、I/Oデバイスからの直接メモリ・アクセス(DMA)動作の阻止、キャッシュの分離、又はプロセッサ上に直接記憶されたメモリの使用を含む種々の手法により、スヌープ又はタンパリングについてUMHPIC内のコード及びデータを保護し得る。これは、非トラステッド・コード(すなわち、UMHPIC104外で実行する何れかのコード)がUMHPIC104の内容をスヌープし、又はタンパリングすることに対する保護を提供する。
非トラステッド・コード112は、UMHPIC外のユーザ・モードにおいて実行する。セキュリティ対応プロセッサ102は、UMHPIC104内のコード及びデータを非トラステッド・コード112がアクセスすることを阻止するように非トラステッド・コード112を実行する。複数のUMHPICが考えられ、セキュリティ対応プロセッサ102は、別のUMHPICにおいて非トラステッド・コード112を実行し得る。別のUMHPICにおいて実行されても、非トラステッド・コード112は、UMPHPIC104の観点からは、「非トラステッド」である。一部のセキュリティ対応プロセッサでは、UMHPICはネスティングされていることがあり得る。すなわち、内部UMPHICは外部UMHPICにおけるコード、及び外部UMHPIC外のコード全てから保護される。ネスティングされたUMHPICの場合、外部UMHPICのコードは内部UMHPICによってトラスティングされていない。内部UMHPICのコード及びデータは、外部UMHPICのコードにより、タンパリングし、又はスヌープすることが可能でない。
アトーニー整理番号MS1−5267USを有し、本出願と同時に出願された関連する米国特許出願に記載されているような初期化プロセスを使用して、UMHPIC104が、クライアントのトラステッド・コード及びデータによって確立されており、非トラステッド・コード又はデータによって確立されていない旨の確信をクライアント・システムに提供し、それにより、アプリケーション110がシステム100上で適切に実行する旨の確信をクライアント・システムに提供するようにUMHPIC104を初期化するために使用し得る。
UMHPIC104は、クラウド・コンピューティング・サービス上でセキュアにアプリケーション110を実行するためにクライアント・システムがUMHPIC104を初期化する、「クラウド・コンピューティング」サービスなどのホスティングされたコンピューティング・サービスのコンテキストでインスタンス化し得る。よって、クライアント・システムの観点から、セキュリティ対応プロセッサ102及びUMHPIC104外のシステム100の部分は全て、「非トラステッド」である。本出願の実施例は、アプリケーション110がUMHPIC内で実行し、ホストOS114などの「非トラステッド」ホスト・オペレーティング・システムからオペレーティング・システム機能になおアクセスすることを可能にする。
種々の実施例では、アプリケーション110は1つ又は複数のサブコンポーネントを含む。共通の実施例は、アプリケーションのサブコンポーネントの1つ又は複数は、「ULTRA−LOW COST SANDBOXING FOR APPLICATION APPLIANCES」と題し、西暦2010年7月13日付けで出願された米国特許出願第12/834,895号において記載された分離OSサブシステムと同一又は同様であり得るライブラリ・オペレーティング・システム(OS)116を含む。米国特許出願第12/834,895号は、オペレーティング・システムの他の要素と別個の分離アプリケーション・プロセス内で種々のオペレーティング・システム要素(場合によっては、「ライブラリOS」として表される)を実行するよう構成された「アプリケーション・サンドボックス」を記載している。 米国特許出願第12/834,895号に記載されたアプリケーション・サンドボックスは、アプリケーションによるタンパリング又はスヌープからホスト・オペレーティング・システムを保護するが、必ずしも、ホスト・オペレーティング・システムによるタンパリング又はスヌープからアプリケーションを保護する訳でない。米国特許出願第12/834,895号に記載された分離OSサブシステムは、アプリケーションが使用することを企図されたオペレーティング・システム機能を直接提供するために豊富なAPIセットをアプリケーションに提供する。分離OSサブシステムは更に、基本コンピューテーション・サービスをアプリケーションに提供するために、オペレーティング・システム・プラットフォーム・アダプテーション・レイヤ(PAL)を介してホスト・オペレーティング・システムと通信するようアプリケーション・プログラミング・インタフェース(API)の小サブセットを利用する。ホストPAL118は、米国特許出願第12/834,895号に記載されたホスト・オペレーティング・システムPALと同一又は同様であり得る。ホストPAL118は、実施例では、トラップ命令を含み得る。別の実施例では、ホストPAL118は、低レベル・ホストOS114の抽象化から高レベル抽象化を作成するライブラリを含む。併せて、ホストPAL118(存在する場合)及びホストOS114はホスト・プラットフォーム130に含まれる。
ライブラリOS116は、(限定的でない一例では、上記「豊富な」サービス・セットなどの)オペレーティング・システム・サービスの第1のサブセットをアプリケーション110に提供し、(限定的でない一例では、上記基本コンピュテーショナル・サービスなどの)オペレーティング・システム・サービスの第2のサブセットをアプリケーション110に提供するようホストOS114を呼び出すよう構成し得る。本開示の実施例は、ライブラリOS116などのライブラリOSとともにパッケージングされたアプリケーション110などのアプリケーションの実行に限定されない。ホストPAL118及び/又はライブラリOS116は種々の実施例において割愛される。少なくとも1つの実施例では、ライブラリOS116が割愛され、アプリケーション110は、仮想マシン(今度は、「ゲスト」オペレーティング・システム及びアプリケーションを含み得る)を実行するユーザモード・プロセッサ・エミュレータを含む。
UMHPICアウェアPAL(U−PAL)120は、UMHPIC104内に部分的に存在し、ユーザモード・メモリ106の非トラステッド部分に部分的に存在する。種々の実施例では、アプリケーション110は、UMHPIC104内の実行のために未修正であり得、アプリケーション110は、その未修正バージョンでは、ホスト・プラットフォーム130によって提供されるサービス・インタフェースを介してホスト・プラットフォーム130と直接インタフェースするよう構成される。U−PAL120はしたがって、UMHPICにおいて実行するアプリケーション110と、UMHPIC外で実行するホスト・プラットフォーム130の1つ又は複数のコンポーネントとの間でのシステム・リソース要求相互作用を容易化する。更に、U−PAL120のセキュアなサービス・コンポーネント122は、1つ又は複数のセキュリティ関連動作を行う。U−PAL120は、ホスト・プラットフォーム130によって提供されるインタフェースをエミュレートするサービス・インタフェースをUMHPIC104内でアプリケーション110に提供する。UMHPIC104外に存在するU−PAL120の一部分は、プラットフォーム・インタフェースを介し、ホストPAL118経由などにより、ホストOS114とインタフェースするよう構成される。別の実施例では、ホストPAL118はU−PAL120のサブコンポーネントであり得る。ライブラリOS116及びホストPAL118を割愛するものなどの更に他の実施例では、U−PAL120はホストOS114によって提供されるサービス・インタフェースの全部又は一部をエミュレートする。例えば、U−PAL120は、アプリケーション110が使用するよう構成された豊富なAPIの部分的なセット又は完全なセットを提供し得る。
U−PAL120は、セキュア・サービス・コンポーネント122及びサンキング・コンポーネント124を含む。セキュアなサービス・コンポーネント122は全部、UMHPIC104内に存在し、セキュリティ関連動作を行う。セキュアなサービス・コンポーネントは、ホスト・プラットフォームによって返されるハンドルの検証、メモリ割り当ての検証、スレッド・スケジューリングが期待されたセマンティックスに準拠する(例えば、相互排除プリミティブは実際に相互排除を提供する)ことの保証、ホスト・プラットフォーム130に対して行われる種々のコールの結果の検証、前述の検証に必要なデータ構造の更新、データの暗号化、ディジタル署名又はメッセージ認証コードによるデータのインテグリティの保護、再生攻撃からのデータの保護、乱数のセキュアな提供などのセキュリティ関連動作を行う。アプリケーション110は、未修正であり、非トラステッド・コンピューティング・システム上のUMHPIC104内で実行するよう企図されていないことがあり得る。よって、アプリケーション110は、アプリケーション110がその上で実行するそのコンピューティング・システムがトラステッドであるという仮定で開発されていることがあり得る。よって、アプリケーション110は、必ずしも、ホストOS114が適切に挙動することを検証するよう構成される訳でない。しかし、コンピューティング・システム100は、UMHPIC104の観点からは非トラステッドであり得るので、ホスト・プラットフォーム130は、適切に挙動すると仮定されない。よって、セキュアなサービス・コンポーネント122は、期待され、適切なやり方で挙動する仮想プラットフォームをもたらすセキュリティ関連動作を行う。
限定的でない一例では、セキュアなサービス・コンポーネント122は、アプリケーション110及び/又はライブラリOS116によって行われるデバイス・アクセスのためのAPIコールに応じて、ホスト・プラットフォーム130によって返されるインタフェース・ハンドルが適切であることを検証する。例えば、インタフェース・ハンドルが、アプリケーション110及び/又はライブラリOS116に先行して提供されたインタフェース・ハンドルの複製であるか否かを判定し得る。前述のインタフェース・ハンドルは、I/Oデバイス、ネットワーキング・デバイス、又は他のタイプのデバイスなどのデバイスにアクセスするために使用し得る。限定的でない別の例では、セキュアなサービス・コンポーネント122は、ホスト・プラットフォーム130によって返されるメモリ割り当てが適切であることを検証する。例えば、新たなメモリ割り当てが、先行してアプリケーション110に割り当てられたメモリと重ならないことを保証し得る。前述の重なるメモリ割り当ては、アプリケーション110に、それ自身のデータを不意に上書きさせ、それにより、アプリケーション110に、予期しない態様で挙動させ得る。
限定的でない別の例では、セキュアなサービス・コンポーネント122は、ホスト・プラットフォーム130のファイル・システム上のファイルに書き込む対象のデータを保護するよう構成される。前述の保護は、「Multiplexing a secure counter to implement second level secure counters」と題する、Englandらによる西暦2008年9月2日付の米国特許第7421579号、Proceedings of the IEEE Symposium on Security and Privacy, IEEE, May 2011において公表されたBryan Parno、Jacob R. Lorch、John R. Douceur、James Mickens、及びJonathan M. McCuneによる「Memoir: Practical State Continuity for Protected Modules」などに開示された、暗号化、ディジタル署名若しくはメッセージ認証コードの付加、及び/又は再生攻撃に対する保護のための方策を含み得る。アプリケーション110自身は、保護されていない形態のファイル・システムにデータを書き込むよう構成し得る。上述のように、アプリケーション110は、アプリケーション110がその上で実行するそのコンピューティング・システムがトラステッドであるという仮定で開発されていることがあり得るからである。よって、アプリケーション110及び/又はライブラリOS116が、ファイル・システムにデータを書き込むためのAPIコールを出す場合、セキュアなサービス・コンポーネント122は、ホスト・プラットフォーム130に、コールにおける保護データを転送する前にアプリケーション110に代わってデータを保護する。セキュアなサービス・コンポーネントは更に、ホスト・プラットフォームから読み出されたデータを保護解除し、かつ/又は、検証するよう構成される。アプリケーション110が、ファイル・システムから保護データを受け取るよう構成されていないことがあり得、ディジタル署名又はメッセージ認証コードを検証しないことがあり得、再生攻撃について検査しないことがあり得るからである。別の実施例では、セキュアなサービス・コンポーネント122は、保護された仮想ファイル・システムを使用して、場合によっては、暗号化、ディジタル署名、メッセージ認証コード、及び/又は、再生攻撃を阻止するための方策を使用して、ファイル・システム・アクセス全てを実現し、ホスト・プラットフォーム130へのトラステッド・ファイル名及びメタデータの露出を避け得る。
アプリケーション110は、ホスト・プラットフォーム130からスレッド・スケジューリング・サービスを要求するよう構成し得る。しかし、非トラステッド誤挙動ホスト・プラットフォーム130が、アプリケーション110に誤って実行させてしまうようにスレッドをスケジューリングすることが考えられる。例えば、アプリケーション110の一スレッドがロックを獲得した場合、誤挙動オペレーティング・システムは別のスレッドが同じロックを同時に獲得することを可能にし、それにより、スレッドに同時に動作させ、予測できない結果につながり得る。よって、セキュアなサービス・コンポーネント122は、アプリケーション110及び/又はライブラリOS116に代わってスレッド・スケジューリングを処理するよう構成されたユーザモード・スレッド・スケジューラを含み得る。例えば、アプリケーション110及びライブラリOS116が一実行スレッドのみを有する場合、前述のユーザ・モード・スレッド・スケジューラは必要でないことがあり得る。アプリケーション110及び/又はライブラリOS116がスレッド・スケジューリングに関するホスト機能に対するコールを起動させた場合、セキュア・サービス・コンポーネント122は、ホスト・プラットフォーム130に転送するのではなく、スレッド・スケジューリング・コール自体を処理すると判定し得る。
U−PAL120のサンキング・コンポーネント124は、セキュアなサービス・コンポーネント122からホスト・プラットフォーム130にAPIコールを転送するための機能を提供する。サンキング・コンポーネントのトラステッド部分であるトラステッド・サンキング・コンポーネント126は、UMHPIC104内で実行し、コールに関連付けられたパラメータをホスト・プラットフォーム130に向けて整列化し、セキュリティ対応プロセッサ102によって提供された出口ゲートを起動させ、整列化されたパラメータを、非トラステッド・サンキング・コンポーネント128に転送するよう構成される。よって、トラステッド・サンキング・コンポーネント126は、セキュアなサービス・コンポーネント122からホスト・プラットフォーム130へのコールの輸送手段としてふるまう。
トラステッド・サンキング・コンポーネント126は更に、非トラステッド・サンキング・コンポーネント128によって起動された入口ゲートを介して、ホスト・プラットフォーム130からの実行要求、及びホスト・プラットフォーム130に対して行われたコールからの結果を受け取る。トラステッド・サンキング・コンポーネント126は、前述の実行要求及び結果に関連付けられた種々のパラメータを非整列化し、検証のためにセキュアなサービス・コンポーネント122に転送する。
サンキング・コンポーネント124の一部でもある非トラステッド・サンキング・コンポーネント128はUMHPIC104外で実行する。出口ゲートを介して、トラステッド・サンキング・コンポーネント126による、転送されたパラメータを非整列化し、UMHPIC104に代わって(ホストPAL118を介したホストOS114へのオペレーティング・システム・コールの起動などの)ホスト・プラットフォーム130への対応するコールを行うよう構成される。非トラステッド・サンキング・コンポーネント128は、実行要求、及びシステム・コールからの結果をホスト・プラットフォーム130から受け取り、結果及び実行要求の対応するパラメータを整列化し、入口ゲートを起動させ、前述の整列化コンポーネントをトラステッド・サンキング・コンポーネント126に転送する。よって、非トラステッド・サンキング・コンポーネント128は、ホスト・プラットフォーム130からの実行要求及びコールの結果の入口点としてふるまう。
共通の実施例では、非トラステッド・サンキング・コンポーネント128は、UMHPIC104外のユーザ・モードで実行し、明示的な出口ゲートを介してトラステッド・サンキング・コンポーネント126によって起動し得る。別の実施例では、非トラステッド・サンキング・コンポーネント128は、ホスト・プラットフォーム130のサブコンポーネントとして実行し、トラステッド・サンキング・コンポーネント126内で出されたトラップ命令又はシステム・コールから起動させ得る。
サンキング・コンポーネント124は、セキュリティ対応プロセッサ102の入口及び出口機能を起動させ、それにより、UMHPIC104と外部実行環境との間でパラメータ及び実行を転送し、逆も同様であることを可能にするよう構成される。別途明記したように、アプリケーション110は、未修正であり得、UMHPIC104内で実行することを知らないことがあり得、したがって、ホスト・プラットフォーム130にコールを転送するためにセキュリティ対応プロセッサ102の出口ゲートを起動させるよう構成されないことがあり得る。同様に、ホストPAL118は更に、UMHPIC104において実行するアプリケーションのサポートを提供するために未修正で有り得、したがって、アプリケーション110に実行要求、及びコールからの結果を返すためにセキュリティ対応プロセッサ102の入口ゲートを起動させるよう構成しないことがあり得る。よって、サンキング・コンポーネント124は、アプリケーション110及びホストPAL118に代わってセキュリティ対応プロセッサ102の入口及び出口ゲートを起動させるための機能を提供する。セキュアなサービス・コンポーネント122は、スレッド実行を処理し、非トラステッド記憶デバイスに書き込まれたアプリケーション・データを保護し、アプリケーション110に代わってホスト・プラットフォーム130の挙動を検証し、対応するセキュリティ関連動作を行うための機能を提供する。併せて、サンキング・コンポーネント124及びセキュアなサービス・コンポーネント122は、「非トラステッド」ホストOS114によって提供されるシステム・リソースをなお利用しながら、UMHPIC104内でアプリケーション110が実行することを可能にする。
セキュアな実行環境を提供するための例示的なコンピューティング・デバイス
図2は、実施例による、セキュアな実行環境を提供するために使用可能な例示的なコンピューティング・システムのブロック図である。コンピューティング・システム200は、セキュアな実行環境を実現することができる何れかの適切なコンピューティング・デバイスとして構成し得る。限定的でない種々の例によれば、適切なコンピューティング・デバイスは、パソコン(PC)、サーバ、サーバ・ファーム、データセンタ、特殊用途向コンピュータ、タブレット型コンピュータ、ゲーム・コンソール、スマートフォン、これらの組み合わせ、又は、セキュアな実行環境の全部又は一部を記憶し、実行することができる何れかの他のコンピューティング・デバイスを含み得る。
例示的な一構成では、コンピューティング・システム200は、1つ又は複数のプロセッサ202及びメモリ204を備える。プロセッサ202は、セキュリティ対応プロセッサ102と同一又は同様な1つ又は複数のセキュリティ対応プロセッサを含む。プロセッサ202は、セキュリティ対応プロセッサとは別の1つ又は複数の汎用又は特殊用途向プロセッサを含み得る。コンピューティング・システム200は更に、種々の他のシステムとの通信を可能にする通信接続206を含み得る。コンピューティング・システム200は更に、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等などの1つ又は複数の入力デバイス208、及び、通信するようプロセッサ202及びメモリ204に結合された、ディスプレイ、スピーカ、プリンタ等などの1つ又は複数の出力デバイス210を含み得る。
メモリ204は、プロセッサ202上でロード可能であり、実行可能なプログラム命令、前述のプログラムの実行中に生成され、かつ/又は前述のプログラムとともに使用可能なデータを記憶し得る。例証された例では、メモリ204は、コンピューティング・システム200の基本システム機能を提供し、とりわけ、コンピューティング・システム200の他のプログラム及びモジュールの動作に対応するオペレーティング・システム212を記憶する。オペレーティング・システム212は、ホストOS114と同一又は同様であり得る。
メモリ204の一部分は、本明細書中に別途明記したようにUMHPIC内に含まれ得る。メモリ204は、プロセッサと同じ物理チップ上のメモリと、他のチップ上のメモリとに分けることができる。メモリ204は、U−PAL120と同一又は同様であり得るU−PAL214を含む。メモリ204は、アプリケーション110と同一又は同様であり得るアプリケーション216を含む。アプリケーション216は、ホストPAL118と同一又は同様であり得るホストPAL218とインタフェースするよう構成された、本明細書中に別途明記されたようなライブラリOSを含み得る。メモリ204は、非トラステッド・コード112と同一又は同様であり得る非トラステッド・コード220を含む。
アプリケーションをUMHPICにおいて実行するための例示的な動作
図3は、UMHPIC104などのUMHPICにおいて実行されるアプリケーション110などのアプリケーションにセキュリティを提供するための例示的なプロセス300を示すフロー図である。302では、アプリケーションは、本明細書中に別途明記したように、UMHPIC内で実行する。
304では、U−PAL120などのU−PALは、UMHPIC内で実行されるアプリケーションと、UMHPIC外で実行されるホスト・プラットフォームとの間のリソース割り当て要求相互作用を容易化する。上記容易化は、例えば、本明細書中に別途明記するように、UMHPICとの間で、アプリケーションからの要求、及びホスト・プラットフォームからの結果を転送する工程を含み得る。容易化は、本明細書中に別途明記したように、入口及び出口ゲートを起動させる工程、及び、パラメータを整列化する工程を含み得る。容易化は、ホスト・プラットフォームにシステム・リソース要求を転送する工程、及びホスト・プラットフォームから、関連付けられた結果を受け取る工程を含み得る。
306では、セキュアなサービス・コンポーネント122などの、U−PALのセキュアなサービス・コンポーネントは容易化の一部として、セキュリティ関連動作を行う。セキュリティ関連動作は、種々の実施例では、本明細書で別途明記したように、システム・サービス要求相互作用に関連付けられたアプリケーションからのデータを暗号化する工程と、アプリケーションのシステム・サービス要求相互作用に関連付けられたデータを復号する工程と、システム・サービス要求相互作用に関する情報を記憶するための記帳データ構造を維持する工程と、システム・サービス要求相互作用の一部としてホスト・プラットフォームによって提供されるリソース割り当て結果の正確性を検証する工程と、重なるメモリ割り当てについて検査する工程と、デバイス・ハンドルが重複デバイス・ハンドルであるか否かを判定する工程と、スレッド・スケジューリング・サービスを行う工程とを含み得る。他のセキュリティ関連動作は、本開示の範囲から逸脱しない限り、行い得る。
図4は、UMHPIC内で実行するアプリケーションと、UMHPIC外で実行する、ホスト・プラットフォーム130などのホスト・プラットフォームとの間のリソース要求相互作用を容易化する例示的なプロセス400を示すフロー図である。401では、アプリケーションはUMHPIC内で実行する。
402では、UMHPIC内で実行するアプリケーションは、システム・サービスに対するコールを出す。UMHPICは、セキュリティ対応プロセッサ102などのセキュリティ対応プロセッサによって提供される。セキュリティ対応プロセッサは、UMHPIC外に実行を転送するための少なくとも1つの出口ゲート、及びUMHPIC内に実行を転送するための少なくとも1つの入口ゲートを提供する。コールは、ライブラリOS116などのライブラリOSを含むアプリケーションの何れのサブコンポーネントからも来ることがあり得、ライブラリOSを含む何れかのサブコンポーネント及びアプリケーションは、UMHPIC内で実行するよう未修正であり得、UMHPIC外に実行を転送するためのネイティブ機能を有していないことがあり得る。
404では、U−PAL120のセキュアなサービス・コンポーネント122などの、U−PALのセキュアなサービス・コンポーネントは、アプリケーションからコールを受け取る。セキュアなサービス・コンポーネントはUMHPIC内で実行する。
405では、U−PALは、ホスト・プラットフォームに送出される前にコール・パラメータ内のデータを隠すための動作を行い得る。例えば、U−PALは、ホスト・プラットフォームにより、永続性記憶装置に書き込まれるデータを暗号化し得る。
406では、U−PAL120のトラステッド・サンキング・コンポーネント126などの、U−PALのトラステッド・サンキング・コンポーネントは、コールのパラメータを整列化する。スカラー値の場合などの、一部のパラメータの場合、整列化演算はナル演算であり得る。他のパラメータの場合、整列化演算は、より複雑であり得る。例えば、コールが、ディスクにバッファを書き込むためのものである場合、トラステッド・サンキング・コンポーネントは、保護メモリ領域外の非保護領域に一時バッファを割り当て、保護メモリ領域内のバッファから非保護メモリ内の一時バッファに内容を複製し、一時バッファを指し示すよう、コール・パラメータ内のバッファ・ポインタを更新し得る。別の例では、パラメータは、ポインタリッチ・データ構造を含み得、トラステッド・サンキング・コンポーネントは一時バッファに直列化し得る。
408では、UMHPIC外で実行する、U−PAL120の非トラステッド・サンキング・コンポーネント128などの、非トラステッド・サンキング・コンポーネントのコードに実行を転送するよう、セキュリティ対応プロセッサによって提供されるUMHPICの出口ゲートを起動させる。
410では、非トラステッド・サンキング・コンポーネントはコール・パラメータを非整列化する。スカラー値の場合などの、一部のパラメータの場合、非整列化演算はナル演算であり得る。他のパラメータの場合、非整列化演算は、より複雑であり得る。例えば、非整列化演算は、ポインタリッチ・データ構造を非直列化し得る。種々の実施例は、性能を向上させるための、非トラステッド・サンキング・コンポーネントとトラステッド・サンキング・コンポーネントとの間の最適化及び/余分の連係を含み得る。整列化及び非整列化のための種々の最適化を使用し得る。
412では、非トラステッド・サンキング・コンポーネントは、ホスト・プラットフォーム130などのホスト・プラットフォームにコールを出す。414では、ホスト・プラットフォームは、要求されたシステム・サービスを満たす。
416では、実行がホスト・プラットフォームから非トラステッド・サンキング・コンポーネントに返ると、非トラステッド・コンポーネントはコールの結果を整列化する。スカラー値の場合などの、一部の結果の場合、整列化演算はナル演算であり得る。他の結果の場合、整列化演算は、より複雑であり得る。例えば、整列化演算は、ポインタリッチ・データ構造を直列化し得る。
418では、非トラステッド・サンキング・コンポーネントは、UMHPIC内で実行するトラステッド・サンキング・コンポーネントのコードに実行を転送するよう、セキュリティ対応プロセッサによって提供されるUMHPICの入口ゲートを起動させる。
420では、トラステッド・サンキング・コンポーネントは、コールの結果を非整列化する。スカラー値の場合などの、一部の結果の場合、非整列化演算はナル演算であり得る。他の結果の場合、非整列化演算は、より複雑であり得る。例えば、コールが、ディスクからバッファを読み出すためのものである場合、トラステッド・サンキング・コンポーネントは、非保護メモリ内の一時バッファから保護メモリ領域内のバッファにデータを複製し、最終バッファを指し示すよう、結果パラメータにおけるバッファ・ポインタを更新し得る。別の例では、パラメータは、ポインタリッチ・データ構造を含み得、トラステッド・サンキング・コンポーネントは非直列化し得る。
421では、セキュアなサービス・コンポーネントは、ホスト・プラットフォームによって提供された記憶デバイスから読み出されたデータを復号し得、更に、データのインテグリティを検証するために、ディジタル署名又はメッセージ認証コードを検証し得る。更に、再生攻撃に対して保護するよう企図された検証を行い得る。前述の工程は、例えば、ハード・ディスク上のページ・ファイルから読み出されるにつれ、仮想メモリ・ページに適用し得る。本明細書で別途明記するように、セキュアなサービス・コンポーネントは、UMHPICにおいて実行するアプリケーションにより、ホスト記憶システムに書き込まれたデータを保護する。これは、ホスト・プラットフォームによって提供される何れかのファイル・システムを含むホスト・プラットフォーム及びその記憶サービスが、UMHPICにおいて実行するアプリケーションによってトラスティングされていないからである。しかし、アプリケーション自体は、UMHPICにおいて実行するよう未修正であり得、したがって、保護することなくファイル・システムにデータを書き込むよう構成し得る。よって、ファイル・システムから読み出されたデータは、セキュアなサービス・コンポーネントにより、復号され、かつ/又は検証される。アプリケーションが、保護データを受け取るよう構成されておらず、復号及び検証に装備されていないことがあり得るからである。実施例では、復号工程421は、最適化として非整列化工程420と組み合わせ得る。
422では、セキュアなサービス・コンポーネントは、結果が首尾一貫し、信頼できるということを検証するために、返ってきた結果を記帳データ構造に対して検証する。実施例では、コールは、システム・リソース又はサービスに対する要求であったかもしれず、セキュアなサービス・コンポーネントは、システム要求に対する要求において返された結果が、要求されたリソース又はサービスに対して有効であるということを検証する。種々の実施例では、システム・リソースは、割り当てられたメモリ・リソース、ネットワーキング・リソース、入出力リソース、又は他のシステム・リソースであり得る。
セキュアなサービス・コンポーネントは、ホスト・プラットフォームからの何れかの非トラステッド・サービスの出力を検証するために記帳データ構造を利用し得る。例えば、記帳データ構造は、ホスト・プラットフォームからのインタフェース・ハンドル及びメモリ割り当てが適切であるということをセキュアなサービス・コンポーネントが検証することを可能にし得る。結果がリソース又はインタフェース・ハンドルである実施例では、セキュアなサービス・コンポーネントは、ハンドル再生攻撃を避けるために、返されたリソース又はインタフェース・ハンドルが、先行して提供されたリソース・ハンドルの複製でないということを検証する。結果がアプリケーションに割り当てられたメモリの表示である実施例では、セキュアなサービス・コンポーネントは、割り当てられたメモリが、(アプリケーションに、それ自身のデータを上書きさせ、予期しない態様で挙動させ得る)アプリケーションへの先行割り当てが行われておらず、アプリケーションにアクセス可能であり、予約された、又は無効のアドレス範囲内に位置していないということを検証する。共通の実施例では、記帳データ構造は、メモリ割り当て、リソース・ハンドル、及びスレッド識別子の1つ又は複数に関するデータを記憶するための構造を含む。
424では、コールの結果の記帳データ構造に対する検証により、結果が有効であり、したがって、トラステッドであり得ると判定された場合、実行は進む。
426で、422における検証の結果が、結果の1つ又は複数が無効であるということを含んでいる場合、セキュアなサービス・コンポーネントは、障害結果をアプリケーションに返す。一部の実施例では、障害結果(例えば、ディスク読み出しサービス要求に対する、周知の「ディスク読み出しエラー」結果)が、そのサービス要求に関連したエラー・コードである。一部の実施例では、障害は、アプリケーションを直ちに終了させる重大な障害としてアプリケーションに供給され得る。
428では、422における検証の結果が、結果が有効であるということを含む場合、セキュアなサービス・コンポーネントは、サービス要求のタイプに適切であるとして記帳データ構造を更新する。例えば、サービス要求が、新たなメモリ領域を割り当てる旨のものである場合、セキュアなサービス・コンポーネントはメモリ割り当てのテーブルを更新し得る。セキュアなサービス・コンポーネントは、UMPHICの保護メモリ領域に新たなメモリ領域を追加する旨の命令をセキュリティ対応プロセッサに向けて出し得る。
430では、セキュアなサービス・コンポーネントは、コールの首尾良く行われた旨の結果をアプリケーションに提供し、アプリケーションはその実行を続ける。
図5は、ホスト・プラットフォーム130などの、ホスト・プラットフォームからの非同期イベントの実行及び/又は通知の要求を処理するための例示的なプロセス500を示すフロー図である。502では、非トラステッド・サンキング・コンポーネント128などの非トラステッド・サンキング・コンポーネントは、ホストOS114又はホストPAL118などのホスト・プラットフォームから実行要求又は非同期通知を受け取る。種々の明確に定義されたパラメータは、要求及び非同期通知を伴う。
504では、非トラステッド・サンキング・コンポーネントは、要求及び通知を伴うパラメータを整列化する。すなわち、非トラステッド・サンキング・コンポーネントは、UMHPIC内で実行する処理に対するエントリ・ゲートを介して、UMHPIC104などのUMHPICに転送するのに適切にするようパラメータを変換する。
506では、非トラステッド・サンキング・コンポーネントは、UMHPICに、通知及び要求に関連付けられた整列化されたパラメータを転送するよう、セキュリティ対応プロセッサによって提供される入口ゲートを起動させる。更に、508では、トラステッド・サンキング・コンポーネント126などの、UMHPIC内で実行するトラステッド・サンキング・コンポーネントは、整列化パラメータを、入口ゲートを介して受け取る。
510では、トラステッド・サンキング・コンポーネントは、非トラステッド・サンキング・レイヤから受け取られたパラメータを非整列化する。パラメータを非整列化する工程は、実行要求又は非同期通知を再生成するよう整列化パラメータを変換する工程を伴う。512では、トラステッド・サンキング・コンポーネントは、セキュアなサービス・コンポーネント122などの、UMHPIC内部で実行するセキュアなサービス・コンポーネントに非整列化パラメータを転送する。
514では、セキュアなサービス・コンポーネントはセキュリティ関連動作を行う。前述の動作は、ホスト・プラットフォームによって提供される実行要求又は非同期通知が有効であることを検証する工程を含み得る。
516では、セキュアなサービス・コンポーネントは、UMHPIC内で実行するアプリケーション及び/又はライブラリOSに実行要求又は非同期通知を転送する。
図3乃至図5は、種々の実施例による例示的なプロセスを示すフロー図を表す。前述のプロセスの動作は、個々のブロックにおいて例証し、前述のブロックを参照して要約する。前述のプロセスは、論理フロー・グラフとして示し、その各動作は、ハードウェア、ソフトウェア、又はそれらの組み合わせで実現可能な動作セットを表し得る。ソフトウェアのコンテキストでは、動作は、1つ又は複数のプロセッサによって実行されると、開示された動作を行わせるよう1つ又は複数のプロセッサをイネーブルする1つ又は複数のコンピュータ記憶媒体に記憶されたコンピュータ実行可能な命令を表す。一般に、コンピュータ実行可能な命令は、特定の機能を行い、又は特定の抽象データ・タイプを実現するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造等を含む。動作が記載されている順序は、限定と解されることを意図しておらず、プロセスを実現するよう、記載された何れかの数の動作を何れかの順序で組み合わせ、サブ動作に分け、かつ/又は、並列に行うことが可能である。本開示の種々の実施例によるプロセスは、論理フロー・グラフに表す動作の一部のみ又は全部を含み得る。
コンピュータ読み取り可能な媒体
使用されるコンピューティング・デバイスの構成及びタイプに応じて、図2におけるコンピューティング・システム200のメモリ204は、(ランダム・アクセス・メモリ(RAM)などの)揮発性メモリ及び/又は(リードオンリ・メモリ(ROM)、フラッシュ・メモリ等などの)不揮発性メモリを含み得る。メモリ204は更に、限定列挙でないが、コンピュータ・システム200用のコンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、及び他のデータの不揮発性記憶装置を提供し得る、テープ記憶デバイス、光学式記憶デバイス、磁気記憶デバイス、及び/又はフラッシュ・メモリを含む更なる着脱可能でない記憶デバイス及び/又は着脱可能な記憶デバイスを含み得る。
メモリ204は、コンピュータ読み取り可能な媒体の例である。コンピュータ読み取り可能な媒体は、少なくとも2つのタイプのコンピュータ読み取り可能な媒体(すなわち、コンピュータ記憶媒体及び通信媒体)を含む。
コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、又は他のデータなどの情報の記憶のための何れかのプロセス又は手法において実現される揮発性並びに不揮発性の、着脱可能な媒体及び着脱可能でない媒体を含む。コンピュータ記憶媒体は、限定列挙でないが、相変化メモリ(PRAM)、スタティック・ランダムアクセス・メモリ(SRAM)、ダイナミック・ランダムアクセス・メモリ(DRAM)、他のタイプのランダムアクセス・メモリ(RAM)、リードオンリ・メモリ(ROM)、電気的に消去可能なプログラマブル・リードオンリ・メモリ(EEPROM)、フラッシュ・メモリ又は他のメモリ手法、コンパクト・ディスク・リードオンリ・メモリ(CD−ROM)、ディジタル多用途ディスク(DVD)又は他の光学式記憶デバイス、磁気カセット、磁気テープ、磁気ディスク記憶デバイス、若しくは他の磁気記憶デバイス、又はコンピューティング・デバイスによるアクセスのために情報を記憶するために使用することが可能な何れかの他の非伝送媒体を含む。
対照的に、通信媒体は、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、又は他のデータを、搬送波などの変調データ信号、又は他の伝送機構において実施し得る。本明細書及び特許請求の範囲では、コンピュータ記憶媒体は通信媒体を含まない。
終わりに
本開示は、構造的な構成及び/又は方法論的な動作に特有の文言を使用しているが、本発明は上記特定の構成又は動作に制限されない。むしろ、上記特定の構成及び動作は、本発明を実現する例証的な形態として開示している。

Claims (10)

  1. ーザモード・ハードウェア保護アイソレーション・コンテナ(UMHPIC)においてアプリケーションを実行する工程であって、前記UMHPICは、少なくとも、前記UMHPIC外に実行を転送するための出口ゲート、及び前記UMHPIC内に実行を返すための入口ゲートを提供するセキュリティ対応プロセッサによって保護される工程と、
    前記UMHPIC外で実行するホスト・プラットフォームの1つ又は複数のコンポーネントと、前記アプリケーションとの間でのシステム・サービス要求相互作用を、前記UMHPICにおいて実行するUMHPICアウェア・プラットフォーム・アダプテーション・レイヤによって容易化する工程と、
    前記容易化する工程の一部としてセキュリティ関連動作を、前記UMHPICアウェア・プラットフォーム・アダプテーション・レイヤのセキュアなサービス・コンポーネントによって行う工程と
    を含む方法。
  2. 記セキュリティ関連動作は、前記アプリケーションからであり、前記システム・サービス要求情報に関連付けられたデータを暗号化する工程を含む、請求項1記載の方法。
  3. 記セキュリティ関連動作は、前記システム・サービス要求相互作用に関する情報を記憶するために記帳データ構造を維持する工程を含む、請求項1記載の方法。
  4. ーザモード・ハードウェア保護アイソレーション・コンテナ(UMHPIC)との間で実行を転送するための少なくとも入口ゲート及び出口ゲートそれぞれを提供するよう構成されたセキュリティ対応プロセッサを含む1つ又は複数のプロセッサと、
    前記UMHPICを含むメモリと、
    前記UMHPIC外で実行するホスト・プラットフォームの1つ又は複数のコンポーネントと、前記UMHPIC内で実行するアプリケーションとの間のシステム・サービス要求相互作用を容易化するために、少なくとも部分的に前記UMHPIC内で前記セキュリティ対応プロセッサによって実行可能なUMHPICアウェア・プラットフォーム・アダプテーション・レイヤと
    を備え、前記UMHPICアウェア・プラットフォーム・アダプテーション・レイヤは、
    前記システム・サービス要求相互作用の前記容易化する工程の一部としてセキュリティ関連動作を行うよう、前記UMHPIC内で前記セキュリティ対応プロセッサによって実行可能なセキュアなサービス構成部分を含むシステム。
  5. 記システム・サービス要求相互作用は、リソースの割り当てに対する要求であり、前記セキュリティ関連動作は、前記システム・サービス要求相互作用の一部として前記ホスト・プラットフォームによって提供されるリソース割り当て結果の正確性の検証を含む、請求項4記載のシステム。
  6. 記リソース割り当て結果はメモリ・リソースの表示を含み、前記リソース割り当て結果の前記正確性の前記検証は、重なるメモリ割り当ての検査を含む、請求項5記載のシステム。
  7. 記セキュリティ関連動作は、スレッド・スケジューリング・サービスの実行を含む、請求項4記載のシステム。
  8. コンピューティング・デバイスに、
    ユーザモード・ハードウェア保護アイソレーション・コンテナ(UMHPIC)外で実行するホスト・プラットフォームと、前記UMHPIC内で実行するアプリケーションとの間のシステム・リソース要求相互作用を容易化する工程であって、前記UMHPICは、少なくとも、前記UMHPIC外に実行を転送するための出口ゲート、及び前記UMHPIC内に実行を返すための入口ゲートを提供するよう構成されたセキュリティ対応プロセッサによって提供される工程と、
    前記システム・リソース要求相互作用の前記容易化する工程の一部としてセキュリティ関連動作を前記アプリケーションにかわって行う工程と
    を行わせるコンピュータプログラム
  9. ステム・サービス要求相互作用は、リソースの割り当てに対する要求であり、前記セキュリティ関連動作は、前記システム・サービス要求相互作用の一部として前記ホスト・プラットフォームによって提供されるリソース割り当て結果の正確性の検証を含む、請求項8記載のコンピュータプログラム
  10. 記リソース割り当て結果はデバイス・ハンドルを含み、前記リソース割り当て結果の前記正確性の前記検証は、前記デバイス・ハンドルが複製デバイス・ハンドルであるか否かを判定する工程を含む、請求項9記載のコンピュータプログラム
JP2014547269A 2011-12-12 2012-12-04 ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法 Active JP6083097B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/323,562 US9389933B2 (en) 2011-12-12 2011-12-12 Facilitating system service request interactions for hardware-protected applications
US13/323,562 2011-12-12
PCT/US2012/067660 WO2013090044A1 (en) 2011-12-12 2012-12-04 Facilitating system service request interactions for hardware-protected applications

Publications (3)

Publication Number Publication Date
JP2015500543A JP2015500543A (ja) 2015-01-05
JP2015500543A5 JP2015500543A5 (ja) 2016-01-07
JP6083097B2 true JP6083097B2 (ja) 2017-02-22

Family

ID=48496285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014547269A Active JP6083097B2 (ja) 2011-12-12 2012-12-04 ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法

Country Status (12)

Country Link
US (1) US9389933B2 (ja)
EP (1) EP2791857B1 (ja)
JP (1) JP6083097B2 (ja)
KR (1) KR102073433B1 (ja)
CN (1) CN103136468B (ja)
AU (1) AU2012352754B2 (ja)
BR (1) BR112014014153B1 (ja)
CA (1) CA2857586C (ja)
IN (1) IN2014CN03961A (ja)
MX (1) MX345408B (ja)
RU (1) RU2621001C2 (ja)
WO (1) WO2013090044A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9141979B1 (en) * 2013-12-11 2015-09-22 Ca, Inc. Virtual stand-in computing service for production computing service
US20150278512A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
GB2525596B (en) * 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling
US9922200B2 (en) 2014-06-30 2018-03-20 Microsoft Technology Licensing, Llc Securely storing content within public clouds
US10044695B1 (en) 2014-09-02 2018-08-07 Amazon Technologies, Inc. Application instances authenticated by secure measurements
US10079681B1 (en) 2014-09-03 2018-09-18 Amazon Technologies, Inc. Securing service layer on third party hardware
US9491111B1 (en) * 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
US10230529B2 (en) * 2015-07-31 2019-03-12 Microsft Technology Licensing, LLC Techniques to secure computation data in a computing environment
GB201516227D0 (en) * 2015-09-14 2015-10-28 Horne Stephen And Hemmer Fabian And Von Oven Peter Running applications on a computer device
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US9798641B2 (en) * 2015-12-22 2017-10-24 Intel Corporation Method to increase cloud availability and silicon isolation using secure enclaves
US10936331B2 (en) * 2017-02-23 2021-03-02 International Business Machines Corporation Running a kernel-dependent application in a container
US10146707B2 (en) 2017-03-14 2018-12-04 International Business Machines Corporation Hardware-based memory protection
US10795647B2 (en) * 2017-10-16 2020-10-06 Adobe, Inc. Application digital content control using an embedded machine learning module
CN109040137B (zh) * 2018-10-10 2021-04-09 杭州安恒信息技术股份有限公司 用于检测中间人攻击的方法、装置以及电子设备
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
CN109922056B (zh) 2019-02-26 2021-09-10 创新先进技术有限公司 数据安全处理方法及其终端、服务器
US11409619B2 (en) 2020-04-29 2022-08-09 The Research Foundation For The State University Of New York Recovering a virtual machine after failure of post-copy live migration
CN113297566B (zh) * 2020-05-15 2024-04-02 阿里巴巴集团控股有限公司 沙箱实现方法、装置、设备和存储介质
US11475140B1 (en) * 2020-11-24 2022-10-18 Amazon Technologies, Inc. Enclave-based cryptography services in edge computing environments
CN113791865A (zh) * 2021-09-08 2021-12-14 山石网科通信技术股份有限公司 容器安全的处理方法及装置、存储介质和处理器

Family Cites Families (195)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4874164A (en) 1986-07-18 1989-10-17 Commodore-Amiga, Inc. Personal computer apparatus for block transfer of bit-mapped image data
US5819091A (en) 1994-12-22 1998-10-06 Arendt; James Wendell User level control of degree of client-side processing
US5754830A (en) 1996-04-01 1998-05-19 Openconnect Systems, Incorporated Server and web browser terminal emulator for persistent connection to a legacy host system and method of operation
US5815686A (en) 1996-09-12 1998-09-29 Silicon Graphics, Inc. Method and apparatus for address space translation using a TLB
US5926631A (en) 1997-08-15 1999-07-20 International Business Machines Corporation Network computer emulator systems, methods and computer program products for personal computers
KR20010040424A (ko) * 1998-01-22 2001-05-15 인텔로지스 공통 데이타교환 게이트웨이의 방법 및 장치
US6721288B1 (en) 1998-09-16 2004-04-13 Openwave Systems Inc. Wireless mobile devices having improved operation during network unavailability
US7136645B2 (en) 1998-10-09 2006-11-14 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8060656B2 (en) 1998-10-09 2011-11-15 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7293107B1 (en) 1998-10-09 2007-11-06 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6546425B1 (en) 1998-10-09 2003-04-08 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6357003B1 (en) 1998-10-21 2002-03-12 Silicon Graphics, Inc. Advanced firmware boot sequence x86 computer system that maintains legacy hardware and software compatibility
US7882247B2 (en) 1999-06-11 2011-02-01 Netmotion Wireless, Inc. Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
US6668376B1 (en) 2000-01-07 2003-12-23 Ricoh Company, Ltd. System and method for automatically loading a device driver
US7287259B2 (en) 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs
US6665731B1 (en) 2000-05-16 2003-12-16 Intel Corporation Method for remotely accessing component management information
US6760815B1 (en) 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6865591B1 (en) 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US6813670B1 (en) 2000-09-26 2004-11-02 Microsoft Corporation Automatic server-side plug-and-play without user intervention
WO2002059773A1 (en) 2000-12-04 2002-08-01 Thinkshare Corp. Modular distributed mobile data applications
US6832273B2 (en) 2000-12-21 2004-12-14 Microsoft Corporation System and method to specify extended configuration descriptor information in USB devices
US20030037237A1 (en) 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
US6931429B2 (en) * 2001-04-27 2005-08-16 Left Gate Holdings, Inc. Adaptable wireless proximity networking
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US6876996B2 (en) 2001-11-14 2005-04-05 Sun Microsystems, Inc. Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
US6981268B2 (en) 2001-12-05 2005-12-27 Microsoft Corporation System and method for persisting and resolving application assembly binds
US7185359B2 (en) 2001-12-21 2007-02-27 Microsoft Corporation Authentication and authorization across autonomous network systems
US7275105B2 (en) 2002-01-16 2007-09-25 Laszlo Systems, Inc. Enabling online and offline operation
KR100444996B1 (ko) 2002-02-08 2004-08-21 삼성전자주식회사 인터넷을 통한 디바이스 드라이버 자동 설치 및 유지 보수방법 및 그 시스템
US7577722B1 (en) 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US6954852B2 (en) 2002-04-18 2005-10-11 Ardence, Inc. System for and method of network booting of an operating system to a client computer using hibernation
US7676538B2 (en) 2002-05-02 2010-03-09 Bea Systems, Inc. Systems and methods for application view transactions
US9171049B2 (en) 2002-06-13 2015-10-27 Salesforce.Com, Inc. Offline simulation of online session between client and server
US8255548B2 (en) 2002-06-13 2012-08-28 Salesforce.Com, Inc. Offline web services API to mirror online web services API
US7421579B2 (en) 2002-06-28 2008-09-02 Microsoft Corporation Multiplexing a secure counter to implement second level secure counters
US7065607B2 (en) 2002-06-28 2006-06-20 Microsoft Corporation System and method for implementing a counter
US20040015537A1 (en) 2002-07-15 2004-01-22 Richard Doerksen Handheld client framework system
US7484208B1 (en) 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7536688B2 (en) 2003-02-28 2009-05-19 Azul Systems Segmented virtual machine
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7788669B2 (en) 2003-05-02 2010-08-31 Microsoft Corporation System for isolating first computing environment from second execution environment while sharing resources by copying data from first portion to second portion of memory
US7444337B2 (en) 2004-03-09 2008-10-28 Ntt Docomo, Inc. Framework and associated apparatus for the adaptive replication of applications with server side code units
US7530103B2 (en) 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment
US7383537B2 (en) 2003-08-20 2008-06-03 Microsoft Corporation Debugging an application that employs rights-managed content
US7519814B2 (en) 2003-09-15 2009-04-14 Trigence Corp. System for containerization of application sets
US20080222160A1 (en) 2003-09-15 2008-09-11 Macdonald Craig Method and system for providing a program for execution without requiring installation
US7774762B2 (en) 2003-09-15 2010-08-10 Trigence Corp. System including run-time software to enable a software application to execute on an incompatible computer platform
US20050076186A1 (en) 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US7441011B2 (en) 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US20050091226A1 (en) 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support
US7496768B2 (en) 2003-10-24 2009-02-24 Microsoft Corporation Providing secure input and output to a trusted agent in a system with a high-assurance execution environment
US20050108171A1 (en) 2003-11-19 2005-05-19 Bajikar Sundeep M. Method and apparatus for implementing subscriber identity module (SIM) capabilities in an open platform
US20050177635A1 (en) 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US7272782B2 (en) 2003-12-19 2007-09-18 Backweb Technologies, Inc. System and method for providing offline web application, page, and form access in a networked environment
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7444621B2 (en) 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
US7940932B2 (en) * 2004-04-08 2011-05-10 Texas Instruments Incorporated Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor
US7574709B2 (en) 2004-04-30 2009-08-11 Microsoft Corporation VEX-virtual extension framework
US7584502B2 (en) 2004-05-03 2009-09-01 Microsoft Corporation Policy engine and methods and systems for protecting data
US20060005047A1 (en) * 2004-06-16 2006-01-05 Nec Laboratories America, Inc. Memory encryption architecture
US7769720B2 (en) 2004-06-16 2010-08-03 Hewlett-Packard Development Company, L.P. Systems and methods for migrating a server from one physical platform to a different physical platform
US9083765B2 (en) 2004-07-02 2015-07-14 Oracle International Corporation Systems and methods of offline processing
US7587755B2 (en) 2004-07-02 2009-09-08 Citrix Systems, Inc. System and method for executing interactive applications with minimal privileges
US7808906B2 (en) 2004-07-23 2010-10-05 Citrix Systems, Inc. Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements
US20090024757A1 (en) 2004-07-30 2009-01-22 Proctor David W Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols
US7613862B2 (en) 2004-08-10 2009-11-03 Intel Corporation Embedded driver for bus-connected device
CN101006433B (zh) 2004-08-25 2012-01-11 日本电气株式会社 信息通信装置和程序执行环境控制方法
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US20060174252A1 (en) 2004-11-18 2006-08-03 Besbris David G Service versioning
US9450966B2 (en) 2004-11-29 2016-09-20 Kip Sign P1 Lp Method and apparatus for lifecycle integrity verification of virtual machines
US7721138B1 (en) 2004-12-28 2010-05-18 Acronis Inc. System and method for on-the-fly migration of server from backup
US20060156418A1 (en) 2005-01-10 2006-07-13 Ibm Corporation Method and apparatus for preventing unauthorized access to data
US20060161982A1 (en) 2005-01-18 2006-07-20 Chari Suresh N Intrusion detection system
US9525666B2 (en) 2005-01-31 2016-12-20 Unisys Corporation Methods and systems for managing concurrent unsecured and cryptographically secure communications across unsecured networks
US7996493B2 (en) 2005-03-10 2011-08-09 Microsoft Corporation Framework for managing client application data in offline and online environments
US7496495B2 (en) 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US7685593B2 (en) 2005-05-12 2010-03-23 Microsoft Corporation Systems and methods for supporting multiple gaming console emulation environments
US7363463B2 (en) 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US20060294518A1 (en) 2005-06-28 2006-12-28 Richmond Michael S Method, apparatus and system for a lightweight virtual machine monitor
US7844442B2 (en) 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US20070074191A1 (en) 2005-08-30 2007-03-29 Geisinger Nile J Software executables having virtual hardware, operating systems, and networks
US20070283324A1 (en) 2005-08-30 2007-12-06 Geisinger Nile J System and method for creating programs that comprise several execution layers
US7523323B2 (en) 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
US7703081B1 (en) 2005-09-22 2010-04-20 Symantec Corporation Fast system call hooking on x86-64 bit windows XP platforms
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US7836303B2 (en) 2005-12-09 2010-11-16 University Of Washington Web browser operating system
US7447896B2 (en) 2005-12-12 2008-11-04 Microsoft Corporation OS mini-boot for running multiple environments
US8539481B2 (en) 2005-12-12 2013-09-17 Microsoft Corporation Using virtual hierarchies to build alternative namespaces
US20070174910A1 (en) 2005-12-13 2007-07-26 Zachman Frederick J Computer memory security platform
JP5061908B2 (ja) * 2005-12-27 2012-10-31 日本電気株式会社 プログラム実行制御方法および装置ならびに実行制御プログラム
US7627728B1 (en) 2005-12-29 2009-12-01 Symantec Operating Corporation System and method for efficient generation of application snapshots
EP1811421A1 (en) * 2005-12-29 2007-07-25 AXSionics AG Security token and method for authentication of a user with the security token
US20070169116A1 (en) 2006-01-18 2007-07-19 Dell Products L.P. Method and system for automated installation of system specific drivers
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7743026B2 (en) 2006-01-31 2010-06-22 Microsoft Corporation Redirection to local copies of server-based files
WO2007109921A1 (en) * 2006-03-28 2007-10-04 Intel Corporation Methods and apparatus to implement annotation based thunking
US7913252B2 (en) 2006-04-11 2011-03-22 Installfree, Inc. Portable platform for executing software applications in a virtual environment
US7747785B2 (en) 2006-04-14 2010-06-29 Microsoft Corporation Instant messaging plug-ins
US8104041B2 (en) 2006-04-24 2012-01-24 Hewlett-Packard Development Company, L.P. Computer workload redistribution based on prediction from analysis of local resource utilization chronology data
US8117554B1 (en) 2006-04-25 2012-02-14 Parallels Holdings, Ltd. Seamless integration of non-native widgets and windows with dynamically scalable resolution into native operating system
US7725305B2 (en) 2006-06-08 2010-05-25 Microsoft Corporation Partial virtualization on computing device
US7812985B2 (en) 2006-06-09 2010-10-12 Kabushiki Kaisha Toshiba System and method for rerouting of document processing jobs
US20080016339A1 (en) 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US20080005472A1 (en) 2006-06-30 2008-01-03 Microsoft Corporation Running applications from removable media
US7644264B1 (en) 2006-10-17 2010-01-05 Symantec Corporation Method and system for creating and deploying disk images
US8171502B2 (en) 2006-11-29 2012-05-01 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically installing device drivers from a peripheral device onto a host computer
US20080127182A1 (en) 2006-11-29 2008-05-29 Newport William T Managing Memory Pages During Virtual Machine Migration
US8452853B2 (en) 2007-03-05 2013-05-28 International Business Machines Corporation Browser with offline web-application architecture
US20100153569A1 (en) 2007-03-09 2010-06-17 Ghost, Inc. System and Method for a Virtual Hosted Operating System
US8037039B2 (en) 2007-04-20 2011-10-11 Microsoft Corporation Runtime class database operation
US20080276012A1 (en) 2007-05-04 2008-11-06 Joe Mesa Driver Loading via a PnP Device
JP5079084B2 (ja) 2007-05-09 2012-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システムの操作を防止するための方法及びデータ処理システム
US8875266B2 (en) 2007-05-16 2014-10-28 Vmware, Inc. System and methods for enforcing software license compliance with virtual machines
ITRM20070347A1 (it) * 2007-06-21 2008-12-22 Space Software Italia S P A Metodo e sistema per la interazione e cooperazione di sensori, attuatori e robot
US20090064196A1 (en) 2007-08-31 2009-03-05 Microsoft Corporation Model based device driver code generation
US20090094337A1 (en) 2007-10-08 2009-04-09 Eric Wilfred Bruno Dias Method of accessing web e-mail off-line
CN100498816C (zh) 2007-11-19 2009-06-10 南京大学 一种高安全等级操作系统的参照监视器实现方法
US8505029B1 (en) 2007-11-26 2013-08-06 Adobe Systems Incorporated Virtual machine communication
JP4740926B2 (ja) 2007-11-27 2011-08-03 フェリカネットワークス株式会社 サービス提供システム、サービス提供サーバ、及び情報端末装置
WO2009085977A2 (en) 2007-12-20 2009-07-09 Virtual Computer, Inc. Virtual computing management systems and methods
US8671404B2 (en) 2008-02-12 2014-03-11 Red Hat, Inc. Distributing and managing virtual machines
US8156503B2 (en) 2008-02-12 2012-04-10 International Business Machines Corporation System, method and computer program product for accessing a memory space allocated to a virtual machine
US20090210871A1 (en) 2008-02-20 2009-08-20 Zak Dechovich System and method for software application migration
US7971049B2 (en) 2008-03-31 2011-06-28 Symantec Corporation Systems and methods for managing user configuration settings
US8782604B2 (en) 2008-04-11 2014-07-15 Oracle International Corporation Sandbox support for metadata in running applications
US8359593B2 (en) 2008-04-21 2013-01-22 Vmware, Inc. Computer machine migration of file system images using a redo-log file
US8364983B2 (en) 2008-05-08 2013-01-29 Microsoft Corporation Corralling virtual machines with encryption keys
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8195774B2 (en) 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US20110191494A1 (en) 2008-05-27 2011-08-04 Turanyi Zoltan Richard System and method for backwards compatible multi-access with proxy mobile internet protocol
US8276145B2 (en) 2008-06-27 2012-09-25 Microsoft Corporation Protected mode scheduling of operations
US9176754B2 (en) 2008-07-16 2015-11-03 Google Inc. Method and system for executing applications using native code modules
US8285670B2 (en) * 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US20100211663A1 (en) 2008-07-28 2010-08-19 Viewfinity Inc. Management of pool member configuration
CN101640589B (zh) * 2008-07-29 2012-11-07 华为技术有限公司 在安全可移动媒介之间共享许可的方法及装置
CN101645020A (zh) 2008-08-04 2010-02-10 优诺威讯国际有限公司 虚拟操作系统创建方法
US7886183B2 (en) 2008-08-07 2011-02-08 Symantec Operating Corporation Providing fault tolerant storage system to a cluster
JP2010044579A (ja) 2008-08-12 2010-02-25 Brother Ind Ltd 周辺装置、プログラム、およびドライバインストールシステム
TW201007574A (en) 2008-08-13 2010-02-16 Inventec Corp Internet server system and method of constructing and starting a virtual machine
US8381288B2 (en) 2008-09-30 2013-02-19 Intel Corporation Restricted component access to application memory
JP4966942B2 (ja) 2008-10-01 2012-07-04 株式会社日立製作所 仮想pc管理方法、仮想pc管理システム、および仮想pc管理プログラム
US8291261B2 (en) 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
US8782670B2 (en) 2009-04-10 2014-07-15 Open Invention Network, Llc System and method for application isolation
US8103837B2 (en) * 2008-12-17 2012-01-24 Hewlett-Packard Development Company, L.P. Servicing memory read requests
TWI384378B (zh) 2008-12-29 2013-02-01 Ind Tech Res Inst 網頁應用程式執行方法
US8117317B2 (en) 2008-12-31 2012-02-14 Sap Ag Systems and methods for integrating local systems with cloud computing resources
US8230121B2 (en) * 2009-01-05 2012-07-24 Sierra Wireless, Inc. Method and apparatus for identifying a device handle in a computer system
US8214829B2 (en) 2009-01-15 2012-07-03 International Business Machines Corporation Techniques for placing applications in heterogeneous virtualized systems while minimizing power and migration cost
US8112480B2 (en) 2009-01-16 2012-02-07 Microsoft Corporation Signaling support for sharer switching in application sharing
US8019861B2 (en) 2009-01-29 2011-09-13 Vmware, Inc. Speculative virtual machine resource scheduling
US10203993B2 (en) 2009-02-18 2019-02-12 International Business Machines Corporation Method and system for continuous optimization of data centers by combining server and storage virtualization
WO2010099174A1 (en) 2009-02-24 2010-09-02 Telcordia Technologies, Inc. System and method for policy based management for a high security manet
US8418236B1 (en) 2009-04-10 2013-04-09 Open Invention Network Llc System and method for streaming application isolation
JP5289153B2 (ja) 2009-04-14 2013-09-11 キヤノン株式会社 情報処理装置及びその制御方法、並びにコンピュータプログラム
US8751627B2 (en) 2009-05-05 2014-06-10 Accenture Global Services Limited Method and system for application migration in a cloud
US8429647B2 (en) 2009-05-06 2013-04-23 Vmware, Inc. Virtual machine migration across network by publishing routes to the associated virtual networks via virtual router after the start of migration of the virtual machine
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
JP2010267135A (ja) 2009-05-15 2010-11-25 Toshiba Corp メモリコントローラ
US8150971B2 (en) 2009-05-31 2012-04-03 Red Hat Israel, Ltd. Mechanism for migration of client-side virtual machine system resources
US20100332629A1 (en) 2009-06-04 2010-12-30 Lauren Ann Cotugno Secure custom application cloud computing architecture
EP2449466A1 (en) 2009-06-30 2012-05-09 Citrix Systems, Inc. Methods and systems for selecting a desktop execution location
WO2011027191A1 (en) 2009-09-02 2011-03-10 Telenor Asa A method, system, and computer readable medium for controlling access to a memory in a memory device
US8285987B1 (en) 2009-12-04 2012-10-09 The United States Of America As Represented By The Secretary Of The Air Force Emulation-based software protection
US8479286B2 (en) 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US8645977B2 (en) 2010-02-04 2014-02-04 Microsoft Corporation Extensible application virtualization subsystems
US8301856B2 (en) 2010-02-16 2012-10-30 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
RU101231U1 (ru) * 2010-03-02 2011-01-10 Закрытое акционерное общество "Лаборатория Касперского" Система управления безопасностью мобильного вычислительного устройства
US20110231670A1 (en) 2010-03-16 2011-09-22 Shevchenko Oleksiy Yu Secure access device for cloud computing
US8880773B2 (en) 2010-04-23 2014-11-04 Red Hat, Inc. Guaranteeing deterministic bounded tunable downtime for live migration of virtual machines over reliable channels
US9311509B2 (en) 2010-05-09 2016-04-12 Citrix Systems, Inc. Creation and delivery of encrypted virtual disks
US8707457B2 (en) 2010-05-09 2014-04-22 Citrix Systems, Inc. Methods and systems for forcing an application to store data in a secure storage location
US8640187B2 (en) 2010-05-28 2014-01-28 Red Hat, Inc. Systems and methods for providing an fully functional isolated execution environment for accessing content
AU2011261831B2 (en) 2010-06-02 2014-03-20 VMware LLC Securing customer virtual machines in a multi-tenant cloud
US8166211B2 (en) 2010-06-07 2012-04-24 Vmware, Inc. Safely sharing USB devices
US8935317B2 (en) 2010-06-23 2015-01-13 Microsoft Corporation Dynamic partitioning of applications between clients and servers
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US9436502B2 (en) 2010-12-10 2016-09-06 Microsoft Technology Licensing, Llc Eventually consistent storage and transactions in cloud based environment
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8903705B2 (en) 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
US8832452B2 (en) 2010-12-22 2014-09-09 Intel Corporation System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves
US20120179485A1 (en) 2011-01-07 2012-07-12 Independa, Inc. Systems and methods for integrated care management
US20120203932A1 (en) 2011-02-08 2012-08-09 Microsoft Corporation Multi-master media metadata synchronization
US9483284B2 (en) 2011-02-25 2016-11-01 Red Hat, Inc. Version compatibility determination
US9891939B2 (en) 2011-03-03 2018-02-13 Microsoft Technology Licensing, Llc Application compatibility with library operating systems
US8799997B2 (en) 2011-04-18 2014-08-05 Bank Of America Corporation Secure network cloud architecture
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8745434B2 (en) 2011-05-16 2014-06-03 Microsoft Corporation Platform for continuous mobile-cloud services
US20130031371A1 (en) 2011-07-25 2013-01-31 Alcatel-Lucent Usa Inc. Software Run-Time Provenance
US20130036431A1 (en) 2011-08-02 2013-02-07 Microsoft Corporation Constraining Execution of Specified Device Drivers
US20130054734A1 (en) 2011-08-23 2013-02-28 Microsoft Corporation Migration of cloud applications between a local computing device and cloud
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
KR101874081B1 (ko) 2012-06-07 2018-07-03 에스케이테크엑스 주식회사 개선된 보안 기능 기반의 클라우드 서비스 시스템 및 이를 지원하는 방법

Also Published As

Publication number Publication date
CA2857586C (en) 2019-04-23
KR102073433B1 (ko) 2020-02-04
CN103136468A (zh) 2013-06-05
CA2857586A1 (en) 2013-06-20
BR112014014153B1 (pt) 2021-08-17
KR20140101367A (ko) 2014-08-19
JP2015500543A (ja) 2015-01-05
EP2791857A1 (en) 2014-10-22
AU2012352754B2 (en) 2017-10-19
US9389933B2 (en) 2016-07-12
CN103136468B (zh) 2016-08-03
WO2013090044A1 (en) 2013-06-20
RU2014123659A (ru) 2015-12-20
MX345408B (es) 2017-01-30
RU2621001C2 (ru) 2017-05-30
MX2014007102A (es) 2014-07-28
AU2012352754A1 (en) 2014-07-03
US20130152209A1 (en) 2013-06-13
IN2014CN03961A (ja) 2015-10-23
EP2791857A4 (en) 2015-06-03
BR112014014153A2 (pt) 2017-06-13
EP2791857B1 (en) 2019-08-07

Similar Documents

Publication Publication Date Title
JP6083097B2 (ja) ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法
Alpernas et al. Secure serverless computing using dynamic information flow control
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
US8839455B1 (en) Security domain in virtual environment
Strackx et al. Fides: Selectively hardening software application components against kernel-level or process-level malware
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
EP3123340B1 (en) Object oriented marshaling scheme for calls to a secure region
US8832452B2 (en) System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves
US20150089502A1 (en) Method and System for Providing Secure System Execution on Hardware Supporting Secure Application Execution
Wan et al. RusTEE: developing memory-safe ARM TrustZone applications
Santos et al. Trusted language runtime (tlr) enabling trusted applications on smartphones
CN110874468B (zh) 应用程序安全保护方法以及相关设备
Gu et al. Unified enclave abstraction and secure enclave migration on heterogeneous security architectures
US8972745B2 (en) Secure data handling in a computer system
US20210132968A1 (en) System and method for implementing trusted execution environment on pci device
Zobaed et al. Confidential computing across edge-to-cloud for machine learning: A survey study
Fitzek Development of an ARM TrustZone aware operating system ANDIX OS
Hong et al. Sdvisor: Secure debug enclave with hypervisor
Julku et al. Towards a Rust SDK for Keystone Enclave Application Development.
CN116049844A (zh) 一种可信平台模块调用方法、系统、装置及存储介质
Cheng et al. SuperCall: A Secure Interface for Isolated Execution Environment to Dynamically Use External Services
Cheng Virtualization-based System Hardening against Untrusted Kernels

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161222

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20161227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20161227

R150 Certificate of patent or registration of utility model

Ref document number: 6083097

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250