安全キーの知識なしのブート映像の安全更新
【課題】装置の設計からシステムの製造までの異なる製造段階に保護を与える装置及び/又はシステムセキュリティメカニズムを形成する改良された技術を提供する。
【解決手段】チップに記憶されたブートコードは、安全なブートキーを計算し、サービスプロバイダーから受け取った新しいブートローダーを認証し、その認証された新たなブートローダーを、安全なブートキーを使用して暗号化して、そのブートローダーの実行のために指定された周辺装置に記憶する。このようにして、ブート映像を暗号化するのに使用される安全キーの知識なしにブート映像を安全に更新する。
【解決手段】チップに記憶されたブートコードは、安全なブートキーを計算し、サービスプロバイダーから受け取った新しいブートローダーを認証し、その認証された新たなブートローダーを、安全なブートキーを使用して暗号化して、そのブートローダーの実行のために指定された周辺装置に記憶する。このようにして、ブート映像を暗号化するのに使用される安全キーの知識なしにブート映像を安全に更新する。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]エレクトロニクスではセキュリティメカニズムの重要性が益々高まりつつある。システム及びシステムに使用される装置の製造者は、システム及び装置がどのように使用されるか制御し(例えば、無断使用を停止し)、且つプログラム(例えば、オペレーティングシステム及びアプリケーション)及びコンテンツを複写、無断変更、等から保護することを希望する。従って、装置の製造者は、装置レベルのセキュリティメカニズム及び/又はシステムレベルのセキュリティメカニズムを設けることが必要になる。又、システム及び装置がどのように使用されるか制御し(例えば、無断使用を停止し)、且つプログラム(例えば、オペレーティングシステム及びアプリケーション)及びコンテンツを複写、無断変更、等から保護するためのエンドユーザセキュリティメカニズムを設けるには、装置及び/又はシステムセキュリティ技術も必要になる。
【0002】
[0002]又、エレクトロニックスの製造者は、多数のエンティティを伴うこともある。例えば、装置製造者は、所与の装置を設計するが、装置の実際の製造は外部に委託することがある。同様に、システム製造者は、システムを設計するが、システムの実際の製造は外部に委託することがある。ある当事者は互いに信頼できるが、全ての当事者が、装置及びシステムの設計及び製造に含まれる全ての他のエンティティを信頼できるのではない。例えば、装置及びシステム製造者は、互いに信頼できるが、装置製造者は、システム製造者により利用されるアッセンブルハウスを信頼しないこともあるし、或いはシステム製造者により利用されるアッセンブルハウスを単に望まないか、又はアッセンブルハウスがソフトウェア、ファームウェア、コンフィギュレーションパラメータ等へのアクセスについて信頼できることを保証するようにアッセンブルハウスを監視する能力がないこともある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0003]従って、装置及び/又はシステムセキュリティメカニズムを形成する改良された技術が要望され続けている。又、セキュリティメカニズムは、装置の設計からシステムの製造までの異なる製造段階において保護を与えねばならない。
【課題を解決するための手段】
【0004】
[0004]本発明の技術の実施形態は、ブート映像を暗号化するのに使用されるキーの知識をもたずにブート映像を安全に更新するための技術に向けられる。一実施形態では、新しいブートローダーがサービスプロバイダーから受け取られて、所与の周辺装置にロードされる。次いで、リセットが行われて、ブートコードの実行がスタートする。ブートコードの第1部分は、チップに記憶され、信頼のチェーンを確立する。ブートコードは、安全なブートキーを計算し、サービスプロバイダーから受け取った新しいブートローダーを認証し、次いで、その認証された新たなブートローダーを、安全なブートキーを使用して暗号化して、そのブートローダーの実行のために指定された周辺装置に記憶する。
【0005】
[0005]本発明の実施形態を、同様の要素が同じ参照番号で示された添付図面に一例として示すが、これに限定されるものではない。
【図面の簡単な説明】
【0006】
【図1】本発明技術の実施形態を具現化する例示的システムのブロック図である。
【図2A】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図2B】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図2C】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図2D】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図3A】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3B】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3C】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3D】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3E】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図4A】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図4B】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図5A】本発明技術の実施形態による例示的回復モードシステムのブロック図である。
【図5B】本発明技術の実施形態による例示的回復モードシステムのブロック図である。
【図6】本発明技術の一実施形態による例示的回復モード自己確認メッセージのブロック図である。
【発明を実施するための形態】
【0007】
[0006]添付図面に一例が示された本発明技術の実施形態について、以下に詳細に説明する。本発明技術は、これら実施形態に関連して説明するが、本発明をこれら実施形態に限定するものでないことを理解されたい。逆に、本発明は、特許請求の範囲により規定される本発明の範囲内に包含される代替物、変更、及び等効物を網羅するものとする。更に、本発明技術の以下の詳細な説明において、本発明を完全に理解するために多数の特定の細部を述べる。しかしながら、これら特定の細部を伴わずに本発明技術を実施できることが明らかであろう。他の点については、良く知られた方法、手順、コンポーネント、及び回路は、本発明技術の態様を不必要に不明瞭にしないために、詳細に説明しない。
【0008】
[0007]図1には、本発明技術の実施形態を具現化する例示的システムが示されている。この例示的システム105は、装置110と、1つ以上の周辺装置115−130とを備えている。周辺装置115−130は、内部及び/又は外部周辺装置、例えば、キーパッド、カーソルコントローラ、通信ポート、コンピューティング装置の読み取り可能な媒体(CDRM)(例えば、ハードディスクドライバ(HDD)125、ランダムアクセスメモリ(RAM)130)、等でよい。周辺装置115−130は、1つ以上の通信チャンネルによって装置110に結合することができる。装置110は、常時オン(always-on)(AO)ドメイン135と、1つ以上の制御可能な電力ドメイン140、145とを備えている。AOドメイン135は、装置がターンオンされたときに、常に、電力、及びもし適用できれば、クロック信号が、これに印加されるものである。AOドメインは、リアルタイムクロック機能的ユニット、電力管理コントローラ機能的ユニット、キーボードコントローラ機能的ユニット、及び/又は記憶レジスタ機能的ユニットを含むことができる。制御可能な電力ドメイン140、145は、1つ以上の制御可能な供給電位ドメイン140、及び/又は1つ以上の制御可能なクロック作動ドメイン145を含むことができる。1つ以上の制御可能な供給電位ドメイン140は、1つ以上のオンチップコンピューティング装置読み取り可能媒体(CDRM)150と、1つ以上の汎用処理ユニット(例えば、CPU)155と、1つ以上の特殊な処理ユニット(例えば、GPU)160と、1つ以上の機能的ユニット(例えば、進歩型暗号標準(AES)エンジン)165と、1つ以上のシステムコントローラ170−180とを含むことができる。1つ以上の制御可能なクロック作動ドメイン145は、1つ以上の特殊な処理ユニット及び又は機能的ユニット185を含むことができる。従って、装置110は、システム・オン・チップ(SoC)集積回路と称することができる。
【0009】
[0008]オンチップCDRM150は、装置を構成するためのブートコードの第1部分を記憶し、そしてブートコードの他の部分、オペレーティングシステム(OS)、割り込みハンドラー及びアプリケーションを、1つ以上の周辺不揮発性CDRM(例えば、HDD、フラッシュ媒体)から、汎用及び/又は特殊な処理ユニット155、160にアクセスできる1つ以上のCDRM(例えば、RAM)130へとロードする。汎用処理ユニット(例えば、CPU)155は、装置110の汎用ソフトウェアベースの機能を実行するために計算ハードウェアリソースを備えている。このようなソフトウェア機能は、オペレーティングシステム(OS)ソフトウェアの実行、装置が外部事象、アプリケーションソフトウェア、等に応答する上で助けとなる割り込みハンドリングソフトウェアを含むことができる。特殊なプロセッサ(例えば、GPU)は、特殊な機能を実行するための計算ハードウェアリソース、例えば、グラフィック処理ユニット(GPU)160、デジタル信号処理、ビデオエンコーダ/デコーダ、等を備えている。システムコントローラ170−180は、装置110の機能的要素間の通信及び周辺装置115−130との通信のための種々の機能を発揮する。
【0010】
[0009]システム105の装置110は、装置の複数の電力状態の間に記憶キーを取り扱うように適応される。又、装置110は、ブートキーの知識をもたずに装置のブートコードを安全に更新するようにも適応される。更に、装置110は、安全な回復モードを与えるようにも適応される。
【0011】
[0010]図2A−2Dには、本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法が示されている。最初に、システム105の装置110は、1つ以上のアプリケーションを実行するように装置110をセットアップするために、ブートプログラムを実行する。ブートプログラムは、典型的に、1つ以上の部分を含む。ブートプログラムの第1部分は、オンチップROM150に記憶され、ここでは、ブートROMコード(BR)と称される。202において、BRが処理ユニット155により実行されて、信頼のチェーンを確立する。BRの実行中に、204において、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアサートされ、そして暗号/解読エンジンによりアクセスできる対応SBKキースロットにSBKがロードされる。暗号/解読エンジンは、キースロットへの読み取り、書き込み、暗号及び解読アクセスをサポートする。持続性又は「粘着性(sticky)」ビットは、キースロットへの読み取り及び書き込みアクセスを制御するが、暗号/解読動作のためのアクセスを防止するものではない。SBKは、オフチップで(例えば、周辺装置に)記憶されたブートコードの部分を保護及び認証するために、装置製造者により使用される。1つの具現化において、SBKは、装置製造者により選択され及び/又はシステム製造者により知られ/選択されたシークレットキーである。1つの具現化において、SBKは、オンチップヒューズのようなSBKレジスタへプログラムされる。それ故、SBKは、変更可能であるが、以前の値にリセットすることはできない。1つの具現化において、SBKは、保護されたコードでしか読み取れない。1つの具現化において、保護されたコードは、BRコードである。1つの具現化において、SBKは、128ビットキーである。1つの具現化において、DKは、システム製造者に知られたシークレット値である。1つの具現化において、DKは、オンチップヒューズのようなDKレジスタにプログラムされる。それ故、DKも、変更可能であるが、以前の値にリセットできない。1つの具現化において、DKは、保護されたコードでしか読み取れない。1つの具現化において、保護されたコードは、BRコードである。1つの具現化において、DKは、32ビットキーである。1つの具現化において、DIDは、製造者によりオンチップヒューズにプログラムされる装置特有の値であり、公然とアクセスできる。1つの具現化において、DIDは、64ビット値である。
【0012】
[0011]206において、安全システムキー(SSK)が、SBK、DK及びDIDから計算されて、暗号/解読エンジンによりアクセス可能な対応SSKキースロットにロードされる。安全記憶キー(SSK)は、顧客定義データを保護するためにシステム製造者により使用される。SSKは、装置製造者プログラムされた安全ブートキー(SBK)、システム製造者プログラムされた装置キー(DK)、及び装置製造者プログラムされた独特装置識別子(UID)から計算される。SSKは、1つの具現化においては、次のように計算することができる。
SSK=AES(SBK;DID^AES(SBK;DK))
装置製造者プログラムされたDIDは、チップごとに異なる。従って、SSKも、チップごとに独特のものとなる。更に、SBKも、チップごとに独特のものとなるか、又はシステム製造者により決定される複数のチップ(例えば、ロット)にわたって共通のものとなる。DKも、チップごとに独特であるか、又は複数のチップにわたって共通となる。
【0013】
[0012]208において、SSKは、装置110のAOドメイン140内のSSKレジスタへロードされる。SBKキースロットからSBKをフラッシュすることで、SBKで明確に認証されていない他のコードがSBKで暗号/解読動作を遂行することを防止する。210において、ブートローダー(BL)と称されるブートコードの付加的な部分が、BLを記憶するために指定された所与の周辺装置から読み取られる。周辺装置に記憶されたBLが暗号化される。212において、SBKを使用してブートローダーが解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等をベースとする認証技術を使用して、認証することができる。SBKを使用してブートローダーを解読し認証することで、安全な信頼チェーンが維持される。
【0014】
[0013]AOドメインのSSKレジスタは、BLの外部からの読み取り及び書き込みに対してレジスタを保護するセキュリティ制御を含む。一実施形態では、セキュリティ制御されるSSKレジスタは、持続性の読み取り及び書き込みビットを含む。208において、SSKがBRによりSSKレジスタにロードされると、214において、読み取り粘着性ビットがセットされる(読み取りアクセスをディスエイブルする)が、書き込み粘着性ビットはそうならない(その後の書き込みアクセスを許す)。更に、SBK及びSSKキースロットは、BRの外部からのアクセスを防止するためにBRによりセットされる持続性読み取り/書き込みビットによって保護される。
【0015】
[0014]216において、BLは、該BLが成功裏に解読されて認証された場合に、処理ユニット155により実行される。BLの実行中に、218において、データ及び/又は1つ以上のアプリケーションが1つ以上の周辺装置から読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。220において、暗号化されたデータ又はアプリケーションが、SSKを使用して解読される。
【0016】
[0015]222において、装置110は、任意であるが、システム製造者がSSKを変化させるのを許すことができる。SSKがシステム製造者により変化される場合には、224において、新たなSSKがそれに対応するSSKキースロットに記憶され、又、SSKがAOドメインのセキュリティ制御レジスタに記憶される。SSKがAOドメインのSSKレジスタに最初に書き込まれるときには214において書き込みビットがセットされないので、SSKを、システム製造者によって変更できると共に、暗号/解読エンジンが低電力状態から復帰するときに回復することができる。しかしながら、AOドメインのSSKレジスタにおけるSSKが、222において、オーバーライトされるときには、更なるオーバーライトを防止するように持続性書き込みビットをセットすることができる。又、SSKを保持するキースロットへの書き込みアクセスは、この点において、その持続性書き込みビットをセットすることでディスエイブルすることもでき、これにより、更なるオーバーライトを防止することもできる。SSKが変更された場合に、もし適用できれば、226において、アプリケーションが実行される。アプリケーションは、OS、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、GPS、等を含むことができる。
【0017】
[0016]228において、1つが暗号/解読エンジン165を含むような1つ以上のドメインを低電力状態へと循環させることができる。230において、ドメインが低電力状態から循環されるときに再スタートが行われる。再スタートに応答してBLを実行する間に、232において、1つ以上の周辺装置(例えば、RAM)に残るコードが確認され、そしてAOドメインにおけるセキュリティ制御されたSSKレジスタへのアクセスがリセットされ、読み取り及び書き込みアクセスが許される。234において、AOドメインのセキュリティコントローラSSKレジスタからSSKキースロットへSSKが読み取られる。SSKが、SSKレジスタから、BLにより暗号/解読エンジンのための対応キースロットへ読み取られると、236において、読み取りディスエイブル及び書き込みディスエイブル持続ビットがセットされる。その後、238において、データ及び/又は1つ以上のアプリケーションが1つ以上の周辺装置から読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。240において、暗号化データ又はアプリケーションが、SSKを使用して解読される。242において、アプリケーションが実行される。
【0018】
[0017]従って、本発明技術の実施形態は、システム記憶キー(SSK)をAOドメインに効果的に維持し、そして暗号/解読エンジンがオンに戻されるときに、このエンジンにSSKを回復させる。しかしながら、SSKは、BLによってアクセスすることしかできず、これは、安全な信頼チェーンを与える。更に、これらの実施形態は、任意であるが、SSKの更新を許す。
【0019】
[0018]図3A−3Eには、本発明技術の一実施形態により、ブートキーの知識なしに、装置のブートコードを安全に更新する方法が示されている。この場合も、302において、BRが処理ユニット150により実行され(例えば、コールドブート)、信頼のチェーンを確立する。BRの実行中に、304において、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアクセスされ、又、SBKが、暗号/解読エンジンによりアクセス可能な対応SBKキースロットにロードされる。SBKレジスタは、BRの外部からのアクセスを防止するために、SBKにアクセスした後にBRによりセットされる持続的読み取り/書き込みビットによって保護される。306において、前記で詳細に述べたように、SBK、DK及びDIDから安全システムキー(SSK)が計算され、そして対応するSSKキースロットにロードされる。
【0020】
[0019]308において、装置110のAOドメイン140内のSSKレジスタにSSKがロードされる。310において、ブートローダー(BL)と称されるブートコードの付加的な部分が、BLを記憶するように指定された所与の周辺装置から読み取られる。周辺装置の記憶されるBLは、暗号化される。312において、ブートローダーは、SBKを使用して解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等に基づく認証技術を使用して認証売ることができる。SBKを使用してブートローダーを解読し、認証することで、安全な信頼チェーンが維持される。
【0021】
[0020]314において、BLは、このBLが成功裏に解読され認証された場合に、処理ユニット150により実行される。BLの実行中に、316において、SBKがキースロットからフラッシュされる。SBKは、全てゼロ又は他の何らかのパターンでオーバーライトすることによりフラッシュすることができる。その後、318において、1つ以上のアプリケーションが1つ以上の周辺装置から読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。320において、暗号化されたアプリケーションは、SSKを使用して解読される。322において、アプリケーションが実行される。アプリケーションは、OS、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、GPS等を含むことができる。
【0022】
[0021]324において、新たなブートローダーがサービスプロバイダーから受け取られる。新たなブートローダーは、公衆キー暗号化、等を使用してエンコードすることができる。その後、ある点において、装置が再スタートされる(例えば、コールドブート)。326において、再スタートに応答してBRが実行される。BRの実行中に、328において、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアクセスされ、そしてSBKが、暗号/解読エンジンによりアクセス可能な対応するSBKキースロットへロードされる。SBKレジスタは、BRの外部からのアクセスを防止するためにSBKにアクセスした後にBRによってセットされた持続性読み取り/書き込みビットにより保護される。330において、前記で詳細に述べたように、SBK、DK及びDIDから安全システムキー(SSK)が計算され、それに対応するSSKキースロットへロードされる。332において、SSKは、装置110のAOドメイン140のSSKレジスタにロードされる。334において、新たなブートローダーが周辺装置から読み取られる。新たなブートローダーは、典型的に、暗号化形態で記憶される。336において、サービスプロバイダーから受け取られた新たなブートローダーが認証される。338において、新たなブートローダーは、SBKを使用して暗号化され、そしてBLを記憶するために指定された所与の周辺装置に記憶される。340において、SBKは、キースロットからフラッシュされる。342において、SSKに対する読み取り粘着性ビットがセットされる(読み取りアクセスをディスエイブルする)が、書き込み粘着性ビットはそのようにされない(その後の書き込みアクセスを許す)。更に、SBK及びSSKキースロットは、BRの外部からのアクセスを防止するためにBRによりセットされた持続性読み取り/書き込みビットにより保護される。
【0023】
[0022]344において、新たなBLが成功裏に解読され認証された場合には、新たなBLが処理ユニット155により実行される。346において、新たなBLの実行中に1つ以上の周辺装置からデータ及び/又は1つ以上のアプリケーションが読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。348において、暗号化されたデータ又はアプリケーションは、SSKを使用して解読される。350において、アプリケーションが実行される。アプリケーションは、OS、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、GPS、等を含むことができる。
【0024】
[0023]装置がコールドブートされる次のときに、新たなBLがロードされて実行される。従って、本発明技術の実施形態は、安全ブートキーを知らずに、ブートローダーコードの安全な更新も効果的に可能にする。
【0025】
[0024]図4A−4Dには、本発明技術の一実施形態による安全回復方法が示されている。この場合も、402において、BRが処理ユニット155により実行され(例えば、コールドブート)、信頼のチェーンが確立される。404において、BRの実行中に、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアクセスされ、そしてSBKが、暗号/解読エンジンによりアクセス可能な対応するSBKキースロットにロードされる。406において、前記で詳細に述べたように、SBK、DK及びDIDから安全システムキー(SSK)が計算され、それに対応するSSKキースロットにロードされる。
【0026】
[0025]408において、SSKが装置110のAOドメイン135内のSSKレジスタにロードされる。410において、BLを記憶するように指定された所与の周辺装置からBLが読み取られる。周辺装置に記憶されるBLは、暗号化される。412において、SBKを使用してブートローダーが解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等をベースとする認証技術を使用して、認証することができる。
【0027】
[0026]BLが成功裏に解読され認証された場合には、処理ユニット155によりBLが実行される。しかしながら、410、412の読み取り及び/又は解読/認証プロセスが失敗した場合には、414において、装置が回復モードに入る。装置は、BLの読み取り及び/又は解読及び認証を失敗すると、ロックされるか又はしくじり(brick)とみなされる。更に、装置が依然製造段階にあるときには、回復モードを使用して、SBK、DK及び/又はBLを初めてシステムにロードすることができる。回復モードにある間に、装置110は、装置110のDIDを所与の通信チャンネルにブロードキャストする。1つの具現化において、通信チャンネルは、ユニバーサルシリアルバス(USB)リンク418である。装置105を含むシステムは、図5A及び5Bに示したように、ホスト422に直接結合されてもよいし、又はネットワーク505及びローカルインターフェイス装置510を通して結合されてもよい。420において、ホスト422装置は、DIDを受け取り、所与のSBKにマップする。次いで、424において、ホスト422は、所与のSBKを使用して自己確認メッセージを発生し、その自己確認メッセージを装置110へ送信する。この実施例において、このメッセージは、図6に示すように、(非安全)長さ605と、ハッシュ610と、ランダムAESブロック615と、安全長さ620と、コマンド及びデータ625と、ペイロード630、及びパッディング(例えば、0X80、及び必要に応じてそれに続く付加的な0X00バイト)635とを含む。ランダムAESブロック615、安全長さ620、コマンド及びデータ625、ペイロード630、及びパッディング635は、DIDにマップされたSBKを使用してエンコードされる。426において、メッセージは、装置110により受け取られ、装置のSBKを使用して確認される。1つの具現化において、受け取られたメッセージは、非安全長さ605が安全長さ620に一致し、ハッシュ610が正しく、コマンド615が有効であり(例えば、所与のメッセージに対して有効なコマンド形式)、メッセージのサイズが正しく(コマンド及びデータにより指定されたように)、ペイロードのサイズが正しく、パッディングパターンが正しく、及び/又はコマンド及びデータ625におけるBRバージョン番号が装置110のBRバージョンに一致する場合に、有効となる。メッセージが有効である場合には、428において、装置110がメッセージを周辺装置(例えば、RAM)へロードして、それを実行する。428において、回復モードは、メッセージの1つ以上のコマンドを実行し、メッセージに含まれたコードを実行し、及び/又はメッセージ内のBLコードを所与の周辺装置に記憶することができる。メッセージにおいてBLコードが受け取られた場合は、BLが、SBKを使用してエンコードされて所与の周辺装置に記憶される。任意であるが、装置110は、ホストから付加的なデータをダウンロードして認証することができる。付加的なデータは、これを周辺装置に書き込む前に、SBKを使用して暗号化し及びサインすることができる。このように、回復モードは、複数のメッセージ送信及び応答シーケンスを与えることができる。メッセージが有効でない場合には、装置110は、システムリセットを進めることを要求する無限ループに入る。
【0028】
[0027]従って、本発明技術の実施形態は、好都合にも、ロックされたシステムへのBLコードの安全なダウンロードも可能にする。
【0029】
[0028]本発明技術の特定の実施形態の以上の説明は、例示のためのものである。それらは、余す所のないものでもなく、又は、本発明を、ここに開示する正確な形態に限定するものでもなく、明らかに、前記教示に鑑み、多数の変更や修正が考えられる。前記実施形態は、本発明の原理及びその実際の応用を最良に説明するために選択されて述べられたものであり、従って、当業者であれば、本発明及び種々の実施形態を、意図される特定の用途に適するように種々の変更を加えて、最良に利用することができよう。本発明の範囲は、特許請求の範囲及びその等効物により限定されることが意図される。
【符号の説明】
【0030】
105・・・システム、110・・・装置(SoC)、115・・・周辺装置(USB)、120・・・周辺装置、125・・・周辺装置(HDD)、130・・・周辺装置(RAM)、135・・・A/Oドメイン、150・・・オンチップROM、155・・・汎用処理ユニット、160・・・特殊な処理ユニット(GPU)、165・・・機能(AESエンジン)、170・・・システムコントローラ(USB)、175・・・システムコントローラ、180・・・システムコントローラ、185・・・機能、605・・・長さ、610・・・ハッシュ、615・・・ランダムAESブロック、620・・・安全長さ、625・・・コマンド及びデータ、630・・・ペイロード、635・・・パッディング
【技術分野】
【0001】
[0001]エレクトロニクスではセキュリティメカニズムの重要性が益々高まりつつある。システム及びシステムに使用される装置の製造者は、システム及び装置がどのように使用されるか制御し(例えば、無断使用を停止し)、且つプログラム(例えば、オペレーティングシステム及びアプリケーション)及びコンテンツを複写、無断変更、等から保護することを希望する。従って、装置の製造者は、装置レベルのセキュリティメカニズム及び/又はシステムレベルのセキュリティメカニズムを設けることが必要になる。又、システム及び装置がどのように使用されるか制御し(例えば、無断使用を停止し)、且つプログラム(例えば、オペレーティングシステム及びアプリケーション)及びコンテンツを複写、無断変更、等から保護するためのエンドユーザセキュリティメカニズムを設けるには、装置及び/又はシステムセキュリティ技術も必要になる。
【0002】
[0002]又、エレクトロニックスの製造者は、多数のエンティティを伴うこともある。例えば、装置製造者は、所与の装置を設計するが、装置の実際の製造は外部に委託することがある。同様に、システム製造者は、システムを設計するが、システムの実際の製造は外部に委託することがある。ある当事者は互いに信頼できるが、全ての当事者が、装置及びシステムの設計及び製造に含まれる全ての他のエンティティを信頼できるのではない。例えば、装置及びシステム製造者は、互いに信頼できるが、装置製造者は、システム製造者により利用されるアッセンブルハウスを信頼しないこともあるし、或いはシステム製造者により利用されるアッセンブルハウスを単に望まないか、又はアッセンブルハウスがソフトウェア、ファームウェア、コンフィギュレーションパラメータ等へのアクセスについて信頼できることを保証するようにアッセンブルハウスを監視する能力がないこともある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0003]従って、装置及び/又はシステムセキュリティメカニズムを形成する改良された技術が要望され続けている。又、セキュリティメカニズムは、装置の設計からシステムの製造までの異なる製造段階において保護を与えねばならない。
【課題を解決するための手段】
【0004】
[0004]本発明の技術の実施形態は、ブート映像を暗号化するのに使用されるキーの知識をもたずにブート映像を安全に更新するための技術に向けられる。一実施形態では、新しいブートローダーがサービスプロバイダーから受け取られて、所与の周辺装置にロードされる。次いで、リセットが行われて、ブートコードの実行がスタートする。ブートコードの第1部分は、チップに記憶され、信頼のチェーンを確立する。ブートコードは、安全なブートキーを計算し、サービスプロバイダーから受け取った新しいブートローダーを認証し、次いで、その認証された新たなブートローダーを、安全なブートキーを使用して暗号化して、そのブートローダーの実行のために指定された周辺装置に記憶する。
【0005】
[0005]本発明の実施形態を、同様の要素が同じ参照番号で示された添付図面に一例として示すが、これに限定されるものではない。
【図面の簡単な説明】
【0006】
【図1】本発明技術の実施形態を具現化する例示的システムのブロック図である。
【図2A】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図2B】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図2C】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図2D】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図3A】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3B】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3C】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3D】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図3E】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図4A】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図4B】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図5A】本発明技術の実施形態による例示的回復モードシステムのブロック図である。
【図5B】本発明技術の実施形態による例示的回復モードシステムのブロック図である。
【図6】本発明技術の一実施形態による例示的回復モード自己確認メッセージのブロック図である。
【発明を実施するための形態】
【0007】
[0006]添付図面に一例が示された本発明技術の実施形態について、以下に詳細に説明する。本発明技術は、これら実施形態に関連して説明するが、本発明をこれら実施形態に限定するものでないことを理解されたい。逆に、本発明は、特許請求の範囲により規定される本発明の範囲内に包含される代替物、変更、及び等効物を網羅するものとする。更に、本発明技術の以下の詳細な説明において、本発明を完全に理解するために多数の特定の細部を述べる。しかしながら、これら特定の細部を伴わずに本発明技術を実施できることが明らかであろう。他の点については、良く知られた方法、手順、コンポーネント、及び回路は、本発明技術の態様を不必要に不明瞭にしないために、詳細に説明しない。
【0008】
[0007]図1には、本発明技術の実施形態を具現化する例示的システムが示されている。この例示的システム105は、装置110と、1つ以上の周辺装置115−130とを備えている。周辺装置115−130は、内部及び/又は外部周辺装置、例えば、キーパッド、カーソルコントローラ、通信ポート、コンピューティング装置の読み取り可能な媒体(CDRM)(例えば、ハードディスクドライバ(HDD)125、ランダムアクセスメモリ(RAM)130)、等でよい。周辺装置115−130は、1つ以上の通信チャンネルによって装置110に結合することができる。装置110は、常時オン(always-on)(AO)ドメイン135と、1つ以上の制御可能な電力ドメイン140、145とを備えている。AOドメイン135は、装置がターンオンされたときに、常に、電力、及びもし適用できれば、クロック信号が、これに印加されるものである。AOドメインは、リアルタイムクロック機能的ユニット、電力管理コントローラ機能的ユニット、キーボードコントローラ機能的ユニット、及び/又は記憶レジスタ機能的ユニットを含むことができる。制御可能な電力ドメイン140、145は、1つ以上の制御可能な供給電位ドメイン140、及び/又は1つ以上の制御可能なクロック作動ドメイン145を含むことができる。1つ以上の制御可能な供給電位ドメイン140は、1つ以上のオンチップコンピューティング装置読み取り可能媒体(CDRM)150と、1つ以上の汎用処理ユニット(例えば、CPU)155と、1つ以上の特殊な処理ユニット(例えば、GPU)160と、1つ以上の機能的ユニット(例えば、進歩型暗号標準(AES)エンジン)165と、1つ以上のシステムコントローラ170−180とを含むことができる。1つ以上の制御可能なクロック作動ドメイン145は、1つ以上の特殊な処理ユニット及び又は機能的ユニット185を含むことができる。従って、装置110は、システム・オン・チップ(SoC)集積回路と称することができる。
【0009】
[0008]オンチップCDRM150は、装置を構成するためのブートコードの第1部分を記憶し、そしてブートコードの他の部分、オペレーティングシステム(OS)、割り込みハンドラー及びアプリケーションを、1つ以上の周辺不揮発性CDRM(例えば、HDD、フラッシュ媒体)から、汎用及び/又は特殊な処理ユニット155、160にアクセスできる1つ以上のCDRM(例えば、RAM)130へとロードする。汎用処理ユニット(例えば、CPU)155は、装置110の汎用ソフトウェアベースの機能を実行するために計算ハードウェアリソースを備えている。このようなソフトウェア機能は、オペレーティングシステム(OS)ソフトウェアの実行、装置が外部事象、アプリケーションソフトウェア、等に応答する上で助けとなる割り込みハンドリングソフトウェアを含むことができる。特殊なプロセッサ(例えば、GPU)は、特殊な機能を実行するための計算ハードウェアリソース、例えば、グラフィック処理ユニット(GPU)160、デジタル信号処理、ビデオエンコーダ/デコーダ、等を備えている。システムコントローラ170−180は、装置110の機能的要素間の通信及び周辺装置115−130との通信のための種々の機能を発揮する。
【0010】
[0009]システム105の装置110は、装置の複数の電力状態の間に記憶キーを取り扱うように適応される。又、装置110は、ブートキーの知識をもたずに装置のブートコードを安全に更新するようにも適応される。更に、装置110は、安全な回復モードを与えるようにも適応される。
【0011】
[0010]図2A−2Dには、本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法が示されている。最初に、システム105の装置110は、1つ以上のアプリケーションを実行するように装置110をセットアップするために、ブートプログラムを実行する。ブートプログラムは、典型的に、1つ以上の部分を含む。ブートプログラムの第1部分は、オンチップROM150に記憶され、ここでは、ブートROMコード(BR)と称される。202において、BRが処理ユニット155により実行されて、信頼のチェーンを確立する。BRの実行中に、204において、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアサートされ、そして暗号/解読エンジンによりアクセスできる対応SBKキースロットにSBKがロードされる。暗号/解読エンジンは、キースロットへの読み取り、書き込み、暗号及び解読アクセスをサポートする。持続性又は「粘着性(sticky)」ビットは、キースロットへの読み取り及び書き込みアクセスを制御するが、暗号/解読動作のためのアクセスを防止するものではない。SBKは、オフチップで(例えば、周辺装置に)記憶されたブートコードの部分を保護及び認証するために、装置製造者により使用される。1つの具現化において、SBKは、装置製造者により選択され及び/又はシステム製造者により知られ/選択されたシークレットキーである。1つの具現化において、SBKは、オンチップヒューズのようなSBKレジスタへプログラムされる。それ故、SBKは、変更可能であるが、以前の値にリセットすることはできない。1つの具現化において、SBKは、保護されたコードでしか読み取れない。1つの具現化において、保護されたコードは、BRコードである。1つの具現化において、SBKは、128ビットキーである。1つの具現化において、DKは、システム製造者に知られたシークレット値である。1つの具現化において、DKは、オンチップヒューズのようなDKレジスタにプログラムされる。それ故、DKも、変更可能であるが、以前の値にリセットできない。1つの具現化において、DKは、保護されたコードでしか読み取れない。1つの具現化において、保護されたコードは、BRコードである。1つの具現化において、DKは、32ビットキーである。1つの具現化において、DIDは、製造者によりオンチップヒューズにプログラムされる装置特有の値であり、公然とアクセスできる。1つの具現化において、DIDは、64ビット値である。
【0012】
[0011]206において、安全システムキー(SSK)が、SBK、DK及びDIDから計算されて、暗号/解読エンジンによりアクセス可能な対応SSKキースロットにロードされる。安全記憶キー(SSK)は、顧客定義データを保護するためにシステム製造者により使用される。SSKは、装置製造者プログラムされた安全ブートキー(SBK)、システム製造者プログラムされた装置キー(DK)、及び装置製造者プログラムされた独特装置識別子(UID)から計算される。SSKは、1つの具現化においては、次のように計算することができる。
SSK=AES(SBK;DID^AES(SBK;DK))
装置製造者プログラムされたDIDは、チップごとに異なる。従って、SSKも、チップごとに独特のものとなる。更に、SBKも、チップごとに独特のものとなるか、又はシステム製造者により決定される複数のチップ(例えば、ロット)にわたって共通のものとなる。DKも、チップごとに独特であるか、又は複数のチップにわたって共通となる。
【0013】
[0012]208において、SSKは、装置110のAOドメイン140内のSSKレジスタへロードされる。SBKキースロットからSBKをフラッシュすることで、SBKで明確に認証されていない他のコードがSBKで暗号/解読動作を遂行することを防止する。210において、ブートローダー(BL)と称されるブートコードの付加的な部分が、BLを記憶するために指定された所与の周辺装置から読み取られる。周辺装置に記憶されたBLが暗号化される。212において、SBKを使用してブートローダーが解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等をベースとする認証技術を使用して、認証することができる。SBKを使用してブートローダーを解読し認証することで、安全な信頼チェーンが維持される。
【0014】
[0013]AOドメインのSSKレジスタは、BLの外部からの読み取り及び書き込みに対してレジスタを保護するセキュリティ制御を含む。一実施形態では、セキュリティ制御されるSSKレジスタは、持続性の読み取り及び書き込みビットを含む。208において、SSKがBRによりSSKレジスタにロードされると、214において、読み取り粘着性ビットがセットされる(読み取りアクセスをディスエイブルする)が、書き込み粘着性ビットはそうならない(その後の書き込みアクセスを許す)。更に、SBK及びSSKキースロットは、BRの外部からのアクセスを防止するためにBRによりセットされる持続性読み取り/書き込みビットによって保護される。
【0015】
[0014]216において、BLは、該BLが成功裏に解読されて認証された場合に、処理ユニット155により実行される。BLの実行中に、218において、データ及び/又は1つ以上のアプリケーションが1つ以上の周辺装置から読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。220において、暗号化されたデータ又はアプリケーションが、SSKを使用して解読される。
【0016】
[0015]222において、装置110は、任意であるが、システム製造者がSSKを変化させるのを許すことができる。SSKがシステム製造者により変化される場合には、224において、新たなSSKがそれに対応するSSKキースロットに記憶され、又、SSKがAOドメインのセキュリティ制御レジスタに記憶される。SSKがAOドメインのSSKレジスタに最初に書き込まれるときには214において書き込みビットがセットされないので、SSKを、システム製造者によって変更できると共に、暗号/解読エンジンが低電力状態から復帰するときに回復することができる。しかしながら、AOドメインのSSKレジスタにおけるSSKが、222において、オーバーライトされるときには、更なるオーバーライトを防止するように持続性書き込みビットをセットすることができる。又、SSKを保持するキースロットへの書き込みアクセスは、この点において、その持続性書き込みビットをセットすることでディスエイブルすることもでき、これにより、更なるオーバーライトを防止することもできる。SSKが変更された場合に、もし適用できれば、226において、アプリケーションが実行される。アプリケーションは、OS、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、GPS、等を含むことができる。
【0017】
[0016]228において、1つが暗号/解読エンジン165を含むような1つ以上のドメインを低電力状態へと循環させることができる。230において、ドメインが低電力状態から循環されるときに再スタートが行われる。再スタートに応答してBLを実行する間に、232において、1つ以上の周辺装置(例えば、RAM)に残るコードが確認され、そしてAOドメインにおけるセキュリティ制御されたSSKレジスタへのアクセスがリセットされ、読み取り及び書き込みアクセスが許される。234において、AOドメインのセキュリティコントローラSSKレジスタからSSKキースロットへSSKが読み取られる。SSKが、SSKレジスタから、BLにより暗号/解読エンジンのための対応キースロットへ読み取られると、236において、読み取りディスエイブル及び書き込みディスエイブル持続ビットがセットされる。その後、238において、データ及び/又は1つ以上のアプリケーションが1つ以上の周辺装置から読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。240において、暗号化データ又はアプリケーションが、SSKを使用して解読される。242において、アプリケーションが実行される。
【0018】
[0017]従って、本発明技術の実施形態は、システム記憶キー(SSK)をAOドメインに効果的に維持し、そして暗号/解読エンジンがオンに戻されるときに、このエンジンにSSKを回復させる。しかしながら、SSKは、BLによってアクセスすることしかできず、これは、安全な信頼チェーンを与える。更に、これらの実施形態は、任意であるが、SSKの更新を許す。
【0019】
[0018]図3A−3Eには、本発明技術の一実施形態により、ブートキーの知識なしに、装置のブートコードを安全に更新する方法が示されている。この場合も、302において、BRが処理ユニット150により実行され(例えば、コールドブート)、信頼のチェーンを確立する。BRの実行中に、304において、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアクセスされ、又、SBKが、暗号/解読エンジンによりアクセス可能な対応SBKキースロットにロードされる。SBKレジスタは、BRの外部からのアクセスを防止するために、SBKにアクセスした後にBRによりセットされる持続的読み取り/書き込みビットによって保護される。306において、前記で詳細に述べたように、SBK、DK及びDIDから安全システムキー(SSK)が計算され、そして対応するSSKキースロットにロードされる。
【0020】
[0019]308において、装置110のAOドメイン140内のSSKレジスタにSSKがロードされる。310において、ブートローダー(BL)と称されるブートコードの付加的な部分が、BLを記憶するように指定された所与の周辺装置から読み取られる。周辺装置の記憶されるBLは、暗号化される。312において、ブートローダーは、SBKを使用して解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等に基づく認証技術を使用して認証売ることができる。SBKを使用してブートローダーを解読し、認証することで、安全な信頼チェーンが維持される。
【0021】
[0020]314において、BLは、このBLが成功裏に解読され認証された場合に、処理ユニット150により実行される。BLの実行中に、316において、SBKがキースロットからフラッシュされる。SBKは、全てゼロ又は他の何らかのパターンでオーバーライトすることによりフラッシュすることができる。その後、318において、1つ以上のアプリケーションが1つ以上の周辺装置から読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。320において、暗号化されたアプリケーションは、SSKを使用して解読される。322において、アプリケーションが実行される。アプリケーションは、OS、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、GPS等を含むことができる。
【0022】
[0021]324において、新たなブートローダーがサービスプロバイダーから受け取られる。新たなブートローダーは、公衆キー暗号化、等を使用してエンコードすることができる。その後、ある点において、装置が再スタートされる(例えば、コールドブート)。326において、再スタートに応答してBRが実行される。BRの実行中に、328において、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアクセスされ、そしてSBKが、暗号/解読エンジンによりアクセス可能な対応するSBKキースロットへロードされる。SBKレジスタは、BRの外部からのアクセスを防止するためにSBKにアクセスした後にBRによってセットされた持続性読み取り/書き込みビットにより保護される。330において、前記で詳細に述べたように、SBK、DK及びDIDから安全システムキー(SSK)が計算され、それに対応するSSKキースロットへロードされる。332において、SSKは、装置110のAOドメイン140のSSKレジスタにロードされる。334において、新たなブートローダーが周辺装置から読み取られる。新たなブートローダーは、典型的に、暗号化形態で記憶される。336において、サービスプロバイダーから受け取られた新たなブートローダーが認証される。338において、新たなブートローダーは、SBKを使用して暗号化され、そしてBLを記憶するために指定された所与の周辺装置に記憶される。340において、SBKは、キースロットからフラッシュされる。342において、SSKに対する読み取り粘着性ビットがセットされる(読み取りアクセスをディスエイブルする)が、書き込み粘着性ビットはそのようにされない(その後の書き込みアクセスを許す)。更に、SBK及びSSKキースロットは、BRの外部からのアクセスを防止するためにBRによりセットされた持続性読み取り/書き込みビットにより保護される。
【0023】
[0022]344において、新たなBLが成功裏に解読され認証された場合には、新たなBLが処理ユニット155により実行される。346において、新たなBLの実行中に1つ以上の周辺装置からデータ及び/又は1つ以上のアプリケーションが読み取られる。1つの具現化において、アプリケーションは、暗号化形態で記憶することができる。348において、暗号化されたデータ又はアプリケーションは、SSKを使用して解読される。350において、アプリケーションが実行される。アプリケーションは、OS、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、GPS、等を含むことができる。
【0024】
[0023]装置がコールドブートされる次のときに、新たなBLがロードされて実行される。従って、本発明技術の実施形態は、安全ブートキーを知らずに、ブートローダーコードの安全な更新も効果的に可能にする。
【0025】
[0024]図4A−4Dには、本発明技術の一実施形態による安全回復方法が示されている。この場合も、402において、BRが処理ユニット155により実行され(例えば、コールドブート)、信頼のチェーンが確立される。404において、BRの実行中に、安全ブートキー(SBK)、装置キー(DK)及び装置識別子(DID)がアクセスされ、そしてSBKが、暗号/解読エンジンによりアクセス可能な対応するSBKキースロットにロードされる。406において、前記で詳細に述べたように、SBK、DK及びDIDから安全システムキー(SSK)が計算され、それに対応するSSKキースロットにロードされる。
【0026】
[0025]408において、SSKが装置110のAOドメイン135内のSSKレジスタにロードされる。410において、BLを記憶するように指定された所与の周辺装置からBLが読み取られる。周辺装置に記憶されるBLは、暗号化される。412において、SBKを使用してブートローダーが解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等をベースとする認証技術を使用して、認証することができる。
【0027】
[0026]BLが成功裏に解読され認証された場合には、処理ユニット155によりBLが実行される。しかしながら、410、412の読み取り及び/又は解読/認証プロセスが失敗した場合には、414において、装置が回復モードに入る。装置は、BLの読み取り及び/又は解読及び認証を失敗すると、ロックされるか又はしくじり(brick)とみなされる。更に、装置が依然製造段階にあるときには、回復モードを使用して、SBK、DK及び/又はBLを初めてシステムにロードすることができる。回復モードにある間に、装置110は、装置110のDIDを所与の通信チャンネルにブロードキャストする。1つの具現化において、通信チャンネルは、ユニバーサルシリアルバス(USB)リンク418である。装置105を含むシステムは、図5A及び5Bに示したように、ホスト422に直接結合されてもよいし、又はネットワーク505及びローカルインターフェイス装置510を通して結合されてもよい。420において、ホスト422装置は、DIDを受け取り、所与のSBKにマップする。次いで、424において、ホスト422は、所与のSBKを使用して自己確認メッセージを発生し、その自己確認メッセージを装置110へ送信する。この実施例において、このメッセージは、図6に示すように、(非安全)長さ605と、ハッシュ610と、ランダムAESブロック615と、安全長さ620と、コマンド及びデータ625と、ペイロード630、及びパッディング(例えば、0X80、及び必要に応じてそれに続く付加的な0X00バイト)635とを含む。ランダムAESブロック615、安全長さ620、コマンド及びデータ625、ペイロード630、及びパッディング635は、DIDにマップされたSBKを使用してエンコードされる。426において、メッセージは、装置110により受け取られ、装置のSBKを使用して確認される。1つの具現化において、受け取られたメッセージは、非安全長さ605が安全長さ620に一致し、ハッシュ610が正しく、コマンド615が有効であり(例えば、所与のメッセージに対して有効なコマンド形式)、メッセージのサイズが正しく(コマンド及びデータにより指定されたように)、ペイロードのサイズが正しく、パッディングパターンが正しく、及び/又はコマンド及びデータ625におけるBRバージョン番号が装置110のBRバージョンに一致する場合に、有効となる。メッセージが有効である場合には、428において、装置110がメッセージを周辺装置(例えば、RAM)へロードして、それを実行する。428において、回復モードは、メッセージの1つ以上のコマンドを実行し、メッセージに含まれたコードを実行し、及び/又はメッセージ内のBLコードを所与の周辺装置に記憶することができる。メッセージにおいてBLコードが受け取られた場合は、BLが、SBKを使用してエンコードされて所与の周辺装置に記憶される。任意であるが、装置110は、ホストから付加的なデータをダウンロードして認証することができる。付加的なデータは、これを周辺装置に書き込む前に、SBKを使用して暗号化し及びサインすることができる。このように、回復モードは、複数のメッセージ送信及び応答シーケンスを与えることができる。メッセージが有効でない場合には、装置110は、システムリセットを進めることを要求する無限ループに入る。
【0028】
[0027]従って、本発明技術の実施形態は、好都合にも、ロックされたシステムへのBLコードの安全なダウンロードも可能にする。
【0029】
[0028]本発明技術の特定の実施形態の以上の説明は、例示のためのものである。それらは、余す所のないものでもなく、又は、本発明を、ここに開示する正確な形態に限定するものでもなく、明らかに、前記教示に鑑み、多数の変更や修正が考えられる。前記実施形態は、本発明の原理及びその実際の応用を最良に説明するために選択されて述べられたものであり、従って、当業者であれば、本発明及び種々の実施形態を、意図される特定の用途に適するように種々の変更を加えて、最良に利用することができよう。本発明の範囲は、特許請求の範囲及びその等効物により限定されることが意図される。
【符号の説明】
【0030】
105・・・システム、110・・・装置(SoC)、115・・・周辺装置(USB)、120・・・周辺装置、125・・・周辺装置(HDD)、130・・・周辺装置(RAM)、135・・・A/Oドメイン、150・・・オンチップROM、155・・・汎用処理ユニット、160・・・特殊な処理ユニット(GPU)、165・・・機能(AESエンジン)、170・・・システムコントローラ(USB)、175・・・システムコントローラ、180・・・システムコントローラ、185・・・機能、605・・・長さ、610・・・ハッシュ、615・・・ランダムAESブロック、620・・・安全長さ、625・・・コマンド及びデータ、630・・・ペイロード、635・・・パッディング
【特許請求の範囲】
【請求項1】
ブート映像を安全に更新する方法であって、
サービスプロバイダーから新たなブートローダーを受け取るステップと、
前記新たなブートローダーを所与の周辺装置にロードするステップと、
リセットを実行するステップと、
安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第1部分を実行し、安全ブートキーを取得し、前記サービスプロバイダーから受け取った前記新たなブートローダーを認証し、更に、この認証された新たなブートローダーを、前記安全ブートキーを使用して暗号化して、指定の周辺装置に記憶するステップと、
を備える方法。
【請求項2】
前記安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第1部分を実行することは、安全ブートROMコードを実行することを含む、請求項1に記載の方法。
【請求項3】
前記安全ブートキーを取得することは、前記安全ブートROMコードの実行中に前記安全ブートキーをアクセスすることを含み、前記安全ブートキーは、非ブートROMコードによりアクセスに対して保護されるヒューズのセットに記憶される、請求項2に記載の方法。
【請求項4】
前記サービスプロバイダーから受け取った前記新たなブートローダーを認証することは、前記サービスプロバイダーから受け取った前記新たなブートローダーを解読することを含む、請求項3に記載の方法。
【請求項5】
前記新たなブートローダーが解読及び認証に成功した場合に、前記新たなブートローダーを実行するステップを更に備える、請求項4に記載の方法。
【請求項6】
装置キー及び装置識別子をアクセスし、更に、安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第1部分を実行しながら、システムブートキー、装置キー及び装置識別子から安全システムキーを計算するステップと、
周辺装置から暗号化されたアプリケーションを読み取り、更に、前記新たなブートローダーを実行しつつ前記安全システムキーを使用して前記アプリケーションを解読するステップと、
前記アプリケーションの解読が成功した場合に、前記アプリケーションを実行するステップと、
を更に備える請求項5に記載の方法。
【請求項7】
前記システムブートキーは、ブート映像を安全に更新する方法を遂行する装置の装置又はシステム製造者により選択されるシークレットキーである、請求項6に記載の方法。
【請求項8】
前記装置キーは、ブート映像を安全に更新する方法を遂行する装置のシステム製造者に知られたシークレットキーである、請求項7に記載の方法。
【請求項9】
前記装置識別子は、ブート映像を安全に更新する方法を遂行する装置の装置特有値である、請求項8に記載の方法。
【請求項10】
所定の装置により実行されたときに、
新たなブートローダーを受け取り、
前記新たなブートローダーを所与の周辺装置にロードし、
前記新たなブートローダーを前記所与の周辺装置にロードした後にリセットを実行し、
前記リセットを実行した後に、安全な信頼チェーンをスタートするために前記装置に記憶された現在ブートコードの第1部分を実行し、
装置により又は該装置のシステム製造者により選択された第1シークレットキーをアクセスし、
前記現在ブートコードの第1部分を実行した後に前記新たなブートローダーを認証し、
前記新たなブートローダーが認証された場合には、前記新たなブートローダーを、前記第1シークレットキーを使用して暗号化して、指定の周辺装置に記憶する、
ことを含むプロセスを遂行する1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項11】
前記装置によって実行されたときに、請求項10に記載のプロセスを遂行するものであって、ブートコードの第1部分を実行することが、ブートROMコードを実行することを含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項12】
前記装置によって実行されたときに、請求項11に記載のプロセスを遂行するものであって、第1シークレットキーをアクセスすることが、保護コードにより読み取り可能なレジスタから第1シークレットキーを読み取ることを含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項13】
前記装置によって実行されたときに、請求項12に記載のプロセスを遂行するものであって、新たなブートローダーを解読することを更に含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項14】
前記装置によって実行されたときに、請求項13に記載のプロセスを遂行するものであって、新たなブートローダーが解読及び認証に成功した場合に新たなブートローダーを実行することを更に含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項15】
前記装置によって実行されたときに、請求項14に記載のプロセスを遂行するものであって、
第2シークレットキー及び装置識別子をアクセスし、
ブートコードの第1部分を実行しつつ、前記第1シークレットキー、第2シークレットキー、及び装置識別子から第3キーを計算し、
周辺装置から暗号化されたアプリケーションを読み取り、
前記新たなブートローダーを実行しつつ、前記第3シークレットキーを使用して、前記アプリケーションを解読し、
前記アプリケーションの解読が成功した場合に前記アプリケーションを実行する、
ことを更に含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項16】
前記装置によって実行されたときに、請求項15に記載のプロセスを遂行するものであって、前記第1シークレットキーは、前記装置の装置又はシステム製造者により知られている、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項17】
前記装置によって実行されたときに、請求項16に記載のプロセスを遂行するものであって、前記第2シークレットキーは、前記装置のシステム製造者により知られている、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項18】
前記装置によって実行されたときに、請求項16に記載のプロセスを遂行するものであって、前記装置識別子は、前記装置に特有のものである、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項1】
ブート映像を安全に更新する方法であって、
サービスプロバイダーから新たなブートローダーを受け取るステップと、
前記新たなブートローダーを所与の周辺装置にロードするステップと、
リセットを実行するステップと、
安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第1部分を実行し、安全ブートキーを取得し、前記サービスプロバイダーから受け取った前記新たなブートローダーを認証し、更に、この認証された新たなブートローダーを、前記安全ブートキーを使用して暗号化して、指定の周辺装置に記憶するステップと、
を備える方法。
【請求項2】
前記安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第1部分を実行することは、安全ブートROMコードを実行することを含む、請求項1に記載の方法。
【請求項3】
前記安全ブートキーを取得することは、前記安全ブートROMコードの実行中に前記安全ブートキーをアクセスすることを含み、前記安全ブートキーは、非ブートROMコードによりアクセスに対して保護されるヒューズのセットに記憶される、請求項2に記載の方法。
【請求項4】
前記サービスプロバイダーから受け取った前記新たなブートローダーを認証することは、前記サービスプロバイダーから受け取った前記新たなブートローダーを解読することを含む、請求項3に記載の方法。
【請求項5】
前記新たなブートローダーが解読及び認証に成功した場合に、前記新たなブートローダーを実行するステップを更に備える、請求項4に記載の方法。
【請求項6】
装置キー及び装置識別子をアクセスし、更に、安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第1部分を実行しながら、システムブートキー、装置キー及び装置識別子から安全システムキーを計算するステップと、
周辺装置から暗号化されたアプリケーションを読み取り、更に、前記新たなブートローダーを実行しつつ前記安全システムキーを使用して前記アプリケーションを解読するステップと、
前記アプリケーションの解読が成功した場合に、前記アプリケーションを実行するステップと、
を更に備える請求項5に記載の方法。
【請求項7】
前記システムブートキーは、ブート映像を安全に更新する方法を遂行する装置の装置又はシステム製造者により選択されるシークレットキーである、請求項6に記載の方法。
【請求項8】
前記装置キーは、ブート映像を安全に更新する方法を遂行する装置のシステム製造者に知られたシークレットキーである、請求項7に記載の方法。
【請求項9】
前記装置識別子は、ブート映像を安全に更新する方法を遂行する装置の装置特有値である、請求項8に記載の方法。
【請求項10】
所定の装置により実行されたときに、
新たなブートローダーを受け取り、
前記新たなブートローダーを所与の周辺装置にロードし、
前記新たなブートローダーを前記所与の周辺装置にロードした後にリセットを実行し、
前記リセットを実行した後に、安全な信頼チェーンをスタートするために前記装置に記憶された現在ブートコードの第1部分を実行し、
装置により又は該装置のシステム製造者により選択された第1シークレットキーをアクセスし、
前記現在ブートコードの第1部分を実行した後に前記新たなブートローダーを認証し、
前記新たなブートローダーが認証された場合には、前記新たなブートローダーを、前記第1シークレットキーを使用して暗号化して、指定の周辺装置に記憶する、
ことを含むプロセスを遂行する1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項11】
前記装置によって実行されたときに、請求項10に記載のプロセスを遂行するものであって、ブートコードの第1部分を実行することが、ブートROMコードを実行することを含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項12】
前記装置によって実行されたときに、請求項11に記載のプロセスを遂行するものであって、第1シークレットキーをアクセスすることが、保護コードにより読み取り可能なレジスタから第1シークレットキーを読み取ることを含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項13】
前記装置によって実行されたときに、請求項12に記載のプロセスを遂行するものであって、新たなブートローダーを解読することを更に含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項14】
前記装置によって実行されたときに、請求項13に記載のプロセスを遂行するものであって、新たなブートローダーが解読及び認証に成功した場合に新たなブートローダーを実行することを更に含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項15】
前記装置によって実行されたときに、請求項14に記載のプロセスを遂行するものであって、
第2シークレットキー及び装置識別子をアクセスし、
ブートコードの第1部分を実行しつつ、前記第1シークレットキー、第2シークレットキー、及び装置識別子から第3キーを計算し、
周辺装置から暗号化されたアプリケーションを読み取り、
前記新たなブートローダーを実行しつつ、前記第3シークレットキーを使用して、前記アプリケーションを解読し、
前記アプリケーションの解読が成功した場合に前記アプリケーションを実行する、
ことを更に含む、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項16】
前記装置によって実行されたときに、請求項15に記載のプロセスを遂行するものであって、前記第1シークレットキーは、前記装置の装置又はシステム製造者により知られている、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項17】
前記装置によって実行されたときに、請求項16に記載のプロセスを遂行するものであって、前記第2シークレットキーは、前記装置のシステム製造者により知られている、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【請求項18】
前記装置によって実行されたときに、請求項16に記載のプロセスを遂行するものであって、前記装置識別子は、前記装置に特有のものである、1つ以上のコンピューティング装置実行可能なインストラクションを記憶している1つ以上のコンピューティング装置読み取り可能な媒体。
【図1】
【図2A】
【図2B】
【図2C】
【図2D】
【図3A】
【図3B】
【図3C】
【図3D】
【図3E】
【図4A】
【図4B】
【図5A】
【図5B】
【図6】
【図2A】
【図2B】
【図2C】
【図2D】
【図3A】
【図3B】
【図3C】
【図3D】
【図3E】
【図4A】
【図4B】
【図5A】
【図5B】
【図6】
【公開番号】特開2009−225439(P2009−225439A)
【公開日】平成21年10月1日(2009.10.1)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−30103(P2009−30103)
【出願日】平成21年2月12日(2009.2.12)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
【公開日】平成21年10月1日(2009.10.1)
【国際特許分類】
【出願番号】特願2009−30103(P2009−30103)
【出願日】平成21年2月12日(2009.2.12)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
[ Back to top ]