JP5031029B2 - 複数のプロセッサにまたがるセキュア・ブートのシステム、方法およびプログラム - Google Patents

複数のプロセッサにまたがるセキュア・ブートのシステム、方法およびプログラム Download PDF

Info

Publication number
JP5031029B2
JP5031029B2 JP2009513635A JP2009513635A JP5031029B2 JP 5031029 B2 JP5031029 B2 JP 5031029B2 JP 2009513635 A JP2009513635 A JP 2009513635A JP 2009513635 A JP2009513635 A JP 2009513635A JP 5031029 B2 JP5031029 B2 JP 5031029B2
Authority
JP
Japan
Prior art keywords
boot
processor
processors
boot code
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.)
Expired - Fee Related
Application number
JP2009513635A
Other languages
English (en)
Other versions
JP2009540405A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009540405A publication Critical patent/JP2009540405A/ja
Application granted granted Critical
Publication of JP5031029B2 publication Critical patent/JP5031029B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Description

本願は、全般的には改良されたデータ処理のシステムおよび方法に関する。より具体的には、本願は、複数のプロセッサにまたがるセキュア・ブート(secure boot)のシステムおよび方法を対象とする。
我々の社会が情報の電子通信および電子ストレージにますます依存するようになるにつれて、個人情報およびディジタル権利管理(DRM)など、ディジタル情報のセキュリティに関する懸念が増えてきた。さらに、コンピュータ・ハッカーおよび他の許可されないコンピューティング・システムへの侵入者の精巧化が、近年に高まってきた。その結果、そのような機密ディジタル情報を許可されないアクセスから保護できるようにするために、多くの努力がコンピューティング・デバイスのセキュリティ・システムの開発に注がれてきた。
侵入者がコンピューティング・システムへのアクセスを得ることができる形の1つは、電気インターフェースおよび他の観察可能な電磁的アクティビティまたは熱的アクティビティを介してコンピューティング・システムのブート・アクティビティを観察することである。この形でブート・アクティビティを観察することによって、侵入者は、どのデータ信号がブート・プロセッサによって入力され、出力されており、どの暗号アルゴリズムがプロセッサ上で実行されているかなどを演繹することができる。この情報から、侵入者は、ブート・シーケンス内の、許可されない侵入を行える点を検出することができる。さらに、セキュリティ・キーがシステムのブートのために要求されるセキュア・ブート・シーケンスを用いると、侵入者は、ブート・プロセッサによって使用される暗号アルゴリズムを逆転して、セキュリティ・キーへのアクセスを入手することができ、これによって、そのコンピューティング・システムへの完全なアクセスを得ることができる。コンピューティング・システムの全体的なセキュリティは、しばしば、ブート・プロセスのセキュリティに依存するので、侵入者がブート・シーケンスへのアクセスを得る時には、システム全体のセキュリティが危険にさらされる可能性がある。
米国特許公開第20050021944号
したがって、システムを許可されない侵入からより安全にするために、プロセッサのブート・シーケンスの監視の困難度を高める装置および方法を有することが有意義である。
例示的実施形態は、マルチプロセッサ・システムをブートするためにランダムなプロセッサを選択し、複数のプロセッサにまたがるセキュア・ブートを実現するシステムおよび方法を提供する。どのプロセッサがマルチプロセッサ・システムをブートするのに使用されるのかをランダム化することによって、システムのセキュリティを破る目的でブート・シーケンスに関する情報を入手するために電気インターフェース、熱アクティビティ、および他の電磁アクティビティを監視する許可されない人の能力は、よりむずかしくされる。たとえば、マルチプロセッサ・システムでは、侵入試行者は、ある単一のプロセッサがブート・プロセッサとしてランダムに選択されることを期待してそのプロセッサを監視しながら多数の異なる時にブート・シーケンスを実行する必要があるか、どれが実際のブート・プロセッサであったかを判定するためにブート時にすべてのプロセッサを監視するかのいずれかになるはずである。両方のオプションが、侵入試行者の側でのかなりの努力を必要とし、これは、ブート・シーケンス情報を入手するためにシステムを監視する実際の試みに対する抑止力として働くか、少なくとも、侵入試行者がシステムを危険にさらすのに要する時間にかなりの遅延を追加する可能性がある。
例示的実施形態の機構を用いると、パーベイシブ・ロジック(pervasivelogic)が、マルチプロセッサ・システムのブート動作を制御する、システムオンアチップなどのマルチプロセッサ・システム上に設けられる。このパーベイシブ・ロジックは、マルチプロセッサ・システム内のどのプロセッサが、これによってシステムを動作状態にするためにブート・コードを実行するブート・プロセッサになるかをランダムに選択するランダム・イベント・ジェネレータを含む。ブート・プロセッサのランダム選択に基づいて、ブート・プロセッサに関連する構成ビットが、そのプロセッサがブート・プロセッサになることを示すようにセットされる。その後、選択されたブート・プロセッサは、動作状態へのマルチプロセッサ・システムのセキュア・ブートに必要なセキュリティ鍵(1つまたは複数)を与えられる。
いくつかの例示的実施形態では、ランダムに選択されたプロセッサが、セキュア・ブート動作を実行する間に、マルチプロセッサ・システムの他のプロセッサは、実際のセキュア・ブート動作をマスクするために動作を実行する。このマスキングは、侵入者によって監視された場合に、どのプロセッサが実際のセキュア・ブート動作を実行しているのかをその侵入者が区別することをむずかしくする電磁出力または熱出力あるいはその両方をプロセッサに生成させる、ブート・コード・シーケンス以外の他のコード・シーケンスの実行を含むものとすることができる。
異なるコード・シーケンスを生成できる1つの形は、ランダムな量だけ反復するループを実行するランダム遅延要素をブート・コードに挿入することによるものである。この形で、各プロセッサは、異なる遅延量を伴ってブート・コードを実行することができ、これによって、異なる電磁シグネチャおよび熱シグネチャを生成させることができる。侵入者の展望からは、そのようなマスキングに起因して、マルチプロセッサ・システム内で実際のブート・プロセッサを他のプロセッサから区別することが非常にむずかしくなる。
さらなる例示的実施形態では、他のプロセッサによって実行されるコード・シーケンスは、ランダムに選択されるプロセッサが実行するものと同一であるが、ダミー・セキュリティ鍵を有するブート・コード・シーケンスである。したがって、これらの他のプロセッサは、セキュア・ブート動作を実行しているかのように動作し、侵入者にはそう見える。しかし、プロセッサが監視される場合に、偽の電磁出力および熱出力が識別され、これは、監視されるプロセッサがセキュア・ブート動作を実行している実際のランダムに選択されたプロセッサであるかどうかを侵入者が判定することをむずかしくする。
さらなる例示的実施形態では、ランダムに選択されるブート・プロセッサのマスキングを、ダミー・プロセッサを設けることによって実行することができる。ダミー・プロセッサは、電磁的、熱的などの監視装置の観点からは、このダミー・プロセッサ上でブート・コード・シーケンスとは異なるプロセスを実行することによってユニークであるかのように見え、これによって、システムに対する攻撃をこのダミー・プロセッサにリダイレクトする。この形で、侵入者が、セキュリティ機構を回避することによってシステムにアクセスすることを試みる時に、その侵入者は、マルチプロセッサ・システムの残りへの実際のアクセスを有しないダミー・プロセッサにアクセスするだけである。
他の例示的実施形態では、ブート・コード・シーケンスを、マルチプロセッサ・システム内の複数のプロセッサにまたがって分散させることができる。マルチプロセッサ・システム内の複数のプロセッサにまたがってブート・コード・シーケンスを分散させることによって、ブート・シーケンスに関する完全な情報を入手し、これによってセキュリティ手段を迂回するために危険にさらさなければならないプロセッサの数が増える。したがって、この例示的実施形態の分散ブート動作は、単一のセキュア・コアを利用するマルチプロセッサ・データ処理システムより安全である。さらに、ブート動作を分散させることによって、ブート動作のいずれかの部分が危険にさらされる場合に、ブート動作が失敗し、これによって、許可されない個人がシステムのセキュリティを迂回することが防がれる。
この例示的実施形態では、ブート・コード・シーケンスは、複数の区画に区分され、各区画をマルチプロセッサ・システムの異なるプロセッサに提供できるようになっている。ブート・コード・シーケンスの各区画が実行される時に、その区画は、ブート・コード・シーケンスが別のプロセッサ上で進行できるようになる前に、めいめいのプロセッサ上で正しく完了しなければならない。セキュア通信機構が、ブート・コード・シーケンスの前の区画の満足な完了を通信するのに使用される。このセキュア通信機構には、暗号化されたパスワードまたはたとえば公開/秘密暗号化鍵対などの他のセキュリティ識別子など、前のセッションが危険にさらされなかったことを示すセキュリティ・トークンを含めることができる。この形で、満足に完了しなければならない依存する「セッション」のチェーンが作成される。
ブート・コードの分散実行に用いられるプロセッサは、マルチプロセッサ・システム内のプロセッサのすべてまたはマルチプロセッサ・システム内のプロセッサのサブセットとすることができる。たとえば、単一のブート・プロセッサを選択する、上で説明したものなどのランダム選択機構を使用して、分散された形でシステムをブートするのに使用される複数のブート・プロセッサをランダムに選択することができる。さらに、プロセッサによって実行されるブート・コードの特定の区画をランダムに選択することができ、各パワーオン・リセット(POR)動作と共に、同一のプロセッサが、以前のPOR動作と同一のブート・コード区画を実行してもしなくてもよい。したがって、ランダム化は、どのプロセッサが分散ブート動作に用いられるかに関してならびに各プロセッサがどのブート・コード区画を実行するかに関して実行することができる。
マルチプロセッサ・システムの他のプロセッサすなわち非ブート・プロセッサは、分散ブート動作中に作業を全く実行しないか、プロセッサのランダムに選択されたサブセット上でのブート・コード実行をマスクするために、前に説明したさまざまなマスキング・コード例示的実施形態のうちの1つまたは複数のマスキング・コード・シーケンスを実行するかのいずれかとすることができる。言い換えると、本例示的実施形態の分散ブート・コード・シーケンス動作を、前に説明した例示的実施形態のうちの1つまたは複数と組み合わせることができる。
1つの例示的実施形態では、複数のプロセッサを有するデータ処理システム内で、データ処理システムをブートする方法が提供される。この方法は、ブート・コードを複数のブート・コード区画に区分することと、データ処理システムの複数のプロセッサ内の複数のブート・プロセッサのそれぞれに、複数のブート・コード区画からのブート・コード区画をロードすることとを含むことができる。複数のブート・コード区画を、そのめいめいの関連するブート・プロセッサ上で複数のセッションとして実行して、これによってデータ処理システムをブートすることができる。ブート・コード区画の個数は、ブート・プロセッサの個数と等しくすることができる。
いずれかのセッションが、ブート・コード区画の不成功の実行または危険にさらされた実行をもたらす場合には、データ処理システムのブートが失敗するものとすることができる。関連するセッションでの各ブート・コード区画の実行が完了する時に、複数のプロセッサのうちでそのブート・コード区画を実行した関連するブート・プロセッサは、ブート・コード・シーケンスの次のブート・コード区画に関連する別のブート・プロセッサに、ブート・コード区画の成功の完了をシグナリングすることができる。
めいめいの関連するブート・プロセッサ上での複数のブート・コード区画の実行には、めいめいの関連するブート・プロセッサ上での複数のブート・コード区画の危険にさらされない実行を保証するために、ブート・プロセッサの間の通信でセキュリティ機構を利用することを含めることができる。このセキュリティ機構は、ブート・プロセッサの間でセキュリティ・トークンを渡すこと、ブート・プロセッサの間でディジタル署名を渡すこと、パスワードを使用すること、ブート・コード区画のチェックサムを渡すこと、または信号の公開鍵/秘密鍵暗号化を使用することのうちの少なくとも1つを含むことができる。
この方法は、さらに、複数のプロセッサからブート・プロセッサをランダムに選択することであって、ブート・プロセッサは、複数のプロセッサのサブセットである、ランダムに選択することを含むことができる。マスキング・コードを、複数のプロセッサのうちでブート・プロセッサになるためにランダムに選択されたものではないプロセッサ上で実行することができる。
さらに、この方法は、どのブート・コード区画が各ブート・プロセッサに関連するかをランダムに選択することを含むことができる。各ブート・コード区画は、他のブート・コード区画と異なるものとすることができる。
さらに、ブート・プロセッサ上でブート・コード区画を実行するためのセッションは、デイジー・チェーン配置、リング配置、またはマスタ/スレーブ配置のうちの1つで配置することができる。データ処理システムは、第1命令セットに従って動作する第1プロセッサと、第1命令セットとは異なる第2命令セットに従って動作する1つまたは複数の第2プロセッサとを有する異機種マルチプロセッサ・システムオンアチップとすることができる。
もう1つの例示的実施形態では、複数のプロセッサ、複数のプロセッサに結合されたブート・コード・ストレージ、および複数のプロセッサに結合されたパーベイシブ・ロジックを含むデータ処理システムが提供される。ブート・コード・ストレージは、複数のブート・コード区画に区分されたブート・コードを格納することができる。パーベイシブ・ロジックは、前に説明した例示的方法実施形態に関して上で概要を示した動作のうちのさまざまな動作またはそれらの組合せを実行することができる。
もう1つの例示的実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能媒体を含むコンピュータ・プログラム製品が提供される。このコンピュータ可読プログラムは、データ処理システム上で実行される時に、このデータ処理システムに、前に説明した例示的方法実施形態に関して上で概要を示した動作のうちのさまざまな動作またはそれらの組合せを実行させることができる。
本発明の上記および他の特徴および利益は、本発明の例示的実施形態の次の詳細な説明で説明され、あるいはそれに鑑みて当業者に明らかになるであろう。
本発明に特有と思われる新規の特徴を、添付の特許請求の範囲に示す。しかし、本発明自体ならびに本発明の使用の好ましい態様、さらなる目的、および利益は、添付図面に関連して読まれる時の例示的実施形態の次の詳細な説明を参照することによって、最もよく理解される。
この例示的実施形態は、マルチプロセッサ・システム上でブートするためにランダムなプロセッサを選択する装置および方法を提供するものである。例示的実施形態は、マルチプロセッサ・システムをブートするためにプロセッサのうちの1つを選択できるすべてのマルチプロセッサ・システムと共に使用するために実施することができる。したがって、例示的実施形態の機構は、対称型マルチプロセッサ(SMP)システム、異機種マルチプロセッサ・システム、非コヒーレント非対称マルチプロセッサ・システム、および類似物に適用可能である。
例示的実施形態を実施できる1つのマルチプロセッサ・システムが、米国ニューヨーク州アーモンクのInternational Business Machines,Inc.社から入手可能なCell Broadband Engine(R)(CBE)である。例示的実施形態を、CBEアーキテクチャに関して説明するが、例示的実施形態の説明が、例示的にすぎず、例示的実施形態の機構を実施できるマルチプロセッサ・システムのタイプまたは構成に関する限定を述べ、または暗示することが意図されていないことを了解されたい。説明されるCBEアーキテクチャに対する多数の変更を、本発明の趣旨および範囲から逸脱せずに行うことができる。
図1は、本発明の諸態様を実施できるデータ処理システムの例示的ブロック図である。図1に示された例示的データ処理システムは、Cell Broadband Engine(R)(CBE)データ処理システムの例である。CBEを、本発明の好ましい実施形態の説明で使用するが、次の説明を読んだ時に当業者にすぐに明白になるとおり、本発明は、これに限定されない。
図1に示されているように、CBE 100は、power processor unit(PPU)116とそのL1キャッシュ112およびL2キャッシュ114を有するpower processor element(PPE)110と、それ自体のsynergistic processor unit(SPU)140〜154、メモリ・フロー・コントロール・ユニット155〜162、ローカル・メモリまたはローカル・ストア(LS)163〜170、およびたとえば組合せ直接アクセスメモリ(DMA)、メモリ管理ユニット(MMU)、およびバス・インターフェース・ユニットとすることのできるバス・インターフェース・ユニット(BIUユニット)180〜194をそれぞれが有する複数のsynergistic processor element(SPE)120〜134を含む。高帯域幅内部要素相互接続バス(EIB)196、バス・インターフェース・コントローラ(BIC)197、およびメモリ・インターフェース・コントローラ(MIC)198も設けられる。
CBE 100は、図1に示された要素のそれぞれを単一のマイクロプロセッサ・チップ上に設けることができるように、システムオンアチップとすることができる。さらに、CBE 100は、SPUのそれぞれがシステム内の他のSPUのそれぞれと異なる命令を受け取ることができる異機種処理環境である。さらに、SPUの命令セットは、PPUの命令セットと異なり、たとえば、PPUは、縮小命令セット・コンピュータ(RISC)ベースの命令を実行することができるが、SPUは、単一命令複数データ(SIMD)命令を実行する。
SPE 120〜134は、EIB 196を介してお互いおよびL2キャッシュ114に結合される。さらに、SPE 120〜134は、EIB 196を介してMIC 198およびBIC 197に結合される。MIC 198は、共用メモリ199への通信インターフェースを提供する。BIC 197は、CBE 100と他の外部バスおよびたとえばSouthBridge(商標)通信プロセッサなどのデバイスとの間の通信インターフェースを提供する。
PPE 110は、デュアル・スレッド式PPE 110である。このデュアル・スレッド式PPE 110と8つのSPE 120〜134との組合せは、CBE 100を、10個の同時スレッドおよび128個を超える保留中メモリ要求を処理できるものにする。PPE 110は、計算作業負荷のほとんどを処理する他の8つのSPE 120〜134のコントローラとして働く。たとえば、PPE 110は、SPE 120〜134がベクトル化された浮動小数点コード実行を実行する間に従来のオペレーティング・システムを実行するのに使用することができる。
SPE 120〜134は、synergistic processor unit(SPU)140〜154、メモリ・フロー・コントロール・ユニット155〜162、ローカル・メモリまたはローカル・ストア163〜170、およびバス・インターフェース・ユニット180〜194を含む。ローカル・メモリまたはローカル・ストア163〜170は、1つの例示的実施形態で、256KBの命令およびデータ・メモリを含み、このメモリは、PPE 110から可視であり、ソフトウェアによって直接にアドレッシングすることができる。
PPE 110は、SPE 120〜134に小さいプログラムまたはスレッドをロードし、SPEを一緒にチェーンして、複雑な動作の各処理ステップを処理することができる。たとえば、CBE 100を組み込んだセットトップ・ボックスは、DVD、ビデオ、およびオーディオを読み取り、復号し、表示するプログラムをロードすることができ、データは、最終的に出力ディスプレイに行き着くまで、SPEからSPEに渡される。4GHzで、各SPE 120〜134は、理論的に32GFLOPSの性能を与え、PPE 110は、類似するレベルの性能を有する。
メモリ・フロー・コントロール・ユニット(MFC)155〜162は、SPUのための、システムの残りおよび他の要素へのインターフェースとして働く。MFC 155〜162は、主ストレージとローカル・メモリまたはローカル・ストア163〜170との間のデータの転送、保護、および同期化の主機構を提供する。論理的には、プロセッサ内のSPUごとに1つのMFCがある。一部の実施態様は、複数のSPUの間で単一のMFCのリソースを共用することができる。その場合に、MFCについて定義されるすべてのファシリティおよびコマンドは、各SPUのソフトウェアに独立に見えなければならない。MFC共用の影響は、実装依存のファシリティおよびコマンドに制限される。
例示的実施形態は、マルチプロセッサ・システム、たとえばCBE 100をブートするために、SPE 120〜134のうちの1つなどのランダムなプロセッサを選択する装置および方法を提供する。どのSPE 120〜134がCBE 100をブートするのに使用されるかをランダム化することによって、CBE 100のセキュリティを破る目的でブート・シーケンスに関する情報を得るために電気インターフェース、熱的アクティビティ、および他の電磁的アクティビティを監視する、許可されない人の能力が、より困難にされる。
この例示的実施形態の機構を用いると、CBE 100のブート動作を制御するパーベイシブ・ロジック193が、CBE 100上に設けられる。パーベイシブ・ロジック193は、どのSPE 120〜134が、ブート・コードを実行し、これによってシステムを動作状態にするブート・プロセッサになるのかをランダムに選択するランダム・イベント・ジェネレータを含む。ブートSPE 120〜134のランダム選択に基づいて、選択されたSPE、たとえばSPE 120に関連する構成ビットが、SPE 120が実際のブート・プロセッサになることを示すようにセットされる。その後、選択されたSPE 120は、動作状態へのCBE 100のセキュア・ブートに必要なセキュリティ鍵(1つまたは複数)を与えられる。選択されたSPEがセキュア・ブート手順を成功して完了する時に、そのSPEは、MIC 198、共用メモリ199、およびBIC 197のうちで後の図2のフラッシュROM 230への通信リンク以外の部分が、シャットダウンされ、動作を防がれるセキュア状態から、アンロックされた状態に推移する。セキュアSPEがアンロック状態に入ったならば、そのセキュアSPEは、フラッシュROM 230によって提供される暗号化されたコードを実行することによって、MIC 198、BIC 197を完全にイネーブルするプロセス(「トレーニング」と称するプロセス)および他のすべてのプロセッサ(SPEおよびPPE)をイネーブルするプロセスを開始する。Cell Broadband Engine内で使用されるセキュア・ブート・プロセスに関するさらなる情報については、参照によって本明細書に組み込まれている、係属中の本願出願人に譲渡された米国特許公告第20050021944号を参照されたい。
いくつかの例示的実施形態では、ランダムに選択されたSPE 120が、セキュア・ブート動作を実行している間に、他のSPE 122〜134は、実際のセキュア・ブート動作をマスクするための動作を実行する。このマスキングは、侵入者によって監視された場合に、その侵入者がどのSPE 120〜134が実際のセキュア・ブート動作を実行しているのかを区別することをむずかしくする電気出力、電磁出力、または熱出力あるいはこれらの組合せをSPE 122〜134に生成させる、ブート・コード・シーケンス以外の他のコード・シーケンスを実行することを含むことができる。
異なるコード・シーケンスを生成できる1つの形が、ランダムな量だけ反復するループを実行するブート・ランダム遅延要素をブート・コードに挿入することによるものである。これらのランダム遅延要素は、プロセッサをブートしている間に、セキュアブート・アルゴリズムがランダムな形で変化して、異なる電磁シグネチャおよび熱シグネチャを引き起こし、これによって2つの異なるブート動作を経時的に比較することをむずかしくするために追加される。この形で、各SPE 120〜134は、ブート・コードを異なる遅延量を伴って実行し、これによって、異なる電磁シグネチャおよび熱シグネチャを生成させることができる。さらに、同一のSPE 120〜134が、セキュア・ブート・コードを実行するたびに異なる電磁シグネチャおよび熱シグネチャを生成する。侵入者の展望からは、そのようなマスキングに起因して、CBE 100内で実際のブートSPE 120を他のSPE 122〜134から区別することが、非常にむずかしくなる。
さらなる例示的実施形態では、他のSPE 122〜134によって実行されるコード・シーケンスは、ランダムに選択されたSPE 120が実行するものと同一であるが、ダミー・セキュリティ鍵を用いるブート・コード・シーケンスである。したがって、これらの他のSPE 122〜134は、セキュア・ブート動作を実行しているかのように動作し、侵入者にはそう見える。しかし、SPE 122〜134が監視される場合に、偽の電気出力、電磁出力、および熱出力が識別され、これは、侵入者が、監視されるSPEがセキュア・ブート動作を実行している実際のランダムに選択されたSPE 120であるかどうかを判定することをむずかしくする。
さらなる例示的実施形態では、ランダムに選択されたブートSPE 120のマスキングを、ダミーPSE(図示せず)を設けることによって実行することができる。ダミーPSEは、電磁的、熱的などの監視装置の展望からは、このダミーSPE上でブート・コード・シーケンスとは異なるプロセスを実行することによってユニークであるかのように見え、これによって、CBE 100への攻撃をこのダミーSPEにリダイレクトする。この形で、侵入者がセキュリティ機構を回避することによってシステムにアクセスすることを試みる時に、その侵入者は、CBE 100の残りへの実際のアクセスを有しないダミーSPEにアクセスするだけである。さらに、その侵入者が、ダミーPSEを危険にさらし、コードを実行することを試みる場合に、ダミーSPEは、CBE 100の残りをシャットダウンして、さらなる侵入の試みを防ぐことができる。
上で述べた例示的実施形態のそれぞれを、これからより詳細に説明する。各例示的実施形態を、本明細書で別々に説明するが、例示的実施形態を、マルチプロセッサ・システム、たとえばCBE 100のより高いセキュリティを達成するためにさまざまな形で組み合わせることができることを了解されたい。したがって、特定の情況およびマルチプロセッサ環境に適すると思われる例示的実施形態のすべての組合せが、本発明の趣旨および範囲に含まれることが意図されている。
図2は、1つの例示的実施形態によるランダム・ブート・プロセッサ選択機構の主要な動作構成要素を示す例示的な図である。例示的実施形態の説明を単純にするために、図2に、マルチプロセッサ・システムの1つのプロセッサだけが詳細に示されていることを了解されたい。しかし、マルチプロセッサ・システムのプロセッサのそれぞれが、図2に明示的に示されたプロセッサの要素および動作の配置に類似する形で、要素および動作の類似する配置を有することを了解されたい。任意の個数のプロセッサを、本発明の趣旨および範囲から逸脱せずにマルチプロセッサ・システムに含めることができる。しかし、例示的実施形態の説明において、プロセッサの個数が、図1に示されたCBEアーキテクチャと同様に8であると仮定する。
図2に示されているように、ランダム・ブート・プロセッサ選択機構の主要な動作構成要素は、システム・コントローラ210、セキュア鍵ストレージ220、フラッシュROM 230、およびパーベイシブ・ロジック240を含む。1つの例示的実施形態では、例示として図1のCBEアーキテクチャをとりあげると、要素210〜240を、CBEアーキテクチャが実施されるチップ上に設けられる要素とすることができる。すなわち、これらの要素210〜240を、マルチプロセッサ・システムオンアチップ(SoC)のロジックに組み込むことができ、したがって、これらの要素210〜240によって実行される動作を、オンチップで実行することができる。代替案では、要素のうちの1つまたは複数を、オフチップで設けることができ、たとえば、フラッシュROM 230を、オフチップで設けることができる。
システム・コントローラ210は、システムの電力を許容できる安定したレベルにするためのパワーオン・リセット(POR)の初期動作を実行する責任を負う。すなわち、システム・コントローラ210は、当技術分野で一般的に知られているように、電圧を上げること、システム・クロックをオンにすること、およびマルチプロセッサ・システムをブート動作を開始できる状態にするのに必要な他の初期動作の責任を負う。このPOR動作の一部として、プロセッサ280〜290は、動作のセキュア・モードにされる。この動作のセキュア・モードでは、プロセッサのローカル・ストアは、プロセッサの外部からアクセス可能ではない。システム・コントローラ210は、これらの初期動作が完了し、システムが許容できる電力状態になったならば、「パワー・グッド(power good)」状態をパーベイシブ・ロジック240にシグナリングする。
システム・コントローラ210からの「パワー・グッド」信号に応答して、パーベイシブ・ロジック240は、ソフトウェア・プログラムが実行を開始できるように、マルチプロセッサ・システムを動作状態にブートするブート動作を開始する。このブート動作の一部として、パーベイシブ・ロジック240のランダム・イベント・ジェネレータ242は、プロセッサのうちでマルチプロセッサ・システムのブート・プロセッサになるべきもの、たとえばプロセッサ280をランダムに選択する。ランダム・イベント・ジェネレータ242は、マルチプロセッサ・システムのプロセッサのそれぞれに送られる信号を生成する。この信号は、ブート・プロセッサとして選択されるプロセッサについてのみ論理ハイである。この信号は、効果的に、このプロセッサ280がブート・プロセッサであることを示す値、たとえば「1」を、ランダムに選択されたプロセッサ280の構成ビット・レジスタ250内の値にセットする。他のプロセッサは、そのめいめいの構成ビット・レジスタ内の構成ビット値を初期値のままに保たれ、これによって、これらのプロセッサがマルチプロセッサ・システムに関するランダムに選択されたブート・プロセッサではないことを示す。
マルチプロセッサ・システムをブートするブート・コードは、フラッシュROM 230内に暗号化されたフォーマットで格納される。暗号化されたブート・コード232は、プロセッサ280〜290のそれぞれに提供することができる。すなわち、ブート・シーケンスの一部として、プロセッサ280〜290のそれぞれは、フラッシュROM 230から暗号化されたブート・コード232を読み取ることを試みることができる。しかし、プロセッサのうちの1つだけが、ブート・プロセッサとしてランダムに選択されているので、プロセッサのうちの1つだけが、暗号化されたブート・コード232を暗号化解除することができ、マルチプロセッサ・システムを動作状態にするために暗号化されたブート・コード232を正しく実行することができる。これは、暗号化されたブート・コード232を暗号化解除するのに使用される鍵値である秘密鍵と暗号化されたブート・コード232を暗号化解除できないランダムに生成された鍵値との間で選択する、プロセッサのそれぞれの中に設けられるセレクタ260の使用を介して達成される。
構成ビット・レジスタ250に格納される値は、セレクタ260に供給されるセレクタ信号を生成するのに使用される。たとえば、セレクタ260は、1つの入力としてセキュア鍵ストレージ220からのセキュア鍵(Skey)、第2入力としてランダム値ジェネレータ262からのランダムに生成された鍵値、およびこの2つの入力のうちのどちらを選択すべきかを示す構成ビット・レジスタ250からの選択信号を受け取るマルチプレクサとすることができる。構成ビット・レジスタ250が、そのプロセッサがランダムに選択されたブート・プロセッサであることを示す値を格納する場合には、Skey入力が選択される。構成ビット・レジスタ250が、そのプロセッサがランダムに選択されたブート・プロセッサではないことを示す値を格納する場合には、ランダムに生成された鍵値入力を、セレクタ260によって選択することができる。その後、選択された鍵値が、SPE 270に出力される。
SPE 270は、選択された鍵値および暗号化されたブート・コード232を受け取る。次に、SPE 270は、暗号化されたブート・コード232の暗号化解除を試みる。選択された鍵値が、セキュア鍵ストレージ220からのSkeyである場合には、SPE 270は、暗号化されたブート・コード232を正しく暗号化解除することができ、システムを動作状態にするためにその中のブート・コード命令を実行することができる。選択された鍵値がセキュア鍵ストレージ220からのSkeyではない場合には、暗号化解除は失敗し、SPE 270はブート・コード命令を実行することができない。
ブート・プロセッサをランダムに選択し、ランダムに選択されたブート・プロセッサを使用してマルチプロセッサ・システムをブートする上のプロセスは、マルチプロセッサ・システムによって実行されるパワーオン・リセット(POR)動作のそれぞれと共に実行することができる。したがって、マルチプロセッサ・システムがブートされるたびに、複数のプロセッサのうちの異なるプロセッサを、ブート・プロセッサになるようにランダムに選択することができる。その結果、システムへの潜在的侵入者は、どのプロセッサがブート・プロセッサであるかを先験的に判定することができず、マルチプロセッサ・システムの電磁条件および熱条件の測定をその特定のプロセッサに向けることができない。
反対に、潜在的侵入者は、単一のプロセッサがブート・プロセッサになるランダムなプロセッサとして最終的に選択されることを期待してマルチプロセッサ・システムの複数のブートアップ動作を通じてその単一のプロセッサを監視しなければならないか、プロセッサのすべてを監視し、これによって、どのプロセッサがブート・プロセッサであるかを識別し、個々の電磁条件および熱条件の測定を介して必要な情報を入手することを試みなければならないかのいずれかである。たとえば、8プロセッサ・システムでは、ブート・シーケンスを監視することのむずかしさは、8つすべてのプロセッサを監視しなければならないので、8倍むずかしくなる。さらに、より多くのプローブおよびハードウェアが、そのような監視を行うのに必要になり、これによって、そのような監視試行の困難さが増大する。
図3は、1つの例示的実施形態によるランダム選択機構を示す例示的な図である。上で説明したように、この例示的実施形態の背後の原理的な発想は、マルチプロセッサ・システムのブート・プロセッサになるための複数のプロセッサからのプロセッサのランダム選択である。このランダム選択を行うために、ランダム・イベント・ジェネレータおよびセレクタ機構が設けられる。図示の実施形態では、ランダム・イベント・ジェネレータは、マルチプロセッサ・システムのパーベイシブ・ロジック内に設けられるが、セレクタは、プロセッサのそれぞれに関連して設けられる。図3は、1つの例示的実施形態によるランダム・イベント・ジェネレータおよびセレクタの一実施形態の図を提供する。
図3に示されているように、ランダム・イベント・ジェネレータ310は、たとえば図2のランダム・イベント・ジェネレータ242に対応するものとすることができるが、リニア・フィードバック・シフト・レジスタ(LFSR)カウンタ320、リング・オシレータ330、およびセレクタ信号レジスタ/デコーダ340を含む。リング・オシレータ330は、その出力が2つの電圧レベルの間で発振する奇数個数のNOTゲートからなるデバイスである。NOTゲートすなわちインバータは、チェーン内に接続され、最後のインバータの出力が、最初のインバータにフィードバックされる。奇数個数のインバータのチェーンの最後の出力は、最初の入力の論理NOTである。この最終出力は、最初の入力がアサートされてから有限の時間の後にアサートされる。この最後の出力の入力へのフィードバックは、電源の電磁雑音および温度などのランダム要素に従って時間的に変化する不安定な発振を引き起こす。
リング・オシレータ330の出力は、クロック信号clkと共にLFSRカウンタ320に入力として供給される。LFSRカウンタ320は、その入力ビットがその以前の状態の線形関数である、シフト・レジスタである。単一ビットの唯一の線形関数は、XORおよび逆XORであり、したがって、LFSRは、その入力ビットが全体的なシフト・レジスタ値のいくつかのビットの排他的論理和(XOR)によって駆動される、シフト・レジスタである。
LFSRカウンタ320の初期値を、種と呼び、このレジスタの動作は決定論的なので、LFSRカウンタ320によって作られる値のシーケンスは、その現在の(または以前の)状態によって完全に決定される。うまく選択されたフィードバック関数を有するLFSRカウンタ320は、ランダムに見え、非常に長いサイクルを有するビットのシーケンスを作ることができる。例示的実施形態では、このランダムさは、LFSRカウンタ320への入力が、リング・オシレータ330によって作られる発振と、お互いに独立に変化するリング・オシレータ330の周波数と入力クロックclkとの間の不一致との積であるという点で、より明白にされる。
LFSRカウンタ320は、入力として、リング・オシレータ330からの出力およびクロック信号clkを受け取り、セレクタ信号レジスタ/デコーダ340に格納される出力ビット・ストリームを生成する。リング・オシレータ330のインバータは、LFSRカウンタ320への出力信号に遅延を導入し、したがって、リング・オシレータ330の周波数と入力クロックclkとの間に不一致がある。周波数の間のこの不一致は、図4に示されているように、LFSRカウンタ320への入力にジッタを生じさせる。このジッタは、LFSRカウンタ320によって生成される出力をランダム化するランダムさの基準をもたらす。
LFSRカウンタ320の出力は、セレクタ信号レジスタ/デコーダ340に格納される。図示の例では、LFSRカウンタ320は、値1〜8を符号化すると解釈される3ビット出力を生成する3ビット・カウンタである。セレクタ信号レジスタ/デコーダ340のデコーダ機能が、ランダムな3ビット入力値に基づいて、8つの一意の出力のうちの1つを選択する。セレクタ信号レジスタ/デコーダ340に格納されたビットの状態に基づいて、ハイまたはロウの状態の信号が、さまざまなプロセッサ、たとえば図1のSPE 120〜134の構成ビット・レジスタに出力されて、これによって、構成ビット・レジスタに格納される値をセットし、したがって、マルチプロセッサ・システムのブート・プロセッサになる、プロセッサのうちの1つを選択する。
構成ビット・レジスタ値がセットされたならば、これらの値は、対応するセレクタ350〜370にセレクタ信号を供給するのに使用される。図3に示されているように、セレクタ信号は、Skey入力およびランダム鍵値入力と一緒に、マルチプレクサ352、362、および372に供給される。セレクタ信号の状態に基づいて、Skey入力またはランダム鍵値入力のいずれかが、マルチプレクサ352、362、および372のそれぞれによって選択される。ランダム鍵値入力は、ブート・プロセッサの選択について上で説明したランダム・イベント・ジェネレータ構成と同一タイプまたはこれとは異なるタイプの1つまたは複数のランダム値ジェネレータによって生成することができる。すなわち、上で説明したものに類似するランダム・イベント・ジェネレータ構成を使用して、Skeyと同一の長さを有する鍵値をランダムに選択することができる。これらのランダム鍵値は、その後、マルチプレクサ352、362、および372に入力される。
このシステムは、たとえば上で説明したデコーダ機能によって、マルチプレクサ352、362、および372に入力されるセレクタ信号のうちの1つだけが、Skey入力を選択し、他のすべてがランダム鍵値入力を選択するように設計される。マルチプレクサ352、362、および372からの出力は、対応するSPEに供給され、その結果、そのSPEは、ランダムに選択されたブート・プロセッサの場合にはブート・コードを暗号化解除しブート・コードを実行するのにこれらの出力を利用するか、あるいは、マルチプロセッサ・システム内の他のすべてのプロセッサの場合にはブート・コードの暗号化解除を試み、マルチプロセッサ・システムのブートに失敗するのにこれらの出力を利用するかのいずれかになることができる。
ランダム・イベント・ジェネレータおよびセレクタの実現に関して上で説明した機構が、例示的にすぎず、例示的実施形態と共に使用できるランダム・イベント・ジェネレータおよびセレクタのタイプに関する限定を述べるか暗示することを意図されていないことを了解されたい。たとえば、図3に示されたリング・オシレータおよびLFSRカウンタ配置を使用するのではなく、他のランダム・イベント・ジェネレータを利用することができる。たとえば、熱センサを使用して、熱雑音を測定することができ、次に、この熱雑音を使用して、ブート・プロセッサとしてプロセッサのうちの1つを選択するためのランダム・イベントを生成することができる。同様に、量子ドット(q−dot)または半導体ナノ結晶を使用して、量子ソース効果(quantum source effect)を測定することができ、この量子ソース効果を、ブート・プロセッサとして1つのプロセッサを選択するためのランダムさの源として使用することができる。ランダムさの任意の強いソースを、例示的実施形態と共に使用して、マルチプロセッサ・システムのブート・プロセッサとして使用されるプロセッサのランダム選択を実現することができる。
さらに、図3は、5つのインバータを有するリング・オシレータ330を示すが、例示的実施形態がこれに限定されないことを了解されたい。そうではなく、奇数個数のインバータがある限り、任意の個数のインバータを、本発明の趣旨および範囲から逸脱せずに使用することができる。実際に、LFSRカウンタ320への入力における追加のジッタをもたらすためには、入力クロック信号clkの周波数とリング・オシレータ330からの入力との間のさらなる不一致を導入するために、リング・オシレータ330内のインバータのチェーンに追加インバータを追加することが望ましい場合がある。不一致の量は、例示的実施形態が実施される特定のマルチプロセッサ・システムに関する所望の動作特性に基づいて選択することができる。
さらに、図2および3は、プロセッサごとの別々のランダム鍵値ジェネレータによって生成されるランダム鍵値を示すが、例示的実施形態は、これに限定されない。そうではなく、プロセッサに入力される1つまたは複数のランダム鍵値を生成するランダム鍵値ジェネレータを有するプロセッサのすべてについて、単一のランダム鍵値ジェネレータを設けることができる。したがって、たとえば、ランダム鍵値ジェネレータは、プロセッサのすべてに供給される単一のランダム鍵値、各個々のプロセッサのための別々のランダム鍵値(この場合に、たとえば7つの異なるランダム鍵値を生成することができる)、またはマルチプロセッサ・システムのさまざまなプロセッサに選択的に供給できる任意の個数のランダム鍵値を生成することができる。
1つの例示的実施形態では、図5に示されているように、それぞれが異なるランダム鍵値を出力する複数のランダム鍵値ジェネレータ390を設けることができる。代替案では、上で述べたように、単一のランダム鍵値ジェネレータを、これらの別々のランダム鍵値ジェネレータの代わりに使用することができる。これらのランダム鍵値を、マルチプロセッサ・システム内のプロセッサ、たとえばSPE 393および394のセレクタ、たとえばマルチプレクサ391および392への入力として、マルチプロセッサ・システムのブートのためのブート・コードを暗号化解除するのに実際に使用される、Skeyストレージ395、たとえばeFuseからのセキュア鍵(Skey)と一緒に供給することができる。図示されているように、ランダムに生成される鍵値およびSkey値を、侵入者がSkeyストレージ395からの信号線であるものとして信号線のうちの1つを分離することをよりむずかしくするために、多重化し、マルチプレクサ391および392のそれぞれへの8つの同一の信号線に供給することができる。
8つの鍵値入力全体を、マルチプレクサ391および392に供給することができ、パーベイシブ・ロジック397内のランダム・イベント・ジェネレータ396からの選択信号を、この8つの入力のうちの1つを選択するのに使用することができる。この場合に、Skey入力と1つのランダム鍵値との間で単純に選択するのではなく、マルチプレクサ391および392は、Skey入力と7つのランダム鍵値との間で選択することができる。したがって、第1プロセッサが、ブート・プロセッサとしてのこの第1プロセッサのランダム選択に基づいてSkey入力を選択することができ、第2プロセッサが、第3ランダム鍵値を選択することができ、第3プロセッサが、第4ランダム鍵値を選択することができ、第5プロセッサが、第1ランダム鍵値を選択することができ、以下同様である。したがって、各プロセッサは、Skeyまたはランダムに生成された鍵値のいずれかの、異なる鍵値を受け取ることができる。その結果、侵入者が、マルチプロセッサ・システムのバス・トラフィックを監視する時にどの鍵値が正しい鍵値であるかを区別することが、むずかしくなる。
さらに、図3および5に示された機構が、好ましくは、マルチプロセッサ・システムが設けられるセラミック・パッケージのより下の層の金属層内または設計が単一チップ上にある場合には相互接続の最下層内に設けられることを了解されたい。マルチプロセッサ・システムの電気特性および熱特性をプローブする能力は、現在、マルチプロセッサ・セラミック・パッケージのより上の層に制限されるので、これらの要素をより下の層の金属層内に配置することによって、これらの要素の動作をプローブする能力が、よりむずかしくなる。したがって、侵入試行者が、ランダム・イベント・ジェネレータおよびセレクタによって提供される鍵値を判定するためにこれらの要素の熱特性および電気特性を監視することは、不可能ではないとしても非常に困難である。
上の機構を使用することによって、マルチプロセッサ・システムの複数のプロセッサ内のプロセッサを、マルチプロセッサ・システムをブートするためにランダムに選択することができる。この形で、マルチプロセッサ・システムをブートするのに使用される秘密情報、たとえば秘密鍵を入手するためにプロセッサの電気特性および熱特性を監視する能力は、よりむずかしくされ、潜在的に、許可なしにマルチプロセッサ・システムにアクセスすることを望む可能性がある者に対する抑止力になる。
マルチプロセッサ・システムをブートするためにプロセッサをランダムに選択する上の機構は、ブート・シーケンスの監視に対する十分な量の保護を提供するが、それでも、許可されない個人が十分にしつこい場合に、そのような個人がシステムを「ハックする」ことが可能である可能性がある。そのような監視を事実上不可能にするために、例示的実施形態は、許可されない個人が、どのプロセッサがマルチプロセッサ・システムをブートするための実際のブート・シーケンスを正しく実行しているかを区別できなくするように、ランダムに選択されたプロセッサ上でのブート・シーケンスをマスクする追加機構を提供する。
1つの例示的実施形態では、マスキング動作は、ブート・プロセッサになるように選択されたのではないプロセッサのそれぞれが命令の異なるセットを実行して、これによって、ブート・プロセッサをシステム内の他のプロセッサから区別することをむずかしくする、マスクする電気シグネチャおよび熱シグネチャを生成することを含む。異なるプロセッサによって実行されるコード・シーケンスは、プロセッサに関連するメモリ内で提供されるか、あるいはプロセッサがブート・コード・シーケンスを暗号化解除できない時にプロセッサによって他の形でアクセス可能であるかのいずれかである、同一のデフォルト・コード・シーケンスとすることができる。たとえば、デフォルト・コード・シーケンスを、プロセッサのそれぞれに関連するローカル・ストアのセキュア部分内で提供することができる。その代わりに、デフォルト・コード・シーケンスを、フラッシュROMまたはオンチップもしくはオフチップで設けられる他のストレージ・デバイス内で提供することができる。
プロセッサが、フラッシュROMから受け取られた実際の暗号化されたブート・コードを暗号化解除できない時には、プロセッサは、ローカル・ストレージのこのセキュア部分に戻ってこれをデフォルトで選択することができ、このセキュア部分は、プロセッサに、別のプロセッサ上で実行されているブート・コードをマスクする命令を実行させる。命令のこのシーケンスは、使用可能な情報を全く生成しないものとすることができ、マスキング機能だけのために働くことができる。その代わりに、命令のこのシーケンスを使用して、たとえば、ブート動作中または他の有用な動作中にシステムを監視する動作を実行することができる。
1つの例示的実施形態では、非選択プロセッサすなわち非ブート・プロセッサのそれぞれで実行されるコードは、同一である。非選択プロセッサのそれぞれによって実行されるコードが同一である例示的実施形態では、これらの非選択プロセッサのそれぞれで実行されるコードは、好ましくは、実際のブート・コードに似た電気プロファイルおよび熱プロファイルを生成するが、侵入者がマルチプロセッサ・システムのセキュリティを迂回するために必要とする秘密情報のいずれをも提供しないコードである。そのようなコードは、実際のブート・コードの動作に似た動作を実行するが、マルチプロセッサ・システムの機密部分にアクセスしないものとすることができる。実際に、1つの例示的実施形態では、マルチプロセッサ・システムをブートするのに使用されるものと同一のブート・コードを、非選択プロセッサによって、しかし、秘密鍵(Skey)および他の特権情報へのアクセスをアクセス不能にされた状態で使用することができる。
その結果、これらの非選択プロセッサの熱プロファイルおよびバス・トラフィックは、実際のブート・シーケンスを近似する。したがって、監視プローブを使用して熱プロファイル、バス・トラフィック、および類似物を監視する侵入者の展望から、その侵入者は、どのコアが実際のブート動作を実行しているかを解読することができない。というのは、すべてのコアが、監視プローブを介して同一に見えるからである。そのような曖昧さは、タンパリングを思いとどまらせ、実際のブート・コード・シーケンス、秘密鍵情報、および類似物を分離することをよりむずかしくする。
他の例示的実施形態では、非選択プロセッサのそれぞれが、命令の異なるセットを実行することができる。非選択プロセッサのそれぞれで命令の異なるセットを実行することによって、プロセッサのどれもが、電気プローブまたは熱プローブを使用して監視された時に、ユニークに見えなくなる。その結果、熱プロファイルまたはバス・トラフィックなどの区別する特性を、どのプロセッサがブート・プロセッサであるかを識別するためにプローブによって識別することができない。
命令のこれらの異なるセットは、マルチプロセッサ・システム内のプロセッサのそれぞれについてランダムに選択することができる。したがって、たとえば、オンチップ・ストレージ・デバイス、たとえばフラッシュROMまたは類似物に格納されたコード・シーケンスの異なる開始アドレスを、ランダムに選択し、マルチプロセッサ・システムのプロセッサに供給することができる。次に、プロセッサは、ランダムに選択された開始アドレスで命令の実行を開始することができ、これによって、実際のブート・コード・シーケンスをマスクする異なる熱プロファイルおよびバス・トラフィックが生成される。
異なるプロセッサ用の異なるコード・シーケンスを提供する1つの形が、ランダム遅延要素をブート・コードに挿入されたブート・コードを設けることである。これらの遅延要素は、たとえば、ランダムな回数だけ反復するループとすることができる。そのような遅延要素は、ランダムに選択されたブート・プロセッサによって実行される実際のブート・コード・シーケンス内と、非選択プロセッサによって実行されるブート・コード・シーケンス内との両方に設けることができる。このランダム遅延は、プロセッサの熱特性およびバス・トラフィック特性を監視する侵入者の展望から、ブート・コードにプロセッサのそれぞれで異なって「見え」させる。その結果、侵入者が、どのプロセッサがマルチプロセッサ・システムをブートする実際のブート・コードを実行しているかを区別することは、可能ではない。
もう1つの例示的実施形態では、侵入者によって監視された時にユニークであるかのように見えるダミー・プロセッサが設けられる。この例示的実施形態は、あるプロセッサが、ブート・プロセッサになるためにランダムに選択され、非選択プロセッサのうちの1つのプロセッサが、ブート・コード・シーケンスからのユニークな熱プロファイルおよびバス・トラフィック・プロファイルを提供するコードを実行するダミー・プロセッサになるために選択され、他のプロセッサが、実際のブート・コード・シーケンスの熱プロファイルおよびバス・トラフィックをできる限りよく複製するコード・シーケンスを実行する、前の実施形態の組合せである。この形で、侵入者は、他のプロセッサからユニークであるものとしてダミー・プロセッサを検出し、このプロセッサが実際のブート・コード・シーケンスを実行していると結論する。したがって、侵入者は、熱プロファイルおよびバス・トラフィックの観点から他のプロセッサに似て見える実際のブート・プロセッサではなく、このダミー・プロセッサに攻撃を向ける。さらに、侵入者が、コードを実行することを試みるか、他の形でダミー・プロセッサに能動的に干渉する場合に、ダミー・プロセッサは、システム・シャットダウンをシグナリングすることができる。
図6〜9は、例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。図6は、監視するプローブの観点から、ブート・コード・シーケンスと同一に見えるコードが非選択プロセッサのそれぞれで実行される第1マスキング動作を示す。図6に示されているように、SPE0 410は、マルチプロセッサ・システム400のブート・プロセッサになるために、前に説明した機構の使用によるなど、ランダムに選択される。したがって、SPE0 410は、秘密鍵を受け取り、フラッシュROMからのブート・コード・シーケンスを暗号化解除し、マルチプロセッサ・システム400を動作状態にするのに必要な実際のブート・コード動作を実行する。他のSPE、たとえばSPE1〜SPE7 412〜424は、監視するプローブの展望からはブート・コード・シーケンスに似て見えるコードを実行する。
上で説明したように、他のSPE1〜SPE7 412〜424が実行するコード・シーケンスは、SPE1〜SPE7 412〜424にSPE0 410上で実行されるブート・コード・シーケンスをマスクするための命令を実行させる、ローカル・ストレージのセキュア部分で提供されるデフォルト・コード・シーケンスとすることができる。これらの非選択のSPE1〜SPE7 412〜424のそれぞれで実行されるコードは、好ましくは、実際のブート・コードに似た電気プロファイルおよび熱プロファイルを生成するが、マルチプロセッサのセキュリティを迂回するために侵入者が必要とする秘密情報のいずれをも提供しないコードである。そのようなコードは、実際のブート・コードの動作に似た動作を実行するが、マルチプロセッサ・システム400の機密部分にアクセスしないものとすることができる。
図7は、異なるランダムに選択されたアルゴリズムが非選択プロセッサのそれぞれで実行される、もう1つの例示的実施形態を示す。図7に示されているように、SPE0は、やはり、ブート・プロセッサになるために選択され、したがって、マルチプロセッサ・システム400を動作状態にブートするブート・コードを実行する。他のSPE1〜SPE7 412〜424のそれぞれは、異なる熱プロファイルおよびEIB上の異なるバス・トラフィックを生成する別々のランダムに選択されたアルゴリズムを実行する。したがって、各SPE0〜7は、他のSPE0〜7 410〜424のそれぞれと比較された時に、ユニークに見える。したがって、どのSPE0〜7 410〜424がマルチプロセッサ・システム400をブートする実際のブート・プロセッサであるかを区別することは、可能ではない。
上で述べたように、これらの異なるアルゴリズムは、マルチプロセッサ・システム内のSPE1〜SPE7 412〜424のそれぞれについてランダムに選択することができる。したがって、たとえば、オンチップ・ストレージ・デバイス、たとえばフラッシュROMまたは類似物内に格納されたコード・シーケンスの異なる開始アドレスを、ランダムに選択し、SPE1〜SPE7 412〜424に供給することができる。その後、SPE1〜SPE7 412〜424は、ランダムに選択された開始アドレスで命令の実行を開始することができ、これによって、実際のブート・コード・シーケンスをマスクする異なる熱プロファイルおよびバス・トラフィックが生成される。
代替案では、ブート・コードを、ランダム遅延要素をブート・コードに挿入してSPE0〜7 410〜424のそれぞれに供給することができる。これらの遅延要素は、たとえば、ランダムな回数だけ反復するループとすることができる。このランダム遅延は、プロセッサの熱特性およびバス・トラフィック特性を監視する侵入者の展望から、ブート・コードにSPE0〜7 410〜424のそれぞれで異なって「見え」させる。その結果、侵入者が、どのプロセッサがマルチプロセッサ・システムをブートする実際のブート・コードを実行しているかを区別することは、不可能である.
図8は、侵入者からの攻撃をリダイレクトできるダミー・プロセッサが設けられるもう1つの例示的実施形態を示す。図8に示されているように、SPE0は、ブート・シーケンスを実行するランダムに選択されたブート・プロセッサである。SPE1〜SPE4 412〜418およびSPE6〜SPE7 422〜424は、図6に関して上で説明した実施形態と同様に、熱およびバス・トラフィック監視の展望からブート・コード・シーケンスに似て見えるコードを実行する。その一方で、SPE5 420は、図7に関して上で説明したものに似た形で、ランダムに選択できるランダムに選択されたアルゴリズムを実行する。
したがって、SPE0〜7 410〜424の特性を監視する侵入者の展望からは、SPE0〜SPE4 410〜418およびSPE6〜SPE7 424のすべてが、同一のコードを実行しているように見える。しかし、SPE5 420は、他のSPEからユニークに見える。したがって、マルチプロセッサ・システムのブート・シーケンスを攻撃することを望む侵入者は、侵入者にはSPE5 420が実際のブート・プロセッサであるように見えるので、実際のブート・プロセッサであるSPE0 410ではなく、SPE5 420に攻撃をリダイレクトする可能性がある。
実際のブート・プロセッサが各パワーオン・リセット(POR)動作によってランダムに選択されるのと同様に、ダミー・プロセッサをも、非選択プロセッサからランダムに選択することができる。したがって、各POR動作によって、異なるブート・プロセッサおよびダミー・プロセッサを選択することができ、これによって、どのプロセッサが、マルチプロセッサ・システムへのアクセスを入手するために危険にさらすことのできる実際のブート・シーケンスを実行しているのかを侵入者が演繹することをより困難にすることができる。
完全を期して、図9に、システムをブートするのに使用されるブート・コードがプロセッサのそれぞれによって実行される、前に上で説明した例示的実施形態を示す。この例示的実施形態では、ランダムに選択されたブート・プロセッサだけが、秘密鍵(Skey)へのアクセスを与えられ、他のプロセッサは、ランダムに選択された鍵(Rkey1〜Rkey7)を受け取る。プロセッサのそれぞれは、それに供給された鍵、たとえばSkeyまたはRkeyを使用して、ブート・コードを復号し、実行することを試みる。ランダムに選択されたブート・プロセッサだけが、ブート・コードを正しく暗号化解除し、これを実行して、データ処理システムを動作状態にすることができる。しかし、外部モニタにとっては、プロセッサのそれぞれが暗号化解除およびシステムのブートを試みるために類似するタスクを実行するので、プロセッサのすべてがシステムをブートしているかのように見え、これによって、実際のブート・プロセッサがマスクされる。すなわち、プロセッサのそれぞれは、類似する熱シグネチャまたは電気シグネチャあるいはその両方を生成し、これは、侵入試行者が、測定するプローブおよび類似物を使用して、どのプロセッサが実際のブート・プロセッサであるかを区別することをむずかしくする。
例示的実施形態によって提供される、ブート・プロセッサのランダム選択およびブート・シーケンスのマスキングの使用を介して、マルチプロセッサ・システムへの侵入試行者が、どのプロセッサがブート・コード・シーケンスを実行しているのかを区別できるようになることは、非常にむずかしくなる。したがって、侵入試行者が、プロセッサの熱プロファイルおよびバス・トラフィックを監視し、暗号化されたブート・コードにアクセスする際に使用するための秘密鍵情報を識別することは、非常にむずかしくなる。さらに、侵入試行者が、ブート・コード・シーケンス内でシステムへの進入が可能な場所を識別することは、むずかしくなる。したがって、このマルチプロセッサ・システムは、ブート・シーケンスへの許可されないアクセスからより安全にされる。
図10〜11は、マルチプロセッサ・システム内のプロセッサをブート・プロセッサとしてランダムに選択する例示的動作およびブート・コード・シーケンスをマスクする例示的動作の概要を示す流れ図である。流れ図の各ブロックおよび流れ図のブロックの組合せを、コンピュータ・プログラム命令によって実施できることを理解されたい。これらのコンピュータ・プログラム命令は、プロセッサ上または他のプログラム可能データ処理装置上で実行される命令が流れ図の1つまたは複数のブロックで指定される機能を実施する手段を作成するように、機械を作るためにプロセッサまたは他のプログラム可能データ処理装置に供給することができる。これらのコンピュータ・プログラム命令は、コンピュータ可読メモリまたは記憶媒体に格納された命令が流れ図の1つまたは複数のブロックで指定される機能を実施する命令手段を含む製造品を作るように、特定の形で機能するようにプロセッサまたは他のプログラム可能データ処理装置に指示できるコンピュータ可読メモリまたは記憶媒体に格納することもできる。
したがって、流れ図のブロックは、指定された機能を実行する手段の組合せ、指定された機能を実行するステップの組合せ、および指定された機能を実行するプログラム命令手段をサポートする。また、流れ図の各ブロックおよび流れ図のブロックの組合せを、指定された機能またはステップを実行する特殊目的のハードウェアベースのコンピュータ・システムによって、または特殊目的のハードウェアおよびコンピュータ命令の組合せによって実施することができることを理解されたい。
図10は、マルチプロセッサ・システムをブートするブート・プロセッサのランダム選択の例示的動作の概要を示す。図10に示されているように、この動作は、システム・コントローラがパワーオン・リセット(POR)動作を実行することから開始される(ステップ510)。初期POR動作の実行の後に、システム・コントローラは、マルチプロセッサ・システムのパーベイシブ・ロジックに「パワー・グッド」信号を供給し(ブロック520)、パーベイシブ・ロジックは、ランダム・ブート動作を開始する(ステップ530)。
パーベイシブ・ロジックは、複数のプロセッサから、ブート・プロセッサになるプロセッサをランダムに選択する(ステップ540)。次に、パーベイシブ・ロジックは、ランダム選択に基づいてプロセッサの構成ビットをセットし(ステップ550)、ブート動作を開始するようにプロセッサにシグナリングする(ステップ560)。フラッシュROMが、暗号化されたブート・コードをプロセッサに供給し、鍵値が、秘密鍵ストレージおよびランダム鍵ジェネレータからプロセッサに供給される(ステップ570)。次に、プロセッサは、その構成ビットのセッティングに基づいて、そのプロセッサによって使用される鍵を選択する(ステップ580)。プロセッサは、選択された鍵に基づいてブート・コードの暗号化解除を試みる(ステップ590)。選択されたプロセッサが、秘密鍵を使用してブート・コードを暗号化解除し、システムをブートする(ステップ595)。すべての他の非選択プロセッサによるブート・コードを暗号化解除する試みが、失敗し、選択されたプロセッサだけが、システムをブートできることに留意されたい。その後、動作が終了する。
図11は、1つの例示的実施形態によるブート・コード・シーケンスをマスクする例示的動作の概要を示す流れ図である。図11に概要を示された動作は、たとえば、マルチプロセッサ・システムの各プロセッサ内で実行することができる。
図11に示されているように、プロセッサは、ブート動作を開始するシグナルを受け取る(ステップ610)。このステップは、たとえば、図10のステップ530に対応するものとすることができる。プロセッサは、ブート・コードを暗号化解除することを試み(ステップ620)、暗号化解除の試みが失敗したかどうかに関する判定が行われる(ステップ630)。暗号化解除が成功であった、すなわち、プロセッサが、ランダムに選択されたブート・プロセッサである場合には、ブート・コードが実行されて、これによって、マルチプロセッサ・システムが動作状態にされる(ステップ640)。
暗号化解除が失敗した場合には、ブート・シーケンスをマスクするために実行されるコード・シーケンスが選択される(ステップ650)。上で述べたように、特定の実施形態に応じて、マスキング・コード・シーケンスの選択は、ローカル・ストアのセキュア部分内のデフォルト・コード・シーケンス、ランダムに選択された開始アドレス、ランダム遅延要素を有するブート・コードの使用、または類似物に基づくものとすることができる。マスキング・コード・シーケンスを実行し(ステップ660)、システムが動作状態であるかどうか、すなわち、ブート・シーケンスが完了したかどうかに関する判定を行う(ステップ670)。そうでない場合には、動作はステップ660に戻り、マスキング・コード・シーケンスの実行を継続する。システムが動作状態である場合には、マスキング・コード・シーケンスの実行を終了し(ステップ680)、動作を終了する。
したがって、上の例示的実施形態は、マルチプロセッサ・システムを動作状態にブートするブート・プロセッサとして複数のプロセッサから1つのプロセッサをランダムに選択できる機構を提供する。例示的実施形態は、さらに、どのプロセッサが実際のブート・コード・シーケンスを実行するためにランダムに選択されたかを侵入者が区別することをむずかしくするために、ランダムに選択されたプロセッサによって実行されているブート・コード・シーケンスをマスクする機構を提供する。これらの機構を使用することによって、マルチプロセッサ・システムは、侵入者がブート・コード・シーケンスの監視を介してシステムへのアクセスを得ることを極端にむずかしくすることによって、より安全にされる。
上の例示的実施形態は、マルチプロセッサ・システム内の単一のプロセッサによって実行されるブート・コード・シーケンスに関して説明された。しかし、例示的実施形態は、これに限定されない。他の例示的実施形態では、ブート・コード・シーケンスを、後で説明するようにマルチプロセッサ・システム内の複数のプロセッサにまたがって分散させることができる。ブート・コード・シーケンスをマルチプロセッサ・システム内の複数のプロセッサにまたがって分散させることによって、ブート・シーケンスに関する完全な情報を入手し、これによってセキュリティ手段を迂回するために危険にさらさなければならないプロセッサの個数が増える。
したがって、後で説明する例示的実施形態の分散ブート動作は、単一のセキュア・コアを利用するマルチプロセッサ・データ処理システムより安全である。さらに、ブート動作を分散させることによって、ブート動作のいずれかの部分が危険にさらされる場合に、ブート動作が失敗し、これによって、許可されない個人がシステムのセキュリティを迂回することが防がれる。言い換えると、侵入試行者が、ブート動作の一部を危険にさらすことはできるが、侵入試行者は、ブート動作のすべてを危険にさらすことはできず、したがって、マルチプロセッサ・データ処理システムへのアクセスを得ることはできない。
この例示的実施形態を用いると、ブート・コード・シーケンスは、各区画をマルチプロセッサ・システムの異なるプロセッサに供給できるように、複数の区画に区分される。ブート・コード・シーケンスの各区画が実行される時に、その区画は、ブート・コード・シーケンスが別のプロセッサ上で進行できるようになる前に、そのめいめいのプロセッサ上で正しく完了しなければならない。セキュア通信機構が、ブート・コード・シーケンスの以前の区画の満足な完了を通信するのに使用される。このセキュア通信機構には、暗号化されたパスワードまたはたとえば公開/秘密暗号化鍵対などの他のセキュリティ識別子など、前のセッションが危険にさらされなかったことを示すセキュリティ・トークンを含めることができる。この形で、満足に完了しなければならない依存する「セッション」のチェーンが作成される。
ブート・コードの分散実行に用いられるプロセッサは、マルチプロセッサ・システム内のプロセッサのすべてまたはマルチプロセッサ・システム内のプロセッサのサブセットとすることができる。たとえば、単一のブート・プロセッサを選択する、上で説明したものなどのランダム選択機構を使用して、分散された形でシステムをブートするのに使用される複数のブート・プロセッサをランダムに選択することができる。さらに、プロセッサによって実行されるブート・コードの特定の区画をランダムに選択することができ、各パワーオン・リセット(POR)動作と共に、同一のプロセッサが、以前のPOR動作と同一のブート・コード区画を実行してもしなくてもよい。したがって、ランダム化は、どのプロセッサが分散ブート動作に用いられるかに関してならびに各プロセッサがどのブート・コード区画を実行するかに関して実行することができる。
マルチプロセッサ・システムの他のプロセッサすなわち非ブート・プロセッサは、分散ブート動作中に作業を全く実行しないか、プロセッサのランダムに選択されたサブセット上でのブート・コード実行をマスクするために、前に説明したさまざまなマスキング・コード例示的実施形態のうちの1つまたは複数のマスキング・コード・シーケンスを実行するかのいずれかとすることができる。言い換えると、本例示的実施形態の分散ブート・コード・シーケンス動作を、本発明の趣旨および範囲から逸脱せずに、前に説明した例示的実施形態のうちの1つまたは複数と組み合わせることができる。
図12は、1つの例示的実施形態によるデイジー・チェーン配置またはリング配置として構成された分散ブート動作を示す例示的な図である。図12に示されているように、複数のプロセッサ720〜750が、マルチプロセッサ・データ処理システムをブートするために設けられる。図示の例では、コプロセッサすなわちSPEのすべてが、分散ブート動作に利用されるが、制御プロセッサ、たとえばPPEは、分散ブート・コードを実行しない。もちろん、他の例示的実施形態では、PPEをも、分散ブート動作に含めることができる。さらに、他の例示的実施形態では、前に述べたように、マルチプロセッサ・データ処理システム内のプロセッサのサブセットだけを使用して、分散ブート動作を実行することができる。
暗号化されたブート・コード710は、たとえば図2のフラッシュROM 230など、マルチプロセッサ・データ処理システムに関連するストレージ・デバイスに格納することができるが、別々に実行可能な区画すなわちブート・コード区画1からnに区分することができる。たとえば、区画を、同一の暗号化アルゴリズムおよび同一の秘密鍵(Skey)を使用して別々に暗号化される暗号化されたブート・コード内のモジュールまたはルーチンとして提供することができる。好ましくは、ブート・コード区画の個数は、分散ブート動作に用いられるプロセッサの個数すなわちブート・プロセッサの個数と等しい。しかし、ブート・プロセッサのリング配置など、いくつかの例示的実施形態では、ブート・コード区画の個数は、ブート・プロセッサの個数に限定されず、ブート・プロセッサの個数より少ないまたはこれより多い、区画の任意の個数とすることができる。
分散ブート動作は、パーベイシブ・ロジック790の制御の下で実行され、このパーベイシブ・ロジック790は、たとえば図1のパーベイシブ・ロジック193と同一とすることができる。パーベイシブ・ロジック790は、たとえばランダム・イベント・ジェネレータの使用を介して、ブート・プロセッサとして使用されるプロセッサ720〜750をランダムに選択すると同時に、ランダムに選択されたプロセッサ720〜750のそれぞれが実行する区画をランダムに選択することができる。そのような実施形態では、パーベイシブ・ロジック790は、分散ブート動作の以前のセクションが危険にさらされたか否かを示すセキュア通信機構の使用を介してブート・コード・シーケンスのセキュリティを保証するために、ブート・コード区画が実行される順序を記憶することができる。しかし、この説明を単純にするために、図示の例では、マルチプロセッサ・システムのプロセッサのすべてまたは少なくともコプロセッサのすべてが、分散ブート動作に利用され、ブート・コード区画がシーケンシャル順でプロセッサ720〜750に供給されると仮定する。
パーベイシブ・ロジック790は、どのブート・コード区画がプロセッサ720〜750のそれぞれによって実行されるのかを選択するセレクタ信号をプロセッサ720〜750に供給する。さらに、パーベイシブ・ロジック790は、プロセッサ720〜750に、対応するブート・コード区画を暗号化解除するのに使用される鍵としてSkeyストレージからSkeyを選択させる鍵値セレクタ信号を供給する。プロセッサ720〜750は、供給されたSkeyを使用してそのブート・コード区画を暗号化解除し、次に、たとえばデイジー・チェーン・アーキテクチャ内のプロセッサ720〜750の配置によってまたはパーベイシブ・ロジック790の制御下でのいずれかで、正しいシーケンスでブート・コード区画を実行する。
図示の例では、SPE0 720は、そのブート・コード区画1を暗号化解除し、そのブート・コード区画を実行し、その後、そのブート・コード区画1の成功の完了をSPE1 730にセキュアに通信することによって、分散ブート動作を開始する。さらに、セキュリティ機構を、以前のセッションすなわち以前のブート・コード区画の実行からなるセッションが危険にさらされなかったことを示すために、SPEの間で利用することができる。このセキュリティ機構は、たとえば、セキュリティ・トークンを渡すこと、ディジタル署名、パスワード、以前のブート・コード区画のチェックサム、成功の完了メッセージの公開鍵/秘密鍵暗号化の使用、または類似物とすることができる。分散ブート動作の以前のセッションが危険にさらされたか否かを通信するのに使用できる任意のセキュリティ機構が、本発明の趣旨および範囲に含まれることが意図されている。
ブート・コード区画1実行の成功の危険にさらされていない完了の確認を受け取った後に、SPE1 730は、そのブート・コード区画2を暗号化解除し、そのブート・コード区画を実行し、次に、ブート・コード区画2の成功の完了をSPE2 740に通信することができる。このプロセスは、プロセッサのすべてが、危険にさらされずに分散ブート動作のそのプロセッサの区画を完了したことをシグナリングし終えるまで継続することができる。ブート・コード区画のこの依存性チェーンのすべての破断、たとえば、不成功の実行または危険にさらされた実行のすべてのシグナリングが、失敗したブートをもたらし、これを、システム・コントローラにシグナリングすることができる。すべてのブート・コード区画が成功して完了したならば、マルチプロセッサ・データ処理システムは、動作状態にあり、この状態では、ソフトウェア・アプリケーションをさまざまなプロセッサ上で実行することができる。
上で説明した例示的実施形態は、プロセッサ上で実行されるブート・コード区画に関してプロセッサのデイジー・チェーン配置を利用する。ブート・コード区画のシーケンシャル実行を保証する他の配置を、本発明の趣旨および範囲から逸脱せずに利用することができる。たとえば、上のデイジー・チェーン配置の拡張は、最後のプロセッサ、たとえばSPE7 750が、そのブート・コード区画の実行の成功の危険にさらされない完了を「主」ブート・プロセッサとして選択される最初のプロセッサ、たとえばSPE0 720に戻って通信するように、分散ブート動作に関してプロセッサのリング配置を設けることである。この形で、リング配置を介してあるセッションから次のセッションに渡されるセキュリティ機構、たとえばセキュリティ・トークン、増分されるカウント値などを、主ブート・プロセッサで使用して、分散ブート動作全体の危険にさらされない実行を検証することができる。
さらに、プロセッサのリング配置は、ブート・プロセッサの個数より多数のブート・コード区画を利用することを可能にする。したがって、マルチプロセッサ・データ処理システム内のプロセッサのサブセットだけがブート・プロセッサになるように選択される場合に、プロセッサのこのサブセットは、分散ブート動作に関してリング配置に配置される時に、任意の個数のブート・コード区画を実行することができる。これは、マルチプロセッサ・データ処理システム内のどのプロセッサがブート・プロセッサになるかをランダムに選択するだけではなく、何個のプロセッサが分散ブート動作でのブート・プロセッサになるかをランダムに選択もする、パーベイシブ・ロジック790の能力を生じさせる。したがって、最初のPOR動作で、4つのプロセッサを、ブート・プロセッサになるために選択することができ、後続のPOR動作で、3つのブート・プロセッサを選択することができる。パーベイシブ・ロジック790には、前に上で説明したプロセッサのランダム選択を制御するのにその後に使用される、ブート・プロセッサになるために選択されるプロセッサの個数をランダムに選択するロジックを含めることができる。
分散ブート動作に関するブート・プロセッサのもう1つの可能な配置が、マスタ/スレーブ配置を設けることである。図13は、1つの例示的実施形態によるマスタ/スレーブ配置として構成された分散ブート動作を示す例示的な図である。図13に示されているように、1つのプロセッサ760が、マスタ・プロセッサと指定される。このプロセッサは、コプロセッサ、たとえばSPEのうちの1つまたは制御プロセッサ、たとえばPPEとすることができる。スレーブ・プロセッサ、たとえばSPE0〜SPE7 720〜750は、それぞれ、上で図12で説明したものに類似する形で、そのブート・コード区画を完了することと、それらが実行を完了し、危険にさらされなかったことをマスタ・コアにセキュアに通信することとの責任を負う。マスタであるプロセッサ760が、スレーブ・プロセッサであるSPE0〜SPE7 720〜750のそれぞれから信号を受け取り、プロセッサ760が危険にさらされなかったことをそれ自体で検証したならば、マルチプロセッサ・データ・システムは、動作状態に入ることを許可され、この状態では、ソフトウェア・アプリケーションを実行することができる。
分散ブート動作に関するプロセッサのデイジー・チェーン配置、リング配置、およびマスタ/スレーブ配置を本明細書で説明したが、本発明が、これらの説明された配置だけに限定されるのではないことを了解されたい。そうではなく、分散ブート動作に関するプロセッサの任意の配置を、本発明の趣旨および範囲から逸脱せずに、例示的実施形態の機構と共に使用することができる。
図14は、1つの例示的実施形態によるマルチプロセッサ・システムの分散ブートの例示的動作の概要を示す流れ図である。図14に示されているように、この動作は、パーベイシブ・ロジックがシステム・コントローラから「パワー・グッド」信号を受け取ることから始まる(ステップ810)。パーベイシブ・ロジックは、マルチプロセッサ・データ処理システム内の複数のプロセッサからブート・プロセッサになるプロセッサを選択する(ステップ820)。上で述べたように、そのような選択は、プロセッサのすべてが選択されること、またはマルチプロセッサ・データ処理システム内のプロセッサのあるサブセットがブート・プロセッサになるために選択されることをもたらすことができる。そのような選択は、たとえばパーベイシブ・ロジック内のランダム・イベント・ジェネレータを使用して実行することができる。
パーベイシブ・ロジックは、選択されたブート・プロセッサに割り当てられるブート・コード区画を選択する(ステップ830)。次のブート・コード区画を、関連するブート・プロセッサによって実行する(ステップ840)。ブート・プロセッサは、ブート・コード区画の実行が成功であり、危険にさらされなかったかどうかを判定する(ステップ850)。そうでない場合には、ブート失敗をシステム・コントローラにシグナリングし(ステップ860)、動作が終了する。
ブート・コード区画が成功して実行され、危険にさらされない場合には、ブート・プロセッサは、すべてのブート・コード区画が成功して実行されたかどうかを判定する(ステップ870)。そうでない場合には、動作はステップ840に戻り、次のブート・コード区画を、それに関連するブート・プロセッサによって実行する。ブート・コード区画のすべてが成功して実行済みである場合には、ブート・プロセッサは、データ処理システムの成功のブートをシステム・コントローラにシグナリングし(ステップ880)、動作が終了する。
したがって、上で示したように、例示的実施形態は、単一のブート・プロセッサのランダムな選択およびマルチプロセッサ・データ処理システムの他のプロセッサ上でのマスキング動作の実行に加えて、複数のプロセッサにまたがってブート動作を分散させる機構を提供する。例示的実施形態は、ブート・プロセッサをランダムに選択する機構、選択されたブート・プロセッサ上で実行されるブート・コード区画をランダムに選択する機構、およびさまざまなブート・プロセッサによるブート・コード区画の実行のセキュリティを保証する機構を提供する。これらのさまざまな機構のすべてが手助けするのは、ブート動作の許可されない監視からのマルチプロセッサ・データ処理システムのセキュリティを高めることである。
例示的実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素との両方を含む実施形態の形をとることができる。好ましい実施形態では、本発明は、ソフトウェアで実施され、このソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定はされない。
さらに、例示的実施形態は、コンピュータまたは任意の命令実行システムによってまたはそれと共に使用されるプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形をとることができる。この説明において、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによってまたはそれと共に使用されるプログラムを含み、格納し、通信し、伝搬させ、または搬送することができるすべての装置とすることができる。
媒体は、電子システム、磁気システム、光システム、電磁システム、赤外線システム、または半導体システム(または装置もしくはデバイス)、あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例には、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、固体磁気ディスク、および光ディスクが含まれる。光ディスクの現在の例には、コンパクト・ディスク読み取り専用メモリ(CD−ROM)、書換可能コンパクト・ディスク(CD−R/W)、およびDVDが含まれる。
上で説明した回路は、集積回路チップの設計の一部とすることができる。チップ設計は、グラフィカル・コンピュータ・プログラミング言語で作成し、コンピュータ記憶媒体(ディスク、テープ、物理ハード・ドライブ、またはストレージ・アクセス・ネットワークなどの仮想ハード・ドライブなど)に格納することができる。設計者が、チップまたはチップの製造に使用されるフォトリソグラフィ・マスクを製造しない場合には、設計者は、結果の設計を物理的手段によって(たとえば、設計を格納した記憶媒体のコピーを提供することによって)または電子的に(たとえば、インターネットを介して)そのような実体に直接にまたは間接に送ることができる。格納された設計は、その後、フォトリソグラフィ・マスクの製造に適当なフォーマット(たとえば、GDSII)に変換され、このフォトリソグラフィ・マスクは、通常、ウエハ上に形成される当該のチップ設計の複数のコピーを含む。このフォトリソグラフィ・マスクを利用して、エッチングされるか他の形で処理される、ウエハの諸区域(またはその上の層あるいはその両方)を定義することができる。
結果の集積回路チップは、製造者によって、生のウエハの形(すなわち、複数の未パッケージ・チップを有する単一のウエハとして)、裸のダイとして、またはパッケージ化された形で配布することができる。後者の場合に、チップを、単一チップ・パッケージ(マザーボードまたは他のより上位のキャリアに固定されるリードを伴うプラスチック・キャリアなど)またはマルチチップ・パッケージ(表面相互接続または埋込み相互接続のいずれかまたは両方を有するセラミック・キャリアなど)の中に取り付けることができる。どの場合でも、チップを、他のチップ、ディスクリート回路要素、または(a)マザーボードなどの中間製品もしくは(b)最終製品のいずれかの一部としての他の信号処理デバイスあるいはこれらの組合せと一体化することができる。最終製品は、玩具または他のローエンド応用製品からディスプレイ、キーボードまたは他の入力デバイス、および中央プロセッサを有する高度なコンピュータ製品までの範囲にわたる、集積回路チップを含むすべての製品とすることができる。さらに、集積回路チップを設けることができる最終製品には、ゲーム機、ゲーム・コンソール、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、無線電話機および類似物などの通信デバイス、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、またはすべての他のコンピューティング・デバイスを含めることができる。
本発明の説明は、例示および説明のために提示されたものであり、網羅的であることまたは開示された形態での発明に限定することは意図されていない。多数の修正形態および変形形態が、当業者に明白であろう。実施形態は、本発明の原理および実用的応用例を最もよく説明し、企図される特定の使用に適するさまざまな変更を伴うさまざまな実施形態のために当業者が本発明を理解することを可能にするために選択され、説明されたものである。
例示的実施形態を実施できるマルチプロセッサ・システムを示す例示的なブロック図である。 1つの例示的実施形態によるランダム・ブート・プロセッサ選択機構の主要な動作構成要素を示す例示的な図である。 1つの例示的実施形態によるランダム選択機構を示す例示的な図である。 1つの例示的実施形態によるランダム・イベント・ジェネレータのLFSRカウンタへの入力に導入されるジッタのグラフ表現を示す図である。 秘密鍵および複数のランダムに生成された鍵値が並列信号線を使用してプロセッサに供給される例示的実施形態を示す例示的な図である。 例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。 例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。 例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。 例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。 マルチプロセッサ・システム内のプロセッサをブート・プロセッサとしてランダムに選択する例示的動作の概要を示す流れ図である。 1つの例示的実施形態によるブート・コード・シーケンスをマスクする例示的動作の概要を示す流れ図である。 1つの例示的実施形態によるデイジー・チェーン配置またはリング配置として構成された分散ブート動作を示す例示的な図である。 1つの例示的実施形態によるマスタ/スレーブ配置として構成された分散ブート動作を示す例示的な図である。 1つの例示的実施形態によるマルチプロセッサ・システムの分散ブートの例示的動作の概要を示す流れ図である。

