JP2008537224A - 安全な起動方法およびシステム - Google Patents

安全な起動方法およびシステム Download PDF

Info

Publication number
JP2008537224A
JP2008537224A JP2008506537A JP2008506537A JP2008537224A JP 2008537224 A JP2008537224 A JP 2008537224A JP 2008506537 A JP2008506537 A JP 2008506537A JP 2008506537 A JP2008506537 A JP 2008506537A JP 2008537224 A JP2008537224 A JP 2008537224A
Authority
JP
Japan
Prior art keywords
program
representation
computer
key
code
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.)
Pending
Application number
JP2008506537A
Other languages
English (en)
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
Priority to US11/106,756 priority Critical patent/US20060236122A1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to PCT/US2006/013007 priority patent/WO2006113167A2/en
Publication of JP2008537224A publication Critical patent/JP2008537224A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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
    • G06F21/575Secure boot
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

Abstract

コンピューティングシステム上で実行するためのコンピュータプログラムの完全性検証を行うためのシステムと方法を提供する。完全性チェックは、実行制御をオペレーティングシステムの次のレベルに渡す前に、あるいは、プログラムの実行を許可する前に、完了される。完全性チェックは、実行前にプログラムが修正されたか、あるいは改ざんされたかを決定するためのローカルに記憶された鍵の使用を含む。仮にチェックがプログラムは変わっていないことを示す場合には、そのプログラムは実行され、ブートプロセスの間、プログラムは実行制御が次のレベルに転送されることを許可する。しかしながら、仮にチェックがプログラムは修正されていたと確認する場合には、コンピューティングシステムはそのプログラムが実行することを許可しない。

Description

