(57)【要約】【課題】起動コードが改ざんされた可能性があるという事実により、起動後に施された任意のセキュリティ対策の効力が低減してしまう。【解決手段】暗号化された起動コードを起動ＲＯＭ１１４から読み出し、複数のプロセッサ１０２のうちの第１のプロセッサ１０２Ａに関連付けられたローカルメモリ１０４Ａ内に読み込むステップと、その第１のプロセッサ１０２Ａの信頼性の高い復号化機能を用いてその暗号化された起動コードを復号化し、その起動コードが真正であることを確認するステップと、１以上の他のプロセッサ１０２が起動する前に、その第１のプロセッサ１０２Ａ内に存在する、１以上の他のプロセッサ１０２の起動コードを認証するステップと、を含む方法および当該方法を用いる装置を提供する。【選択図】  図３
2006221632.tif 000002
【特許請求の範囲】
【請求項１】
ローカルメモリが関連付けられた少なくとも一つのプロセッサであって、メインメモリに動作可能に接続されるとともに、前記ローカルメモリ内での使用を目的として前記メインメモリから少なくともあるデータを読み出すことを要求可能な少なくとも一つのプロセッサと、
前記プロセッサに動作可能に接続されるとともに、セキュアな復号鍵を用いて情報を復号化可能な復号化ユニットと、
暗号化された起動コードを含むとともに、権限が与えられていないエンティティによる前記暗号化された起動コードに対するアクセスを制限可能な記憶媒体と、
を含み、
前記プロセッサは、前記暗号化された起動コードを前記記憶媒体から読み出すとともにその暗号化された起動コードを前記ローカルメモリ内に保存する機能を有し、前記復号化ユニットは前記暗号化された起動コードを復号化することにより前記起動コードが真正であることを確認する機能を有し、前記プロセッサは前記ローカルメモリから取得した前記起動コードを用いて起動する機能を有することを特徴とする装置。
【請求項２】
前記プロセッサ、前記ローカルメモリおよび前記復号化ユニットが一つの共通の集積回路として一体化されるか、あるいは、前記プロセッサ、前記ローカルメモリ、前記復号化ユニットおよび前記記憶媒体が一つの共通の集積回路として一体化されるかのうちいずれかであることを特徴とする請求項１に記載の装置。
【請求項３】
前記復号化ユニットは、外部のソフトウエアの使用による改ざんを不可能とするように構成されたプログラムの書き換えが可能な回路チップを用いることにより、ハードウエアで実装されることを特徴とする請求項２に記載の装置。
【請求項４】
前記記憶媒体は、外部のソフトウエアの使用による前記暗号化された起動コードの改ざんを防止する機能を有することを特徴とする請求項１から３のいずれかに記載の装置。
【請求項５】
前記プロセッサはさらに、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することによって、前記起動コードが真正であることを確認する機能を有することを特徴とする請求項１から４のいずれかに記載の装置。
【請求項６】
前記予め定められたハッシュ値は、前記記憶媒体内で暗号化された形式で保存されることを特徴とする請求項５に記載の装置。
【請求項７】
前記プロセッサはさらに、起動後にセキュアな動作モードに自動的に入る機能を有することを特徴とする請求項１から６のいずれかに記載の装置。
【請求項８】
それぞれがローカルメモリに関連付けられ、共通のメインメモリに動作可能に接続され、さらにそれそれが自身に関連付けられたローカルメモリ内での使用を目的として前記メインメモリから少なくともあるデータを読み出すことを要求可能な複数のプロセッサであって、前記複数のプロセッサのうち少なくとも一つは、セキュアな復号鍵を用いて情報を復号化可能な復号化ユニットを含む複数のプロセッサと、
暗号化された起動コードを含むとともに、権限が与えられていないエンティティによる前記暗号化された起動コードに対するアクセスを制限可能な記憶媒体と、
を含み、
前記少なくとも一つのプロセッサは、前記暗号化された起動コードを前記記憶媒体から読み出すとともにその暗号化された起動コードを自身に関連付けられたローカルメモリ内に保存する機能を有し、前記復号化ユニットは前記暗号化された起動コードを復号化することにより前記起動コードが真正であることを確認する機能を有し、前記少なくとも一つのプロセッサは、前記ローカルメモリから取得した前記起動コードを用いて起動する機能と、１以上の他のプロセッサの起動に先立って、前記１以上の他のプロセッサの起動コードを認証する機能とを有することを特徴とする装置。
【請求項９】
前記１以上の他のプロセッサは、前記１以上の他のプロセッサの起動コードが真正であることを示す信号が前記少なくとも一つのプロセッサから提供されるまで、起動を停止する機能を有することを特徴とする請求項８に記載の装置。
【請求項１０】
前記少なくとも一つのプロセッサは、
前記１以上の他のプロセッサの起動コードを読み出すとともにその起動コードを自身に関連付けられたローカルメモリ内に保存する機能と、
前記１以上の他のプロセッサの起動コードが改ざんされていないことを証明することにより、そのような起動コードの認証を可能にする機能と、
を有することを特徴とする請求項８または９に記載の装置。
【請求項１１】
前記少なくとも一つのプロセッサは、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することによって、前記１以上の他のプロセッサの起動コードが真正であることを確認する機能を有することを特徴とする請求項１０に記載の装置。
【請求項１２】
前記予め定められたハッシュ値は、前記記憶媒体内で暗号化された形式で保存されることを特徴とする請求項１１に記載の装置。
【請求項１３】
前記少なくとも一つのプロセッサ、前記プロセッサの前記ローカルメモリおよび前記復号化ユニットが一つの共通の集積回路として一体化されるか、あるいは、前記少なくとも一つのプロセッサ、前記プロセッサの前記ローカルメモリ、前記復号化ユニットおよび前記記憶媒体が共通の集積回路として一体化されるかのいずれかであることを特徴とする請求項８から１２のいずれかに記載の装置。
【請求項１４】
前記復号化ユニットは、外部のソフトウエアの使用による改ざんを不可能とするように構成されたプログラムの書き換えが可能な回路チップを用いることにより、ハードウエアで実装されることを特徴とする請求項１３に記載の装置。
【請求項１５】
前記記憶媒体は、外部のソフトウエアの使用による前記暗号化された起動コードの改ざんを防止する機能を有することを特徴とする請求項８から１４のいずれかに記載の装置。
【請求項１６】
前記少なくとも一つのプロセッサはさらに、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することによって、前記起動コードが真正であることを確認する機能を有することを特徴とする請求項８に記載の装置。
【請求項１７】
前記予め定められたハッシュ値は、前記記憶媒体内で暗号化された形式で保存されることを特徴とする請求項１６に記載の装置。
【請求項１８】
前記少なくとも一つのプロセッサはさらに、起動後にセキュアな動作モードに自動的に入ることを特徴とする請求項８から１７のいずれかに記載の装置。
【請求項１９】
暗号化された起動コードを記憶媒体から読み出して、その暗号化された起動コードをプロセッサに関連付けられたローカルメモリ内に保存するステップと、
前記プロセッサの信頼のおける復号化機能を用いて前記暗号化された起動コードを復号化することにより、前記起動コードが真正であることを確認するステップと、
前記ローカルメモリから取得した前記起動コードを用いて、前記プロセッサを起動するステップと、
を含むことを特徴とする処理方法。
【請求項２０】
前記信頼のおける復号化機能および前記暗号化された起動コードはともに、外部のソフトウエアの使用による改ざんが不可能であることを特徴とする請求項１９に記載の処理方法。
【請求項２１】
前記起動コードが真正であることを確認するステップは、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することを特徴とする請求項１９または２０に記載の処理方法。
【請求項２２】
前記予め定められたハッシュ値は、暗号化された形式で保存されることを特徴とする請求項２１に記載の処理方法。
【請求項２３】
起動後にセキュアな動作モードに自動的に入るステップをさらに含むことを特徴とする請求項１９から２２のいずれかに記載の処理方法。
【請求項２４】
暗号化された起動コードを記憶媒体から読み出し、複数のプロセッサのうちの第１のプロセッサに関連付けられたローカルメモリ内に保存するステップと、
前記第１のプロセッサの信頼のおける復号化機能を用いて前記暗号化された起動コードを復号化することにより、前記起動コードが真正であることを確認するステップと、
前記ローカルメモリから取得した前記起動コードを用いて、前記第１のプロセッサを起動するステップと、
１以上の他のプロセッサの起動に先立って、前記第１のプロセッサ内に存在する、前記１以上の他のプロセッサの起動コードを認証するステップと、
を含むことを特徴とする処理方法。
【請求項２５】
前記起動コードが真正であることを示す信号が前記第１のプロセッサから提供されるまで、前記１以上の他のプロセッサの起動を停止するステップをさらに含むことを特徴とする請求項２４に記載の処理方法。
【請求項２６】
前記１以上の他のプロセッサの起動コードを前記第１のプロセッサのローカルメモリ内に保存し、さらにその起動コードが改ざんされていないことを証明することによりそのような起動コードを認証するステップをさらに含むことを特徴とする請求項２４または２５に記載の処理方法。
【請求項２７】
前記１以上の他のプロセッサの起動コードが真正であることを認証するステップは、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することを特徴とする請求項２６に記載の処理方法。
【請求項２８】
前記予め定められたハッシュ値は、暗号化された形式で保存されることを特徴とする請求項２７に記載の処理方法。
【請求項２９】
前記信頼のおける復号化機能および前記暗号化された起動コードはともに、外部のソフトウエアの使用による改ざんが不可能であることを特徴とする請求項２４に記載の処理方法。
【請求項３０】
ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することによって、前記第１のプロセッサの起動コードが真正であることを確認するステップをさらに含むことを特徴とする請求項２４に記載の処理方法。
【請求項３１】
前記予め定められたハッシュ値は、暗号化された形式で保存されることを特徴とする請求項３０に記載の処理方法。
【請求項３２】
前記第１のプロセッサは、起動後にセキュアな動作モードに自動的に入ることを特徴とする請求項２４から３１のいずれかに記載の処理方法。
【請求項３３】
プロセッサによる動作の実行を可能にするソフトウエアプログラムを含む記録媒体であって、
前記動作は、
暗号化された起動コードを記憶媒体から読み出して、その暗号化された起動コードを前記プロセッサに関連付けられたローカルメモリ内に保存するステップと、
前記プロセッサの信頼のおける復号化機能を用いて、前記暗号化された起動コードを復号化することにより、前記起動コードが真正であることを確認するステップと、
前記ローカルメモリから取得した前記起動コードを用いて、前記プロセッサを起動するステップと、
を含むことを特徴とする記録媒体。
【請求項３４】
プロセッサによる動作の実行を可能にするソフトウエアプログラムを含む記録媒体であって、
前記動作は、
暗号化された起動コードを記憶媒体から読み出し、複数のプロセッサのうちの第１のプロセッサに関連付けられたローカルメモリ内に保存するステップと、
前記第１のプロセッサの信頼のおける復号化機能を用いて、前記暗号化された起動コードを復号化することにより、前記起動コードが真正であることを確認するステップと、
前記ローカルメモリから取得した前記起動コードを用いて、前記第１のプロセッサを起動するステップと、
１以上の他のプロセッサの起動に先立って、前記第１のプロセッサ内に存在する、前記１以上の他のプロセッサの起動コードを認証するステップと、
を含むことを特徴とする記録媒体。
【請求項３５】
プロセッサによる動作の実行を可能にするソフトウエアプログラムであって、
前記動作は、
暗号化された起動コードを記憶媒体から読み出して、その暗号化された起動コードを前記プロセッサに関連付けられたローカルメモリ内に保存するステップと、
前記プロセッサの信頼のおける復号化機能を用いて、前記暗号化された起動コードを復号化することにより、前記起動コードが真正であることを確認するステップと、
前記ローカルメモリから取得した前記起動コードを用いて、前記プロセッサを起動するステップと、
を含むことを特徴とするソフトウエアプログラム。
【請求項３６】
プロセッサによる動作の実行を可能にするソフトウエアプログラムであって、
前記動作は、
暗号化された起動コードを記憶媒体から読み出し、複数のプロセッサのうちの第１のプロセッサに関連付けられたローカルメモリ内に保存するステップと、
前記第１のプロセッサの信頼のおける復号化機能を用いて、前記暗号化された起動コードを復号化することにより、前記起動コードが真正であることを確認するステップと、
前記ローカルメモリから取得した前記起動コードを用いて、前記第１のプロセッサを起動するステップと、
１以上の他のプロセッサの起動に先立って、前記第１のプロセッサ内に存在する、前記１以上の他のプロセッサの起動コードを認証するステップと、
を含むことを特徴とするソフトウエアプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ内に、さらに好適にはマルチプロセッサシステム内に、セキュアな起動シーケンスを提供する方法および装置に関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションがますます複雑になり、処理システム（プロセッサシステム）に対する需要は絶えず増大しているため、近年、より速いコンピュータによる処理データスループットについて強い要望がある。そうした中、特にグラフィックスアプリケーションは、望ましい視覚結果を実現するために、比較的短い時間内で膨大な数のデータアクセス、データ計算、およびデータ操作を必要とし、処理システムに対する要求は最も高い。リアルタイムのマルチメディアアプリケーションもまた、処理システムに対する高い要求は高い。実際に、このようなアプリケーションは毎秒何千メガビットものデータ処理という非常に高速な処理を必要とする。
【０００３】
いくつかの処理システムは一つのプロセッサを用いて高速な処理速度を実現する一方、他の処理システムはマルチプロセッサアーキテクチャを用いて実装される。マルチプロセッサシステムにおいて、複数のサブプロセッサは並列に（少なくとも協調して）動作し、所望の処理結果を達成できる。マルチプロセッサシステム内でモジュラー構造を用いることも考えられる。なお、この構造において、計算モジュールには、（インターネットなどの）ブロードバンドネットワークを介してアクセスでき、その計算モジュールは多くのユーザ間で共有できる。このモジュラー構造についての詳細は、米国特許第６５２６４９１号に記載される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
なお、プロセッサシステムがネットワークを介して使用されるとき、あるいは共有資源の一部分であるときに問題が生じる。特に、プロセッサとそれに関連する（起動コードなどの）ソフトウエアは、意図的なハッキングやそれと同様のものなどの外部要因にさらされやすい。従来の起動シーケンスには、電源投入時のリセットと、（初期レジスタデータ、基本アドレス情報などの）コンフィグレーション（configuration；構成定義）データおよび起動コードのフラッシュＲＯＭからのインポートと、ハードウエアレジスタのコンフィグレーションと、プロセッサの起動とが含まれる。マルチプロセッサシステムにおいて、そのコンフィグレーションデータおよび起動コードは、初期起動を目的として、複数のプロセッサ間で共有される。あいにくフラッシュＲＯＭ内の起動コードはセキュアではなく、起動前にハッカーが容易にそのコンフィグレーションデータおよび起動コードを改ざんできる。これは結果として、機密情報を処理するシステム内において、大きな被害をもたらしうる。起動コードが改ざんされた可能性があるという事実により、起動後に施された任意のセキュリティ対策の効力が低減してしまう。実際、セキュアな起動がなされなければ、以降の任意のセキュリティ対策は、十分に信頼性の高い（trusted；信頼のおける）ものにはなるとは限らない。ハッカーにより起動シーケンスが改ざんされた場合、以降のセキュリティ対策が無駄になる（usurped）場合もある。
【０００５】
本発明の目的は、さらなるセキュリティ対策を講ずることのできる信頼性の高い環境を保証するシングルプロセッサシステムおよびマルチプロセッサシステムの実現のため、セキュアな起動プロセスを与える新規の方法および装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の様々な態様は、シングルプロセッサシステムおよびマルチプロセッサシステムに、セキュアな起動シーケンスを提供する方法および装置に関する。特に、プロセッサは、セキュアな（暗号化された）起動コードを（例えば、セキュアなフラッシュＲＯＭなどの）記録場所から読み出し、その起動コードをそのプロセッサに関連付けられたローカルメモリ内に保存できることが好ましい。そのとき、そのプロセッサは、その起動コードを復号化でき、起動を続行できる。さらに、セキュアな方法で起動されたそのプロセッサは、関連したプロセッサ群（例えば、マルチプロセッサシステム内のプロセッサ群）の起動コードを検証（チェック）／証明できる。セキュアに起動された後、プロセッサは、例えば、セキュアな動作モードに入るなどの他のセキュリティステップを実行してもよい。
【０００７】
例えば、本発明に係る実施の形態によれば、コンフィグレーションデータおよび起動コードは、特定のプロセッサに関連付けられたセキュアなメモリ内で暗号化されうる。その暗号化は、権限が与えられていないどのエンティティにも把握されない、（秘密鍵などの）信頼性の高い鍵を用いて行われるのが好ましい。また、信頼性の高い復号化コード（および復号鍵）も、そのプロセッサに関連付けられている、上述のデータおよびコードが保存されたセキュアなメモリと同一のまたは異なるセキュアなメモリ（例えば、フラッシュＲＯＭ）内に保存されるのが好ましい。復号化機能は、ハードウエア（例えば、フラッシュＲＯＭや任意の他の適切なハードデバイス内に焼き付けたソフトウエア）で実装されるのが好ましい。いったん、信頼性の高い復号化コードが呼び出されれば、そのコードを用いてそのコンフィグレーションデータおよび起動コードを復号化し証明できる。いったん、そのコンフィグレーションデータおよび起動コードが復号化され証明されれば、そのプロセッサは起動される。
【０００８】
本発明の別の態様によれば、プロセッサはハードウエアで実装されたセキュリティ機能を有するのが好ましい。なお、そのセキュリティ機能は起動後に呼び出され、プロセッサをセキュアなモードに設定し、セキュアな処理環境を確立する。セキュアな処理環境の確立には、外部から開始された、そのプロセッサに対するデータアクセスリクエストに応答しない状態の呼び出しが含まれる。すなわち、セキュアなプロセッサは、データに対するどの外部のリクエスト（例えば、そのプロセッサのローカルメモリまたはレジスタ上のコンテンツを読み出すというリクエスト）にも応答しない。したがって、プロセッサがセキュアなモードに入る場合、さらなるセキュリティ対策を講ずることのできる信頼性の高い環境を形成する。
【０００９】
マルチプロセッサシステムにおいて、他のプロセッサのコンフィグレーションデータおよび起動コードもまた、改ざんの危険にさらされる。本発明に係る様々な実施の形態では、他のプロセッサが起動段階である間に、セキュアに起動されたプロセッサの信頼性の高い環境を用いてその他のプロセッサのコンフィグレーションデータおよび起動コードを検証できることが考慮されている。ある実施の形態では、その信頼性の高いプロセッサ内で復号化されたセキュアなコンフィグレーションデータおよび起動コードと、他のプロセッサの起動前に、その他のプロセッサによって読み込まれたコンフィグレーションデータおよび起動コードとが比較されうる。コンフィグレーションデータおよび起動コードが最初に証明されれば、他のプロセッサの起動は結果として信頼性の高いものになり得る。
【００１０】
他の実施の形態では、セキュアなメモリ（そのメモリに関連付けられたプロセッサに関する暗号化されたコンフィグレーションデータおよび起動コードを含む）は、他のプロセッサのコンフィグレーションデータおよび起動コードに対応付けられた、証明用（validity）データ（例えば、ハッシュ結果や完全なコピーなど）をも含んでもよい。その証明用データは、他のプロセッサの起動を許可する前の上述の比較ステップで用いられうる。
【００１１】
本発明に係る少なくとも１以上の態様によれば、暗号化された起動コードを記憶媒体から読み出して、その暗号化された起動コードをプロセッサに関連付けられたローカルメモリ内に保存するステップと、プロセッサの信頼のおける復号化機能を用いて暗号化された起動コードを復号化することにより、起動コードが真正であることを確認するステップと、ローカルメモリから取得した起動コードを用いて、プロセッサを起動するステップと、を含む方法および装置を提供できる。これに関連して、信頼のおける復号化機能および暗号化された起動コードはともに、外部のソフトウエアの使用による改ざんが不可能であることが好ましい。
【００１２】
起動コードが真正であることを確認するステップは、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することが好ましい。予め定められたハッシュ値は、暗号化された形式で保存されてもよい。
【００１３】
その方法および装置はまた、暗号化された起動コードを記憶媒体から読み出し、複数のプロセッサのうちの第１のプロセッサに関連付けられたローカルメモリ内に保存するステップと、第１のプロセッサの信頼のおける復号化機能を用いて暗号化された起動コードを復号化することにより、起動コードが真正であることを確認するステップと、ローカルメモリから取得した起動コードを用いて、第１のプロセッサを起動するステップと、１以上の他のプロセッサの起動に先立って、第１のプロセッサ内に存在する、１以上の他のプロセッサの起動コードを認証するステップとを提供できる。
【００１４】
本発明の上記以外の態様、特徴、および利点などは、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
【発明を実施するための最良の形態】
【００１５】
本発明の様々な実施の形態を示すために、現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
【００１６】
図において同一の符号は同一の要素を示すものとする。図１は、実施の形態に係る１以上の態様の実施に適したプロセッサシステム１００を示す。簡潔および明確にするために、図１の構成図を参照し装置１００を用いて説明するが、同一の主旨を有する様々な態様の方法にその説明を簡単に適用できるのは言うまでもない。その装置１００は、プロセッサ１０２と、ローカルメモリ１０４と、（ＤＲＡＭなどの）システムメモリ１０６と、バス１０８とを備えるのが好ましい。
【００１７】
そのプロセッサ１０２は、システムメモリ１０６からのデータの要求を可能にし、そのデータを操作することで所望の結果への達成を可能にする任意の既知の技術を用いて実装されてもよい。例えば、プロセッサ１０２はソフトウエアおよび／またはファームウエアを実行可能な、標準マイクロプロセッサや分散型のマイクロプロセッサなどの任意の既知のマイクロプロセッサを用いることで実装されてもよい。例として、プロセッサ１０２は、ピクセルデータなどのデータを要求し操作できるグラフィックプロセッサであってもよい。なお、そのピクセルデータには、グレースケール情報や、カラー情報や、テクスチャデータや、ポリゴン情報や、ビデオフレーム情報などが含まれる。
【００１８】
ここで、ローカルメモリ１０４は、プロセッサ１０２と同一チップ上に設けられるのが好ましい。なお、ローカルメモリ１０４は、ハードウェアキャッシュメモリではないことが好ましく、ローカルメモリ１０４には、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に設けられたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが無いことが好ましい。他の実施の形態では、ローカルメモリ１０４はキャッシュメモリおよび／または付加的なキャッシュメモリであってもよい。チップ上の実装面積はしばしば限られているので、ローカルメモリ１０４のサイズは、共有メモリ１０６のサイズより遥かに小さい。プロセッサ１０２は、プログラムの実行とデータの操作のために、バス１０８を介してシステムメモリ１０６からローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするためのデータアクセスリクエストを提供することが好ましい。データアクセスを容易にするメカニズムとして、例えばダイレクト・メモリ・アクセス（ＤＭＡ）技術など、任意の既知の技術を用いてもよい。
【００１９】
ここで、本明細書で用いられる「データ」は、任意の種類のプログラムコード、アプリケーションプログラム、システムレベルのソフトウエア、任意の種類のデータ、データストリームなどを含むものと広く解釈される。
【００２０】
装置１００は、例えば、バス１０８を介してそのプロセッサ１０２に動作可能に接続されるセキュアな起動ＲＯＭ１１０などの記憶媒体をも含むのが好ましい。その装置１００は、プロセッサ１０２に動作可能に接続され、さらにセキュアな復号鍵を用いて情報を復号化する復号化ユニット１１２をも含むのが好ましい。プロセッサ１０２と、ローカルメモリ１０４と、復号化ユニット１１２とは一つの共通の集積回路として一体化される。したがって、本明細書では、これらの要素の組み合わせを「プロセッサ１０２」と呼んでもよい。他の実施の形態では、記憶媒体１１０もまた、その一以上の他の要素とともに、一つの共通の集積回路として一体化されてもよい。
【００２１】
その復号化ユニットは、ハードウエアで実装されたデバイス、例えば、プログラムの書き換えが可能なデバイス（例えば、復号化プロセスを定義するアルゴリズムを用いたプログラムが書き込まれたフラッシュＲＯＭ）である。プログラムの書き換えが可能な回路を用いて復号化ユニット１１２を実装することに際して、外部のソフトウエアの使用（操作）による復号化機能の改ざんが不可能であるレベルのセキュリティを実現するのが好ましい。
【００２２】
記憶媒体１１０は、プロセッサの初期化および／または起動に有用な、暗号化された起動コードおよび／または他のデータを含む、プログラムの書き換えが不可能なＲＯＭなどのセキュアなデバイスであるのが好ましい。例えば、そのような付加的な情報（他のデータ）には、コンフィグレーションデータ（例えば、ハードウエアレジスタを初期化するために用いられるデータ）、基本アドレスデータ（例えば、システムメモリ１０６および／またはローカルメモリ１０４への伝送先を設定するために用いられる情報）などが含まれる。その記憶媒体（起動ＲＯＭ）１１０は、その暗号化された起動コードおよび／または他の情報が権限のないエンティティによりアクセスすることができない程度のセキュリティを実現するのが好ましい。例えば、その暗号化された起動コードは、装置１００が製造過程にある間に確立されるのが好ましい。なお、起動コードは、その過程において、秘密鍵を用いて暗号化される。
【００２３】
ここで、図１および図２の両方を参照するが、装置１００は一般的に、プロセッサ１０２をセキュアな方法で起動できるのが好ましい。なお、そのセキュアな方法が実施されている間は、権限が与えられていないエンティティは、起動プロセスを改ざんすることはできない。したがって、結果として生じる初期化されたプロセッサとそれに関連した構成要素は信頼性の高いものになり、さらなるセキュリティ対策を講じることができる。図２は、本発明の１以上の実施の形態に係る装置１００により実行されうる処理ステップを示す。
【００２４】
動作２００では、プロセッサ１０２は、電源投入時のリセットを取得し、起動シーケンスを開始する。動作２０２では、そのプロセッサ１０２は、起動ＲＯＭ１１０から暗号化された起動コードを読み出し、ローカルメモリ１０４内に保存するのが好ましい。復号化ユニット１１２は、ローカルメモリ１０４内で、その暗号化された起動コードを復号化できるのが好ましい（動作２０４）。その復号化処理により起動コードが証明（認証）されてもよいし（動作２０６）、付加的な処理がそのような証明の実現のために実施されてもよい。例えば、プロセッサ１０２および／または復号化ユニット１１２は、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することによって、起動コードが真正であることを確認（証明）できる。その所与のハッシュ値が信頼性の高いものであると仮定すれば、そのような比較を行うことにより、そのハッシュ値に一致しているハッシュ結果に対応する起動コードは真正であることを保証できる。例えば、所与のハッシュ値は、記憶媒体１１０内、あるいは、好適にはセキュアな、ある他の記憶媒体内に、暗号化された形式で保存されうる。いったん、起動コードが証明されれば、そのプロセッサ１０２は起動し、その初期化プロセスを完了するのが好ましい。
【００２５】
動作２０８では、プロセッサ１０２は、起動プロセスが完了したときに、自動的にセキュアな動作モードに入るのが好ましい。例えば、そのセキュアな動作モードは、そのセキュアなモードの呼出（実行）を妨げる、外部にあって権限が与えられていない動作を不可能にする程度に、ハードウエアにより実装されるのが好ましい。このセキュアな動作モードでは、プロセッサ１０２のローカルメモリ１０４内（あるいは、任意の他の記録デバイス内、レジスタ内など）に保存されたデータに対する要求はいずれも受け付けられない。従って、機密性の高いオペレーションを実行するための信頼性の高い環境を保証できる。セキュアなモードであるにもかかわらず、プロセッサ１０２は、システムメモリ１０６からローカルメモリ１０４へのデータ転送を要求できる。あるいは、ローカルメモリ１０４からシステムメモリ１０６へのデータ転送を要求できる。
【００２６】
このセキュアな動作モードの意義を、図３および図４を用いてさらに詳細に説明する。図３は、２以上のサブプロセッサ１０２を有するマルチプロセッサシステム１００Ａの構成を示す。図１および図２を用いて上述した概念をそのマルチプロセッサシステム１００Ａに適用できる。そのシステム１００Ａには、バス１０８を介して接続された、複数のプロセッサ１０２Ａ〜１０２Ｄと、それらプロセッサに関連付けられたローカルメモリ１０４Ａ〜１０４Ｄと、メインメモリ１０６とが含まれる。４つのプロセッサ１０２を例として示すが、本発明の主旨および範囲を逸脱しない限り、いかなる数のプロセッサを用いてもよい。プロセッサ１０２は任意の既知の技術を用いて実装されてもよく、さらに各プロセッサの構成は同一であってもよいし、異なってもよい。
【００２７】
１以上のプロセッサ１０２は、図１のプロセッサ１０２の能力と構成要素を備えるのが好ましい。本発明の主旨および範囲を逸脱しない限り、他のプロセッサ１０２は、そのような能力を備える必要はない。装置１００Ａにはまた、必ずしもセキュアな記憶媒体ではなく、さらに必ずしも暗号化された起動コードおよびコンフィグレーションデータを有するとは限らない起動ＲＯＭ１１４が含まれる。すなわち、好適な実施例ではむしろ、起動コードおよびコンフィグレーションデータは、従来の技術に従って存在すると考慮される。
【００２８】
プロセッサ１０２のそれぞれの構成は同一であってもよいし、異なってもよい。そのプロセッサ１０２は、共有メモリ（またはシステムメモリ）１０６からのデータの要求を可能にし、そのデータを操作することで所望の結果への達成を可能にする任意の既知の技術を用いて実装されてもよい。例えば、プロセッサ１０２はソフトウエアおよび／またはファームウエアを実行可能な、標準マイクロプロセッサや分散型のマイクロプロセッサなどの任意の既知のマイクロプロセッサを用いることで実装されてもよい。例として、１以上のプロセッサ１０２は、ピクセルデータなどのデータを要求し操作できるグラフィックプロセッサであってもよい。なお、そのピクセルデータには、グレースケール情報や、カラー情報や、テクスチャデータや、ポリゴン情報や、ビデオフレーム情報などが含まれる。
【００２９】
システム１００の一つ以上のプロセッサ１０２は、メイン（または管理）プロセッサとして機能する。そのメインプロセッサは他のプロセッサによるデータの処理のスケジューリングと調整を行うことができる。
【００３０】
システムメモリ１０６は、メモリインタフェース回路（図示せず）を通じてプロセッサ１０２に接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるのが好ましい。そのシステムメモリ１０６は、好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００３１】
それぞれのプロセッサ１０２は好適には、プロセッサコアと、当該コアに関連付けられた、プログラムを実行するためのローカルメモリ１０４とを含む。これらの構成要素は共通の半導体基板上に一体的に設けられてもよいし、あるいは、設計者の意図により分離されて設けられてもよい。プロセッサコアは好適には、パイプライン処理を用いて実装される。なお、パイプライン処理においては、パイプライン型の方法で論理命令が処理される。そのパイプラインは命令が処理される任意の数のステージに分割されるが、一般的には、一つ以上の命令をフェッチするステージ、その命令をデコードするステージ、命令間の依存性をチェックするステージ、その命令を出力するステージ、その命令を実行するステージを有する。この点に関連して、そのプロセッサコアには、命令バッファ、命令デコード回路、依存性チェック回路、命令出力回路、および実行段階が含まれる。
【００３２】
ローカルメモリ１０４はバスを介して、そのローカルメモリ１０４に関連付けられたプロセッサコア１０２にそれぞれ接続され、プロセッサコアと同一チップ（同一の半導体基板）上に設けられるのが好ましい。ローカルメモリ１０４は、従来のハードウェアキャッシュメモリではないことが好ましく、ローカルメモリ１０４には、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に設けられたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが無いことが好ましい。チップ上の実装面積はしばしば限られているので、ローカルメモリ１０４のサイズは、共有メモリ１０６のサイズより遥かに小さい。
【００３３】
プロセッサ１０２は、プログラムの実行とデータの操作のために、バスシステム１０８を介してシステムメモリ１０６からそれぞれのローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするためのデータアクセスリクエストを提供することが好ましい。データアクセスを容易にするメカニズムとして、例えばダイレクト・メモリ・アクセス（ＤＭＡ）技術など、任意の既知の技術を用いてもよい。その機能はメモリインタフェース回路により実行されるのが好ましい。
【００３４】
図４は、図３の装置１００Ａにより実行されうる１以上のさらなる処理ステップを示す。なお、動作２１０は、図２の動作２０８に続く処理とされる。一般的に、セキュアな方法で起動されたプロセッサは、１以上の他のプロセッサが起動する前に、その１以上の他のプロセッサ１０２の起動コードを認証できるのが好ましい。動作２１０では、セキュアに起動されたプロセッサが起動プロセスへの進行を可能にすることを示す信号を出力するまで、他のプロセッサ群（例えば、図１および図２を用いて上述したセキュアな方法による起動を実行しなかったプロセッサ１０２）は、自身の起動プロセスに進めない。バックグラウンドでは、従来の技術に係る初期の電源投入時のリセット（図２の動作２００）の間に、起動コードおよび他のコンフィグレーションデータが起動ＲＯＭ１１４から読み出される。さらに、そのコードおよびデータは、それぞれのプロセッサ１０２のハードウエアレジスタ（図示せず）内に、あるいは、他の例としてすべてのそのようなプロセッサ群１０２によりアクセス可能な共通のハードウエアレジスタ内に保存される。なお、プロセッサ群１０２は、動作２１０に関して上述した起動プロセスに進行することは許可されていない。
【００３５】
動作２１２では、セキュアに起動されたプロセッサ１０２は、起動コードおよび／またはコンフィグレーションデータをハードウエアの保存場所から読み出し、そのコードおよび／またはデータを自身のローカルメモリ１０４内に保存する。動作２１４では、そのプロセッサ１０２は、起動コードおよび／またはコンフィグレーションデータが改ざんされていないことを証明する。例えば、そのプロセッサは、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することによって、起動コードが真正であることを確認（証明）できる。所与のハッシュ値が信頼性の高いものであると想定すれば、起動コードおよび／またはコンフィグレーションデータの認証は、その所与のハッシュ値とハッシュ結果との比較結果に左右されうる。その所与のハッシュ値は、好適には暗号化された形式で、セキュアな記憶媒体内に保存されるのが好ましい。
【００３６】
動作２１６では、起動情報（例えば、起動コードおよび／またはコンフィグレーションデータの一部分またはすべて）が変更されているか否か（例えば、権限のないエンティティにより改ざんされているか否か）についての決定がなされる。もし、その決定の結果が肯定的なものである（起動情報が変更されている）場合、処理の流れは、適切な動作が行われる失敗状態に進むのが好ましい。その適切な動作の例として、他のプロセッサ群により実施される、他の方法での起動を実現しようとするプロセスの起動および／または再開始を阻止することが挙げられる。もし、動作２１６での決定の結果が否定的なものである（起動情報が変更されていない）場合、処理の流れは動作２１８に進むのが好ましい。動作２１８では、それら他のプロセッサ１０２は起動シーケンスを続行し、さらにそれらプロセッサの初期化プロセスを完了することが可能になる。
【００３７】
本発明に係る少なくとも一つの別の態様によれば、上述した方法および装置は、例えば、図に示す適切なハードウエアを用いて実現できる。そのようなハードウエアは任意の既知の技術を用いて実装できる。なお、その既知の技術として、例えば、標準のデジタル回路、ソフトウエアおよび／またはファームウエアプログラムを実行できる任意の既知のプロセッサ、プログラム可能な読み出し専用メモリ群（ＰＲＯＭ群）、プログラム可能なアレイ論理デバイス群（ＰＡＬ群）などの一以上のプログラム可能なデジタルデバイスまたはシステムが挙げられる。さらに図内の装置は、ある機能ブロックに分割されて示されているが、そのようなブロックは別々の回路で実装でき、および／または、一以上の機能ユニットに結合させることができる。さらに、本発明に係る様々な態様は、適切な記憶メディアや（フレキシブルディスク、メモリチップなどの）持ち運び可能な、および／または配布のためのメディア上に保存可能なソフトウエアおよび／またはファームウエアプログラムにより実装される。
【００３８】
上述したように、本発明の様々な実施の形態によれば、コンフィグレーションデータおよび／または起動コードの暗号化を提供し、さらにあるプロセッサに関連付けられたセキュアなメモリ内に、そのコンフィグレーションデータおよび／または起動コードを保存できる。信頼性の高い復号化コードもまた、そのプロセッサにも関連付けられた、上述のデータおよび／またはコードが保存されたセキュアなメモリと同一のまたは異なるセキュアなメモリ内に保存されうる。いったん信頼性の高い復号化コードが呼び出されれば、そのコードを用いてコンフィグレーションデータおよび起動コードを復号化し証明できる程度に、復号化機能はハードウエアを用いて実装されるのが好ましい。いったん、そのコンフィグレーションデータおよび起動コードが復号化され証明されれば、そのプロセッサは起動される。
【００３９】
本実施の形態に係る様々な方法および装置によれば、起動コードの改ざんを抑制でき、さらに、起動後に実施された任意のセキュリティ対策の効果を増大できる。これにより、より高い信頼性を備えるコンピュータ環境を実現でき、機密情報のセキュリティを向上できる。
【００４０】
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものである。したがって、請求項により定義された本発明の主旨および範囲から逸脱しないかぎり、上述した実施形態に対して様々な変更を加えることができる。
【図面の簡単な説明】
【００４１】
【図１】実施の形態の一つ以上の態様に係るプロセッサシステムの構成を示す図である。
【図２】実施の形態の一つ以上の態様に係る図１のプロセッサシステムにより実行されうる処理ステップの流れを示す図である。
【図３】２以上のサブプロセッサを有するマルチプロセッサシステムであって、それらサブプロセッサのうちの１以上のサブプロセッサが、実施の形態の１つ以上の別の態様に係る図１のプロセッサの能力を備えうるマルチプロセッサシステムの構成を示す図である。
【図４】実施の形態の一つ以上の別の態様に係る図３のプロセッサシステムにより実行されうる処理ステップの流れを示す図である。
【符号の説明】
【００４２】
１００  プロセッサシステム、    １００Ａ  マルチプロセッサシステム、    １０２，１０２Ａ，１０２Ｂ，１０２Ｃ，１０２Ｄ  プロセッサ、    １０４，１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ  ローカルメモリ、    １０６  メインメモリ，システムメモリ、    １１０，１１４  記憶媒体、    １１２  復号化ユニット。
【図１】
2006221632.tif 000003
【図２】
2006221632.tif 000004
【図３】
2006221632.tif 000005
【図４】
2006221632.tif 000006