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

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

▶ マイクロン テクノロジー, インク.の特許一覧

特許7392147セキュアストレージデバイスでのレジリエントなソフトウェア更新
<>
  • 特許-セキュアストレージデバイスでのレジリエントなソフトウェア更新 図1
  • 特許-セキュアストレージデバイスでのレジリエントなソフトウェア更新 図2
  • 特許-セキュアストレージデバイスでのレジリエントなソフトウェア更新 図3
  • 特許-セキュアストレージデバイスでのレジリエントなソフトウェア更新 図4
  • 特許-セキュアストレージデバイスでのレジリエントなソフトウェア更新 図5
  • 特許-セキュアストレージデバイスでのレジリエントなソフトウェア更新 図6
  • 特許-セキュアストレージデバイスでのレジリエントなソフトウェア更新 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-27
(45)【発行日】2023-12-05
(54)【発明の名称】セキュアストレージデバイスでのレジリエントなソフトウェア更新
(51)【国際特許分類】
   G06F 21/57 20130101AFI20231128BHJP
   G06F 21/64 20130101ALI20231128BHJP
【FI】
G06F21/57
G06F21/64
【請求項の数】 20
(21)【出願番号】P 2022530151
(86)(22)【出願日】2020-11-19
(65)【公表番号】
(43)【公表日】2023-01-24
(86)【国際出願番号】 US2020061310
(87)【国際公開番号】W WO2021108221
(87)【国際公開日】2021-06-03
【審査請求日】2022-07-22
(31)【優先権主張番号】16/694,583
(32)【優先日】2019-11-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】デュバル オリヴィエ
【審査官】平井 誠
(56)【参考文献】
【文献】国際公開第2015/098811(WO,A1)
【文献】特開2009-134563(JP,A)
【文献】特表2014-503101(JP,A)
【文献】米国特許出願公開第2017/0010875(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-88
(57)【特許請求の範囲】
【請求項1】
セキュアストレージデバイスのストレージ空間を複数の部分に初期化することと、
更新プログラムを前記部分中の第一部分にコピーし、更新データを前記部分の第二部分にコピーすることと、
前記第一部分についての第一ゴールデン測定、及び前記第二部分についての第二ゴールデン測定を生成することと、
前記第一部分を測定することと、
前記第一部分の前記測定が前記第一部分の前記第一ゴールデン測定にマッチングしないと判定することに応答して、前記セキュアストレージデバイスへの更新を更新する、またはロールバックすることと、
前記第一部分の前記測定が前記第一部分の前記第一ゴールデン測定にマッチングすると判定すると、更新操作を検証することと、
を含む、方法。
【請求項2】
前記ストレージ空間を初期化することは、ソフトウェア更新を受信することに応答して実行される、請求項1に記載の方法。
【請求項3】
第一ステージブートローダ(FSBL)を指すように前記ストレージ空間のリカバリブロックを変更することをさらに含み、前記FSBLは前記第一部分に制御を遷移させるように構成される、請求項1に記載の方法。
【請求項4】
前記第一ゴールデン測定及び前記第二ゴールデン測定を生成した後、前記セキュアストレージデバイスをリブートすることをさらに含む、請求項3に記載の方法。
【請求項5】
前記セキュアストレージデバイスへの前記更新を更新する、またはロールバックすることは、
前記FSBLを実行し、前記セキュアストレージデバイスの制御を前記更新プログラムに遷移させることと、
1つ以上のステータスレジスタのコンテンツを読み出すことであって、前記ステータスレジスタは前記セキュアストレージデバイスの状態を格納する、前記読み出すことと、
更新が開始される必要があること、更新が現在実行中であることのいずれかを前記ステータスレジスタが示すと判定すると、前記セキュアストレージデバイスを更新することと、
を含む、請求項3に記載の方法。
【請求項6】
前記更新することは、前記第二部分からアクティブストレージ空間にデータを連続して書き込むことを含む、請求項5に記載の方法。
【請求項7】
前記データを連続して書き込むことは、各書き込み後、前記ステータスレジスタを同時に更新することをさらに含む、請求項6に記載の方法。
【請求項8】
前記更新操作を検証することは、
前記第二部分を測定することと、
前記第二部分の前記測定を前記第二ゴールデン測定と比較することと、
を含む、請求項1に記載の方法。
【請求項9】
前記第二部分の前記測定が前記第一ゴールデン測定または前記第二ゴールデン測定にマッチングせず、再試行の回数を超えていないと判定すると、更新シーケンスを再開することと、
前記第二部分の前記測定が前記第一ゴールデン測定または前記第二ゴールデン測定にマッチングせず、再試行の回数を超えたと判定すると、前記更新シーケンスをキャンセルすることと、
前記第二部分の前記測定が前記第二ゴールデン測定にマッチングせず、以前に格納された前記第二ゴールデン測定にマッチングしないと判定すると、前記セキュアストレージデバイスをリストアすることと、
前記第二部分の前記測定が前記第二ゴールデン測定に等しい場合、前記更新シーケンスを完了することと、
のうちの1つ以上をさらに含む、請求項8に記載の方法。
【請求項10】
前記更新シーケンスを完了することは、前記セキュアストレージデバイスのアクティブストレージ空間を測定し、前記測定が期待値にマッチングすることを確認することを含む、請求項9に記載の方法。
【請求項11】
コンピュータプロセッサによって実行されることが可能なコンピュータプログラム命令を有形に格納するための非一時的なコンピュータ可読記憶媒体であって、
前記コンピュータプログラム命令は、
セキュアストレージデバイスのストレージ空間を複数の部分に初期化することと、
更新プログラムを前記部分中の第一部分にコピーし、更新データを前記部分の第二部分にコピーすることと、
前記第一部分についての第一ゴールデン測定、及び前記第二部分についての第二ゴールデン測定を生成することと、
前記第一部分を測定することと、
前記第一部分の前記測定が前記第一部分の前記第一ゴールデン測定にマッチングしないと判定することに応答して、前記セキュアストレージデバイスへの更新を更新する、またはロールバックすることと、
前記第一部分の前記測定が前記第一部分の前記第一ゴールデン測定にマッチングすると判定すると、更新操作を検証することと、
のステップを定義する、前記非一時的なコンピュータ可読記憶媒体。
【請求項12】
前記ストレージ空間を初期化することは、ソフトウェア更新を受信することに応答して実行される、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項13】
第一ステージブートローダ(FSBL)を指すように前記ストレージ空間のリカバリブロックを変更することをさらに含み、前記FSBLは前記第一部分に制御を遷移させるように構成される、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項14】
前記第一ゴールデン測定及び前記第二ゴールデン測定を生成した後、前記セキュアストレージデバイスをリブートすることをさらに含む、請求項13に記載の非一時的なコンピュータ可読記憶媒体。
【請求項15】
前記セキュアストレージデバイスへの前記更新を更新する、またはロールバックすることは、
前記FSBLを実行し、前記セキュアストレージデバイスの制御を前記更新プログラムに遷移させることと、
1つ以上のステータスレジスタのコンテンツを読み出すことであって、前記ステータスレジスタは前記セキュアストレージデバイスの状態を格納する、前記読み出すことと、
更新が開始される必要があること、更新が現在実行中であることのいずれかを前記ステータスレジスタが示すと判定すると、前記セキュアストレージデバイスを更新することと、
を含む、請求項13に記載の非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記更新することは、前記第二部分からアクティブストレージ空間にデータを連続して書き込むことを含む、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記データを連続して書き込むことは、各書き込み後、前記ステータスレジスタを同時に更新することをさらに含む、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記更新操作を検証することは、
前記第二部分を測定することと、
前記第二部分の前記測定を前記第二ゴールデン測定と比較することと、
を含む、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記第二部分の前記測定が前記第一ゴールデン測定または前記第二ゴールデン測定にマッチングせず、再試行の回数を超えていないと判定すると、更新シーケンスを再開することと、
前記第二部分の前記測定が前記第一ゴールデン測定または前記第二ゴールデン測定にマッチングせず、再試行の回数を超えたと判定すると、前記更新シーケンスをキャンセルすることと、
前記第二部分の前記測定が前記第二ゴールデン測定にマッチングせず、以前に格納された前記第二ゴールデン測定にマッチングしないと判定すると、前記セキュアストレージデバイスをリストアすることと、
前記第二部分の前記測定が前記第二ゴールデン測定に等しい場合、前記更新シーケンスを完了することと、
のうちの1つ以上をさらに含む、請求項18に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
プロセッサ、及び
前記プロセッサによって実行されるプログラムロジックを有形に格納するための記憶媒体、
を含むデバイスであって、
格納された前記プログラムロジックは、
セキュアストレージデバイスのストレージ空間を複数の部分に初期化することと、
更新プログラムを前記部分中の第一部分にコピーし、更新データを前記部分の第二部分にコピーすることと、
前記第一部分についての第一ゴールデン測定、及び前記第二部分についての第二ゴールデン測定を生成することと、
前記第一部分を測定することと、
前記第一部分の前記測定が前記第一部分の前記第一ゴールデン測定にマッチングしないと判定することに応答して、前記セキュアストレージデバイスへの更新を更新する、またはロールバックすることと、
前記第一部分の前記測定が前記第一部分の前記第一ゴールデン測定にマッチングすると判定すると、更新操作を検証することと、
の操作を前記プロセッサに実行させる命令を含む、前記デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願]
本出願は、2019年11月25日に出願され、「RESILIENT SOFTWARE UPDATES IN SECURE STORAGE DEVICES」と題された米国特許出願第16/694,583号の優先権を主張し、その開示全体は、参照により本明細書に援用されている。
【0002】
[著作権表示]
本特許文書の本開示の一部は、著作権保護の対象となる資料を含む。著作権者は、特許商標庁の特許出願書類または記録に表現される場合、特許文書及び特許開示に関しては何人による完全な複写にも異存はないが、それ以外すべての著作権を何であれ留保する。
【0003】
開示された実施形態は、セキュアストレージデバイスにおけるソフトウェア更新を対象とする。具体的には、開示された実施形態は、それらのようなセキュアストレージデバイスのために潜在的に可変環境において信頼性のあるレジリエントな更新を提供することを対象とする。
【背景技術】
【0004】
多くの環境では、ストレージデバイスのソフトウェアの更新ができないことを回避するか、適切に処理するかのいずれかを必要とする状況下で、セキュアストレージデバイスが頻繁に更新される。例えば、自律走行車両のオペレーティングシステムへのソフトウェア更新は、車両が動いている間にインストールされてもよい。ソフトウェアの更新プロセスができないと、車両のハードウェアシステムが応答しなくなる可能性があることにより、衝突が発生する可能性がある。
【0005】
現在、セキュアストレージデバイスの多くの更新プロシージャでは効率的に、ソフトウェアの更新を実行する前に、ストレージデバイスを特別なモードにする必要がある、またはセキュアストレージデバイスを特定の環境に置く必要がある。この要件により、ソフトウェア更新プロセスでいかなる障害が発生しても、デバイスのユーザまたはデバイスに依存するコンポーネントに悪影響が及ばないことが確保される。
【0006】
この現在のプロシージャは、ソフトウェアの更新の頻度を不必要に制限し、それらのようなストレージデバイスを使用するシステムのユーザエクスペリエンスに悪影響を及ぼす。したがって、信頼性のあるレジリエントな方法でいつでもソフトウェア更新をサポートする、改良されたセキュアストレージデバイスに対する当該技術での必要性が存在する。開示された実施形態は、そのような技術的解決策を提供する。
【図面の簡単な説明】
【0007】
図1】本開示のいくつかの実施形態による、ソフトウェア更新を管理するコンピュータシステムを示すブロック図である。
図2】本開示のいくつかの実施形態による、ソフトウェア更新のためにセキュアストレージデバイスを初期化するための方法を示す流れ図である。
図3】本開示のいくつかの実施形態による、ブート時間シーケンスを実行するための方法を示す流れ図である。
図4】本開示のいくつかの実施形態による、ランタイム管理更新を実行するための方法を示す流れ図である。
図5】本開示のいくつかの実施形態による、ソフトウェア更新を完了するための方法を示す流れ図である。
図6】本開示のいくつかの実施形態による、コンピューティングデバイスのブロック図である。
図7】本開示のいくつかの実施形態による、ストレージデバイスのレイアウトのブロック図である。
【発明を実施するための形態】
【0008】
開示された実施形態は、ソフトウェアイメージの実行を危殆化することなく、セキュアストレージデバイスに格納されるソフトウェアイメージの任意の部分への変更を可能にするための技法を説明する。開示された実施形態は、ソフトウェア更新が電源サイクル全体にわたってよりレジリエントであることを可能にすることによって上記の問題を解決することで、デバイスソフトウェアの破損を防ぐ。そうすることで、開示された実施形態は、リスクをほとんどまたはまったく伴わずにコンピュータシステムの重要な部分でソフトウェア更新を実行することを可能にすることにより、本来であれば厳しく制約された条件で実装される必要があるソフトウェア更新のコスト及び計算複雑性が大幅に削減される。
【0009】
これらの技法には、第一時点で開始し、イベントによって中断される可能性があり、後で(リブート後でも)ソフトウェア更新をリバートすることか、再開することかのいずれかができるソフトウェア更新シーケンスが含まれる。別の態様では、開示された実施形態は、特権ユーザのみが前述のソフトウェア更新シーケンスの開始及びコンフィグレーションを制御することを可能にしてもよい。さらに、別の態様では、開示された実施形態は、A/B(完全イメージ)ソフトウェア更新、及び差分(部分)ソフトウェア更新を含む複数のタイプのソフトウェア更新スキームをサポートする。
【0010】
本明細書で説明される実施形態では、ソフトウェア更新は、ブートプログラムを含んでもよい。これらの実施形態では、更新プロセスのいずれかの誤動作により、デバイスが動作不能になり(すなわち、デバイスが「ブリック」になり)、デバイスがブート不能になる可能性がある。誤動作の例は、電源喪失、通信リンクの中断、及び悪意のある攻撃者の介入を含む。開示された実施形態は、セキュアストレージデバイスの特徴を活用することによって、これらの誤動作に関連するリスクを低減させる。具体的には、開示された実施形態は、特権ユーザの概念を利用して、承認されていないユーザがソフトウェア更新プロシージャを開始するのを防ぐ。さらに、開示された実施形態は、セキュアストレージデバイスがブートシーケンス全体にわたってシステム状態を維持することを可能にする状態追跡機能を提供することにより、セキュアストレージデバイスは、システムをその以前の状態にリバートする、または更新シーケンスを再開することができる。
【0011】
上記のように、開示された実施形態は、完全更新及び部分更新をサポートする。完全イメージ更新スキームが実装される場合、新しいイメージをインストールする準備ができるまで、セキュアデバイス上の以前のソフトウェアイメージを保存することができ、その後、この新しいイメージに、ブートポインタをアクティブイメージとして割り当てることができる。ただし、既存のシステムでは、ポインタ変更操作が失敗してデバイスをブリックにする可能性があるリスクが依然としてある。開示された実施形態は、本明細書でより詳細に説明されるように、この問題を解決する。
【0012】
新しいイメージが大きく、新しいイメージに導入される変更が比較的小さい場合、完全イメージの更新は、ストレージデバイス上で大量の通信ペイロード、及び大きなサイズのバッファ空間を不必要に消費する。差分更新は、そのようなシナリオでの通信サイズ及びバッファ使用率を減少させる。ただし、そのような更新は「段階的な」性質であるため、更新プロシージャ中にさらに複雑性が増す。この複雑性は、開示された実施形態によっても対処されるさらなる障害点を追加する。
【0013】
図1は、本開示のいくつかの実施形態による、ソフトウェア更新を管理するコンピュータシステムを示すブロック図である。
【0014】
図示された実施形態では、システム(100)は、ネットワーク(110)を介して通信可能に接続される、リモートコンピューティングデバイス(112)及びターゲットコンピューティングデバイス(102)を含む。単独で示されているが、システム(100)は、複数のデバイス(112、102)を含んでもよく、複数のネットワークを介して通信してもよい。図示された実施形態では、デバイス(102、112)は、図7に示されるようなコンピューティングデバイスを含む。例えば、リモートコンピューティングデバイス(112)は、1つ以上のサーバコンピュータを含んでもよく、ターゲットコンピューティングデバイス(102)は、コンシューマコンピューティングデバイスを含んでもよい。いくつかの実施形態では、ターゲットコンピューティングデバイス(102)は、車載用電子制御ユニット(ECU)または他のデバイスを含んでもよい。他の実施形態では、ターゲットコンピューティングデバイス(102)は、ラップトップ、デスクトップ、モバイル、ウェアラブル、または他のコンシューマコンピューティングデバイスを含んでもよい。他の実施形態では、ターゲットコンピューティングデバイス(102)自体は、サーバまたは他のネットワークデバイスを含んでもよい。本開示は、デバイス(102、112)のタイプ及び使用法に制限を課さない。
【0015】
図示された実施形態では、リモートコンピューティングデバイス(112)は、ソフトウェアイメージストレージデバイス(114)及び更新マネージャ(116)を含む。一実施形態では、ソフトウェアイメージストレージデバイス(114)は、リモートコンピューティングデバイス(112)の外部にある。いくつかの実施形態では、ソフトウェアイメージストレージデバイス(114)は、ソフトウェアイメージを格納するファイルシステムを含む。他の実施形態では、ソフトウェアイメージストレージデバイス(114)は、ソフトウェアイメージを格納するデータベースを含む。これらの実施形態では、データベースは、ファイルを格納するためにリレーショナル、NoSQL、キー値、または任意の他のタイプのデータベースを含むことができる。図示された実施形態では、ソフトウェアイメージは、ソフトウェアの一部を定義するファイルを指す。いくつかの実施形態では、ソフトウェアイメージは、ソフトウェアの以前のバージョンを置換するように設計される、ソフトウェアの置換部分のソースコードイメージを指す。他の実施形態では、ソフトウェアイメージは部分更新を指す。部分更新は、ソフトウェアの一部への更新を含み、この更新は、ソフトウェアの一部の全体よりも少ないものを含む。いくつかの実施形態では、ソフトウェアイメージストレージデバイス(114)は、完全ソフトウェアイメージと部分ソフトウェアイメージとの両方を格納する。ソフトウェアイメージは、人間可読ソースコードまたは機械可読バイナリ(コンパイル済み)コードの形式を取ることがある。本開示は、ソフトウェアイメージの特定のデータフォーマットに制限を課さない。ソフトウェアイメージは、通常、リモートコンピューティングデバイス(112)のオペレータによって管理される。ソフトウェアへの更新がソフトウェアイメージの形式で作成されるため、オペレータは、これらのソフトウェアイメージをソフトウェアイメージストレージデバイス(114)にアップロードする。他の技法を使用して、バージョン管理システム(例えば、git)、継続的インテグレーションシステム、または他のシステムなどのソフトウェアイメージをソフトウェアイメージストレージデバイス(114)に挿入することができる。
【0016】
リモートコンピューティングデバイス(112)は、更新マネージャ(116)をさらに含む。いくつかの実施形態では、更新マネージャ(116)及びソフトウェアイメージストレージデバイス(114)は、単一のデバイス上に実装されることができる(例えば、それぞれデータベース及びアプリケーションサーバとして)。他の実施形態では、更新マネージャ(116)は、スタンドアロンコンピューティングデバイス(例えば、サーバ)を含む。図示されるように、更新マネージャ(116)は、ソフトウェアイメージストレージデバイス(114)にアクセスする。図示された実施形態では、更新マネージャ(116)は、ソフトウェアイメージストレージデバイス(114)からソフトウェアイメージを取得する。いくつかの実施形態では、更新マネージャ(116)は、ターゲットコンピューティングデバイス(102)からの更新の要求に応答して、ソフトウェアイメージストレージデバイス(114)からソフトウェアイメージを取得する。あるいは、または前述と併せて、更新マネージャ(116)は、ソフトウェアイメージストレージデバイス(114)に格納される新しいソフトウェアイメージを定期的にチェックし、新しいソフトウェアイメージの検出に応答してソフトウェアイメージを取得することができる。あるいは、または前述と併せて、更新マネージャ(116)は、ソフトウェアイメージストレージデバイス(114)にサブスクライブすることができ、ソフトウェアイメージストレージデバイス(114)は、ソフトウェアイメージストレージデバイス(114)に新たに格納されると、ソフトウェアイメージを更新マネージャ(116)にプッシュすることができる。更新マネージャがソフトウェアイメージを取得する特定のメカニズムは、制限することを意図するものではない。
【0017】
図示された実施形態では、更新マネージャ(116)は、ある特定のイメージに関してさまざまな操作を実行する。例えば、更新マネージャ(116)は、ソフトウェアイメージの完全性を確保するためにソフトウェアイメージに対してチェックサム検証を実行するように設定されることができる。他の実施形態では、更新マネージャ(116)は、ソフトウェアイメージの完全性を想定し、他のデバイスによって使用されるソフトウェアイメージにチェックサム(例えば、MD5)を生成する。ただし、主に、更新マネージャ(116)は、リモートコンピューティングデバイス(112)からターゲットコンピューティングデバイス(102)へのソフトウェアイメージの転送を調整することに応答可能である。この役割は以前に説明されており、本明細書では繰り返されない。
【0018】
リモートコンピューティングデバイス(112)は、1つ以上のネットワーク(110)を介してソフトウェアイメージをターゲットコンピューティングデバイス(102)に転送する。図示された実施形態では、ネットワーク(110)は、インターネット(複数のネットワークのうちの1つのネットワーク)を含む。この実施形態では、ネットワーク(110)は、ワイドエリアネットワーク(WAN)を含むが、いずれかの具体的に説明されたネットワークの代わりに、他のネットワークタイプを利用することができる。
【0019】
ターゲットコンピューティングデバイス(102)は、ネットワーク(110)を介してソフトウェアイメージを受信する。具体的には、ターゲットコンピューティングデバイス(102)は、対応する更新マネージャ(108)を介してソフトウェアイメージを受信する。更新マネージャ(108)は、受信したソフトウェアイメージを処理し、ソフトウェアイメージ(106)をセキュアストレージデバイス(104)にロードするように設定される。図示された実施形態では、更新マネージャ(108)は、ソフトウェアに、または専用ハードウェアを介して実装されることができる。更新マネージャ(108)の特定の操作は、図2から図6の説明においてより詳細に説明され、その説明は、参照によりその全体が本明細書に援用されている。
【0020】
図示された実施形態では、セキュアストレージデバイス(104)は、ストレージデバイス(例えば、フラッシュベース、磁気ディスクベースなど)、及びセキュアプラットフォームモジュール(SPM)を含む。いくつかの実施形態では、このセキュアプラットフォームモジュールは、ISO/IEC11889規格に準拠するモジュールを含むことができ、トラステッドプラットフォームモジュールを含んでもよい。使用される特定の規格は限定的ではない。一般に、セキュアストレージデバイス(104)は、ソフトウェアイメージを格納するだけでなく、基礎となる記憶媒体の完全性を検証するように設定される。SPMは、乱数生成、暗号鍵生成機能、暗号化/復号機能、アテステーション機能、及びその他のセキュア機能などの機能を含んでもよい。いくつかの実施形態では、SPMは、代わりに、更新マネージャ(108)の一部として実装されることができる。
【0021】
図示された実施形態では、セキュアストレージデバイス(104)は、複数の部分にセグメント化されることができる。これらの部分は、承認されていないユーザによる書き込みを有効または無効にするさまざまなプロパティで設定されてもよい。セキュアストレージデバイス(104)は、通常、現在のソフトウェアイメージを格納する「アクティブソフトウェア空間」と称される部分を含む。アクティブストレージ空間に加えて、セキュアストレージデバイス(104)は、隠されたストレージ部分を含むことができる。
【0022】
ここで、図2から図5を参照して、ソフトウェアイメージをセキュアに更新するためにシステムが用いるプロセスを説明する。
【0023】
図2は、本開示のいくつかの実施形態による、ソフトウェア更新のためにセキュアストレージデバイスを初期化するための方法を示す流れ図である。図2に示される方法を実行する前に、デバイス実行方法は、第一ソフトウェアイメージ(イメージAと称される)を含み、いかなるソフトウェア更新ステップの実行も開始していない。図示された方法は、デバイスを更新するためのイメージを準備してから、デバイスをリブートして更新プロシージャを開始する、または再開する。図示された実施形態では、方法(200)は、デバイスの特権ユーザ(リモート特権ユーザを含む)によって実行される。
【0024】
ブロック202では、方法(200)は、書き込み保護モードで動作するようにセキュアストレージデバイスの第一部分を設定する。この第一部分は、「ソフトウェア更新ソースコードイメージ空間」とも称される。図示された実施形態では、方法(200)は、ストレージ空間の特権ユーザによって操作される。図1を参照すると、この特権ユーザは、更新マネージャ(108)を含むことができる。確実にするために、特権のある「ユーザ」は、ターゲットコンピューティングシステム(例えば、102)上のユーザアカウントを指し、人間のユーザを指さない。したがって、特権ユーザは、特権ユーザアカウントの下で実行するソフトウェアアプリケーションを含んでもよい。図示された実施形態では、第一部分は書き込み保護に設定され、特権ユーザのみがその第一部分に書き込むことができ、他のすべてのユーザアカウントは第一部分への書き込みがブロックされる。
【0025】
ブロック204では、方法(200)は、ソフトウェアイメージをブロック202で設定された第一部分にダウンロードする。前述のように、方法(200)は、ネットワークを介してリモートリポジトリからソフトウェアイメージを取得してもよい。ソフトウェアイメージを受信することに応答して、方法(200)は、ブロック202で設定される、書き込み保護された第一部分にイメージをコピーする、またはその他の方法で転送する。図示された実施形態では、第一部分は、ソフトウェア更新を実行するプログラムについてのソースコードを格納する。一般に、これは、更新プロシージャを管理するために第一ステージブートローダ(FSBL)及びシステムコードを含んでもよい。
【0026】
いくつかの実施形態では、ブロック204では、方法(200)は、第一部分の既存のコンテンツをメモリに同時に保存する。すなわち、ブロック204を実行する前に、方法(200)は、新しいソフトウェアイメージを第一部分に書き込む前に、第一部分の現在のコンテンツをメモリにコピーする。いくつかの実施形態では、第一部分の現在のコンテンツは、デバイスにインストールされるソフトウェアの現在のバージョンをインストールするコードを含む。
【0027】
ブロック206では、方法(200)は、書き込み保護モードで動作するようにセキュアストレージデバイスの第二部分を設定する。この第一部分は、「ソフトウェア更新バッファ空間」とも称される。ブロック202の説明で説明されるように、書き込み保護された部分としてのセキュアストレージデバイスの第二部分の作成を実行することができる。
【0028】
ブロック208では、方法(200)は、第二部分中のデータをメモリに転送し、更新されたソフトウェアイメージを第二部分にダウンロードする。図示された実施形態では、第二部分からメモリへのデータの転送は、ブロック204の説明で前述されたものと同様に実行される。図示された実施形態では、第二部分に格納されたデータは、デバイス上でソフトウェアを更新するために使用される実際の更新データを含む。いくつかの実施形態では、更新イメージ全体がダウンロードされ、他の実施形態では、部分更新データのみがダウンロードされる。
【0029】
ブロック210では、方法(200)は、ブロック202で作成された第一部分を指すように、セキュアストレージデバイスのリカバリブロックを変更する。方法(200)は、リカバリブロックもメモリにキャッシュする。ブロック210を実行することにより、この方法は、更新プロシージャが完了するまでリブートごとに更新されることを確保する。以前のリカバリブロックをキャッシュすることにより、更新プロシージャの完了時に通常の操作をリストアすることができる。
【0030】
図示された実施形態では、リカバリブロックは、FSBLが実行される前のブート時に実行されるセキュアストレージデバイスの第一ブロックを指す。一般に、リカバリブロックは、メモリ検出コードだけでなく、低レベルディスクの妥当性確認及びリカバリコードを含む。ブロック210では、方法(200)は、第一部分に書き込まれるソフトウェアイメージをロードするFSBLを代替に指すように、このリカバリブロックを上書きする。一般に、FSBLは、メモリセグメントをセットアップし、ディスクをリセットし、第二ステージブートローダ(すなわち、第一部分)を見つけ、第二ステージブートローダ(すなわち、第一部分)をメモリに読み出し、第二ステージブートローダ(すなわち、第一部分)に制御を遷移させるように設定される適切に小さいプログラムである。図示された実施形態では、FSBLは、第一部分にロードされる更新プロシージャをロードして開始することに応答可能なFSBLを含む。
【0031】
ブロック212では、方法(200)は、以前のブロックにダウンロードされる、更新されたソフトウェアイメージについての新しいゴールデン測定を計算する。本明細書で使用される場合、ゴールデン測定は、ソフトウェアの一部をセキュアに識別するために使用されることができる任意の値を指す。一般に、ゴールデン測定は、1つ以上の暗号関数を使用して生成される。例えば、ソフトウェアの一部のハッシュをゴールデン測定として使用することができる。他の実施形態では、ゴールデン測定は、更新されたソフトウェアイメージのハッシュツリーを含むことができる。このゴールデン測定は、他のソフトウェアが所期のフォーマット及び期待値にマッチングすることを検証するために使用されることができるという点で、信頼の基点を形成する。
【0032】
図示された実施形態では、ゴールデン測定は、2つの部分の測定を含む。第一測定は、第一部分にロードされる第一ステージブートローダのハッシュを含む。第二ゴールデン測定は、第二部分に格納される更新イメージ全体のハッシュを含む。いくつかの実施形態では、これらのハッシュは、デバイスに格納される秘密鍵も含むことができ、基礎となるデータのハッシュベースのメッセージ認証コード(HMAC)を含んでもよい。
【0033】
図示された実施形態では、方法(200)は、第一部分及び第二部分について計算された既存のゴールデン測定をさらにキャッシュする。これにより、システムの現在の状態についてのゴールデン測定が効率的にキャッシュされる。
【0034】
ブロック214では、方法(200)は、セキュアストレージデバイスの現在の更新状態情報をキャッシュし、新しい更新状態情報を初期状態に初期化する。本明細書で使用される場合、「状態」は、セキュアストレージデバイスの動作状態を指す。これらの状態は、所与のデバイスの現在の動作ステータスを定義する。本明細書で使用される場合、初期状態は、セキュアストレージデバイスが初期化を必要とする状態にあることを示すように設定される1つ以上の値を指す。一実施形態では、初期化の一部は、ゴールデン測定、及び図示された実施形態ではブロック212で計算されたゴールデン測定を使用して新しい信頼の基点を確立することを含む。
【0035】
ブロック216では、方法(200)は、セキュアストレージデバイスの第三部分が書き込み可能モードになるように設定する。この第三部分は、「アクティブストレージ空間」とも称される。上記のように、第三部分は、更新される現在動作中のソフトウェアイメージ(イメージAと称される)を含む。第三部分を書き込み可能として設定することにより、方法(200)は、任意のユーザ(またはユーザのサブセット)がアクティブストレージ空間にデータを書き込むことを可能にする。
【0036】
したがって、ブロック216の実行後、セキュアストレージデバイスは、記憶媒体の隠された部分に格納される書き込み保護された第一部分及び第二部分、ならびに使用中のアクティブなソフトウェアイメージを格納する書き込み可能な第三部分という3つの別個の部分で構成される。方法(200)は、更新されたソフトウェアイメージを含む第一部分からブートオフするように、セキュアストレージデバイスのブートプリファレンスをさらに変更する。新しいソフトウェアイメージのコピーは、第二部分内に追加で格納される。
【0037】
ブロック218では、セキュアストレージデバイス部分を再設定してブートプロセスを変更した後、方法(200)はデバイスをリブートする。図示された実施形態では、リブートは、ソフトウェアが開始したリブートを含む。いくつかの実施形態では、方法(200)は、セキュアストレージデバイスを強制的にリブートさせてもよい。リブート後、方法(200)は終了し、図3に記載される方法が続くことができる。
【0038】
いくつかの実施形態では、ブロック218でのリブートは、追加のセキュリティを確保する。他の実施形態では、方法(200)はリブートを控えることができる。
【0039】
図3は、本開示のいくつかの実施形態による、ブート時間シーケンスを実行するための方法を示す流れ図である。方法(300)は、デバイスの非特権ユーザによって実行されてもよい。図示された実施形態では、方法(300)は、ブート時に実行され、コンテキスト中にオフラインで実行されることにより、ハッキングがはるかに難しいため、コンテキストがセキュアであると見なされる。対照的に、方法(400、500)はランタイムに実行され、悪意のある攻撃者による干渉を受けやすい可能性がある。したがって、方法(400、500)は、既知のキーへのアクセスを有する特権ユーザによって実行される。
【0040】
ブロック302では、方法(300)は、第一部分のコンテンツを測定して、第一部分についての第一測定(ブロック202の説明では、ソフトウェア更新ソースコードイメージ空間とも称される)を計算する。上記のように、これは、ハッシュ関数または同様の関数などの暗号関数を使用して実行されることができる。次に、方法(300)は、この第一測定を、図2のブロック212でのシステムによって生成された第一部分についてのゴールデン測定と比較する。本質的に、方法(300)は、第一ステージブートローダが有効であるかどうかを判定する。
【0041】
ブロック304では、方法(300)は、ブロック302で生成された第一測定が第一部分のゴールデン測定(ブロック212で生成された)にマッチングするかどうかを判定する。
【0042】
ブロック306では、第一測定が第一ゴールデン測定にマッチングする(すなわち、ブートローダが有効である)と方法(300)が判定する場合、方法は、第二ゴールデン測定を計算し、ブートシーケンスを完了する。
【0043】
ブロック308では、方法(300)は、ブートシーケンスを完了した後、ランタイム更新検証プロシージャを実行する。ブロック308の詳細は、図4に提供され、本明細書に援用されており、繰り返されない。
【0044】
一般に、第一リブート中に、第一ゴールデン測定はFSBLとマッチングせず、方法はブロック310に進む。
【0045】
ブロック310では、方法(300)は、リカバリブロックをブートコード位置にコピーする。上記のように、リカバリブロックは、第一部分に格納されるブートコード位置へのポインタを含む。
【0046】
ブロック312では、方法(300)はFSBLを実行する。図示された実施形態では、FSBLは、システムを初期化し、第一部分内に格納されたソフトウェア更新イメージへのポイントを返す。
【0047】
ブロック314では、方法(300)は、第一部分内に格納されたソフトウェア更新イメージをロードして実行する。一実施形態では、FSBLは、第一部分にロードされた更新ソフトウェアに制御を遷移させてから、更新ソフトウェアが本明細書に記載の処理の制御を行う。
【0048】
ブロック316では、方法(300)は、更新ソフトウェアを実行すると、デバイスの状態をロードする。一実施形態では、デバイスの状態は、デバイスの1つ以上の不揮発性レジスタに格納されたデータを指す。本開示は、ある特定のタイプのデータに限定されない。一実施形態では、状態は、電源サイクルごとに自動的にインクリメントされる更新カウンタを含んでもよい。あるいは、または前述と併せて、状態情報は、本明細書で説明されるさまざまな状態順列を格納するレジスタデータを含むことができる。いくつかの実施形態では、状態を格納するレジスタは、プラットフォームコンフィグレーションレジスタを含んでもよい。
【0049】
ブロック318では、方法(300)は、デバイスの状態を分析する。説明されるように、ブロック316でロードされた状態レジスタは、リブートの前に実行されたいずれかの更新またはロールバック操作の現在の状態を示す。
【0050】
最後の電源サイクル中にリバートまたは更新操作が完了したと方法(300)が判定する場合、方法は、ブロック306でブートシーケンスを続行し、最終的には、ブロック308でランタイム更新検証プロシージャを実行する。このブロックでは、方法(300)は、デバイスを正常に更新(またはロールバック)しており、これらの操作を正常に再開することができる。ブロック318で使用される場合、更新操作は、ブロック322、326、及び332で説明される更新操作の書き込み部分を指す。
【0051】
ブロック320では、方法(300)は、ロールバック操作が進行中であることを状態情報が示すと判定すると、状態情報を妥当性確認する。図示された実施形態では、ロールバック操作は、システムがイメージAに戻る必要があることを示す。いくつかの実施形態では、方法(300)は、更新の現在のステータスを測定し、その測定をレジスタファイル内に格納された値と比較する。マッチを検出すると、方法(300)が続行されることができる。方法(300)がミスマッチを検出する場合、方法(300)は、終了する、またはデバイスをプリエンプティブにリストアする場合がある。
【0052】
ブロック322では、状態情報を妥当性確認した後、方法(300)は、前のソフトウェアイメージへのロールバックを開始する。図示された実施形態では、このブロックを、方法(300)は、第二部分内に格納されたデータを使用してアクティブストレージ空間に対して連続した書き込み操作を実行することによって行う。同時に、方法(300)はまた、連続した書き込みごとの後、ソフトウェアイメージの所期の測定で状態情報を更新することで、電源喪失または他の中断のイベントでもロールバックが進行することができることを確保する。
【0053】
ブロック324では、方法(300)はデバイスをリブートし、プロセスは方法(300)を再開することができる。このシナリオでは、方法(300)が更新を完全にロールバックすると、ブロック318での判定はブロック306に分岐する。あるいは、方法(300)がロールバックの途中で中断される場合、方法(300)は最終的にブロック320に戻り、ロールバックを続行する。
【0054】
あるいは、方法(300)は、更新が開始される必要があることを状態情報が示すと判定することができる。このシナリオでは、ブロック326において、方法(300)は、更新イメージ(イメージB)への更新を開始し、状態情報をインクリメントで更新する。ブロック322に記載された操作と同様に、方法(300)は、第二部分に格納された更新イメージにアクセスし、第三部分にデータを連続して書き込んでソフトウェアを更新する。同時に、方法(300)はまた、連続した書き込みごとの後、更新されたソフトウェアイメージの所期の測定で状態情報を更新することで、電源喪失または他の中断のイベントでも更新が進行することができることを確保する。
【0055】
ブロック328では、方法(300)は、すべての書き込みが実行された後にデバイスをリブートし、方法(300)が再開する。ブロック324に関して記載されたものと同様である。更新が完了すると、方法(300)は最終的にブロック306に戻る。ただし、更新が中断される場合、方法(300)は、最終的にブロック330に分岐して、更新を再開する。
【0056】
ブロック330では、方法(300)は、更新操作が進行中であることを状態情報が示すと判定すると、状態情報を妥当性確認する。いくつかの実施形態では、方法(300)は、更新の現在のステータスを測定し、その測定をレジスタファイル内に格納された値と比較する。マッチを検出すると、方法(300)が続行されることができる。方法(300)がミスマッチを検出する場合、方法(300)は終了する、またはデバイスをプリエンプティブにリストアする場合がある。
【0057】
ブロック332では、方法(300)は、更新イメージ(イメージB)への更新を継続し、状態情報をインクリメントで更新する。ブロック322及び326に記載された操作と同様に、方法(300)は、第二部分に格納された更新イメージにアクセスし、第三部分にデータを連続して書き込んでソフトウェアを更新する。同時に、方法(300)はまた、連続した書き込みごとの後、更新されたソフトウェアイメージの所期の測定で状態情報を更新することで、電源喪失または他の中断のイベントでも更新が進行することができることを確保する。
【0058】
ブロック334では、方法(300)は、すべての書き込みが実行された後にデバイスをリブートし、方法(300)が再開する。このプロセスは、ブロック328で実行されたリブートで説明されたものと同様に実行され、電源喪失のために再開された更新が停止されないことを確保する。
【0059】
図4は、本開示のいくつかの実施形態による、ランタイム管理更新を実行するための方法を示す流れ図である。図示された実施形態では、この方法(400)は、デバイスの特権ユーザによって実行されてもよい。
【0060】
ブロック402では、デバイスのブートが完了し、方法は特権ユーザに接続し、更新管理操作を要求する。いくつかの実施形態では、特権ユーザは、リモートユーザを含む。
【0061】
ブロック404では、特権ユーザは、状態情報及び第二ゴールデン測定をデバイスレジスタからリモートサーバにアップロードする。いくつかの実施形態では、この情報は、ブートシーケンス中にデバイスによって生成された情報を含み、ゴールデン測定、及びレジスタのコンテンツを含む。いくつかの実施形態では、情報は、更新が必要とされる場合にのみリモートサーバに送信される。いくつかの実施形態では、情報は、更新イメージが完全に書き込まれたと方法(400)が判定したが、方法(400)の残りの部分が実行されていない場合にのみ送信される。これにより、書き込み後であるが、方法(400)での更新が完了する前にリブートができる。
【0062】
ブロック406では、方法(400)は、ブート中に生成された第二測定(ブロック206で説明されるように代替に「ソフトウェア更新バッファ空間」と称される、第二部分の)を第二ゴールデン測定と比較する。換言すれば、ブロック310では、この方法は、第二部分の第二測定を、更新イメージに関連する第二ゴールデン測定、及び前のイメージに関連する第二ゴールデン測定と比較する。更新イメージ及び前のイメージは、それぞれイメージB及びイメージAと称される。
【0063】
ブロック408では、方法(400)は、第二測定を、更新イメージ(第二部分に格納されたイメージ)のゴールデン測定、及び前のイメージ(第二部分からキャッシュされたイメージ)のゴールデン測定と比較する。ブロック408では、方法(400)は、計算されたものがイメージA、イメージB、または別の値にマッチングするかどうかを判定する。現在の第二部分についてのゴールデン測定はゴールデン測定Bと称され、キャッシュされた第二部分についてのゴールデン測定はゴールデン測定Aと称される。上記のように、第二測定は、更新イメージ自体のハッシュを指す。したがって、方法(400)は、更新データの値を比較して、既存の既知のゴールデン測定に適用する。図示された実施形態では、第二測定は、ブート時に実行される第二部分の測定を指す。
【0064】
ブロック410では、この方法は、第二測定がイメージB(更新イメージ)についてのゴールデン測定にマッチングすると判定すると、更新プロシージャを完了する。このシナリオでは、更新は正常に完了し、所期の更新イメージのコンテンツはアクティブストレージ空間内にある。したがって、方法(400)は、図5でより詳細に説明される更新プロシージャをセキュアに完了することができる。
【0065】
ブロック412では、方法(400)は、第二測定がゴールデン測定A(前のイメージAに関連する)にマッチングすると判定する。このシナリオでは、方法(400)は、現在の更新をキャンセルしてから、更新を開始する前の状態にソフトウェアがリストアされたことを検証することにより、ソフトウェアの更新を完了する。このシナリオでは、方法(400)は前のイメージにリバートされた(例えば、ブロック320、322、324で実行されるロールバック操作を介して)。したがって、方法(400)は、更新プロシージャをキャンセルし(すなわち、状態レジスタを更新することによって)、図5でのプロシージャの完了を終了するように進む。
【0066】
第二測定が第二ゴールデン測定AまたはBにマッチングしない場合、方法(400)はブロック414に進む。ブロック414では、方法(400)は、アクティブストレージ空間が潜在的に破損したデータを含むと判定する。ただし、方法(400)は、最初に、更新の再試行の回数が満たされたかどうかを判定する。上記のように、カウンタを使用して、障害の信号を送る前の更新の試行回数を制御することができる。特に、図3に記載された方法は、最終的にイメージAかイメージBかいずれかがアクティブストレージ空間に書き込まれる結果となり、悪意のあるユーザは、更新プロシージャをインターセプトし、ブロック306の後に別のイメージをアクティブストレージ空間に書き込む可能性がある。したがって、ブロック414での判定は、このハイジャックを防ぐ。
【0067】
ブロック416では、方法(400)は、システム状態を再初期化して、更新シーケンスを強制的に再開させる。本明細書で説明されるように、セキュアデバイスは、リブートの間にデバイスの状態を永続的に格納する1つ以上のレジスタを含む。ブロック416では、方法(400)は、このシステム状態を、図5のブロック502ではデバイスが初期化された状態で再開する必要があることを示すように変更する。次に、方法(400)は、デバイスをリブートし(418)、図5に記載されるリブートルーチンを実行する(ブロック420)ように進む。
【0068】
ブロック422では、方法(400)は、破損した状態を検出し、それに応じてシステム状態を変更する。一実施形態では、方法(400)は、ロールバック操作が発生する必要があることを示すようにシステムレジスタを変更する。ロールバック操作に関する詳細は、図5に提供される。次に、方法(400)はシステムのリストアを強制する(424)。次に、方法(400)は、セキュアデバイスのリブートを強制して(ブロック426)、システムのリストアを実現する。リブート後、方法(400)は、図5に記載されるリブートルーチンを実行する(ブロック429)。
【0069】
図5は、本開示のいくつかの実施形態による、ソフトウェア更新を完了するための方法を示す流れ図である。図示された実施形態では、この方法(500)は、デバイスの特権ユーザによって実行されてもよい。
【0070】
ブロック502では、方法(500)は、セキュアストレージデバイスのアクティブストレージ空間の追加の測定を要求する。上記のように、この測定は、アクティブストレージ空間の暗号測定を含むことができる。
【0071】
ブロック504では、方法(500)は、追加の測定を、前のソフトウェアイメージ及び更新されたソフトウェアイメージについての両方のゴールデン測定と比較する。追加の測定が所望のゴールデン測定(更新またはリバートの判定に基づいた)にマッチングしない場合、方法(500)はブロック506に進む。
【0072】
ブロック506では、方法(500)はアラームを発する。アラームの特定の詳細は、限定することを意図したものではなく、破損した状態に応答してアラームを発するために任意の技法が使用されることができる。例えば、方法(500)は、アクティブストレージ空間が有効状態にないことを第三者に通知することができる。あるいは、または前述と併せて、方法(500)は、同じことに関してユーザに警告することができる。
【0073】
ブロック508では、方法(500)は、デバイスをクリーニングすることができる、またはいくつかの実施形態では、フェイルすることができる。一実施形態では、方法(500)は、デバイスの動作を防止するために、セキュアストレージデバイスの関連部分をフォーマットすることによって、デバイスをクリーニングすることができる。他の実施形態では、方法(500)は、単にデバイスの電源をオフにしてもよい、またはその他の方法で適切にフェイルしてもよい。ブロック508を実行した後、方法(500)は終了する。
【0074】
ブロック510では、方法(500)は、追加の測定が所望のゴールデン測定にマッチングすると判定することに応答して、アクティブストレージ空間をロックする。一実施形態では、アクティブストレージ空間をロックすることは、既知の暗号鍵を使用して実行される。
【0075】
ブロック512では、アクティブストレージ空間をロックした後、方法(500)は、セキュアストレージデバイスのアクティブストレージ空間の追加の第二測定を要求する。上記のように、この第二測定は、アクティブストレージ空間の暗号測定を含むことができる。次に、方法(500)は、追加の第二測定を、前のソフトウェアイメージ及び更新されたソフトウェアイメージについての両方のゴールデン測定と比較する。追加の測定が所望のゴールデン測定(更新またはリバートの判定に基づいた)にマッチングしない場合、方法(500)はブロック506及び508に進む。ブロック506及び508は、前に説明されており、その説明は本明細書では繰り返されない。
【0076】
ブロック514及び516では、方法(500)は、メモリ中の以前に格納されたデータをその元の位置にリストアする。図示された実施形態では、この以前に格納されたデータは、リカバリブロックイメージ、レジスタコンテンツ、ならびにセキュアストレージデバイスの第一及び第二部分のコンテンツを含む。一実施形態では、セキュアストレージデバイスの第一及び第二部分の以前のコンテンツをリストアすると、方法(500)は、第一及び第二部分が書き込み可能になるように設定する。
【0077】
ブロック518では、方法(500)は、更新が完了した信号を送る。いくつかの実施形態では、更新が完了した信号を送ることは、新しいソフトウェアイメージを使用してデバイスをブートすることを含んでもよい。あるいは、または前述と併せて、方法(500)は、デバイスが更新されて動作の準備ができていることを示す外部信号を生成することができる。
【0078】
図6は、本開示のいくつかの実施形態による、コンピューティングデバイスのブロック図である。
【0079】
図示された実施形態では、コンピューティングデバイス(600)は、インタフェース(606)を介してバス(608)に通信可能に結合される。バス(608)は、イーサネット、コントローラエリアネットワーク(CAN)、FlexRay、メディア指向システムトランスポート(MOST)バスまたは同様のタイプのバスを含んでもよい。同様に、インタフェース(606)は、使用される特定のタイプのバスにアクセスするために同様のインタフェースを含んでもよい。
【0080】
コンピューティングデバイス(600)は、マイクロコントローラ(602)、R/Fサブシステム(610)、特定用途向けコンポーネント(ASC)(612)、及びメモリシステム(604)をさらに含む。図示された実施形態では、マイクロコントローラ(602)は、コンピューティングデバイス(600)の動作を制御するように設定されるプロセッサまたはより小さいマイクロコントローラを含むことができる。いくつかの実施形態では、マイクロコントローラ(602)は、メモリシステム(604)に格納されるプログラム命令にアクセスし、それらの命令に従って、ASC(612)を駆動する。ASC(612)の例は、周辺機器及び他の特定用途(例えば、自動車用)デバイスを含む。コンピューティングデバイス(600)によって使用されるASCのタイプは限定的ではなく、任意のタイプのASCがコンピューティングデバイス(600)によって使用されてもよい。
【0081】
コンピューティングデバイス(600)は、R/Fシステム(610)をさらに含む。図示された実施形態では、R/Fシステム(610)は、無線ネットワークと通信するために1つ以上の無線機またはトランシーバを含むことができる。R/Fシステム(610)は、Bluetooth、Wi-Fiまたはセルラー無線機または衛星トランシーバを含んでもよい。いくつかの実施形態では、R/Fシステム(610)は、無線機またはトランシーバの組み合わせを含む。いくつかの実施形態では、コンピューティングデバイス(600)は、R/Fシステム(610)を含まなくてもよく、代わりに、前述のように、車両用広帯域R/Fシステムを利用してもよい。
【0082】
マイクロコントローラ(602)は、メモリシステム(604)を管理する。図示された実施形態では、メモリシステム(604)は、前述のようにセキュアストレージデバイスを含むことができる。図示された実施形態では、メモリシステム(604)は、SRAM(604a)、EEPROM(604b)、及びフラッシュストレージ(604c)を含む。図示された実施形態では、SRAM(604a)は、マイクロコントローラ(602)のL1またはL2キャッシュとして利用されることができる。同様に、EEPROM(604b)は、コンピューティングデバイス(600)のファームウェアストレージとして使用されてもよい。SRAM(604a)及びEERPOM(604b)の特定の詳細(または存在)は限定的ではない。
【0083】
メモリシステム(604)は、フラッシュストレージデバイス(604c)をさらに含む。図示された実施形態では、フラッシュストレージデバイス(604c)は、NANDフラッシュストレージデバイスを含み、このNANDフラッシュストレージデバイスは、PCBにはんだ付けされ、図6に示されるその他のコンポーネントに(PCBを介して)連結される。フラッシュストレージデバイス(604c)は、前述のように、コンピューティングデバイス(600)によって使用されるデータだけでなく操作コードを格納するために利用される。
【0084】
図7は、本開示のいくつかの実施形態による、ストレージデバイスのレイアウトのブロック図である。
【0085】
図示されたストレージシステム(700)には、デバイスストレージ空間(702)及び特権ユーザ(PU)ストレージ空間(710)という2つの論理ストレージ空間が存在する。一般に、空間(702)にはデフォルトであらゆる非特権ユーザがアクセスできるが、空間(710)には特権ユーザのみがアクセスできる。
【0086】
デバイスストレージ空間(702)は、アクティブなソフトウェアイメージ(イメージA、704)を含む。このイメージ(704)は、デバイス上で現在実行中のソフトウェアを含んでもよい。さらに、デバイスストレージ空間(702)は、セキュアストレージ空間(706)を含み、このセキュアストレージ空間は、暗号鍵(706a)、1セットのレジスタ(706b)、及びリカバリブロック(706c)を含む。一実施形態では、セキュアストレージ空間(706)は、ユーザ(例えば、特権ユーザ)のみが確立された鍵でセキュアストレージ空間(706)にアクセスすることができるように暗号でセキュアにされる。最後に、デバイスストレージ空間(702)は、汎用空間(708)を含み、この汎用空間は、第一部分(708a)、第二部分(708b)、及び第三部分(708c)を含む。一般に、汎用空間(708)には、特権ユーザ及び非特権ユーザがアクセスでき、この汎用空間は、必要に応じて書き込み保護されるように設定されることができる。書き込み保護されると、特権ユーザのみが書き込み保護された部分のコンテンツを変更することができる。
【0087】
PUストレージ空間(710)は、特権ユーザのみがアクセスできるセキュアストレージ領域を含む。PUストレージ空間(710)は、元のイメージA(712)のコピー、及び更新イメージB(714)を含むことができる。さらに、PUストレージ空間(710)は、暗号鍵(716)を含み、この暗号鍵は、セキュアストレージ空間(706)及び任意の書き込み保護された部分(708a、708b)にアクセスするために使用される。さらに、PUストレージ空間(710)は、バックアップ空間(718)を含む。このバックアップ空間(718)は、ストレージ部分を含み、このストレージ部分は、前述の図中に記載されるように、第一部分(718a)、第二部分(718b)、レジスタ(718c)、及びリカバリブロック(718d)のコピーをバックアップするために使用されることができる。
【0088】
本開示は、本明細書の一部を形成し、例示として、ある特定の例示的な実施形態を示す、添付の図面を参照して、以降本明細書中でより完全に説明された。しかしながら、発明の主題は、さまざまな異なる形態で具現化されることができるため、対象とされた、または特許請求された発明の主題は、本明細書に記載の任意の例示的な実施形態に限定されないと解釈されることを意図したものであり、例示的な実施形態は、例示のために提供されるに過ぎない。同様に、特許請求された、または対象とされた発明の主題にかなり広い範囲が意図される。したがって、例えば、発明の主題は、方法、デバイス、コンポーネント、またはシステムとして具現化され得る。したがって、実施形態は、例えば、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせ(ソフトウェア自体を除く)の形態を取ることができる。以下の詳細な説明は、したがって、限定的な意味に解釈されることを意図したものではない。
【0089】
本明細書及び特許請求の範囲を通じて、用語は、明示的に述べられた意味を越えて、文脈において示唆される、または黙示される微妙な意味を有する可能性がある。同様に、本明細書で使用される「一実施形態では」という句は、必ずしも同じ実施形態を指すとは限らず、本明細書で使用される「別の実施形態では」という句は、必ずしも異なる実施形態を指すとは限らない。例えば、特許請求された発明の主題が、全体的または部分的に例示的な実施形態の組み合わせを含むことが意図される。
【0090】
一般に、専門用語は、文脈での語法から少なくとも部分的に理解されることができる。例えば、上記で使用される「及び」、「または」、または「及び/または」などの用語は、それらのような用語が使用される文脈に少なくとも部分的に依存し得るさまざまな意味を含み得る。通常、「または」は、A、BまたはCなどの列挙を関連付けるために使用される場合、本明細書で包括的な意味で使用されるA、B、及びCだけでなく、本明細書で排他的な意味で使用されるA、BまたはCをも意味することを意図したものである。さらに、本明細書で使用される「1つ以上」という用語は、少なくとも部分的に文脈に応じて、単数形での任意の特徴、構造もしくは特性を説明するために使用され得る、または複数形での特徴、構造もしくは特性の組み合わせを説明するために使用され得る。同様に、「a」、「an」、または「the」などの用語も、少なくとも部分的に文脈に応じて、単数形の語法を伝えるように理解されてもよい、または複数形の語法を伝えるように理解されてもよい。さらに、「に基づく」という用語も、少なくとも部分的に文脈に応じて、必ずしも排他的な一連の要因を伝えることを意図するものではないと理解されてもよく、代わりに、必ずしも明示的に説明されていない追加の要因の存在を可能にする場合がある。
【0091】
本開示は、方法及びデバイスのブロック図及び動作説明図を参照して説明されてきた。ブロック図または操作図の各ブロック、及びブロック図または動作説明図中のブロックの組み合わせが、アナログまたはデジタルのハードウェア及びコンピュータプログラム命令を用いて実施されることができることが理解される。これらのコンピュータプログラム命令は、汎用プロセッサ、専用コンピュータ、ASIC、または他のプログラム可能なデータ処理装置に提供されることができるため、これらの命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行されると、ブロック図、または動作ブロック(複数可)に指定される機能/作用を実施させる。一部の代替の実施態様では、ブロックに示される機能/作用は、動作説明図に示される順序とは無関係に発生することができる。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得る、または、ブロックは、時々、含まれる機能/作用に応じて、逆の順序で実行され得る。
【0092】
本開示の目的のために、コンピュータ可読媒体(または単一のコンピュータ可読記憶媒体/複数のコンピュータ可読記憶媒体)は、コンピュータデータを格納し、そのデータは、コンピュータによって実行可能なコンピュータプログラムコード(またはコンピュータ実行可能命令)を機械可読形式で含むことができる。限定ではなく例として、コンピュータ可読媒体は、データの有形もしくは固定ストレージのためのコンピュータ可読記憶媒体、またはコードを含む信号の過渡的解釈のための通信媒体を含み得る。コンピュータ可読記憶媒体は、本明細書で使用される場合、物理的な、または有形のストレージ(信号ではなく)を指し、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の有形ストレージのために任意の方法または技術で実装される揮発性及び不揮発性の、リムーバブル及び非リムーバブルの媒体を限定なく含む。コンピュータ可読記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリもしくは他のソリッドステートメモリ技術、CD-ROM、DVD、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報もしくはデータもしくは命令を有形に格納するために使用され得、コンピュータもしくはプロセッサによってアクセスされ得る、任意の他の物理的な、もしくは物質的な媒体を含むが、これらに限定されない。
図1
図2
図3
図4
図5
図6
図7