説明

マルチプロセッサ・システムのブートのためにランダム・プロセッサを選択するためのシステムおよび方法

【課題】マルチプロセッサ・システムをブートするためのランダム・プロセッサを選択するシステムおよび方法を提供する。
【解決手段】ランダム・イベント発生器242は、マルチプロセッサ・システムにおける複数のプロセッサ280〜290のうちどのプロセッサがブート・プロセッサになるかをランダムに選択する。ランダムに選択したプロセッサのために対応する構成ビットを構成ビット・レジスタ250にセットして、そのプロセッサをブート・プロセッサとして識別する。各プロセッサ280〜290ごとの構成ビットの設定に基づいて、秘密鍵の選択を行う。次いで、秘密鍵を用いて、マルチプロセッサ・システムをブートするためのブート・コードを復号する。ランダムに選択されたブート・プロセッサのみが、ブート・コードを正しく復号するための正しい秘密鍵を選択することができる。次いで、システムを動作状態にするためにブート・コードを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は、一般に、改良したデータ処理システムおよび方法に関する。更に具体的には、本出願は、マルチプロセッサ・システムのブートのためにランダム・プロセッサを選択するシステムおよび方法を対象とする。
【背景技術】
【0002】
我々の社会がますます電子的な情報伝達および記憶に頼るようになるにつれて、個人情報およびデジタル著作権管理(DRM:digital rights management)等、デジタル情報のセキュリティに関する関心が高まっている。更に、近年、コンピュータ・ハッカーおよび他の許可されていないコンピューティング・システムへの侵入者は、いっそう巧妙になっている。この結果、かかる機密デジタル情報を不正なアクセスから保護することができるように、コンピューティング・デバイスのためのセキュリティ・システムの開発に多大な努力が払われている。
【特許文献1】米国特許公開第20050021944号
【発明の開示】
【発明が解決しようとする課題】
【0003】
侵入者がコンピューティング・システムに対するアクセスを得る1つの方法は、電気的インタフェースを介して、コンピューティング・システムのブート・アクティビティおよび他の観察可能な電磁的または熱的アクティビティを観察することである。このようにブート・アクティビティを観察することによって、侵入者は、ブート・プロセッサによってどのデータ信号が入力され出力されているのか、プロセッサ上でどの暗号アルゴリズムが実行されているのか等を推定することができる。この情報から、侵入者は、ブート・シーケンス内で不正な侵入を実行可能なポイントを検出することができる。更に、システムをブートするためにセキュリティ・キーが必要であるセキュアなブート・シーケンスでは、侵入者は、ブート・プロセッサが用いた暗号アルゴリズムを逆転させて、セキュリティ・キーに対するアクセスを得て、これによってコンピューティング・システムに対する完全なアクセスを得る場合がある。コンピューティング・システムの全体的なセキュリティはブート・プロセスのセキュリティに依存することが多いので、侵入者がブート・シーケンスに対するアクセスを得ると、システム全体のセキュリティが危険にさらされる恐れがある。
【0004】
従って、プロセッサのブート・シーケンスの監視を難しくして、不正な侵入に対してシステムをいっそうセキュアなものとする方法があれば有用であろう。
【課題を解決するための手段】
【0005】
例示的な実施形態は、マルチプロセッサ・システムのブートのためにランダム・プロセッサを選択するシステムおよび方法を提供する。マルチプロセッサ・システムをブートするために用いるプロセッサをランダム化することによって、許可されていない人物がシステムのセキュリティを破る目的で電気的インタフェース、熱的アクティビティ、および他の電磁的アクティビティを監視してブート・シーケンスに関する情報を得ることがいっそう難しくなる。例えば、マルチプロセッサ・システムにおいて、侵入しようとする者は、ある1つのプロセッサがブート・プロセッサとしてランダムに選択されることを期待してこのプロセッサを監視しながら何度もブート・シーケンスを実行する必要があるか、または、全てのプロセッサをブート時に監視してそのうちどれが実際のブート・プロセッサであったかを判定する必要がある。これらの選択肢は双方とも、侵入しようとする者にとって相当の労力を必要とするので、実際にシステムを監視してブート・シーケンス情報を得ようとすることに対する抑止力として作用するか、または、少なくとも、侵入しようとする者がシステムを脅かすために要する時間を著しく引き伸ばすことができる。
【0006】
例示的な実施形態の機構では、システム・オン・チップ等のマルチプロセッサ・システム上に、一般的な(pervasive)ロジックが提供され、これがマルチプロセッサ・システムのブート動作を制御する。一般的なロジックはランダム・イベント発生器を含み、これは、マルチプロセッサ・システム内でどのプロセッサがブート・プロセッサとなってブート・コードを実行してシステムを動作状態にするかをランダムに選択する。ブート・プロセッサのランダムな選択に基づいて、このブート・プロセッサに関連した構成ビットをセットし、このプロセッサがブート・プロセッサであることを示す。この後、選択されたブート・プロセッサに、マルチプロセッサ・システムをセキュアな方法で動作状態にブートするために必要なセキュリティ・キー(複数のキー)を供給する。
【0007】
いくつかの例示的な実施形態においては、ランダムに選択したプロセッサがセキュアなブート動作を実行しながら、マルチプロセッサ・システムの他のプロセッサは実際のセキュアなブート動作をマスクするための動作を実行する。このマスキングは、ブート・コード・シーケンス以外の他のコード・シーケンスの実行を含む場合があり、これによって、プロセッサは電磁的あるいは熱的またはその両方の出力を発生し、侵入者によって監視された場合に、どのプロセッサが実際のセキュアなブート動作を実行しているのかを侵入者が区別することが難しくなる。
【0008】
異なるコード・シーケンスを発生可能な1つの方法は、ランダムな量を反復するループを実行するランダムな遅延要素をブート・コード内に挿入することである。このように、各プロセッサはブート・コードを実行することができるが、遅延量が異なるので、異なる電磁的および熱的シグニチャ(signature)を発生する。侵入者の観点からは、かかるマスキングのために、マルチプロセッサ・システムにおいて実際のブート・プロセッサを他のプロセッサから見分けることは極めて難しくなる。
【0009】
更に別の例示的な実施形態においては、他のプロセッサが実行するコード・シーケンスは、ランダムに選択したプロセッサが実行するブート・コード・シーケンスと同じであるが、ダミーのセキュリティ・キーを用いる。このため、これらの他のプロセッサは、セキュアなブート動作を実行しているかのように動作しており、侵入者にとってそのように見える。しかしながら、これらのプロセッサが監視されると、誤った電磁的および熱的な出力が識別されるので、侵入者にとっては、監視したプロセッサがセキュアなブート動作を実行しているランダムに選択したプロセッサであることの判定が難しくなる。
【0010】
更に別の例示的な実施形態では、ダミー・プロセッサを設けることによって、ランダムに選択したブート・プロセッサのマスキングを実行することができる。ダミー・プロセッサは、電磁的、熱的等の監視装置の観点から見ると、固有のもの(unique)に見える。このダミー・プロセッサ上でブート・コード・シーケンスとは異なるプロセスを実行することで、システムに対する攻撃をこのダミー・プロセッサに向かわせる。このようにして、侵入者がセキュリティ機構の裏をかくことでシステムにアクセスを試みた場合、侵入者は、マルチプロセッサ・システムの残りの部分に実際にはアクセスしないダミー・プロセッサにアクセスするだけである。
【0011】
他の例示的な実施形態では、ブート・コート・シーケンスは、マルチプロセッサ・システムにおける複数のプロセッサ間で分散させることができる。マルチプロセッサ・システムにおける複数のプロセッサ間でブート・コード・シーケンスを分散させることによって、ブート・シーケンスに関する完全な情報を得ることでセキュリティ対策をあざむくために危険にさらさなければならないプロセッサの数が増える。従って、例示的な実施形態の分散型ブート動作は、単一のセキュア・コアを用いるマルチプロセッサ・データ処理システムよりもいっそうセキュアである。更に、ブート動作を分散させることによって、ブート動作のいずれかの部分が危険にさらわれた場合にそのブート動作は失敗するので、許可されていない人物がシステムのセキュリティを脅かすことが防止される。
【0012】
例示的な実施形態では、ブート・コード・シーケンスを複数のパーティションに分割して、各パーティションをマルチプロセッサ・システムの異なるプロセッサに供給することができるようになっている。ブート・コード・シーケンスの各パーティションを実行する際は、そのパーティションが各プロセッサ上で正しく完了してからでないと別のプロセッサにブート・コード・シーケンスを進めることができない。ブート・コード・シーケンスの先行パーティションの良好な完了を伝達するために、セキュアな通信機構を用いる。このセキュアな通信機構は、暗号化パスワード、または、例えば公開/秘密暗号鍵対のような他のセキュリティ識別子等のセキュリティ・トークンを含んで、先行セッションが危険にさらされなかったことを示すことができる。このようにして、良好に完了しなければならない依存的「セッション」のチェーンが生成される。
【0013】
ブート・コードの分散型実行に関与するプロセッサは、マルチプロセッサ・システム内のプロセッサ全て、またはマルチプロセッサ・システム内のプロセッサの一部とすることができる。例えば、単一のブート・プロセッサを選択するために上述したもののようなランダム選択機構を用いて、分散型でシステムをブートする際に用いる複数のブート・プロセッサをランダムに選択することができる。更に、プロセッサが実行するブート・コードの特定のパーティションをランダムに選択して、各パワー・オン・リセット(POR)動作で、同一プロセッサが以前のPOR動作においてと同じブート・コード・パーティションを実行する場合もあるし、そうでない場合もあるようになっている。従って、分散型ブート動作にどのプロセッサが関与するかに関して、および、どのブート・コード・パーティションに対して各プロセッサが実行するのかに関して、ランダム化を実行することができる。
【0014】
マルチプロセッサ・システムの他のプロセッサ、すなわち非ブート・プロセッサは、分散型ブート動作中に何も作業を実行しない場合があり、または、前述した様々なマスキング・コードの例示的な実施形態のうち1つ以上のマスキング・コード・シーケンスを実行して、ランダムに選択したプロセッサの一部におけるブート・コードの実行をマスキングする場合がある。換言すると、この例示的な実施形態の分散型ブート・コード・シーケンス動作は、前述した例示的な実施形態の1つ以上と組み合わせることができる。
【0015】
1つの例示的な実施形態では、データ処理システムにおいて、このデータ処理システムをブートするための方法が提供される。この方法は、データ処理システムにおいて複数のプロセッサから1つのプロセッサをブート・プロセッサとするためにランダムに選択するステップと、ランダムに選択したブート・プロセッサにおいてブート・コード・シーケンスを実行し、これによってデータ処理システムを動作状態にブートするステップと、を含む。
【0016】
ブート・プロセッサとするためにプロセッサをランダムに選択するステップは、データ処理システムの一般的なロジックに設けられたランダム・イベント発生器を用いてランダム値を発生するステップと、ランダム値を復号して、データ処理システムにおいて複数のプロセッサからブート・プロセッサとするための1つのプロセッサを識別するステップと、を含むことができる。ランダム・イベント発生器を用いるステップは、ランダム・イベント発生器に対し、第1の周波数を有する第1の入力を発生するステップと、ランダム・イベント発生器に対し、第2の周波数を有する第2の入力を発生するステップと、を含むことができる。ランダム・イベント発生器において、第1の周波数と第2の周波数との間の差に基づいて、ランダム選択出力信号を発生することができる。ランダム・イベント発生器は、線形フィードバック・シフト・レジスタ(LFSR)カウンタを含むことができる。第1の入力はリング・オシレータからの出力信号とし、第2の入力は線形フィードバック・シフト・レジスタに入力されるクロック信号とすることができる。
【0017】
この方法は、複数のプロセッサからのプロセッサのランダムな選択に基づいて、データ処理システムの複数のプロセッサに関連した構成ビット・レジスタに構成ビットをセットするステップを更に含むことができる。構成ビットは、ブート・プロセッサに選択されないプロセッサのための第1の値と、ブート・プロセッサに選択されるプロセッサのための第2の値とを有することができる。
【0018】
この方法は、データ処理システムにおける複数のプロセッサの各プロセッサに秘密鍵を供給するステップと、データ処理システムにおける複数のプロセッサの各プロセッサに暗号化ブート・コードを供給するステップと、選択したプロセッサにおいてのみ秘密鍵を用いて暗号化ブート・コードを復号するステップと、を更に含むことができる。選択したプロセッサにおいてのみ秘密鍵を用いて暗号化ブート・コードを復号するステップは、複数のプロセッサにおける各プロセッサに関連した構成ビット・レジスタにおける構成ビット値が第2の値である場合に、プロセッサによって秘密鍵にアクセスするステップと、複数のプロセッサにおける各プロセッサに関連した構成ビット・レジスタにおける構成ビット値が第1の値である場合に、秘密鍵に対するプロセッサによるアクセスを防ぐステップと、を更に含むことができる。
【0019】
この方法は、ブート・コード・シーケンスの実行が完了した後に、データ処理システムをセキュアな状態からロックされていない状態へと移行させるステップを更に含むことができる。データ処理システムのメモリ・インタフェース・コントローラ、共有メモリ、およびバス・インタフェース・コントローラの一部が、セキュアな状態の間は停止して動作しないようになっており、ロックされていない状態の間は完全にイネーブルされているようにすることができる。
【0020】
この方法は、データ処理システムが許容可能パワー状態にあることがシステム・コントローラによって示されたことに応答して、データ処理システムの一般的なロジックが実行するブート動作の一部として実施することができる。この方法は、データ処理システムの各パワー・オン・リセット(POR)動作ごとに実施することができる。データ処理システムは、異種マルチプロセッサ・システム・オン・チップであり、第1の命令セットに従って動作する第1のプロセッサと、第1の命令セットとは異なる第2の命令セットに従って動作する1つ以上の第2のプロセッサと、を有することができる。第1の命令セットはRISC命令セットとし、第2の命令セットはSIMD命令セットとすることができる。
【0021】
更に別に例示的な実施形態では、複数のプロセッサと、この複数のプロセッサに結合されたロジックと、を含むデータ処理システムが提供される。ロジックは、データ処理システムにおいて複数のプロセッサから1つのプロセッサをブート・プロセッサとするためにランダムに選択することができる。ランダムに選択したブート・プロセッサは、ブート・コード・シーケンスを実行し、これによってデータ処理システムを動作状態にブートすることができる。ロジックは、ランダム値を発生するランダム・イベント発生器と、ランダム・イベント発生器に結合されたデコーダと、を更に含むことができ、このデコーダは、ランダム値を復号して、データ処理システムにおいて複数のプロセッサからブート・プロセッサとするための1つのプロセッサを識別する。
【0022】
ランダム・イベント発生器に、第1の周波数を有する第1の入力を供給し、ランダム・イベント発生器に、第1の周波数とは異なる第2の周波数を有する第2の入力を入力することができる。ランダム・イベント発生器は、第1の周波数と第2の周波数との間の差に基づいてランダム選択出力信号を発生することができる。
【0023】
ランダム・イベント発生器は、線形フィードバック・シフト・レジスタ(LFSR)カウンタを含むことができる。第1の入力はリング・オシレータからの出力信号とし、第2の入力は線形フィードバック・シフト・レジスタに入力されるクロック信号とすることができる。
【0024】
このシステムは、複数のプロセッサに結合された複数の構成ビット・レジスタを更に含むことができる。各構成ビット・レジスタは、複数のプロセッサにおけるプロセッサの1つに関連付けることができる。複数のプロセッサからのプロセッサのランダムな選択に基づいて、構成ビット・レジスタに構成ビットをセットすることができる。構成ビットは、ブート・プロセッサに選択されないプロセッサのための第1の値と、ブート・プロセッサに選択されるプロセッサのための第2の値とを有することができる。
【0025】
データ処理システムは、複数のプロセッサに結合された秘密鍵ストレージ・デバイスと暗号化ブート・コード・ストレージ・デバイスとを更に含むことができる。秘密鍵ストレージ・デバイスからデータ処理システムにおける複数のプロセッサの各プロセッサに、秘密鍵を供給することができる。暗号化ブート・コード・ストレージ・デバイスからデータ処理システムにおける複数のプロセッサの各プロセッサに、暗号化ブート・コードを供給することができる。ランダムに選択したプロセッサのみが暗号化ブート・コードを復号し、これによってブート・コードを実行することができる。
【0026】
データ処理システムは、異種マルチプロセッサ・システム・オン・チップであり、第1の命令セットに従って動作する第1のプロセッサと、第1の命令セットとは異なる第2の命令セットに従って動作する1つ以上の第2のプロセッサと、を有することができる。
【0027】
更に別の例示的な実施形態では、マルチプロセッサ・システム・オン・チップが提供される。このマルチプロセサ・システム・オン・チップは、複数のプロセッサ・コアと、この複数のコアに結合された一般的なロジックと、を含むことができる。マルチプロセッサ・システム・オン・チップの許容可能パワー状態を示すシステム・コントローラからの信号に応答して、一般的なロジックは複数のプロセッサ・コアから1つのプロセッサ・コアをブート・プロセッサとしてランダムに選択することができる。ランダムに選択したブート・プロセッサにおいてブート・コード・シーケンスを実行し、これによってマルチプロセッサ・システム・オン・チップを動作状態にブートすることができる。
【0028】
本発明のこれらおよび他の特徴および利点は、本発明の例示的な実施形態の以下の詳細な説明に記載しており、または、以下の詳細な説明を考慮することによって当業者には明らかとなろう。
【0029】
本発明の新規な特性と考えられる特徴は、特許請求の範囲に明記する。しかしながら、本発明自体は、好適な使用形態、その更に別の目的および利点と共に、例示的な実施形態の以下の詳細な説明を添付図面と関連付けて読み参照することによって、最も良く理解されよう。
【発明を実施するための最良の形態】
【0030】
例示的な実施形態は、マルチプロセッサ・システムのブートのためにランダム・プロセッサを選択する装置および方法を提供する。例示的な実施形態は、マルチプロセッサ・システムをブートするためにプロセッサの1つを選択することができるいずれかのマルチプロセッサ・システムと共に用いるために実施可能である。従って、例示的な実施形態の機構は、対称型マルチプロセッサ(SMP:symmetric multiprocessor)システム、異種マルチプロセッサ・システム(heterogeneous multiprocessor system)、非コヒーレント非対称型マルチプロセッサ・システム(non-coherent asymmetrical multiprocessor system)等に適用可能である。
【0031】
例示的な実施形態を実施可能な1つのマルチプロセッサ・システムは、International Business Machines, Inc.(ニューヨーク州アーモンク)から入手可能なセル広帯域エンジン(CBE:Cell Broadband Engine)である。CBEアーキテクチャに関連付けて例示的な実施形態を説明するが、例示的な実施形態の説明は単に典型的なものであり、例示的な実施形態の機構を実施可能なマルチプロセッサ・システムの種類または構成に関して何らかの限定を明示または暗示することを意図しないことは認められよう。本発明の精神および範囲から逸脱することなく、記載するCBEアーキテクチャには多くの変更を行うことができる。
【0032】
図1は、本発明の態様を実施可能なデータ処理システムの例示的なブロック図である。図1に示す例示的なデータ処理システムは、Cell Broadband Engine(CBE)データ処理システムの一例である。本発明の好適な実施形態の説明においてはCBEを用いるが、本発明はこれに限定されるわけではない。このことは、以下の説明を読めば当業者には容易に明らかとなろう。
【0033】
図1に示すように、CBE100は、パワー・プロセッサ・ユニット(PPU)116ならびにそのL1およびL2キャッシュ112および114を有するパワー・プロセッサ要素(PPE)110と、多数の相乗プロセッサ要素(SPE:synergistic processor element)120〜134とを含む。要素120〜134は、各々、それ自身の相乗プロセッサ・ユニット(SPU)140〜154、メモリ・フロー制御155〜162、ローカル・メモリまたはストア(LS)163〜170、およびバス・インタフェース・ユニット(BIUユニット)180〜194を有し、これらは、例えば、組み合わせ直接メモリ・アクセス(DMA)、メモリ管理ユニット(MMU)、およびバス・インタフェース・ユニットとすることができる。また、高帯域内部要素相互接続バス(EIB)196、バス・インタフェース・コントローラ(BIC)197、およびメモリ・インタフェース・コントローラ(MIC)198も設けられている。
【0034】
CBE100は、システム・オン・チップとして、図1に示す要素の各々を単一のマイクロプロセッサ・チップ上に設けることができる。更に、CBE100は、異種処理環境であり、SPUの各々がシステム内の他のSPUの各々から異なる命令を受信することができる。更に、SPUのための命令セットはPPUのものとは異なる。例えば、PPUは縮小命令セット・コンピュータ(RISC)に基づいた命令を実行することができ、一方で、SPUは単一入力多重データ(SIMD)命令を実行する。
【0035】
SPE120〜134は、互いに結合され、EIB196を介してL2キャッシュ114に結合されている。更に、SPE120〜134は、EIB196を介してMIC198およびBIC197に結合されている。MIC198は、共有メモリ199に対する通信インタフェースを提供する。BIC197は、CBE100と、例えばSouthBridge(商標)通信プロセッサ等の他の外部バスおよびデバイスとの間の通信インタフェースを提供する。
【0036】
PPE110は、デュアル・スレッデッド(dual threaded)PPE110である。このデュアル・スレッデッドPPE110および8個のSPE120〜134の組み合わせによって、CBE100は、10の同時スレッドおよび128を超える未処理のメモリ要求を処理することができる。PPE110は、計算作業量のほとんどを処理する他の8個のSPE120〜134のためのコントローラとして機能する。PPE110を用いて従来のオペレーティング・システムを動作させることができ、一方で、SPE120〜134は、例えばベクトル化浮動小数点コード実行を実行する。
【0037】
SPE120〜134は、相乗処理ユニット(SPU)140〜154、メモリ・フロー制御ユニット155〜162、ローカル・メモリまたはストア163〜170、およびバス・インタフェース・ユニット180〜194を含む。ローカル・メモリまたはストア163〜170は、1つの例示的な実施形態では、256KBの命令およびデータ・メモリを含む。これはPPE110に可視的であり、ソフトウェアによって直接アドレスすることができる。
【0038】
PPE110は、SPE120〜134に小さいプログラムまたはスレッドをロードし、SPEをチェーン状につないで複雑な動作内の各ステップを処理することができる。例えば、CBE100を組み込んだセット・トップ・ボックスは、DVDの読み出し、ビデオおよびオーディオ復号、ならびに表示のためのプログラムをロードすることができ、データはSPEからSPEへと渡されて、最終的に出力ディスプレイ上に到着する。4GHzでは、各SPE120〜134は理論上は32GFLOPSの性能を与え、PPE110は同様のレベルの性能を有する。
【0039】
メモリ・フロー制御ユニット(MFC)155〜162は、システムの残り部分および他の要素に対するSPUのインタフェースとして機能する。MFC155〜162は、データ転送、保護、およびメイン・ストレージとローカル・ストレージ163〜170間の同期のための主要な機構を提供する。論理的には、1つのプロセッサ内で各SPUごとにMFCがある。いくつかの実施では、多数のSPUで単一のMFCのリソースを共有することができる。かかる場合、MFCのために規定した機能およびコマンドは全て、各SPUごとにソフトウェアに対して独立しているように見えなければならない。MFCを共有することの効果は、実施に依存した機能およびコマンドに限定される。
【0040】
例示的な実施形態は、例えばCBE100のようなマルチプロセッサ・システムのブートのために、SPE120〜134のうち1つ等のランダム・プロセッサを選択する装置および方法を提供する。CBE100をブートするためにどのSPE120〜134を用いるかをランダム化することによって、許可されていない人物がCBE100のセキュリティを破る目的で電気的インタフェース、熱的アクティビティ、および他の電磁的アクティビティを監視してブート・シーケンスに関する情報を得ることがいっそう難しくなる。
【0041】
例示的な実施形態の機構では、CBE100のブート動作を制御する一般的なロジック193がCPE100に設けられている。一般的なロジック193はランダム・イベント発生器を含み、これが、どのSPE120〜134がブート・プロセッサとなってブート・コードを実行してシステムを動作状態にするかをランダムに選択する。ブートSPE120〜134のランダムな選択に基づいて、選択されたSPE、例えばSPE120に関連した構成ビットをセットして、このSPE120が実際のブート・プロセッサであることを示す。この後、選択されたSPE120に、CBE100をセキュアな方法で動作状態にブートするために必要なセキュリティ・キー(複数のキー)を供給する。選択されたSPEがセキュアなブート手順を正常に完了すると、MIC198、共有メモリ199、および後述の図2のフラッシュROM230に対する通信リンク以外のBIC197の一部が停止されて動作することができないセキュアな状態から、ロックされていない状態へと移行する。いったんセキュアなSPEがロックされていない状態に入ると、フラッシュROM230が提供する暗号化コードを実行することによって、MIC198、BIC197(「訓練」と呼ばれるプロセス)、および他の全てのプロセッサ(SPEおよびPPE)を完全にイネーブルするプロセスを開始する。CBEにおいて用いられるセキュアなブート・プロセスに関する更に詳しい情報については、米国特許公開第20050021944号を参照されたい。
【0042】
いくつかの例示的な実施形態においては、ランダムに選択されたSPE120がセキュアなブート動作を実行する一方で、他のSPE122〜134は、実際のセキュアなブート動作をマスキングするための動作を実行する。このマスキングには、ブート・コード・シーケンス以外の他のコード・シーケンスを実行することが含まれ、このためSPE122〜134は、電気的、電磁的、あるいは熱的またはそれら全ての出力を発生する場合がある。これが侵入者によって監視されると、侵入者はどのSPE120〜134が実際のセキュアなブート動作を実行しているのかを見分けることが難しくなる。
【0043】
異なるコード・シーケンスを発生することができる1つの方法は、ランダムな量を反復するループを実行するランダムな遅延要素をブート・コード内に挿入することである。これらのランダムな遅延要素を追加して、プロセッサをブートしながら、セキュアなブート・アルゴリズムがランダムに変化して異なる電磁および熱的シグニチャを生じ、これによって2つの異なるブート動作を経時的に比較することを難しくする。このようにして、各SPE120〜134はブート・コードを実行するが、遅延量が異なるので、異なる電磁的および熱的シグニチャを発生させることができる。更に、同一のSPE120〜134が、セキュアなブート・コードを実行するたびに、異なる電磁的および熱的シグニチャを発生する。侵入者の観点から見ると、かかるマスキングのために、実際のブートSPE120をCPE100内の他のSPE122〜134から見分けることが極めて難しくなる。
【0044】
更に別の例示的な実施形態では、他のSPE122〜134が実行するコード・シーケンスは、ランダムに選択されたSPE120が実行するのと同じブート・コード・シーケ
ンスであるが、ダミーのセキュリティ・キーを用いる。このため、これらの他のSPE122〜134は、侵入者にとって、セキュアなブート動作を実行しているかのように動作し見えている。しかしながら、SPE122〜134が監視されると、誤った電気的、電磁的、および熱的な出力が識別されるので、侵入者は、監視しているSPEが実際にセキュアなブート動作を実行しているランダムに選択されたSPE120であると判定することが難しくなる。
【0045】
更に別の例示的な実施形態では、ダミーのSPE(図示せず)を設けることによって、ランダムに選択されたブートSPE120のマスキングを実行することができる。ダミーのSPEは、電磁的、熱的等の監視装置の観点から見ると、固有のものに見える。このダミーSPE上でブート・コード・シーケンスとは異なるプロセスを実行することによって、CPE100に対する攻撃をこのダミーSPEに向かわせる。このように、侵入者がセキュリティ機構を避けてシステムにアクセスしようとする場合、侵入者は、CBE100の残りの部分には実際にアクセスしないダミーSPEにアクセスするだけである。更に、侵入者がダミーSPEを脅かしてコードを実行しようとすると、ダミーSPEはCPE100の残り部分を停止させて、それ以上の侵入の試みを防ぐことができる。
【0046】
これより、上述の例示的な実施形態の各々について、更に詳細に説明する。本明細書においては、例示的な各実施形態を別個に記載するが、例えばCBE100のようなマルチプロセッサ・システムのセキュリティの向上を達成するように、例示的な実施形態を様々な方法で組み合わせることも可能であることは認められよう。このため、特定の状況およびマルチプロセッサ環境に適切であると考えられる例示的な実施形態のいかなる組み合わせも、本発明の精神および範囲内にあることが意図される。
【0047】
図2は、1つの例示的な実施形態に従った、ランダム・ブート・プロセッサ選択機構の主要な動作構成要素を示す例示的な図である。例示的な実施形態の説明を簡潔にするため、図2はマルチプロセッサ・システムの1つのプロセッサのみを詳細に示していることは認められよう。しかしながら、マルチプロセッサ・システムのプロセッサは各々、図2に明示的に示すプロセッサのものと同様の要素構成を有し、同様に動作することは認められよう。本発明の精神および範囲から逸脱することなく、いかなる数のプロセッサもマルチプロセッサ・システムに含むことができる。しかしながら、例示的な実施形態を説明する目的のために、プロセッサの数は、図1に示したCBEアーキテクチャにおいてと同じ8であると想定する。
【0048】
図2に示すように、ランダム・ブート・プロセッサ選択機構の主要な動作構成要素は、システム・コントローラ210、セキュア・キー・ストレージ220、フラッシュROM230、および一般的なロジック240を含む。1つの例示的な実施形態においては、図1のCBEアーキテクチャを例として、要素210〜240は、CPEアーキテクチャが実施されるチップ上に設けた要素とすることができる。すなわち、これらの要素210〜240は、マルチプロセッサ・システム・オン・チップ(SoC)のロジック内に内蔵することができ、このため、これらの要素210〜240が行う動作はオン・チップで実行することができる。あるいは、要素の1つ以上をチップ外に設けることも可能である。例えば、フラッシュROM230をチップ外に設けることができる。
【0049】
システム・コントローラ210は、システムのパワーを受容可能かつ安定したレベルにするため、パワー・オン・リセット(POR)の初期動作を実行する役割を果たす。すなわち、システム・コントローラ210は、電圧を上げ、システム・クロックをオンにし、マルチプロセッサ・システムをブート動作が開始可能な状態とするために必要な他の初期動作を実行する役割を果たす。これは、一般に当技術分野では既知である。このPOR動作の一部として、プロセッサ280〜290は、セキュアな動作モードにおいて立ち上げられる。このセキュアな動作モードでは、プロセッサのローカル・ストアは、プロセッサの外部でアクセスすることができない。いったんこれらの初期動作が完了してシステムが許容可能パワー状態になると、システム・コントローラ210は「パワー良好」状態を一般的なロジック240に信号で知らせる。
【0050】
システム・コントローラ210からの「パワー良好」信号に応答して、一般的なロジック240は、マルチプロセッサ・システムを動作状態にブートするためのブート動作を始めて、ソフトウェア・プログラムが実行を開始することができるようにする。このブート動作の一部として、一般的なロジック240のランダム・イベント発生器242は、プロセッサの1つ、例えばプロセッサ280をランダムに選択して、マルチプロセッサ・システムのためのブート・プロセッサとする。ランダム・イベント発生器242は、マルチプロセッサ・システムの各プロセッサに送信される信号を発生する。この信号は、ブート・プロセッサとして選択されたプロセッサに対してのみ論理的にハイである。この信号は、ランダムに選択されたプロセッサ280の構成ビット・レジスタ250の値を、例えば「1」のような値に効果的にセットして、このプロセッサ280がブート・プロセッサであることを示す。他のプロセッサでは、それらの各構成ビット・レジスタ内の構成ビット値は初期値のままに維持され、これによって、これらのプロセッサがマルチプロセッサ・システムのためにランダムに選択されたブート・プロセッサではないことを示す。
【0051】
マルチプロセッサ・システムをブートするためのブート・コードは、フラッシュROM230に暗号化フォーマットでストアされている。暗号化ブート・コード232は、プロセッサ280〜290の各々に供給することができる。すなわち、ブート・シーケンスの一部として、プロセッサ280〜290の各々は、フラッシュROM230から暗号化ブート・コード232の読み出しを試みることができる。しかしながら、ブート・プロセッサとしてランダムに選択されたのはプロセッサのうち1つのみなので、この1つのみのプロセッサが暗号化ブート・コード232を復号し、これを適切に実行してマルチプロセッサ・システムを動作状態とすることができる。これは、プロセッサの各々に設けられた選択器260を用いて達成される。この選択器260は、暗号化ブート・コード232を復号するために用いられるキー値である秘密鍵、および暗号化ブート・コード232を復号することができないランダムに発生したキー値から選択する。
【0052】
構成ビット・レジスタ250にストアされた値を用いて、選択器260に供給する選択信号を発生する。例えば、選択器260はマルチプレクサとすることができ、セキュア・キー・ストレージ220からセキュア・キー(Skey)を1つの入力として受信し、ランダム値発生器262からランダムに発生したキー値を第2の入力として受信し、これらの2つの入力のうちどちらを選択すべきかを示す選択信号を構成ビット・レジスタ250から受信する。構成ビット・レジスタ250が、このプロセッサがランダムに選択したブート・プロセッサであることを示す値をストアしている場合、Skey入力が選択される。構成ビット・レジスタ250が、このプロセッサがランダムに選択されたブート・プロセッサではないことを示す値をストアしていると、ランダムに発生したキー値入力を選択器260によって選択することができる。次いで、選択したキー値はSPE270に出力される。
【0053】
SPE270は、選択されたキー値および暗号化ブート・コード232を受信する。次いで、SPE270は、暗号化ブート・コード232の復号を試みる。選択されたキー値がセキュア・キー・ストレージ220からのSkeyである場合、SPE270は適切に暗号化ブート・コード232を復号し、その中のブート・コード命令を実行してシステムを動作状態にすることができる。選択されたキー値がセキュア・キー・ストレージ220からのSkeyではない場合、復号は失敗し、SPE270はブート・コード命令を実行することができない。
【0054】
ブート・プロセッサをランダムに選択し、このランダムに選択したブート・プロセッサを用いてマルチプロセッサ・システムをブートするための上述のプロセスは、マルチプロセッサ・システムが実行する各パワー・オン・リセット(POR)動作ごとに実行することができる。このため、マルチプロセッサ・システムをブートするたびに、複数のプロセッサのうちの異なるものをブート・プロセッサとしてランダムに選択することができる。この結果、システムに侵入しようとする者は、どのプロセッサがブート・プロセッサであるかを事前に判断し、その特定のプロセッサに対してマルチプロセッサ・システムの電磁的および熱的状況の測定を指示することができない。
【0055】
それどころか、侵入しようとする者は、ある1つのプロセッサが最終的にランダム・プロセッサとしてブート・プロセッサに選択されることを期待してマルチプロセッサ・システムの多数のブート動作を通してこの1つのプロセッサを監視しなければならないか、または、全てのプロセッサを監視することによってどのプロセッサがブート・プロセッサであるかを識別して個別の電磁的および熱的状況の測定によって必要な情報を得ようとしなければならない。例えば、8プロセッサ・システムでは、8個のプロセッサ全てを監視しなければならないので、ブート・シーケンスを監視する困難さは8倍に増大する。更に、そのような監視を行うには更に多くのプローブおよびハードウェアが必要となり、これによって、かかる監視を試みる際の困難さが増す。
【0056】
図3は、1つの例示的な実施形態に従った、ランダム選択機構を示す典型的な図である。上述のように、例示的な実施形態の背後にある基本的なアイディアは、複数のプロセッサから1つのプロセッサをマルチプロセッサ・システムのためのブート・プロセッサにランダムに選択することである。このランダムな選択を行うために、ランダム・イベント発生器および選択器機構を設ける。例示的な実施形態において、ランダム・イベント発生器はマルチプロセッサ・システムの一般的なロジックに設け、選択器はプロセッサの各々に関連付けて設ける。図3は、1つの例示的な実施形態に従ったランダム・イベント発生器および選択器の1つの具体化の図である。
【0057】
図3に示すように、ランダム・イベント発生器310は、例えば図2のランダム・イベント発生器242に対応するものとすることができ、線形フィードバック・シフト・レジスタ(LFSR)カウンタ320、リング・オシレータ330、および選択信号レジスタ/デコーダ340を含む。リング・オシレータ330は、出力が2つの電圧レベル間で変動する奇数のNOTゲートから成るデバイスである。NOTゲートまたはインバータはチェーン状に配置され、最後のインバータの出力は最初のインバータにフィードバックされる。奇数のインバータのチェーンの最後の出力は、最初の入力の論理NOTである。この最後の出力は、最初の入力をアサートしてからある有限時間量の後にアサートされる。入力に対するこの最後の出力のフィードバックは不安定な変動を引き起こし、これは、電源上の電磁ノイズおよび温度等のランダムな要素によって時間と共に変化する。
【0058】
リング・オシレータ330の出力は、クロック信号clkと共に、LFSRカウンタ320に対する入力として供給される。LFSRカウンタ320はシフト・レジスタであり、その入力ビットは以前の状態の線形関数である。単一ビットの線形関数のみがXORおよび反転XORであり、従って、LFSRは、入力ビットが全シフト・レジスタ値のいくつかのビットの排他的OR(XOR)によって駆動されるシフト・レジスタである。
【0059】
LFSRカウンタ320の初期値はシード(seed)と呼ばれる。レジスタの動作が決定論的であるので、LFSRカウンタ320が生成する値のシーケンスは、その現在の(または以前の)状態によって完全に決定される。適切なフィードバック機能を有するLFSRカウンタ320は、ランダムに現れて極めて長いサイクルを有するビット・シーケンスを生成することができる。例示的な実施形態において、このランダム性は、LFSRカウンタ320に対する入力が、リング・オシレータ330の生成する変動と、互いに独立して変動するリング・オシレータ330の周波数および入力クロックclk間の相違との積であるという点で、より明らかとなる。
【0060】
LFSRカウンタ320は、入力としてリング・オシレータ330からの出力およびクロック信号clkを受信し、出力ビット・ストリームを発生し、これが選択信号レジスタ/デコーダ340にストアされる。リング・オシレータ330のインバータは、LFSRカウンタ320に対する出力信号に遅延を生じさせるので、リング・オシレータ330の周波数と入力クロックclkとの間には相違がある。この周波数の相違は、図4に示すように、LFSRカウンタ320に対する入力にジッタを発生する。このジッタは、LFSRカウンタ320が発生する出力をランダム化するランダム性の尺度を与える。
【0061】
LFSRカウンタ320の出力は、選択信号レジスタ/デコーダ340にストアされる。図示する例において、LFSRカウンタ320は3ビット・カウンタであり、値1〜8を符号化するように解釈される3ビット出力を発生する。選択信号レジスタ/デコーダ340のデコーダ機能により、ランダムな3ビット入力値に基づいて8個の一意の出力のうち1つを選択する。選択信号レジスタ340にストアされたビットの状態に基づいて、例えば図1のSPE0〜SPE7 120〜134のような様々なプロセッサの構成ビット・レジスタにハイまたはローの状態の信号が出力され、これによって構成ビット・レジスタにストアされる値がセットされ、こうして、マルチプロセッサ・システムのためのブート・プロセッサとしてプロセッサの1つが選択される。
【0062】
いったん構成ビット・レジスタ値がセットされると、これらの値を用いて、対応する選択器350〜370に選択信号を供給する。図3に示すように、選択信号はマルチプレクサ352、362、372に供給され、これと共にSkey入力およびランダムなキー値入力も供給される。選択信号の状態に基づいて、Skey入力またはランダムなキー値入力が、マルチプレクサ352、362、372の各々によって選択される。ランダム・キー値入力は、ブート・プロセッサを選択するための上述したランダム・イベント発生器構成と同じまたは異なるタイプの1つ以上のランダム値発生器によって発生することができる。すなわち、上述したものと同様のランダム・イベント発生器構成を用いて、Skeyと同じ長さを有するキー値をランダムに発生させることができる。次いで、これらのランダムなキー値は、マルチプレクサ352、362、372に入力される。
【0063】
このシステムは、例えば上述したデコーダ機能によって、マルチプレクサ352、362、372に入力される選択信号の1つのみがSkey入力を選択し、他は全てランダム・キー値入力を選択するように設計されている。マルチプレクサ352、362、372からの出力は、対応するSPEに供給されるので、SPEはこれらの出力を利用することができ、ランダムに選択したブート・プロセッサの場合にはブート・コードを復号してブート・コードを実行し、または、マルチプロセッサ・システムにおける他の全てのプロセッサの場合には、ブート・コードを復号しようとするがマルチプロセッサ・システムをブートすることができないようになっている。
【0064】
ランダム・イベント発生器および選択器を提供するための上述した機構は単に代表的なものを示すだけであり、例示的な実施形態において使用可能なランダム・イベント発生器および選択器の種類に関して何らかの限定を明示または暗示することを意図しないことは認められよう。例えば、図3に示すようなリング・オシレータおよびLFSRカウンタ構成を用いるのではなく、他のランダム・イベント発生器を利用することも可能である。例えば、熱センサを用いて熱ノイズを測定し、これを用いてランダム・イベントを発生させて、プロセッサのうち1つをブート・プロセッサとして選択することができる。同様に、量子ドット(q−dot)、または半導体ナノ結晶を用いて、量子ソース効果(quantum source effects)を測定し、これをブート・プロセッサとしてプロセッサを選択するためのランダム性のソースとして用いることも可能である。例示的な実施形態と共に、いずれかの強力なランダム性のソースを用いて、マルチプロセッサ・システムのブート・プロセッサとして用いるプロセッサをランダムに選択することができる。
【0065】
更に、図3が示すリング・オシレータ330は5個のインバータを有するが、例示的な実施形態はこれに限定されないことは認められよう。奇数のインバータがある限り、本発明の精神および範囲から逸脱することなく、いずれの数のインバータも使用可能である。実際、LFSRカウンタ320に対する入力にジッタを追加するため、リング・オシレータ330のインバータ・チェーンに更にインバータを加えて、入力クロック信号clkの周波数とリング・オシレータ330からの入力との間にいっそう大きな相違を与えることが望ましい場合がある。相違の量は、例示的な実施形態を実現する特定のマルチプロセッサ・システムの所望の動作特性に基づいて選択すれば良い。
【0066】
更に、図2および図3は、ランダム・キー値が各プロセッサごとに別個のランダム・キー値発生器によって発生されていることを示すが、例示的な実施形態はこれに限定されない。これとは異なり、プロセッサ全てのために単一のランダム・キー値発生器を設けて、このランダム・キー値発生器が1つ以上のランダム・キー値を発生し、これをプロセッサに入力することも可能である。このため、例えば、ランダム・キー値発生器は、プロセッサ全てに供給される単一のランダム・キー値、各プロセッサごとの別個のランダム・キー値(この場合、例えば7個の異なるランダム・キー値を発生することができる)、または、マルチプロセッサ・システムの様々なプロセッサに選択的に供給可能ないずれかの数のランダム・キー値を発生することができる。
【0067】
1つの例示的な実施形態では、図5に示すように、複数のランダム・キー値発生器390を設けて、各々が異なるランダム・キー値を出力することができる。あるいは、上述したように、これらの別個のランダム・キー値発生器の代わりに、単一のランダム・キー値発生器を用いることも可能である。これらのランダム・キー値は、マルチプロセッサ・システムにおいて、例えばSPE393および394のようなプロセッサの、例えばマルチプレクサ391および392のような選択器に対する入力として供給することができる。これと共に、例えばeFuseのようなSkeyストレージ395からセキュア・キー(Skey)が供給され、これは、マルチプロセッサ・システムをブートするためにブート・コードを復号する際に実際に用いられる。図示のように、ランダムに発生したキー値およびSkey値は、8本の同一の信号ライン上で多重化され、マルチプレクサ391および392の各々に供給されて、侵入者がセキュアなキー・ストレージ395からの信号ラインとしてラインの1つを分離することを更に難しくすることができる。
【0068】
8個の全てのキー値入力はマルチプレクサ391および392に供給され、これらの8個の入力の1つを選択するために、一般的なロジック397内のランダム・イベント発生器396からの選択信号を用いることができる。この場合、Skey入力および1つのランダム・キー値から単純に選択するのではなく、マルチプレクサ391および392は、Skey入力および7個のランダム・キー値から選択することができる。このため、第1のプロセッサは、この第1のプロセッサをブート・プロセッサとしてランダムに選択したことに基づいてSkey入力を選択することができ、第2のプロセッサは第3のランダム・キー値を選択することができ、第3のプロセッサは第4のランダム・キー値を選択することができ、第5のプロセッサは第1のランダム・キー値を選択することができる等となる。このため、各プロセッサが、Skeyまたはランダムに発生したキー値のいずれかである異なるキー値を受信することができる。この結果、侵入者は、マルチプロセッサ・システムのバス・トラヒックを監視している場合、どのキー値が正しいキー値であるかを見分けることが難しくなる。
【0069】
更に、図3および図5に示した機構は、この設計が単一チップ上にある場合、マルチプロセッサ・システムを設けるセラミック・パッケージの下位金属層または相互接続の最下位層に設けると好ましいことは認められよう。マルチプロセッサ・システムの電気的および熱的特性を探索する能力は現在、マルチプロセッサ・セラミック・パッケージの上位層に限られているので、これらの要素を下位金属層に置くことによって、これらの要素の動作を探索することはいっそう難しくなる。このため、侵入しようとする者が、ランダム・イベント発生器および選択器の熱的および電気的特性を監視して、これらの要素が供給するキー値を判定することは、不可能でないとしても極めて難しい。
【0070】
上述の機構を用いて、マルチプロセッサ・システムの複数のプロセッサ内の1つのプロセッサをランダムに選択してマルチプロセッサ・システムをブートすることができる。このように、プロセッサの電気的および熱的特性を監視して、例えば秘密鍵のようなマルチプロセッサ・システムをブートするために用いる機密情報を取得することは、いっそう難しくなり、許可されずにマルチプロセッサ・システムにアクセスしようとする者にとって抑止力となる可能性がある。
【0071】
マルチプロセッサ・システムのブートのためにプロセッサをランダムに選択する上述の機構は、ブート・シーケンスの監視に対して充分な程度の保護を与えるが、許可されていない人物が執拗であれば、かかる人物がシステムを「ハックする」ことはなお可能であり得る。かかる監視を実質的に不可能とするために、例示的な実施形態は、ランダムに選択したプロセッサ上でブート・シーケンスをマスキングするための追加の機構を提供して、許可されていない人物が、マルチプロセッサ・システムをブートするための実際のブート・シーケンスをどのプロセッサが現在実行しているのかを見分けることができないようにする。
【0072】
1つの例示的な実施形態では、マスキング動作には、ブート・プロセッサに選択されなかったプロセッサの各々が異なる命令セットを実行することが含まれ、これによって電気的および熱的シグニチャのマスキングを行い、ブート・プロセッサをシステム内の他のプロセッサから見分けることを難しくする。異なるプロセッサが実行するコード・シーケンスは、同一のデフォルト・コード・シーケンスとすることができ、プロセッサに関連付けたメモリ内に供給するか、または、プロセッサがブート・コード・シーケンスを復号することができない場合、他の方法でプロセッサによってアクセス可能である。例えば、デフォルト・コード・シーケンスは、プロセッサの各々に関連付けたローカル・ストアのセキュアな部分に設けることができる。あるいは、デフォルト・コード・シーケンスは、オン・チップまたはチップ外に設けたフラッシュROMまたは他のストレージ・デバイスに設けることができる。
【0073】
プロセッサがフラッシュROMから受信した実際の暗号化ブート・コードを復号することができない場合、プロセッサは、ローカル・ストレージのこのセキュアな部分にデフォルトで戻り、これによってプロセッサは別のプロセッサ上で実行されているブート・コード・シーケンスをマスキングするための命令を実行することができる。この命令シーケンスは、使用可能な情報を何ら発生せず、単にマスキング機能のみを提供することができる。あるいは、この命令シーケンスを用いて、例えば、ブート動作または他の有用な動作中にシステムを監視するための動作を実行することができる。
【0074】
1つの例示的な実施形態において、選択されなかったプロセッサ、例えば非ブート・プロセッサの各々において実行されるコードは、同一である。選択されなかったプロセッサの各々が実行するコードが同一である例示的な実施形態において、これらの選択されなかったプロセッサの各々で実行されるコードが発生する電気的および熱的プロファイルは、実際のブート・コードに似ているが、マルチプロセッサ・システムのセキュリティを破るために侵入者が必要とする機密情報を何ら供給しないことが好ましい。かかるコードは、実際のブート・コードのものと類似の動作を実行することができるが、マルチプロセッサ・システムの機密に関わる部分にアクセスしない。実際、1つの例示的な実施形態において、マルチプロセッサ・システムをブートするために用いる同一のブート・コードを、選択されなかったプロセッサによって使用可能であるが、秘密鍵(Skey)および他の特定の人にだけ許可される情報にはアクセスすることができない。
【0075】
この結果、これらの選択されなかったプロセッサの熱的プロファイルおよびバス・トラヒックは、実際のブート・シーケンスに近いものである。このため、監視プローブを用いて熱的プロファイル、バス・トラヒック等を監視する侵入者の観点から見ると、この侵入者は、実際のブート動作を実行しているのがどのコアかを解読することはできない。なぜなら、監視プローブを介してコアは全て同一に見えるからである。このような曖昧さによって、改ざんは阻止され、実際のブート・コード・シーケンス、秘密鍵情報等を分離することがいっそう難しくなる。
【0076】
他の例示的な実施形態では、選択されなかったプロセッサは各々、異なる命令セットを実行することができる。選択されなかったプロセッサの各々において異なる命令セットを実行することによって、電気的または熱的プローブを用いて監視した場合、プロセッサはどれも固有のものに見えない。この結果、どのプロセッサがブート・プロセッサであるかを識別するために熱的プロファイルまたはバス・トラヒック等の際立った特徴をプローブによって識別することができない。
【0077】
これらの異なる命令セットは、マルチプロセッサ・システムにおいて各プロセッサごとにランダムに選択することができる。このため、例えば、フラッシュROM等のオン・チップ・ストレージ・デバイスにストアされたコード・シーケンスのための異なる開始アドレスをランダムに選択し、マルチプロセッサ・システムのプロセッサに供給することができる。次いで、プロセッサは、ランダムに選択された開始アドレスにおいて命令の実行を開始し、これによって、実際のブート・コード・シーケンスをマスキングする異なる熱的プロファイルおよびバス・トラヒックを発生することができる。
【0078】
異なるプロセッサのための異なるコード・シーケンスを提供する1つの方法は、ランダムな遅延要素が挿入されたブート・コードを供給することである。これらの遅延要素は、例えばランダムな回数だけ反復するループとすることができる。かかる遅延要素は、ランダムに選択したブート・プロセッサが実行する実際のブート・コード・シーケンスおよび選択されなかったプロセッサが実行するブート・コード・シーケンスの双方において供給することができる。このランダムな遅延によって、プロセッサの熱的およびバス・トラヒック特徴を監視している侵入者の観点からは、ブート・コードが各プロセッサ上で異なっているように「見える」。この結果、侵入者は、マルチプロセッサ・システムをブートする実際のブート・コードをどのプロセッサが実行しているかを見分けることができない。
【0079】
更に別の例示的な実施形態においては、侵入者によって監視された場合に固有のものであるかのように見えるダミーのプロセッサを設ける。この例示的な実施形態は前述の実施形態の組み合わせであり、1つのプロセッサをブート・プロセッサとしてランダムに選択し、選択されなかったプロセッサのうち1つのプロセッサをダミーのプロセッサに選択してブート・コード・シーケンスから固有の熱的およびバス・トラヒック・プロファイルを提供するコードを実行し、他のプロセッサは実際のブート・コード・シーケンスの熱的プロファイルおよびバス・トラヒックをできる限り忠実に複製する。このため、侵入者は、ダミーのプロセッサを他のプロセッサとは異なる固有のものであると検出し、このプロセッサが実際のブート・コード・シーケンスを実行していると結論付ける。従って、侵入者は、熱的プロファイルおよびバス・トラヒックの観点から他のプロセッサと同様に見える実際のブート・プロセッサではなく、このダミー・プロセッサに攻撃を向ける。更に、侵入者がコードを実行するか、または他の方法でダミー・プロセッサにアクティブに干渉しようとすると、ダミー・プロセッサはシステムの停止を信号で知らせることができる。
【0080】
図6から図9は、例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。図6は第1のマスキング動作を示し、選択されなかったプロセッサの各々において、監視プローブの観点からブート・コード・シーケンスと同じに見えるコードを実行する。図6に示すように、SPE0 410は、前述した機構を用いる等の方法で、マルチプロセッサ・システム400のブート・プロセッサとしてランダムに選択される。従って、SPE0 410は、秘密鍵を受信し、フラッシュROMからのブート・コード・シーケンスを復号し、マルチプロセッサ・システム400を動作状態にするために必要な実際のブート・コード動作を実行する。他のSPEすなわちSPE1〜SPE7 412〜424は、監視プローブの観点からブート・コード・シーケンスのように見えるコードを実行する。
【0081】
上述のように、他のSPE412〜424が実行するコード・シーケンスは、ローカル・ストレージのセキュアな部分に供給されるデフォルトのコード・シーケンスとすることができる、これによって、SPE412〜424は、SPE0410上で実行されているブート・コード・シーケンスをマスキングするための命令を実行する。これらの選択されないSPE412〜424の各々で実行されるコードは、好ましくは、実際のブート・コードに似ているが侵入者がマルチプロセッサ・システムのセキュリティを脅かすために必要とする機密情報を何ら提供しない電気的および熱的プロファイルを発生するコードである。かかるコードは、実際のブート・コードのものと類似の動作を実行可能であるが、マルチプロセッサ・システム400の機密に関わる部分にはアクセスすることができない。
【0082】
図7は、選択されなかったプロセッサの各々においてランダムに選択した異なるアルゴリズムを実行する別の例示的な実施形態を示す。図7に示すように、SPE0は、この場合もブート・プロセッサに選択されるので、マルチプロセッサ・システム400を動作状態にブートするためのブート・コードを実行する。他のSPE412〜424の各々は、別個のランダムに選択したアルゴリズムを実行し、これによって異なる熱的プロファイルおよび異なるバス・トラヒックをEIBに発生する。このため、各SPE0〜7は、他のSPE410〜424の各々と比較すると固有のものに見える。従って、どのSPE0〜7 410〜424がマルチプロセッサ・システム400をブートするための実際のブート・プロセッサであるかを見分けることはできない。
【0083】
上述したように、これらの異なるアルゴリズムは、マルチプロセッサ・システムにおいて各SPE412〜424ごとにランダムに選択することができる。このため、例えば、フラッシュROMのようなオン・チップ・ストレージ・デバイスにストアされたコード・シーケンスのために異なる開始アドレスをランダムに選択し、SPE412〜424に供給することができる。次いで、SPE412〜424は、ランダムに選択した開始アドレスにおいて命令の実行を開始し、これによって、実際のブート・コード・シーケンスをマスキングする異なる熱的プロファイルおよびバス・トラヒックを発生することができる。
【0084】
あるいは、ランダムな遅延要素をブート・コードに挿入して、このブート・コードをSPE410〜424の各々に提供することができる。これらの遅延要素は、例えばランダムな回数だけ繰り返すループとすることができる。このランダムな遅延のために、プロセッサの熱的およびバス・トラヒックの特徴を監視している侵入者の観点からは、SPE410〜424の各々においてブート・コードが異なるように「見える」。この結果、侵入者は、マルチプロセッサ・システムをブートする実際のブート・コードをどのプロセッサが実行しているかを見分けることができない。
【0085】
図8は、別の例示的な実施形態を示し、侵入者からの攻撃の対象とすることができるダミー・プロセッサが設けられている。図8に示すように、SPE0はランダムに選択したブート・プロセッサであり、ブート・シーケンスを実行する。SPE1〜SPE4 412〜418およびSPE6〜SPE7 422〜424は、図6に関して上述した実施形態においてと同様に、熱的およびバス・トラヒック監視の観点からはブート・コード・シーケンスのように見えるコードを実行する。一方、SPE5 420はランダムに選択したアルゴリズムを実行する。これは、図7に関して上述したのと同様の方法でランダムに選択することができる。
【0086】
このため、プロセッサ410〜424の特徴を監視する侵入者の観点からは、SPE0〜SPE4 410〜418およびSPE6〜SPE7 422〜424は全て同一のコードを実行しているように見える。しかしながら、SPE5 420は、他のSPEとは異なった固有のものに見える。従って、マルチプロセッサ・システムのブート・シーケンスを攻撃しようとする侵入者は、実際のブート・プロセッサSPE0 410ではなくSPE5 420に攻撃を向ける可能性がある。なぜなら、侵入者にとっては、SPE5 420が実際のブート・プロセッサであるように見えるからである。
【0087】
実際のブート・プロセッサが各パワーオン・リセット(POR)動作によってランダムに選択されるのと同じように、ダミー・プロセッサも、選択されなかったプロセッサの中からランダムに選択することができる。このため、各POR動作ごとに異なるブート・プロセッサおよびダミー・プロセッサを選択することができ、侵入者は、マルチプロセッサ・システムにアクセスするために攻撃する実際のブート・シーケンスを実行しているのがどのプロセッサであるかを推定することがいっそう難しくなる。
【0088】
完全性のため、図9は、システムをブートするために用いるブート・コードがプロセッサの各々によって実行される前述した例示的な実施形態を示す。この例示的な実施形態では、ランダムに選択したブート・プロセッサのみが秘密鍵(Skey)に対するアクセスを与えられ、他のプロセッサはランダムに選択したキー(Rkey1〜Rkey7)を受信する。プロセッサの各々は、例えばSkeyまたはRkeyのような与えられたキーを用いてブート・コードを復号し実行しようとする。ランダムに選択されたブート・プロセッサのみが、ブート・コードを正しく復号してそれを実行し、データ処理システムを動作状態にすることができる。しかしながら、外部の監視者にとっては、全てのプロセッサがシステムをブートしているように見え、これによって実際のブート・プロセッサがマスキングされる。なぜなら、それらは各々システムを復号しブートしようとして同様のタスクを実行しているからである。すなわち、プロセッサは各々、同様の熱的あるいは電気的またはその双方のシグニチャを発生して、侵入者が測定プローブ等を用いてどのプロセッサが実際のブート・プロセッサであるかを見分けることを難しくする。
【0089】
例示的な実施形態において行うように、ブート・プロセッサのランダムな選択およびブート・シーケンスのマスキングを用いることで、マルチプロセッサ・システムに侵入しようとする者にとっては、どのプロセッサがブート・コード・シーケンスを実行しているかを見分けることが極めて難しくなる。このため、侵入しようとする者がプロセッサの熱的プロファイルおよびバス・トラヒックを監視し、暗号化ブート・コードにアクセスする際に用いるための秘密鍵情報を識別することは極めて難しくなる。更に、侵入しようとする者が、システム内への侵入が可能であるブート・コード・シーケンス内の場所を識別することは極めて難しくなる。従って、マルチプロセッサ・システムは、ブート・シーケンスに対する不正のアクセスに対していっそうセキュアとなる。
【0090】
図10〜図11は、マルチプロセッサ・システムにおいて1つのプロセッサをブート・プロセッサとしてランダムに選択し、ブート・コード・シーケンスをマスキングするための例示的な動作の概要を示すフローチャートである。フローチャート図の各ブロックおよびフローチャート図のブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、プロセッサまたは他のプログラマブル・データ処理装置に供給されて機械を生成することができ、プロセッサまたは他のプログラマブル・データ処理装置上で実行する命令が、フローチャート・ブロックまたは複数のブロックにおいて明記される機能を実施するための手段を生成するようになっている。また、これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能メモリまたはストレージ媒体にストアすることも可能であり、これは、プロセッサまたは他のプログラマブル・データ処理装置に特定の方法で機能するように指示することができ、コンピュータ読み取り可能メモリまたはストレージ媒体にストアされた命令が、フローチャートのブロックまたは複数のブロックに明記された機能を実施する命令手段を含む製造品を生成するようになっている。
【0091】
従って、フローチャート図のブロックは、特定の機能を実行するための手段の組み合わせ、特定の機能を実行するためのステップおよび特定の機能を実行するためのプログラム命令手段の組み合わせをサポートする。また、フローチャート図の各ブロックおよびフローチャート図のブロックの組み合わせは、特定の機能またはステップを実行する特殊目的のハードウェア・ベースのコンピュータ・システムによって、または、特殊目的のハードウェアおよびコンピュータ命令の組み合わせによって実行可能であることは理解されよう。
【0092】
図10は、マルチプロセッサ・システムをブートするためにブート・プロセッサをランダムに選択するための例示的な動作の概要を示す。図10に示すように、この動作は、システム・コントローラがパワーオン・リセット(POR)動作を実行することから開始する(ステップ510)。最初のPOR動作を実行した後、システム・コントローラはマルチプロセッサ・システムの一般的なロジックに「パワー良好」信号を供給し(ステップ520)、一般的なロジックはランダム・ブート動作を開始する(ステップ530)。
【0093】
一般的なロジックは、複数のプロセッサから1つのプロセッサをブート・プロセッサとしてランダムに選択する(ステップ540)。次いで、一般的なロジックは、このランダムな選択に基づいてプロセッサの構成ビットをセットし(ステップ550)、プロセッサにブート動作の開始を信号で知らせる(ステップ560)。フラッシュROMがプロセッサに暗号化ブート・コードを供給し、秘密鍵ストレージおよびランダム・キー発生器からキー値がプロセッサに供給される(ステップ570)。プロセッサは次いで、それらの構成ビットの設定に基づいて、プロセッサが用いるキーを選択する(ステップ580)。プロセッサは、選択したキーに基づいてブート・コードを復号しようとする(ステップ590)。選択されたプロセッサは、秘密鍵を用いてブート・コードを復号し、システムをブートする(ステップ595)。他の全ての選択されなかったプロセッサによるブート・コードの復号の試みは失敗し、選択されたプロセッサのみがシステムをブートすることができることに留意すべきである。次いで動作は終了する。
【0094】
図11は、1つの例示的な実施形態に従った、ブート・コード・シーケンスをマスキングするための例示的な実施形態の概要を示すフローチャートである。図11に概要を示す動作は、例えばマルチプロセッサ・システムの各プロセッサにおいて実行することができる。
【0095】
図11に示すように、プロセッサは、ブート動作を開始する信号を受信する(ステップ610)。このステップは、例えば図10のステップ530に対応することができる。プロセッサはブート・コードを復号しようとし(ステップ620)、復号の試みが失敗したか否かについて判定を行う(ステップ630)。復号がうまくいった場合、すなわちこのプロセッサがランダムに選択されたブート・プロセッサである場合、ブート・コードを実行することによってマルチプロセッサ・システムを動作状態にする(ステップ640)。
【0096】
復号が失敗した場合、ブート・シーケンスをマスキングするために実行するコード・シーケンスを選択する(ステップ650)。上述のように、特定の実施形態に応じて、マスキング・コード・シーケンスの選択は、ローカル・ストアのセキュアな部分におけるデフォルト・コード・シーケンス、ランダムに選択した開始アドレス、ランダムな遅延要素を含むブート・コードの使用等に基づくものとすることができる。マスキング・コード・シーケンスを実行し(ステップ660)、システムが動作状態にあるか否か、すなわちブート・シーケンスが完了したか否かについて判定を行う(ステップ670)。システムが動作状態にない場合、動作はステップ660に戻り、マスキング・コード・シーケンスの実行を続ける。システムが動作状態にある場合、マスキング・コード・シーケンスの実行は終了し(ステップ680)、動作は終了する。
【0097】
従って、上述の例示的な実施形態は、マルチプロセッサ・システムを動作状態にブートするためのブート・プロセッサとして複数のプロセッサから1つのプロセッサをランダムに選択することを可能とする機構を提供する。例示的な実施形態は、更に、ランダムに選択したプロセッサが実行しているブート・コード・シーケンスをマスキングすることによって侵入者がどのプロセッサがランダムに選択されて実際のブート・コード・シーケンスを実行するかを見分けることを難しくする機構を提供する。これらの機構を用いて、侵入者がブート・コード・シーケンスの監視を通じてシステムに対するアクセスを得ることを極めて難しくすることにより、マルチプロセッサ・システムはいっそうセキュアなものとなる。
【0098】
上述の例示的な実施形態は、マルチプロセッサ・システムにおける単一のプロセッサがブート・コード・シーケンスを実行している場合について説明した。しかしながら、例示的な実施形態はこれに限定されるわけではない。他の例示的な実施形態では、ブート・コード・シーケンスは、マルチプロセッサ・システムにおいて複数のプロセッサ間で分散させることができる。これについて以下で述べる。マルチプロセッサ・システム内の複数のプロセッサ間でブート・コード・シーケンスを分散させることによって、ブート・シーケンスに関する完全な情報を得ることでセキュリティ対策をあざむくために危険にさらさなければならないプロセッサの数が増える。
【0099】
従って、以下で述べる例示的な実施形態の分散型ブート動作は、単一のセキュア・コアを利用するマルチプロセッサ・データ処理システムよりもいっそうセキュアである。更に、ブート動作を分散させることによって、ブート動作のいずれかの部分が脅かされた場合にブート動作は失敗し、これによって許可されていない人物がシステムのセキュリティを破ることを防ぐ。換言すると、侵入しようとする者はブート動作の一部を脅かすことは可能であるが、ブート動作の全てを脅かすことはできず、このためマルチプロセッサ・データ処理システムに対するアクセスを得ることはできない。
【0100】
この例示的な実施形態では、ブート・コード・シーケンスを複数のパーティションに分割し、各パーティションをマルチプロセッサ・システムの異なるプロセッサに供給することができるようになっている。ブート・コード・シーケンスの各パーティションを実行する際は、そのパーティションが各プロセッサ上で正しく完了してからでないと別のプロセッサにブート・コード・シーケンスを進めることができない。ブート・コード・シーケンスの先行パーティションの良好な完了を伝達するために、セキュアな通信機構を用いる。このセキュアな通信機構は、暗号化パスワード、または、例えば公開/秘密暗号鍵対のような他のセキュリティ識別子等のセキュリティ・トークンを含んで、先行セッションが危険にさらされなかったことを示すことができる。このようにして、良好に完了しなければならない依存的「セッション」のチェーンが生成される。
【0101】
ブート・コードの分散型実行に関与するプロセッサは、マルチプロセッサ・システム内のプロセッサ全て、またはマルチプロセッサ・システム内のプロセッサの一部とすることができる。例えば、単一のブート・プロセッサを選択するために上述したもののようなランダム選択機構を用いて、分散型でシステムをブートする際に用いる複数のブート・プロセッサをランダムに選択することができる。更に、プロセッサが実行するブート・コードの特定のパーティションをランダムに選択して、各パワー・オン・リセット(POR)動作で、同一プロセッサが以前のPOR動作においてと同じブート・コード・パーティションを実行する場合もあるし、そうでない場合もあるようになっている。従って、分散型ブート動作にどのプロセッサが関与するかに関して、および、どのブート・コード・パーティションに対して各プロセッサが実行するのかに関して、ランダム化を実行することができる。
【0102】
マルチプロセッサ・システムの他のプロセッサ、すなわち非ブート・プロセッサは、分散型ブート動作中に何も作業を実行しない場合があり、または、前述した様々なマスキング・コードの例示的な実施形態のうち1つ以上のマスキング・コード・シーケンスを実行して、ランダムに選択したプロセッサの一部におけるブート・コードの実行をマスキングする場合がある。換言すると、この例示的な実施形態の分散型ブート・コード・シーケンス動作は、本発明の精神および範囲から逸脱することなく、前述した例示的な実施形態の1つ以上と組み合わせることができる。
【0103】
図12は、1つの例示的な実施形態に従った、デイジー・チェーンまたはリング配置に構成した分散型ブート動作を示す例示的な図である。図12に示すように、マルチプロセッサ・データ処理システムをブートするために複数のプロセッサ720〜750が設けられている。図示した例では、コプロセッサすなわちSPEは全て分散型ブート動作に用いるが、例えばPPEのような制御プロセッサは分散型ブート・コードを実行しない。むろん、他の例示的な実施形態では、PPEも分散型ブート動作に含むことができる。更に、他の例示的な実施形態では、前述したように、マルチプロセッサ・データ処理システム内のプロセッサの一部のみを用いて分散型ブート動作を実行することができる。
【0104】
暗号化ブート・コード710は、例えば図2のフラッシュROM230等のマルチプロセッサ・データ処理システムに関連付けたストレージ・システムにストアすることができ、別個に実行可能なパーティションすなわちブート・コード・パーティション1からnに分割することができる。例えば、パーティションは、暗号化ブート・コードにおいてモジュールまたはルーチンとして設けることができ、同一の暗号アルゴリズムおよび同一の秘密鍵(Skey)を用いて別個に暗号化される。好ましくは、ブート・コード・パーティションの数は、分散型ブート動作に関与するプロセッサの数すなわちブート・プロセッサの数と等しい。しかしながら、リング配置のブート・プロセッサ等、いくつかの例示的な実施形態では、ブート・コード・パーティションの数はブート・プロセッサの数に限定されず、ブート・プロセッサの数よりも少ないかまたは多いパーティションのいずれかの数とすることができる。
【0105】
分散型ブート動作は、一般的なロジック790の制御のもとで実行される。これは、例えば図1における同じ一般的なロジック193とすることができる。一般的なロジック790は、例えばランダム・イベント発生器を用いることによって、ブート・プロセッサとして用いるプロセッサ720〜750をランダムに選択することができ、更に、ランダムに選択したプロセッサ720〜750の各々がどのパーティションを実行するかをランダムに選択することができる。かかる実施形態では、分散型ブート動作の先行セッションが危険にさらされかたか否かを示すセキュアな通信機構を用いることによって、一般的なロジック790は、ブート・コード・シーケンスのセキュリティを保証するために、ブート・コード・パーティションが実行される順序を常に把握することができる。しかしながら、この説明を簡潔にするために、図示する例では、マルチプロセッサ・システムのプロセッサの全てまたは少なくともコプロセッサが分散型ブート動作に用いられ、ブート・コード・パーティションがプロセッサ720〜750に順次供給されることを想定する。
【0106】
一般的なロジック790は、どのブート・コード・パーティションをプロセッサ720〜750の各々によって実行するかを選択するための選択信号をプロセッサ720〜750に供給する。更に、一般的なロジック790は、キー値選択信号を供給し、プロセッサ720〜750が対応するブート・コード・パーティションを復号するために用いるキーとして、SkeyストレージからSkeyを選択させる。プロセッサ720〜750は、供給されたSkeyを用いてブート・コード・パーティションを復号し、次いで、デイジー・チェーン・アーキテクチャのプロセッサ720〜750の配置によって、または、例えば一般的なロジック790の制御のもとで、適切な順序でブート・コード・パーティションを実行する。
【0107】
図示した例では、SPE0 720は、分散型ブート動作を開始する際に、そのブート・コード・パーティション1を復号し、ブート・コード・パーティションを実行し、次いでブート・コード・パーティション1がうまく完了したことをSPE1 730にセキュアな方法で伝達する。更に、SPE間でセキュリティ機構を利用して、先行セッションすなわち先行するブート・コード・パーティションの実行から成るセッションが危険にさらされなかったと示すことができる。セキュリティ機構は、例えば、セキュリティ・トークン、デジタル署名、パスワード、先行ブート・コード・パーティションのチェックサムを渡すこと、成功完了メッセージの公開鍵/秘密鍵暗号化を用いること等とすることができる。分散型ブート動作の先行セッションが危険にさらされたか否かを伝達するために使用可能ないずれのセキュリティ機構も、本発明の精神および範囲内にあることが意図される。
【0108】
ブート・コード・パーティション1の実行が順調に支障なく完了したことの確認を受信した後、SPE1 730はそのブート・コード・パーティション2を復号し、ブート・コード・パーティションを実行し、次いでブート・コード・パーティション2がうまく完了したことをSPE2 740に伝達することができる。このプロセスは、全てのプロセッサが支障なく分散型ブート動作の対応部分を完了したことを通知するまで継続することができる。このブート・コード・パーティションの依存的チェーンにおいて何らかの中断があると、例えば実行がうまくいかなかったことまたは実行に支障があったことが通知されると、その結果ブートは失敗し、これをシステム・コントローラに通知することができる。いったんブート・コード・パーティションが全て順調に完了すると、マルチプロセッサ・データ処理システムは動作状態にあり、様々なプロセッサ上でソフトウェア・アプリケーションを実行することができる。
【0109】
上述した例示的な実施形態は、プロセッサ上で実行されるブート・コード・パーティションに関してデイジー・チェーン配置のプロセッサを利用する。本発明の精神および範囲から逸脱することなく、ブート・コード・パーティションの順次的な実行を保証する他の配置も利用可能である。例えば、上述のデイジー・チェーン配置を発展させて、分散型ブート動作に関してリング配置のプロセッサを設け、例えばSPE7 750のような最後のプロセッサが、例えばSPE0 720のような「主要」ブート・プロセッサとして選択されている最初のプロセッサに、そのブート・コード・パーティションの実行が順調に支障なく完了したことを伝達する。このようにして、リング配置を通してセッションからセッションへと渡される、例えばセキュリティ・トークン、増分カウント値等のセキュリティ機構を主要ブート・プロセッサにおいて用いて、分散型ブート動作全体の支障ない実行を確認することができる。
【0110】
更に、リング構成のプロセッサによって、ブート・プロセッサの数よりも多くのブート・コード・パーティションを利用することができる。このため、マルチプロセッサ・データ処理システムにおいてプロセッサの一部のみをブート・プロセッサに選択する場合、このプロセッサの一部は、分散型ブート動作に関してリング配置に構成されると、いかなる数のブート・コード・パーティションも実行することができる。これによって、一般的なロジック790は、マルチプロセッサ・データ処理システム内のプロセッサをブート・プロセッサにランダムに選択することができるだけでなく、分散型ブート動作においていくつのプロセッサでもブート・プロセッサにランダムに選択することができる。従って、第1のPOR動作において4個のプロセッサをブート・プロセッサに選択し、以降のPOR動作では3個のブート・プロセッサを選択するということも可能である。一般的なロジック790は、ブート・プロセッサに選択するプロセッサの数をランダムに選択するためのロジックを含むことができ、これは次いで、前述したようなプロセッサのランダムな選択を制御するために用いられる。
【0111】
分散型ブート動作に関して、別のブート・プロセッサ配置として可能なものは、マスタ/スレーブ配置を設けることである。図13は、1つの例示的な実施形態に従ってマスタ/スレーブ配置として構成した分散型ブート動作を示す例示的な図である。図13に示すように、1つのプロセッサ760をマスタ・プロセッサに指定する。このプロセッサは、例えばSPEのようなコプロセッサの1つ、または、例えばPPEのような制御プロセッサとすることができる。例えばSPE0〜SPE7 720〜750のようなスレーブ・プロセッサは、図12において上述したのと同様に、各々が対応するブート・コード・パーティションを完了させ、実行を支障なく終えたことをセキュアな方法でマスタ・コアに伝達する役割を果たす。マスタ・プロセッサ760がスレーブ・プロセッサ720〜750の各々から信号を受信し、危険にさらされていないことを確認すると、マルチプロセッサ・データ処理システムはソフトウェア・アプリケーションを実行可能な動作状態に入ることができる。
【0112】
分散型ブート動作に関して、本明細書では、デイジー・チェーン、リング、およびマスタ/スレーブ配置のプロセッサを説明したが、本発明はこれらの説明した配置のみに限定されないことは認められよう。本発明の精神および範囲から逸脱することなく、例示的な実施形態の機構と共に、分散型ブート動作に関していかなるプロセッサ配置も使用可能である。
【0113】
図14は、1つの例示的な実施形態に従った、マルチプロセッサ・システムの分散型ブートの例示的な動作の概要を示すフローチャートである。図14に示すように、この動作は、一般的なロジックがシステム・コントローラから「パワー良好」信号を受信することから開始する(ステップ810)。一般的なロジックは、マルチプロセッサ・データ処理システムにおける複数のプロセッサから、ブート・プロセッサとなるプロセッサを選択する(ステップ820)。上述したように、かかる選択の結果、マルチプロセッサ・データ処理システムにおけるプロセッサの全てまたは一部をブート・プロセッサに選択することができる。かかる選択は、例えば一般的なロジック内のランダム・イベント発生器を用いて実行することができる。
【0114】
一般的なロジックは、選択したブート・プロセッサに割り当てるブート・コード・パーティションを選択する(ステップ830)。次のブート・コード・パーティションを、関連するブート・プロセッサによって実行する(ステップ840)。ブート・プロセッサは、ブート・コード・パーティションの実行が順調であり支障なかったか否かを判定する(ステップ850)。そうでない場合、システム・コントローラにブート失敗が通知され(ステップ860)、動作は終了する。
【0115】
ブート・コード・パーティションが順調に支障なく実行された場合、ブート・プロセッサは、全てのブート・コード・パーティションが順調に実行されたか否かを判定する(ステップ870)。全てが順調に実行されていない場合、動作はステップ840に戻り、次のブート・コード・パーティションをその関連するブート・プロセッサによって実行する。ブート・コード・パーティションの全てが順調に実行された場合、ブート・プロセッサは、システム・コントローラにデータ処理システムの順調なブートを通知し(ステップ880)、動作は終了する。
【0116】
従って、前述したように、例示的な実施形態は、マルチプロセッサ・データ処理システムの単一のプロセッサをランダムに選択し、他のプロセッサ上でマスキング動作を実行することに加えて、複数のプロセッサ上でブート動作を分散させるための機構を提供する。例示的な実施形態は、ブート・プロセッサをランダムに選択し、選択したブート・プロセッサ上で実行するブート・コード・パーティションをランダムに選択するための機構を提供して、様々なブート・プロセッサによるブート・コード・パーティションの実行のセキュリティを保証する。これらの様々な機構支援は全て、ブート動作の不正な監視に対するマルチプロセッサ・データ処理システムのセキュリティを高める。
【0117】
例示的な実施形態は、全体的にハードウェアによる実施形態、全体的にソフトウェアによる実施形態、またはハードウェアおよびソフトウェア要素の双方を含む実施形態という形を取ることができる。好適な実施形態において、本発明はソフトウェアにおいて具現化され、これはファームウェア、常駐ソフトウェア、マイクロコード等を含むがこれらには限定されない。
【0118】
更に、例示的な実施形態は、コンピュータまたはいずれかの命令実行システムが用いるかまたはこれと組み合わせて用いるプログラム・コードを提供するコンピュータ使用可能またはコンピュータ読み取り可能媒体からアクセス可能なコンピュータ・プログラムの形態を取ることができる。この説明の目的のため、コンピュータ使用可能またはコンピュータ読み取り可能媒体は、命令実行システム、装置、またはデバイスが用いるかまたはこれと組み合わせて用いるプログラムを含有、ストア、伝達、伝搬、または転送することができるいずれかの装置とすれば良い。
【0119】
この媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム(または装置またはデバイス)または伝搬媒体とすることができる。コンピュータ読み取り可能媒体の例は、半導体または固体メモリ、磁気テープ、着脱可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、固定磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−リード・オンリ・メモリ(CD−ROM)、コンパクト・ディスク−読み取り/書き込み(CDR/W)およびDVDを含む。
【0120】
上述のような回路は、集積回路チップ用の設計の一部とすることができる。チップ設計は、グラフィカル・コンピュータ・プログラミング言語で生成し、コンピュータ・ストレージ媒体(ディスク、テープ、物理的ハード・ドライブ、またはストレージ・アクセス・ネットワークにおけるような仮想ハード・ドライブ等)にストアすることができる。設計者がチップを製造しない場合、またはチップを製造するために用いるフォトリソグラフィ・マスクを製造しない場合、設計者は、直接的または間接的に、かかるエンティティに、物理的手段によって(例えばこの設計をストアするストレージ媒体のコピーを提供することによって)、または電子的に(例えばインターネットによって)、結果として得られた設計を送信することができる。次いで、ストアした設計を、フォトリソグラフィ・マスクを製造するために適切なフォーマット(例えばGDSII)に変換することができる。このマスクは、通常、ウェハ上に形成される当該設計の多数のコピーを含む。フォトリソグラフィ・マスクを用いて、エッチングまたは他の方法で処理されるウェハの領域(あるいはその上の層またはその両方)を規定することができる。
【0121】
結果として得られた集積回路チップは、むき出しのダイとして未処理のウェハの形態で(すなわち、多数のパッケージされていないチップを有する単一ウェハとして)、またはパッケージされた形態で、製造者によって分配することができる。後者の場合、チップは、単一チップ・パッケージ(マザーボードにリードが取り付けられたプラスチック・キャリアまたは他の高レベルのキャリア等)で、または、マルチチップ・パッケージ(表面相互接続または埋め込み相互接続のいずれかまたは両方を有するセラミック・キャリア等)で、取り付けることができる。いずれの場合であっても、このチップを、次いで、(a)マザーボード等の中間製品または(b)最終製品のいずれかの一部として、他のチップ、別個の回路要素、あるいは他の信号処理デバイスまたはそれら全てと集積することができる。最終製品は、おもちゃおよび他の低価格の用途から、ディスプレイ、キーボードまたは他の入力デバイス、および中央プロセッサを有する高度なコンピュータ製品までに及ぶ集積回路チップを含むいずれかの製品とすることができる。更に、集積回路チップを設けることができる最終製品は、ゲーム機械、ゲーム・コンソール、手持ち型コンピューティング・デバイス、パーソナル・デジタル・アシスタント、無線電話等の通信デバイス、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、またはいずれかの他のコンピューティング・デバイスを含むことができる。
【0122】
本発明の記載は、例示および説明の目的のために提示したものであり、網羅的であったり、本発明を開示する形態に限定したりすることは意図していない。当業者には、多くの変更および変形が明らかであろう。実施形態は、想定される具体的な用途に適した様々な変更を有する様々な実施形態の代わりに、本発明の原理、実際の用途を最も適切に説明するため、および、当業者が本発明を理解することができるように、選択し記載した。
【図面の簡単な説明】
【0123】
【図1】例示的な実施形態を実現することができるマルチプロセサ・システムの例示的なブロック図である。
【図2】1つの例示的な実施形態に従ったランダム・ブート・プロセッサ選択機構の主要動作構成要素を示す例示的な図である。
【図3】1つの例示的な実施形態に従ったランダム選択機構を示す例示的な図である。
【図4】1つの例示的な実施形態に従ったランダム・イベント発生器のLFSRカウンタに対する入力に挿入されるジッタをグラフに示す。
【図5】秘密鍵および複数のランダムに発生したキー値を平行信号ラインを用いてプロセッサに供給する例示的な実施形態を示す例示的な図である。
【図6】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図7】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図8】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図9】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図10】マルチプロセッサ・システムにおける1つのプロセッサをブート・プロセッサとしてランダムに選択するための例示的な動作の概要を示すフローチャートである。
【図11】1つの例示的な実施形態に従った、ブート・コード・シーケンスをマスキングするための例示的な動作の概要を示すフローチャートである。
【図12】1つの例示的な実施形態に従った、デイジー・チェーンまたはリング配置として構成した分散型ブート動作を示す例示的な図である。
【図13】1つの例示的な実施形態に従った、マスタ/スレーブ配置として構成した分散型ブート動作を示す例示的な図である。
【図14】1つの例示的な実施形態に従った、マルチプロセッサ・システムの分散型ブートのための例示的な動作の概要を示すフローチャートである。
【符号の説明】
【0124】
100 CBE
110、405 パワー・プロセッサ要素(PPE)
116 パワー・プロセッサ・ユニット(PPU)
120〜134、410〜424、720〜750 相乗プロセッサ要素(SPE)
140〜154 相乗プロセッサ・ユニット(SPU)
155〜162 メモリ・フロー制御
163〜170 ローカル・メモリまたはストア(LS)
180〜194 バス・インタフェース・ユニット(BIUユニット)
193、240、397、790 一般的なロジック
210 システム・コントローラ
220 セキュア・キー・ストレージ
230 フラッシュROM
232 暗号化ブート・コード
242、310、396 ランダム・イベント発生器
250 構成ビット・レジスタ
260、350、360、370、396 選択器
262 ランダム値発生器
270 SPE
280、290 プロセッサ
320 線形フィードバック・シフト・レジスタ(LFSR)カウンタ
330 リング・オシレータ
340 選択信号レジスタ/デコーダ
352、362、372 マルチプレクサ
390 ランダム・キー発生器

