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

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

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特表2024-526752マイクロコントローラの測定された再起動
<>
  • 特表-マイクロコントローラの測定された再起動 図1
  • 特表-マイクロコントローラの測定された再起動 図2
  • 特表-マイクロコントローラの測定された再起動 図3
  • 特表-マイクロコントローラの測定された再起動 図4
  • 特表-マイクロコントローラの測定された再起動 図5
  • 特表-マイクロコントローラの測定された再起動 図6
  • 特表-マイクロコントローラの測定された再起動 図7
  • 特表-マイクロコントローラの測定された再起動 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-19
(54)【発明の名称】マイクロコントローラの測定された再起動
(51)【国際特許分類】
   G06F 21/57 20130101AFI20240711BHJP
   G06F 15/177 20060101ALI20240711BHJP
【FI】
G06F21/57 350
G06F15/177 B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024501879
(86)(22)【出願日】2022-06-08
(85)【翻訳文提出日】2024-03-08
(86)【国際出願番号】 US2022032584
(87)【国際公開番号】W WO2023287523
(87)【国際公開日】2023-01-19
(31)【優先権主張番号】17/374,900
(32)【優先日】2021-07-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(72)【発明者】
【氏名】ヴォロス,スタブロス
(72)【発明者】
【氏名】ドーク,コリン
(72)【発明者】
【氏名】チャンバース,シモン・ダグラス
(72)【発明者】
【氏名】ラグルズ,デビッド
(72)【発明者】
【氏名】ニール,リチャード
(72)【発明者】
【氏名】フォルネ,セドリック・アラン・マリー
(72)【発明者】
【氏名】ヴァスワーニ,カピル
(72)【発明者】
【氏名】ベンブ,バラジ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045HH03
(57)【要約】
様々な例において、第1の不変ブートローダおよび第1の可変ファームウェアを備える第1のマイクロコントローラを備えるコンピューティングデバイスがある。第1の不変ブートローダは、第1の可変ファームウェアの真正証明を生成するために、コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットを使用する。コンピューティングデバイスは、第2のマイクロコントローラを有する。第2のマイクロコントローラには、第2の可変ファームウェアがある。第2のマイクロコントローラが再起動するたびに、第2の可変ファームウェアの測定値を第1の不変ブートローダに送信し、第1のマイクロコントローラが、測定値を真正証明に含めることができるようにする、第2のマイクロコントローラにおける第2の不変ブートローダがある。
【特許請求の範囲】
【請求項1】
コンピューティングデバイスであって、
第1の不変ブートローダおよび第1の可変ファームウェアを備える第1のマイクロコントローラであって、前記第1の不変ブートローダは、前記第1の可変ファームウェアの真正証明を生成するために、前記コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットを使用する、第1のマイクロコントローラと、
第2のマイクロコントローラと、
前記第2のマイクロコントローラにおける第2の可変ファームウェアと、
前記第2のマイクロコントローラが再起動するたびに、前記第2の可変ファームウェアの測定値を前記第1の不変ブートローダに送信し、前記第1のマイクロコントローラが、前記測定値を前記真正証明に含めることができるようにする、前記第2のマイクロコントローラにおける第2の不変ブートローダと
を備えるコンピューティングデバイス。
【請求項2】
請求項1に記載のコンピューティングデバイスであって、前記第1のマイクロコントローラのリセットピンは、前記第2のマイクロコントローラのリセットピンに電気的に結合される、コンピューティングデバイス。
【請求項3】
請求項2に記載のコンピューティングデバイスであって、前記第2のマイクロコントローラは、前記電気的結合に接続された出力を有し、前記第2のマイクロコントローラは、それ自体のハードリセットおよび前記第1のマイクロコントローラのハードリセットをトリガするために、前記電気的結合に沿って前記出力から電気パルスを送ることができる、コンピューティングデバイス。
【請求項4】
請求項3に記載のコンピューティングデバイスであって、前記電気的結合は、前記第2のマイクロコントローラによって該結合に送られるパルスを延長するパルス延長器を備える、コンピューティングデバイス。
【請求項5】
請求項4に記載のコンピューティングデバイスであって、前記パルス延長器は、オープンドレインバッファ、抵抗、および、コンデンサを備える、コンピューティングデバイス。
【請求項6】
請求項1に記載のコンピューティングデバイスであって、前記第2の不変ブートローダは、前記第2のマイクロコントローラにおけるソフトリセットに応答して、前記第1のマイクロコントローラと前記第2のマイクロコントローラとの両方のハードリセットをトリガする、コンピューティングデバイス。
【請求項7】
請求項1に記載のコンピューティングデバイスであって、前記第1のマイクロコントローラは、前記第1のマイクロコントローラのリセットが要求されることに応じて、前記第1のマイクロコントローラと前記第2のマイクロコントローラとの両方のハードリセットを要求するメッセージを前記第2のブートローダに送信する、コンピューティングデバイス。
【請求項8】
請求項1に記載のコンピューティングデバイスであって、前記第1のマイクロコントローラは、ハードリセットからの復帰に応じて、前記第2のマイクロコントローラへのインターフェースを初期化し、利用可能性を示すために準備完了フラグを設定し、初期化された前記インターフェースを介して前記第2のマイクロコントローラから測定値を受信するのを待ち、前記測定値の受信を示すために前記準備完了フラグをリセットする、コンピューティングデバイス。
【請求項9】
請求項1に記載のコンピューティングデバイスであって、前記第2のマイクロコントローラは、ハードリセットからの復帰に応じて、前記第1のマイクロコントローラへのインターフェースを初期化し、前記第2の可変ファームウェアの測定値を計算し、前記第1のマイクロコントローラの準備完了フラグが利用可能性を示すことに応じて、初期化された前記インターフェースを介して前記測定値を前記第1のマイクロコントローラに転送する、コンピューティングデバイス。
【請求項10】
請求項9に記載のコンピューティングデバイスであって、前記第1のマイクロコントローラは、前記第2の可変ファームウェアの真正証明を、リモート検証器に対して利用可能にすることを含むブートシーケンスを実行し、前記真正証明は、少なくとも、前記第2のマイクロコントローラからの前記測定値を使用して計算され、前記固有のデバイスシークレットから導出される鍵を使用して署名される、コンピューティングデバイス。
【請求項11】
請求項10に記載のコンピューティングデバイスであって、前記第2のマイクロコントローラは、前記測定値を前記第1のマイクロコントローラに転送した後、前記第1のマイクロコントローラの準備完了フラグが前記測定値の受信を示すことに応じて、ランタイムセキュリティ構成を適用する、コンピューティングデバイス。
【請求項12】
請求項1に記載のコンピューティングデバイスであって、前記第2のマイクロコントローラは、ハードリセットからの復帰に応じて、前記第1のマイクロコントローラへのインターフェースを初期化し、前記第2の可変ファームウェアの測定値を計算し、事前に定義された期間後、前記第1のマイクロコントローラの準備完了フラグが無応答を示すことに応じて、ハードリセットコマンドを発行して前記第1のマイクロコントローラと前記第2のマイクロコントローラとの両方のハードリセットをトリガするか、または、ブートシーケンスを継続する、コンピューティングデバイス。
【請求項13】
請求項1に記載のコンピューティングデバイスであって、前記第2のマイクロコントローラは、前記第2の可変ファームウェアの測定値を前記第1のマイクロコントローラに転送することに応じて、前記第1のマイクロコントローラの準備完了フラグを確認し、前記第1のマイクロコントローラが前記測定値を受信する準備ができているが前記測定値を受信していないことを前記準備完了フラグが示すことに応じて、ハードリセットコマンドを発行して、前記第1のマイクロコントローラと前記第2のマイクロコントローラとの両方のハードリセットをトリガする、コンピューティングデバイス。
【請求項14】
コンピューティングデバイスにおける方法であって、
第1のマイクロコントローラにおいて第1の不変ブートローダを使用して、第1の可変ファームウェアの真正証明を生成するステップであって、前記第1の可変ファームウェアは、前記第1のマイクロコントローラにあり、前記真正証明は、前記コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットを使用して生成される、ステップと、
前記コンピューティングデバイスの第2のマイクロコントローラが再起動するたびに、前記第2のマイクロコントローラにおいて第2の不変ブートローダを使用して、前記第2のマイクロコントローラにおける第2の可変ファームウェアの測定値を、前記第1の不変ブートローダに送信し、前記第1のマイクロコントローラが、前記測定値を前記属性に含めることができるようにする、ステップと
を含む方法。
【請求項15】
周辺コンピューティングデバイスであって、
少なくとも1つのプロセッサと、
第1の不変ブートローダおよび第1の可変ファームウェアを備える第1のマイクロコントローラであって、前記第1の不変ブートローダは、前記第1の可変ファームウェアの真正証明を生成するために、前記コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットを使用する、第1のマイクロコントローラと、
前記プロセッサを管理するための第2のマイクロコントローラと、
前記第2のマイクロコントローラにおける第2の可変ファームウェアと、
前記第2のマイクロコントローラが再起動するたびに、前記第2の可変ファームウェアの測定値を、前記第1の不変ブートローダに送信する、前記第2のマイクロコントローラにおける第2の不変ブートローダと
を備え、前記周辺コンピューティングデバイスは、前記真正証明および前記測定値を、検証器によるアクセスのために前記周辺コンピューティングデバイスのホストに対して利用可能にする、周辺コンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
一部のタイプのコンピューティングデバイスでは、コンピューティングデバイスの識別情報は、製造中にコンピューティングデバイスのハードウェアに焼き付けられた暗号化公開鍵と秘密鍵とのペア、または乱数である固有のデバイスシークレット(UDS)から知られる。固有のデバイスシークレットは、ハードウェアのルートオブトラストを有効にするのに役立ち、これにより、コンピューティングデバイスは、コンピューティングデバイス上の特定のファームウェアを証明する鍵および証明書を作成できる。例では、コンピューティングデバイスを使用するソフトウェアアプリケーションは、セキュリティ上の理由から、コンピューティングデバイスに特定のファームウェアがインストールされていることを確認することを所望する。ソフトウェアアプリケーションは、証明書チェーンを使用してファームウェアの識別情報を検証するなどして、コンピューティングデバイスにインストールされているファームウェアが期待通りであるという真正証明を受け取ることを所望する。コンピューティングデバイスハードウェアは、固有のデバイスシークレットを使用して、1つまたは複数の公開鍵と秘密鍵とのペアと、ソフトウェアアプリケーションがコンピューティングデバイス上のファームウェアを検証するために使用する対応する証明書とを生成できる。
【0002】
コンピューティングデバイス上に1つよりも多くのマイクロコントローラがある状況では、ハードウェアのルートオブトラストがどのように実施されるかに関してセキュリティの問題が発生する。ルートオブトラストを実施できるのは1つのマイクロコントローラだけである可能性がある。すべてのマイクロコントローラがルートオブトラストを実施する訳ではない可能性がある。
【0003】
以下に説明する実施形態は、知られているマイクロコントローラの欠点の一部またはすべてを解決する実施に限定されない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
以下に、読者に基本的な理解を提供するために、本開示の簡略化された概要を提示する。本概要は、特許請求された主題の主要な特徴または本質的な特徴を特定することを意図したものではなく、また、特許請求された主題の範囲を限定するために使用されることを意図したものでもない。その唯一の目的は、後で提示される、より詳細な説明への序章として、本明細書に開示される概念の選択を、簡略化された形態で提示することである。
【課題を解決するための手段】
【0005】
様々な例において、第1の不変ブートローダおよび第1の可変ファームウェアを備える第1のマイクロコントローラを備えるコンピューティングデバイスがある。第1の不変ブートローダは、第1の可変ファームウェアの真正証明を生成するために、コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットを使用する。コンピューティングデバイスは、第2のマイクロコントローラを有する。
【0006】
第2のマイクロコントローラには、第2の可変ファームウェアがある。第2のマイクロコントローラには、第2の不変ブートローダがあり、第2の不変ブートローダは、第2のマイクロコントローラが再起動するたびに、第2の可変ファームウェアの測定値を第1の不変ブートローダに送信し、第1のマイクロコントローラは、その測定値を真正証明に含めることができる。
【0007】
付随する特徴の多くは、添付の図面と併せて考慮される以下の詳細な説明を参照することによってよりよく理解されるので、より容易に認識されるであろう。
【0008】
本説明は、添付の図面を考慮して読まれる以下の詳細な説明からよりよく理解されるであろう。
【図面の簡単な説明】
【0009】
図1図1は、第1の信頼できるコンピューティングエンティティおよび処理システムの概略図である。
図2図2は、複数の処理システムを備えるデータセンタの概略図である。
図3図3は、処理システムの概略図である。
図4図4は、不変ブートローダおよび可変ファームウェアを示す図3の処理システムの概略図である。
図5図5は、パルス延長器の例を示す図である。
図6図6は、第1のマイクロコントローラおよび第2のマイクロコントローラにおける処理のフロー図である。
図7図7は、第1のマイクロコントローラと第2のマイクロコントローラとの両方における、ハードリセットからの復帰後の処理のフロー図である。
図8図8は、第1のマイクロコントローラと第2のマイクロコントローラの両方における、ハードリセットからの復帰後の別の処理のフロー図である。
【発明を実施するための形態】
【0010】
添付の図面に関連して以下に提供される詳細な説明は、本例の説明として意図されており、本例が構築または利用される唯一の形態を表すことは意図されていない。この説明は、例の機能と、例を構築および展開するための動作のシーケンスとを記載する。しかしながら、同じまたは同等の機能およびシーケンスが、異なる例によって達成され得る。
【0011】
データセンタのテナントが、データセンタ(または他の場所)における処理システムの可変ファームウェアが、期待通りであることを証明する真正証明を受け取ることは簡単ではない。処理システムの第1のマイクロコントローラは、ハードウェアのルートオブトラストを実施するため、トラステッドコンピューティンググループ(TCG)のデバイスアイデンティファイヤコンポジションエンジン(DICE)規格と、ロバストなモノのインターネット(RIoT)プロトコル体系とを使用して、その可変ファームウェアの真正証明を提供できる。しかしながら、デバイスごとに1つのエンティティしかハードウェアのルートオブトラストを実施できないので、処理システムにおける第2のマイクロコントローラは、ハードウェアのルートオブトラストを実施しない。したがって、悪意のある当事者が、第2のマイクロコントローラ上の可変ファームウェアを改ざんしたり、または置き換えたりできる可能性があるため、セキュリティ上のリスクがある。第2のマイクロコントローラ上の可変ファームウェアが期待通りであることを証明する真正証明が与えられることは困難である。以下でより詳細に説明するように、発明者らは、第2のマイクロコントローラ上の可変ファームウェアの測定値を生成し、安全かつ効率的な方式で検証器に対して利用可能にする手法を考案した。検証器は、この測定値を使用して、第2のマイクロコントローラ上の可変ファームウェアが期待通りであることを確認することができる。
【0012】
図1は、3つの高レベルのエンティティ、すなわち、第1の信頼できるコンピューティングエンティティ100、信頼できないストレージ108、および処理システム112を図示する。
【0013】
第1の信頼できるコンピューティングエンティティ100は、いくつかの例では、テナントによって制御され、処理システム112で処理される機密コード102および機密データ104へのアクセスを有する。第1の信頼できるコンピューティングエンティティ100は、機密コード102および機密データ104を、ストレージ108を介して処理システム112に転送する前に暗号化する暗号化装置106を有する。第1の信頼できるコンピューティングエンティティ100は、処理システム112から1つまたは複数の真正証明および測定値を受信して、処理システム112における可変ファームウェアが、テナントが期待する通りであることを検証する検証器124を有する。
【0014】
ストレージ108は、通信ネットワークまたはリンクを介して、第1の信頼できるコンピューティングエンティティ100と通信し、通信ネットワークまたはリンクを介して処理システム112と通信する任意のストレージである。ストレージ108は、第1の信頼できるコンピューティングエンティティ100からの少なくとも暗号化されたコードおよび/またはデータを格納する。いくつかの例では、ストレージ108は、ホストコンピューティングデバイスのメモリであり、処理システム112は、ホストコンピューティングデバイスの周辺デバイスである。しかしながら、ストレージ108がホストデバイスにあることは必須ではない。ストレージ108は、処理システム112の外部にある任意のストレージである。
【0015】
処理システム112は、図1に示すような単一のプロセッサであるか、または、互いに接続された複数のそのようなプロセッサを備える。処理システムは、機密コードを使用して機密データを処理するための、信頼できる実行環境を作成できる。処理システム112における各プロセッサは、機密コードを使用して並列方式で機密データを処理するための1つまたは複数のプロセッサユニット114を有する。プロセッサユニット114は、以下で詳細に説明するプロセッサまたは他の計算要素である。処理システム112は、情報の暗号化および解読を可能にする暗号化機能を有する。処理システム112のセキュアマイクロコントローラユニット(SMCU)120は、処理を制御して、信頼できる実行環境および他の様々な機能を作成する。SMCUは、ハードウェアのルートオブトラストを実施する。処理システムのマイクロコントローラユニット(MCU)122は、少なくとも、プロセッサをブートする機能を有する。
【0016】
第1の信頼できるコンピューティングエンティティにおける処理システム112および暗号化装置106は両方とも、信頼できない外部ストレージ108を介して転送するために、機密コードおよび/またはデータのブロックを暗号化するための暗号化プロトコルを使用するように構成される。鍵および初期化ベクトルを使用して機密情報を保護する任意の暗号化プロトコルを使用できる。個々のブロックは、初期化ベクトルおよび鍵を備えたペアを使用して暗号化される。
【0017】
図2は、複数の処理システム112を備えるデータセンタ300の概略図である。例では、複数の処理システム112がデータセンタ200において展開され、ここでは、明確化のために、図2に図示されていないデータセンタ200内の通信ネットワークを使用して処理システム112が相互接続される。コンピューティングデバイスを備える第1のテナント202は、機密データおよび/またはコードの安全なストア206と、検証器124とを有する。第1のテナント202は、データセンタ200と通信する。第1のテナント202は、機密データが処理されるように、機密データおよびまたはコードを、処理システム112に転送することができる。例では、機密コードは機械学習モデルであり、機密データはトレーニングデータである。第1のテナント202は、検証器124を使用して、機密コードが、処理システムの1つまたは複数にインストールされていることを検証することができる。処理システム112の1つまたは複数における可変ファームウェアが、第1のテナント202の期待通りであることを確認するために、検証は、処理システム112から真正証明および/または測定値を受信することを備える。
【0018】
いくつかの例では、データセンタ200と通信するコンピューティングデバイスを備える第2のテナント204が存在する。第2のテナント204は、機密コードおよび/またはデータの安全なストア208を有する。第2のテナント204は、機密コードおよびデータを、データセンタ200における第1のテナント202と同じ処理システム112の1つまたは複数にコピーできる。処理システム112におけるリソース分離機構を使用して、個々のテナントのセキュリティを維持することが可能である。第2のテナント204も検証器124を有する。
【0019】
図2は、データセンタの状況を例示す。しかしながら、図1の処理システム112を、スタンドアロンの状況、または、他のタイプの展開において使用することも可能である。
【0020】
図3は、例ではSMCU120である第1のマイクロコントローラと、例ではMCU122である第2のマイクロコントローラと、おのおのが複数の処理ユニットを有する複数のプロセッサ114とを備える処理システム112の概略図である。プロセッサ114は、周辺コンポーネント相互接続複合体368または同等の機能を使用して、暗号化されたデータの、外部ストレージ108との間での受け渡しが可能である。
【0021】
SMCU120は、処理システム112のハードウェアに焼き付けられた固有のデバイスシークレットを使用して、ハードウェアのルートオブトラストを実施する。固有のデバイスシークレットは図3では見えない。固有のデバイスシークレットは、製造業者によって作製されたデバイス間で固有であり、暗号化された公開鍵と秘密鍵とのペア、または乱数である。固有のデバイスシークレットは、コンピューティングデバイスが、鍵と、処理システム上の特定のファームウェアを証明する証明書とを作成できるようにするのに役立つ。例では、SMCU120は、トラステッドコンピューティンググループ(TCG)のデバイスアイデンティファイヤコンポジションエンジン(DICE)規格と、RIoTプロトコル体系とにしたがって、SMCU120において可変ファームウェアを証明するための方法を使用する。DICEは、デバイスが真正証明、証明、データ暗号化、および他の目的で使用する秘密鍵を作成する標準化された方法である。DICEは通常、ハードウェアまたは読取専用メモリ(ROM)ベースのファームウェアで実施される。ロバストなモノのインターネット(RIoT)は、DICE由来のシークレットを使用するためのプロトコル体系である。RIoTは、デバイス真正証明のためのプロトコルを含み、これにより、マイクロコントローラでブートしたファームウェアの安全な報告を行う。
【0022】
例では、SMCU120は、プロセッサ114,374上で実行される機密のコンピューティングタスクを管理する。このコンピューティングタスクは、各プロセッサ114,374に、固有のデバイスシークレットに基づいて識別情報を与える。このコンピューティングタスクは、プロセッサ114,374上で信頼できる実行環境を作成および管理し、プロセッサ構成を測定し、クオートを生成し、コードおよびデータのオンライン暗号化および解読のための鍵を展開する。
【0023】
MCU122は、少なくともプロセッサ114,374を停止させるための機能を有する。MCU122は、接続370を介してプロセッサ114,374と通信する。
【0024】
図3における矢印358,356によって示されるように、SMCU120とMCU122との間に通信チャネルが存在する。例では、SMCU120は、第1のインターフェース358を介してMCU122にメッセージを送信し、第2のインターフェース356を介してMCUからメッセージを受信する。SMCU120とMCU122との間の通信チャネルは、SMCU120によって制御される準備完了フラグを備える。SMCU120は、通信を受信する準備ができているとき、準備完了フラグを高に設定する。準備ができていない場合、SMCU120は、準備完了フラグを低に設定して、通信を受信する準備ができていないことを示す。MCU122は、SMCU120が通信を受信する準備ができているか否かを知るために、準備完了フラグのステータスを観察することができる。
【0025】
処理システムリセットピン364をアサート(低に駆動)して、処理システムリセットをトリガすることができる。処理システム112が周辺デバイスである例では、ホストコンピューティングデバイスは、オープンドレインリセットピン364をアサート(低に駆動)することができる。SMCU120は、リセットピン352を有する。
【0026】
SMCU120が、そのリセットピン352で、しきい値持続時間よりも長い電気パルスを受け取ると、SMCU120は、ハードリセットを受ける。MCU122も、リセットピン376を有する。
【0027】
MCU122が、そのリセットピン376で、しきい値持続時間よりも長い電気パルスを受け取ると、MCU122は、ハードリセットを受ける。しきい値持続時間は、SMCU120およびMCU122の製造業者によって指定される。通常、製造業者は、ハードリセットをトリガする電気パルスの持続時間の範囲を指定する。製造時にもたらされる変動のため、どちらのしきい値にも単一の固定値はない。
【0028】
SMCU120およびMCU122のリセットピン352,376は、図3に示されるように、処理システムリセットピン364とともに結合される。MCU122の汎用入力/出力ピン(GPIO)360は、パルス延長器354を介して、SMCU120およびMCU122を結合する電気接続に接続される。パルス延長器354は、図5を参照して詳細に説明されるように、GPIO360によって電気接続上に送られるパルスを延長するように機能する。
【0029】
図3を参照して説明されたように、SMCU120のリセットピン352は、MCU122のリセットピン376に電気的に結合される。MCU122は、電気的結合に接続された出力を有し、MCU122は、それ自体の、およびSMCUのハードリセットをトリガするために、電気的結合に沿って出力から電気パルスを送ることができる。電気的結合は、MCU122によって結合に送られるパルスを延長するパルス延長器354を備える。パルス延長器354は、SMCU120をリセットするための最大時間長さよりも長い時間長さまでパルスを延長する。任意の適切な市販のパルス延長器が使用可能である。パルス延長器354がないと、SMCU120がハードリセットを受けるしきい値持続時間の前に、MCU122がリセットしてGPIO360をクリアするリスクがある。
【0030】
図4は、図3の処理システム112の、マイクロコントローラ上のファームウェアの少なくとも一部の概要および概略図を図示する。SMCU120は、不変ブートローダ404であるファームウェア層を有し、また、可変ファームウェア402も有する。第2のマイクロコントローラであるMCU122は、不変ファームウェア層である不変ブートローダ412を有し、また、可変ファームウェア410も有する。上記で説明されたように、検証器124が、MCUにおける可変ファームウェア410が期待通りであることを検証できるように、MCU122がその可変ファームウェア410の測定値を安全な方式で提供できることが望まれる。そうすることで、悪意のある当事者による可変ファームウェア410の改ざんや置き換えを防ぐ手法を提供する。
【0031】
以下により詳細に説明されるように、発明者らは、MCU122において可変ファームウェア410の測定値が取得され、安全な方式でSMCU120の不変ブートローダ404に送信する手法を考案した。SMCU120の不変ブートローダ404、およびMCU122の不変ブートローダ412は、変更できないため、これらは信頼される。
【0032】
SMCU120は、MCU可変ファームウェア410の測定値を検証器124に対して利用可能にすることができ、その結果、検証器124は、MCU可変ファームウェア410が、検証器が期待する通りであることを確認することができる。SMCU120は、固有のデバイスシークレットへのアクセスを有し、ハードウェアのルートオブトラストを実施するので、DICE仕様およびRiOT仕様にしたがって、自身の可変ファームウェア402の真正証明を検証器に提供できるようになる。いくつかの例では、SMCU120は、SMCU120およびMCU122のファームウェア測定値を含むレポートの形態で、真正証明を計算する。したがって、真正証明は、SMCU120とMCU122との両方をカバーする。検証器は、処理システム112の製造業者の証明局416からの1つまたは複数の証明書を使用して、真正証明および測定値を検証する。真正証明は、真正証明のために使用される証明書のチェーンを構築することによって、SMCU120によって計算される。本技術では、これらの証明書のうちの1つは、SMCU120およびMCU122上の可変ファームウェア402,410の測定値を含む。これらの証明書は、固有のデバイスシークレットをルートとする鍵を使用して署名される。
【0033】
発明者らは、MCU可変ファームウェア410の測定値をSMCU120に送信することに関連付けられたセキュリティリスクがあることを認識した。測定値は特定の時点で取得されるので、測定値が生成され、正しいファームウェアに送られる可能性があるが、少し後に、悪意のある当事者がSMCU120に気付かれずにファームウェアを改ざんしたり置き換えたりする可能性がある。このようなタイプのシナリオを阻止するために、発明者らは、MCU122が再起動するたびに、MCU122が第2の可変ファームウェアの測定値を第1の不変ブートローダに送信する手法を考案した。可変ファームウェアを変更するにはMCU122の再起動が必要であるため、SMCU120は、再起動に関連付けられた可変ファームウェアについて知ることになる。悪意のある当事者が、MCU122において可変ファームウェア410を変更した場合、MCU122は、再起動を行う必要があり、SMCU120は、可変ファームウェア410の測定値を受信することになる。
【0034】
発明者らは、MCU122が再起動するたびに、MCU122に対して、測定値を送信させることで、セキュリティ問題のすべてではないが、一部を把握できることを認識した。特に、MCU122が再起動していないときでも測定値を送信する場合に、潜在的な問題がある。これを克服するために、SMCUファームウェアは、SMCU120が再起動した後にSMCU120がMCU122から受信する第1のメッセージである測定値メッセージのみを受け入れるように構成される。
【0035】
例では、不変ブートローダ(図4の404を参照)の後に実行されるSMCUファームウェアは、MCUファームウェア層によって送信されたファームウェア測定メッセージを受け入れない。このようにして、悪意のある、または侵害されたMCUファームウェアが、MCUブートローダになりすまして、悪意のある測定値を送信することができなくなる。
【0036】
発明者らは、MCU可変ファームウェアの測定値の鮮度に潜在的な問題があることを認識した。これに対処するために、MCUのハードリセットが発生した場合、SMCUのハードリセットがトリガされるように、SMCUのリセットとMCUのリセットとが結合される。このようにして、悪意のある当事者が、測定値を傍受して改ざんする、いわゆる「中間者攻撃」が発生することは非常に困難になる。MCUのソフトリセットの場合、MCUブートローダがハードリセットをトリガし、MCUとSMCUとの両方でハードリセットを引き起こすことで、さらなるセキュリティが追加される。ソフトリセットは、ブラウンアウトリセット、ウォッチドッグタイムアウト、MCUにリセットを求めるSMCUからの命令の受信、MCUにおけるソフトウェアによる電源の異常の検出、破損の発生のうちの何れかの場合のように、ソフトウェアによって引き起こされるリセットである。ハードリセットは、MCUおよびSMCUのリセットピン間の結合に、処理システムリセット信号がある場合に発生する。
【0037】
図5を参照して説明された例では、パルス延長器354は、オープンドレインバッファ500、抵抗502、およびコンデンサ504を備える。図5のパルス延長器354は、特に低コストで効率的である。図5の例では、MCU122は、SMCU120のリセットピン352に結合されたリセットピン376を有する。MCU122は、パルス延長器354を介してリセットピン間の結合に接続される出力360(GPIOと呼ばれる)をも有する。コンデンサ504は、接地に接続され、抵抗502を流れる電荷を収集するバケットとして機能する。オープンドレインバッファは、一方向であり、図5における右から左に、MCU122からリセットピン間の結合に向かって電圧は通過できるが、電流は通過できない。オープンドレインバッファの出力は、コンデンサ504の電圧が抵抗502を介してその入力論理スイッチングしきい値を超えて充電されるまで、低のままである。コンデンサ504、抵抗502、およびオープンドレインバッファ500は協働して、出力360上のMCU122から発せられる電気パルスを延長する。
【0038】
延長パルスのプロファイルが、図5の506に図示されており、ここで、電圧はy軸上にあり、時間はx軸上にある。電圧は高で始まり、出力360によるステップ変化において、低で駆動される。出力360が低駆動を停止して、MCUがリセットされ、電圧が徐々に元の高レベルに戻るまで、電圧は、低で駆動されたままである。(ステップ変化ではなく)元の高レベルに徐々に戻る理由は、抵抗502が、コンデンサ504を充電するのに時間を要するからである。SMCUリセットピン352の観点からの結果は、図5のプロファイル508に示されるように、延長されたパルスである。
【0039】
パルス延長器354は、パルスを時間長510だけ延長し、パルスがSMCUをリセットさせるのに十分な長さになるようにして、MCUとSMCUとがともにリセットするようにする。このようにして、SMCUが再起動しない限り、MCUも再起動できない。したがって、SMCUのブートローダは、MCUのブートローダから可変ファームウェアの測定値を受信する準備ができる。図6は、SMCU120およびMCU122における処理のフロー図である。SMCU120は、図6では垂直点線で表されており、MCU122も、垂直点線で表される。動作は、垂直点線で図示される。動作の相対的な垂直位置は、時系列順を表す。
【0040】
SMCU120が実行中であり(600)、MCU122も動作中である(606)。MCUは、1つまたは複数の基準が満たされた結果としてリセットを受ける(608)。リセットは、ソフトリセットである(608)ので、基準は、ソフトリセットの場合と同じである。ソフトリセットをトリガする基準の非網羅的なリストは、本書の前半で与えられたが、参照しやすいように、ここで繰り返す。すなわち、SMCUからリセット要求を受信し、ウォッチドッグタイムアウトが発生し、ブラウンアウトが生じ、電源異常が検出され、破損が発生する。MCU122がリセットする(608)と、そのブートローダが実行し、リセットがハードリセットかソフトリセットかを確認する(610)。確認(610)において、リセットがソフトリセットである(612)と判明した場合、MCU122は、パルス延長器にパルスを送る(614)。パルス延長器は、図6に示されるように、MCUのハードリセット(616)と、SMCU120のハードリセット(602)とを実質的に同時にトリガする。MCU122のハードリセットの結果として、MCUブートローダは、図7または図8を参照してより詳細に説明されるように、ブート処理を実行する(618)。SMCU120のハードリセットの結果として、SMCUブートローダは、SMCUのブートを実行する(604)。確認(610)において、リセットが、ハードリセットであったことが判明した場合、処理は、動作(618)に直接移動し、MCUブートローダが、ブート処理を実行する。
【0041】
図6から分かるように、MCU122は、ソフトリセットが指示された場合でもハードリセットを実行する。
【0042】
その結果、MCUが再起動するとSMCUも再起動するため、SMCUの認識なしに新しいMCUファームウェアがブートされる可能性が阻止される。
【0043】
図7を参照して示すように、左側には、SMCUがハードリセットから復帰するときのSMCUにおける例示的な処理が与えられる。右側には、MCUがハードリセットから復帰するときのMCUにおける例示的な処理が与えられる。図6に関して、動作の相対的な垂直位置は、時系列順を大まかに示す。左側の動作はSMCUの不変ブートローダによって実行され、右側の動作は、MCUの不変ブートローダによって実行される。
【0044】
SMCUは、ハードリセットから復帰する(700)。SMCU不変ブートローダは、図3のインターフェース356のような、MCUへのインターフェースを初期化する(702)。SMCU不変ブートローダは、インターフェース356を介してMCUから測定値を受信する準備ができていることを示すために、準備完了フラグを高に設定する(704)。
【0045】
その間に、MCUブートが開始する(712)。MCU不変ブートローダは、インターフェース356であるSMCUへのMCUインターフェースを初期化する(714)。
【0046】
次に、MCU不変ブートローダは、MCUにおいて可変ファームウェアの測定値を取得する。
【0047】
まず、MCU不変ブートローダは、以下のようにMCU可変ファームウェアを認証する。MCU可変ファームウェアを含むファームウェアパッケージに追加される署名は、ファームウェアパッケージヘッダのハッシュに対する署名である。MCU不変ブートローダは、可変ファームウェアヘッダのハッシュを計算する。MCUにおいて実行される可変ファームウェアが、信頼できる組織によって署名されていることを保証するために、公開ファームウェア署名鍵を使用して、可変ファームウェアヘッダのハッシュに対する署名を検証する。検証が成功すると、可変ファームウェアバイナリのハッシュが計算される(716)。現時点では、ファームウェアパッケージヘッダが、ファームウェアパッケージバイナリと一致するか否かは不明である。ファームウェアパッケージヘッダが、ファームウェアパッケージバイナリと一致することを確認するために、MCU不変ブートローダは、MCU可変ファームウェアバイナリのハッシュ(716)が、ファームウェアヘッダに格納されているハッシュと一致する(ファームウェアヘッダに格納されているハッシュは、本明細書で説明された処理の前半ですでに認証されているMCUファームウェアのハッシュである)ことを確認する(718)。一致が成功である場合、処理は確認に進む(720)。一致が不成功である場合、処理は中断する。
【0048】
動作720において、MCU不変ブートローダは、SMCUにおいて準備完了フラグが高に設定されているか否かを確認する。高に設定されていない場合、MCU不変ブートローダは、SMCUがフラグを高に設定する時間を与えるために、事前に定義された期間待機し、パルス延長器にパルスを送る(732)ことによってハードリセットを発行し(722)、その結果、MCUとSMCUとの両方がリセットし(734)、処理は、動作700,712に戻る。
【0049】
動作720において準備完了フラグが高に設定されている場合、MCU不変ブートローダは、インターフェース356を介してSMCUに測定値を転送する(724)。測定値は、可変ファームウェアバイナリのハッシュである。
【0050】
測定値の転送後、MCU不変ブートローダは、準備完了フラグがSMCUによって低に設定されているか否かを確認する(726)。低に設定されていない場合、MCUは、(SMCUがフラグを低に設定する時間を与えるために)事前定義された期間待機し、その後、ハードリセットを発行する(722)。準備完了フラグが低に設定されている場合、MCU不変ブートローダは、ランタイムセキュリティ構成を適用し(728)、MCUファームウェアに制御を移す(transfer 730 control)(730)。
【0051】
図7の例では、MCUファームウェアのハッシュは、MCU可変ファームウェアの測定値であり、SMCUへ転送される。いくつかの例では、MCUファームウェア署名公開鍵のハッシュ、MCU、プロセッサ、および処理ユニットカードのシリアル番号、MCU可変ファームウェアの署名、MCU可変ファームウェアのセキュリティバージョン番号のうちの1つまたは複数のような追加情報が、可変ファームウェアバイナリのハッシュとともに(転送動作724において)転送される。
【0052】
例では、情報転送がいつ完了するかを、MCUとSMCUとの双方が知ることができるように、転送される情報のサイズは、MCUとSMCUとの両方に事前に知られている。
【0053】
図7の左側に戻って示すように、SMCUは、MCUにおける可変ファームウェアの測定値を受信する(706)と、準備完了フラグを低に設定し(708)、独自のブートシーケンスを進める(710)。
【0054】
SMCUのブートシーケンスは、検証器124へ真正証明を送信することを備える。真正証明は、他の属性の中でも特に、(DICEプロトコルおよびRIoTプロトコルにしたがう)可変SMCUファームウェアの測定値のみならず、MCUにおける可変ファームウェアの測定値をも含む。測定値を使用して、検証器は、MCUおよびSMCUにおける可変ファームウェアが、従来の検証方法を使用して、期待通りであることを確認することができる。
【0055】
SMCUが自身のリセットを望む場合、SMCUは、MCUにメッセージを送信して、MCUのハードリセットを要求する(これは、SMCUのハードリセットもトリガする)。このようにして、MCUは、プロセッサとのインターフェースを休止し、SMCUとMCUとの両方が、図7を参照して説明されたように不変ブートローダのリセットおよび実行を行う。
【0056】
図7を参照して示すように、SMCUの少なくとも3つのシナリオがある。第1のシナリオでは、SMCUは、MCUから測定値を受信する準備ができていることをシグナルし(704で準備完了フラグを高に設定し)、SMCUは実際に測定値を受信する(706)。
【0057】
第2のシナリオでは、SMCUは、測定値を受信する準備ができていないことをシグナルする。この場合、決定点720においてMCUにおいて準備完了フラグが受信されず、MCUは、ハードリセットを発行する(722)。
【0058】
第3のシナリオでは、SMCUは、測定値を受信する準備ができていることをシグナルする(704で準備完了フラグを高に設定する)が、MCUから測定値を受信しない。この状況では、準備完了フラグは高のままであり(動作704)、MCU確認726は「いいえ」を返し、MCUは、ハードリセットを発行する(722)ことになる。
【0059】
図8を参照して示すように、左側には、SMCUがハードリセット734から復帰するときのSMCUにおける別の例示的な処理が与えられる。右側には、MCUがハードリセット734から復帰するときのMCUにおける別の例示的な処理が与えられる。図6に関して、動作の相対的な垂直位置は、時系列順を大まかに示す。左側の動作はSMCUの不変ブートローダによって実行され、右側の動作は、MCUの不変ブートローダによって実行される。
【0060】
SMCUは、ハードリセットから復帰する(700)。SMCU不変ブートローダは、SMCU有効フラグを偽に設定する(800)。SMCU不変ブートローダは、図3のインターフェース356のような、MCUへのインターフェースを初期化する(702)。
【0061】
SMCU不変ブートローダは、インターフェース356を介してMCUから測定値を受信する準備ができていることを示すために、準備完了フラグを高に設定する(704)。
【0062】
その間に、MCUブートが開始する(712)。MCU不変ブートローダは、図3のインターフェース356であるSMCUへのMCUインターフェースを初期化する(714)。
【0063】
次に、MCU不変ブートローダは、MCUにおいて可変ファームウェアの測定値を取得する。まず、MCU不変ブートローダは、以下のようにMCU可変ファームウェアを認証する。MCU可変ファームウェアを含むファームウェアパッケージに追加される署名は、ファームウェアパッケージヘッダのハッシュに対する署名である。MCU不変ブートローダは、可変ファームウェアヘッダのハッシュを計算する。MCUにおいて実行される可変ファームウェアが、信頼できる組織によって署名されていることを保証するために、公開ファームウェア署名鍵を使用して、可変ファームウェアヘッダのハッシュに対する署名を検証する。検証が成功すると、可変ファームウェアバイナリのハッシュが計算される(716)。現時点では、ファームウェアパッケージヘッダが、ファームウェアパッケージバイナリと一致するか否かは不明である。ファームウェアパッケージヘッダが、ファームウェアパッケージバイナリと一致することを確認するために、MCU不変ブートローダは、MCU可変ファームウェアバイナリのハッシュ(716)が、ファームウェアヘッダに格納されているハッシュと一致する(ファームウェアヘッダに格納されているハッシュは、本明細書で説明された処理の前半ですでに認証されているMCUファームウェアのハッシュである)ことを確認する(718)。一致が成功である場合、処理は確認に進む(720)。一致が不成功である場合、処理は中断する。
【0064】
動作720において、MCU不変ブートローダは、SMCUにおいて準備完了フラグが時間Y内に高に設定されているか否かを確認する。高に設定されていない場合、MCU不変ブートローダは動作728に進み、ランタイムセキュリティ構成を適用する。
【0065】
動作720において、準備完了フラグが時間Y内に高に設定された場合、MCU不変ブートローダは、動作714において初期化されたインターフェースを介して測定値をSMCUに転送する(724)。測定値は、可変ファームウェアバイナリのハッシュである。時間Yは、SMCUが動作800~704を実行するのに十分である。
【0066】
測定値の転送後、MCU不変ブートローダは、ランタイムセキュリティ構成を適用し(728)、MCUファームウェアに制御を移す(730)。
【0067】
動作702の後、SMCU不変ブートローダは、指定された時間内にMCU測定値を受信したか否かを確認する(802)。動作802において指定された時間は、MCUが、動作724までの動作を実行するのに十分長い任意の時間である。指定された時間内にMCU測定値を受信していない場合、動作710に進み、SMCUがブートできるように独自のブートシーケンスを進める。
【0068】
動作802における確認により、測定値が時間内に受信されたことが判明した場合、SMCU不変ブートローダは、動作804において、SMCU有効フラグを真に設定する。次に、SMCU不変ブートローダは、動作710に進み、独自のブートシーケンスを進める。
【0069】
図8の例では、MCUファームウェアのハッシュは、MCU可変ファームウェアの測定値であり、SMCUに転送される。いくつかの例では、MCUファームウェア署名公開鍵のハッシュ、MCU、プロセッサ、および処理ユニットカードのシリアル番号、MCU可変ファームウェアの署名、MCU可変ファームウェアのセキュリティバージョン番号のうちの1つまたは複数などの追加情報が、可変ファームウェアバイナリのハッシュとともに(転送動作724において)転送される。
【0070】
例では、情報転送がいつ完了するかを、MCUとSMCUとの双方が知ることができるように、転送される情報のサイズは、MCUとSMCUとの両方に事前に知られている。
【0071】
図7に関して、SMCUのブートシーケンスは、検証器124へ真正証明を送信することを備える。真正証明は、他の属性の中でも特に、(DICEプロトコルおよびRIoTプロトコルにしたがう)可変SMCUファームウェアの測定値のみならず、時間内に受信された場合のMCUにおける可変ファームウェアの測定値も含む。例では、真正証明にSMCU有効フラグが含まれているため、検証器は、ブートハンドシェイクが成功したか否かを知ることができる。別の例では、何れにせよ検証器がブランク測定値を検証しないため、SMCU有効フラグは、真正証明に含まれず、図8の方法から完全に省略される。測定値を使用して、検証器は、MCUおよびSMCUにおける可変ファームウェアが、従来の検証方法を使用して、期待通りであることを確認することができる。
【0072】
図7に関して、図8の実施形態では、SMCUが自身のリセットを望む場合、SMCUは、MCUにメッセージを送信して、MCUのハードリセットを要求する(これは、SMCUのハードリセットもトリガする)。このようにして、MCUは、プロセッサとのインターフェースを休止し、SMCUとMCUとの両方が、不変ブートローダのリセットおよび実行を行う。
【0073】
図8を参照して示すように、SMCUの少なくとも3つのシナリオがある。第1のシナリオでは、SMCUは、MCUから測定値を受信する準備ができていることをシグナルし(704で準備完了フラグを高に設定し)、SMCUは実際に測定値を受信する(706)。この場合、SMCU有効フラグは真に設定され、安全な動作を継続できるようになる。
【0074】
第2のシナリオでは、SMCUは、測定値を受信する準備ができていないことをシグナルする。この場合、決定点720においてMCUにおいて準備完了フラグが受信されず、MCUは、ランタイムセキュリティ構成を適用する(728)。SMCUには、SMCU有効フラグが設定されていないため、それに応じて、安全な動作の設定を回避するように動作できる。
【0075】
第3のシナリオでは、SMCUは、測定値を受信する準備ができていることをシグナルする(704で準備完了フラグを高に設定する)が、確認802において、指定された時間内にMCUから測定値を受信しない。この状況では、SMCUは動作710において独自のブートシーケンスを進める。SMCUにはSMCU有効フラグが設定されていないため、それに応じて、安全な動作の設定を回避するように動作できる。
【0076】
本明細書に記載される他の例の代わりに、またはそれに加えて、例は、以下の任意の組合せを含む。
【0077】
項目A。コンピューティングデバイスであって、
第1の不変ブートローダおよび第1の可変ファームウェアを備える第1のマイクロコントローラであって、第1の不変ブートローダは、第1の可変ファームウェアの真正証明を生成するために、コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットを使用する、第1のマイクロコントローラと、
第2のマイクロコントローラと、
第2のマイクロコントローラにおける第2の可変ファームウェアと、
第2のマイクロコントローラが再起動するたびに、第2の可変ファームウェアの測定値を第1の不変ブートローダに送信し、第1のマイクロコントローラが、測定値を真正証明に含めることができるようにする、第2のマイクロコントローラにおける第2の不変ブートローダとを備える。
【0078】
項目B。項目Aのコンピューティングデバイスであって、第1のマイクロコントローラのリセットピンは、第2のマイクロコントローラのリセットピンに電気的に結合される。
【0079】
項目C。項目Bのコンピューティングデバイスであって、第2のマイクロコントローラは、電気的結合に接続された出力を有し、第2のマイクロコントローラは、それ自体の、および第1のマイクロコントローラのハードリセットをトリガするために、電気的結合に沿って出力から電気パルスを送ることができる。
【0080】
項目D。項目Cのコンピューティングデバイスであって、電気的結合は、第2のマイクロコントローラによって結合に送られるパルスを延長するパルス延長器を備える。
【0081】
項目E。項目Dのコンピューティングデバイスであって、パルス延長器は、オープンドレインバッファ、抵抗、およびコンデンサを備える。
【0082】
項目F。前述した何れかの項目のコンピューティングデバイスであって、第2の不変ブートローダは、第2のマイクロコントローラにおけるソフトリセットに応答して、第1のマイクロコントローラと第2のマイクロコントローラとの両方のハードリセットをトリガする。
【0083】
項目G。前述した何れかの項目のコンピューティングデバイスであって、第1のマイクロコントローラは、第1のマイクロコントローラのリセットが要求されることに応じて、第1のマイクロコントローラと第2のマイクロコントローラとの両方のハードリセットを要求するメッセージを第2のブートローダに送信する。
【0084】
項目H。前述した何れかの項目のコンピューティングデバイスであって、第1のマイクロコントローラは、ハードリセットからの復帰に応じて、第2のマイクロコントローラへのインターフェースを初期化し、利用可能性を示すために準備完了フラグを設定し、初期化されたインターフェースを介して第2のマイクロコントローラから測定値を受信するのを待ち、測定値の受信を示すために準備完了フラグをリセットする。
【0085】
項目I。前述した何れかの項目のコンピューティングデバイスであって、第2のマイクロコントローラは、ハードリセットからの復帰に応じて、第1のマイクロコントローラへのインターフェースを初期化し、第2の可変ファームウェアの測定値を計算し、第1のマイクロコントローラの準備完了フラグが利用可能性を示すことに応じて、初期化されたインターフェースを介して測定値を第1のマイクロコントローラに転送する。
【0086】
項目J。項目Hのコンピューティングデバイスであって、第1のマイクロコントローラは、第2の可変ファームウェアの真正証明を、リモート検証器に対して利用可能にすることを備えるブートシーケンスを実行し、真正証明は、少なくとも、第2のマイクロコントローラからの測定値を使用して計算され、固有のデバイスシークレットから導出される鍵によって署名される。
【0087】
項目K。項目Jのコンピューティングデバイスであって、第2のマイクロコントローラは、測定値を第1のマイクロコントローラに転送した後、第1のマイクロコントローラの準備完了フラグが測定値の受信を示すことに応じて、ランタイムセキュリティ構成を適用する。
【0088】
項目L。前述した何れかの項目のコンピューティングデバイスであって、第2のマイクロコントローラは、ハードリセットからの復帰に応じて、第1のマイクロコントローラへのインターフェースを初期化し、第2の可変ファームウェアの測定値を計算し、事前に定義された期間後、第1のマイクロコントローラの準備完了フラグが無応答を示すことに応じて、ハードリセットコマンドを発行して、第1のマイクロコントローラと第2のマイクロコントローラとの両方のハードリセットをトリガするか、またはブートシーケンスを継続する。
【0089】
項目M。前述した何れかの項目のコンピューティングデバイスであって、第2のマイクロコントローラは、第2の可変ファームウェアの測定値を第1のマイクロコントローラに転送することに応じて、第1のマイクロコントローラの準備完了フラグを確認し、第1のマイクロコントローラが測定値を受信する準備ができており、測定値を受信していないことを準備完了フラグが示すことに応じて、ハードリセットコマンドを発行して、第1のマイクロコントローラと第2のマイクロコントローラとの両方のハードリセットをトリガする。
【0090】
項目N。項目Aのコンピューティングデバイスであって、第1のマイクロコントローラは、時間内に第2のマイクロコントローラから測定値を受信できなかったことに応じて、ブートシーケンスを進め、時間内に測定値を受信することに応じて、フラグを真に設定する。
【0091】
項目O。コンピューティングデバイスにおける方法であって、
第1のマイクロコントローラにおいて第1の不変ブートローダを使用して、第1の可変ファームウェアの真正証明を生成することであって、第1の可変ファームウェアは、第1のマイクロコントローラにあり、真正証明は、コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットから導出された鍵によって署名される、使用することと、
コンピューティングデバイスの第2のマイクロコントローラが再起動するたびに、第2のマイクロコントローラにおいて第2の不変ブートローダを使用して、第2のマイクロコントローラにおける第2の可変ファームウェアの測定値を、第1の不変ブートローダに送信し、第1のマイクロコントローラが、測定値を真正証明に含めることができるようにする、使用することとを備える。
【0092】
項目P。項目Nの方法であって、測定値を送信する前に、第1のマイクロコントローラと第2のマイクロコントローラとの両方のハードリセットをトリガするために、電気的結合に沿って第2のマイクロコントローラの出力から、電気パルスを、第1のマイクロコントローラのリセットピンおよび第2のマイクロコントローラのリセットピンに送ることを備える。
【0093】
項目Q。項目Oまたは項目Pの方法であって、第1のマイクロコントローラのリセットしきい値持続時間よりも長くなるように、パルスを延長することを備える。
【0094】
項目R。項目Nから項目Qの何れかの方法であって、第2のマイクロコントローラにおけるソフトリセットに応答して、第1のマイクロコントローラと第2のマイクロコントローラとの両方のハードリセットをトリガすることを備える。
【0095】
項目S。項目Nから項目Qの何れかの方法であって、第1のマイクロコントローラのリセットが、第1のマイクロコントローラで要求されることに応じて、第1のマイクロコントローラと第2のマイクロコントローラとの両方のハードリセットを要求するメッセージを、第2のブートローダに送信することを備える。
【0096】
項目T。周辺コンピューティングデバイスであって、
少なくとも1つのプロセッサと、
第1の不変ブートローダおよび第1の可変ファームウェアを備える第1のマイクロコントローラであって、第1の不変ブートローダは、第1の可変ファームウェアの真正証明を生成するために、コンピューティングデバイスのハードウェアに焼き付けられた固有のデバイスシークレットを使用する、第1のマイクロコントローラと、
プロセッサを管理するための第2のマイクロコントローラと、
第2のマイクロコントローラにおける第2の可変ファームウェアと、
第2のマイクロコントローラが再起動するたびに、第2の可変ファームウェアの測定値を、第1の不変ブートローダに送信する、第2のマイクロコントローラにおける第2の不変ブートローダとを備え、周辺コンピューティングデバイスは、真正証明および測定値を、検証器によるアクセスのために周辺コンピューティングデバイスのホストに対して利用可能にする。
【0097】
当業者に明らかなように、本明細書で与えられる任意の範囲またはデバイス値は、求められる効果を失うことなく拡張または変更することができる。
【0098】
本開示の実施形態を実施するために説明されるシステムは、1つまたは複数のデータプロセッサによって提供され得るデータ処理装置および機能を備える。データプロセッサは、ローカルな技術環境に適した任意のタイプであることができ、非限定的な例として、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、およびマルチコアプロセッサアーキテクチャに基づくプロセッサのうち、1つまたは複数を含むことができる。データ処理は、いくつかのデータ処理モジュールに分散され得る。
【0099】
図面を参照して本明細書に説明される実施形態の少なくともいくつかの態様は、処理システムまたはプロセッサにおいて実行されるコンピュータ処理を備えるが、本発明は、コンピュータプログラム、特に、本発明を実施するために適合されたキャリア上またはキャリア内のコンピュータプログラムにも拡張される。プログラムは、非一時的なソースコード、オブジェクトコード、部分的にコンパイルされた形態などのコード中間ソースおよびオブジェクトコード、または本発明にしたがう処理の実施における使用に適した他の任意の非一時的な形態であり得る。キャリアは、プログラムを搬送することができる任意のエンティティまたはデバイスであり得る。たとえば、キャリアは、ソリッドステートドライブ(SSD)または他の半導体ベースのRAMなどの記憶媒体と、たとえばCD ROMまたは半導体ROMであるROMと、たとえばフロッピーディスクまたはハードディスクである磁気記録媒体と、光メモリデバイス全般等を備え得る。
【0100】
本明細書で説明される方法の動作は、任意の適切な順序で、または必要に応じて同時に実行され得る。それに加えて、個々のブロックは、本明細書で説明された主題の範囲から逸脱することなく、方法の何れかから削除され得る。上記で説明された例の何れかの態様は、説明された他の例の何れかの態様と組み合わせて、要求される効果を失うことなく、さらなる例を形成することができる。
【0101】
「備える」という用語は、本明細書では、特定された方法ブロックまたは要素を含むことを意味するために使用されるが、そのようなブロックまたは要素は、排他的リストを構成せず、方法または装置は、追加のブロックまたは要素を含み得る。
【0102】
上記の説明は、単なる例として与えられたものであり、当業者によって様々な変更がなされ得ることが理解されるであろう。上記の明細書、例、およびデータは、例示的な実施形態の構造および使用の完全な説明を提供する。様々な実施形態が、ある程度の特殊性を持って、または1つまたは複数の個別の実施形態を参照して上記で説明されたが、当業者であれば、本明細書の範囲から逸脱することなく、開示された実施形態に多くの変更を加えることができるであろう。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】