(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-26
(54)【発明の名称】車両の電子制御ユニットの不揮発性メモリに保存されるデータの完全性をチェックする方法及び装置
(51)【国際特許分類】
G06F 21/57 20130101AFI20241219BHJP
【FI】
G06F21/57 350
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024532258
(86)(22)【出願日】2022-11-09
(85)【翻訳文提出日】2024-05-29
(86)【国際出願番号】 EP2022081325
(87)【国際公開番号】W WO2023110232
(87)【国際公開日】2023-06-22
(32)【優先日】2021-12-14
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】398037767
【氏名又は名称】バイエリシエ・モトーレンウエルケ・アクチエンゲゼルシヤフト
(74)【代理人】
【識別番号】100069556
【氏名又は名称】江崎 光史
(74)【代理人】
【識別番号】100111486
【氏名又は名称】鍛冶澤 實
(74)【代理人】
【識別番号】100191835
【氏名又は名称】中村 真介
(74)【代理人】
【識別番号】100221981
【氏名又は名称】石田 大成
(74)【代理人】
【識別番号】100191938
【氏名又は名称】高原 昭典
(72)【発明者】
【氏名】ビルラ・マンジート・シン
(72)【発明者】
【氏名】アブデルハミード・モハメド-サード
(57)【要約】
【課題】先行技術の欠点を克服するのに適した装置及び方法を提供する。
【解決手段】車両の電子制御ユニット1に保存されたデータの完全性をチェックする方法であって、該方法が、
-電子制御ユニット1のブートローダの要求によって起動される(S3)、電子制御ユニット1におけるハッシュ関数F(x)を用いて、保存されたデータに基づき第1のハッシュ値#2_1を特定すること(S5)、
-電子制御ユニット1に接続された外部計算装置2の要求(S9)によって起動される、電子制御ユニット1におけるハッシュ関数F(x)を用いて、保存されたデータに基づき第2のハッシュ値#2_2を特定すること(S5)、及び
-特定された第1のハッシュ値#2_1を特定された第2のハッシュ値#2_2と比較することで、保存されたデータの完全性をチェックすること(S11)
を含む。
【特許請求の範囲】
【請求項1】
車両の電子制御ユニット(1)に保存されたデータの完全性をチェックする方法であって、該方法が、
-前記電子制御ユニット(1)のブートローダの要求によって起動される(S3)、前記電子制御ユニット(1)におけるハッシュ関数(F(x))を用いて、前記保存されたデータに基づき第1のハッシュ値(#2_1)を特定すること(S5)、
-前記電子制御ユニット(1)に接続された外部計算装置(2)の要求(S9)によって起動される、前記電子制御ユニット(1)における前記ハッシュ関数(F(x))を用いて、前記保存されたデータに基づき第2のハッシュ値(#2_2)を特定すること(S5)、及び
-前記特定された第1のハッシュ値(#2_1)を前記特定された第2のハッシュ値(#2_2)と比較することで、前記保存されたデータの完全性をチェックすること(S11)
を含むことを特徴とする方法。
【請求項2】
前記第1及び/又は前記第2のハッシュ値(#2_1,#2_2)が、前記電子制御ユニット(1)のハードウェアセキュリティモジュール(11)によって特定されること(S5)を特徴とする請求項1に記載の方法。
【請求項3】
前記特定された第1のハッシュ値(#2_1)が、前記電子制御ユニット(1)の前記ブートローダによって前記外部計算装置(2)へ出力されること(S7)を特徴とする請求項1又は2に記載の方法。
【請求項4】
前記特定された第2のハッシュ値(#2_2)が、前記電子制御ユニット(1)の前記ハードウェアセキュリティモジュール(11)によって前記外部計算装置(2)へ出力されること(S10)を特徴とする請求項2を引用する請求項3に記載の方法。
【請求項5】
前記外部計算装置(2)が、前記特定された第1のハッシュ値(#2_1)を前記特定された第2のハッシュ値(#2_2)と比較することで、前記保存されたデータの完全性をチェックすること(S11)を特徴とする請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記方法が、
-前記外部計算装置(2)を用いて、前記電子制御ユニット(1)のメモリ(11)にデータを保存すること(S2)、及び
-前記電子制御ユニット(1)のメモリ(11)におけるデータの保存(S2)前に、前記外部計算装置(2)におけるハッシュ関数(F(x))を用いて、前記電子制御ユニット(1)の前記メモリ(11)に保存されるべきデータに基づき第3のハッシュ値(#1)を特定すること(S1)
を含むことを特徴とする請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記第3のハッシュ値(#1)が、前記外部計算装置(2)のハードウェアセキュリティモジュール(21)によって特定されることを特徴とする請求項6に記載の方法。
【請求項8】
前記方法が、前記特定された第1のハッシュ値(#2_1)を前記特定された第3のハッシュ値(#1)と比較することで、前記保存されたデータの完全性をチェックすること(S11)を含むことを特徴とする請求項6又は7に記載の方法。
【請求項9】
前記外部計算装置(2)が、前記特定された第1のハッシュ値(#2_1)を前記特定された第3のハッシュ値(#1)と比較することで、前記保存されたデータの完全性をチェックすること(S11)を特徴とする請求項8に記載の方法。
【請求項10】
前記方法が、
-前記電子制御ユニット(1)に前記特定された第1のハッシュ値(#2_1)を保存すること(S8)、
-前記電子制御ユニット(1)において動作するアプリケーションの要求によって起動される、前記電子制御ユニット(1)におけるハッシュ関数(F(x))を用いて、前記保存されたデータに基づき第4のハッシュ値(#3)を特定すること(S14)、及び
-前記特定された第1のハッシュ値(#2_1)を前記特定された第4のハッシュ値(#3)と比較することで、前記保存されたデータの完全性をチェックすること(S17)
を含むことを特徴とする請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記アプリケーションが、前記特定された第1のハッシュ値(#2_1)を前記特定された第4のハッシュ値(#3)と比較することで、前記保存されたデータの完全性をチェックすること(S11)を含むことを特徴とする請求項10に記載の方法。
【請求項12】
前記第4のハッシュ値(#3)を特定すること(S14)と、前記特定された第1のハッシュ値(#2_1)を前記特定された第3のハッシュ値(#3)と比較することで前記保存されたデータの完全性をチェックすること(S11)とが、前記アプリケーションの開始時に1回、及び/又は前記アプリケーションのランタイム中に周期的に行われることを特徴とする請求項10又は11に記載の方法。
【請求項13】
データを保存するために、誤り訂正符号メモリ(11)が前記電子制御ユニットにおいて用いられることを特徴とする請求項1~12のいずれか1項に記載の方法。
【請求項14】
秘密鍵及び/又は公開鍵を用いる対称暗号化及び/又は非対称暗号化が、前記電子制御ユニット(1)におけるデータ伝達及び/又は前記電子制御ユニット(1)と前記外部計算装置(2)の間のデータ伝達に用いられることを特徴とする請求項1~13のいずれか1項に記載の方法。
【請求項15】
請求項1~14のいずれか1項に記載の方法を実行する手段を含むデータ処理システム(1,2)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車両の電子制御ユニットに保存されたデータの完全性をチェックする方法、少なくとも部分的に方法を実行するように構成されたデータ処理システム、プログラムがコンピュータによって実行されるときにコンピュータに方法を少なくとも部分的に実行させる指示(コマンド)を含むコンピュータプログラム、コンピュータによってプログラムが実行されるときにコンピュータに方法を少なくとも部分的に実行させる指示(コマンド)を含むコンピュータ読取可能な媒体、及びデータ処理システムを少なくとも部分的に含む車両(オプションで車又は自動車)を対象とするものである。
【背景技術】
【0002】
本願の背景は、自動運転において用いられるECUについて、ある特定のASIL完全性、例えばASIL B完全性を保証するために、自動化された車両の電子制御ユニット(ECU)の特に安心、安全なブートロード及び/又はフラッシュプロセスを創造することである。
【0003】
より具体的には、自動運転、特に高度に自動化され、自律した運転において、例えば自動化された車両の移動を直接的に、及び/又は間接的に制御することによる自動化された運転に用いられる自動化された車両のハードウェア構成要素及びソフトウェア構成要素は、ある特定の自動車安全水準(ASIL)を備える必要がある。
【0004】
ISO26262第9パートには、自動車システム又はそのようなシステムの要素における固有の安全リスクの抽象的な分類に関連する自動車安全水準(ASIL)が規定されている。ASIL分類は、特定の危険を回避するために必要なリスク低減のレベルを表すためにISO26262内で用いられ、ASIL Dは最も高い危険レベルを表し、ASIL Aが最も低い危険レベルを表す。そして、ある危険について評価されたASILは、その危険に対処するために設定された安全目標に割り当てられ、その目標から得られる安全要求によって継承される。A以下のASILレベルは最低レベルのQMである。QMは、ASIL A以下の規格の考慮事項を指し、安全性に関連はなく、標準的な品質管理プロセスのみが要求される。
【0005】
現在、ECUの不揮発性メモリ(NVM)からリードオンリーメモリ(ROM)又はフラッシュメモリ(例えばEEPROM-Flash)及びECUのランダムアクセスメモリ(RAM)及び処理ユニット(例えば中央処理ユニット(CPU))(すなわち「アプリケーション」)へそれぞれブートロードするプロセスは、安全上の完全性(整合性)を有さないが、QMとして分類される。
【0006】
当該継承上の欠点により、保存されたデータ、又はNVMからROM/Flash及びRAMから処理ユニットへ伝達されるデータの破損に至ることがあり得る。
【発明の概要】
【発明が解決しようとする課題】
【0007】
当該先行技術の背景に対して、本発明の1つの目的は、特に、先行技術の上述の欠点の少なくともいくつかをそれぞれ克服するのに適した装置及び方法を提供することにある。
【課題を解決するための手段】
【0008】
目的は、独立請求項の特徴によって解決される。従属請求項は、その主題として、本発明の好ましい更なる実施例を有している。
【0009】
より具体的には、目的は、車両の電子制御ユニットに保存されたデータの完全性をチェックする方法によって解決される。
【0010】
データの完全性(整合性)は、そのライフサイクル全体にわたるデータの正確性及び一貫性の維持及び保証として定義され得る。データの完全性は、データの破損の反対である。いかなるデータの完全性の技術の全体的な意図は同一である:データが意図どおりに正確に記録されていることを保証する。さらに、後に検索するときに、データが元々記録/保存されたものと同一であることを保証する。要するに、データの完全性は、情報についての意図しない変更を防止することを目的としている。悪意、予期せぬハードウェアの障害及びヒューマンエラーを含む、保存、検索又は処理操作の結果としてのデータについての意図しないいかなる変更もデータの完全性の欠陥である。変更が不正アクセスの結果である場合には、これは、データセキュリティの欠陥でもあり得る。
【0011】
方法は、電子制御ユニットのブートローダの要求によって起動される、電子制御ユニットにおけるハッシュ関数を用いて、保存されたデータに基づき第1のハッシュ値を特定することを含む。
【0012】
bootloaderともつづられるか、又はブートマネジャー及びブートストラップローダと呼ばれるブートローダ(boot loader)は、コンピュータ、ここでは電子制御ユニットをブート(起動)する役割を担うコンピュータプログラムである。電子制御ユニットがオフされ(例えば車両がオフされ)、そのフラッシング後には、(オペレーティングシステム及びアプリケーションコードのようなソフトウェア及び情報を含む)そのデータは、電子制御ユニットの不揮発性メモリ(NVM)に保存される。(例えば電子制御ユニットのフラッシング後又はオフされた後に)電子制御ユニットがオンされると、典型的には、電子制御ユニットは、当該電子制御ユニットのランダムアクセスメモリ(RAM)にオペレーティングシステム又はそのローダを有さない。したがって、RAMを初期化し、NVM(例えばNANDフラッシュであり、不揮発性デバイスとも呼ばれる)又はオペレーティングシステムプログラム及びデータをRAMにロードすることが可能なデバイスにアクセスするために、電子制御ユニットは、まず、必要なデータと共にリードオンリーメモリ(ROM)/フラッシュメモリに保存された比較的小さなプログラムであるブートローダを実行する。
【0013】
フラッシングは、特に、電子制御ユニットに存在するROM又はフラッシュメモリモジュールにオプションで含まれるファームウェア、ソフトウェア又は情報のような既存のデータを新しいデータで上書きすることを含み得る。これは、電子制御ユニットをアップグレードするために、又は車両の生産中に行われることが可能である。
【0014】
ここで用いられるような「データ」という用語は、電子制御ユニットによって実行可能なアプリケーションソフトウェア、アプリケーションソフトウェア及び/又は電子制御ユニットのオペレーティングシステムによって使用されるパラメータ及び他の情報を含むことができるが、これらに限定されていない。
【0015】
方法は、電子制御ユニットに接続された外部計算装置(外部計算デバイス)の要求によって起動される、電子制御ユニットにおけるハッシュ関数を用いて、保存されたデータに基づき第2のハッシュ値を特定することを含む。
【0016】
ハッシュ関数は、任意のサイズのデータを固定されたサイズの値へマップするために用いることが可能なあらゆる関数である。ハッシュ関数が返す値は、ハッシュ値、ハッシュコード、ダイジェスト又は単にハッシュと呼ばれる。
【0017】
方法によって用いられるハッシュ関数は、好ましくは、任意のサイズのデータ(しばしば「メッセージ」と呼ばれる)を固定されたサイズのビット列(「ハッシュ値」、「ハッシュ」又は「メッセージダイジェスト」)へマッピングする数学的なアルゴリズムである暗号学的ハッシュ関数(CHF)である。これは一方向性関数、すなわち、計算を反転させたり逆行させたりすることが実際には実行不可能な関数である。理想的には、得られるハッシュを生成するメッセージを見つける唯一の方法は、あり得る入力が一致を生成するかどうかを見るために力まかせ探索(ブルートフォース検索)を試みるか、又は一致したハッシュのレインボーテーブルを用いることである。さらに、暗号学的ハッシュ関数は決定性のものであり、これは、同一のメッセージが常に同一のハッシュをもたらすことを意味する。
【0018】
方法は、特定された第1のハッシュ値を特定された第2のハッシュ値と比較することで、保存されたデータの完全性をチェックすることを含む。
【0019】
すなわち、ブートローダ及び外部計算装置、例えば電子制御ユニットのフラッシュツールの要求に応じて決定される2つのハッシュは、電子制御ユニットに保存されたデータを入力とする同一の(暗号学的)ハッシュ関数を用いて特定されるため、第1のハッシュ値の特定と第2のハッシュ値の特定の間にデータの破損が起こらない場合と同一である。
【0020】
以下に、方法の好ましい実施例を詳細に説明する。
【0021】
第1及び/又は第2のハッシュ値は、電子制御ユニットのハードウェアセキュリティモジュールによって特定されることが可能である。
【0022】
ハードウェアセキュリティモジュール(HSM)は、デジタル鍵を保護及び監理するように構成されることができるとともにデジタル署名のための暗号化機能及び復号化(解読)機能を実行することができる物理的な計算装置(計算デバイス)であり、方法によって用いられる(暗号学的)ハッシュ関数についてのハッシュアルゴリズムを実行する。ハードウェアセキュリティモジュールは、1つ又はより多くの安全暗号プロセッサチップを含むことができる。ハードウェアセキュリティモジュールは、ハードウェアセキュリティモジュールの全ての、又はほとんどの構成要素を統合する(「チップ」としても知られる)集積回路であるシステムオンチップ(SoC)として実装されることが可能である。これら構成要素は、全て単一の基板又はマイクロチップにある、中央処理装置(中央処理ユニット)(CPU)、メモリ、入力/出力ポート及び二次記憶装置(補助記憶装置)を含むことができる。デジタル処理機能、アナログ処理機能及び/又は混合信号処理機能を含み得る。
【0023】
特定された第1のハッシュ値は、電子制御装置のブートローダによって外部計算装置へ出力されることが可能である。すなわち、電子制御ユニットは、外部計算装置へ第1のハッシュ値を送信するためのブートローダによって(直接的に、又は間接的に)アクセス可能である出力インタフェース/ポートを含むことができる。
【0024】
特定された第2のハッシュ値は、電子制御装置のハードウェアセキュリティモジュールによって外部計算装置へ出力されることが可能である。すなわち、電子制御ユニット又はハードウェアセキュリティモジュール自体は、外部計算装置へ第2のハッシュ値を送信するためのハードウェアセキュリティモジュールによって(直接的に、又は間接的に)アクセス可能である出力インタフェース/ポートを含むことができる。
【0025】
外部計算装置は、特定された第1のハッシュ値を特定された第2のハッシュ値と比較することで、保存されたデータの完全性をチェックすることが可能である。すなわち、データの完全性のチェックは、外部計算装置によって実行されることができる。
【0026】
方法は、外部計算装置を用いて、電子制御ユニットのメモリにデータを保存することを含むことができる。より具体的には、方法は、電子制御ユニットのフラッシングを含むことができ、これにより、完全性が方法によってチェックされるべきデータが、電子制御ユニットにおいて保存される。データは、不揮発性メモリ、ランダムアクセスメモリ及び/又はリードオンリーメモリ又はフラッシュメモリを含み得る電子制御ユニットのメモリ(システム)に保存されることが可能である。
【0027】
方法は、電子制御ユニットのメモリにおけるデータの保存前に、外部計算装置におけるハッシュ関数を用いて、電子制御ユニットのメモリに保存されるべきデータに基づき第3のハッシュ値を特定することを含むことができる。
【0028】
第3のハッシュ値は、外部計算装置のハードウェアセキュリティモジュールによって特定されることが可能である。
【0029】
方法は、特定された第1のハッシュ値を特定された第3のハッシュ値と比較することで、保存されたデータの完全性をチェックすることを含むことができる。
【0030】
より具体的には、外部計算装置は、特定された第1のハッシュ値を特定された第3のハッシュ値と比較することで、保存されたデータの完全性をチェックすることが可能である。
【0031】
すなわち、ブートローダの要求に応じて特定される第1のハッシュと、電子制御ユニットのフラッシング前に外部計算装置において特定される第3のハッシュとは、(電子制御ユニットに保存されたデータと、電子制御ユニットに保存/フラッシュされるデータとを入力とする)同一の(暗号学的)ハッシュ関数を使用して特定されるため、このチェックにより、フラッシュされたデータのデータの完全性、すなわち電子制御ユニットのフラッシング中にデータの破損が発生しないことを保証することができる。
【0032】
方法は、オプションで電子制御ユニットのブートローダ及び/又はハードウェアセキュリティモジュールによって電子制御ユニットに特定された第1のハッシュ値を保存することを含むことが可能である。方法は、電子制御ユニットにおいて動作するアプリケーションの要求によって起動される、電子制御ユニットにおけるハッシュ関数を用いて、保存されたデータに基づき第4のハッシュ値を特定すること、及び特定された第1のハッシュ値を特定された第4のハッシュ値と比較することで、保存されたデータの完全性をチェックすることを含むことができる。
【0033】
アプリケーションは、オプションで、電子制御ユニットに接続されたセンサからのセンサデータを入力として受け取るとともに、特定された第1のハッシュ値を特定された第3のハッシュ値とを比較することによって、保存されたデータの完全性をチェックすることができる。
【0034】
第4のハッシュ値を特定することと、特定された第1のハッシュ値を特定された第3のハッシュ値と比較することで保存されたデータの完全性をチェックすることとが、アプリケーションの開始時に1回、及び/又はアプリケーションのランタイム中に周期的に行われる。
【0035】
すなわち、ブートローダの要求に応じて特定される第1のハッシュと、アプリケーションのランタイム中に特定される第4のハッシュ値とが(電子制御ユニットに保存されたデータを入力とする)同一の(暗号学的)ハッシュ関数を使用して特定されるため、このチェックにより、アプリケーションにより用いられるデータのデータの完全性、すなわち電子制御ユニットのフラッシング後及びブート後にデータの破損が発生しないことを保証することができる。
【0036】
誤り訂正符号(ECC)及び/又は誤り検出符号(EDC)メモリシステムは、データを保存するために電子制御ユニットにおいて用いられることが可能である。
【0037】
ECC及びEDCメモリは、追加的なメモリビットと、動作及びメモリリークの制御のための暗号化用のコントローラとを含む。ECC/EDCメモリは、データをECC/EDCに書き込むときに暗号化されたコード/データを保存するために追加のビットを使用し、ECC/EDCは、同時に保存される。データがECC/EDCメモリから読み出されるときに、読み出されたデータに基づき別のECC/EDCが生成され、保存されたECC/EDCが、データが読み出されたときに生成されたECC/EDCと比較される。データの読み出し中に生成されたECC/EDCが保存されたECC/EDCと一致しない場合には、データは、破損しているとともに、オプションで、ECCの場合には、どのビットが破損したかを特定するためにECCにデータと共に保存されているいわゆるパリティビットによって修復され/復号化されることができ、当該破損したビットは、(オプションで迅速に)修正されることが可能である。すなわち、誤りがEDCを用いて検出され、誤りは、ECCを用いて検出されるとともにシングルビットフリップ(シングルビット反転)のようなある特定の場合に修正されることが可能である。誤りを修正することができない場合には、誤りは(例えばマルチビット障害の場合に)伝達される。より具体的には、保存されたデータは、ブートローダを用いてROM/フラッシュから読み出されることができ、RAMからアプリケーション(ソフトウェア)へ読み出されることが可能である。当該読み出し及び保存操作は、ECC/EDCを用いて保護されることができる。いかなるデータ漏洩又はデータビットフリップの場合でも、各メモリへの書き込み中に作成されたECC/EDC及び各メモリからの読み出し中に作成されたECC/EDCは一致せず、これにより、誤り検出(EDC)又は誤り訂正(ECC)に至る。これは、電子制御ユニットの通常の動作中、例えば電子制御ユニットのブート中及びブート後のデータの完全性を保証する。
【0038】
秘密鍵(プライベートキー)及び/又は公開鍵(公開キー)を用いる対称暗号化及び/又は非対称暗号化は、電子制御ユニットにおけるデータ伝達及び/又は電子制御ユニットと外部計算装置の間のデータ伝達に用いられることが可能である。
【0039】
対称暗号化アルゴリズム又は非対称暗号化アルゴリズムは、プレーンテキストの暗号化の復号及び暗号文の復号の両方に同一の暗号鍵を使用する暗号化アルゴリズムを使用する方法である。鍵は、同一である得るか、又は2つの鍵の間を行き来する単純な変換であり得る。実際には、鍵は、プライベートな情報リンクを維持するために用いられることが可能な、2つ以上の当事者間で共有される秘密を表す。非対称暗号化、公開鍵暗号化又は非対称暗号化は、一対の鍵を用いる暗号化方法である。各対は、(他者に知られ得る)公開鍵と、(所有者以外の誰にも知られ得ない)秘密鍵とで構成されている。このような鍵の対の生成は、一方向性関数と呼ばれる数学的な問題に基づく暗号化アルゴリズムに依存する。効果的なセキュリティには、秘密鍵を秘密にしておく必要があり、公開鍵は、セキュリティを損なうことなくオープンに分配されることが可能である。これら2つの方法の組合せは、可能であるとともに、通信データにデジタル署名を施すことを可能とするものである。すなわち、送信者においては、公開鍵がデータの暗号化に用いられ、秘密鍵がハッシュ関数と共に署名(例えばハッシュ)を生成するために用いられる。受信者においては、秘密鍵が受信データの復号に用いられ、公開鍵及び同一のハッシュ関数が署名のチェックのために用いられる。これにより、データセキュリティが保証され得る(第三者がデータを破損させない)だけでなく、データの完全性も保証される。なぜなら、真正な/期待される送信者からデータが来るかどうかを受信者がチェックできるためである。
【0040】
上述の方法は、換言して以下のとおり要約されることが可能である:
【0041】
方法は2つの部分に分割されることができ、第1の部分は電子制御ユニットをフラッシュした後、例えば車両の生産中に実行される完全性チェックであり、第2の部分は車両の通常動作中に実行される完全性チェックである。
【0042】
より具体的には、第1の部分は、ハードウェアとしての全ての電子制御ユニットが車両に固定された後、車両の生産中に実行されることが可能である。各電子制御ユニットは、フラッシングプロセスを介して、その必要なソフトウェアを受け取ることが可能である。フラッシングプロセスでは、フラッシュツールは、所定のバージョン及びパッチを有する各ソフトウェアを電子制御ユニットのハードウェアにフラッシュするために用いられる。必要なソフトウェアは、第1のステップにおいてフラッシュツールからダウンロードされることができる。第2のステップでは、ブートロードが完了すると、フラッシュツールは、ハッシュのチェックと、セキュアブートローダについての署名のチェックとを実行することができる。これらチェックは、安全性の完全性を有さないかもしれないが、QMチェックに従いデータの破損が起こらないことを保証することができる。
【0043】
方法の第2の部分では、セキュア/トラステッドブートロードを含む電子制御ユニットレベルでのチェックが行われる。電子制御ユニットは、ハッシュ定義/計算を実行するために、特別なハードウェアモジュール、すなわちハードウェアセキュリティモジュール(HSM)を有することが可能である。電子制御ユニットレベルには、異なる2つのタイプのチェックが存在し得る。チェックの第1のタイプは、電子制御ユニットの各始動中に、すなわち、車両が始動し、電子制御ユニットがスリープモードから復帰するたびに、行われることが可能である。当該始動テスト中に、データの不一致が起きないことを秘密鍵及び公開鍵を用いて保証するために、電子制御ユニットは、セキュア/トラステッドブートロードプロセス中にハッシュファイルをチェックすることができる。チェックの第2のタイプは、実質的に周期的であってよく、電子制御ユニットによって実行されるアプリケーション(ソフトウェア)によって起動され得る。これに加えて、電子制御ユニットのROM/フラッシュ及びRAMからのブートロード中のデータ破損を監視及び訂正(修正)するために、ECC(誤り訂正符号)及び/又はEDC(誤り検出符号)のような機能安全機構を用いることが可能である。両措置、すなわちQMチェック及びデータ破損についてのECC/EDCチェックとしてのハッシュファイルに関するセキュリティ措置の組合せによって、ASIL Bの完全性を保証することが可能である。
【0044】
さらに、上述の方法を少なくとも部分的に実行するための手段を含むデータ処理システムを提供することができる。
【0045】
データ処理システムは、車両用の制御ユニット、オプションで電子制御ユニット(ECU)であり得るか、又はこれを含み得る。(電子)制御ユニットは、オプションでセントラルゲートウェイ(CGW)を介して他のモジュールと通信可能なインテリジェントプロセッサ制御ユニットであってよい。制御ユニットは、オプションでテレマティクス制御ユニットと共に、CANバス、LINバス、MOSTバス、FlexRayのようなフィールドバスを介して、又は自動車イーサネットを介して、車両の車載ネットワークの一部を形成することが可能である。電子制御ユニットは、エンジン制御システム、動力伝達、ブレーキシステム及び/又はタイヤ空気圧制御システムのような車両の運転挙動に関連する機能を制御するように構成されることが可能である。加えて、パーキングアシスト、アダプティブクルーズコントロール、車線逸脱警報、車線変更アシスト、交通標識認識、信号灯火認識、アプローチアシスト、ナイトビジョンアシスト、交差点アシスト及び/又は他の多くもののような運転者アシストシステムのいくつか又は全てを、制御ユニットによって制御することが可能である。
【0046】
さらに、方法についての上述の説明は、データ処理システムにも準用され、また、その逆も同様である。
【0047】
さらに、上述のデータ処理システムを含む自動化された車両が提供され得る。
【0048】
自動化された車両は、自動車であってよい。自動化された車両は、自動化された車両の自動化された運転中に、少なくとも部分的及び/又は一時的に、横方向及び/又は長手方向のガイド(運転)を引き継ぐように設計されることが可能である。
【0049】
自動化された運転は、車両の運転が(ほぼ)自律的であるようなものであり得る。
【0050】
車両は、自律レベル1の車両であってよく、すなわち、車両操作において運転者をサポートするある特定の運転者アシストシステム、例えばアダプティブクルーズコントロール(ACC)を有し得る。
【0051】
車両は、自律レベル2の車両であってよく、すなわち、自動パーキング、レーンキープ又は横方向ガイド、一般的な長手方向ガイド、加速及び/又は制動のような機能が運転者アシストシステムによって行われるように部分的に自動化されることが可能である。
【0052】
車両は、自律レベル3の車両であってよく、すなわち、運転手がシステム車両を継続的に監視する必要がないような条件で自動化されることが可能である。原動機付き車両は、方向指示器の作動、車線変更及び/又はレーンキープ(車線維持)のような機能を自動的に行う。運転者は、他の事項に注意を払うことができるが、必要な場合には、警告時間内に制御を引き継ぐようにシステムによって指示される。
【0053】
車両は、自律レベル4の原動機付き車両であってよく、すなわち、車両の運転が運転手が永続的にシステム車両によって引き継がれるほど高度に自動化され得る。運転タスクがシステムによってもはや処理されない場合には、運転者に制御を引き継ぐように要求され得る。
【0054】
車両は、自律レベル5の車両であってよく、すなわち、運転者が運転タスクを完了する必要がないほど完全に自動化され得る。目的地の設定及びシステムの起動以外、人間の介入は不要である。車両は、ステアリングホイール又はペダルなしに動作可能である。
【0055】
さらに、方法及びデータ処理システムについての上述の説明は、車両にも準用され、また、その逆も同様である。
【0056】
さらに、コンピュータプログラムを提供することができ、コンピュータプログラムは、プログラムがコンピュータによって実行されるときにコンピュータに上述の方法を少なくとも部分的に実行させる指示(コマンド)を含んでいる。
【0057】
プログラムは、プログラムコード、特に車両の制御システムに適したコードを含むことができる。方法、データ処理システム及び車両についての上述の説明は、コンピュータプログラムにも準用され、また、その逆も同様である。
【0058】
さらに、コンピュータ読取可能な媒体を提供することができ、コンピュータ読取可能な媒体は、コンピュータによって実行されるときにコンピュータに上述の方法を少なくとも部分的に実行させる指示(コマンド)を含んでいる。
【0059】
コンピュータ読取可能な媒体は、USBフラッシュドライブ、ハードディスク、CD-ROM、SDカード又はSSDカードのようなあらゆるデジタルデータ保存デバイスであってよい。上述のコンピュータプログラムは、コンピュータ読取可能な媒体に保存されることが可能である。しかし、コンピュータプログラムは、必ずしもこのようなコンピュータ読取可能な媒体に保存される必要はなく、インターネットを介して取得されることも可能である。
【0060】
【図面の簡単な説明】
【0061】
【
図1】電子制御ユニットのフラッシング後に電子制御ユニットに保存されたデータの完全性をチェックするための、電子制御ユニットに接続されたフラッシュツールを含むシステムを概略的に示す図である。
【
図2】電子制御ユニットに保存されたデータの完全性をチェックするためのアプリケーションを実行/動作させる電子制御ユニットを概略的に示す図である。
【発明を実施するための形態】
【0062】
以下に、
図1及び
図2を参照して実施例が説明され、同一の参照符号は、図の説明全体を通して同一の対象に対して用いられ、当該実施例は、本発明の実施のための単に1つの具体例であり、特許請求の範囲によって規定されるような本発明の範囲を限定するものではない。
【0063】
図1には、電子制御ユニット1と、当該電子制御ユニット1に無線(ワイヤレス)で、又は有線で、例えば車両バスで接続されるフラッシュツール2とを含むデータ処理システムが示されている。電子制御ユニット1は、不図示の車両の一部であってよい。
図2には、同一の電子制御ユニット1が示されている。
図1には、車両の生産側におけるデータ処理システムの第1の状態が図示され、
図2には、車両の生産後、すなわち車両の通常動作中のデータ処理システムの第2の状態が図示されている。
【0064】
データ処理システムは、電子制御ユニットに保存(記憶)されたデータの完全性(整合性)をチェックする方法を実行するように構成されている。電子制御ユニット1及びフラッシュツール2の両者は、ハードウェアセキュリティモジュール11,21を含んでいる。さらに、電子制御ユニット1は、1つ又はより多くのアプリケーション(ソフトウェア)を実行し、電子制御ユニットの始動中にブートローダを起動させるプロセッサ13と、不揮発性メモリ、ROM又はフラッシュメモリ及びRAMを有するメモリシステム12とを含んでいる。
【0065】
図1及び
図2から分かるように、電子制御ユニット1に保存されたデータのデータ完全性をチェックする方法は、実質的に17のステップS1~S17を含んでいる。これらステップは、この番号順で、又は方法を実行するのに適した任意の他の順序で行われることが可能である。
【0066】
方法の第1のステップS1では、ハッシュ値#1の特定は、フラッシュツール2におけるハッシュ関数F(x)を用いて、電子制御ユニット1のメモリ12に保存されるべきデータに基づき特定される。ハッシュ値#1を生成するために、データは、ハッシュ関数F(x)を用いてハッシュ値#1を計算する外部計算装置2のハードウェアセキュリティモジュール21へ少なくとも部分的に入力される。ここで、データは、ハッシュ関数F(x)のための入力である。
【0067】
方法の第1のステップS1でのハッシュ値#1の生成後、したがって方法の第2のステップS2では、フラッシュツール2が電子制御ユニット1のメモリ12へデータを送信し、それにより、データが電子制御ユニット1のメモリ12に保存される。フラッシング自体は、第2のステップS2の後に行われる。
【0068】
方法の第3のステップS3では、電子制御ユニット1が(パワー)オンされ、ブートローダが始動される。ブートローダは、電子制御ユニット1のハードウェアセキュリティモジュール11にハッシュ値についての要求を送信する。
【0069】
方法の第4のステップS4では、第3のステップS3においてブートローダの要求により起動された電子制御ユニット1のハードウェアセキュリティモジュール11が、ステップS2において受信され電子制御ユニット1のメモリ12に保存されたデータを少なくとも部分的に電子制御ユニット1のハードウェアセキュリティモジュール11へロードする。
【0070】
電子制御ユニット1のハードウェアセキュリティモジュール11へロードされたデータは、第5のステップS5において、ハッシュ関数F(x)を用いてハッシュ値#2_1を特定するために、電子制御ユニット1のハードウェアセキュリティモジュール11によって用いられる。
【0071】
方法の第6のステップS6では、第5のステップS5で特定されたハッシュ値#2_1が電子制御ユニット1のハードウェアセキュリティモジュール11からブートローダへ出力され、方法の第7のステップS7では、ハッシュ値#2_1が電子制御ユニット1のブートローダによってフラッシュツール2へ提供される。
【0072】
さらに、方法の第8のステップS8では、当該ハッシュ値#2_1は、ブートローダを用いて電子制御ユニット1のメモリ12に保存されるか、又は電子制御ユニット1のハードウェアセキュリティモジュール11を用いてメモリ11に直接保存されることができる(
図1において第2の点線で示された第2のオプション)。
【0073】
方法の第9のステップS9では、フラッシュツール2が、方法の第5のステップS5を再び実行するために、例えば、同一のハッシュ関数F(x)を用いて、電子制御ユニット1のメモリ12に保存されたデータに基づき別のハッシュ値#2_2を特定するために、電子制御ユニット1のハードウェアセキュリティモジュール11へ要求を送信する。したがって、別のハッシュ値#2_2は、電子制御ユニット1のハードウェアセキュリティモジュール11を用いてフラッシュツール2によって発出された第9のステップS9における要求によって起動され特定される。
【0074】
当該別のハッシュ値#2_2は、第10のステップS10において、電子制御ユニット1のハードウェアセキュリティモジュール11によってフラッシュツール2へ出力される。
【0075】
第11のステップS11では、フラッシュツール2において2つのデータ完全性チェックが行われる。第1のチェックでは、フラッシュツール2は、ブートローダによって起動された第5のステップS5において特定されたハッシュ値#2_1を第9のステップS9においてフラッシュツール2によって要求され特定された別のハッシュ値#2_2と比較することで、保存されたデータの完全性をチェックする。第2のチェックでは、フラッシュツール2は、ブートローダによって起動された第5のステップS5において特定されたハッシュ値#2_1を方法の第1のステップS1において特定されたハッシュ値#2_1と比較することで、保存されたデータの完全性をチェックする。両チェックが肯定的であれば、すなわち3つ全てのハッシュ値#1,#2_1,#2_2が同一であれば、データの完全性が得られる。そうでない場合には、フラッシュツール2は、データの破損によるエラーフラグを立てる。フラッシングチェックは、方法の第11のステップS11の後に行われる。
【0076】
車両の通常の動作中には、以下の詳述するファイルされたチェックが実行される。
【0077】
方法の第12のステップS12では、電子制御ユニット1において動作しているアプリケーションが、メモリ12に保存されたデータに基づくとともに方法の第13のステップS13の間に電子制御ユニット1のハードウェアセキュリティモジュール11にロードされたハッシュ値#3を第14のステップS14において特定するために、電子制御ユニット1のハードウェアセキュリティモジュール11へ要求を送信する。すなわち、上述の、及びアプリケーションの要求によって起動/作動される第3~第5のステップS3~S5と同様に、電子制御ユニット1のハードウェアセキュリティモジュール11が、同一のハッシュ関数F(x)を用いてハッシュ値#3を特定する。
【0078】
方法の第14のステップS14で特定されるハッシュ値#3は、電子制御ユニット1のハードウェアセキュリティモジュール11によってアプリケーションへ出力される。
【0079】
方法の第16のステップS16では、アプリケーションが、方法の第8のステップS8においてメモリ12から保存されたハッシュ値#2_1をロードする。
【0080】
方法の第17のステップS17では、アプリケーションは、第14のステップS14で特定されたハッシュ値#3を方法の第8のステップS8でメモリ11に保存されたハッシュ値と比較することで、保存されたデータの完全性をチェックする。当該チェックが肯定的であれば、すなわち2つのハッシュ値#2_1,#3が同一であれば、データの完全性が得られる。そうでない場合には、アプリケーションは、データの破損によるエラーフラグを立てる。
【0081】
第12~第17のステップS12~S17は、アプリケーションの開始時に1回、及び/又はアプリケーションのランタイム中に周期的に実行されることが可能である。
【0082】
上述の方法において用いられるメモリ11は、方法の信頼性を更に向上させるような誤り訂正符号メモリシステムである。加えて、秘密鍵(プライベートキー)及び/又は公開鍵(公開キー)を用いる対称暗号化及び/又は非対称暗号化は、電子制御ユニットにおけるデータ伝達及び/又は電子制御ユニット1と外部計算装置2の間のデータ伝達に用いられる。
【国際調査報告】