説明

セキュアなデータ処理とデータ伝送とを行う方法および装置

【課題】ソフトウエア駆動型セキュリティモデルでは、その実行時にしばしば不安定になり、より多くの処理が必要になる。
【解決手段】処理ユニットを複数のモードのうち一つ以上のモードに設定する方法および装置を開示する。その装置は、ローカルメモリ104と、そのローカルメモリ104との間での情報の伝送を可能にするバスと、そのローカルメモリ104に動作可能に接続される一つ以上の演算処理ユニットと、その装置をその複数の動作モードに設定するセキュリティ回路とを備える。その複数の動作モードは、装置および外部装置がバスを介してメモリとの間での情報の転送を開始できる第1のモードと、装置および外部装置がバスを介してメモリとの間での情報の転送を開始できない第2のモードと、装置がバスを介してメモリとの間での情報の転送を開始できるが、外部装置はバスを介してメモリとの間での情報の転送を開始できない第3のモードとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えばブロードバンド環境におけるセキュアなデータ処理のためのマルチプロセッサのアーキテクチャを用いて、セキュアなデータ処理を実行する方法および装置に関する。
【背景技術】
【0002】
リアルタイムでマルチメディアのネットワークアプリケーションの重要性は、より一層高まってきている。こうしたネットワークアプリケーションは、1秒間に数千メガビットといった極めて高速の処理速度を必要とする。インターネットなどの従来のネットワークアーキテクチャと、現在ではJava(登録商標)モデルなどで具体化されたプログラミングモデルとでは、そのような処理速度の実現は極めて困難であった。
【0003】
従来のコンピュータネットワーク、例えば、オフィスのネットワークの中で利用されるローカルエリアネットワーク(LAN)やインターネットなどのグローバルネットワーク、のコンピュータやコンピューティングデバイスは、主にスタンドアロンで演算できるよう設計された。コンピュータネットワークを介してデータおよびアプリケーションプログラム(単に「アプリケーション」という)を共用することは、こうしたコンピュータおよびコンピューティングデバイスの主な設計目的ではなかった。また、こうしたコンピュータおよびコンピューティングデバイスは、通常、モトローラ社、インテル社、テキサスインスツルメント社、ソニー社や他の企業などの様々な異なる製造業者により製造された広範囲の異なるプロセッサを用いて設計された。これらのプロセッサのそれぞれは、それ独自の特定の命令セットと命令セットアーキテクチャ(ISA)を有する。すなわち、プロセッサ独自の特定のセットのアセンブリ言語命令とこれらの命令を実行する主演算装置および記憶装置のための構造とを有する。したがって、プログラマには、各プロセッサの命令セットおよびISAを理解してこれらプロセッサ用のアプリケーションを記述することが要求される。今日のコンピュータネットワーク上では異機種のコンピュータおよびコンピューティングデバイスが混在しているため、データおよびアプリケーションの共有および処理が複雑化している。さらに、この複数種が混在する環境に対する調整を行うために、多くの場合、同一アプリケーションであっても複数のバージョンを用意することが必要になっている。
【0004】
グローバルネットワーク、とりわけインターネットに接続されるコンピュータおよびコンピューティングデバイスの種類は多岐にわたる。こうしたコンピューティングデバイスには、パーソナルコンピュータ(PC)およびサーバ以外に、携帯電話、モバイルコンピュータ、個人情報端末(PDA)、セットトップボックス、ディジタルTV、およびその他多数の装置が含まれる。このような異機種のコンピュータおよびコンピューティングデバイス間でデータおよびアプリケーションを共有することに起因して、大きな問題が生じている。
【0005】
このような問題の克服を試みようと、多くの技術が採用されてきた。これらの技術には、とりわけ高性能なインタフェースおよび複雑なプログラミング技術が含まれる。これらの解決策は多くの場合、実行に必要な処理能力を十分に増加させなければならない。また、それらは多くの場合、結果として、アプリケーションの処理およびネットワークを介したデータ転送に要する時間を大幅に増加させてしまうことがある。
【0006】
データは通常、対応するアプリケーションとは別にインターネットを介して伝送される。このアプローチによれば、アプリケーションに対応した各セットの伝送データとともにアプリケーション自体をも送信する必要がなくなる。このアプローチは必要とされる帯域幅の量を最小限にする一方、多くの場合、ユーザ間の不満を生じさせてしまう。その伝送データを利用するための適正のアプリケーション、あるいは最新のアプリケーションを、そのクライアントのコンピュータ上で入手できない場合がある。また、このアプローチによれば、ネットワーク上のプロセッサにより使用される多数の異なるISAおよび命令セットに対応して、各アプリケーションごとにバージョンの異なる複数のアプリケーションを用意することが要求される。
【0007】
Javaモデルはこの問題を解決しようとする。このモデルは厳しいセキュリティ・プロトコルに準拠する小さなアプリケーション(アプレット)を用いる。そのアプレットはネットワークを介してサーバ側コンピュータから送られ、クライアント側コンピュータ(クライアント)により実行される。異なるISAを用いるクライアントごとに、同一アプレットであっても異なるバージョンを送信するという事態を回避する必要があるため、すべてのJavaアプレットは、クライアントのJavaバーチャル(仮想)マシン上で実行される。Javaバーチャルマシンは、JavaのISAとJavaの命令セットを有するコンピュータをエミュレートするソフトウエアである。なお、このソフトウエアは、クライアント側のISAとクライアント側の命令セットにより実行される。クライアント側ではISAと命令セットがそれぞれ異なるが、与えられるJavaバーチャルマシンのバージョンは一つである。従って、複数の各アプレットごとに異なるバージョンを用意する必要はない。各クライアントでは、そのクライアントにおけるISAと命令セットに対応した適正なJavaバーチャルマシンのみをダウンロードすることで、すべてのJavaアプレットを実行できる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
それぞれ異なるISAおよび命令セットに対して異なるバージョンのアプリケーションを記述しなければならないという課題は解決されているが、そのJava処理モデルでは、クライアントのコンピュータ上にソフトウエアの追加層が要求される。ソフトウエアのこの追加層のためにプロセッサの処理速度は著しく低下する。この速度の低下は、特にリアルタイムでマルチメディアのアプリケーションにとって深刻である。ダウンロードされたJavaアプレットはウイルスや処理上の誤操作などを含む可能性もある。このようなウイルスや処理上の誤操作により、クライアントのデータベースが使い物にならなくなる可能性があり、さらに他の損害を引き起こしうる。Javaモデルで用いられるセキュリティプロトコルでは、「サンドボックス(sandbox)」(Javaアプレットがそれ以外ではデータを書き込むことができない、クライアント側のメモリ内のスペース)といったソフトウエアを実装することでこの問題の解決が試みられているとはいえ、このソフトウエア駆動型セキュリティモデルは、その実行時にしばしば不安定になり、より多くの処理が必要になる。
【0009】
本発明の目的は、セルアーキテクチャにおけるセキュアなデータ処理を行うための新規の方法および装置を提供することにある。
【課題を解決するための手段】
【0010】
新規のコンピュータ(およびネットワーク)アーキテクチャはまた、上述の問題の少なくともいくつかを克服するために開発された。この新規のコンピュータアーキテクチャによれば、コンピュータネットワークのすべてのメンバ、すなわち、そのネットワークのすべてのコンピュータおよびコンピューティングデバイスは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。そのネットワークのメンバは、コンピュータプロセッサを用いて、クライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。一貫性のあるモジュール構造により、ネットワークのメンバによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
【0011】
この新規のコンピュータアーキテクチャはまた、データおよびアプリケーションをネットワークを介して伝送し、かつデータおよびアプリケーションをネットワークメンバ間で処理する新たなプログラミングモデルを用いる。このプログラミングモデルは、ネットワークを介して伝送されたソフトウエアセルを用いるものであり、そのセルは任意のネットワークメンバによって処理される。各ソフトウェアセルは同一構造をもち、データとアプリケーション両方を収容できる。モジュール式コンピュータ構成による高速処理および伝送速度の結果、これらセルの高速処理が可能である。アプリケーション用のコードは、同一の共通命令セットおよび命令セットアーキテクチャに基づくのが好ましい。各ソフトウェアセルは、好適にはグローバル(大域的)識別名(グローバルID)と、セルの処理に必要な計算リソース量を記述した情報とを含む。すべての計算リソースは同一の基本構造をもち、かつ同じ命令セットアーキテクチャを用いるので、処理を実行する特定のリソースをネットワーク上の任意の場所に配置してダイナミックに割り当てを行うことができる。
【0012】
基本的な処理モジュールはプロセッサ要素(PE)である。PEは、好適には処理ユニット(PU)と、ダイレクトメモリアクセスコントローラ(DMAC)と、共通の内部アドレスおよびデータバスで接続された、複数の、例えば4つの付属処理ユニット(APU)とを含む。PUおよびAPUは、クロスバー構成をもちうる共有ダイナミックランダムアクセスメモリ(DRAM)にアクセスする。PUは、APUによるデータおよびアプリケーションの処理のスケジューリングと調整を行う。APUはこの処理を並列かつ独立して行う。DMACは、共有DRAMに保存されたデータおよびアプリケーションに対するPUおよびAPUのアクセスを制御する。
【0013】
このモジュール構造では、そのネットワークのメンバにより使用されるPEの数は、そのメンバが必要とする処理能力に基づく。例えば、サーバは4つのPE、ワークステーションは二つのPE、PDAは一つのPEを使用しうる。あるソフトウェアセルの処理に割り当てられるPEのAPUの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【0014】
複数のPEを共有DRAMに関連付けることができ、そのDRAMは複数のセクションに分別され、各セクションは複数のメモリバンクに分別されうる。DRAMの各セクションはバンクコントローラによって制御され、PEの各DMACが各バンクコントローラにアクセスできる。本構成では、各PEのDMACは共有DRAMの任意の個所にアクセスできる。
【0015】
そのDRAMには、一つのAPUが処理するプログラム用データに起因する、別のAPUによって処理されるプログラム用データの損壊に対するセキュリティを提供するサンドボックスが設けられる。それぞれのサンドボックスによって共用DRAM領域が画定され、この領域を越えて、特定のAPUや一組のAPUがデータの読み出しや書き込みを行うことはできない。
【0016】
サンドボックスはデータの損壊に対するあるセキュリティ対策を提供する一方、内包的なソフトウエアの著作権侵害の問題の対処を行っていない。所与のPE内の複数のAPUは共通の内部バスを介して接続されるため、あるAPU上で動作するソフトウエアを別のAPUが監視することが可能である。ブロードバンドネットワークの状況下では、所与のPEに含まれる2以上のAPUが、異なるアプリケーションプログラムを実行するのが好都合である。システムの高い柔軟性を確保するために、例えば、異なるソフトウエア開発企業などの異なるエンティティによりこのようなソフトウエアプログラムが作成されることを可能にするのが好ましい。いくつかの例において、ソフトウエア開発企業は、そのソフトウエアアプリケーションがセキュアで、かつコピーされることなく、あるいは他に監視されているという保証を所望する場合がある。
【0017】
本発明の一以上の態様によれば、ローカルメモリと、前記ローカルメモリとの間での情報のやりとりを可能にするバスと、データを処理できるとともに前記ローカルメモリに動作可能に接続される1以上の演算処理ユニットと、複数の動作モードのうち少なくとも一つの動作モードに当該装置を設定可能なセキュリティ回路とを備える装置を提供する。なお、前記複数の動作モードは、当該装置および外部デバイスが、前記バスを介しての前記ローカルメモリとの間での情報の転送を開始できる第1のモードと、前記装置および前記外部デバイスが、前記バスを介しての前記ローカルメモリとの間での情報の転送を開始できない第2のモードと、当該装置は前記バスを介しての前記ローカルメモリとの間での情報の転送の開始できるが、前記外部デバイスは前記バスを介しての前記ローカルメモリとの間の情報の転送を開始できない第3のモードとを含む。
【0018】
本発明の一以上の態様によれば、セキュリティ回路は、二つの動作モードのうちいずれかの動作モードに装置を設定可能であり、その前記二つの動作モードは、(i)当該装置および外部デバイスが、前記バスを介しての前記ローカルメモリとの間での情報の転送を開始できる第1のモードと、当該装置は前記バスを介しての前記ローカルメモリとの間での情報の転送の開始できるが、前記外部デバイスは前記バスを介しての前記ローカルメモリとの間の情報の転送を開始できない第3のモードとで形成され、あるいは、(ii)前記装置および前記外部デバイスが、前記バスを介しての前記ローカルメモリとの間での情報の転送を開始できない第2のモードと、前記第3のモードとで形成される。
【0019】
前記セキュリティ回路は、前記セキュリティ回路の外部のデバイスによるアクセスが不可能な、第1の鍵と第2の鍵とを有する機密データ領域と、前記セキュリティ回路の外部のデバイスによるアクセスが可能なアクセス可能データ領域と、当該装置が前記第2のモードである場合に、前記アクセス可能データ領域内に前記第1の鍵のコピーを保存することを可能にするロジック回路と、を備えるのが好ましい。セキュリティが当該装置の使用に先立って維持されるよう、前記第1の鍵および前記第2の鍵は管理下におかれたプロセスにおいて前記機密データ領域内に保存されることが好ましい。
【0020】
復号化プログラムの実行と、前記第2の鍵のコピーを有するとともに前記第1の鍵に従って暗号化される認証プログラムの実行とを含む認証ルーチンを当該装置が実行する場合には、前記セキュリティ回路は当該装置を前記第2のモードに設定するのが好ましい。当該装置は前記復号化プログラムを実行することにより、前記アクセス可能データ領域内に含まれる前記第1の鍵のコピーを用いて前記認証プログラムを復号化する。
【0021】
前記セキュリティ回路が有する前記ロジック回路は、前記認証プログラムの実行に応じて前記アクセス可能データ領域内に前記第2の鍵のコピーを保存し、さらに、前記認証プログラム内に含まれる前記第2の鍵のコピーが前記アクセス可能データ領域内に含まれる第2の鍵のコピーに一致するか否かを判定するのが好ましい。
【0022】
前記セキュリティ回路は、前記認証プログラム内に含まれる前記第2の鍵のコピーが前記アクセス可能データ領域内に含まれる第2の鍵のコピーに一致する場合、当該装置は前記第3のモードに当該装置を設定できる。
【0023】
本発明の一以上の別の態様によれば、複数の上述した装置が一つのデバイス内に設けられてもよい。
【0024】
本発明の一以上の別の態様によれば、複数の動作モードのうち少なくとも一つの動作モードに装置を設定するステップを含む方法である。当該装置は、ローカルメモリと、前記ローカルメモリとの間での情報のやりとりを可能にするバスと、データを処理できるとともに前記ローカルメモリに動作可能に接続される1以上の演算処理ユニットと、複数の動作モードのうち少なくとも一つの動作モードに当該装置を設定可能なセキュリティ回路とを備える。なお、前記複数の動作モードは、当該装置および外部デバイスが、前記バスを介しての前記ローカルメモリとの間での情報の転送を開始できる第1のモードと、前記装置および前記外部デバイスが、前記バスを介しての前記ローカルメモリとの間での情報の転送を開始できない第2のモードと、当該装置は前記バスを介しての前記ローカルメモリとの間での情報の転送の開始できるが、前記外部デバイスは前記バスを介しての前記ローカルメモリとの間の情報の転送を開始できない第3のモードとを含む。
【0025】
本発明の一以上の別の態様によれば、メイン処理ユニットと、それぞれがローカルメモリおよび復号化ユニットを含むとともに、それぞれが通常の動作モードまたはセキュアな動作モードに入ることが可能な複数の付属処理ユニットと、共有メモリと、を備える装置を提供する。その装置の前記複数の付属処理ユニットのうちの一つの所与の付属処理ユニットが前記通常のモードである場合、前記メイン処理ユニットは、前記所与の付属処理ユニットと前記共有メモリとの間で、前記復号化ユニットをバイパスするデータ転送を開始でき、前記所与の付属処理ユニットが前記セキュアなモードである場合、(i)前記所与の付属処理ユニットから前記共有メモリへの前記メイン処理ユニットによるデータ転送の開始が禁止される、あるいは(ii)前記共有メモリから前記所与の付属処理ユニットへの、前記復号化ユニットをバイパスする、前記メイン処理ユニットによるデータ転送の開始が禁止される。
【0026】
前記複数の付属処理ユニットが通常の動作モードであるかセキュアな動作モードであるかにかかわらず、前記複数の付属処理ユニットは前記共有メモリとの間でのデータ転送を開始できるのが好ましい。ハードウエアのリセット状態および起動状態のうち少なくとも一つの状態であるときに、前記複数の付属処理ユニットは前記セキュアな動作モードに入りうるのが好ましい。
【0027】
前記複数の付属処理ユニットのそれぞれは、前記所与の付属処理ユニットの復号化ユニットおよび権限が与えられたエンティティのうち少なくとも一つによってのみアクセス可能な、十分に一意性のある鍵を有するセキュアな格納場所を備えるのが好ましい。前記複数の付属処理ユニットのそれぞれの前記復号化ユニットは、前記所与の付属処理ユニットが前記セキュアな動作モードである場合に、前記メイン処理ユニットにより開始される前記共有メモリから前記ローカルメモリへのデータ転送を前記鍵を用いて復号化してもよい。前記複数の付属処理ユニットのそれぞれは、前記所与の付属処理ユニットと当該装置とのうち少なくとも一つに対して外部にあるエンティティに把握されうる十分に一意性のあるIDに関連付けられてもよい。
【0028】
前記暗号化されたデータは、当該装置に対して外部にある、前記所与の付属処理ユニットの鍵の使用に権限が与えられたセキュアなエンティティにより暗号化されたものであるのが好ましい。前記セキュアなエンティティは、関与する付属処理ユニットのIDと鍵とを有するデータベースを含んでもよく、その付属処理ユニットに対するIDと鍵とはお互いに関連付けられている。前記付属処理ユニットの鍵の使用の権限が与えられていないアンセキュアなエンティティが、前記鍵に関連付けられたIDを前記セキュアなエンティティに提供した後に、前記セキュアなエンティティは、前記アンセキュアなエンティティから取得したデータを、前記所与の付属処理ユニットの鍵で暗号化してもよい。
【0029】
好適には、前記セキュアなエンティティは、前記アンセキュアなエンティティに前記暗号化されたデータを提供可能であり、前記アンセキュアなエンティティは、前記暗号化されたデータを当該装置に提供することで前記暗号化されたデータを前記共有メモリ内に保存することが可能であり、前記メイン処理ユニットは、前記共有メモリから前記所与の付属処理ユニットへの前記暗号化されたデータの転送を開始することにより、前記復号化ユニットへの前記暗号化されたデータの入力を可能にし、前記所与の付属処理ユニットの前記復号化ユニットは、前記所与の付属処理ユニットの鍵を用いて前記暗号化されたデータを復号化することにより、その復号化されたデータが前記所与の付属処理ユニットのローカルメモリ内に保存されることを可能にする。
【0030】
他に、前記付属処理ユニットの鍵の使用の権限が与えられていないアンセキュアなエンティティは、第1の対称鍵を用いて前記データを暗号化し、かつ、前記セキュアなエンティティにその暗号化されたデータを提供し、かつ、前記付属処理ユニットに関連付けられたIDを前記セキュアなエンティティに提供するのが好ましい。前記セキュアなエンティティは、前記アンセキュアなエンティティにより提供されたその暗号化されたデータを第2の対称鍵を用いて復号化し、かつ、前記アンセキュアなエンティティから取得されたIDに関連付けられる前記所与の付属処理ユニットの鍵を用いて、前記データを暗号化するのが好ましい。
【0031】
前記アンセキュアなエンティティは、前記データと前記所与の付属処理ユニットのIDとを前記第1の対称鍵を用いて暗号化し、かつ、前記セキュアなエンティティにその暗号化されたデータ/IDを提供するのが好ましい。最後に、前記セキュアなエンティティは、前記第2の対称鍵を用いて前記暗号化されたデータを暗号化し、その二重に暗号化されたデータを前記アンセキュアなエンティティに提供することが可能であり、前記アンセキュアなエンティティは、前記二重に暗号化されたデータを前記第1の対称鍵を用いて復号化することで、前記所与の付属処理ユニットの鍵を用いて生成された前記暗号化されたデータを取得し、さらに、前記暗号化されたデータを当該装置に提供することで、前記共有メモリ内に保存することが可能であり、前記メイン処理ユニットは、前記共有メモリから前記所与の付属処理ユニットへの前記暗号化されたデータの転送を開始することにより、前記復号化ユニットへの前記暗号化されたデータの入力を可能にし、前記所与の付属処理ユニットの前記復号化ユニットは、前記所与の付属処理ユニットの鍵を用いて前記暗号化されたデータを復号化することにより、その復号化されたデータが前記所与の付属処理ユニットのローカルメモリ内に保存されることを可能にする。
【0032】
さらに他の態様では、前記データは復号化プログラムであり、前記付属処理ユニットの鍵の使用の権限が与えられていないアンセキュアなエンティティは、第1の対称鍵を用いて前記復号化プログラムを暗号化し、前記セキュアなエンティティにその暗号化された前記復号化プログラムを提供し、さらに、前記付属処理ユニットに関連付けられたIDを前記セキュアなエンティティに提供するものであり、前記セキュアなエンティティは、前記アンセキュアなエンティティにより提供されたその暗号化された前記復号化プログラムを第2の対称鍵を用いて復号化し、かつ、前記アンセキュアなエンティティから取得されたIDに関連付けられる前記所与の付属処理ユニットの鍵を用いて、前記復号化プログラムと前記第2の対称鍵とを暗号化する。前記アンセキュアなエンティティは、復号化プログラムと前記所与の付属処理ユニットのIDとを前記第1の対称鍵を用いて暗号化し、かつ、前記セキュアなエンティティにその暗号化された復号化プログラム/IDを提供するのが好ましい。
【0033】
好適には、前記セキュアなエンティティは、前記第2の対称鍵を用いて、前記暗号化された復号化プログラムおよび第2の対称鍵を暗号化し、その二重に暗号化された復号化プログラム/第2の対称鍵を前記アンセキュアなエンティティに提供することが可能であり、前記アンセキュアなエンティティは、前記二重に暗号化された復号化プログラム/第2の対称鍵を前記第1の対称鍵を用いて復号化することで、前記所与の付属処理ユニットの鍵を用いて生成された前記暗号化された復号化プログラム/第2の対称鍵を取得し、さらに、その暗号化された復号化プログラム/第2の対称鍵を当該装置に提供することで、前記共有メモリ内に保存することが可能であり、前記メイン処理ユニットは、前記共有メモリから前記所与の付属処理ユニットへの前記暗号化された復号化プログラム/第2の対称鍵の転送を開始することにより、前記復号化ユニットへの前記暗号化された復号化プログラム/第2の対称鍵の入力を可能にし、前記所与の付属処理ユニットの前記復号化ユニットは、前記所与の付属処理ユニットの鍵を用いて前記暗号化された復号化プログラム/第2の対称鍵を復号化することにより、その復号化された復号化プログラムおよび第2の対称鍵が前記所与の付属処理ユニットのローカルメモリ内に保存されることを可能にする。
【0034】
さらに、前記アンセキュアなエンティティは、前記第1の対称鍵を用いてデータを暗号化でき、さらに、その暗号化されたデータを当該装置に提供することで、前記暗号化されたデータを前記共有メモリ内に保存することが可能である。前記所与の付属処理ユニットは、前記共有メモリから前記ローカルメモリ内に転送される前記暗号化されたデータを、前記復号化ユニットをバイパスして取得できる。前記暗号化されたデータが前記共有メモリから前記ローカルメモリ内に転送される場合、前記所与の付属処理ユニットは、前記通常のモードまたは前記セキュアのモードのいずれかであってもよい。前記所与の付属処理ユニットは、前記復号化プログラムおよび前記第2の対称鍵を用いて、前記暗号化されたデータを復号化できる。前記メイン処理ユニットは、前記復号化ユニットをバイパスする、前記共有メモリから前記所与の付属処理ユニットのローカルメモリ内への前記暗号化されたデータの転送を開始できる。
【0035】
本発明の上記以外の態様、特徴、および利点は、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
【図面の簡単な説明】
【0036】
【図1】実施の形態の一つ以上の態様に係るコンピュータネットワークの全体構成の一例を示す図である。
【図2】実施の形態の一つ以上の態様に係るマルチプロセッサシステムの構成を示す図である。
【図3】実施の形態の一つ以上の態様に係る図2のシステムのセキュリティ回路の構成を示す図である。
【図4】実施の形態の一つ以上の態様に係る認証ルーチンを実現するために、図2のシステムにより実行されうる処理ステップの一部を示すフロー図である。
【図5】実施の形態の一つ以上の態様に係る認証ルーチンを実現するために、図2のシステムにより実行されうる処理ステップをの一部を示すフロー図である。
【図6】実施の形態の一つ以上の態様に係る認証ルーチンを実現するために、図2のシステムにより実行されうる処理ステップの一部を示すフロー図である。
【図7】実施の形態の一つ以上の別の態様を実施するために用いられうる好適なプロセッサ要素(PE)の構成を示す図である。
【図8】実施の形態の一つ以上の別の態様に従って構成されうる図7のシステムのサブ処理ユニット(SPU)の構成の一例を示す図である。
【図9】実施の形態の一つ以上の別の態様に従って構成されうる図7のシステムの処理ユニット(PU)の構成の一例を示す図である。
【図10】実施の形態の一つ以上の態様に係るセキュリティ特性を有するプロセッサの構成を示す図である。
【図11】図10のプロセッサを用いて、実施の形態に係るあるセキュリティ特性を使用するためのシステムの構成を示す図である。
【図12】図10のプロセッサを用いて、実施の形態に係る別のセキュリティ特性を使用するためのシステムの構成を示す図である。
【図13】図10のプロセッサを用いて、実施の形態に係るさらなる別のセキュリティ特性を使用するためのシステムの構成を示す図である。
【図14】図13のシステムのさらなる詳細を示す図である。
【図15】図10のプロセッサを用いて、実施の形態に係るさらなる別のセキュリティ特性を使用するためのシステムの構成を示す図である。
【図16】図10のプロセッサを用いて、実施の形態に係るさらなる別のセキュリティ特性を使用するためのシステムの構成を示す図である。
【図17】図16のシステムのさらなる詳細を示す図である。
【図18】実施の形態の一つ以上の態様に係る複数のプロセッサを用いるシステムの構成を示す図である。
【発明を実施するための形態】
【0037】
現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
【0038】
実施の形態に係るコンピュータシステム1の全体構成を図1に示す。システム1は、複数のコンピュータおよびコンピューティングデバイスが接続されたネットワーク4を含む。ネットワーク4は、ローカルエリアネットワーク(LAN)、インターネット等のグローバルネットワーク、またはその他のコンピュータネットワークから構成されうる。
【0039】
ネットワーク4に接続されたコンピュータおよびコンピューティングデバイス(ネットワークの「メンバ」)は、クライアントコンピュータ6、サーバコンピュータ8、個人携帯端末(PDA)10、ディジタルテレビ(DTV)12、ならびにその他の有線または無線コンピュータおよびコンピューティングデバイス等を含む。ネットワーク4のメンバによって用いられるプロセッサは、同一の共通コンピューティングモジュールで構成される。これらのプロセッサはまた、すべて同一の命令セットアーキテクチャを有し、その同一の命令セットに従って処理を実行するのが好ましい。任意のあるプロセッサ内部に含まれるモジュールの数は、そのプロセッサが必要とする処理能力に依存する。
【0040】
例えば、システム1のサーバ8は、クライアント6よりも多くのデータおよびアプリケーションを実行するため、クライアント6よりも多くの計算モジュールを含む。一方、PDA10は本例では処理量が最も少ない。従ってPDA10に含まれるPE数は一番少ない。DTV12はクライアント6とサーバ8との間のあるレベルの処理を実行する。従って、DTV12はクライアント6とサーバ8の間の数のプロセッサ要素を含む。後述するが、それぞれのコンピューティングモジュールは、ネットワーク4を介して伝送されたデータおよびアプリケーションの並列処理を実行するための処理コントローラおよび複数の同一の処理ユニットを含む。
【0041】
システム1のこのホモジーニャスな(均一な)構成により、適応性、処理速度、および処理効率が向上する。システム1の各メンバは同一計算モジュールを一つ以上用いて(またはそのある部分を用いて)処理を行うので、データおよびアプリケーションの処理を実際に行っているのはどのコンピュータまたはコンピューティングデバイスであるかは重要ではない。そのようなデータおよびアプリケーションの処理は、さらに、ネットワークメンバ間で共有できるためである。システム1によって処理されるデータおよびアプリケーションを含むソフトウエアセルを一意に識別することにより、処理がどこで発生したかに関係なく、処理を要求しているコンピュータまたはコンピューティングデバイスに処理結果を伝送できる。処理を実行しているモジュールは共通の構造をもち、かつ共通の命令セットアーキテクチャを使用しているので、プロセッサ間で互換性を得るためにソフトウェアに追加すべきレイヤによる計算負荷を回避できる。この構成およびプログラミングモジュールによって、例えばマルチメディア・アプリケーションのリアルタイムの実行に必要な処理速度を達成できる。
【0042】
システム1によって改善される処理速度および処理効率の利点をさらに高めるため、本システムによって処理されるデータおよびアプリケーションは、一意に識別され、均一にフォーマットされたソフトウェアセル2にパッケージされる。各ソフトウェアセル2は、アプリケーションおよびデータの両方を含む、または含みうる。各ソフトウェアセルはまた、ネットワーク4およびシステム1中でセルをグローバルに識別するIDを含む。このソフトウェアセルの均一な構造、およびソフトウェアセルのネットワーク中での一意的な識別により、ネットワークの任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント6はソフトウェアセル2をフォーミュレート(すなわち所与の形式で生成)するが、クライアント6の処理能力の限度のため、そのソフトウェアセルをサーバ8に伝送して処理してもよい。従ってソフトウェアセル2は、ネットワーク4上で利用できる処理リソースに応じてネットワーク4中を移動できる。
【0043】
システム1のプロセッサおよびソフトウェアセル2の均一構造はまた、既存の異種ネットワークの多くの問題を回避する。例えば、任意の命令セットを用いることで任意の命令セットアーキテクチャ上でのアプリケーションの処理を可能にする、効率的とはいえないプログラミングモデル、例えばJavaバーチャルマシーン等のバーチャルマシーンが回避される。従って、システム1は従来のネットワークに比べて、はるかに効果的かつ効率的な広帯域処理を実現できる。
【0044】
図2は、実施の形態に係る1以上の態様を実現するために構成されうるプロセッサシステム100の少なくとも一部を示す。簡潔および明確にするために、図2の構成図を参照し装置100を用いて説明するが、同一の主旨を有する様々な態様の方法にその説明を簡単に適用できるのは言うまでもない。
【0045】
プロセッサシステム100は複数のプロセッサ102(102A〜102D)を含むが、本発明の主旨および範囲を逸脱しない限り、いかなる数のプロセッサを用いることができるのは言うまでもない。そのプロセッサシステム100はまた、複数のローカルメモリ104(104A〜104D)と、共有メモリ106とを有する。少なくとも、プロセッサ102、ローカルメモリ104および共有メモリ106は、適切なプロトコルに従ってそれぞれの構成要素との間でデータ転送が可能なバスシステム108を介して、(直接的にまたは間接的に)お互いに接続されるのが好ましい。
【0046】
プロセッサ102のそれぞれの構成は同一であってもよいし、異なってもよい。そのプロセッサは、共有(またはシステム)メモリ106からデータを要求するとともにそのデータを操作することで所望の結果を得ることを可能にする任意の既知の技術を用いて実装されてもよい。例えば、プロセッサ102はソフトウエアおよび/またはファームウエアを実行可能な、スタンドアロン型や分散型のマイクロプロセッサなどの任意の既知のマイクロプロセッサを用いることで実装されてもよい。例として、一つ以上のプロセッサ102は、ピクセルデータなどのデータを要求するとともにそのデータを操作可能なグラフィックプロセッサであってもよい。なお、そのピクセルデータには、グレースケール情報や、カラー情報や、テクスチャデータや、ポリゴン情報や、ビデオフレーム情報などが含まれる。
【0047】
システム100の一つ以上のプロセッサ102は、メイン(または管理)プロセッサとして機能する。そのメインプロセッサは他のプロセッサによるデータの処理のスケジューリングと調整を行うことができる。
【0048】
システムメモリ106は、メモリインタフェース回路(図示せず)を通じてプロセッサ102に接続されるダイナミックランダムアクセスメモリ(DRAM)であるのが好ましい。そのシステムメモリ106は、好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【0049】
それぞれのプロセッサ102は好適には、プロセッサコアと、中でプログラムを実行するための、そのコアに関連付けられた一つのローカルメモリ104とを含む。これらの構成要素は共通の半導体基板上に一体的に設けられてもよいし、あるいは、設計者の意図により分離されて設けられてもよい。プロセッサコアは好適には、パイプライン処理を用いて実行される。なお、パイプライン処理においては、パイプライン型の方法で論理命令が処理される。そのパイプラインは、命令が処理される任意の数のステージに分割されるが、一般的には、一つ以上の命令をフェッチするステージ、その命令をデコードするステージ、命令間の依存性をチェックするステージ、その命令を出力するステージ、その命令を実行するステージを有する。この点に関連して、そのプロセッサコアには、命令バッファ、命令デコード回路、依存性チェック回路、命令出力回路、および実行段階が含まれる。
【0050】
それぞれのローカルメモリ104は、そのローカルメモリ104に関連付けられたプロセッサコア102にバスを介して接続され、さらにそのプロセッサコアと同一チップ(同一の半導体基板)上に設けられるのが好ましい。ローカルメモリ104は、従来のハードウェアキャッシュメモリではないことが好ましい。なお、そのローカルメモリ104には、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に設けられたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどは存在しない。チップ上の実装面積が限られているので、ローカルメモリ104のサイズは、共有メモリ106のサイズよりはるかに小さい。
【0051】
プロセッサ102は、プログラムの実行とデータの操作のために、バスシステム108を介してシステムメモリ106からそれぞれのローカルメモリ104にデータ(プログラムデータを含みうる)をコピーするためのデータアクセスを要求することが好ましい。データアクセスを容易にするメカニズムとして、例えばダイレクト・メモリ・アクセス(DMA)技術などの任意の既知の技術を用いてもよい。この機能は好適には、メモリインタフェース回路により実行される。
【0052】
図3に示すように、一つ以上のプロセッサ102はまた、そのプロセッサ102を複数の動作モードのうち少なくとも一つの動作モードに設定できるセキュリティ回路150を含むのが好ましい。そのセキュリティ回路150は、機密データ領域152と、アクセス可能データ領域154と、ロジック回路156とを含む。機密データ領域152は、セキュリティ回路150の外部のどのデバイスからもアクセス不可能であることが好ましい。アクセス可能データ領域154は、セキュリティ回路150の外部のデバイスからアクセス可能であることが好ましい。機密データ領域152および/またはアクセス可能データ領域154はそれぞれ、ローカルメモリ106の一部分、レジスタおよび/またはROMやそれと同様の他の記憶デバイスとして実装されうる。
【0053】
第1の鍵であるKEY1および第2の鍵であるKEY2は、プロセッサ102の使用前の管理下におかれたプロセスにおいて、セキュリティ回路150の機密データ領域152内に保存されるのが好ましく、それによりセキュリティが維持される。実際には、KEY1およびKEY2は、プロセッサ102を認証しさらにそのプロセッサ102を信頼のおけるデバイスとみなすために用いられるものと考慮される。したがって、KEY1およびKEY2は、プロセッサが使用中である場合および、例えば製造工程中などの使用前である場合に、権限が与えられた主体(party;パーティ)の制御下で、秘密状態で保持されるのが好ましい。
【0054】
機密データ領域152、アクセス可能データ領域およびロジック回路156は好適には、あるバス構成を用いて実装可能なコネクション線158を介してお互いに接続される。ロジック回路156は好適には、あるバス構成を用いて同様に実装可能な一つ以上のデータ線160によりレジスタに接続される。
【0055】
上述のように、セキュリティ回路150は好適には、そのプロセッサ102を複数の動作モードのうち少なくとも一つの動作モードに設定することが可能である。これらのモードの中には好適には、第1モード(通常モード)が含まれる。その第1モードによれば、プロセッサ102と任意の外部のデバイスやデバイス群は、そのプロセッサ102との間での情報の転送、例えば、ローカルメモリ104との間での情報の転送を開始できる。その動作モードの中には好適には、第2のモード(独立モード)も含まれる。その第2モードによれば、プロセッサ102も任意の外部のデバイスやデバイス群も、そのプロセッサ102との間での情報の転送を開始することは不可能である(情報の転送の開始が制限される)。その動作モードの中には好適には、第3のモード(セキュアモード)も含まれる。その第3のモードによれば、プロセッサ102は、そのプロセッサ102との間での情報の転送を開始できるが、任意の外部のデバイスやデバイス群は、そのプロセッサ102との間での情報の転送を開始することは不可能である(情報の転送の開始が制限される)。
【0056】
本実施の形態に係るプロセッサ102のあるセキュリティ機能の流れを示す図4から図6までを参照することで、セキュリティ回路150の動作についての理解をさらに深めることができる。この点について、プロセッサ102は第1のモードである通常動作モードに初期設定されているものとする(動作200)。その第1のモードでは、プロセッサ102と(他のプロセッサなどの)任意の外部のデバイスまたはデバイス群は、プロセッサ102のローカルメモリ104との間での情報の転送を開始できる。ここで、他の実施の形態においては、そのプロセッサ102は、(起動時などの)初期化時に第1の動作モードに入らなくてもよい。あるいは、後述する第2の動作モードまたは第3の動作モードを優先しつつ、比較的短い時間だけその第1のモードに入ることもできる。
【0057】
動作202では、プロセッサ102は認証ルーチンを実行することで信頼性の高い状態を実現できる。その認証ルーチンは、プロセッサ上で動作するアプリケーションからのコール(呼出)により開始されるか、あるいはプロセッサ102の外部で動作するプログラムからのコールにより開始される(動作202)。他の実施の形態においては、プロセッサ102は、初期化時にその認証ルーチンを実行してもよく、あるいは、その初期化の直後に、アプリケーションプログラムからのコールを必要とすることなく初期設定状態(デフォルト状態)としてその認証ルーチンを実行してもよい。認証ルーチンの開始に応じて、プロセッサ102は復号化プログラムを実行するのが好ましい。ここで、その復号化プログラムは、プロセッサ102が設けられたモジュール内の適切なメモリから取得されるものであってもよいし、あるいは、そのモジュールの外部のソース(source;供給元)から取得されるものであってもよい。そのような外部のソースの例として、例えば、そのモジュールを有するより大きなシステムの内部に含まれうる適切なメモリや、管理者権限の機能やそれと同様の機能を実行するサーバ8(図1)などの、ネットワーク4に接続される他のデバイスなどが挙げられる。本発明に係る1以上の実施形態では、その復号化プログラムは、フラッシュROMなどのセキュアな不揮発性ROM内に含まれうる。
【0058】
動作206では、プロセッサ102による復号化プログラムの実行前や実行中に、または実行の結果として、プロセッサ102は第2のモードである独立動作モードに入るのが好ましい。ここで、その第2の動作モードでは、プロセッサ102も任意の外部デバイスやデバイス群も、ローカルメモリ104との間での情報の転送を開始することはできない。
【0059】
動作208では、プロセッサ102は、認証ルーチンの間に用いられる認証(authentication)プログラムを取得するのが好ましい。ここで、暗号化された認証プログラムがそのプロセッサ102により取得されるタイミングは固定されていない(一定ではない)。すなわち、実際には、そのプログラムは認証ルーチンの実行前または実行中の任意の適切な時間に取得されうる。権限の与えられた方法によってのみ認証プログラムが用いられるよう、その認証プログラムはKEY1に従って暗号化されるのが好ましい。さらに、認証プログラムは、その認証プログラムを特定するKEY2を含むのが好ましい。例えば、KEY2はシリアル番号やハッシュ結果などであってもよい。
【0060】
暗号化された認証プログラムは、プロセッサ102内の適切なメモリ内、そのプロセッサ102を有するモジュール内、あるいは、そのプロセッサ102またはモジュールの外部のメモリ内に保存されるのが好ましい。暗号化された認証プログラムは、そのプロセッサ102を有するモジュールの外部にあるメモリの内部であって、かつ、そのモジュールを備えるデバイスの内部以外に保存されるのが最も好都合である。また、認証プログラムの暗号化および適切なメモリ内へのその暗号化された認証プログラムの保存は、制御下におかれたプロセスにおいて、権限が与えられたエンティティにより実施されるのが好ましい。実際に、認証プログラムを用いた、プロセッサ102やその任意のプログラムそのものの認証が効果的であることを保証するために、認証プログラムの整合性はいつでも維持されるのが好ましい。本発明に係る1以上の実施形態では、その認証プログラムはフラッシュROMなどのセキュアな不揮発性ROM内に含まれうる。
【0061】
動作210では、復号化プログラムの実行により、セキュアなKEY1のコピーを機密データ領域152から読み出し、さらにセキュリティ回路150内のアクセス可能データ領域154内に保存することを可能にする。例として、ロジック回路156は、プロセッサ102のレジスタ(図示せず)内のあるデータの存在に応じて、機密データ領域152からアクセス可能データ領域154に、KEY1のコピーを転送できるのが好ましい。プロセッサ102は第2の独立モードであるため、アクセス可能データ領域154内のKEY1のコピーの存在はセキュリティを害するものではない。実際に、プロセッサ102および任意の外部デバイスは、ローカルメモリ104またはその他のものを通じてプロセッサ102からのKEY1の取り出しを開始できない。
【0062】
動作212では、復号化プログラムが、KEY1を用いてその暗号化された認証プログラムを復号化し、プロセッサ102がその認証プログラムを実行するのが好ましい。認証プログラムが実行される間、機密データ領域152内に含まれるKEY2のコピーが、アクセス可能データ領域154内に書き込まれるのが好ましい(動作214)。例として、ロジック回路156は、認証プログラムに従ってレジスタ内に書き込みられうるあるデータに応じて、機密データ領域152からアクセス可能データ領域154に、KEY2のコピーを転送できるのが好ましい。
【0063】
動作216では、アクセス可能データ領域154内のKEY2のコピーが、認証プログラム内に含まれるKEY2のコピーに一致するか否かについての判定がなされるのが好ましい。ここで、認証プログラムは、その認証プログラムが復号化される(動作212)ときに入手可能となるKEY2のコピーを含んでいる。例として、認証プログラム内に含まれるKEY2のコピーは、ローカルメモリ104内に一時的に保存されてもよいし、その認証プログラムそのものの実行に従ってアクセス可能データ領域154に書き込まれてもよい。また、プロセッサ102はこの処理の間は独立モードであり、従って、プロセッサ102の外部にある権限が与えられていないデバイスはKEY2のコピーを取得できないため、この保存や書き込み行為はセキュリティを害するものではない。
【0064】
認証プログラム内に含まれるKEY2のコピーが、機密データ領域152から取得されるKEY2のコピーに一致しない場合、プロセッサ102の認証処理は終了する(動作218)。なお、これら二つのKEY2のコピーが一致した場合、アクセス可能データ領域154内に含まれるKEY1のコピーおよびKEY2のコピーはクリア(消去)されるのが好ましく(動作220)、さらにプロセッサ102は第3のセキュアな動作モードに入る(動作222)。例として、ロジック回路156は、アクセス可能データ領域154からKEY1およびKEY2のコピーをクリアし、プロセッサ102が第3のセキュアな動作モードに入る機能を有する。
【0065】
ここで、第3のセキュアな動作モードでは、プロセッサ102はローカルメモリ104との間での情報の転送を開始できる。別の言い方をすれば、第3のセキュアな動作モードでは、プロセッサ102は、そのプロセッサ102との間での情報の転送を開始できるが、プロセッサ102の外部の任意のデバイスは、そのような情報の転送を開始することはできない。いったん、そのプロセッサが第3のセキュアな動作モードに入れば、そのプロセッサは、権限が与えられていないエンティティによりそのようなデータを取得されるおそれがなくオペレーションの実行およびデータの操作を可能にする信頼のおけるデバイスであると考えてよい。実際に、そのプロセッサ102自身により開始されなければ、他のプロセッサでさえもプロセッサ102内のデータにアクセスすることはできない。
【0066】
利点として、信頼性の高いプロセッサ102は、例えば、図1に示される分散型のシステム内において多くの有用な機能を与える。これらの機能には、権限が与えられたデバイスによってのみアクセス可能なメモリ領域と、権限が与えられたデバイスによってのみ変更可能なセキュアなクロックデバイスと、信頼性の高いリクエストメカニズムと、ブートコードを(例えば、公開鍵に基づく認証を用いて)認証可能なセキュアな処理要素とを有するセキュアな外部のメモリコントローラの提供が含まれる。
【0067】
本実施の形態に係る1以上の態様によれば、復号化のオペレーションを制御するメインプロセッサを含む他のプロセッサ102は、信頼性の高いプロセッサ(trusted processor)102を用いることができる。一例として、信頼性の高いプロセッサ102により復号化されメインメモリ106内に保存されたデータを、あるプロセッサ102が取得しようとすることができる。その結果、そのプロセッサは、メインメモリ106内のそのデータが保存された場所、およびどの復号化ルーチンを実行するべきかを示すパラメータ群のうち少なくとも一つを示すリクエストを信頼性の高いプロセッサ102に送信できる。(他の例として、その復号化ルーチンは予め決定されていてもよく、その結果、そのようなパラメータ群は除外されてもよい。)そのリクエストに応じて、信頼性の高いプロセッサ102は、その暗号化されたデータをメインメモリ106からその(自身の)プロセッサ102のローカルメモリ104内に読み込み、復号化処理を実行する。もし、他のプロセッサ102によるリクエストが行われる以前に、その信頼性の高いプロセッサ102が(KEY1およびKEY2などの)復号鍵を所有していなかった場合、そのような復号鍵またはそのような鍵を取得する方法についての情報もまた、リクエストを行ったプロセッサ102により提供されるのが好ましい。そのとき、その復号化されたデータは好適には、メインメモリ106内に戻され、および/または、リクエストを行ったプロセッサ102のローカルメモリ104内に書き込まれる。
【0068】
ここで、上述した一つ以上の特徴の実現に適した、好適なマルチプロセッサシステムのコンピュータアーキテクチャについて説明する。一つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、PCシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および/または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、3Dコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
【0069】
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、1以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【0070】
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
【0071】
図7は、基本的な処理モジュールであるプロセッサ要素(PE)300を示す。PE300は、I/Oインタフェース302と、処理ユニット(PU)304と、複数のサブ処理ユニット308、すなわち、サブ処理ユニット308Aと、サブ処理ユニット308Bと、サブ処理ユニット308Cと、サブ処理ユニット308Dとを含む。ローカル(すなわち内部)PEバス312は、PU304、SPU群308、およびメモリインタフェース311間のデータおよびアプリケーションの伝送を行う。ローカルPEバス312は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【0072】
PE300はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、PE300はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE300はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)ロジック回路等として実装することもできる。
【0073】
PE300は、広帯域メモリ接続316を介してダイナミックランダムアクセスメモリ(DRAM)314に密接に関連付けられる。メモリ314は好適にはダイナミックランダムアクセスメモリ(DRAM)だが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【0074】
PU304およびサブ処理ユニット308は、それぞれ、ダイレクトメモリアクセス(DMA)機能を有するメモリフローコントローラ(MFC)と接続されることが望ましい。MFCは、メモリインタフェース311と協働して、DRAM314、PE300におけるサブ処理ユニット308、PU304間のデータの転送を円滑にするものである。ここで、DMACおよび/またはメモリインタフェース311は、サブ処理ユニット308とPU304とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、DAMCの機能および/またはメモリインタフェース311の機能は、サブ処理ユニット308およびPU304の一つ以上(好ましくはすべて)に一体化できる。ここで、DRAM314もまた、PE300から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、DRAM314は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
【0075】
PU304は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU304はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には、一命令複数データ(SIMD)プロセッサである。PU304の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。PU304としては、RISC(reduced instruction−set computing)技術を用いるマイクロプロセッサアーキテクチャとなるPowerPC(登録商標)コアを用いることが好ましい。RISCは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
【0076】
ここで、PU304は、サブ処理ユニット308のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット308は、メイン処理ユニットPUによる処理、すなわち各々のサブ処理ユニット308によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、PE300内において、複数のPUを実装してもよい。
【0077】
このモジュール構造では、あるコンピュータシステムで使用されるPE300の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE群300、ワークステーションは二つのPE群300、PDAは一つのPE300を使用しうる。あるソフトウェアセルの処理に割り当てられるPE300のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【0078】
図8は、サブ処理ユニット(SPU)308の好適な構造と機能を示す図である。サブ処理ユニット308のアーキテクチャは、汎用プロセッサ(多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの)と特殊用途のプロセッサ(一つのアプリケーションにおいて高い性能を実現するように設計されている)との間に位置するものであることが望ましい。サブ処理ユニット308は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット308の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGエンコード/デコード、暗号化、復号化、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
【0079】
サブ処理ユニット308は、すなわちSPUコア310Aとメモリフローコントローラ(MFC)310Bという二つの基本機能ユニットを有する。SPUコア310Aは、プログラムの実行、データの操作などを担うものであり、一方、MFC310Bは、SPUコア310Aと、システムのDRAM314との間のデータ転送に関連する機能を担うものである。
【0080】
SPUコア310Aはローカルメモリ350と、命令(インストラクション)ユニット(IU)352と、レジスタ354と、一つ以上の浮動小数点処理ステージ356と、一つ以上の固定小数点処理ステージ358とを有する。ローカルメモリ350は、SRAMのようなシングルポートのRAMを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、SPUコア310Aは、キャッシュよりも、比較的小さいローカルメモリ350を用いる。実際には、リアルタイムのアプリケーション(およびここで言及したほかのアプリケーション)のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット308A内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット/ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うDMA転送をオーバーラップすることで、ローカルメモリSRAM350内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。DMA転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、SRAMローカルメモリアプローチは、DMA転送サイズが十分大きいかつ十分予測可能なとき(例えばデータが要求される前にDMAコマンドを発行することができるとき)において優位性を提供する。
【0081】
サブ処理ユニット308のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ350を参照する。なお、ローカルメモリ350の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス(RA)が付与されている。これは、特権レベルのソフトウェアがローカルメモリ350を一つの処理における実効アドレス(EA)にマッピングすることを可能とし、それによって二つのローカルメモリ350間のDMA転送が容易になる。PU304は、実効アドレスを用いてローカルメモリ350に直接アクセスすることもできる。ローカルメモリ350は、356キロバイトの容量を有し、レジスタ354の容量は128×128ビットであることが望ましい。
【0082】
SPUコア310Aは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の従属関係のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット352は、命令バッファと、命令デコード回路と、従属関係チェック回路と、命令発行回路とを含む。
【0083】
命令バッファは、ローカルメモリ350と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして(すなわち実質的に大量に)レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ2または3以下となるようにするサイズであることが好ましい。
【0084】
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ350へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび/または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび/またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、同時に大量に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
【0085】
従属関係チェック回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに従属するか否かを判定するためのチェックを行うデジタルロジックを含む。従属するならば、チェック対象となる命令は、これらの他のオペランドが(例えば、これらの他の命令の実行の完了を許可することによって)更新されるまで、実行されるべきではない。従属関係チェック回路は、デコード回路112から同時に送信されてきた複数の命令の従属関係を判定することが好ましい。
【0086】
命令発行回路は、浮動小数点処理ステージ356および/または固定小数点処理ステージ358に命令を発行することができる。
【0087】
レジスタ354は、128―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
【0088】
SPUコア310Aは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。SPUコア310Aは、命令バッファから同時に送信される命令の数、例えば2と3の間(クロックサイクル毎に二つまたは3つの命令が発行されることを意味する)に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点処理ステージ356と固定小数点処理ステージ358を用いることができる。好適な実施の形態では、浮動小数点処理ステージ356と固定小数点処理ステージ358の望ましいスピードは、それぞれ、毎秒32ギガ浮動小数点オペレーション(32 GFLOPS)と毎秒32ギガオペレーション(32 GOPS)である。
【0089】
MFC310Bは、バスインターフェースユニット(BIU)364と、メモリマネジメントユニット(MMU)362と、ダイレクトメモリアクセスコントローラ(DMAC)360とを有することが望ましい。低電力消費の設計目的を達成するために、MFC310Bは、DMAC360を除いて、SPUコア310Aおよびバス312の半分の周波数(半分のスピード)で動作することが好ましい。MFC310Bは、バス312からサブ処理ユニット308に入るデータと命令を操作することができ、DMACのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。BIU364は、バス312とMMU362とDMAC360との間のインターフェースを提供する。したがって、サブ処理ユニット308(SPUコア310AとMFC310Bを含む)とDMAC360は、物理的および/または論理的にバス312と接続されている。
【0090】
MMU362は、メモリアクセスのために実効アドレス(DMAコマンドから取得される)をリアルアドレスへ変換することができるようにすることが望ましい。例えば、MMU362は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、MMU362は、64ビットのメモリマネジメントモジュールをベースにして実装でき、4Kバイト、64Kバイト、1メガバイト、16メガバイトのページサイズと256MBのセグメントサイズを有する264のバイトの実効アドレス空間を提供することができる。MMU362は、DMAコマンドのために、265までの仮想メモリと、242バイト(4テラバイト)の物理メモリをサポート可能であることが好ましい。MMU362のハードウェアは、8−エントリの完全連想SLB、256−エントリの4ウェイセット連想TLB、TLBのための4×4代替マネジメントテーブル(RMT)を含むものとすることができる。なお、RMTはハードウェアTLBミスのハンドリングに用いられるものである。
【0091】
DMAC360は、SPUコア310AからのDMAコマンドと、一つ以上の、PU304および/または他のSPUのような他のデバイスからのDMAコマンドとを管理することができることが望ましい。DMAコマンドは下記の3つのカテゴリがある。すなわち、ローカルメモリ350から共有メモリ314へデータを移動させるPutコマンド、共有メモリ314からローカルメモリ350へデータを移動させるGetコマンド、SLIコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。DMAコマンドに応じて、MMU362は実効アドレスをリアルアドレスに変換し、このリアルアドレスはBIU364に転送される。
【0092】
SPUコア310Aはチャンネルインターフェースとデータインターフェースとを用いて、DMAC360内のインターフェースと通信(DMAコマンド、ステータスなどの送信)することが好ましい。SPUコア310Aは、チャンネルインターフェースを介してDMAコマンドをDMAC360内のDMAキューに送信する。いったん、DMAキューに格納されたDMAコマンドは、DMAC360内の発行ロジックと完了ロジックにより操作される。一つのDMAコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がSPUコア310Aに返送される。
【0093】
図9は、PU304の好ましい構造と機能を示す図である。PU304は、PUコア304Aとメモリフローコントローラ、すなわちMFC304Bとの二つの基本機能ユニットを有する。PUコア304Aは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、MFC304Bは、PUコア304Aと、処理システム100のメモリスペースとの間のデータ転送に関連する機能を担うものである。
【0094】
PUコア304Aは、L1キャッシュ370と、命令ユニット372と、レジスタ374と、少なくとも一つの浮動小数点処理ステージ376と、少なくとも一つの固定小数点処理ステージ378とを有する。L1キャッシュ370は、共有メモリ106、プロセッサ102、あるいはMFC304Bにおけるほかの部分のメモリスペースから受信したデータのキャッシング機能を提供する。PUコア304Aはスーパーパイプラインとして実装されることが好ましいため、命令ユニット372は、フェッチ、デコード、従属関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。PUコア304Aは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット372から2以上の命令が発行される。高い演算パワーを実現するために、浮動小数点処理ステージ376と固定小数点処理ステージ378は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点処理ステージ376と固定小数点処理ステージ378とを用いることができる。
【0095】
MFC304Bは、バスインターフェースユニット(BIU)380と、L2キャッシュ382と、キャッシュ不可ユニット(NCU)384と、コアインターフェースユニット(CIU)386と、メモリマネジメントユニット(MMU)388とを有する。低電力消費の設計目的を達成するために、MFC304Bのほとんどは、PUコア304Aとバス108の半分の周波数(半分のスピード)で動作することが好ましい。
【0096】
BIU380は、バス108と、L2キャッシュ382と、NCU384のロジックブロックとの間のインターフェースを提供する。BIU380は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス108上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、BIU380は、L2キャッシュ382とNCU384の代わりに、バス108へのロードリクエストとストアリクエストを発信する。BIU380は、バス108へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス108上のデータオペレーションは、8ビートになるように設計されることができ、そして、BIU380は、キャッシュラインが128バイト前後であり、一貫性と同期の精度が128KBであるように設計されることが好ましい。
【0097】
L2キャッシュ382(およびそれをサポートするハードウェアロジック)は、312KBデータをキャッシュするように設計されることが好ましい。例えば、L2キャッシュ382は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。L2キャッシュ382は、8ウエイセットアソシエイティブシステムであることが好ましい。L2キャッシュ382は、6つのキャストアウトキュー(例えば6つのRCマシン)に合わせた6つのリロードキューと、8つの(64バイトの幅の)ストアキューとを有することができる。L2キャッシュ382は、L1キャッシュ370の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ(動作中に変更)されたときの、復元状況において有用である。この構成は、L1キャッシュ370が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる(リクエストがL2キャッシュ382で止まることができるから)。この構成は、L2キャッシュ382にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
【0098】
NCU384はインターフェースによってCIU386と、L2キャッシュ382と、BIU380と接続されており、通常、PUコア304Aとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。NCU384は、PUコア304Aとの通信のうちの、L2キャッシュ382によって扱わない全ての通信を操作することが好ましい。ここで、L2キャッシュ382によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、NCU384は、半分のスピードで動作することが好ましい。
【0099】
CIU386は、MFC304BとPUコア304Aとの境界線上に配置され、浮動小数点処理ステージ376、固定小数点処理ステージ378、命令ユニット372、MMU388から、L2キャッシュ382とNCU384へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。PUコア304AとMMU388はフルスピードで動作し、L2キャッシュ382とNCU384は2:1のスピード比で動作可能であることが好ましい。こうすることによって、CIU386に周波数境界線が存在することになり、この境界線は、その一つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
【0100】
CIU386は、ロードユニット、ストアユニット、リロードユニットの3つの機能ブロックから構成される。さらに、データをプリフェッチする機能がCIU386により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。CIU386は、下記の動作を実行可能であることが好ましい:(i)PUコア304AとMMU388からのロードリクエストとストアリクエストを受信する、(ii)これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する(2:1クロック周波数変換)、(iii)キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれL2キャッシュ382とNCU384へルーティングする、(iv)L2キャッシュ382とNCU384へのリクエストが均等になるように調整する、(v)リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、L2キャッシュ382とNCU384へ送信するリクエストのフローコントロールを提供する、(vi)ロードリターンデータを受信すると共に、これらのデータを浮動小数点処理ステージ376、固定小数点処理ステージ378、命令ユニット372、またはMMU388へルーティングする、(vii)スヌープリクエストを浮動小数点処理ステージ376、固定小数点処理ステージ378、命令ユニット372、またはMMU388へ転送する、(viii)ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
【0101】
MMU388は、第2レベルアドレス変換手段のごとく、PUコア304Aのためにアドレス変換を提供することが好ましい。変換の第1レベルは、PUコア304A内において、セパレート命令と、MMU388より遥かに小さくてかつ速いデータERAT(実効アドレスからリアルアドレスへの変換)アレイとにより提供されることが好ましい。
【0102】
PU304は64ビットで実装され、4〜6GHz、10F04(Fan−out−of−four)で動作することが好ましい。レジスタは64ビットの長さを有することが好ましく(特定用途のための一つまたはより多くのレジスタが64ビットより小さいかもしれないが)、実効アドレスは64ビットの長さを有することが好ましい。命令ユニット372、レジスタ374、浮動小数点処理ステージ376と固定小数点処理ステージ378はRISCコンピューティング技術を達成するためにPowerPC技術により実装されることが好ましい。
【0103】
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第6526491号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のPEを含め、さらに、このPEに、PU、DMACおよび8個のAPUを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ(VS)の構造を有してもよく、この場合、VSに、PU、DMACおよび4つのAPUを含めてもよい。
【0104】
ここで、図10は本実施の形態に係る1以上の態様のプロセッサ500の構成を示す。本実施の形態では、プロセッサ500はまた、復号化ユニット502とセキュアメモリ504とを備える。そのセキュアメモリ504は不可視鍵(IKi)を含む。なお、iはi番目のプロセッサを表す。復号化ユニット502は、メモリフローコントローラ310Bからローカルメモリ350に流れるデータを(不可視鍵IKiを用いて)復号化できる。その不可視鍵IKiは、与えられたプロセッサ500に対し十分に一意性のある鍵であることが好ましく、システム内のプロセッサは、それぞれ一意性のある不可視鍵を含むものとされている。復号化ユニット502は、簡単なXORアルゴリズムやより複雑なアルゴリズムなどの任意の既知の技術を用いることができる。
【0105】
上述の技術を用いるかまたは他の技術を用いるかのいずれかにより、プロセッサ500はセキュアな動作モードに入ることが好ましい。そのプロセッサ500は、ハードウエアリセット時や起動時にセキュアな動作モードに入るのが好ましい。PU304は、プロセッサ500がアンセキュアなモードである場合、復号化ユニット502を介さない共有DRAM314およびローカルメモリ350間のデータ転送を開始できる。同様に、PU304は、プロセッサ500がアンセキュアなモードである場合、ローカルメモリ350から共有メモリ314へのデータ転送を開始できる。なお、セキュアなモードである場合は、PU304は、復号化ユニット502を通過させない、共有DRAM314からローカルメモリ350へのデータ転送を開始することはできない。ローカルメモリ350からのPU304により開始されるデータ転送は、セキュアなモードでは許可されない(禁止される)。従って、PU304(または任意の他の外部のエンティティ)により開始される任意のデータ転送は、結果として、不可視鍵IKiを用いた、そのデータの復号化を余儀なくされる。なお、プロセッサ500は、セキュアな動作モードであるか否かとは無関係に、ローカルメモリ350および共有DRAM314間のデータ転送を開始できる。
【0106】
セキュアな記憶メモリ504内に保存された不可視鍵IKiは、プロセッサ500の復号化ユニット502やある他の権限が与えられたエンティティによってのみアクセスされうる。たとえ、あるエンティティが特定のプロセッサ500の不可視鍵IKiを把握する権限を有していても、そのようなエンティティに対しては、そのプロセッサ500のセキュアなメモリ504から不可視鍵IKiを取得する以外の方法で不可視鍵IKiにアクセスさせるのが最も好都合である。例えば、不可視鍵IKiは、プロセッサ500の製造過程の間にセキュアなメモリ504内に保存されるのが好ましく、さらに、その不可視鍵IKiは、その保存される時期あるいは保存される頃に、その情報の取得の権限が与えられたエンティティに知らされる。
【0107】
プロセッサ500はまた、シリアルナンバーや他の識別指標などの十分に一意であるIDを含むのが好ましい。なお、プロセッサ500のIDは、不可視鍵IKiとは異なり、プロセッサ500のセキュアな特性を使用する際に、関心のある任意のエンティティに把握されるのが好ましい。したがって、IDは可視鍵VKiとみなしうる。なお、iはi番目のプロセッサ500を表す。
【0108】
図11は、プロセッサ500のセキュリティ特性を用いるシステムを示す。そのシステムは、プロセッサ500と、中間エンティティ510と、セキュアエンティティ(あるいはサーバ)512とを含む。そのセキュアエンティティ512は、認証サーバ514と、データベース516とを含むものであり、詳細は後述する。ここで、図11は、本発明のいくつかの態様に係る構成を示す一方、さらにデータまたはプロセスの流れをも示す。したがって、図11を用いて、本発明に係る装置および方法の両方の詳細をここで説明する。
【0109】
中間エンティティ510は、セキュアな方法でデータを伝送し、あるいは、セキュアな方法でプログラムをプロセッサ500に伝送しさらに実行することを所望する任意のエンティティまたはシステムであってもよい。ここで、そのプロセッサ500は、DRAM314を共有する複数の付属処理ユニット間で一つでありうる。そのため、中間エンティティ510からそのプロセッサ500に伝送されたデータは、少なくとも一時的に共有DRAM314内に保存されうる。いくつかの状況下においては、このようなデータの共有により、そのデータが他のプロセッサによる海賊行為(著作権侵害)の危険にさらされる場合がある。なお、本実施の形態によれば、中間エンティティ510は、そのデータをプロセッサ500に伝送すれば、そのプロセッサ500のみによるそのデータへのアクセスおよびそのプロセッサ500のみによるそのデータの使用を可能にできる。
【0110】
とりわけ、中間エンティティ510はプロセッサ500に関連付けられた可視鍵VKiを取得する。中間エンティティ510は、(プロセッサ500上で実行するリモートプログラムなどの)データおよび可視鍵VKiをセキュアサーバ512に伝送する。このような伝送は、インターネットや任意の他のネットワーク、通信リンクまたは人手の介入などの任意の既知の技術を用いて行われる。セキュアサーバ512はその伝送から可視鍵VKiを取得し、認証サーバ514を用いて複数の可視鍵および不可視鍵のペアを含むデータベース516を検索する。あるプロセッサ、例えば、プロセッサ500に対し、可視鍵および不可視鍵を相互に関連付けることで、可視鍵および不可視鍵のペアは、お互いに関連付けられる。中間エンティティ510から取得した可視鍵VKiとデータベース516内に保存されている可視鍵のうちの一つとが一致すれば、認証サーバ514は(本例ではリモートプログラムである)データを、可視鍵VKiとプロセッサ500とに関連付けられた不可視鍵IKiを用いて暗号化する。セキュアサーバ512はその暗号化されたデータを、例えばインターネットを用いて、中間エンティティ510に伝送する。
【0111】
中間エンティティ510は、自身がセキュアサーバ512に提供したデータの暗号化されたバージョンを取得するが、中間エンティティ510はプロセッサ500の不可視鍵IKiに関する情報を何ら有しない。これに関連して、セキュアサーバ512は、自身がプロセッサ500のセキュアメモリ504内に含まれる不可視鍵IKiに関する知識を有する点では、権限が与えられたエンティティである。中間エンティティ510などの任意のエンティティは任意の与えられたプロセッサの可視鍵VKiに関する知識を有することができる。セキュアサーバ512などの権限が与えれらたエンティティのみが不可視鍵IKiおよび/またはその不可視鍵IKiと特定の可視鍵VKiとの関連性についての知識を有することができる。
【0112】
中間エンティティ510はそのとき、その暗号化されたデータをインターネットまたは任意の他の適切なメカニズムなどによりプロセッサ500に伝送できる。プロセッサ500の動作能力に従えば、PU304により、中間エンティティ510からの暗号化されたデータの取得および共有DRAM314内へのそのデータの保存を円滑にできる。PU304がその暗号化されたデータを共有DRAM314内に保存する時または保存する頃に、プロセッサ500はセキュアな動作モードになるのが好ましい。したがって、PU304が、共有DRAM314からプロセッサ500のローカルメモリ350に暗号化されたデータの転送を開始するときに、そのような暗号化されたデータは復号化ユニット502を通過しなければならない。その結果として、復号化ユニット502は、プロセッサ500のセキュアメモリ504に保存されている不可視鍵IKiを用いてその暗号化されたデータを復号化する。中間エンティティ510に源を発するその復号化されたデータが、セキュアな方法でプロセッサ500のローカルメモリ350内に保存される点で有用である。実際に、セキュアなモードでは、PU304も任意の他の外部のエンティティもローカルメモリ350からデータを取得することは不可能である。従って、プロセッサ500は海賊行為(著作権侵害)の危険にさらされることなくそのようなデータを操作できる。
【0113】
図12は、プロセッサ500のセキュリティ特性を用いた他のアプローチを実行する図11のシステムの構成を示す。図11について上述したアプローチと同様に、中間エンティティ510はプロセッサ500に関連した可視鍵VKiを取得する。なお、そのアプローチとは異なり、中間エンティティ510は少なくともデータ(例えば、リモートプログラム)を対称鍵key1を用いて暗号化する。例えば、中間エンティティ510により用いられるその暗号化技術は、既知のAdvanced Encryption Standard(AES)であってもよい。その技術により、一以上の対称鍵を用いて機密データを暗号化および復号化できる。ここで、中間エンティティ510は対称鍵key1を用いてデータおよび可視鍵VKiの両方を暗号化できる。いずれの場合でも、中間エンティティ510は暗号化されたデータ(および可視鍵Vki)をセキュアエンティティ512に伝送するのが好ましい。認証サーバ514は、暗号化されたデータおよび可視鍵VKiを取得でき、さらに対称鍵key2を用いてその暗号化されたデータおよび可視鍵VKiを復号化できる。
【0114】
いったん認証サーバ514がその復号化されたデータおよび可視鍵VKiを取得すれば、そのサーバはデータベース516を検索し可視鍵および不可視鍵のペアを検出する。中間エンティティ510から取得された可視鍵VKiとデータベース516内に保存されている可視鍵の一つとが一致すれば、認証サーバ514は、その可視鍵VKiおよびプロセッサ500とに関連付けられた、不可視鍵IKiを用いてそのデータを暗号化するのが好ましい。認証サーバ514はまた、対称鍵key2を用いて、その暗号化されたデータを暗号化し、二重に暗号化されたデータを取得する。セキュアエンティティ512はその二重に暗号化されたデータをその中間エンティティ510に伝送する。
【0115】
中間エンティティ510は二重に暗号化されたデータを取得し、対称鍵key1を用いてその二重に暗号化されたデータを復号化し、不可視鍵IKiにより暗号化されたデータを取得するのが好ましい。中間エンティティ510はそのとき、その暗号化されたデータをインターネットや他の適切なメカニズムなどにより、プロセッサ500に伝送できる。PU304により、中間エンティティ510からの暗号化されたデータの取得および共有DRAM314内へのそのデータの保存を円滑にできる。PU304がその暗号化されたデータを共有DRAM314内に保存する時または保存する頃に、プロセッサ500はセキュアな動作モードになるのが好ましい。PU304が、共有DRAM314からプロセッサ500のローカルメモリ350に暗号化されたデータを転送を開始するときに、そのような暗号化されたデータは復号化ユニット502を通過しなければならない。その結果として、復号化ユニット502は、プロセッサ500のセキュアメモリ504に保存されている不可視鍵IKiを用いてその暗号化されたデータを復号化する。中間エンティティ510に源を発する(もとのデータは中間エンティティ510により生成された)その復号化されたデータが、セキュアな方法でプロセッサ500のローカルメモリ350内に保存される点で有用である。セキュアなモードでは、PU304も任意の他の外部のエンティティも、プロセッサ500の許可なくローカルメモリ350からデータを取得することは不可能である。従って、プロセッサ500は海賊行為(著作権侵害)の危険にさらされることなくそのようなデータを操作できる。
【0116】
図13および図14は、プロセッサ500のセキュリティ特性を用いたさらなる他のアプローチを採用する図11のシステムの構成を示す。本実施の形態によれば、データは復号化プログラムと(例えば、RSAプロトコルに従う)対称鍵とを含む。中間エンティティ510は、対称鍵key1(中間エンティティ510および信頼性の高いエンティティのみにより知られた秘密の鍵であることが好ましい)を用いて、その復号化プログラムおよび対称鍵key2を暗号化する。ここで、中間エンティティ510はまた、復号化プログラムおよび対称鍵key2に加え、プロセッサ500の可視鍵VKiを暗号化できる。いずれの場合でも、中間エンティティ510は、暗号化された復号化プログラム/対称鍵key2と可視鍵VKiとをセキュアサーバ512に伝送する。認証サーバ514は、対称鍵key2を用いてその暗号化されたデータを復号化することで、復号プログラムおよび可視鍵VKi(可視鍵VKiもまた復号化プログラムとともに暗号化されていると想定する)を取得するのが好ましい。そのkey2は、他のエンティティもまたそのkey2についての詳細を把握されうる点で、公開された鍵であることが好ましい。(なお、認証サーバ514により用いられる公開鍵key2は、復号化プログラムとともに暗号化された公開鍵key2と異なってもよい。)認証サーバ514はそのときデータベース516を検索し、取得した可視鍵VKiに一致する可視鍵とペアである不可視鍵とを取得する。一致した場合、認証サーバ514は、可視鍵VKiとプロセッサ500とに関連付けられた不可視鍵IKiを用いて、復号化プログラムおよび対称鍵key2を暗号化するのが好ましい。認証サーバ514はさらに、対称鍵key2を用いて、その暗号化されたデータを暗号化するのが好ましい(例えば、RSA暗号化技術を利用する)。セキュアサーバ512はそのとき、その二重に暗号化された(例えば、復号化プログラムおよび対称鍵key2の)データを、インターネットなどを用いて、中間エンティティ510に伝送する。
【0117】
中間エンティティ510は好適には、対称鍵(秘密鍵)key1を用いて、二重に暗号化されたデータを復号化し、暗号化されたデータを取得する。このとき、中間エンティティ510は、不可視鍵IKiにより暗号化された、復号化プログラムおよび対称鍵(公開鍵)key2を得る。中間エンティティ510はそのとき、インターネットなどの手段で、その暗号化された(復号化プログラムおよび対称鍵key2の)データをプロセッサ500に伝送する。先の実施の形態と同様に、PU304により、中間エンティティ510からの暗号化されたデータの取得、共有DRAM314内へのそのデータの保存、および、復号化ユニット502を通じての暗号化されたデータの転送を円滑にできる。その結果、復号化プログラムおよび対称鍵key2はセキュアな方法でプロセッサ500のローカルメモリ350内に保存される。
【0118】
このとき、そのプロセッサは、例えば上述の第3のモードである「セキュアモード」に設定される。より具体的には、第3のモードでは、プロセッサ500は、そのプロセッサ500との間での情報の転送を開始できるが、(PU304などの)任意の外部のデバイスはその情報の転送を開始できない。
【0119】
これによりそのプロセッサ500が復号化プログラムおよび対称鍵key2をセキュアな方法で操作できる点で有利である一方、さらにその後の簡易な方法でのセキュアなデータ転送をも可能とする。この点について、図14を参照してより詳細に説明する。
【0120】
中間エンティティ510は対称鍵(公開鍵)key1を用いてさらなるデータを暗号化し、例えばインターネットや他の適切なメカニズムを用いて、それをプロセッサ500に伝送するのが好ましい。なお、そのさらなるデータを暗号化するために中間エンティティ510により用いられる秘密鍵key1と、セキュアサーバ512に伝送するための復号化プログラムを暗号化するために用いられる秘密鍵key1とは同一である必要はない。PU304により、中間エンティティ510からの暗号化されたデータの取得、共有DRAM314内へのそのデータの保存を円滑にできる。なお、本実施の形態では、プロセッサ500は「独立モード」の動作モードに入る必要はない。前述のごとく、その独立モード(第2のモード)とは、プロセッサ500も任意の外部のデバイスもそのプロセッサ500との間での情報の転送を開始することはできないものである。事実、プロセッサ500またはPU304のいずれかは、復号化ユニット502をバイパスした、共有DRAM314からローカルメモリ350への暗号化データの転送を開始できる。なぜなら、そのさらなるデータは対称鍵(秘密鍵)key1を用いて暗号化されており、さらに、PU304も任意の他の外部エンティティもまた、ローカルメモリ350内にセキュアに保存される復号化プログラムや対称鍵(公開鍵)key2を把握せず、かつそれらにアクセスしないためである。プロセッサ500はそのとき、復号化プログラムおよび対称鍵key2を用いて、その暗号化されたさらなるデータを復号化できる。セキュアな動作モードへの依存を必要とせずに、プロセッサ500がセキュアな方法でそのさらなるデータを取得し、さらに同様の方法で次のさらなるデータを取得できる点で有用である。
【0121】
ここで、図15は、インターネットまたは任意の他の適切な通信チャンネルやメカニズムを介してお互いに通信可能な二つのプロセッサ500Aおよびプロセッサ500Bの構成を示す。本実施の形態によれば、プロセッサ500Aおよびプロセッサ500Bのそれぞれは、好適には図13について上述したアプローチを用いて、暗号化/復号化プログラム、および対称鍵を取得する。より具体的には、プロセッサ500Bが暗号化/復号化プログラムおよび対称鍵key1を取得する一方、プロセッサ500Aは暗号化/復号化プログラムおよび対称鍵key2を取得するのが好ましい。暗号化/復号化プログラムおよび対称鍵は、AES暗号化手順を遵守するのが好ましい。
【0122】
プロセッサ500Aおよびプロセッサ500B間のセキュアなデータ転送(ピア・ツー・ピア通信としても知られる)を、ここでより詳細に説明する。とりわけ、プロセッサ500Bは、ローカルメモリ350B内の暗号化/復号化プログラムおよび対称鍵key1を用いて、さらなるデータを暗号化できる。次にプロセッサ500Bは、ローカルメモリ350Bから共有DRAM314Bに、その暗号化されたさらなるデータを転送できる。次にPU304Bは、インターネットを介して、共有DRAM314Bから、プロセッサ500Aに関連付けられたPU304Aに、その暗号化されたさらなるデータを転送できる。次にPU304Aは、プロセッサ500Aに関連付けられた共有DRAM314A内に、その暗号化されたさらなるデータを転送できる。次にプロセッサ500AまたはPU304Aは、共有DRAM314Aからローカルメモリ350Aに、復号化ユニット502Aをバイパスして、その暗号化されたさらなるデータを転送できる。いったん、ローカルメモリ350A内に保存されれば、暗号化されたさらなるデータは、暗号化/復号化プログラムおよび対称鍵key2を用いて、復号化されうる。中間エンティティ510との間でさらなる通信を行う(図13)ことなく、プロセッサ500Bとプロセッサ500Aとの間でそのさらなるデータを転送できる点で有用である。
【0123】
上述の技術と十分に類似した技術を用いて、プロセッサ500Aからプロセッサ500Bに次のさらなるデータをも伝送することが可能である。実際には、プロセッサ500Aは、暗号化/復号化プログラムおよび対称鍵key2を用いてそのさらなるデータを暗号化でき、さらに、その暗号化されたさらなるデータを共有DRAM314Aに転送できる。PU304Aは、インターネットを介して、共有DRAM314Aからプロセッサ500Bに関連付けられたPU304Bに、その暗号化されたさらなるデータを転送できる。PU304Bは、プロセッサ500Bに関連付けられた共有DRAM314Bに、その暗号化されたさらなるデータを転送できる。次にプロセッサ500BまたはPU304Bは、共有DRAM314Bからローカルメモリ350Bに、その暗号化されたさらなるデータを転送でき、そのさらなるデータは、ローカルメモリ350Bにて暗号化/復号化プログラムおよび対称鍵key1を用いて復号化される。同様に、中間エンティティ510またはセキュアサーバ512をさらに用いる(図13)ことなく、プロセッサ500Aからプロセッサ500Bへの以降のさらなるデータのセキュアな転送を実現できる。
【0124】
図16および図17は、複数のプロセッサ500のセキュリティ特性を用いるために実行されるさらなる他のアプローチを含む、図11および/または図12のシステムと十分に類似したシステムの構成を示す。本実施の形態によれば、(配布サーバであってもよい)中間エンティティ510は、復号化(すなわちデコード)プログラムおよび対称鍵key2を、好適には上述のセキュアな経路を介して、セキュアサーバ512に伝送する。中間エンティティ510はまた、セキュアな方法でさらなるデータの伝送に関わることになるプロセッサのそれぞれに関連付けられたそれぞれの可視鍵Vkiを、伝送するのが好ましい。セキュアサーバ512は、デコードプログラムおよび対称鍵key2の暗号化されたバージョンを、中間エンティティ510に伝送する。ここで、各バージョンはそれぞれ、取得された可視鍵VKiにそれぞれ関連付けられた特定の不可視鍵IKiにより暗号化される。次に中間エンティティ510は、デコードプログラムおよび対称鍵key2の暗号化されたバージョンを、それぞれ、プロセッサ500A、500B、・・・、500iに伝送する。それぞれのプロセッサはセキュアな動作モードであることが好ましく、その結果、暗号化されたデコードプログラムおよび対称鍵key2の各バージョンは、各復号化ユニット502A、502B、・・・、502iを必ず通過する。その結果、それぞれのプロセッサ500A、500B、・・・、500iは、自身に関連するローカルメモリ350A、350B、・・・、350i内にデコードプログラムおよび対称鍵key2を取得する。
【0125】
その後、中間エンティティ510は、対称鍵key1を用いて暗号化されたさらなるデータの一種、例えば配布プログラムをプロセッサ500のそれぞれに伝送できる(図17)。次に各プロセッサ500は、それぞれのローカルメモリ350の中に保存されたデコードプログラムおよび対称鍵key2を用いて、その暗号化されたさらなるデータを復号化できる。関与するプロセッサ500のそれぞれに対応して、異なるバージョンのさらなるデータを用意する必要なく、セキュアな方法でそのさらなるデータを伝送できる点で有用である。この点に関連して、そのデコードプログラムを、プロセッサ500により映画、音楽やゲームプログラムなどのさらなるデータの取得を可能にするユーザチケットと考えることができる。そのチケットは、特定のプロセッサ500(またはユーザ)に対してのみ有効であるため、そのユーザのみがその暗号化された配布プログラムを取得し復号化できる。なお、その配布サーバ510は、あるバージョンの配布プログラムを準備するだけで十分であり、たとえその配布プログラムが暗号化されても、権限のあるプロセッサにより復号化されうる。
【0126】
上記の内容から分かるように、信頼性の高いコードの処理および配布などの様々なセキュアなオペレーションを実現するために、本発明に係る様々な実施の形態の態様を単独で用いてもよいし、組み合わせて用いてもよい。実際、信頼性の高いコードの発生を証明でき、さらに信頼性の高いコードが改ざんされているか否かを判定できる。さらに、本発明に係る実施形態を、データコンテンツの認証、データコンテンツのセキュアな配布、システム特権の管理、電子商取引の支払いの処理、ピア・ツー・ピア間の認証の管理、およびクライアントおよびサーバ間の認証の管理に用いることができる。さらに、オペレーティングシステムが起動前に改ざんされていないことを認証し証明することで、所与のプロセッサのセキュアな起動手順の実現に本発明に係る実施形態を用いることができる。本発明の用法を全部列挙することはできない。すなわち、実際に、本発明の用法の数は非常に多いためリストアップが不可能であることは当業者にとって明らかである。
【0127】
ここで、図18は、本発明の様々な態様に従ってプロセッサのコラボレーション(連携)が使用方法のさらなる例を示す。より具体的には、図18は、データバス、ネットワーク、および/または任意の他の通信リンクを介してお互いに通信する、複数のプロセッサ600A、600B、・・・、600Fの構成を示す。プロセッサ600の少なくとも一つは「独立」であり、そのローカルメモリの中のデータを許可なしで取得できない。すなわち、一つ以上のプロセッサ600は上述したセキュアな動作モードである。図18で示した例では、プロセッサ600Cおよび600Fがアンセキュアな動作モードである一方、プロセッサ600A、600B、600Dおよび600Eは、セキュアな動作モードである。許可がなければ、セキュアなプロセッサもアンセキュアなプロセッサも、セキュアなプロセッサのローカルメモリからデータを取得できない。したがって、アンセキュアなプロセッサ600Cは主体的に、プロセッサ600Bのローカルメモリからデータを取得できない。同様に、セキュアなプロセッサ600Eは主体的に、セキュアなプロセッサ600Bのローカルメモリからデータを取得できない。逆に、任意のプロセッサ600は主体的に、アンセキュアなプロセッサのローカルメモリからデータを取得できる。なお、互いの連携などにより許可が得られれば、サーバプロセッサ(例えば、プロセッサ600A)は主体的に、他のプロセッサ(例えば、プロセッサ600B)がそのローカルメモリからデータを取得することが可能である。
【0128】
上述のシステムを、例えば、データに関するセキュリティが重要である複数の商業的企業の管理において用いることができる。例えば、プロセッサ600Aおよびプロセッサ600Bは、独自に開発したコンテンツを含み、および/または他のベンチャー企業に認証機能を提供する管理エンティティであってもよい。したがって、プロセッサ600Dおよび600Eは、コンテンツの認証が可能であり、例えば、後の配布または処理のために、プロセッサ600Aおよび/またはプロセッサ600Bを用いて、そのコンテンツを認証および/または暗号化できる。この点に関連して、プロセッサ600Dおよびプロセッサ600Eは、その管理エンティティのライセンシーであるライセンシーエンティティであると考えることができる。さらに、サードパーティ(thirdparty;提携するもの)のコンテンツはアンセキュアなプロセッサ600Cおよび600F上で利用され、および/または処理されうる。
【0129】
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものである。したがって、請求項により定義された本発明の主旨および範囲から逸脱しないかぎり、上述した実施形態に対して様々な変更を加えることができる。
【符号の説明】
【0130】
100 装置,プロセッサシステム、 102 プロセッサ、 104,350 ローカルメモリ、 106,314 共有メモリ、 108,312 バス、 150 セキュリティ回路、 152 機密データ領域、 154 アクセス可能データ領域、 156 ロジック回路、 304,308 処理ユニット、 350 ローカルメモリ、 500 プロセッサ、 502 復号化ユニット、 510 中間エンティティ、 512 セキュアサーバ、 514 認証サーバ、 516 データベース、 IKi 不可視鍵、 VKi 可視鍵、 key1 第1の鍵、 key2 第2の鍵。

