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