(57)【要約】      （修正有）【課題】ハードウェア・ブート・シーケンスをマスキングするためのシステムおよび方法を提供する。【解決手段】マルチプロセッサ・システムのプロセッサのうち１つをブート・プロセッサに選択する。他のプロセッサは、実際のブート・プロセッサのシグニチャをマスキングするシグニチャを発生するマスキング・コードを実行する。かかるマスキングは、システムにアクセスするためのセキュリティ・キー等のセキュリティ情報に対するアクセスを得ることなく、ブート・プロセッサと同じブート・コードの実行を伴う場合がある。マスキング・コードの実行によって発生するシグニチャは、ブート・プロセッサ上で実行する実際のブート・コードのシグニチャに似ていると好ましい。このようにして、どのプロセッサが実際のブート・プロセッサであるかを見分けることが難しくなる。【選択図】図１
2007334882.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいて、前記データ処理システムをブートするための方法であって、
前記データ処理システムの複数のプロセッサにおいて、ブート・プロセッサ上でブート・コード・シーケンスを実行し、これによって前記データ処理システムを動作状態にブートするステップと、  
前記データ処理システムの前記複数のプロセッサから少なくとも１つの非ブート・プロセッサを用いて、前記ブート・プロセッサ上の前記ブート・コード・シーケンスの前記実行をマスキングする電磁的シグニチャまたは熱的シグニチャの少なくとも一方を発生するステップと、
を含む、方法。
【請求項２】
前記電磁的シグニチャまたは熱的シグニチャの少なくとも一方を発生するステップが、前記少なくとも１つの非ブート・プロセッサの各々においてマスキング・コード・シーケンスを実行するステップを含む、請求項１に記載の方法。
【請求項３】
前記複数のプロセッサの各プロセッサにおいて暗号化ブート・コードを復号しようと試みるステップであって、前記ブート・プロセッサのみが前記暗号化ブート・コードの復号に成功することができる、ステップと、
各非ブート・プロセッサにおいて、前記暗号化ブート・コードの復号の試みが失敗したことに応答して前記マスキング・コード・シーケンスを実行するステップと、
を更に含む、請求項２に記載の方法。
【請求項４】
前記マスキング・コード・シーケンスが、ブート動作の間に前記データ処理システムを監視するための動作を実行するための命令を含む、請求項２に記載の方法。
【請求項５】
前記非ブート・プロセッサの各々が実行する前記マスキング・コード・シーケンスが同一のマスキング・コード・シーケンスである、請求項２に記載の方法。
【請求項６】
前記非ブート・プロセッサの各々が実行する前記マスキング・コード・シーケンスによって、前記非ブート・プロセッサが、前記ブート・プロセッサ上で実行している前記ブート・コード・シーケンスの電気的プロファイルおよび熱的プロファイルに似た電気的プロファイルおよび熱的プロファイルを発生する、請求項２に記載の方法。
【請求項７】
前記マスキング・コード・シーケンスが、前記ブート・コート・シーケンスと同一のコードであるが、前記マスキング・コード・シーケンスからはセキュア・キー情報にアクセスすることができない、請求項６に記載の方法。
【請求項８】
前記ブート・プロセッサが、前記データ処理システムにおける前記複数のプロセッサからブート・プロセッサとなるためにランダムに選択される、請求項１に記載の方法。
【請求項９】
前記データ処理システムが異種マルチプロセッサ・システム・オン・チップであり、第１の命令セットに従って動作する第１のプロセッサと、前記第１の命令セットとは異なる第２の命令セットに従って動作する１つ以上の第２のプロセッサと、を有する、請求項１に記載の方法。
【請求項１０】
データ処理システムであって、
ブート・プロセッサおよび少なくとも１つの非ブート・プロセッサを含む複数のプロセッサと、
前記ブート・プロセッサに結合されたブート・コード・ストレージ・デバイスと、
前記非ブート・プロセッサに結合されたマスキング・コード・ストレージ・デバイスと、
を含み、前記ブート・プロセッサにおいてブート・コードを実行することによって前記データ処理システムを動作状態にブートし、前記少なくとも１つの非ブート・プロセッサがマスキング・コードを実行して、前記ブート・プロセッサ上の前記ブート・コードの前記実行をマスキングする電磁的シグニチャまたは熱的シグニチャの少なくとも一方を発生する、データ処理システム。  
【請求項１１】
前記複数のプロセッサの各プロセッサが暗号化ブート・コードを復号しようと試み、
前記ブート・プロセッサのみが前記暗号化ブート・コードの復号に成功することができ、
各非ブート・プロセッサが、前記暗号化ブート・コードの復号の試みが失敗したことに応答して前記マスキング・コードを実行するステップと、
を更に含む、請求項１０に記載のデータ処理システム。
【請求項１２】
前記マスキング・コードが、ブート動作の間に前記データ処理システムを監視するための動作を実行するための命令を含む、請求項１０に記載のデータ処理システム。
【請求項１３】
前記非ブート・プロセッサの各々が実行する前記マスキング・コードが同一のマスキング・コードである、請求項１０に記載のデータ処理システム。
【請求項１４】
前記非ブート・プロセッサの各々が実行する前記マスキング・コードによって、前記非ブート・プロセッサが、前記ブート・プロセッサ上で実行している前記ブート・コードの電気的プロファイルおよび熱的プロファイルに似た電気的プロファイルおよび熱的プロファイルを発生する、請求項１０に記載のデータ処理システム。
【請求項１５】
前記マスキング・コードが、前記ブート・コートと同一のコードであるが、前記マスキング・コードからはセキュア・キー情報にアクセスすることができない、請求項１４に記載のデータ処理システム。
【請求項１６】
前記ブート・プロセッサが、前記データ処理システムにおける前記複数のプロセッサからブート・プロセッサとなるためにランダムに選択される、請求項１０に記載のデータ処理システム。
【請求項１７】
前記データ処理システムが異種マルチプロセッサ・システム・オン・チップであり、第１の命令セットに従って動作する第１のプロセッサと、前記第１の命令セットとは異なる第２の命令セットに従って動作する１つ以上の第２のプロセッサと、を有する、請求項１０に記載のデータ処理システム。
【請求項１８】
コンピュータ読み取り可能プログラムを有するコンピュータ使用可能媒体を含むコンピュータ・プログラムであって、前記コンピュータ読み取り可能プログラムがデータ処理システム上で実行されると、前記データ処理システムは、
前記データ処理システムの複数のプロセッサにおいて、ブート・プロセッサ上でブート・コード・シーケンスを実行し、これによって前記データ処理システムを動作状態にブートし、
前記データ処理システムの前記複数のプロセッサから少なくとも１つの非ブート・プロセッサを用いて、前記ブート・プロセッサ上の前記ブート・コード・シーケンスの前記実行をマスキングする電磁的シグニチャまたは熱的シグニチャの少なくとも一方を発生する、
コンピュータ・プログラム。
【請求項１９】
前記コンピュータ読み取り可能プログラムによって、前記データ処理システムは、前記少なくとも１つの非ブート・プロセッサの各々においてマスキング・コード・シーケンスを実行することによって電磁的シグニチャまたは熱的シグニチャの少なくとも一方を発生する、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記コンピュータ読み取り可能プログラムによって、前記データ処理システムは、更に、
前記データ処理システムにおける前記複数のプロセッサから前記ブート・プロセッサをランダムに選択し、
前記複数のプロセッサの各プロセッサにおいて暗号化ブート・コードを復号しようと試み、前記ブート・プロセッサのみが前記暗号化ブート・コードの復号に成功することができ、
各非ブート・プロセッサにおいて、前記暗号化ブート・コードの復号の試みが失敗したことに応答して前記マスキング・コード・シーケンスを実行する、
請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、改良したデータ処理システムおよび方法に関する。更に具体的には、本出願は、ハードウェア・ブート・シーケンスをマスキングするためのシステムおよび方法を対象とする。
【背景技術】
【０００２】
我々の社会がますます電子的な情報伝達および記憶に頼るようになるにつれて、個人情報およびデジタル著作権管理（ＤＲＭ：digital rights management）等、デジタル情報のセキュリティに関する関心が高まっている。更に、近年、コンピュータ・ハッカーおよび他の許可されていないコンピューティング・システムへの侵入者は、いっそう巧妙になっている。この結果、かかる機密デジタル情報を不正なアクセスから保護することができるように、コンピューティング・デバイスのためのセキュリティ・システムの開発に多大な努力が払われている。
【特許文献１】米国特許公開第２００５００２１９４４号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
侵入者がコンピューティング・システムに対するアクセスを得る１つの方法は、電気的インタフェースを介して、コンピューティング・システムのブート・アクティビティおよび他の観察可能な電磁的または熱的アクティビティを観察することである。このようにブート・アクティビティを観察することによって、侵入者は、ブート・プロセッサによってどのデータ信号が入力され出力されているのか、プロセッサ上でどの暗号アルゴリズムが実行されているのか等を推定することができる。この情報から、侵入者は、ブート・シーケンス内で不正な侵入を実行可能なポイントを検出することができる。更に、システムをブートするためにセキュリティ・キーが必要であるセキュアなブート・シーケンスでは、侵入者は、ブート・プロセッサが用いた暗号アルゴリズムを逆転させて、セキュリティ・キーに対するアクセスを得て、これによってコンピューティング・システムに対する完全なアクセスを得る場合がある。コンピューティング・システムの全体的なセキュリティはブート・プロセスのセキュリティに依存することが多いので、侵入者がブート・シーケンスに対するアクセスを得ると、システム全体のセキュリティが危険にさらされる恐れがある。
【０００４】
従って、プロセッサのブート・シーケンスの監視を難しくして、不正な侵入に対してシステムをいっそうセキュアなものとする方法があれば有用であろう。
【課題を解決するための手段】
【０００５】
例示的な実施形態は、マルチプロセッサ・システムのブートのためにランダム・プロセッサを選択すると共にハードウェア・ブート・シーケンスをマスキングするためのシステムおよび方法を提供する。マルチプロセッサ・システムをブートするために用いるプロセッサをランダム化することによって、許可されていない人物がシステムのセキュリティを破る目的で電気的インタフェース、熱的アクティビティ、および他の電磁的アクティビティを監視してブート・シーケンスに関する情報を得ることがいっそう難しくなる。例えば、マルチプロセッサ・システムにおいて、侵入しようとする者は、ある１つのプロセッサがブート・プロセッサとしてランダムに選択されることを期待してこのプロセッサを監視しながら何度もブート・シーケンスを実行する必要があるか、または、全てのプロセッサをブート時に監視してそのうちどれが実際のブート・プロセッサであったかを判定する必要がある。これらの選択肢は双方とも、侵入しようとする者にとって相当の労力を必要とするので、実際にシステムを監視してブート・シーケンス情報を得ようとすることに対する抑止力として作用するか、または、少なくとも、侵入しようとする者がシステムを脅かすために要する時間を著しく引き伸ばすことができる。
【０００６】
例示的な実施形態の機構では、システム・オン・チップ等のマルチプロセッサ・システム上に、一般的な（pervasive）ロジックが提供され、これがマルチプロセッサ・システムのブート動作を制御する。一般的なロジックはランダム・イベント発生器を含み、これは、マルチプロセッサ・システム内でどのプロセッサがブート・プロセッサとなってブート・コードを実行してシステムを動作状態にするかをランダムに選択する。ブート・プロセッサのランダムな選択に基づいて、このブート・プロセッサに関連した構成ビットをセットし、このプロセッサがブート・プロセッサであることを示す。この後、選択されたブート・プロセッサに、マルチプロセッサ・システムをセキュアな方法で動作状態にブートするために必要なセキュリティ・キー（複数のキー）を供給する。
【０００７】
いくつかの例示的な実施形態においては、ランダムに選択したプロセッサがセキュアなブート動作を実行しながら、マルチプロセッサ・システムの他のプロセッサは実際のセキュアなブート動作をマスクするための動作を実行する。このマスキングは、ブート・コード・シーケンス以外の他のコード・シーケンスの実行を含む場合があり、これによって、プロセッサは電磁的出力または熱的出力あるいはその両方の出力を発生し、侵入者によって監視された場合に、どのプロセッサが実際のセキュアなブート動作を実行しているのかを侵入者が区別することが難しくなる。
【０００８】
異なるコード・シーケンスを発生可能な１つの方法は、ランダムな量を反復するループを実行するランダムな遅延要素をブート・コード内に挿入することである。このように、各プロセッサはブート・コードを実行することができるが、遅延量が異なるので、異なる電磁的および熱的シグニチャ（signature）を発生する。侵入者の観点からは、かかるマスキングのために、マルチプロセッサ・システムにおいて実際のブート・プロセッサを他のプロセッサから見分けることは極めて難しくなる。
【０００９】
更に別の例示的な実施形態においては、他のプロセッサが実行するコード・シーケンスは、ランダムに選択したプロセッサが実行するブート・コード・シーケンスと同じであるが、ダミーのセキュリティ・キーを用いる。このため、これらの他のプロセッサは、セキュアなブート動作を実行しているかのように動作しており、侵入者にとってそのように見える。しかしながら、これらのプロセッサが監視されると、誤った電磁的および熱的な出力が識別されるので、侵入者にとっては、監視したプロセッサがセキュアなブート動作を実行しているランダムに選択したプロセッサであることの判定が難しくなる。
【００１０】
更に別の例示的な実施形態では、ダミー・プロセッサを設けることによって、ランダムに選択したブート・プロセッサのマスキングを実行することができる。ダミー・プロセッサは、電磁的、熱的等の監視装置の観点から見ると、固有のもの（unique）に見える。このダミー・プロセッサ上でブート・コード・シーケンスとは異なるプロセスを実行することで、システムに対する攻撃をこのダミー・プロセッサに向かわせる。このようにして、侵入者がセキュリティ機構の裏をかくことでシステムにアクセスを試みた場合、侵入者は、マルチプロセッサ・システムの残りの部分に実際にはアクセスしないダミー・プロセッサにアクセスするだけである。
【００１１】
他の例示的な実施形態では、ブート・コート・シーケンスは、マルチプロセッサ・システムにおける複数のプロセッサ間で分散させることができる。マルチプロセッサ・システムにおける複数のプロセッサ間でブート・コード・シーケンスを分散させることによって、ブート・シーケンスに関する完全な情報を得ることでセキュリティ対策をあざむくために危険にさらさなければならないプロセッサの数が増える。従って、例示的な実施形態の分散型ブート動作は、単一のセキュア・コアを用いるマルチプロセッサ・データ処理システムよりもいっそうセキュアである。更に、ブート動作を分散させることによって、ブート動作のいずれかの部分が危険にさらわれた場合にそのブート動作は失敗するので、許可されていない人物がシステムのセキュリティを脅かすことが防止される。
【００１２】
例示的な実施形態では、ブート・コード・シーケンスを複数のパーティションに分割して、各パーティションをマルチプロセッサ・システムの異なるプロセッサに供給することができるようになっている。ブート・コード・シーケンスの各パーティションを実行する際は、そのパーティションが各プロセッサ上で正しく完了してからでないと別のプロセッサにブート・コード・シーケンスを進めることができない。ブート・コード・シーケンスの先行パーティションの良好な完了を伝達するために、セキュアな通信機構を用いる。このセキュアな通信機構は、暗号化パスワード、または、例えば公開／秘密暗号鍵対のような他のセキュリティ識別子等のセキュリティ・トークンを含んで、先行セッションが危険にさらされなかったことを示すことができる。このようにして、良好に完了しなければならない依存的「セッション」のチェーンが生成される。
【００１３】
ブート・コードの分散型実行に関与するプロセッサは、マルチプロセッサ・システム内のプロセッサ全て、またはマルチプロセッサ・システム内のプロセッサの一部とすることができる。例えば、単一のブート・プロセッサを選択するために上述したもののようなランダム選択機構を用いて、分散型でシステムをブートする際に用いる複数のブート・プロセッサをランダムに選択することができる。更に、プロセッサが実行するブート・コードの特定のパーティションをランダムに選択して、各パワー・オン・リセット（ＰＯＲ）動作で、同一プロセッサが以前のＰＯＲ動作においてと同じブート・コード・パーティションを実行する場合もあるし、そうでない場合もあるようになっている。従って、分散型ブート動作にどのプロセッサが関与するかに関して、および、どのブート・コード・パーティションに対して各プロセッサが実行するのかに関して、ランダム化を実行することができる。
【００１４】
マルチプロセッサ・システムの他のプロセッサ、すなわち非ブート・プロセッサは、分散型ブート動作中に何も作業を実行しない場合があり、または、前述した様々なマスキング・コードの例示的な実施形態のうち１つ以上のマスキング・コード・シーケンスを実行して、ランダムに選択したプロセッサの一部におけるブート・コードの実行をマスキングする場合がある。換言すると、この例示的な実施形態の分散型ブート・コード・シーケンス動作は、前述した例示的な実施形態の１つ以上と組み合わせることができる。
【００１５】
１つの例示的な実施形態では、データ処理システムにおいて、このデータ処理システムをブートするための方法が提供される。この方法は、データ処理システムの複数のプロセッサにおいて、ブート・プロセッサ上でブート・コード・シーケンスを実行し、これによってデータ処理システムを動作状態にブートするステップを含むことができる。この方法は、更に、データ処理システムの複数のプロセッサから少なくとも１つの非ブート・プロセッサを用いて、ブート・プロセッサ上のブート・コード・シーケンスの実行をマスキングする電磁的または熱的シグニチャの少なくとも一方を発生するステップを含むことができる。
【００１６】
この方法は、少なくとも１つの非ブート・プロセッサの各々においてマスキング・コード・シーケンスを実行することによって、電磁的シグニチャまたは熱的シグニチャの少なくとも一方を発生することができる。複数のプロセッサの各プロセッサが、暗号化ブート・コードを復号しようと試みることができる。しかしながら、暗号化ブート・コードの復号に成功することができるのはブート・プロセッサのみである。各非ブート・プロセッサにおいて、暗号化ブート・コードの復号の試みが失敗したことに応答して、非ブート・プロセッサはマスキング・コード・シーケンスを実行することができる。
【００１７】
マスキング・コード・シーケンスは、ブート動作の間にデータ処理システムを監視するための動作を実行するための命令を含むことができる。非ブート・プロセッサの各々が実行するマスキング・コード・シーケンスは、同一のマスキング・コード・シーケンスとすることができる。
【００１８】
非ブート・プロセッサの各々が実行するマスキング・コード・シーケンスによって、非ブート・プロセッサは、ブート・プロセッサ上で実行しているブート・コード・シーケンスの電気的および熱的プロファイルに似た電気的および熱的プロファイルを発生することができる。マスキング・コード・シーケンスは、ブート・コート・シーケンスと同一のコードであるが、マスキング・コード・シーケンスからはセキュア・キー情報にアクセスすることができないようにすることができる。
【００１９】
ブート・プロセッサは、データ処理システムにおける複数のプロセッサからブート・プロセッサとなるためにランダムに選択することができる。データ処理システムは、異種マルチプロセッサ・システム・オン・チップであり、第１の命令セットに従って動作する第１のプロセッサと、第１の命令セットとは異なる第２の命令セットに従って動作する１つ以上の第２のプロセッサと、を有することができる。
【００２０】
別の例示的な実施形態においては、データ処理システムが提供される。これは、ブート・プロセッサおよび少なくとも１つの非ブート・プロセッサを含む複数のプロセッサと、ブート・プロセッサに結合されたブート・コード・ストレージ・デバイスと、非ブート・プロセッサに結合されたマスキング・コード・ストレージ・デバイスと、を含む。ブート・プロセッサにおいてブート・コードを実行することによって、データ処理システムを動作状態にブートすることができる。少なくとも１つの非ブート・プロセッサは、マスキング・コードを実行して、ブート・プロセッサ上のブート・コードの実行をマスキングする電磁的シグニチャまたは熱的シグニチャの少なくとも一方を発生することができる。
【００２１】
複数のプロセッサの各プロセッサは、暗号化ブート・コードを復号しようと試み、ブート・プロセッサのみが暗号化ブート・コードの復号に成功することができる。各非ブート・プロセッサは、暗号化ブート・コードの復号の試みが失敗したことに応答して、マスキング・コードを実行することができる。
【００２２】
マスキング・コードは、ブート動作の間にデータ処理システムを監視するための動作を実行するための命令を含むことができる。非ブート・プロセッサの各々が実行するマスキング・コードは同一のマスキング・コードとすることができる。
【００２３】
非ブート・プロセッサの各々が実行する前記マスキング・コードによって、非ブート・プロセッサは、ブート・プロセッサ上で実行しているブート・コードの電気的プロファイルおよび熱的プロファイルに似た電気的プロファイルおよび熱的プロファイルを発生することができる。マスキング・コードは、ブート・コートと同一のコードであるが、マスキング・コードからはセキュア・キー情報にアクセスすることができないようにすることができる。
【００２４】
ブート・プロセッサは、データ処理システムにおける複数のプロセッサからブート・プロセッサとなるためにランダムに選択することができる。データ処理システムは異種マルチプロセッサ・システム・オン・チップであり、第１の命令セットに従って動作する第１のプロセッサと、第１の命令セットとは異なる第２の命令セットに従って動作する１つ以上の第２のプロセッサと、を有することができる。
【００２５】
更に別の例示的な実施形態では、コンピュータ読み取り可能プログラムを有するコンピュータ使用可能媒体を含むコンピュータ・プログラムが提供される。コンピュータ読み取り可能プログラムがデータ処理システム上で実行されると、データ処理システムは、前述した本方法の例示的な実施形態に関して先に概説した動作の様々なものおよびそれらの組み合わせを実行することができる。
【００２６】
本発明のこれらおよび他の特徴および利点は、本発明の例示的な実施形態の以下の詳細な説明に記載しており、または、以下の詳細な説明を考慮することによって当業者には明らかとなろう。
【００２７】
本発明の新規な特性と考えられる特徴は、特許請求の範囲に明記する。しかしながら、本発明自体は、好適な使用形態、その更に別の目的および利点と共に、例示的な実施形態の以下の詳細な説明を添付図面と関連付けて読み参照することによって、最も良く理解されよう。
【発明を実施するための最良の形態】
【００２８】
例示的な実施形態は、マルチプロセッサ・システムのブートのためにランダム・プロセッサを選択する装置および方法を提供する。例示的な実施形態は、マルチプロセッサ・システムをブートするためにプロセッサの１つを選択することができるいずれかのマルチプロセッサ・システムと共に用いるために実施可能である。従って、例示的な実施形態の機構は、対称型マルチプロセッサ（ＳＭＰ：symmetric multiprocessor）システム、異種マルチプロセッサ・システム（heterogeneous multiprocessor system）、非コヒーレント非対称型マルチプロセッサ・システム（non-coherent asymmetrical multiprocessor system）等に適用可能である。
【００２９】
例示的な実施形態を実施可能な１つのマルチプロセッサ・システムは、International Business Machines, Inc.（ニューヨーク州アーモンク）から入手可能なセル広帯域エンジン（ＣＢＥ：Cell Broadband Engine）である。ＣＢＥアーキテクチャに関連付けて例示的な実施形態を説明するが、例示的な実施形態の説明は単に典型的なものであり、例示的な実施形態の機構を実施可能なマルチプロセッサ・システムの種類または構成に関して何らかの限定を明示または暗示することを意図しないことは認められよう。本発明の精神および範囲から逸脱することなく、記載するＣＢＥアーキテクチャには多くの変更を行うことができる。
【００３０】
図１は、本発明の態様を実施可能なデータ処理システムの例示的なブロック図である。図１に示す例示的なデータ処理システムは、Cell Broadband Engine（ＣＢＥ）データ処理システムの一例である。本発明の好適な実施形態の説明においてはＣＢＥを用いるが、本発明はこれに限定されるわけではない。このことは、以下の説明を読めば当業者には容易に明らかとなろう。
【００３１】
図１に示すように、ＣＢＥ１００は、パワー・プロセッサ・ユニット（ＰＰＵ）１１６ならびにそのＬ１およびＬ２キャッシュ１１２および１１４を有するパワー・プロセッサ要素（ＰＰＥ）１１０と、多数の相乗プロセッサ要素（ＳＰＥ：synergistic processor element）１２０〜１３４とを含む。要素１２０〜１３４は、各々、それ自身の相乗プロセッサ・ユニット（ＳＰＵ）１４０〜１５４、メモリ・フロー制御１５５〜１６２、ローカル・メモリまたはストア（ＬＳ）１６３〜１７０、およびバス・インタフェース・ユニット（ＢＩＵユニット）１８０〜１９４を有し、これらは、例えば、組み合わせ直接メモリ・アクセス（ＤＭＡ）、メモリ管理ユニット（ＭＭＵ）、およびバス・インタフェース・ユニットとすることができる。また、高帯域内部要素相互接続バス（ＥＩＢ）１９６、バス・インタフェース・コントローラ（ＢＩＣ）１９７、およびメモリ・インタフェース・コントローラ（ＭＩＣ）１９８も設けられている。
【００３２】
ＣＢＥ１００は、システム・オン・チップとして、図１に示す要素の各々を単一のマイクロプロセッサ・チップ上に設けることができる。更に、ＣＢＥ１００は、異種処理環境であり、ＳＰＵの各々がシステム内の他のＳＰＵの各々から異なる命令を受信することができる。更に、ＳＰＵのための命令セットはＰＰＵのものとは異なる。例えば、ＰＰＵは縮小命令セット・コンピュータ（ＲＩＳＣ）に基づいた命令を実行することができ、一方で、ＳＰＵは単一入力多重データ（ＳＩＭＤ）命令を実行する。
【００３３】
ＳＰＥ１２０〜１３４は、互いに結合され、ＥＩＢ１９６を介してＬ２キャッシュ１１４に結合されている。更に、ＳＰＥ１２０〜１３４は、ＥＩＢ１９６を介してＭＩＣ１９８およびＢＩＣ１９７に結合されている。ＭＩＣ１９８は、共有メモリ１９９に対する通信インタフェースを提供する。ＢＩＣ１９７は、ＣＢＥ１００と、例えばSouthBridge（商標）通信プロセッサ等の他の外部バスおよびデバイスとの間の通信インタフェースを提供する。
【００３４】
ＰＰＥ１１０は、デュアル・スレッデッド（dual threaded）ＰＰＥ１１０である。このデュアル・スレッデッドＰＰＥ１１０および８個のＳＰＥ１２０〜１３４の組み合わせによって、ＣＢＥ１００は、１０の同時スレッドおよび１２８を超える未処理のメモリ要求を処理することができる。ＰＰＥ１１０は、計算作業量のほとんどを処理する他の８個のＳＰＥ１２０〜１３４のためのコントローラとして機能する。ＰＰＥ１１０を用いて従来のオペレーティング・システムを動作させることができ、一方で、ＳＰＥ１２０〜１３４は、例えばベクトル化浮動小数点コード実行を実行する。
【００３５】
ＳＰＥ１２０〜１３４は、相乗処理ユニット（ＳＰＵ）１４０〜１５４、メモリ・フロー制御ユニット１５５〜１６２、ローカル・メモリまたはストア１６３〜１７０、およびバス・インタフェース・ユニット１８０〜１９４を含む。ローカル・メモリまたはストア１６３〜１７０は、１つの例示的な実施形態では、２５６ＫＢの命令およびデータ・メモリを含む。これはＰＰＥ１１０に可視的であり、ソフトウェアによって直接アドレスすることができる。
【００３６】
ＰＰＥ１１０は、ＳＰＥ１２０〜１３４に小さいプログラムまたはスレッドをロードし、ＳＰＥをチェーン状につないで複雑な動作内の各ステップを処理することができる。例えば、ＣＢＥ１００を組み込んだセット・トップ・ボックスは、ＤＶＤの読み出し、ビデオおよびオーディオ復号、ならびに表示のためのプログラムをロードすることができ、データはＳＰＥからＳＰＥへと渡されて、最終的に出力ディスプレイ上に到着する。４ＧＨｚでは、各ＳＰＥ１２０〜１３４は理論上は３２ＧＦＬＯＰＳの性能を与え、ＰＰＥ１１０は同様のレベルの性能を有する。
【００３７】
メモリ・フロー制御ユニット（ＭＦＣ）１５５〜１６２は、システムの残り部分および他の要素に対するＳＰＵのインタフェースとして機能する。ＭＦＣ１５５〜１６２は、データ転送、保護、およびメイン・ストレージとローカル・ストレージ１６３〜１７０間の同期のための主要な機構を提供する。論理的には、１つのプロセッサ内で各ＳＰＵごとにＭＦＣがある。いくつかの実施では、多数のＳＰＵで単一のＭＦＣのリソースを共有することができる。かかる場合、ＭＦＣのために規定した機能およびコマンドは全て、各ＳＰＵごとにソフトウェアに対して独立しているように見えなければならない。ＭＦＣを共有することの効果は、実施に依存した機能およびコマンドに限定される。
【００３８】
例示的な実施形態は、例えばＣＢＥ１００のようなマルチプロセッサ・システムのブートのために、ＳＰＥ１２０〜１３４のうち１つ等のランダム・プロセッサを選択する装置および方法を提供する。ＣＢＥ１００をブートするためにどのＳＰＥ１２０〜１３４を用いるかをランダム化することによって、許可されていない人物がＣＢＥ１００のセキュリティを破る目的で電気的インタフェース、熱的アクティビティ、および他の電磁的アクティビティを監視してブート・シーケンスに関する情報を得ることがいっそう難しくなる。
【００３９】
例示的な実施形態の機構では、ＣＢＥ１００のブート動作を制御する一般的なロジック１９３がＣＰＥ１００に設けられている。一般的なロジック１９３はランダム・イベント発生器を含み、これが、どのＳＰＥ１２０〜１３４がブート・プロセッサとなってブート・コードを実行してシステムを動作状態にするかをランダムに選択する。ブートＳＰＥ１２０〜１３４のランダムな選択に基づいて、選択されたＳＰＥ、例えばＳＰＥ１２０に関連した構成ビットをセットして、このＳＰＥ１２０が実際のブート・プロセッサであることを示す。この後、選択されたＳＰＥ１２０に、ＣＢＥ１００をセキュアな方法で動作状態にブートするために必要なセキュリティ・キー（複数のキー）を供給する。選択されたＳＰＥがセキュアなブート手順を正常に完了すると、ＭＩＣ１９８、共有メモリ１９９、および後述の図２のフラッシュＲＯＭ２３０に対する通信リンク以外のＢＩＣ１９７の一部が停止されて動作することができないセキュアな状態から、ロックされていない状態へと移行する。いったんセキュアなＳＰＥがロックされていない状態に入ると、フラッシュＲＯＭ２３０が提供する暗号化コードを実行することによって、ＭＩＣ１９８、ＢＩＣ１９７（「訓練」と呼ばれるプロセス）、および他の全てのプロセッサ（ＳＰＥおよびＰＰＥ）を完全にイネーブルするプロセスを開始する。ＣＢＥにおいて用いられるセキュアなブート・プロセスに関する更に詳しい情報については、米国特許公開第２００５００２１９４４号を参照されたい。
【００４０】
いくつかの例示的な実施形態においては、ランダムに選択されたＳＰＥ１２０がセキュアなブート動作を実行する一方で、他のＳＰＥ１２２〜１３４は、実際のセキュアなブート動作をマスキングするための動作を実行する。このマスキングには、ブート・コード・シーケンス以外の他のコード・シーケンスを実行することが含まれ、このためＳＰＥ１２２〜１３４は、電気的出力、電磁的出力、または熱的出力あるいはそれら全てを発生する場合がある。これが侵入者によって監視されると、侵入者はどのＳＰＥ１２０〜１３４が実際のセキュアなブート動作を実行しているのかを見分けることが難しくなる。
【００４１】
異なるコード・シーケンスを発生することができる１つの方法は、ランダムな量を反復するループを実行するランダムな遅延要素をブート・コード内に挿入することである。これらのランダムな遅延要素を追加して、プロセッサをブートしながら、セキュアなブート・アルゴリズムがランダムに変化して異なる電磁および熱的シグニチャを生じ、これによって２つの異なるブート動作を経時的に比較することを難しくする。このようにして、各ＳＰＥ１２０〜１３４はブート・コードを実行するが、遅延量が異なるので、異なる電磁的および熱的シグニチャを発生させることができる。更に、同一のＳＰＥ１２０〜１３４が、セキュアなブート・コードを実行するたびに、異なる電磁的および熱的シグニチャを発生する。侵入者の観点から見ると、かかるマスキングのために、実際のブートＳＰＥ１２０をＣＰＥ１００内の他のＳＰＥ１２２〜１３４から見分けることが極めて難しくなる。
【００４２】
更に別の例示的な実施形態では、他のＳＰＥ１２２〜１３４が実行するコード・シーケンスは、ランダムに選択されたＳＰＥ１２０が実行するのと同じブート・コード・シーケ
ンスであるが、ダミーのセキュリティ・キーを用いる。このため、これらの他のＳＰＥ１２２〜１３４は、侵入者にとって、セキュアなブート動作を実行しているかのように動作し見えている。しかしながら、ＳＰＥ１２２〜１３４が監視されると、誤った電気的、電磁的、および熱的な出力が識別されるので、侵入者は、監視しているＳＰＥが実際にセキュアなブート動作を実行しているランダムに選択されたＳＰＥ１２０であると判定することが難しくなる。
【００４３】
更に別の例示的な実施形態では、ダミーのＳＰＥ（図示せず）を設けることによって、ランダムに選択されたブートＳＰＥ１２０のマスキングを実行することができる。ダミーのＳＰＥは、電磁的、熱的等の監視装置の観点から見ると、固有のものに見える。このダミーＳＰＥ上でブート・コード・シーケンスとは異なるプロセスを実行することによって、ＣＰＥ１００に対する攻撃をこのダミーＳＰＥに向かわせる。このように、侵入者がセキュリティ機構を避けてシステムにアクセスしようとする場合、侵入者は、ＣＢＥ１００の残りの部分には実際にアクセスしないダミーＳＰＥにアクセスするだけである。更に、侵入者がダミーＳＰＥを脅かしてコードを実行しようとすると、ダミーＳＰＥはＣＰＥ１００の残り部分を停止させて、それ以上の侵入の試みを防ぐことができる。
【００４４】
これより、上述の例示的な実施形態の各々について、更に詳細に説明する。本明細書においては、例示的な各実施形態を別個に記載するが、例えばＣＢＥ１００のようなマルチプロセッサ・システムのセキュリティの向上を達成するように、例示的な実施形態を様々な方法で組み合わせることも可能であることは認められよう。このため、特定の状況およびマルチプロセッサ環境に適切であると考えられる例示的な実施形態のいかなる組み合わせも、本発明の精神および範囲内にあることが意図される。
【００４５】
図２は、１つの例示的な実施形態に従った、ランダム・ブート・プロセッサ選択機構の主要な動作構成要素を示す例示的な図である。例示的な実施形態の説明を簡潔にするため、図２はマルチプロセッサ・システムの１つのプロセッサのみを詳細に示していることは認められよう。しかしながら、マルチプロセッサ・システムのプロセッサは各々、図２に明示的に示すプロセッサのものと同様の要素構成を有し、同様に動作することは認められよう。本発明の精神および範囲から逸脱することなく、いかなる数のプロセッサもマルチプロセッサ・システムに含むことができる。しかしながら、例示的な実施形態を説明する目的のために、プロセッサの数は、図１に示したＣＢＥアーキテクチャにおいてと同じ８であると想定する。
【００４６】
図２に示すように、ランダム・ブート・プロセッサ選択機構の主要な動作構成要素は、システム・コントローラ２１０、セキュア・キー・ストレージ２２０、フラッシュＲＯＭ２３０、および一般的なロジック２４０を含む。１つの例示的な実施形態においては、図１のＣＢＥアーキテクチャを例として、要素２１０〜２４０は、ＣＰＥアーキテクチャが実施されるチップ上に設けた要素とすることができる。すなわち、これらの要素２１０〜２４０は、マルチプロセッサ・システム・オン・チップ（ＳｏＣ）のロジック内に内蔵することができ、このため、これらの要素２１０〜２４０が行う動作はオン・チップで実行することができる。あるいは、要素の１つ以上をチップ外に設けることも可能である。例えば、フラッシュＲＯＭ２３０をチップ外に設けることができる。
【００４７】
システム・コントローラ２１０は、システムのパワーを受容可能かつ安定したレベルにするため、パワー・オン・リセット（ＰＯＲ）の初期動作を実行する役割を果たす。すなわち、システム・コントローラ２１０は、電圧を上げ、システム・クロックをオンにし、マルチプロセッサ・システムをブート動作が開始可能な状態とするために必要な他の初期動作を実行する役割を果たす。これは、一般に当技術分野では既知である。このＰＯＲ動作の一部として、プロセッサ２８０〜２９０は、セキュアな動作モードにおいて立ち上げられる。このセキュアな動作モードでは、プロセッサのローカル・ストアは、プロセッサの外部でアクセスすることができない。いったんこれらの初期動作が完了してシステムが許容可能パワー状態になると、システム・コントローラ２１０は「パワー良好」状態を一般的なロジック２４０に信号で知らせる。
【００４８】
システム・コントローラ２１０からの「パワー良好」信号に応答して、一般的なロジック２４０は、マルチプロセッサ・システムを動作状態にブートするためのブート動作を始めて、ソフトウェア・プログラムが実行を開始することができるようにする。このブート動作の一部として、一般的なロジック２４０のランダム・イベント発生器２４２は、プロセッサの１つ、例えばプロセッサ２８０をランダムに選択して、マルチプロセッサ・システムのためのブート・プロセッサとする。ランダム・イベント発生器２４２は、マルチプロセッサ・システムの各プロセッサに送信される信号を発生する。この信号は、ブート・プロセッサとして選択されたプロセッサに対してのみ論理的にハイである。この信号は、ランダムに選択されたプロセッサ２８０の構成ビット・レジスタ２５０の値を、例えば「１」のような値に効果的にセットして、このプロセッサ２８０がブート・プロセッサであることを示す。他のプロセッサでは、それらの各構成ビット・レジスタ内の構成ビット値は初期値のままに維持され、これによって、これらのプロセッサがマルチプロセッサ・システムのためにランダムに選択されたブート・プロセッサではないことを示す。
【００４９】
マルチプロセッサ・システムをブートするためのブート・コードは、フラッシュＲＯＭ２３０に暗号化フォーマットでストアされている。暗号化ブート・コード２３２は、プロセッサ２８０〜２９０の各々に供給することができる。すなわち、ブート・シーケンスの一部として、プロセッサ２８０〜２９０の各々は、フラッシュＲＯＭ２３０から暗号化ブート・コード２３２の読み出しを試みることができる。しかしながら、ブート・プロセッサとしてランダムに選択されたのはプロセッサのうち１つのみなので、この１つのみのプロセッサが暗号化ブート・コード２３２を復号し、これを適切に実行してマルチプロセッサ・システムを動作状態とすることができる。これは、プロセッサの各々に設けられた選択器２６０を用いて達成される。この選択器２６０は、暗号化ブート・コード２３２を復号するために用いられるキー値である秘密鍵、および暗号化ブート・コード２３２を復号することができないランダムに発生したキー値から選択する。
【００５０】
構成ビット・レジスタ２５０にストアされた値を用いて、選択器２６０に供給する選択信号を発生する。例えば、選択器２６０はマルチプレクサとすることができ、セキュア・キー・ストレージ２２０からセキュア・キー（Ｓｋｅｙ）を１つの入力として受信し、ランダム値発生器２６２からランダムに発生したキー値を第２の入力として受信し、これらの２つの入力のうちどちらを選択すべきかを示す選択信号を構成ビット・レジスタ２５０から受信する。構成ビット・レジスタ２５０が、このプロセッサがランダムに選択したブート・プロセッサであることを示す値をストアしている場合、Ｓｋｅｙ入力が選択される。構成ビット・レジスタ２５０が、このプロセッサがランダムに選択されたブート・プロセッサではないことを示す値をストアしていると、ランダムに発生したキー値入力を選択器２６０によって選択することができる。次いで、選択したキー値はＳＰＥ２７０に出力される。
【００５１】
ＳＰＥ２７０は、選択されたキー値および暗号化ブート・コード２３２を受信する。次いで、ＳＰＥ２７０は、暗号化ブート・コード２３２の復号を試みる。選択されたキー値がセキュア・キー・ストレージ２２０からのＳｋｅｙである場合、ＳＰＥ２７０は適切に暗号化ブート・コード２３２を復号し、その中のブート・コード命令を実行してシステムを動作状態にすることができる。選択されたキー値がセキュア・キー・ストレージ２２０からのＳｋｅｙではない場合、復号は失敗し、ＳＰＥ２７０はブート・コード命令を実行することができない。
【００５２】
ブート・プロセッサをランダムに選択し、このランダムに選択したブート・プロセッサを用いてマルチプロセッサ・システムをブートするための上述のプロセスは、マルチプロセッサ・システムが実行する各パワー・オン・リセット（ＰＯＲ）動作ごとに実行することができる。このため、マルチプロセッサ・システムをブートするたびに、複数のプロセッサのうちの異なるものをブート・プロセッサとしてランダムに選択することができる。この結果、システムに侵入しようとする者は、どのプロセッサがブート・プロセッサであるかを事前に判断し、その特定のプロセッサに対してマルチプロセッサ・システムの電磁的および熱的状況の測定を指示することができない。
【００５３】
それどころか、侵入しようとする者は、ある１つのプロセッサが最終的にランダム・プロセッサとしてブート・プロセッサに選択されることを期待してマルチプロセッサ・システムの多数のブート動作を通してこの１つのプロセッサを監視しなければならないか、または、全てのプロセッサを監視することによってどのプロセッサがブート・プロセッサであるかを識別して個別の電磁的および熱的状況の測定によって必要な情報を得ようとしなければならない。例えば、８プロセッサ・システムでは、８個のプロセッサ全てを監視しなければならないので、ブート・シーケンスを監視する困難さは８倍に増大する。更に、そのような監視を行うには更に多くのプローブおよびハードウェアが必要となり、これによって、かかる監視を試みる際の困難さが増す。
【００５４】
図３は、１つの例示的な実施形態に従った、ランダム選択機構を示す典型的な図である。上述のように、例示的な実施形態の背後にある基本的なアイディアは、複数のプロセッサから１つのプロセッサをマルチプロセッサ・システムのためのブート・プロセッサにランダムに選択することである。このランダムな選択を行うために、ランダム・イベント発生器および選択器機構を設ける。例示的な実施形態において、ランダム・イベント発生器はマルチプロセッサ・システムの一般的なロジックに設け、選択器はプロセッサの各々に関連付けて設ける。図３は、１つの例示的な実施形態に従ったランダム・イベント発生器および選択器の１つの具体化の図である。
【００５５】
図３に示すように、ランダム・イベント発生器３１０は、例えば図２のランダム・イベント発生器２４２に対応するものとすることができ、線形フィードバック・シフト・レジスタ（ＬＦＳＲ）カウンタ３２０、リング・オシレータ３３０、および選択信号レジスタ／デコーダ３４０を含む。リング・オシレータ３３０は、出力が２つの電圧レベル間で変動する奇数のＮＯＴゲートから成るデバイスである。ＮＯＴゲートまたはインバータはチェーン状に配置され、最後のインバータの出力は最初のインバータにフィードバックされる。奇数のインバータのチェーンの最後の出力は、最初の入力の論理ＮＯＴである。この最後の出力は、最初の入力をアサートしてからある有限時間量の後にアサートされる。入力に対するこの最後の出力のフィードバックは不安定な変動を引き起こし、これは、電源上の電磁ノイズおよび温度等のランダムな要素によって時間と共に変化する。
【００５６】
リング・オシレータ３３０の出力は、クロック信号ｃｌｋと共に、ＬＦＳＲカウンタ３２０に対する入力として供給される。ＬＦＳＲカウンタ３２０はシフト・レジスタであり、その入力ビットは以前の状態の線形関数である。単一ビットの線形関数のみがＸＯＲおよび反転ＸＯＲであり、従って、ＬＦＳＲは、入力ビットが全シフト・レジスタ値のいくつかのビットの排他的ＯＲ（ＸＯＲ）によって駆動されるシフト・レジスタである。
【００５７】
ＬＦＳＲカウンタ３２０の初期値はシード（seed）と呼ばれる。レジスタの動作が決定論的であるので、ＬＦＳＲカウンタ３２０が生成する値のシーケンスは、その現在の（または以前の）状態によって完全に決定される。適切なフィードバック機能を有するＬＦＳＲカウンタ３２０は、ランダムに現れて極めて長いサイクルを有するビット・シーケンスを生成することができる。例示的な実施形態において、このランダム性は、ＬＦＳＲカウンタ３２０に対する入力が、リング・オシレータ３３０の生成する変動と、互いに独立して変動するリング・オシレータ３３０の周波数および入力クロックｃｌｋ間の相違との積であるという点で、より明らかとなる。
【００５８】
ＬＦＳＲカウンタ３２０は、入力としてリング・オシレータ３３０からの出力およびクロック信号ｃｌｋを受信し、出力ビット・ストリームを発生し、これが選択信号レジスタ／デコーダ３４０にストアされる。リング・オシレータ３３０のインバータは、ＬＦＳＲカウンタ３２０に対する出力信号に遅延を生じさせるので、リング・オシレータ３３０の周波数と入力クロックｃｌｋとの間には相違がある。この周波数の相違は、図４に示すように、ＬＦＳＲカウンタ３２０に対する入力にジッタを発生する。このジッタは、ＬＦＳＲカウンタ３２０が発生する出力をランダム化するランダム性の尺度を与える。  
【００５９】
ＬＦＳＲカウンタ３２０の出力は、選択信号レジスタ／デコーダ３４０にストアされる。図示する例において、ＬＦＳＲカウンタ３２０は３ビット・カウンタであり、値１〜８を符号化するように解釈される３ビット出力を発生する。選択信号レジスタ／デコーダ３４０のデコーダ機能により、ランダムな３ビット入力値に基づいて８個の一意の出力のうち１つを選択する。選択信号レジスタ３４０にストアされたビットの状態に基づいて、例えば図１のＳＰＥ０〜ＳＰＥ７  １２０〜１３４のような様々なプロセッサの構成ビット・レジスタにハイまたはローの状態の信号が出力され、これによって構成ビット・レジスタにストアされる値がセットされ、こうして、マルチプロセッサ・システムのためのブート・プロセッサとしてプロセッサの１つが選択される。
【００６０】
いったん構成ビット・レジスタ値がセットされると、これらの値を用いて、対応する選択器３５０〜３７０に選択信号を供給する。図３に示すように、選択信号はマルチプレクサ３５２、３６２、３７２に供給され、これと共にＳｋｅｙ入力およびランダムなキー値入力も供給される。選択信号の状態に基づいて、Ｓｋｅｙ入力またはランダムなキー値入力が、マルチプレクサ３５２、３６２、３７２の各々によって選択される。ランダム・キー値入力は、ブート・プロセッサを選択するための上述したランダム・イベント発生器構成と同じまたは異なるタイプの１つ以上のランダム値発生器によって発生することができる。すなわち、上述したものと同様のランダム・イベント発生器構成を用いて、Ｓｋｅｙと同じ長さを有するキー値をランダムに発生させることができる。次いで、これらのランダムなキー値は、マルチプレクサ３５２、３６２、３７２に入力される。
【００６１】
このシステムは、例えば上述したデコーダ機能によって、マルチプレクサ３５２、３６２、３７２に入力される選択信号の１つのみがＳｋｅｙ入力を選択し、他は全てランダム・キー値入力を選択するように設計されている。マルチプレクサ３５２、３６２、３７２からの出力は、対応するＳＰＥに供給されるので、ＳＰＥはこれらの出力を利用することができ、ランダムに選択したブート・プロセッサの場合にはブート・コードを復号してブート・コードを実行し、または、マルチプロセッサ・システムにおける他の全てのプロセッサの場合には、ブート・コードを復号しようとするがマルチプロセッサ・システムをブートすることができないようになっている。
【００６２】
ランダム・イベント発生器および選択器を提供するための上述した機構は単に代表的なものを示すだけであり、例示的な実施形態において使用可能なランダム・イベント発生器および選択器の種類に関して何らかの限定を明示または暗示することを意図しないことは認められよう。例えば、図３に示すようなリング・オシレータおよびＬＦＳＲカウンタ構成を用いるのではなく、他のランダム・イベント発生器を利用することも可能である。例えば、熱センサを用いて熱ノイズを測定し、これを用いてランダム・イベントを発生させて、プロセッサのうち１つをブート・プロセッサとして選択することができる。同様に、量子ドット（ｑ−ｄｏｔ）、または半導体ナノ結晶を用いて、量子ソース効果（quantum source effects）を測定し、これをブート・プロセッサとしてプロセッサを選択するためのランダム性のソースとして用いることも可能である。例示的な実施形態と共に、いずれかの強力なランダム性のソースを用いて、マルチプロセッサ・システムのブート・プロセッサとして用いるプロセッサをランダムに選択することができる。
【００６３】
更に、図３が示すリング・オシレータ３３０は５個のインバータを有するが、例示的な実施形態はこれに限定されないことは認められよう。奇数のインバータがある限り、本発明の精神および範囲から逸脱することなく、いずれの数のインバータも使用可能である。実際、ＬＦＳＲカウンタ３２０に対する入力にジッタを追加するため、リング・オシレータ３３０のインバータ・チェーンに更にインバータを加えて、入力クロック信号ｃｌｋの周波数とリング・オシレータ３３０からの入力との間にいっそう大きな相違を与えることが望ましい場合がある。相違の量は、例示的な実施形態を実現する特定のマルチプロセッサ・システムの所望の動作特性に基づいて選択すれば良い。
【００６４】
更に、図２および図３は、ランダム・キー値が各プロセッサごとに別個のランダム・キー値発生器によって発生されていることを示すが、例示的な実施形態はこれに限定されない。これとは異なり、プロセッサ全てのために単一のランダム・キー値発生器を設けて、このランダム・キー値発生器が１つ以上のランダム・キー値を発生し、これをプロセッサに入力することも可能である。このため、例えば、ランダム・キー値発生器は、プロセッサ全てに供給される単一のランダム・キー値、各プロセッサごとの別個のランダム・キー値（この場合、例えば７個の異なるランダム・キー値を発生することができる）、または、マルチプロセッサ・システムの様々なプロセッサに選択的に供給可能ないずれかの数のランダム・キー値を発生することができる。
【００６５】
１つの例示的な実施形態では、図５に示すように、複数のランダム・キー値発生器３９０を設けて、各々が異なるランダム・キー値を出力することができる。あるいは、上述したように、これらの別個のランダム・キー値発生器の代わりに、単一のランダム・キー値発生器を用いることも可能である。これらのランダム・キー値は、マルチプロセッサ・システムにおいて、例えばＳＰＥ３９３および３９４のようなプロセッサの、例えばマルチプレクサ３９１および３９２のような選択器に対する入力として供給することができる。これと共に、例えばｅＦｕｓｅのようなＳｋｅｙストレージ３９５からセキュア・キー（Ｓｋｅｙ）が供給され、これは、マルチプロセッサ・システムをブートするためにブート・コードを復号する際に実際に用いられる。図示のように、ランダムに発生したキー値およびＳｋｅｙ値は、８本の同一の信号ライン上で多重化され、マルチプレクサ３９１および３９２の各々に供給されて、侵入者がセキュアなキー・ストレージ３９５からの信号ラインとしてラインの１つを分離することを更に難しくすることができる。
【００６６】
８個の全てのキー値入力はマルチプレクサ３９１および３９２に供給され、これらの８個の入力の１つを選択するために、一般的なロジック３９７内のランダム・イベント発生器３９６からの選択信号を用いることができる。この場合、Ｓｋｅｙ入力および１つのランダム・キー値から単純に選択するのではなく、マルチプレクサ３９１および３９２は、Ｓｋｅｙ入力および７個のランダム・キー値から選択することができる。このため、第１のプロセッサは、この第１のプロセッサをブート・プロセッサとしてランダムに選択したことに基づいてＳｋｅｙ入力を選択することができ、第２のプロセッサは第３のランダム・キー値を選択することができ、第３のプロセッサは第４のランダム・キー値を選択することができ、第５のプロセッサは第１のランダム・キー値を選択することができる等となる。このため、各プロセッサが、Ｓｋｅｙまたはランダムに発生したキー値のいずれかである異なるキー値を受信することができる。この結果、侵入者は、マルチプロセッサ・システムのバス・トラヒックを監視している場合、どのキー値が正しいキー値であるかを見分けることが難しくなる。
【００６７】
更に、図３および図５に示した機構は、この設計が単一チップ上にある場合、マルチプロセッサ・システムを設けるセラミック・パッケージの下位金属層または相互接続の最下位層に設けると好ましいことは認められよう。マルチプロセッサ・システムの電気的および熱的特性を探索する能力は現在、マルチプロセッサ・セラミック・パッケージの上位層に限られているので、これらの要素を下位金属層に置くことによって、これらの要素の動作を探索することはいっそう難しくなる。このため、侵入しようとする者が、ランダム・イベント発生器および選択器の熱的および電気的特性を監視して、これらの要素が供給するキー値を判定することは、不可能でないとしても極めて難しい。
【００６８】
上述の機構を用いて、マルチプロセッサ・システムの複数のプロセッサ内の１つのプロセッサをランダムに選択してマルチプロセッサ・システムをブートすることができる。このように、プロセッサの電気的および熱的特性を監視して、例えば秘密鍵のようなマルチプロセッサ・システムをブートするために用いる機密情報を取得することは、いっそう難しくなり、許可されずにマルチプロセッサ・システムにアクセスしようとする者にとって抑止力となる可能性がある。
【００６９】
マルチプロセッサ・システムのブートのためにプロセッサをランダムに選択する上述の機構は、ブート・シーケンスの監視に対して充分な程度の保護を与えるが、許可されていない人物が執拗であれば、かかる人物がシステムを「ハックする」ことはなお可能であり得る。かかる監視を実質的に不可能とするために、例示的な実施形態は、ランダムに選択したプロセッサ上でブート・シーケンスをマスキングするための追加の機構を提供して、許可されていない人物が、マルチプロセッサ・システムをブートするための実際のブート・シーケンスをどのプロセッサが現在実行しているのかを見分けることができないようにする。
【００７０】
１つの例示的な実施形態では、マスキング動作には、ブート・プロセッサに選択されなかったプロセッサの各々が異なる命令セットを実行することが含まれ、これによって電気的および熱的シグニチャのマスキングを行い、ブート・プロセッサをシステム内の他のプロセッサから見分けることを難しくする。異なるプロセッサが実行するコード・シーケンスは、同一のデフォルト・コード・シーケンスとすることができ、プロセッサに関連付けたメモリ内に供給するか、または、プロセッサがブート・コード・シーケンスを復号することができない場合、他の方法でプロセッサによってアクセス可能である。例えば、デフォルト・コード・シーケンスは、プロセッサの各々に関連付けたローカル・ストアのセキュアな部分に設けることができる。あるいは、デフォルト・コード・シーケンスは、オン・チップまたはチップ外に設けたフラッシュＲＯＭまたは他のストレージ・デバイスに設けることができる。
【００７１】
プロセッサがフラッシュＲＯＭから受信した実際の暗号化ブート・コードを復号することができない場合、プロセッサは、ローカル・ストレージのこのセキュアな部分にデフォルトで戻り、これによってプロセッサは別のプロセッサ上で実行されているブート・コード・シーケンスをマスキングするための命令を実行することができる。この命令シーケンスは、使用可能な情報を何ら発生せず、単にマスキング機能のみを提供することができる。あるいは、この命令シーケンスを用いて、例えば、ブート動作または他の有用な動作中にシステムを監視するための動作を実行することができる。
【００７２】
１つの例示的な実施形態において、選択されなかったプロセッサ、例えば非ブート・プロセッサの各々において実行されるコードは、同一である。選択されなかったプロセッサの各々が実行するコードが同一である例示的な実施形態において、これらの選択されなかったプロセッサの各々で実行されるコードが発生する電気的および熱的プロファイルは、実際のブート・コードに似ているが、マルチプロセッサ・システムのセキュリティを破るために侵入者が必要とする機密情報を何ら供給しないことが好ましい。かかるコードは、実際のブート・コードのものと類似の動作を実行することができるが、マルチプロセッサ・システムの機密に関わる部分にアクセスしない。実際、１つの例示的な実施形態において、マルチプロセッサ・システムをブートするために用いる同一のブート・コードを、選択されなかったプロセッサによって使用可能であるが、秘密鍵（Ｓｋｅｙ）および他の特定の人にだけ許可される情報にはアクセスすることができない。
【００７３】
この結果、これらの選択されなかったプロセッサの熱的プロファイルおよびバス・トラヒックは、実際のブート・シーケンスに近いものである。このため、監視プローブを用いて熱的プロファイル、バス・トラヒック等を監視する侵入者の観点から見ると、この侵入者は、実際のブート動作を実行しているのがどのコアかを解読することはできない。なぜなら、監視プローブを介してコアは全て同一に見えるからである。このような曖昧さによって、改ざんは阻止され、実際のブート・コード・シーケンス、秘密鍵情報等を分離することがいっそう難しくなる。
【００７４】
他の例示的な実施形態では、選択されなかったプロセッサは各々、異なる命令セットを実行することができる。選択されなかったプロセッサの各々において異なる命令セットを実行することによって、電気的または熱的プローブを用いて監視した場合、プロセッサはどれも固有のものに見えない。この結果、どのプロセッサがブート・プロセッサであるかを識別するために熱的プロファイルまたはバス・トラヒック等の際立った特徴をプローブによって識別することができない。
【００７５】
これらの異なる命令セットは、マルチプロセッサ・システムにおいて各プロセッサごとにランダムに選択することができる。このため、例えば、フラッシュＲＯＭ等のオン・チップ・ストレージ・デバイスにストアされたコード・シーケンスのための異なる開始アドレスをランダムに選択し、マルチプロセッサ・システムのプロセッサに供給することができる。次いで、プロセッサは、ランダムに選択された開始アドレスにおいて命令の実行を開始し、これによって、実際のブート・コード・シーケンスをマスキングする異なる熱的プロファイルおよびバス・トラヒックを発生することができる。
【００７６】
異なるプロセッサのための異なるコード・シーケンスを提供する１つの方法は、ランダムな遅延要素が挿入されたブート・コードを供給することである。これらの遅延要素は、例えばランダムな回数だけ反復するループとすることができる。かかる遅延要素は、ランダムに選択したブート・プロセッサが実行する実際のブート・コード・シーケンスおよび選択されなかったプロセッサが実行するブート・コード・シーケンスの双方において供給することができる。このランダムな遅延によって、プロセッサの熱的およびバス・トラヒック特徴を監視している侵入者の観点からは、ブート・コードが各プロセッサ上で異なっているように「見える」。この結果、侵入者は、マルチプロセッサ・システムをブートする実際のブート・コードをどのプロセッサが実行しているかを見分けることができない。
【００７７】
更に別の例示的な実施形態においては、侵入者によって監視された場合に固有のものであるかのように見えるダミーのプロセッサを設ける。この例示的な実施形態は前述の実施形態の組み合わせであり、１つのプロセッサをブート・プロセッサとしてランダムに選択し、選択されなかったプロセッサのうち１つのプロセッサをダミーのプロセッサに選択してブート・コード・シーケンスから固有の熱的およびバス・トラヒック・プロファイルを提供するコードを実行し、他のプロセッサは実際のブート・コード・シーケンスの熱的プロファイルおよびバス・トラヒックをできる限り忠実に複製する。このため、侵入者は、ダミーのプロセッサを他のプロセッサとは異なる固有のものであると検出し、このプロセッサが実際のブート・コード・シーケンスを実行していると結論付ける。従って、侵入者は、熱的プロファイルおよびバス・トラヒックの観点から他のプロセッサと同様に見える実際のブート・プロセッサではなく、このダミー・プロセッサに攻撃を向ける。更に、侵入者がコードを実行するか、または他の方法でダミー・プロセッサにアクティブに干渉しようとすると、ダミー・プロセッサはシステムの停止を信号で知らせることができる。
【００７８】
図６から図９は、例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。図６は第１のマスキング動作を示し、選択されなかったプロセッサの各々において、監視プローブの観点からブート・コード・シーケンスと同じに見えるコードを実行する。図６に示すように、ＳＰＥ０  ４１０は、前述した機構を用いる等の方法で、マルチプロセッサ・システム４００のブート・プロセッサとしてランダムに選択される。従って、ＳＰＥ０  ４１０は、秘密鍵を受信し、フラッシュＲＯＭからのブート・コード・シーケンスを復号し、マルチプロセッサ・システム４００を動作状態にするために必要な実際のブート・コード動作を実行する。他のＳＰＥすなわちＳＰＥ１〜ＳＰＥ７  ４１２〜４２４は、監視プローブの観点からブート・コード・シーケンスのように見えるコードを実行する。
【００７９】
上述のように、他のＳＰＥ４１２〜４２４が実行するコード・シーケンスは、ローカル・ストレージのセキュアな部分に供給されるデフォルトのコード・シーケンスとすることができる、これによって、ＳＰＥ４１２〜４２４は、ＳＰＥ０４１０上で実行されているブート・コード・シーケンスをマスキングするための命令を実行する。これらの選択されないＳＰＥ４１２〜４２４の各々で実行されるコードは、好ましくは、実際のブート・コードに似ているが侵入者がマルチプロセッサ・システムのセキュリティを脅かすために必要とする機密情報を何ら提供しない電気的および熱的プロファイルを発生するコードである。かかるコードは、実際のブート・コードのものと類似の動作を実行可能であるが、マルチプロセッサ・システム４００の機密に関わる部分にはアクセスすることができない。
【００８０】
図７は、選択されなかったプロセッサの各々においてランダムに選択した異なるアルゴリズムを実行する別の例示的な実施形態を示す。図７に示すように、ＳＰＥ０は、この場合もブート・プロセッサに選択されるので、マルチプロセッサ・システム４００を動作状態にブートするためのブート・コードを実行する。他のＳＰＥ４１２〜４２４の各々は、別個のランダムに選択したアルゴリズムを実行し、これによって異なる熱的プロファイルおよび異なるバス・トラヒックをＥＩＢに発生する。このため、各ＳＰＥ０〜７は、他のＳＰＥ４１０〜４２４の各々と比較すると固有のものに見える。従って、どのＳＰＥ０〜７  ４１０〜４２４がマルチプロセッサ・システム４００をブートするための実際のブート・プロセッサであるかを見分けることはできない。
【００８１】
上述したように、これらの異なるアルゴリズムは、マルチプロセッサ・システムにおいて各ＳＰＥ４１２〜４２４ごとにランダムに選択することができる。このため、例えば、フラッシュＲＯＭのようなオン・チップ・ストレージ・デバイスにストアされたコード・シーケンスのために異なる開始アドレスをランダムに選択し、ＳＰＥ４１２〜４２４に供給することができる。次いで、ＳＰＥ４１２〜４２４は、ランダムに選択した開始アドレスにおいて命令の実行を開始し、これによって、実際のブート・コード・シーケンスをマスキングする異なる熱的プロファイルおよびバス・トラヒックを発生することができる。
【００８２】
あるいは、ランダムな遅延要素をブート・コードに挿入して、このブート・コードをＳＰＥ４１０〜４２４の各々に提供することができる。これらの遅延要素は、例えばランダムな回数だけ繰り返すループとすることができる。このランダムな遅延のために、プロセッサの熱的およびバス・トラヒックの特徴を監視している侵入者の観点からは、ＳＰＥ４１０〜４２４の各々においてブート・コードが異なるように「見える」。この結果、侵入者は、マルチプロセッサ・システムをブートする実際のブート・コードをどのプロセッサが実行しているかを見分けることができない。
【００８３】
図８は、別の例示的な実施形態を示し、侵入者からの攻撃の対象とすることができるダミー・プロセッサが設けられている。図８に示すように、ＳＰＥ０はランダムに選択したブート・プロセッサであり、ブート・シーケンスを実行する。ＳＰＥ１〜ＳＰＥ４  ４１２〜４１８およびＳＰＥ６〜ＳＰＥ７  ４２２〜４２４は、図６に関して上述した実施形態においてと同様に、熱的およびバス・トラヒック監視の観点からはブート・コード・シーケンスのように見えるコードを実行する。一方、ＳＰＥ５  ４２０はランダムに選択したアルゴリズムを実行する。これは、図７に関して上述したのと同様の方法でランダムに選択することができる。
【００８４】
このため、プロセッサ４１０〜４２４の特徴を監視する侵入者の観点からは、ＳＰＥ０〜ＳＰＥ４  ４１０〜４１８およびＳＰＥ６〜ＳＰＥ７  ４２２〜４２４は全て同一のコードを実行しているように見える。しかしながら、ＳＰＥ５  ４２０は、他のＳＰＥとは異なった固有のものに見える。従って、マルチプロセッサ・システムのブート・シーケンスを攻撃しようとする侵入者は、実際のブート・プロセッサＳＰＥ０  ４１０ではなくＳＰＥ５  ４２０に攻撃を向ける可能性がある。なぜなら、侵入者にとっては、ＳＰＥ５  ４２０が実際のブート・プロセッサであるように見えるからである。
【００８５】
実際のブート・プロセッサが各パワーオン・リセット（ＰＯＲ）動作によってランダムに選択されるのと同じように、ダミー・プロセッサも、選択されなかったプロセッサの中からランダムに選択することができる。このため、各ＰＯＲ動作ごとに異なるブート・プロセッサおよびダミー・プロセッサを選択することができ、侵入者は、マルチプロセッサ・システムにアクセスするために攻撃する実際のブート・シーケンスを実行しているのがどのプロセッサであるかを推定することがいっそう難しくなる。
【００８６】
完全性のため、図９は、システムをブートするために用いるブート・コードがプロセッサの各々によって実行される前述した例示的な実施形態を示す。この例示的な実施形態では、ランダムに選択したブート・プロセッサのみが秘密鍵（Ｓｋｅｙ）に対するアクセスを与えられ、他のプロセッサはランダムに選択したキー（Ｒｋｅｙ１〜Ｒｋｅｙ７）を受信する。プロセッサの各々は、例えばＳｋｅｙまたはＲｋｅｙのような与えられたキーを用いてブート・コードを復号し実行しようとする。ランダムに選択されたブート・プロセッサのみが、ブート・コードを正しく復号してそれを実行し、データ処理システムを動作状態にすることができる。しかしながら、外部の監視者にとっては、全てのプロセッサがシステムをブートしているように見え、これによって実際のブート・プロセッサがマスキングされる。なぜなら、それらは各々システムを復号しブートしようとして同様のタスクを実行しているからである。すなわち、プロセッサは各々、同様の熱的シグニチャまたは電気的シグニチャあるいはその双方を発生して、侵入者が測定プローブ等を用いてどのプロセッサが実際のブート・プロセッサであるかを見分けることを難しくする。
【００８７】
例示的な実施形態において行うように、ブート・プロセッサのランダムな選択およびブート・シーケンスのマスキングを用いることで、マルチプロセッサ・システムに侵入しようとする者にとっては、どのプロセッサがブート・コード・シーケンスを実行しているかを見分けることが極めて難しくなる。このため、侵入しようとする者がプロセッサの熱的プロファイルおよびバス・トラヒックを監視し、暗号化ブート・コードにアクセスする際に用いるための秘密鍵情報を識別することは極めて難しくなる。更に、侵入しようとする者が、システム内への侵入が可能であるブート・コード・シーケンス内の場所を識別することは極めて難しくなる。従って、マルチプロセッサ・システムは、ブート・シーケンスに対する不正のアクセスに対していっそうセキュアとなる。
【００８８】
図１０〜図１１は、マルチプロセッサ・システムにおいて１つのプロセッサをブート・プロセッサとしてランダムに選択し、ブート・コード・シーケンスをマスキングするための例示的な動作の概要を示すフローチャートである。フローチャート図の各ブロックおよびフローチャート図のブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、プロセッサまたは他のプログラマブル・データ処理装置に供給されて機械を生成することができ、プロセッサまたは他のプログラマブル・データ処理装置上で実行する命令が、フローチャート・ブロックまたは複数のブロックにおいて明記される機能を実施するための手段を生成するようになっている。また、これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能メモリまたはストレージ媒体にストアすることも可能であり、これは、プロセッサまたは他のプログラマブル・データ処理装置に特定の方法で機能するように指示することができ、コンピュータ読み取り可能メモリまたはストレージ媒体にストアされた命令が、フローチャートのブロックまたは複数のブロックに明記された機能を実施する命令手段を含む製造品を生成するようになっている。
【００８９】
従って、フローチャート図のブロックは、特定の機能を実行するための手段の組み合わせ、特定の機能を実行するためのステップおよび特定の機能を実行するためのプログラム命令手段の組み合わせをサポートする。また、フローチャート図の各ブロックおよびフローチャート図のブロックの組み合わせは、特定の機能またはステップを実行する特殊目的のハードウェア・ベースのコンピュータ・システムによって、または、特殊目的のハードウェアおよびコンピュータ命令の組み合わせによって実行可能であることは理解されよう。
【００９０】
図１０は、マルチプロセッサ・システムをブートするためにブート・プロセッサをランダムに選択するための例示的な動作の概要を示す。図１０に示すように、この動作は、システム・コントローラがパワーオン・リセット（ＰＯＲ）動作を実行することから開始する（ステップ５１０）。最初のＰＯＲ動作を実行した後、システム・コントローラはマルチプロセッサ・システムの一般的なロジックに「パワー良好」信号を供給し（ステップ５２０）、一般的なロジックはランダム・ブート動作を開始する（ステップ５３０）。
【００９１】
一般的なロジックは、複数のプロセッサから１つのプロセッサをブート・プロセッサとしてランダムに選択する（ステップ５４０）。次いで、一般的なロジックは、このランダムな選択に基づいてプロセッサの構成ビットをセットし（ステップ５５０）、プロセッサにブート動作の開始を信号で知らせる（ステップ５６０）。フラッシュＲＯＭがプロセッサに暗号化ブート・コードを供給し、秘密鍵ストレージおよびランダム・キー発生器からキー値がプロセッサに供給される（ステップ５７０）。プロセッサは次いで、それらの構成ビットの設定に基づいて、プロセッサが用いるキーを選択する（ステップ５８０）。プロセッサは、選択したキーに基づいてブート・コードを復号しようとする（ステップ５９０）。選択されたプロセッサは、秘密鍵を用いてブート・コードを復号し、システムをブートする（ステップ５９５）。他の全ての選択されなかったプロセッサによるブート・コードの復号の試みは失敗し、選択されたプロセッサのみがシステムをブートすることができることに留意すべきである。次いで動作は終了する。
【００９２】
図１１は、１つの例示的な実施形態に従った、ブート・コード・シーケンスをマスキングするための例示的な実施形態の概要を示すフローチャートである。図１１に概要を示す動作は、例えばマルチプロセッサ・システムの各プロセッサにおいて実行することができる。
【００９３】
図１１に示すように、プロセッサは、ブート動作を開始する信号を受信する（ステップ６１０）。このステップは、例えば図１０のステップ５３０に対応することができる。プロセッサはブート・コードを復号しようとし（ステップ６２０）、復号の試みが失敗したか否かについて判定を行う（ステップ６３０）。復号がうまくいった場合、すなわちこのプロセッサがランダムに選択されたブート・プロセッサである場合、ブート・コードを実行することによってマルチプロセッサ・システムを動作状態にする（ステップ６４０）。
【００９４】
復号が失敗した場合、ブート・シーケンスをマスキングするために実行するコード・シーケンスを選択する（ステップ６５０）。上述のように、特定の実施形態に応じて、マスキング・コード・シーケンスの選択は、ローカル・ストアのセキュアな部分におけるデフォルト・コード・シーケンス、ランダムに選択した開始アドレス、ランダムな遅延要素を含むブート・コードの使用等に基づくものとすることができる。マスキング・コード・シーケンスを実行し（ステップ６６０）、システムが動作状態にあるか否か、すなわちブート・シーケンスが完了したか否かについて判定を行う（ステップ６７０）。システムが動作状態にない場合、動作はステップ６６０に戻り、マスキング・コード・シーケンスの実行を続ける。システムが動作状態にある場合、マスキング・コード・シーケンスの実行は終了し（ステップ６８０）、動作は終了する。
【００９５】
従って、上述の例示的な実施形態は、マルチプロセッサ・システムを動作状態にブートするためのブート・プロセッサとして複数のプロセッサから１つのプロセッサをランダムに選択することを可能とする機構を提供する。例示的な実施形態は、更に、ランダムに選択したプロセッサが実行しているブート・コード・シーケンスをマスキングすることによって侵入者がどのプロセッサがランダムに選択されて実際のブート・コード・シーケンスを実行するかを見分けることを難しくする機構を提供する。これらの機構を用いて、侵入者がブート・コード・シーケンスの監視を通じてシステムに対するアクセスを得ることを極めて難しくすることにより、マルチプロセッサ・システムはいっそうセキュアなものとなる。
【００９６】
上述の例示的な実施形態は、マルチプロセッサ・システムにおける単一のプロセッサがブート・コード・シーケンスを実行している場合について説明した。しかしながら、例示的な実施形態はこれに限定されるわけではない。他の例示的な実施形態では、ブート・コード・シーケンスは、マルチプロセッサ・システムにおいて複数のプロセッサ間で分散させることができる。これについて以下で述べる。マルチプロセッサ・システム内の複数のプロセッサ間でブート・コード・シーケンスを分散させることによって、ブート・シーケンスに関する完全な情報を得ることでセキュリティ対策をあざむくために危険にさらさなければならないプロセッサの数が増える。
【００９７】
従って、以下で述べる例示的な実施形態の分散型ブート動作は、単一のセキュア・コアを利用するマルチプロセッサ・データ処理システムよりもいっそうセキュアである。更に、ブート動作を分散させることによって、ブート動作のいずれかの部分が脅かされた場合にブート動作は失敗し、これによって許可されていない人物がシステムのセキュリティを破ることを防ぐ。換言すると、侵入しようとする者はブート動作の一部を脅かすことは可能であるが、ブート動作の全てを脅かすことはできず、このためマルチプロセッサ・データ処理システムに対するアクセスを得ることはできない。
【００９８】
この例示的な実施形態では、ブート・コード・シーケンスを複数のパーティションに分割し、各パーティションをマルチプロセッサ・システムの異なるプロセッサに供給することができるようになっている。ブート・コード・シーケンスの各パーティションを実行する際は、そのパーティションが各プロセッサ上で正しく完了してからでないと別のプロセッサにブート・コード・シーケンスを進めることができない。ブート・コード・シーケンスの先行パーティションの良好な完了を伝達するために、セキュアな通信機構を用いる。このセキュアな通信機構は、暗号化パスワード、または、例えば公開／秘密暗号鍵対のような他のセキュリティ識別子等のセキュリティ・トークンを含んで、先行セッションが危険にさらされなかったことを示すことができる。このようにして、良好に完了しなければならない依存的「セッション」のチェーンが生成される。
【００９９】
ブート・コードの分散型実行に関与するプロセッサは、マルチプロセッサ・システム内のプロセッサ全て、またはマルチプロセッサ・システム内のプロセッサの一部とすることができる。例えば、単一のブート・プロセッサを選択するために上述したもののようなランダム選択機構を用いて、分散型でシステムをブートする際に用いる複数のブート・プロセッサをランダムに選択することができる。更に、プロセッサが実行するブート・コードの特定のパーティションをランダムに選択して、各パワー・オン・リセット（ＰＯＲ）動作で、同一プロセッサが以前のＰＯＲ動作においてと同じブート・コード・パーティションを実行する場合もあるし、そうでない場合もあるようになっている。従って、分散型ブート動作にどのプロセッサが関与するかに関して、および、どのブート・コード・パーティションに対して各プロセッサが実行するのかに関して、ランダム化を実行することができる。
【０１００】
マルチプロセッサ・システムの他のプロセッサ、すなわち非ブート・プロセッサは、分散型ブート動作中に何も作業を実行しない場合があり、または、前述した様々なマスキング・コードの例示的な実施形態のうち１つ以上のマスキング・コード・シーケンスを実行して、ランダムに選択したプロセッサの一部におけるブート・コードの実行をマスキングする場合がある。換言すると、この例示的な実施形態の分散型ブート・コード・シーケンス動作は、本発明の精神および範囲から逸脱することなく、前述した例示的な実施形態の１つ以上と組み合わせることができる。
【０１０１】
図１２は、１つの例示的な実施形態に従った、デイジー・チェーンまたはリング配置に構成した分散型ブート動作を示す例示的な図である。図１２に示すように、マルチプロセッサ・データ処理システムをブートするために複数のプロセッサ７２０〜７５０が設けられている。図示した例では、コプロセッサすなわちＳＰＥは全て分散型ブート動作に用いるが、例えばＰＰＥのような制御プロセッサは分散型ブート・コードを実行しない。むろん、他の例示的な実施形態では、ＰＰＥも分散型ブート動作に含むことができる。更に、他の例示的な実施形態では、前述したように、マルチプロセッサ・データ処理システム内のプロセッサの一部のみを用いて分散型ブート動作を実行することができる。
【０１０２】
暗号化ブート・コード７１０は、例えば図２のフラッシュＲＯＭ２３０等のマルチプロセッサ・データ処理システムに関連付けたストレージ・システムにストアすることができ、別個に実行可能なパーティションすなわちブート・コード・パーティション１からｎに分割することができる。例えば、パーティションは、暗号化ブート・コードにおいてモジュールまたはルーチンとして設けることができ、同一の暗号アルゴリズムおよび同一の秘密鍵（Ｓｋｅｙ）を用いて別個に暗号化される。好ましくは、ブート・コード・パーティションの数は、分散型ブート動作に関与するプロセッサの数すなわちブート・プロセッサの数と等しい。しかしながら、リング配置のブート・プロセッサ等、いくつかの例示的な実施形態では、ブート・コード・パーティションの数はブート・プロセッサの数に限定されず、ブート・プロセッサの数よりも少ないかまたは多いパーティションのいずれかの数とすることができる。
【０１０３】
分散型ブート動作は、一般的なロジック７９０の制御のもとで実行される。これは、例えば図１における同じ一般的なロジック１９３とすることができる。一般的なロジック７９０は、例えばランダム・イベント発生器を用いることによって、ブート・プロセッサとして用いるプロセッサ７２０〜７５０をランダムに選択することができ、更に、ランダムに選択したプロセッサ７２０〜７５０の各々がどのパーティションを実行するかをランダムに選択することができる。かかる実施形態では、分散型ブート動作の先行セッションが危険にさらされかたか否かを示すセキュアな通信機構を用いることによって、一般的なロジック７９０は、ブート・コード・シーケンスのセキュリティを保証するために、ブート・コード・パーティションが実行される順序を常に把握することができる。しかしながら、この説明を簡潔にするために、図示する例では、マルチプロセッサ・システムのプロセッサの全てまたは少なくともコプロセッサが分散型ブート動作に用いられ、ブート・コード・パーティションがプロセッサ７２０〜７５０に順次供給されることを想定する。
【０１０４】
一般的なロジック７９０は、どのブート・コード・パーティションをプロセッサ７２０〜７５０の各々によって実行するかを選択するための選択信号をプロセッサ７２０〜７５０に供給する。更に、一般的なロジック７９０は、キー値選択信号を供給し、プロセッサ７２０〜７５０が対応するブート・コード・パーティションを復号するために用いるキーとして、ＳｋｅｙストレージからＳｋｅｙを選択させる。プロセッサ７２０〜７５０は、供給されたＳｋｅｙを用いてブート・コード・パーティションを復号し、次いで、デイジー・チェーン・アーキテクチャのプロセッサ７２０〜７５０の配置によって、または、例えば一般的なロジック７９０の制御のもとで、適切な順序でブート・コード・パーティションを実行する。
【０１０５】
図示した例では、ＳＰＥ０  ７２０は、分散型ブート動作を開始する際に、そのブート・コード・パーティション１を復号し、ブート・コード・パーティションを実行し、次いでブート・コード・パーティション１がうまく完了したことをＳＰＥ１  ７３０にセキュアな方法で伝達する。更に、ＳＰＥ間でセキュリティ機構を利用して、先行セッションすなわち先行するブート・コード・パーティションの実行から成るセッションが危険にさらされなかったと示すことができる。セキュリティ機構は、例えば、セキュリティ・トークン、デジタル署名、パスワード、先行ブート・コード・パーティションのチェックサムを渡すこと、成功完了メッセージの公開鍵／秘密鍵暗号化を用いること等とすることができる。分散型ブート動作の先行セッションが危険にさらされたか否かを伝達するために使用可能ないずれのセキュリティ機構も、本発明の精神および範囲内にあることが意図される。
【０１０６】
ブート・コード・パーティション１の実行が順調に支障なく完了したことの確認を受信した後、ＳＰＥ１  ７３０はそのブート・コード・パーティション２を復号し、ブート・コード・パーティションを実行し、次いでブート・コード・パーティション２がうまく完了したことをＳＰＥ２  ７４０に伝達することができる。このプロセスは、全てのプロセッサが支障なく分散型ブート動作の対応部分を完了したことを通知するまで継続することができる。このブート・コード・パーティションの依存的チェーンにおいて何らかの中断があると、例えば実行がうまくいかなかったことまたは実行に支障があったことが通知されると、その結果ブートは失敗し、これをシステム・コントローラに通知することができる。いったんブート・コード・パーティションが全て順調に完了すると、マルチプロセッサ・データ処理システムは動作状態にあり、様々なプロセッサ上でソフトウェア・アプリケーションを実行することができる。
【０１０７】
上述した例示的な実施形態は、プロセッサ上で実行されるブート・コード・パーティションに関してデイジー・チェーン配置のプロセッサを利用する。本発明の精神および範囲から逸脱することなく、ブート・コード・パーティションの順次的な実行を保証する他の配置も利用可能である。例えば、上述のデイジー・チェーン配置を発展させて、分散型ブート動作に関してリング配置のプロセッサを設け、例えばＳＰＥ７  ７５０のような最後のプロセッサが、例えばＳＰＥ０  ７２０のような「主要」ブート・プロセッサとして選択されている最初のプロセッサに、そのブート・コード・パーティションの実行が順調に支障なく完了したことを伝達する。このようにして、リング配置を通してセッションからセッションへと渡される、例えばセキュリティ・トークン、増分カウント値等のセキュリティ機構を主要ブート・プロセッサにおいて用いて、分散型ブート動作全体の支障ない実行を確認することができる。
【０１０８】
更に、リング構成のプロセッサによって、ブート・プロセッサの数よりも多くのブート・コード・パーティションを利用することができる。このため、マルチプロセッサ・データ処理システムにおいてプロセッサの一部のみをブート・プロセッサに選択する場合、このプロセッサの一部は、分散型ブート動作に関してリング配置に構成されると、いかなる数のブート・コード・パーティションも実行することができる。これによって、一般的なロジック７９０は、マルチプロセッサ・データ処理システム内のプロセッサをブート・プロセッサにランダムに選択することができるだけでなく、分散型ブート動作においていくつのプロセッサでもブート・プロセッサにランダムに選択することができる。従って、第１のＰＯＲ動作において４個のプロセッサをブート・プロセッサに選択し、以降のＰＯＲ動作では３個のブート・プロセッサを選択するということも可能である。一般的なロジック７９０は、ブート・プロセッサに選択するプロセッサの数をランダムに選択するためのロジックを含むことができ、これは次いで、前述したようなプロセッサのランダムな選択を制御するために用いられる。
【０１０９】
分散型ブート動作に関して、別のブート・プロセッサ配置として可能なものは、マスタ／スレーブ配置を設けることである。図１３は、１つの例示的な実施形態に従ってマスタ／スレーブ配置として構成した分散型ブート動作を示す例示的な図である。図１３に示すように、１つのプロセッサ７６０をマスタ・プロセッサに指定する。このプロセッサは、例えばＳＰＥのようなコプロセッサの１つ、または、例えばＰＰＥのような制御プロセッサとすることができる。例えばＳＰＥ０〜ＳＰＥ７  ７２０〜７５０のようなスレーブ・プロセッサは、図１２において上述したのと同様に、各々が対応するブート・コード・パーティションを完了させ、実行を支障なく終えたことをセキュアな方法でマスタ・コアに伝達する役割を果たす。マスタ・プロセッサ７６０がスレーブ・プロセッサ７２０〜７５０の各々から信号を受信し、危険にさらされていないことを確認すると、マルチプロセッサ・データ処理システムはソフトウェア・アプリケーションを実行可能な動作状態に入ることができる。
【０１１０】
分散型ブート動作に関して、本明細書では、デイジー・チェーン、リング、およびマスタ／スレーブ配置のプロセッサを説明したが、本発明はこれらの説明した配置のみに限定されないことは認められよう。本発明の精神および範囲から逸脱することなく、例示的な実施形態の機構と共に、分散型ブート動作に関していかなるプロセッサ配置も使用可能である。
【０１１１】
図１４は、１つの例示的な実施形態に従った、マルチプロセッサ・システムの分散型ブートの例示的な動作の概要を示すフローチャートである。図１４に示すように、この動作は、一般的なロジックがシステム・コントローラから「パワー良好」信号を受信することから開始する（ステップ８１０）。一般的なロジックは、マルチプロセッサ・データ処理システムにおける複数のプロセッサから、ブート・プロセッサとなるプロセッサを選択する（ステップ８２０）。上述したように、かかる選択の結果、マルチプロセッサ・データ処理システムにおけるプロセッサの全てまたは一部をブート・プロセッサに選択することができる。かかる選択は、例えば一般的なロジック内のランダム・イベント発生器を用いて実行することができる。
【０１１２】
一般的なロジックは、選択したブート・プロセッサに割り当てるブート・コード・パーティションを選択する（ステップ８３０）。次のブート・コード・パーティションを、関連するブート・プロセッサによって実行する（ステップ８４０）。ブート・プロセッサは、ブート・コード・パーティションの実行が順調であり支障なかったか否かを判定する（ステップ８５０）。そうでない場合、システム・コントローラにブート失敗が通知され（ステップ８６０）、動作は終了する。
【０１１３】
ブート・コード・パーティションが順調に支障なく実行された場合、ブート・プロセッサは、全てのブート・コード・パーティションが順調に実行されたか否かを判定する（ステップ８７０）。全てが順調に実行されていない場合、動作はステップ８４０に戻り、次のブート・コード・パーティションをその関連するブート・プロセッサによって実行する。ブート・コード・パーティションの全てが順調に実行された場合、ブート・プロセッサは、システム・コントローラにデータ処理システムの順調なブートを通知し（ステップ８８０）、動作は終了する。
【０１１４】
従って、前述したように、例示的な実施形態は、マルチプロセッサ・データ処理システムの単一のプロセッサをランダムに選択し、他のプロセッサ上でマスキング動作を実行することに加えて、複数のプロセッサ上でブート動作を分散させるための機構を提供する。例示的な実施形態は、ブート・プロセッサをランダムに選択し、選択したブート・プロセッサ上で実行するブート・コード・パーティションをランダムに選択するための機構を提供して、様々なブート・プロセッサによるブート・コード・パーティションの実行のセキュリティを保証する。これらの様々な機構支援は全て、ブート動作の不正な監視に対するマルチプロセッサ・データ処理システムのセキュリティを高める。
【０１１５】
例示的な実施形態は、全体的にハードウェアによる実施形態、全体的にソフトウェアによる実施形態、またはハードウェアおよびソフトウェア要素の双方を含む実施形態という形を取ることができる。好適な実施形態において、本発明はソフトウェアにおいて具現化され、これはファームウェア、常駐ソフトウェア、マイクロコード等を含むがこれらには限定されない。
【０１１６】
更に、例示的な実施形態は、コンピュータまたはいずれかの命令実行システムが用いるかまたはこれと組み合わせて用いるプログラム・コードを提供するコンピュータ使用可能またはコンピュータ読み取り可能媒体からアクセス可能なコンピュータ・プログラムの形態を取ることができる。この説明の目的のため、コンピュータ使用可能またはコンピュータ読み取り可能媒体は、命令実行システム、装置、またはデバイスが用いるかまたはこれと組み合わせて用いるプログラムを含有、ストア、伝達、伝搬、または転送することができるいずれかの装置とすれば良い。
【０１１７】
この媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム（または装置またはデバイス）または伝搬媒体とすることができる。コンピュータ読み取り可能媒体の例は、半導体または固体メモリ、磁気テープ、着脱可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、固定磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク−読み取り／書き込み（ＣＤＲ／Ｗ）およびＤＶＤを含む。
【０１１８】
上述のような回路は、集積回路チップ用の設計の一部とすることができる。チップ設計は、グラフィカル・コンピュータ・プログラミング言語で生成し、コンピュータ・ストレージ媒体（ディスク、テープ、物理的ハード・ドライブ、またはストレージ・アクセス・ネットワークにおけるような仮想ハード・ドライブ等）にストアすることができる。設計者がチップを製造しない場合、またはチップを製造するために用いるフォトリソグラフィ・マスクを製造しない場合、設計者は、直接的または間接的に、かかるエンティティに、物理的手段によって（例えばこの設計をストアするストレージ媒体のコピーを提供することによって）、または電子的に（例えばインターネットによって）、結果として得られた設計を送信することができる。次いで、ストアした設計を、フォトリソグラフィ・マスクを製造するために適切なフォーマット（例えばＧＤＳＩＩ）に変換することができる。このマスクは、通常、ウェハ上に形成される当該設計の多数のコピーを含む。フォトリソグラフィ・マスクを用いて、エッチングまたは他の方法で処理されるウェハの領域（またはその上の層あるいはその両方）を規定することができる。
【０１１９】
結果として得られた集積回路チップは、むき出しのダイとして未処理のウェハの形態で（すなわち、多数のパッケージされていないチップを有する単一ウェハとして）、またはパッケージされた形態で、製造者によって分配することができる。後者の場合、チップは、単一チップ・パッケージ（マザーボードにリードが取り付けられたプラスチック・キャリアまたは他の高レベルのキャリア等）で、または、マルチチップ・パッケージ（表面相互接続または埋め込み相互接続のいずれかまたは両方を有するセラミック・キャリア等）で、取り付けることができる。いずれの場合であっても、このチップを、次いで、（ａ）マザーボード等の中間製品または（ｂ）最終製品のいずれかの一部として、他のチップ、別個の回路要素、あるいは他の信号処理デバイスまたはそれら全てと集積することができる。最終製品は、おもちゃおよび他の低価格の用途から、ディスプレイ、キーボードまたは他の入力デバイス、および中央プロセッサを有する高度なコンピュータ製品までに及ぶ集積回路チップを含むいずれかの製品とすることができる。更に、集積回路チップを設けることができる最終製品は、ゲーム機械、ゲーム・コンソール、手持ち型コンピューティング・デバイス、パーソナル・デジタル・アシスタント、無線電話等の通信デバイス、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、またはいずれかの他のコンピューティング・デバイスを含むことができる。
【０１２０】
本発明の記載は、例示および説明の目的のために提示したものであり、網羅的であったり、本発明を開示する形態に限定したりすることは意図していない。当業者には、多くの変更および変形が明らかであろう。実施形態は、想定される具体的な用途に適した様々な変更を有する様々な実施形態の代わりに、本発明の原理、実際の用途を最も適切に説明するため、および、当業者が本発明を理解することができるように、選択し記載した。
【図面の簡単な説明】
【０１２１】
【図１】例示的な実施形態を実現することができるマルチプロセサ・システムの例示的なブロック図である。
【図２】１つの例示的な実施形態に従ったランダム・ブート・プロセッサ選択機構の主要動作構成要素を示す例示的な図である。
【図３】１つの例示的な実施形態に従ったランダム選択機構を示す例示的な図である。
【図４】１つの例示的な実施形態に従ったランダム・イベント発生器のＬＦＳＲカウンタに対する入力に挿入されるジッタをグラフに示す。
【図５】秘密鍵および複数のランダムに発生したキー値を平行信号ラインを用いてプロセッサに供給する例示的な実施形態を示す例示的な図である。
【図６】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図７】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図８】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図９】例示的な実施形態に従った、ランダムに選択したブート・プロセッサのセキュアなブート動作をマスキングするためのマスキング動作を示す例示的な図である。
【図１０】マルチプロセッサ・システムにおける１つのプロセッサをブート・プロセッサとしてランダムに選択するための例示的な動作の概要を示すフローチャートである。
【図１１】１つの例示的な実施形態に従った、ブート・コード・シーケンスをマスキングするための例示的な動作の概要を示すフローチャートである。
【図１２】１つの例示的な実施形態に従った、デイジー・チェーンまたはリング配置として構成した分散型ブート動作を示す例示的な図である。
【図１３】１つの例示的な実施形態に従った、マスタ／スレーブ配置として構成した分散型ブート動作を示す例示的な図である。
【図１４】１つの例示的な実施形態に従った、マルチプロセッサ・システムの分散型ブートのための例示的な動作の概要を示すフローチャートである。
【符号の説明】
【０１２２】
１００  ＣＢＥ
１１０、４０５  パワー・プロセッサ要素（ＰＰＥ）
１１６  パワー・プロセッサ・ユニット（ＰＰＵ）
１２０〜１３４、４１０〜４２４、７２０〜７５０  相乗プロセッサ要素（ＳＰＥ）
１４０〜１５４  相乗プロセッサ・ユニット（ＳＰＵ）
１５５〜１６２  メモリ・フロー制御
１６３〜１７０  ローカル・メモリまたはストア（ＬＳ）
１８０〜１９４  バス・インタフェース・ユニット（ＢＩＵユニット）
１９３、２４０、３９７、７９０  一般的なロジック
２１０  システム・コントローラ
２２０  セキュア・キー・ストレージ
２３０  フラッシュＲＯＭ
２３２  暗号化ブート・コード
２４２、３１０、３９６  ランダム・イベント発生器
２５０  構成ビット・レジスタ
２６０、３５０、３６０、３７０、３９６  選択器
２６２  ランダム値発生器
２７０  ＳＰＥ
２８０、２９０  プロセッサ
３２０  線形フィードバック・シフト・レジスタ（ＬＦＳＲ）カウンタ
３３０  リング・オシレータ
３４０  選択信号レジスタ／デコーダ
３５２、３６２、３７２  マルチプレクサ
３９０  ランダム・キー発生器
【図１】
2007334882.tif 000003
【図２】
2007334882.tif 000004
【図３】
2007334882.tif 000005
【図４】
2007334882.tif 000006
【図５】
2007334882.tif 000007
【図６】
2007334882.tif 000008
【図７】
2007334882.tif 000009
【図８】
2007334882.tif 000010
【図９】
2007334882.tif 000011
【図１０】
2007334882.tif 000012
【図１１】
2007334882.tif 000013
【図１２】
2007334882.tif 000014
【図１３】
2007334882.tif 000015
【図１４】
2007334882.tif 000016