説明

セキュアな信頼チェーンを実施する方法及びシステム

【課題】コンピュータシステムのセキュリティ及び/又はコンピュータシステムによりアクセスされるデータのセキュリティを改善するセキュリティメカニズムを提供する。
【解決手段】セキュアな信頼チェーンを実施するための方法、集積回路及びシステムが開示される。セキュアなブートモードでセキュアなブートコードを実行する間に、シークレットキーを使用して、低セキュアのブートコードが認証される。セキュアなブートモードの間に、セキュアなキーも計算又は発生される。認証された低セキュアのブートコードに制御が引き継がれた後に、セキュアなキーを使用して少なくとも1つのアプリケーションが認証される。低セキュアのブートモードで認証されると、プログラム可能な集積回路によりアプリケーションを実行することができる。このように、プログラム可能な集積回路に対してセキュアな信頼チェーンを実施することができる。

【発明の詳細な説明】
【関連出願】
【0001】
本出願は、ミシェル・コックス、フィリップ・スミス及びステファン・リューを発明者名とし、本発明の譲受人に譲渡され、代理人管理番号NVID−P−SC−08−0071−US1を有し、2008年2月11日に出願された“METHOD AND SYSTEM FOR GENERATING A SECURE KEY”と題する米国特許出願第12/029,432号に係る。この出願は、全ての目的で参考としてここにそのまま援用する。
【0002】
本出願は、ゴードン・グリガー及びフィリップ・スミスを発明者名とし、本発明の譲受人に譲渡され、代理人管理番号NVID−P−SC−08−0072−US1を有し、2008年2月11日に出願された“SECURE UPDATE OF BOOT IMAGE WITHOUT KNOWLEDGE OF SECURE KEY”と題する米国特許出願第12/029,467号に係る。この出願は、全ての目的で参考としてここにそのまま援用する。
【0003】
本出願は、フィリップ・スミス、ジョーン・サシノウスキー及びゴードン・グリガーを発明者名とし、本発明の譲受人に譲渡され、代理人管理番号NVID−P−SC−08−0073−US1を有し、2008年2月11日に出願された“MECHANISM FOR SECURE DOUNLOAD OF CODE TO A LOCKED SYSTEM”と題する米国特許出願第12/029,464号に係る。この出願は、全ての目的で参考としてここにそのまま援用する。
【0004】
本出願は、ミシェル・コックス、ゴードン・グリガー、フィリップ・スミス及びパーササラシー・スリラムを発明者名とし、本発明の譲受人に譲渡され、代理人管理番号NVID−P−SC−08−0074−US1を有し、2008年2月11日に出願された“HANDLING OF SECURE STORAGE KEY IN ALWAYS ON DOMAIN”と題する米国特許出願第12/029,463号に係る。この出願は、全ての目的で参考としてここにそのまま援用する。
【背景技術】
【0005】
コンピュータシステムに記憶されたデータをセキュアなものにし及び/又はシステムそれ自体のオペレーションをセキュアなものにするためにコンピュータシステムによりセキュリティメカニズムが通常使用されている。例えば、データへの無断アクセスを防止し又は制限するためにデータを暗号化することができる。更に、コンピュータシステムは、ブート映像を、中央処理ユニット(CPU)によりそれが実行される前に認証し、システムそれ自体及びシステムに記憶されたデータのセキュリティを改善することができる。
【0006】
従来のコンピュータシステムは、信頼性のあるプラットホームモジュール(TPM)を使用して、認証オペレーションを遂行する。例えば、CPUは、ブート映像にアクセスしてブート映像を認証のためにTPMに送信するマイクロコードを実行することができる。TPMは、ソフトウェア、又はCPUとは個別のハードウェア装置でしばしば実施される。認証されると、従来のコンピュータシステムは、システムをブートするための認証されたブートコードを実行する。
【発明の概要】
【発明が解決しようとする課題】
【0007】
TPMは、通常、デスクトップ(例えば、非ポータブル)コンピュータシステムに使用されるが、種々のアタック手段の影響を受け易い。例えば、許可のないユーザが、TPM又は他のシステムコンポーネントにおいてコードベースのアタック、ハードウェアベースのアタック、等を実行することにより、システム及び/又はデータのセキュリティを駄目にすることがある。従って、TPMは、あるシステム及び/又はデータについては充分なセキュリティ手段をなさない。
【0008】
従って、コンピュータシステムのセキュリティ、及び/又はコンピュータシステムによってアクセスされるデータのセキュリティを改善するセキュリティメカニズムのニーズが存在する。又、コンピュータシステムによりアクセスされるブートコード、アプリケーション、データ、等に対して、よりセキュアな信頼チェーンを実施するセキュリティメカニズムのニーズも存在する。更に、ポータブル電子装置と共に使用するか又はポータブル電子装置に使用するための改善されたセキュリティメカニズムのニーズも存在する。本発明の実施形態は、以下に述べるように、これらのニーズ及び他のニーズに対して新規な解決策を提供する。
【課題を解決するための手段】
【0009】
本発明の実施形態は、セキュアな信頼チェーンを実施するための方法、集積回路及びシステムに関する。より詳細には、セキュアなブートコードをセキュアなブートモードで実行する間に、シークレットキー(例えば、セキュアなブートコードを実行する集積回路又はプログラム可能な集積回路内に閉じ込められてそれにより排他的に使用されるセキュアなブートキー)を使用して、低セキュアのブートコードを認証することができる。セキュアなブートモード中にはセキュアなキー(例えば、集積回路によりアクセスされるデータ及び/又はアプリケーションに関連したセキュリティオペレーションを遂行するためのセキュアな記憶キー)を計算し又は生成することもできる。認証された低セキュアのブートコードへ制御が引き継がれた後、少なくとも1つのアプリケーション(例えば、オペレーティングシステム、デジタル著作権管理(DRM)を使用するアプリケーション、又は他のセキュリティメカニズム、等)を、セキュアなキー(例えば、これも集積回路内に閉じ込められてそれにより排他的に使用される)を使用して認証することができる。低セキュアのブートモードで認証されると、アプリケーションを(例えば、更に低セキュアのモード又は非セキュアのモードで)集積回路により実行することができる。このように、セキュアな信頼チェーン(例えば、セキュアなブートコードから、低セキュアのブートコードまで、及び更に低セキュアの又は非セキュアのアプリケーションまで)を集積回路について実施することができる。
【0010】
一実施形態では、集積回路のためのセキュアな信頼チェーンを実施する方法は、セキュアなブートモードで第1のブートコードを実行する間に、シークレットキーを使用して第2のブートコードを認証することを含む。又、セキュアなブートモードで第1のブートコードを実行する間に、シークレットキーと、プログラム可能な集積回路に関連した独特の識別子とに基づき、セキュアなキーが発生される。第2のブートモードを退出する前に、シークレットキーへのアクセスが制限される。ブートモードで第2のブートコードを実行する間に、プログラム可能な集積回路での実行のためにアプリケーションが認証され、この認証は、更に、セキュアなキーを使用してアプリケーションを認証することを含む。ブートモードを退出し、アプリケーションが実行される。又、セキュアなキーを使用して、プログラム可能な集積回路にアクセス可能なデータに対してオペレーション(例えば、暗号化オペレーション、解読オペレーション、等)を遂行することもできる。更に、一実施形態では、第1のブートコードの実行は、ウォームブートプロセス又はコールドブートプロセスを実施することができる。更に、プログラム可能な集積回路と通信するよう動作できる(例えば、プログラム可能な集積回路の外部に位置された)周辺機器に関する情報にアクセスすることができる。第1のブートコードを実行する間に、プログラム可能な集積回路の少なくとも1つのコンポーネントは、周辺機器の性能を改善するように構成することができ、この構成は、更に、周辺機器に関する情報に基づいて少なくとも1つのコンポーネントを構成することを含む。
【0011】
別の実施形態では、ポータブル電子装置に使用するための集積回路は、第1のブートコードを記憶するためのメモリを備えている。このメモリにはプロセッサが結合され、このプロセッサは、集積回路のセキュアなブートモードで第1のブートコードを実行するように動作でき、プロセッサは、更に、集積回路のブートモードで第2のブートコードを実行するように動作でき、且つプロセッサは、更に、アプリケーションを実行するように動作できる。プロセッサには、セキュアな暗号化エンジンが結合され、この暗号化エンジンは、セキュアなブートモードにおいてシークレットキーを使用して第2のブートコードを認証し、そのシークレットキーと、集積回路に関連した独特な識別子とに基づいてセキュアなキーを発生し、そしてプロセッサによるアプリケーションの実行の前にブートモードにおいてセキュアなキーを使用してアプリケーションを認証することにより、セキュアな信頼チェーンを実施するように動作することができる。
【0012】
更に別の実施形態では、システムが集積回路を備えている。この集積回路は、第1のブートコードを記憶するためのメモリと、このメモリに結合され、集積回路のセキュアなブートモードで第1のブートコードを実行するためのプロセッサとを備え、このプロセッサは、更に、集積回路の別のブートモードで他のブートコードを実行するように動作でき、且つこのプロセッサは、更に、アプリケーションを実行するように動作できる。又、集積回路は、プロセッサに結合されたセキュアな暗号化エンジンも備え、この暗号化エンジンは、セキュアなブートモードにおいてシークレットキーを使用して他のブートコードを認証し、そのシークレットキーと、集積回路に関連した独特な識別子とに基づいてセキュアなキーを発生し、そしてプロセッサによるアプリケーションの実行の前に他のブートモードにおいてセキュアなキーを使用してアプリケーションを認証することにより、セキュアな信頼チェーンを実施するためのものである。又、このシステムは、集積回路に結合された周辺機器も備え、この周辺機器は、プロセッサ及びセキュアな暗号化エンジンより成るグループから選択されたコンポーネントにアクセス可能な情報を記憶するためのものである。
【0013】
以下、同様の要素が同じ参照番号で示された添付図面を参照して、本発明を一例として説明するが、本発明は、これに限定されるものではない。
【図面の簡単な説明】
【0014】
【図1】本発明の一実施形態に基づきセキュアな信頼チェーンを実施するためのシステムを例示するブロック図である。
【図2】本発明の一実施形態に基づきセキュアな暗号化エンジンを例示するブロック図である。
【図3】本発明の一実施形態に基づきヒューズを例示するブロック図である。
【図4A】本発明の一実施形態に基づきプログラム可能な集積回路に対するセキュアな信頼チェーンを実施するためのコンピュータ実施プロセスの第1部分を例示するフローチャートである。
【図4B】本発明の一実施形態に基づきプログラム可能な集積回路に対するセキュアな信頼チェーンを実施するためのコンピュータ実施プロセスの第2部分を例示するフローチャートである。
【図4C】本発明の一実施形態に基づきプログラム可能な集積回路に対するセキュアな信頼チェーンを実施するためのコンピュータ実施プロセスの第3部分を例示するフローチャートである。
【図4D】本発明の一実施形態に基づきプログラム可能な集積回路に対するセキュアな信頼チェーンを実施するためのコンピュータ実施プロセスの第4部分を例示するフローチャートである。
【図5】本発明の一実施形態に基づき前生産オペレーションを遂行するためのコンピュータ実施プロセスを例示するフローチャートである。
【図6】本発明の一実施形態に基づき故障分析オペレーションを遂行するためのコンピュータ実施プロセスを例示するフローチャートである。
【図7】本発明の一実施形態に基づき回復オペレーションを遂行するためのコンピュータ実施プロセスを例示するフローチャートである。
【図8】本発明の一実施形態に基づきウォームブートを遂行するためのコンピュータ実施プロセスを例示するフローチャートである。
【図9】本発明の一実施形態に基づきコールドブートを遂行するためのコンピュータ実施プロセスを例示するフローチャートである。
【発明を実施するための形態】
【0015】
添付図面に示された本発明の実施形態を以下に詳細に説明する。これら実施形態を参照して本発明を説明するが、本発明は、これらの実施形態のみに限定されるものでないことを理解されたい。逆に、本発明は、特許請求の範囲により規定される本発明の精神及び範囲内に包含される代替え、変更及び等効物を網羅することが意図される。更に、本発明の以下の詳細な説明において、本発明を完全に理解するために、多数の特定の細部について述べる。しかしながら、本発明の実施形態は、これら特定の細部を伴わずに実施されてもよい。他の点について、良く知られた方法、手順、コンポーネント及び回路は、本発明の態様を不必要に不明瞭にしないために詳細に説明しない。
[表記及び専門用語]
【0016】
以下の詳細な説明のある部分は、コンピュータメモリ内のデータビットに対するオペレーションの手順、論理的ブロック、処理及び他の記号表示に関して表現される。これらの説明及び表現は、データ処理分野の当業者が彼等の仕事の実体を他の当業者に最も効率的に伝えるための手段である。本出願において、手順、論理的ブロック、プロセス、等は、望ましい結果へと導くステップ又はインストラクションの自己一貫性シーケンスであると考えられる。ステップは、物理量の物理的な操作を要求するものである。通常、必ずしもそうでないが、これらの量は、コンピュータシステムにおいて記憶、転送、合成、比較、及びその他、操作することのできる電気信号又は磁気信号の形態をとる。
【0017】
しかしながら、これら及び同様の用語は、全て、適切な物理量に関連付けられるべきであり、これらの量に適用される便宜的な表示に過ぎないことを銘記されたい。特に指示のない限り、以下の説明から明らかなように、本発明全体にわたり、「受け容れ」、「アクセス」、「追加」、「調整」、「分析」、「適用」、「アッセンブル」、「指定」、「認証」、「計算」、「捕獲」、「合成」、「比較」、「収集」、「構成」、「生成」、「減少」、「解読」、「定義」、「描写」、「検出」、「決定」、「表示」、「暗号化」、「確立」、「実行」、「退出」、「発生」、「グループ化」、「識別」、「増加」、「開始」、「対話」、「制限」、「変更」、「監視」、「移動」、「出力」、「パッディング」、「遂行」、「配置」、「提示」、「処理」、「プログラミング」、「問合せ」、「除去」、「「繰り返し」、「サンプリング」、「分類」、「記憶」、「減算」、「追跡」、「変換」、「使用」、「確認」、等の用語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内の物理(電子)量として表わされたデータを、コンピュータシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内の物理量として同様に表わされた他のデータへと操作及び変換するコンピュータシステム又は同様の電子計算装置のアクション及びプロセスを参照することが明らかであろう。
[発明の実施形態]
【0018】
図1は、本発明の一実施形態に基づいてセキュアな信頼チェーンを実施するためのシステム100を例示するブロック図である。図1に示すように、システム100は、チップ上の装置又はシステム(SoC)110と、少なくとも1つの周辺機器120−150とを備えている。一実施形態において、システム100は、汎用のコンピュータシステム、埋め込まれたコンピュータシステム、ラップトップコンピュータシステム、ハンドヘルドコンピュータシステム、ポータブルコンピュータシステム、ポータブル電子装置、スタンドアローンコンピュータシステム、ゲームコンソール、その幾つかの組合せ、等を実施することができる。更に、周辺機器120−150は、内部及び/又は外部周辺装置、例えば、キーパッド、カーソルコントローラ、通信ポート、記憶装置(例えば、ハードディスクドライブ、フラッシュメモリ、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、等)、等である。別の実施形態において、周辺機器は、システム100の外部の装置又はシステムと(例えば、USB、USB2.0、ファイアワイヤ、PCI−Express、SATA、eSATA、等の規格に基づいて)通信するための通信インターフェイス、1つ以上のインターフェイスを経てシステム100に結合された装置又はシステム、等である。周辺機器120−150の1つ以上は、一実施形態において、図3のヒューズ300を含むことができる。
【0019】
一実施形態において、周辺機器120−150の少なくとも1つ及び/又は装置110の少なくとも1つのコンポーネント(例えば、メモリ113)は、(例えば、図4Aないし9に示すプロセスの1つ以上に基づいて)システム100に対するセキュアな信頼チェーンを実施するために(例えば、汎用処理ユニット115、特殊な処理ユニット116、等により実行される)コンピュータ読み取り可能なコードを記憶することができる。例えば、システム100のセキュアなブートモードの間に、プロセッサ115は、(例えば、メモリ113に記憶された)セキュアなブートコード114を実行し、(例えば、周辺機器150に記憶された)低セキュアのブートコード155を認証することができる。低セキュアのブートコード155は、認証されると、低安定性のブートモードの間に(例えば、プロセッサ115により)実行することができる。アプリケーション145(例えば、装置110及び/又はシステム100に対するオペレーティングシステム)は、低セキュアのブートモードの間に認証することができる。アプリケーション145が認証されると、そのアプリケーションを(例えば、プロセッサ115によりその後の低セキュアの又は非セキュアなモードにおいて)実行することができる。このように、システム100に対するセキュアな信頼チェーンは、システム100のブート及び/又はオペレーション中に、制御の移行(例えば、セキュアなブートコード114から低セキュアのブートコード155へ、低セキュアのブートコード155からアプリケーション145へ、等々)により、認証されたコード又は信頼のあるコード(例えば、他の認証されたコード又は信頼のあるコードの実行中に認証された)に対して実施することができる。
【0020】
プロセッサ116は、一実施形態では、グラフィック処理ユニット即ちGPUであり、一方、プロセッサ115は、一実施形態では、中央処理ユニット即ちCPUである。或いは又、プロセッサ115は、(例えば、グラフィックデータの処理及び表示に関連した)グラフィック処理オペレーションと、他の処理オペレーション(例えば、より一般的な中央処理オペレーション)とを遂行できる複合GPU/CPUでもよい。
【0021】
セキュアな暗号化エンジン118は、一実施形態においてセキュアな信頼チェーンを実施するために認証オペレーションを遂行することができる。例えば、セキュアなブートモードにある間に(例えば、セキュアなブートコード114の実行中に)、エンジン118は、シークレットキー(例えば、セキュアなブートキー(SBK))を使用して(例えば、周辺機器150からアクセスされる)低セキュアのブートコード155を認証することができる。シークレットキー(例えば、SBK330)は、一実施形態では、ヒューズ300(例えば、図3)のセキュアな部分(例えば、310)からアクセスすることができ、ヒューズ300は、装置110(例えば、オンチップ)の少なくとも1つのコンポーネント、周辺機器120−150の少なくとも1つ、その何らかの組合せ、等に配置することができる。或いは又、シークレットキーは、エンジン118のキースロット210からアクセスすることができ、キースロット210は、ヒューズ300からアクセスされるSBK330、システム100の別の部分に記憶される(例えば、常時オン(always-on)(A/O)ドメイン111のA/Oレジスタ112内に記憶されて、システム100のリセットに応答してアクセスされる)キー、等を記憶することができる。
【0022】
エンジン118は、低セキュアのブートモードの間に(例えば、低セキュアのブートコード155の実行中に)セキュアなキーを使用して(例えば、周辺機器140からアクセスされた)アプリケーション145を認証することができる。セキュアなキーは、セキュアなブートモードの間(例えば、セキュアなブートコード114の実行中)、低セキュアのブートモードの間(例えば、低セキュアのブートコード155の実行中)、その何らかの組合せ、等の間に、(例えば、エンジン118により)計算又は発生することができる。或いは又、セキュアなキーは、ユーザ(例えば、システム100を出荷する前にシステム製造者、等)によって供給されてもよい。一実施形態では、セキュアなキーは、エンジン118のキースロット220からアクセスすることができ、このキースロット220は、(例えば、セキュアなブートモードの間に)別の位置からアクセスされ、(例えば、セキュアなブートモードの間に)計算され又は発生され、等々、のセキュアなキーを記憶することができる。
【0023】
一実施形態では、セキュアなキーは、(例えば、セキュアなキーの発生以外の目的に使用される)再目的化データ及び/又は付加的なデータを使用して計算又は発生することができる。この再目的化データは、シークレットキー(例えば、SBK330)、独特の装置識別子(例えば、ヒューズ300の非セキュアな部分320からアクセスされた350)、又は他のデータを含むことができる。UDI350は、(例えば、装置110、システム100、等の)シリアルナンバー、(例えば、装置110、システム100、等の)MAC識別子、等を含むことができる。付加的なデータは、セキュアな装置データ(例えば、ヒューズ300のセキュアな部分310からアクセスされた340)、例えば、装置キー(例えば、装置110に対して独特で、システム100に対して独特で、装置110及び少なくとも1つの他の同様の装置により共有され、システム100及び少なくとも1つの他の同様のシステムにより共有され、等)、等を含むことができ、セキュアな装置データは、装置110が動作モードに入れられた後は(例えば、システム100に組み込まれた後、システム100が販売のために店舗に搬入されるか又は使用のためにエンドユーザへ出荷された後、等)、装置110の外部及び/又はシステム100の外部からアクセスすることができない。
【0024】
更に、一実施形態では、セキュアなキーは、次の間形式に基づいて(例えば、エンジン118により)計算又は発生することができる。
【0025】
SSK=AES[SBK;UID^AES(SBK;DK)]
但し、“DK”は、セキュアな装置データ(例えば、340)であり、“SBK”は、セキュアなブートキー(例えば、330)であり、そして“UID”は、独特な装置識別子(例えば、350)である。従って、SBKは、DKを暗号キーとして使用して暗号化することができ、この暗号化は、一実施形態では進歩型暗号規格(AES)に基づく対称的キー暗号法を使用することができる。次いで、第1の暗号化の結果及びUIDに対して論理演算(例えば、ビットごとのXOR演算、別の論理演算、等)を行うことができる。その後に、論理演算の結果を暗号キーとして使用してSBKを暗号化することができ、この暗号化は、一実施形態では進歩型暗号規格(AES)に基づく対称的キー暗号法を使用することができる。1つ以上の中間演算の結果を、(例えば、0、1及び0のパターン、結果の少なくとも一部分の重複、等々で)より大きなサイズへとパッディングできることが明らかである。例えば、装置キー(DK)は、ビットごとのXOR演算を可能にするようにUIDのサイズへと(例えば、暗号化の前、暗号化の後、等々に)パッディングすることができ、他のデータをパッディングすることができ、等々である。
【0026】
従って、このようなセキュアなキーを使用すると、(例えば、装置110の、システム100の、システム100のコンポーネントに記憶されたデータの、又はそこにアクセス可能なデータ、等の)コンピュータシステムセキュリティを高めることができる。というのは、セキュアなモード(例えば、セキュアなブートコード114の実行中のセキュアなブートモード)の間にセキュアなコンポーネント(例えば、セキュアな暗号化エンジン118)によりセキュアなキーが発生されるからである。このように、セキュアなキーは、アクセス可能であると共に、装置110のコンポーネントのみが知っている(例えば、外部コンポーネント、システム、エンティティ、人間のユーザ、等は知らない)。更に別の実施例として、(例えば、装置110の)装置製造者が、独特の装置識別子(例えば、350)を機密裡にプログラムするか又は与え、そして(例えば、装置110をシステム100内に組み込んだシステム100の)システム製造者が、シークレットキー(例えば、SBK330)を機密裡にプログラムするか又は与える場合には、いずれの当事者も、独特の識別子及びシークレットキーの両方を知らない。従って、この実施例では、(各当事者を含めて)誰も、セキュアなキーを計算も発生もできないことになる。
【0027】
このようなセキュアなキーを使用することで、コンピュータシステムのセキュリティを更に向上させることができる。というのは、セキュアなキーを発見しても、シークレットキー(例えば、SBK330)も、そのキーを発生するのに使用される他のデータも、自動的に露呈させることにならないからである。更に、少なくとも1つの暗号化オペレーションを使用してセキュアなキーを発生するとすれば、セキュアなキーを逆にエンジニアリングして、キーの発生に使用されたデータを発見することは困難である。
【0028】
図1に示すように、装置110は、常時オン(A/O)ドメイン111及び制御可能な供給ポテンシャルドメイン160(例えば、メモリ113、プロセッサ115、プロセッサ116、エンジン118、及びシステムコントローラ119a−119cを含む)のような複数のドメインを備えることができる。制御可能な供給ポテンシャルドメイン(例えば、160)のコンポーネントへの電力は、一実施形態では、調整され、減少され、ターンオフされ、等々であり、一方、A/Oドメイン(例えば、111)のコンポーネントへの電力は、一般的に維持される。従って、情報は、(例えば、A/Oレジスタ112内に記憶された)A/Oドメイン111へ一時的又は永久的に移動され、ドメイン160の少なくとも1つのコンポーネントへの電力の減少又は終了中に(例えば、装置110、システム100、等のリセット又はパワーダウン中に)それが失われないようにする。A/Oレジスタ112は、一実施形態において、セキュアな情報(例えば、エンジン118によって発生されるセキュアなキー又はSSK、シークレットキー又はSBK330、等)を記憶することができる。更に、A/Oレジスタ112への読み取りアクセス及び/又は書き込みアクセスは、「スティッキー(sticky)」又は持続性ビットをセットすることにより、(例えば、個々に又はグループで)制限され、スティッキービットは、A/Oドメイン(例えば、111)内にも存在し得る。
【0029】
又、装置110は、(例えば、ユニット117を含む)制御可能な周波数ドメイン170も備えることができる。ユニット117は、異なる周波数を発生するのに使用できるか又は異なる周波数を使用して構成できるハードウェア、ソフトウェア、又はその何らかの組合せ(例えば、ファームウェア、等)を含むことができる。一実施形態では、ユニット117は、ある周波数の信号(例えば、クロック信号)を発生するようにハードウェア及び/又はソフトウェアを使用して構成される少なくとも1つの位相固定ループ(PLL)を含むことができる。例えば、ユニット117の少なくとも1つのPLLにより発生されるクロック信号は、対応するシステムコントローラ(例えば、119a−119c)を経て周辺機器(例えば、120−150)へ送信され、周辺機器の性能を調整することができる。従って、周辺機器は、最初(例えば、セキュアなブートコード114の実行中に)初期の即ち低い性能レベルで動作するように構成され、次いで、ある程度将来の時点で(例えば、セキュアなブートコード114のその後の実行中に)(例えば、クロック信号の周波数を高めることにより)高い性能に構成される。従って、これら実施形態では、装置110を種々の周辺機器(例えば、高性能の周辺機器、低性能の周辺機器、異なる形式の周辺機器、等)に関連して使用することができ、これにより、(例えば、システム100の)システム製造者に対して設計及び/又は価格の融通性を与えることができる。他の実施形態では、ユニット117は、システム100の異なるコンポーネント(例えば、システムコントローラ119a−119c、等)を構成し、及び/又はそれとは別に(例えば、周波数に加えて又は周波数以外のパラメータを変更する、等により)システム100のコンポーネントを構成することができる。
【0030】
図1、2及び3は、特定の特徴を伴うシステム100のコンポーネントを示しているが、図1から3に示されたシステム100の特徴は、例示に過ぎず、それ故、他の実施形態では、それとは別に構成できることが明らかであろう。更に、システム100及び/又は装置110は、他の実施形態では、異なる数及び/又は構成のコンポーネントを含んでもよいことが明らかであろう。更に、システム100及び/又は装置110のコンポーネントは、任意の数のセキュアな及び/又は非セキュアなアプリケーション及び/又はデータを伴うセキュアな信頼チェーンを実施できることが明らかであろう。例えば、ある実施形態では、より多数又はより少数の低セキュア又は非セキュアなアプリケーションへ制御を渡す前に、より多数又はより少数のセキュアなブートコードへ制御を渡すことができる。
【0031】
図4A−4Dは、本発明の一実施形態に基づきプログラム可能な集積回路に対するセキュアな信頼チェーンを実施するためのコンピュータ実施プロセス400を例示するフローチャートである。図4Aに示すように、ステップ410は、少なくとも1つの周辺機器と通信するための少なくとも1つのPLL動作周波数にアクセスすることを含む。アクセスされる動作周波数は、少なくとも1つの周辺機器(例えば、120−150)が装置110と通信できるようにするために(例えば、ユニット117の)PLLから少なくとも1つのコンポーネント(例えば、システムコントローラ119a−119c、周辺機器120−150、等)へ供給されるクロック信号に対応する。一実施形態では、ステップ405でアクセスされる動作周波数は、ある形式の種々の装置、種々の形式の装置、等を動作する初期又は基本的動作周波数である。
【0032】
ステップ410は、装置(例えば、110)及び/又はシステム(例えば、100)が前生産モードであるかどうか決定することを含む。前生産モード状態は、前生産モードを指示する状態に入れられた少なくとも1つのコンポーネント(例えば、ビット、ストラップピン、ヒューズ、等)により指示される。前生産モード状態を指示するコンポーネントは、A/Oレジスタ112、1つ以上の周辺機器120−150、ヒューズ300、システム100の、又はシステム100へアクセスできる別のコンポーネント、その何らかの組合せ、等に配置される。装置110及び/又はシステム100が前生産モードにあると決定された場合には、ステップ412を遂行することができる。
【0033】
(例えば、装置110、システム100、等の)製造者は、前生産モードにあるときに、ステップ412において、少なくとも1つのコンポーネントをプログラムし(例えば、SBK330、セキュアな装置データ340、UID350、等を指定し)、即ち製品(例えば、装置110、システム100、等)を別のエンティティへ出荷する前に初期構成又はデバッグを遂行する。或いは又、前生産モードにあるときに、ステップ412は、回復モード(例えば、周辺機器120−150のうちのUART周辺機器に記憶された回復コードの実行を含むUART回復モード)に入り、そして回復オペレーションを遂行する(例えば、新たなセキュアなブートコード114、新たな低セキュアのブートコード155、新たなアプリケーション145、等をダウンロードし、解読し、認証し、等々)ことを含んでもよい。ステップ412は、一実施形態において、図5のプロセス500に基づいて行うことができる。ステップ412を遂行した後、一実施形態では、装置110及び/又はシステム100のリセットを行ってから、ステップ405及び410を繰り返すことができる。
【0034】
或いは又、装置110及び/又はシステム100がステップ410において前生産モードにないと決定された場合には、ステップ415において、装置110及び/又はシステム100が故障分析モードにあるかどうか決定される。故障分析モード状態は、故障分析モードを指示する状態に入れられた少なくとも1つのコンポーネント(例えば、ビット、ストラップピン、ヒューズ、等)により指示される。故障分析モード状態を指示するコンポーネントは、A/Oレジスタ112、1つ以上の周辺機器120−150、ヒューズ300、システム100の、又はシステム100へアクセスできる別のコンポーネント、その何らかの組合せ、等に配置される。装置110及び/又はシステム100が故障分析モードにあると決定された場合には、ステップ435を遂行することができる。
【0035】
(例えば、装置110、システム100、等の)製造者、及び/又はサービス代表者は、故障分析モードにあるときに、ステップ435において、少なくとも1つのコンポーネントをプログラムし、即ち少なくとも1つのコンポーネントにおいてデバッグオペレーション、等を遂行することができる。(例えば、装置110、システム100、等にある)セキュアな情報へのアクセスは、故障分析モードにあるときは、制限され又はディスエイブルされる。一実施形態において、故障分析モードにあるときは、ステップ435は、回復モード(例えば、周辺機器120−150のうちのUART周辺機器に記憶された回復コードの実行を含むUART回復モード)に入り、そして回復オペレーションを遂行する(例えば、新たなセキュアなブートコード114、新たな低セキュアのブートコード155、新たなアプリケーション145、等をダウンロードし、解読し、認証し、等々)ことを含んでもよい。ステップ435において、(例えば、SBK330、セキュアな装置データ340、UID350、等を指定する)データの所定断片が与えられて他のデータ(例えば、UID350、等)に一致する場合にのみ、1つ以上のオペレーション(例えば、回復オペレーション)を遂行することができ、これにより、無断アクセスを減少し及び/又はエンドユーザが装置110及び/又はシステム100を故障分析モードに入れてデータを装置(例えば、110)にダウンロードするのを困難にする。ステップ435は、一実施形態では、図6のプロセス600に基づいて遂行される。ステップ435を遂行した後、一実施形態では、装置110及び/又はシステム100のリセットを行ってから、ステップ405−415を繰り返すことができる。
【0036】
或いは又、装置110及び/又はシステム100がステップ415において故障分析モードにないと決定された場合には、ステップ420において、セキュアなブートコード(例えば、114)を(例えば、プロセッサ115により)実行することができる。従って、一実施形態では、ステップ420においてセキュアなブートコード(例えば、114)の実行を開始することは、セキュアなブートモードに入ることを意味する。
【0037】
図4Aに示すように、ステップ425は、ステップ405でアクセスされた動作周波数でクロック信号を発生するように(例えば、ユニット117の)少なくとも1つのPLLをプログラムすることを含む。このクロック信号は、少なくとも1つの周辺機器(例えば、120−150)が装置110と通信できるようにするために(例えば、ユニット117の)PLLから少なくとも1つのコンポーネント(例えば、システムコントローラ119a−119c、周辺機器120−150、等)へ供給することができる。一実施形態では、ステップ425のPLLのプログラミングは、ある形式の種々の装置、種々の形式の装置、等を動作する初期又は基本的動作周波数をもつクロック信号を発生することができる。
【0038】
図4Bに示すように、ステップ430は、ウォームブート状態がセットされたかどうか決定することを含む。ウォームブート状態は、装置110及び/又はシステム100の少なくとも1つのコンポーネント(例えば、ビット、ストラップピン、ヒューズ、等)により指示される。ウォームブート状態を指示するコンポーネントは、A/Oレジスタ112、1つ以上の周辺機器120−150、ヒューズ300、システム100の又はシステム100へアクセスできる別のコンポーネント、その何らかの組合せ、等に配置される。装置110及び/又はシステム100は、装置110及び/又はシステム100の再ブートに応答して(例えば、回復オペレーションを遂行すること、新たなセキュアなブートコードをロードするか又はセキュアなブートコードを更新すること、新たな低セキュアのブートコードをロードするか又は低セキュアのブートコードを更新すること、制御可能な供給ポテンシャルドメイン160内の1つ以上のコンポーネントの供給ポテンシャルを変化させること、等に応答して)ウォームブート状態となる。ウォームブート状態がセットされたと決定される場合には、ステップ431において、ウォームブートオペレーションを遂行することができる。
【0039】
ステップ431は、一実施形態では、図7のプロセス700に基づいて遂行することができる。ウォームブートオペレーションが首尾良く行われたことがステップ432で決定された場合には、ここに述べるように、ステップ450を遂行することができる。ウォームブートオペレーションが首尾良く行われなかった場合には、ウォームブート状態がクリアされ(例えば、新たなビット、ストラップピン、ヒューズ、等をセットするか、ウォームブートビット、ストラップピン、ヒューズ、等をリセットすることにより)、そして装置110及び/又はシステム100のリセットが開始される(例えば、ステップ405−430を繰り返す前に)。一実施形態では、ステップ433においてウォームブート状態をクリアすると、装置110及び/又はシステム100のリセットの際に、少なくとも1つの回復オペレーション(例えば、ステップ437における)及び/又は少なくとも1つのコールドブートオペレーション(例えば、ステップ440における)の遂行が誘起される。
【0040】
或いは又、ステップ430においてウォームブート状態がセットされないと決定された場合には、ステップ435において、強制回復モード状態がセットされるかどうか決定することができる。強制回復状態は、装置110及び/又はシステム100の少なくとも1つのコンポーネント(例えば、ビット、ストラップピン、ヒューズ、等)により指示される。強制回復状態を指示するコンポーネントは、A/Oレジスタ112、1つ以上の周辺機器120−150、ヒューズ300、システム100の、又はシステム100へアクセスできる別のコンポーネント、その何らかの組合せ、等に配置される。強制回復モード状態がセットされたことがステップ435で決定された場合は、ステップ437において、回復モードオペレーションを遂行することができる。
【0041】
一実施形態では、強制回復モード状態をセットし、そしてステップ437において回復モードオペレーションを遂行することは、ブートコード(例えば、低セキュアのブートコード155)を(例えば、エンジン118を使用して)読み取り、解読し又は認証し損なうに応答して行うことができる。このように、ステップ437で遂行される回復オペレーションを使用して、装置110及び/又はシステム100をロック又は「ブリック(bricked)」(例えば、不作動)状態から「デブリック(de-brick)」又は復帰させることができる。或いは又、ステップ437で遂行される回復オペレーションを製造段階で使用して、データ(例えば、SBK330、セキュアな装置データ340、UID350、等)を装置110及び/又はシステム100に(例えば、初めて)ロードすることができる。一実施形態では、ステップ437は、図7のプロセス700に基づいて遂行される。
【0042】
図7を参照すると、ステップ710は、装置110をホストシステム又は装置へ直接的に又はネットワークを通して結合することを含む。周辺機器120−150の少なくとも1つは、ホストとの通信チャンネルを実施することができ、ここで、通信チャンネルは、一実施形態では、USB規格、USB2.0規格、ファイアウオール規格、PCI−Express規格、SATA規格、eSATA規格、等に基づいて動作することができる。装置110は、ステップ720において、装置110のUID(例えば、350)を、通信チャンネルを経てホストへブロードキャストすることができる。UID(例えば、350)は、ステップ730において、ホストにより所与のSBK(例えば、330)へマップされる。次いで、ホストは、ステップ740において、自己確認メッセージを発生して装置110へ送信することができる。
【0043】
ホストから装置(例えば、110)へ送信されるメッセージは、非セキュアな長さ、ハッシュ、ランダムAESブロック、セキュアな長さ、コマンド(例えば、ヘッダデータ)及びデータ(例えば、他のデータ)、ペイロード、及びパッディング(例えば、0X80に続いて必要に応じて付加的な0X00バイトがあるもの)を含むことができる。ランダムAESブロック、セキュアな長さ、コマンド及びデータ、ペイロード、パッディング、又はその何らかの組合せは、UID(例えば、350)へマップされるSBKを使用してエンコード又は暗号化することができる。
【0044】
図7に示すように、装置110及び/又はシステム100によりメッセージが受け取られると、ステップ750においてそれを確認することができる(例えば、SBK330を使用して)。一実施形態では、非セキュアな長さがセキュアな長さに一致し、ハッシュが正しく、又、コマンドの少なくとも1つが有効(例えば、所与のメッセージに対して有効なコマンド形式)である場合、メッセージのサイズが正しい(例えば、コマンド及びデータにより指定された通りである)場合、ペイロードのサイズが正しい場合、パッディングパターンが正しい場合、コマンド及びデータのセキュアなブートコードのバージョン番号が装置110のセキュアなブートコード(例えば、114)のバージョン番号に一致する場合、コマンド及びデータのセキュアなブートコードのバージョン番号が装置110の低セキュアのブートコード(例えば、155)のバージョン番号に一致する場合、その何らかの組合せ、等々の場合に、メッセージが有効であると決定することができる。
【0045】
メッセージが確認された(例えば、有効であると決定された)場合には、装置(例えば、110)は、ステップ760において、メッセージを周辺機器(例えば、120−150)にロードしそして付加的な回復モードオペレーションを遂行することができる。付加的な回復モードオペレーションは、メッセージ内の1つ以上のコマンドを実行すること、メッセージに含まれたコードを実行すること、メッセージからの低セキュアのブートコード(例えば、155)を所与の周辺機器(例えば、120−150)に記憶すること、又はその何らかの組合せを含む。例えば、低セキュアのブートコード(例えば、155)がメッセージにおいて受け取られる場合には、低セキュアのブートコードは、SBK(例えば、330)を使用してエンコードされて周辺機器(例えば、120−150)に記憶される。或いは又、装置(例えば、110)は、ホストから付加的なデータをダウンロードし且つ認証することができる。付加的なデータは、それを周辺機器(例えば、120−150)へ書き込む前に、SBK(例えば、330)を使用して暗号化されサインされる。このように、プロセス700の回復モードは、複数のメッセージ送信及び応答シーケンスを与えることができる。或いは又、メッセージが確認されない(例えば、ステップ750において有効でないと決定された)場合には、装置(例えば、110)は、ステップ770においてリセットされる(例えば、システムリセットを要求する無限ループに入って、システム又は装置のリセット等を自動的に開始するように進むことにより)。
【0046】
或いは又、ステップ435において、強制回復モード状態がセットされないと決定された場合には、ステップ440において、コールドブートオペレーションを遂行することができる。例えば、ステップ440において、低セキュアのブートコード(例えば、155)を読み取り、解読し、認証し、その何らかの組合せ、等を行って、装置110及び/又はシステム100に対してセキュアな信頼チェーン(セキュアなブートモードにおけるセキュアなブートコード114の実行から、低セキュアのブートモードにおける低セキュアのブートコード155の実行まで)を実施することができる。更に、セキュアなキー(例えば、SSK)は、ステップ440におけるコールドブートオペレーションとして計算され及び/又は発生される。コールドブートオペレーションは、一実施形態では、装置110及び/又はシステム100の電源オンに応答して遂行することができる。更に、ステップ440は、一実施形態では、図9のプロセス900に基づいて遂行されてもよい。コールドブートオペレーションが首尾良く行われなかったことがステップ442で決定された場合には、ここに述べるように、ステップ437を遂行することができる。或いは又、コールドブートオペレーションが首尾良く行われた場合には、ここに述べるように、ステップ450を遂行することができる。
【0047】
図4Cに示すように、ステップ450は、セキュアな情報(例えば、シークレットキー(例えば、SBK330)、セキュアなキー(SSK)、セキュアなキーを発生するのに使用される情報、等)へのアクセスを制限することを含む。このようなアクセスは、レジスタ(例えば、A/Oレジスタ112)、キースロット(例えば、210及び/又は220)、又はセキュアな情報を記憶する他の記憶媒体に対応する「スティッキー」又は持続性ビットをセットすることにより制限される。このように、セキュアな情報への読み取り及び/又は書き込みアクセスを制限することができる。或いは又、セキュアな情報は、レジスタ(例えば、A/Oレジスタ112)、キースロット(例えば、210及び/又は220)、又はセキュアな情報を記憶する他の記憶媒体からフラッシュされてもよい(例えば、ゼロでオーバーライトし、他の情報でオーバーライトし、クリアし、等々)。
【0048】
ステップ460は、セキュアなブートモードを退出することを含む。ステップ460において、セキュアなブートコード(例えば、114)の実行を終了させ、及び/又は制御を低セキュアのブートコード(例えば、155)へ移行することができる。
【0049】
図4Cに示すように、ステップ470は、低セキュアのブートモードに入り、そして低セキュアのブートコード(例えば、155)の実行を開始することを含む。低セキュアのブートコード(例えば、155)は、装置(例えば、110)及び/又はシステム(例えば、100)のプロセッサ(例えば、115)により実行することができる。更に、低セキュアのブートコード(例えば、155)は、装置(例えば、110)及び/又はシステム(例えば、100)のメモリ(例えば、160)にローカルに記憶することができる。
【0050】
ステップ472は、セキュアな暗号化エンジン(例えば、118)を使用して、SBK(例えば、330)及び/又はセキュアなキーでオペレーションを遂行することを含む。例えば、セキュアな暗号化エンジンを使用して、暗号化オペレーション及び/又は解読オペレーションを遂行することができ(例えば、SBK330又はセキュアなキーが暗号化キーとして使用され)、暗号化及び/又は解読されるべきデータは、セキュアな暗号化エンジンへ通され(例えば、セキュアな暗号化エンジン118で暗号化及び/又は解読されるように)、そしてセキュアな暗号化エンジン(例えば、118)は、その後、処理された(例えば、暗号化、解読、等々された)データを出力する。このように、SBK330及び/又はセキュアなキーは、低セキュアのブートモードで暗号化及び又は解読オペレーションを遂行できるようにしながら、セキュアな状態に保たれる(例えば、各々、セキュアな暗号化エンジン118のキースロット210及び220内で)。同様に、セキュアな暗号化エンジン(例えば、118)を使用して、認証オペレーション(例えば、デジタル署名がSBK330及び/又はセキュアなキーに関連付けられ、さもなければ、データの認証は、SBK330及び/又はセキュアなキーの知識を必要とし、等々)、及び/又はDRMオペレーションを遂行することができる。この場合も、セキュアな暗号化エンジン(例えば、118)を使用して、認証及び/又はDRMオペレーションの間にSBK330及び/又はセキュアなキーへのアクセスを制限し、さもなければ、それを制御することができる。
【0051】
図4Cに示すように、ステップ474は、セキュアな暗号化エンジン(例えば、118)のキースロット(例えば、220)にSSKをオーバーライトすることを含む。一実施形態では、オーバーライトに使用される新たなSSKを(例えば、SBK330及び/又はセキュアな装置データ340、等も指定するシステム製造者によって)指定することができる。或いは又、SSKを再生してもよい。例えば、新たなセキュアな装置データ340を(例えば、異なるセキュアな装置データにアクセスし、そしてその新たなセキュアな装置データをSSKの計算に使用し、セキュアな装置データ340に関連したヒューズをプログラミングし直して、セキュアな装置データ340の内容を変化させる、等々により)指定してもよい。
【0052】
図4Dに示すように、ステップ480は、SSK(例えば、セキュアなキー)へのアクセスを制限することを含む。例えば、セキュアな暗号化エンジン(例えば、118)は、セキュアなキーを記憶するキースロット(例えば、220)へのアクセスを制限することができる(例えば、読み取り専用として指定し、書き込み専用として指定し、等々)。別の実施形態では、セキュアなキーに関連した情報を記憶するレジスタ(例えば、112)、キャッシュ又は他のメモリをフラッシュすることができる。又、一実施形態では、(例えば、A/Oドメイン111に配置され、装置110の別の部分に配置され、等々の)「スティッキー」又は持続性ビットをセットすることにより、レジスタ(例えば、1つ以上のA/Oレジスタ112)へのアクセスを制限することができる。
【0053】
ステップ485は、セキュアな暗号化エンジン(例えば、118)のキースロット(例えば、210)からSBK(例えば、シークレットキー330)をフラッシュすることを含む。一実施形態では、SBKをフラッシュするのは、キースロット210に全てゼロを書き込むことによって行うことができる。或いは又、キースロット210に他のデータを書き込むこともできる。又、他の実施形態では、シークレットキー(例えば、キースロット210に記憶される330、等)を変更し、隠し、除去し、等々とすることができる。従って、一実施形態では、SBK(例えば、330)へのアクセスを(ステップ450の制限に加えて)更に制限し、SBK(例えば、330)のセキュリティ、及び/又はSBK(例えば、330)を使用するか、さもなければ、それにアクセスする(例えば、装置110、システム100、等の)コンポーネントのセキュリティを改善することができる。
【0054】
図4Dに示すように、ステップ490は、低セキュアのブートモードを退出することを含む。ステップ491は、非ブートモードに入って、非ブートコードの実行を開始することを含む。一実施形態では、低セキュアのブートコード(例えば、155)が実行を終了して、制御を他のコード(例えば、アプリケーション145のような非ブートコード、等)に引き継ぐことができる。非ブートコード(例えば、145)は、装置(例えば、110)の周辺機器(例えば、140)に存在し、そして装置(例えば、110)及び/又はシステム(例えば、100)で実行されるオペレーティングシステム又は他のアプリケーションである。
【0055】
ステップ492は、SSK(例えば、セキュアなキー)に関連したオペレーションを遂行することを含む。例えば、システム(例えば、100)及び/又は装置(例えば、110)で実行されるオペレーティングシステム又は他のアプリケーションは、SSKにアクセスし、そしてSSKを使用して、データの各部分(例えば、ビデオコンテンツ、オーディオコンテンツ、オーディオ/ビデオコンテンツ、他のデータ、等)を暗号化し、解読し、認証し、サインし、等々とすることができる。このように、SSKは、システム(例えば、100)及び/又は装置(例えば、110)に記憶されるか、さもなければ、それによりアクセスされるデータ(例えば、ビデオコンテンツ、オーディオコンテンツ、オーディオ/ビデオコンテンツ、他のデータ、等)をセキュアなものにする一方、SSK(例えば、SBK330、セキュアな装置データ340、等)を発生するのに使用される情報へのアクセスを制限するために設けられ且つ使用される。別の実施形態では、データ(例えば、ビデオコンテンツ、オーディオコンテンツ、オーディオ/ビデオコンテンツ、他のデータ、等)は、暗号化、解読、認証、サイン、等を行うためにセキュアな暗号化エンジン(例えば、118)へ通され、これにより、必要に応じて実施の融通性及び/又は高いセキュリティを与えることができる。
【0056】
図4Dに示すように、ステップ494は、非SSKオペレーションを遂行することを含む。例えば、システム(例えば、100)及び/又は装置(例えば、110)で実行されるオペレーティングシステム又は他のアプリケーションにより遂行されるタスクは、SSKに直接的及び/又は間接的に依存せずにデータにアクセスし及び/又はデータを処理することができる。一実施形態では、これらのオペレーションは、セキュアなキーを使用しないシステム(例えば、100)及び/又は装置(例えば、110)の通常のオペレーションと考えることができる。
【0057】
図5は、本発明の一実施形態に基づき前生産オペレーションを遂行するためのコンピュータ実施プロセス500を例示するフローチャートである。プロセス500は、一実施形態では、図4のステップ412を実施するのに使用できる。
【0058】
図5に示すように、ステップ510は、前生産オペレーションを開始することを含む。一実施形態では、ステップ510は、回復コードの実行を開始することを含む。回復コードは、一実施形態では、周辺機器(例えば、120−150)からアクセスすることができる。周辺機器は、一実施形態では、UART周辺機器でよい。
【0059】
ステップ520は、(例えば、装置110へ)ダウンロードされるべきデータを記憶する少なくとも1つのコンポーネントとの通信を実施するために(例えば、ユニット117の)少なくとも1つのPLLをプログラミングすることを含む。このプログラミングは、周辺機器(例えば、120−150)が通信チャンネルを確立できるようにする動作周波数でクロック信号を発生するようにPLLを構成することを含む。1つ以上のコンポーネントは、プログラム可能な集積回路(例えば、装置110)に結合されたシステム(例えば、100)の周辺機器(例えば、120−150)である。或いは又、1つ以上のコンポーネントは、システム(例えば、100)に対して外部に配置されて、装置(例えば、110)に通信結合されてもよい。
【0060】
図5に示すように、ステップ530は、少なくとも1つのコンポーネントとの通信チャンネルを確立することを含む。例えば、システム(例えば、100)及び/又は装置(例えば、110)のコンポーネント(例えば、システムコントローラ119a−119c、等)は、一実施形態では、PLLにより発生されたクロック信号にアクセスすることができる。(例えば、「ハンドシェーク」等を実施する)1つ以上のメッセージを、装置(例えば、110)のコンポーネント(例えば、システムコントローラ119a−119c、プロセッサ115、等)と、少なくとも1つのコンポーネント(例えば、周辺機器120−150、システム100の外部のコンポーネント、等)との間で送信して、通信チャンネルを確立することができる。
【0061】
ステップ540は、1つ以上のコンポーネントからデータをダウンロードすることを含む。データは、新たな又は更新されたブートコード(例えば、セキュアなブートコード114、低セキュアのブートコード155、等)を含む。別の実施形態では、データは、装置(例えば、110)及び/又はシステム(例えば、100)のコンポーネントによってアクセスするためのアプリケーション(例えば、145)及び/又はデータを含む。
【0062】
図5に示すように、ステップ550は、ダウンロードされたデータを認証することを含む。データは、シークレットキー(例えば、SBK330)、セキュアなキー、等を使用して認証することができる。更に、データは、セキュアな環境において(例えば、セキュアな暗号化エンジン118内で)認証し及び/又はその他処理(例えば、解読、暗号化、等)することができる。
【0063】
図6は、本発明の一実施形態に基づいて故障分析オペレーションを遂行するためのコンピュータ実施プロセス600を例示するフローチャートである。このプロセス600は、一実施形態において、図4のステップ417を実施するのに使用できる。
【0064】
図6に示すように、ステップ610は、故障分析オペレーションを開始することを含む。一実施形態では、ステップ610は、プロセス500のステップ510と同様に遂行することができる。更に、プロセス600のステップ620及び630は、一実施形態では、プロセス500のステップ520及び530と同様に遂行することができる。
【0065】
図6に示すように、ステップ640は、1つ以上のコンポーネント(例えば、周辺機器120−150の1つ以上)から装置識別子にアクセスすることを含む。例えば、少なくとも1つのコンポーネントへのこのような装置識別子の要求がなされ、及び/又は少なくとも1つのコンポーネントは、装置(例えば、110)から正式な要求がなくても、このような装置識別子をブロードキャストすることができる。
【0066】
ステップ650は、少なくとも1つのコンポーネント(例えば、周辺機器120−150の1つ以上)からアクセスされた装置識別子が装置(例えば、110)のUID(例えば、350)に一致するかどうか決定することを含む。ステップ640及び650は、無断アクセスを減少し、及び/又はエンドユーザが装置110及び/又はシステム100を故障分析モードに入れてデータを装置(例えば、110)へダウンロードするのを困難にするために行うことができる。装置識別子がUID(例えば、350)に一致しない場合には、プロセス600が終了となる。或いは又、装置識別子がUID(例えば、350)に一致する場合には、ステップ660を行うことができる。プロセス600のステップ660及び670は、一実施形態では、プロセス500のステップ540及び550と同様に行うことができる。
【0067】
図8は、本発明の一実施形態に基づいてウォームブートを遂行するためのコンピュータ実施プロセス800を例示するフローチャートである。プロセス800は、一実施形態では、プロセス400のステップ431を実施することができる。更に、プロセス800は、一実施形態では、装置(例えば、110)及び/又はシステム(例えば、100)をリセットした後に行うことができる。
【0068】
図8に示すように、ステップ810は、常時オン(A/O)レジスタ(例えば、112)からデータを読み取ることを含む。このデータは、周辺機器構成情報(例えば、SDRAM構成情報、PLL構成情報、例えば、PLLにより発生されるクロック信号にアクセスするコンポーネントのための動作周波数、装置110の設定、システム100の設定、等)を含む。又、データは、(例えば、ステップ850で実行される)再スタートコードのアドレスも含むことができる。更に、一実施形態では、データは、指紋(例えば、再スタートコードのための非セキュアなハッシュ値、再スタートコードのためのセキュアなハッシュ値、等)、又は再スタートコードに関する他の情報を含むこともできる。
【0069】
ステップ820は、再スタートコードを記憶する少なくとも1つの周辺機器(例えば、120−150)を構成することを含む。例えば、SDRAM周辺機器(例えば、装置110に結合された周辺機器120−150の1つ)が再スタートコードを記憶する場合には、SDRAMを自己リフレッシュモードから取り出すことができる。加えて、周辺機器は、更に構成することができる(例えば、動作周波数を調整し、周辺機器に結合されたシステムコントローラを、周辺機器の通信チャンネルを設定するように準備し、等々)。
【0070】
図8に示すように、ステップ830は、再スタートコードを記憶する少なくとも1つの周辺機器との通信チャンネルを確立することを含む。ステップ830は、一実施形態では、プロセス500のステップ530と同様に行うことができる。
【0071】
ステップ840は、再スタートコードを認証することを含む。再スタートコードは、周辺機器に記憶された再スタートコードの非セキュアなハッシュ又はダイジェストを計算することにより確認又は認証することができる。ハッシュ又はダイジェストが、ステップ810においてA/Oレジスタ(例えば、112)からアクセスされた指紋に一致する場合には、ステップ850において再スタートコードを実行して、システム状態を回復することができる。一実施形態では、再スタートコードは、ベクトルを含み、それ故、ステップ850は、(例えば、SDRAM又は他の周辺機器における)再スタートベクトルにジャンプして、システム状態を回復することができる。
【0072】
図9は、本発明の一実施形態に基づいてコールドブートを遂行するためのコンピュータ実施プロセス900を例示するフローチャートである。このプロセス900は、一実施形態において、プロセス400のステップ440を実施することができる。更に、プロセス900は、一実施形態では、装置(例えば、110)及び/又はシステム(例えば、100)の電源オンの後に行うことができる。
【0073】
ステップ910は、少なくとも1つの周辺機器の形式に関する情報にアクセスすることを含む。例えば、装置(例えば、110)に結合された1つ以上の周辺機器(例えば、120−150)の形式を識別することができる。周辺機器の形式は、NOR、NAND、SPI、MMC、他の周辺機器形式、等を含むことができる。周辺機器形式に関する情報は、一実施形態では、装置(例えば、110)のヒューズ(例えば、300)に記憶することができる。又、周辺機器に関する情報は、一実施形態では、装置110の他の部分(例えば、ストラップピン、等)に記憶することもできる。
【0074】
図9に示すように、ステップ920は、少なくとも1つの周辺機器との通信を可能にする情報にアクセスすることを含む。一実施形態では、この情報は、ステップ910において形式が識別された周辺機器の特性を含むことができる。例えば、この情報は、周辺機器と通信するときに使用されるべきECCの形式、通信のためのアドレスフォーマット、周辺機器との通信チャンネルを実施するための基本的又は初期の動作周波数、等を含むことができる。周辺機器に関する情報は、一実施形態では、装置(例えば、110)のヒューズ(例えば、300)に記憶することができる。
【0075】
ステップ930は、1つ以上の周辺機器の性能を改善するための情報にアクセスすることを含む。例えば、周辺機器のための向上された動作周波数にアクセスすることができ、この向上された動作周波数は、ステップ920でアクセスされるものより高い。この情報は、周辺機器と通信チャンネル(例えば、基本的又は初期動作周波数で動作する)を確立した後に周辺機器のブート構成テーブル(BCT)からアクセスすることができる。このように、ステップ910及び920においてアクセスされた情報を使用して、基本的又は低い性能レベルで動作する周辺機器との通信チャンネルを確立することができ、周辺機器及び/又は通信チャンネルの性能を改善する(例えば、速度、帯域巾、等を増加する)ための情報は、低い性能レベルで動作する(例えば、ステップ930で)実施された通信チャンネルを経て通信することができる。
【0076】
図9に示すように、ステップ940は、(例えば、ステップ930でアクセスされた)少なくとも1つの周辺機器の製造を改善するための情報を使用してシステム(例えば、100)を構成することを含む。例えば、(例えば、ユニット117の)1つ以上のPLLは、少なくとも1つの周辺機器の性能を改善するための情報に基づいて、より高い周波数のクロック信号を発生することができる。更に、ステップ940において、より高い性能のためにシステムコントローラ(例えば、119a−119c)を再初期化することができる。
【0077】
ステップ950は、低セキュアのブートコード(例えば、155)に関する情報にアクセスすることを含む。例えば、低セキュアのブートコード(例えば、155)の位置(例えば、ロードアドレス、エントリーアドレス、等)にアクセスすることができる。更に、低セキュアのブートコード(例えば、155)のための冗長性情報にアクセスすることもでき、この冗長性情報は、低セキュアのブートコードの異なるバージョン又は世代に対するポインタ(例えば、以前の世代に戻るか又は更新するための)、低セキュアのブートコードの同じ世代の付加的なコピーに対するポインタ(例えば、低セキュアのブートコードの読み取り、更新、等の間にエラー又は他の例外により同じ世代を再ロードするための)、等々を含むことができる。
【0078】
図9に示すように、ステップ960は、低セキュアのブートコード(例えば、155)を記憶する周辺機器(例えば、150)を初期化しそしてその周辺機器(例えば、150)から低セキュアのブートコードを読み取ることを含む。この初期化は、(例えば、ステップ920でアクセスされた情報に基づく低い動作周波数の、ステップ930でアクセスされた情報に基づく高い周波数の、等々の)クロック信号を、周辺機器(例えば、150)、周辺機器に結合されたシステムコントローラ(例えば、119c)、等々へ供給することを含む。更に、周辺機器の初期化は、周辺機器(例えば、150)と装置(例えば、110)との間に通信チャンネルを設定するのに使用される「ハンドシェーク」又は他の情報を通信することも含む。
【0079】
ステップ970は、低セキュアのブートコードを解読し及び/又はSBK(例えば、330)を使用して低セキュアのブートコードを認証することを含む。SBKは、ヒューズ300のセキュアな部分310、セキュアな暗号化エンジン118のキースロット210、装置110のA/Oレジスタ(例えば、112)、等からアクセスすることができる。一実施形態では、低セキュアのブートコード(例えば、155)が(例えば、セキュアな暗号化エンジン118により)解読されると、(例えば、エンジン118又はシステム100の別のコンポーネントにより計算された)計算されたハッシュ又はダイジェストを、ステップ950でアクセスされた低セキュアのブートコードと比較することによりそれを認証又は確認することができる。
【0080】
以上、実施から実施へと変化し得る多数の特定の細部を参照して、本発明の実施形態を説明した。従って、本発明が何であって本出願人が何を意図するかの唯一の独占的な表現が、以後の修正も含めて、特許請求の範囲に特定の形態で網羅されている。ここでは、特許請求の範囲に明確に記されていない要素、特性、特徴、効果又は属性によって特許請求の範囲が何ら制限を受けるものではない。従って、明細書及び図面は、限定の意味ではなく、例示と考えるべきである。
【符号の説明】
【0081】
100・・・システム、110・・・装置(SoC)、111・・・常時オン(A/O)ドメイン、112・・・A/Oレジスタ、113・・・メモリ、114・・・セキュアなブートコード、115・・・汎用処理ユニット(CPU)、116・・・特殊な処理ユニット(GPU)、117・・・ユニット、118・・・セキュアな暗号化エンジン、119a−c・・・システムコントローラ、120・・・周辺機器(USB)、130・・・周辺機器、140・・・周辺機器(HDD)、145・・・アプリケーション、150・・・周辺機器(RAM)、155・・・低セキュアのブートコード、160・・・制御可能な供給ポテンシャルドメイン、170・・・制御可能な周波数ドメイン、210・・・セキュアなブートキー(SBK)のキースロット、220・・・セキュアなキー(SSK)のキースロット、300・・・ヒューズ、310・・・セキュアな部分、320・・・非セキュアな部分、330・・・セキュアなブートキー(SBK)、340・・・セキュアな装置データ、350・・・独特な装置識別子(UID)

