保護されたソフトウエアイメージを有する集積回路及びそのための方法
【解決手段】
ここに開示される種々の実施形態は、集積回路(100)が外部デバイス(127)からコードイメージを受け取り、暗号法論理(113)をハードウエア固有鍵と共に用いてコードイメージを暗号化してハードウエア固有コードイメージ(119)を生成してよい方法を含み、そこではハードウエア固有鍵は外部デバイス(127)からはアクセスすることができない。集積回路(100)は次いでハードウエア固有コードイメージを記憶することとなり、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。方法はまた、ハードウエア固有鍵を用いる暗号法論理(113)によるハードウエア固有コードイメージの復号化を要求する命令を暗号法論理(113)に送ることと、復号化の後に起動ソフトウエア(103)によりハードウエア固有コードイメージを実行することとを含む。
ここに開示される種々の実施形態は、集積回路(100)が外部デバイス(127)からコードイメージを受け取り、暗号法論理(113)をハードウエア固有鍵と共に用いてコードイメージを暗号化してハードウエア固有コードイメージ(119)を生成してよい方法を含み、そこではハードウエア固有鍵は外部デバイス(127)からはアクセスすることができない。集積回路(100)は次いでハードウエア固有コードイメージを記憶することとなり、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。方法はまた、ハードウエア固有鍵を用いる暗号法論理(113)によるハードウエア固有コードイメージの復号化を要求する命令を暗号法論理(113)に送ることと、復号化の後に起動ソフトウエア(103)によりハードウエア固有コードイメージを実行することとを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は種々の集積回路プロセッサによる実行のためにソフトウエアイメージを保護することに関する。
【背景技術】
【0002】
ワイヤレス通信デバイス等の電子デバイスは、技術の進歩、消費者の要望、及び製品差別化に対する要求等のマーケティング推進力に基き、高水準な性能へ絶えず駆り立てられている。今日利用可能な処理能力は、高水準な性能とプログラム可能であることを通しての柔軟性とを提供するシステムオンチップ(SOC)集積回路のような高性能なプロセッサを用いることによって、それらの要求の多くを満足させることを可能にしている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
その結果、性能、新たな特徴や機能等を提供するためにソフトウエア及びソフトウエア開発が欠かせないものとなってきた。しかし、ソフトウエアの普及に伴い、ソフトウエアを不正使用あるいは悪意の目的のための変更から保護する必要性もまた生じている。例えば、ソフトウエアは集積回路レベルでさえもチップの特定の特徴及び機能に向けられた攻撃によって不正使用されあるいは変更される可能性がある。同時に、デバッグや更新のためあるいは種々の開発要求のためにソフトウエアへのアクセスを得る必要性もあろう。また、主要なコピーが破損して使用不可能になった場合にソフトウエアのバックアップを提供可能であることが望ましい。しかし、ソフトウエアのコピーが容易にアクセス可能であることは、コードの不正使用等の原因になり得るので、不適切であろう。
【0004】
例えば、与えられた電子デバイスに特有の、より具体的にはその電子デバイス内の集積回路に特有の種々のコードイメージを有することで、コードイメージがいかなる他のデバイスによっても使用可能ではなくあるいは変更可能ではなくすることが望ましいであろう。
【課題を解決するための手段】
【0005】
ここに開示される種々の実施形態は、集積回路が外部デバイスからコードイメージを受け取り、暗号法論理(cryptographic logic)をハードウエア固有鍵と共に用いてコードイメージを暗号化してハードウエア固有コードイメージを生成してよい方法を含み、そこではハードウエア固有鍵は外部デバイスからはアクセスすることができない。集積回路は次いでハードウエア固有コードイメージを記憶することとなり、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。
【0006】
方法はまた、ハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化を要求する命令を送ることと、復号化の後に起動ソフトウエアによりハードウエア固有コードイメージを実行することとを含む。
【0007】
ここに開示される実施形態はまた、メモリ、及びメモリに接続される暗号法論理を含む集積回路を提供する。暗号法論理はハードウエア固有鍵を用いてコードイメージを暗号化しハードウエア固有コードイメージを生成するように動作し、ハードウエア固有鍵は集積回路のいかなるポートを介してもアクセスすることができない。集積回路はハードウエア固有コードイメージをメモリ内に記憶する能力を更に含み、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。
【0008】
ここに開示される集積回路はまた、外部デバイスを制御してコードイメージを受け取るように動作する周辺機器制御器と、暗号法論理に接続されるメモリ制御器と、メモリ制御器に接続されてハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化のための要求を送り、復号化の後にハードウエア固有コードイメージを実行するように動作する起動ROMとを含んでいてよい。
【0009】
ここに開示される集積回路は、外部デバイスを制御してコードイメージを受け取るように動作する周辺機器制御器と、メモリと、ハードウエア固有鍵論理と、メモリ及びハードウエア固有鍵論理に接続され、集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵に対する要求をハードウエア固有鍵論理に送り、要求に応答してハードウエア固有鍵をハードウエア固有鍵論理から受け取り、ハードウエア固有鍵を用いてコードイメージを暗号化してハードウエア固有コードイメージを生成し、ハードウエア固有コードイメージをメモリに記憶するように動作する暗号法論理とを含み、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。集積回路は、暗号法論理に接続されるメモリ制御器と、メモリ制御器に接続される起動ROMとを更に含み、起動ROMは、ハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化を要求する要求を暗号法論理に送り、復号化の後にハードウエア固有コードイメージを実行するように動作する。
【0010】
ここに開示される集積回路はまた、メモリへのアクセスを仲裁するように動作するメモリ制御器を含んでいてよい。集積回路は更に、暗号法論理にランダム鍵を生成させる命令を起動ROMの要求に応じて暗号法論理に送るように動作してよく、暗号法論理は更に、命令に応答してランダム鍵を生成し、ハードウエア固有鍵を用いてランダム鍵を暗号化して暗号化されたランダム鍵を生成し、暗号化されたランダム鍵を鍵記憶メモリに記憶し、暗号化されたランダム鍵を用いてコードイメージを暗号化するように動作する。代替的には、幾つかの実施形態では、ランダム鍵は暗号化されていない形態で用いられてよい。
【0011】
ここに開示される集積回路は、集積回路の内部メモリへのフラッシュローダコードのプッシュを受け取るように動作する周辺機器制御器を更に含んでいてよく、起動ROMは、フラッシュローダコードが信頼されたコードであることを検証し、フラッシュローダコードを実行し、外部デバイスとチャレンジ/レスポンスセキュリティルーチンを実行し、チャレンジ/レスポンスセキュリティルーチンに対する正しい応答に応じて外部デバイスからのコードイメージのプッシュを得るように動作する。
【図面の簡単な説明】
【0012】
【図1】図1は実施形態に従う集積回路のブロック図である。
【図2】図2は実施形態に従うハードウエア固有鍵論理に接続される暗号法論理を示すブロック図である。
【図3】図3は外部デバイスからコードイメージが受け取られてハードウエア固有鍵を用いて暗号化される実施形態に従う集積回路の高度な動作を示すフローチャートである。
【図4】図4はハードウエア固有鍵を用いるハードウエア固有コードイメージの復号化を要求する命令が送られる実施形態の動作を示すフローチャートである。
【図5】図5は暗号法論理がハードウエア固有鍵論理からハードウエア固有鍵を取得する実施形態の動作を示すフローチャートである。
【図6】図6は汎用コードイメージが集積回路内にプッシュされて暗号化されたランダム鍵を用いて暗号化される実施形態のためのフローチャートである。
【図7】図7はハードウエア固有鍵を用いて暗号化されたランダム鍵を用いる復号化ソフトウエアのための実施形態のためのフローチャートである。
【図8】図8はフラッシングローダを利用する実施形態のためのフローチャートである。
【図9】図9はアップグレードが必要とされなくてよい場合における、以前に記憶されたコードの検出を示すフローチャートである。
【図10】図10はハードウエア固有鍵論理と暗号法論理の間でハードウエア固有鍵情報を安全に転送するためのこれらの間の安全な通信回線を有する一つの実施形態の詳細を示すブロック図である。
【図11】図11はデバイスID、ハードウエア固有鍵およびロッキングビットを含んでいてよいハードウエア固有鍵情報を示すビットマップである。
【図12】図12は図10に示される実施形態の動作を示すフローチャートである。
【発明を実施するための形態】
【0013】
先ず図面を参照すると、同様の数字は同様の構成要素を示しており、図1は幾つかの実施形態ではシステムオンチップ(SOC)集積回路であってよい集積回路(IC)100のブロック図である。集積回路100は物理的接続、例えば限定はされないが外部デバイス127及び外部記憶装置129との集積回路100の接続を可能にする物理的接続131及び133を有していてよい。外部デバイス127はサーバであってよく、あるいは命令を送信及び受信するために集積回路100と通信可能なプロセッサを有する適切なデバイスであってよい。換言すれば、外部デバイス127はプロトコルを用いて集積回路100と通信することができ、プロトコルはハンドシェーキングを含んでいてよく、あるいは限定はされないが公開/私的鍵交換のようなセキュリティ手続きを含む他の交渉手続きを含んでいてよい。外部記憶装置129は種々のタイプの記憶装置であってよく、例えばSDメモリ又はNANDフラッシュメモリあるいは限定はされないがUSBハードドライブのような任意の他の適切な記憶装置であってよい。外部記憶装置129は、中央処理ユニット105に接続されて中央処理ユニット105と情報のやりとりを行う周辺機器制御器106を介して集積回路100と情報をやりとりすることができる。また、中央処理ユニット105はメモリ制御器101に接続される。メモリ制御器101は、内部RAM107及び外部RAM117等のメモリに対するCPU及び他の構成要素によるアクセスを仲裁する。メモリ制御器101は、CPUの指示の下でメモリの種々の領域をセキュアメモリとして特徴付けてよい。
【0014】
スタティックRAMであってよい内部RAM107は、集積回路のダイ上に物理的に配置することができる。例えばDRAMであってよい外部RAM117は、物理的には集積回路100のパッケージ内にあってよいが、メモリ制御器と同じダイ上にある必要はない。しかし、メモリは集積回路100のダイ上であろうとダイから離れていようと任意の適切な位置に配置されてよい。メモリ制御器101は更に起動ROM103に接続される。起動ROM103は集積回路100の起動手続きを制御し、集積回路100の起動の目的のために作用する起動ROMソフトウエア及び/又は論理を含んでいてよい。例えば、起動ROM103は起動ROM103から実行されるソフトウエアを参照してよく、この場合起動ROMソフトウエアが中央処理ユニット105によって実行される。他の実施形態では、起動ROM103はソフトウエアを含んでいてよく、更にそのソフトウエアと情報をやりとりするあるいはそのソフトウエアとは独立して作用する論理による論理動作を含んでいてよい。更に、起動ROM103はセキュアメモリを含むことができ、セキュアメモリは集積回路100の種々の非起動関連論理によるアクセスからロックされる。
【0015】
メモリ制御器101は更に暗号化論理102に接続されていてよく、暗号化論理102は、集積回路100により用いられる種々の情報、例えば限定はされないがソフトウエアコードあるいはビデオ媒体ソフトウエア等のソフトウエアを暗号化及び復号化するための種々の暗号鍵を暗号化するためのものである。暗号化論理102は例えば、ソフトウエアコードをハッシング(hashing)して例えば内部RAM107又は外部RAM117への記憶のためのメモリ制御器にハッシュ(hash)を供給するためのハッシング論理であってよい。メモリ制御器101はまた暗号法論理113に接続される。暗号法論理113は、例えば中央処理ユニット105によって集積回路100に取り込まれて実行されることになる種々のソフトウエアイメージの有効性を点検するために用いられる。暗号法論理113は幾つかの実施形態では暗号法コアプロセッサ(crypto core processor)であってよく、あるいはASIC又はここに提供される説明に従ってソフトウエアコードを暗号化及び復号化するのに適した他の適切な論理であってよい。幾つかの実施形態における暗号法論理は、乱数発生器121、鍵格納メモリ123及びハードウエア固有鍵記憶装置(Hardware Unique Key storage)125を更に含んでいてよい。
【0016】
集積回路100は更に、集積回路100構成に関係する情報を含んでいてよいハードウエア固有鍵論理115を含む。ハードウエア固有鍵論理115は一旦とんだら回復することのできないヒューズを含む。そのためにハードウエア固有鍵論理115は、集積回路100内での種々のソフトウエアの暗号化のために用いられてよい一連の恒久ビット(a permanent set of bits)を生成する。このようにハードウエア固有鍵論理115は、以下に更に説明されるようなイメージを暗号化するのに用いられるハードウエア固有鍵を生成する。
【0017】
ハードウエア固有鍵論理は暗号法論理113に接続され、クロック論理114からのクロック信号を暗号法論理113と共用する。ハードウエア固有鍵論理115ビットパターンはハードウエア固有鍵を構成し、クロック論理114からのクロック信号を用いてシリアルに暗号法論理113へクロックされてよい。暗号法論理は次いで、ハードウエア固有鍵をハードウエア固有鍵格納メモリ125に記憶させてよい。ハードウエア固有鍵は集積回路100に特有のものであり、いかなる他の集積回路におけるいかなる他のハードウエア固有鍵とも異なる。ハードウエア固有鍵論理115に記憶されまたハードウエア固有鍵格納メモリ125内にあるハードウエア固有鍵は、集積回路100のいかなるインタフェースを介してもアクセスすることはできない。つまり、ハードウエア固有鍵は、メモリ制御器101を介してあるいは集積回路100内のいかなる他の論理を介しても、ハードウエア固有鍵論理115、暗号法論理113から読み出すことはできない。
【0018】
この処理は図2に更に詳細に示されている。図2に示されるように、ハードウエア固有鍵論理115はシリアルローダ201を含み、シリアルローダ201は暗号法論理113内の対応するシリアル受信機203に接続される。ハードウエア固有鍵論理115からのハードウエア固有鍵を表すビットパターンは、クロック論理114により生成されるクロック信号を用いてシリアルローダ201を介して暗号法論理113のシリアル受信機203へクロックされる。シリアル受信機203は、暗号法論理113の外部からの論理によってはアクセスすることのできないハードウエア固有鍵格納メモリ125にハードウエア固有鍵を受け渡す。
【0019】
種々の実施形態によると、暗号法論理113内に記憶されるハードウエア固有化鍵は、そのハードウエア固有鍵を用いて暗号化されたソフトウエアが集積回路100に固有なものとなり且ついかなる他の集積回路あるいはデバイスによっても使用され得ないように、集積回路100に取り込まれたソフトウエアを暗号化するために用いられてよい。種々の実施形態の例示的な方法が図3に示されている。ステップ301では、集積回路が外部デバイスからのコードイメージを受信する。外部デバイスは、サーバ、例えばサーバ127、又は外部記憶装置、例えば外部記憶装置129のようなNANDフラッシュメモリ若しくはSDメモリであってよい。ステップ303では、コードイメージがハードウエア固有鍵を用いて暗号法論理113によって暗号化されてハードウエア固有コードイメージが生成され、この場合ハードウエア固有鍵は外部デバイス127にとってはアクセスすることができない。同様に、暗号化されたコードイメージはいかなる外部デバイスあるいは集積回路によっても使用することはできない。ステップ305では、ハードウエア固有コードイメージが集積回路100内に記憶されてよく、そこではコードイメージを復号化するハードウエア固有鍵を用いる復号化動作の後にのみハードウエア固有コードイメージが実行可能である。例えば図1においては、周辺機器制御器106を介して取得されてよく内部RAM107内にイメージ111として記憶されてよいコードイメージ111を外部デバイス127が供給することができる。CPU105は、暗号法論理113がハードウエア固有鍵格納メモリ125に記憶されているハードウエア固有鍵を用いてイメージ111を暗号化することを要求してよい。イメージ111の暗号化の後、暗号化されたイメージは最終集積回路イメージ119として例えば図1に示される外部RAM117内に記憶されてよい。最終集積回路イメージ119はその結果、集積回路100の外部のいかなるデバイスにとっても使用することはできない。
【0020】
図4は最終集積回路イメージ119が中央処理ユニット105によって実行されてよい種々の実施形態の方法を示している。例えばステップ401では、起動ROM103が暗号法論理113に命令を送信して、ハードウエア固有鍵を用いるハードウエア固有コードイメージ最終集積回路イメージ119の復号化を要求してよい。暗号法論理113は次いで外部RAM117から最終集積回路イメージ119を取得して、ハードウエア固有鍵格納メモリ125に記憶されているハードウエア固有鍵を用いてそれを復号化することができる。ステップ403に示されるように、起動ROM103は次いで復号化の後にハードウエア固有コードイメージを実行することができる。
【0021】
図5は図2に関して既に説明したような方法を示している。ステップ501に示されるように暗号法論理113は、ハードウエア固有鍵論理115からのハードウエア固有鍵データを要求し、ステップ503では、ハードウエア固有鍵論理115が、図2に示される制御器202を介して、ハードウエア固有鍵ビットパターンを暗号法論理シリアル受信機203に送信するようシリアルローダ201に指示する。ステップ505に示されるように、暗号法論理113はハードウエア固有鍵をハードウエア固有鍵格納メモリ125に記憶する。図6は汎用コードイメージがステップ601に示されるように集積回路100内にプッシュされてよい種々の実施形態の詳細を示している。図6には示されていないが、集積回路100内にプッシュされる任意の汎用コードが有効なコードであることを起動ROM103ソフトウエアは検証してよい。例えば、集積回路100はチャレンジ/レスポンスあるいは幾つかの他の適切なセキュリティメカニズムを外部デバイス127と集積回路100の間で実行して、外部デバイス127が集積回路100に対するソフトウエアの権限のある提供者であることを検証してよい。従って、実施形態によると、ステップ601に示されるようにIC内にプッシュされた汎用コードイメージは、そのコードイメージに関して任意の更なる動作が実行されるよりも前に集積回路100によって有効性が確認されることとなる。ステップ603では、集積回路100は、種々のメモリ位置を読み出すことによって、内部RAM107あるいは外部RAM117等のメモリ内に以前に記憶された汎用コードイメージの暗号化バージョンが存在していないことを検出することになる。この動作は例えば起動ROM103によって実行されてよい。
【0022】
ステップ603において以前に記憶されたバージョンが無かったとすると、ステップ605で起動ROM103はランダム鍵を生成するよう要求する命令を暗号法論理113に送ってよい。ステップ607に示されるように、暗号法論理113は乱数発生器121を用いて要求されたランダム鍵を生成することができ、乱数発生器121は幾つかの実施形態では真の乱数発生器であってよい。ステップ609に示されるように、暗号法論理113は続いてハードウエア固有鍵格納メモリ125に記憶されているハードウエア固有鍵を用いてランダム鍵を暗号化することができ、その後起動ROM103が暗号化されたランダム鍵をメモリ内の適切な場所に記憶してよい。ステップ611に示されるように、暗号法論理は次いで暗号化されたランダム鍵を用いてコードイメージ、例えばコードイメージ111を暗号化して、続いて暗号化されたコードイメージを例えば最終集積回路イメージ119として記憶することができる。
【0023】
図7のステップ701では、最終集積回路イメージ119を実行するために、起動ROMソフトウエア103はランダム鍵を暗号化された形態で暗号法論理113に送り、暗号法論理113がランダム鍵を用いて最終集積回路イメージ119を復号化するよう要求することとなる。幾つかの実施形態では、ランダム鍵はハードウエア固有鍵を用いて復号化されなければならない。ステップ703に示されるように、最終集積回路イメージ119は、ランダム鍵を用いてそれを復号化する起動ROM103からの要求と共に暗号法論理を通過させられることになる。ステップ705では、暗号法論理は追加的なハッシング試験を復号化されたイメージに対して実行してよく、この場合ハッシュもまたハードウエア固有鍵を用いて暗号化される。
【0024】
図8は他の実施形態を示しており、そこでは信頼されたフラッシュローダコードのプッシュを受け取ることによって集積回路100が最初にフラッシュされてよい。ステップ801に示されるように、汎用コードイメージが集積回路内に押し込まれてよく、又は代替的には遠隔サーバ127若しくはステップ809に示される外部記憶装置129のようなローカルデバイスを介して集積回路内にプッシュされてよい。2つの実施形態のいずれに対しても、信頼されたフラッシュローダコードの集積回路100内へのプッシュがステップ803に示されるように生じることとなる。起動ROM103は例えばセキュアハッシュを用いてフラッシュローダコードを調べることになる。このことは例えば公開/私的鍵ペアの使用を伴い、あるいは他の適切なセキュリティメカニズムが当業者によって理解されるであろう。ステップ807では、フラッシュローダコード、例えば図1に示されるフラッシュローディングモジュール109が外部デバイス、例えば外部サーバ127と共にチャレンジ/レスポンスを実行して、ステップ809に示されるように汎用コードのプッシュを得ることができる。種々の実施形態に従うと、既に説明したようなハードウエア固有鍵を用いて汎用コードを暗号化することができる。
【0025】
図9は汎用コードイメージが集積回路に供給される種々の状況に対する集積回路100の動作を示している。例えば、集積回路への汎用コードのプッシュがあれば、ステップ901に示されるように種々のメモリ位置を読み出すことにより、以前に記憶された暗号化されたバージョンが存在しないことを検出するために起動ROM103が調査してよい。ステップ903に示されるように、起動ROMは、コードは確かに存在するが、例えば古いバージョンがメモリに存在しているのものの新しいバージョンはアップグレードの目的でデバイス内にプッシュされてしまっている場合に、新たなコードが依然として必要だということを検出することができる。ステップ907では、起動ROM103は、既に説明した暗号法処理あるいは図8に関して説明したフラッシュローダ処理を開始してよい。
【0026】
図10はハードウエア固有鍵論理115から暗号法論理113にハードウエア固有鍵情報を安全に転送するための実施形態を示している。図示された実施形態によると、ハードウエア固有鍵論理115及び暗号法論理113は要求回線1001、検証回線1003及びデータ回線1005からなる安全な通信回線を有している。暗号法論理113を除き一切のメカニズムがハードウエア固有鍵情報にアクセスすることができないように、その安全な通信回線は集積回路のいかなる走査チェインからも、そしていかなる試験メカニズムからも隔離されている。ハードウエア固有鍵論理115は、安全な環境で、例えば集積回路の製造に際して、ハードウエア固有鍵と、そして幾つかの実施形態ではデバイスIDと共に初期の段階でプログラムされる。
【0027】
図11は例示的なハードウエア固有鍵情報を示すビットマップである。例えば幾つかの実施形態では、ハードウエア固有鍵情報はデバイスID1101及びハードウエア固有鍵1103を含んでいてよい。ハードウエア固有鍵情報は幾つかの実施形態では単一ビットであってよいロック(lock)1105を更に含んでいてよい。例として、デバイスID1101は128ビット長であってよく、ハードウエア固有鍵は128ビット長であってよく、ロックは単一ビットであってよい。従って暗号法論理113はデバイスID1101を記憶するためのデバイスID格納庫1007を含んでいてよい。
【0028】
図12は図10に示される実施形態の動作を示している。ステップ1201では、集積回路のあるいはハードウエア固有鍵論理115のリセットが発生してよい。ステップ1203では、ハードウエア固有鍵論理115は上述した安全な環境プログラミングに対応する安全な内部固定ビット領域を読み出してよい。ステップ1205では、ハードウエア固有鍵論理115はビットパターンに対して周期的冗長性調査(cyclic redundancy check)(CRC)を実行してその有効性を確保してよい。暗号法論理113は、ステップ1207に示されるように、セキュアデータ要求回線1001を介してハードウエア固有鍵情報を要求してよい。ハードウエア固有鍵論理は次いで、ステップ1209に示されるように、検証回線1003を介してハードウエア固有鍵情報の有効性を確認して、データ回線1005を介して暗号法論理113にハードウエア固有鍵情報を供給してよい。図11に示されるように、ロックビット1105は暗号法論理113にシリアルラインにおける最初のビットとして転送されて、例えば128ビットであってよいハードウエア固有鍵1103がそれに続き、次いで同様に128ビットであってよいデバイスID1101がそれに続くこととなり、幾つかの実施形態ではシリアル転送は最小桁ビットから最大桁ビットに向かう。ロックビットは、カウンタが不要になるように、暗号法論理113に対するフラグとして機能する。暗号法論理113は次いで、ステップ1211に示されるように、要求回線1001上の要求を無効にしてよい。データ回線1005を介してのハードウエア固有鍵情報の転送がこうして完了してよい。
【0029】
上述した詳細な説明及びここに記述された例は例示及び記述のみを目的として示されたものであり、限定を目的とはしていない。例えば、説明された動作は任意の好適な方法で行われてよい。方法ステップは、説明された動作及び結果を提供する限りにおいて任意の適した順序で行われてよい。従って、本実施形態は上に開示され及びここに請求される基本的な内在的な原理の精神及び範囲に属するあらゆるそして全ての修正、変更又は均等なものを包含することが意図されている。
【技術分野】
【0001】
本開示は種々の集積回路プロセッサによる実行のためにソフトウエアイメージを保護することに関する。
【背景技術】
【0002】
ワイヤレス通信デバイス等の電子デバイスは、技術の進歩、消費者の要望、及び製品差別化に対する要求等のマーケティング推進力に基き、高水準な性能へ絶えず駆り立てられている。今日利用可能な処理能力は、高水準な性能とプログラム可能であることを通しての柔軟性とを提供するシステムオンチップ(SOC)集積回路のような高性能なプロセッサを用いることによって、それらの要求の多くを満足させることを可能にしている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
その結果、性能、新たな特徴や機能等を提供するためにソフトウエア及びソフトウエア開発が欠かせないものとなってきた。しかし、ソフトウエアの普及に伴い、ソフトウエアを不正使用あるいは悪意の目的のための変更から保護する必要性もまた生じている。例えば、ソフトウエアは集積回路レベルでさえもチップの特定の特徴及び機能に向けられた攻撃によって不正使用されあるいは変更される可能性がある。同時に、デバッグや更新のためあるいは種々の開発要求のためにソフトウエアへのアクセスを得る必要性もあろう。また、主要なコピーが破損して使用不可能になった場合にソフトウエアのバックアップを提供可能であることが望ましい。しかし、ソフトウエアのコピーが容易にアクセス可能であることは、コードの不正使用等の原因になり得るので、不適切であろう。
【0004】
例えば、与えられた電子デバイスに特有の、より具体的にはその電子デバイス内の集積回路に特有の種々のコードイメージを有することで、コードイメージがいかなる他のデバイスによっても使用可能ではなくあるいは変更可能ではなくすることが望ましいであろう。
【課題を解決するための手段】
【0005】
ここに開示される種々の実施形態は、集積回路が外部デバイスからコードイメージを受け取り、暗号法論理(cryptographic logic)をハードウエア固有鍵と共に用いてコードイメージを暗号化してハードウエア固有コードイメージを生成してよい方法を含み、そこではハードウエア固有鍵は外部デバイスからはアクセスすることができない。集積回路は次いでハードウエア固有コードイメージを記憶することとなり、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。
【0006】
方法はまた、ハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化を要求する命令を送ることと、復号化の後に起動ソフトウエアによりハードウエア固有コードイメージを実行することとを含む。
【0007】
ここに開示される実施形態はまた、メモリ、及びメモリに接続される暗号法論理を含む集積回路を提供する。暗号法論理はハードウエア固有鍵を用いてコードイメージを暗号化しハードウエア固有コードイメージを生成するように動作し、ハードウエア固有鍵は集積回路のいかなるポートを介してもアクセスすることができない。集積回路はハードウエア固有コードイメージをメモリ内に記憶する能力を更に含み、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。
【0008】
ここに開示される集積回路はまた、外部デバイスを制御してコードイメージを受け取るように動作する周辺機器制御器と、暗号法論理に接続されるメモリ制御器と、メモリ制御器に接続されてハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化のための要求を送り、復号化の後にハードウエア固有コードイメージを実行するように動作する起動ROMとを含んでいてよい。
【0009】
ここに開示される集積回路は、外部デバイスを制御してコードイメージを受け取るように動作する周辺機器制御器と、メモリと、ハードウエア固有鍵論理と、メモリ及びハードウエア固有鍵論理に接続され、集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵に対する要求をハードウエア固有鍵論理に送り、要求に応答してハードウエア固有鍵をハードウエア固有鍵論理から受け取り、ハードウエア固有鍵を用いてコードイメージを暗号化してハードウエア固有コードイメージを生成し、ハードウエア固有コードイメージをメモリに記憶するように動作する暗号法論理とを含み、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。集積回路は、暗号法論理に接続されるメモリ制御器と、メモリ制御器に接続される起動ROMとを更に含み、起動ROMは、ハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化を要求する要求を暗号法論理に送り、復号化の後にハードウエア固有コードイメージを実行するように動作する。
【0010】
ここに開示される集積回路はまた、メモリへのアクセスを仲裁するように動作するメモリ制御器を含んでいてよい。集積回路は更に、暗号法論理にランダム鍵を生成させる命令を起動ROMの要求に応じて暗号法論理に送るように動作してよく、暗号法論理は更に、命令に応答してランダム鍵を生成し、ハードウエア固有鍵を用いてランダム鍵を暗号化して暗号化されたランダム鍵を生成し、暗号化されたランダム鍵を鍵記憶メモリに記憶し、暗号化されたランダム鍵を用いてコードイメージを暗号化するように動作する。代替的には、幾つかの実施形態では、ランダム鍵は暗号化されていない形態で用いられてよい。
【0011】
ここに開示される集積回路は、集積回路の内部メモリへのフラッシュローダコードのプッシュを受け取るように動作する周辺機器制御器を更に含んでいてよく、起動ROMは、フラッシュローダコードが信頼されたコードであることを検証し、フラッシュローダコードを実行し、外部デバイスとチャレンジ/レスポンスセキュリティルーチンを実行し、チャレンジ/レスポンスセキュリティルーチンに対する正しい応答に応じて外部デバイスからのコードイメージのプッシュを得るように動作する。
【図面の簡単な説明】
【0012】
【図1】図1は実施形態に従う集積回路のブロック図である。
【図2】図2は実施形態に従うハードウエア固有鍵論理に接続される暗号法論理を示すブロック図である。
【図3】図3は外部デバイスからコードイメージが受け取られてハードウエア固有鍵を用いて暗号化される実施形態に従う集積回路の高度な動作を示すフローチャートである。
【図4】図4はハードウエア固有鍵を用いるハードウエア固有コードイメージの復号化を要求する命令が送られる実施形態の動作を示すフローチャートである。
【図5】図5は暗号法論理がハードウエア固有鍵論理からハードウエア固有鍵を取得する実施形態の動作を示すフローチャートである。
【図6】図6は汎用コードイメージが集積回路内にプッシュされて暗号化されたランダム鍵を用いて暗号化される実施形態のためのフローチャートである。
【図7】図7はハードウエア固有鍵を用いて暗号化されたランダム鍵を用いる復号化ソフトウエアのための実施形態のためのフローチャートである。
【図8】図8はフラッシングローダを利用する実施形態のためのフローチャートである。
【図9】図9はアップグレードが必要とされなくてよい場合における、以前に記憶されたコードの検出を示すフローチャートである。
【図10】図10はハードウエア固有鍵論理と暗号法論理の間でハードウエア固有鍵情報を安全に転送するためのこれらの間の安全な通信回線を有する一つの実施形態の詳細を示すブロック図である。
【図11】図11はデバイスID、ハードウエア固有鍵およびロッキングビットを含んでいてよいハードウエア固有鍵情報を示すビットマップである。
【図12】図12は図10に示される実施形態の動作を示すフローチャートである。
【発明を実施するための形態】
【0013】
先ず図面を参照すると、同様の数字は同様の構成要素を示しており、図1は幾つかの実施形態ではシステムオンチップ(SOC)集積回路であってよい集積回路(IC)100のブロック図である。集積回路100は物理的接続、例えば限定はされないが外部デバイス127及び外部記憶装置129との集積回路100の接続を可能にする物理的接続131及び133を有していてよい。外部デバイス127はサーバであってよく、あるいは命令を送信及び受信するために集積回路100と通信可能なプロセッサを有する適切なデバイスであってよい。換言すれば、外部デバイス127はプロトコルを用いて集積回路100と通信することができ、プロトコルはハンドシェーキングを含んでいてよく、あるいは限定はされないが公開/私的鍵交換のようなセキュリティ手続きを含む他の交渉手続きを含んでいてよい。外部記憶装置129は種々のタイプの記憶装置であってよく、例えばSDメモリ又はNANDフラッシュメモリあるいは限定はされないがUSBハードドライブのような任意の他の適切な記憶装置であってよい。外部記憶装置129は、中央処理ユニット105に接続されて中央処理ユニット105と情報のやりとりを行う周辺機器制御器106を介して集積回路100と情報をやりとりすることができる。また、中央処理ユニット105はメモリ制御器101に接続される。メモリ制御器101は、内部RAM107及び外部RAM117等のメモリに対するCPU及び他の構成要素によるアクセスを仲裁する。メモリ制御器101は、CPUの指示の下でメモリの種々の領域をセキュアメモリとして特徴付けてよい。
【0014】
スタティックRAMであってよい内部RAM107は、集積回路のダイ上に物理的に配置することができる。例えばDRAMであってよい外部RAM117は、物理的には集積回路100のパッケージ内にあってよいが、メモリ制御器と同じダイ上にある必要はない。しかし、メモリは集積回路100のダイ上であろうとダイから離れていようと任意の適切な位置に配置されてよい。メモリ制御器101は更に起動ROM103に接続される。起動ROM103は集積回路100の起動手続きを制御し、集積回路100の起動の目的のために作用する起動ROMソフトウエア及び/又は論理を含んでいてよい。例えば、起動ROM103は起動ROM103から実行されるソフトウエアを参照してよく、この場合起動ROMソフトウエアが中央処理ユニット105によって実行される。他の実施形態では、起動ROM103はソフトウエアを含んでいてよく、更にそのソフトウエアと情報をやりとりするあるいはそのソフトウエアとは独立して作用する論理による論理動作を含んでいてよい。更に、起動ROM103はセキュアメモリを含むことができ、セキュアメモリは集積回路100の種々の非起動関連論理によるアクセスからロックされる。
【0015】
メモリ制御器101は更に暗号化論理102に接続されていてよく、暗号化論理102は、集積回路100により用いられる種々の情報、例えば限定はされないがソフトウエアコードあるいはビデオ媒体ソフトウエア等のソフトウエアを暗号化及び復号化するための種々の暗号鍵を暗号化するためのものである。暗号化論理102は例えば、ソフトウエアコードをハッシング(hashing)して例えば内部RAM107又は外部RAM117への記憶のためのメモリ制御器にハッシュ(hash)を供給するためのハッシング論理であってよい。メモリ制御器101はまた暗号法論理113に接続される。暗号法論理113は、例えば中央処理ユニット105によって集積回路100に取り込まれて実行されることになる種々のソフトウエアイメージの有効性を点検するために用いられる。暗号法論理113は幾つかの実施形態では暗号法コアプロセッサ(crypto core processor)であってよく、あるいはASIC又はここに提供される説明に従ってソフトウエアコードを暗号化及び復号化するのに適した他の適切な論理であってよい。幾つかの実施形態における暗号法論理は、乱数発生器121、鍵格納メモリ123及びハードウエア固有鍵記憶装置(Hardware Unique Key storage)125を更に含んでいてよい。
【0016】
集積回路100は更に、集積回路100構成に関係する情報を含んでいてよいハードウエア固有鍵論理115を含む。ハードウエア固有鍵論理115は一旦とんだら回復することのできないヒューズを含む。そのためにハードウエア固有鍵論理115は、集積回路100内での種々のソフトウエアの暗号化のために用いられてよい一連の恒久ビット(a permanent set of bits)を生成する。このようにハードウエア固有鍵論理115は、以下に更に説明されるようなイメージを暗号化するのに用いられるハードウエア固有鍵を生成する。
【0017】
ハードウエア固有鍵論理は暗号法論理113に接続され、クロック論理114からのクロック信号を暗号法論理113と共用する。ハードウエア固有鍵論理115ビットパターンはハードウエア固有鍵を構成し、クロック論理114からのクロック信号を用いてシリアルに暗号法論理113へクロックされてよい。暗号法論理は次いで、ハードウエア固有鍵をハードウエア固有鍵格納メモリ125に記憶させてよい。ハードウエア固有鍵は集積回路100に特有のものであり、いかなる他の集積回路におけるいかなる他のハードウエア固有鍵とも異なる。ハードウエア固有鍵論理115に記憶されまたハードウエア固有鍵格納メモリ125内にあるハードウエア固有鍵は、集積回路100のいかなるインタフェースを介してもアクセスすることはできない。つまり、ハードウエア固有鍵は、メモリ制御器101を介してあるいは集積回路100内のいかなる他の論理を介しても、ハードウエア固有鍵論理115、暗号法論理113から読み出すことはできない。
【0018】
この処理は図2に更に詳細に示されている。図2に示されるように、ハードウエア固有鍵論理115はシリアルローダ201を含み、シリアルローダ201は暗号法論理113内の対応するシリアル受信機203に接続される。ハードウエア固有鍵論理115からのハードウエア固有鍵を表すビットパターンは、クロック論理114により生成されるクロック信号を用いてシリアルローダ201を介して暗号法論理113のシリアル受信機203へクロックされる。シリアル受信機203は、暗号法論理113の外部からの論理によってはアクセスすることのできないハードウエア固有鍵格納メモリ125にハードウエア固有鍵を受け渡す。
【0019】
種々の実施形態によると、暗号法論理113内に記憶されるハードウエア固有化鍵は、そのハードウエア固有鍵を用いて暗号化されたソフトウエアが集積回路100に固有なものとなり且ついかなる他の集積回路あるいはデバイスによっても使用され得ないように、集積回路100に取り込まれたソフトウエアを暗号化するために用いられてよい。種々の実施形態の例示的な方法が図3に示されている。ステップ301では、集積回路が外部デバイスからのコードイメージを受信する。外部デバイスは、サーバ、例えばサーバ127、又は外部記憶装置、例えば外部記憶装置129のようなNANDフラッシュメモリ若しくはSDメモリであってよい。ステップ303では、コードイメージがハードウエア固有鍵を用いて暗号法論理113によって暗号化されてハードウエア固有コードイメージが生成され、この場合ハードウエア固有鍵は外部デバイス127にとってはアクセスすることができない。同様に、暗号化されたコードイメージはいかなる外部デバイスあるいは集積回路によっても使用することはできない。ステップ305では、ハードウエア固有コードイメージが集積回路100内に記憶されてよく、そこではコードイメージを復号化するハードウエア固有鍵を用いる復号化動作の後にのみハードウエア固有コードイメージが実行可能である。例えば図1においては、周辺機器制御器106を介して取得されてよく内部RAM107内にイメージ111として記憶されてよいコードイメージ111を外部デバイス127が供給することができる。CPU105は、暗号法論理113がハードウエア固有鍵格納メモリ125に記憶されているハードウエア固有鍵を用いてイメージ111を暗号化することを要求してよい。イメージ111の暗号化の後、暗号化されたイメージは最終集積回路イメージ119として例えば図1に示される外部RAM117内に記憶されてよい。最終集積回路イメージ119はその結果、集積回路100の外部のいかなるデバイスにとっても使用することはできない。
【0020】
図4は最終集積回路イメージ119が中央処理ユニット105によって実行されてよい種々の実施形態の方法を示している。例えばステップ401では、起動ROM103が暗号法論理113に命令を送信して、ハードウエア固有鍵を用いるハードウエア固有コードイメージ最終集積回路イメージ119の復号化を要求してよい。暗号法論理113は次いで外部RAM117から最終集積回路イメージ119を取得して、ハードウエア固有鍵格納メモリ125に記憶されているハードウエア固有鍵を用いてそれを復号化することができる。ステップ403に示されるように、起動ROM103は次いで復号化の後にハードウエア固有コードイメージを実行することができる。
【0021】
図5は図2に関して既に説明したような方法を示している。ステップ501に示されるように暗号法論理113は、ハードウエア固有鍵論理115からのハードウエア固有鍵データを要求し、ステップ503では、ハードウエア固有鍵論理115が、図2に示される制御器202を介して、ハードウエア固有鍵ビットパターンを暗号法論理シリアル受信機203に送信するようシリアルローダ201に指示する。ステップ505に示されるように、暗号法論理113はハードウエア固有鍵をハードウエア固有鍵格納メモリ125に記憶する。図6は汎用コードイメージがステップ601に示されるように集積回路100内にプッシュされてよい種々の実施形態の詳細を示している。図6には示されていないが、集積回路100内にプッシュされる任意の汎用コードが有効なコードであることを起動ROM103ソフトウエアは検証してよい。例えば、集積回路100はチャレンジ/レスポンスあるいは幾つかの他の適切なセキュリティメカニズムを外部デバイス127と集積回路100の間で実行して、外部デバイス127が集積回路100に対するソフトウエアの権限のある提供者であることを検証してよい。従って、実施形態によると、ステップ601に示されるようにIC内にプッシュされた汎用コードイメージは、そのコードイメージに関して任意の更なる動作が実行されるよりも前に集積回路100によって有効性が確認されることとなる。ステップ603では、集積回路100は、種々のメモリ位置を読み出すことによって、内部RAM107あるいは外部RAM117等のメモリ内に以前に記憶された汎用コードイメージの暗号化バージョンが存在していないことを検出することになる。この動作は例えば起動ROM103によって実行されてよい。
【0022】
ステップ603において以前に記憶されたバージョンが無かったとすると、ステップ605で起動ROM103はランダム鍵を生成するよう要求する命令を暗号法論理113に送ってよい。ステップ607に示されるように、暗号法論理113は乱数発生器121を用いて要求されたランダム鍵を生成することができ、乱数発生器121は幾つかの実施形態では真の乱数発生器であってよい。ステップ609に示されるように、暗号法論理113は続いてハードウエア固有鍵格納メモリ125に記憶されているハードウエア固有鍵を用いてランダム鍵を暗号化することができ、その後起動ROM103が暗号化されたランダム鍵をメモリ内の適切な場所に記憶してよい。ステップ611に示されるように、暗号法論理は次いで暗号化されたランダム鍵を用いてコードイメージ、例えばコードイメージ111を暗号化して、続いて暗号化されたコードイメージを例えば最終集積回路イメージ119として記憶することができる。
【0023】
図7のステップ701では、最終集積回路イメージ119を実行するために、起動ROMソフトウエア103はランダム鍵を暗号化された形態で暗号法論理113に送り、暗号法論理113がランダム鍵を用いて最終集積回路イメージ119を復号化するよう要求することとなる。幾つかの実施形態では、ランダム鍵はハードウエア固有鍵を用いて復号化されなければならない。ステップ703に示されるように、最終集積回路イメージ119は、ランダム鍵を用いてそれを復号化する起動ROM103からの要求と共に暗号法論理を通過させられることになる。ステップ705では、暗号法論理は追加的なハッシング試験を復号化されたイメージに対して実行してよく、この場合ハッシュもまたハードウエア固有鍵を用いて暗号化される。
【0024】
図8は他の実施形態を示しており、そこでは信頼されたフラッシュローダコードのプッシュを受け取ることによって集積回路100が最初にフラッシュされてよい。ステップ801に示されるように、汎用コードイメージが集積回路内に押し込まれてよく、又は代替的には遠隔サーバ127若しくはステップ809に示される外部記憶装置129のようなローカルデバイスを介して集積回路内にプッシュされてよい。2つの実施形態のいずれに対しても、信頼されたフラッシュローダコードの集積回路100内へのプッシュがステップ803に示されるように生じることとなる。起動ROM103は例えばセキュアハッシュを用いてフラッシュローダコードを調べることになる。このことは例えば公開/私的鍵ペアの使用を伴い、あるいは他の適切なセキュリティメカニズムが当業者によって理解されるであろう。ステップ807では、フラッシュローダコード、例えば図1に示されるフラッシュローディングモジュール109が外部デバイス、例えば外部サーバ127と共にチャレンジ/レスポンスを実行して、ステップ809に示されるように汎用コードのプッシュを得ることができる。種々の実施形態に従うと、既に説明したようなハードウエア固有鍵を用いて汎用コードを暗号化することができる。
【0025】
図9は汎用コードイメージが集積回路に供給される種々の状況に対する集積回路100の動作を示している。例えば、集積回路への汎用コードのプッシュがあれば、ステップ901に示されるように種々のメモリ位置を読み出すことにより、以前に記憶された暗号化されたバージョンが存在しないことを検出するために起動ROM103が調査してよい。ステップ903に示されるように、起動ROMは、コードは確かに存在するが、例えば古いバージョンがメモリに存在しているのものの新しいバージョンはアップグレードの目的でデバイス内にプッシュされてしまっている場合に、新たなコードが依然として必要だということを検出することができる。ステップ907では、起動ROM103は、既に説明した暗号法処理あるいは図8に関して説明したフラッシュローダ処理を開始してよい。
【0026】
図10はハードウエア固有鍵論理115から暗号法論理113にハードウエア固有鍵情報を安全に転送するための実施形態を示している。図示された実施形態によると、ハードウエア固有鍵論理115及び暗号法論理113は要求回線1001、検証回線1003及びデータ回線1005からなる安全な通信回線を有している。暗号法論理113を除き一切のメカニズムがハードウエア固有鍵情報にアクセスすることができないように、その安全な通信回線は集積回路のいかなる走査チェインからも、そしていかなる試験メカニズムからも隔離されている。ハードウエア固有鍵論理115は、安全な環境で、例えば集積回路の製造に際して、ハードウエア固有鍵と、そして幾つかの実施形態ではデバイスIDと共に初期の段階でプログラムされる。
【0027】
図11は例示的なハードウエア固有鍵情報を示すビットマップである。例えば幾つかの実施形態では、ハードウエア固有鍵情報はデバイスID1101及びハードウエア固有鍵1103を含んでいてよい。ハードウエア固有鍵情報は幾つかの実施形態では単一ビットであってよいロック(lock)1105を更に含んでいてよい。例として、デバイスID1101は128ビット長であってよく、ハードウエア固有鍵は128ビット長であってよく、ロックは単一ビットであってよい。従って暗号法論理113はデバイスID1101を記憶するためのデバイスID格納庫1007を含んでいてよい。
【0028】
図12は図10に示される実施形態の動作を示している。ステップ1201では、集積回路のあるいはハードウエア固有鍵論理115のリセットが発生してよい。ステップ1203では、ハードウエア固有鍵論理115は上述した安全な環境プログラミングに対応する安全な内部固定ビット領域を読み出してよい。ステップ1205では、ハードウエア固有鍵論理115はビットパターンに対して周期的冗長性調査(cyclic redundancy check)(CRC)を実行してその有効性を確保してよい。暗号法論理113は、ステップ1207に示されるように、セキュアデータ要求回線1001を介してハードウエア固有鍵情報を要求してよい。ハードウエア固有鍵論理は次いで、ステップ1209に示されるように、検証回線1003を介してハードウエア固有鍵情報の有効性を確認して、データ回線1005を介して暗号法論理113にハードウエア固有鍵情報を供給してよい。図11に示されるように、ロックビット1105は暗号法論理113にシリアルラインにおける最初のビットとして転送されて、例えば128ビットであってよいハードウエア固有鍵1103がそれに続き、次いで同様に128ビットであってよいデバイスID1101がそれに続くこととなり、幾つかの実施形態ではシリアル転送は最小桁ビットから最大桁ビットに向かう。ロックビットは、カウンタが不要になるように、暗号法論理113に対するフラグとして機能する。暗号法論理113は次いで、ステップ1211に示されるように、要求回線1001上の要求を無効にしてよい。データ回線1005を介してのハードウエア固有鍵情報の転送がこうして完了してよい。
【0029】
上述した詳細な説明及びここに記述された例は例示及び記述のみを目的として示されたものであり、限定を目的とはしていない。例えば、説明された動作は任意の好適な方法で行われてよい。方法ステップは、説明された動作及び結果を提供する限りにおいて任意の適した順序で行われてよい。従って、本実施形態は上に開示され及びここに請求される基本的な内在的な原理の精神及び範囲に属するあらゆるそして全ての修正、変更又は均等なものを包含することが意図されている。
【特許請求の範囲】
【請求項1】
外部デバイスからはアクセスすることのできないハードウエア固有鍵を用いる暗号法論理によって外部デバイスからのコードイメージを暗号化してハードウエア固有コードイメージを生成することと、
前記ハードウエア固有コードイメージを記憶することと、を備えた方法であって、
前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ、前記ハードウエア固有コードイメージが実行可能である、方法。
【請求項2】
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する命令を前記暗号法論理に送ることと、
前記ハードウエア固有コードイメージを復号化することと、
前記復号化の後に、起動ソフトウエアにより前記ハードウエア固有コードイメージを実行することと、を備えた、請求項1に記載の方法。
【請求項3】
前記外部デバイスからはアクセスすることのできないハードウエア固有鍵を用いる暗号法論理によって前記コードイメージを暗号化してハードウエア固有コードイメージを生成することは、
前記暗号法論理がランダム鍵を生成することを要求する命令を前記暗号法論理に送ることと、
前記暗号法論理によってランダム鍵を生成することと、
前記ハードウエア固有鍵を用いる前記暗号法論理によって前記ランダム鍵を暗号化することと、
前記暗号化されたランダム鍵をメモリ内に記憶することと、
前記暗号化されたランダム鍵を用いる前記暗号法論理によって前記コードイメージを暗号化することと、を更に備えた、請求項1に記載の方法。
【請求項4】
外部デバイスからのコードイメージを受け取った後に、
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在していないことを決定する、請求項1に記載の方法。
【請求項5】
外部デバイスからのコードイメージを受け取った後に、
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在しており、コード更新が要求されていることを決定する、請求項1に記載の方法。
【請求項6】
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在しており、コード更新が要求されていることを決定した後に、
フラッシングローダコードをメモリ内にプッシュすることと、
前記フラッシングローダコードが信頼されるものであることを起動ソフトウエアにより検証することと、
前記フラッシングローダコードを実行することと、
チャレンジ/レスポンスセキュリティルーチンを外部デバイスと実行することと、
前記外部デバイスからのコードイメージのプッシュを得ることと、を備えた、請求項5に記載の方法。
【請求項7】
ハードウエア固有鍵を用いる暗号法論理により前記コードイメージを暗号化する前に、
ハードウエア固有鍵シリアルローダからハードウエア固有鍵を要求することと、
前記ハードウエア固有鍵に対応する一連のシリアルビットをシリアル受信機により前記シリアルローダから受け取ることと、を備えた、請求項1に記載の方法。
【請求項8】
メモリと、前記メモリに接続される暗号法論理とを備えた集積回路であって、
前記暗号法論理は、
前記集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵を用いてコードイメージを暗号化し、もってハードウエア固有コードイメージを生成するとともに、
前記ハードウエア固有コードイメージを前記メモリ内に記憶するように動作し、
前記ハードウエア固有コードイメージは、
前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ、実行可能である、集積回路。
【請求項9】
外部デバイスを制御してそこからの前記コードイメージを受け取るように動作する周辺機器制御器と、
前記暗号法論理に接続されるメモリ制御器と、
前記メモリ制御器に接続される起動ROMと、を備え、
前記起動ROMは、
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する要求を前記暗号法論理に送るとともに、
前記復号化の後に前記ハードウエア固有コードイメージを実行するように動作する、請求項8に記載の集積回路。
【請求項10】
前記メモリ及び前記暗号法論理に動作可能に接続されたCPUを備え、
前記メモリ制御器は、前記メモリ制御器の前記要求に応じて、前記暗号法論理にランダム鍵を生成させる命令を前記暗号法論理に送るように動作し、
前記暗号法論理は更に、
前記命令に応答して前記ランダム鍵を生成し、
前記ハードウエア固有鍵を用いて前記ランダム鍵を暗号化して暗号化されたランダム鍵を生成し、
前記暗号化されたランダム鍵を鍵記憶メモリに記憶し、
前記暗号化されたランダム鍵を用いて前記コードイメージを暗号化するように動作する、請求項8に記載の集積回路。
【請求項11】
前記起動ROMは更に、
前記外部デバイスから前記コードイメージを受け取った後に、以前に暗号化された前記コードイメージのバージョンが前記集積回路の内部メモリ内に存在していないことを決定するように動作する、請求項9に記載の集積回路。
【請求項12】
前記起動ROMは更に、
前記外部デバイスから前記コードイメージを受け取った後に、以前に暗号化された前記コードイメージのバージョンが前記集積回路の内部メモリ内に存在することを決定するとともに、
前記コードイメージのコード更新が要求されていることを決定するように動作する、請求項9に記載の集積回路。
【請求項13】
前記周辺機器制御器は更に、
前記集積回路の前記内部メモリへのフラッシングローダコードのプッシュを受け取るように動作し、
前記起動ROMは更に、
前記フラッシングローダコードが信頼されるものであることを検証するとともに、前記フラッシングローダコードを実行するように動作し、
前記フラッシングローダコードは、
前記外部デバイスとチャレンジ/レスポンスセキュリティルーチンを実行し、
前記チャレンジ/レスポンスセキュリティルーチンに対する正しい応答に応じて前記外部デバイスからの前記コードイメージのプッシュを得るように動作する、請求項12に記載の集積回路。
【請求項14】
前記暗号法論理に動作可能に接続されるハードウエア固有鍵論理を備え、
前記ハードウエア固有鍵論理は、
前記ハードウエア固有鍵に対する要求を前記暗号法論理から受け取り、
前記要求に応答して前記ハードウエア固有鍵を前記暗号法論理へ送るように動作する、請求項8に記載の集積回路。
【請求項15】
前記ハードウエア固有鍵論理は、シリアルローダを更に備え、
前記暗号法論理は、前記ハードウエア固有鍵論理の前記シリアルローダに動作可能に接続されるシリアル受信機を更に備えており、
前記シリアル受信機は、一連のシリアルビットを前記シリアルローダから受け取るように動作し、
前記一連のシリアルビットは、前記ハードウエア固有鍵に対応している、請求項14に記載の集積回路。
【請求項16】
前記ハードウエア固有鍵は、予め定められたビットパターンに初期設定可能であり、
前記ビットパターンは、前記ハードウエア固有鍵に対応する前記一連のシリアルビットを生成するためのものであり、
前記ハードウエア固有鍵論理は、初期設定の後に前記予め定められたビットパターンに恒久的に設定される、請求項15に記載の集積回路。
【請求項17】
前記暗号法論理は前記ランダム鍵を生成するように動作する乱数発生論理を更に備えている、請求項10に記載の集積回路。
【請求項18】
外部デバイスを制御してそこからのコードイメージを受け取るように動作する周辺機器制御器と、
メモリと、
ハードウエア固有鍵論理と、
前記メモリ及び前記ハードウエア固有鍵論理に動作可能に接続される暗号法論理と、
前記暗号法論理に動作可能に接続されるメモリ制御器と、
前記メモリ制御器に動作可能に接続される起動ROMと、を備えた集積回路であって、
前記暗号法論理は、
前記集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵に対する要求を前記ハードウエア固有鍵論理に送り、
前記要求に応答して前記ハードウエア固有鍵を前記ハードウエア固有鍵論理から受け取り、
前記ハードウエア固有鍵を用いて前記コードイメージを暗号化して、前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ実行可能なハードウエア固有コードイメージを生成し、
前記ハードウエア固有コードイメージを前記メモリに記憶するように動作し、
前記起動ROMは、
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する要求を前記暗号法論理に送り、
前記復号化の後に前記ハードウエア固有コードイメージを実行するように動作する、集積回路。
【請求項19】
前記周辺機器制御器、前記メモリ、前記ハードウエア固有鍵論理、前記暗号法論理、前記メモリ制御器及び前記起動ROMに動作可能に接続されるCPUを備え、
前記CPUは、前記起動ROMの前記要求に応じて、前記暗号法論理にランダム鍵を生成させる命令を前記暗号法論理に送るように動作し、
前記暗号法論理は更に、
前記命令に応答して前記ランダム鍵を生成し、
前記ハードウエア固有鍵を用いて前記ランダム鍵を暗号化して暗号化されたランダム鍵を生成し、
前記暗号化されたランダム鍵を鍵記憶メモリに記憶し、
前記暗号化されたランダム鍵を用いて前記コードイメージを暗号化するように動作する、請求項18に記載の集積回路。
【請求項20】
前記周辺機器制御器は更に、
前記集積回路の内部メモリへのフラッシングローダコードのプッシュを受け取るように動作し、
前記起動ROMは更に、
前記フラッシングローダコードが信頼されるものであることを検証し、
前記フラッシングローダコードを実行し、
前記外部デバイスとチャレンジ/レスポンスセキュリティルーチンを実行し、
前記チャレンジ/レスポンスセキュリティルーチンに対する正しい応答に応じて前記外部デバイスからの前記コードイメージのプッシュを得るように動作する、請求項19に記載の集積回路。
【請求項1】
外部デバイスからはアクセスすることのできないハードウエア固有鍵を用いる暗号法論理によって外部デバイスからのコードイメージを暗号化してハードウエア固有コードイメージを生成することと、
前記ハードウエア固有コードイメージを記憶することと、を備えた方法であって、
前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ、前記ハードウエア固有コードイメージが実行可能である、方法。
【請求項2】
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する命令を前記暗号法論理に送ることと、
前記ハードウエア固有コードイメージを復号化することと、
前記復号化の後に、起動ソフトウエアにより前記ハードウエア固有コードイメージを実行することと、を備えた、請求項1に記載の方法。
【請求項3】
前記外部デバイスからはアクセスすることのできないハードウエア固有鍵を用いる暗号法論理によって前記コードイメージを暗号化してハードウエア固有コードイメージを生成することは、
前記暗号法論理がランダム鍵を生成することを要求する命令を前記暗号法論理に送ることと、
前記暗号法論理によってランダム鍵を生成することと、
前記ハードウエア固有鍵を用いる前記暗号法論理によって前記ランダム鍵を暗号化することと、
前記暗号化されたランダム鍵をメモリ内に記憶することと、
前記暗号化されたランダム鍵を用いる前記暗号法論理によって前記コードイメージを暗号化することと、を更に備えた、請求項1に記載の方法。
【請求項4】
外部デバイスからのコードイメージを受け取った後に、
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在していないことを決定する、請求項1に記載の方法。
【請求項5】
外部デバイスからのコードイメージを受け取った後に、
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在しており、コード更新が要求されていることを決定する、請求項1に記載の方法。
【請求項6】
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在しており、コード更新が要求されていることを決定した後に、
フラッシングローダコードをメモリ内にプッシュすることと、
前記フラッシングローダコードが信頼されるものであることを起動ソフトウエアにより検証することと、
前記フラッシングローダコードを実行することと、
チャレンジ/レスポンスセキュリティルーチンを外部デバイスと実行することと、
前記外部デバイスからのコードイメージのプッシュを得ることと、を備えた、請求項5に記載の方法。
【請求項7】
ハードウエア固有鍵を用いる暗号法論理により前記コードイメージを暗号化する前に、
ハードウエア固有鍵シリアルローダからハードウエア固有鍵を要求することと、
前記ハードウエア固有鍵に対応する一連のシリアルビットをシリアル受信機により前記シリアルローダから受け取ることと、を備えた、請求項1に記載の方法。
【請求項8】
メモリと、前記メモリに接続される暗号法論理とを備えた集積回路であって、
前記暗号法論理は、
前記集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵を用いてコードイメージを暗号化し、もってハードウエア固有コードイメージを生成するとともに、
前記ハードウエア固有コードイメージを前記メモリ内に記憶するように動作し、
前記ハードウエア固有コードイメージは、
前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ、実行可能である、集積回路。
【請求項9】
外部デバイスを制御してそこからの前記コードイメージを受け取るように動作する周辺機器制御器と、
前記暗号法論理に接続されるメモリ制御器と、
前記メモリ制御器に接続される起動ROMと、を備え、
前記起動ROMは、
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する要求を前記暗号法論理に送るとともに、
前記復号化の後に前記ハードウエア固有コードイメージを実行するように動作する、請求項8に記載の集積回路。
【請求項10】
前記メモリ及び前記暗号法論理に動作可能に接続されたCPUを備え、
前記メモリ制御器は、前記メモリ制御器の前記要求に応じて、前記暗号法論理にランダム鍵を生成させる命令を前記暗号法論理に送るように動作し、
前記暗号法論理は更に、
前記命令に応答して前記ランダム鍵を生成し、
前記ハードウエア固有鍵を用いて前記ランダム鍵を暗号化して暗号化されたランダム鍵を生成し、
前記暗号化されたランダム鍵を鍵記憶メモリに記憶し、
前記暗号化されたランダム鍵を用いて前記コードイメージを暗号化するように動作する、請求項8に記載の集積回路。
【請求項11】
前記起動ROMは更に、
前記外部デバイスから前記コードイメージを受け取った後に、以前に暗号化された前記コードイメージのバージョンが前記集積回路の内部メモリ内に存在していないことを決定するように動作する、請求項9に記載の集積回路。
【請求項12】
前記起動ROMは更に、
前記外部デバイスから前記コードイメージを受け取った後に、以前に暗号化された前記コードイメージのバージョンが前記集積回路の内部メモリ内に存在することを決定するとともに、
前記コードイメージのコード更新が要求されていることを決定するように動作する、請求項9に記載の集積回路。
【請求項13】
前記周辺機器制御器は更に、
前記集積回路の前記内部メモリへのフラッシングローダコードのプッシュを受け取るように動作し、
前記起動ROMは更に、
前記フラッシングローダコードが信頼されるものであることを検証するとともに、前記フラッシングローダコードを実行するように動作し、
前記フラッシングローダコードは、
前記外部デバイスとチャレンジ/レスポンスセキュリティルーチンを実行し、
前記チャレンジ/レスポンスセキュリティルーチンに対する正しい応答に応じて前記外部デバイスからの前記コードイメージのプッシュを得るように動作する、請求項12に記載の集積回路。
【請求項14】
前記暗号法論理に動作可能に接続されるハードウエア固有鍵論理を備え、
前記ハードウエア固有鍵論理は、
前記ハードウエア固有鍵に対する要求を前記暗号法論理から受け取り、
前記要求に応答して前記ハードウエア固有鍵を前記暗号法論理へ送るように動作する、請求項8に記載の集積回路。
【請求項15】
前記ハードウエア固有鍵論理は、シリアルローダを更に備え、
前記暗号法論理は、前記ハードウエア固有鍵論理の前記シリアルローダに動作可能に接続されるシリアル受信機を更に備えており、
前記シリアル受信機は、一連のシリアルビットを前記シリアルローダから受け取るように動作し、
前記一連のシリアルビットは、前記ハードウエア固有鍵に対応している、請求項14に記載の集積回路。
【請求項16】
前記ハードウエア固有鍵は、予め定められたビットパターンに初期設定可能であり、
前記ビットパターンは、前記ハードウエア固有鍵に対応する前記一連のシリアルビットを生成するためのものであり、
前記ハードウエア固有鍵論理は、初期設定の後に前記予め定められたビットパターンに恒久的に設定される、請求項15に記載の集積回路。
【請求項17】
前記暗号法論理は前記ランダム鍵を生成するように動作する乱数発生論理を更に備えている、請求項10に記載の集積回路。
【請求項18】
外部デバイスを制御してそこからのコードイメージを受け取るように動作する周辺機器制御器と、
メモリと、
ハードウエア固有鍵論理と、
前記メモリ及び前記ハードウエア固有鍵論理に動作可能に接続される暗号法論理と、
前記暗号法論理に動作可能に接続されるメモリ制御器と、
前記メモリ制御器に動作可能に接続される起動ROMと、を備えた集積回路であって、
前記暗号法論理は、
前記集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵に対する要求を前記ハードウエア固有鍵論理に送り、
前記要求に応答して前記ハードウエア固有鍵を前記ハードウエア固有鍵論理から受け取り、
前記ハードウエア固有鍵を用いて前記コードイメージを暗号化して、前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ実行可能なハードウエア固有コードイメージを生成し、
前記ハードウエア固有コードイメージを前記メモリに記憶するように動作し、
前記起動ROMは、
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する要求を前記暗号法論理に送り、
前記復号化の後に前記ハードウエア固有コードイメージを実行するように動作する、集積回路。
【請求項19】
前記周辺機器制御器、前記メモリ、前記ハードウエア固有鍵論理、前記暗号法論理、前記メモリ制御器及び前記起動ROMに動作可能に接続されるCPUを備え、
前記CPUは、前記起動ROMの前記要求に応じて、前記暗号法論理にランダム鍵を生成させる命令を前記暗号法論理に送るように動作し、
前記暗号法論理は更に、
前記命令に応答して前記ランダム鍵を生成し、
前記ハードウエア固有鍵を用いて前記ランダム鍵を暗号化して暗号化されたランダム鍵を生成し、
前記暗号化されたランダム鍵を鍵記憶メモリに記憶し、
前記暗号化されたランダム鍵を用いて前記コードイメージを暗号化するように動作する、請求項18に記載の集積回路。
【請求項20】
前記周辺機器制御器は更に、
前記集積回路の内部メモリへのフラッシングローダコードのプッシュを受け取るように動作し、
前記起動ROMは更に、
前記フラッシングローダコードが信頼されるものであることを検証し、
前記フラッシングローダコードを実行し、
前記外部デバイスとチャレンジ/レスポンスセキュリティルーチンを実行し、
前記チャレンジ/レスポンスセキュリティルーチンに対する正しい応答に応じて前記外部デバイスからの前記コードイメージのプッシュを得るように動作する、請求項19に記載の集積回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公表番号】特表2011−522469(P2011−522469A)
【公表日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願番号】特願2011−509700(P2011−509700)
【出願日】平成21年5月14日(2009.5.14)
【国際出願番号】PCT/US2009/043941
【国際公開番号】WO2009/140487
【国際公開日】平成21年11月19日(2009.11.19)
【出願人】(508301087)エーティーアイ・テクノロジーズ・ユーエルシー (68)
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
【Fターム(参考)】
【公表日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願日】平成21年5月14日(2009.5.14)
【国際出願番号】PCT/US2009/043941
【国際公開番号】WO2009/140487
【国際公開日】平成21年11月19日(2009.11.19)
【出願人】(508301087)エーティーアイ・テクノロジーズ・ユーエルシー (68)
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
【Fターム(参考)】
[ Back to top ]