【特許請求の範囲】
【請求項1】
データ処理システムにおいて、前記データ処理システムをブートするための方法であって、
前記データ処理システムにおいて複数のプロセッサから1つのプロセッサをブート・プロセッサとするためにランダムに選択するステップと、
前記ランダムに選択したブート・プロセッサにおいてブート・コード・シーケンスを実行し、これによって前記データ処理システムを動作状態にブートするステップと、
を含む、方法。
【請求項2】
前記ブート・プロセッサとするためにプロセッサをランダムに選択するステップが、
前記データ処理システムの一般的なロジックに設けられたランダム・イベント発生器を用いてランダム値を発生するステップと、
前記ランダム値を復号して、前記データ処理システムにおいて前記複数のプロセッサから前記ブート・プロセッサとするための1つのプロセッサを識別するステップと、
を含む、請求項1に記載の方法。
【請求項3】
前記ランダム・イベント発生器を用いるステップが、
前記ランダム・イベント発生器に対し、第1の周波数を有する第1の入力を発生するステップと、
前記ランダム・イベント発生器に対し、第2の周波数を有する第2の入力を発生するステップと、
前記ランダム・イベント発生器において、前記第1の周波数と前記第2の周波数との間の差に基づいたランダム選択出力信号を発生するステップと、
を含む、請求項2に記載の方法。
【請求項4】
前記ランダム・イベント発生器が線形フィードバック・シフト・レジスタ(LFSR)カウンタを含み、前記第1の入力がリング・オシレータからの出力信号であり、前記第2の入力が前記線形フィードバック・シフト・レジスタに入力されるクロック信号である、請求項2に記載の方法。
【請求項5】
前記複数のプロセッサからのプロセッサの前記ランダムな選択に基づいて、前記データ処理システムの前記複数のプロセッサに関連した構成ビット・レジスタに構成ビットをセットするステップを更に含み、前記構成ビットが、前記ブート・プロセッサに選択されないプロセッサのための第1の値と、前記ブート・プロセッサに選択されるプロセッサのための第2の値とを有する、請求項1に記載の方法。
【請求項6】
前記データ処理システムにおける前記複数のプロセッサの各プロセッサに秘密鍵を供給するステップと、
前記データ処理システムにおける前記複数のプロセッサの各プロセッサに暗号化ブート・コードを供給するステップと、
前記選択したプロセッサにおいてのみ前記秘密鍵を用いて前記暗号化ブート・コードを復号するステップと、
を更に含む、請求項5に記載の方法。
【請求項7】
前記選択したプロセッサにおいてのみ前記秘密鍵を用いて前記暗号化ブート・コードを復号するステップが、
前記複数のプロセッサにおける各プロセッサに関連した構成ビット・レジスタにおける構成ビット値が前記第2の値である場合に、前記プロセッサによって前記秘密鍵にアクセスするステップと、
前記複数のプロセッサにおける各プロセッサに関連した前記構成ビット・レジスタにおける前記構成ビット値が前記第1の値である場合に、前記秘密鍵に対する前記プロセッサによるアクセスを防ぐステップと、
を含む、請求項6に記載の方法。
【請求項8】
前記ブート・コード・シーケンスの実行が完了した後に、前記データ処理システムをセキュアな状態からロックされていない状態へと移行させるステップを更に含み、前記データ処理システムのメモリ・インタフェース・コントローラ、共有メモリ、およびバス・インタフェース・コントローラの一部が、前記セキュアな状態の間は停止して動作しないようになっており、前記ロックされていない状態の間は完全にイネーブルされている、請求項1に記載の方法。
【請求項9】
前記データ処理システムが許容可能パワー状態にあることがシステム・コントローラによって示されたことに応答して、前記方法が前記データ処理システムの一般的なロジックが実行するブート動作の一部として実施される、請求項1に記載の方法。
【請求項10】
前記方法が、前記データ処理システムの各パワー・オン・リセット(POR)動作ごとに実施される、請求項1に記載の方法。
【請求項11】
前記データ処理システムが異種マルチプロセッサ・システム・オン・チップであり、第1の命令セットに従って動作する第1のプロセッサと、前記第1の命令セットとは異なる第2の命令セットに従って動作する1つ以上の第2のプロセッサと、を有する、請求項1に記載の方法。
【請求項12】
前記第1の命令セットがRISC命令セットであり、前記第2の命令セットがSIMD命令セットである、請求項11に記載の方法。
【請求項13】
データ処理システムであって、
複数のプロセッサと、
前記複数のプロセッサに結合されたロジックと、
を含み、前記ロジックが、前記データ処理システムにおいて複数のプロセッサから1つのプロセッサをブート・プロセッサとするためにランダムに選択し、前記ランダムに選択したブート・プロセッサがブート・コード・シーケンスを実行し、これによって前記データ処理システムを動作状態にブートする、データ処理システム。
【請求項14】
前記ロジックが、
ランダム値を発生するランダム・イベント発生器と、
前記ランダム・イベント発生器に結合されたデコーダと、
を更に含み、前記デコーダが、前記ランダム値を復号して、前記データ処理システムにおいて前記複数のプロセッサから前記ブート・プロセッサとするための1つのプロセッサを識別する、請求項13に記載のデータ処理システム。
【請求項15】
前記ランダム・イベント発生器に第1の周波数を有する第1の入力を供給し、前記ランダム・イベント発生器に前記第1の周波数とは異なる第2の周波数を有する第2の入力を入力し、前記ランダム・イベント発生器が、前記第1の周波数と前記第2の周波数との間の差に基づいたランダム選択出力信号を発生する、請求項14に記載のデータ処理システム。
【請求項16】
前記ランダム・イベント発生器が線形フィードバック・シフト・レジスタ(LFSR)カウンタを含み、前記第1の入力がリング・オシレータからの出力信号であり、前記第2の入力が前記線形フィードバック・シフト・レジスタに入力されるクロック信号である、請求項14に記載のデータ処理システム。
【請求項17】
前記複数のプロセッサに結合された複数の構成ビット・レジスタを更に含み、
各構成ビット・レジスタが前記複数のプロセッサにおける前記プロセッサの1つに関連付けられ、
前記複数のプロセッサからのプロセッサの前記ランダムな選択に基づいて、前記構成ビット・レジスタに構成ビットをセットし、
前記構成ビットが、前記ブート・プロセッサに選択されないプロセッサのための第1の値と、前記ブート・プロセッサに選択されるプロセッサのための第2の値とを有する、請求項13に記載のデータ処理システム。
【請求項18】
前記複数のプロセッサに結合された秘密鍵ストレージ・デバイスと、
前記複数のプロセッサに結合された暗号化ブート・コード・ストレージ・デバイスと、
を更に含み、前記秘密鍵ストレージ・デバイスから前記データ処理システムにおける前記複数のプロセッサの各プロセッサに秘密鍵を供給し、
前記暗号化ブート・コード・ストレージ・デバイスから前記データ処理システムにおける前記複数のプロセッサの各プロセッサに暗号化ブート・コードを供給し、
前記ランダムに選択したプロセッサのみが前記暗号化ブート・コードを復号し、これによって前記ブート・コードを実行する、を更に含む、請求項17に記載のデータ処理システム。
【請求項19】
前記データ処理システムが異種マルチプロセッサ・システム・オン・チップであり、第1の命令セットに従って動作する第1のプロセッサと、前記第1の命令セットとは異なる第2の命令セットに従って動作する1つ以上の第2のプロセッサと、を有する、請求項13に記載のデータ処理システム。
【請求項20】
マルチプロセッサ・システム・オン・チップであって、
複数のプロセッサ・コアと、
前記複数のコアに結合された一般的なロジックと、
を含み、前記マルチプロセッサ・システム・オン・チップの許容可能パワー状態を示すシステム・コントローラからの信号に応答して、前記一般的なロジックが前記複数のプロセッサ・コアから1つのプロセッサ・コアをブート・プロセッサとしてランダムに選択し、前記ランダムに選択したブート・プロセッサにおいてブート・コード・シーケンスを実行し、これによって前記マルチプロセッサ・システム・オン・チップを動作状態にブートする、マルチプロセッサ・システム・オン・チップ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2007−334883(P2007−334883A)
【公開日】平成19年12月27日(2007.12.27)
【国際特許分類】
【出願番号】特願2007−150974(P2007−150974)
【出願日】平成19年6月6日(2007.6.6)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】