Claims (15)

  1. 複数のプロセッサを有するデータ処理システムと共に使用される、前記データ処理システムをブートする方法であって、
    ブート・コードを複数のブート・コード区画に区分することと、
    前記データ処理システムの前記複数のプロセッサ内の複数のブート・プロセッサのそれぞれに、前記複数のブート・コード区画からのブート・コード区画をロードすることと、
    これによって前記データ処理システムをブートするために、前記複数のブート・コード区画をそのめいめいの関連するブート・プロセッサ上で複数のセッションとして実行することと、
    前記複数のプロセッサから前記ブート・プロセッサをランダムに選択することであって、前記ブート・プロセッサは、前記複数のプロセッサのサブセットであることを含み、
    各ブート・コード区画のそれに関連するセッションでの実行が完了する時に、前記複数のプロセッサのうちで前記ブート・コード区画を実行した関連するブート・プロセッサは、ブート・コード・シーケンス内の次のブート・コード区画に関連する別のブート・プロセッサに、前記ブート・コード区画の成功の完了をシグナリングするように動作可能である、
    方法。
  2. 前記複数のブート・コード区画をそのめいめいの関連するブート・プロセッサ上で実行することは、
    前記複数のブート・コード区画のそのめいめいの関連するブート・プロセッサ上での危険にさらされない実行を保証するために、ブート・プロセッサ間の通信にセキュリティ機構を利用すること
    を含む、請求項1に記載の方法。
  3. 前記セキュリティ機構は、ブート・プロセッサの間でセキュリティ・トークンを渡すこと、ブート・プロセッサの間でディジタル署名を渡すこと、パスワードを使用すること、ブート・コード区画のチェックサムを渡すこと、または信号の公開鍵/秘密鍵暗号化を使用することのうちの少なくとも1つを含む、請求項2に記載の方法。
  4. ブート・コード区画の個数は、ブート・プロセッサの個数と等しい、請求項1ないし請求項3のいずれかに記載の方法。
  5. 前記複数のプロセッサのうちでブート・プロセッサになるためにランダムに選択されたものではないプロセッサ上でマスキング・コードを実行すること
    をさらに含む、請求項1ないし請求項4のいずれかに記載の方法。
  6. どのブート・コード区画が各ブート・プロセッサに関連するかをランダムに選択すること
    をさらに含み、各ブート・コード区画は、他のブート・コード区画と異なる、請求項1ないし請求項5のいずれかに記載の方法。
  7. 前記ブート・プロセッサ上でブート・コード区画を実行するための前記セッションは、デイジー・チェーン配置、リング配置、またはマスタ/スレーブ配置のうちの1つで配置されるように動作可能である、請求項1ないし請求項6のいずれかに記載の方法。
  8. 複数のプロセッサを含むデータ処理システムと共に使用される、前記データ処理システムをブートする装置であって、
    ブート・コードを複数のブート・コード区画に区分する手段と、
    前記データ処理システムの前記複数のプロセッサ内の複数のブート・プロセッサのそれぞれに、前記複数のブート・コード区画からのブート・コード区画をロードする手段と、
    これによって前記データ処理システムをブートするために、前記複数のブート・コード区画をそのめいめいの関連するブート・プロセッサ上で複数のセッションとして実行する手段と、
    前記複数のプロセッサから前記ブート・プロセッサをランダムに選択する手段であって、前記ブート・プロセッサは、前記複数のプロセッサのサブセットである、手段と
    各ブート・コード区画のそれに関連するセッションでの実行が完了する時に、前記複数のプロセッサのうちで前記ブート・コード区画を実行した関連するブート・プロセッサによって、ブート・コード・シーケンス内の次のブート・コード区画に関連する別のブート・プロセッサに、前記ブート・コード区画の成功の完了をシグナリングする手段と
    を含む装置。
  9. 前記複数のブート・コード区画の危険にさらされない実行を保証するために、ブート・プロセッサ間の通信にセキュリティ機構を利用する手段をさらに含む、請求項8に記載の装置。
  10. 前記セキュリティ機構は、ブート・プロセッサの間でセキュリティ・トークンを渡すこと、ブート・プロセッサの間でディジタル署名を渡すこと、パスワードを使用すること、ブート・コード区画のチェックサムを渡すこと、または信号の公開鍵/秘密鍵暗号化を使用することのうちの少なくとも1つを含む、請求項9に記載の装置。
  11. ブート・コード区画の個数は、ブート・プロセッサの個数と等しい、請求項8ないし請求項10のいずれかに記載の装置。
  12. 前記複数のプロセッサのうちでブート・プロセッサになるためにランダムに選択されたものではないプロセッサ上でマスキング・コードを実行する手段をさらに含む、請求項8ないし請求項11のいずれかに記載の装置。
  13. どのブート・コード区画が各ブート・プロセッサに関連するかをランダムに選択する手段をさらに含み、各ブート・コード区画は、他のブート・コード区画と異なる、請求項8ないし請求項12のいずれかに記載の装置。
  14. 前記ブート・プロセッサ上でブート・コード区画を実行するための前記セッションは、デイジー・チェーン配置、リング配置、またはマスタ/スレーブ配置のうちの1つで配置されるように動作可能である、請求項8ないし請求項13のいずれかに記載の装置。
  15. コンピュータ・プログラムがコンピュータ上で実行される時に、請求項1ないし請求項7のいずれかに記載のステップを実行するように適合されたプログラム・コード手段を含むコンピュータ・プログラム。
