(57)【特許請求の範囲】
【請求項１】
ブートローダーを安全に更新する方法であって、
サービスプロバイダーから新たなブートローダーを受け取るステップと、
前記新たなブートローダーを所与の周辺装置にロードするステップと、
リセットを実行するステップと、
安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第１部分を実行し、安全ブートキーを取得し、前記サービスプロバイダーから受け取った前記新たなブートローダーを認証し、更に、この認証された新たなブートローダーを、前記安全ブートキーを使用して暗号化して、指定の周辺装置に記憶するステップと、を備える方法。
【請求項２】
前記安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第１部分を実行することは、安全ブートＲＯＭコードを実行することを含む、請求項１に記載の方法。
【請求項３】
前記安全ブートキーを取得することは、前記安全ブートＲＯＭコードの実行中に前記安全ブートキーをアクセスすることを含み、前記安全ブートキーは、非ブートＲＯＭコードによるアクセスに対して保護されるヒューズのセットに記憶される、請求項２に記載の方法。
【請求項４】
前記サービスプロバイダーから受け取った前記新たなブートローダーを認証することは、前記サービスプロバイダーから受け取った前記新たなブートローダーを解読することを含む、請求項３に記載の方法。
【請求項５】
前記新たなブートローダーの解読及び認証に成功した場合に、前記新たなブートローダーを実行するステップを更に備える、請求項４に記載の方法。
【請求項６】
装置キー及び装置識別子をアクセスし、更に、安全な信頼チェーンをスタートするためにチップに記憶されたブートコードの第１部分を実行しながら、前記安全ブートキー、装置キー及び装置識別子から安全システムキーを計算するステップと、
周辺装置から暗号化されたアプリケーションを読み取り、更に、前記新たなブートローダーを実行しつつ前記安全システムキーを使用して前記アプリケーションを解読するステップと、
前記アプリケーションの解読が成功した場合に、前記アプリケーションを実行するステップと、を更に備える請求項５に記載の方法。
【請求項７】
前記安全ブートキーは、ブートローダーを安全に更新する方法を遂行する装置の装置又はシステム製造者により選択されるシークレットキーである、請求項６に記載の方法。
【請求項８】
前記装置キーは、ブートローダーを安全に更新する方法を遂行する装置のシステム製造者に知られたシークレットキーである、請求項７に記載の方法。
【請求項９】
前記装置識別子は、ブートローダーを安全に更新する方法を遂行する装置の装置特有値である、請求項８に記載の方法。
【請求項１０】
所定の装置により実行されたときに、
新たなブートローダーを受け取り、
前記新たなブートローダーを所与の周辺装置にロードし、
前記新たなブートローダーを前記所与の周辺装置にロードした後にリセットを実行し、
前記リセットを実行した後に、安全な信頼チェーンをスタートするために前記装置に記憶された現在ブートコードの第１部分を実行し、
装置により又は該装置のシステム製造者により選択された第１シークレットキーをアクセスし、
前記現在ブートコードの第１部分を実行した後に前記新たなブートローダーを認証し、
前記新たなブートローダーが認証された場合には、前記新たなブートローダーを、前記第１シークレットキーを使用して暗号化して、指定の周辺装置に記憶する、ことを含むプロセスを遂行する１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１１】
前記装置によって実行されたときに、請求項１０に記載のプロセスを遂行するものであって、ブートコードの第１部分を実行することが、ブートＲＯＭコードを実行することを含む、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１２】
前記装置によって実行されたときに、請求項１１に記載のプロセスを遂行するものであって、第１シークレットキーをアクセスすることが、保護コードにより読み取り可能なレジスタから第１シークレットキーを読み取ることを含む、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１３】
前記装置によって実行されたときに、請求項１２に記載のプロセスを遂行するものであって、新たなブートローダーを解読することを更に含む、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１４】
前記装置によって実行されたときに、請求項１３に記載のプロセスを遂行するものであって、新たなブートローダーの解読及び認証に成功した場合に新たなブートローダーを実行することを更に含む、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１５】
前記装置によって実行されたときに、請求項１４に記載のプロセスを遂行するものであって、
第２シークレットキー及び装置識別子をアクセスし、
ブートコードの第１部分を実行しつつ、前記第１シークレットキー、第２シークレットキー、及び装置識別子から第３シークレットキーを計算し、
周辺装置から暗号化されたアプリケーションを読み取り、
前記新たなブートローダーを実行しつつ、前記第３シークレットキーを使用して、前記アプリケーションを解読し、
前記アプリケーションの解読が成功した場合に前記アプリケーションを実行する、ことを更に含む、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１６】
前記装置によって実行されたときに、請求項１５に記載のプロセスを遂行するものであって、前記第１シークレットキーは、前記装置の装置又はシステム製造者により知られている、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１７】
前記装置によって実行されたときに、請求項１６に記載のプロセスを遂行するものであって、前記第２シークレットキーは、前記装置のシステム製造者により知られている、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【請求項１８】
前記装置によって実行されたときに、請求項１６に記載のプロセスを遂行するものであって、前記装置識別子は、前記装置に特有のものである、１つ以上のコンピューティング装置実行可能なインストラクションを記憶している１つ以上のコンピューティング装置読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]エレクトロニクスではセキュリティメカニズムの重要性が益々高まりつつある。システム及びシステムに使用される装置の製造者は、システム及び装置がどのように使用されるか制御し（例えば、無断使用を停止し）、且つプログラム（例えば、オペレーティングシステム及びアプリケーション）及びコンテンツを複写、無断変更、等から保護することを希望する。従って、装置の製造者は、装置レベルのセキュリティメカニズム及び／又はシステムレベルのセキュリティメカニズムを設けることが必要になる。又、システム及び装置がどのように使用されるか制御し（例えば、無断使用を停止し）、且つプログラム（例えば、オペレーティングシステム及びアプリケーション）及びコンテンツを複写、無断変更、等から保護するためのエンドユーザセキュリティメカニズムを設けるには、装置及び／又はシステムセキュリティ技術も必要になる。
【０００２】
[0002]又、エレクトロニックスの製造者は、多数のエンティティを伴うこともある。例えば、装置製造者は、所与の装置を設計するが、装置の実際の製造は外部に委託することがある。同様に、システム製造者は、システムを設計するが、システムの実際の製造は外部に委託することがある。ある当事者は互いに信頼できるが、全ての当事者が、装置及びシステムの設計及び製造に含まれる全ての他のエンティティを信頼できるのではない。例えば、装置及びシステム製造者は、互いに信頼できるが、装置製造者は、システム製造者により利用されるアッセンブルハウスを信頼しないこともあるし、或いはシステム製造者により利用されるアッセンブルハウスを単に望まないか、又はアッセンブルハウスがソフトウェア、ファームウェア、コンフィギュレーションパラメータ等へのアクセスについて信頼できることを保証するようにアッセンブルハウスを監視する能力がないこともある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]従って、装置及び／又はシステムセキュリティメカニズムを形成する改良された技術が要望され続けている。又、セキュリティメカニズムは、装置の設計からシステムの製造までの異なる製造段階において保護を与えねばならない。
【課題を解決するための手段】
【０００４】
[0004]本発明の技術の実施形態は、ブート映像を暗号化するのに使用されるキーの知識をもたずにブート映像を安全に更新するための技術に向けられる。一実施形態では、新しいブートローダーがサービスプロバイダーから受け取られて、所与の周辺装置にロードされる。次いで、リセットが行われて、ブートコードの実行がスタートする。ブートコードの第１部分は、チップに記憶され、信頼のチェーンを確立する。ブートコードは、安全なブートキーを計算し、サービスプロバイダーから受け取った新しいブートローダーを認証し、次いで、その認証された新たなブートローダーを、安全なブートキーを使用して暗号化して、そのブートローダーの実行のために指定された周辺装置に記憶する。
【０００５】
[0005]本発明の実施形態を、同様の要素が同じ参照番号で示された添付図面に一例として示すが、これに限定されるものではない。
【図面の簡単な説明】
【０００６】
【図１】本発明技術の実施形態を具現化する例示的システムのブロック図である。
【図２Ａ】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図２Ｂ】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図２Ｃ】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図２Ｄ】本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法のフローチャートである。
【図３Ａ】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図３Ｂ】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図３Ｃ】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図３Ｄ】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図３Ｅ】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図４Ａ】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図４Ｂ】本発明技術の一実施形態によりブートキーの知識をもたずに装置のブートコードを安全に更新する方法のフローチャートである。
【図５Ａ】本発明技術の実施形態による例示的回復モードシステムのブロック図である。
【図５Ｂ】本発明技術の実施形態による例示的回復モードシステムのブロック図である。
【図６】本発明技術の一実施形態による例示的回復モード自己確認メッセージのブロック図である。
【発明を実施するための形態】
【０００７】
[0006]添付図面に一例が示された本発明技術の実施形態について、以下に詳細に説明する。本発明技術は、これら実施形態に関連して説明するが、本発明をこれら実施形態に限定するものでないことを理解されたい。逆に、本発明は、特許請求の範囲により規定される本発明の範囲内に包含される代替物、変更、及び等効物を網羅するものとする。更に、本発明技術の以下の詳細な説明において、本発明を完全に理解するために多数の特定の細部を述べる。しかしながら、これら特定の細部を伴わずに本発明技術を実施できることが明らかであろう。他の点については、良く知られた方法、手順、コンポーネント、及び回路は、本発明技術の態様を不必要に不明瞭にしないために、詳細に説明しない。
【０００８】
[0007]図１には、本発明技術の実施形態を具現化する例示的システムが示されている。この例示的システム１０５は、装置１１０と、１つ以上の周辺装置１１５−１３０とを備えている。周辺装置１１５−１３０は、内部及び／又は外部周辺装置、例えば、キーパッド、カーソルコントローラ、通信ポート、コンピューティング装置の読み取り可能な媒体（ＣＤＲＭ）（例えば、ハードディスクドライバ（ＨＤＤ）１２５、ランダムアクセスメモリ（ＲＡＭ）１３０）、等でよい。周辺装置１１５−１３０は、１つ以上の通信チャンネルによって装置１１０に結合することができる。装置１１０は、常時オン(always-on)（ＡＯ）ドメイン１３５と、１つ以上の制御可能な電力ドメイン１４０、１４５とを備えている。ＡＯドメイン１３５は、装置がターンオンされたときに、常に、電力、及びもし適用できれば、クロック信号が、これに印加されるものである。ＡＯドメインは、リアルタイムクロック機能的ユニット、電力管理コントローラ機能的ユニット、キーボードコントローラ機能的ユニット、及び／又は記憶レジスタ機能的ユニットを含むことができる。制御可能な電力ドメイン１４０、１４５は、１つ以上の制御可能な供給電位ドメイン１４０、及び／又は１つ以上の制御可能なクロック作動ドメイン１４５を含むことができる。１つ以上の制御可能な供給電位ドメイン１４０は、１つ以上のオンチップコンピューティング装置読み取り可能媒体（ＣＤＲＭ）１５０と、１つ以上の汎用処理ユニット（例えば、ＣＰＵ）１５５と、１つ以上の特殊な処理ユニット（例えば、ＧＰＵ）１６０と、１つ以上の機能的ユニット（例えば、進歩型暗号標準（ＡＥＳ）エンジン）１６５と、１つ以上のシステムコントローラ１７０−１８０とを含むことができる。１つ以上の制御可能なクロック作動ドメイン１４５は、１つ以上の特殊な処理ユニット及び又は機能的ユニット１８５を含むことができる。従って、装置１１０は、システム・オン・チップ（ＳｏＣ）集積回路と称することができる。
【０００９】
[0008]オンチップＣＤＲＭ１５０は、装置を構成するためのブートコードの第１部分を記憶し、そしてブートコードの他の部分、オペレーティングシステム（ＯＳ）、割り込みハンドラー及びアプリケーションを、１つ以上の周辺不揮発性ＣＤＲＭ（例えば、ＨＤＤ、フラッシュ媒体）から、汎用及び／又は特殊な処理ユニット１５５、１６０にアクセスできる１つ以上のＣＤＲＭ（例えば、ＲＡＭ）１３０へとロードする。汎用処理ユニット（例えば、ＣＰＵ）１５５は、装置１１０の汎用ソフトウェアベースの機能を実行するために計算ハードウェアリソースを備えている。このようなソフトウェア機能は、オペレーティングシステム（ＯＳ）ソフトウェアの実行、装置が外部事象、アプリケーションソフトウェア、等に応答する上で助けとなる割り込みハンドリングソフトウェアを含むことができる。特殊なプロセッサ（例えば、ＧＰＵ）は、特殊な機能を実行するための計算ハードウェアリソース、例えば、グラフィック処理ユニット（ＧＰＵ）１６０、デジタル信号処理、ビデオエンコーダ／デコーダ、等を備えている。システムコントローラ１７０−１８０は、装置１１０の機能的要素間の通信及び周辺装置１１５−１３０との通信のための種々の機能を発揮する。
【００１０】
[0009]システム１０５の装置１１０は、装置の複数の電力状態の間に記憶キーを取り扱うように適応される。又、装置１１０は、ブートキーの知識をもたずに装置のブートコードを安全に更新するようにも適応される。更に、装置１１０は、安全な回復モードを与えるようにも適応される。
【００１１】
[0010]図２Ａ−２Ｄには、本発明技術の一実施形態により装置の複数の電力状態の間に記憶キーを取り扱う方法が示されている。最初に、システム１０５の装置１１０は、１つ以上のアプリケーションを実行するように装置１１０をセットアップするために、ブートプログラムを実行する。ブートプログラムは、典型的に、１つ以上の部分を含む。ブートプログラムの第１部分は、オンチップＲＯＭ１５０に記憶され、ここでは、ブートＲＯＭコード（ＢＲ）と称される。２０２において、ＢＲが処理ユニット１５５により実行されて、信頼のチェーンを確立する。ＢＲの実行中に、２０４において、安全ブートキー（ＳＢＫ）、装置キー（ＤＫ）及び装置識別子（ＤＩＤ）がアサートされ、そして暗号／解読エンジンによりアクセスできる対応ＳＢＫキースロットにＳＢＫがロードされる。暗号／解読エンジンは、キースロットへの読み取り、書き込み、暗号及び解読アクセスをサポートする。持続性又は「粘着性(sticky)」ビットは、キースロットへの読み取り及び書き込みアクセスを制御するが、暗号／解読動作のためのアクセスを防止するものではない。ＳＢＫは、オフチップで（例えば、周辺装置に）記憶されたブートコードの部分を保護及び認証するために、装置製造者により使用される。１つの具現化において、ＳＢＫは、装置製造者により選択され及び／又はシステム製造者により知られ／選択されたシークレットキーである。１つの具現化において、ＳＢＫは、オンチップヒューズのようなＳＢＫレジスタへプログラムされる。それ故、ＳＢＫは、変更可能であるが、以前の値にリセットすることはできない。１つの具現化において、ＳＢＫは、保護されたコードでしか読み取れない。１つの具現化において、保護されたコードは、ＢＲコードである。１つの具現化において、ＳＢＫは、１２８ビットキーである。１つの具現化において、ＤＫは、システム製造者に知られたシークレット値である。１つの具現化において、ＤＫは、オンチップヒューズのようなＤＫレジスタにプログラムされる。それ故、ＤＫも、変更可能であるが、以前の値にリセットできない。１つの具現化において、ＤＫは、保護されたコードでしか読み取れない。１つの具現化において、保護されたコードは、ＢＲコードである。１つの具現化において、ＤＫは、３２ビットキーである。１つの具現化において、ＤＩＤは、製造者によりオンチップヒューズにプログラムされる装置特有の値であり、公然とアクセスできる。１つの具現化において、ＤＩＤは、６４ビット値である。
【００１２】
[0011]２０６において、安全システムキー（ＳＳＫ）が、ＳＢＫ、ＤＫ及びＤＩＤから計算されて、暗号／解読エンジンによりアクセス可能な対応ＳＳＫキースロットにロードされる。安全記憶キー（ＳＳＫ）は、顧客定義データを保護するためにシステム製造者により使用される。ＳＳＫは、装置製造者プログラムされた安全ブートキー（ＳＢＫ）、システム製造者プログラムされた装置キー（ＤＫ）、及び装置製造者プログラムされた独特装置識別子（ＵＩＤ）から計算される。ＳＳＫは、１つの具現化においては、次のように計算することができる。
ＳＳＫ＝ＡＥＳ（ＳＢＫ；ＤＩＤ＾ＡＥＳ（ＳＢＫ；ＤＫ））
装置製造者プログラムされたＤＩＤは、チップごとに異なる。従って、ＳＳＫも、チップごとに独特のものとなる。更に、ＳＢＫも、チップごとに独特のものとなるか、又はシステム製造者により決定される複数のチップ（例えば、ロット）にわたって共通のものとなる。ＤＫも、チップごとに独特であるか、又は複数のチップにわたって共通となる。
【００１３】
[0012]２０８において、ＳＳＫは、装置１１０のＡＯドメイン１４０内のＳＳＫレジスタへロードされる。ＳＢＫキースロットからＳＢＫをフラッシュすることで、ＳＢＫで明確に認証されていない他のコードがＳＢＫで暗号／解読動作を遂行することを防止する。２１０において、ブートローダー（ＢＬ）と称されるブートコードの付加的な部分が、ＢＬを記憶するために指定された所与の周辺装置から読み取られる。周辺装置に記憶されたＢＬが暗号化される。２１２において、ＳＢＫを使用してブートローダーが解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等をベースとする認証技術を使用して、認証することができる。ＳＢＫを使用してブートローダーを解読し認証することで、安全な信頼チェーンが維持される。
【００１４】
[0013]ＡＯドメインのＳＳＫレジスタは、ＢＬの外部からの読み取り及び書き込みに対してレジスタを保護するセキュリティ制御を含む。一実施形態では、セキュリティ制御されるＳＳＫレジスタは、持続性の読み取り及び書き込みビットを含む。２０８において、ＳＳＫがＢＲによりＳＳＫレジスタにロードされると、２１４において、読み取り粘着性ビットがセットされる（読み取りアクセスをディスエイブルする）が、書き込み粘着性ビットはそうならない（その後の書き込みアクセスを許す）。更に、ＳＢＫ及びＳＳＫキースロットは、ＢＲの外部からのアクセスを防止するためにＢＲによりセットされる持続性読み取り／書き込みビットによって保護される。
【００１５】
[0014]２１６において、ＢＬは、該ＢＬが成功裏に解読されて認証された場合に、処理ユニット１５５により実行される。ＢＬの実行中に、２１８において、データ及び／又は１つ以上のアプリケーションが１つ以上の周辺装置から読み取られる。１つの具現化において、アプリケーションは、暗号化形態で記憶することができる。２２０において、暗号化されたデータ又はアプリケーションが、ＳＳＫを使用して解読される。
【００１６】
[0015]２２２において、装置１１０は、任意であるが、システム製造者がＳＳＫを変化させるのを許すことができる。ＳＳＫがシステム製造者により変化される場合には、２２４において、新たなＳＳＫがそれに対応するＳＳＫキースロットに記憶され、又、ＳＳＫがＡＯドメインのセキュリティ制御レジスタに記憶される。ＳＳＫがＡＯドメインのＳＳＫレジスタに最初に書き込まれるときには２１４において書き込みビットがセットされないので、ＳＳＫを、システム製造者によって変更できると共に、暗号／解読エンジンが低電力状態から復帰するときに回復することができる。しかしながら、ＡＯドメインのＳＳＫレジスタにおけるＳＳＫが、２２２において、オーバーライトされるときには、更なるオーバーライトを防止するように持続性書き込みビットをセットすることができる。又、ＳＳＫを保持するキースロットへの書き込みアクセスは、この点において、その持続性書き込みビットをセットすることでディスエイブルすることもでき、これにより、更なるオーバーライトを防止することもできる。ＳＳＫが変更された場合に、もし適用できれば、２２６において、アプリケーションが実行される。アプリケーションは、ＯＳ、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、ＧＰＳ、等を含むことができる。
【００１７】
[0016]２２８において、１つが暗号／解読エンジン１６５を含むような１つ以上のドメインを低電力状態へと循環させることができる。２３０において、ドメインが低電力状態から循環されるときに再スタートが行われる。再スタートに応答してＢＬを実行する間に、２３２において、１つ以上の周辺装置（例えば、ＲＡＭ）に残るコードが確認され、そしてＡＯドメインにおけるセキュリティ制御されたＳＳＫレジスタへのアクセスがリセットされ、読み取り及び書き込みアクセスが許される。２３４において、ＡＯドメインのセキュリティコントローラＳＳＫレジスタからＳＳＫキースロットへＳＳＫが読み取られる。ＳＳＫが、ＳＳＫレジスタから、ＢＬにより暗号／解読エンジンのための対応キースロットへ読み取られると、２３６において、読み取りディスエイブル及び書き込みディスエイブル持続ビットがセットされる。その後、２３８において、データ及び／又は１つ以上のアプリケーションが１つ以上の周辺装置から読み取られる。１つの具現化において、アプリケーションは、暗号化形態で記憶することができる。２４０において、暗号化データ又はアプリケーションが、ＳＳＫを使用して解読される。２４２において、アプリケーションが実行される。
【００１８】
[0017]従って、本発明技術の実施形態は、システム記憶キー（ＳＳＫ）をＡＯドメインに効果的に維持し、そして暗号／解読エンジンがオンに戻されるときに、このエンジンにＳＳＫを回復させる。しかしながら、ＳＳＫは、ＢＬによってアクセスすることしかできず、これは、安全な信頼チェーンを与える。更に、これらの実施形態は、任意であるが、ＳＳＫの更新を許す。
【００１９】
[0018]図３Ａ−３Ｅには、本発明技術の一実施形態により、ブートキーの知識なしに、装置のブートコードを安全に更新する方法が示されている。この場合も、３０２において、ＢＲが処理ユニット１５０により実行され（例えば、コールドブート）、信頼のチェーンを確立する。ＢＲの実行中に、３０４において、安全ブートキー（ＳＢＫ）、装置キー（ＤＫ）及び装置識別子（ＤＩＤ）がアクセスされ、又、ＳＢＫが、暗号／解読エンジンによりアクセス可能な対応ＳＢＫキースロットにロードされる。ＳＢＫレジスタは、ＢＲの外部からのアクセスを防止するために、ＳＢＫにアクセスした後にＢＲによりセットされる持続的読み取り／書き込みビットによって保護される。３０６において、前記で詳細に述べたように、ＳＢＫ、ＤＫ及びＤＩＤから安全システムキー（ＳＳＫ）が計算され、そして対応するＳＳＫキースロットにロードされる。
【００２０】
[0019]３０８において、装置１１０のＡＯドメイン１４０内のＳＳＫレジスタにＳＳＫがロードされる。３１０において、ブートローダー（ＢＬ）と称されるブートコードの付加的な部分が、ＢＬを記憶するように指定された所与の周辺装置から読み取られる。周辺装置の記憶されるＢＬは、暗号化される。３１２において、ブートローダーは、ＳＢＫを使用して解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等に基づく認証技術を使用して認証売ることができる。ＳＢＫを使用してブートローダーを解読し、認証することで、安全な信頼チェーンが維持される。
【００２１】
[0020]３１４において、ＢＬは、このＢＬが成功裏に解読され認証された場合に、処理ユニット１５０により実行される。ＢＬの実行中に、３１６において、ＳＢＫがキースロットからフラッシュされる。ＳＢＫは、全てゼロ又は他の何らかのパターンでオーバーライトすることによりフラッシュすることができる。その後、３１８において、１つ以上のアプリケーションが１つ以上の周辺装置から読み取られる。１つの具現化において、アプリケーションは、暗号化形態で記憶することができる。３２０において、暗号化されたアプリケーションは、ＳＳＫを使用して解読される。３２２において、アプリケーションが実行される。アプリケーションは、ＯＳ、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、ＧＰＳ等を含むことができる。
【００２２】
[0021]３２４において、新たなブートローダーがサービスプロバイダーから受け取られる。新たなブートローダーは、公衆キー暗号化、等を使用してエンコードすることができる。その後、ある点において、装置が再スタートされる（例えば、コールドブート）。３２６において、再スタートに応答してＢＲが実行される。ＢＲの実行中に、３２８において、安全ブートキー（ＳＢＫ）、装置キー（ＤＫ）及び装置識別子（ＤＩＤ）がアクセスされ、そしてＳＢＫが、暗号／解読エンジンによりアクセス可能な対応するＳＢＫキースロットへロードされる。ＳＢＫレジスタは、ＢＲの外部からのアクセスを防止するためにＳＢＫにアクセスした後にＢＲによってセットされた持続性読み取り／書き込みビットにより保護される。３３０において、前記で詳細に述べたように、ＳＢＫ、ＤＫ及びＤＩＤから安全システムキー（ＳＳＫ）が計算され、それに対応するＳＳＫキースロットへロードされる。３３２において、ＳＳＫは、装置１１０のＡＯドメイン１４０のＳＳＫレジスタにロードされる。３３４において、新たなブートローダーが周辺装置から読み取られる。新たなブートローダーは、典型的に、暗号化形態で記憶される。３３６において、サービスプロバイダーから受け取られた新たなブートローダーが認証される。３３８において、新たなブートローダーは、ＳＢＫを使用して暗号化され、そしてＢＬを記憶するために指定された所与の周辺装置に記憶される。３４０において、ＳＢＫは、キースロットからフラッシュされる。３４２において、ＳＳＫに対する読み取り粘着性ビットがセットされる（読み取りアクセスをディスエイブルする）が、書き込み粘着性ビットはそのようにされない（その後の書き込みアクセスを許す）。更に、ＳＢＫ及びＳＳＫキースロットは、ＢＲの外部からのアクセスを防止するためにＢＲによりセットされた持続性読み取り／書き込みビットにより保護される。
【００２３】
[0022]３４４において、新たなＢＬが成功裏に解読され認証された場合には、新たなＢＬが処理ユニット１５５により実行される。３４６において、新たなＢＬの実行中に１つ以上の周辺装置からデータ及び／又は１つ以上のアプリケーションが読み取られる。１つの具現化において、アプリケーションは、暗号化形態で記憶することができる。３４８において、暗号化されたデータ又はアプリケーションは、ＳＳＫを使用して解読される。３５０において、アプリケーションが実行される。アプリケーションは、ＯＳ、割り込みルーチン、ユーティリティ及びユーザアプリケーション、例えば、音楽プレーヤ、ゲーム、セルラー電話、ＧＰＳ、等を含むことができる。
【００２４】
[0023]装置がコールドブートされる次のときに、新たなＢＬがロードされて実行される。従って、本発明技術の実施形態は、安全ブートキーを知らずに、ブートローダーコードの安全な更新も効果的に可能にする。
【００２５】
[0024]図４Ａ−４Ｄには、本発明技術の一実施形態による安全回復方法が示されている。この場合も、４０２において、ＢＲが処理ユニット１５５により実行され（例えば、コールドブート）、信頼のチェーンが確立される。４０４において、ＢＲの実行中に、安全ブートキー（ＳＢＫ）、装置キー（ＤＫ）及び装置識別子（ＤＩＤ）がアクセスされ、そしてＳＢＫが、暗号／解読エンジンによりアクセス可能な対応するＳＢＫキースロットにロードされる。４０６において、前記で詳細に述べたように、ＳＢＫ、ＤＫ及びＤＩＤから安全システムキー（ＳＳＫ）が計算され、それに対応するＳＳＫキースロットにロードされる。
【００２６】
[0025]４０８において、ＳＳＫが装置１１０のＡＯドメイン１３５内のＳＳＫレジスタにロードされる。４１０において、ＢＬを記憶するように指定された所与の周辺装置からＢＬが読み取られる。周辺装置に記憶されるＢＬは、暗号化される。４１２において、ＳＢＫを使用してブートローダーが解読され、これにより、ブートローダーを認証する。ブートローダーは、更に、ダイジェスト、デジタル証明書、等をベースとする認証技術を使用して、認証することができる。
【００２７】
[0026]ＢＬが成功裏に解読され認証された場合には、処理ユニット１５５によりＢＬが実行される。しかしながら、４１０、４１２の読み取り及び／又は解読／認証プロセスが失敗した場合には、４１４において、装置が回復モードに入る。装置は、ＢＬの読み取り及び／又は解読及び認証を失敗すると、ロックされるか又はしくじり(brick)とみなされる。更に、装置が依然製造段階にあるときには、回復モードを使用して、ＳＢＫ、ＤＫ及び／又はＢＬを初めてシステムにロードすることができる。回復モードにある間に、装置１１０は、装置１１０のＤＩＤを所与の通信チャンネルにブロードキャストする。１つの具現化において、通信チャンネルは、ユニバーサルシリアルバス（ＵＳＢ）リンク４１８である。装置１０５を含むシステムは、図５Ａ及び５Ｂに示したように、ホスト４２２に直接結合されてもよいし、又はネットワーク５０５及びローカルインターフェイス装置５１０を通して結合されてもよい。４２０において、ホスト４２２装置は、ＤＩＤを受け取り、所与のＳＢＫにマップする。次いで、４２４において、ホスト４２２は、所与のＳＢＫを使用して自己確認メッセージを発生し、その自己確認メッセージを装置１１０へ送信する。この実施例において、このメッセージは、図６に示すように、（非安全）長さ６０５と、ハッシュ６１０と、ランダムＡＥＳブロック６１５と、安全長さ６２０と、コマンド及びデータ６２５と、ペイロード６３０、及びパッディング（例えば、０Ｘ８０、及び必要に応じてそれに続く付加的な０Ｘ００バイト）６３５とを含む。ランダムＡＥＳブロック６１５、安全長さ６２０、コマンド及びデータ６２５、ペイロード６３０、及びパッディング６３５は、ＤＩＤにマップされたＳＢＫを使用してエンコードされる。４２６において、メッセージは、装置１１０により受け取られ、装置のＳＢＫを使用して確認される。１つの具現化において、受け取られたメッセージは、非安全長さ６０５が安全長さ６２０に一致し、ハッシュ６１０が正しく、コマンド６１５が有効であり（例えば、所与のメッセージに対して有効なコマンド形式）、メッセージのサイズが正しく（コマンド及びデータにより指定されたように）、ペイロードのサイズが正しく、パッディングパターンが正しく、及び／又はコマンド及びデータ６２５におけるＢＲバージョン番号が装置１１０のＢＲバージョンに一致する場合に、有効となる。メッセージが有効である場合には、４２８において、装置１１０がメッセージを周辺装置（例えば、ＲＡＭ）へロードして、それを実行する。４２８において、回復モードは、メッセージの１つ以上のコマンドを実行し、メッセージに含まれたコードを実行し、及び／又はメッセージ内のＢＬコードを所与の周辺装置に記憶することができる。メッセージにおいてＢＬコードが受け取られた場合は、ＢＬが、ＳＢＫを使用してエンコードされて所与の周辺装置に記憶される。任意であるが、装置１１０は、ホストから付加的なデータをダウンロードして認証することができる。付加的なデータは、これを周辺装置に書き込む前に、ＳＢＫを使用して暗号化し及びサインすることができる。このように、回復モードは、複数のメッセージ送信及び応答シーケンスを与え��ことができる。メッセージが有効でない場合には、装置１１０は、システムリセットを進めることを要求する無限ループに入る。
【００２８】
[0027]従って、本発明技術の実施形態は、好都合にも、ロックされたシステムへのＢＬコードの安全なダウンロードも可能にする。
【００２９】
[0028]本発明技術の特定の実施形態の以上の説明は、例示のためのものである。それらは、余す所のないものでもなく、又は、本発明を、ここに開示する正確な形態に限定するものでもなく、明らかに、前記教示に鑑み、多数の変更や修正が考えられる。前記実施形態は、本発明の原理及びその実際の応用を最良に説明するために選択されて述べられたものであり、従って、当業者であれば、本発明及び種々の実施形態を、意図される特定の用途に適するように種々の変更を加えて、最良に利用することができよう。本発明の範囲は、特許請求の範囲及びその等効物により限定されることが意図される。
【符号の説明】
【００３０】
１０５・・・システム、１１０・・・装置（ＳｏＣ）、１１５・・・周辺装置（ＵＳＢ）、１２０・・・周辺装置、１２５・・・周辺装置（ＨＤＤ）、１３０・・・周辺装置（ＲＡＭ）、１３５・・・Ａ／Ｏドメイン、１５０・・・オンチップＲＯＭ、１５５・・・汎用処理ユニット、１６０・・・特殊な処理ユニット（ＧＰＵ）、１６５・・・機能（ＡＥＳエンジン）、１７０・・・システムコントローラ（ＵＳＢ）、１７５・・・システムコントローラ、１８０・・・システムコントローラ、１８５・・・機能、６０５・・・長さ、６１０・・・ハッシュ、６１５・・・ランダムＡＥＳブロック、６２０・・・安全長さ、６２５・・・コマンド及びデータ、６３０・・・ペイロード、６３５・・・パッディング
【図１】
0004954228.tif 000002
【図２Ａ】
0004954228.tif 000003
【図２Ｂ】
0004954228.tif 000004
【図２Ｃ】
0004954228.tif 000005
【図２Ｄ】
0004954228.tif 000006
【図３Ａ】
0004954228.tif 000007
【図３Ｂ】
0004954228.tif 000008
【図３Ｃ】
0004954228.tif 000009
【図３Ｄ】
0004954228.tif 000010
【図３Ｅ】
0004954228.tif 000011
【図４Ａ】
0004954228.tif 000012
【図４Ｂ】
0004954228.tif 000013
【図５Ａ】
0004954228.tif 000014
【図５Ｂ】
0004954228.tif 000015
【図６】
0004954228.tif 000016