本発明は、オペレーティングシステムおよびコンピューティングシステムの安全性に関する。より詳細には、本発明は、ローカルに記憶された鍵の使用によるコンピューティングシステムの様々な転送ポイントにおける複数の完全性チェックに関する。
ある機能を実行するためにメモリに記憶されたプログラムコードを実行するプロセッサを含むどのようなコンピュータ機器のどのようなユーザにとっても、安全性は重要な問題である。コンピューティングシステムの脆弱な側面は、限定されるわけではないが、ブートプロセスの転送ポイント(例えば、入出力基本システム(BIOS)がシステムの制御をブートコードに転送するポイント)や、コンピューティングシステムにあらかじめロードされたその次のプログラムの動作を含む。
転送ポイントとは、システムの制御があるモジュールまたはコンピュータ機器の命令セットから別のモジュールまたはコンピュータ機器の命令セットにそのうちに転送されるポイントのことである。ブートプロセス中の転送は、あるモジュール(例えば、BIOS)が自身のタスクを完了した際に発生し、そのポイントにおいて、制御を次のモジュールへと渡し、その結果コンピュータスタートアップの次のフェーズが開始されることができる。別の転送は、実行中のシステムによって許可が与えられたプログラムを選択した際に発生する。
転送ポイントにおいては、コンピュータ機器は、ウィルスや、自身を信頼できるコードとして偽装することによってシステムの制御を得る悪意のコードからのセキュリティー違反に対して特に脆弱である。例えば、オペレーティングシステムの内部セーフガードが制御を得る前に、自身をブートプログラムとして偽装する悪意のプログラムがシステム全体の制御を与えられるであろう。悪意のコードは、自身を他の信頼できるプログラムの中に隠すことによっても偽装され得る。ウィルスはしばしば有害であり、ファイルに被害を与え、さもなければコンピュータ機器を破損することもあり得る。プログラムが、何を目指しているかについて決定することができるシステムと方法が、コンピュータ機器をウィルスや他の悪意のコードからより安全にすることに大いに役に立つであろう。
プログラムの許可されていない修正に対する安全の一つの形式として、電子署名がコンピュータシステムにおいて採用されている。プログラムが変わっているか、改ざんされているか、あるいは、修正されているかを検出するための周知のスキームは、電子署名の使用を含む。プログラムの実行の前に、そのプログラムの固有の表現(representation)が、たとえばSecure Hash algorithm(SHA 1)またはMD5のようなハッシュ法アルゴリズムを通じて作り出される。そして、固有の表現が秘密鍵で署名されたり暗号化されたりして、それが信頼できる局から作者に提供され、別々の登録および検証プロセスを通じて作者の信頼性を検証することができる。暗号化された表現は、そのプログラムと関連付けられた電子署名の形式としてプログラムと共に記憶される。プログラムが実行されるべきときは、そのプログラムの表現を署名するために使用された秘密鍵に対応する公開鍵でその署名は復号化されたり、検証されたりする。実行されるプログラムの固有の表現は、オリジナルプログラムのために使われたアルゴリズムと同じアルゴリズムを使用して形成される。この表現は承認(confirmation)と考えることができる。この承認が復号化された署名と一致すると、プログラムは改ざんまたは変更がなされておらず、首尾よく検証されたものとして実行されることができる。しかしながら、承認と復号化された署名とが一致しない場合には、そのプログラムは修正されたことを示すため、実行されるべきではない。
もちろん、悪意のコードの作者が同様に署名を含めることもあり得る。そのときは、検証プロセスは、そのコードの目的が何であるかについて実際に検証するだろう。しかしながら、多くの署名プロセスは信頼された鍵発行局に頼り、作者の身元に導くことができる一種の文書追跡を導入しているので、悪意のコードの作者は、そのようなステップを嫌がるだろう。加えて、これは鍵発行局マネーを支払うことも必要とする。そこで、システム上で実行中のすべてのコードが署名されたことを必要とするシステムは、ユーザに彼らのマシン上に現存するコードを誰が作り出したかについての可視性を提供することと同様に、悪意のコードを根絶することに大いに役に立つ。残念なことに、現在利用可能な多くのプログラムは、追加された複雑性や費用のような様々な理由のために署名されていない。その結果、コンピュータ機器のユーザがある種のプログラムを受け取る時に、たとえばそのユーザはコードや、ある検証されていないプログラムが悪意のあり得ることやすべてのコンピュータ機器を危険にさらすことを検証することができないであろう。
さらには、ユーザによって実行することを選択されたプログラムだけではなく、ブートプログラムも悪意に変更され得るものであり、単にオンにしたりコンピュータ機器をスタートすることによって問題を引き起こす。
署名されていないプログラムを読み出し実行することをしないことは、存在している多くのプログラムがそのような分類に分類されるであろうことから実用的なオプションではない。それゆえ、すべてのプログラムに署名されることを要求することは、プログラムの可用性を深刻に減少させ、多くの古いアプリケーションを壊すことになるであろう。
このように、上記の制限を対処し、コンピュータ機器のモジュールにおいて完全性チェックを実行するモデルを有することは望ましいであろう。
上記の点や他の技術の欠点を考慮して、本発明は、実行制御を転送する前にチェックを実行することによってモジュールの完全性を検証するためのシステム及び方法を提供する。
本発明によって、その次の動作においてそのコードが変わっていないことを保証するためにローカルに記憶された署名鍵を署名されていないプログラムに適用するためのシステムおよび方法も提供される。本発明は、プログラムに適用されるローカルな鍵を提供する。署名は、ロード動作の間プログラムが変わっていないかを後で決定するために使用される。そのためには、システムと方法は、プログラムの機能を実行して、プログラムの第一の表現を生成する。第一の表現は、それからローカルに記憶された鍵で暗号化される。好ましくは、第一の表現は、ハッシュ関数を使用して生成されるとよい。好ましくは、ローカルに記憶された鍵は、秘密鍵/公開鍵の対からの秘密鍵であるとよい。プログラムを実行する前に、その機能はプログラムにおいて実行され、第二の表現を生成する。暗号化された第一の表現もまた、復号化された第一の表現を生成するための復号化される。二つの表現は、プログラムが変更されたかを検証するために比較される。
本発明のさらなる特徴および利点は以下に説明される。
コンピュータ機器の動作中における完全性チェックを実行するためのシステムと方法は、ブートプロセスとロードされた実行可能ファイルの実行とを含み、ローカルに記憶された署名鍵を使用して、本発明にしたがって、添付の図面を参照してさらに説明される。
図1と以下の考察は、実装されうる本発明と関連する安定したコンピューティング環境の簡潔な概要を提供する。本発明は、専用や汎用の多くのコンピューティングシステム環境や構成で動作できる。本発明で使用するのに適する可能性がある周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、以上には限定されない。
図1を参照すると、本発明を実装するための典型的なシステムは、コンピュータ110の形態で汎用コンピューティングデバイスを含む。コンピュータ110のコンポーネントは、処理装置120、システムメモリ130、ならびにシステムメモリ130から処理装置120までを含む様々なシステムコンポーネントを結合するシステムバス121を含むことができるが、以上には限定されない。システムバス121は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかの種類のバス構造のいずれかである。例として、限定としてではなく、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、(メザニンバスとしても知られる)PCI(Peripheral Component Interconnects)バス、およびPCIe(PCI Express)を含む。
コンピュータ110は、通常、様々なコンピュータ読取り可能メディアを含む。コンピュータ読取り可能メディアは、コンピュータ110がアクセスすることができる任意の利用可能なメディアであることができ、揮発性メディアと不揮発性メディア、取り外し可能メディアと取り外し不能メディアがともに含まれる。例として、限定としてではなく、コンピュータ読取り可能メディアは、コンピュータ記憶メディアおよび通信メディアを含むことができる。コンピュータ記憶メディアは、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性メディアと不揮発性メディア、取り外し可能メディアと取り外し不能メディアをともに含む。コンピュータ記憶メディアは、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータ110がアクセスすることができる任意の他のメディアを含むが、以上には限定されない。通信メディアは、通常、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または搬送波または他のトランスポート機構のような変調されたデータ信号におけるその他のデータを実体化し、あらゆる情報配信メディアが含まれる。「変調されたデータ信号」という用語は、信号内に情報をエンコードするような形で特性の1または複数が設定または変更されている信号を意味する。例として、限定としてではなく、通信メディアは、有線ネットワークまたは直接有線接続などの有線メディア、ならびに音響メディア、RFメディア、赤外線メディア、およびその他の無線メディアなどの無線メディアを含む。また、前述したメディアのいずれかの組合せも、コンピュータ読取り可能メディアの範囲に含まれるべきものである。
システムメモリ130は、ROM131やRAM132などの揮発性メモリおよび/または不揮発性メモリの形態でコンピュータ記憶メディアを含む。始動中などにコンピュータ110内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム133(BIOS)が、典型的には、ROM131の中に記憶されている。RAM132は、典型的には、処理装置120が即時にアクセスすることができ、および/または処理装置120によって現在、処理されているデータおよび/またはプログラムモジュールを含む。例として、限定としてではなく、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、その他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶メディアも含むことができる。単に例として、図1は、取り外し不能不揮発性磁気メディアに対して読み取りまたは書き込みを行うハードディスクドライブ141、取り外し可能不揮発性の磁気ディスク152に対して読み取りまたは書き込みを行う磁気ディスクドライブ151、およびCD−ROMまたは他の光メディアなどの取り外し可能不揮発性の光ディスク156に対して読み取りまたは書き込みを行う光ディスクドライブ155を示している。典型的な動作環境において使用することができるその他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶メディアは、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどを含むが、以上には限定されない。ハードディスクドライブ141は、典型的には、インタフェース140のような取り外し不能メモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、典型的には、インタフェース150のような取り外し可能メモリインタフェースでシステムバス121に接続される。
前述し、図1に示したドライブ、および関連するコンピュータ記憶メディアにより、コンピュータ読取り可能命令、データ構造、プログラムモジュール、および他のデータのストレージがコンピュータ110に提供される。図1で、例えば、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納していることが示されている。以上のコンポーネントは、オペレーティングシステム34、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであることも、異なることも可能であることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147に、ここでは、少なくともそれらが異なるコピーであることを示すために異なる符号を付けている。
ユーザは、キーボード162や、マウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス161などの入力デバイスを介して、コマンドおよび情報をコンピュータ110に入力することができる。その他の入力デバイス(図示せず)は、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含むことができる。以上の入力デバイス、およびその他の入力デバイスは、しばしば、システムバス121に結合されたユーザ入力インタフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインタフェースおよびバス構造で接続してもよい。また、モニタ191、または他のタイプのディスプレイデバイスも、ビデオメモリ186と交互に通信できるビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタ191に加えて、コンピュータは、出力周辺インタフェース195を介して接続することができるスピーカ197やプリンタ196などの他の周辺出力デバイスも含むことができる。
コンピュータ110は、リモートコンピュータ180などの1または複数のリモートコンピュータに対する論理接続を使用するネットワーク化されたまたは分散された環境において動作することが可能である。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードであることができ、典型的には、コンピュータ110に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶装置181だけを図1に示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、その他のネットワーク/バスを含むこともできる。そのようなネットワーキング環境は、家庭、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
LANネットワーキング環境で使用される場合、コンピュータ110は、ネットワークインタフェースまたはネットワークアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は、通常、モデム172またはインターネットなどのWAN173を介して通信を確立するためのその他の手段を含む。内部にあることも、外部にあることも可能なモデム172は、ユーザ入力インタフェース160、またはその他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関連して示したプログラムモジュール、またはプログラムモジュールの部分は、リモートメモリ記憶装置の中に記憶されることが可能である。例として、限定としてではなく、図1は、リモートアプリケーションプログラム185が、メモリ装置181上に常駐しているのを示している。図示したネットワーク接続は、例示的であり、コンピュータ間で通信リンクを確立する他の手段も使用できることが認められよう。
ここに説明された多くの技術は、ハードウェアまたはソフトウェアと関連して、あるいは、必要に応じて両者の組み合わせと関連して実装されることができる。このように、本発明、あるいは本発明の一部またはある側面の方法および装置は、フロッピー(登録商標)ディスク、CD−ROM、ハードディスクドライブまたは他のいずれの機械読み取り可能記憶媒体のような実現可能なメディアにて具体化されたプログラムコード(すなわち、命令)の形態をとることができ、コンピュータのような機械にプログラムコードがロードされ、実行されたときは、その機械は本発明を実施するための装置となる。プログラムで制御できるコンピュータ上のプログラムコードの実行の場合において、コンピュータ機器は、一般的にプロセッサ、プロセッサによって読み取り可能記憶媒体(揮発性および不揮発性のメモリおよび/またはストレージ要素を含む)、少なくともひとつの入力デバイス、および少なくともひとつの出力デバイスを含む。たとえば、API、再利用可能な制御、あるいは同種のものの使用により、本発明に関連して説明されるプロセスを実装し、または利用することができる一または複数のプログラムは、好ましくは、コンピュータシステムと通信するために高水準の手続き型プログラミング言語か、オブジェクト指向型プログラミング言語で実装される。しかしながら、もし要望されるのであれば、プログラムはアセンブリや機械語で実装されることができる。いずれにせよ、言語はコンパイルされるか、またはインタプリタされた言語であり、ハードウェア実装に組み合わされる。
具体例は、一または複数のスタンドアロンコンピュータシステムの状況における本発明を利用することに言及するが、限定されたものではなく、むしろネットワークや分散されたコンピューティング環境のようないずれのコンピューティング環境と関連して実装されることができる。またさらには、本発明は、複数の処理チップまたはデバイスで、または全体で実装されることができ、そして、ストレージも同様に複数のデバイスの全体で生じさせることができる。そのようなデバイスは、パーソナルコンピュータ、ネットワークサーバ、ハンドヘルドデバイス、スーパーコンピュータ、または自動車や飛行機のような他のシステムに組み込まれたコンピュータを含むことができる。
図2は、本発明の一態様による、コンピューティングシステムのブートプロセスの間の転送制御の説明のブロック図である。各レベルの完全性は、特定のレベルに制御を転送する前に検証される。
BIOS133は、スタートアップの間、コンピュータ110内の要素間に情報を転送することを助ける基本的なルーチンを含む。上述のとおり、BIOS133は、通常、コンピュータシステムの読み出し専用メモリ(ROM)131に含まれており、いつでも利用可能なことを保証する。コンピュータ110がオンにされると、スタートアッププロセスの制御はBIOS133に渡され、それがマウス161、キーボード162、モニタ191のような様々なデバイスと、オペレーティングシステム134と、の間の対話を制御する。BIOS133がコンピュータ110を起動するとき、実際にオペレーティングシステム134をコンピュータ110のランダムアクセスメモリ(RAM)132内にロードする予定であるブートプログラムを配置する前に、BIOSはすべての付属(attachments)が動作可能であることを確認する。
ブートブロック210は、実際にブートプログラムが配置されるディスクドライブ141のセクタである。BIOS133は、コンピュータ110のRAM132にブートブロック210をロードする。それから、ブートブロック210の完全性チェック(以下で、詳細に説明される)を実行した後に、BIOS133は、システムの制御をブートブロック210に渡す。ブートブロック210におけるブートプログラムは、非常に限られた機能を有している。ブートプログラムのタスクは、オペレーティングシステム134がある基本的なレベルで機能することを開始しオペレーティングシステム自身をコンピュータ機器にロードし始めることができるように、十分なオペレーティングシステム134をRAM132に単に読み出すだけである。
そのためには、ブートプログラムは、オペレーティングシステム134の残り部分をロードするオペレーティングシステム134の一部であるローダ220をロードする。オペレーティングシステムが十分に機能的になった後には、ハードディスク141、CD ROM156、あるいはネットワーク171または173においてさえも配置され得るアプリケーションプログラム135のような様々なプログラムを配置し、ロードすることができる。プログラムを配置した後に、オペレーティングシステムは引き続き選択されたプログラムをRAM132にロードし、その結果、プログラム命令が実行することができる。ロードされたプログラムは、さらにまたロードされることを必要とする自身の要素を有してもよく、ローダ220は、この動作に関与する。
上述したように、コンピュータ機器は、システム上にて実行する様々なモジュールの完全性を検証する。それは鍵の使用を介して行う。鍵は、ディスクドライブ141の暗号化された一部でありうる安全な場所に記憶されたり、安全なメモリの場所またはその他の場所に埋め込まれる。本発明の実施態様において、鍵は企業内の中央でドメイン制御装置によって割り当てられ管理される。
本発明の実施態様において、ローカルに記憶された鍵225はローダ220によって取り出される。ローカルに記憶された鍵225は、コンピューティングシステムにおいて固有のものであることができ、そしてシステムをさらに安全にするために鍵の値を決定することをより困難にすることによって、時間とともに変更されることができる。ローカルに記憶された鍵225は、コンピュータ機器によって合成されてもよいし、たとえばコンピュータ機器の製造中にコンピュータ機器の内部に配置されてもよい。それゆえ、ローダがオペレーションシステムのいずれかの部分をロードし制御を渡す前に、まず最初にオペレーションシステムコードを検証しなければならない。本発明の一態様によると、ブートシーケンスの各部分は、ローカルに記憶された鍵225を用いて署名される。それから、オペレーションシステムの各部分がロードされる前に、そのコードが少なくともローカルに記憶された鍵225によって署名されていること、およびそのコード部分は修正されていないことを確認するために検証が実行される。
カーネル230は、オペレーションシステム134の中心部分であり、コンピュータ110を管理するモジュールとして考えることができる。従って、カーネル230がいずれの悪意のコードにも感染していないことがとても重要である。悪意のコードをカーネルにおいて実行することを許可することは、惨事となりうる。カーネルは、一般的に、オペレーションシステムがロードする最初の部分であり、システムの制御を得る前にローカルに記憶された鍵によって検証を経験もしなければならない。基本的な、しかし非常に重要なオペレーティングシステムのサービスがカーネル230によって提供され管理される。カーネルは、メモリ管理、プロセスとタスク管理、およびディスク管理に責任を負っている。アプリケーションプログラム135は、カーネル230の様々なサービスを要求する。典型的には、そのサービスのために競合するすべての要求を処理するための割り込みハンドラー、プロセスの順番を決定するためのスケジューラ、各スケジュール化されたプロセスを完了するためにコンピュータ110の使用を許可するためのスーパーバイザーを含む。カーネル230は常に使用され、コンピュータ110のメインメモリに滞在し、それゆえ、通常は、保護されたコンピュータ記憶領域にロードされる。カーネル230は、実行可能ファイル240を実行許可する前に、実行可能ファイル240の完全性チェックを実行する。
実行可能ファイル240は、プログラムを含むファイルであり、コンピュータ110におけるプログラムとして実行されることができる。実行可能ファイル240が実行することを選択された場合には、オペレーティングシステム134はそのプログラムを実行する。実行可能ファイル240は、バイナリ値の連続であるためバイナリと呼ばれることもある。とはいうものの、プログラムの中には厳密に言えばバイナリファイルではないものであっても実行可能と考えられるものがあり得る。たとえば、バイトコードプログラムはコンピューティングシステム上で実行することを意図されているため、実行可能と考えられる。そのほかの信頼できるプログラムである実行可能ファイル240は、悪意のコードを含むために変更されうる。それゆえ、信頼できるソースから受け取ったファイルだけを実行することおよびファイルが動作の間で修正されなかったことを確認することの重要性を説明する。
図2は、システムスタートアップの間の様々な構成の完全性をチェックするプロセスをさらに明示する。最初に、BIOS133は、ブートブロック210に実行制御を転送する前にブートブロック210の完全性をチェックする。もちろん、BIOS133は不揮発性メモリに記憶されており、そのため、変更されることは不可能である。それゆえ、完全性をチェックすることは必ずしも要求されない。制御がブートブロック210に渡した後は、ブートアッププロセスの一部、すなわち、オペレーティングシステム134の残りの部分をロードするローダ220をロードすることを実行する。制御を渡す前に、ブートブロック210はローダ220の完全性を検証する。同様に、ローダはオペレーションシステムカーネル230をロードする。しかし、カーネル230をロードする前に、ローダ220はカーネル230の完全性を検証する。その後、コンピュータ機器110の動作の通常のコースの間に、ユーザはコンピュータ機器110上にて様々なプログラムやアプリケーションを実行するであろう。それらのプログラムやアプリケーションもまた検証されることを必要とする。よって、それからカーネル230が実行可能ファイル240の完全性を確認した後に、実行制御はカーネル230から実行可能ファイル240へと渡される。
本発明の一態様では、ローダ220が、CDROMまたはDVDのような取り外し可能不揮発性光ディスク156、または磁気テープカセットのような取り外し可能不揮発性磁気ディスク152のようなコンピュータ読み取り可能メディア上で利用可能なコードの読み取り専用コピーであることを提供する。ローダ220は、本実施形態において、書き込み可能メディアであるカーネル230に実行制御を転送する前に、コンピュータ読み取り可能メディアからカーネル230の完全性を認証する。本実施形態では、読み取り専用メディアは外部のウィルス作者によって変更されることが不可能であるので、追加的な保護手段をもたらす。
本発明は、実行可能ファイルやブートプログラムのみの完全性チェックになんら限定されるものではない。実際、完全性チェックは、なんら限定されるわけではないが、バイトコードファイル、実行可能ファイル、およびスタートアッププログラムを含むいずれのプログラムにおいても実行されることができる。
さらには、本発明は、コンピューティングシステムの全てのプログラムの実行前における完全性チェックの実装に制限されることはない。本発明によるチェックは、一または複数の選択されたプログラムのために実行されてもよい。
図3aおよび図3bは図2で示したステップを発展させた図である。このように、実行制御が転送される前に様々な完全性チェックが実施されるステップが示される。さらには、完全性チェックは、各レベルに限定されず、ブートプログラムに限定されず、むしろどのようなタイプのプログラムにおいても実行されることができる。本発明によれば、プログラムの例示は、限定されるものではないが、実行可能ファイル、ブートおよびスタートアップファイル、バッチプログラム、およびスクリプトを含む。いくつかの例は、ブートブロック、ローダコード、カーネル、および実行可能ファイルまたはロードされたイメージである。
図3aのステップ300において、BIOS133は、最初にスタートアッププロセスを制御し、様々な付属物(Attachments)の動作可能性を確認した後に、オペレーションシステム134をRAM132にロードするプロセスを開始する。BIOS133は、通常、不揮発性メモリに記憶され、コンピュータ機器のブートアップの間、揮発性メモリ(すなわちRAM132)に移される。この理由のために、BIOS133は、容易に変更されないために自分自身を検証しないでよい。それにもかかわらず、コンピュータ機器110上で動作する他のプログラムモジュールと同様の検証プロセスをBIOSに受けさせるプレBIOS検証ステップが実行されることができる。これは、BIOSがフラッシュメモリに記憶され、または、BIOS自身が置き換わっていなかったことを確認することを欲した場合において、特に当てはまる。ステップ310において、BIOS133によって、ブートブロック210の完全性がチェックされる。ステップ320において、完全性が十分に検証された場合には、ステップ330にて、BIOS133は、ブートブロック210をRAM132にロードし、システムの実行制御をブートブロック210に渡す。完全性が確認されなかった場合には、ステップ340にてブートサイクルは停止される。
ブートブロック210が実行制御を受け取ると、ブートブロック210は、オペレーティングシステム134の残りの部分をステップ350にてRAM132にロードする。ブートブロック210もまた実行制御をローダ220に渡す前にローダの220の完全性をチェックする。ローダの220完全性チェックは、ステップ360で実行される。ローダ220完全性が確認されなかった場合には、サイクルはステップ340にて停止される。ブートブロック210がローダ220の完全性が満足できるものであることを検出した場合には、ブートブロック210は、ステップ370においてブートブロック210は実行制御をローダ220に渡す。ローダ220は、ユーザによって実行されることが選択されたプログラムをRAM133に格納したりロードすることに対して責任を負う。この格納とロード動作はステップ380で行われる。
図3bのステップ390において、ローダ220は、カーネル230の完全性を検証する。先般の完全性チェックと同様に、400にてチェックが完全性を確認した場合には、転送制御は、ステップ410にてローダ220からカーネル230に送信される。完全性が確認されなかった場合には、ステップ420へとプロセスは続き、そこでサイクルが停止される。
ステップ430において、現在実行制御を保持しているカーネル230は、選択されたプログラムの完全性を判断する。ロードされたイメージまたは実行可能ファイルのようなプログラムの完全性がステップ440にて確認された場合には、コンピューティングシステムの実行制御は、ステップ450にてプログラムに転送され、その結果、選択されたプログラムが実行されることが可能となる。プログラムの完全性が確認されなかった場合には、ステップ420でサイクルは停止され、プログラムは実行制御を受信しない。
先般のフローチャートは、どのくらい完全性チェックが様々な転送制御ポイントで実行されるのかを説明する。図4は、それを発展させ、完全性検証プロセス自身のブロック図表現を提供する。たとえば、プログラムは、なんら限定されるものではないが、ブートプロセスに関係のあるモジュールの一部、オペレーティングシステムまたはアプリケーションプログラムがプログラム500によって表される。本発明のひとつの目的は、次に行われる動作において、プログラム500が変更されたかを決めることである。ある種の修正が発生した場合には、システムはプログラム500を再実行することは安全ではないことを決定する。説明されたプロセスは、プログラムが変更されていないことを決めるためにチェックが実行されることを示すが、プログラムの一部のみが検証される場合があってもよく、システムは他のプログラムの部分が時間の経過とともに変更することを許可する場合があってもよい。これは、特に変更することを許可されるプログラムの部分が、コードではなくプログラムによって使用されるデータを含む場合である。このような場合において、プログラム500の一部は、悪意のコードを導入することなしに正当に変更することができると決められることができる。
最初に、プログラム500の固有の表現A510が作り出される。固有の表現は、様々な機能のいずれか一つによって作り出されることができ、その機能はプログラム500の圧縮された表現を生成する。表現は、適度な一意性を有するように形成される。
表現510を作り出すために使用された機能の一例は、ハッシュ法アルゴリズムである。周知のハッシュ法アルゴリズムは、Secure Hash Algorithm(SHA 1)およびMD5を含む。しかしながら、表現を生成するための他のアルゴリズムまたは機能が採用されてもよく、本発明は、特定のアルゴリズムや機能に決して限定されない。
表現A510は、その後、電子署名520を形成するために暗号化される。電子署名520は、プログラム500の固有かつ安全な表現を表す。暗号化プロセスには多くのものが知られている。本発明は、決して限定されるものではないが、公開鍵/秘密鍵暗号化、対称暗号化(symmetric encryption)、および非対象暗号化(asymmetric encryption)を採用することができる。
電子署名520が復号化されると、その結果は固有の表現A510になる。使用された復号化機能は、採用された特定の暗号化機能と一致する。たとえば、表現A510は、秘密鍵を使用して暗号化された場合には、復号化はその秘密鍵と対応する公開鍵で生成されるだろう。
その後、次のプログラム500のロードオペレーションのために、プログラム500が変更されたかを決めるために検証が要求される。次の動作のためのプログラムは、図4にて承認(confirmation)530として表示される。確認530の固有の表現が形成され、その結果、固有の表現B540となる。固有の表現B540の作成は、固有の表現Aの作成と類似しているはずである。
固有の表現B540が、電子署名520の復号化である固有の表現A510と一致した場合には、承認(confirmation)530は、プログラム500と同じである。このように、プログラム500は、変更されておらず、コンピューティングシステムにとってプログラム500を実行し、ロードすることは安全である。しかしながら、もし固有の表現B540が固有の表現A510と一致しない場合には、プログラム500は、どこかで変えられており、ローディングは発生すべきではない。
図5は、プログラム500は変更されておらず、したがって次の動作のために再実行されることを許可されることを確認するためのローカルに記憶された署名鍵225を使用する方法を明示するフローチャートである。図5に示される方法は、公開鍵/秘密鍵暗号化を使用するが、他の暗号化方法が採用されてもよい。
カーネル230のようなプログラム500が受信されると、プログラム500の固有の表現A510が方法のステップ600にて、作り出される。ハッシュ法アルゴリズム、または圧縮されたプログラム500の表現を作成する他のいずれの機能は、固有の表現A510を作り出すために使用されてもよい。表現は、適度な一意性を有するように形成される。固有の表現A510は、ステップ610において、ローカルに記憶された鍵225で暗号化される。この鍵は、上記にて詳細に説明されたように、機械において固有のものであるため、プログラム500は決定されない。暗号化は、電子署名520を表現し、ステップ620にて、プログラム500と関連付けられる。そのためには、電子署名は、プログラム500に直接付加されてもよいし、プログラム500から独立して記憶されてもよく、そして、プログラムと電子署名との関連付けは、他のプロセスによって追跡される。
署名されたプログラム500は、システムがプログラム500をリロードまたは再実行を試みるまで記憶される。システムが続いてプログラム500をロードしようとした時には、暗号化された電子署名520はステップ630において公開鍵で復号化される。公開鍵は秘密鍵/公開鍵ペアーの一部であり、本発明の一態様においては、ローカルに記憶された鍵は秘密鍵である。先に記載したように、対称暗号化(symmetric encryption)技術のような他の暗号化スキームが検討される。
承認(confirmation)530の固有の表現B540がステップ640にて作り出される。この固有の表現B540は、ステップ600にてプログラム500の表現が形成されたことと同じ方法で形成されなければならない。たとえば、同じハッシュ法アルゴリズムが両方の動作のために使用されることが必要である。承認(confirmation)530の表現は、ステップ650において、電子署名520の復号化と比較される。ステップ660において、比較は結果が一致するかをチェックされる。結果が一致である場合には、ステップ670にて、一致は、プログラム500が修正されておらず、承認(confirmation)ファイル530が実際にプログラム500であることを示すので、プログラム500は次の動作のためにロードされることが可能となる。固有の表現A510である復号化が、固有の表現B540である新しい表現と一致しない場合には、ステップ680にて動作が停止される。この不一致は、プログラム500が修正されており、破損されたかもしれないことを示す。
このように、本方法は、実行に先立って修正されていないプログラムのみがシステムにおいてロードされ、実行されるであろうことを確認する。
本発明の一態様において、ユーザが最初にアプリケーション、プログラム、またはコードモジュールをダウンロードおよび/または、さもなければインストールするときは、システムはシステム全体の完全性を確認しようと試みる。そのためには、プログラムは第三者署名システムおよび信頼できる局を使用することを独立して検証されることができる。しかしながら、特定のプログラムにそのような信頼できる署名が全く利用できない場合には、ユーザは特定のプログラムコードを使用することを依然として要望する。さらには、ユーザには、プログラムコードのソースが正当な要素であると信じる十分な理由がある(またはそのような判断を下すために決断することに気持ちが傾かされる)。プログラムコードは第三者署名がないため、コンピュータ機器110にロードされた後にプログラムコードが変更されたことができないようにするために、コードをローカル署名鍵225で署名させるであろう。そのためには、コンピューティングシステムのユーザは、実行可能ファイル240のようなプログラム500が信頼できるソースからのものであるか否かに関して入力を要求されることが好ましい。ユーザが、そのソースは信頼できるものであると信じる場合には、プロセスはユーザがそのように指示することにより継続する。しかしながら、ユーザが、そのソースが信頼できるものと信じない場合には、プログラム500がシステムにロードされ、またはインストールされることなく、終了するだろう。
上記の説明から明らかなように、本発明のシステムおよび方法の全部または一部は、ハードウェア、ソフトウェア、または両者の組み合わせによって実現される。ソフトウェアに実現されると、本発明の方法および装置、またはそれらのある側面またはある部分は、プログラムコード(すなわち、命令)の形式に実現されることができる。このプログラムコードは、コンピュータ読み取り可能媒体に記憶されることができ、そこに、プログラムコードがロードされ、コンピュータ110のような機械によって実行されるときは、その機械は発明を実施するための装置となる。コンピュータ読み取り可能メディアは、限定されるわけではないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CDROM、デジタルバーサタイルディスク(DVD)または他の光ディスクストレージ、メモリカード、メモリスティック、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータ110がアクセスすることができる任意の他のメディアを含む。プログラムコードは、好ましくは、コンピュータシステムと通信するために高水準の手続き型プログラミング言語か、オブジェクト指向型プログラミング言語で実装されることができる。あるいは、プログラムコードはアセンブリまたは機械語で実装されることができる。いずれにせよ、プログラムコードはコンパイルされた形式で、または解釈によって実行されることができる。
前述で示すように、本発明は、検証されたプログラムのみがシステムで実行されること、およびプログラムコードは実行に先駆けて修正も変更もされていないことを確認するためのシステムと方法に関する。広い発明概念を逸脱することなく上記説明された態様を変更できることを理解されたい。たとえば、本発明は、上記でコンピュータ110に実装されるとして説明されたが、本発明は、例として、そしてなんら限定されるものではないが、衛星放送受信機、セットトップボックス、アーケードゲーム、パーソナルコンピュータ(PC)、携帯電話、パーソナルデジタルアシスタント(PDA)、および他のハンドヘルドデバイスを含む他の多くのタイプのコンピュータ機器で具体化できることを理解されたい。従って、本発明は、シミュレーション、イメージ、ビデオ、オーディオ、テキスト、ゲーム、オペレーティングシステム、アプリケーションプログラム、または任意の他の形態のソフトウェアのデジタルデータやプログラムコードに適用されることができる。さらに、本発明の方法とシステムは、たとえば、限定されないが、ほとんどの任意のタイプのメディアで、または、無線周波数送信および光信号を含むほとんどの任意のタイプの伝搬媒体を介して分配される、ほとんどの任意のタイプのネットワーク上のデジタルデータおよびプログラムコードへのアクセス制御に容易に適用され、またはアクセス制御で用いるため容易に修正されることができる。したがって、本発明は、開示された特定の態様に限定されるものではなく、特許請求の範囲に定義されたような発明の精神と範囲において全ての修正をカバーすることを目的としていると解される。
本発明が具体化され得るコンピューティング環境の例示的なブロック図である。 オペレーションシステムにおけるブート周期の間の転送制御の繋がりを説明するブロック図である。 本発明による完全性チェックの実施を説明するフローチャートである。 本発明による完全性チェックの実施を説明するフローチャートである。 プログラムが修正されたか決定するために使用されるプログラムの構成と、プログラムの表現のブロック図である。 プログラムを検証するためのローカルに記憶された署名鍵の使用を明示するためのフローチャートである。

