JP5735509B2 - マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器 - Google Patents

マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器 Download PDF

Info

Publication number
JP5735509B2
JP5735509B2 JP2012523622A JP2012523622A JP5735509B2 JP 5735509 B2 JP5735509 B2 JP 5735509B2 JP 2012523622 A JP2012523622 A JP 2012523622A JP 2012523622 A JP2012523622 A JP 2012523622A JP 5735509 B2 JP5735509 B2 JP 5735509B2
Authority
JP
Japan
Prior art keywords
identity
hypervisor
policy
user interface
driver shim
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.)
Expired - Fee Related
Application number
JP2012523622A
Other languages
English (en)
Other versions
JP2013501300A (ja
JP2013501300A5 (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.)
Carnegie Mellon University
Original Assignee
Carnegie Mellon University
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 Carnegie Mellon University filed Critical Carnegie Mellon University
Publication of JP2013501300A publication Critical patent/JP2013501300A/ja
Publication of JP2013501300A5 publication Critical patent/JP2013501300A5/ja
Application granted granted Critical
Publication of JP5735509B2 publication Critical patent/JP5735509B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Description

本発明は、一般にマルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器を対象とし、より詳細には、信頼できないコンピュータプラットフォーム上で使用するためのそのような方法および機器を対象とする。
セキュアコンピューティングにおける基本的構成は、信頼性のあるパス(trusted path:TP)[37,38]の構成である。一般にTPとは、コンピューティング装置と人間との間の高保証接続である。例えば人間は、コンピュータのインターフェイスとの自身の対話が、悪意ある類似ソフトウェアではなく、そのコンピューティング装置上の意図されたソフトウェアに接続されている保証を得ることができる。対照的に、信頼性のあるチャネル(trusted channel:TC)とは、2台のコンピューティング装置間の、認証され、完全性が保護され、暗号化された接続である。TPの従来の概念は、ユーザが(セキュリティカーネルまたは信頼性のあるアプリケーションによって実装される)1組の信頼性のあるコマンドを用いて、信頼性のある入力装置(例えばキーボード)から直接的、非仲介的方法により通信することを可能にするものである。次いで、それらの信頼性のあるコマンドは実行時に、TPの活性化をユーザが検証できるようにする独自のプロンプトをユーザの端末上に表示する。そのようなTPを使用する典型例は、セキュアログインの応用例に関する。しかし、信頼性のあるパスの必要性はセキュリティの基礎であり、他の多くの状況において生じる。例えば、ユーザが入力した銀行のウェブアドレスが、ユーザのマシン上のウェブブラウザに到達する前に変更されないことを確実にするために、または銀行のウェブサイト用のパスワードがユーザのマシン上にあるマルウェアに漏れないことを確実にするために、信頼性のあるパスは不可欠である。同様に、信頼性のあるパスは、アプリケーションが自らの出力を、マルウェアによって不正に読み取られるか、または修正されない保証がある状態で、ユーザの装置上に表示することを可能にする。ユーザの見地からすれば、信頼性のあるパスを介したアプリケーションの出力は、アプリケーションの出力が秘密かつ真正であることをユーザに保証するのに役立つ。
信頼性のあるパスは特定の基礎特性を提供し、その特性とはつまり、やり取りされるデータの機密性および完全性、パスの両端におけるエンティティの認証、および信頼性のあるパス上でのコマンドの適時実行(可用性の一形式)である。さらにTPは3つの基本特性を提供し、その3つの特性とは次のものである。(1)TPは拡張可能であるべきである。これは、適用分野の需要、保護必要度、および完全性要件に応じて、ユーザがさらなる信頼性のあるコマンドをTPに追加でき、他の信頼性のあるコマンドを除去できることを意味する。(2)TPは永続的であるべきである。これは、信頼性のあるパスが常に存在することをユーザに保証できることを意味する。さらに、より強い特性であるユーザの検証可能性を要求することができ、ユーザの検証可能性は、TPが活性化されていることをユーザが任意の時点において検証することを可能にする。(3)TPは、システムが損なわれた後、回復可能であるべきである。これは、ユーザが例えば信頼性のあるソースからセキュリティカーネルをリブートすることにより、常にTPを回復できることを意味する。
従来より、これらの特性のすべてを満たすTPがあることは、(a)侵入のない(penetration−free)セキュリティカーネル(すなわち回避不能で、隔離されかつ検証可能なカーネル)−信頼性のある計算処理機構(trusted computing base:TCB)があること、ならびに(b)悪意あるソフトウェア、および可能性としてカーネルを修正することができる内部者のいない環境を前提としていた。信頼性のあるパスを実現した最初の商用のセキュアUNIX(登録商標)型システムは、1980年代にグリゴル(Gligor)らによりSecure Xenixにおいて設計された[20,22]。しかし今日のコンピューティング環境では、これらの仮定のいずれも、内部者による攻撃が重大なセキュリティ上の危険を示す大企業で使用される商用既製オペレーティングシステムに関して妥当ではない。さらに、そのようなシステムをインターネットに接続することは、すべてのシステムコードおよびデータに完全にアクセスできるマルウェアの存在をただ保証するだけである。(現在、インターネットに接続する保護されていないホストは平均12分以内に感染する。)したがって、そのようなシステム上に実装されるTPの永続性、およびそのTPの回復可能性の両方が失われる。この見解は、信頼性のあるパスを実装するシステムに要求するもう1つの特性を策定することにつながり、その特性とはつまり、(4)信頼性のあるパスに仮定される特性は、形式的に検証可能であるべきである。さもなければ、設計および実装の誤りが、TPをマルウェアおよび悪意ある内部者による攻撃にさらされたままにする。
信頼性のあるパスを確立するために使用可能な最近のTCGの提案[35]は、測定プロトコルのための信頼の静的ルート(Static Root of Trust)および信頼の動的ルート(Dynamic Root of Trust)として大きく分類することができる。どちらのプロトコルも、公開鍵暗号方式を使用して、システムがブート又はリブートしてからシステムソフトウェアに署名し、システムソフトウェアを認証する。ブートされたコードに暗号ハッシュ関数を適用することにより、プロセッサがそのブート済みコードを「測定」し、ハードウェア保護された秘密鍵を使ってハッシュに署名する。検証エージェントは、そのハッシュを自らがコピーを有する予期されるブートコードのハッシュと比較し、それにより、ブートされたコードが修正されていないことを証明することができる。この基礎に基づいてすべての信頼性のあるソフトウェアを裏付けることができ、その結果ユーザは、たとえマルウェアおよび悪意ある内部者があっても、原則として金融取引を扱うアプリケーション、暗号取引(例えばローカルおよびリモートシステム又はアプリケーションのキーイングおよび再キーイング)を扱うアプリケーション、コマンドおよび制御アプリケーション、オンラインフォレンジックアプリケーションなど、機密情報を扱う重要度の高いアプリケーションに対してTPを確立し、拡張することができる。
SRTM(Static Root of Trust for Measurement)プロトコルでは、BIOS、アダプタカード上のファームウェア、ブートローダ、オペレーティングシステムから始まり、所望のTPアプリケーションコマンドで終わるすべてのシステムコードが証明プロセスによって署名され、認証される。したがって、(SRTMブートシーケンスを含む)何百万行ものソースコードを形式的に検証することは現在のソフトウェア検証ツールの技術的現状を超えるので、特性(4)を達成することができない。対照的に、DRTM(Dynamic Root of Trust for Measurement)プロトコル[29,25]は、信頼性のある処理機構(trusted base)を形式的な分析および検証を潜在的に受け入れることができる管理可能な大きさ(例えばセキュアローダやBIOSの選択された部分)にまで減らすことにより、この問題に対処する。しかし、TPの(1)信頼性のある拡張可能性、(2)永続性およびユーザの検証可能性、ならびに(3)回復特性を、SRTMプロトコルおよびDRTMプロトコルによって達成できるかどうかは、敵対者の攻撃の強さ次第である。TCG仕様[35]内で述べられているように、TPM(Trusted Platform Module)は、改竄を防ぐ、すなわち物理的に攻撃される恐れがないように設計されていないことを最初に指摘しておく。さらに、たとえ証明用に使用する秘密鍵を記憶するTPMの物理的改竄防止を想定しても、内部者がシステムのTPMに対してではなく、所有者によって放置されたままのシステムに対して物理的攻撃を仕掛けるときはいつでも、SRTMプロトコルもDRTMプロトコルも特性(1)〜(3)をサポートすることはできない。
システムのマザーボード上のLPC(Low Pin Count)バスおよびTPMドライバを含むBIOSコードの両方にアクセス可能な内部者は、TPMリセット攻撃を仕掛けることができる[25,34,1]。この攻撃では、正しいBIOS、アダプタカードファームウェア、ブートローダ、およびOSのハッシュをロードする一方で、内部者が仕込んだそのブートシーケンスの不正バージョンが実行されることにより、TPMがSRTMブートシーケンスをリスタートする。この攻撃は、内部者が自身の攻撃を仕掛ける前にLPCバスを受動的にモニタし[28]、攻撃されているのと同一のシステムの正しいハッシュ値を記録することにより、TPMによって署名され、後に証明を通過する正しいブートシーケンスのハッシュ値を得ることができるので実践的である。最近報告されたTPMリセット攻撃[34,1]が示すように、正しいハッシュ値は、SRTMブートシーケンス中に、内部者によって修正されたBIOSによりTPMに供給される。SRTMブートシーケンスに対するこの攻撃に反撃するために、DRTMプロトコルは、アトミックに(すなわち非割込的に)(1)CPUを、知られている信頼性のある状態に初期化し、(2)LPCバスを介してセキュアローダのコードを、その内部レジスタの1つの中にハッシュするTPMに転送し、(3)制御をセキュアローダのエントリポイントに移す新たなCPU命令を使用する[2,24]。次いで、セキュアローダはBIOSの関連部分を測定し、セキュアブートシーケンスを開始する。内部者によるTPMリセット攻撃の唯一の影響は、セキュアDRTMブートシーケンスをリスタートすることである。しかし、このDRTMプロトコルは、TPMをリセットしない別の等しく有力な内部者攻撃によって覆される可能性がある。その代わりとして、内部者は、その新たなCPU命令から生じたように装う信号をLPCバス内に投入することにより、その新たなCPU命令のアトミック性を欺く[34,1]。このように欺くことは、内部者が、自身の修正済みローダが実行されながら、正しいローダのハッシュ値をTPMに伝達することを可能にする。したがって、内部者が仕込んだブートシーケンスは、DRTMプロトコルを始動させ、証明を通過し、信頼性のあるパスの特性を欺くことになる。原則として、TPMがどんなに物理的に改竄防止されていようが、TPMのLPCバスが無許可の外部アクセスにさらされている限り、新たな攻撃に弱い可能性があるビルトインシークレットに依拠することなしにDRTMプロトコルを保護することはできない。
SRTMプロトコルまたはDRTMプロトコルに対する、物理的ではないが、より有力な攻撃が内部者およびマルウェアのうちの少なくとも一方によって仕掛けられる可能性がある。これらの攻撃は、改竄防止TPMの秘密鍵を敵対者に漏らすサイドチャネル技法を使用する。例えば、オープンSSLの秘密RSA鍵に対するブルームレイ(Brumley)およびボネ(Boneh)のタイミング攻撃[5]が、TPMの秘密RSA鍵に対するデモ攻撃において最近使用された[34]。原則として、改竄防止TPMのプライベート鍵または秘密鍵を知るために、例えば差分電力解析[27]およびフォルト投入[4]に基づく他のサイドチャネル攻撃を改竄防止TPMに対して仕掛けることができる。そのような攻撃は信頼性のあるパスを使用不能にするだけでなく、より重要なことに、SRTMプロトコルまたはDRTMプロトコルのいずれによっても、ユーザはそのような攻撃から回復すること(すなわち上記の特性(3))ができない。
TPの設計が、ハードウェア自体によって(例えばPUF(Physically Uncloneable Function)を使用して[19])生成され、またはEPROM上に記憶される秘密(対称)鍵に基づく場合、TP回復のとりわけ問題となる事例が生じる。この場合、秘密鍵はハードウェアベースに恒久的に付加されることになり、変更することはできない。そのように秘密鍵を変更できないことは、暗号がどんなに安全であろうと、一定の使用量の後に鍵の寿命が切れることを理由に、または完全なもしくは部分的な鍵の発見につながる可能性がある不良環境内の不可避の攻撃(例えばタイミング攻撃や差分電力解析攻撃などのサイドチャネル攻撃)を阻止しなければならないことを理由に鍵を変えなければならないことを示す暗号法の根本原理に背く。さらに、ランダムであろうとフォルト投入攻撃によって引き起こされようと、鍵の完全性を損なう可能性がある任意の起こり得るハードウェア障害が、TPだけでなくシステム全体を回復不能にする。このアーキテクチャを僅かに変更することでは、この状況は改善されないことも指摘しておく。例えば、秘密鍵がプログラム可能レジスタ内に記憶され、変更可能になる場合、ユーザ自身ではないにせよ信頼性のあるパーティにより、何らかの形のTPを介して鍵へのアクセスを管理する必要があり、更新を行う必要がある。すなわちそのTPは別のTPなしにブートストラップすることはできない。CPUとTPMとの間のLPCバス上の通信を暗号化することにより、DRTMプロセスが想定する基礎をなすTPMアーキテクチャを保護しようと試みるときに同様のブートストラップ問題が発生し、つまり信頼性のあるパスは秘密のバス暗号鍵をセットおよびリセットするように求められる。
したがって、WINDOWS(登録商標)オペレーティングシステムおよびLINUX(登録商標)オペレーティングシステムを実行する商用システムが含まれる商用システムのための、上記に特定した特性(1)〜(4)を満たす信頼性のあるパスを提供することが求められている。
よって、マルウェアがある状態でユーザが検証可能な信頼性のあるパスを確立すること、より詳細には、信頼できないコンピュータプラットフォーム上で使用するためのそのような方法および機器が求められている。本発明のそれらのおよび他の利点について以下により詳細に説明する。
本発明は、一般にWindowsオペレーティングシステムおよびLinuxオペレーティングシステムを実行する商用システムを含む商用システムのための、上記に特定した特性(1)〜(4)を満たす信頼性のあるパスを提供するためのシステムを対象とする。さらに本発明の改変形態には、既存の手法、とりわけTCG(Trusted Computing Group)[35]が提案する、暗号鍵を保護し、装置上にロードされたソフトウェアを特定するためのハードウェアベースの手法を包含する実施形態が含まれ得る。本発明では要求されていないが、本発明の一実施形態は、TCGの提案とは異なり、ハードウェアまたはソフトウェア内に記憶されたどんな秘密も使用しない信頼性のあるパス確立プロトコルを使用し、それにより広い攻撃面を除去し、システムが損なわれた後にユーザが開始する信頼性のあるパスの回復(すなわち特性(3))を容易にすることができる。さらに、本発明者らのプロトコルの信頼性のあるコンポーネントは小さく、特性(4)を満たすために要求されるような形式的分析を可能にする。以下に、内部者およびマルウェアの攻撃を前にして、TCGの提案が、なぜ4つすべての所望の特性を満たすことができないのかを示す論拠を概説する。これらの事項は最近の研究[28,25,34,1]、ならびにTCGのアーキテクチャおよびプロトコルについての進行中の正式な研究[18]に基づく。その後、本発明者らの手法がどのようにこれらの問題を回避し、4つすべての特性を成功裏に達成するのかを要約する。
本発明のTP設計の(以下に詳細に説明する)1つの独自の特徴は、本発明のTPが、システム内のどこでも、ハードウェア保護された秘密に依拠することなしにオプションで動作できることである。したがって、本発明者らの設計は、代替的で根本的に異なるTP設計への取り組み、および秘密鍵が使用されるとき、秘密鍵が漏洩することからの信頼性のある回復基盤の両方を提供する。この設計は、TCGの提唱が提案するように、ことによるとユーザ自身および信頼性のあるサードパーティが安全かつ実践的方法で変更可能なハードウェア保護された秘密鍵を使用し、アプリケーションレベルのユーザ検証されたTPをブートストラップすることを可能にする。この設計は、マルウェアがないこと、または内部者攻撃がない環境内で動作することが予期されていない既製ソフトウェア(例えばWindows、Linux、およびそれらのアプリケーション)をユーザが実行することも可能にする。
本発明は、プロセッサによって実行されるとき、本発明による特定のアクションをそのプロセッサに実行させるソフトウェア、ファームウェア、ハードウェア、他の実施形態などのコンピュータ可読命令を含み、またはそうしたコンピュータ可読命令として実施することができる。一実施形態では、本発明は、プロセッサと、メモリと、入力装置と、出力装置とを含む機器を含み、そのメモリは、実行時に本明細書に記載の方法をプロセッサに実行させるコンピュータ可読命令を含む。
要約すれば、本発明は、今日までに知られている最も強力な敵対者からの攻撃に対する耐性を改善した。本発明は、マルウェアおよび悪意ある内部者の攻撃がある状態で、例えばコマンドおよび制御システム、暗号取引、金融取引、オンラインフォレンジック分析など、機密情報を扱う高価な用途に使用することができる。
本発明では他の多くの改変形態が可能であり、本発明の説明および図面から、本発明のそれらのおよび他の教示、改変形態、および利点が明らかになる。
次に本発明の諸実施形態を専ら例として、本発明を限定するためではなく、それらの実施形態を例示するための添付図面に関して説明する。
本発明によるコンピュータの一実施形態を示す図である。 数台のコンピュータがネットワークを介して共に接続される本発明の別の実施形態を示す図である。 本発明により作成し、使用することができるコンピューティングプラットフォームの一実施形態を示す図である。 プロセッサが検証装置と対話する方法の一実施形態を示す図である。 コンピュータ内のプロセッサによって実行される本発明によるプロセスの一実施形態を示す図である。 コンピュータ内のプロセッサによって実行される本発明によるプロセスの一実施形態を示す図である。 プロセッサから選択実行ファイルに関係する情報を受け取った後、検証装置によって実行される本発明によるプロセスの一実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明によって実行される方法の実施形態を示す図である。 本発明の一実施形態による基本的システムアーキテクチャの全体像の一実施形態を示す図である。 本発明による信頼性のある検証器の状態機械の一実施形態を示す図である。 本発明による信頼性のある検証器証明プロトコルの一実施形態を示す図である。 本発明による信頼性のあるアプリケーションのアーキテクチャの一実施形態を示す図である。E1およびE2は2つの実行ファイルである。 本発明による検証可能コード実行プロトコルの概要の一実施形態を示す図である。数字は各イベントの時間的順序を表す。 本発明による検証可能コード実行プロトコルの一実施形態を示す図である。各イベントの番号付けは図21にあるのと同じである。Vは検証器、Pは検証関数、Eは目標実行ファイルである。
図1は、本発明によるコンピュータ110の一実施形態を示す。その実施形態では、コンピュータ110は、プロセッサ112、メモリ114、入力装置116、出力装置または表示装置118、および検証装置120を含む。プロセッサ112は、メモリ114、入力装置116、および出力装置118に接続される。メモリ114は、プロセッサ112によって実行されるとき、本明細書に記載の特定の機能をプロセッサ112に実行させるコンピュータハードウェア、ソフトウェア、ファームウェア、または他の形式のコンピュータ可読命令などのコンピュータ可読命令を含む。コンピュータ110は、本明細書に示さない1つまたは複数の他の装置を含んでもよい。この実施形態は、検証装置120をコンピュータ110の一部として説明するが、検証装置120はコンピュータ110から分かれていてもよい。
プロセッサ112は、入力装置116から入力を受け取り、出力装置118を制御するための信号を提供し、例えば検証装置120との間の信号などの他の信号を提供し、受け取る。プロセッサ112は、本明細書に記載の特定の機能も実行する。
メモリ114は、任意の形式のコンピュータ可読メモリであり、情報を磁気形式、光学形式、電気形式、または他の形式で記憶する。メモリ114は、プロセッサ112によって実行されるとき、本明細書に記載の特定の機能をプロセッサ112に実行させるコンピュータ可読命令を含む。
メモリ114は、多くの改変形態を有することができる。例えば、メモリ114はプロセッサ112から分けるか、またはメモリ114はプロセッサ112と一体化する。メモリ114は、1つのメモリ装置を含むか、またはメモリ114は、複数のメモリ装置を含む。例えばメモリ114は、1つまたは複数の不揮発性メモリのメモリ装置を含むか、1つまたは複数の揮発性メモリのメモリ装置を含む。例えばメモリ114は、磁気ディスクドライブ、光学ドライブ、フラッシュメモリなど、長期にわたりデータを記憶するための記憶媒体装置130を含む。メモリ114は、RAM132または他の機能用の他のメモリ装置も含む。本発明とともに、メモリ114の他の組合せおよび改変形態も使用する。
入力装置116は、キーボード、タッチスクリーン、コンピュータマウス、またはユーザからの情報を入力する他の形態とする。入力装置116は、別のコンピュータから入力を受け取るためのデータポートなどの、人間のユーザ以外のソースから情報を入力するように使用される。
出力装置118は、ビデオディスプレイまたはユーザに対して情報を出力する他の形態とすることができる。出力装置118は、ビデオ装置、オーディオ装置、プリンタ、または例えばライト、スピーカや他の形式の出力など、ユーザに情報を伝えまたはユーザの注意を引くために使用可能な他の装置とする。出力装置118は、データポートなど、人間のユーザ以外のものに情報を出力するように使用される。
入力装置116および出力装置118を、ユーザインターフェイス150と呼ぶ。ユーザインターフェイス150は、入力装置116および出力装置118の両方を含んでよく、またはユーザインターフェイス150は、入力装置116および出力装置118の一方だけを含んでもよい。本発明は、1つまたは複数の信頼性のあるチャネル152も含む。一部の実施形態では、信頼性のあるチャネル152は、ユーザインターフェイス150とプロセッサ112との間に存在する。他の実施形態では、信頼性のあるチャネル152は、プロセッサ112とユーザインターフェイス150とを相互接続する他のシステムコンポーネントを通過し、プロセッサとユーザインターフェイス150との間に延びることができる。そのようなコンポーネントには、バス、相互接続器、メモリコントローラハブ、入出力コントローラハブ、および他のコンポーネントが含まれ得る。一部の実施形態では、これらの他のコンポーネントがチャネルの信頼性に極めて重要である。他の実施形態では、これらのコンポーネントの挙動がチャネルに影響を及ぼさない場合がある。また、他の構成もあり得る。
検証装置120は、プロセッサ122およびメモリ124を含む。検証装置120は、入力装置126および出力装置128も含む。一部の実施形態では、検証装置120は本明細書に記載の理由で比較的小さい。例えば、検証装置120を小さく単純にしておくことで、装置120が提供するセキュリティについて利点をもたらすことができる。また、検証装置120がコンピュータ110から取外し可能であり、ユーザが身に付けて持ち運べるように意図される場合、比較的小さいサイズは有利である。しかし、小さいサイズは必須ではなく、とりわけ検証装置120がコンピュータ内に組み込まれる場合、または検証装置120が、ユーザが身に付けて持ち運べるように意図されない場合、検証装置120はより大きく、他の特徴および機能を含み得る。取外し可能な検証装置120の場合、検証装置120は、コンピュータ110に恒久的に取り付けられないように通信インターフェイス140も含むことができる。インターフェイス140は、例えばUSBポート、赤外線送信機/受信機、またはユーザが検証装置120を接続し、取り外すことを可能にする他の通信インターフェイスとすることができる。それらの実施形態では、コンピュータ110も、検証装置120の通信インターフェイス140を補足する通信インターフェイス140を有する。
検証装置120は、コンピュータ110の他のパーツと一体化するか、または検証装置120は、ユーザにより取外し可能であり、持ち運び可能とすることができる。一実施形態では、検証装置120は、コンピュータの一部であり、かつユーザがアクセス可能であり得るUSBポートや他の任意のポートなど、コンピュータのポートに差し込まれる。
検証装置120は、コンピュータ110の他のパーツに関する情報またはポリシを含む。例えば検証装置120は、安全な実行ファイル312(図3参照)およびハイパーバイザ316(図3参照)に関するポリシならびに他の情報を含む。この検証装置は、実行ファイルごとにポリシを含むか、または複数の実行ファイルによって共有されるポリシを含む。例えばそのポリシは、選択実行ファイル312、ハイパーバイザ316、およびコンピュータ110の他のパーツに関する既知の良好なアイデンティティ測定(identity measurement)を含む。実行ファイルに関するアイデンティティ測定は、それらの実行ファイルについて計算される暗号学的ハッシュとするか、デジタル署名を含むか、または他の形をとる。
また、そのポリシは、ネットワークインターフェイスを有する実行ファイル、または他の方法でネットワーク210(図2参照)にアクセスできる実行ファイルのための、ネットワーク210上の信頼性のあるエンドポイントのリストを含む。検証装置120は、例えばネットワーク210上の信頼性のあるエンドポイントの単一のリストを含むか、実行ファイルごとに信頼性のあるエンドポイントのリストを含むか、または信頼性のあるエンドポイントの複数のリストを含み、それらの複数のリストの一部は特定の実行ファイルに固有であり、それらの複数のリストの一部は複数の実行ファイルによって共有される。各ポリシは、異なる実行ファイルに適用するか、または一部のポリシを複数の実行ファイルが共有する。
そのポリシは、特定の実行ファイルが情報を共有するか、または他の方法で通信することができる他の実行ファイルを特定する。例えば、選択実行ファイル312が情報を共有することができる他の実行ファイルを特定する、選択実行ファイル312用のポリシがある。
検証装置120は、ポリシまたは他の情報を追加するか、削除するか、もしくは修正することを許可してもしなくてもよい。例えば一実施形態では、検証装置120は、ネットワーク210上の信頼性のあるエンドポイントを更新することを許可する。別の実施形態では、検証装置120が危険にさらされるリスクを減らすために、検証装置120は読取り専用である。
検証装置120は、プロセッサ112に接続される。これは、検証装置120がプロセッサ112と一体化するか、またはプロセッサ112に物理的に取り付けられることを必ずしも意味するものではなく、むしろ本明細書に記載の方法を実行するために、検証装置120とプロセッサ112との間に直接的または間接的通信リンクがあることを意味する。
検証装置120内のプロセッサ122は、本明細書に記載の特定の機能を実行する。検証装置120内のプロセッサ122は、プロセッサ112に接続され、プロセッサ112と通信する。
検証装置内のメモリ124は、任意の形式のコンピュータ可読メモリであり、情報を磁気形式、光学形式、電気形式、または他の形式で記憶する。メモリ124は、メモリ114に関して上記に記載したものなど、多くの改変形態を有する。例えば、検証装置内のメモリ124は検証装置内のプロセッサ122から分離されるか、または検証装置内のメモリ124は検証装置内のプロセッサ122と一体化する。また、検証装置内のメモリ124は複数のメモリ装置を含み、それらのメモリ装置は検証装置内のプロセッサ122と一体化するか、検証装置内のプロセッサ122から分離するか、またはその両方とする。他の改変形態もあり得る。
メモリ124は、検証装置内のプロセッサ122によって実行されるとき、本明細書に記載の特定の機能を検証装置内のプロセッサ122に実行させるコンピュータ可読命令を含む。
入力装置126および出力装置128は、コンピュータ110の入力装置116および出力装置118と同じでも異なってもよい。例えば、検証装置120は比較的小さな装置であり、その結果、入力装置126および出力装置128はそれに応じて小さく簡易化される。例えば、キーボードやコンピュータマウスではなく、入力装置126は、アナログスイッチや多位置ノブなど、ユーザからの入力用の1つまたは複数のボタンもしくはスイッチを含む。同様に、完全なビデオディスプレイではなく、出力装置128は、ユーザにフィードバックを与えるための1つまたは複数のライト、ブザー、もしくは他の装置を含む。あるいは、検証装置120は、より大きくかつ/またはより複雑な入力装置126および出力装置128を有してもよい。一実施形態では、検証装置120は、PDAまたはスマートフォンで使用するような「ソフトキー」および電子ディスプレイを含む。他の実施形態では、検証装置120は、ソフトキーと物理的なボタンまたはスイッチとの組合せを含む。他の改変形態もあり得る。
本発明によるコンピュータ110では、多くの改変形態があり得る。例えば、コンピュータ110内にまたはコンピュータ110とともに、複数のプロセッサ112、メモリ114、入力装置116、出力装置118、および検証装置120(それに加え検証装置120内の各コンポーネントの複数)が設けられている。さらに、図1に不図示の装置がコンピュータ110内に含まれていてもよく、図1に示す各装置は、単一の装置へと組み合わせもしくは一体化するか、または場合によっては省略することができる。本明細書に記載し、図示する他の実施形態でも、同様の改変および修正が可能である。
本発明は多くの形態で実施する。例えば本発明は、チップ上のソフトウェアなどの埋め込みシステムとする。別の実施形態では、本発明は、図1に示す本発明の1つまたは複数のパーツ内に位置する1つまたは複数の装置として実施する。例えば本発明は、コンピュータ可読命令(例えばチップ上のソフトウェア、可搬メモリ装置または統合メモリ装置内のソフトウェア、ハードウェア装置内に組み入れられるハードワイヤード命令、または他の改変形態)として実施される。別の実施形態では、本発明を1台または複数台の個別のコンピュータとして実施される。本発明は、コンピュータ可読命令(例えばコンピュータソフトウェア、ファームウェア、またはハードウェア)として実施される。それらのコンピュータ可読命令は、別の装置内に一体化されるかもしくは埋め込まれるメモリ装置内に、または取外し可能および持ち運び可能なメモリ装置内に記憶される。他の改変形態および実施形態もあり得る。
図2は、数台のコンピュータ110がネットワーク210を介して共に接続される本発明の別の実施形態を示す。ネットワーク210は、数台のコンピュータ110間の接続を可能にする。コンピュータ110を、ネットワーク210上の「エンドポイント」と呼ぶ。つまり、ネットワーク210上のコンピュータ110のうちの1台の観点からすれば、他のコンピュータ110は、ネットワーク接続を行うことができるネットワーク210上のエンドポイントである。
ネットワーク210は、例えばインターネット、ローカルエリアネットワーク、広域ネットワーク、メトロエリアネットワーク、または他の種類のネットワークとすることができる。ネットワーク210は、有線ネットワーク(電気ネットワークや光ネットワークなど)、無線ネットワーク、または様々な種類のネットワークの組合せとすることができる。
上記に記載したように、本発明はソフトウェア、ハードウェア、またはファームウェアとして実施されるか、または他の形式で具体化される。本発明は、例えばネットワーク210内のコンピュータ110の一部により、またはそのすべてにより具体化される。例えば、1台のコンピュータ110だけが検証装置120を含むことができる一方、ネットワーク210上の他のコンピュータ110は検証装置120なしで動作する。他の実施形態では、コンピュータ110の数台またはすべてが検証装置120を含む。他の実施形態では、検証装置120を含む本発明を実施する1つまたは複数のパーツを、ネットワーク210自体が含む。
図3は、本発明により作成されて、使用されるコンピューティングプラットフォーム310の一実施形態を示す。コンピューティングプラットフォーム310は、例えばプロセッサ112によって実行されるときであって、コンピュータ110のメモリ114内のコンピュータ可読命令が、プロセッサ112にコンピューティングプラットフォーム310を作成させるときに作成される。
図示の実施形態では、コンピューティングプラットフォーム310が、信頼性のある実行ファイル、ドライバシム(driver shim)314、およびハイパーバイザ316を含む。コンピューティングプラットフォーム310は、1つまたは複数のネットワークインターフェイス320、および1つまたは複数の信頼できない実行ファイル330も含んでもよい。ユーザインターフェイス150、信頼性のある実行ファイル312、ドライバシム314、ハイパーバイザ316、および信頼できない実行ファイル330は、特権レベル、アイデンティティ(identity)、および他の特徴など、1つまたは複数の特徴をそれぞれ有してもよい。
信頼性のある実行ファイル312は、破損しておらず、安全に実行できると想定される実行ファイルである。信頼性のある実行ファイル312は、例えば保護された金融取引に使用されるか、またはヘルスケア提供者と個人情報および機密情報をやり取りするために使用されるアプリケーション、またはユーザが信頼する情報もしくは他の何らかのアプリケーションである。
対照的に、信頼できない実行ファイル330は、信頼されていない実行ファイル、または安全であるかもしくはマルウェアによる感染などの望ましくない状態が存在しないと考えられていない実行ファイルである。
ハイパーバイザ316は、信頼性のある実行ファイル312および信頼できない実行ファイル330の両方にアクセスでき、信頼性のある実行ファイル312および信頼できない実行ファイル330が利用できる情報とアクセスを管理する。ハイパーバイザ316は、例えばメモリ114の分割など、他のタスクも実行することができる。一実施形態では、ハイパーバイザ316は、信頼性のある実行ファイル312が排他的に使用するためにメモリ114の固有の部分を分割し、信頼できない実行ファイル330が排他的に使用するためにメモリ114の固有の部分を分割し、ハイパーバイザ316が排他的に使用するためにメモリ114の固有の部分を分割する。複数の信頼性のある実行ファイル312、複数の信頼できない実行ファイル330、および複数のハイパーバイザ316のためにメモリ114を分割することなど、他の多くの実施形態もあり得る。メモリ114の固有の部分は、同一メモリ装置の異なる部分とするか、別々のメモリ装置の部分とするか、またはその組合せとする。さらに、ハイパーバイザ316は、それらの装置が共用するためにメモリを分割することもでき、ハイパーバイザ316は、コンピュータ110の他のパーツが排他的に使用するか、または共用するためにメモリを分割することができる。
ネットワークインターフェイス320は、ネットワーク210への接続を可能にする。一部の実施形態では、物理的ネットワークインターフェイス320が検証装置120内に位置する。このことは、ハイパーバイザ316がネットワークインターフェイス320へのアクセスを制御することを可能にするので有利である。他の実施形態では、ネットワークインターフェイス320は、コンピュータの別のパーツ内など、検証装置120の外部に位置する。ネットワークインターフェイス320が検証装置120内に位置する場合のように、この実施形態も、ハイパーバイザ316がネットワークインターフェイス320へのアクセスを制御することを可能にする。
コンピューティングプラットフォーム310は、多くの構成をとることができる。例えばコンピューティングプラットフォーム310は、1つまたは複数の信頼性のある実行ファイル312、1つまたは複数の信頼できない実行ファイル330、1つまたは複数のドライバシム314、および1つまたは複数のハイパーバイザ316を含む。さらに、コンピューティングプラットフォーム310は、本明細書に示さない他の機能を含むことができる。
図4は、本発明の一実施形態による信頼性のあるパスを確立するために、プロセッサ112が検証装置120と対話する方法の一実施形態を示す。図示の実施形態において、このプロセスは、信頼性のある実行ファイル312を実行する要求が最初にある状況を表す。信頼性のあるパスを確立するこのプロセスは、安全な接続を認証するステップを含むことができる。
図5Aは、信頼性のある実行ファイル312を実行する要求を示す信号をプロセッサ112が受け取った後、プロセッサ112によって実行される本発明によるプロセスの一実施形態を示す。信頼性のある実行ファイル312を実行する要求は、コンピューティングプラットフォーム310を作成した直後に受け取るか、またはその要求は1つもしくは複数の信頼できない実行ファイル330を実行することなど、プロセッサ112が他のタスクを実行した後の時点において受け取る。その要求を受け取った後、プロセッサ112は信頼性のある実行ファイル312に関係する特定の情報を検証装置120に送る。
図6は、プロセッサ112から信頼性のある実行ファイル312に関係する情報を受け取った後、検証装置120によって実行される本発明によるプロセスの一実施形態を示す。検証装置120は、信頼性のある実行ファイル312を実行すべきかどうかを判定し、プロセッサ112に信号を送り返す。
図5Bは、検証装置120から信号を受け取った後、プロセッサ112によって実行される本発明によるプロセスの一実施形態を示す。
次に図5A、図5B、および図6のそれぞれをより詳細に説明する。
図5Aおよび図5Bは、プロセッサ112によって実行される別の方法の一実施形態を示す。この方法は、コンピューティングプラットフォーム310を作成し終え、ユーザが信頼性のある実行ファイル312を実行したいときに実行する。この方法は、例えば、プロセッサ112によって実行されるとき、プロセッサ112のメモリ114内のコンピュータ可読命令が、プロセッサ112に以下のステップを実行させるときに実行する。
ステップ510は、信頼性のある実行ファイル312を実行する要求を示す信号を受け取ることを含む。この信号は人間のユーザによって開始されてもよく、またはコンピュータ110の他の何らかのパーツによってもしくは別のコンピュータによって開始されてもよい。
ステップ512は、ハイパーバイザ316と検証装置120との間の安全な接続を認証することを含む。このステップは、選択実行ファイル312を実行する要求を示す信号を受け取った後に実行される。
ステップ514は、ハイパーバイザ316の少なくとも一部分のアイデンティティを測定することを含む。このステップは、ハイパーバイザ316全体のアイデンティティを測定するか、またはハイパーバイザ316の一部のアイデンティティを測定する。この測定は、ハイパーバイザ316が既知の状態にあるときに行う。ハイパーバイザ316のこの測定は、ハイパーバイザ316が適切な状態にあるかどうか、または修正されるかもしくは他の方法で損なわれているかどうかを判定するために使用される。例えばハイパーバイザ316がマルウェアに感染した場合、ハイパーバイザ316のアイデンティティの測定値は、感染していないハイパーバイザ316の測定値とは異なる。
ステップ516は、ハイパーバイザ316のアイデンティティの測定値を検証装置120に送ることを含み、検証装置120において、その測定値は検証装置120内に記憶されるポリシと比較される。あるいは、この比較はプロセッサ112によって実行されてもよいが、プロセッサ112よりも検証装置120の方が安全な場合があり、したがって検証装置120を使用することが好ましいことがある。
ステップ518は、ドライバシム314の少なくとも一部分のアイデンティティを測定することを含む。
ステップ520は、ドライバシムのアイデンティティの測定値を検証装置120に送ることを含み、検証装置120において、その測定値は検証装置120内に記憶されるポリシと比較される。あるいは、この比較はプロセッサ112によって実行されてもよいが、プロセッサ112よりも検証装置120の方が安全な場合があり、したがって検証装置120を使用することが好ましい。
ステップ522は、ユーザインターフェイス150の少なくとも一部分のアイデンティティを測定することを含む。
ステップ524は、ユーザインターフェイス150のアイデンティティの測定値を、ユーザインターフェイス150用のポリシと比較することを含む。このステップは、プロセッサ112によって実行されてもよく、または検証装置120内で実行されてもよい。
測定値を受け取った後に検証装置120が実行するステップについて、図6を参照して以下に説明する。
ステップ526は、信頼性のあるパス152が確立されているかどうかを示す信号を検証装置120から受け取ることを含む。信頼性のあるパス152が確立されている場合、このプロセスはステップ520に進む。信頼性のあるパスが確立されていない場合、このプロセスはステップ520には進まない。
ステップ528は、信頼性のあるパスが確立されていることを検証装置120からの信号が示す場合、信頼性のある実行ファイルを実行することを含む。このステップ528は、信頼性のある実行ファイル312を実行する前に、さらなる条件が満たされていることも必要とし得る。
ただし、信頼性のある実行ファイル312を実行すべきでないことを検証装置120からの信号が示す場合、ステップ528は実行しなくてもよい。例えばコンピュータ110は、これらの状況において信頼性のある実行ファイル312が決して実行されない省略時解釈(default)を含む。あるいは、例えば(たとえ検証装置120が受け取った信頼性のある実行ファイル312の測定値が、検証装置120内に記憶されるポリシに一致しないことを示す信号をユーザが受け取った後でさえ)ユーザが追加入力を行って信頼性のある実行ファイル312を実行する場合など、コンピュータ110はオーバーライドを含む。ユーザからのこの入力は、図6に関して以下に説明するように例えば検証装置120上の入力を介して行う。
ステップ512〜524は、信頼性のある実行ファイル312を実行する要求を示す信号を受け取るステップ510の後に実行される。選択実行ファイル312が測定後かつ実行前に損なわれる状況を避けるために、最近の測定値が望ましい。これらのステップはさらに、コンピュータ110をリブートすることなしに実行される。コンピュータ110をリブートすることは時間がかかり、ユーザが待たなければならない時間を減らすことが望ましいので、このことは重要である。ただし、コンピュータ110をリブートする実施形態など、本発明は様々な実施形態で使用することができる。
図6は、検証装置120のプロセッサ122によって実行される方法の一実施形態を示す。この方法は、選択実行ファイル312が依然として安全であり、損なわれていないことを検証するために、図5Aのステップ514および518の後に実行することができる。例えば、検証装置120内のプロセッサ122によって実行されるときであって、検証装置120のメモリ124内のコンピュータ可読命令が、検証装置120内のプロセッサ122に以下のステップを実行させるときにこの方法は実行される。
ステップ610は、コンピュータ110内のプロセッサ112からハイパーバイザ316の測定値を受け取ることを含む。この測定値および測定値を送ることについては、図5Aにおいて上述した。
ステップ612は、検証装置120内に記憶されるポリシを、検証装置120が受け取るハイパーバイザ316の測定値と比較することを含む。このステップは、ハイパーバイザ316の測定値を検証装置120内にポリシとして記憶される既知の値と比較し、検証装置120が受け取ったハイパーバイザ316の測定値が検証装置120内に記憶されるポリシに一致するかどうかを判定する。
ステップ614および616は、ドライバシム314に適用されることを除き、ステップ610および612と同様である。
ステップ618は、検証装置120が受け取ったハイパーバイザ316およびドライバシム314の測定値が、検証装置120内に記憶される対応するポリシに一致するかどうかについての、人間が知覚できる指示を提供することを含む。他の実施形態では、このステップは、ハイパーバイザ316およびドライバシム314のそれぞれの状態についての人間が知覚できる指示を提供することでもよく、またはそのような指示を提供することも含む。
ステップ620は、信頼性のある実行ファイル312を実行する確認を示す入力をユーザから受け取ることを含む。このステップにおける人間による確認は、検証装置120が受け取ったハイパーバイザ316およびドライバシム314の測定値が検証装置120内に記憶されるポリシに一致すると判定された後、信頼性のある実行ファイル312を実行する確認である。あるいは、このステップにおける人間による確認は、検証装置120が受け取ったハイパーバイザ316およびドライバシム314の測定値が検証装置120内に記憶されるポリシに一致しないが、潜在的な問題にもかかわらず、ユーザが信頼性のある実行ファイル312を依然として実行したい状況をオーバーライドする確認とすることができる。一部の実施形態では、このステップは省略してもよい。例えば本発明は、検証装置120が受け取ったハイパーバイザ316およびドライバシム314のアイデンティティの測定値が検証装置120内に記憶されるポリシに一致する場合など、特定の状況においてユーザからの入力を必要としない場合がある。別の実施形態では、たとえハイパーバイザ316およびドライバシム314が損なわれているように思われても、本発明は、信頼性のある実行ファイル312を実行する前に警告を出すが、ユーザ入力を必要としない場合がある。
ステップ622は、信頼性のある実行ファイル312を実行するかどうかを示す信号をプロセッサ112に送ることを含む。信頼性のある実行ファイル312を実行するための信号は、検証装置120が受け取ったハイパーバイザ316およびドライバシム314の測定値が検証装置120内に記憶されるポリシに一致するかどうかに基づく。あるいは、信頼性のある実行ファイル312を実行するための信号は、ステップ620におけるユーザからの確認に基づくことができる。
ステップ512、514、516、518、520、522、524、610、612、614、および616は、信頼性のある実行ファイル312を実行する要求を示す信号を受け取るステップ510の後に実行される。信頼性のある実行ファイル312が測定後かつ実行前に損なわれる状況(検査時−使用時の脆弱性:time−of−check,time−of−use vulnerability)を避けるために、信頼性のある実行ファイル312の最近の測定値が望ましい。これらのステップはさらに、コンピュータ110をリブートすることなしに実行される。コンピュータ110をリブートすることは時間がかかり、ユーザが待たなければならない時間を減らすことが望ましいので、このことは重要である。ただし、コンピュータ110をリブートする実施形態など、本発明は様々な実施形態で使用することができる。
各ステップの順序は、本明細書に示す順序と全く同じである必要はない。例えば、ステップ610および612は、ステップ614および616の前に実行するように記載したが、他の実施形態ではステップ610および612を、ステップ614および616の後に実行してもよい。図5および図6に記載のプロセスに関し、他の改変形態もあり得る。
図7は、ユーザインターフェイス150と信頼性のある実行ファイル312との間に信頼性のあるパス152を確立するための本発明の方法の一実施形態を示し、信頼性のあるパス152は、ハイパーバイザ316およびドライバシム314を含む。
ステップ710は、ハイパーバイザ316のアイデンティティを測定することを含む。このステップは、ハイパーバイザ316のアイデンティティの測定値を証明することを含むことができる。さらに、ハイパーバイザ316のアイデンティティの測定値を証明することは、ソフトウェアベースの証明を含むことができる。
ステップ712は、ハイパーバイザ316のアイデンティティの測定値を、ハイパーバイザ用のポリシと比較することを含む。
ステップ714は、ドライバシム314のアイデンティティを測定することを含む。このステップは、ドライバシム314のアイデンティティの測定値を証明することを含むことができる。さらに、ドライバシム314のアイデンティティの測定値を証明することは、ソフトウェアベースの証明を含むことができる。
ステップ716は、ドライバシム314のアイデンティティの測定値を、ドライバシム314用のポリシと比較することを含む。
ステップ718は、ユーザインターフェイス150のアイデンティティを測定することを含む。このステップは、ユーザインターフェイス150のアイデンティティの測定値を証明することを含むことができる。さらに、ユーザインターフェイス150のアイデンティティの測定値を証明することは、ソフトウェアベースの証明を含むことができる。
ステップ720は、ユーザインターフェイス150のアイデンティティの測定値を、ユーザインターフェイス用のポリシと比較することを含む。
ステップ722は、ハイパーバイザ316のアイデンティティ、ドライバシム314のアイデンティティ、およびユーザインターフェイス150のアイデンティティが、ハイパーバイザ316用のポリシ、ドライバシム314用のポリシ、およびユーザインターフェイス150用のポリシにそれぞれ一致するかどうかについての、人間が知覚できる指示を提供することを含む。
ステップ722は、人間が知覚できる単一の指示を提供することを含むか、または人間が知覚できる複数の指示を提供することを含む。一実施形態では、ステップ722は、ハイパーバイザ316のアイデンティティ、ドライバシム314のアイデンティティ、およびユーザインターフェイス150のアイデンティティのすべてが、ハイパーバイザ316用のポリシ、ドライバシム314用のポリシ、およびユーザインターフェイス150用のポリシにそれぞれ一致する場合に人間が知覚できる第1の指示を提供すること、ハイパーバイザ316のアイデンティティ、ドライバシム314のアイデンティティ、およびユーザインターフェイス150のアイデンティティのうちの少なくとも1つが、ハイパーバイザ316用のポリシ、ドライバシム314用のポリシ、およびユーザインターフェイス150用のポリシそれぞれに一致しない場合に人間が知覚できる第2の指示を提供することを含み、人間が知覚できる第1の指示は、人間が知覚できる第2の指示とは異なる。
ステップ724は、信頼性のある実行ファイル312を実行することを含む。
本発明では他の多くの改変形態もあり得る。例えば一実施形態では、ハイパーバイザ316用のポリシおよびドライバシム314用のポリシが、ユーザインターフェイス150と信頼性のある実行ファイル312との間の信頼性のあるパス152の一部ではないコンポーネント内に記憶される。
別の実施形態では、ハイパーバイザ316およびドライバシム314がコンピュータ110によって実装され、ハイパーバイザ316用のポリシおよびドライバシム314用のポリシは、ハイパーバイザ316およびドライバシム314が実装されるコンピュータ110から離れた装置内に記憶される。
別の実施形態では、ユーザインターフェイス150用のポリシがドライバシム314内に記憶される。
図8は、図7のステップ720と722との間で追加のステップが実行される、本発明の別の実施形態を示す。
ステップ810は、信頼性のある実行ファイル312のアイデンティティを測定することを含む。このステップでは、改変形態があり得る。
ステップ812は、信頼性のある実行ファイル312のアイデンティティの測定値を、信頼性のある実行ファイル312用のポリシと比較することを含む。
本発明では改変形態があり得る。具体的には、各方法を実行する順序を修正することができる。例えば、上記で述べたように、ステップ714(ドライバシムのアイデンティティを測定すること)およびステップ716(ドライバシムのアイデンティティの測定値を比較すること)は、ステップ710(ハイパーバイザのアイデンティティを測定すること)の後で、およびステップ712(ハイパーバイザのアイデンティティの測定値を比較すること)の後に実行することができる。また、図8に関し、ステップ810(信頼性のある実行ファイルのアイデンティティを測定すること)およびステップ812(信頼性のある実行ファイルのアイデンティティの測定値を比較すること)は、ステップ714(ドライバシムのアイデンティティを測定すること)の後で、およびステップ716(ドライバシムのアイデンティティの測定値を比較すること)の後に実行することができる。他の改変形態もあり得る。
図9は、図7のステップ720と722との間で追加のステップが実行される、本発明の別の実施形態を示す。
ステップ910は、ユーザインターフェイス150とハイパーバイザ316との間の信頼性のあるパス152内の追加コンポーネントのアイデンティティを測定することを含む。ユーザインターフェイス150とハイパーバイザ316との間の追加コンポーネントは、例えばメモリコントローラハブ、入出力コントローラハブ、グラフィックスコントローラ、USBコントローラ、専用キーボードコントローラ、またはユーザインターフェイス150とハイパーバイザ316との間で使用されるバス(例えばPCIeバス)である。
ステップ912は、ユーザインターフェイス150とハイパーバイザ316との間の信頼性のあるパス152内の追加コンポーネントのアイデンティティの測定値を、そのコンポーネント用のポリシと比較することを含む。追加コンポーネント用のポリシは、例えばユーザインターフェイス150と信頼性のある実行ファイル312との間の信頼性のあるパス152の一部ではないコンポーネント内に記憶する。例えば、追加コンポーネントはコンピュータ110によって実装され、追加コンポーネント用のポリシは、追加コンポーネントが実装されるコンピュータ110から離れた装置内に記憶される。
他の改変形態および修正形態もあり得る。
図10は、ステップ722が、人間が知覚できる第1の指示および第2の指示の両方を提供することを含む、本発明の別の実施形態を示す。この実施形態では、人間が知覚できる第2の指示を提供した後に、およびハイパーバイザのアイデンティティ、ドライバシムのアイデンティティ、およびユーザインターフェイスのアイデンティティのうちの少なくとも1つが、ハイパーバイザ用のポリシ、ドライバシム用のポリシ、およびユーザインターフェイス用のポリシそれぞれに一致しない場合、ステップ1010が実行される。
ステップ1010は、ハイパーバイザ316、ドライバシム314、およびユーザインターフェイス150の少なくとも1つを既知の良好な状態に復元することを含む。
図11は、ステップ722の後に追加のステップが実行される本発明の別の実施形態を示す。
ステップ1110は、ハイパーバイザ316のアイデンティティが、ハイパーバイザ316用のポリシに一致すると判定することを含む。
ステップ1112は、ドライバシム314のアイデンティティが、ドライバシム314用のポリシに一致するかどうかを判定することを含む。このステップは、ハイパーバイザ316のアイデンティティが、ハイパーバイザ316用のポリシに一致すると判定した後に実行される。
ステップ1114は、ドライバシム314のアイデンティティが、ドライバシム314用のポリシに一致しない場合にドライバシム314を既知の良好な状態に復元することを含む。
ステップ1116は、ユーザインターフェイス150のアイデンティティが、ユーザインターフェイス150用のポリシに一致するかどうかを判定することを含む。このステップは、ドライバシム314のアイデンティティが、ドライバシム314用のポリシに一致しない場合にドライバシム314を既知の良好な状態に復元した後に実行される。
ステップ1118は、ユーザインターフェイス150のアイデンティティが、ユーザインターフェイス150用のポリシに一致しない場合にユーザインターフェイス150を既知の良好な状態に復元することを含む。
これらのステップは、好ましくは厳密な順序で実行される。具体的には、ドライバシム314はユーザインターフェイス150の前に検証される。ドライバシム314が不良の場合、ユーザインターフェイス150も不良とみなされる。ドライバシム314は、ユーザインターフェイス150より前に直される。別の言い方をすれば、本発明の一実施形態によれば、ドライバシム314のアイデンティティがドライバシム314用のポリシに一致しない場合、ユーザインターフェイス150のアイデンティティは、ユーザインターフェイス150用のポリシに一致しないと想定される。
図12は、本発明の別の実施形態を示す。この実施形態は、ステップ1010の後に追加のステップを含む。
ステップ1210は、既知の良好な状態に復元したハイパーバイザ316、ドライバシム314、およびユーザインターフェイス150のうちの少なくとも1つのアイデンティティを測定することを含む。
ステップ1212は、既知の良好な状態に復元したハイパーバイザ316、ドライバシム314、およびユーザインターフェイス150のうちの少なくとも1つのアイデンティティの測定値を、ハイパーバイザ316、ドライバシム314、およびユーザインターフェイス150のうちの少なくとも1つのための対応するポリシと比較することを含む。
図13は、本発明の別の実施形態を示す。この実施形態は、ステップ712の後に追加のステップを含む。
ステップ1310は、ハイパーバイザ316のアイデンティティが、ハイパーバイザ316用のポリシに一致すると判定することを含む。
ステップ1312は、TPM装置が損なわれていると判定することを含む。
ステップ1314は、TPM装置を既知の良好な状態に戻すことを含む。このステップは、例えば既知の良好な状態に戻るようにTPM装置に指示する適切な命令をTPM装置に送るハイパーバイザ316によって実施される。
ステップ1316は、TPM装置内の既存の鍵を破壊することを含む。このステップは、例えばTPM装置に適切な命令を送るハイパーバイザ316によって実施される。
ステップ1318は、TPM装置内の新たな鍵を作成することを含む。このステップは、例えばTPM装置に適切な命令を送るハイパーバイザ316によって実施される。
図14は、信頼性のあるパス152が信頼性のあるシェル(shell)を含む、本発明の別の実施形態を示す。
ステップ1410は、信頼性のあるシェルのアイデンティティを測定することを含む。
ステップ1412は、信頼性のあるシェルのアイデンティティの測定値を、信頼性のあるシェル用のポリシと比較することを含む。信頼性のあるシェル用のポリシは、信頼性のあるパス152の外部に記憶することができる。例えば、信頼性のあるシェルはコンピュータ110によって実装され、信頼性のあるシェル用のポリシは、信頼性のあるシェルが実装されるコンピュータ110から離れた装置内に記憶される。
図15は、ステップ724の後に追加のステップが実行される本発明の別の実施形態を示す。
ステップ1510は、信頼性のある実行ファイル312の実行を一時停止することを含む。
ステップ1512は、信頼性のある実行ファイル312が一時停止されたという、人間が知覚できる指示を提供することを含む。
図16は、ステップ722と724との間で追加のステップが実行される、本発明の別の実施形態を示す。
ステップ1610は、信頼性のある実行ファイル312を実行する確認を示す入力を人間のユーザから受け取ることを含む。
1例示的実施形態
1.1 概要
次に本発明をいくつかの特定の実施形態に関して説明する。これらの実施形態は本発明の例証だが、本発明は本明細書に示し説明する特定の実施形態に限定されることはない。
1.2 アーキテクチャ概要
この節は、本発明のアーキテクチャの一実施形態(図17参照)の概要を含む。使用可能なシステムを構築することが重要な目標なので、安全な環境を築くためにユーザが行わなければならないステップ、ユーザエクスペリエンスを最初に説明する。次いで、安全な環境を確立するためにシステムが行うステップを列挙する、システムコンポーネントおよびシステム動作を示す。次の節では、技術的手法についての詳細を示す。
ユーザエクスペリエンス。ユーザの観点から、入出力用の信頼性のあるパスを有する安全な環境を確立することは以下のように進められる。(例えばUSBインターフェイスを介してPCに接続し、USBメモリスティックと同じくらいの大きさである)信頼性のある検証装置120上のボタンを押すことにより、ユーザは、標準的なキーボード116からの入力用の信頼性のあるパス152と、標準的なディスプレイ118上への出力用の信頼性のあるパスとを提供する安全な環境を立ち上げる。安全な環境が成功裏に確立される場合(確立されたかどうかは信頼性のある検証器120が検査することができる)、ユーザは、例えば装置120上で点灯する緑色のLEDと、ブザーが発する短い「OK」ビープ音とを使って知らされる。安全な環境を確立することをマルウェアが妨げる場合、信頼性のある検証器120がそれを検知し、例えば装置120上に赤色のLEDを点灯させ、アラームを鳴らし、キーボード116にいかなる秘密も入力しないよう、およびディスプレイ118上に表示されるいかなる内容も信頼しないようにユーザに注意を喚起する。
システムコンポーネント。図17に示すアーキテクチャの主要なコンポーネントには、(上記では検証装置と呼んだ)信頼性のある検証器120、(上記ではハイパーバイザと呼んだ)トラストバイザ(TrustVisor)316、および信頼性のあるアプリケーションが含まれる。
信頼性のある検証器120。標準的なPC(コンピュータ110を「PC」と呼ぶこともある)上にマルウェアがある状態でユーザが検証可能な信頼性のあるパスを実現するために、最初の信頼性のあるエンティティが必要である。このために、信頼性のある検証器と呼ぶ、ユーザが持ち運べる最小限の追加装置を提案する。信頼性のある検証器は、USBインターフェイスを介してPCに接続し、多色LED、ブザー、ボタンなどの最小限のユーザI/O機能を有する、USBメモリスティックと同様の小さな装置である。信頼性のある検証器は、PC環境の検証中に暗号操作を行うのに十分な最小限の計算能力を提供する。
トラストバイザ316。トラストバイザは、レガシOSを実行するためのハイパーバイザ機能を実装するとともに、レガシOS内の信頼できないコンポーネントと強く隔離した状態で独立型アプリケーションを実行する能力を提供する、システムのコアコンポーネントである。トラストバイザは、キーボード116から信頼性のあるアプリケーション312への、および信頼性のあるアプリケーション312からディスプレイ118への入出力用の信頼性のあるパスも提供する。トラストバイザは、信頼性のある検証器120がトラストバイザ316の動作の正しさを検査することを可能にする検証関数をさらに備える。
信頼性のあるアプリケーション。信頼性のあるアプリケーションは、ドライバシム314と、レガシOS1712空間内の任意のマルウェアからトラストバイザ316によって保護される隔離された実行環境内で実行ファイル312を実行するための信頼性のあるシェル1710とからなる(1.3.3節はこれらのコンポーネントについてより多くの詳細を示す)。図17が示すように、トラストバイザ316は、ドライバシム314内のドライバを介し、信頼性のあるアプリケーション空間に信頼性のあるI/Oを提供する。一実施形態において、(図17内のEで示す)2つの信頼性のある実行ファイル312を構築することを計画する。第1の信頼性のある実行ファイルは、信頼性のあるパス152を活用して安全なディスク暗号化をサポートする一方で、第2の信頼性のある実行ファイルは、信頼性のある方法でTPMチップ上の保証鍵を鍵更新するための機構を提供する。1.4節により多くの詳細を示す。
システム動作。本発明はシステムの観点から言及することがあり、そのシステムは通常、一体化されていてもされていなくてもよいコンピュータ110および検証装置120を意味する。システムの動作を説明するために、1つのあり得るシステムの具体例のライフサイクルをここで示す。検討するシナリオは、ユーザが信頼性のある検証器120装置上のボタンを押すと、アプリケーションとしての信頼性のあるシェル1710と信頼性のある環境を確立するようにシステムが設定されるシナリオである。
この例では、PCのブートプロセスが最初にトラストバイザ316をロードするように設定されており、そのトラストバイザ316が、レガシOS1712をロードして実行すると想定する。ユーザの観点から、システムはこの段階ではレガシシステムの区分がつかない。ここでユーザは、自らの信頼性のある検証器120装置をPCのUSBインターフェイスに接続する。信頼性のあるシェル1710を立ち上げるために、そのユーザは信頼性のある検証器120上のボタンを押す。信頼性のある検証器120装置は、トラストバイザ316のコードおよび実行完全性を最初に検証し、すなわちマルウェアまたは悪意ある内部者によってことによると修正されたバージョンではなく、予期されたトラストバイザ316のコードが実行されていることを確認する。このために、信頼性のある検証器120およびトラストバイザ316は、1.3.4節でより詳細に説明するソフトウェアベースの証明プロトコルに関与する。他の証明プロトコルもあり得る。ハードウェアベースの証明プロトコルも使用することができる。検証が成功する場合、信頼性のある検証器120は緑色のLEDを点灯させ、「成功」ビープ音を鳴らし、さもなければ赤色のLEDを点灯させてアラームを鳴らす。
入出力用の信頼性のあるパス152を確立するために、トラストバイザ316は、キーボードコントローラおよびディスプレイコントローラから、信頼性のあるパス152を妨げる可能性がある任意の潜在的に有害な構成またはコード残余(code residue)を除去する必要がある。例えば、キーボードはキーリマッピングを含む可能性があり、またはディスプレイは、信頼性のあるシェル1710が可視領域の外側に書くような解像度で構成されている可能性がある。したがって、トラストバイザ316は、キーボード116およびディスプレイ118に関連するすべての状態およびコードをリセットする。次いでトラストバイザ316は、信頼性のあるシェル1710をロードし、信頼性のあるシェル1710のハッシュを既知の良好な値と比較することによってコードの完全性を検証し、信頼性のあるシェル1710を実行し始める。
システムが損なわれている場合、トラストバイザ316自体では侵入を検知し、実行を阻止することはできないことに留意されたい。このことを説明するために、信頼性のあるパス152を改竄するようにハードディスク上のトラストバイザのコードを変更した悪意ある内部者を考察されたい。ただしこの場合、信頼性のある検証器120は変更を検知し、アラームを鳴らす。したがってユーザは、機密情報の入力を控えるように注意を喚起される。
1.3 技術的手法の詳細
1.2節で論じたように、本発明のこの実施形態は3つの主要なコンポーネント、つまり信頼性のある検証器装置120、トラストバイザ316と呼ばれる安全なハイパーバイザ、およびソフトウェアベースの証明コンポーネントを含む。次に各コンポーネントについて順に論じる。図17は、システムの高レベル全体像を示す。
1.3.1 信頼性のある検証器装置
信頼性のある検証器120装置は、ユーザのための信頼のルートを形成する。信頼性のある検証器120は、ユーザがその正しい動作を信頼性のあるものである。より詳細には、一実施形態によれば、信頼性のある検証器316装置の要件は以下の通りである。
正しい動作:信頼性のある検証器316上で実行されているソフトウェアが、危険にさらされることに対して非常に高いロバスト性を提供することを確実にする必要がある。信頼性のある検証器316上で実行されるすべてのソフトウェアを形式的に検証することを計画する(1.4.3節参照)。
最小入力機能:装置120は、信頼性のある環境を立ち上げるためにユーザが使用可能な少なくとも1つのボタンを有する。
最小出力機能:この装置は、様々な状態を示すための出力能力を有するべきである。例えば、オレンジ色のライトは信頼性のある環境が実行されていないことを示し、緑色のライトは信頼性のある環境が正しく実行されていることを示し、アラームビープ音を伴う赤色のライトは信頼性のある環境が正しく実行されていないか、またはセットアップに失敗したことを示す。
信頼性のある検証器装置316は、3つのLED(オレンジ、緑、および赤)、1つのブザー、および1つのボタンを含む。LEDはシステムの検証状態を示し、ブザーは聴覚上のフィードバックを与え(検証に失敗する場合アラームが鳴る)、ボタンは検証プロセスを開始するために使用される。ハードウェアプラットフォームとして、USB周辺機器を開発するための人気のあるソリューションであるLPC2148開発ボードを使用することができる。信頼性のある検証器120は、LPC214xマイクロコントローラのビルトインUSBデバイスに関するハードウェアインターフェイスおよびUSBエニュメレーション/構成を処理するUSBコアスタックである、LPC214xUSBスタックに基づくことができる。
図17が示すように、信頼性のある検証器装置316はUSBリンクを介してPCと通信する。一実施形態では本発明は、トラストバイザ316と一体化される小さな独立型USBホストコントローラデバイスドライバを含む。このことは、本発明が、信頼性のある検証器120と通信するためにOS1712を信頼しないようにすることを可能にする。
図18は、信頼性のある検証器120の状態機械を示す。信頼性のある検証器120が最初にPCにプラグで接続されると、信頼性のある検証器120は初期状態に留まり、オレンジ色のLEDを点灯させる。トラストバイザ316は、信頼性のある検証器120からの任意のコマンドがないかどうかUSBインターフェイス140を周期的に問い合わせる(query)。ユーザが信頼性のある検証器120上のボタンを押すと、信頼性のある検証器120は証明開始コマンドをトラストバイザ316に送る。トラストバイザ316はそのコマンドを取得し、信頼性のある検証器120にチャレンジを要求する。受け取ったチャレンジに基づき、トラストバイザ316は検証関数を呼び出してチャレンジについてのチェックサム値を計算し、その値を信頼性のある検証器120に返す。1.3.4節は、ソフトウェアベースの証明関数についてより詳細に説明する。トラストバイザ316が誤ったチェックサム値を返すか、または正しい値をあまりにも遅く返す場合、信頼性のある検証器120は何らかのマルウェアが存在する可能性があるとみなし、アラームを発し、赤色のLEDをつけることによってユーザの注意を喚起しなければならない。さもなければ、検証関数がトラストバイザ316のハッシュ値を計算し、そのハッシュ値を信頼性のある検証器120に送る。ハッシュ値が正しくない場合、信頼性のある検証器120はユーザの注意を喚起する。さもなければ、トラストバイザ316が正しいことを意味する緑色のLEDが点灯し、それによりユーザは、トラストバイザ316によって開始される信頼性のあるアプリケーションを今度は信頼することができる。信頼性のあるアプリケーションが終了した後、トラストバイザ316は信頼性のある検証器120に通知し、信頼性のある検証器120はその初期状態に戻る。
図19は、トラストバイザ316と信頼性のある検証器120との間の通信のより詳細なプロトコル図を示す。このやり取りの単純さに基づき、両方のコンポーネント上のコードがセキュリティ上の弱点を一切含まないことを完全に検証する。
不都合なことに、検査時−使用時(TOCTTOU)の脆弱性を防ぐ必要がある。検証が成功する場合、信頼性のある検証器120はユーザに成功の信号を供給し、ユーザはそのとき入出力用の信頼性のあるパス152を想定する。しかし、ユーザが一瞬気をそらし、ユーザが気付くことなしにマシンがどういうわけか素早くリブートされる場合、今では悪意あるアプリケーションがディスプレイ上に予期される画面を提示する。当然ながら、信頼性のある検証器120上の緑色のライトがオンであることはないが、ユーザが確認しない可能性はある。この明らかに人為的な脆弱性を回避するために、信頼性のある検証器120の装置がリセットし、またはリブートされるときを知らせるためのビープ音を追加する。PCがリセットする場合は取り付けられるすべてのUSBデバイスがリセットされるので、ビープ音がおそらくユーザの注意を喚起する。
1.3.2 トラストバイザ:
信頼性のあるセキュリティハイパーバイザであるトラストバイザ316、信頼性のあるハイパーバイザは、以下の要件および特性を有することができる。
1.システムのTCBを形成するCPU112およびメモリコントローラだけに依拠しながら、システムの残りの部分から隔離して実行されること。
2.システム上にあり得る任意のマルウェアから、信頼性のあるアプリケーション312のコードを(OS1712からの支援なしに)強く隔離すること。
3.完全に隔離された様式で正しいコードを実行していることを、信頼性のある検証器120に立証(証明)すること。
4.自らのセキュリティ特性を(数学的な意味で)証明するために、形式的な検証を受け入れること。
5.既存のシステムに容易に統合すべきこと。すなわちトラストバイザ316とともに動作するように、既存のシステムを移植する相当な労力を必要とすべきでないこと。
トラストバイザ316は、システム上の最高の特権レベルである仮想マシンモニタ(VMM)の特権レベルで実行される。トラストバイザ316は、Intel(登録商標)およびAMD(登録商標)からの汎用CPU内に含まれる、CPUによってサポートされる仮想化を使用して、システムの残りの部分から隔離されて実行される。ただし、他のCPUアーキテクチャ上の仮想化サポートも、トラストバイザをそれらのアーキテクチャに移植できるようにすることができる。トラストバイザは、x86アーキテクチャに固有のものではない。CPU112およびメモリコントローラは、そのような隔離をもたらすためのハードウェア保護機構を提供する。
OS1712よりも高い特権レベルで実行されることにより、トラストバイザ316は、OS1712とは独立に、信頼性のあるアプリケーションを強く隔離することができる。トラストバイザ316は、信頼性のあるアプリケーションを、カーネルルートキットなどのあらゆるOSレベルのマルウェア、ならびにアプリケーションレベルのマルウェアから隔離することができる。さらに、トラストバイザ316は、マルウェアがVMMの特権レベルで実行されることを防ぐことができる。例えば、仮想マシンベースのルートキット(VMBR)Blue Pill[31]またはSub Virt[26]は、VMM特権を使って実行することにより検出を逃れる。
1.3.4節で説明するように、信頼性のある検証器120は、システムのソフトウェアベースの証明コンポーネントを使用して、トラストバイザ316が完全に隔離された様式で正しいコードを実行していることを検証する。トラストバイザ316は、本発明の発明者の一部によって開発された以前のセキュリティハイパーバイザであるSecVisorに基づいて設計し、実装した[33]。トラストバイザ316の詳細を示す前に、SecVisorの概要を示す。
SecVisorの概要。SecVisorは、商品OSカーネルのコードの完全性を保証する極めて小さなハイパーバイザである[33]。具体的には、SecVisorは、全システム寿命にわたり、ユーザが承認したコードしかカーネルモードで実行できないことを確実にする。このことは、カーネルルートキットなどのコード投入攻撃からカーネルを守る。SecVisorは、CPU112、メモリコントローラ、およびシステムメモリチップ以外のすべてを制御する攻撃者に対してさえ、この特性を達成することができる。さらにSecVisorは、ゼロデイカーネルエクスプロイトの知識を有する攻撃者に備えることさえも可能である。
SecVisorは、ユーザが承認したコードしかカーネルモードで実行できない特性を達成するために、ハードウェアメモリ保護に依拠する。SecVisorは、ソフトウェアメモリ仮想化技法およびハードウェアメモリ仮想化技法の両方を実装する。どちらの仮想化技法も、SecVisorがアドレス変換のためのページテーブルを設定することを要求する。また、これらのページテーブルは、SecVisorによって用いられて、メモリ上のハードウェア保護を設定する。
SecVisorの主な設計目標は、形式的な検証を受け入れられること、および商品OSを移植する容易さである。SecVisorのソフトウェアおよびハードウェアのメモリ仮想化バージョンの実行時部分のコードサイズは、2000行未満である。そのような小さなコードサイズは、SecVisorのコードが形式的な検証ツールを受け入れるようにする。さらに、SecVisor上で実行するようにLinuxカーネルバージョン2.6.20を移植することは最小限の変更しか必要とせず、カーネル内の約430万行のコードのうち、100行未満のコードを変更する必要があった。
トラストバイザ316の設計。SecVisorが使用するハードウェアメモリ保護を修正して、信頼性のあるアプリケーションをシステムの残りの部分から隔離することであるトラストバイザ316の目標を達成することができる。トラストバイザ316に対して実装する重要なコンポーネントは、複数の実行ファイルを処理し、それらの実行ファイルを切り替える能力であり、具体的にはOS1712が1つの実行ファイルであり、信頼性のあるアプリケーションがもう一方の実行ファイルである。
SecVisorのコードベースを再利用することは、トラストバイザ316がSecVisorの望ましい特性を自動的に得ることを可能にする。このことは、トラストバイザ316を形式的に検証することを可能にし、トラストバイザ316を既存のシステムに統合することを簡単にするはずである。重要な目標は検証を受け入れるコードを作り出すことなので、トラストバイザ316を形式的に検証することは、トラストバイザ316の設計および実装形態に影響を及ぼす。
1.3.3 信頼性のあるアプリケーション。信頼性のあるアプリケーションは、(実行ファイル312と呼ぶ)複数のプログラム、信頼性のあるシェル1710、およびドライバシム314からなる。信頼性のあるシェル1710は、実行ファイル312への単純な実行インターフェイスを提供する。図20は、信頼性のあるアプリケーションのアーキテクチャを示す。実行ファイルを、それぞれが1つまたは多くてもいくつかのセキュリティ面での配慮を要する(security sensitive)操作を実行する、小さな相対的に自己完結型のプログラムであるものとして視覚化する。1.4節に、2つの実行ファイル候補の例を示す。信頼性のあるアプリケーションは任意の数の実行ファイル312を含み、トラストバイザ316が信頼性のあるアプリケーションを呼び出すとき、それらのうちの1つまたは複数が実行される。
ドライバシム314は、キーボードドライバおよびディスプレイドライバを有する層を扱う装置である。信頼性のあるシェル1710は、実行ファイル312のための有限リソースマネージャの役割を担い、ユーザインターフェイスに対処する。信頼性のあるシェル1710は、余計なものを省いたOSカーネルと非常に単純なシェルとの組合せと考える。目標は、形式的な検証を行うためにコードが十分に小さく単純であるように、信頼性のあるシェル1710を設計することである。この目標を達成するために、信頼性のあるシェル1710のリソース管理機能を最小限に留める。活用するつもりである1つの技法は、セキュリティ上、重大ではない任意のリソース管理機能を信頼できないレガシOS1712に実行させることである。したがって、信頼性のあるシェル1710は、セキュリティを危険にさらすことなくOSによって実行することができないリソース管理機能だけを実行する。以下では、ドライバシム314、信頼性のあるシェル1710、および実行ファイル312をより詳細に説明する。
ドライバシム314。ドライバシム314は、キーボードドライバおよびディスプレイドライバからなる。ディスプレイドライバはテキストモードしかサポートせず、したがって非常に小さく単純である。さらに、信頼性のあるシェル1710のメニュー方式の特性により、キーボードドライバは非常に限られた数のキー(矢印キー、エンターキー、および数字キー)しかサポートする必要がない。したがって、キーボードドライバも非常に小さく単純である。
ディスプレイドライバおよびキーボードドライバを信頼性のあるアプリケーション内に有する主な理由は、信頼性のあるアプリケーションが、OSとは独立にキーボードおよびディスプレイを制御できるようにするためである。ユーザのあらゆるI/Oは隔離された区分によって処理されるので、このことは、ユーザと信頼性のあるアプリケーション内の任意の実行ファイルとの間に信頼性のあるパス152を築くことを可能にする。ドライバシム314をトラストバイザ316内に配置することもできるが、トラストバイザ316のコードサイズを最小限に留めるために、ドライバシム314をトラストバイザ316の外側に配置することにする。このことは、攻撃に対するトラストバイザ316の脆弱性を低減する。
キーボードとディスプレイは、OSと信頼性のあるアプリケーションとの間で時分割されるので、OSが中断されるときに、OSがこれらの装置の制御を放棄する方法が必要である。同様に、信頼性のあるアプリケーションも、OSに制御を戻す前にキーボードおよびディスプレイの制御を放棄すべきである。さもなければ、これらの装置が不安定な状態に移行し、システムをロックアップし得る可能性が非常に高い。
OSが中断される前にキーボードコントローラおよびディスプレイコントローラをリセットする、OSのための信頼性のあるアプリケーションのインターフェイスモジュールを構築することを提案する。このインターフェイスモジュールは、システムがロックアップするリスクなしに、信頼性のあるアプリケーションがこれらの装置を使用することを可能にする。さらに、このインターフェイスモジュールが装置を正しく再初期化し損なう場合、トラストバイザ316およびドライバシム314がそのことを検知し、TPの確立を拒否することができる。同様に、OSに制御を譲る前に、ドライバシム314もキーボードコントローラおよびディスプレイコントローラをリセットする。
信頼性のあるシェル1710。信頼性のあるシェル1710は、実行ファイル312のための有限リソースマネージャの役割を担い、ユーザインターフェイスに対処する。ユーザインターフェイスハンドラとしての役割では、信頼性のあるシェル1710は、様々な実行ファイル312を呼び出すためのメニュー方式のインターフェイスをユーザに提供する。リソースマネージャとしての役割では、信頼性のあるシェル1710は、簡単なスケジューラ、メモリ管理機能、およびプログラムロード機能を提供する。信頼性のあるシェル1710は、簡単なシステムコールインターフェイスを有して、実行ファイル312が信頼性のあるシェル1710と対話することを可能にする。次に、信頼性のあるシェル1710の様々なコンポーネントについてより詳細に説明し、それらのコンポーネントの複雑さを評価する。
信頼性のあるシェル1710が提供するメニューインターフェイスは、非常に単純である。そのメニューインターフェイスは、実行可能な実行ファイルのリストを表示する。ユーザは、例えば矢印キーまたは数字キーを使用して1つもしくは複数の所望の実行ファイルを選択し、エンターキーを押すことによりそれらの実行ファイルを呼び出すことができる。当然ながら、本発明はこれらの例の中で示す特定のキーの組合せまたは同様の詳細に限定されない。
本発明の一実施形態では、信頼性のあるシェル1710のスケジューラは、ユーザが選択したすべての実行ファイルを順に実行する簡単なラウンドロビンスケジューラである。コンテキストスイッチは、現在実行している実行ファイルがシステムコールを使用して信頼性のあるシェル1710を呼び出すことにより、CPU112の制御を明確に発生させる(yield)協同マルチタスキングを使用して生じる。このスケジューラは、極めて単純で小さいことを予期する。他の改変形態もあり得る。
メモリマネージャは、実行ファイルをロードするためのマルチページリクエストから、動的メモリ割当てルーチンによって行われるより小さなリクエストに及ぶ様々なサイズのメモリ割当てに対処することを担う。メモリマネージャは、実行ファイルを互いに隔離することも担う。実行ファイルが比較的単純なので、このメモリマネージャはOSのメモリマネージャほど複雑である必要はないと考える。
信頼性のあるシェル1710内のプログラムローダは、ELF(Executable and Linkable Format)のバイナリイメージを再配置することができる。ELF標準は、いくつかの普及しているUNIX(登録商標)ディストリビューションおよびLinux(登録商標)を含む改変形態の中に存在するバイナリによって使用される。ELFプログラムローダは、実行ファイルにメモリを割り当て、それらの実行ファイルが割り当てられたメモリ位置から実行することができるように、実行ファイルディスクイメージを再配置することを担う。プログラムローダのメモリマネージャは、実行ファイルイメージにしかメモリを割り当てず、他の動的メモリ割当てはサポートしないので非常に単純であり得ることに留意されたい。また、再配置コードは約100行のCコードからなり、非常に小さく単純である。
プログラムローダを単純化する重要な設計上の決定は、OSが実行ファイルのバイナリをディスクからロードできるようにすることである。ただし、他の設計もあり得ることに留意されたい。この設計は、プログラムローダの中にファイルシステムおよびディスクドライバを有する必要性をなくす。しかしこの設計では、実行ファイルイメージが信頼できないOSによってロードされるので、実行ファイルイメージの完全性を検証する方法が要求される。実行ファイルコードの完全性を検証するために使用される一般的な技法は、信頼性のある検証器120に実行ファイルの暗号学的ハッシュを計算させ、既知の良好な値と突き合わせて結果を確認させることである。プログラムローダは、実行ファイルの既知の良好なハッシュを保持し、OSによってロードされる実行ファイルディスクイメージのハッシュをそれらの値と突き合わせて比較することができる。
信頼性のあるシェル1710によって提供されるシステムコールインターフェイスは、キーボードおよびディスプレイを使用するためのI/Oシステムコール、実行ファイルとOSとの間でデータを転送するためのデータ転送システムコール、および実行ファイルがCPU112の制御を発生させることを可能にする発生システムコールからなる。I/Oシステムコールは、端末ライン制御機能からなり、ドライバシム314を利用してハードウェアにアクセスする。データ転送システムコールは、OSと実行ファイルとの間でデータを送るために必要である。最後に、発生システムコールは、協同マルチタスキングに必要である。
実行ファイル。実行ファイルを、それぞれが1つまたは多くてもいくつかのセキュリティ面での配慮を要する操作を実行する、小さな相対的に自己完結型のプログラムであるものとして視覚化する。1.4節に、2つの実行ファイル候補の例を示す。信頼性のあるシェル1710によって提供されるシステムコールインターフェイスを使用して実行するために、実行ファイルを移植しなければならないと今は考えているが、信頼性のあるシェル1710を単純に保ちながら、未修正のプログラムを実行ファイルとして実行できるように、信頼性のあるシェル1710のシステムコールインターフェイスを設計可能かどうかについても検討する。
信頼性のあるアプリケーションは任意の数の実行ファイルを含み、トラストバイザ316が信頼性のあるアプリケーションを呼び出すとき、任意の数の実行ファイルのうちの1つまたは複数が実行される。実行ファイルとの間のコンテキストスイッチは、協同マルチタスキングを使用して生じる。現在実行している実行ファイルは、発生システムコールを呼び出すことによりCPU112の制御を発生させる。次いで信頼性のあるシェル1710は、実行するために別の実行ファイルをスケジュールする。
実行ファイルはセキュリティ面での配慮を要する操作を行うので、実行ファイルの一部はそのメモリ内に秘密を有する可能性が高い。実行ファイルの秘密が漏洩することを防ぐために、そのように秘密が残ることは、電源切断イベントおよび中断イベントを慎重に扱うことを必要とする。電源切断イベントも中断イベントも、イベントが完了する前に実行ファイルにそのメモリから秘密を消去させるべきである。さもなければ、攻撃者は次の電源投入時または再開時にその秘密をメモリから読み取ることができる。
1.3.4 ソフトウェアベースの証明および検証可能コード実行
この節では、トラストバイザ316が任意のマルウェアと隔離された中で正しく実行されている保証を、信頼性のある検証器120の装置が得ることを可能にするために使用されるシステムのコンポーネントについて説明する。この技術は相当新しいので、システムの設計および実装されたシステムへのポインタに関する多くの技術的詳細を提供する。次いで、このシステムをよりロバストにするために本発明によって実装することができる改変形態または改善形態を説明する。
外部から検証可能なコード実行のためのコンポーネントは、コンピューティング装置上のターゲット実行ファイルと呼ばれる任意のコード片の実行が、存在し得る任意のマルウェアによって改竄されていない保証を、外部エンティティ(検証器)が得ることを可能にする。ターゲット実行ファイルが自己完結型である、すなわち実行中に他の任意のコードを呼び出さず、ターゲット実行ファイルが任意のソフトウェア脆弱性を含まないと仮定し、外部から検証可能なコード実行は以下の2つの保証と等価である。
1.正しい呼出し:検証器は、正しいターゲット実行ファイルイメージがメモリにロードされ、実行するために呼び出される保証を得る。
2.改竄されていない実行:コンピューティング装置上に存在し得るどのマルウェアも、ターゲット実行ファイルの実行をいかなる方法によっても妨げることはできない。
外部から検証可能なコード実行のためのソフトウェアベースの技法、およびハードウェアベースの技法の両方が提案されている。どちらの種類の技法も、コンピューティング装置上の信頼のルートに依拠する。信頼のルートとは、外部から検証可能なコード実行を実施する役割を担う信頼性のある計算処理機構である。信頼のルートは、ターゲット実行ファイルの完全性測定を行い、コンピューティング装置上で実行されている他のすべてのソフトウェアからターゲット実行ファイルを隔離するために適切な保護を設定し、実行するためにターゲット実行ファイルを呼び出す。信頼のルートはさらに、完全性測定値を認証済みの通信チャネルを介して検証器に送る。ターゲット実行ファイルの完全性測定値の正しい値を知る検証器は、受け取った完全性測定値を使用して、実行するために正しいターゲット実行ファイルが呼び出されたかどうかを検証する。さらに、ターゲット実行ファイルの実行はコンピューティング装置上の他のすべてのソフトウェアから隔離されているので、検証器はターゲット実行ファイルが改竄されずに実行される保証を得る。
外部から検証可能なコード実行のための2つの広く利用できるハードウェアベースの手法、AMDによるSVM(Secure Virtual Machine)[2]技術およびIntelによるTXT(Trusted Execution Technology)[23]では、信頼のルートはコンピューティング装置のハードウェアのサブセットからなる。提案するシステムでは、動作するために任意の秘密に依拠しないシステムを構築するためにソフトウェアベースの証明機構を活用する。秘密を一切必要としないことは、任意の秘密を保つ必要性をなくし、それにより多数の攻撃手段を除去するので極めて大きな利点である。ただし、ハードウェアによる信頼のルートを活用する本発明の改変形態もあり得る。
外部から検証可能なコード実行のためのソフトウェアベースの技法では、信頼のルートが動的に、すなわち要求に応じて確立される[32]。パイオニア(Pioneer)では、コンピューティング装置は、自らの命令シーケンスについてチェックサムを計算する、検証関数と呼ばれる自己チェックサム関数を有する。検証関数は、その実行がコンピューティング装置上の他のすべてのソフトウェアから隔離される、自らのための隔離された実行環境も設定する。隔離された実行環境は、コンピューティング装置上のどのマルウェアも、検証関数の実行を妨げることはできないことを保証する。攻撃者が任意の方法で検証関数を修正し、または隔離された実行環境の作成を捏造する場合、検証関数によって計算されるチェックサムは誤ったものになる。修正した検証関数または不適当に作成した隔離された実行環境を有するにもかかわらず、攻撃者が正しいチェックサムを偽造しようと試みる場合、そのチェックサムを計算するのにかかる時間は顕著に増加する。したがって以下の2つの条件が該当する場合、検証器は、コンピューティング装置上の検証関数が修正されておらず、隔離された実行環境が正しく設定されている保証を得る。
1.コンピューティング装置によって返されるチェックサムが正しい。
2.そのチェックサムが、予期される時間内に返される。
これらの2つの条件が該当する場合、検証器は、検証関数の方式で動的に作成された信頼のルートがコンピューティング装置上に存在する保証を得る。
想定。CPUのモデル、CPUのクロック速度、およびメモリレイテンシを含むコンピューティング装置の正確なハードウェア構成を検証器が検出していると想定する。コンピューティング装置のCPU112がオーバークロックされていないことも想定する。
ターゲット実行ファイルが自己完結型である、すなわち実行中にコンピューティング装置上の他の任意のソフトウェアを呼び出さないことも想定する。さらにターゲット実行ファイルは、例外を作り出さずにかつすべての割込みをオフにした状態で、CPU112の最も高い特権レベルで実行する。
攻撃者モデル。コンピューティング装置のソフトウェアを完全に支配する攻撃者を想定する。つまり、攻撃者はOSを含むあらゆるソフトウェアを改竄し、コンピューティング装置に悪意あるソフトウェアを恣意的に投入する。しかし、攻撃者がハードウェアを修正することはないと想定する。例えば、攻撃者は悪意あるファームウェアをネットワークカードやディスクコントローラなどの周辺装置上にロードし、またはCPU112をより速いCPUに置換することはない。さらに、攻撃者は、検証関数またはターゲット実行ファイルを含むメモリ領域を良好な周辺装置に上書きさせるDMA(Direct Memory Access)書込みをスケジュールすることなど、DMA攻撃を行うことはない。
検証可能コード実行概要。検証関数は、コンピューティング装置上に信頼のルートを動的にインスタンス化することを担う。図21に示すように、検証関数は、チェックサムコード、送信関数、およびハッシュ関数の3つの部分からなる。チェックサムコードは検証関数の命令についてのチェックサムを計算し、検証関数を実行するための隔離された実行環境も設定する。チェックサムコードがチェックサムを計算し終えた後、チェックサムコードは、送信関数を呼び出して、通信チャネルを介してそのチェックサムを検証器に転送する。検証器にチェックサムを送り返した後、チェックサムコードはハッシュ関数を呼び出し、そのハッシュ関数は、実行ファイルイメージについてのハッシュを計算することによりターゲット実行ファイルの完全性測定値を計算する。ハッシュ関数は、送信関数を使用してターゲット実行ファイルのハッシュを検証器に返し、ターゲット実行ファイルを呼び出す。ターゲット実行ファイルは、チェックサムコードによって設定される隔離された実行環境内で実行されるハッシュ関数によって直接呼び出されるので、ターゲット実行ファイルは同じ隔離された実行環境を継承する。また、このターゲット実行ファイルは自己完結型である。したがって、コンピューティング装置上のどのマルウェアも、ターゲット実行ファイルの実行に影響を及ぼすことができないことが保証される。
隔離された実行環境は、検証関数およびターゲット実行ファイルの実行のアトミック性を実現する。つまり、コンピューティング装置上の他のどのコードも、検証関数およびターゲット実行ファイルが実行し終わるまで実行することを許可されない。このアトミック性は、あらゆるマスク可能割込みをオフにした状態で、検証関数およびターゲット実行ファイルがCPU112の最も高い特権レベルで実行されることを確実にすることにより達成される。さらにチェックサム計算プロセスの一部として、あらゆるマスク不可能割込みおよび例外のために、検証関数イメージの一部である新たなハンドラを導入する。ターゲット実行ファイルは自己完結型なので、検証関数またはターゲット実行ファイル内のコード以外のどのコードも、これら2つのエンティティのいずれかが実行している限り実行することはできない。
パイオニアは、検証器とコンピューティング装置との間のチャレンジ・レスポンスプロトコルに基づく。図22にパイオニア・プロトコルを示す。検証器が、チャレンジとしてランダムノンス(random nonce)を送ることにより、コンピューティング装置上の検証関数を呼び出す。検証関数の中のチェックサムコードが、ランダムノンスに応じて、検証関数の命令シーケンスについてのチェックサムを計算する。ランダムノンスを使用することは、事前計算攻撃およびリプレイ攻撃を防ぐ。チェックサムコードは、送信関数を使用し、計算したチェックサムを検証器に送り返す。検証器は検証関数のコピーを有し、したがって独立にチェックサムを計算することができる。検証器は、コンピューティング装置が返すチェックサムの正当性、およびそのチェックサムが予期される時間内に返されることを確認する。これらの2つの条件が満たされる場合、検証器は、信頼のルートがコンピューティング装置上に正しくインスタンス化されている保証を得る。検証器にチェックサムを送り返した後、チェックサムコードはハッシュ関数を呼び出し、そのハッシュ関数は、検証器が送ったランダムノンスに連結するターゲット実行ファイルイメージのハッシュを計算する。次いでハッシュ関数は、ターゲット実行ファイルのハッシュを検証器に送り返す。検証器は、ターゲット実行ファイルイメージの自らのコピーを使用し、そのハッシュ値の正当性を検証する。コンピューティング装置が返すチェックサムを、検証器が以前成功裏に検証している場合、検証器はハッシュ関数が修正されておらず、隔離された実行環境内で実行されることを知ることに留意されたい。したがって検証器は、ハッシュ関数がターゲット実行ファイルイメージを正しくハッシュする保証を得る。最後に、ハッシュ関数が、実行するためにターゲット実行ファイルを呼び出す。
第2世代パイオニア・チェックサム関数。第1世代の関数よりも高度な攻撃者タイムオーバーヘッドを提供する第2世代のパイオニア・チェックサム関数を開発した[32]。この高レベルの概念は、CPUの速度とメモリの速度との間の大きな差を活用することであり、つまり攻撃者のチェックサム関数がメモリにアクセスするように強制されるのに対し、正しいチェックサム関数はいかなるメモリアクセスも行わない。メモリにアクセスさせることは、攻撃者のチェックサム計算を遅らせる。CPUのレベル1、レベル2、および(妥当な場合)レベル3キャッシュを満たす、空間最適(space optimal)チェックサム関数を構築する。攻撃者のチェックサム関数はより大きいので、CPUのキャッシュ内には収まらず、その結果、攻撃者がメモリアクセスを実行することを強いる。
増やされた攻撃者オーバーヘッドを有することに加え、第2世代のチェックサム関数はさらに、プロテクトモードのセグメント化サポートを有する32ビットx86CPU上で確実に動作し、あらゆる仮想メモリベースの攻撃に対処し、信頼できないSMM(システム管理モード)ハンドラに対応する。このチェックサム関数はリアルモードで実行され、それにより攻撃者がプロテクトモードのセグメント化を使用することを拒否する。リアルモードで動作することは、あらゆる仮想メモリベースの攻撃に対処することも可能にする。リアルモードではページングが使用可能にされていないので、これらの攻撃は起こり得ない。最後に、チェックサム関数レジスタはSMM内で実行され、SMMハンドラを信頼しなくて済むようにする。
これらの機能強化は、第2世代のチェックサム関数を第1世代の関数よりも大幅に安全にする。
1.4 評価
本システムの適用性を、2つの重要なセキュリティアプリケーションを構築することによって論証する。第1のアプリケーションは、信頼性のあるパス152を活用して安全なディスク暗号化をサポートする一方で、第2のアプリケーションは、信頼性のある方法でTPMチップ上の保証鍵を鍵更新するための機構を提供する。さらに、本システムのセキュリティ評価の大部分は、端末間のセキュリティ保証を提供するための、本システムの様々なコンポーネントの厳密な形式的分析を伴う。この安全なシステムの設計、実装、および分析の融合は、本発明に利点を与え、本発明の独自の特徴である。
1.4.1 ディスク暗号化。ラップトップなどの携帯機器上に記憶される機密情報を保護するセキュリティ機構が強く求められている。ラップトップが盗難に遭うことによる最近の多数のプライバシ喪失事故を考えると、そのような需要はとりわけ関連している。この問題に対処するための普及している手法は、ユーザが与えるパスワードに由来する鍵を使用し、ディスク上に記憶されるデータを暗号化する。現在の手法の深刻な弱点は、コンピューティング装置が使用中のときに、その鍵およびユーザのパスワードが攻撃を受けやすいことである。例えば、攻撃者はユーザのパスワードを傍受するためにキーストロークロガーを設置するか、またはOSに障害を生じさせてメモリから秘密鍵を盗む。本発明を使用し、たとえマルウェアおよび内部者攻撃を前にしても安全なディスク暗号化を行うために、本システムを使用して設定される信頼性のあるパス152を活用するアプリケーションを構築することができる。ユーザのパスワードおよび秘密鍵は、信頼性のあるコンポーネント、つまり信頼性のあるアプリケーションおよびトラストバイザ316にとって、信頼性のあるパス152内でしかアクセスすることができない。ユーザエクスペリエンスは単純であり、ディスクを暗号化または復号することを選択するオプションとともに1.2節でまさに説明した通りである。
1.4.2 TPM(トラステッドプラットフォームモジュール)の構成。このアプリケーションは、TPM(トラステッドプラットフォームモジュール)チップ上の保証鍵を鍵更新することをサポートし[36]、それにより(上記に挙げた問題である)鍵が漏洩することからの回復性を与える。TPMチップは、製造者からの証明済み保証鍵の対(Endorsement Keypair:EK)と一緒に出荷される。この鍵の対は、暗号化および復号専用に使用される2048ビットのRSA鍵の対である。EKは、TPMの最終的なアイデンティティとしての役割を果たす。製造者からのEK証明書は、そのTPMがTCG仕様[35]に準拠することをサードパーティに確信させるのに役立つように設計される。不都合なことに、その低価格が原因でTPMチップは改竄防止されていない。高度なセキュリティアプリケーションでは、EKのプライベートコンポーネントが外部に一度もさらされていないように、TPMのEKがチップ上に生成された保証を実現することが望ましい場合がある。TPMの製造者は、TPMのEKを取消し可能として設定し、製造者が供給する秘密(EKリセット)がパラメータとして与えられるとき、TPM内のEKを破壊するコマンドを使用可能にするオプションを有する。TPMに新たなEKを内部的に生成させ、オプションでその新たなEKを取り消すために必要な新たなEKリセット値を割り当てるために、2つの追加のコマンドのうちの1つを使用することができる。
TPMにより新たなEKが内部的に生成されるとき、そのEKが有効なTPMに対応することをサードパーティに確信させるための証明書は作成されない。したがって、新たなEKの作成を引き起こすエンティティ(例えばシステム管理者)は、その新たなEKが適切に生成されたことを証明する責任を負わなければならない。悪意あるBIOSまたはSMMコードを含み得るプラットフォーム上では、EKがTPM内で正しく生成されたという保証を得ることは困難である。
物理的に存在する管理者から入力を受け付け、新たなEKの対を作成するのに必要なTPMコマンドを発行することができる専用アプリケーション、EKappを設計し構築することができる。図17にあるように、EKappは、トラストバイザ316上で(ドライバシム314および信頼性のあるシェル1710を含む)信頼性のあるアプリケーションとして直接実行される。トラストバイザ316は、1つの使用可能な関数としてEKappの呼び出しを提供する。実行されるとき、EKappはTPMのEKの状態を検査し、その状態を以下の3つの状態のうちの1つに分類する。
1.有効かつ取消し可能
2.有効かつ永続的
3.取消し済み
EKappは、EKリセットを保持することをユーザが実証する場合、ユーザがTPMを状態1から状態3に遷移するように、(新たなEKリセット値を提供することにより)状態3から状態1または2に遷移するように構成される。EKがTPMの存在期間にわたってTPM内に永続的に導入されたままであるので、EKappは、状態2のEKを有するTPMに対していかなる構成変更を行うこともできない。
1.4.3 形式的分析。本発明は、アーキテクチャレベルおよび実装レベルの両方において、設計システムの厳密なセキュリティ分析を促進するように設計される。分析は以下のパートからなる。
1.システムおよび攻撃者の明確なモデル、ならびにシステムアーキテクチャのセキュリティ特性、具体的には導入部に記載した特性(1)〜(3)の仕様および検証を発展させる本発明の実施形態を予見する。さらに、この分析はTCBおよびTCBの予期される特性も明示的に特定する。技術的手法は、ネットワークプロトコルのセキュリティ特性を指定し、検証するためのロジックであるPCL(Protocol Composition Logic)についての本発明者の従来のかつ進行中の研究[9,10,11,12,13,14,15,16,17,21,30]に基づく。TCGプロトコルについての進行中の正式な研究[18]に部分的に基づき、PCLによってサポートされる推論形式は、信頼性のあるコンピューティングドメインに適用できると考える。しかし、信頼性のあるコンピューティングシステムを形式的に論証するために、PCLの構文、セマンティクス、および証明システムを拡張することに伴うかなりの量の技術的作業もある。特に、トラストバイザ316形式のハイパーバイザによって与えられる隔離の保証など、関連するシステム特性を忠実に作るために、プロセス間の共用メモリを可能にするように、PCLのプロセスベースモデルを拡張しなければならない。高レベルでは、形式的な分析タスクのこのコンポーネントは、数理論理学ならびにプログラミング言語の設計および分析の技法を利用する。
2.本発明者の設計は、前のステップにおいて特定した予期される特性をTCBが実際に満たすことを検証できるようにし、すなわちシステム実装が、導入部に記載した特性(4)を満たすことを検証することができる。このステップは、ソフトウェアモデルチェッキング技法を使用して実行することができる。特に、セキュリティハイパーバイザのコードを、適切なソフトウェアモデルチェッカを使用して(かつ必要に応じて拡張して)分析することができる。進行中の取り組みでは、Cプログラム用のモデルチェッカ、具体的にはMAGIC[6]およびCMBC[8]を使って実験を行っている。最近の研究では、セマンティクセキュリティ特性(認証および機密性)について、SSLハンドシェイクプロトコルのOpenSSL実装を検証するためにCモデルチェッカを使用した[7]。小さなコードベースを有し(SecVisor[33]など)、隔離などのセキュリティ特性に関する限られた並行性を有するセキュリティハイパーバイザを分析することは、現在のモデルチェッカにとって実現可能である。ソフトウェアモデルチェッカを使用し、信頼性のある検証器120装置のデバイスドライバも、そのドライバが予期される方法で動作する保証を得るために、検証することができる。本発明者のソフトウェアモデルチェッカでの経験およびデバイスドライバ検証における最近の成功は、これが妥当な終着点であることを示す(例えばマイクロソフトリサーチにおけるSLAMプロジェクトを参照されたい[3])。
1.5 技術プログラム要約
本発明では、任意のセキュアシステムの基本的構成である、ユーザが検証可能な信頼性のあるパス152を確立するための重要な特性を明らかにする。これらの特性は、たとえマルウェアおよび悪意ある内部者がある状態でも、信頼性のあるシェル1710と安全なユーザ通信を行えることを保証する。マルウェアおよび悪意ある内部者による攻撃は、汎用コンピューティングプラットフォーム内で信頼性のあるパス152を構築するための今日までの他の唯一の使用可能なオプションである、TCG(Trusted Computing Group)が提案する信頼測定の静的ルート及び信頼測定の動的ルート(Static Root of Trust MeasurementおよびDynamic Root of Trust Measurement)の両方の低レベルブートシーケンスを破損する可能性がある。さらに、TCGの提案は、トラステッドプラットフォームモジュールの秘密鍵の発見につながり得る攻撃に耐える証明可能機構を欠き、(例えば証明に基づく)任意の信頼性のあるパス152の確立を安全でなくし、検証できなくし、ユーザが回復することをできなくする。TCGの提案とは対照的に、信頼性のあるパス152の機構は、今日までに定められている最も強い敵対者を前にしても永続的であり、ユーザによって検証可能であり、回復可能である。さらに、この機構は形式的に検証され、したがって他の同様のシステムでは達成できない一定の保証を約束する。
このTP設計の独自の特徴は、この設計がハードウェア保護された秘密をシステム内のどこにも使用しないことである。したがって、この設計はシステムの広い攻撃面をなくし、他のシステムコンポーネントに関する秘密鍵(および秘密対称鍵)の漏洩からの信頼性の回復を助ける。この設計は、TCGの提唱が提案するように、ユーザ自身および信頼性のあるサードパーティが安全かつ実践的方法で変更可能なハードウェア保護された秘密鍵を使用し、アプリケーションレベルのユーザ検証されたTPをブートストラップすることも可能にする。最も重要なことに、この設計は、マルウェアがないこと、または内部者攻撃がない環境内で動作することが予期されていない既製ソフトウェア(例えばWindows(登録商標)、Linux(登録商標))をユーザが実行することを可能にする。
この手法は、コンピューティング装置のUSBポートにつながり、トラストバイザ316(コンピューティング装置上で実行され、レガシOS1712をサポートする小さなハイパーバイザ機能を提供するコンポーネント)と通信する信頼性のある検証器120装置を開発することを必要とする。トラストバイザ316は、信頼性のあるパス152の関数も実装し、信頼性のある検証器120がトラストバイザ316の動作の正しさを検査することを可能にする検証関数を備える。トラストバイザ316は使用されて、信頼性のあるパス152の機能をユーザアプリケーションに拡張する。ユーザによりプラグ脱着可能な(取外し可能な)信頼性のある検証器120の重要な利点は、攻撃されているコンピューティング装置からの隔離性および動作上の独立性であり、すなわちそのような信頼性のある検証器120は、信頼性のあるパス152が確立されるまで、および確立されない限りオンラインになる必要がない。トラストバイザ316は、マルウェアおよび悪意ある内部者がその内部状態にアクセスできないような方法で設計されており、そのためトラストバイザ316が実行する検証関数の完全性を保証することができる。
要約すると、本発明者は、今日までに知られている最も強力な敵対者からの攻撃を耐える、任意のコンピューティングシステムの最も基本的なセキュリティ機構のうちの1つを構成し、構築し、形式的に検証する。本発明者のシステムと同様のシステムは、マルウェアおよび悪意ある内部者の攻撃がある状態で、コマンドおよび制御システム、暗号取引、金融取引、オンラインフォレンジック分析など、機密情報を扱う高価な用途に不可欠であると考える。
1.6 リスク分析および代替策
過去30年にわたるセキュアシステムの設計および動作での経験は、3つの包括的な危険因子がシステムセキュリティ分野内の他のあらゆるものを支配することを示した。3つの危険因子とはつまり、(1)セキュアシステムを使用する際のユーザ/管理者/オペレータの誤り、(2)セキュアシステムを開発する際の設計および実装の誤り(すなわちバグや過度の複雑さ)、および(3)システム構成の誤りである。
本発明の脈絡では、起こり得るユーザの誤りを最小限にする人的要因についての設計が重要な役割を果たす。(先に言及した)潜在的な1つの脆弱性は、気をそらしたユーザがTPの検証を実行した後にマシンのリブートに気付かない可能性がある場合である。本発明者は、視覚的表示器だけでなく、「音の側面」をTPの検証に追加することによりこの潜在的な検査時−使用時の脆弱性に対処した。セキュリティ機構の設計および使用に対する人的要因の重要さを切に認識し、CyLabにおける人的要因研究にささげられた意義深いリソースを上手く利用して設計についての広範な使用性分析を行う予定である(例えばローリー クレノア(Lorie Cranor)教授のグループは広範な研究を行い、人的要因の分野において数多くの設計を評価し、現在はアクセス制御の使用性に重点的に取り組んでいる)。信頼性のあるパス152の動作における人的要因のレビューおよび評価は、本発明で可能な設計代替策の主要なソースを構成する。
本発明は、任意のセキュアシステムにおいて重要な信頼の基礎を形成するTP技術が、設計および実装のうちの少なくとも一方の誤りを含み得る可能性を予期する。そのような誤りは、本発明を任意の安全なシステム動作にとって不可欠なものにする目標を正確に達成できないことにつながる。このリスクを2つの重要な方法で取り除くために、本発明を修正することができる。第1は、信頼性のあるパス152の機構が反撃しようとする脅威を特定する正確な敵対者モデルを定め、この設計がそれらの脅威に効果的な方法で反撃することを示すことによる。第2は、信頼性のあるパス152技術を形式的に検証することである。実際に、信頼性のあるパス152に関する本発明者の定義のうちの特性(4)は、機構を形式的に分析し、検証することを必要とする。これを達成することは、バグのリスクがTPの機構に悪影響を及ぼさない重大な保証を得ることになる。
最後に、信頼性のあるパス152構成の誤りの領域に、そのような誤りの潜在的な原因を明らかにすることにより、明確に対処するつもりである。例えば、ユーザが検証可能な信頼性のあるパス152機構の基礎であるソフトウェア証明手法では、信頼性のある検証器120がCPUのモデル、クロック速度、およびメモリレイテンシを含むコンピューティング装置の正確なハードウェア構成を知っていると想定する。ソフトウェア証明は、証明されているターゲット実行ファイルが自己完結型であることも想定する。つまり、信頼性のある検証器120によって想定されるターゲット実行ファイルの構成は変わらず、例えばそのターゲット実行ファイルは、実行中にコンピューティング装置上の他のソフトウェアを呼び出さない。これらの領域内の構成のミスマッチは、信頼性のあるパス152のユーザ検証においてセキュリティ違反につながる可能性があり、その理由から、構成検証検査を、そのような検査が必要になるどんな所にも、例えばトラストバイザ316内に組み込むつもりである。構成検証のすべての部分は、システムの設計によって対処する。
結論
本発明を特定の実施形態および実装形態の観点から概して説明してきたが、本発明は他の方法、機器、システム、および技術に適用することができる。本明細書に示した例は限定的ではなく説明的であり、本発明の他の改変形態および修正形態も考えられる。本発明のそれらのおよび他の改変形態および修正形態が可能であり考えられ、上記の明細書および特許請求の範囲はそのような修正形態および改変形態を範囲として含むことを意図する。
引用文献
[1] TPM reset attack. Available at
http : / /www . cs . dartmouth . edu/~pkilab/ sparks. Checked on February 7, 2008.
[2] Advanced Micro Devices. AMD64 virtualization: Secure virtual machine architecture reference manual. AMD Publication no. 33047 rev. 3.01, May 2005.
[3] Thomas Ball, Ella Bounimova, Byron Cook, Vladimir Levin, Jakob Lichtenberg, Con McGarvey, Bohus Ondrusek, Sriram K. Rajamani, and Abdullah Ustuner. Thorough static analysis of device drivers. In EuroSys, pages 73-85, 2006.
[4] Dan Boneh, Richard A. DeMillo, and Richard J. Lipton. On the importance of eliminating errors in cryptographic computations. Journal of Cryptology, 14(2):101- 119, 2001.
[5] David Brumley and Dan Boneh. Remote timing attacks are practical. In Proceedings of USENL Security Symposium, pages 1-14, August 2003.
[6] Sagar Chaki, Edmund M. Clarke, Alex Groce, Somesh Jha, and Helmut Veith. Modular verification of software components in c. IEEE Trans. Software Eng. , 30(6):388- 02, 2004.
[7] Sagar Chaki and Anupam Datta. Automated verification of security protocol implementations, 2008. Technical Report CMU-Cylab-08-002.
[8] Edmund Clarke, Daniel Kroening, and Flavio Lerda. A tool for checking ANSI-C programs. In Kurt Jensen and Andreas Podelski, editors, Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2004), volume 2988 of Lecture Notes in Computer Science, pages 168-176. Springer, 2004.
[9] Anupam Datta, Ante Derek, John C. Mitchell, and Dusko Pavlovic. A derivation system for security protocols and its logical formalization. In Proceedings of 16th IEEE Computer Security Foundations Workshop, pages 109-125. IEEE, 2003.
[10] Anupam Datta, Ante Derek, John C. Mitchell, and Dusko Pavlovic. Secure protocol composition (extended abstract). In Proceedings of ACM Workshop on Formal Methods in Security Engineering, pages 11-23, 2003.
[11] AnupamDatta, Ante Derek, John C.Mitchell, and Dusko Pavlovic. Abstraction and refinement in protocol derivation. In Proceedings of 17th IEEE Computer Security Foundations Workshop, pages 30-45. IEEE, 2004.
[12] Anupam Datta, Ante Derek, John C. Mitchell, and Dusko Pavlovic. Secure protocol composition. In Proceedings of 19th Annual Conference on Mathematical Foundations of Programming Semantics. ENTCS, 2004.
[13] Anupam Datta, Ante Derek, John C. Mitchell, and Dusko Pavlovic. A derivation system and compositional logic for security protocols. Journal of Computer Security, 13(3):423- 482, 2005.
[14] Anupam Datta, Ante Derek, John C. Mitchell, Vitaly Shmatikov, and Mathieu Turuani. Probabilistic polynomial-time semantics for a protocol security logic. In Proceedings of the 32nd International Colloquium on Automata, Languages and Programming (ICALP '05), Lecture Notes in Computer Science, pages 16-29. Springer- Verlag, 2005.
[15] Anupam Datta, Ante Derek, John C. Mitchell, and Bogdan Warinschi.
Computationally sound compositional logic for key exchange protocols. In Proceedings of 19th IEEE Computer Security Foundations Workshop, pages 321-334. IEEE, 2006.
[16] Nancy Durgin, John C. Mitchell, and Dusko Pavlovic. A compositional logic for protocol correctness. In Proceedings of 14th IEEE Computer Security Foundations Workshop, pages 241-255. IEEE, 2001.
[17] Nancy Durgin, John C. Mitchell, and Dusko Pavlovic. A compositional logic for proving security properties of protocols. Journal of Computer Security, 11 :677-721 , 2003.
[18] Deepak Garg, Jason Franklin, Dilsun Kaynar, and Anupam Datta. Towards a theory of secure systems, 2008. Technical Report CMU-Cylab-08-003.
[19] Blaise Gassend, Dwaine Clarke, Marten van Dijk, and Srinivas Devadas. Silicon physical random functions. In Proceedings of the 9th ACM Conference on Computer and Communications Security, pages 148-160, November 2002.
[20] V. Gligor, C. Burch, R. Chandersekaran, L. Chanpman, M. Hecht, W. Jiang, G. Luckenbaugh, and N. Vasudevan. On the design and the implementation of secure xenix workstations. In Proceedings of the IEEE Symposium on Research in Security and Privacy, pages 102-117, April 1986.
[21] Changhua He, Mukund Sundararajan, Anupam Datta, Ante Derek, and John C. Mitchell. A modular correctness proof of IEEE 802.1 li and TLS. In CCS '05: Proceedings of the 12th ACM conference on Computer and communications security, pages 2-15, 2005.
[22] M.S. Hecht, M.E. Carson, C.S. Chandersekaran, R.S. Chapman, L.J. Dotterer, V.D. Gligor, W.D. Jiang, A. Johri, G.L. Luckenbaugh, and N. Vasudevan. UNIX without the superuser. In Proceedings of Summer USENIX Technical Conference, 1987.
[23] Intel Corporation. LaGrande technology preliminary architecture specification. Intel Publication no. D52212, May 2006.
Intel Corporation. Trusted execution Technology - preliminary architecture specification and enabling considerations. Document number 31516803, November 2006.
[25] Bernhard Kauer. OSLO: Improving the security of Trusted Computing. In Proceedings of the USENLX Security Symposium, August 2007.
[26] Samuel T. King, Peter M. Chen, Yi-Min Wang, Chad Verbowski, Helen J. Wang, and Jacob R. Lorch. SubVirt: Implementing malware with virtual machines. In Proceedings of the IEEE Symposium on Research in Security and Privacy, May 2006.
[27] Paul Kocher, Joshua Jaffe, and Benjamin Jun. Differential power analysis. In Advances in Cryptology - CRYPTO, pages 399-397, 1999.
[28] K. Kursawe, D. Schellekens, and B. Preneel. Analyzing trusted platform communication. In Proceedings of CRASH Workshop: Cryptographic Advances in Secure Hardware, September 2005.
[29] Jonathan M. McCune, Adrian Perrig, and Michael K. Reiter. Seeing-is-believing: Using camera phones for human- verifiable authentication. In Proceedings of IEEE Symposium on Security and Privacy, May 2005.
[30] Arnab Roy, Anupam Datta, Ante Derek, John C. Mitchell, and Jean-Pierre Seifert. Secrecy analysis in protocol composition logic, 2006. to appear in Proceedings of 11th Annual Asian Computing Science Conference, December 2006.
[31] Joanna Rutkowska. Subverting vista kernel for fun and profit. Presentation at BlackHat Briefings, available at http : //blackhat . com/presentations /bh-usa- 06/BH-US- 06-Rutkows ka . pdf , August 2006.
[32] A. Seshadri, M. Luk, E. Shi, A. Perrig, L. van Doom, and P. Khosla. Pioneer: Verifying integrity and guaranteeing execution of code on legacy platforms. In Proceedings of ACM Symposium on Operating Systems Principles (SOSP), pages 1-15, October 2005.
[33] Arvind Seshadri, Mark Luk, Ning Qu, and Adrian Perrig. Sec Visor: A tiny hypervisor to provide lifetime kernel code integrity for commodity OSes. In Proceedings of ACM SOSP, October 2007.
[34] E.R. Sparks. A security assessment of trusted platform modules. Technical Report TR2007-597, Computer Science Department, Dartmouth University, June 2007.
[35] Trusted Computing Group (TCG).
https : //www . trustedcomputinggroup . org/, 2003.
[36] Trusted Computing Group. Trusted platform module main specification, Part 1 : Design principles, Part 2: TPM structures, Part 3: Commands. Version 1.2, Revision 103, July 2007.
[37] U.S. Department of Defense. Trusted computer systems evaluation criteria.
(Orange Book) CSC-STD- 001-83, DoD ComputerSecurity Center, Fort Meade, MD, August 1983.
[38] U.S. Department of Defense. Trusted computer systems evaluation criteria.
(Orange Book) 5200.28-STD, National ComputerSecurity Center, Fort Meade, MD, December 1985.

Claims (29)

  1. プロセッサ(112)によって、ユーザインターフェイス(150)と安全に実行できると想定される実行ファイル(312)との間に、ハイパーバイザ(316)およびドライバシム(314)を含む信頼性のあるパス(152)を確立する方法であって、前記プロセッサ(112)は、前記ユーザインターフェイス(150)と、メモリ(114)とに接続され、前記メモリ(114)は、前記プロセッサ(112)に実行される実行ファイル(312)、ハイパーバイザ(316)、およびドライバシム(314)を記憶する、前記方法であって、
    前記ハイパーバイザのアイデンティティを測定すること(710)、
    前記ハイパーバイザのアイデンティティを測定すること(710)により取得された前記ハイパーバイザの前記アイデンティティの測定値を、前記ハイパーバイザ用のポリシと比較すること(712)、
    前記ドライバシムのアイデンティティを測定すること(714)、
    前記ドライバシムのアイデンティティを測定すること(714)により取得された前記ドライバシムの前記アイデンティティの測定値を、前記ドライバシム用のポリシと比較すること(716)、
    前記ユーザインターフェイスのアイデンティティを測定すること(718)、
    前記ユーザインターフェイスのアイデンティティを測定すること(718)により取得された前記ユーザインターフェイスの前記アイデンティティの測定値を、前記ユーザインターフェイス用のポリシと比較すること(720)、
    前記ハイパーバイザの前記アイデンティティの測定値、前記ドライバシムの前記アイデンティティの測定値、および前記ユーザインターフェイスの前記アイデンティティの測定値が、前記ハイパーバイザ用の前記ポリシ、前記ドライバシム用の前記ポリシ、および前記ユーザインターフェイス用の前記ポリシにそれぞれ一致するかどうかについての、人間が知覚できる指示を提供すること(722)
    を含む、方法。
  2. 前記ユーザインターフェイス(150)が、入力装置(116)および出力装置(118)の少なくとも一方を含む、請求項1に記載の方法。
  3. 前記入力装置(116)が、キーボードおよびコンピュータマウスからなる群から選択され、
    前記出力装置(118)が、ビデオディスプレイ装置、プリンタ、およびオーディオ装置からなる群から選択される、請求項2に記載の方法。
  4. 前記ハイパーバイザの前記アイデンティティの測定値、前記ドライバシムの前記アイデンティティの測定値、および前記ユーザインターフェイスの前記アイデンティティの測定値が、前記ハイパーバイザ用の前記ポリシ、前記ドライバシム用の前記ポリシ、および前記ユーザインターフェイス用の前記ポリシにそれぞれ一致するかどうかについての、人間が知覚できる指示を提供すること(722)は、
    前記ハイパーバイザの前記アイデンティティの測定値、前記ドライバシムの前記アイデンティティの測定値、および前記ユーザインターフェイスの前記アイデンティティの測定値のすべてが、前記ハイパーバイザ用の前記ポリシ、前記ドライバシム用の前記ポリシ、および前記ユーザインターフェイス用の前記ポリシにそれぞれ一致する場合に人間が知覚できる第1の指示を提供すること、
    前記ハイパーバイザの前記アイデンティティの測定値、前記ドライバシムの前記アイデンティティの測定値、および前記ユーザインターフェイスの前記アイデンティティの測定値のうちの少なくとも1つが、前記ハイパーバイザ用の前記ポリシ、前記ドライバシム用の前記ポリシ、および前記ユーザインターフェイス用の前記ポリシそれぞれに一致しない場合に人間が知覚できる第2の指示を提供すること
    を含み、前記人間が知覚できる第1の指示は、前記人間が知覚できる第2の指示とは異なる、請求項1に記載の方法。
  5. 前記ハイパーバイザ用の前記ポリシおよび前記ドライバシム用の前記ポリシが、前記ユーザインターフェイス(150)と前記安全に実行できると想定される実行ファイル(312)との間の前記信頼性のあるパス(152)の一部ではないコンポーネント内に記憶される、請求項1に記載の方法。
  6. 前記ハイパーバイザ(316)および前記ドライバシム(314)がコンピュータによって実装され、前記ハイパーバイザ用の前記ポリシおよび前記ドライバシム用の前記ポリシが、前記ハイパーバイザおよび前記ドライバシムが実装される前記コンピュータから離れた装置内に記憶される、請求項1に記載の方法。
  7. 前記ユーザインターフェイス用の前記ポリシが、前記ドライバシム内に記憶される、請求項1に記載の方法。
  8. 前記安全に実行できると想定される実行ファイルのアイデンティティを測定すること(810)、
    前記安全に実行できると想定される実行ファイルの前記アイデンティティの測定値を、前記安全に実行できると想定される実行ファイル用のポリシと比較すること(812)
    をさらに含む、請求項1に記載の方法。
  9. 前記ドライバシムの前記アイデンティティを測定すること(714)、および前記ドライバシムの前記アイデンティティの測定値を比較すること(716)は、
    前記ハイパーバイザの前記アイデンティティを測定した(710)後に、および前記ハイパーバイザの前記アイデンティティの測定値を比較した(712)後に実行され、
    前記安全に実行できると想定される実行ファイルの前記アイデンティティを測定すること(810)、および前記安全に実行できると想定される実行ファイルの前記アイデンティティの測定値を比較すること(812)は、
    前記ドライバシムの前記アイデンティティを測定した(714)後に、および前記ドライバシムの前記アイデンティティの測定値を比較した(716)後に実行される、請求項8に記載の方法。
  10. 前記ハイパーバイザの前記アイデンティティを測定すること(710)が、前記ハイパーバイザの前記アイデンティティの測定値を証明することを含み、
    前記ドライバシムの前記アイデンティティを測定すること(714)が、前記ドライバシムの前記アイデンティティの測定値を証明することを含み、
    前記ユーザインターフェイスの前記アイデンティティを測定すること(718)が、前記ユーザインターフェイスの前記アイデンティティの測定値を証明することを含む、請求項1に記載の方法。
  11. 前記ハイパーバイザの前記アイデンティティの測定値を証明することは、ソフトウェアベースの証明であり、
    前記ドライバシムの前記アイデンティティの測定値を証明することは、ソフトウェアベースの証明であり、
    前記ユーザインターフェイスの前記アイデンティティの測定値を証明することは、ソフトウェアベースの証明である、請求項10に記載の方法。
  12. 前記ユーザインターフェイスと前記ハイパーバイザとの間の前記信頼性のあるパス152内の追加コンポーネントのアイデンティティを測定すること(910)、
    前記ユーザインターフェイスと前記ハイパーバイザとの間の前記信頼性のあるパス152内の前記追加コンポーネントの前記アイデンティティの測定値を、前記追加コンポーネント用のポリシと比較すること(912)
    をさらに含む、請求項1に記載の方法。
  13. 前記ユーザインターフェイスと前記ハイパーバイザとの間の前記追加コンポーネントが、メモリコントローラハブ、入出力コントローラハブ、グラフィックスコントローラ、USBコントローラ、専用キーボードコントローラ、および前記ユーザインターフェイスと前記ハイパーバイザとの間のバスからなる群から選択される、請求項12に記載の方法。
  14. 前記追加コンポーネント用の前記ポリシが、前記ユーザインターフェイスと前記安全に実行できると想定される実行ファイルとの間の前記信頼性のあるパスの一部ではないコンポーネント内に記憶される、請求項12に記載の方法。
  15. 前記追加コンポーネントがコンピュータによって実装され、前記追加コンポーネント用の前記ポリシが、前記追加コンポーネントが実装される前記コンピュータから離れた装置内に記憶される、請求項12に記載の方法。
  16. 前記ハイパーバイザの前記アイデンティティの測定値、前記ドライバシムの前記アイデンティティの測定値、および前記ユーザインターフェイスの前記アイデンティティの測定値のうちの少なくとも1つが、前記ハイパーバイザ用の前記ポリシ、前記ドライバシム用の前記ポリシ、および前記ユーザインターフェイス用の前記ポリシそれぞれに一致しない場合に前記人間が知覚できる第2の指示を提供した後に、
    自らのポリシに一致しない前記ハイパーバイザ、前記ドライバシム、および前記ユーザインターフェイスの少なくとも1つを既知の良好な状態に復元すること(1010)
    をさらに含む、請求項4に記載の方法。
  17. 前記ハイパーバイザの前記アイデンティティの測定値が前記ハイパーバイザ用の前記ポリシに一致すると判定すること(1110)、
    前記ハイパーバイザの前記アイデンティティの測定値が前記ハイパーバイザ用の前記ポリシに一致すると判定した後に、前記ドライバシムの前記アイデンティティの測定値が、前記ドライバシム用の前記ポリシに一致するかどうかを判定すること(1112)、
    前記ドライバシムの前記アイデンティティの測定値が前記ドライバシム用の前記ポリシに一致しない場合、前記ドライバシムを既知の良好な状態に復元すること(1114)、
    前記ドライバシムの前記アイデンティティの測定値が前記ドライバシム用の前記ポリシに一致しない場合、前記ドライバシムを既知の良好な状態に復元した後に、前記ユーザインターフェイスの前記アイデンティティの測定値が、前記ユーザインターフェイス用の前記ポリシに一致するかどうかを判定すること(1116)、
    前記ユーザインターフェイスの前記アイデンティティの測定値が前記ユーザインターフェイス用の前記ポリシに一致しない場合、前記ユーザインターフェイスを既知の良好な状態に復元すること(1118)
    をさらに含む、請求項16に記載の方法。
  18. 前記ドライバシムの前記アイデンティティの測定値が前記ドライバシム用の前記ポリシに一致しない場合、前記ユーザインターフェイスの前記アイデンティティの測定値が、前記ユーザインターフェイス用のポリシに一致しないと想定される、請求項17に記載の方法。
  19. 前記ハイパーバイザ、前記ドライバシム、および前記ユーザインターフェイスの少なくとも1つを既知の良好な状態に復元した後に、
    既知の良好な状態に復元した前記ハイパーバイザ、前記ドライバシム、および前記ユーザインターフェイスの少なくとも1つの前記アイデンティティを測定すること(1210)、
    前記既知の良好な状態に復元した前記ハイパーバイザ、前記ドライバシム、および前記ユーザインターフェイスの少なくとも1つの前記アイデンティティを測定すること(1210)により取得された既知の良好な状態に復元した前記ハイパーバイザ、前記ドライバシム、および前記ユーザインターフェイスの少なくとも1つの前記アイデンティティの測定値を、前記ハイパーバイザ、前記ドライバシム、および前記ユーザインターフェイスの前記少なくとも1つのための対応するポリシと比較すること(1212)
    をさらに含む、請求項16に記載の方法。
  20. 前記ハイパーバイザの前記アイデンティティの測定値が前記ハイパーバイザ用の前記ポリシに一致すると判定すること(1310)、
    TPM装置がセキュリティ侵害されていると判定すること(1312)
    をさらに含む、請求項1に記載の方法。
  21. 前記TPM装置がセキュリティ侵害されていると判定した(1312)後に、
    前記TPM装置を既知の良好な状態に戻すこと(1314)
    をさらに含む、請求項20に記載の方法。
  22. 前記ハイパーバイザから前記TPM装置に命令を送った後、
    前記TPM装置内の既存の鍵を破壊すること(1316)、
    前記TPM装置内の新たな鍵を作成すること(1318)
    をさらに含む、請求項21に記載の方法。
  23. 前記信頼性のあるパスが安全に実行できると想定されるシェルを含み、
    前記安全に実行できると想定されるシェルのアイデンティティを測定すること(1410)、
    前記安全に実行できると想定されるシェルのアイデンティティを測定すること(1410)により取得された前記安全に実行できると想定されるシェルの前記アイデンティティの測定値を、前記安全に実行できると想定されるシェル用のポリシと比較すること(1412)
    をさらに含む、請求項1に記載の方法。
  24. 前記安全に実行できると想定されるシェル用の前記ポリシが、前記信頼性のあるパスの外側に記憶される、請求項23に記載の方法。
  25. 安全に実行できると想定されるシェルがコンピュータによって実装され、前記安全に実行できると想定されるシェル用のポリシが、前記安全に実行できると想定されるシェルが実装される前記コンピュータから離れた装置内に記憶される、請求項1に記載の方法。
  26. 前記ハイパーバイザの前記アイデンティティの測定値、前記ドライバシムの前記アイデンティティの測定値、および前記ユーザインターフェイスの前記アイデンティティの測定値が、前記ハイパーバイザ用の前記ポリシ、前記ドライバシム用の前記ポリシ、および前記ユーザインターフェイス用の前記ポリシにそれぞれ一致するかどうかについての、人間が知覚できる指示を提供した後に、
    前記安全に実行できると想定される実行ファイルを実行すること(724)
    をさらに含む、請求項1に記載の方法。
  27. 前記安全に実行できると想定される実行ファイルを実行した後に、
    前記安全に実行できると想定される実行ファイルの前記実行を一時停止すること(1510)、
    前記安全に実行できると想定される実行ファイルが一時停止されたという、人間が知覚できる指示を提供すること(1512)
    をさらに含む、請求項26に記載の方法。
  28. 前記安全に実行できると想定される実行ファイルを実行する前に、且つ前記ハイパーバイザの前記アイデンティティの測定値、前記ドライバシムの前記アイデンティティの測定値、および前記ユーザインターフェイスの前記アイデンティティの測定値が、前記ハイパーバイザ用の前記ポリシ、前記ドライバシム用の前記ポリシ、および前記ユーザインターフェイス用の前記ポリシにそれぞれ一致するかどうかについての、人間が知覚できる指示を提供した後に、
    前記安全に実行できると想定される実行ファイルを実行する確認を示す入力を人間のユーザから受け取ること(1610)
    をさらに含む、請求項26に記載の方法。
  29. コンピュータであって、
    プロセッサ(112)と、
    前記プロセッサ(112)に接続されるユーザインターフェイス(150)と、
    前記プロセッサ(112)に接続され、且つ前記プロセッサ(112)によって実行されるとき、前記プロセッサ(112)にコンピューティングプラットフォームを作成させるコンピュータ可読命令を記憶するメモリ(114)であって、
    ハイパーバイザ(316)、およびドライバシム(314)を記憶し、
    前記ユーザインターフェイス(150)と前記プロセッサ(112)との間の信頼性のあるパス(152)であって、前記ハイパーバイザ(316)および前記ドライバシム(314)を含む、前記信頼性のあるパス(152)とを有する、前記メモリ(114)と、
    前記プロセッサ(112)に接続され、且つプロセッサ(122)およびメモリ(124)を含む検証装置(120)であって、前記検証装置(120)の前記メモリ(124)は、コンピュータ可読命令と、前記ハイパーバイザ(316)用のポリシと、前記ドライバシム(314)用のポリシとを含む、前記検証装置(120)と
    を備えるコンピュータ(110)であって、
    前記コンピュータ(110)の前記プロセッサ(112)によって実行されるとき、前記コンピュータ(110)の前記メモリ(114)内の前記コンピュータ可読命令が、
    安全に実行できると想定される実行ファイルを実行する要求を示す信号を受け取ること(510)、
    前記安全に実行できると想定される実行ファイルを実行する前記要求を示す前記信号を受け取った後に、前記ハイパーバイザと前記検証装置との間の安全な接続を認証すること(512)、
    前記ハイパーバイザの少なくとも一部分のアイデンティティを測定すること(514)、
    前記ハイパーバイザの少なくとも一部分のアイデンティティを測定すること(514)により取得された前記ハイパーバイザの前記アイデンティティの測定値を前記検証装置に送ること(516)、
    前記ドライバシムの少なくとも一部分の前記アイデンティティを測定すること(518)、
    前記ドライバシムの少なくとも一部分の前記アイデンティティを測定すること(518)により取得された前記ドライバシムの前記アイデンティティの測定値を前記検証装置に送ること(520)、
    前記ユーザインターフェイスの少なくとも一部分の前記アイデンティティを測定すること(522)、
    前記ユーザインターフェイスの少なくとも一部分の前記アイデンティティを測定すること(522)により取得された前記ユーザインターフェイスの前記アイデンティティの測定値を前記ユーザインターフェイス用のポリシと比較すること(524)
    を前記コンピュータ(110)の前記プロセッサ(112)に実行させ、
    前記検証装置(120)内の前記プロセッサ(122)によって実行されるとき、前記検証装置(120)の前記メモリ(124)内の前記コンピュータ可読命令が、
    前記コンピュータ(110)内の前記プロセッサから前記ハイパーバイザの測定値を受け取ること(610)、
    前記検証装置内に記憶される前記ハイパーバイザ用の前記ポリシを、前記検証装置が受け取る前記ハイパーバイザの測定値と比較すること(612)、
    前記コンピュータ(110)内の前記プロセッサから前記ドライバシムの測定値を受け取ること(614)、
    前記検証装置内に記憶される前記ドライバシム用の前記ポリシを、前記検証装置が受け取る前記ドライバシムの測定値と比較すること(616)
    を前記検証装置(120)内の前記プロセッサ(122)に実行させ、
    前記認証すること(512)、前記ハイパーバイザの少なくとも一部分の前記アイデンティティを測定すること(514)、前記ハイパーバイザの前記アイデンティティの測定値を前記検証装置に送ること(516)、前記ドライバシムの少なくとも一部分の前記アイデンティティを測定すること(518)、前記ドライバシムの前記アイデンティティの測定値を前記検証装置に送ること(520)、前記ユーザインターフェイスの少なくとも一部分の前記アイデンティティを測定すること(522)、前記ユーザインターフェイスの前記アイデンティティの測定値を前記ユーザインターフェイス用のポリシと比較すること(524)、前記コンピュータ(110)内の前記プロセッサから前記ハイパーバイザの測定値を受け取ること(610)、前記検証装置内に記憶される前記ハイパーバイザ用の前記ポリシを、前記検証装置が受け取る前記ハイパーバイザの測定値と比較すること(612)、前記コンピュータ(110)内の前記プロセッサから前記ドライバシムの測定値を受け取ること(614)、および前記検証装置内に記憶される前記ドライバシム用の前記ポリシを、前記検証装置が受け取る前記ドライバシムの測定値と比較すること(616)が、前記安全に実行できると想定される実行ファイルを実行する前記要求を示す前記信号を受け取ること(510)の後に、かつ前記コンピュータ(110)をリブートすることなしに実行される、
    コンピュータ(110)。
JP2012523622A 2009-08-04 2010-06-29 マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器 Expired - Fee Related JP5735509B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US27344809P 2009-08-04 2009-08-04
US61/273,448 2009-08-04
PCT/US2010/040334 WO2011037665A2 (en) 2009-08-04 2010-06-29 Methods and apparatuses for user-verifiable trusted path in the presence of malware

Publications (3)

Publication Number Publication Date
JP2013501300A JP2013501300A (ja) 2013-01-10
JP2013501300A5 JP2013501300A5 (ja) 2013-08-15
JP5735509B2 true JP5735509B2 (ja) 2015-06-17

Family

ID=43796427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012523622A Expired - Fee Related JP5735509B2 (ja) 2009-08-04 2010-06-29 マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器

Country Status (5)

Country Link
US (1) US8832778B2 (ja)
EP (1) EP2462507B1 (ja)
JP (1) JP5735509B2 (ja)
DK (1) DK2462507T3 (ja)
WO (1) WO2011037665A2 (ja)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011068996A1 (en) * 2009-12-04 2011-06-09 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US8819225B2 (en) * 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
US9519600B2 (en) * 2011-03-04 2016-12-13 Microsoft Technology Licensing, Llc Driver shimming
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
US9003363B2 (en) 2011-03-21 2015-04-07 Microsoft Technology Licensing, Llc Device flags
US8966642B2 (en) * 2011-04-05 2015-02-24 Assured Information Security, Inc. Trust verification of a computing platform using a peripheral device
US8983855B1 (en) 2011-05-16 2015-03-17 Mckesson Financial Holdings Systems and methods for evaluating adherence to a project control process
US8954747B2 (en) * 2011-07-01 2015-02-10 Intel Corporation Protecting keystrokes received from a keyboard in a platform containing embedded controllers
CN102231138B (zh) * 2011-07-08 2013-07-03 上海交通大学 计算机内存数据准确采集系统及获取方法
US8683548B1 (en) 2011-09-30 2014-03-25 Emc Corporation Computing with policy engine for multiple virtual machines
US8726337B1 (en) 2011-09-30 2014-05-13 Emc Corporation Computing with presentation layer for multiple virtual machines
US8953790B2 (en) * 2011-11-21 2015-02-10 Broadcom Corporation Secure generation of a device root key in the field
US8650645B1 (en) * 2012-03-29 2014-02-11 Mckesson Financial Holdings Systems and methods for protecting proprietary data
US20140281539A1 (en) * 2012-03-30 2014-09-18 Goldman, Sachs & Co. Secure Mobile Framework With Operating System Integrity Checking
TW201349009A (zh) 2012-04-13 2013-12-01 Ologn Technologies Ag 用於數位通信之安全區
EP2836968B1 (en) 2012-04-13 2020-05-06 OLogN Technologies AG Apparatuses, methods and systems for computer-based secure transactions
TW201403375A (zh) 2012-04-20 2014-01-16 歐樂岡科技公司 用於安全購買之安全區
US9317687B2 (en) * 2012-05-21 2016-04-19 Mcafee, Inc. Identifying rootkits based on access permissions
US9152793B2 (en) * 2012-09-28 2015-10-06 Intel Corporation Methods, systems and apparatus to self authorize platform code
CA2902292C (en) 2013-03-15 2024-05-21 Ologn Technologies Ag Systems, methods and apparatuses for securely storing and providing payment information
CA2902294A1 (en) * 2013-03-15 2014-09-18 Ologn Technologies Ag Secure zone on a virtual machine for digital communications
US9948640B2 (en) 2013-08-02 2018-04-17 Ologn Technologies Ag Secure server on a system with virtual machines
US9092631B2 (en) * 2013-10-16 2015-07-28 Battelle Memorial Institute Computer-implemented security evaluation methods, security evaluation systems, and articles of manufacture
US9998438B2 (en) 2013-10-23 2018-06-12 Microsoft Technology Licensing, Llc Verifying the security of a remote server
US9354818B2 (en) 2014-02-25 2016-05-31 Kabushiki Kaisha Toshiba Memory device and data storing method
US9680862B2 (en) * 2014-07-01 2017-06-13 Fireeye, Inc. Trusted threat-aware microvisor
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
DE102014114899A1 (de) * 2014-10-14 2016-04-14 Infineon Technologies Ag Verfahren und Vorrichtung zur Nutzung in einem Datenverarbeitungssystem
US9507951B2 (en) * 2014-10-20 2016-11-29 Intel Corporation Technologies for secure input and display of virtual touch user interfaces
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10230693B2 (en) 2015-01-29 2019-03-12 WebCloak, LLC Safechannel encrypted messaging system
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9613198B2 (en) * 2015-03-30 2017-04-04 Honeywell International Inc. Apparatus and method for intelligent video surveillance of industrial console operations
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10216927B1 (en) 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
US10769312B2 (en) 2015-10-06 2020-09-08 Carnegie Mellon University Method and apparatus for trusted display on untrusted computing platforms to secure applications
JP2017107377A (ja) * 2015-12-09 2017-06-15 株式会社リコー 機器管理装置、機器管理システム、検証方法及びプログラム
KR20170091951A (ko) 2016-02-02 2017-08-10 에스프린팅솔루션 주식회사 전자 디바이스에게 보안을 제공하기 위한 방법 및 장치
US10037201B2 (en) * 2016-02-26 2018-07-31 Dell Products L.P. Secure live media boot system
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10528739B2 (en) * 2016-04-20 2020-01-07 Sophos Limited Boot security
US10135622B2 (en) * 2016-06-03 2018-11-20 Intel Corporation Flexible provisioning of attestation keys in secure enclaves
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10025691B1 (en) 2016-09-09 2018-07-17 Fireeye, Inc. Verification of complex software code using a modularized architecture
US10621351B2 (en) 2016-11-01 2020-04-14 Raptor Engineering, LLC. Systems and methods for tamper-resistant verification of firmware with a trusted platform module
US10467082B2 (en) * 2016-12-09 2019-11-05 Microsoft Technology Licensing, Llc Device driver verification
US10839080B2 (en) * 2017-09-01 2020-11-17 Microsoft Technology Licensing, Llc Hardware-enforced firmware security
US10719604B2 (en) * 2018-01-30 2020-07-21 Hewlett Packard Enterprise Development Lp Baseboard management controller to perform security action based on digital signature comparison in response to trigger
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) * 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
JP7224485B2 (ja) * 2019-03-06 2023-02-17 エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー ゲートウェイを用いてTrusted Execution Environment(TEE)におけるリモート認証を実行するための方法及びシステム
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11714895B2 (en) * 2019-07-18 2023-08-01 Anjuna Security, Inc. Secure runtime systems and methods
CA3152085C (en) * 2019-09-25 2022-10-18 Michael A. Weigand Passive monitoring and prevention of unauthorized firmware or software upgrades between computing devices
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11269637B2 (en) * 2020-07-23 2022-03-08 Hewlett Packard Enterprise Development Lp Validating machine-readable instructions using an iterative validation process
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11089051B1 (en) * 2021-02-15 2021-08-10 Theta Labs, Inc. Preventing denial-of-service attacks in decentralized edge networks using verifiable delay functions (VDFs)
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
WO2023027687A1 (en) * 2021-08-23 2023-03-02 Hewlett-Packard Development Company, L.P. Hashes to control code execution
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4945468A (en) * 1988-02-01 1990-07-31 International Business Machines Corporation Trusted path mechanism for virtual terminal environments
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US7529754B2 (en) * 2003-03-14 2009-05-05 Websense, Inc. System and method of monitoring and controlling application files
JP2007226277A (ja) * 2004-04-02 2007-09-06 Matsushita Electric Ind Co Ltd 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置
US7565535B2 (en) 2005-05-06 2009-07-21 Microsoft Corporation Systems and methods for demonstrating authenticity of a virtual machine using a security image
US7721094B2 (en) 2005-05-06 2010-05-18 Microsoft Corporation Systems and methods for determining if applications executing on a computer system are trusted
CN100437502C (zh) * 2005-12-30 2008-11-26 联想(北京)有限公司 基于安全芯片的防病毒方法
US7712143B2 (en) * 2006-09-27 2010-05-04 Blue Ridge Networks, Inc. Trusted enclave for a computer system
US7913292B2 (en) * 2006-10-18 2011-03-22 Microsoft Corporation Identification and visualization of trusted user interface objects
JP4998019B2 (ja) * 2007-03-06 2012-08-15 富士通株式会社 状態表示制御装置
GB0707150D0 (en) * 2007-04-13 2007-05-23 Hewlett Packard Development Co Dynamic trust management
JP2009003853A (ja) * 2007-06-25 2009-01-08 Panasonic Corp 複数のソフトウェアを正しい順番で起動する情報端末およびセキュリティモジュール
US8204225B2 (en) * 2007-07-23 2012-06-19 Savi Technology, Inc. Method and apparatus for providing security in a radio frequency identification system
US8374354B2 (en) * 2007-09-27 2013-02-12 Verizon Data Services Llc System and method to pass a private encryption key
US20090113111A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
US20090133097A1 (en) * 2007-11-15 2009-05-21 Ned Smith Device, system, and method for provisioning trusted platform module policies to a virtual machine monitor
US8321931B2 (en) * 2008-03-31 2012-11-27 Intel Corporation Method and apparatus for sequential hypervisor invocation
US8578374B2 (en) * 2009-07-16 2013-11-05 Ca, Inc. System and method for managing virtual machines