【特許請求の範囲】
【請求項1】
メイン処理ユニットと、
それぞれがローカルメモリおよび復号化ユニットを含むとともに、それぞれが通常の動作モードまたはセキュアな動作モードに入ることが可能な複数の付属処理ユニットと、
共有メモリと、
を備え、
前記複数の付属処理ユニットのうちの一つの所与の付属処理ユニットが前記通常のモードである場合、前記メイン処理ユニットは、前記所与の付属処理ユニットと前記共有メモリとの間で、前記復号化ユニットをバイパスするデータ転送を開始でき、
前記所与の付属処理ユニットが前記セキュアなモードである場合、(i)前記所与の付属処理ユニットから前記共有メモリへの前記メイン処理ユニットによるデータ転送の開始が禁止される、あるいは(ii)前記共有メモリから前記所与の付属処理ユニットへの、前記復号化ユニットをバイパスする、前記メイン処理ユニットによるデータ転送の開始が禁止されることを特徴とする装置。
【請求項2】
前記複数の付属処理ユニットが通常の動作モードであるかセキュアな動作モードであるかにかかわらず、前記複数の付属処理ユニットは前記共有メモリとの間でのデータ転送を開始できることを特徴とする請求項1に記載の装置。
【請求項3】
ハードウエアのリセット状態および起動状態のうち少なくとも一つの状態であるときに、前記複数の付属処理ユニットは前記セキュアな動作モードに入りうることを特徴とする請求項1または2に記載の装置。
【請求項4】
前記データは、ソフトウエアプログラムの少なくとも一部を含みうることを特徴とする請求項1から3のいずれかに記載の装置。
【請求項5】
前記複数の付属処理ユニットのそれぞれは、前記所与の付属処理ユニットの復号化ユニットおよび権限が与えられたエンティティのうち少なくとも一つによってのみアクセス可能な、十分に一意性のある鍵を有するセキュアな格納場所を備えることを特徴とする請求項1から4のいずれかに記載の装置。
【請求項6】
前記複数の付属処理ユニットのそれぞれの前記復号化ユニットは、前記所与の付属処理ユニットが前記セキュアな動作モードである場合に、前記メイン処理ユニットにより開始される前記共有メモリから前記ローカルメモリへのデータ転送を前記鍵を用いて復号化することを特徴とする請求項5に記載の装置。
【請求項7】
前記共有メモリは、前記複数の付属処理ユニットのそれぞれに対して十分に一意性のある鍵のうちの一つを用いて暗号化された、暗号化データを保持できることを特徴とする請求項5または6に記載の装置。
【請求項8】
前記複数の付属処理ユニットのそれぞれは、前記所与の付属処理ユニットと当該装置とのうち少なくとも一つに対して外部にあるエンティティに把握されうる十分に一意性のあるIDに関連付けられることを特徴とする請求項5から7のいずれかに記載の装置。
【請求項9】
前記暗号化されたデータは、当該装置に対して外部にある、前記所与の付属処理ユニットの鍵の使用に権限が与えられたセキュアなエンティティにより暗号化されたものであることを特徴とする請求項7または8に記載の装置。
【請求項10】
前記セキュアなエンティティは、関与する付属処理ユニットのIDと鍵とを有するデータベースを含むものであり、その付属処理ユニットに対するIDと鍵とはお互いに関連付けられていることを特徴とする請求項5から9のいずれかに記載の装置。
【請求項11】
前記付属処理ユニットの鍵の使用の権限が与えられていないアンセキュアなエンティティが、前記鍵に関連付けられたIDを前記セキュアなエンティティに提供した後に、前記セキュアなエンティティは、前記アンセキュアなエンティティから取得したデータを、前記所与の付属処理ユニットの鍵で暗号化することを特徴とする請求項5から10のいずれかに記載の装置。
【請求項12】
前記セキュアなエンティティは、前記アンセキュアなエンティティに前記暗号化されたデータを提供可能であり、
前記アンセキュアなエンティティは、前記暗号化されたデータを当該装置に提供することで前記暗号化されたデータを前記共有メモリ内に保存することが可能であり、
前記メイン処理ユニットは、前記共有メモリから前記所与の付属処理ユニットへの前記暗号化されたデータの転送を開始することにより、前記復号化ユニットへの前記暗号化されたデータの入力を可能にし、
前記所与の付属処理ユニットの前記復号化ユニットは、前記所与の付属処理ユニットの鍵を用いて前記暗号化されたデータを復号化することにより、その復号化されたデータが前記所与の付属処理ユニットのローカルメモリ内に保存されることを可能にすることを特徴とする請求項11に記載の装置。
【請求項13】
前記付属処理ユニットの鍵の使用の権限が与えられていないアンセキュアなエンティティは、第1の対称鍵を用いて前記データを暗号化し、かつ、前記セキュアなエンティティにその暗号化されたデータを提供し、かつ、前記付属処理ユニットに関連付けられたIDを前記セキュアなエンティティに提供するものであり、
前記セキュアなエンティティは、前記アンセキュアなエンティティにより提供されたその暗号化されたデータを第2の対称鍵を用いて復号化し、かつ、前記アンセキュアなエンティティから取得されたIDに関連付けられる前記所与の付属処理ユニットの鍵を用いて、前記データを暗号化することを特徴とする請求項5から10のいずれかに記載の装置。
【請求項14】
前記アンセキュアなエンティティは、前記データと前記所与の付属処理ユニットのIDとを前記第1の対称鍵を用いて暗号化し、かつ、前記セキュアなエンティティにその暗号化されたデータまたはIDを提供することを特徴とする請求項13に記載の装置。
【請求項15】
前記セキュアなエンティティは、前記第2の対称鍵を用いて前記暗号化されたデータを暗号化し、その二重に暗号化されたデータを前記アンセキュアなエンティティに提供することが可能であり、
前記アンセキュアなエンティティは、前記二重に暗号化されたデータを前記第1の対称鍵を用いて復号化することで、前記所与の付属処理ユニットの鍵を用いて生成された前記暗号化されたデータを取得し、さらに、前記暗号化されたデータを当該装置に提供することで、前記共有メモリ内に保存することが可能であり、
前記メイン処理ユニットは、前記共有メモリから前記所与の付属処理ユニットへの前記暗号化されたデータの転送を開始することにより、前記復号化ユニットへの前記暗号化されたデータの入力を可能にし、
前記所与の付属処理ユニットの前記復号化ユニットは、前記所与の付属処理ユニットの鍵を用いて前記暗号化されたデータを復号化することにより、その復号化されたデータが前記所与の付属処理ユニットのローカルメモリ内に保存されることを可能にすることを特徴とする請求項13または14に記載の装置。
【請求項16】
前記データは復号化プログラムであり、
前記付属処理ユニットの鍵の使用の権限が与えられていないアンセキュアなエンティティは、第1の対称鍵を用いて前記復号化プログラムを暗号化し、前記セキュアなエンティティにその暗号化された前記復号化プログラムを提供し、さらに、前記付属処理ユニットに関連付けられたIDを前記セキュアなエンティティに提供するものであり、
前記セキュアなエンティティは、前記アンセキュアなエンティティにより提供されたその暗号化された前記復号化プログラムを第2の対称鍵を用いて復号化し、かつ、前記アンセキュアなエンティティから取得されたIDに関連付けられる前記所与の付属処理ユニットの鍵を用いて、前記復号化プログラムと前記第2の対称鍵とを暗号化することを特徴とする請求項5から10のいずれかに記載の装置。
【請求項17】
前記アンセキュアなエンティティは、復号化プログラムと前記所与の付属処理ユニットのIDとを前記第1の対称鍵を用いて暗号化し、かつ、前記セキュアなエンティティにその暗号化された復号化プログラムまたはIDを提供することを特徴とする請求項16に記載の装置。
【請求項18】
前記アンセキュアなエンティティは前記第1の対称鍵を用いて、前記復号化プログラム、前記所与の付属処理ユニットのID、および前記第2の対称鍵を暗号化し、前記暗号化された復号化プログラム、ID、または第2の対称鍵を前記セキュアなエンティティに提供することを特徴とする請求項16に記載の装置。
【請求項19】
前記セキュアなエンティティは、前記第2の対称鍵を用いて、前記暗号化された復号化プログラムおよび第2の対称鍵を暗号化し、その二重に暗号化された復号化プログラムまたは第2の対称鍵を前記アンセキュアなエンティティに提供することが可能であり、
前記アンセキュアなエンティティは、前記二重に暗号化された復号化プログラムまたは第2の対称鍵を前記第1の対称鍵を用いて復号化することで、前記所与の付属処理ユニットの鍵を用いて生成された前記暗号化された復号化プログラムまたは第2の対称鍵を取得し、さらに、その暗号化された復号化プログラムまたは第2の対称鍵を当該装置に提供することで、前記共有メモリ内に保存することが可能であり、
前記メイン処理ユニットは、前記共有メモリから前記所与の付属処理ユニットへの前記暗号化された復号化プログラムまたは第2の対称鍵の転送を開始することにより、前記復号化ユニットへの前記暗号化された復号化プログラムまたは第2の対称鍵の入力を可能にし、
前記所与の付属処理ユニットの前記復号化ユニットは、前記所与の付属処理ユニットの鍵を用いて前記暗号化された復号化プログラムまたは第2の対称鍵を復号化することにより、その復号化された復号化プログラムおよび第2の対称鍵が前記所与の付属処理ユニットのローカルメモリ内に保存されることを可能にすることを特徴とする請求項16に記載の装置。
【請求項20】
前記アンセキュアなエンティティは、前記第1の対称鍵を用いてデータを暗号化でき、さらに、その暗号化されたデータを当該装置に提供することで、前記暗号化されたデータを前記共有メモリ内に保存することが可能であることを特徴とする請求項19に記載の装置。
【請求項21】
前記所与の付属処理ユニットは、前記共有メモリから前記ローカルメモリ内に転送される前記暗号化されたデータを、前記復号化ユニットをバイパスして取得できることを特徴とする請求項19または20に記載の装置。
【請求項22】
前記暗号化されたデータが前記共有メモリから前記ローカルメモリ内に転送される場合、前記所与の付属処理ユニットは、前記通常のモードまたは前記セキュアのモードのいずれかであることを特徴とする請求項21に記載の装置。
【請求項23】
前記所与の付属処理ユニットは、前記復号化プログラムおよび前記第2の対称鍵を用いて、前記暗号化されたデータを復号化できることを特徴とする請求項19から21のいずれかに記載の装置。
【請求項24】
前記データはソフトウエアプログラムを含みうることを特徴とする請求項23に記載の装置。
【請求項25】
前記メイン処理ユニットは、前記復号化ユニットをバイパスする、前記共有メモリから前記所与の付属処理ユニットのローカルメモリ内への前記暗号化されたデータの転送を開始できることを特徴とする請求項19から21のいずれかに記載の装置。
【請求項26】
メイン処理ユニットと、それぞれがローカルメモリおよび復号化ユニットを含むとともに、それぞれがセキュアな動作モードに入ることが可能な複数の付属処理ユニットと、共有メモリとを設け、
前記複数の付属処理ユニットのうちの一つの所与の付属処理ユニットがセキュアなモードに入ることにより、前記復号化ユニットが、前記所与の付属処理ユニットに対して十分に一意性があり、かつ権限が与えられたエンティティにのみに知られる鍵を用いて、外部から開始される前記所与の付属処理ユニットのローカルメモリへの任意のデータ転送を復号化しなければならない場合に、前記共有メモリから前記所与の付属処理ユニットへの、前記復号化ユニットをハイパスする、前記メイン処理ユニットによるデータ転送の開始を禁止するステップを含むことを特徴とする処理方法。
【請求項27】
前記複数の付属処理ユニットがセキュアな動作モードであるか否かにかかわらず、前記複数の付属処理ユニットが前記共有メモリとの間でのデータ転送を開始することを可能にするステップをさらに含むことを特徴とする請求項26に記載の処理方法。
【請求項28】
ハードウエアのリセット状態および起動状態のうち少なくとも一つの状態であるときに、前記複数の付属処理ユニットを前記セキュアな動作モードに入らしめるステップをさらに含むことを特徴とする請求項26または27に記載の処理方法。
【請求項29】
データと、前記複数の付属処理ユニットのうちの一つの所与の付属処理ユニットに関連付けられたIDとを、中間エンティティからセキュアなエンティティに伝送するステップと、
関与する付属処理ユニットのIDおよび鍵を含むセキュアなエンティティのデータベースを検索し、取得されたIDに対応する前記所与の付属処理ユニットの鍵を取得するステップと、
取得されたIDに対応する、前記所与の付属処理ユニットに関連付けられた鍵を用いて、前記セキュアなエンティティに伝送されたデータを暗号化するステップと、
前記セキュアなエンティティから前記中間エンティティに前記暗号化されたデータを伝送するステップと、
をさらに含むことを特徴とする請求項26から28のいずれかに記載の処理方法。
【請求項30】
前記中間エンティティから前記所与の付属処理ユニットの共有メモリに前記暗号化されたデータを伝送するステップと、
前記所与の付属処理ユニットが前記セキュアなモードに入ることにより、前記暗号化されたデータが前記復号化ユニットにより前記鍵を用いて復号化される場合に、前記共有メモリから前記所与の付属処理ユニットに前記暗号化されたデータの転送を開始するステップと、
前記所与の付属処理ユニットのローカルメモリ内に前記データを保存するステップと、
をさらに含むことを特徴とする請求項29に記載の処理方法。
【請求項31】
中間エンティティにおいて、データと、前記複数の付属処理ユニットのうちの一つの所与の付属処理ユニットに関連付けられたIDとのうち少なくとも一つを、第1の対称鍵を用いて暗号化するステップと、
前記中間エンティティからセキュアなエンティティに、暗号化された前記データと前記IDとを伝送するステップと、
前記セキュアなエンティティにおいて、その暗号化された前記データと前記IDの少なくとも一つを、第2の対称鍵を用いて復号化するステップと、
関与する付属処理ユニットのIDおよび鍵を含むセキュアなエンティティのデータベースを検索し、取得されたIDに対応する前記所与の付属処理ユニットの鍵を取得するステップと、
前記セキュアなエンティティにおいて、前記所与の付属処理ユニットに関連付けられた鍵を用いて前記データを暗号化し、さらに、前記第2の対称鍵を用いてその暗号化されたデータを暗号化するステップと、
前記セキュアなエンティティから前記中間エンティティに、その二重に暗号化されたデータを伝送するステップと、
をさらに含むことを特徴とする請求項26に記載の処理方法。
【請求項32】
前記中間エンティティにおいて、前記第1の対称鍵を用いて、前記二重に暗号化されたデータを復号化し、前記所与の付属処理ユニットに関連付けられた鍵により暗号化されたデータを取得するステップと、
前記中間エンティティから前記所与の付属処理ユニットの共有メモリに、その暗号化されたデータを伝送するステップと、
前記所与の付属処理ユニットが前記セキュアなモードに入ることにより、前記暗号化されたデータが前記復号化ユニットにより前記鍵を用いて復号化される場合に、前記共有メモリから前記所与の付属処理ユニットに前記暗号化されたデータの転送を開始するステップと、
前記所与の付属処理ユニットのローカルメモリ内に前記データを保存するステップと、
をさらに含むことを特徴とする請求項31に記載の処理方法。
【請求項33】
前記データは(i)復号化プログラムと(ii)前記第2の対称鍵とを含むものであり、
当該方法は、
前記中間エンティティにおいて、前記第1の対称鍵を用いてさらなるデータを暗号化するステップと、
前記中間エンティティから前記所与の付属処理ユニットに前記暗号化されたさらなるデータを伝送し、前記共有メモリ内に保存するステップと、
前記所与の付属処理ユニットが前記セキュアなモードに入ることにより前記復号化ユニットがバイパスされる間に、前記共有メモリから前記ローカルメモリに前記暗号化されたさらなるデータの転送を開始するステップと、
をさらに含むことを特徴とする請求項32に記載の処理方法。
【請求項34】
前記所与の付属処理ユニットを使用することにより、復号化プログラムおよび前記第2の対称鍵を用いた、前記暗号化されたさらなるデータの復号化を行うステップをさらに含むことを特徴とする請求項33に記載の処理方法。
【請求項35】
暗号化/復号化プログラムと前記暗号化/復号化プログラムに関連付けられた一対の対称鍵のうちの一方とが前記所与の付属処理ユニットのローカルメモリ内に保存されるよう、前記データは(i)前記暗号化/復号化プログラムと、(ii)前記一対の対称鍵のうちの一つとを含むものであり、
さらなる暗号化/復号化プログラムと、前記さらなる暗号化/復号化プログラムに関連付けられた、前記一対の対称鍵のうちの他方とがさらなる付属処理ユニットのローカルメモリ内に保存されるよう、前記さらなるデータは(i)前記さらなる暗号化/復号化プログラムと、(ii)前記一対の対称鍵のうちの他方とを含むものであり、
前記さらなるデータと前記さらなる付属処理ユニットとを用いて、当該方法の一連のステップを繰り返すことを特徴とする請求項32に記載の処理方法。
【請求項36】
前記暗号化/復号化プログラムと前記所与の付属処理ユニットの前記一対の対称鍵のうちの一方とを用いてさらなるデータを暗号化するステップと、
前記所与の付属処理ユニットから前記さらなる付属処理ユニットに、前記暗号化されたさらなるデータを伝送し、共有メモリ内に保存するステップと、
前記さらなる付属処理ユニットが前記セキュアなモードに入ることにより前記さらなる付属処理ユニットの前記復号化ユニットがバイパスされる間に、前記共有メモリから前記さらなる付属処理ユニットの前記ローカルメモリに前記暗号化されたさらなるデータの転送を開始するステップと、
をさらに含むことを特徴とする請求項35に記載の処理方法。
【請求項37】
前記さらなる付属処理ユニットを使用することにより、前記さらなる暗号化/復号化プログラムおよび前記一対の対称鍵のうちの他方を用いた、前記暗号化されたさらなるデータの復号化を行うステップをさらに含むことを特徴とする請求項36に記載の処理方法。
【請求項38】
前記暗号化/復号化プログラムと前記さらなる付属処理ユニットの前記一対の対称鍵のうちの他方とを用いて、さらなるデータを暗号化するステップと、
前記さらなる付属処理ユニットから前記所与の付属処理ユニットに前記暗号化されたさらなるデータを伝送し、前記共有メモリ内に保存するステップと、
前記所与の付属処理ユニットが前記セキュアなモードに入ることにより前記所与の付属処理ユニットの前記復号化ユニットがバイパスされる間に、前記共有メモリから前記所与の付属処理ユニットの前記ローカルメモリに前記暗号化されたさらなるデータの転送を開始するステップと、
をさらに含むことを特徴とする請求項35に記載の処理方法。
【請求項39】
前記所与の付属処理ユニットを使用することにより、前記暗号化/復号化プログラムおよび前記一対の対称鍵のうちの一方を用いた、前記暗号化されたさらなるデータの復号化を行うステップをさらに含むことを特徴とする請求項38に記載の処理方法。
【請求項40】
前記所与の付属処理ユニットの前記共有メモリは、前記さらなる付属処理ユニットの共有メモリと同一のメモリであることを特徴とする請求項38に記載の処理方法。
【請求項41】
復号化プログラムおよび第2の対称鍵が、前記所与の付属処理ユニットのローカルメモリ内に保存されるよう、前記データは(i)前記復号化プログラムと、(ii)その復号化プログラムに関連付けられた第2の対称鍵とを含むものであり、
さらなる複数の付属処理ユニットを用いて、当該方法の一連のステップを繰り返すことにより、前記復号化プログラムおよび前記第2の対称鍵を前記複数の付属処理ユニットのそれぞれに保存することを特徴とする請求項32に記載の処理方法。
【請求項42】
前記中間エンティティにおいて、前記第1の対称鍵を用いてさらなるデータを暗号化するステップと、
前記中間エンティティから前記複数の付属処理ユニットのそれぞれに、前記暗号化されたさらなるデータを伝送し、前記共有メモリ内に保存するステップと、
前記複数の付属処理ユニットのそれぞれが前記セキュアなモードに入ることにより前記複数の付属処理ユニットのそれぞれの前記復号化ユニットがバイパスされる間に、前記共有メモリから前記複数の付属処理ユニットのそれぞれのローカルメモリに、前記暗号化されたさらなるデータの転送を開始するステップと、
をさらに含むことを特徴とする請求項41に記載の処理方法。
【請求項43】
前記複数の付属処理ユニットのそれぞれを使用することにより、前記復号化プログラムと前記第2の対称鍵とを用いた、前記暗号化されたさらなるデータの復号化を行うステップをさらに含むことを特徴とする請求項42に記載の処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2009−217845(P2009−217845A)
【公開日】平成21年9月24日(2009.9.24)
【国際特許分類】
【出願番号】特願2009−147826(P2009−147826)
【出願日】平成21年6月22日(2009.6.22)
【分割の表示】特願2005−327282(P2005−327282)の分割
【原出願日】平成17年11月11日(2005.11.11)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】