IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7597467セキュアな組み込みマイクロコントローラ・イメージ・ロード
<>
  • 特許-セキュアな組み込みマイクロコントローラ・イメージ・ロード 図1
  • 特許-セキュアな組み込みマイクロコントローラ・イメージ・ロード 図2
  • 特許-セキュアな組み込みマイクロコントローラ・イメージ・ロード 図3
  • 特許-セキュアな組み込みマイクロコントローラ・イメージ・ロード 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】セキュアな組み込みマイクロコントローラ・イメージ・ロード
(51)【国際特許分類】
   G06F 21/57 20130101AFI20241203BHJP
【FI】
G06F21/57 320
【請求項の数】 19
(21)【出願番号】P 2022530946
(86)(22)【出願日】2020-11-27
(65)【公表番号】
(43)【公表日】2023-01-31
(86)【国際出願番号】 IB2020061206
(87)【国際公開番号】W WO2021111264
(87)【国際公開日】2021-06-10
【審査請求日】2023-04-24
(31)【優先権主張番号】16/700,708
(32)【優先日】2019-12-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ステファン、クリストファー
(72)【発明者】
【氏名】アルバートソン、チャド
(72)【発明者】
【氏名】オレリッチ、ニコラス
(72)【発明者】
【氏名】キャンベル、エリック
【審査官】塩澤 如正
(56)【参考文献】
【文献】特開2011-210117(JP,A)
【文献】特開2015-007827(JP,A)
【文献】特開2019-003275(JP,A)
【文献】特開2015-036847(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
セキュアなブート・イメージ・ロードを提供するためのシステムであって、
マイクロコントローラと、
前記マイクロコントローラ上に配置された複数の物理的に変更可能な内部コンポーネント(PMIC)であって、各PMICが1回だけ変更可能な前記複数のPMICと、
前記マイクロコントローラのメモリからブート・イメージをロードするように構成されたイメージ・ローダと、
前記ブート・イメージのチェックサム値を計算するように構成されたチェックサム計算器と、
前記ブート・イメージの前記チェックサム値の2進表現を作成するために前記複数のPMICを変更するように構成されたチェックサム焼き付け器と
を含み、
前記複数のPMIC内のチェックサム値(以下、第1のチェックサム値という)と前記ブート・イメージがロードされるときの該ブート・イメージのチェックサム値(以下、第2のチェックサム値という)とが同じではない場合、前記イメージ・ローダは不一致応答を実行するように構成されており、
前記不一致応答は前記複数のPMICに焼き付けられる、
前記システム。
【請求項2】
前記イメージ・ローダは、前記ブート・イメージがロードされるたびに前記ブート・イメージの第2のチェックサム値を計算するためと、前記第2のチェックサム値を前記複数のPMIC内の前記第1のチェックサム値と比較して前記第2のチェックサム値と前記第1のチェックサム値とが同じであるか否かを判定するために、前記チェックサム計算器を呼び出すように構成されている、請求項1に記載のシステム。
【請求項3】
前記第1のチェックサム値と前記第2のチェックサム値とが同じである場合、前記イメージ・ローダは前記ブート・イメージをロードさせることを続行するように構成されている、請求項2に記載のシステム。
【請求項4】
前記不一致応答は前記ブート・イメージのさらなるロードを防止する、請求項1ないし3のいずれか1項に記載のシステム。
【請求項5】
前記不一致応答は、不一致をユーザに警告する、請求項1ないし4のいずれか1項に記載のシステム。
【請求項6】
前記不一致応答は、前記ユーザから応答が受け取られるまで前記ブート・イメージのロードをさらに防止する、請求項に記載のシステム。
【請求項7】
前記複数のPMICに焼き付けられている前記不一致応答は部分的応答である、請求項1ないし6のいずれか1項に記載のシステム。
【請求項8】
前記部分的応答は、完全な不一致応答が記憶されているアドレスを指すポインタである、請求項7に記載のシステム。
【請求項9】
ブート・イメージ・ロードをセキュアにする方法であって、
前記ブート・イメージをマイクロコントローラからロードすることであって、前記マイクロコントローラ上に複数の物理的に変更可能な内部コンポーネント(PMIC)が配置されており、各PMICが1回だけ変更可能である、前記ロードすること、
前記ロードした、ブート・イメージのチェックサム値を計算することと、
前記計算したチェックサム値をマイクロコントローラに書き込むことと、
前記書き込んだチェックサム値を前記マイクロコントローラの前記PMICに焼き付けることと、
前記ブート・イメージがロードされるときの該ブート・イメージのチェックサム値を前記マイクロコントローラの前記PMICに焼き付けられているチェックサム値と比較したときの不一致に対する応答を前記マイクロコントローラの前記PMICに焼き付けることと
を含む、前記方法。
【請求項10】
前記計算したチェックサム値は前記複数のPMICに前記チェックサム値の2進表現として焼き付けられる、請求項に記載の方法。
【請求項11】
前記比較したときの一致に応答して前記ブート・イメージのロードを続行させることと、
前記比較したときの不一致に応答して、不一致応答を実行することと
をさらに含む、請求項9又は10に記載の方法。
【請求項12】
前記不一致応答は前記マイクロコントローラに永続的に焼き付けられる、請求項11に記載の方法。
【請求項13】
前記不一致応答は前記ブート・イメージのさらなるロードを停止させる、請求項11または12に記載の方法。
【請求項14】
前記不一致応答は、不一致をユーザに警告する、請求項11ないし13のいずれか1項に記載の方法。
【請求項15】
前記不一致応答は、前記ユーザから応答が受け取られるまで前記ブート・イメージのさらなるロードをさらに停止する、請求項14に記載の方法。
【請求項16】
前記不一致応答は、完全な不一致応答が記憶されているアドレスを指すポインタとしての部分的応答である、請求項11ないし15のいずれか一項に記載の方法。
【請求項17】
ブート・イメージ・ロードをセキュアにするためのコンピュータ・プログラムであって、
処理回路に、請求項9ないし16のいずれか一項に記載の方法を実行させるためのコンピュータ・プログラム。
【請求項18】
請求項17に記載のコンピュータ・プログラムを記憶した記憶媒体。
【請求項19】
請求項18に記載のコンピュータ・プログラムを実行するように構成されているシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、イメージ・ロードに関し、より詳細には、正しいブート・イメージが確実にロードされるようにすることに関する。
【背景技術】
【0002】
現在、コンピュータはオフ・チップの不揮発性ストレージからイメージをロードする。このイメージは、有効でセキュアであるものとみなされている。しかし、攻撃者が変更されたイメージをロードすることによって、コンピュータのイメージとセキュリティを損なう可能性がある。損なわれたイメージが関連するコンピュータにロードされる場合、そのコンピュータは、イメージを変更した人物が望んだどのような目的にでも使用される可能性がある。このような目的は、ユーザによる意図的なものである場合も意図的でない場合もあり、組織内に不正なセキュリティ脆弱点を生じさせる可能性がある。
【0003】
したがって、当技術分野では上記の問題に対処する必要がある。
【発明の概要】
【0004】
第1の態様から見ると、本発明は、セキュアなブート・イメージ・ロードを提供するためのシステムであって、マイクロコントローラと、上記マイクロコントローラ上に配置された複数の物理的に変更可能な内部コンポーネント(PMIC)であって、各PMICが1回だけ変更可能な上記複数のPMICと、上記マイクロコントローラのメモリからブート・イメージをロードするように構成されたイメージ・ローダと、上記ブート・イメージのチェックサム値を計算するように構成されたチェックサム計算器と、上記ブート・イメージの上記チェックサム値の2進表現を作成するために上記複数のPMICを変更するように構成されたチェックサム焼き付け器(checksum burner)とを含むシステムを提供する。
【0005】
さらなる態様から見ると、本発明は、ブート・イメージのチェックサム値を計算することと、上記チェックサム値をマイクロコントローラに書き込むことと、上記チェックサム値を上記マイクロコントローラに焼き付けることと、チェックサム不一致に対する応答を上記マイクロコントローラに焼き付けることとを含む方法を提供する。
【0006】
さらなる態様から見ると、本発明は、ブート・イメージ・ロードをセキュアにする方法であって、上記ブート・イメージをマイクロコントローラからロードすることと、上記ブート・イメージのチェックサム値を計算することと、上記チェックサム値を、上記マイクロコントローラに永続的に焼き付けられている記憶チェックサム値と比較することと、上記チェックサム値を上記記憶チェックサム値と比較したときの一致に応答して上記ブート・イメージのロードを続行させることと、上記チェックサム値を上記記憶チェックサム値と比較したときの不一致に応答して、不一致応答を実行することとを含む方法を提供する。
【0007】
さらなる態様から見ると、本発明は、ブート・イメージ・ロードをセキュアにするためのコンピュータ・プログラム製品であって、処理回路によって読み取り可能であって、本発明のステップを行う方法を行うために上記処理回路による実行のための命令を記憶する、コンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品を提供する。
【0008】
さらなる態様から見ると、本発明は、コンピュータ可読媒体に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、上記プログラムがコンピュータ上で実行されると本発明のステップを行うためのソフトウェア・コード部分を含むコンピュータ・プログラムを提供する。
【0009】
本開示の実施形態は、セキュアなイメージ・ロードを提供するためのシステムを対象とする。システムは、マイクロコントローラを含む。マイクロコントローラは、複数の物理的に変更可能な内部コンポーネント(PMIC)を有する。複数のPMICのそれぞれは1回だけ変更可能である。システムは、マイクロコントローラのメモリからブート・イメージをロードするように構成されたイメージ・ローダと、ブート・イメージのチェックサム値を計算するように構成されたチェックサム計算器とをさらに含む。システムは、イメージのチェックサム値の2進表現を作成するために複数のPMICを変更するように構成されたチェックサム焼き付け器をさらに含む。
【0010】
本開示の実施形態は、マイクロコントローラにおいてセキュアなイメージを作成する方法を対象とする。イメージのチェックサム値が計算される。チェックサム値は次にマイクロコントローラに書き込まれる。この値は次に、マイクロコントローラに存在するPMICを使用してマイクロコントローラに焼き付けられる。また、チェックサム不一致に対する応答もマイクロコントローラに存在するPMICを使用してマイクロコントローラに焼き付けられる。
【0011】
本開示の実施形態は、ブート・イメージ・ロードをセキュアにする方法を対象とする。ブート・イメージはマイクロコントローラからロードされる。次に、ロードされたブート・イメージのチェックサム値が計算される。この値は次に、マイクロコントローラに記憶されてマイクロコントローラに焼き付けられているチェックサム値と比較される。チェックサム値と記憶チェックサム値との一致が見つかると、ブート・イメージは引き続きロードすることが可能にされる。不一致が見つかると、不一致応答が実行される。不一致応答はマイクロコントローラにプログラムされる。
【0012】
上記の概要は、例示の各実施形態または本開示のすべての実装形態を説明することを意図していない。
【0013】
本出願に含まれる図面は、本明細書に組み込まれ、その一部をなす。図面は、本開示の実施形態を示し、説明とともに、本開示の原理を説明する役割を果たす。図面は特定の実施形態の例示に過ぎず、本開示を限定しない。
【図面の簡単な説明】
【0014】
図1】例示の実施形態による、セキュアな組み込みマイクロコントローラ・イメージ・ロードを採用するシステムを示すブロック図である。
図2】例示の実施形態による、システムがチェックサム値をどのようにマイクロコントローラにロードし、焼き付けるかというプロセスを示す流れ図である。
図3】例示の実施形態による、システムが通常動作時にどのように動作するかというプロセスを示す流れ図である。
図4】一実施形態によるコンピューティング・システムを示すブロック図である。
【発明を実施するための形態】
【0015】
本発明は、様々な変更および代替形態に修正可能であるが、本発明の具体的詳細が図面に例として示されており、詳細に説明する。しかし、その意図は本発明を記載されている特定の実施形態に限定することではないことを理解されたい。逆に、その意図は本発明の範囲に含まれるすべての変更、均等物および代替物を対象に含めることである。
【0016】
本開示の態様は、イメージ・ロードに関し、より詳細には、正しいブート・イメージが確実にロードされるようにすることに関する。本開示はこのような用途には必ずしも限定されないが、本開示の様々な態様がこの文脈を用いた様々な実施例の説明からわかるであろう。
【0017】
本開示は、システム初期設定時にロードされたイメージが、システムが当初出荷されたときのイメージと一致することを検証するためにチェックサムを使用する。これにより、製造後に検出されることなく外部メモリが変更または破損されることができないように防止する。
【0018】
ブート・イメージ120を検証する他の手法は、セキュリティ・ヘッダまたは暗号鍵を使用する。このヘッダは、秘密鍵を使用してイメージに署名することによって生成される。しかし、署名付きイメージを使用するこの手法の弱点は、不正イメージがロードされ、システムが期待するセキュリティ署名を生成するために有効鍵で署名される可能性があることである。これは悪意ある攻撃に対するシステムの脆弱性を高める。本開示は、追加レベルの保護として暗号化の使用を必要とせず、暗号化の使用も妨げない。これにより、慎重な企業または個人が、そのブート・イメージ120を望まない変更または意図的変更に対してセキュアにする両方の方法を使用することができるようにする。
【0019】
図1は、実施形態によるセキュアな組み込みマイクロコントローラ110イメージ・ロードを採用するシステムのブロック図である。システムは、マイクロコントローラ110と、ブート・イメージ120と、イメージ・ローダ130と、チェックサム計算器140と、チェックサム焼き付け器150とを含む。
【0020】
マイクロコントローラ110は、システムに組み込みアプリケーションを提供する、システムのコンポーネントである。マイクロコントローラ110は、単一の集積回路チップ上で具現化される。マイクロコントローラ110は、1つまたは複数のプロセッサ・コア(CPU)とメモリと入力/出力周辺装置とを含む。マイクロコントローラ110の構成に応じて、プログラム・メモリは工場でのみプログラム可能な永続的な読み取り専用メモリとすることができるか、または現場で変更可能なフラッシュ・メモリもしくは消去可能読み取り専用メモリとすることができる。メモリが現場で変更可能な場合、データが当初マイクロコントローラ110にロードされてから変更されていないことを保証するために、マイクロコントローラ110上の関連データの保全性を検証することが有用な場合がある。また、マイクロコントローラ110は、いくつかの物理的に変更可能な内部コンポーネント125-1、125-2、...、125-N(PMIC125と総称)を含む。
【0021】
物理的に変更可能な内部コンポーネント(PMIC)を有する電子マイクロコントローラ110は、現在ロードしているブート・イメージ120がマイクロコントローラ110とともに出荷された元のブート・イメージ120と確実に一致するように保証することによって、既存のセキュリティ技術より優れた利点を提供する。PMIC125は、マイクロコントローラ110の内部に組み込まれる。実施形態によっては、PMIC125は、コンピュータ・チップの動的なリアルタイム再プログラミングのための技術であるeFuseを使用して実装される。eFuseは、いったん「ヒューズ」が焼かれると、元の状態に戻すことができないという利点を有する。しかし、実施形態によっては、PMIC125はeFuseの配列、または論理回路を使用するEEPROM、またはeFuseによりゲートされるEEPROMとすることができる。eFuseによりゲートされる場合、ゲートは、eFuseゲートを越えて配置されたデータ/イメージの変更を防止する防止機構として機能する。
【0022】
マイクロコントローラ110のPMIC125は、開回路を生じさせるように構成された1つまたは複数の切断可能デバイス(たとえば、ヒューズ、ワイヤ、規定された脆性を有する導電性材料)で構成される。切断可能デバイスのそれぞれは、切断などの犠牲的動作によって動作することができる。切断される前には、各切断可能デバイスは電流が一端から他端に流れることができる電子経路である。電気は絶えず、または切断可能デバイスを検証する要求に応答して流れることができる。電気が他端に達する場合、回路は閉じているとみなされ、閉回路は「1」または「0」などの値を表すことができる。切断された後、各切断可能デバイスは、電流が一端から他端に流れることができなくなるように切断される。たとえば、切断可能デバイスは、熱、電流またはその他の関連原因に応答して切断または蒸発する脆弱な性質でなることができる。電気が他端に達しない場合、回路は開いているとみなされ、開回路は「0」または「1」などの値を表すことができる。開回路または閉回路によって表される値は、逆の値である。すなわち、たとえば、開回路が値「1」を有する場合、閉回路は値「0」を有し、その逆も成り立つ。回路を切断するプロセスは、たとえば、蒸発、溶融、燃焼、破裂、断裂、物理的変更、またはその他により、特定の回路を通る電流の流れを遮断することによって行うことができる。切断可能デバイスのそれぞれは、開回路の形成を生じさせる電流(たとえば過電流、過負荷)を受け取ることによって作動することができる。
【0023】
PMIC125は、動作を直接生じさせることができる。実施形態によっては、PMIC125は、切断可能デバイスの数とその現在の状態とを読み出すロジックを含むことができる。実施形態によっては、ロジックはPMIC125には含まれない。たとえば、ロジックはPMIC125を収容するセンサまたはコンピュータ内に配置可能である。別の実施例では、ロジックは、第2の集積回路に配置可能であり、回路基板の論理トレースを介して、または通信ケーブルもしくはその他のワイヤを介して、PMIC125に通信可能に結合可能である。実施形態によっては、PMIC125は切断可能デバイスに直接電流を印加することができる。実施形態によっては、PMIC125は、切断可能デバイスに間接的に電流を印加することができ、切断可能デバイスに第2の電流を直接的に印加する。第1の実施例では、複数の切断可能デバイスに隣接するワイヤに第1の電流が印加され、それによって切断可能デバイスの温度を上昇させる(たとえば加熱する)。加熱後、複数の切断可能デバイスのうちの1つまたは複数のデバイスに直接、第2の電流が印加され、それによって1つまたは複数の切断可能デバイスを切断させ、その結果として、1つまたは複数の永続的開回路を形成する。実施形態によっては、切断を生じさせるためにPMIC125における切断可能デバイスに印加される電流は、外部供給源によって供給される。この実施形態では、PMIC125は、切断可能デバイスのいずれも切断させる内部能力を有していない。このようにして、マイクロコントローラ110がいったんプログラムされた後は、切断可能デバイスのパターンを容易に変更することができない。
【0024】
ブート・イメージ120は、コンピュータ記憶媒体の完全な内容と構造とを含むコンピュータ・ファイルである。ブート・イメージ120がマイクロコントローラ110に転送されると、ブート・イメージ120はマイクロコントローラ110の関連ハードウェアがブートまたはロードすることができるようにする。ブート・イメージ120は、オペレーティング・システムとユーティリティと診断とを含む。ブート・イメージ120は、ブート情報とデータ・リカバリ情報も含むことができる。イメージは、マイクロコントローラ110の特定の最終用途に固有のアプリケーションも含むことができる。ブート・イメージ120が構築された後は、ブート・イメージ120をデバイスに単純にコピーすることができ、妥当な限界内でパッチ可能であり、問題があった場合には処分可能なままである。これは、他のイメージとは異なり、純粋なブート・イメージ120はミッション・クリティカルなデータを含まないために行うことができる。純粋なブート・イメージ120は、構成ファイルまたは既成の実行ファイルから再現することができないデータを含まない。具体的には、一部のオペレーティング・システムは、たとえばMicrosoft Windows(R)レジストリなど、ユーザ選好または構成ファイルのコピーがブート・イメージ120自体内で維持されることを必要とするが、エンドユーザ・データはブート・イメージ120の一部ではない。本開示のブート・イメージ120は、一般に、対応するシステムの寿命期間中にブート・イメージ120の変更が予期されないように、マイクロコントローラ110が関連システムに組み込まれる時点で固定される。しかし、ブート・イメージ120が変更される可能性がある場合もあり得る。このような変更は、配布後にブート・イメージ120において後で誤りが特定された場合など、意図的である場合がある。逆に、このような変更は、関連システムまたはシステム上のデータの悪意ある使用を可能にするためにブート・イメージ120に変更を加えるハッカーまたはその他の悪意のある変更源など、(システムの所有者の観点から)意図しない変更である場合もある。本開示は、イメージをブート・イメージとして説明しているが、アプリケーション・イメージなど、ユーザが破損またはその他の変更から保護したいあらゆるイメージが使用可能であることを理解されたい。
【0025】
イメージ・ローダ130は、マイクロコントローラ110のメモリからシステムのメモリにブート・イメージ120をロードする、システムの部分である。イメージ・ローダ130は、システムのROMに記憶される。しかし、実施形態によっては他の場所に記憶されてもよい。イメージ・ローダ130は、ブート・イメージ120をブート・イメージ120の実行に備えてメモリに入れることができる。イメージ・ローダ130は、ブート・イメージ120の内容をメモリに読み出し、ブート・イメージ120を実行のために準備するための他の必要なタスクを行う。ロードが完了した後は、ロードされたプログラム・コードに制御が渡される。イメージ・ローダ130は、システムがブート・イメージ120を実行する準備が確実に整っているように保証するために、一連の基本ハードウェア試験を実行することができる。イメージ・ローダ130が行う試験の1つは、ロードされたブート・イメージ120に関連付けられたチェックサムを検証することである。ブート・イメージ120のチェックサムがマイクロコントローラ110に焼き付けられているチェックサムと一致しない場合、イメージ・ローダ130は次に、マイクロコントローラ110に焼き付けられている命令のセットに従う。これらの命令は、チェックサム間に不一致があった場合にどのように進行すべきかをイメージ・ローダ130に指示する。これらの命令は、ブート・イメージ120のロードと実行を中断もしくはその他により停止する命令、管理者もしくはその他のユーザに不一致を通知する命令、またはブート・イメージ120のロードと実行に移る前に追加のユーザ入力を求める命令を含むことができる。不一致に対するその他の応答も、マイクロコントローラ110にプログラムすることができる。実施形態によっては、マイクロコントローラ110は、チェックサム値を調べ、不一致命令を実行するプロセスを行うことができる。
【0026】
チェックサム計算器140は、ブート・イメージ120のチェックサムを計算する、システムのコンポーネントである。チェックサム計算器140は、ブート・イメージ120を取得し、ブート・イメージ120のチェックサム値を計算するプロセスをブート・イメージ120に適用する。チェックサム計算器140は、パリティ・バイト、パリティ・ワード、モジュラ・サム、または位置依存などのチェックサムを計算する任意の手法を採用することができる。また、実施形態によっては、チェックサムは、ハッシュ関数を使用して計算することができる。チェックサムの長さは、デバイスにおいて望まれるセキュリティのレベルと、マイクロコントローラ110に存在するeFuseの数とに依存する。チェックサムのサイズは、1ビットと1024ビットの間の範囲とすることができる。しかし、暗号ハッシュ関数が使用される場合は、チェックサムは任意のビット数を有することができる。チェックサム計算器140は、ブート・イメージ120が、工場などで最初にマイクロコントローラ110にロードされる前に、ブート・イメージ120のチェックサムを計算する。チェックサム計算器140は、ブート・イメージ120がイメージ・ローダ130によってロードされるたびにもブート・イメージ120のチェックサムを計算する。このチェックサム値は、最初の機会にチェックサム焼き付け器150に供給され、その後のすべての機会にイメージ・ローダ130に供給される。実施形態によっては、2つのチェックサム計算器140および141がある。第1のチェックサム計算器140は、ブート・イメージ120が最初にマイクロコントローラ110にロードされる場所で維持され、第2のチェックサム計算器141はマイクロコントローラ110に関連付けられたデバイス上に配置される。この実施形態では、両方のチェックサム計算器140および141は、両方の計算器が同じブート・イメージ120について同じ値を得るように、チェックサムを計算するために同じ手法を実施する。
【0027】
チェックサム焼き付け器150は、チェックサム計算器140によって計算されたチェックサム値をマイクロコントローラ110に焼き付ける、システムのコンポーネントである。チェックサムはマイクロコントローラ110のPMIC125部を使用してマイクロコントローラ110に焼き付けられる。チェックサムの値は2進値に変換される。この2進値は、次に、対応する値がチェックサム値を表すようにいくつかのPMIC125の切断/非切断状態を変更することによって焼き付けられる。たとえば、256ビットのチェックサムが使用され、計算された値が「120EA8A25E5D487BF68B5F7096440019」である場合、チェックサムの対応する2進表現は以下のようになる。
00110001 00110010 00110000 01000101 01000001 00111000 01000001 00110010 00110101 01000101 00110101 01000100 00110100 00111000 00110111 01000010 01000110 00110110 00111000 01000010 00110101 01000110 00110111 00110000 00111001 00110110 00110100 00110100 00110000 00110000 00110001 00111001
【0028】
この値をマイクロコントローラ110に焼き付けるために、マイクロコントローラ110は利用可能な少なくとも256個のPMIC125を有する必要がある。チェックサム焼き付け器150は次に、「0」か「1」かを判定するために使用される方法に応じて、対応する回路を開くかまたは回路を閉じるように焼く。しかし、マイクロコントローラ110は、利用可能なPMIC125のすべてがチェックサムに使用されないように、任意の数のPMIC125を有することができる。また、チェックサムは、任意のビット数とすることができる。しかし、マイクロコントローラ110は、少なくともチェックサムのビット数と同数のPMIC125を有する必要がある。
【0029】
チェックサム焼き付け器150は、イメージ・ローダ130がブート・イメージ120のロード時に、焼き付けられているチェックサムとブート・イメージ120のために計算されたチェックサムとの不一致にどのように応答するかについての命令をマイクロコントローラ110に焼き付けるようにさらに構成される。命令の完全なセットをマイクロコントローラ110に焼き付けることができる。命令の完全なセットを焼き付けるために、マイクロコントローラ110は、2進形式での命令のインストールを可能にするために利用可能な十分な数のPMIC125を有する必要がある。しかし、実施形態によっては、命令のうちの一部のみがマイクロコントローラ110に焼き付けられる。このような実施形態では、命令のうちのその一部の命令は、命令の完全セットが記憶されている場所を指すポインタを含むことができる。たとえば、不一致が発生した場合にイメージ・ローダ130がマイクロコントローラ110からそのアドレスにアクセスし、不一致に応答して実施する必要がある命令のセットを取得するためにそのアドレスに行くように、アドレスがマイクロコントローラ110に焼き付けられる。しかし、焼き付けられているPMIC125を介して命令のセットにイメージ・ローダ130を誘導する他の方法も使用可能である。
【0030】
図2は、実施形態により、システムがどのようにチェックサム値をマイクロコントローラ110にロードし、焼き付けるかを示すプロセスを示す流れ図である。プロセスは、マイクロプロセッサにロードするイメージのチェックサムを計算することにより開始する。これをステップ210に示す。プロセスは、パリティ・バイト、パリティ・ワード、モジュラ・サム、または位置依存など、チェックサムを計算するための任意の手法を採用することができる。また、実施形態によっては、チェックサムはハッシュ関数を使用して計算することができる。チェックサムの長さは、デバイスにおいて望まれるセキュリティのレベルと、存在するeFuseの数とに依存する。チェックサムのサイズは、1ビットと2048ビットの間の範囲とすることができる。チェックサムに使用可能なビット数は継続的に増大すると予測されるため、チェックサムのビット数は上記のビット数には限定されない。しかし、暗号ハッシュ関数が使用される場合は、チェックサムは任意のビット数を有することができる。望まれるブート・イメージ120は、チェックサムの値を求めるためにチェックサム計算器140に通される。
【0031】
チェックサムが計算された後、システムは続いてチェックサムをマイクロプロセッサに書き込む。これをステップ220に示す。チェックサムをマイクロプロセッサに書き込むために、チェックサム焼き付け器150がチェックサム値を受け取り、次にマイクロコントローラ110のどのPMIC125を切断する必要があるかを判定する。このようにして、チェックサム焼き付け器150は、どのPMIC125がそれに対応する変更された値を有する必要があるかを判定する。この場合も、システムがどのように判定するかに応じて、「0」または「1」が何であるかによってどの特定のPMIC125を切断する必要があるかが判定されることになる。
【0032】
チェックサムがハードウェアに書き込まれた後、システムは続いてチェックサムをPMIC125に焼き付ける。これをステップ230に示す。チェックサムをマイクロプロセッサに書き込むために、チェックサム焼き付け器150が、対応する値「1」または「0」が形成されるように、対応するPMIC125を切断する。回路を切断するプロセスは、たとえば、蒸発、溶融、燃焼、破裂、断裂、物理的変更、またはその他により特定の回路を通る電流の流れを遮断することによって行うことができる。PMIC125のそれぞれは、開回路の形成を生じさせる電流(たとえば過電流、過負荷)を受け取ることによって作動することができる。
【0033】
チェックサムの焼き付けに続いて、システムは次に、チェックサムがロードされるイメージのチェックサムと一致しない場合にハードウェアがとる必要がある応答の判定に進む。これをステップ240に示す。次に、チェックサム焼き付け器150がこの応答を、マイクロコントローラ110に搭載された追加のPMIC125を介してマイクロコントローラ110に焼き付ける。実施形態によっては、不一致に対する応答の完全なセットがマイクロコントローラ110に焼き付けられる。しかし、他の実施形態では、応答の一部のみがマイクロコントローラ110に焼き付けられる。たとえば、イメージ・ローダ130が、不一致に応答して命令の完全なセットを取得し、実行するために、提供されたアドレスをたどることになるように、命令の完全なセットを指すアドレスまたはその他のポインタをマイクロコントローラ110に焼き付けることができる。
【0034】
図3は、システムが適切にロードするように保証するために、通常動作時にシステムがどのように動作するかというプロセスを示す流れ図である。このプロセスは、ブート・イメージ120をsRAMにロードすることにより開始する。これをステップ310に示す。ブート・イメージ120は、イメージをメモリにロードするための任意の知られている方法を使用してsRAMにロードすることができる。実施形態によっては、ブート・イメージ120はsRAM以外の記憶場所にロードされる。
【0035】
ブート・イメージ120がメモリにロードされるときに、ブート・イメージ120のチェックサムが計算される。これをステップ320に示す。チェックサム計算器140が、マイクロコントローラ110に焼き付けられるチェックサム値を計算するために使用されたのと同じプロセスを使用して、ブート・イメージ120のチェックサム値を計算する。たとえば、チェックサム計算器140は、パリティ・バイト、パリティ・ワード、モジュラ・サムまたは位置依存など、チェックサムを計算するための任意の方法を採用することができる。また、実施形態によっては、チェックサムはハッシュ関数を使用して計算することができる。チェックサムのサイズは、1ビットと2048ビットの間の範囲とすることができる。しかし、暗号ハッシュ関数が使用される場合には、チェックサムは任意のビット数を有することができる。
【0036】
チェックサム値はイメージ・ローダ130に供給される。次に、イメージ・ローダ130は、チェックサム計算器140から受け取ったチェックサム値をマイクロコントローラ110に焼き付けられているチェックサム値と比較する。これをステップ330に示す。チェックサム値が一致する場合、イメージ・ローダ130はブート・イメージ120を引き続きロードし、ブート・イメージ120をロードするプロセスを続けさせる。これをステップ340に示す。
【0037】
チェックサム値が一致しない場合、イメージ・ローダ130は続いて、不一致に対する応答を判定する。これをステップ350に示す。イメージ・ローダ130は、続いて、不一致が生じた場合に従う必要がある命令のセットがあるか否かを判定するためにマイクロコントローラ110を調べる。これらの命令は、不一致にどのように応答するかについて完全な命令または部分的命令を含むことができる。完全な命令が与えられる場合、イメージ・ローダ130はそれらの命令に従う。しかし、部分的命令が与えられる場合、イメージ・ローダ130はそれらの部分的命令に従って命令の完全セットを取得することができる。上述のように、部分的命令はイメージ・ローダ130に、命令の完全なセットを取得するために特定の場所に行くように指示することができる。命令の完全セットを指すポインタのみを有することによって、システムのユーザはそれらの命令を、システム全体のセキュリティに影響を与えずに後日、変更することができる。命令は、イメージ・ローダ130に、たとえば、ブート・イメージ120のロードを停止するか、ブート・イメージ120をロードし続けながらユーザまたは管理者に不一致を通知するか、ユーザまたは管理者に不一致を通知してユーザまたは管理者からのさらなる指示を待つか、さらなる処置なしにイメージのロードを許可するか、あるいはユーザまたは管理者が望む任意のその他の処置を行うように指示することができる。
【0038】
次に図4を参照すると、本開示の実施形態により、(たとえばコンピュータの1つまたは複数のプロセッサ回路あるいはコンピュータ・プロセッサを使用して)本明細書に記載されている1つまたは複数の方法、ツールおよびモジュールと任意の関連機能との実装において使用可能な、例示のコンピュータ・システム401の概略ブロック図が示されている。実施形態によっては、コンピュータ・システム401の主要コンポーネントは、1つまたは複数のCPU402と、メモリ・サブシステム404と、端末インターフェース412と、ストレージ・インターフェース416と、I/O(入力/出力)デバイス・インターフェース414と、ネットワーク・インターフェース418とを含んでもよく、これらはすべて、メモリ・バス403、I/Oバス408、およびI/Oバス・インターフェース・ユニット410を介したコンポーネント間通信のために、直接または間接的に、通信可能に結合されてよい。
【0039】
コンピュータ・システム401は、本明細書でCPU402と総称する1つまたは複数の汎用プログラマブル中央演算処理装置(CPU)402-1、402-2、402-3および402-Nを含み得る。実施形態によっては、コンピュータ・システム401は、比較的大規模なシステムには典型的な複数のプロセッサを含んでもよい。しかし、他の実施形態では、コンピュータ・システム401は、これに代えて単一CPUシステムであってもよい。各CPU402は、メモリ・サブシステム404に記憶されている命令を実行することができ、1つまたは複数のレベルのオンボード・キャッシュを含んでもよい。
【0040】
システム・メモリ404は、ランダム・アクセス・メモリ(RAM)422またはキャッシュ・メモリ424などの揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム401は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含み得る。例示に過ぎないが、ストレージ・システム426は、「ハード・ドライブ」などの、取り外し不能不揮発性磁気媒体の読み書きのために備えることができる。図示していないが、取り外し可能不揮発性磁気ディスク(たとえば「フロッピィ・ディスク」)の読み書きのための磁気ディスク・ドライブ、または、CD-ROM、DVD-ROM、もしくはその他の光媒体などの取り外し可能不揮発性光ディスクの読み書きのための光ディスク・ドライブを備えることができる。さらに、メモリ404は、フラッシュ・メモリ、たとえばフラッシュ・メモリ・スティック・ドライブまたはフラッシュ・ドライブを含むことができる。メモリ・デバイスは、1つまたは複数のデータ媒体インターフェースによってメモリ・バス403に接続可能である。メモリ404は、様々な実施形態の機能を実施するように構成されているプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0041】
図4にはメモリ・バス403がCPU402とメモリ・サブシステム404とI/Oバス・インターフェース410の間の直接通信経路を提供する単一のバス構造体として示されているが、メモリ・バス403は、実施形態によっては、階層、スターもしくはウェブ構成のポイント・ツー・ポイント・リンク、多階層バス、並列および冗長経路、または任意のその他の適切な種類の構成などの様々な形態のうちのいずれかの形態で配置可能な複数の異なるバスまたは通信経路を含んでもよい。また、I/Oバス・インターフェース410およびI/Oバス408が単一のそれぞれのユニットとして示されているが、コンピュータ・システム401は、実施形態によっては、複数のI/Oバス・インターフェース・ユニット410または複数のI/Oバス408、あるいはその両方を含んでもよい。また、I/Oバス408を様々なI/Oデバイスに通じる様々な通信経路から分離する複数のI/Oインターフェース・ユニットが示されているが、他の実施形態では、I/Oデバイスの一部または全部が1つまたは複数のシステムI/Oバスに直接接続されてもよい。
【0042】
実施形態によっては、コンピュータ・システム401は、マルチユーザ・メインフレーム・コンピュータ・システム、シングルユーザ・システム、あるいは直接ユーザ・インターフェースをほとんどもしくはまったく有しないが他のコンピュータ・システム(クライアント)から要求を受け取るサーバ・コンピュータまたは同様のデバイスであってもよい。また、実施形態によっては、コンピュータ・システム401は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマートフォン、ネットワーク・スイッチもしくはルータ、または任意のその他の適切な種類の電子デバイスとして実装可能である。
【0043】
図4は例示のコンピュータ・システム401の代表的な主要コンポーネントを図示することを意図していることに留意されたい。しかし、実施形態によっては、個別のコンポーネントが図4に示されているよりも高いか低い複雑度を有してもよく、図4に示すコンポーネント以外のコンポーネントまたは追加のコンポーネントが存在してもよく、そのようなコンポーネントの数、種類および構成は異なり得る。
【0044】
それぞれがプログラム・モジュール430の少なくとも1つのセットを有する1つまたは複数のプログラム/ユーティリティ428が、メモリ404に記憶されてもよい。プログラム/ユーティリティ428は、ハイパーバイザ(仮想マシン・モニタとも呼ばれる)、1つまたは複数のオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データを含み得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュールおよびプログラム・データあるいはこれらの組合せのそれぞれは、ネットワーク環境の実装形態を含み得る。プログラム428またはプログラム・モジュール430あるいはその両方は一般に様々な実施形態の機能または方法を実行する。
【0045】
本発明は、統合の任意の可能な技術的詳細度のシステム、方法、またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0046】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(たとえば光ファイバ・ケーブルを通る光パルス)、あるいはワイヤを介して伝送される電気信号などの、一過性の信号自体であると解釈すべきではない。
【0047】
本明細書に記載されているコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体での記憶のために転送する。
【0048】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語、もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上でまたは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、あるいは接続は(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行ってもよい。実施形態によっては、本発明の態様を実行するために、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0049】
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることを理解されたい。
【0050】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックで指定されている機能/動作を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックで指定されている機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他の装置あるいはこれらの組合せに対して特定の方式で機能するように指示することができるものであってもよい。
【0051】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方のブロックで指定されている機能/動作を実装するように、コンピュータ実装プロセスを作り出すべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行されるものであってもよい。
【0052】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、指定されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、あるいは部分を表すことがある。一部の別の実装形態では、ブロックに記載されている機能は、図面に記載されている順序とは異なる順序で行われてもよい。たとえば、連続して示されている2つのブロックは、関与する機能に応じて、実際には実質的に並行して実行されてもよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、指定されている機能または動作を実行する専用ハードウェア・ベースのシステムによって実装可能であるか、あるいは専用ハードウェアとコンピュータ命令との組合せを実施することができることも理解されたい。
【0053】
本開示の様々な実施形態の説明は例示のために示したものであり、網羅的であること、または開示されている実施形態に限定することを意図したものではない。記載されている実施形態の範囲から逸脱することなく、多くの変更および変形が当業者には明らかであろう。本明細書で使用されている用語は、実施形態の原理、実際の適用、または市場に見られる技術に対する技術的改良を最もよく説明するために、あるいは当業者が本明細書で開示されている実施形態を理解することができるように選定された。
図1
図2
図3
図4