JP2009513635A 2006-06-09 2007-05-11 複数のプロセッサにまたがるセキュア・ブートのシステム、方法およびプログラム Expired - Fee Related JP5031029B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/423,342 2006-06-09
US11/423,342 US20070288740A1 (en) 2006-06-09 2006-06-09 System and method for secure boot across a plurality of processors
PCT/EP2007/054575 WO2007141112A1 (en) 2006-06-09 2007-05-11 System and method for secure boot across a plurality of processors

Publications (2)

Publication Number Publication Date
JP2009540405A JP2009540405A (ja) 2009-11-19
JP5031029B2 true JP5031029B2 (ja) 2012-09-19

Family

ID=38373250

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009513635A Expired - Fee Related JP5031029B2 (ja) 2006-06-09 2007-05-11 複数のプロセッサにまたがるセキュア・ブートのシステム、方法およびプログラム

Country Status (6)

Country Link
US (2) US20070288740A1 (ja)
EP (1) EP2027551A1 (ja)
JP (1) JP5031029B2 (ja)
CN (1) CN101401103B (ja)
TW (1) TW200817970A (ja)
WO (1) WO2007141112A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3916953B2 (ja) * 2001-12-28 2007-05-23 日本テキサス・インスツルメンツ株式会社 可変時分割多重伝送システム
US20070288738A1 (en) * 2006-06-09 2007-12-13 Dale Jason N System and method for selecting a random processor to boot on a multiprocessor system
US7594104B2 (en) * 2006-06-09 2009-09-22 International Business Machines Corporation System and method for masking a hardware boot sequence
US20070288761A1 (en) * 2006-06-09 2007-12-13 Dale Jason N System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors
US7774616B2 (en) * 2006-06-09 2010-08-10 International Business Machines Corporation Masking a boot sequence by providing a dummy processor
US8132267B2 (en) 2008-09-30 2012-03-06 Intel Corporation Apparatus and method to harden computer system
US20100083365A1 (en) * 2008-09-30 2010-04-01 Naga Gurumoorthy Apparatus and method to harden computer system
CN102043648A (zh) * 2009-10-23 2011-05-04 中兴通讯股份有限公司 多核系统及其启动方法
US20110099423A1 (en) * 2009-10-27 2011-04-28 Chih-Ang Chen Unified Boot Code with Signature
EP2729870A4 (en) * 2011-07-08 2014-12-17 Openpeak Inc SYSTEM AND METHOD FOR VALIDATING COMPONENTS DURING A STARTING PROCESS
WO2013012436A1 (en) 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Reset vectors for boot instructions
US9055443B2 (en) 2011-10-27 2015-06-09 T-Mobile Usa, Inc. Mobile device-type locking
US9319884B2 (en) 2011-10-27 2016-04-19 T-Mobile Usa, Inc. Remote unlocking of telecommunication device functionality
US8839004B1 (en) * 2012-04-16 2014-09-16 Ionu Security, Inc. Secure cloud computing infrastructure
US9591484B2 (en) * 2012-04-20 2017-03-07 T-Mobile Usa, Inc. Secure environment for subscriber device
US10075848B2 (en) 2012-08-25 2018-09-11 T-Mobile Usa, Inc. SIM level mobile security
TWI495785B (zh) * 2013-05-29 2015-08-11 Univ Chaoyang Technology 握壓推動流體之發電裝置
US9268942B2 (en) 2013-06-12 2016-02-23 Arm Limited Providing a trustworthy indication of the current state of a multi-processor data processing apparatus
JP2015011357A (ja) * 2013-06-26 2015-01-19 富士通株式会社 情報処理システム及び情報処理システムの制御方法
CN104281460A (zh) * 2013-07-08 2015-01-14 英业达科技有限公司 伺服器及启动方法
CN104346150B (zh) * 2013-07-30 2017-10-17 华为技术有限公司 多实例业务的可执行文件的生成方法和装置
US9807607B2 (en) 2014-10-03 2017-10-31 T-Mobile Usa, Inc. Secure remote user device unlock
US10769315B2 (en) 2014-12-01 2020-09-08 T-Mobile Usa, Inc. Anti-theft recovery tool
US9916476B2 (en) * 2015-08-28 2018-03-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Maintaining cryptoprocessor types in a multinode environment
WO2018042766A1 (ja) * 2016-08-30 2018-03-08 株式会社ソシオネクスト 処理装置、半導体集積回路及び半導体集積回路の起動方法
US10476875B2 (en) 2017-04-21 2019-11-12 T-Mobile Usa, Inc. Secure updating of telecommunication terminal configuration
US10171649B2 (en) 2017-04-21 2019-01-01 T-Mobile Usa, Inc. Network-based device locking management
US10678927B2 (en) * 2017-08-31 2020-06-09 Texas Instruments Incorporated Randomized execution countermeasures against fault injection attacks during boot of an embedded device
US11593119B2 (en) 2018-04-27 2023-02-28 Tesla, Inc. Autonomous driving controller parallel processor boot order
DE102018133605B4 (de) * 2018-12-27 2023-03-02 Bachmann Gmbh Verfahren und Vorrichtung zur Prüfung der Integrität von Modulen einer Windkraftanlage
US10972901B2 (en) 2019-01-30 2021-04-06 T-Mobile Usa, Inc. Remote SIM unlock (RSU) implementation using blockchain
FR3094520B1 (fr) * 2019-03-25 2021-10-22 St Microelectronics Rousset Clé de chiffrement et/ou de déchiffrement
US11321244B2 (en) 2019-12-16 2022-05-03 Samsung Electronics Co., Ltd. Block interface emulation for key value device
CN111106935B (zh) * 2019-12-27 2023-05-16 天津芯海创科技有限公司 一种支持多端异构模式下的秘钥管理架构
US11868635B2 (en) * 2020-04-20 2024-01-09 Western Digital Technologies, Inc. Storage system with privacy-centric multi-partitions and method for use therewith
US11423153B2 (en) * 2020-08-18 2022-08-23 Raytheon Company Detection of malicious operating system booting and operating system loading
US11409846B2 (en) * 2021-01-14 2022-08-09 Safelishare, Inc. User controlled trusted and isolated computing environments
US11797679B2 (en) * 2021-07-28 2023-10-24 Dell Products, L.P. Trust verification system and method for a baseboard management controller (BMC)

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63121978A (ja) * 1986-11-11 1988-05-26 Fujitsu Ltd 大規模組合せ問題の最適化処理装置
JPH04216159A (ja) * 1990-12-17 1992-08-06 Hitachi Ltd 計算機の高速立ち上げ方式および計算機システム
US5555373A (en) 1995-02-06 1996-09-10 International Business Machines Corporation Inactivity monitor for trusted personal computer system
US5675772A (en) * 1995-03-23 1997-10-07 Industrial Technology Research Institute Device and method for reconfiguring a computer system with an incompatible CPU
JPH08272756A (ja) * 1995-03-31 1996-10-18 Toshiba Corp マルチプロセッサシステムの起動方法
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
JP2988518B2 (ja) * 1997-03-17 1999-12-13 日本電気株式会社 マルチプロセッサ制御方式
US6192475B1 (en) * 1997-03-31 2001-02-20 David R. Wallace System and method for cloaking software
US7587044B2 (en) * 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
JP3614650B2 (ja) * 1998-03-20 2005-01-26 富士通株式会社 マルチプロセッサ制御方式及びこれに用いられるブート装置及びブート制御装置
US6141756A (en) * 1998-04-27 2000-10-31 Motorola, Inc. Apparatus and method of reading a program into a processor
US6216216B1 (en) * 1998-10-07 2001-04-10 Compaq Computer Corporation Method and apparatus for providing processor partitioning on a multiprocessor machine
CA2252078C (en) * 1998-10-28 2009-02-17 Certicom Corp. Power signature attack resistant cryptographic system
FR2787900B1 (fr) * 1998-12-28 2001-02-09 Bull Cp8 Circuit integre intelligent
US7092523B2 (en) * 1999-01-11 2006-08-15 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors
US6282601B1 (en) 1999-03-31 2001-08-28 International Business Machines Corporation Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt
US6578131B1 (en) 1999-04-27 2003-06-10 Microsoft Corporation Scaleable hash table for shared-memory multiprocessor system
US6415348B1 (en) * 1999-08-23 2002-07-02 Advanced Micro Devices, Inc. Flexible microcontroller architecture
US6550019B1 (en) * 1999-11-04 2003-04-15 International Business Machines Corporation Method and apparatus for problem identification during initial program load in a multiprocessor system
US6473857B1 (en) * 1999-12-06 2002-10-29 Dell Products, L.P. Centralized boot
DE10000503A1 (de) * 2000-01-08 2001-07-12 Philips Corp Intellectual Pty Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb
US6532538B1 (en) * 2000-02-17 2003-03-11 International Business Machines Corporation Method and system for supporting multiple operating systems on the same disk running on different computers at the same time
CA2298990A1 (en) * 2000-02-18 2001-08-18 Cloakware Corporation Method and system for resistance to power analysis
US6754818B1 (en) * 2000-08-31 2004-06-22 Sun Microsystems, Inc. Method and system for bootstrapping from a different boot image when computer system is turned on or reset
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
US7036023B2 (en) * 2001-01-19 2006-04-25 Microsoft Corporation Systems and methods for detecting tampering of a computer system by calculating a boot signature
US6807553B2 (en) * 2001-04-23 2004-10-19 Safenet B.V. Digital true random number generator circuit
US7065654B1 (en) * 2001-05-10 2006-06-20 Advanced Micro Devices, Inc. Secure execution box
US7203747B2 (en) 2001-05-25 2007-04-10 Overture Services Inc. Load balancing system and method in a multiprocessor system
FI114416B (fi) * 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US7237121B2 (en) * 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
US6694435B2 (en) * 2001-07-25 2004-02-17 Apple Computer, Inc. Method of obfuscating computer instruction streams
US6641050B2 (en) 2001-11-06 2003-11-04 International Business Machines Corporation Secure credit card
US7082542B2 (en) 2001-12-21 2006-07-25 Intel Corporation Power management using processor throttling emulation
US7343484B2 (en) * 2002-03-28 2008-03-11 O2Micro International Limited Personal computer integrated with personal digital assistant
US7065641B2 (en) 2002-06-13 2006-06-20 Intel Corporation Weighted processor selection apparatus and method for use in multiprocessor systems
EP1572463B1 (en) * 2002-12-02 2011-04-06 Silverbrook Research Pty. Ltd Dead nozzle compensation
WO2004053684A2 (en) * 2002-12-12 2004-06-24 Arm Limited Processing activity masking in a data processing system
US7315874B2 (en) * 2003-03-14 2008-01-01 Nxp B.V. Electronic circuit for random number generation
US7337314B2 (en) * 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US7200772B2 (en) 2003-04-29 2007-04-03 Intel Corporation Methods and apparatus to reinitiate failed processors in multiple-processor systems
US7171568B2 (en) * 2003-06-13 2007-01-30 International Business Machines Corporation Remote power control in a multi-node, partitioned data processing system
US8838950B2 (en) * 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
JP4248950B2 (ja) * 2003-06-24 2009-04-02 株式会社ルネサステクノロジ 乱数発生装置
US7424620B2 (en) * 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US20050160474A1 (en) * 2004-01-15 2005-07-21 Fujitsu Limited Information processing device and program
US7426749B2 (en) * 2004-01-20 2008-09-16 International Business Machines Corporation Distributed computation in untrusted computing environments using distractive computational units
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7940932B2 (en) * 2004-04-08 2011-05-10 Texas Instruments Incorporated Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor
EP1596270A1 (en) 2004-05-10 2005-11-16 Dialog Semiconductor GmbH Micro-controller controlled power management chip
US7949883B2 (en) * 2004-06-08 2011-05-24 Hrl Laboratories, Llc Cryptographic CPU architecture with random instruction masking to thwart differential power analysis
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US7627781B2 (en) * 2004-10-25 2009-12-01 Hewlett-Packard Development Company, L.P. System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor
WO2006082985A2 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for providing a secure booting sequence in a processor
US7822995B2 (en) 2005-03-03 2010-10-26 Seagate Technology Llc Apparatus and method for protecting diagnostic ports of secure devices
US20070071233A1 (en) 2005-09-27 2007-03-29 Allot Communications Ltd. Hash function using arbitrary numbers
US7461275B2 (en) * 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7562211B2 (en) * 2005-10-27 2009-07-14 Microsoft Corporation Inspecting encrypted communications with end-to-end integrity
CN1764106A (zh) * 2005-11-16 2006-04-26 乔超 一种防止有通信条件/功能的软硬件被盗用的系统和方法
US8015565B2 (en) 2005-11-21 2011-09-06 International Business Machines Corporation Preventing livelocks in processor selection of load requests
US7610481B2 (en) * 2006-04-19 2009-10-27 Intel Corporation Method and apparatus to support independent systems in partitions of a processing system
US7774616B2 (en) 2006-06-09 2010-08-10 International Business Machines Corporation Masking a boot sequence by providing a dummy processor
US20070288739A1 (en) 2006-06-09 2007-12-13 Dale Jason N System and method for masking a boot sequence by running different code on each processor
US20070288761A1 (en) 2006-06-09 2007-12-13 Dale Jason N System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors
US20070288738A1 (en) 2006-06-09 2007-12-13 Dale Jason N System and method for selecting a random processor to boot on a multiprocessor system
US7594104B2 (en) * 2006-06-09 2009-09-22 International Business Machines Corporation System and method for masking a hardware boot sequence