Also Published As

Publication number Publication date
WO2011037665A3 (en) 2011-05-19
JP2013501300A (ja) 2013-01-10
WO2011037665A2 (en) 2011-03-31
US20120198514A1 (en) 2012-08-02
EP2462507A2 (en) 2012-06-13
EP2462507B1 (en) 2019-07-24
US8832778B2 (en) 2014-09-09
DK2462507T3 (da) 2019-09-23
EP2462507A4 (en) 2013-04-03

Similar Documents

Publication Publication Date Title
JP5735509B2 (ja) マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器
US10516533B2 (en) Password triggered trusted encryption key deletion
US7380136B2 (en) Methods and apparatus for secure collection and display of user interface information in a pre-boot environment
US8850212B2 (en) Extending an integrity measurement
Parno et al. Bootstrapping trust in modern computers
US8335931B2 (en) Interconnectable personal computer architectures that provide secure, portable, and persistent computing environments
US8627414B1 (en) Methods and apparatuses for user-verifiable execution of security-sensitive code
TWI584152B (zh) 用於電腦安全的系統及其方法
US9015454B2 (en) Binding data to computers using cryptographic co-processor and machine-specific and platform-specific keys
TWI745629B (zh) 電腦系統以及初始化電腦系統的方法
Böck et al. Towards more trustable log files for digital forensics by means of “trusted computing”
EP3188067B1 (en) Security control method and network device
Futral et al. Intel Trusted Execution Technology for Server Platforms: A Guide to More Secure Datacenters
Mannan et al. Unicorn: Two-factor attestation for data security
Götzfried et al. Mutual authentication and trust bootstrapping towards secure disk encryption
Bugiel et al. Implementing an application-specific credential platform using late-launched mobile trusted module
Zhao et al. Gracewipe: Secure and Verifiable Deletion under Coercion.
Morbitzer Scanclave: verifying application runtime integrity in untrusted environments
Stewin Detecting peripheral-based attacks on the host memory
Müller et al. Stark: Tamperproof Authentication to Resist Keylogging
Feng Trusted Computing: Principles and Applications
McCune Reducing the trusted computing base for applications on commodity systems
Sisinni Verification of software integrity in distributed systems
Zhao Authentication and Data Protection under Strong Adversarial Model
vor starken Angreifern et al. Trusted Systems in Untrusted Environments: Protecting against Strong Attackers

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130626

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140707

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150223

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: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150416

R150 Certificate of patent or registration of utility model

Ref document number: 5735509

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees