(57)【要約】  外部のコード・イメージをチップ上のプライベート・キーと一致させるための装置、システム、および方法が示され、その方法は、コード・イメージおよびコード・キーを受け取り、コード・イメージおよびコード・キーが非保護ストレージ内に収容される場合は、コード・イメージおよびコード・キーを暗号化する方法を含む。他の実施例も示される。【特許請求の範囲】
【請求項１】
コード・イメージおよびコード・キーを受け取る段階と、
非保護ストレージ内に前記コード・イメージおよび前記コードを収容する前に前記コード・イメージおよび前記コード・キーを暗号化する段階と、
から構成されることを特徴とする方法。
【請求項２】
前記非保護ストレージは、ユーザ・アクセス可能なストレージを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記コード・イメージおよび前記コード・キーが非保護ストレージ内に収容される場合に、前記コード・イメージおよび前記コード・キーを暗号化する段階は、
前記コード・キーを用いて前記コード・イメージを暗号化する段階、および、
第１キーを用いて前記コード・キーを暗号化する段階、
を含むことを特徴とする請求項１記載の方法。
【請求項４】
前記第１キーを用いて前記コード・キーを暗号化する段階は、
プライベート・キーを用いて第２キーを暗号化する段階、
前記第２キーを用いて前記第１キーを暗号化する段階、および、
前記第１キーを用いて前記コード・キーを暗号化する段階、
を含むことを特徴とする請求項３記載の方法。
【請求項５】
保護ストレージ内に前記コード・イメージおよび前記コード・キーを収容する前に、前記暗号化されたコード・イメージおよび前記暗号化されたコード・キーを復号化する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項６】
前記保護ストレージは、ユーザ・アクセス不可能なストレージを含むことを特徴とする請求項５記載の方法。
【請求項７】
前記コード・イメージおよび前記コード・キーが前記保護ストレージ内に収容される場合に、前記コード・イメージおよび前記コード・キーを復号化する段階は、
第１キーを用いて前記コード・キーを復号化する段階、および、
前記コード・キーを用いて前記コード・イメージを復号化する段階、
を含むことを特徴とする請求項５記載の方法。
【請求項８】
前記第１キーを用いて前記コード・キーを復号化する段階は、
プライベート・キーを用いて第２キーを復号化する段階、
前記第２キーを用いて前記第１キーを復号化する段階、および、
前記第１キーを用いて前記コード・キーを復号化する段階、
を含むことを特徴とする請求項７記載の方法。
【請求項９】
前記コード・イメージは、コード・イメージ、ブート・コード・イメージ、キー、またはデータのいずれか１つを含むことを特徴とする請求項１記載の方法。
【請求項１０】
別のコード・イメージおよび別のコード・キーを受け取る段階と、
前記別のコード・イメージおよび前記別のコード・キーが非保護ストレージ内に収容される場合に、前記別のコード・イメージおよび前記別のコード・キーを暗号化する段階と、
をさらに含むことを特徴とする請求項１記載の方法。
【請求項１１】
ユーザ・アクセス可能なストレージと、
ユーザ・アクセス不可能なストレージと、
第１コード・イメージおよび第１コード・キーが前記ユーザ・アクセス可能なストレージ内に収容される場合に、前記第１コード・イメージおよび前記第１コード・キーを暗号化し、かつ、暗号化された第１コード・イメージおよび暗号化された第１コード・キーを提供するための暗号化ロジックと、
前記第１コード・イメージおよび前記第１コード・キーが前記ユーザ・アクセス不可能なストレージ内に収容される場合に、前記暗号化された第１コード・イメージおよび前記暗号化された第１コード・キーを復号化するための復号化ロジックと、
から構成されることを特徴とする装置。
【請求項１２】
プライベート・キーを保持するためのメモリをさらに含み、前記暗号化ロジックは、前記プライベート・キーを用いて前記第１コード・キーを暗号化することが少なくとも可能であることを特徴とする請求項１１記載の装置。
【請求項１３】
プライベート・キーを保持するためのメモリと、
前記プライベート・キーから暗号化キーを導出することができるキー導出ロジックであって、前記暗号化ロジックは、前記暗号化キーを用いて前記第１コード・キーを暗号化することが少なくとも可能である、キー導出ロジックと、
をさらに含むことを特徴とする請求項１１記載の装置。
【請求項１４】
前記ユーザ・アクセス不可能なストレージは、前記暗号化ロジックと同一の半導体基板内に形成されたメモリ、または、システム・バスによって前記暗号化ロジックに結合されたメモリのいずれか１つを含むことを特徴とする請求項１１記載の装置。
【請求項１５】
前記暗号化ロジックは、さらに、第２コード・イメージおよび第２コード・キーが前記ユーザ・アクセス可能なストレージ内に収容される場合に、前記第２コード・イメージおよび前記第２コード・キーを暗号化し、暗号化された第２コード・イメージおよび暗号化された第２コード・キーを提供することが少なくとも可能であり、前記復号化ロジックは、さらに、前記第２コード・イメージおよび前記第２コード・キーが前記ユーザ・アクセス不可能なストレージ内に収容される場合に、前記暗号化された第２コード・イメージおよび前記暗号化された第２コード・キーを復号化することが少なくとも可能であることを特徴とする請求項１１記載の装置。
【請求項１６】
前記ユーザ・アクセス可能なストレージは、固定された不揮発性メモリ装置または取外し可能な不揮発性メモリ装置のいずれか１つを含むことを特徴とする請求項１１記載の装置。
【請求項１７】
前記コード・イメージは、コード・イメージ、ブート・コード・イメージ、キー、またはデータのいずれか１つを含むことを特徴とする請求項１１記載の装置。
【請求項１８】
ユーザ・アクセス可能なストレージと、
ユーザ・アクセス不可能なストレージと、
暗号化ロジックであって、第１コード・イメージおよび第１コード・キーが前記ユーザ・アクセス可能なストレージ内に収容される場合に、前記第１コード・イメージおよび前記第１コード・キーを暗号化し、暗号化された第１コード・イメージおよび暗号化された第１コード・キーを提供することが少なくとも可能である、暗号化ロジックと、
復号化ロジックであって、前記第１コード・イメージおよび前記第１コード・キーが前記ユーザ・アクセス不可能なストレージ内に収容される場合に、前記暗号化された第１コード・イメージおよび前記暗号化された第１コード・キーを復号化することが少なくとも可能である、復号化ロジックと、
前記暗号化ロジックに結合されたワイヤレス受信機回路であって、前記受信機回路は、前記第１コード・イメージおよび前記第１コード・キーを受け取ることが少なくとも可能である、受信機回路と、
から構成されることを特徴とするシステム。
【請求項１９】
プライベート・キーを保持するメモリをさらに含み、
前記暗号化ロジックは、前記プライベート・キーを用いて前記第１コード・キーを暗号化することが少なくとも可能であることを特徴とする請求項１８記載のシステム。
【請求項２０】
プライベート・キーを保持するメモリと、
前記プライベート・キーから暗号化キーを導出することが少なくとも可能であるキー導出ロジックであって、前記暗号化ロジックは、前記暗号化キーを用いて前記第１コード・キーを暗号化することが少なくとも可能である、キー導出ロジックと、
をさらに含むことを特徴とする請求項１８記載のシステム。
【請求項２１】
前記ユーザ・アクセス不可能なストレージは、前記暗号化ロジックと同一の半導体基板内で形成されたメモリ、または、システム・バスによって前記暗号化ロジックに結合されたメモリのいずれか１つを含むことを特徴とする請求項１８記載のシステム。
【請求項２２】
前記暗号化ロジックは、さらに、第２コード・イメージおよび第２コード・キーが前記ユーザ・アクセス可能なストレージ内に収容される場合に、前記第２コード・イメージおよび前記第２コード・キーを暗号化し、暗号化された第２コード・イメージおよび暗号化された第２コード・キーを提供することが少なくとも可能であり、前記復号化ロジックは、さらに、前記第２コード・イメージおよび前記第２コード・キーが前記ユーザ・アクセス不可能なストレージ内に収容される場合に、前記暗号化されたコード・イメージおよび前記暗号化されたコード・キーを復号化することが少なくとも可能であることを特徴とする請求項１８記載のシステム。
【請求項２３】
前記ユーザ・アクセス可能なストレージは、固定された不揮発性メモリ装置、または取外し可能な不揮発性メモリ装置のいずれか１つを含むことを特徴とする請求項１８記載のシステム。
【請求項２４】
前記コード・イメージは、コード・イメージ、ブート・コード・イメージ、キー、またはデータのいずれか１つを含むことを特徴とする請求項１８記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部のコード・イメージをチップ上のプライベート・キーに一致させるための方法および装置に関する。
【背景技術】
【０００２】
典型的なコンピューティング・プラットフォームは、システムを始動させるためにブート・コードを使用する。このようなコードは、悪意のあるエンティティがこのようなシステムにアクセスするために、とりわけ魅力的な手法であることから、ブート・コードまたはそのイメージへの無許可のアクセスを防止するための保護メカニズムおよび／またはスキームが必要とされる。ブート・コードを保護するために現在行われている方法は、ブート装置（例えば、ブート・コードまたはブート・コード・イメージを格納するメモリ装置）への信号層またはブート装置からの信号層の埋め込み、物理的なアクセスを防止するためにブート装置に接着剤のような材料の塗布、装置間のトレース長の最小限化等のような物理的な制約に依存している。典型的には、追加のプロテクションが、ブート・コード自体の中に根ざした信頼できるソフトウェア・チェーンという形で提供される。しかしながら、ブート・コード自体が悪意のブート・コードによってアクセスされるか、あるいは置き換えられる場合には、ブート・コード内に根ざす信頼できるソフトウェア・チェーンが危険に晒される。
【発明の開示】
【０００３】
本明細書の一部に組み込まれ、かつ、本明細書の一部を構成する添付図面は、本発明の原理と矛盾しない１またはそれ以上の実施例を示し、本発明についての記述と相俟って、かかる実施例を説明する。図面は、本発明を図示する特定の実施例に限定するために示されたものではなく、また、必ずしも同じ縮尺で描かれておらず、さらに、全てを網羅したものであると考えるべきではなく、本発明の原理を示す上で強調される場合もある。
【０００４】
以下の記述は、添付図面に関連するものである。様々な図面において、同一の参照番号は、同一または類似の要素を識別するために使用される。以下の記述は、特定の構造、アーキテクチャ、インターフェイス、技術等の特定の詳細事項を示すことにより、請求項に記載された発明の多様な側面についての完全な理解を提供するが、かかる詳細事項は説明目的のために提供されるものであり、本発明を制限するものであると考えるべきではない。さらに、当業者は、本開示に照らして、請求項に記載された発明の多様な側面が、これらの特定の詳細事項以外の他の実施例において実行し得ることを理解するであろう。下記の説明中、一定の箇所では、周知の装置、回路、および方法は、これらを必要以上に詳細に説明することによって本発明の記述が不明確になることを避けるために省略された。
【０００５】
図１は、本発明のいくつかの実施例に従ったシステム例１００を示す。システム１００は、ディスプレイ・コントローラ１０４、暗号(cryptographic)モジュール１０６、ストレージ・メディア１０７、および通信経路１０８に結合されたメディア・プロセッサ１０２を含む。システム１００は、さらに、経路１０８に結合されたメモリ１１０（例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、フラッシュ・メモリのような不揮発性メモリ等）、コントローラ１０４に結合されたディスプレイ１１２、および、経路１０８に結合された入力／出力（Ｉ／Ｏ）コントローラ１１４を含む。さらに、システム１００は、Ｉ／Ｏコントローラ１１４に結合されたワイヤレス送信機回路およびワイヤレス受信機回路１１６、および、回路１１６に結合されたアンテナ１１８（例えば、ダイポール・アンテナ、狭帯域ミアンダ・ライン・アンテナ（ＭＬＡ）、広帯域ＭＬＡ、逆「Ｆ」アンテナ、平面逆「Ｆ」アンテナ、Ｇｏｕｂａｕアンテナ、パッチ・アンテナ等）を含む。
【０００６】
システム１００は、本発明の実施例によれば、暗号(cryptographic)キー、データ、あるいは、ブート・コードまたはブート・コード・イメージのようなソフトウェア命令の暗号処理に適した任意のシステムであるが、それについては以下で詳述する。さらに、システム１００は、様々な物理的機器を想定している。例えば、システム１００は、パーソナル・コンピュータ（ＰＣ）、ネットワーク化されたＰＣ、サーバ・コンピューティング・システム、携帯型コンピューティング・プラットフォーム（例えば携帯情報端末（ＰＤＡ））、ゲーム・システム（携帯型またはそれ以外）、３Ｄ可能な携帯電話送受話器等が実装されてもよい。さらに、システム１００の全てのコンポーネントは、システム−オン−チップ（ＳＯＣ: system-on-a-chip）集積回路（ＩＣ）のような単一の装置内に実装されてもよく、あるいは、システム１００のコンポーネントは、複数のＩＣまたは装置にわたって配置されてもよい。例えば、メディア・プロセッサ１０２、モジュール１０６、ストレージ１０７、経路１０８、メモリ１１０、コントローラ１１４、回路１１６、およびアンテナ１１８は、例えばパーソナル・コンピュータ（ＰＣ）またはセット・トップ・ボックス（ＳＴＢ）のような単一のコンピューティング・プラットフォーム内に存在する複数のＩＣの一部分として実装されてもよく、あるいは、ディスプレイ・コントローラ１０４は、メディア・プロセッサ１０２に結合されたディスプレイ１１２のような個別の装置内に実装されてもよい。明らかに、ここで記述されるようなシステム１００の機能性と一致するような多様な変更が可能である。
【０００７】
メディア・プロセッサ１０２は、オーディオおよび／またはイメージおよび／またはビデオ・データを処理することができ、かつ、ディスプレイ・コントローラ１０４にイメージおよび／またはビデオ・データを供給することができるような、あらゆる制御および／または処理ロジック、ハードウェア、ソフトウェア、および／またはファームウェアを含む特定用途または一般用途のプロセッサ・コアを含む。プロセッサ１０２は、さらに、暗号モジュール１０６を使用して、暗号(cipher)キー、データ、および／またはブート・コードのようなソフトウェア命令を暗号化(encrypt)または復号化(decrypt)し、そして、暗号化または復号化されたキー、データ、および／またはブート・コードのようなソフトウェア命令をメモリ１１０および／またはストレージ１０７に提供するが、それについては以下で詳述する。当業者であれば、プロセッサ１０２は、ストレージ１０７および／またはメモリ１１０へのアクセスを制御するための制御ロジックを含むことができることを理解するであろう。さらに、図１には、別個の装置として暗号モジュール１０６が示されているが、本発明はこの点に制限されず、例えば、暗号モジュール１０６は、メディア・プロセッサ１０２内に実装されてもよい。
【０００８】
プロセッサ１０２は、さらに、外部のコード・イメージとチップ上のプライベート・キーとを一致させることを支援するような、多くの追加タスクのいくつかを実行することができる。これらのタスクには、例えば、システム１００の外部にある装置から、外部のコード・イメージを、例えば、アンテナ１１８、送信機および受信機回路１１６、およびＩ／Ｏコントローラ１１４を経由してダウンロードすることによって獲得することが含まれるが、本発明はこの点に制限されない。当業者であれば、プロセッサ１０２は、モジュール１０６またはコントローラ１０４内のレジスタの初期化および／または形成、インターラプト・サービス等のような他の支援タスクを引き受けることが分かるであろう。さらに、プロセッサ１０２は、２またはそれ以上のプロセッサ・コアを含むが、本発明はこの点に制限されない。図１は、別個の装置としてメディア・プロセッサ１０２およびディスプレイ・コントローラ１０４を示すが、本発明はこの点に制限されず、また、当業者であれば、メディア・プロセッサ１０２およびディスプレイ・コントローラ１０４、ならびにシステム１００に追加可能なコンポーネントは、単一のＩＣ内に実装されてもよいことが分かるであろう。
【０００９】
ディスプレイ・コントローラ１０４は、メディア・プロセッサ１０２によって提供されたグラフィックスまたはイメージ・データを、ディスプレイ１１２を駆動させるために適したフォーマット（すなわち、ディスプレイに特有のデータ）に変換することができるような、任意の処理ロジック、ハードウェア、ソフトウェア、および／またはファームウェアを含む。例えば、プロセッサ１０４は、特定のカラー・フォーマット、例えば圧縮した赤−緑−青（ＲＧＢ）ピクセル・フォーマットで、コントローラ１０４にグラフィックスおよび／またはイメージおよび／またはビデオ・データを提供し、また、コントローラ１０４は、例えば対応する液晶ディスプレイ（ＬＣＤ）データ・レベル等を生成することによって、そのＲＧＢデータを処理するが、本発明はこの点に制限されない。さらに、本発明は、特定のタイプのディスプレイ１１２に制限されない。したがって、ディスプレイ１１２は、例えば、ＬＣＤディスプレイ、または電界発光（ＥＬ）ディスプレイのような任意のタイプのディスプレイでもよい。
【００１０】
バスまたは通信経路１０８は、システム１００の要素間で情報（例えば、暗号化されたコード・イメージ、キー等）を伝達するためのあらゆるメカニズムを含む。例えば、通信経路１０８は、例えばコード・イメージおよびコード・キーをプロセッサ１０２に伝達することができる多目的バスを含むが、本発明はこの点に制限されない。あるいは、経路１０８は、ワイヤレス通信経路を含んでもよい。
【００１１】
図２は、本発明のいくつかの実施例に従って、システム１００の部分に類似するシステム２００を示す。システム２００は、暗号化ロジック（ＥＬ）２０４および復号化ロジック（ＤＬ）２０６を含む暗号モジュール（ＣＭ）２０２、少なくとも１つのプライベート・キー２０９を格納するワンタイム・プログラマブル（ＯＴＰ）メモリ２０８、ＯＴＰメモリ２０８およびＣＭ２０２の両方に結合されたキー導出ロジック（ＫＤＬ）２１０、ＣＭ２０２に結合された非保護ストレージ２１２、ＣＭ２０２に結合された保護ストレージ２１４、および、保護ストレージ２１４およびＣＭ２０２に結合されたプロセッサ・コア２１６を含む。システム２００は、本発明の実施例に従って、キー、データ、あるいは、ブート・コードまたはブート・コード・イメージのようなソフトウェア命令を処理するために適切な任意のシステムであるが、それについては以下で詳述する。
【００１２】
システム１００と同様に、システム２００もまた様々な物理的機器を想定している。システム２００のすべてのコンポーネントは、システム−オン−チップ（ＳＯＣ）集積回路（ＩＣ）のような単一の装置内に実装されてもよく、あるいは、システム２００のコンポーネントは、複数のＩＣあるいは装置にわたって配置されてもよい。さらに、プロセッサ・コア２１６は、本発明の実施例に従って、外部のコード・イメージとチップ上のプライベート・キーとを一致させることを支援するような、任意の制御および／または処理ロジック、ハードウェア、ソフトウェアおよび／またはファームウェアを含む任意の特別目的あるいは汎用目的のプロセッサ・コアを含むが、それについては以下で詳述する。
【００１３】
ＣＭ２０２は、本発明の実施例に従って、外部のコード・イメージとプライベート・キーとを一致することができるような、任意の処理ロジック、ハードウェア、ソフトウェアおよび／またはファームウェアを含むが、それについては以下で詳述する。ＣＭ２０２は、システム２００の外部にある装置から１またはそれ以上のコード・イメージ（例えばＣｏｄｅＡ、ＣｏｄｅＢなど）および関連する暗号化(encryption)キー（例えばＫＡ，ＫＢなど）を受け取る。ＣＭ２０２は、さらに、ＯＴＰメモリ２０８からプライベート・キー２０９を受け取る。加えて、ＣＭ２０２は、１またはそれ以上のキーを導出ロジック２１０から受け取るが、これらのキーは、プライベート・キー２０９から導出されたものである。
【００１４】
その後、ＣＭ２０２は、ＥＬ２０４を使用して各コード・イメージを関連するコード・キーで暗号化し、結果として暗号化されたコード・イメージを非保護ストレージ２１２に格納する。ＣＭ２０２は、さらに、ＥＬ２０４、および、プライベート・キー２０９のような暗号化キー、または、導出ロジック２１０によって提供された導出キーを使用して、各コード・キーを暗号化し、その後、暗号化されたコード・キーを、関連する暗号化されたコード・イメージと共に非保護ストレージ２１２に格納する。ＣＭ２０２は、さらに、ＤＬ２０６を使用して、非保護ストレージ２１２から取り出された暗号化されたコード・キーを復号化し、その復号化されたコード・キーを使用して関連する暗号化されたコード・イメージを復号化し、結果として復号化された、またはクリアなコード・キーおよびコード・イメージを保護ストレージ２１４内に格納する。ＣＭ２０２は、プロセッサ・コア２１６によって送出されたコマンドに応答して、これらの暗号化タスクおよび復号化タスクを引き受ける。ＣＭ２０２の機能は、図１のＣＭ１０６の機能に類似する。
【００１５】
本発明は、ＥＬ２０４およびＤＬ２０６によって実行される特定タイプのコード・キーおよび／または特定タイプの暗号化プロセスに限定されない。したがって、例えば、当業者であれば、コード・イメージに関連し、かつ、システム２００に供給されるコード・キーは、ＥＬ２０４によって使用される暗号化プロセスのタイプに依存し、コード・キーを用いてコード・イメージを暗号化できることを理解するであろう。従って、例えば、コード・キーは、ＲＳＡ（Ｒｉｖｅｓｔ，Ｓｈａｍｉｒ，ａｎｄ  Ａｄｅｌｍａｎ）デジタル署名アルゴリズム（ＤＳＡ）のような周知の公開鍵インフラストラクチャ（ＰＫＩ）技術と一致してもよい。あるいは、コード・キーは、例えば、対称キーあるいはランダム・ユニーク・キーのような他の暗号化スキームと一致するキーであってもよい。
【００１６】
非保護ストレージ２１２は、例えば、ユーザ・アクセス可能な(user-accessible)あらゆる格納手段である。換言すれば、ストレージ２１２のコンテンツは、従来の方法でシステム２００のユーザによってアクセスされ得る。例えば、ストレージ２１２は、固定の不揮発性メモリ装置（例えば、フラッシュ・メモリ、ハードディスク・ドライブなど）、あるいは、取外し可能な不揮発性メモリ装置（例えばフラッシュ・メモリ等を含むメモリ・カード）などである。したがって、例えば、ストレージ２１２は、ＣＭ２０２および／またはプロセッサ・コア２１６を組み込んだ半導体基板以外の半導体基板に形成されたオフチップ・メモリであってもよい。
【００１７】
これとは対照的に、保護ストレージ２１４は、ユーザ・アクセス不可能な(user-inaccessible)あらゆる格納手段である。換言すれば、ストレージ２１４のコンテンツは、従来の方式でシステム２００のユーザによってアクセスされ得ない。例えば、ストレージ２１４は、ＣＭ２０２および／またはプロセッサ・コア２１６と同一の半導体基板内に形成されたオンチップまたはキャッシュ・メモリである。あるいは、他の例では、ストレージ２１４は、個別の半導体基板上に形成され、かつ、高速システム・バスによってプロセッサ・コア２１６に結合された、ダブル・データ・レート（ＤＤＲ）ランダム・アクセス・メモリ（ＲＡＭ）のようなシステム・メモリを含む。さらに、図２は、ＯＴＰ２０８内に保持されたプライベート・キー２０９を示すが、本発明はこの点に制限されることはなく、当業者であれば、ポリシリコン・ヒューズ、リード・オンリ・メモリ（ＲＯＭ）、またはロジック・ゲート等のような他の手段の中にプライベート・キー２０９を安全に保持できることが分かるであろう。
【００１８】
図３は、本発明のいくつかの実施例に従って、外部のコード・イメージとチップ上のプライベート・キーとを一致させるためのプロセス３００を示すフローチャートである。説明を簡素化するために、プロセス３００は、図１のシステム１００および／または図２のシステム２００に関して記述されるが、本発明はこの点に制限されず、また、請求項に記載された発明に従って適切な装置によってサポートされる他のプロセスあるいはスキームも可能である。プロセス３００および関連するプロセスについては、コード・イメージの例を用いて以下で説明されるが、本発明はこの点に制限されることはなく、用語「コード・イメージ」は、実行可能なコードであるか実行可能でないデータであるかを問わず、秘密またはそうでないあらゆる情報を包含するものであると考えられる。したがって、用語「コード・イメージ」は、例えば、一般には、コード・イメージ、ブート・コード・イメージ、１またはそれ以上のキー、あるいはデータであって、秘密またはそうでないものを包含する。
【００１９】
プロセス３００は、コード・イメージを提供することから始まる（段階３０２）。本発明のいくつかの実施例において、段階３０２は、アンテナ１１８を経由してワイヤレス受信機１１６がブート・コード・イメージ（例えばＣｏｄｅＡ）を受信し、さらに、Ｉ／Ｏコントローラ１１４がそのブート・コード・イメージを、メディア・プロセッサ１０２内に設けられたＣＭ２０２のＥＬ２０４に送ることによって実行される。しかしながら、段階３０２は、コード・イメージをブートすること、またはコード・イメージをワイヤレスで獲得することに制限されず、したがって、段階３０２は、システム１００に結合された他の装置（図示せず）を通って、例えばＩ／Ｏコントローラ１１４によって、コード・イメージを提供することを含む。プロセス３００は、続いてコード・キーを提供する（段階３０４）。段階３０４は、段階３０２に関して上述したラインと同じラインに沿って実行される。
【００２０】
プロセス３００は、続いてコード・イメージを暗号化する（段階３０６）。本発明のいくつかの実施例では、ＥＬ２０４は、段階３０４で提供されたコード・キー（例えば、ＫＡ）を使用してコード・イメージを暗号化する。例えば、ＥＬ２０４は、アドバンスト・エンクリプション・スタンダード（ＡＥＳ）アルゴリズムのような周知の暗号化技術を使用して段階３０６を実行する。しかしながら、上述したように、本発明は、段階３０６の実行においてＥＬ２０４によって使用されたいかなる特定の暗号化技術、または、ここに記述されたいかなる暗号化および／または復号化行為にも制限されない。その後、プロセス３００は、非保護ストレージ内に暗号化されたコード・イメージを格納する（段階３０８）。段階３０８を実行する１つの方法は、ＣＭ２０２を用いて、ストレージ２１２内に暗号化されたコード・イメージ（例えば、ｅＣｏｄｅＡ（ＫＡ））を格納する方法である。
【００２１】
プロセス３００は、続いて暗号化キーを提供する（段階３１０）。本発明のいくつかの実施例において、段階３０８は、ＣＭ２０２によってＯＴＰ２０８からプライベート・キー２０９を獲得し、暗号化キーとしてそのキーを使用する。あるいは、ＫＤＬ２１０およびＥＬ２０４がＯＴＰ２０８からプライベート・キー２０９を獲得し、かつ、暗号化キーを導出するためのルート・キーとしてプライベート・キー２０９を使用することにより、段階３１０を実行する。
【００２２】
図４は、プロセス３００における段階３１０のいくつかの実施例に従って、暗号化キーを提供するためのプロセス４００を示すフローチャートである。説明を容易にするために、プロセス４００は、図１のシステム１００および／または図２のシステム２００に関して記述されるが、本発明はこの点に制限されず、また、請求項に記載された発明に従った適切な装置によってサポートされる他のプロセスあるいはスキームも可能である。
【００２３】
プロセス４００は、マスター・キーの提供から始まる（段階４０２）。本発明のいくつかの実施例では、ＫＤＬ２１０は、周知のＰＫＩ技術を使用してマスター・キーを導出し、そのマスター・キーをＣＭ２０２に提供することによって段階４０２を実行する。当業者であれば、本発明は、ＫＤＬ２１０のようなキーを導出するハードウェア・インプリメンテーションに制限されず、さらに、例えば、段階４０２あるいは同様の段階においてマスター・キーのようなキーを導出するために、外部ソフトウェア・アプリケーションを使用してキーを導出することも考慮されていることがわかるであろう。その後、プロセス４００は、続いてプライベート・キーを提供する（段階４０４）。本発明のいくつかの実施例において、段階４０４は、ＣＭ２０２によって、ＯＴＰ２０８からプライベート・キー２０９を獲得することにより実行される。
【００２４】
プロセス４００は、続いてマスター・キーを暗号化し（段階４０６）、さらに、結果として生じた暗号化されたマスター・キーを格納する（段階４０７）。本発明のいくつかの実施例では、段階４０６は、周知の暗号化技術および段階４０４で提供されたプライベート・キーを使用してＥＬ２０４によって実行され、一方、段階４０７は、暗号化されたマスター・キーを非保護ストレージ２１２に提供するＣＭ２０２によって実行される。その後、プロセス４００は、続いてプラットフォーム・キーを提供し（段階４０８）、さらに、マスター・キーを使用してプラットフォーム・キーを暗号化する（段階４１０）。上述のように、段階４０８，４１０は、段階４０４，４０６と同様の方法でそれぞれ実行される。段階４１０で生成された暗号化されたプラットフォーム・キーは、例えば非保護ストレージ２１２内に格納される（段階４１２）。段階４０８で提供されたプラットフォーム・キーは、プロセス３００の段階３１０で提供された暗号化キーのように使用される。
【００２５】
プロセス４００は、マスター・キーおよびプラットフォーム・キーの２つのキーを使用する場合を示すが、本発明は、プロセス４００で使用されるような特定のタイプのキーに制限されず、また、本発明は、プロセス４００のように２つのキーを使用することに制限されない。したがって、例えば、プロセス４００に類似するプロセスにおいて、追加のキーを使用してもよい。
【００２６】
ここで図３に戻り、プロセス３００は、続いて、段階３１０で提供された暗号化キーを用いてコード・キーを暗号化する（段階３１２）。今一度繰り返すが、本発明のいくつかの実施例では、段階３１２は、段階３１０で提供される暗号化キーを用いてコード・キーを暗号化するために、周知の暗号化技術を使用してＥＬ２０４によって実行される。その後、プロセス３００は、非保護ストレージ内に暗号化されたコード・キー（例えば、ｅＫＡ）を収容することで終了する（段階３１４）。段階３１４を実行するための１つの方法は、段階３０６においてコード・キーを用いて暗号化された対応するコード・イメージに関連するストレージ２１２内に、ＣＭ２０２が暗号化されたコード・キーを収容することである。
【００２７】
本発明のいくつかの実施例によれば、プロセス３００は２回以上実行され、その結果、２またはそれ以上の暗号化されたコード・イメージ（例えば、ｅＣｏｄｅＡ（ＫＡ），ｅＣｏｄｅＢ（ＫＢ）など）および関連する暗号化されたコード・キー（例えば、ｅＫＡ，ｅＫＢなど）が非保護ストレージ（例えば、ストレージ２１２）内に収容される。さらに、各コード・キーの暗号化は、各コード・キーに対して特有の異なるプラットフォーム・キーを使用して実行されてもよい。
【００２８】
図５は、本発明のいくつかの実施例に従って、外部のコード・イメージとチップ上のプライベート・キーとを一致させるためのプロセス５００を示すフローチャートである。説明を容易にするために、プロセス５００は、図１のシステム１００および／または図２のシステム２００に関して述べられるが、本発明はこの点に制限されず、請求項に記載された発明に従った適切な装置によってサポートされる他のプロセスまたはスキームも可能である。
【００２９】
プロセス５００は、暗号化されたコード・キーを提供することから始まる（段階５０２）。本発明のいくつかの実施例では、段階５０２は、例えば、プロセッサ・コア２１６からの１またはそれ以上のコマンドに応答して、例えば、ＣＭ２０２が段階３１４においてストレージ２１２内にその暗号化されたコード・キーを収容した非保護ストレージ２１２から、ＣＭ２０２によって暗号化されたコード・キー（例えば、ｅＫＡ）を獲得することによって実行される。その後、プロセス５００は、続いて復号化(decryption)キーを提供する（段階５０４）。本発明のいくつかの実施例では、段階５０４は、ＣＭ２０２によって、ＯＴＰ２０８からプライベート・キー２０９を獲得し、かつ、復号化キーとしてプライベート・キー２０９を使用することにより実行される。あるいは、ＫＤＬ２１０およびＥＬ２０４によって、ＯＴＰ２０８からプライベート・キー２０９を獲得し、かつプライベート・キー２０９を、復号化キーを導出するルート・キーとして使用することにより、段階５０４が実行される。
【００３０】
図６は、プロセス５００における段階５０４のいくつかの実施例に従って、復号化キーを提供するプロセス６００を示すフローチャートである。説明を容易にするために、プロセス６００は図１のシステム１００および／または図２のシステム２００に関して述べられるが、本発明はこの点に制限されず、また、請求項に記載された発明に従った適切な装置にサポートされた他のプロセスあるいはスキームも可能である。
【００３１】
プロセス６００は、暗号化されたマスター・キーを提供することから始まる（段階６０２）。本発明のいくつかの実施例では、ＣＭ２０２は、非保護ストレージ２１２から暗号化されたマスター・キーを獲得することによって段階６０２を実行する。その後、プロセス６００は、続いてプライベート・キーを提供する（段階６０４）。本発明のいくつかの実施例では、段階６０４は、ＣＭ２０２によって、ＯＴＰ２０８からプライベート・キー２０９を獲得することにより実行される。
【００３２】
プロセス６００は、続いて暗号化されたマスター・キーを復号化する（段階６０６）。本発明のいくつかの実施例では、段階６０６は、ＤＬ２０６によって、周知の復号化技術、および段階６０４で提供されるプライベート・キーを使用して実行される。その後、プロセス６００は、続いて、暗号化されたプラットフォーム・キーを提供し（段階６０８）、さらに、段階６０６で生じた復号化されたマスター・キーを使用して、暗号化されたプラットフォーム・キーを復号化する（段階６１０）。上述のように、段階６０８，６１０は、段階６０４，６０６と同様の方法でそれぞれ実行される。その後、段階６１０で生成された復号化されたプラットフォーム・キーは、プロセス５００の段階５０４で提供された復号化キーとして使用される。
【００３３】
図５に戻り、その後プロセス５００は、続いて、段階５０４で提供された復号化キーを使用して暗号化されたコード・キーを復号化する（段階５０６）。本発明のいくつかの実施例によれば、段階５０６は、周知の復号化技術を用いてＤＬ２０６によって行なわれ、暗号化されたコード・キーを段階５０４で提供された復号化キーで復号化する。その後、プロセス５００は、続いて、保護ストレージ内に復号化されたコード・キーを収容する（段階５１０）。段階５１０を実行する１つの方法は、ＣＭ２０２によって、ストレージ２１４内に復号化された、またはクリアなコード・キー（例えば、ＫＡ）を収容する方法である。
【００３４】
その後、プロセス５００は、続いて、暗号化されたコード・イメージを提供する（段階５０８）。本発明のいくつかの実施例では、段階５０８は、ＣＭ２０２が暗号化されたコード・イメージ（例えば、ｅＣｏｄｅＡ（ＫＡ））を非保護ストレージ２１２から獲得することによって実行されるが、その暗号化されたコード・イメージは、段階５０２で獲得された暗号化されたコード・キー（例えば、ｅＫＡ）と関係づけられている。その後、暗号化されたコード・イメージは、段階５０６に起因する関連する復号化されたコード・キーを使用して復号化される（段階５１２）。本発明のいくつかの実施例では、段階５１２は、関連する復号化されたコード・キー（例えばＫＡ）を使用して、暗号化されたコード・イメージ（例えばｅＣｏｄｅＡ（ＫＡＫＡ））を復号化するために周知の復号化技術を使用して、ＤＬ２０６によって実行される。その後、プロセス５００は、保護ストレージ内に復号化されたコード・イメージを収容することで終了する（段階５１４）。段階５１４を実行する１つの方法は、ＣＭ２０２によって、ストレージ２１４内に復号化された、またはクリアなコード・イメージ（例えばＣｏｄｅＡ）を収容する方法である。
【００３５】
本発明のいくつかの実施例によれば、プロセス５００は、２回以上実行され、その結果、２またはそれ以上の復号化されたまたはクリアなコード・イメージ（例えば、ＣｏｄｅＡ，ＣｏｄｅＢなど）および関連する復号化されたコード・キー（例えばＫＡ，ＫＢなど）が保護ストレージ（例えば、ストレージ２１４）内に収容される。
【００３６】
本発明のいくつかの実施例に従って、システム１００／２００および／またはプロセス３００−６００は、特定の宛先（すなわち、その宛先は非保護ストレージ対保護ストレージ）であるハードウェアの暗号化および復号化機能をサポートするが、これらの暗号化および復号化ハードウェア機能によって、外部装置（つまり、コード・イメージを提供する外部装置）のコンテンツをプライベート・キーを含むＩＣチップに一致させることが可能となる。特に、これらの暗号化および復号化ハードウェア機能によって、安全なブート・アプリケーション内またはチップ外に格納する他のプライベート・キー内のブート・コード・イメージを一致させることが可能となる。このように、本発明のいくつかの実施例によれば、プライベート・キーを用いてチップにアクセスするホスト・アプリケーションは、ハードウェア機能にコマンドを送出して既知のコード・キーを暗号化するが、そのコード・キーは、コード・イメージを保護（すなわち、暗号化または署名）し、その暗号化されたコード・イメージと共に非保護ストレージ内にその暗号化されたコード・キーを収容するために用いられる。その後、ホスト・アプリケーションは、第２コマンドをハードウェア機能に送出してその暗号化されたコード・キーを復号化し、コード・イメージにアクセス（すなわち、復号化）するためにその回復されたコード・キーを使用する。このように、暗号化されたコード・キーを生成するために使用されるプライベート・キーを備えた装置またはシステムだけが、コード・キーを回復し、コード・イメージにアクセスすることができる。
【００３７】
加えて、本発明のいくつかの実施例によれば、コード・イメージは外部的に提供されるコード・キーによって保護されるので、任意の数の独立して保護されるコード・イメージが、別個独立したコード・キーを使用して作成される。このように、異なる外部ソースからのアプリケーション・コードは、同様に、プライベート・キーを保持する装置またはシステムに合致する。さらに、プライベート・キーが共有秘密であるとき、その共有秘密の所有者は、実際の装置またはシステム（つまり、システム１００あるいは２００）を必要とすることなく等価の暗号化機能を使用して暗号化コード・キーを作成することができる。したがって、本発明のいくつかの実施例によれば、コード・イメージの更新はフィールド内で適用することができ、また、最初のブート・コード・プログラミングは、プライベート・キーを装置またはシステムの顧客に明かす必要なしに、また、そのイメージをプログラムするに先立って装置またはシステム上で特別なアプリケーションを実行する必要なしに、製造時に行うことができる。
【００３８】
図３−図６において示される段階は、示され順序で実行される必要はなく、また、必ずしも段階のすべてが実行される必要もない。さらに、他の段階に依存しない段階は、他の段階と平行して実行されてもよい。例えば、複数のコード・イメージのそれぞれが唯一のマスターおよび／またはプラットフォーム・キーを有する場合、プロセス３００，４００，５００および／または６００における段階は、平行して実行されてもよい。さらに、いくつかの段階は、他の段階の前に実行されてもよい。例えば、プロセス３００の段階３１０は、段階３０２−３０８に先立って実行されてもよい。さらに、図中の少なくともいくつかの段階は、機械読取り可能な媒体内で実行される命令または命令のグループとして実行されてもよい。
【００３９】
請求項に記載された発明と一致する１またはそれ以上の実例についての上記の記述は、本発明の実施例および説明を提供するものであるが、それは、本発明の範囲を網羅するものではなく、また開示された特定の実施例に制限することを意図するものではない。明らかに、修正およびバリエーションが上記の教示に照らして可能であり、また、それらは、本発明の様々な実施例の実行から取得することができる。例えば、プロセス３００，５００において処理されたコード・イメージは、１セットの暗号化キーのような任意の恣意的な「秘密」データ、またはアルゴリズム・パラメータのような他のデータでもよい。明らかに、請求項に記載された発明と矛盾することなく、本発明と他の多くの実施例によって、外部のコード・イメージとチップ上のプライベート・キーとの一致を可能にするために使用することができる。
【００４０】
本発明の記述において示された装置、要素、段階、データのタイプ、命令等は、明記されない限り、本発明にとって重大かつ不可欠なものではないと解されるべきである。さらに、ここで用いられるように、冠詞「ａ」は、１またはそれ以上の物を含むことを意図している。さらに、この明細書または請求項において、「結合された」または「反応する」または「〜と通信する」という用語または語句が使用される場合は、これらの用語は広義に解釈されるものであることを意味する。例えば、「結合された」という語句は、その語句が使用される文脈に適するように、通信的、電気的、および／または機能的に結合されることを意味する。請求項に記載された発明に関して上述された実施例については、本発明の精神および原理から逸脱することなく、多くのバリエーションおよび修正が可能である。このような修正およびバリエーションの全てが、ここに開示された範囲内に含まれ、かつ、請求項によって保護されることを意図している。
【図面の簡単な説明】
【００４１】
【図１】本発明のいくつかの実施例に従ったシステムを示すブロック図である。
【図２】本発明のいくつかの実施例に従って、図１のシステムの部分に類似するシステムを示すブロック図である。
【図３】本発明のいくつかの実施例に従ったプロセスを示すフローチャートである。
【図４】本発明のいくつかの実施例に従ったプロセスを示すフローチャートである。
【図５】本発明のいくつかの実施例に従ったプロセスを示すフローチャートである。
【図６】本発明のいくつかの実施例に従ったプロセスを示すフローチャートである。
【国際調査報告】
2009525556.tif 000002
2009525556.tif 000003