(57)【要約】【解決手段】  ここに開示される種々の実施形態は、集積回路（１００）が外部デバイス（１２７）からコードイメージを受け取り、暗号法論理（１１３）をハードウエア固有鍵と共に用いてコードイメージを暗号化してハードウエア固有コードイメージ（１１９）を生成してよい方法を含み、そこではハードウエア固有鍵は外部デバイス（１２７）からはアクセスすることができない。集積回路（１００）は次いでハードウエア固有コードイメージを記憶することとなり、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。方法はまた、ハードウエア固有鍵を用いる暗号法論理（１１３）によるハードウエア固有コードイメージの復号化を要求する命令を暗号法論理（１１３）に送ることと、復号化の後に起動ソフトウエア（１０３）によりハードウエア固有コードイメージを実行することとを含む。【選択図】図１
2011522469.tif 000002
【特許請求の範囲】
【請求項１】
外部デバイスからはアクセスすることのできないハードウエア固有鍵を用いる暗号法論理によって外部デバイスからのコードイメージを暗号化してハードウエア固有コードイメージを生成することと、
前記ハードウエア固有コードイメージを記憶することと、を備えた方法であって、
前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ、前記ハードウエア固有コードイメージが実行可能である、方法。
【請求項２】
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する命令を前記暗号法論理に送ることと、
前記ハードウエア固有コードイメージを復号化することと、
前記復号化の後に、起動ソフトウエアにより前記ハードウエア固有コードイメージを実行することと、を備えた、請求項１に記載の方法。
【請求項３】
前記外部デバイスからはアクセスすることのできないハードウエア固有鍵を用いる暗号法論理によって前記コードイメージを暗号化してハードウエア固有コードイメージを生成することは、
前記暗号法論理がランダム鍵を生成することを要求する命令を前記暗号法論理に送ることと、
前記暗号法論理によってランダム鍵を生成することと、
前記ハードウエア固有鍵を用いる前記暗号法論理によって前記ランダム鍵を暗号化することと、
前記暗号化されたランダム鍵をメモリ内に記憶することと、
前記暗号化されたランダム鍵を用いる前記暗号法論理によって前記コードイメージを暗号化することと、を更に備えた、請求項１に記載の方法。
【請求項４】
外部デバイスからのコードイメージを受け取った後に、
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在していないことを決定する、請求項１に記載の方法。
【請求項５】
外部デバイスからのコードイメージを受け取った後に、
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在しており、コード更新が要求されていることを決定する、請求項１に記載の方法。
【請求項６】
以前に暗号化された前記コードイメージのバージョンがメモリ内に存在しており、コード更新が要求されていることを決定した後に、
フラッシングローダコードをメモリ内にプッシュすることと、
前記フラッシングローダコードが信頼されるものであることを起動ソフトウエアにより検証することと、
前記フラッシングローダコードを実行することと、
チャレンジ／レスポンスセキュリティルーチンを外部デバイスと実行することと、
前記外部デバイスからのコードイメージのプッシュを得ることと、を備えた、請求項５に記載の方法。
【請求項７】
ハードウエア固有鍵を用いる暗号法論理により前記コードイメージを暗号化する前に、
ハードウエア固有鍵シリアルローダからハードウエア固有鍵を要求することと、
前記ハードウエア固有鍵に対応する一連のシリアルビットをシリアル受信機により前記シリアルローダから受け取ることと、を備えた、請求項１に記載の方法。
【請求項８】
メモリと、前記メモリに接続される暗号法論理とを備えた集積回路であって、
前記暗号法論理は、
前記集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵を用いてコードイメージを暗号化し、もってハードウエア固有コードイメージを生成するとともに、
前記ハードウエア固有コードイメージを前記メモリ内に記憶するように動作し、
前記ハードウエア固有コードイメージは、
前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ、実行可能である、集積回路。
【請求項９】
外部デバイスを制御してそこからの前記コードイメージを受け取るように動作する周辺機器制御器と、
前記暗号法論理に接続されるメモリ制御器と、
前記メモリ制御器に接続される起動ＲＯＭと、を備え、
前記起動ＲＯＭは、
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する要求を前記暗号法論理に送るとともに、
前記復号化の後に前記ハードウエア固有コードイメージを実行するように動作する、請求項８に記載の集積回路。
【請求項１０】
前記メモリ及び前記暗号法論理に動作可能に接続されたＣＰＵを備え、
前記メモリ制御器は、前記メモリ制御器の前記要求に応じて、前記暗号法論理にランダム鍵を生成させる命令を前記暗号法論理に送るように動作し、
前記暗号法論理は更に、
前記命令に応答して前記ランダム鍵を生成し、
前記ハードウエア固有鍵を用いて前記ランダム鍵を暗号化して暗号化されたランダム鍵を生成し、
前記暗号化されたランダム鍵を鍵記憶メモリに記憶し、
前記暗号化されたランダム鍵を用いて前記コードイメージを暗号化するように動作する、請求項８に記載の集積回路。
【請求項１１】
前記起動ＲＯＭは更に、
前記外部デバイスから前記コードイメージを受け取った後に、以前に暗号化された前記コードイメージのバージョンが前記集積回路の内部メモリ内に存在していないことを決定するように動作する、請求項９に記載の集積回路。
【請求項１２】
前記起動ＲＯＭは更に、
前記外部デバイスから前記コードイメージを受け取った後に、以前に暗号化された前記コードイメージのバージョンが前記集積回路の内部メモリ内に存在することを決定するとともに、
前記コードイメージのコード更新が要求されていることを決定するように動作する、請求項９に記載の集積回路。
【請求項１３】
前記周辺機器制御器は更に、
前記集積回路の前記内部メモリへのフラッシングローダコードのプッシュを受け取るように動作し、
前記起動ＲＯＭは更に、
前記フラッシングローダコードが信頼されるものであることを検証するとともに、前記フラッシングローダコードを実行するように動作し、
前記フラッシングローダコードは、
前記外部デバイスとチャレンジ／レスポンスセキュリティルーチンを実行し、
前記チャレンジ／レスポンスセキュリティルーチンに対する正しい応答に応じて前記外部デバイスからの前記コードイメージのプッシュを得るように動作する、請求項１２に記載の集積回路。
【請求項１４】
前記暗号法論理に動作可能に接続されるハードウエア固有鍵論理を備え、
前記ハードウエア固有鍵論理は、
前記ハードウエア固有鍵に対する要求を前記暗号法論理から受け取り、
前記要求に応答して前記ハードウエア固有鍵を前記暗号法論理へ送るように動作する、請求項８に記載の集積回路。
【請求項１５】
前記ハードウエア固有鍵論理は、シリアルローダを更に備え、
前記暗号法論理は、前記ハードウエア固有鍵論理の前記シリアルローダに動作可能に接続されるシリアル受信機を更に備えており、
前記シリアル受信機は、一連のシリアルビットを前記シリアルローダから受け取るように動作し、
前記一連のシリアルビットは、前記ハードウエア固有鍵に対応している、請求項１４に記載の集積回路。
【請求項１６】
前記ハードウエア固有鍵は、予め定められたビットパターンに初期設定可能であり、
前記ビットパターンは、前記ハードウエア固有鍵に対応する前記一連のシリアルビットを生成するためのものであり、
前記ハードウエア固有鍵論理は、初期設定の後に前記予め定められたビットパターンに恒久的に設定される、請求項１５に記載の集積回路。
【請求項１７】
前記暗号法論理は前記ランダム鍵を生成するように動作する乱数発生論理を更に備えている、請求項１０に記載の集積回路。
【請求項１８】
外部デバイスを制御してそこからのコードイメージを受け取るように動作する周辺機器制御器と、
メモリと、
ハードウエア固有鍵論理と、
前記メモリ及び前記ハードウエア固有鍵論理に動作可能に接続される暗号法論理と、
前記暗号法論理に動作可能に接続されるメモリ制御器と、
前記メモリ制御器に動作可能に接続される起動ＲＯＭと、を備えた集積回路であって、
前記暗号法論理は、
前記集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵に対する要求を前記ハードウエア固有鍵論理に送り、
前記要求に応答して前記ハードウエア固有鍵を前記ハードウエア固有鍵論理から受け取り、
前記ハードウエア固有鍵を用いて前記コードイメージを暗号化して、前記ハードウエア固有鍵を用いて前記ハードウエア固有コードイメージを復号化した後にのみ実行可能なハードウエア固有コードイメージを生成し、
前記ハードウエア固有コードイメージを前記メモリに記憶するように動作し、
前記起動ＲＯＭは、
前記ハードウエア固有鍵を用いる前記暗号法論理による前記ハードウエア固有コードイメージの復号化を要求する要求を前記暗号法論理に送り、
前記復号化の後に前記ハードウエア固有コードイメージを実行するように動作する、集積回路。
【請求項１９】
前記周辺機器制御器、前記メモリ、前記ハードウエア固有鍵論理、前記暗号法論理、前記メモリ制御器及び前記起動ＲＯＭに動作可能に接続されるＣＰＵを備え、
前記ＣＰＵは、前記起動ＲＯＭの前記要求に応じて、前記暗号法論理にランダム鍵を生成させる命令を前記暗号法論理に送るように動作し、
前記暗号法論理は更に、
前記命令に応答して前記ランダム鍵を生成し、
前記ハードウエア固有鍵を用いて前記ランダム鍵を暗号化して暗号化されたランダム鍵を生成し、
前記暗号化されたランダム鍵を鍵記憶メモリに記憶し、
前記暗号化されたランダム鍵を用いて前記コードイメージを暗号化するように動作する、請求項１８に記載の集積回路。
【請求項２０】
前記周辺機器制御器は更に、
前記集積回路の内部メモリへのフラッシングローダコードのプッシュを受け取るように動作し、
前記起動ＲＯＭは更に、
前記フラッシングローダコードが信頼されるものであることを検証し、
前記フラッシングローダコードを実行し、
前記外部デバイスとチャレンジ／レスポンスセキュリティルーチンを実行し、
前記チャレンジ／レスポンスセキュリティルーチンに対する正しい応答に応じて前記外部デバイスからの前記コードイメージのプッシュを得るように動作する、請求項１９に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は種々の集積回路プロセッサによる実行のためにソフトウエアイメージを保護することに関する。
【背景技術】
【０００２】
ワイヤレス通信デバイス等の電子デバイスは、技術の進歩、消費者の要望、及び製品差別化に対する要求等のマーケティング推進力に基き、高水準な性能へ絶えず駆り立てられている。今日利用可能な処理能力は、高水準な性能とプログラム可能であることを通しての柔軟性とを提供するシステムオンチップ（ＳＯＣ）集積回路のような高性能なプロセッサを用いることによって、それらの要求の多くを満足させることを可能にしている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
その結果、性能、新たな特徴や機能等を提供するためにソフトウエア及びソフトウエア開発が欠かせないものとなってきた。しかし、ソフトウエアの普及に伴い、ソフトウエアを不正使用あるいは悪意の目的のための変更から保護する必要性もまた生じている。例えば、ソフトウエアは集積回路レベルでさえもチップの特定の特徴及び機能に向けられた攻撃によって不正使用されあるいは変更される可能性がある。同時に、デバッグや更新のためあるいは種々の開発要求のためにソフトウエアへのアクセスを得る必要性もあろう。また、主要なコピーが破損して使用不可能になった場合にソフトウエアのバックアップを提供可能であることが望ましい。しかし、ソフトウエアのコピーが容易にアクセス可能であることは、コードの不正使用等の原因になり得るので、不適切であろう。
【０００４】
例えば、与えられた電子デバイスに特有の、より具体的にはその電子デバイス内の集積回路に特有の種々のコードイメージを有することで、コードイメージがいかなる他のデバイスによっても使用可能ではなくあるいは変更可能ではなくすることが望ましいであろう。
【課題を解決するための手段】
【０００５】
ここに開示される種々の実施形態は、集積回路が外部デバイスからコードイメージを受け取り、暗号法論理(cryptographic logic)をハードウエア固有鍵と共に用いてコードイメージを暗号化してハードウエア固有コードイメージを生成してよい方法を含み、そこではハードウエア固有鍵は外部デバイスからはアクセスすることができない。集積回路は次いでハードウエア固有コードイメージを記憶することとなり、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。
【０００６】
方法はまた、ハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化を要求する命令を送ることと、復号化の後に起動ソフトウエアによりハードウエア固有コードイメージを実行することとを含む。
【０００７】
ここに開示される実施形態はまた、メモリ、及びメモリに接続される暗号法論理を含む集積回路を提供する。暗号法論理はハードウエア固有鍵を用いてコードイメージを暗号化しハードウエア固有コードイメージを生成するように動作し、ハードウエア固有鍵は集積回路のいかなるポートを介してもアクセスすることができない。集積回路はハードウエア固有コードイメージをメモリ内に記憶する能力を更に含み、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。
【０００８】
ここに開示される集積回路はまた、外部デバイスを制御してコードイメージを受け取るように動作する周辺機器制御器と、暗号法論理に接続されるメモリ制御器と、メモリ制御器に接続されてハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化のための要求を送り、復号化の後にハードウエア固有コードイメージを実行するように動作する起動ＲＯＭとを含んでいてよい。
【０００９】
ここに開示される集積回路は、外部デバイスを制御してコードイメージを受け取るように動作する周辺機器制御器と、メモリと、ハードウエア固有鍵論理と、メモリ及びハードウエア固有鍵論理に接続され、集積回路のいかなるポートを介してもアクセスすることのできないハードウエア固有鍵に対する要求をハードウエア固有鍵論理に送り、要求に応答してハードウエア固有鍵をハードウエア固有鍵論理から受け取り、ハードウエア固有鍵を用いてコードイメージを暗号化してハードウエア固有コードイメージを生成し、ハードウエア固有コードイメージをメモリに記憶するように動作する暗号法論理とを含み、ハードウエア固有コードイメージはハードウエア固有鍵を用いる復号化の後にのみ実行可能である。集積回路は、暗号法論理に接続されるメモリ制御器と、メモリ制御器に接続される起動ＲＯＭとを更に含み、起動ＲＯＭは、ハードウエア固有鍵を用いる暗号法論理によるハードウエア固有コードイメージの復号化を要求する要求を暗号法論理に送り、復号化の後にハードウエア固有コードイメージを実行するように動作する。
【００１０】
ここに開示される集積回路はまた、メモリへのアクセスを仲裁するように動作するメモリ制御器を含んでいてよい。集積回路は更に、暗号法論理にランダム鍵を生成させる命令を起動ＲＯＭの要求に応じて暗号法論理に送るように動作してよく、暗号法論理は更に、命令に応答してランダム鍵を生成し、ハードウエア固有鍵を用いてランダム鍵を暗号化して暗号化されたランダム鍵を生成し、暗号化されたランダム鍵を鍵記憶メモリに記憶し、暗号化されたランダム鍵を用いてコードイメージを暗号化するように動作する。代替的には、幾つかの実施形態では、ランダム鍵は暗号化されていない形態で用いられてよい。
【００１１】
ここに開示される集積回路は、集積回路の内部メモリへのフラッシュローダコードのプッシュを受け取るように動作する周辺機器制御器を更に含んでいてよく、起動ＲＯＭは、フラッシュローダコードが信頼されたコードであることを検証し、フラッシュローダコードを実行し、外部デバイスとチャレンジ／レスポンスセキュリティルーチンを実行し、チャレンジ／レスポンスセキュリティルーチンに対する正しい応答に応じて外部デバイスからのコードイメージのプッシュを得るように動作する。
【図面の簡単な説明】
【００１２】
【図１】図１は実施形態に従う集積回路のブロック図である。
【図２】図２は実施形態に従うハードウエア固有鍵論理に接続される暗号法論理を示すブロック図である。
【図３】図３は外部デバイスからコードイメージが受け取られてハードウエア固有鍵を用いて暗号化される実施形態に従う集積回路の高度な動作を示すフローチャートである。
【図４】図４はハードウエア固有鍵を用いるハードウエア固有コードイメージの復号化を要求する命令が送られる実施形態の動作を示すフローチャートである。
【図５】図５は暗号法論理がハードウエア固有鍵論理からハードウエア固有鍵を取得する実施形態の動作を示すフローチャートである。
【図６】図６は汎用コードイメージが集積回路内にプッシュされて暗号化されたランダム鍵を用いて暗号化される実施形態のためのフローチャートである。
【図７】図７はハードウエア固有鍵を用いて暗号化されたランダム鍵を用いる復号化ソフトウエアのための実施形態のためのフローチャートである。
【図８】図８はフラッシングローダを利用する実施形態のためのフローチャートである。
【図９】図９はアップグレードが必要とされなくてよい場合における、以前に記憶されたコードの検出を示すフローチャートである。
【図１０】図１０はハードウエア固有鍵論理と暗号法論理の間でハードウエア固有鍵情報を安全に転送するためのこれらの間の安全な通信回線を有する一つの実施形態の詳細を示すブロック図である。
【図１１】図１１はデバイスＩＤ、ハードウエア固有鍵およびロッキングビットを含んでいてよいハードウエア固有鍵情報を示すビットマップである。
【図１２】図１２は図１０に示される実施形態の動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
先ず図面を参照すると、同様の数字は同様の構成要素を示しており、図１は幾つかの実施形態ではシステムオンチップ（ＳＯＣ）集積回路であってよい集積回路（ＩＣ）１００のブロック図である。集積回路１００は物理的接続、例えば限定はされないが外部デバイス１２７及び外部記憶装置１２９との集積回路１００の接続を可能にする物理的接続１３１及び１３３を有していてよい。外部デバイス１２７はサーバであってよく、あるいは命令を送信及び受信するために集積回路１００と通信可能なプロセッサを有する適切なデバイスであってよい。換言すれば、外部デバイス１２７はプロトコルを用いて集積回路１００と通信することができ、プロトコルはハンドシェーキングを含んでいてよく、あるいは限定はされないが公開／私的鍵交換のようなセキュリティ手続きを含む他の交渉手続きを含んでいてよい。外部記憶装置１２９は種々のタイプの記憶装置であってよく、例えばＳＤメモリ又はＮＡＮＤフラッシュメモリあるいは限定はされないがＵＳＢハードドライブのような任意の他の適切な記憶装置であってよい。外部記憶装置１２９は、中央処理ユニット１０５に接続されて中央処理ユニット１０５と情報のやりとりを行う周辺機器制御器１０６を介して集積回路１００と情報をやりとりすることができる。また、中央処理ユニット１０５はメモリ制御器１０１に接続される。メモリ制御器１０１は、内部ＲＡＭ１０７及び外部ＲＡＭ１１７等のメモリに対するＣＰＵ及び他の構成要素によるアクセスを仲裁する。メモリ制御器１０１は、ＣＰＵの指示の下でメモリの種々の領域をセキュアメモリとして特徴付けてよい。
【００１４】
スタティックＲＡＭであってよい内部ＲＡＭ１０７は、集積回路のダイ上に物理的に配置することができる。例えばＤＲＡＭであってよい外部ＲＡＭ１１７は、物理的には集積回路１００のパッケージ内にあってよいが、メモリ制御器と同じダイ上にある必要はない。しかし、メモリは集積回路１００のダイ上であろうとダイから離れていようと任意の適切な位置に配置されてよい。メモリ制御器１０１は更に起動ＲＯＭ１０３に接続される。起動ＲＯＭ１０３は集積回路１００の起動手続きを制御し、集積回路１００の起動の目的のために作用する起動ＲＯＭソフトウエア及び／又は論理を含んでいてよい。例えば、起動ＲＯＭ１０３は起動ＲＯＭ１０３から実行されるソフトウエアを参照してよく、この場合起動ＲＯＭソフトウエアが中央処理ユニット１０５によって実行される。他の実施形態では、起動ＲＯＭ１０３はソフトウエアを含んでいてよく、更にそのソフトウエアと情報をやりとりするあるいはそのソフトウエアとは独立して作用する論理による論理動作を含んでいてよい。更に、起動ＲＯＭ１０３はセキュアメモリを含むことができ、セキュアメモリは集積回路１００の種々の非起動関連論理によるアクセスからロックされる。
【００１５】
メモリ制御器１０１は更に暗号化論理１０２に接続されていてよく、暗号化論理１０２は、集積回路１００により用いられる種々の情報、例えば限定はされないがソフトウエアコードあるいはビデオ媒体ソフトウエア等のソフトウエアを暗号化及び復号化するための種々の暗号鍵を暗号化するためのものである。暗号化論理１０２は例えば、ソフトウエアコードをハッシング(hashing)して例えば内部ＲＡＭ１０７又は外部ＲＡＭ１１７への記憶のためのメモリ制御器にハッシュ(hash)を供給するためのハッシング論理であってよい。メモリ制御器１０１はまた暗号法論理１１３に接続される。暗号法論理１１３は、例えば中央処理ユニット１０５によって集積回路１００に取り込まれて実行されることになる種々のソフトウエアイメージの有効性を点検するために用いられる。暗号法論理１１３は幾つかの実施形態では暗号法コアプロセッサ(crypto core processor)であってよく、あるいはＡＳＩＣ又はここに提供される説明に従ってソフトウエアコードを暗号化及び復号化するのに適した他の適切な論理であってよい。幾つかの実施形態における暗号法論理は、乱数発生器１２１、鍵格納メモリ１２３及びハードウエア固有鍵記憶装置(Hardware Unique Key storage)１２５を更に含んでいてよい。
【００１６】
集積回路１００は更に、集積回路１００構成に関係する情報を含んでいてよいハードウエア固有鍵論理１１５を含む。ハードウエア固有鍵論理１１５は一旦とんだら回復することのできないヒューズを含む。そのためにハードウエア固有鍵論理１１５は、集積回路１００内での種々のソフトウエアの暗号化のために用いられてよい一連の恒久ビット(a permanent set of bits)を生成する。このようにハードウエア固有鍵論理１１５は、以下に更に説明されるようなイメージを暗号化するのに用いられるハードウエア固有鍵を生成する。
【００１７】
ハードウエア固有鍵論理は暗号法論理１１３に接続され、クロック論理１１４からのクロック信号を暗号法論理１１３と共用する。ハードウエア固有鍵論理１１５ビットパターンはハードウエア固有鍵を構成し、クロック論理１１４からのクロック信号を用いてシリアルに暗号法論理１１３へクロックされてよい。暗号法論理は次いで、ハードウエア固有鍵をハードウエア固有鍵格納メモリ１２５に記憶させてよい。ハードウエア固有鍵は集積回路１００に特有のものであり、いかなる他の集積回路におけるいかなる他のハードウエア固有鍵とも異なる。ハードウエア固有鍵論理１１５に記憶されまたハードウエア固有鍵格納メモリ１２５内にあるハードウエア固有鍵は、集積回路１００のいかなるインタフェースを介してもアクセスすることはできない。つまり、ハードウエア固有鍵は、メモリ制御器１０１を介してあるいは集積回路１００内のいかなる他の論理を介しても、ハードウエア固有鍵論理１１５、暗号法論理１１３から読み出すことはできない。
【００１８】
この処理は図２に更に詳細に示されている。図２に示されるように、ハードウエア固有鍵論理１１５はシリアルローダ２０１を含み、シリアルローダ２０１は暗号法論理１１３内の対応するシリアル受信機２０３に接続される。ハードウエア固有鍵論理１１５からのハードウエア固有鍵を表すビットパターンは、クロック論理１１４により生成されるクロック信号を用いてシリアルローダ２０１を介して暗号法論理１１３のシリアル受信機２０３へクロックされる。シリアル受信機２０３は、暗号法論理１１３の外部からの論理によってはアクセスすることのできないハードウエア固有鍵格納メモリ１２５にハードウエア固有鍵を受け渡す。
【００１９】
種々の実施形態によると、暗号法論理１１３内に記憶されるハードウエア固有化鍵は、そのハードウエア固有鍵を用いて暗号化されたソフトウエアが集積回路１００に固有なものとなり且ついかなる他の集積回路あるいはデバイスによっても使用され得ないように、集積回路１００に取り込まれたソフトウエアを暗号化するために用いられてよい。種々の実施形態の例示的な方法が図３に示されている。ステップ３０１では、集積回路が外部デバイスからのコードイメージを受信する。外部デバイスは、サーバ、例えばサーバ１２７、又は外部記憶装置、例えば外部記憶装置１２９のようなＮＡＮＤフラッシュメモリ若しくはＳＤメモリであってよい。ステップ３０３では、コードイメージがハードウエア固有鍵を用いて暗号法論理１１３によって暗号化されてハードウエア固有コードイメージが生成され、この場合ハードウエア固有鍵は外部デバイス１２７にとってはアクセスすることができない。同様に、暗号化されたコードイメージはいかなる外部デバイスあるいは集積回路によっても使用することはできない。ステップ３０５では、ハードウエア固有コードイメージが集積回路１００内に記憶されてよく、そこではコードイメージを復号化するハードウエア固有鍵を用いる復号化動作の後にのみハードウエア固有コードイメージが実行可能である。例えば図１においては、周辺機器制御器１０６を介して取得されてよく内部ＲＡＭ１０７内にイメージ１１１として記憶されてよいコードイメージ１１１を外部デバイス１２７が供給することができる。ＣＰＵ１０５は、暗号法論理１１３がハードウエア固有鍵格納メモリ１２５に記憶されているハードウエア固有鍵を用いてイメージ１１１を暗号化することを要求してよい。イメージ１１１の暗号化の後、暗号化されたイメージは最終集積回路イメージ１１９として例えば図１に示される外部ＲＡＭ１１７内に記憶されてよい。最終集積回路イメージ１１９はその結果、集積回路１００の外部のいかなるデバイスにとっても使用することはできない。
【００２０】
図４は最終集積回路イメージ１１９が中央処理ユニット１０５によって実行されてよい種々の実施形態の方法を示している。例えばステップ４０１では、起動ＲＯＭ１０３が暗号法論理１１３に命令を送信して、ハードウエア固有鍵を用いるハードウエア固有コードイメージ最終集積回路イメージ１１９の復号化を要求してよい。暗号法論理１１３は次いで外部ＲＡＭ１１７から最終集積回路イメージ１１９を取得して、ハードウエア固有鍵格納メモリ１２５に記憶されているハードウエア固有鍵を用いてそれを復号化することができる。ステップ４０３に示されるように、起動ＲＯＭ１０３は次いで復号化の後にハードウエア固有コードイメージを実行することができる。
【００２１】
図５は図２に関して既に説明したような方法を示している。ステップ５０１に示されるように暗号法論理１１３は、ハードウエア固有鍵論理１１５からのハードウエア固有鍵データを要求し、ステップ５０３では、ハードウエア固有鍵論理１１５が、図２に示される制御器２０２を介して、ハードウエア固有鍵ビットパターンを暗号法論理シリアル受信機２０３に送信するようシリアルローダ２０１に指示する。ステップ５０５に示されるように、暗号法論理１１３はハードウエア固有鍵をハードウエア固有鍵格納メモリ１２５に記憶する。図６は汎用コードイメージがステップ６０１に示されるように集積回路１００内にプッシュされてよい種々の実施形態の詳細を示している。図６には示されていないが、集積回路１００内にプッシュされる任意の汎用コードが有効なコードであることを起動ＲＯＭ１０３ソフトウエアは検証してよい。例えば、集積回路１００はチャレンジ／レスポンスあるいは幾つかの他の適切なセキュリティメカニズムを外部デバイス１２７と集積回路１００の間で実行して、外部デバイス１２７が集積回路１００に対するソフトウエアの権限のある提供者であることを検証してよい。従って、実施形態によると、ステップ６０１に示されるようにＩＣ内にプッシュされた汎用コードイメージは、そのコードイメージに関して任意の更なる動作が実行されるよりも前に集積回路１００によって有効性が確認されることとなる。ステップ６０３では、集積回路１００は、種々のメモリ位置を読み出すことによって、内部ＲＡＭ１０７あるいは外部ＲＡＭ１１７等のメモリ内に以前に記憶された汎用コードイメージの暗号化バージョンが存在していないことを検出することになる。この動作は例えば起動ＲＯＭ１０３によって実行されてよい。
【００２２】
ステップ６０３において以前に記憶されたバージョンが無かったとすると、ステップ６０５で起動ＲＯＭ１０３はランダム鍵を生成するよう要求する命令を暗号法論理１１３に送ってよい。ステップ６０７に示されるように、暗号法論理１１３は乱数発生器１２１を用いて要求されたランダム鍵を生成することができ、乱数発生器１２１は幾つかの実施形態では真の乱数発生器であってよい。ステップ６０９に示されるように、暗号法論理１１３は続いてハードウエア固有鍵格納メモリ１２５に記憶されているハードウエア固有鍵を用いてランダム鍵を暗号化することができ、その後起動ＲＯＭ１０３が暗号化されたランダム鍵をメモリ内の適切な場所に記憶してよい。ステップ６１１に示されるように、暗号法論理は次いで暗号化されたランダム鍵を用いてコードイメージ、例えばコードイメージ１１１を暗号化して、続いて暗号化されたコードイメージを例えば最終集積回路イメージ１１９として記憶することができる。
【００２３】
図７のステップ７０１では、最終集積回路イメージ１１９を実行するために、起動ＲＯＭソフトウエア１０３はランダム鍵を暗号化された形態で暗号法論理１１３に送り、暗号法論理１１３がランダム鍵を用いて最終集積回路イメージ１１９を復号化するよう要求することとなる。幾つかの実施形態では、ランダム鍵はハードウエア固有鍵を用いて復号化されなければならない。ステップ７０３に示されるように、最終集積回路イメージ１１９は、ランダム鍵を用いてそれを復号化する起動ＲＯＭ１０３からの要求と共に暗号法論理を通過させられることになる。ステップ７０５では、暗号法論理は追加的なハッシング試験を復号化されたイメージに対して実行してよく、この場合ハッシュもまたハードウエア固有鍵を用いて暗号化される。
【００２４】
図８は他の実施形態を示しており、そこでは信頼されたフラッシュローダコードのプッシュを受け取ることによって集積回路１００が最初にフラッシュされてよい。ステップ８０１に示されるように、汎用コードイメージが集積回路内に押し込まれてよく、又は代替的には遠隔サーバ１２７若しくはステップ８０９に示される外部記憶装置１２９のようなローカルデバイスを介して集積回路内にプッシュされてよい。２つの実施形態のいずれに対しても、信頼されたフラッシュローダコードの集積回路１００内へのプッシュがステップ８０３に示されるように生じることとなる。起動ＲＯＭ１０３は例えばセキュアハッシュを用いてフラッシュローダコードを調べることになる。このことは例えば公開／私的鍵ペアの使用を伴い、あるいは他の適切なセキュリティメカニズムが当業者によって理解されるであろう。ステップ８０７では、フラッシュローダコード、例えば図１に示されるフラッシュローディングモジュール１０９が外部デバイス、例えば外部サーバ１２７と共にチャレンジ／レスポンスを実行して、ステップ８０９に示されるように汎用コードのプッシュを得ることができる。種々の実施形態に従うと、既に説明したようなハードウエア固有鍵を用いて汎用コードを暗号化することができる。
【００２５】
図９は汎用コードイメージが集積回路に供給される種々の状況に対する集積回路１００の動作を示している。例えば、集積回路への汎用コードのプッシュがあれば、ステップ９０１に示されるように種々のメモリ位置を読み出すことにより、以前に記憶された暗号化されたバージョンが存在しないことを検出するために起動ＲＯＭ１０３が調査してよい。ステップ９０３に示されるように、起動ＲＯＭは、コードは確かに存在するが、例えば古いバージョンがメモリに存在しているのものの新しいバージョンはアップグレードの目的でデバイス内にプッシュされてしまっている場合に、新たなコードが依然として必要だということを検出することができる。ステップ９０７では、起動ＲＯＭ１０３は、既に説明した暗号法処理あるいは図８に関して説明したフラッシュローダ処理を開始してよい。
【００２６】
図１０はハードウエア固有鍵論理１１５から暗号法論理１１３にハードウエア固有鍵情報を安全に転送するための実施形態を示している。図示された実施形態によると、ハードウエア固有鍵論理１１５及び暗号法論理１１３は要求回線１００１、検証回線１００３及びデータ回線１００５からなる安全な通信回線を有している。暗号法論理１１３を除き一切のメカニズムがハードウエア固有鍵情報にアクセスすることができないように、その安全な通信回線は集積回路のいかなる走査チェインからも、そしていかなる試験メカニズムからも隔離されている。ハードウエア固有鍵論理１１５は、安全な環境で、例えば集積回路の製造に際して、ハードウエア固有鍵と、そして幾つかの実施形態ではデバイスＩＤと共に初期の段階でプログラムされる。
【００２７】
図１１は例示的なハードウエア固有鍵情報を示すビットマップである。例えば幾つかの実施形態では、ハードウエア固有鍵情報はデバイスＩＤ１１０１及びハードウエア固有鍵１１０３を含んでいてよい。ハードウエア固有鍵情報は幾つかの実施形態では単一ビットであってよいロック(lock)１１０５を更に含んでいてよい。例として、デバイスＩＤ１１０１は１２８ビット長であってよく、ハードウエア固有鍵は１２８ビット長であってよく、ロックは単一ビットであってよい。従って暗号法論理１１３はデバイスＩＤ１１０１を記憶するためのデバイスＩＤ格納庫１００７を含んでいてよい。
【００２８】
図１２は図１０に示される実施形態の動作を示している。ステップ１２０１では、集積回路のあるいはハードウエア固有鍵論理１１５のリセットが発生してよい。ステップ１２０３では、ハードウエア固有鍵論理１１５は上述した安全な環境プログラミングに対応する安全な内部固定ビット領域を読み出してよい。ステップ１２０５では、ハードウエア固有鍵論理１１５はビットパターンに対して周期的冗長性調査(cyclic redundancy check)（ＣＲＣ）を実行してその有効性を確保してよい。暗号法論理１１３は、ステップ１２０７に示されるように、セキュアデータ要求回線１００１を介してハードウエア固有鍵情報を要求してよい。ハードウエア固有鍵論理は次いで、ステップ１２０９に示されるように、検証回線１００３を介してハードウエア固有鍵情報の有効性を確認して、データ回線１００５を介して暗号法論理１１３にハードウエア固有鍵情報を供給してよい。図１１に示されるように、ロックビット１１０５は暗号法論理１１３にシリアルラインにおける最初のビットとして転送されて、例えば１２８ビットであってよいハードウエア固有鍵１１０３がそれに続き、次いで同様に１２８ビットであってよいデバイスＩＤ１１０１がそれに続くこととなり、幾つかの実施形態ではシリアル転送は最小桁ビットから最大桁ビットに向かう。ロックビットは、カウンタが不要になるように、暗号法論理１１３に対するフラグとして機能する。暗号法論理１１３は次いで、ステップ１２１１に示されるように、要求回線１００１上の要求を無効にしてよい。データ回線１００５を介してのハードウエア固有鍵情報の転送がこうして完了してよい。
【００２９】
上述した詳細な説明及びここに記述された例は例示及び記述のみを目的として示されたものであり、限定を目的とはしていない。例えば、説明された動作は任意の好適な方法で行われてよい。方法ステップは、説明された動作及び結果を提供する限りにおいて任意の適した順序で行われてよい。従って、本実施形態は上に開示され及びここに請求される基本的な内在的な原理の精神及び範囲に属するあらゆるそして全ての修正、変更又は均等なものを包含することが意図されている。
【図１】
2011522469.tif 000003
【図２】
2011522469.tif 000004
【図３】
2011522469.tif 000005
【図４】
2011522469.tif 000006
【図５】
2011522469.tif 000007
【図６】
2011522469.tif 000008
【図７】
2011522469.tif 000009
【図８】
2011522469.tif 000010
【図９】
2011522469.tif 000011
【図１０】
2011522469.tif 000012
【図１１】
2011522469.tif 000013
【図１２】
2011522469.tif 000014
【国際調査報告】
2011522469.tif 000015
2011522469.tif 000016
2011522469.tif 000017