(57)【要約】  ブートシーケンスの1つまたは複数のブート段階に関連する命令および/またはデータの修正のための方法およびシステムの様々な実施形態が開示される。いくつかの実施形態では、秘密鍵とメッセージ認証コード(「MAC」)出力を生成するためのMACアルゴリズムとを使用することによって、修正された命令および/またはデータの真正性および完全性が確実にされ得る。MAC出力が、修正された命令および/またはデータに関連する、予想されるMACと比較される。秘密鍵は、システムオンチップ(「SoC」)またはSoCの構成要素と一意に関連付けられる。このようにして、本解決策の実施形態は、OEMブート命令の非正規の修正または置換を防ぐ。
2017517795.tif 000002
【特許請求の範囲】
【請求項１】
システムオンチップ(「SoC」)内のブート段階を修正するための方法であって、
特定のブート段階に関連するコード化された命令に対する要求をプロセッサから受信するステップと、
修正された命令が信頼できないメモリ構成要素内に存在すると決定するステップと、
メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証するステップであって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証するステップと、
前記修正された命令を前記プロセッサにリターンするステップと
を含む、方法。
【請求項２】
前記コード化された命令が第2ステージブートローダ(「SSBL」)に関連する、請求項1に記載の方法。
【請求項３】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項1に記載の方法。
【請求項４】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項1に記載の方法。
【請求項５】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令の真正性および完全性を検証するステップを含む、請求項1に記載の方法。
【請求項６】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップと、命令のデフォルトブロックを作成するステップとを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、命令の前記デフォルトブロックをリターンするステップを含む
請求項1に記載の方法。
【請求項７】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、ブートシーケンスを終了するステップを含む
請求項1に記載の方法。
【請求項８】
前記秘密鍵が前記SoC内に焼き込まれている、請求項1に記載の方法。
【請求項９】
システムオンチップ(「SoC」)内のブート段階を修正するためのコンピュータシステムであって、
特定のブート段階に関連するコード化された命令に対する要求をプロセッサから受信することと、
修正された命令が信頼できないメモリ構成要素内に存在すると決定することと、
メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証することであって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証することと、
前記修正された命令を前記プロセッサにリターンすることと
を行うように動作可能な設定可能なセキュアブートモード(「CSBM」)
を含む、コンピュータシステム。
【請求項１０】
前記コード化された命令が第2ステージブートローダ(「SSBL」)に関連する、請求項9に記載のコンピュータシステム。
【請求項１１】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項9に記載のコンピュータシステム。
【請求項１２】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項9に記載のコンピュータシステム。
【請求項１３】
前記修正された命令が正規のものであることを前記検証することが、前記修正された命令の真正性および完全性を検証することを含む、請求項9に記載のコンピュータシステム。
【請求項１４】
前記修正された命令が正規のものであることを前記検証することが、前記修正された命令が無効であると決定することと、命令のデフォルトブロックを作成することとを含み、
前記修正された命令を前記プロセッサに前記リターンすることが、命令の前記デフォルトブロックをリターンすることを含む
請求項9に記載のコンピュータシステム。
【請求項１５】
前記修正された命令が正規のものであることを前記検証することが、前記修正された命令が無効であると決定することを含み、
前記修正された命令を前記プロセッサに前記リターンすることが、ブートシーケンスを終了することを含む
請求項9に記載のコンピュータシステム。
【請求項１６】
前記秘密鍵が前記SoC内に焼き込まれている、請求項9に記載のコンピュータシステム。
【請求項１７】
システムオンチップ(「SoC」)内のブート段階を修正するためのコンピュータシステムであって、
特定のブート段階に関連するコード化された命令に対する要求をプロセッサから受信するための手段と、
修正された命令が信頼できないメモリ構成要素内に存在すると決定するための手段と、
メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証するための手段であって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証するための手段と、
前記修正された命令を前記プロセッサにリターンするための手段と
を含む、コンピュータシステム。
【請求項１８】
前記コード化された命令が第2ステージブートローダ(「SSBL」)に関連する、請求項17に記載のコンピュータシステム。
【請求項１９】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項17に記載のコンピュータシステム。
【請求項２０】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項17に記載のコンピュータシステム。
【請求項２１】
前記修正された命令が正規のものであることを前記検証するための手段が、前記修正された命令の真正性および完全性を検証するための手段を含む、請求項17に記載のコンピュータシステム。
【請求項２２】
前記修正された命令が正規のものであることを前記検証するための手段が、前記修正された命令が無効であると決定するための手段と、命令のデフォルトブロックを作成するための手段とを含み、
前記修正された命令を前記プロセッサに前記リターンするための手段が、命令の前記デフォルトブロックをリターンするための手段を含む
請求項17に記載のコンピュータシステム。
【請求項２３】
前記修正された命令が正規のものであることを前記検証するための手段が、前記修正された命令が無効であると決定するための手段を含み、
前記修正された命令を前記プロセッサに前記リターンするための手段が、ブートシーケンスを終了するための手段を含む
請求項17に記載のコンピュータシステム。
【請求項２４】
コンピュータ可読プログラムコードを含むコンピュータプログラムであって、前記コンピュータ可読プログラムコードがシステムオンチップ(「SoC」)内のブート段階を修正するための方法を実施するために実行されるように構成され、前記方法が、
特定のブート段階に関連するコード化された命令に対する要求をプロセッサから受信するステップと、
修正された命令が信頼できないメモリ構成要素内に存在すると決定するステップと、
メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証するステップであって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証するステップと、
前記修正された命令を前記プロセッサにリターンするステップと
を含む、コンピュータプログラム。
【請求項２５】
前記コード化された命令が第2ステージブートローダ(「SSBL」)に関連する、請求項24に記載のコンピュータプログラム。
【請求項２６】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項24に記載のコンピュータプログラム。
【請求項２７】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項24に記載のコンピュータプログラム。
【請求項２８】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令の真正性および完全性を検証するステップを含む、請求項24に記載のコンピュータプログラム。
【請求項２９】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップと、命令のデフォルトブロックを作成するステップとを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、命令の前記デフォルトブロックをリターンするステップを含む
請求項24に記載のコンピュータプログラム。
【請求項３０】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、ブートシーケンスを終了するステップを含む
請求項24に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願に関する説明
本出願は、その全体の内容が参照により本明細書に組み込まれている、2014年4月7日に出願した、「SYSTEM AND METHOD FOR BOOT SEQUENCE MODIFICATION USING CHIP-RESTRICTED INSTRUCTIONS RESIDING ON AN EXTERNAL MEMORY DEVICE」と題する米国仮特許出願第61/976,491号の非仮出願として、米国特許法第119条の下の優先権を主張するものである。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(「PCD」)は、個人レベルおよび専門レベルで人々に必要なものになりつつある。これらのデバイスは、セルラー電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、および他のポータブル電子デバイスを含み得る。
【０００３】
たいていのコンピューティングデバイスに共通するPCDの一態様は、命令および/またはデータを記憶するための電子メモリ構成要素の使用である。各々が異なる目的で指定された、様々なタイプのメモリ構成要素がPCD内に存在し得る。一般に、マスクROMなどの不揮発性読取り専用メモリ(「ROM」)は、システムオンチップ(「SoC」)上に位置し、PCDがブートするために必要とされる第1ステージブートローダ(「FSBL:first-stage boot loader」)、ロードオペレーティングシステム(「OS:load operating system」)ソフトウェア、およびOSに対するPCDの移行制御の形で初期化命令を記憶するために使用される。対照的に、不揮発性プログラマブルメモリ(「フラッシュ」メモリ)は、SoCの外部に位置し、多くの場合、第2ステージブートローダ(「SSBL:second-stage boot loader」)、第3ステージブートローダ(「TSBL:third-stage boot loader」)などのような、後続のブートシーケンス段階に関連する追加の命令を記憶するために使用される。当業者が理解するように、第1段階のブートローダソフトウェアは、製造時に不変のROM内に永続的に「焼き込ま」れているため、本質的に信頼できるが、後続のブートシーケンス段階のソフトウェアは、信頼できるステータスまたは信頼できないステータスのものであり得る。
【０００４】
一般に、FSBLは、マスクROM内にハードコーディングされた命令からフラッシュ内に記憶されたSSBL命令にブートプロセスを移行する前に、SSBLの真正性および完全性を検証する。同様に、SSBLは、SSBL命令から次の段階にブートシーケンスを移行する前に、次のブートシーケンス段階に関連する命令の真正性および完全性を検証する。次の段階の真正性および完全性を検証するためにブートシーケンスの各段階を使用して、PCD製造業者はPCDのためのブートシーケンスを集合的に含むコーディングされたデータおよび命令の完全性の保護を求めてきた。
【０００５】
しかしながら、特に、PCDのエンドユーザがブートシーケンスを修正するための能力を有することに対する要求は、一部の製造業者に後のブートシーケンス段階の認証および完全性チェック測定を差し控えさせた。したがって、後の段階のブートシーケンスに関連する命令のセキュリティは、従来技術において一部のシステム内で容易に損なわれる可能性がある。したがって、修正された命令の完全性および真正性を保護しながら、後のブートシーケンス段階の条件付き修正の確保を実現するためのシステムおよび方法に対する必要が当技術分野に存在する。より具体的には、設定可能なセキュアブートモード(「CSBM:configurable secure boot mode」)システムおよび方法に対する必要が当技術分野に存在する。
【発明の概要】
【課題を解決するための手段】
【０００６】
ブートシーケンスの1つまたは複数のブート段階に関連する命令および/またはデータの修正のための方法およびシステムの様々な実施形態が開示される。いくつかの実施形態では、メッセージ認証コード(「MAC」)出力を生成するMACアルゴリズムに対する入力として秘密鍵を使用することによって、修正された命令および/またはデータの真正性および完全性が確実にされ得る。秘密鍵は、特定のシステムオンチップ(「SoC」)モジュールと一意に関連付けられ、SoC内に焼き込まれ得る。いくつかの実施形態では、秘密鍵は、SoCと一意に関連付けられ、SoC内に焼き込まれた別の秘密鍵から導出され得る。このようにして、本解決策の実施形態は、OEMブート命令の非正規の修正または置換を防ぐ。
【０００７】
動作中、SoC内のブート段階の設定可能なセキュアブートモード(「CSBM」)のための方法の例示的な実施形態は、処理構成要素からの、外部メモリ構成要素内に記憶されたコード化された命令(coded instruction)に対する要求を認識する。コード化された命令の真正性および完全性は、MACアルゴリズム、およびSoCと一意に関連付けられ、SoC内に焼き込まれた秘密鍵の使用によって検証され得る。CPUなどの処理構成要素によって要求されるコード化された命令および/またはデータは修正可能であるか、またはブートシーケンスの特定のブート段階に関連する置換命令。ブートシーケンスの特定のブート段階は、たとえば、第2ステージブートローダ(「SSBL」)もしくは第3ステージブートローダ(「TSBL」)または外部メモリデバイス内にコードを記憶した任意のブート段階であってよい。
【０００８】
次に、MACアルゴリズムとSoCからの秘密鍵とを使用して、関連するMAC値を含むコード化された命令が認証され、PCDのセキュアな環境で完全性がチェックされ得る。関連するMAC値に整合するコード化された命令からMAC出力を生成するためのMACアルゴリズムとともに秘密鍵が成功裏に使用された場合、命令は信頼でき、元のままの完全性を有すると推定され得る。その後、要求側の処理構成要素にコード化された命令が提供され得る。ブートシーケンスは継続し得る。特に、MACアルゴリズムおよび秘密鍵をコード化された命令に適用することが命令に関連する、予想されるMAC出力と矛盾するMAC出力を生成する場合、コード化された命令の完全性または真正性は無効であると想定され得、ブートシーケンスは終了し得る。
【０００９】
図面では、特に明記しない限り、様々な図を通じて、同様の参照番号は、同様の部分を参照している。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図内に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を含むことを意図するとき、参照番号に対する文字指定は省略される場合がある。
【図面の簡単な説明】
【００１０】
【図１】設定可能なセキュアブートモード(「CSBM」)方法およびシステムを実装するためのワイヤレス電話の形のポータブルコンピューティングデバイス(「PCD」)のある例示的な非限定的態様を示す機能ブロック図である。
【図２】PCDのブートROM内に完全に記憶された第1ステージブートローダ(「FSBL」)を実行するためのオンチップシステムの一実施形態を示す機能ブロック図である。
【図３】PCDの外部メモリデバイス内に記憶されたブートシーケンス段階を実行するためのオンチップシステムの一実施形態を示す機能ブロック図である。
【図４】本発明の一実施形態による、設定可能なセキュアブートモード(「CSBM」)構成を使用してPCDのブートシーケンス段階を実行するためのオンチップシステムの一実施形態を示す機能ブロック図である。
【図５】外部メモリデバイス内に存在する第2ステージブートローダ(「SSBL」)など、ブート段階に関連する命令および/またはデータのセキュアな修正のための方法を示す論理的フローチャートである。
【図６】信頼できない外部メモリデバイス内に存在し得る第3ステージブートローダ(「TSBL」)に関連する命令および/またはデータのセキュアな修正のための方法を示すブートシーケンスの論理的フローチャートである。
【図７】信頼できないストレージブロック内に存在する、修正されたコードおよび/またはデータの認証および完全性チェックに関する、図6の方法の一部をより詳細に示す論理的フローチャートである。
【発明を実施するための形態】
【００１１】
「例示的な」という言葉は、本明細書では例、事例、または例示として役立つことを意味するように使用される。「例示的」として本明細書で説明されるいずれの態様も、排他的であるか、他の態様より好ましいか、または有利であると、必ずしも解釈されるべきでない。
【００１２】
本明細書では「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチのような実行可能コンテンツを有するファイルを含むこともできる。さらに、本明細書で参照される「アプリケーション」は、開かれることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、実際には実行可能ではないファイルを含む場合もある。
【００１３】
本明細書では、「ヒューズ(fuse)」は、マスクROMメモリ構成要素内のアドレスなど、メモリアドレスにおいて記憶された命令またはデータに対する要求を受信するセキュリティコントローラによって制御されたプログラマブルゲートを指すものとする。当業者が理解するように、ヒューズは、チップ上に位置する不揮発性メモリ構成要素内に存在し得るワンタイムプログラマブルメモリである。ヒューズは、本明細書で「パッチ」と呼ばれる命令またはデータを含むことが可能であるか、またはヒューズは、代替アドレス内に記憶された命令またはデータに対するポインタを含み得る。同様に、本明細書では、「ソフトウェアヒューズ」は、物理的ヒューズだけに通常関連するセキュリティレベルに実質的に等しいセキュリティレベルを提供し得る物理的ヒューズのソフトウェアオンリー(software-only)実装形態を指すものとする。物理的なワンタイムプログラマブルゲートである「ヒューズ」とは異なり、「ソフトウェアヒューズ」は、可逆的または再プログラム可能な外部メモリデバイス(たとえば、「フラッシュ」メモリデバイス)内の命令および/またはデータの形をとり得る。
【００１４】
本明細書では、「外部メモリデバイス」などの参照は、広いクラスの不揮発性(すなわち、電力が除去された後、そのデータを保持する)プログラマブルメモリを指し、開示する解決策の範囲を限定しない。したがって、これらの用語の使用は、限定はしないが、埋込みマルチメディアカード(「eMMC」)メモリ、電気的消去可能プログラマブル読取り専用メモリ(「EEPROM」)、フラッシュメモリなどのような解決策の所与のアプリケーションに適した任意のプログラマブル読取り専用メモリまたはフィールドプログラマブル不揮発性メモリを想定することを理解されよう。
【００１５】
本説明で使用されるとき、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであってよい。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方は構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行のスレッド内に存在し得、構成要素は、1つのコンピュータ上に局在化され得、および/または2つ以上のコンピュータ間で分散され得る。さらに、これらの構成要素は、種々のデータ構造を記憶している種々のコンピュータ可読媒体から実行することもできる。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システム内の別の構成要素とやりとりし、および/または、信号によってインターネットなどのネットワークにわたって他のシステムとやりとりする、1つの構成要素からのデータ)を有する信号に従ってなど、ローカルプロセスおよび/またはリモートプロセスによって通信することができる。
【００１６】
本明細書では、「中央処理装置(「CPU:central processing unit」)」、「デジタル信号プロセッサ(「DSP:digital signal processor」)」、「グラフィカル処理装置(「GPU:graphical processing unit」)」、および「チップ」という用語は互換的に使用される。その上、CPU、DSP、GPUまたはチップは、「コア」と本明細書では全般的に呼ばれる1つまたは複数の別個の処理構成要素からなり得る。
【００１７】
本明細書では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリーなどの限られた容量の電源で動作する任意のデバイスを説明するために使用される。電池で動作するPCDは数十年にわたって使われてきたが、第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術の出現に結び付けられる、充電式電池における技術的進歩により、多数の機能を有する数多くのPCDが可能になった。したがって、PCDは、数ある中でも、セルラー電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、「電子ブック」またはリーダ、メディアプレイヤ、ハンドヘルドゲームコンソール、上述のデバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータであり得る。
【００１８】
本明細書では、「ブートストラッピング」、「ブート」、「ブートシーケンス」などの用語は、第1ステージブートローダ(「FSBL」)、およびPCDの電源が最初に投入されたとき、または、限定はしないが、オペレーティングシステムをロードすること、工場提供または通常のブートアップなど異なるシナリオに対応する後続のイメージ、および使用するために様々なPCD構成要素を準備することを含めて、電力節約モードから再開したとき、後続の段階の指示においてPCDが実行する動作の初期セットを指すものとする。「ブート局面」および「ブート段階」などの用語は、当業者が、一連の一時的に実行されるブート段階で集合的に構成されるものと理解するブートシーケンス全体の一部を指すものとする。ブートシーケンスは、FSBL段階に続き、第2ステージブートローダ(「SSBL」)段階、第3ステージブートローダ(「TSBL」)段階等々で開始し得る。特に、SSBL命令またはTSBL命令の修正のコンテキストでこれらの解決策の例示的な実施形態を説明するが、これらの解決策のいくつかの実施形態は、不揮発性メモリ内に記憶され、修正の必要がある他の命令および/またはデータセットに適用可能であり得ることが想定される。
【００１９】
本明細書では、「後続のブート段階」または「修正可能なブート段階」という用語は、ワンタイムプログラマブルおよび不可逆なROM内に記憶された実行可能コードおよび/またはデータで構成される初期FSBLに続いて発生するブートシーケンス内の任意の段階を指すものとする。したがって、第2ステージブートローダ(「SSBL」)もしくは第3ステージブートローダ(「TSBL」)またはメインオペレーティングシステムブートローダ(「MOSBL:main operating system boot loader」)などのブート段階は、本明細書で説明する設定可能なセキュアブートモード(「CSBM」)解決策の実施形態を含み得る例示的な修正可能なブート段階である。したがって、特定の修正可能なブート段階のコンテキストでの任意の例示的なCSBM実施形態の説明は、これらの実施形態を特定の段階に限定しない。
【００２０】
設定可能なセキュアブートモード解決策は、(非正規のオペレーティングシステムなど)非正規のコードおよび/またはデータのインストールのリスクなしに、修正可能なブート段階に関連するブート命令を修正する能力を相手先商標製造会社(OEM)に提供することを求める。上で説明したように、ブートシーケンスの初期FSBL段階は、一般に、ブートシーケンスをSSBLに転送する前に、SSBL段階の妥当性を認証する。同様に、SSBLは、TSBLなど、ブートシーケンスにおけるその直後のブート段階を検証する。
【００２１】
しかしながら、特に、最近の傾向として、それらの段階に関連するコードがブートプロセス内で実行されるために、一部の後続のブート段階は認証を必要としない(たとえば、MOSBL、システム回復ブートローダなどは認証を必要としない場合があり、その結果、ユーザは自由に修正を行うことができる)。この傾向は、カスタムブート命令を導入するための、および/またはブート命令の元のインスタンス化を修正するための能力をエンドユーザに依然として提供しながら、いくつかのブート段階に関してその所有権を主張できるコードの完全性および真正性を維持することを求めるOEMに複雑さを提示した。本質的に、OEMは、OEM認可ファームウェアによって提供される固有のセキュリティ/完全性と、潜在的にセキュアでない非正規のオペレーティングシステムを実行する自由とのどちらかを選ぶ能力をユーザに与えた。特に、ユーザが、OEM認可ファームウェアによって提供されるセキュリティ/完全性を選ぶと、ユーザの元の判定を回避する機会を攻撃者に提示せずにその判定を覆すことは複雑な仕事であり得る。有利には、CSBMのシステムおよび方法は、非正規のコードを導入するためのウィンドウを開かずに、修正されたブート命令をセキュアに導入するための方法をOEMに提供する。
【００２２】
PCD内の新しく追加されたまたはアップグレードされた機能は、修正可能なブート段階のイメージに対して正規の更新を導入するために外部メモリデバイス内のソフトウェアヒューズを使用することによって実装可能であることがCSBM実施形態のさらなる利点である。PCDの機能が変更またはアップグレードされた時点で外部メモリデバイス内にロードされている可能性がある更新イメージは、認証され、その認証ステータスを確実にするために、完全性チェックを受けることが可能である。
【００２３】
図1は、設定可能なセキュアブートモード(「CSBM」)の方法およびシステムを実装するためのワイヤレス電話の形のポータブルコンピューティングデバイス(「PCD」)100のある例示的な非限定的態様を示す機能ブロック図である。示すように、PCD 100は、互いに結合されたマルチコア中央処理装置(「CPU」)110とアナログ信号プロセッサ126とを含むオンチップシステム102を含む。当業者が理解するように、CPU110は、0番目のコア222、1番目のコア224、およびN番目のコア230を備えてもよい。さらに、当業者が理解するように、CPU 110の代わりに、デジタル信号プロセッサ(「DSP」)も利用され得る。
【００２４】
一般に、セキュリティコントローラ101は、ハードウェアおよび/またはソフトウェアから形成可能であり、第1ステージブートローダ(「FSBL」)に関連する命令および/またはデータに対する要求を受信する役目を果たし得る。同様に、いくつかの実施形態では、セキュリティコントローラ101を含み得るCSBMモジュール104は、不揮発性外部メモリ構成要素112内に記憶され、後続のブート段階に関連する修正可能な命令および/またはデータに対する要求を監視する役目を果たし得る。「ソフトウェアヒューズ」を使用して、CSBMモジュール104は、要求を満たす前に、修正可能なコードおよび/またはデータを認証し、完全性をチェックすることができる。有利には、ソフトウェアヒューズを使用して、CSBMモジュール104は、コードのセキュリティを損なわずに、外部メモリデバイス内に記憶された修正可能なブート段階コードの修正および/または更新を実現し得る。
【００２５】
図1に示すように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130は、デジタル信号プロセッサ110に結合される。オンチップシステム102の外部にあるタッチスクリーンディスプレイ132は、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。PCD 100は、ビデオエンコーダ134、たとえば、位相反転線(「PAL」)エンコーダ、順次式カラーメモリ(「SECAM」)エンコーダ、全国テレビジョン方式委員会(「NTSC」)エンコーダ、または任意の他のタイプのビデオエンコーダ134をさらに含み得る。ビデオエンコーダ134はマルチコアCPU110に結合される。ビデオ増幅器136は、ビデオエンコーダ134およびタッチスクリーンディスプレイ132に結合される。ビデオポート138はビデオ増幅器136に結合される。図1に描写されたように、ユニバーサルシリアルバス(「USB」)コントローラ140はCPU 110に結合される。また、USBポート142はUSBコントローラ140に結合される。PoPメモリ、キャッシュ116、マスクROM /ブートROM 113、ワンタイムプログラマブル(「OTP」)メモリ、フラッシュメモリなどの外部メモリデバイス115などを含み得るメモリ112もCPU110に結合され得る。
【００２６】
加入者識別モジュール(SIM)カード146もCPU110に結合され得る。さらに、図1に示すように、デジタルカメラ148はCPU110に結合され得る。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(「CCD」)カメラまたは相補型金属酸化膜半導体(「CMOS」)カメラである。
【００２７】
図1にさらに示すように、ステレオオーディオコーデック150は、アナログ信号プロセッサ126に結合され得る。さらに、オーディオ増幅器152は、ステレオオーディオコーデック150に結合され得る。例示的な態様では、第1のスピーカー154および第2のスピーカー156がオーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158が、また、ステレオオーディオコーデック150に結合され得ることを示している。さらに、マイクロフォン160が、マイクロフォン増幅器158に結合され得る。特定の態様では、周波数変調(FM)ラジオチューナ162が、ステレオオーディオコーデック150に結合され得る。同様に、FMアンテナ164が、FMラジオチューナ162に結合される。さらに、ステレオヘッドフォン166が、ステレオオーディオコーデック150に結合されてもよい。
【００２８】
図1は、無線周波(「RF」)トランシーバ168がアナログ信号プロセッサ126に結合され得ることをさらに示している。RFスイッチ170が、RFトランシーバ168およびRFアンテナ172に結合されてもよい。図1に示すように、キーパッド174は、アナログ信号プロセッサ126に結合され得る。同様に、マイクロフォン付きモノヘッドセット176は、アナログ信号プロセッサ126に結合され得る。さらに、バイブレータデバイス178は、アナログ信号プロセッサ126に結合され得る。図1は、電源188、たとえば、バッテリーが電力管理集積回路(「PMIC」)180を介してオンチップシステム102に結合されることも示す。特定の態様では、電源188は、充電式DCバッテリー、または交流(「AC」)電力源に接続されたAC-DC変換器から導出されたDC電源を含む。
【００２９】
CPU 110は、1つまたは複数の内部のオンチップ熱センサー157A、さらには、1つまたは複数の外部のオフチップ熱センサー157Bにも結合され得る。オンチップ熱センサー157Aは、縦型PNP構造に基づき、通常は相補型金属酸化膜半導体(「CMOS」)の超大規模集積(「VLSI」)回路に専用の、1つまたは複数の絶対温度比例(「PTAT」)の温度センサーを備え得る。オフチップ熱センサー157Bは、1つまたは複数のサーミスタを含み得る。熱センサー157は、アナログデジタル変換器(「ADC」)コントローラ103を用いてデジタル信号に変換される、電圧降下を生じさせ得る。しかしながら、他のタイプの熱センサー157を採用することができる。
【００３０】
タッチスクリーンディスプレイ132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカー154、第2のステレオスピーカー156、マイクロフォン160、FMアンテナ164、ステレオヘッドフォン166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178、熱センサー157B、PMIC180および電源188は、オンチップシステム102の外部にある。しかしながら、図1のPCD100の例示的な実施形態において、オンチップシステム102に対して外部として示されるこれらのデバイスのうちの1つまたは複数は、他の例示的な実施形態ではチップ102上に存在し得ることを理解されよう。
【００３１】
特定の態様において、本明細書で説明する方法ステップのうちの1つまたは複数は、コントローラ101を形成するメモリ112に記憶された実行可能命令およびパラメータによって、またはセキュリティコントローラ101および/またはそのヒューズの形で実装され得る。さらに、セキュリティコントローラ101、メモリ112、そこに記憶される命令、またはそれらの組合せは、本明細書で説明する方法ステップのうちの1つまたは複数を実施するための手段として働き得る。
【００３２】
図2は、PCD100のブートROM113内に完全に記憶された第1ステージブートローダ(「FSBL」)を実行するためのオンチップシステムの一実施形態を示す機能ブロック図である。当業者が理解するように、FSBLは、PCD100をブートストラップするために使用される命令の初期セットであってよく、ワンタイムプログラマブル(「OTP」)ROM113内に存在し得る。OTP ROM内に存在することにより、FSBLは、他のオフチップ不揮発性プログラマブルメモリ112と対照的に、エンドユーザによって修正することがまったく実際的でないにしても、本質的にセキュアで困難である。
【００３３】
図2の説明で矢印205A、205Bで示すように、ブートシーケンスの間、アドレスは、CPU110から生じ、セキュリティコントローラ101とブートROM113内に含まれたマスクROM117の両方に向けられる。当業者が理解するように、CPU110は、マスクROM117内のアドレスにおいて記憶されたFSBLに関連する命令および/またはデータをフェッチしている場合がある。
【００３４】
要求されたアドレスにおいて記憶された特定の命令またはデータがパッチされている場合、すなわち、セキュリティコントローラ101によってそのアドレスに関して「パッチ有効」ビットが設定されている場合、ヒューズ(たとえば、F0)によって保持されるパッチデータは、ブートROMパッチおよびマルチプレクサモジュール(「MUX」モジュール)114に転送される(矢印215)。MUXモジュール114は、マスクROM 117から出てくる(矢印210)FSBLデータをオーバーライドし、マスクROM117内に記憶されたコードまたはデータの元のインスタンス化の代わりに、場合によっては、パッチコードまたはデータをCPU110にリターンする(矢印220)。セキュリティコントローラ101のヒューズが何の有効パッチデータも保持していない場合、MUXモジュール114は元の命令および/またはデータをCPU110にリターンする(矢印220)。
【００３５】
特に、図2に示すオンチップシステム102の特定の実施形態は、パッチ命令およびデータを搬送するためのヒューズ(F0...F47)の容量によって、当初、マスクROM117内でインスタンス化されたFSBL命令およびデータを修正する能力の点で制限される。そうだとしても、マスクROM117内に存在するFSBLコードおよびセキュリティコントローラ101のヒューズの性質は、FSBLコードの修正を困難にする固有のセキュリティレベルをもたらす。FSBL段階が完了し、ブートシーケンスをSSBL命令のセットに転送する前に、FSBLはSSBL命令を認証し、それらが改変されていないことを確実にすることができる。
【００３６】
図3は、PCD100の外部メモリデバイス115内に記憶された修正可能なブートシーケンス段階を実行するためのオンチップシステム102の一実施形態を示す機能ブロック図である。特に、外部メモリデバイス115は、不揮発性メモリ構成要素、揮発性メモリ構成要素、または不揮発性メモリと揮発性メモリの組合せであり得ることが想定される。図3の説明では、図2で説明するFSBL段階の完了時に、ブートシーケンスが外部メモリ構成要素115内のソフトウェアとしてインスタンス化された後続のブート段階に転送され得る(矢印310)ように、外部メモリ構成要素115はブートROM113に密に結合されることがわかる。FSBL段階の後続のブート段階の例は、当業者が理解するように、第2ステージブートローダ(「SSBL」)である。FSBLは、たとえば、外部不揮発性メモリ(たとえば、フラッシュ)からDRAMにSSBLをロードすることができる。DRAM内に入ると、ブートシーケンスの制御がSSBLに転送される前に、FSBLによってSSBLの完全性をチェックすることができる。
【００３７】
ブートシーケンスがFSBLからSSBLに転送されると、CPU110は、外部メモリ構成要素115からフェッチされた命令に従って、ブートシーケンスを続ける。SSBLは、次いで、第3ステージブートローダ(「TSBL」)など、その後のブート段階にブートシーケンスを転送することができる。CPU110は、次いで、たとえば、TSBLに従って、外部メモリデバイス115から命令をフェッチし続けることができる(矢印305)。各後続のブート段階に従って、要求(矢印305)および要求された命令のリターン(矢印320)のループはブートシーケンスが終了するまで続く。
【００３８】
図4は、本発明のある実施形態による、設定可能なセキュアブートモード(「CSBM」)構成を使用してPCD100の修正可能なブートシーケンス段階を実行するためのオンチップシステム102の一実施形態を示す機能ブロック図である。上で説明した要求プロセスと同様に、CPU110は、SSBLなど、修正可能なブートシーケンス段階に関連する命令および/またはデータを要求することができる(矢印305)。要求305は、メモリデバイス112上(矢印305B)および設定可能なセキュアブートモード(「CSBM」)モジュール104上で直接的にサービスされ得る。CSBMモジュール104は、次いで、外部メモリデバイス115内に「ソフトウェアヒューズ」として記憶された、修正されたSSBL命令に問い合わせることができる(矢印410)。修正されたSSBL命令は、存在し、メッセージ認証コード(「MAC」)に関連する場合、MACアルゴリズムとSoCと一意に関連付けられた秘密鍵とを使用してCSBMモジュール104によって認証され得る。
【００３９】
秘密鍵は、チップ102と一意に関連付けられ、チップ102内に焼き込まれ得る。修正された命令に適用されたMACアルゴリズムが、修正された命令に関連する、予想されるMACと同一のMAC出力を生成する場合だけ、修正された命令が使用されるため、命令の真正性および完全性を維持し、外部攻撃または損なわれたコードとの置換から保護することが可能である。すなわち、非正規のコードと正規のコードの両方が、PCDの外部メモリデバイス内に非暗号化された、容易に実行可能な形態で存在し得るにもかかわらず、CSBM実施形態は、SoC内に焼き込まれた秘密鍵を使用して、その真正性および完全性が成功裏に検証された場合だけ、コードの実行に進むことができる。このようにして、置換コードおよび/またはデータを使用するか、または正規のブート段階を回避する目的で、SoC上のメモリ構成要素をスワップアウトする非正規の攻撃は、正規のブートシーケンス修正のための能力を犠牲にせずに成功裏に妨害され得る。
【００４０】
図4の説明に戻ると、SSBLコードの元のインスタンス化に関連する、要求された命令はCSBMモジュール104を介してCPU110に戻され得る(矢印405、420)。代替として、CSBMモジュール104が置換SSBL命令(信頼できない不揮発性外部メモリ115など)を認証する場合、CSBMモジュール104は、元の命令をオーバーライドし、認証された置換命令および/またはデータをリターンすることができる(矢印410、420)。このようにして、CSBM解決策の一実施形態は、製造業者がブートシーケンスのセキュリティを損なわずに、ブート命令を修正するために活用することができるソフトウェアヒューズを提供し得る。特に、ソフトウェアヒューズのための本質的に無限数のプログラミングサイクルは、数の点で制限されるハードウェアヒューズの従来技術使用に対して、CSBM実施形態に関する有利な態様を提示する。ハードウェアヒューズを使用する従来技術解決策に対する、いくつかのCSBM実施形態によるソフトウェアヒューズの他の利点は、限定はしないが、修正されたブート段階命令および/またはデータのフィールドプログラム可能性、ならびに修正された命令および/データに関する拡張されたストレージ容量を含み得る。
【００４１】
図5は、第2ステージブートローダ(「SSBL」)の形で修正可能なブート段階に関連する命令および/またはデータのセキュアな修正のための方法500を示す論理的フローチャートである。例示的な方法500、ならびに本明細書で説明する他の例示的な実施形態は、SSBLのコンテキストで説明されているが、これらの解決策のいくつかの実施形態は、他の修正可能なブート段階に適用可能であり得、したがって、これらの解決策の範囲はSSBL段階またはTSBL段階に対する適用可能性に限定されないことが想定される。さらに、方法500は、修正可能なブート段階の元のインスタンス化をセキュアに修正するコンテキストで説明されるが、CSBM解決策のいくつかの実施形態は非正規の置換のリスクなしに、または置換コードのセキュリティを損なわずに、修正可能なブート段階の元のインスタンス化を完全に交換するために使用され得ることを理解されよう。
【００４２】
ブロック505から開始し、SSBLに関連する命令および/またはデータに対する要求がCSBMモジュール104によって認識される。判定ブロック510で、CSBMモジュール104は、不揮発性外部メモリデバイス115などの信頼できないストレージデバイス内のソフトウェアヒューズが要求された命令および/またはデータに関連する修正されたコードを含むかどうかを決定することができる。修正されたコードが存在しない場合、「no」分岐はブロック515に続き、元のSSBLインスタンス化から要求された命令および/またはデータがCPU110に戻される。
【００４３】
しかしながら、CSBMモジュール104が、その要求に関連する置換命令および/またはデータが利用可能であると決定した場合、「yes」分岐はブロック520に続く。ブロック520で、MACアルゴリズム102に対する入力として、SoCと一意に関連付けられ、SoC内に焼き込まれた秘密鍵を使用して、修正された命令が認証され、完全性に関してチェックされ得る。上で説明したように、鍵の秘密性を損なわないように、修正されたブートデータはセキュアな環境で認証され得る。このようにして、置換データに関連する、予想されるMACは秘密鍵を使用してMACアルゴリズムから生成されていなければならないため、非正規の置換データは鍵の知識なしに許可され得ない。秘密鍵の知識なしに、置換データに関連する、予想されるMAC値は、秘密鍵とMACアルゴリズムとを使用してCSBMモジュール104によって生成されたMAC出力に等しくならない。他の暗号手段が想定され、また当業者は気づくであろうが、いくつかのCSBM実施形態の新規性のある態様は、修正されたブートコードの認証および完全性検証が、SoC自体102と一意に関連付けられ、SoC自体内に焼き込まれた秘密鍵に基づき得ることも想定される。
【００４４】
方法500に戻ると、判定ブロック525で、修正された命令の真正性および完全性を検証する。CSBMモジュール104によって、SoC102に関連する秘密鍵を使用して命令が信頼できるものであると検証された場合(すなわち、CSBMモジュール104によって生成されたMAC値が命令に関連するMAC値と整合する場合)、「yes」分岐はブロック530に続き、修正された命令がCPU110に戻される。修正された命令が信頼できるまたは正規のものであると検証されない場合、「no」分岐が続き、ブートシーケンスは終了する。
【００４５】
図6は、信頼できない外部メモリデバイス115内に存在し得る第3ステージブートローダ(「TSBL」)に関連する命令および/またはデータのセキュアな修正のための方法600を示すブートシーケンスの論理的フローチャートである。図6の説明は、左から右に移る矢印605の形で、ブートシーケンスの時間的な表現を含む。方法600は、FSBL命令の形でブートシーケンスを始めることから開始する。上で説明したように、FSBL命令/データは、当業者が理解するように、信頼できる不可逆ROMデバイス内でインスタンス化され得る。
【００４６】
ブロック610で、FSBLを実行する。FSBLが完了する前に、判定ブロック615で、真正性および完全性に関して、後続のブート段階、すなわち、SSBLを検証する。SSBLが認証されない場合、「不合格」分岐が続き、ブートシーケンスは終了する。しかしながら、SSBLが認証された場合、「合格」分岐が続き、ブートシーケンスはSSBLブート段階に移る。FSBL段階などのSSBLブート段階は、OTPメモリなど、信頼できるメモリデバイス内でインスタンス化された命令および/またはデータに関連し得る。
【００４７】
ブロック620で、SSBLを実行する。SSBLが完了する前に、判定ブロック625で、真正性および完全性に関して、後続のブート段階、すなわち、TSBLを検証する。認証が不合格である場合、「不合格」分岐が続き、ブートシーケンスは終了する。さもなければ、「合格」分岐が続き、ブートシーケンスはTSBLに移る。特に、図6に示す例示的なCSBM実施形態600では、TSBLは、オフチップの不揮発性メモリデバイスまたは揮発性メモリデバイスなど、信頼できないストレージデバイス内に存在する、修正されたコードおよび/または命令により修正可能であり得る。
【００４８】
判定ブロック630で、CSBM実施形態は、修正されたTSBL命令および/またはデータが利用可能であるかどうか、および信頼できないストレージ内にあるかどうかを決定することができる。修正されたTSBLが、たとえば、FSBLおよびSSBLなど、信頼できるストレージ内に記憶されている場合、方法600は「yes」分岐に続きブロック645に進み、TSBLが実行される。しかしながら、修正されたTSBLが信頼できないストレージ内に存在する場合、方法600は、判定ブロック630から「no」分岐を判定ブロック635に進む。
【００４９】
判定ブロック635で、上で説明したように、MACアルゴリズムと、SoCと一意に関連付けられ、SoC内に焼き込まれた秘密鍵とを使用することにより、信頼できないストレージブロック内に記憶された命令および/またはデータの完全性および真正性を検証する。検証が不合格だった場合、方法600は判定ブロック635から「不合格」分岐を進み、ブートシーケンスは終了する。しかしながら、信頼できないストレージブロック内に記憶された、修正された命令が、修正された命令に関連するMAC値に一致するMAC出力を生成するための、SoC102と一意に関連付けられた鍵を使用して成功裏に検証された場合、方法600は「合格」分岐をブロック640に進む。
【００５０】
ブロック640で、セキュアでないストレージブロックからの、認証され、完全性がチェックされたTSBLコードを実行し、本方法はブロック645に移り、ここで、修正可能なブート段階は完了する。ブロック645から、ブートシーケンスは、MOSBLに関連し得るような後続のブート段階に進み、ブロック650に進む。
【００５１】
図7は、信頼できないストレージブロック705内に存在する修正されたコードおよび/またはデータを認証し、完全性をチェックすることに関して、図6の方法600の一部をより詳細に示す論理的フローチャートである。方法600の判定ブロック630に先立って、ブロック629で、TSBLブート段階に関連する命令および/またはデータのストレージブロックを読み取る。上で説明したように、ストレージブロックが非正規のコードおよび/またはデータを含み得る信頼できないストレージブロックである場合、方法600は判定ブロック635に進む。図7の説明では、判定ブロック635で開始する方法600の一部は、秘密鍵の秘密性を維持するために、セキュアな環境内で実行され得る。ブロック635で、修正されたコードおよび/またはデータが真正性および完全性に関して成功裏に検証された場合、「合格」分岐はブロック639に進み、修正された命令および/またはデータを使用して、ブート段階はブロック640に進む。
【００５２】
ブロック635で、真正性および完全性チェックが不合格であった場合、「不合格」分岐を判定ブロック636に進み、方法600は、そのコードが製造目的に関連するかどうかの決定を求める。そうでない場合、「no」分岐が続き、ブートシーケンスは終了する。コードが製造目的に関連する場合、「yes」分岐はブロック637に進み、命令のデフォルトブロックを作成する。方法はブロック639に移り、ブート段階はブロック640に進む。
【００５３】
本発明が説明されたように機能するために、本明細書で説明したプロセスまたはプロセスフローにおけるいくつかのステップが、他のステップに先行するのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変更しない場合には、本発明は、説明したステップの順序に限定されない。すなわち、本発明の範囲および趣旨から逸脱することなく、いくつかのステップは、他のステップの前に実行される場合があるか、後に実行される場合があるか、または他のステップと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、本発明から逸脱することなく、いくつかのステップは、省略される場合があるか、または実行されない場合がある。さらに、「後に」、「次いで」、「次に」などの言葉は、ステップの順序を限定することを意図していない。これらの言葉は単に、例示的な方法の説明を通して読者を導くために使用される。
【００５４】
さらに、プログラミングに関する当業者は、たとえば、本明細書における流れ図および関連する説明に基づいて、難なく、開示した発明を実装するコンピュータコードを書くことができるか、または実装するのに適したハードウェアおよび/もしくは回路を特定することができる。したがって、特定の1つのセットのプログラムコード命令または詳細なハードウェアデバイスの開示は、本発明の作製方法および使用方法を十分に理解するのに必要であるとは見なされない。特許請求されるコンピュータ実装プロセスの本発明の機能は、種々のプロセスフローを例示する場合がある図面とともに、上述の説明において、より詳細に説明されている。
【００５５】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、またはそれらの任意の組合せにおいて実装することができる。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶される場合があるか、またはコンピュータ可読媒体上に送信される場合がある。コンピュータ可読媒体は、コンピュータ記憶媒体と、コンピュータプログラムの1つの場所から別の場所への転送を容易にする任意の媒体を含む通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされる場合がある任意の利用可能な媒体であってもよい。例であって、限定はしないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令またはデータ構造の形で所望のプログラムコードを搬送または記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。
【００５６】
したがって、選択された態様が図示され詳細に説明されてきたが、以下の特許請求の範囲によって規定されるように、本発明の趣旨および範囲から逸脱することなく、態様において種々の置換および改変が行われる場合があることは理解されよう。
【符号の説明】
【００５７】
100  ポータブルコンピューティングデバイス(「PCD」)
101  セキュリティコントローラ
102  オンチップシステム、チップ
103  アナログデジタル変換器(「ADC」)コントローラ
104  CSBMモジュール
110  マルチコア中央処理装置(「CPU」)、デジタル信号プロセッサ
112  不揮発性外部メモリ構成要素、メモリ、オフチップ不揮発性プログラマブルメモリ、メモリデバイス
113  マスクROM/ブートROM、ワインタイムプログラマブル(「OTP」)ROM
114  マルチプレクサモジュール(「MUX」モジュール)
115  外部メモリデバイス、外部メモリ構成要素
116  キャッシュ
117  マスクROM
126  アナログ信号プロセッサ
128  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  タッチスクリーンディスプレイ
134  ビデオエンコーダ
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(「USB」)コントローラ
142  USBポート
146  加入者識別モジュール(SIM)カード
148  デジタルカメラ、カメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカー
156  第2のステレオスピーカー
157  熱センサー
157A  オンチップ熱センサー
157B  オフチップ熱センサー
158  マイクロフォン増幅器
160  マイクロフォン
162  周波数変調(FM)ラジオチューナ
164  FMアンテナ
166  ステレオヘッドフォン
168  無線周波(「RF」)トランシーバ
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  マイクロフォン付きモノヘッドセット、モノヘッドセット
178  バイブレータデバイス、バイブレータ
180  電力管理集積回路(「PMIC」)
188  電源
222  0番目のコア
224  1番目のコア
230  N番目のコア
305  要求
500  方法
600  方法
705  信頼できないストレージブロック
【図１】
2017517795.tif 000003
【図２】
2017517795.tif 000004
【図３】
2017517795.tif 000005
【図４】
2017517795.tif 000006
【図５】
2017517795.tif 000007
【図６】
2017517795.tif 000008
【図７】
2017517795.tif 000009
【手続補正書】
【提出日】平成28年10月11日(2016.10.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムオンチップ(「SoC」)内のブート段階を修正するための方法であって、
特定のブート段階に関連する、信頼できるメモリ構成要素内に記憶されたコード化された命令の元のインスタンス化に対する要求をプロセッサから受信するステップと、
修正された命令が信頼できないメモリ構成要素内に存在すると決定するステップと、
前記SoCのセキュアな環境内で、メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証するステップであって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証するステップと、
前記修正された命令を前記プロセッサにリターンするステップと
を含む、方法。
【請求項２】
前記コード化された命令が第2ステージブートローダ(「SSBL」)に関連する、請求項1に記載の方法。
【請求項３】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項1に記載の方法。
【請求項４】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項1に記載の方法。
【請求項５】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令の真正性および完全性を検証するステップを含む、請求項1に記載の方法。
【請求項６】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップと、命令のデフォルトブロックを作成するステップとを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、命令の前記デフォルトブロックをリターンするステップを含む
請求項1に記載の方法。
【請求項７】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、ブートシーケンスを終了するステップを含む
請求項1に記載の方法。
【請求項８】
前記秘密鍵が前記SoC内に焼き込まれている、請求項1に記載の方法。
【請求項９】
システムオンチップ(「SoC」)内のブート段階を修正するためのコンピュータシステムであって、
特定のブート段階に関連する、信頼できるメモリ構成要素内に記憶されたコード化された命令の元のインスタンス化に対する要求をプロセッサから受信することと、
修正された命令が信頼できないメモリ構成要素内に存在すると決定することと、
前記SoCのセキュアな環境内で、メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証することであって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証することと、
前記修正された命令を前記プロセッサにリターンすることと
を行うように動作可能な設定可能なセキュアブートモード(「CSBM」)
を含む、コンピュータシステム。
【請求項１０】
前記コード化された命令が第2ステージブートローダ(「SSBL」)に関連する、請求項9に記載のコンピュータシステム。
【請求項１１】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項9に記載のコンピュータシステム。
【請求項１２】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項9に記載のコンピュータシステム。
【請求項１３】
前記修正された命令が正規のものであることを前記検証することが、前記修正された命令の真正性および完全性を検証することを含む、請求項9に記載のコンピュータシステム。
【請求項１４】
前記修正された命令が正規のものであることを前記検証することが、前記修正された命令が無効であると決定することと、命令のデフォルトブロックを作成することとを含み、
前記修正された命令を前記プロセッサに前記リターンすることが、命令の前記デフォルトブロックをリターンすることを含む
請求項9に記載のコンピュータシステム。
【請求項１５】
前記修正された命令が正規のものであることを前記検証することが、前記修正された命令が無効であると決定することを含み、
前記修正された命令を前記プロセッサに前記リターンすることが、ブートシーケンスを終了することを含む
請求項9に記載のコンピュータシステム。
【請求項１６】
前記秘密鍵が前記SoC内に焼き込まれている、請求項9に記載のコンピュータシステム。
【請求項１７】
システムオンチップ(「SoC」)内のブート段階を修正するためのコンピュータシステムであって、
特定のブート段階に関連する、信頼できるメモリ構成要素内に記憶されたコード化された命令の元のインスタンス化に対する要求をプロセッサから受信するための手段と、
修正された命令が信頼できないメモリ構成要素内に存在すると決定するための手段と、
前記SoCのセキュアな環境内で、メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証するための手段であって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証するための手段と、
前記修正された命令を前記プロセッサにリターンするための手段と
を含む、コンピュータシステム。
【請求項１８】
前記コード化された命令がセカンドステージブートローダ(「SSBL」)に関連する、請求項17に記載のコンピュータシステム。
【請求項１９】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項17に記載のコンピュータシステム。
【請求項２０】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項17に記載のコンピュータシステム。
【請求項２１】
前記修正された命令が正規のものであることを前記検証するための手段が、前記修正された命令の真正性および完全性を検証するための手段を含む、請求項17に記載のコンピュータシステム。
【請求項２２】
前記修正された命令が正規のものであることを前記検証するための手段が、前記修正された命令が無効であると決定するための手段と、命令のデフォルトブロックを作成するための手段とを含み、
前記修正された命令を前記プロセッサに前記リターンするための手段が、命令の前記デフォルトブロックをリターンするための手段を含む
請求項17に記載のコンピュータシステム。
【請求項２３】
前記修正された命令が正規のものであることを前記検証するための手段が、前記修正された命令が無効であると決定するための手段を含み、
前記修正された命令を前記プロセッサに前記リターンするための手段が、ブートシーケンスを終了するための手段を含む
請求項17に記載のコンピュータシステム。
【請求項２４】
コンピュータ可読プログラムコードを含むコンピュータプログラムであって、前記コンピュータ可読プログラムコードがシステムオンチップ(「SoC」)内のブート段階を修正するための方法を実施するために実行されるように構成され、前記方法が、
特定のブート段階に関連する、信頼できるメモリ構成要素内に記憶されたコード化された命令の元のインスタンス化に対する要求をプロセッサから受信するステップと、
修正された命令が信頼できないメモリ構成要素内に存在すると決定するステップと、
前記SoCのセキュアな環境内で、メッセージ認証コード(「MAC」)アルゴリズムおよび秘密鍵の適用によってMAC出力を生成することに成功することによって、前記修正された命令が正規のものであることを検証するステップであって、前記秘密鍵が前記SoCに一意に関連し、前記MAC出力が、前記修正された命令に関連する、予想されるMACに等しい、検証するステップと、
前記修正された命令を前記プロセッサにリターンするステップと
を含む、コンピュータプログラム。
【請求項２５】
前記コード化された命令が第2ステージブートローダ(「SSBL」)に関連する、請求項24に記載のコンピュータプログラム。
【請求項２６】
前記コード化された命令が第3ステージブートローダ(「TSBL」)に関連する、請求項24に記載のコンピュータプログラム。
【請求項２７】
前記信頼できないメモリ構成要素がフラッシュメモリ構成要素である、請求項24に記載のコンピュータプログラム。
【請求項２８】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令の真正性および完全性を検証するステップを含む、請求項24に記載のコンピュータプログラム。
【請求項２９】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップと、命令のデフォルトブロックを作成するステップとを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、命令の前記デフォルトブロックをリターンするステップを含む
請求項24に記載のコンピュータプログラム。
【請求項３０】
前記修正された命令が正規のものであることを前記検証するステップが、前記修正された命令が無効であると決定するステップを含み、
前記修正された命令を前記プロセッサに前記リターンするステップが、ブートシーケンスを終了するステップを含む
請求項24に記載のコンピュータプログラム。
【国際調査報告】
2017517795.tif 000010
2017517795.tif 000011