Claims (20)

  1. プログラムを検証する方法であって、
    前記プログラムの第一の表現を生成するための前記プログラムの機能を実行すること、
    前記第一の表現をローカルに記憶された鍵で暗号化すること、
    前記プログラムを実行する前に、第二の表現を生成するためのプログラムの前記機能を実行すること、
    復号化された第一の表現を生成するために、暗号化された前記第一の表現を復号化すること、
    前記第二の表現と、前記復号化された第一の表現とを比較すること、
    を備え、
    前記プログラムは、前記プログラムの一部であり得ることを特徴とするプログラムを検証する方法。
  2. 前記ローカルに記憶された鍵は秘密鍵であることを特徴とする請求項1に記載の方法。
  3. 前記復号化するステップは、前記秘密鍵と関連付けられた公開鍵の使用を採用することを特徴とする請求項2に記載の方法。
  4. 前記プログラムは、基本入出力システム(BIOS)であることを特徴とする請求項1に記載の方法。
  5. 前記プログラムは、ローダプログラムであることを特徴とする請求項1に記載の方法。
  6. 前記プログラムは、カーネルであることを特徴とする請求項1に記載の方法。
  7. 前記プログラムは、実行可能ファイルであることを特徴とする請求項1に記載の方法。
  8. 前記機能は、ハッシュ法アルゴリズムであることを特徴とする請求項1に記載の方法。
  9. 前記第二の表現と前記復号化された第一の表現との比較が一致するとの結果に帰結する場合には、前記プログラムを実行することを許可することをさらに備えたことを特徴とする請求項1に記載の方法。
  10. プロセッサとメモリを備えたシステムで用いるプログラムコードを記憶しており、前記プログラムコードは前記プロセッサに、
    前記プログラムの第一の表現を生成するための前記プログラムの機能を実行するステップと、
    前記第一の表現をローカルに記憶された鍵で暗号化するステップと、
    前記プログラムを実行する前に、第二の表現を生成するためのプログラムの前記機能を実行するステップと、
    復号化された第一の表現を生成するために、暗号化された前記第一の表現を復号化するステップと、
    前記第二の表現と、前記復号化された第一の表現とを比較するステップと、
    を実行させ、
    前記プログラムは、前記プログラムの一部であり得ることを特徴とするコンピュータ読み取り可能媒体。
  11. 前記復号化するステップは、前記ローカルに記憶された鍵と関連付けられた公開鍵の使用を採用することを特徴とする請求項10に記載のコンピュータ読み取り可能媒体。
  12. 前記プログラムは、基本入出力システム(BIOS)であることを特徴とする請求項10に記載のコンピュータ読み取り可能媒体。
  13. 前記プログラムは、ローダプログラムであることを特徴とする請求項10に記載のコンピュータ読み取り可能媒体。
  14. 前記プログラムは、カーネルであることを特徴とする請求項10に記載のコンピュータ読み取り可能媒体。
  15. 前記プログラムコードは、前記プロセッサに、
    前記第二の表現と、前記復号化された第一の表現との比較が一致するとの結果に帰結する場合には、前記プログラムを実行することを許可するステップをさらに実行させることを特徴とする請求項10に記載のコンピュータ読み取り可能媒体。
  16. メモリと、
    プロセッサと、
    前記プログラムの第一の表現を生成するためのプログラムの機能を実行するステップ、
    前記第一の表現をローカルに記憶された鍵で暗号化するステップ、
    前記プログラムを実行する前に、第二の表現を生成するためのプログラムの前記機能を実行するステップ、
    復号化された第一の表現を生成するために、暗号化された前記第一の表現を復号化するステップ、及び、
    前記第二の表現と、前記復号化された第一の表現とを比較するステップ、
    を実行可能なコンピュータ読み取り可能命令を含む前記メモリの最初の部分に記憶された制御コードと、を備え、
    前記プログラムは、前記プログラムの一部であり得ることを特徴とするコンピュータシステム。
  17. 前記復号化するステップは、前記ローカルに記憶された鍵と関連付けられた公開鍵の使用を採用することを特徴とする請求項16に記載のコンピュータシステム。
  18. 前記プログラムは、基本入出力システム(BIOS)であることを特徴とする請求項16に記載のコンピュータシステム。
  19. 前記プログラムは、ローダプログラムであることを特徴とする請求項16に記載のコンピュータシステム。
  20. 前記プログラムは、カーネルであることを特徴とする請求項16に記載のコンピュータシステム。