Also Published As

Publication number Publication date
EP2027551A1 (en) 2009-02-25
US20070288740A1 (en) 2007-12-13
US20080229092A1 (en) 2008-09-18
JP2009540405A (ja) 2009-11-19
CN101401103A (zh) 2009-04-01
US8046574B2 (en) 2011-10-25
WO2007141112A1 (en) 2007-12-13
CN101401103B (zh) 2012-04-18
TW200817970A (en) 2008-04-16

Similar Documents

Publication Publication Date Title
JP5031029B2 (ja) 複数のプロセッサにまたがるセキュア・ブートのシステム、方法およびプログラム
US8037293B2 (en) Selecting a random processor to boot on a multiprocessor system
US7774617B2 (en) Masking a boot sequence by providing a dummy processor
US7779273B2 (en) Booting a multiprocessor device based on selection of encryption keys to be provided to processors
US7594104B2 (en) System and method for masking a hardware boot sequence
US20070288739A1 (en) System and method for masking a boot sequence by running different code on each processor
US9842212B2 (en) System and method for a renewable secure boot
US8438658B2 (en) Providing sealed storage in a data processing device
KR20100121497A (ko) 메인 프로세서 및 바인딩된 보안 코프로세서를 포함하는 컴퓨터 시스템
CN113065140B (zh) 一种芯片化控制保护装置内嵌安全防护系统及方法
Mohammad et al. Required policies and properties of the security engine of an SoC
EP4281891A1 (en) Read-only memory (rom) security
EP4281893A1 (en) Read-only memory (rom) security

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120319

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120626

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees