(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-17
(45)【発行日】2025-02-26
(54)【発明の名称】トラストアンカコンピューティング装置を備える処理システムおよび対応する方法
(51)【国際特許分類】
G06F 21/51 20130101AFI20250218BHJP
G06F 21/12 20130101ALI20250218BHJP
【FI】
G06F21/51
G06F21/12 330
【外国語出願】
(21)【出願番号】P 2020161525
(22)【出願日】2020-09-25
【審査請求日】2023-08-04
(31)【優先権主張番号】102019000017534
(32)【優先日】2019-09-30
(33)【優先権主張国・地域又は機関】IT
(73)【特許権者】
【識別番号】519437087
【氏名又は名称】マレリ ヨーロッパ エス.ピー.エー.
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】タルリ アレッサンドロ
(72)【発明者】
【氏名】チケッティ アルドゥイーノ ルイージ
(72)【発明者】
【氏名】ロザディニ クリスチャン
(72)【発明者】
【氏名】ネスシー ウォルター
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2014-059724(JP,A)
【文献】特開2009-116901(JP,A)
【文献】特開2010-182296(JP,A)
【文献】特開2005-227995(JP,A)
【文献】特開2010-274783(JP,A)
【文献】特開2000-293382(JP,A)
【文献】竹森 敬祐 ほか,セキュアブート+認証による車載制御システムの保護,電子情報通信学会技術研究報告,日本,電子情報通信学会,2014年09月12日,Vol. 114 No. 225,p. 47-54
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/51
G06F 21/12
(57)【特許請求の範囲】
【請求項1】
ホスト処理ユニットおよびホストメモリ手段を含む少なくとも1つのホストコンピューティングモジュールと、ハードウェアトラストアンカとを備える、信頼できる操作を実行するように構成された処理システムであって、前記ハードウェアトラストアンカは、それぞれのセキュア処理ユニットと、暗号化演算に専用のハードウェア処理モジュールと、セキュアストレージ手段とを備え、前記ハードウェアトラストアンカは、リアルタイムセキュアオペレーティングシステム(HOS)を格納し実行するように構成され、前記リアルタイムセキュアオペレーティングシステム(HOS)は、前記処理システムにおいて使用されているソフトウェア上で有効性チェックを実行するように構成され、
前記リアルタイムセキュアオペレーティングシステム(HOS)は、実行時にソフトウェアコードの完全性を制御する実行時真正性チェックを実行するように構成され、前記実行時真正性チェックは、少なくとも実行のために前記ハードウェアトラストアンカのプログラムメモリ内に存在する署名済みソフトウェアブロック(SSB)ならびに対応するヘッダ(SSBH)およびデータブロック(SSBD)を識別する段階と、
前記署名済みソフトウェアブロック(SSB)に関連付けられた証明書(C)の有効性をチェックする第1の段階、
前記署名済みソフトウェアブロック(SBB)のヘッダ(SSBH)の有効性をチェックする第2の段階、
前記署名済みソフトウェアブロック(SSB)のデータ(SSBD)のハッシュの有効性をチェックする第3の段階、
を実行する段階と、
前記有効性チェックのチェックする段階のうちの1つによって異常が検出された場合、前記検出された異常に関する情報をセキュアログ(SL)に書き込む段階と、
を含み、
前記リアルタイムセキュアオペレーティングシステム(HOS)は、他のホストコンピューティングモジュールまたはハードウェアトラストアンカのサービスに対して最優先されるタスク(PL)において前記実行時真正性チェックを実行するように構成される、システム。
【請求項2】
前記実行時真正性チェックは、前記ホストコンピューティングモジュールの不揮発性メモリ内に存在する前記署名済みソフトウェアブロック(SSB)にも適用される、請求項1に記載のシステム。
【請求項3】
前記リアルタイムセキュアオペレーティングシステム(HOS)は、他のホストコンピューティングモジュールまたはハードウェアトラストアンカのサービスに対して最優先される所与の期間(T)を有する定期的なタスク(PL)において前記実行時真正性チェックを実行するように構成され、前記チェックする段階は、各期間(T)に実行される構成可能な持続時間(DH)の複数のサブ段階に分割される、請求項1または2に記載のシステム。
【請求項4】
前記署名済みソフトウェアブロック(SSB)に関連付けられた証明書(C)の有効性をチェックする前記第1の段階は、前記ハードウェアトラストアンカに格納されることになる任意の新たな証明書が、自己署名証明書でない限り、前記ハードウェアトラストアンカに格納された別の証明書に対して検証されることを含む、請求項1に記載のシステム。
【請求項5】
前記署名済みソフトウェアブロック(SSB)のヘッダ(SSBH)の有効性をチェックする前記第2の段階は、現在の前記署名済みソフトウェアブロック(SBB)のヘッダ署名フィールドを検証する段階を含む、請求項1に記載のシステム。
【請求項6】
前記署名済みソフトウェアブロック(SSB)のデータ(SSBD)のハッシュの有効性をチェックする前記第3の段階は、特にハッシュエンジンによって、暗号化ハードウェアアクセラレーションモジュール内の前記データブロック(SSBD)にわたってハッシュ値を計算する段階と、前記ハッシュ値と、前記データブロックにわたって計算された適合ダイジェストを規定するハッシュ値を格納するヘッダ(SSBH)内のフィールドの内容とを比較する段階とを含む、請求項1に記載のシステム。
【請求項7】
前記リアルタイムセキュアオペレーティングシステムは、タスク実行に使用される前記ハードウェアトラストアンカの揮発性メモリのスタック(SS)に対して、使用されたスタック(SS)の量を静的境界に対してチェックする段階を含むスタックオーバーフロー検出手順を実行するように構成される、請求項1に記載のシステム。
【請求項8】
前記リアルタイムセキュアオペレーティングシステムは、タスク最悪実行時間(C)の違反をチェックする段階であって、前記タスクの所与のインスタンスに関する前記タスク最悪実行時間(C)の値は、オフライン時間解析によって与えられる、段階と、前記チェックする段階によって異常が検出された場合、前記検出された異常に関する情報をセキュアログ(SL)に書き込む段階とを含む、リアルタイム検出手順を実行するように構成される、請求項1に記載のシステム。
【請求項9】
前記少なくとも1つのホストコンピューティングモジュールおよびハードウェアトラストアンカは、システムオンチップの一部であり、特に、前記少なくとも1つのホストコンピューティングモジュールは、車両内で動作するECUである、請求項1に記載のシステム。
【請求項10】
前記検出された異常に関する情報を前記セキュアログ(SL)に書き込む段階は、前記検出された異常に関する情報を含むセキュアログ(SL)を作成する段階、または、前記セキュアログ(SL)内に前記異常を書き込む段階を含む、請求項1に記載のシステム。
【請求項11】
請求項1~10のいずれか1項に記載の前記処理システムにおいて使用されているソフトウェア上で有効性チェックを実行するリアルタイムセキュアオペレーティングシステム(HOS)を格納し実行することを含む、前記処理システムにおいて信頼できる操作を実行する方法であって、前記方法は、実行時にソフトウェアコードの完全性を制御する実行時真正性チェックを実行する段階を含み、前記実行時真正性チェックは、少なくとも実行のために前記ハードウェアトラストアンカのプログラムメモリ内に存在する署名済みソフトウェアブロック(SSB)ならびに対応するヘッダ(SSBH)およびデータブロック(SSBD)を識別する段階と、
各署名済みソフトウェアブロック(SSB)について、
前記署名済みソフトウェアブロック(SSB)に関連付けられた証明書(C)の有効性をチェックする第1の段階、
前記署名済みソフトウェアブロック(SBB)のヘッダ(SSBH)の有効性をチェックする第2の段階、
前記署名済みソフトウェアブロック(SSB)のデータ(SSBD)のハッシュの有効性をチェックする第3の段階、
を実行する段階と、
前記有効性チェックのチェックする段階のうちの1つによって異常が検出された場合、前記検出された異常に関する情報をセキュアログ(SL)に書き込む段階と、
を含み、
前記リアルタイムセキュアオペレーティングシステムは、他のホストコンピューティングモジュールまたはハードウェアトラストアンカのサービスに対して最優先されるタスク(PL)において前記実行時真正性チェックを実行するように構成される、方法。
【請求項12】
前記方法は、請求項2~
10のいずれか1項に記載のシステムの前記操作を含む、請求項
11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本説明は、ホスト処理ユニットおよびホストメモリ手段を含む少なくとも1つのホストコンピューティングモジュールとハードウェアトラストアンカとを備え、信頼できる操作を実行するように構成された処理システムに関する。少なくとも1つのホストモジュールとハードウェアトラストアンカとを備える処理システムは、特に上記少なくとも1つのホストモジュールが車両内で動作するECUである場合、システムオンチップの一部であることが好ましい。
【背景技術】
【0002】
ハードウェアトラストアンカ(HTA)は、トラストチェーンを開始すると共に、システムに不可欠な機能と、スタートアッププロセスおよび不正操作が検出された場合のプロセスのシャットダウンの予防的なモニタリングを含むセキュリティ機能との両方を実行する、ローカルな隔離されたコンピューティングデバイスである。
【0003】
一般的な自動車のシナリオにおいて、電子制御ユニット(ECU)のような処理システムは、車両機能のためのアプリケーション処理ユニット、すなわち、アプリケーションコアと、セキュリティサポートのためのHTAとから構成された、1つまたは複数のSoC(システムオンチップ)に基づくものである。したがって、ECUを外部からの攻撃(車両機能の認証されていないアクティベーション、慎重に扱うべきキー材料の読み出し、ソフトウェアの操作など)に対してハードニングするために、ハードウェアトラストアンカ技術(HTA)が使用されている。
【0004】
HTAは、HTA側の基本的なセキュリティを高めるために使用されるメカニズムのセットが埋め込まれ、したがってセキュリティハードニングリアルタイムオペレーティングシステムと呼ばれる、リアルタイムオペレーティングシステム(RTOS)を使用する処理ユニットを含んでよい。コンピューティングにおいて、ハードニングとは通常、表層の脆弱性を低めることによってシステムのセキュリティを確保するプロセスである。
【0005】
したがって、これらの保護技術は、より効果的に攻撃を検出/攻撃に反応し、それらの攻撃のエクスプロイトを実行する能力を制限するように構成されている。
【0006】
HTAは、
・キー管理、
・証明書管理、
・暗号化演算、
・ソフトウェア保護(セキュアブートおよびセキュア更新)、
・慎重に扱うべきデータの読み取りおよび書き込みのためのアクセスメカニズムおよびデータの可視性を低めるための暗号化技術を用いたデータ保護(セキュアストレージおよびセキュア通信)、
などの、機密かつ慎重に扱うべき情報を伴うセキュリティ操作のために使用される。
【0007】
したがって、その結果、セキュリティハードニングリアルタイムオペレーティングシステムは、
・複数のセキュア操作を同時に実行し、
・いくつかの所定のロジックおよびスケジューリングポリシに従って、様々なエンティティ(プロセスまたはタスク)の間で切り替え、
・機密性(情報の隔離)を保証および維持し、
・一般機能が実行されることおよびその実行時間が分かることを保証する、
ことが可能であるべきである。
【0008】
HTAのために使用されるセキュリティハードニングリアルタイムオペレーティングシステムは、静的で変更不可能な動作環境であってよい。これはつまり、アプリケーションの実行中は、アプリケーションのオブジェクト、タスク、イベント、リソースを作成または削除できないことを意味する。セキュアシステムにおいては、データおよび他のメモリセクションの正確性(完全性)が基本的な要件であるべきである。
【0009】
今日、ほとんどの自動車ECUは、アプリケーションソフトウェアまたはデータをいつでも更新可能であるように、ソフトウェアのダウンロードをサポートしている。OEM要件に応じて、新しいソフトウェアが有効であることを保証するためにソフトウェアのダウンロード中に、ソフトウェアが依然として有効であることを保証するためにECUの電源オン中に、またはこれら2つの組み合わせで、いくつかのチェックが実行される。有効性情報をハンドリングするための種々の方法が存在する。
【0010】
例えば、通常安全性の理由で要求される、完全性チェックが行われてよい。完全性チェックは、不揮発性ソフトウェアデータにわたって計算され、基準値と比較される、チェックサム/CRC(巡回冗長検査)に基づくものである。チェックサムが正しければ、全ソフトウェアブロックの完全性が想定される。ところで、CRCのようなチェックサムアルゴリズムは、チェックサムの計算時に秘密パラメータが関与しないので、真正性チェックを提供するものではない。
【0011】
そのような真正性チェックは、その代わりに、(例えば、セキュリティ関連ECUにおいてまたは調整保護として)正当なソースからのソフトウェアまたはデータのみがECUにおいて使用されることを要求するいくつかのECUによって要求される。認証は、不揮発性ソフトウェアデータにわたる暗号署名の計算によって通常実行される。署名は、OEMまたはECUいずれかの供給業者によって供給され得る。
【0012】
署名計算アルゴリズムは、ダウンロードされたソフトウェアの完全性および真正性を確実にするために、モジュール122a~122eにおいて実行されるもののようなハードウェアベースの、またはソフトウェアベースの、ハッシュ計算と暗号化ルーチンとを組み合わせたものである。上記ハードウェアトラストアンカ(HTA)がモジュール122a~122bを含まないか、またはそれらのうちのサブセットのみを含む場合、コンピュテーションはソフトウェアにおいて実行され、暗号化演算を実行するために特別なハードウェアは必要とされない。上記の方法は、実行時に有効性情報をチェックするためにも使用することができる。
【0013】
現在、単に安全性要件を満たすために、完全性チェックのみが実行時に使用されている。しかし依然として、このような方法では、ECU自体の通常の動作中に元のECUに対する操作を検出することはできない。
【0014】
[目的および概要]
1つまたは複数の実施形態の目的は、先行技術により達成可能な解決策に内在する制限を解消することである。
【0015】
1つまたは複数の実施形態によれば、この目的は、請求項1に規定された特徴を有するシステムによって達成される。1つまたは複数の実施形態は、対応するシステムに関するものであってよい。
【0016】
特許請求の範囲は、様々な実施形態に関連して本明細書に提供された技術的教示の必須の部分をなす。
【0017】
本明細書に記載される解決策によれば、解決策は、ホスト処理ユニットおよびホストメモリ手段を含む少なくとも1つのホストコンピューティングモジュールと、ハードウェアトラストアンカとを備える、信頼できる操作を実行するように構成された処理システムであって、上記ハードウェアトラストアンカは、それぞれのセキュア処理ユニットと、暗号化演算に専用のハードウェア処理モジュールと、セキュアストレージ手段とを備え、上記ハードウェアトラストアンカは、リアルタイムセキュアオペレーティングシステムを格納し実行するように構成され、上記リアルタイムセキュアオペレーティングシステムは、上記処理システムにおいて使用されているソフトウェア上で有効性チェックを実行するように構成され、上記リアルタイムセキュアオペレーティングシステムは、実行時にソフトウェアコードの完全性を制御する実行時真正性チェックを実行するように構成され、上記実行時真正性チェックは、少なくとも実行のために少なくとも上記ハードウェアトラストアンカのプログラムメモリ内に存在する、また最終的には上記ホストコンピューティングモジュールのプログラムメモリ内にも存在する、署名済みソフトウェアブロックならびに対応するヘッダおよびデータブロックを識別する段階と、各署名済みソフトウェアブロックについて、上記署名済みソフトウェアブロックに関連付けられた証明書の有効性をチェックする第1の段階、上記署名済みソフトウェアブロックのヘッダの有効性をチェックする第2の段階、上記署名済みソフトウェアブロックのデータのハッシュの有効性をチェックする第3の段階、を実行する段階と、上記有効性チェックのチェックする段階のうちの1つによって異常が検出された場合、上記検出された異常に関するセキュアログ情報を書き込む段階と、を含み、上記リアルタイムセキュアオペレーティングシステムは、他のホストコンピューティングモジュールまたはハードウェアトラストアンカのサービスに対して最優先されるタスクにおいて上記実行時真正性チェックを実行するように構成される、システムに関する。
【0018】
また、本明細書に記載される解決策は、上記処理システムにおいて使用されているソフトウェア上で有効性チェックを実行するリアルタイムセキュアオペレーティングシステムを格納し実行することを含む、上記処理システムにおいて信頼できる操作を実行する対応する方法であって、上記方法は、実行時にソフトウェアコードの完全性を制御する実行時真正性チェックを実行する段階を含み、上記実行時真正性チェックは、実行のために上記ハードウェアトラストアンカのプログラムメモリ内に存在する、また最終的にはホストコンピューティングモジュールのプログラムメモリ内にも存在する、署名済みソフトウェアブロックならびに対応するヘッダおよびデータブロックを識別する段階と、各署名済みソフトウェアブロックについて、上記署名済みソフトウェアブロックに関連付けられた証明書の有効性をチェックする第1の段階、上記署名済みソフトウェアブロックのヘッダの有効性をチェックする第2の段階、上記署名済みソフトウェアブロックのデータのハッシュの有効性をチェックする第3の段階、を実行する段階と、上記有効性チェックのチェックする段階のうちの1つによって異常が検出された場合、上記検出された異常に関するセキュアログ情報を書き込む段階と、を含み、上記リアルタイムセキュアオペレーティングシステムは、他のホストコンピューティングモジュールまたはハードウェアトラストアンカのサービスに対して最優先されるタスクにおいて上記実行時真正性チェックを実行するように構成される、方法に関する。
【図面の簡単な説明】
【0019】
以下、添付図面を参照しながら単に非限定的な例によって実施形態を説明する。
【
図1】本明細書に開示された処理システムの一実施形態を概略的に示す図である。
【
図2】本明細書に開示された処理システムによって使用されるメモリのアドレス空間を概略的に示す図である。
【
図3】本明細書に開示された処理システムによって使用されるメモリのメモリエリアを概略的に示す図である。
【
図4】本明細書に開示された処理システムによって実装される真正性チェック手順のフロー図である。
【
図5】本明細書に開示された処理システムの複数の操作フェーズを表すタイミング図である。
【
図6】本明細書に開示された処理システムのメモリのスタックのブロック図である。
【
図7】本明細書に開示された処理システムによって実装されるスタックオーバーフロー制御手順のフロー図である。
【
図8】本明細書に開示された処理システムによって実装される検出手順のフロー図である。
【発明を実施するための形態】
【0020】
以下の記載は、実施形態の深い理解をもたらすことを目的とした様々な具体的な詳細を説明するものである。実施形態は、具体的な詳細のうちの1つまたは複数を伴わずに実装されてもよいし、または他の方法、構成要素、材料などと共に実装されてもよい。他の場合において、既知の構造、材料または操作は、実施形態の様々な側面を不明瞭にしないように、詳細には図示または説明されない。
【0021】
本説明の枠組みにおいて、「一実施形態」または「1つの実施形態」への言及は、その実施形態に関連して記載された特定の形態、構造または特性が、少なくとも1つの実施形態に含まれることを示すことを意図している。同様に、本説明の様々な箇所に存在し得る「一実施形態において」または「1つの実施形態において」などの語句は、必ずしも1つの同じ実施形態を指すものではない。さらに、特定の形態、構造または特性は、1つまたは複数の実施形態において適切に組み合せることができる。
【0022】
本明細書において使用される参照符号は、単に便宜上のものとして意図されており、したがって、保護範囲または実施形態の範囲を画定するものではない。
【0023】
図1には、例えば、車両のエンジンの制御系統または他の機能部における、例えば、自動車用途のSoC上のECUに対応することができる処理システム10が示されており、処理システム10は、アプリケーション処理ユニット、すなわちアプリケーションコア11と、ハードウェアトラストアンカ(HTA)12とを備える。アプリケーションコア11は、不揮発性メモリ111と、RAMメモリ112と、例えば、車両バスと通信するためのバスインターフェース114と、アプリケーションCPU113とを備える。HTA12は、セキュア不揮発性メモリ121bおよびセキュアRAMメモリ121aを含むセキュアストレージ121を備える。HTA12は、セキュア処理ユニット123と、HTAインターフェースモジュール124と、暗号化ハードウェアアクセラレーションモジュール122とをさらに備え、暗号化ハードウェアアクセラレーションモジュール122は、ソフトウェアデータのハッシュ値をコンピュートするためのハッシュエンジン122aと、対称暗号アルゴリズムを実行するための対称暗号エンジン122bおよび非対称暗号アルゴリズムを実行するための非対称暗号エンジン122cと、TRNGおよび/またはPRNGを含んでよいランダム生成器モジュール122dと、カウンタモジュール122eとを含んでよい。
【0024】
セキュリティハードニングリアルタイムオペレーティングシステムソフトウェアは、それ自体はソフトウェアであり、メモリすなわち下記のセクションにおいて
図2に示されるようなセキュアストレージ121内に、通常は分割されている。
図2は、HOSと共にまとめて示されているオペレーティングシステムが存在する、HTA12のメモリ121のアドレス空間を概略的に示している。
-テキストまたはソースコードTXS:プログラムの実行可能コードを格納するメモリエリア。メモリのこのブロックは、通常は読み取り専用である。
-データまたはデータフラッシュDT:プログラマによって初期化された静的/グローバル変数を格納するメモリエリア。これは、さらには、OSアプリケーションがプライベートデータを有することができるメモリのセクションである。
【0025】
BSS(Block Started by Symbol)メモリBS:初期化されていない静的/グローバル変数を格納するメモリエリア。このセグメントは、オペレーティングシステムによってゼロで満たされ、したがって、全ての初期化されていない変数がゼロで初期化される。ヒープメモリHP:ヒープは、ダイナミックメモリアロケーションのための空間を提供するのに使用される。
【0026】
スタックSS:これは、returnなどの関数呼び出しに関連する機能部、レジスタおよびデータ内で定義されたローカル変数が、タスク実行中にプッシュされる揮発性メモリ(RAM)121aのセクションである。各タスクは、固有のスタックエリアを有することができる。
【0027】
テキストメモリエリアTXSおよびデータメモリエリアDTは、不揮発性メモリ121bであり、それに対して、BBSメモリエリアBS、ヒープメモリエリアHP、およびスタックSSは、揮発性メモリ121aである。
【0028】
本明細書に記載されるHTAのためのセキュリティハードニングリアルタイムオペレーティングシステムは、
-真正性の特性が暗号を介してチェックされる、不揮発性メモリのための実行時真正性チェック手順500、
-使用されたスタックSSの量が静的境界に対してチェックされる、スタックSS(揮発性メモリ121a)のためのスタックオーバーフロー検出手順600、
を含む様々な特定の手順を通して、不揮発性メモリおよび揮発性メモリをチェックするように構成される。
【0029】
実行時真正性チェック手順500は、実行時に制御下のコードの完全性を維持することからなる、真正性方法に基づくハードニング技法である。これは、スタートアップを含む通常のシステム動作と並行に行われ、真正性がトラストルートから開始して検証され、他の時には、外部イベント(コードの一部の更新など)に関係し得る頻度で、または所定の定期的メカニズムで、またはHTAの非アクティブ時間を利用して、実行することができる。
【0030】
このようにして、ハードニングリアルタイムオペレーティングシステムは、侵入されたシステムが、それ自体のメモリ内容に不正を行うのを防止する。
【0031】
このハードニング技法は、
図1に示されるように、HTAが、ECUのフラッシュメモリへのフルアクセスを有する1つの追加のコアとして得られていることを利用する。結果として、単に上記ハードウェアトラストアンカ不揮発性メモリをチェックするために開発された実行時真正性チェック手順500は、ホストコア上で実行されている安全性に不可欠なアプリケーションにいかなる影響または遅延も生じさせることなく、フラッシュメモリ全体のコード完全性を実証するように構成することができる。
【0032】
この理由で、また説明を一般化するために、本明細書では、実行時真正性チェック手順500は、フラッシュメモリ全体をチェックするように構成されたものと想定されている。
【0033】
実行時真正性チェック手順500は、署名済みSWブロックに基づく検証メカニズムと、証明書とを使用する。
【0034】
ホスト11の不揮発性メモリ111およびHTA12の不揮発性メモリ121bを概略的に示す
図3に示すように、署名済みSWブロックSSB、すなわちデータの真正性および完全性を提供するデジタル署名が付与されたソフトウェアブロックは、ホスト11およびハードウェアトラストアンカ12の不揮発性メモリ111および121b、特にフラッシュメモリ内のプログラムメモリにそれぞれ格納され、証明書Cと、最終的には、下記でより良く説明される検出された異常についての情報を与えるセキュアログSLとは、例えば、プログラムフラッシュメモリおよびデータフラッシュメモリを含む、全ての慎重に扱うべきデータ(例えば、キー)を格納するためにも使用されるセキュアストレージ121内の不揮発性メモリ121bに格納される。
【0035】
署名済みSWブロックSSBは、ハードウェアトラストアンカ12のフラッシュメモリにプログラムされた、また最終的にはホスト11、具体的にはECUにもプログラムされた、バイナリデータに対応する。
【0036】
ECUには、いくつかの署名済みSWブロックSSBが存在する。ホストおよびHTAはどちらも、プログラムフラッシュメモリおよびデータフラッシュメモリを含むそれぞれの不揮発性メモリを有し、したがって、SSBは、ホストおよびHSMに分散されてよい。ホストおよびHTAは、異なる時間に実行され、異なる目的を有する。例えば、ホストのフラッシュメモリにおいて、ブートローダBL:いずれのアプリケーションコードの前に実行される1つのコードである。アプリケーションAPP:ブートローダの後に実行される1つのコードである。
【0037】
キャリブレーションCLB:アプリケーションが適切に動作するために必須のデータを含む1つのコードである。ハードウェアトラストアンカのフラッシュメモリにおいて、ブート:いずれのオペレーティングシステムが動作する前に実行される1つのコードである。
【0038】
アプリケーションAPP:オペレーティングシステムが動作した後に実行される1つのコードである。この1つのコードは、リアルタイムオペレーティングシステムを含んでよい。
【0039】
各署名済みSWブロックSSBは、ヘッダSSBHおよびデータSSBDという2つのセクションを有するメタデータと呼ばれるある情報と関連付けられる。
-ヘッダSSBHフィールドは、ブロックの内容および全ての暗号ハッシュおよび署名についての情報を含み、
-データSSBDフィールドは、真正性および完全性の証明が必要と判定されたデータのブロックである。
【0040】
証明書(またはデジタル証明書)は、通信目的ならびに所有権および有効性を証明するのに使用されるカプセル化されたパブリックキーである。証明書は、証明書の内容の信頼性を伝えるために、認証機関によって署名されている。
【0041】
証明書は、非限定的な例によれば、X.509v3証明書に準拠し、ASN.1 DERフォーマットにエンコードされている。
【0042】
例えば、ECUの観点から最高位の証明書を表し、別の証明書に対して有効性を確認され得ない、HTAにおけるルート証明書が存在し得る。ECUの観点から中間の証明書を表し、このようなルート証明書に対して有効性を確認される、ホストにおいて実行されているアプリケーションソフトウェアおよびホストソフトウェア自体(例えば、ブートローダ)の証明書が存在する。
【0043】
一般的に、実行時真正性チェック手順500は、ホストによって要求される他の実行時サービスと干渉しないようにHTA12に実装された低優先度タスク(すなわち、バックグラウンドタスク)である。特に、実行時真正性チェック手順500は、それらの実行について許容された遅延を超えるべきでない。
【0044】
しかしながら、HTA12に多数の操作を要求する攻撃者または要求が過度に厳しいホスト11が実行時真正性チェック500の実行を妨げる可能性も回避するとともに、ソフトウェアの不正操作を検出することが必要である。同時に、フラッシュ全体を検証する時間が所定の値を超えることを回避しなければならない。
【0045】
これらの正反対のビジョンを融合させるために、実行時真正性チェックは、他のホスト/HTAのサービスに対して最優先される定期的なタスクにおいて実行され、チェックは、構成可能な持続時間のn個の段階に分割される。
図4には、実行時真正性チェック手順500を示すフロー図が示されている。
【0046】
実行時真正性チェック500は、段階505にて、実行のために上記ハードウェアトラストアンカ12のプログラムメモリ内に存在し、また最終的にはホスト11のプログラムメモリ111内にも存在する、署名済みソフトウェアブロックSSBならびに対応するヘッダSSBHおよびデータブロックSSBDを識別する段階と、段階510にて、各署名済みソフトウェアブロックSSBj(jは、識別される署名済みソフトウェアブロックSSBのゼロから数Nまでの署名済みブロックの識別インデックスである)について、各署名済みSWブロックSSBに関連する各証明書Cの有効性のチェックを実行する段階とを含む。各証明書の有効性のチェックは、HTA12に格納されることになる任意の新たな証明書が、自己署名証明書でない限り、HTA12に格納された別の証明書に対して検証されなければならないことを含む。
【0047】
次に、段階520にて、現在の署名済みSWブロックSSBj、HeaderSignatureのヘッダ署名フィールドSSBHが検証され、これにより、ブロックのヘッダの内容の真正性および完全性を保証する。このフィールドは、ヘッダの始点からその長さにわたってデジタル署名を含む。
【0048】
次に、段階530にて、現在の署名済みSWブロックコードSSBjブロックハッシュが検証される。現在の署名済みSWブロックコードのヘッダ内のファイルダイジェストフィールドは、データブロックにわたって計算された適合SHA-256ダイジェストを規定し、チェックは、ファイルダイジェストフィールドが、特に暗号化ハードウェアアクセラレーションモジュール122内のデータブロックにわたって実行時真正性チェックによって、特にハッシュ値をコンピュートするためのハッシュエンジン122aによって計算された適合SHA-256ダイジェストに等しい場合にのみ、合格となる。
【0049】
チェックする段階510、520または530において異常が検出された場合、段階550にて、チェック中にSSBに関してセキュアログSLが既に作成されているかがチェックされる。否であれば、段階560にて、HTA12のデータメモリ(不揮発性メモリ121b)内にセキュアログSLが作成され、その中に、検出された異常についての情報が書き込まれる。すなわち、セキュアログ記録が呼び出され、そうでなければ、既に作成されたセキュアログSLが更新される。一般に、このような有効性のチェック段階510、520、530のうちの1つが異常を検出したら、検出された異常に関するセキュアログSL情報の書き込みが実行される。
【0050】
図5には、ホスト11によりHTA12に対して要求されるサービスの実行の持続時間DHを所与として、認証手順500の一部が持続時間のインターバルDRの間に実行されることを示す時間図が示されている。期間Tは、様々なホストサービスのサービス持続時間DHを含むような長さを有する。
【0051】
したがって、すぐ上で説明したように、一実施形態において、信頼できる操作を実行するように構成された処理システム10は、ホスト処理ユニット113ならびに例えば揮発性および不揮発性のホストメモリ手段111、112を含む、少なくとも1つのホストコンピューティングモジュール11と、ハードウェアトラストアンカ12とを備える。ハードウェアトラストアンカ12は、それぞれのセキュア処理ユニット123と、暗号化演算に専用のハードウェア処理モジュール122と、セキュアストレージ手段121とを含む。ここで、ハードウェアトラストアンカ12は、リアルタイムセキュアオペレーティングシステムHOSを格納し実行するように構成される。リアルタイムセキュアオペレーティングシステムHOSは、処理システム10において使用されているソフトウェア上で有効性チェックを実行するように構成される。上記セキュアオペレーティングシステムは、具体的には、実行時のソフトウェアコードの完全性を制御する実行時真正性チェック500を実行するように構成される。上記実行時真正性チェック500は、少なくとも実行のために上記ハードウェアトラストアンカコンピューティングモジュール12のプログラムメモリ、すなわち不揮発性メモリ121b内に存在する、また最終的にはホストのプログラムメモリ、すなわち不揮発性メモリ111内にも存在する、署名済みソフトウェアブロックSSBならびに対応するヘッダSSBHおよびデータブロックSSBDを識別する段階505と、各署名済みソフトウェアブロックSSBについて、上記署名済みソフトウェアブロックSSBに関連付けられた証明書Cの有効性をチェックする第1の段階510、上記署名済みソフトウェアブロックSSBのヘッダSSBHの有効性をチェックする第2の段階520、上記署名済みソフトウェアブロック(SSB)のデータSSBDのハッシュの有効性をチェックする第3の段階530を実行する段階と、および、このような有効性をチェックする段階510、520、530のうちの1つによって異常が検出された場合、検出された異常に関するセキュアログSL情報を書き込む段階、すなわち、検出された異常に関する情報を含むセキュアログSLを作成する段階、または、このようなセキュアログSLに異常を書き込む段階と、を含む。セキュアオペレーティングシステムHOSは、他のホスト11またはハードウェアトラストアンカ12のサービスに対して最優先されるタスクPLにおいて上記実行時真正性チェック500を実行するように構成される。処理システム10は、言及したようなスタックオーバーフロー検出手順600も実施する。
【0052】
同時に実行が必要な複数のスケジュール可能エンティティをハンドリングするために、オペレーティングシステムは、マルチプロセッシングを実装する。プロセス(またはセキュアハードニングリアルタイムオペレーティングシステム内のタスク)は、独立したスケジュール可能コードのシーケンスを含む独立した実行スレッドである。セキュアハードニングリアルタイムオペレーティングシステムを確立するこれらのエンティティは、パフォーマンス(時間およびメモリオーバーヘッド)を犠牲にして、CPU実行時間を得るために独立して競合し得る。各タスクは、関数呼び出しに関連する機能部、レジスタおよびデータ内で定義されたローカル変数を格納する揮発性メモリの固有の専用エリアを有する。
【0053】
スケジューラは、1つのタスクの実行から別のタスクの実行に切り替えることを望む場合、古いタスクのコンテキストを保存し、新たなタスクのコンテキストをロードしなければならない。タスクのコンテキストは、タスクが使用するレジスタ(プログラムカウンタ、スタックポインタ、他の作業レジスタ)のセットである。特に、このレジスタのうちの1つ(スタックポインタ)は、現在使用されているスタック領域に対するポインタである。システムの正しい動作のためには、異なるスタック領域間で干渉がないことを確実にすることが不可欠である。スタックの干渉は、悪意のあるユーザによる攻撃を受けている車両に頻発することで有名なので、この側面はセキュリティの観点から重要である。
【0054】
不揮発性メモリ内のコードおよびデータの一部の完全性チェックは、揮発性メモリに関して常に可能ではない。メモリのそれらの部分に含まれるデータは、プロセスの実行中、継続的に修正されるので、データの完全性を検証するのではなく、プロセスによって使用されているメモリ領域が事前に確立された境界を超えないことをチェックすることが好ましい。
【0055】
図6には、セキュア処理ユニット123のバンクレジスタRと、RAMメモリ121aとが示されている。RAMメモリ121a内には、プロセススタックPSSおよびメインスタックMSSを含むスタックSSが示されている。知られているように、プロセススタックまたはタスクスタックは、一般的に、リターンアドレス、プロシージャの引数、一時退避レジスタ、およびローカルに割り当てられる変数のために使用される事前予約されたシステムメモリのエリアである。処理ユニットは、一般的に、スタックポインタSTPによってスタックの上部を指し示すレジスタ、すなわちCPUレジスタRを含む。
【0056】
図示のように、プロセススタックMSS内には、それぞれのスタックサイズTSSを有する第1のタスクTAの第1のスタックSSAおよび第2のタスクTBの第2のスタックSSBが存在し、スタックサイズTSSは、プロセススタックMSS内の対応するスタック範囲を規定する。図に示されているように、第1のタスクTAの第1のスタックSSAおよび第2のタスクTBの第2のスタックSSBの両方における、例えば最後の8/16バイトに対応する、スタック範囲の最後の部分は、スタックパターンSPを表す。これについては、
図7のフロー図を参照しながら説明する。
【0057】
タスク動作の変更中、オペレーティングシステムは、どのタスクがタスクまたはスケジューラテーブルを用いて実行されているかを追跡する方法を必要とする。この場合、それには3つのルーチンが必要とされる。
-
図6に示すように、コンテキストスイッチを実行し、CPU内に存在する退出タスクレジスタ、すなわち第1のタスクTAのタスクレジスタが、第1のタスクTAのスタックエリアSSA内に保存され、次に、進入タスクレジスタ、すなわち第2のタスクTBのタスクレジスタがCPUレジスタ内の第2のタスクTBのスタックエリアSSBからリロードされ、
-システムを初期化して、セキュアリアルタイムオペレーティングシステムを構成する状態マシンおよび内部構造を更新し、
-新たなタスク、すなわち第2のタスクTBにジャンプする。
【0058】
プロセスおよびシステム実行の完全性を保証するために、タスクオーバーフロー制御のメカニズム、すなわちスタックオーバーフロー検出手順600を実行することが必要である。スタックオーバーフロー検出手順600もまた、有効なスタック領域の境界が上書きされていないことを検証する。スタックオーバーフロー検出手順600は、
図7のフロー図に示されている。
【0059】
段階610にて、タスク、例えば、TA、TBに割り当てられたスタック、例えば、SSA、SSBは、既知のパターン、すなわちシステムおよびタスクが初期化された時点でのスタックパターンSPで満たされる。
【0060】
次に、すべてのコンテキストスイッチの間に、オペレーティングシステムは、有効スタック範囲内の最後の部分、例えば、最後の8/16バイトをチェックし(620)、このパターンが変更されていないままである(上書きされていない)ことを確実にする。
【0061】
テスト段階620にて、これらのスタックの最後の部分のバイトがいずれも元の値から変更されていないことが検証された場合、段階630にて、スタックオーバーフローフック機能が呼び出される。このようなスタックオーバーフローフック機能は、異常を捕捉し、エラーコードを提起する(640)と共に、段階550と同様に異常イベント、すなわち異常を好ましくは同じログSLに記録して(650)、オペレーティングシステムに対して異常をはっきりと示す。
【0062】
手順600は、エラーを捉え、すなわちエラーを提起し、異常、すなわちほとんどのスタックオーバーフローの発生をログ記録するが、例えば、最後のバイトが書き込まれずにスタックオーバーフローが発生した場合、そのうちいくつかは見逃され得ることが想定される。
【0063】
システム10は、HTA12の機能時間内での実行を保証するために、リアルタイム検出手順700を実行するようにも構成される。このような手順700は、タスク実行をモニタして、時間が割り当てられたタイムバジェット(最悪実行時間)を超えた場合に反応する。
【0064】
このメカニズム制御および実行時真正性チェックは、大きなタイムスケールでは、完全性分析が実行されたことを検証するが、小さなタイムスケールの場合には、HOSタスクにマッピングされた全てのセキュリティ機能が実行され、時間内に実行されたことを検証する。
【0065】
システムの分析および設計の間、リアルタイムでのコードの実行を保証するために、システムがタスクをスケジューリングすることおよびハードリアルタイムの要件の非違反を可能にするように最大持続時間(タイムバジェット)が各タスクに割り当てられている。これらの実行時間の検証は、タスクの実行中、システムによってリアルタイムで実行され、違反の可能性が検出されたら、補正およびログ記録の操作を起こすことができる。
【0066】
実行するようにスケジュールされた時間と終了/応答時間との間に規定される定期的なタスクTKは、3つのパラメータC、D、Tによって規定される。ここで、Cは最悪実行時間(WCET)またはリソースタイムバジェット、すなわちコンピューティング時間を示し、Dは、相対デッドライン、すなわちデッドライン時間であり、Tは、期間(時間期間)である。
【0067】
同じタスクの2つの連続するジョブインスタンスの間に複数の期間が存在する散発的なタスクシステムを検討すると、特定の時間に発生するジョブは、せいぜい、対応するデッドラインDの前の時間間隔におけるCの時間単位の間に実行されなければならない。
【0068】
散発的なタスクの特定の事例としては、タスクによって生成された2つの連続するジョブの到着の間でその期間が正確に時間的に分離されている定期的なタスクである。
【0069】
各インスタンスついてデッドラインDが期間Tに対応する、絶対的デッドラインシステムと、
各場合についてデッドラインDが期間T未満である、制約付きデッドラインシステムと、
デッドラインDと期間Tとの間に制約がない、恣意的デッドラインシステムと、
が区別される。
【0070】
処理システム10は、
図8のフロー図を参照しながら本明細書において説明される時間検出手順700を実行するように構成される。ここで、デッドラインDおよび期間の間に制約は存在しないが、タスク最悪実行時間Cについて一般タスクTKの違反をチェックする段階710が実行される。ここで、所与の例の最悪実行時間Cの値は、オフライン時間解析によって与えられる。段階720にて、異常が、好ましくは同じセキュリティログSLに記録される。したがって、上記の説明から、記載された解決策の利点が明らかである。
【0071】
説明されたシステムは、セキュアハードニングリアルタイムオペレーティングシステムを好都合に備え、ここで、実行時にオペレーティングシステムソフトウェア上またはアプリケーションソフトウェア上のいずれかで真正性チェックを実行することによって、セキュアハードニングが得られる。真正性チェックは、定期的に高優先度を用いて、暗号および証明書有効性確認に専用ハードウェアを利用することにより、リアルタイムで実行される。
【0072】
特に、本明細書に開示されたシステムは、他のホスト/HTAのサービスに対して最優先される定期的なタスクにおいて認証手順を実行することによって、HTAに対して多数の動作を要求する攻撃者または要求が過度に厳しいホストが実行時真正性チェックの実行を妨げる可能性も回避するとともに、ソフトウェアの不正操作を検出する。同時に、フラッシュ全体を検証する時間が所定の値を超えることが回避される。
【0073】
当然ながら、実施形態の原理に影響を与えることなく、以下の特許請求の範囲に規定された本実施形態の範囲から逸脱しなければ、構成の詳細および実施形態を単に例として本明細書に説明および図示されたものに対して広く変更してよい。