JP2008506537A 2005-04-15 2006-04-06 安全な起動方法およびシステム Pending JP2008537224A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/106,756 US20060236122A1 (en) 2005-04-15 2005-04-15 Secure boot
PCT/US2006/013007 WO2006113167A2 (en) 2005-04-15 2006-04-06 Secure boot

Publications (1)

Publication Number Publication Date
JP2008537224A true JP2008537224A (ja) 2008-09-11

Family

ID=37109951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008506537A Pending JP2008537224A (ja) 2005-04-15 2006-04-06 安全な起動方法およびシステム

Country Status (13)

Country Link
US (1) US20060236122A1 (ja)
EP (1) EP1872231A4 (ja)
JP (1) JP2008537224A (ja)
KR (1) KR20080005482A (ja)
CN (1) CN101199159A (ja)
AU (1) AU2006236956A1 (ja)
BR (1) BRPI0608821A2 (ja)
CA (1) CA2598616A1 (ja)
MX (1) MX2007011377A (ja)
NO (1) NO20074060L (ja)
RU (1) RU2007138019A (ja)
WO (1) WO2006113167A2 (ja)
ZA (1) ZA200707404B (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013035539A (ja) * 2011-08-04 2013-02-21 Boeing Co:The ハッシュ値を用いたソフトウェア部品の検証
JP2013149135A (ja) * 2012-01-20 2013-08-01 Lenovo Singapore Pte Ltd コンピュータをブートする方法およびコンピュータ
CN104019783A (zh) * 2014-06-13 2014-09-03 冠亿精密工业(昆山)有限公司 一种外径检测装置
JP2017102566A (ja) * 2015-11-30 2017-06-08 日本電信電話株式会社 不正ファイル検知装置、不正ファイル検知方法、および、不正ファイル検知プログラム
JP2020052597A (ja) * 2018-09-26 2020-04-02 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP2020144531A (ja) * 2019-03-05 2020-09-10 トヨタ自動車株式会社 車両用制御装置、車両用制御装置の起動方法及び記録媒体

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131649B2 (en) 2003-02-07 2012-03-06 Igware, Inc. Static-or-dynamic and limited-or-unlimited content rights
US7779482B1 (en) 2003-02-07 2010-08-17 iGware Inc Delivery of license information using a short messaging system protocol in a closed content distribution system
US20100017627A1 (en) 2003-02-07 2010-01-21 Broadon Communications Corp. Ensuring authenticity in a closed content distribution system
US20070055859A1 (en) * 2005-09-02 2007-03-08 Mediatek Inc. Boot systems and methods
EP1826697A1 (en) * 2006-02-24 2007-08-29 Giga Games System, SL Method for booting and using software for AWP and B type amusing gaming machines, and for C type casino machines
EP2033350A2 (en) 2006-05-02 2009-03-11 Broadon Communications Corp. Content management system and method
US7904278B2 (en) * 2006-05-02 2011-03-08 The Johns Hopkins University Methods and system for program execution integrity measurement
US7624276B2 (en) 2006-10-16 2009-11-24 Broadon Communications Corp. Secure device authentication system and method
US7613915B2 (en) * 2006-11-09 2009-11-03 BroadOn Communications Corp Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed
US8904552B2 (en) * 2007-04-17 2014-12-02 Samsung Electronics Co., Ltd. System and method for protecting data information stored in storage
US20080271145A1 (en) * 2007-04-30 2008-10-30 Schiller Mark R Tamper indication system and method for a computing system
FR2926149B1 (fr) 2008-01-07 2010-01-29 Bull Sas Dispositif, systemes et procede de demarrage securise d'une installation informatique
US8793477B2 (en) * 2008-02-12 2014-07-29 Mcafee, Inc. Bootstrap OS protection and recovery
US9286080B2 (en) * 2008-07-02 2016-03-15 Hewlett-Packard Development Company, L.P. Memory management for hypervisor loading
US8843742B2 (en) 2008-08-26 2014-09-23 Hewlett-Packard Company Hypervisor security using SMM
EP2486509A4 (en) * 2009-10-09 2016-11-30 Nokia Technologies Oy PLATFORM SECURITY
CN102262717B (zh) * 2011-07-18 2014-05-07 百度在线网络技术(北京)有限公司 用于更改原始安装信息及检测安装信息的方法、装置及设备
US9262631B2 (en) * 2011-11-15 2016-02-16 Mstar Semiconductor, Inc. Embedded device and control method thereof
US8627097B2 (en) 2012-03-27 2014-01-07 Igt System and method enabling parallel processing of hash functions using authentication checkpoint hashes
US9942257B1 (en) * 2012-07-11 2018-04-10 Amazon Technologies, Inc. Trustworthy indication of software integrity
US9465943B2 (en) * 2013-01-31 2016-10-11 Red Hat, Inc. Extension of a platform configuration register with a known value
US20150019852A1 (en) * 2013-07-12 2015-01-15 International Games System Co., Ltd. Verification method for system execution environment
CN104636662B (zh) * 2013-11-15 2018-07-03 华为技术有限公司 一种数据处理方法和终端设备
CN104796771B (zh) * 2014-01-22 2018-04-06 中国电信股份有限公司 控件下载方法和系统以及下载引导模块
US9672361B2 (en) * 2014-04-30 2017-06-06 Ncr Corporation Self-service terminal (SST) secure boot
CN105704514B (zh) * 2014-11-27 2018-06-29 中国电信股份有限公司 用于实现安全支付的方法、机顶盒和系统
US9727737B1 (en) 2015-07-27 2017-08-08 Amazon Technologies, Inc. Trustworthy indication of software integrity
SG10201602449PA (en) 2016-03-29 2017-10-30 Huawei Int Pte Ltd System and method for verifying integrity of an electronic device
CN106845212A (zh) * 2017-01-17 2017-06-13 北京北信源软件股份有限公司 一种视窗操作系统下的软件验证方法
US10664599B2 (en) 2017-05-01 2020-05-26 International Business Machines Corporation Portable executable and non-portable executable boot file security
US11138315B2 (en) * 2018-01-17 2021-10-05 Hewlett Packard Enterprise Development Lp Data structure measurement comparison
US20190384918A1 (en) * 2018-06-13 2019-12-19 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004530235A (ja) * 2001-06-15 2004-09-30 ノキア コーポレイション 電子装置の安全性を保証する方法、セキュリティシステム及び電子装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3744034A (en) * 1972-01-27 1973-07-03 Perkin Elmer Corp Method and apparatus for providing a security system for a computer
US5121345A (en) * 1988-11-03 1992-06-09 Lentz Stephen A System and method for protecting integrity of computer data and software
US4975950A (en) * 1988-11-03 1990-12-04 Lentz Stephen A System and method of protecting integrity of computer data and software
EP0449242A3 (en) * 1990-03-28 1992-10-28 National Semiconductor Corporation Method and structure for providing computer security and virus prevention
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5864698A (en) * 1994-08-24 1999-01-26 Packard Bell Nec Disk based bios
US5537540A (en) * 1994-09-30 1996-07-16 Compaq Computer Corporation Transparent, secure computer virus detection method and apparatus
US5643086A (en) * 1995-06-29 1997-07-01 Silicon Gaming, Inc. Electronic casino gaming apparatus with improved play capacity, authentication and security
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6715074B1 (en) * 1999-07-27 2004-03-30 Hewlett-Packard Development Company, L.P. Virus resistant and hardware independent method of flashing system bios
US6625729B1 (en) * 2000-03-31 2003-09-23 Hewlett-Packard Company, L.P. Computer system having security features for authenticating different components
US6928548B1 (en) * 2000-09-29 2005-08-09 Intel Corporation System and method for verifying the integrity of stored information within an electronic device
US7398389B2 (en) * 2001-12-20 2008-07-08 Coretrace Corporation Kernel-based network security infrastructure
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US7174465B2 (en) * 2002-06-26 2007-02-06 Lenovo Singapore Pte, Ltd Secure method for system attribute modification
US7305710B2 (en) * 2003-04-29 2007-12-04 Pitney Bowes Inc. Method for securely loading and executing software in a secure device that cannot retain software after a loss of power
US20040250086A1 (en) * 2003-05-23 2004-12-09 Harris Corporation Method and system for protecting against software misuse and malicious code
US7380136B2 (en) * 2003-06-25 2008-05-27 Intel Corp. Methods and apparatus for secure collection and display of user interface information in a pre-boot environment
US8332652B2 (en) * 2003-10-01 2012-12-11 International Business Machines Corporation Computing device that securely runs authorized software

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004530235A (ja) * 2001-06-15 2004-09-30 ノキア コーポレイション 電子装置の安全性を保証する方法、セキュリティシステム及び電子装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013035539A (ja) * 2011-08-04 2013-02-21 Boeing Co:The ハッシュ値を用いたソフトウェア部品の検証
JP2013149135A (ja) * 2012-01-20 2013-08-01 Lenovo Singapore Pte Ltd コンピュータをブートする方法およびコンピュータ
US9292302B2 (en) 2012-01-20 2016-03-22 Lenovo (Singapore) Pte. Ltd. Allowing bypassing of boot validation in a computer system having secure boot enabled by default only under certain circumstances
CN104019783A (zh) * 2014-06-13 2014-09-03 冠亿精密工业(昆山)有限公司 一种外径检测装置
JP2017102566A (ja) * 2015-11-30 2017-06-08 日本電信電話株式会社 不正ファイル検知装置、不正ファイル検知方法、および、不正ファイル検知プログラム
JP2020052597A (ja) * 2018-09-26 2020-04-02 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP2020144531A (ja) * 2019-03-05 2020-09-10 トヨタ自動車株式会社 車両用制御装置、車両用制御装置の起動方法及び記録媒体
JP7092071B2 (ja) 2019-03-05 2022-06-28 トヨタ自動車株式会社 車両用制御装置、車両用制御装置の起動方法及び車両用制御プログラム

Also Published As

Publication number Publication date
EP1872231A4 (en) 2009-07-29
WO2006113167A2 (en) 2006-10-26
WO2006113167A3 (en) 2008-01-03
NO20074060L (no) 2007-11-14
BRPI0608821A2 (pt) 2010-01-26
US20060236122A1 (en) 2006-10-19
AU2006236956A1 (en) 2006-10-26
ZA200707404B (en) 2009-06-24
MX2007011377A (es) 2007-10-03
CN101199159A (zh) 2008-06-11
RU2007138019A (ru) 2009-04-20
EP1872231A2 (en) 2008-01-02
CA2598616A1 (en) 2006-10-26
KR20080005482A (ko) 2008-01-14

Similar Documents

Publication Publication Date Title
JP2008537224A (ja) 安全な起動方法およびシステム
US10142104B2 (en) Securely recovering a computing device
US9424431B2 (en) Protecting operating system configuration values using a policy identifying operating system configuration settings
KR101247022B1 (ko) 실행가능 파일의 신뢰를 검증하는 시스템 및 방법
CN102279760B (zh) 利用初始保护组件来进行设备引导
EP1612666B1 (en) System and method for protected operating systems boot using state validation
EP2634959B1 (en) Method and Apparatus for Incremental Code Signing
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
JP2004038939A (ja) 対称鍵暗号化に基づくデータの保存および検索
KR20130114726A (ko) 변형 억제 부팅 시스템 및 방법
JP2010205270A (ja) 取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する装置
CN112511306A (zh) 一种基于混合信任模型的安全运行环境构建方法
TWI428786B (zh) 建立一受保護之計算環境的方法
CN114651253A (zh) 用于策略强制实施的虚拟环境类型验证
EP3583536A1 (en) Securely defining operating system composition without multiple authoring
KR20080008328A (ko) 보호 컴퓨팅 환경의 갱신 가능하고 개별화 가능한 요소

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111227