【特許請求の範囲】
【請求項1】
プログラム可能な集積回路のためのセキュアな信頼チェーンを実施する方法において、
セキュアなブートモードで第1のブートコードを実行する間に、
シークレットキーを使用して第2のブートコードを認証し、且つ
前記シークレットキーと、前記プログラム可能な集積回路に関連した独特の識別子とに基づいてセキュアなキーを発生する、
というステップと、
前記セキュアなブートモードを退出する前に前記シークレットキーへのアクセスを制限するステップと、
ブートモードで前記第2のブートコードを実行する間に、前記プログラム可能な集積回路で実行するためのアプリケーションを認証するステップであって、前記認証は、更に、前記セキュアなキーを使用して前記アプリケーションを認証することを含むようなステップと、
前記ブートモードを退出し且つ前記アプリケーションを実行するステップと、
を備える方法。
【請求項2】
前記アプリケーションは、前記プログラム可能な集積回路のプロセッサにより実行するためのオペレーティングシステムを含む、請求項1に記載の方法。
【請求項3】
前記セキュアなキーを使用して、前記プログラム可能な集積回路にアクセスできるデータに対してオペレーションを遂行するステップを更に備え、前記オペレーションは、前記データの暗号化及び前記データの解読より成るグループから選択される、請求項1に記載の方法。
【請求項4】
セキュアなブートモードで第1のブートコードを実行する間に、前記シークレットキーを使用して前記第2のブートコードを解読するステップと、
前記ブートモードで前記第2のブートコードを実行する間に、前記セキュアなキーを使用して前記アプリケーションを解読するステップと、
を更に備える請求項1に記載の方法。
【請求項5】
前記独特の識別子は、第1の当事者により与えられ、前記シークレットキーは、第2の当事者により与えられる、請求項1に記載の方法。
【請求項6】
前記セキュアなブートモードでの前記第1のブートコードの前記実行は、ウォームブートプロセス及びコールドブートプロセスより成るグループから選択されたブートプロセスを遂行することを含む、請求項1に記載の方法。
【請求項7】
前記プログラム可能な集積回路のモードを決定するステップと、
前記プログラム可能な集積回路がオペレーションモードに入れられた場合に、前記第1のブートコードの前記実行を遂行するステップと、
を更に備える請求項1に記載の方法。
【請求項8】
前記プログラム可能な集積回路と通信するように動作できる周辺機器に関する情報にアクセスするステップであって、前記周辺機器は、前記プログラム可能な集積回路の外部に配置されるものであるステップと、
前記第1のブートコードを実行する間に、前記周辺機器の性能を改善するように前記プログラム可能な集積回路の少なくとも1つのコンポーネントを構成するステップであって、この構成が、更に、前記周辺機器に関する前記情報に基づいて前記少なくとも1つのコンポーネントを構成することを含むようなステップと、
を更に備える請求項1に記載の方法。
【請求項9】
ポータブル電子装置に使用するための集積回路において、
第1のブートコードを記憶するためのメモリと、
前記メモリに結合されて、前記集積回路のセキュアなブートモードで前記第1のブートコードを実行するためのプロセッサであって、前記集積回路のブートモードで第2のブートコードを実行するように更に動作でき、且つアプリケーションを実行するように更に動作できるプロセッサと、
前記プロセッサに結合されたセキュアな暗号化エンジンであって、
前記セキュアなブートモードでシークレットキーを使用して前記第2のブートコードを認証し、
前記シークレットキーと、前記集積回路に関連した独特の識別子とに基づいてセキュアなキーを発生し、
前記プロセッサによる前記アプリケーションの実行の前に、前記ブートモードで前記セキュアなキーを使用して前記アプリケーションを認証する、
ことによりセキュアな信頼チェーンを実施するためのセキュアな暗号化エンジンと、
を備える集積回路。
【請求項10】
前記プロセッサは、更に、前記セキュアなブートモードを退出する前に、前記シークレットキーへのアクセスを制限するように動作できる、請求項9に記載の集積回路。
【請求項11】
前記プロセッサは、更に、前記ブートモードを退出する前に、前記セキュアなキーへのアクセスを制限するように動作できる、請求項9に記載の集積回路。
【請求項12】
前記アプリケーションは、前記集積回路のプロセッサにより実行するためのオペレーティングシステムを含む、請求項9に記載の集積回路。
【請求項13】
前記プロセッサによる前記第1のブートコードの実行は、ウォームブートプロセス及びコールドブートプロセスより成るグループから選択されたブートプロセスを実施する、請求項9に記載の集積回路。
【請求項14】
前記プロセッサに結合された周辺機器の性能を調整するよう動作できる少なくとも1つのコンポーネントを更に備え、前記周辺機器は、前記集積回路の外部に配置され、
前記プロセッサは、前記セキュアなブートモードにある間に、前記周辺機器の性能を改善するために前記少なくとも1つのコンポーネントを構成するよう更に動作できる、請求項9に記載の集積回路。
【請求項15】
集積回路を備え、該集積回路は、
第1のブートコードを記憶するためのメモリと、
前記メモリに結合され、前記集積回路のセキュアなブートモードで前記第1のブートコードを実行するためのプロセッサであって、前記集積回路の別のブートモードで他のブートコードを実行するように更に動作でき、且つアプリケーションを実行するように更に動作できるプロセッサと、
前記プロセッサに結合されたセキュアな暗号化エンジンであって、
前記セキュアなブートモードでシークレットキーを使用して前記他のブートコードを認証し、
前記シークレットキーと、前記集積回路に関連した独特の識別子とに基づいてセキュアなキーを発生し、
前記プロセッサによる前記アプリケーションの実行の前に、前記他のブートモードで前記セキュアなキーを使用して前記アプリケーションを認証する、
ことによりセキュアな信頼チェーンを実施するためのセキュアな暗号化エンジンと、
を含み、更に、
前記集積回路に結合された周辺機器を備え、該周辺機器は、前記プロセッサ及び前記セキュアな暗号化エンジンより成るグループから選択されたコンポーネントにアクセスできる情報を記憶するためのものである、システム。
【請求項16】
前記プロセッサは、更に、前記セキュアなブートモードを退出する前に、前記シークレットキーへのアクセスを制限するように動作できる、請求項15に記載のシステム。
【請求項17】
前記プロセッサは、更に、前記他のブートモードを退出する前に、前記セキュアなキーへのアクセスを制限するように動作できる、請求項15に記載のシステム。
【請求項18】
前記アプリケーションは、前記集積回路のプロセッサにより実行するためのオペレーティングシステムを含む、請求項15に記載のシステム。
【請求項19】
前記プロセッサによる前記第1のブートコードの実行は、ウォームブートプロセス及びコールドブートプロセスより成るグループから選択されたブートプロセスを実施する、請求項15に記載のシステム。
【請求項20】
前記集積回路は、更に、前記周辺機器の性能を調整するよう動作できる少なくとも1つのコンポーネントを備え、
前記プロセッサは、前記セキュアなブートモードにある間に、前記周辺機器の性能を改善するために前記少なくとも1つのコンポーネントを構成するように更に動作できる、請求項15に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−252244(P2009−252244A)
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−70410(P2009−70410)
【出願日】平成21年3月23日(2009.3.23)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】