本明細書の一部に組み込まれ、かつ、本明細書の一部を構成する添付図面は、本発明の原理と矛盾しない1またはそれ以上の実施例を示し、本発明についての記述と相俟って、かかる実施例を説明する。図面は、本発明を図示する特定の実施例に限定するために示されたものではなく、また、必ずしも同じ縮尺で描かれておらず、さらに、全てを網羅したものであると考えるべきではなく、本発明の原理を示す上で強調される場合もある。
以下の記述は、添付図面に関連するものである。様々な図面において、同一の参照番号は、同一または類似の要素を識別するために使用される。以下の記述は、特定の構造、アーキテクチャ、インターフェイス、技術等の特定の詳細事項を示すことにより、請求項に記載された発明の多様な側面についての完全な理解を提供するが、かかる詳細事項は説明目的のために提供されるものであり、本発明を制限するものであると考えるべきではない。さらに、当業者は、本開示に照らして、請求項に記載された発明の多様な側面が、これらの特定の詳細事項以外の他の実施例において実行し得ることを理解するであろう。下記の説明中、一定の箇所では、周知の装置、回路、および方法は、これらを必要以上に詳細に説明することによって本発明の記述が不明確になることを避けるために省略された。
図1は、本発明のいくつかの実施例に従ったシステム例100を示す。システム100は、ディスプレイ・コントローラ104、暗号(cryptographic)モジュール106、ストレージ・メディア107、および通信経路108に結合されたメディア・プロセッサ102を含む。システム100は、さらに、経路108に結合されたメモリ110(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、フラッシュ・メモリのような不揮発性メモリ等)、コントローラ104に結合されたディスプレイ112、および、経路108に結合された入力/出力(I/O)コントローラ114を含む。さらに、システム100は、I/Oコントローラ114に結合されたワイヤレス送信機回路およびワイヤレス受信機回路116、および、回路116に結合されたアンテナ118(例えば、ダイポール・アンテナ、狭帯域ミアンダ・ライン・アンテナ(MLA)、広帯域MLA、逆「F」アンテナ、平面逆「F」アンテナ、Goubauアンテナ、パッチ・アンテナ等)を含む。
システム100は、本発明の実施例によれば、暗号(cryptographic)キー、データ、あるいは、ブート・コードまたはブート・コード・イメージのようなソフトウェア命令の暗号処理に適した任意のシステムであるが、それについては以下で詳述する。さらに、システム100は、様々な物理的機器を想定している。例えば、システム100は、パーソナル・コンピュータ(PC)、ネットワーク化されたPC、サーバ・コンピューティング・システム、携帯型コンピューティング・プラットフォーム(例えば携帯情報端末(PDA))、ゲーム・システム(携帯型またはそれ以外)、3D可能な携帯電話送受話器等が実装されてもよい。さらに、システム100の全てのコンポーネントは、システム−オン−チップ(SOC: system-on-a-chip)集積回路(IC)のような単一の装置内に実装されてもよく、あるいは、システム100のコンポーネントは、複数のICまたは装置にわたって配置されてもよい。例えば、メディア・プロセッサ102、モジュール106、ストレージ107、経路108、メモリ110、コントローラ114、回路116、およびアンテナ118は、例えばパーソナル・コンピュータ(PC)またはセット・トップ・ボックス(STB)のような単一のコンピューティング・プラットフォーム内に存在する複数のICの一部分として実装されてもよく、あるいは、ディスプレイ・コントローラ104は、メディア・プロセッサ102に結合されたディスプレイ112のような個別の装置内に実装されてもよい。明らかに、ここで記述されるようなシステム100の機能性と一致するような多様な変更が可能である。
メディア・プロセッサ102は、オーディオおよび/またはイメージおよび/またはビデオ・データを処理することができ、かつ、ディスプレイ・コントローラ104にイメージおよび/またはビデオ・データを供給することができるような、あらゆる制御および/または処理ロジック、ハードウェア、ソフトウェア、および/またはファームウェアを含む特定用途または一般用途のプロセッサ・コアを含む。プロセッサ102は、さらに、暗号モジュール106を使用して、暗号(cipher)キー、データ、および/またはブート・コードのようなソフトウェア命令を暗号化(encrypt)または復号化(decrypt)し、そして、暗号化または復号化されたキー、データ、および/またはブート・コードのようなソフトウェア命令をメモリ110および/またはストレージ107に提供するが、それについては以下で詳述する。当業者であれば、プロセッサ102は、ストレージ107および/またはメモリ110へのアクセスを制御するための制御ロジックを含むことができることを理解するであろう。さらに、図1には、別個の装置として暗号モジュール106が示されているが、本発明はこの点に制限されず、例えば、暗号モジュール106は、メディア・プロセッサ102内に実装されてもよい。
プロセッサ102は、さらに、外部のコード・イメージとチップ上のプライベート・キーとを一致させることを支援するような、多くの追加タスクのいくつかを実行することができる。これらのタスクには、例えば、システム100の外部にある装置から、外部のコード・イメージを、例えば、アンテナ118、送信機および受信機回路116、およびI/Oコントローラ114を経由してダウンロードすることによって獲得することが含まれるが、本発明はこの点に制限されない。当業者であれば、プロセッサ102は、モジュール106またはコントローラ104内のレジスタの初期化および/または形成、インターラプト・サービス等のような他の支援タスクを引き受けることが分かるであろう。さらに、プロセッサ102は、2またはそれ以上のプロセッサ・コアを含むが、本発明はこの点に制限されない。図1は、別個の装置としてメディア・プロセッサ102およびディスプレイ・コントローラ104を示すが、本発明はこの点に制限されず、また、当業者であれば、メディア・プロセッサ102およびディスプレイ・コントローラ104、ならびにシステム100に追加可能なコンポーネントは、単一のIC内に実装されてもよいことが分かるであろう。
ディスプレイ・コントローラ104は、メディア・プロセッサ102によって提供されたグラフィックスまたはイメージ・データを、ディスプレイ112を駆動させるために適したフォーマット(すなわち、ディスプレイに特有のデータ)に変換することができるような、任意の処理ロジック、ハードウェア、ソフトウェア、および/またはファームウェアを含む。例えば、プロセッサ104は、特定のカラー・フォーマット、例えば圧縮した赤−緑−青(RGB)ピクセル・フォーマットで、コントローラ104にグラフィックスおよび/またはイメージおよび/またはビデオ・データを提供し、また、コントローラ104は、例えば対応する液晶ディスプレイ(LCD)データ・レベル等を生成することによって、そのRGBデータを処理するが、本発明はこの点に制限されない。さらに、本発明は、特定のタイプのディスプレイ112に制限されない。したがって、ディスプレイ112は、例えば、LCDディスプレイ、または電界発光(EL)ディスプレイのような任意のタイプのディスプレイでもよい。
バスまたは通信経路108は、システム100の要素間で情報(例えば、暗号化されたコード・イメージ、キー等)を伝達するためのあらゆるメカニズムを含む。例えば、通信経路108は、例えばコード・イメージおよびコード・キーをプロセッサ102に伝達することができる多目的バスを含むが、本発明はこの点に制限されない。あるいは、経路108は、ワイヤレス通信経路を含んでもよい。
図2は、本発明のいくつかの実施例に従って、システム100の部分に類似するシステム200を示す。システム200は、暗号化ロジック(EL)204および復号化ロジック(DL)206を含む暗号モジュール(CM)202、少なくとも1つのプライベート・キー209を格納するワンタイム・プログラマブル(OTP)メモリ208、OTPメモリ208およびCM202の両方に結合されたキー導出ロジック(KDL)210、CM202に結合された非保護ストレージ212、CM202に結合された保護ストレージ214、および、保護ストレージ214およびCM202に結合されたプロセッサ・コア216を含む。システム200は、本発明の実施例に従って、キー、データ、あるいは、ブート・コードまたはブート・コード・イメージのようなソフトウェア命令を処理するために適切な任意のシステムであるが、それについては以下で詳述する。
システム100と同様に、システム200もまた様々な物理的機器を想定している。システム200のすべてのコンポーネントは、システム−オン−チップ(SOC)集積回路(IC)のような単一の装置内に実装されてもよく、あるいは、システム200のコンポーネントは、複数のICあるいは装置にわたって配置されてもよい。さらに、プロセッサ・コア216は、本発明の実施例に従って、外部のコード・イメージとチップ上のプライベート・キーとを一致させることを支援するような、任意の制御および/または処理ロジック、ハードウェア、ソフトウェアおよび/またはファームウェアを含む任意の特別目的あるいは汎用目的のプロセッサ・コアを含むが、それについては以下で詳述する。
CM202は、本発明の実施例に従って、外部のコード・イメージとプライベート・キーとを一致することができるような、任意の処理ロジック、ハードウェア、ソフトウェアおよび/またはファームウェアを含むが、それについては以下で詳述する。CM202は、システム200の外部にある装置から1またはそれ以上のコード・イメージ(例えばCodeA、CodeBなど)および関連する暗号化(encryption)キー(例えばKA,KBなど)を受け取る。CM202は、さらに、OTPメモリ208からプライベート・キー209を受け取る。加えて、CM202は、1またはそれ以上のキーを導出ロジック210から受け取るが、これらのキーは、プライベート・キー209から導出されたものである。
その後、CM202は、EL204を使用して各コード・イメージを関連するコード・キーで暗号化し、結果として暗号化されたコード・イメージを非保護ストレージ212に格納する。CM202は、さらに、EL204、および、プライベート・キー209のような暗号化キー、または、導出ロジック210によって提供された導出キーを使用して、各コード・キーを暗号化し、その後、暗号化されたコード・キーを、関連する暗号化されたコード・イメージと共に非保護ストレージ212に格納する。CM202は、さらに、DL206を使用して、非保護ストレージ212から取り出された暗号化されたコード・キーを復号化し、その復号化されたコード・キーを使用して関連する暗号化されたコード・イメージを復号化し、結果として復号化された、またはクリアなコード・キーおよびコード・イメージを保護ストレージ214内に格納する。CM202は、プロセッサ・コア216によって送出されたコマンドに応答して、これらの暗号化タスクおよび復号化タスクを引き受ける。CM202の機能は、図1のCM106の機能に類似する。
本発明は、EL204およびDL206によって実行される特定タイプのコード・キーおよび/または特定タイプの暗号化プロセスに限定されない。したがって、例えば、当業者であれば、コード・イメージに関連し、かつ、システム200に供給されるコード・キーは、EL204によって使用される暗号化プロセスのタイプに依存し、コード・キーを用いてコード・イメージを暗号化できることを理解するであろう。従って、例えば、コード・キーは、RSA(Rivest,Shamir,and Adelman)デジタル署名アルゴリズム(DSA)のような周知の公開鍵インフラストラクチャ(PKI)技術と一致してもよい。あるいは、コード・キーは、例えば、対称キーあるいはランダム・ユニーク・キーのような他の暗号化スキームと一致するキーであってもよい。
非保護ストレージ212は、例えば、ユーザ・アクセス可能な(user-accessible)あらゆる格納手段である。換言すれば、ストレージ212のコンテンツは、従来の方法でシステム200のユーザによってアクセスされ得る。例えば、ストレージ212は、固定の不揮発性メモリ装置(例えば、フラッシュ・メモリ、ハードディスク・ドライブなど)、あるいは、取外し可能な不揮発性メモリ装置(例えばフラッシュ・メモリ等を含むメモリ・カード)などである。したがって、例えば、ストレージ212は、CM202および/またはプロセッサ・コア216を組み込んだ半導体基板以外の半導体基板に形成されたオフチップ・メモリであってもよい。
これとは対照的に、保護ストレージ214は、ユーザ・アクセス不可能な(user-inaccessible)あらゆる格納手段である。換言すれば、ストレージ214のコンテンツは、従来の方式でシステム200のユーザによってアクセスされ得ない。例えば、ストレージ214は、CM202および/またはプロセッサ・コア216と同一の半導体基板内に形成されたオンチップまたはキャッシュ・メモリである。あるいは、他の例では、ストレージ214は、個別の半導体基板上に形成され、かつ、高速システム・バスによってプロセッサ・コア216に結合された、ダブル・データ・レート(DDR)ランダム・アクセス・メモリ(RAM)のようなシステム・メモリを含む。さらに、図2は、OTP208内に保持されたプライベート・キー209を示すが、本発明はこの点に制限されることはなく、当業者であれば、ポリシリコン・ヒューズ、リード・オンリ・メモリ(ROM)、またはロジック・ゲート等のような他の手段の中にプライベート・キー209を安全に保持できることが分かるであろう。
図3は、本発明のいくつかの実施例に従って、外部のコード・イメージとチップ上のプライベート・キーとを一致させるためのプロセス300を示すフローチャートである。説明を簡素化するために、プロセス300は、図1のシステム100および/または図2のシステム200に関して記述されるが、本発明はこの点に制限されず、また、請求項に記載された発明に従って適切な装置によってサポートされる他のプロセスあるいはスキームも可能である。プロセス300および関連するプロセスについては、コード・イメージの例を用いて以下で説明されるが、本発明はこの点に制限されることはなく、用語「コード・イメージ」は、実行可能なコードであるか実行可能でないデータであるかを問わず、秘密またはそうでないあらゆる情報を包含するものであると考えられる。したがって、用語「コード・イメージ」は、例えば、一般には、コード・イメージ、ブート・コード・イメージ、1またはそれ以上のキー、あるいはデータであって、秘密またはそうでないものを包含する。
プロセス300は、コード・イメージを提供することから始まる(段階302)。本発明のいくつかの実施例において、段階302は、アンテナ118を経由してワイヤレス受信機116がブート・コード・イメージ(例えばCodeA)を受信し、さらに、I/Oコントローラ114がそのブート・コード・イメージを、メディア・プロセッサ102内に設けられたCM202のEL204に送ることによって実行される。しかしながら、段階302は、コード・イメージをブートすること、またはコード・イメージをワイヤレスで獲得することに制限されず、したがって、段階302は、システム100に結合された他の装置(図示せず)を通って、例えばI/Oコントローラ114によって、コード・イメージを提供することを含む。プロセス300は、続いてコード・キーを提供する(段階304)。段階304は、段階302に関して上述したラインと同じラインに沿って実行される。
プロセス300は、続いてコード・イメージを暗号化する(段階306)。本発明のいくつかの実施例では、EL204は、段階304で提供されたコード・キー(例えば、KA)を使用してコード・イメージを暗号化する。例えば、EL204は、アドバンスト・エンクリプション・スタンダード(AES)アルゴリズムのような周知の暗号化技術を使用して段階306を実行する。しかしながら、上述したように、本発明は、段階306の実行においてEL204によって使用されたいかなる特定の暗号化技術、または、ここに記述されたいかなる暗号化および/または復号化行為にも制限されない。その後、プロセス300は、非保護ストレージ内に暗号化されたコード・イメージを格納する(段階308)。段階308を実行する1つの方法は、CM202を用いて、ストレージ212内に暗号化されたコード・イメージ(例えば、eCodeA(KA))を格納する方法である。
プロセス300は、続いて暗号化キーを提供する(段階310)。本発明のいくつかの実施例において、段階308は、CM202によってOTP208からプライベート・キー209を獲得し、暗号化キーとしてそのキーを使用する。あるいは、KDL210およびEL204がOTP208からプライベート・キー209を獲得し、かつ、暗号化キーを導出するためのルート・キーとしてプライベート・キー209を使用することにより、段階310を実行する。
図4は、プロセス300における段階310のいくつかの実施例に従って、暗号化キーを提供するためのプロセス400を示すフローチャートである。説明を容易にするために、プロセス400は、図1のシステム100および/または図2のシステム200に関して記述されるが、本発明はこの点に制限されず、また、請求項に記載された発明に従った適切な装置によってサポートされる他のプロセスあるいはスキームも可能である。
プロセス400は、マスター・キーの提供から始まる(段階402)。本発明のいくつかの実施例では、KDL210は、周知のPKI技術を使用してマスター・キーを導出し、そのマスター・キーをCM202に提供することによって段階402を実行する。当業者であれば、本発明は、KDL210のようなキーを導出するハードウェア・インプリメンテーションに制限されず、さらに、例えば、段階402あるいは同様の段階においてマスター・キーのようなキーを導出するために、外部ソフトウェア・アプリケーションを使用してキーを導出することも考慮されていることがわかるであろう。その後、プロセス400は、続いてプライベート・キーを提供する(段階404)。本発明のいくつかの実施例において、段階404は、CM202によって、OTP208からプライベート・キー209を獲得することにより実行される。
プロセス400は、続いてマスター・キーを暗号化し(段階406)、さらに、結果として生じた暗号化されたマスター・キーを格納する(段階407)。本発明のいくつかの実施例では、段階406は、周知の暗号化技術および段階404で提供されたプライベート・キーを使用してEL204によって実行され、一方、段階407は、暗号化されたマスター・キーを非保護ストレージ212に提供するCM202によって実行される。その後、プロセス400は、続いてプラットフォーム・キーを提供し(段階408)、さらに、マスター・キーを使用してプラットフォーム・キーを暗号化する(段階410)。上述のように、段階408,410は、段階404,406と同様の方法でそれぞれ実行される。段階410で生成された暗号化されたプラットフォーム・キーは、例えば非保護ストレージ212内に格納される(段階412)。段階408で提供されたプラットフォーム・キーは、プロセス300の段階310で提供された暗号化キーのように使用される。
プロセス400は、マスター・キーおよびプラットフォーム・キーの2つのキーを使用する場合を示すが、本発明は、プロセス400で使用されるような特定のタイプのキーに制限されず、また、本発明は、プロセス400のように2つのキーを使用することに制限されない。したがって、例えば、プロセス400に類似するプロセスにおいて、追加のキーを使用してもよい。
ここで図3に戻り、プロセス300は、続いて、段階310で提供された暗号化キーを用いてコード・キーを暗号化する(段階312)。今一度繰り返すが、本発明のいくつかの実施例では、段階312は、段階310で提供される暗号化キーを用いてコード・キーを暗号化するために、周知の暗号化技術を使用してEL204によって実行される。その後、プロセス300は、非保護ストレージ内に暗号化されたコード・キー(例えば、eKA)を収容することで終了する(段階314)。段階314を実行するための1つの方法は、段階306においてコード・キーを用いて暗号化された対応するコード・イメージに関連するストレージ212内に、CM202が暗号化されたコード・キーを収容することである。
本発明のいくつかの実施例によれば、プロセス300は2回以上実行され、その結果、2またはそれ以上の暗号化されたコード・イメージ(例えば、eCodeA(KA),eCodeB(KB)など)および関連する暗号化されたコード・キー(例えば、eKA,eKBなど)が非保護ストレージ(例えば、ストレージ212)内に収容される。さらに、各コード・キーの暗号化は、各コード・キーに対して特有の異なるプラットフォーム・キーを使用して実行されてもよい。
図5は、本発明のいくつかの実施例に従って、外部のコード・イメージとチップ上のプライベート・キーとを一致させるためのプロセス500を示すフローチャートである。説明を容易にするために、プロセス500は、図1のシステム100および/または図2のシステム200に関して述べられるが、本発明はこの点に制限されず、請求項に記載された発明に従った適切な装置によってサポートされる他のプロセスまたはスキームも可能である。
プロセス500は、暗号化されたコード・キーを提供することから始まる(段階502)。本発明のいくつかの実施例では、段階502は、例えば、プロセッサ・コア216からの1またはそれ以上のコマンドに応答して、例えば、CM202が段階314においてストレージ212内にその暗号化されたコード・キーを収容した非保護ストレージ212から、CM202によって暗号化されたコード・キー(例えば、eKA)を獲得することによって実行される。その後、プロセス500は、続いて復号化(decryption)キーを提供する(段階504)。本発明のいくつかの実施例では、段階504は、CM202によって、OTP208からプライベート・キー209を獲得し、かつ、復号化キーとしてプライベート・キー209を使用することにより実行される。あるいは、KDL210およびEL204によって、OTP208からプライベート・キー209を獲得し、かつプライベート・キー209を、復号化キーを導出するルート・キーとして使用することにより、段階504が実行される。
図6は、プロセス500における段階504のいくつかの実施例に従って、復号化キーを提供するプロセス600を示すフローチャートである。説明を容易にするために、プロセス600は図1のシステム100および/または図2のシステム200に関して述べられるが、本発明はこの点に制限されず、また、請求項に記載された発明に従った適切な装置にサポートされた他のプロセスあるいはスキームも可能である。
プロセス600は、暗号化されたマスター・キーを提供することから始まる(段階602)。本発明のいくつかの実施例では、CM202は、非保護ストレージ212から暗号化されたマスター・キーを獲得することによって段階602を実行する。その後、プロセス600は、続いてプライベート・キーを提供する(段階604)。本発明のいくつかの実施例では、段階604は、CM202によって、OTP208からプライベート・キー209を獲得することにより実行される。
プロセス600は、続いて暗号化されたマスター・キーを復号化する(段階606)。本発明のいくつかの実施例では、段階606は、DL206によって、周知の復号化技術、および段階604で提供されるプライベート・キーを使用して実行される。その後、プロセス600は、続いて、暗号化されたプラットフォーム・キーを提供し(段階608)、さらに、段階606で生じた復号化されたマスター・キーを使用して、暗号化されたプラットフォーム・キーを復号化する(段階610)。上述のように、段階608,610は、段階604,606と同様の方法でそれぞれ実行される。その後、段階610で生成された復号化されたプラットフォーム・キーは、プロセス500の段階504で提供された復号化キーとして使用される。
図5に戻り、その後プロセス500は、続いて、段階504で提供された復号化キーを使用して暗号化されたコード・キーを復号化する(段階506)。本発明のいくつかの実施例によれば、段階506は、周知の復号化技術を用いてDL206によって行なわれ、暗号化されたコード・キーを段階504で提供された復号化キーで復号化する。その後、プロセス500は、続いて、保護ストレージ内に復号化されたコード・キーを収容する(段階510)。段階510を実行する1つの方法は、CM202によって、ストレージ214内に復号化された、またはクリアなコード・キー(例えば、KA)を収容する方法である。
その後、プロセス500は、続いて、暗号化されたコード・イメージを提供する(段階508)。本発明のいくつかの実施例では、段階508は、CM202が暗号化されたコード・イメージ(例えば、eCodeA(KA))を非保護ストレージ212から獲得することによって実行されるが、その暗号化されたコード・イメージは、段階502で獲得された暗号化されたコード・キー(例えば、eKA)と関係づけられている。その後、暗号化されたコード・イメージは、段階506に起因する関連する復号化されたコード・キーを使用して復号化される(段階512)。本発明のいくつかの実施例では、段階512は、関連する復号化されたコード・キー(例えばKA)を使用して、暗号化されたコード・イメージ(例えばeCodeA(KAKA))を復号化するために周知の復号化技術を使用して、DL206によって実行される。その後、プロセス500は、保護ストレージ内に復号化されたコード・イメージを収容することで終了する(段階514)。段階514を実行する1つの方法は、CM202によって、ストレージ214内に復号化された、またはクリアなコード・イメージ(例えばCodeA)を収容する方法である。
本発明のいくつかの実施例によれば、プロセス500は、2回以上実行され、その結果、2またはそれ以上の復号化されたまたはクリアなコード・イメージ(例えば、CodeA,CodeBなど)および関連する復号化されたコード・キー(例えばKA,KBなど)が保護ストレージ(例えば、ストレージ214)内に収容される。
本発明のいくつかの実施例に従って、システム100/200および/またはプロセス300−600は、特定の宛先(すなわち、その宛先は非保護ストレージ対保護ストレージ)であるハードウェアの暗号化および復号化機能をサポートするが、これらの暗号化および復号化ハードウェア機能によって、外部装置(つまり、コード・イメージを提供する外部装置)のコンテンツをプライベート・キーを含むICチップに一致させることが可能となる。特に、これらの暗号化および復号化ハードウェア機能によって、安全なブート・アプリケーション内またはチップ外に格納する他のプライベート・キー内のブート・コード・イメージを一致させることが可能となる。このように、本発明のいくつかの実施例によれば、プライベート・キーを用いてチップにアクセスするホスト・アプリケーションは、ハードウェア機能にコマンドを送出して既知のコード・キーを暗号化するが、そのコード・キーは、コード・イメージを保護(すなわち、暗号化または署名)し、その暗号化されたコード・イメージと共に非保護ストレージ内にその暗号化されたコード・キーを収容するために用いられる。その後、ホスト・アプリケーションは、第2コマンドをハードウェア機能に送出してその暗号化されたコード・キーを復号化し、コード・イメージにアクセス(すなわち、復号化)するためにその回復されたコード・キーを使用する。このように、暗号化されたコード・キーを生成するために使用されるプライベート・キーを備えた装置またはシステムだけが、コード・キーを回復し、コード・イメージにアクセスすることができる。
加えて、本発明のいくつかの実施例によれば、コード・イメージは外部的に提供されるコード・キーによって保護されるので、任意の数の独立して保護されるコード・イメージが、別個独立したコード・キーを使用して作成される。このように、異なる外部ソースからのアプリケーション・コードは、同様に、プライベート・キーを保持する装置またはシステムに合致する。さらに、プライベート・キーが共有秘密であるとき、その共有秘密の所有者は、実際の装置またはシステム(つまり、システム100あるいは200)を必要とすることなく等価の暗号化機能を使用して暗号化コード・キーを作成することができる。したがって、本発明のいくつかの実施例によれば、コード・イメージの更新はフィールド内で適用することができ、また、最初のブート・コード・プログラミングは、プライベート・キーを装置またはシステムの顧客に明かす必要なしに、また、そのイメージをプログラムするに先立って装置またはシステム上で特別なアプリケーションを実行する必要なしに、製造時に行うことができる。
図3−図6において示される段階は、示され順序で実行される必要はなく、また、必ずしも段階のすべてが実行される必要もない。さらに、他の段階に依存しない段階は、他の段階と平行して実行されてもよい。例えば、複数のコード・イメージのそれぞれが唯一のマスターおよび/またはプラットフォーム・キーを有する場合、プロセス300,400,500および/または600における段階は、平行して実行されてもよい。さらに、いくつかの段階は、他の段階の前に実行されてもよい。例えば、プロセス300の段階310は、段階302−308に先立って実行されてもよい。さらに、図中の少なくともいくつかの段階は、機械読取り可能な媒体内で実行される命令または命令のグループとして実行されてもよい。
請求項に記載された発明と一致する1またはそれ以上の実例についての上記の記述は、本発明の実施例および説明を提供するものであるが、それは、本発明の範囲を網羅するものではなく、また開示された特定の実施例に制限することを意図するものではない。明らかに、修正およびバリエーションが上記の教示に照らして可能であり、また、それらは、本発明の様々な実施例の実行から取得することができる。例えば、プロセス300,500において処理されたコード・イメージは、1セットの暗号化キーのような任意の恣意的な「秘密」データ、またはアルゴリズム・パラメータのような他のデータでもよい。明らかに、請求項に記載された発明と矛盾することなく、本発明と他の多くの実施例によって、外部のコード・イメージとチップ上のプライベート・キーとの一致を可能にするために使用することができる。
本発明の記述において示された装置、要素、段階、データのタイプ、命令等は、明記されない限り、本発明にとって重大かつ不可欠なものではないと解されるべきである。さらに、ここで用いられるように、冠詞「a」は、1またはそれ以上の物を含むことを意図している。さらに、この明細書または請求項において、「結合された」または「反応する」または「〜と通信する」という用語または語句が使用される場合は、これらの用語は広義に解釈されるものであることを意味する。例えば、「結合された」という語句は、その語句が使用される文脈に適するように、通信的、電気的、および/または機能的に結合されることを意味する。請求項に記載された発明に関して上述された実施例については、本発明の精神および原理から逸脱することなく、多くのバリエーションおよび修正が可能である。このような修正およびバリエーションの全てが、ここに開示された範囲内に含まれ、かつ、請求項によって保護されることを意図している。