(57)【要約】【課題】複数のプロセッサにまたがるセキュア・ブートのシステムおよび方法を提供すること。【解決手段】このシステムおよび方法を用いると、ブート・コードが、複数のブート・コード区画に区分される。マルチプロセッサ・システムのプロセッサが、ブート・プロセッサになるために選択され、それぞれが、所定のブート・コード・シーケンスで実行されるべきブート・コード区画を与えられる。各プロセッサは、ブート・コード・シーケンスに従ってそのブート・コード区画を実行し、そのブート・コード区画の成功の危険にさらされない実行を次のプロセッサにシグナリングする。プロセッサのいずれかがそのブート・コード区画の成功の完了または危険にさらされない実行あるいはその両方をシグナリングしない場合には、ブート動作が失敗する。プロセッサは、ブート動作に関して、たとえば、デイジー・チェーン配置、リング配置、またはマスタ／スレーブ配置に配置することができる。【選択図】図２
2009540405.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを有するデータ処理システムと共に使用される、前記データ処理システムをブートする方法であって、
ブート・コードを複数のブート・コード区画に区分することと、
前記データ処理システムの前記複数のプロセッサ内の複数のブート・プロセッサのそれぞれに、前記複数のブート・コード区画からのブート・コード区画をロードすることと、
これによって前記データ処理システムをブートするために、前記複数のブート・コード区画をそのめいめいの関連するブート・プロセッサ上で複数のセッションとして実行することと、
前記複数のプロセッサから前記ブート・プロセッサをランダムに選択することであって、前記ブート・プロセッサは、前記複数のプロセッサのサブセットである、ことと
を含む方法。
【請求項２】
各ブート・コード区画のそれに関連するセッションでの実行が完了する時に、前記複数のプロセッサのうちで前記ブート・コード区画を実行した関連するブート・プロセッサは、ブート・コード・シーケンス内の次のブート・コード区画に関連する別のブート・プロセッサに、前記ブート・コード区画の成功の完了をシグナリングするように動作可能である、請求項１に記載の方法。
【請求項３】
前記複数のブート・コード区画をそのめいめいの関連するブート・プロセッサ上で実行することは、
前記複数のブート・コード区画のそのめいめいの関連するブート・プロセッサ上での危険にさらされない実行を保証するために、ブート・プロセッサ間の通信にセキュリティ機構を利用すること
を含む、請求項１または２に記載の方法。
【請求項４】
前記セキュリティ機構は、ブート・プロセッサの間でセキュリティ・トークンを渡すこと、ブート・プロセッサの間でディジタル署名を渡すこと、パスワードを使用すること、ブート・コード区画のチェックサムを渡すこと、または信号の公開鍵／秘密鍵暗号化を使用することのうちの少なくとも１つを含む、請求項３に記載の方法。
【請求項５】
ブート・コード区画の個数は、ブート・プロセッサの個数と等しい、請求項１ないし４のいずれかに記載の方法。
【請求項６】
前記複数のプロセッサのうちでブート・プロセッサになるためにランダムに選択されたものではないプロセッサ上でマスキング・コードを実行すること
をさらに含む、請求項１ないし５のいずれかに記載の方法。
【請求項７】
どのブート・コード区画が各ブート・プロセッサに関連するかをランダムに選択すること
をさらに含み、各ブート・コード区画は、他のブート・コード区画と異なる、請求項１ないし６のいずれかに記載の方法。
【請求項８】
前記ブート・プロセッサ上でブート・コード区画を実行するための前記セッションは、デイジー・チェーン配置、リング配置、またはマスタ／スレーブ配置のうちの１つで配置されるように動作可能である、請求項１ないし７のいずれかに記載の方法。
【請求項９】
複数のプロセッサを含むデータ処理システムと共に使用される、前記データ処理システムをブートする装置であって、
ブート・コードを複数のブート・コード区画に区分する手段と、
前記データ処理システムの前記複数のプロセッサ内の複数のブート・プロセッサのそれぞれに、前記複数のブート・コード区画からのブート・コード区画をロードする手段と、
これによって前記データ処理システムをブートするために、前記複数のブート・コード区画をそのめいめいの関連するブート・プロセッサ上で複数のセッションとして実行する手段と、
前記複数のプロセッサから前記ブート・プロセッサをランダムに選択する手段であって、前記ブート・プロセッサは、前記複数のプロセッサのサブセットである、手段と
を含む装置。
【請求項１０】
各ブート・コード区画のそれに関連するセッションでの実行が完了する時に、前記複数のプロセッサのうちで前記ブート・コード区画を実行した関連するブート・プロセッサによって、ブート・コード・シーケンス内の次のブート・コード区画に関連する別のブート・プロセッサに、前記ブート・コード区画の成功の完了をシグナリングする手段をさらに含む、請求項９に記載の装置。
【請求項１１】
前記複数のブート・コード区画の危険にさらされない実行を保証するために、ブート・プロセッサ間の通信にセキュリティ機構を利用する手段をさらに含む、請求項９または１０に記載の装置。
【請求項１２】
前記セキュリティ機構は、ブート・プロセッサの間でセキュリティ・トークンを渡すこと、ブート・プロセッサの間でディジタル署名を渡すこと、パスワードを使用すること、ブート・コード区画のチェックサムを渡すこと、または信号の公開鍵／秘密鍵暗号化を使用することのうちの少なくとも１つを含む、請求項１１に記載の装置。
【請求項１３】
ブート・コード区画の個数は、ブート・プロセッサの個数と等しい、請求項９ないし１２のいずれかに記載の装置。
【請求項１４】
前記複数のプロセッサのうちでブート・プロセッサになるためにランダムに選択されたものではないプロセッサ上でマスキング・コードを実行する手段をさらに含む、請求項９ないし１３のいずれかに記載の装置。
【請求項１５】
どのブート・コード区画が各ブート・プロセッサに関連するかをランダムに選択する手段をさらに含み、各ブート・コード区画は、他のブート・コード区画と異なる、請求項９ないし１４のいずれかに記載の装置。
【請求項１６】
前記ブート・プロセッサ上でブート・コード区画を実行するための前記セッションは、デイジー・チェーン配置、リング配置、またはマスタ／スレーブ配置のうちの１つで配置されるように動作可能である、請求項９ないし１５のいずれかに記載の装置。
【請求項１７】
コンピュータ・プログラムがコンピュータ上で実行される時に、請求項１ないし８のいずれかに記載のステップを実行するように適合されたプログラム・コード手段を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、全般的には改良されたデータ処理のシステムおよび方法に関する。より具体的には、本願は、複数のプロセッサにまたがるセキュア・ブート（ｓｅｃｕｒｅ  ｂｏｏｔ）のシステムおよび方法を対象とする。
【背景技術】
【０００２】
我々の社会が情報の電子通信および電子ストレージにますます依存するようになるにつれて、個人情報およびディジタル権利管理（ＤＲＭ）など、ディジタル情報のセキュリティに関する懸念が増えてきた。さらに、コンピュータ・ハッカーおよび他の許可されないコンピューティング・システムへの侵入者の精巧化が、近年に高まってきた。その結果、そのような機密ディジタル情報を許可されないアクセスから保護できるようにするために、多くの努力がコンピューティング・デバイスのセキュリティ・システムの開発に注がれてきた。
【０００３】
侵入者がコンピューティング・システムへのアクセスを得ることができる形の１つは、電気インターフェースおよび他の観察可能な電磁的アクティビティまたは熱的アクティビティを介してコンピューティング・システムのブート・アクティビティを観察することである。この形でブート・アクティビティを観察することによって、侵入者は、どのデータ信号がブート・プロセッサによって入力され、出力されており、どの暗号アルゴリズムがプロセッサ上で実行されているかなどを演繹することができる。この情報から、侵入者は、ブート・シーケンス内の、許可されない侵入を行える点を検出することができる。さらに、セキュリティ・キーがシステムのブートのために要求されるセキュア・ブート・シーケンスを用いると、侵入者は、ブート・プロセッサによって使用される暗号アルゴリズムを逆転して、セキュリティ・キーへのアクセスを入手することができ、これによって、そのコンピューティング・システムへの完全なアクセスを得ることができる。コンピューティング・システムの全体的なセキュリティは、しばしば、ブート・プロセスのセキュリティに依存するので、侵入者がブート・シーケンスへのアクセスを得る時には、システム全体のセキュリティが危険にさらされる可能性がある。
【特許文献１】米国特許公開第２００５００２１９４４号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、システムを許可されない侵入からより安全にするために、プロセッサのブート・シーケンスの監視の困難度を高める装置および方法を有することが有意義である。
【課題を解決するための手段】
【０００５】
例示的実施形態は、マルチプロセッサ・システムをブートするためにランダムなプロセッサを選択し、複数のプロセッサにまたがるセキュア・ブートを実現するシステムおよび方法を提供する。どのプロセッサがマルチプロセッサ・システムをブートするのに使用されるのかをランダム化することによって、システムのセキュリティを破る目的でブート・シーケンスに関する情報を入手するために電気インターフェース、熱アクティビティ、および他の電磁アクティビティを監視する許可されない人の能力は、よりむずかしくされる。たとえば、マルチプロセッサ・システムでは、侵入試行者は、ある単一のプロセッサがブート・プロセッサとしてランダムに選択されることを期待してそのプロセッサを監視しながら多数の異なる時にブート・シーケンスを実行する必要があるか、どれが実際のブート・プロセッサであったかを判定するためにブート時にすべてのプロセッサを監視するかのいずれかになるはずである。両方のオプションが、侵入試行者の側でのかなりの努力を必要とし、これは、ブート・シーケンス情報を入手するためにシステムを監視する実際の試みに対する抑止力として働くか、少なくとも、侵入試行者がシステムを危険にさらすのに要する時間にかなりの遅延を追加する可能性がある。
【０００６】
例示的実施形態の機構を用いると、パーベイシブ・ロジック（pervasivelogic）が、マルチプロセッサ・システムのブート動作を制御する、システムオンアチップなどのマルチプロセッサ・システム上に設けられる。このパーベイシブ・ロジックは、マルチプロセッサ・システム内のどのプロセッサが、これによってシステムを動作状態にするためにブート・コードを実行するブート・プロセッサになるかをランダムに選択するランダム・イベント・ジェネレータを含む。ブート・プロセッサのランダム選択に基づいて、ブート・プロセッサに関連する構成ビットが、そのプロセッサがブート・プロセッサになることを示すようにセットされる。その後、選択されたブート・プロセッサは、動作状態へのマルチプロセッサ・システムのセキュア・ブートに必要なセキュリティ鍵（１つまたは複数）を与えられる。
【０００７】
いくつかの例示的実施形態では、ランダムに選択されたプロセッサが、セキュア・ブート動作を実行する間に、マルチプロセッサ・システムの他のプロセッサは、実際のセキュア・ブート動作をマスクするために動作を実行する。このマスキングは、侵入者によって監視された場合に、どのプロセッサが実際のセキュア・ブート動作を実行しているのかをその侵入者が区別することをむずかしくする電磁出力または熱出力あるいはその両方をプロセッサに生成させる、ブート・コード・シーケンス以外の他のコード・シーケンスの実行を含むものとすることができる。
【０００８】
異なるコード・シーケンスを生成できる１つの形は、ランダムな量だけ反復するループを実行するランダム遅延要素をブート・コードに挿入することによるものである。この形で、各プロセッサは、異なる遅延量を伴ってブート・コードを実行することができ、これによって、異なる電磁シグネチャおよび熱シグネチャを生成させることができる。侵入者の展望からは、そのようなマスキングに起因して、マルチプロセッサ・システム内で実際のブート・プロセッサを他のプロセッサから区別することが非常にむずかしくなる。
【０００９】
さらなる例示的実施形態では、他のプロセッサによって実行されるコード・シーケンスは、ランダムに選択されるプロセッサが実行するものと同一であるが、ダミー・セキュリティ鍵を有するブート・コード・シーケンスである。したがって、これらの他のプロセッサは、セキュア・ブート動作を実行しているかのように動作し、侵入者にはそう見える。しかし、プロセッサが監視される場合に、偽の電磁出力および熱出力が識別され、これは、監視されるプロセッサがセキュア・ブート動作を実行している実際のランダムに選択されたプロセッサであるかどうかを侵入者が判定することをむずかしくする。
【００１０】
さらなる例示的実施形態では、ランダムに選択されるブート・プロセッサのマスキングを、ダミー・プロセッサを設けることによって実行することができる。ダミー・プロセッサは、電磁的、熱的などの監視装置の観点からは、このダミー・プロセッサ上でブート・コード・シーケンスとは異なるプロセスを実行することによってユニークであるかのように見え、これによって、システムに対する攻撃をこのダミー・プロセッサにリダイレクトする。この形で、侵入者が、セキュリティ機構を回避することによってシステムにアクセスすることを試みる時に、その侵入者は、マルチプロセッサ・システムの残りへの実際のアクセスを有しないダミー・プロセッサにアクセスするだけである。
【００１１】
他の例示的実施形態では、ブート・コード・シーケンスを、マルチプロセッサ・システム内の複数のプロセッサにまたがって分散させることができる。マルチプロセッサ・システム内の複数のプロセッサにまたがってブート・コード・シーケンスを分散させることによって、ブート・シーケンスに関する完全な情報を入手し、これによってセキュリティ手段を迂回するために危険にさらさなければならないプロセッサの数が増える。したがって、この例示的実施形態の分散ブート動作は、単一のセキュア・コアを利用するマルチプロセッサ・データ処理システムより安全である。さらに、ブート動作を分散させることによって、ブート動作のいずれかの部分が危険にさらされる場合に、ブート動作が失敗し、これによって、許可されない個人がシステムのセキュリティを迂回することが防がれる。
【００１２】
この例示的実施形態では、ブート・コード・シーケンスは、複数の区画に区分され、各区画をマルチプロセッサ・システムの異なるプロセッサに提供できるようになっている。ブート・コード・シーケンスの各区画が実行される時に、その区画は、ブート・コード・シーケンスが別のプロセッサ上で進行できるようになる前に、めいめいのプロセッサ上で正しく完了しなければならない。セキュア通信機構が、ブート・コード・シーケンスの前の区画の満足な完了を通信するのに使用される。このセキュア通信機構には、暗号化されたパスワードまたはたとえば公開／秘密暗号化鍵対などの他のセキュリティ識別子など、前のセッションが危険にさらされなかったことを示すセキュリティ・トークンを含めることができる。この形で、満足に完了しなければならない依存する「セッション」のチェーンが作成される。
【００１３】
ブート・コードの分散実行に用いられるプロセッサは、マルチプロセッサ・システム内のプロセッサのすべてまたはマルチプロセッサ・システム内のプロセッサのサブセットとすることができる。たとえば、単一のブート・プロセッサを選択する、上で説明したものなどのランダム選択機構を使用して、分散された形でシステムをブートするのに使用される複数のブート・プロセッサをランダムに選択することができる。さらに、プロセッサによって実行されるブート・コードの特定の区画をランダムに選択することができ、各パワーオン・リセット（ＰＯＲ）動作と共に、同一のプロセッサが、以前のＰＯＲ動作と同一のブート・コード区画を実行してもしなくてもよい。したがって、ランダム化は、どのプロセッサが分散ブート動作に用いられるかに関してならびに各プロセッサがどのブート・コード区画を実行するかに関して実行することができる。
【００１４】
マルチプロセッサ・システムの他のプロセッサすなわち非ブート・プロセッサは、分散ブート動作中に作業を全く実行しないか、プロセッサのランダムに選択されたサブセット上でのブート・コード実行をマスクするために、前に説明したさまざまなマスキング・コード例示的実施形態のうちの１つまたは複数のマスキング・コード・シーケンスを実行するかのいずれかとすることができる。言い換えると、本例示的実施形態の分散ブート・コード・シーケンス動作を、前に説明した例示的実施形態のうちの１つまたは複数と組み合わせることができる。
【００１５】
１つの例示的実施形態では、複数のプロセッサを有するデータ処理システム内で、データ処理システムをブートする方法が提供される。この方法は、ブート・コードを複数のブート・コード区画に区分することと、データ処理システムの複数のプロセッサ内の複数のブート・プロセッサのそれぞれに、複数のブート・コード区画からのブート・コード区画をロードすることとを含むことができる。複数のブート・コード区画を、そのめいめいの関連するブート・プロセッサ上で複数のセッションとして実行して、これによってデータ処理システムをブートすることができる。ブート・コード区画の個数は、ブート・プロセッサの個数と等しくすることができる。
【００１６】
いずれかのセッションが、ブート・コード区画の不成功の実行または危険にさらされた実行をもたらす場合には、データ処理システムのブートが失敗するものとすることができる。関連するセッションでの各ブート・コード区画の実行が完了する時に、複数のプロセッサのうちでそのブート・コード区画を実行した関連するブート・プロセッサは、ブート・コード・シーケンスの次のブート・コード区画に関連する別のブート・プロセッサに、ブート・コード区画の成功の完了をシグナリングすることができる。
【００１７】
めいめいの関連するブート・プロセッサ上での複数のブート・コード区画の実行には、めいめいの関連するブート・プロセッサ上での複数のブート・コード区画の危険にさらされない実行を保証するために、ブート・プロセッサの間の通信でセキュリティ機構を利用することを含めることができる。このセキュリティ機構は、ブート・プロセッサの間でセキュリティ・トークンを渡すこと、ブート・プロセッサの間でディジタル署名を渡すこと、パスワードを使用すること、ブート・コード区画のチェックサムを渡すこと、または信号の公開鍵／秘密鍵暗号化を使用することのうちの少なくとも１つを含むことができる。
【００１８】
この方法は、さらに、複数のプロセッサからブート・プロセッサをランダムに選択することであって、ブート・プロセッサは、複数のプロセッサのサブセットである、ランダムに選択することを含むことができる。マスキング・コードを、複数のプロセッサのうちでブート・プロセッサになるためにランダムに選択されたものではないプロセッサ上で実行することができる。
【００１９】
さらに、この方法は、どのブート・コード区画が各ブート・プロセッサに関連するかをランダムに選択することを含むことができる。各ブート・コード区画は、他のブート・コード区画と異なるものとすることができる。
【００２０】
さらに、ブート・プロセッサ上でブート・コード区画を実行するためのセッションは、デイジー・チェーン配置、リング配置、またはマスタ／スレーブ配置のうちの１つで配置することができる。データ処理システムは、第１命令セットに従って動作する第１プロセッサと、第１命令セットとは異なる第２命令セットに従って動作する１つまたは複数の第２プロセッサとを有する異機種マルチプロセッサ・システムオンアチップとすることができる。
【００２１】
もう１つの例示的実施形態では、複数のプロセッサ、複数のプロセッサに結合されたブート・コード・ストレージ、および複数のプロセッサに結合されたパーベイシブ・ロジックを含むデータ処理システムが提供される。ブート・コード・ストレージは、複数のブート・コード区画に区分されたブート・コードを格納することができる。パーベイシブ・ロジックは、前に説明した例示的方法実施形態に関して上で概要を示した動作のうちのさまざまな動作またはそれらの組合せを実行することができる。
【００２２】
もう１つの例示的実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能媒体を含むコンピュータ・プログラム製品が提供される。このコンピュータ可読プログラムは、データ処理システム上で実行される時に、このデータ処理システムに、前に説明した例示的方法実施形態に関して上で概要を示した動作のうちのさまざまな動作またはそれらの組合せを実行させることができる。
【００２３】
本発明の上記および他の特徴および利益は、本発明の例示的実施形態の次の詳細な説明で説明され、あるいはそれに鑑みて当業者に明らかになるであろう。
【００２４】
本発明に特有と思われる新規の特徴を、添付の特許請求の範囲に示す。しかし、本発明自体ならびに本発明の使用の好ましい態様、さらなる目的、および利益は、添付図面に関連して読まれる時の例示的実施形態の次の詳細な説明を参照することによって、最もよく理解される。
【発明を実施するための最良の形態】
【００２５】
この例示的実施形態は、マルチプロセッサ・システム上でブートするためにランダムなプロセッサを選択する装置および方法を提供するものである。例示的実施形態は、マルチプロセッサ・システムをブートするためにプロセッサのうちの１つを選択できるすべてのマルチプロセッサ・システムと共に使用するために実施することができる。したがって、例示的実施形態の機構は、対称型マルチプロセッサ（ＳＭＰ）システム、異機種マルチプロセッサ・システム、非コヒーレント非対称マルチプロセッサ・システム、および類似物に適用可能である。
【００２６】
例示的実施形態を実施できる１つのマルチプロセッサ・システムが、米国ニューヨーク州アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ，Ｉｎｃ．社から入手可能なＣｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅ（Ｒ）（ＣＢＥ）である。例示的実施形態を、ＣＢＥアーキテクチャに関して説明するが、例示的実施形態の説明が、例示的にすぎず、例示的実施形態の機構を実施できるマルチプロセッサ・システムのタイプまたは構成に関する限定を述べ、または暗示することが意図されていないことを了解されたい。説明されるＣＢＥアーキテクチャに対する多数の変更を、本発明の趣旨および範囲から逸脱せずに行うことができる。
【００２７】
図１は、本発明の諸態様を実施できるデータ処理システムの例示的ブロック図である。図１に示された例示的データ処理システムは、Ｃｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅ（Ｒ）（ＣＢＥ）データ処理システムの例である。ＣＢＥを、本発明の好ましい実施形態の説明で使用するが、次の説明を読んだ時に当業者にすぐに明白になるとおり、本発明は、これに限定されない。
【００２８】
図１に示されているように、ＣＢＥ  １００は、ｐｏｗｅｒ  ｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ（ＰＰＵ）１１６とそのＬ１キャッシュ１１２およびＬ２キャッシュ１１４を有するｐｏｗｅｒ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ（ＰＰＥ）１１０と、それ自体のｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ（ＳＰＵ）１４０〜１５４、メモリ・フロー・コントロール・ユニット１５５〜１６２、ローカル・メモリまたはローカル・ストア（ＬＳ）１６３〜１７０、およびたとえば組合せ直接アクセスメモリ（ＤＭＡ）、メモリ管理ユニット（ＭＭＵ）、およびバス・インターフェース・ユニットとすることのできるバス・インターフェース・ユニット（ＢＩＵユニット）１８０〜１９４をそれぞれが有する複数のｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ（ＳＰＥ）１２０〜１３４を含む。高帯域幅内部要素相互接続バス（ＥＩＢ）１９６、バス・インターフェース・コントローラ（ＢＩＣ）１９７、およびメモリ・インターフェース・コントローラ（ＭＩＣ）１９８も設けられる。
【００２９】
ＣＢＥ  １００は、図１に示された要素のそれぞれを単一のマイクロプロセッサ・チップ上に設けることができるように、システムオンアチップとすることができる。さらに、ＣＢＥ  １００は、ＳＰＵのそれぞれがシステム内の他のＳＰＵのそれぞれと異なる命令を受け取ることができる異機種処理環境である。さらに、ＳＰＵの命令セットは、ＰＰＵの命令セットと異なり、たとえば、ＰＰＵは、縮小命令セット・コンピュータ（ＲＩＳＣ）ベースの命令を実行することができるが、ＳＰＵは、単一命令複数データ（ＳＩＭＤ）命令を実行する。
【００３０】
ＳＰＥ  １２０〜１３４は、ＥＩＢ  １９６を介してお互いおよびＬ２キャッシュ１１４に結合される。さらに、ＳＰＥ  １２０〜１３４は、ＥＩＢ  １９６を介してＭＩＣ  １９８およびＢＩＣ  １９７に結合される。ＭＩＣ  １９８は、共用メモリ１９９への通信インターフェースを提供する。ＢＩＣ  １９７は、ＣＢＥ  １００と他の外部バスおよびたとえばＳｏｕｔｈＢｒｉｄｇｅ（商標）通信プロセッサなどのデバイスとの間の通信インターフェースを提供する。
【００３１】
ＰＰＥ  １１０は、デュアル・スレッド式ＰＰＥ  １１０である。このデュアル・スレッド式ＰＰＥ  １１０と８つのＳＰＥ  １２０〜１３４との組合せは、ＣＢＥ  １００を、１０個の同時スレッドおよび１２８個を超える保留中メモリ要求を処理できるものにする。ＰＰＥ  １１０は、計算作業負荷のほとんどを処理する他の８つのＳＰＥ  １２０〜１３４のコントローラとして働く。たとえば、ＰＰＥ  １１０は、ＳＰＥ  １２０〜１３４がベクトル化された浮動小数点コード実行を実行する間に従来のオペレーティング・システムを実行するのに使用することができる。
【００３２】
ＳＰＥ  １２０〜１３４は、ｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ（ＳＰＵ）１４０〜１５４、メモリ・フロー・コントロール・ユニット１５５〜１６２、ローカル・メモリまたはローカル・ストア１６３〜１７０、およびバス・インターフェース・ユニット１８０〜１９４を含む。ローカル・メモリまたはローカル・ストア１６３〜１７０は、１つの例示的実施形態で、２５６ＫＢの命令およびデータ・メモリを含み、このメモリは、ＰＰＥ  １１０から可視であり、ソフトウェアによって直接にアドレッシングすることができる。
【００３３】
ＰＰＥ  １１０は、ＳＰＥ  １２０〜１３４に小さいプログラムまたはスレッドをロードし、ＳＰＥを一緒にチェーンして、複雑な動作の各処理ステップを処理することができる。たとえば、ＣＢＥ  １００を組み込んだセットトップ・ボックスは、ＤＶＤ、ビデオ、およびオーディオを読み取り、復号し、表示するプログラムをロードすることができ、データは、最終的に出力ディスプレイに行き着くまで、ＳＰＥからＳＰＥに渡される。４ＧＨｚで、各ＳＰＥ  １２０〜１３４は、理論的に３２ＧＦＬＯＰＳの性能を与え、ＰＰＥ  １１０は、類似するレベルの性能を有する。
【００３４】
メモリ・フロー・コントロール・ユニット（ＭＦＣ）１５５〜１６２は、ＳＰＵのための、システムの残りおよび他の要素へのインターフェースとして働く。ＭＦＣ  １５５〜１６２は、主ストレージとローカル・メモリまたはローカル・ストア１６３〜１７０との間のデータの転送、保護、および同期化の主機構を提供する。論理的には、プロセッサ内のＳＰＵごとに１つのＭＦＣがある。一部の実施態様は、複数のＳＰＵの間で単一のＭＦＣのリソースを共用することができる。その場合に、ＭＦＣについて定義されるすべてのファシリティおよびコマンドは、各ＳＰＵのソフトウェアに独立に見えなければならない。ＭＦＣ共用の影響は、実装依存のファシリティおよびコマンドに制限される。
【００３５】
例示的実施形態は、マルチプロセッサ・システム、たとえばＣＢＥ  １００をブートするために、ＳＰＥ  １２０〜１３４のうちの１つなどのランダムなプロセッサを選択する装置および方法を提供する。どのＳＰＥ  １２０〜１３４がＣＢＥ  １００をブートするのに使用されるかをランダム化することによって、ＣＢＥ  １００のセキュリティを破る目的でブート・シーケンスに関する情報を得るために電気インターフェース、熱的アクティビティ、および他の電磁的アクティビティを監視する、許可されない人の能力が、より困難にされる。
【００３６】
この例示的実施形態の機構を用いると、ＣＢＥ  １００のブート動作を制御するパーベイシブ・ロジック１９３が、ＣＢＥ  １００上に設けられる。パーベイシブ・ロジック１９３は、どのＳＰＥ  １２０〜１３４が、ブート・コードを実行し、これによってシステムを動作状態にするブート・プロセッサになるのかをランダムに選択するランダム・イベント・ジェネレータを含む。ブートＳＰＥ  １２０〜１３４のランダム選択に基づいて、選択されたＳＰＥ、たとえばＳＰＥ  １２０に関連する構成ビットが、ＳＰＥ  １２０が実際のブート・プロセッサになることを示すようにセットされる。その後、選択されたＳＰＥ  １２０は、動作状態へのＣＢＥ  １００のセキュア・ブートに必要なセキュリティ鍵（１つまたは複数）を与えられる。選択されたＳＰＥがセキュア・ブート手順を成功して完了する時に、そのＳＰＥは、ＭＩＣ  １９８、共用メモリ１９９、およびＢＩＣ  １９７のうちで後の図２のフラッシュＲＯＭ  ２３０への通信リンク以外の部分が、シャットダウンされ、動作を防がれるセキュア状態から、アンロックされた状態に推移する。セキュアＳＰＥがアンロック状態に入ったならば、そのセキュアＳＰＥは、フラッシュＲＯＭ  ２３０によって提供される暗号化されたコードを実行することによって、ＭＩＣ  １９８、ＢＩＣ  １９７を完全にイネーブルするプロセス（「トレーニング」と称するプロセス）および他のすべてのプロセッサ（ＳＰＥおよびＰＰＥ）をイネーブルするプロセスを開始する。Ｃｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅ内で使用されるセキュア・ブート・プロセスに関するさらなる情報については、参照によって本明細書に組み込まれている、係属中の本願出願人に譲渡された米国特許公告第２００５００２１９４４号を参照されたい。
【００３７】
いくつかの例示的実施形態では、ランダムに選択されたＳＰＥ  １２０が、セキュア・ブート動作を実行している間に、他のＳＰＥ  １２２〜１３４は、実際のセキュア・ブート動作をマスクするための動作を実行する。このマスキングは、侵入者によって監視された場合に、その侵入者がどのＳＰＥ  １２０〜１３４が実際のセキュア・ブート動作を実行しているのかを区別することをむずかしくする電気出力、電磁出力、または熱出力あるいはこれらの組合せをＳＰＥ  １２２〜１３４に生成させる、ブート・コード・シーケンス以外の他のコード・シーケンスを実行することを含むことができる。
【００３８】
異なるコード・シーケンスを生成できる１つの形が、ランダムな量だけ反復するループを実行するブート・ランダム遅延要素をブート・コードに挿入することによるものである。これらのランダム遅延要素は、プロセッサをブートしている間に、セキュアブート・アルゴリズムがランダムな形で変化して、異なる電磁シグネチャおよび熱シグネチャを引き起こし、これによって２つの異なるブート動作を経時的に比較することをむずかしくするために追加される。この形で、各ＳＰＥ  １２０〜１３４は、ブート・コードを異なる遅延量を伴って実行し、これによって、異なる電磁シグネチャおよび熱シグネチャを生成させることができる。さらに、同一のＳＰＥ  １２０〜１３４が、セキュア・ブート・コードを実行するたびに異なる電磁シグネチャおよび熱シグネチャを生成する。侵入者の展望からは、そのようなマスキングに起因して、ＣＢＥ  １００内で実際のブートＳＰＥ  １２０を他のＳＰＥ  １２２〜１３４から区別することが、非常にむずかしくなる。
【００３９】
さらなる例示的実施形態では、他のＳＰＥ  １２２〜１３４によって実行されるコード・シーケンスは、ランダムに選択されたＳＰＥ  １２０が実行するものと同一であるが、ダミー・セキュリティ鍵を用いるブート・コード・シーケンスである。したがって、これらの他のＳＰＥ  １２２〜１３４は、セキュア・ブート動作を実行しているかのように動作し、侵入者にはそう見える。しかし、ＳＰＥ  １２２〜１３４が監視される場合に、偽の電気出力、電磁出力、および熱出力が識別され、これは、侵入者が、監視されるＳＰＥがセキュア・ブート動作を実行している実際のランダムに選択されたＳＰＥ  １２０であるかどうかを判定することをむずかしくする。
【００４０】
さらなる例示的実施形態では、ランダムに選択されたブートＳＰＥ  １２０のマスキングを、ダミーＰＳＥ（図示せず）を設けることによって実行することができる。ダミーＰＳＥは、電磁的、熱的などの監視装置の展望からは、このダミーＳＰＥ上でブート・コード・シーケンスとは異なるプロセスを実行することによってユニークであるかのように見え、これによって、ＣＢＥ  １００への攻撃をこのダミーＳＰＥにリダイレクトする。この形で、侵入者がセキュリティ機構を回避することによってシステムにアクセスすることを試みる時に、その侵入者は、ＣＢＥ  １００の残りへの実際のアクセスを有しないダミーＳＰＥにアクセスするだけである。さらに、その侵入者が、ダミーＰＳＥを危険にさらし、コードを実行することを試みる場合に、ダミーＳＰＥは、ＣＢＥ  １００の残りをシャットダウンして、さらなる侵入の試みを防ぐことができる。
【００４１】
上で述べた例示的実施形態のそれぞれを、これからより詳細に説明する。各例示的実施形態を、本明細書で別々に説明するが、例示的実施形態を、マルチプロセッサ・システム、たとえばＣＢＥ  １００のより高いセキュリティを達成するためにさまざまな形で組み合わせることができることを了解されたい。したがって、特定の情況およびマルチプロセッサ環境に適すると思われる例示的実施形態のすべての組合せが、本発明の趣旨および範囲に含まれることが意図されている。
【００４２】
図２は、１つの例示的実施形態によるランダム・ブート・プロセッサ選択機構の主要な動作構成要素を示す例示的な図である。例示的実施形態の説明を単純にするために、図２に、マルチプロセッサ・システムの１つのプロセッサだけが詳細に示されていることを了解されたい。しかし、マルチプロセッサ・システムのプロセッサのそれぞれが、図２に明示的に示されたプロセッサの要素および動作の配置に類似する形で、要素および動作の類似する配置を有することを了解されたい。任意の個数のプロセッサを、本発明の趣旨および範囲から逸脱せずにマルチプロセッサ・システムに含めることができる。しかし、例示的実施形態の説明において、プロセッサの個数が、図１に示されたＣＢＥアーキテクチャと同様に８であると仮定する。
【００４３】
図２に示されているように、ランダム・ブート・プロセッサ選択機構の主要な動作構成要素は、システム・コントローラ２１０、セキュア鍵ストレージ２２０、フラッシュＲＯＭ  ２３０、およびパーベイシブ・ロジック２４０を含む。１つの例示的実施形態では、例示として図１のＣＢＥアーキテクチャをとりあげると、要素２１０〜２４０を、ＣＢＥアーキテクチャが実施されるチップ上に設けられる要素とすることができる。すなわち、これらの要素２１０〜２４０を、マルチプロセッサ・システムオンアチップ（ＳｏＣ）のロジックに組み込むことができ、したがって、これらの要素２１０〜２４０によって実行される動作を、オンチップで実行することができる。代替案では、要素のうちの１つまたは複数を、オフチップで設けることができ、たとえば、フラッシュＲＯＭ  ２３０を、オフチップで設けることができる。
【００４４】
システム・コントローラ２１０は、システムの電力を許容できる安定したレベルにするためのパワーオン・リセット（ＰＯＲ）の初期動作を実行する責任を負う。すなわち、システム・コントローラ２１０は、当技術分野で一般的に知られているように、電圧を上げること、システム・クロックをオンにすること、およびマルチプロセッサ・システムをブート動作を開始できる状態にするのに必要な他の初期動作の責任を負う。このＰＯＲ動作の一部として、プロセッサ２８０〜２９０は、動作のセキュア・モードにされる。この動作のセキュア・モードでは、プロセッサのローカル・ストアは、プロセッサの外部からアクセス可能ではない。システム・コントローラ２１０は、これらの初期動作が完了し、システムが許容できる電力状態になったならば、「パワー・グッド（ｐｏｗｅｒ  ｇｏｏｄ）」状態をパーベイシブ・ロジック２４０にシグナリングする。
【００４５】
システム・コントローラ２１０からの「パワー・グッド」信号に応答して、パーベイシブ・ロジック２４０は、ソフトウェア・プログラムが実行を開始できるように、マルチプロセッサ・システムを動作状態にブートするブート動作を開始する。このブート動作の一部として、パーベイシブ・ロジック２４０のランダム・イベント・ジェネレータ２４２は、プロセッサのうちでマルチプロセッサ・システムのブート・プロセッサになるべきもの、たとえばプロセッサ２８０をランダムに選択する。ランダム・イベント・ジェネレータ２４２は、マルチプロセッサ・システムのプロセッサのそれぞれに送られる信号を生成する。この信号は、ブート・プロセッサとして選択されるプロセッサについてのみ論理ハイである。この信号は、効果的に、このプロセッサ２８０がブート・プロセッサであることを示す値、たとえば「１」を、ランダムに選択されたプロセッサ２８０の構成ビット・レジスタ２５０内の値にセットする。他のプロセッサは、そのめいめいの構成ビット・レジスタ内の構成ビット値を初期値のままに保たれ、これによって、これらのプロセッサがマルチプロセッサ・システムに関するランダムに選択されたブート・プロセッサではないことを示す。
【００４６】
マルチプロセッサ・システムをブートするブート・コードは、フラッシュＲＯＭ  ２３０内に暗号化されたフォーマットで格納される。暗号化されたブート・コード２３２は、プロセッサ２８０〜２９０のそれぞれに提供することができる。すなわち、ブート・シーケンスの一部として、プロセッサ２８０〜２９０のそれぞれは、フラッシュＲＯＭ  ２３０から暗号化されたブート・コード２３２を読み取ることを試みることができる。しかし、プロセッサのうちの１つだけが、ブート・プロセッサとしてランダムに選択されているので、プロセッサのうちの１つだけが、暗号化されたブート・コード２３２を暗号化解除することができ、マルチプロセッサ・システムを動作状態にするために暗号化されたブート・コード２３２を正しく実行することができる。これは、暗号化されたブート・コード２３２を暗号化解除するのに使用される鍵値である秘密鍵と暗号化されたブート・コード２３２を暗号化解除できないランダムに生成された鍵値との間で選択する、プロセッサのそれぞれの中に設けられるセレクタ２６０の使用を介して達成される。
【００４７】
構成ビット・レジスタ２５０に格納される値は、セレクタ２６０に供給されるセレクタ信号を生成するのに使用される。たとえば、セレクタ２６０は、１つの入力としてセキュア鍵ストレージ２２０からのセキュア鍵（Ｓｋｅｙ）、第２入力としてランダム値ジェネレータ２６２からのランダムに生成された鍵値、およびこの２つの入力のうちのどちらを選択すべきかを示す構成ビット・レジスタ２５０からの選択信号を受け取るマルチプレクサとすることができる。構成ビット・レジスタ２５０が、そのプロセッサがランダムに選択されたブート・プロセッサであることを示す値を格納する場合には、Ｓｋｅｙ入力が選択される。構成ビット・レジスタ２５０が、そのプロセッサがランダムに選択されたブート・プロセッサではないことを示す値を格納する場合には、ランダムに生成された鍵値入力を、セレクタ２６０によって選択することができる。その後、選択された鍵値が、ＳＰＥ  ２７０に出力される。
【００４８】
ＳＰＥ  ２７０は、選択された鍵値および暗号化されたブート・コード２３２を受け取る。次に、ＳＰＥ  ２７０は、暗号化されたブート・コード２３２の暗号化解除を試みる。選択された鍵値が、セキュア鍵ストレージ２２０からのＳｋｅｙである場合には、ＳＰＥ  ２７０は、暗号化されたブート・コード２３２を正しく暗号化解除することができ、システムを動作状態にするためにその中のブート・コード命令を実行することができる。選択された鍵値がセキュア鍵ストレージ２２０からのＳｋｅｙではない場合には、暗号化解除は失敗し、ＳＰＥ  ２７０はブート・コード命令を実行することができない。
【００４９】
ブート・プロセッサをランダムに選択し、ランダムに選択されたブート・プロセッサを使用してマルチプロセッサ・システムをブートする上のプロセスは、マルチプロセッサ・システムによって実行されるパワーオン・リセット（ＰＯＲ）動作のそれぞれと共に実行することができる。したがって、マルチプロセッサ・システムがブートされるたびに、複数のプロセッサのうちの異なるプロセッサを、ブート・プロセッサになるようにランダムに選択することができる。その結果、システムへの潜在的侵入者は、どのプロセッサがブート・プロセッサであるかを先験的に判定することができず、マルチプロセッサ・システムの電磁条件および熱条件の測定をその特定のプロセッサに向けることができない。
【００５０】
反対に、潜在的侵入者は、単一のプロセッサがブート・プロセッサになるランダムなプロセッサとして最終的に選択されることを期待してマルチプロセッサ・システムの複数のブートアップ動作を通じてその単一のプロセッサを監視しなければならないか、プロセッサのすべてを監視し、これによって、どのプロセッサがブート・プロセッサであるかを識別し、個々の電磁条件および熱条件の測定を介して必要な情報を入手することを試みなければならないかのいずれかである。たとえば、８プロセッサ・システムでは、ブート・シーケンスを監視することのむずかしさは、８つすべてのプロセッサを監視しなければならないので、８倍むずかしくなる。さらに、より多くのプローブおよびハードウェアが、そのような監視を行うのに必要になり、これによって、そのような監視試行の困難さが増大する。
【００５１】
図３は、１つの例示的実施形態によるランダム選択機構を示す例示的な図である。上で説明したように、この例示的実施形態の背後の原理的な発想は、マルチプロセッサ・システムのブート・プロセッサになるための複数のプロセッサからのプロセッサのランダム選択である。このランダム選択を行うために、ランダム・イベント・ジェネレータおよびセレクタ機構が設けられる。図示の実施形態では、ランダム・イベント・ジェネレータは、マルチプロセッサ・システムのパーベイシブ・ロジック内に設けられるが、セレクタは、プロセッサのそれぞれに関連して設けられる。図３は、１つの例示的実施形態によるランダム・イベント・ジェネレータおよびセレクタの一実施形態の図を提供する。
【００５２】
図３に示されているように、ランダム・イベント・ジェネレータ３１０は、たとえば図２のランダム・イベント・ジェネレータ２４２に対応するものとすることができるが、リニア・フィードバック・シフト・レジスタ（ＬＦＳＲ）カウンタ３２０、リング・オシレータ３３０、およびセレクタ信号レジスタ／デコーダ３４０を含む。リング・オシレータ３３０は、その出力が２つの電圧レベルの間で発振する奇数個数のＮＯＴゲートからなるデバイスである。ＮＯＴゲートすなわちインバータは、チェーン内に接続され、最後のインバータの出力が、最初のインバータにフィードバックされる。奇数個数のインバータのチェーンの最後の出力は、最初の入力の論理ＮＯＴである。この最終出力は、最初の入力がアサートされてから有限の時間の後にアサートされる。この最後の出力の入力へのフィードバックは、電源の電磁雑音および温度などのランダム要素に従って時間的に変化する不安定な発振を引き起こす。
【００５３】
リング・オシレータ３３０の出力は、クロック信号ｃｌｋと共にＬＦＳＲカウンタ３２０に入力として供給される。ＬＦＳＲカウンタ３２０は、その入力ビットがその以前の状態の線形関数である、シフト・レジスタである。単一ビットの唯一の線形関数は、ＸＯＲおよび逆ＸＯＲであり、したがって、ＬＦＳＲは、その入力ビットが全体的なシフト・レジスタ値のいくつかのビットの排他的論理和（ＸＯＲ）によって駆動される、シフト・レジスタである。
【００５４】
ＬＦＳＲカウンタ３２０の初期値を、種と呼び、このレジスタの動作は決定論的なので、ＬＦＳＲカウンタ３２０によって作られる値のシーケンスは、その現在の（または以前の）状態によって完全に決定される。うまく選択されたフィードバック関数を有するＬＦＳＲカウンタ３２０は、ランダムに見え、非常に長いサイクルを有するビットのシーケンスを作ることができる。例示的実施形態では、このランダムさは、ＬＦＳＲカウンタ３２０への入力が、リング・オシレータ３３０によって作られる発振と、お互いに独立に変化するリング・オシレータ３３０の周波数と入力クロックｃｌｋとの間の不一致との積であるという点で、より明白にされる。
【００５５】
ＬＦＳＲカウンタ３２０は、入力として、リング・オシレータ３３０からの出力およびクロック信号ｃｌｋを受け取り、セレクタ信号レジスタ／デコーダ３４０に格納される出力ビット・ストリームを生成する。リング・オシレータ３３０のインバータは、ＬＦＳＲカウンタ３２０への出力信号に遅延を導入し、したがって、リング・オシレータ３３０の周波数と入力クロックｃｌｋとの間に不一致がある。周波数の間のこの不一致は、図４に示されているように、ＬＦＳＲカウンタ３２０への入力にジッタを生じさせる。このジッタは、ＬＦＳＲカウンタ３２０によって生成される出力をランダム化するランダムさの基準をもたらす。
【００５６】
ＬＦＳＲカウンタ３２０の出力は、セレクタ信号レジスタ／デコーダ３４０に格納される。図示の例では、ＬＦＳＲカウンタ３２０は、値１〜８を符号化すると解釈される３ビット出力を生成する３ビット・カウンタである。セレクタ信号レジスタ／デコーダ３４０のデコーダ機能が、ランダムな３ビット入力値に基づいて、８つの一意の出力のうちの１つを選択する。セレクタ信号レジスタ／デコーダ３４０に格納されたビットの状態に基づいて、ハイまたはロウの状態の信号が、さまざまなプロセッサ、たとえば図１のＳＰＥ  １２０〜１３４の構成ビット・レジスタに出力されて、これによって、構成ビット・レジスタに格納される値をセットし、したがって、マルチプロセッサ・システムのブート・プロセッサになる、プロセッサのうちの１つを選択する。
【００５７】
構成ビット・レジスタ値がセットされたならば、これらの値は、対応するセレクタ３５０〜３７０にセレクタ信号を供給するのに使用される。図３に示されているように、セレクタ信号は、Ｓｋｅｙ入力およびランダム鍵値入力と一緒に、マルチプレクサ３５２、３６２、および３７２に供給される。セレクタ信号の状態に基づいて、Ｓｋｅｙ入力またはランダム鍵値入力のいずれかが、マルチプレクサ３５２、３６２、および３７２のそれぞれによって選択される。ランダム鍵値入力は、ブート・プロセッサの選択について上で説明したランダム・イベント・ジェネレータ構成と同一タイプまたはこれとは異なるタイプの１つまたは複数のランダム値ジェネレータによって生成することができる。すなわち、上で説明したものに類似するランダム・イベント・ジェネレータ構成を使用して、Ｓｋｅｙと同一の長さを有する鍵値をランダムに選択することができる。これらのランダム鍵値は、その後、マルチプレクサ３５２、３６２、および３７２に入力される。
【００５８】
このシステムは、たとえば上で説明したデコーダ機能によって、マルチプレクサ３５２、３６２、および３７２に入力されるセレクタ信号のうちの１つだけが、Ｓｋｅｙ入力を選択し、他のすべてがランダム鍵値入力を選択するように設計される。マルチプレクサ３５２、３６２、および３７２からの出力は、対応するＳＰＥに供給され、その結果、そのＳＰＥは、ランダムに選択されたブート・プロセッサの場合にはブート・コードを暗号化解除しブート・コードを実行するのにこれらの出力を利用するか、あるいは、マルチプロセッサ・システム内の他のすべてのプロセッサの場合にはブート・コードの暗号化解除を試み、マルチプロセッサ・システムのブートに失敗するのにこれらの出力を利用するかのいずれかになることができる。
【００５９】
ランダム・イベント・ジェネレータおよびセレクタの実現に関して上で説明した機構が、例示的にすぎず、例示的実施形態と共に使用できるランダム・イベント・ジェネレータおよびセレクタのタイプに関する限定を述べるか暗示することを意図されていないことを了解されたい。たとえば、図３に示されたリング・オシレータおよびＬＦＳＲカウンタ配置を使用するのではなく、他のランダム・イベント・ジェネレータを利用することができる。たとえば、熱センサを使用して、熱雑音を測定することができ、次に、この熱雑音を使用して、ブート・プロセッサとしてプロセッサのうちの１つを選択するためのランダム・イベントを生成することができる。同様に、量子ドット（ｑ−ｄｏｔ）または半導体ナノ結晶を使用して、量子ソース効果（ｑｕａｎｔｕｍ  ｓｏｕｒｃｅ  ｅｆｆｅｃｔ）を測定することができ、この量子ソース効果を、ブート・プロセッサとして１つのプロセッサを選択するためのランダムさの源として使用することができる。ランダムさの任意の強いソースを、例示的実施形態と共に使用して、マルチプロセッサ・システムのブート・プロセッサとして使用されるプロセッサのランダム選択を実現することができる。
【００６０】
さらに、図３は、５つのインバータを有するリング・オシレータ３３０を示すが、例示的実施形態がこれに限定されないことを了解されたい。そうではなく、奇数個数のインバータがある限り、任意の個数のインバータを、本発明の趣旨および範囲から逸脱せずに使用することができる。実際に、ＬＦＳＲカウンタ３２０への入力における追加のジッタをもたらすためには、入力クロック信号ｃｌｋの周波数とリング・オシレータ３３０からの入力との間のさらなる不一致を導入するために、リング・オシレータ３３０内のインバータのチェーンに追加インバータを追加することが望ましい場合がある。不一致の量は、例示的実施形態が実施される特定のマルチプロセッサ・システムに関する所望の動作特性に基づいて選択することができる。
【００６１】
さらに、図２および３は、プロセッサごとの別々のランダム鍵値ジェネレータによって生成されるランダム鍵値を示すが、例示的実施形態は、これに限定されない。そうではなく、プロセッサに入力される１つまたは複数のランダム鍵値を生成するランダム鍵値ジェネレータを有するプロセッサのすべてについて、単一のランダム鍵値ジェネレータを設けることができる。したがって、たとえば、ランダム鍵値ジェネレータは、プロセッサのすべてに供給される単一のランダム鍵値、各個々のプロセッサのための別々のランダム鍵値（この場合に、たとえば７つの異なるランダム鍵値を生成することができる）、またはマルチプロセッサ・システムのさまざまなプロセッサに選択的に供給できる任意の個数のランダム鍵値を生成することができる。
【００６２】
１つの例示的実施形態では、図５に示されているように、それぞれが異なるランダム鍵値を出力する複数のランダム鍵値ジェネレータ３９０を設けることができる。代替案では、上で述べたように、単一のランダム鍵値ジェネレータを、これらの別々のランダム鍵値ジェネレータの代わりに使用することができる。これらのランダム鍵値を、マルチプロセッサ・システム内のプロセッサ、たとえばＳＰＥ  ３９３および３９４のセレクタ、たとえばマルチプレクサ３９１および３９２への入力として、マルチプロセッサ・システムのブートのためのブート・コードを暗号化解除するのに実際に使用される、Ｓｋｅｙストレージ３９５、たとえばｅＦｕｓｅからのセキュア鍵（Ｓｋｅｙ）と一緒に供給することができる。図示されているように、ランダムに生成される鍵値およびＳｋｅｙ値を、侵入者がＳｋｅｙストレージ３９５からの信号線であるものとして信号線のうちの１つを分離することをよりむずかしくするために、多重化し、マルチプレクサ３９１および３９２のそれぞれへの８つの同一の信号線に供給することができる。
【００６３】
８つの鍵値入力全体を、マルチプレクサ３９１および３９２に供給することができ、パーベイシブ・ロジック３９７内のランダム・イベント・ジェネレータ３９６からの選択信号を、この８つの入力のうちの１つを選択するのに使用することができる。この場合に、Ｓｋｅｙ入力と１つのランダム鍵値との間で単純に選択するのではなく、マルチプレクサ３９１および３９２は、Ｓｋｅｙ入力と７つのランダム鍵値との間で選択することができる。したがって、第１プロセッサが、ブート・プロセッサとしてのこの第１プロセッサのランダム選択に基づいてＳｋｅｙ入力を選択することができ、第２プロセッサが、第３ランダム鍵値を選択することができ、第３プロセッサが、第４ランダム鍵値を選択することができ、第５プロセッサが、第１ランダム鍵値を選択することができ、以下同様である。したがって、各プロセッサは、Ｓｋｅｙまたはランダムに生成された鍵値のいずれかの、異なる鍵値を受け取ることができる。その結果、侵入者が、マルチプロセッサ・システムのバス・トラフィックを監視する時にどの鍵値が正しい鍵値であるかを区別することが、むずかしくなる。
【００６４】
さらに、図３および５に示された機構が、好ましくは、マルチプロセッサ・システムが設けられるセラミック・パッケージのより下の層の金属層内または設計が単一チップ上にある場合には相互接続の最下層内に設けられることを了解されたい。マルチプロセッサ・システムの電気特性および熱特性をプローブする能力は、現在、マルチプロセッサ・セラミック・パッケージのより上の層に制限されるので、これらの要素をより下の層の金属層内に配置することによって、これらの要素の動作をプローブする能力が、よりむずかしくなる。したがって、侵入試行者が、ランダム・イベント・ジェネレータおよびセレクタによって提供される鍵値を判定するためにこれらの要素の熱特性および電気特性を監視することは、不可能ではないとしても非常に困難である。
【００６５】
上の機構を使用することによって、マルチプロセッサ・システムの複数のプロセッサ内のプロセッサを、マルチプロセッサ・システムをブートするためにランダムに選択することができる。この形で、マルチプロセッサ・システムをブートするのに使用される秘密情報、たとえば秘密鍵を入手するためにプロセッサの電気特性および熱特性を監視する能力は、よりむずかしくされ、潜在的に、許可なしにマルチプロセッサ・システムにアクセスすることを望む可能性がある者に対する抑止力になる。
【００６６】
マルチプロセッサ・システムをブートするためにプロセッサをランダムに選択する上の機構は、ブート・シーケンスの監視に対する十分な量の保護を提供するが、それでも、許可されない個人が十分にしつこい場合に、そのような個人がシステムを「ハックする」ことが可能である可能性がある。そのような監視を事実上不可能にするために、例示的実施形態は、許可されない個人が、どのプロセッサがマルチプロセッサ・システムをブートするための実際のブート・シーケンスを正しく実行しているかを区別できなくするように、ランダムに選択されたプロセッサ上でのブート・シーケンスをマスクする追加機構を提供する。
【００６７】
１つの例示的実施形態では、マスキング動作は、ブート・プロセッサになるように選択されたのではないプロセッサのそれぞれが命令の異なるセットを実行して、これによって、ブート・プロセッサをシステム内の他のプロセッサから区別することをむずかしくする、マスクする電気シグネチャおよび熱シグネチャを生成することを含む。異なるプロセッサによって実行されるコード・シーケンスは、プロセッサに関連するメモリ内で提供されるか、あるいはプロセッサがブート・コード・シーケンスを暗号化解除できない時にプロセッサによって他の形でアクセス可能であるかのいずれかである、同一のデフォルト・コード・シーケンスとすることができる。たとえば、デフォルト・コード・シーケンスを、プロセッサのそれぞれに関連するローカル・ストアのセキュア部分内で提供することができる。その代わりに、デフォルト・コード・シーケンスを、フラッシュＲＯＭまたはオンチップもしくはオフチップで設けられる他のストレージ・デバイス内で提供することができる。
【００６８】
プロセッサが、フラッシュＲＯＭから受け取られた実際の暗号化されたブート・コードを暗号化解除できない時には、プロセッサは、ローカル・ストレージのこのセキュア部分に戻ってこれをデフォルトで選択することができ、このセキュア部分は、プロセッサに、別のプロセッサ上で実行されているブート・コードをマスクする命令を実行させる。命令のこのシーケンスは、使用可能な情報を全く生成しないものとすることができ、マスキング機能だけのために働くことができる。その代わりに、命令のこのシーケンスを使用して、たとえば、ブート動作中または他の有用な動作中にシステムを監視する動作を実行することができる。
【００６９】
１つの例示的実施形態では、非選択プロセッサすなわち非ブート・プロセッサのそれぞれで実行されるコードは、同一である。非選択プロセッサのそれぞれによって実行されるコードが同一である例示的実施形態では、これらの非選択プロセッサのそれぞれで実行されるコードは、好ましくは、実際のブート・コードに似た電気プロファイルおよび熱プロファイルを生成するが、侵入者がマルチプロセッサ・システムのセキュリティを迂回するために必要とする秘密情報のいずれをも提供しないコードである。そのようなコードは、実際のブート・コードの動作に似た動作を実行するが、マルチプロセッサ・システムの機密部分にアクセスしないものとすることができる。実際に、１つの例示的実施形態では、マルチプロセッサ・システムをブートするのに使用されるものと同一のブート・コードを、非選択プロセッサによって、しかし、秘密鍵（Ｓｋｅｙ）および他の特権情報へのアクセスをアクセス不能にされた状態で使用することができる。
【００７０】
その結果、これらの非選択プロセッサの熱プロファイルおよびバス・トラフィックは、実際のブート・シーケンスを近似する。したがって、監視プローブを使用して熱プロファイル、バス・トラフィック、および類似物を監視する侵入者の展望から、その侵入者は、どのコアが実際のブート動作を実行しているかを解読することができない。というのは、すべてのコアが、監視プローブを介して同一に見えるからである。そのような曖昧さは、タンパリングを思いとどまらせ、実際のブート・コード・シーケンス、秘密鍵情報、および類似物を分離することをよりむずかしくする。
【００７１】
他の例示的実施形態では、非選択プロセッサのそれぞれが、命令の異なるセットを実行することができる。非選択プロセッサのそれぞれで命令の異なるセットを実行することによって、プロセッサのどれもが、電気プローブまたは熱プローブを使用して監視された時に、ユニークに見えなくなる。その結果、熱プロファイルまたはバス・トラフィックなどの区別する特性を、どのプロセッサがブート・プロセッサであるかを識別するためにプローブによって識別することができない。
【００７２】
命令のこれらの異なるセットは、マルチプロセッサ・システム内のプロセッサのそれぞれについてランダムに選択することができる。したがって、たとえば、オンチップ・ストレージ・デバイス、たとえばフラッシュＲＯＭまたは類似物に格納されたコード・シーケンスの異なる開始アドレスを、ランダムに選択し、マルチプロセッサ・システムのプロセッサに供給することができる。次に、プロセッサは、ランダムに選択された開始アドレスで命令の実行を開始することができ、これによって、実際のブート・コード・シーケンスをマスクする異なる熱プロファイルおよびバス・トラフィックが生成される。
【００７３】
異なるプロセッサ用の異なるコード・シーケンスを提供する１つの形が、ランダム遅延要素をブート・コードに挿入されたブート・コードを設けることである。これらの遅延要素は、たとえば、ランダムな回数だけ反復するループとすることができる。そのような遅延要素は、ランダムに選択されたブート・プロセッサによって実行される実際のブート・コード・シーケンス内と、非選択プロセッサによって実行されるブート・コード・シーケンス内との両方に設けることができる。このランダム遅延は、プロセッサの熱特性およびバス・トラフィック特性を監視する侵入者の展望から、ブート・コードにプロセッサのそれぞれで異なって「見え」させる。その結果、侵入者が、どのプロセッサがマルチプロセッサ・システムをブートする実際のブート・コードを実行しているかを区別することは、可能ではない。
【００７４】
もう１つの例示的実施形態では、侵入者によって監視された時にユニークであるかのように見えるダミー・プロセッサが設けられる。この例示的実施形態は、あるプロセッサが、ブート・プロセッサになるためにランダムに選択され、非選択プロセッサのうちの１つのプロセッサが、ブート・コード・シーケンスからのユニークな熱プロファイルおよびバス・トラフィック・プロファイルを提供するコードを実行するダミー・プロセッサになるために選択され、他のプロセッサが、実際のブート・コード・シーケンスの熱プロファイルおよびバス・トラフィックをできる限りよく複製するコード・シーケンスを実行する、前の実施形態の組合せである。この形で、侵入者は、他のプロセッサからユニークであるものとしてダミー・プロセッサを検出し、このプロセッサが実際のブート・コード・シーケンスを実行していると結論する。したがって、侵入者は、熱プロファイルおよびバス・トラフィックの観点から他のプロセッサに似て見える実際のブート・プロセッサではなく、このダミー・プロセッサに攻撃を向ける。さらに、侵入者が、コードを実行することを試みるか、他の形でダミー・プロセッサに能動的に干渉する場合に、ダミー・プロセッサは、システム・シャットダウンをシグナリングすることができる。
【００７５】
図６〜９は、例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。図６は、監視するプローブの観点から、ブート・コード・シーケンスと同一に見えるコードが非選択プロセッサのそれぞれで実行される第１マスキング動作を示す。図６に示されているように、ＳＰＥ０  ４１０は、マルチプロセッサ・システム４００のブート・プロセッサになるために、前に説明した機構の使用によるなど、ランダムに選択される。したがって、ＳＰＥ０  ４１０は、秘密鍵を受け取り、フラッシュＲＯＭからのブート・コード・シーケンスを暗号化解除し、マルチプロセッサ・システム４００を動作状態にするのに必要な実際のブート・コード動作を実行する。他のＳＰＥ、たとえばＳＰＥ１〜ＳＰＥ７  ４１２〜４２４は、監視するプローブの展望からはブート・コード・シーケンスに似て見えるコードを実行する。
【００７６】
上で説明したように、他のＳＰＥ１〜ＳＰＥ７  ４１２〜４２４が実行するコード・シーケンスは、ＳＰＥ１〜ＳＰＥ７  ４１２〜４２４にＳＰＥ０  ４１０上で実行されるブート・コード・シーケンスをマスクするための命令を実行させる、ローカル・ストレージのセキュア部分で提供されるデフォルト・コード・シーケンスとすることができる。これらの非選択のＳＰＥ１〜ＳＰＥ７  ４１２〜４２４のそれぞれで実行されるコードは、好ましくは、実際のブート・コードに似た電気プロファイルおよび熱プロファイルを生成するが、マルチプロセッサのセキュリティを迂回するために侵入者が必要とする秘密情報のいずれをも提供しないコードである。そのようなコードは、実際のブート・コードの動作に似た動作を実行するが、マルチプロセッサ・システム４００の機密部分にアクセスしないものとすることができる。
【００７７】
図７は、異なるランダムに選択されたアルゴリズムが非選択プロセッサのそれぞれで実行される、もう１つの例示的実施形態を示す。図７に示されているように、ＳＰＥ０は、やはり、ブート・プロセッサになるために選択され、したがって、マルチプロセッサ・システム４００を動作状態にブートするブート・コードを実行する。他のＳＰＥ１〜ＳＰＥ７  ４１２〜４２４のそれぞれは、異なる熱プロファイルおよびＥＩＢ上の異なるバス・トラフィックを生成する別々のランダムに選択されたアルゴリズムを実行する。したがって、各ＳＰＥ０〜７は、他のＳＰＥ０〜７  ４１０〜４２４のそれぞれと比較された時に、ユニークに見える。したがって、どのＳＰＥ０〜７  ４１０〜４２４がマルチプロセッサ・システム４００をブートする実際のブート・プロセッサであるかを区別することは、可能ではない。
【００７８】
上で述べたように、これらの異なるアルゴリズムは、マルチプロセッサ・システム内のＳＰＥ１〜ＳＰＥ７  ４１２〜４２４のそれぞれについてランダムに選択することができる。したがって、たとえば、オンチップ・ストレージ・デバイス、たとえばフラッシュＲＯＭまたは類似物内に格納されたコード・シーケンスの異なる開始アドレスを、ランダムに選択し、ＳＰＥ１〜ＳＰＥ７  ４１２〜４２４に供給することができる。その後、ＳＰＥ１〜ＳＰＥ７  ４１２〜４２４は、ランダムに選択された開始アドレスで命令の実行を開始することができ、これによって、実際のブート・コード・シーケンスをマスクする異なる熱プロファイルおよびバス・トラフィックが生成される。
【００７９】
代替案では、ブート・コードを、ランダム遅延要素をブート・コードに挿入してＳＰＥ０〜７  ４１０〜４２４のそれぞれに供給することができる。これらの遅延要素は、たとえば、ランダムな回数だけ反復するループとすることができる。このランダム遅延は、プロセッサの熱特性およびバス・トラフィック特性を監視する侵入者の展望から、ブート・コードにＳＰＥ０〜７  ４１０〜４２４のそれぞれで異なって「見え」させる。その結果、侵入者が、どのプロセッサがマルチプロセッサ・システムをブートする実際のブート・コードを実行しているかを区別することは、不可能である．
【００８０】
図８は、侵入者からの攻撃をリダイレクトできるダミー・プロセッサが設けられるもう１つの例示的実施形態を示す。図８に示されているように、ＳＰＥ０は、ブート・シーケンスを実行するランダムに選択されたブート・プロセッサである。ＳＰＥ１〜ＳＰＥ４  ４１２〜４１８およびＳＰＥ６〜ＳＰＥ７  ４２２〜４２４は、図６に関して上で説明した実施形態と同様に、熱およびバス・トラフィック監視の展望からブート・コード・シーケンスに似て見えるコードを実行する。その一方で、ＳＰＥ５  ４２０は、図７に関して上で説明したものに似た形で、ランダムに選択できるランダムに選択されたアルゴリズムを実行する。
【００８１】
したがって、ＳＰＥ０〜７  ４１０〜４２４の特性を監視する侵入者の展望からは、ＳＰＥ０〜ＳＰＥ４  ４１０〜４１８およびＳＰＥ６〜ＳＰＥ７  ４２４のすべてが、同一のコードを実行しているように見える。しかし、ＳＰＥ５  ４２０は、他のＳＰＥからユニークに見える。したがって、マルチプロセッサ・システムのブート・シーケンスを攻撃することを望む侵入者は、侵入者にはＳＰＥ５  ４２０が実際のブート・プロセッサであるように見えるので、実際のブート・プロセッサであるＳＰＥ０  ４１０ではなく、ＳＰＥ５  ４２０に攻撃をリダイレクトする可能性がある。
【００８２】
実際のブート・プロセッサが各パワーオン・リセット（ＰＯＲ）動作によってランダムに選択されるのと同様に、ダミー・プロセッサをも、非選択プロセッサからランダムに選択することができる。したがって、各ＰＯＲ動作によって、異なるブート・プロセッサおよびダミー・プロセッサを選択することができ、これによって、どのプロセッサが、マルチプロセッサ・システムへのアクセスを入手するために危険にさらすことのできる実際のブート・シーケンスを実行しているのかを侵入者が演繹することをより困難にすることができる。
【００８３】
完全を期して、図９に、システムをブートするのに使用されるブート・コードがプロセッサのそれぞれによって実行される、前に上で説明した例示的実施形態を示す。この例示的実施形態では、ランダムに選択されたブート・プロセッサだけが、秘密鍵（Ｓｋｅｙ）へのアクセスを与えられ、他のプロセッサは、ランダムに選択された鍵（Ｒｋｅｙ１〜Ｒｋｅｙ７）を受け取る。プロセッサのそれぞれは、それに供給された鍵、たとえばＳｋｅｙまたはＲｋｅｙを使用して、ブート・コードを復号し、実行することを試みる。ランダムに選択されたブート・プロセッサだけが、ブート・コードを正しく暗号化解除し、これを実行して、データ処理システムを動作状態にすることができる。しかし、外部モニタにとっては、プロセッサのそれぞれが暗号化解除およびシステムのブートを試みるために類似するタスクを実行するので、プロセッサのすべてがシステムをブートしているかのように見え、これによって、実際のブート・プロセッサがマスクされる。すなわち、プロセッサのそれぞれは、類似する熱シグネチャまたは電気シグネチャあるいはその両方を生成し、これは、侵入試行者が、測定するプローブおよび類似物を使用して、どのプロセッサが実際のブート・プロセッサであるかを区別することをむずかしくする。
【００８４】
例示的実施形態によって提供される、ブート・プロセッサのランダム選択およびブート・シーケンスのマスキングの使用を介して、マルチプロセッサ・システムへの侵入試行者が、どのプロセッサがブート・コード・シーケンスを実行しているのかを区別できるようになることは、非常にむずかしくなる。したがって、侵入試行者が、プロセッサの熱プロファイルおよびバス・トラフィックを監視し、暗号化されたブート・コードにアクセスする際に使用するための秘密鍵情報を識別することは、非常にむずかしくなる。さらに、侵入試行者が、ブート・コード・シーケンス内でシステムへの進入が可能な場所を識別することは、むずかしくなる。したがって、このマルチプロセッサ・システムは、ブート・シーケンスへの許可されないアクセスからより安全にされる。
【００８５】
図１０〜１１は、マルチプロセッサ・システム内のプロセッサをブート・プロセッサとしてランダムに選択する例示的動作およびブート・コード・シーケンスをマスクする例示的動作の概要を示す流れ図である。流れ図の各ブロックおよび流れ図のブロックの組合せを、コンピュータ・プログラム命令によって実施できることを理解されたい。これらのコンピュータ・プログラム命令は、プロセッサ上または他のプログラム可能データ処理装置上で実行される命令が流れ図の１つまたは複数のブロックで指定される機能を実施する手段を作成するように、機械を作るためにプロセッサまたは他のプログラム可能データ処理装置に供給することができる。これらのコンピュータ・プログラム命令は、コンピュータ可読メモリまたは記憶媒体に格納された命令が流れ図の１つまたは複数のブロックで指定される機能を実施する命令手段を含む製造品を作るように、特定の形で機能するようにプロセッサまたは他のプログラム可能データ処理装置に指示できるコンピュータ可読メモリまたは記憶媒体に格納することもできる。
【００８６】
したがって、流れ図のブロックは、指定された機能を実行する手段の組合せ、指定された機能を実行するステップの組合せ、および指定された機能を実行するプログラム命令手段をサポートする。また、流れ図の各ブロックおよび流れ図のブロックの組合せを、指定された機能またはステップを実行する特殊目的のハードウェアベースのコンピュータ・システムによって、または特殊目的のハードウェアおよびコンピュータ命令の組合せによって実施することができることを理解されたい。
【００８７】
図１０は、マルチプロセッサ・システムをブートするブート・プロセッサのランダム選択の例示的動作の概要を示す。図１０に示されているように、この動作は、システム・コントローラがパワーオン・リセット（ＰＯＲ）動作を実行することから開始される（ステップ５１０）。初期ＰＯＲ動作の実行の後に、システム・コントローラは、マルチプロセッサ・システムのパーベイシブ・ロジックに「パワー・グッド」信号を供給し（ブロック５２０）、パーベイシブ・ロジックは、ランダム・ブート動作を開始する（ステップ５３０）。
【００８８】
パーベイシブ・ロジックは、複数のプロセッサから、ブート・プロセッサになるプロセッサをランダムに選択する（ステップ５４０）。次に、パーベイシブ・ロジックは、ランダム選択に基づいてプロセッサの構成ビットをセットし（ステップ５５０）、ブート動作を開始するようにプロセッサにシグナリングする（ステップ５６０）。フラッシュＲＯＭが、暗号化されたブート・コードをプロセッサに供給し、鍵値が、秘密鍵ストレージおよびランダム鍵ジェネレータからプロセッサに供給される（ステップ５７０）。次に、プロセッサは、その構成ビットのセッティングに基づいて、そのプロセッサによって使用される鍵を選択する（ステップ５８０）。プロセッサは、選択された鍵に基づいてブート・コードの暗号化解除を試みる（ステップ５９０）。選択されたプロセッサが、秘密鍵を使用してブート・コードを暗号化解除し、システムをブートする（ステップ５９５）。すべての他の非選択プロセッサによるブート・コードを暗号化解除する試みが、失敗し、選択されたプロセッサだけが、システムをブートできることに留意されたい。その後、動作が終了する。
【００８９】
図１１は、１つの例示的実施形態によるブート・コード・シーケンスをマスクする例示的動作の概要を示す流れ図である。図１１に概要を示された動作は、たとえば、マルチプロセッサ・システムの各プロセッサ内で実行することができる。
【００９０】
図１１に示されているように、プロセッサは、ブート動作を開始するシグナルを受け取る（ステップ６１０）。このステップは、たとえば、図１０のステップ５３０に対応するものとすることができる。プロセッサは、ブート・コードを暗号化解除することを試み（ステップ６２０）、暗号化解除の試みが失敗したかどうかに関する判定が行われる（ステップ６３０）。暗号化解除が成功であった、すなわち、プロセッサが、ランダムに選択されたブート・プロセッサである場合には、ブート・コードが実行されて、これによって、マルチプロセッサ・システムが動作状態にされる（ステップ６４０）。
【００９１】
暗号化解除が失敗した場合には、ブート・シーケンスをマスクするために実行されるコード・シーケンスが選択される（ステップ６５０）。上で述べたように、特定の実施形態に応じて、マスキング・コード・シーケンスの選択は、ローカル・ストアのセキュア部分内のデフォルト・コード・シーケンス、ランダムに選択された開始アドレス、ランダム遅延要素を有するブート・コードの使用、または類似物に基づくものとすることができる。マスキング・コード・シーケンスを実行し（ステップ６６０）、システムが動作状態であるかどうか、すなわち、ブート・シーケンスが完了したかどうかに関する判定を行う（ステップ６７０）。そうでない場合には、動作はステップ６６０に戻り、マスキング・コード・シーケンスの実行を継続する。システムが動作状態である場合には、マスキング・コード・シーケンスの実行を終了し（ステップ６８０）、動作を終了する。
【００９２】
したがって、上の例示的実施形態は、マルチプロセッサ・システムを動作状態にブートするブート・プロセッサとして複数のプロセッサから１つのプロセッサをランダムに選択できる機構を提供する。例示的実施形態は、さらに、どのプロセッサが実際のブート・コード・シーケンスを実行するためにランダムに選択されたかを侵入者が区別することをむずかしくするために、ランダムに選択されたプロセッサによって実行されているブート・コード・シーケンスをマスクする機構を提供する。これらの機構を使用することによって、マルチプロセッサ・システムは、侵入者がブート・コード・シーケンスの監視を介してシステムへのアクセスを得ることを極端にむずかしくすることによって、より安全にされる。
【００９３】
上の例示的実施形態は、マルチプロセッサ・システム内の単一のプロセッサによって実行されるブート・コード・シーケンスに関して説明された。しかし、例示的実施形態は、これに限定されない。他の例示的実施形態では、ブート・コード・シーケンスを、後で説明するようにマルチプロセッサ・システム内の複数のプロセッサにまたがって分散させることができる。ブート・コード・シーケンスをマルチプロセッサ・システム内の複数のプロセッサにまたがって分散させることによって、ブート・シーケンスに関する完全な情報を入手し、これによってセキュリティ手段を迂回するために危険にさらさなければならないプロセッサの個数が増える。
【００９４】
したがって、後で説明する例示的実施形態の分散ブート動作は、単一のセキュア・コアを利用するマルチプロセッサ・データ処理システムより安全である。さらに、ブート動作を分散させることによって、ブート動作のいずれかの部分が危険にさらされる場合に、ブート動作が失敗し、これによって、許可されない個人がシステムのセキュリティを迂回することが防がれる。言い換えると、侵入試行者が、ブート動作の一部を危険にさらすことはできるが、侵入試行者は、ブート動作のすべてを危険にさらすことはできず、したがって、マルチプロセッサ・データ処理システムへのアクセスを得ることはできない。
【００９５】
この例示的実施形態を用いると、ブート・コード・シーケンスは、各区画をマルチプロセッサ・システムの異なるプロセッサに供給できるように、複数の区画に区分される。ブート・コード・シーケンスの各区画が実行される時に、その区画は、ブート・コード・シーケンスが別のプロセッサ上で進行できるようになる前に、そのめいめいのプロセッサ上で正しく完了しなければならない。セキュア通信機構が、ブート・コード・シーケンスの以前の区画の満足な完了を通信するのに使用される。このセキュア通信機構には、暗号化されたパスワードまたはたとえば公開／秘密暗号化鍵対などの他のセキュリティ識別子など、前のセッションが危険にさらされなかったことを示すセキュリティ・トークンを含めることができる。この形で、満足に完了しなければならない依存する「セッション」のチェーンが作成される。
【００９６】
ブート・コードの分散実行に用いられるプロセッサは、マルチプロセッサ・システム内のプロセッサのすべてまたはマルチプロセッサ・システム内のプロセッサのサブセットとすることができる。たとえば、単一のブート・プロセッサを選択する、上で説明したものなどのランダム選択機構を使用して、分散された形でシステムをブートするのに使用される複数のブート・プロセッサをランダムに選択することができる。さらに、プロセッサによって実行されるブート・コードの特定の区画をランダムに選択することができ、各パワーオン・リセット（ＰＯＲ）動作と共に、同一のプロセッサが、以前のＰＯＲ動作と同一のブート・コード区画を実行してもしなくてもよい。したがって、ランダム化は、どのプロセッサが分散ブート動作に用いられるかに関してならびに各プロセッサがどのブート・コード区画を実行するかに関して実行することができる。
【００９７】
マルチプロセッサ・システムの他のプロセッサすなわち非ブート・プロセッサは、分散ブート動作中に作業を全く実行しないか、プロセッサのランダムに選択されたサブセット上でのブート・コード実行をマスクするために、前に説明したさまざまなマスキング・コード例示的実施形態のうちの１つまたは複数のマスキング・コード・シーケンスを実行するかのいずれかとすることができる。言い換えると、本例示的実施形態の分散ブート・コード・シーケンス動作を、本発明の趣旨および範囲から逸脱せずに、前に説明した例示的実施形態のうちの１つまたは複数と組み合わせることができる。
【００９８】
図１２は、１つの例示的実施形態によるデイジー・チェーン配置またはリング配置として構成された分散ブート動作を示す例示的な図である。図１２に示されているように、複数のプロセッサ７２０〜７５０が、マルチプロセッサ・データ処理システムをブートするために設けられる。図示の例では、コプロセッサすなわちＳＰＥのすべてが、分散ブート動作に利用されるが、制御プロセッサ、たとえばＰＰＥは、分散ブート・コードを実行しない。もちろん、他の例示的実施形態では、ＰＰＥをも、分散ブート動作に含めることができる。さらに、他の例示的実施形態では、前に述べたように、マルチプロセッサ・データ処理システム内のプロセッサのサブセットだけを使用して、分散ブート動作を実行することができる。
【００９９】
暗号化されたブート・コード７１０は、たとえば図２のフラッシュＲＯＭ  ２３０など、マルチプロセッサ・データ処理システムに関連するストレージ・デバイスに格納することができるが、別々に実行可能な区画すなわちブート・コード区画１からｎに区分することができる。たとえば、区画を、同一の暗号化アルゴリズムおよび同一の秘密鍵（Ｓｋｅｙ）を使用して別々に暗号化される暗号化されたブート・コード内のモジュールまたはルーチンとして提供することができる。好ましくは、ブート・コード区画の個数は、分散ブート動作に用いられるプロセッサの個数すなわちブート・プロセッサの個数と等しい。しかし、ブート・プロセッサのリング配置など、いくつかの例示的実施形態では、ブート・コード区画の個数は、ブート・プロセッサの個数に限定されず、ブート・プロセッサの個数より少ないまたはこれより多い、区画の任意の個数とすることができる。
【０１００】
分散ブート動作は、パーベイシブ・ロジック７９０の制御の下で実行され、このパーベイシブ・ロジック７９０は、たとえば図１のパーベイシブ・ロジック１９３と同一とすることができる。パーベイシブ・ロジック７９０は、たとえばランダム・イベント・ジェネレータの使用を介して、ブート・プロセッサとして使用されるプロセッサ７２０〜７５０をランダムに選択すると同時に、ランダムに選択されたプロセッサ７２０〜７５０のそれぞれが実行する区画をランダムに選択することができる。そのような実施形態では、パーベイシブ・ロジック７９０は、分散ブート動作の以前のセクションが危険にさらされたか否かを示すセキュア通信機構の使用を介してブート・コード・シーケンスのセキュリティを保証するために、ブート・コード区画が実行される順序を記憶することができる。しかし、この説明を単純にするために、図示の例では、マルチプロセッサ・システムのプロセッサのすべてまたは少なくともコプロセッサのすべてが、分散ブート動作に利用され、ブート・コード区画がシーケンシャル順でプロセッサ７２０〜７５０に供給されると仮定する。
【０１０１】
パーベイシブ・ロジック７９０は、どのブート・コード区画がプロセッサ７２０〜７５０のそれぞれによって実行されるのかを選択するセレクタ信号をプロセッサ７２０〜７５０に供給する。さらに、パーベイシブ・ロジック７９０は、プロセッサ７２０〜７５０に、対応するブート・コード区画を暗号化解除するのに使用される鍵としてＳｋｅｙストレージからＳｋｅｙを選択させる鍵値セレクタ信号を供給する。プロセッサ７２０〜７５０は、供給されたＳｋｅｙを使用してそのブート・コード区画を暗号化解除し、次に、たとえばデイジー・チェーン・アーキテクチャ内のプロセッサ７２０〜７５０の配置によってまたはパーベイシブ・ロジック７９０の制御下でのいずれかで、正しいシーケンスでブート・コード区画を実行する。
【０１０２】
図示の例では、ＳＰＥ０  ７２０は、そのブート・コード区画１を暗号化解除し、そのブート・コード区画を実行し、その後、そのブート・コード区画１の成功の完了をＳＰＥ１  ７３０にセキュアに通信することによって、分散ブート動作を開始する。さらに、セキュリティ機構を、以前のセッションすなわち以前のブート・コード区画の実行からなるセッションが危険にさらされなかったことを示すために、ＳＰＥの間で利用することができる。このセキュリティ機構は、たとえば、セキュリティ・トークンを渡すこと、ディジタル署名、パスワード、以前のブート・コード区画のチェックサム、成功の完了メッセージの公開鍵／秘密鍵暗号化の使用、または類似物とすることができる。分散ブート動作の以前のセッションが危険にさらされたか否かを通信するのに使用できる任意のセキュリティ機構が、本発明の趣旨および範囲に含まれることが意図されている。
【０１０３】
ブート・コード区画１実行の成功の危険にさらされていない完了の確認を受け取った後に、ＳＰＥ１  ７３０は、そのブート・コード区画２を暗号化解除し、そのブート・コード区画を実行し、次に、ブート・コード区画２の成功の完了をＳＰＥ２  ７４０に通信することができる。このプロセスは、プロセッサのすべてが、危険にさらされずに分散ブート動作のそのプロセッサの区画を完了したことをシグナリングし終えるまで継続することができる。ブート・コード区画のこの依存性チェーンのすべての破断、たとえば、不成功の実行または危険にさらされた実行のすべてのシグナリングが、失敗したブートをもたらし、これを、システム・コントローラにシグナリングすることができる。すべてのブート・コード区画が成功して完了したならば、マルチプロセッサ・データ処理システムは、動作状態にあり、この状態では、ソフトウェア・アプリケーションをさまざまなプロセッサ上で実行することができる。
【０１０４】
上で説明した例示的実施形態は、プロセッサ上で実行されるブート・コード区画に関してプロセッサのデイジー・チェーン配置を利用する。ブート・コード区画のシーケンシャル実行を保証する他の配置を、本発明の趣旨および範囲から逸脱せずに利用することができる。たとえば、上のデイジー・チェーン配置の拡張は、最後のプロセッサ、たとえばＳＰＥ７  ７５０が、そのブート・コード区画の実行の成功の危険にさらされない完了を「主」ブート・プロセッサとして選択される最初のプロセッサ、たとえばＳＰＥ０  ７２０に戻って通信するように、分散ブート動作に関してプロセッサのリング配置を設けることである。この形で、リング配置を介してあるセッションから次のセッションに渡されるセキュリティ機構、たとえばセキュリティ・トークン、増分されるカウント値などを、主ブート・プロセッサで使用して、分散ブート動作全体の危険にさらされない実行を検証することができる。
【０１０５】
さらに、プロセッサのリング配置は、ブート・プロセッサの個数より多数のブート・コード区画を利用することを可能にする。したがって、マルチプロセッサ・データ処理システム内のプロセッサのサブセットだけがブート・プロセッサになるように選択される場合に、プロセッサのこのサブセットは、分散ブート動作に関してリング配置に配置される時に、任意の個数のブート・コード区画を実行することができる。これは、マルチプロセッサ・データ処理システム内のどのプロセッサがブート・プロセッサになるかをランダムに選択するだけではなく、何個のプロセッサが分散ブート動作でのブート・プロセッサになるかをランダムに選択もする、パーベイシブ・ロジック７９０の能力を生じさせる。したがって、最初のＰＯＲ動作で、４つのプロセッサを、ブート・プロセッサになるために選択することができ、後続のＰＯＲ動作で、３つのブート・プロセッサを選択することができる。パーベイシブ・ロジック７９０には、前に上で説明したプロセッサのランダム選択を制御するのにその後に使用される、ブート・プロセッサになるために選択されるプロセッサの個数をランダムに選択するロジックを含めることができる。
【０１０６】
分散ブート動作に関するブート・プロセッサのもう１つの可能な配置が、マスタ／スレーブ配置を設けることである。図１３は、１つの例示的実施形態によるマスタ／スレーブ配置として構成された分散ブート動作を示す例示的な図である。図１３に示されているように、１つのプロセッサ７６０が、マスタ・プロセッサと指定される。このプロセッサは、コプロセッサ、たとえばＳＰＥのうちの１つまたは制御プロセッサ、たとえばＰＰＥとすることができる。スレーブ・プロセッサ、たとえばＳＰＥ０〜ＳＰＥ７  ７２０〜７５０は、それぞれ、上で図１２で説明したものに類似する形で、そのブート・コード区画を完了することと、それらが実行を完了し、危険にさらされなかったことをマスタ・コアにセキュアに通信することとの責任を負う。マスタであるプロセッサ７６０が、スレーブ・プロセッサであるＳＰＥ０〜ＳＰＥ７  ７２０〜７５０のそれぞれから信号を受け取り、プロセッサ７６０が危険にさらされなかったことをそれ自体で検証したならば、マルチプロセッサ・データ・システムは、動作状態に入ることを許可され、この状態では、ソフトウェア・アプリケーションを実行することができる。
【０１０７】
分散ブート動作に関するプロセッサのデイジー・チェーン配置、リング配置、およびマスタ／スレーブ配置を本明細書で説明したが、本発明が、これらの説明された配置だけに限定されるのではないことを了解されたい。そうではなく、分散ブート動作に関するプロセッサの任意の配置を、本発明の趣旨および範囲から逸脱せずに、例示的実施形態の機構と共に使用することができる。
【０１０８】
図１４は、１つの例示的実施形態によるマルチプロセッサ・システムの分散ブートの例示的動作の概要を示す流れ図である。図１４に示されているように、この動作は、パーベイシブ・ロジックがシステム・コントローラから「パワー・グッド」信号を受け取ることから始まる（ステップ８１０）。パーベイシブ・ロジックは、マルチプロセッサ・データ処理システム内の複数のプロセッサからブート・プロセッサになるプロセッサを選択する（ステップ８２０）。上で述べたように、そのような選択は、プロセッサのすべてが選択されること、またはマルチプロセッサ・データ処理システム内のプロセッサのあるサブセットがブート・プロセッサになるために選択されることをもたらすことができる。そのような選択は、たとえばパーベイシブ・ロジック内のランダム・イベント・ジェネレータを使用して実行することができる。
【０１０９】
パーベイシブ・ロジックは、選択されたブート・プロセッサに割り当てられるブート・コード区画を選択する（ステップ８３０）。次のブート・コード区画を、関連するブート・プロセッサによって実行する（ステップ８４０）。ブート・プロセッサは、ブート・コード区画の実行が成功であり、危険にさらされなかったかどうかを判定する（ステップ８５０）。そうでない場合には、ブート失敗をシステム・コントローラにシグナリングし（ステップ８６０）、動作が終了する。
【０１１０】
ブート・コード区画が成功して実行され、危険にさらされない場合には、ブート・プロセッサは、すべてのブート・コード区画が成功して実行されたかどうかを判定する（ステップ８７０）。そうでない場合には、動作はステップ８４０に戻り、次のブート・コード区画を、それに関連するブート・プロセッサによって実行する。ブート・コード区画のすべてが成功して実行済みである場合には、ブート・プロセッサは、データ処理システムの成功のブートをシステム・コントローラにシグナリングし（ステップ８８０）、動作が終了する。
【０１１１】
したがって、上で示したように、例示的実施形態は、単一のブート・プロセッサのランダムな選択およびマルチプロセッサ・データ処理システムの他のプロセッサ上でのマスキング動作の実行に加えて、複数のプロセッサにまたがってブート動作を分散させる機構を提供する。例示的実施形態は、ブート・プロセッサをランダムに選択する機構、選択されたブート・プロセッサ上で実行されるブート・コード区画をランダムに選択する機構、およびさまざまなブート・プロセッサによるブート・コード区画の実行のセキュリティを保証する機構を提供する。これらのさまざまな機構のすべてが手助けするのは、ブート動作の許可されない監視からのマルチプロセッサ・データ処理システムのセキュリティを高めることである。
【０１１２】
例示的実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素との両方を含む実施形態の形をとることができる。好ましい実施形態では、本発明は、ソフトウェアで実施され、このソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定はされない。
【０１１３】
さらに、例示的実施形態は、コンピュータまたは任意の命令実行システムによってまたはそれと共に使用されるプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形をとることができる。この説明において、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによってまたはそれと共に使用されるプログラムを含み、格納し、通信し、伝搬させ、または搬送することができるすべての装置とすることができる。
【０１１４】
媒体は、電子システム、磁気システム、光システム、電磁システム、赤外線システム、または半導体システム（または装置もしくはデバイス）、あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例には、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、固体磁気ディスク、および光ディスクが含まれる。光ディスクの現在の例には、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、書換可能コンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびＤＶＤが含まれる。
【０１１５】
上で説明した回路は、集積回路チップの設計の一部とすることができる。チップ設計は、グラフィカル・コンピュータ・プログラミング言語で作成し、コンピュータ記憶媒体（ディスク、テープ、物理ハード・ドライブ、またはストレージ・アクセス・ネットワークなどの仮想ハード・ドライブなど）に格納することができる。設計者が、チップまたはチップの製造に使用されるフォトリソグラフィ・マスクを製造しない場合には、設計者は、結果の設計を物理的手段によって（たとえば、設計を格納した記憶媒体のコピーを提供することによって）または電子的に（たとえば、インターネットを介して）そのような実体に直接にまたは間接に送ることができる。格納された設計は、その後、フォトリソグラフィ・マスクの製造に適当なフォーマット（たとえば、ＧＤＳＩＩ）に変換され、このフォトリソグラフィ・マスクは、通常、ウエハ上に形成される当該のチップ設計の複数のコピーを含む。このフォトリソグラフィ・マスクを利用して、エッチングされるか他の形で処理される、ウエハの諸区域（またはその上の層あるいはその両方）を定義することができる。
【０１１６】
結果の集積回路チップは、製造者によって、生のウエハの形（すなわち、複数の未パッケージ・チップを有する単一のウエハとして）、裸のダイとして、またはパッケージ化された形で配布することができる。後者の場合に、チップを、単一チップ・パッケージ（マザーボードまたは他のより上位のキャリアに固定されるリードを伴うプラスチック・キャリアなど）またはマルチチップ・パッケージ（表面相互接続または埋込み相互接続のいずれかまたは両方を有するセラミック・キャリアなど）の中に取り付けることができる。どの場合でも、チップを、他のチップ、ディスクリート回路要素、または（ａ）マザーボードなどの中間製品もしくは（ｂ）最終製品のいずれかの一部としての他の信号処理デバイスあるいはこれらの組合せと一体化することができる。最終製品は、玩具または他のローエンド応用製品からディスプレイ、キーボードまたは他の入力デバイス、および中央プロセッサを有する高度なコンピュータ製品までの範囲にわたる、集積回路チップを含むすべての製品とすることができる。さらに、集積回路チップを設けることができる最終製品には、ゲーム機、ゲーム・コンソール、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、無線電話機および類似物などの通信デバイス、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、またはすべての他のコンピューティング・デバイスを含めることができる。
【０１１７】
本発明の説明は、例示および説明のために提示されたものであり、網羅的であることまたは開示された形態での発明に限定することは意図されていない。多数の修正形態および変形形態が、当業者に明白であろう。実施形態は、本発明の原理および実用的応用例を最もよく説明し、企図される特定の使用に適するさまざまな変更を伴うさまざまな実施形態のために当業者が本発明を理解することを可能にするために選択され、説明されたものである。
【図面の簡単な説明】
【０１１８】
【図１】例示的実施形態を実施できるマルチプロセッサ・システムを示す例示的なブロック図である。
【図２】１つの例示的実施形態によるランダム・ブート・プロセッサ選択機構の主要な動作構成要素を示す例示的な図である。
【図３】１つの例示的実施形態によるランダム選択機構を示す例示的な図である。
【図４】１つの例示的実施形態によるランダム・イベント・ジェネレータのＬＦＳＲカウンタへの入力に導入されるジッタのグラフ表現を示す図である。
【図５】秘密鍵および複数のランダムに生成された鍵値が並列信号線を使用してプロセッサに供給される例示的実施形態を示す例示的な図である。
【図６】例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。
【図７】例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。
【図８】例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。
【図９】例示的実施形態によるランダムに選択されたブート・プロセッサのセキュア・ブート動作をマスクするマスキング動作を示す例示的な図である。
【図１０】マルチプロセッサ・システム内のプロセッサをブート・プロセッサとしてランダムに選択する例示的動作の概要を示す流れ図である。
【図１１】１つの例示的実施形態によるブート・コード・シーケンスをマスクする例示的動作の概要を示す流れ図である。
【図１２】１つの例示的実施形態によるデイジー・チェーン配置またはリング配置として構成された分散ブート動作を示す例示的な図である。
【図１３】１つの例示的実施形態によるマスタ／スレーブ配置として構成された分散ブート動作を示す例示的な図である。
【図１４】１つの例示的実施形態によるマルチプロセッサ・システムの分散ブートの例示的動作の概要を示す流れ図である。
【図１】
2009540405.tif 000003
【図２】
2009540405.tif 000004
【図３】
2009540405.tif 000005
【図４】
2009540405.tif 000006
【図５】
2009540405.tif 000007
【図６】
2009540405.tif 000008
【図７】
2009540405.tif 000009
【図８】
2009540405.tif 000010
【図９】
2009540405.tif 000011
【図１０】
2009540405.tif 000012
【図１１】
2009540405.tif 000013
【図１２】
2009540405.tif 000014
【図１３】
2009540405.tif 000015
【図１４】
2009540405.tif 000016
【国際調査報告】
2009540405.tif 000017
2009540405.tif 000018