(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】車両の制御装置、車両の制御方法及び制御プログラム
(51)【国際特許分類】
G06F 9/445 20180101AFI20240723BHJP
G06F 21/12 20130101ALI20240723BHJP
G06F 21/64 20130101ALI20240723BHJP
【FI】
G06F9/445
G06F21/12 310
G06F21/64
(21)【出願番号】P 2020203435
(22)【出願日】2020-12-08
【審査請求日】2023-07-18
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】恩田 祐輔
(72)【発明者】
【氏名】山本 剛
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2006-031203(JP,A)
【文献】国際公開第2010/100769(WO,A1)
【文献】特開2006-350489(JP,A)
【文献】米国特許第07263700(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 21/12
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
車両に搭載された機器を制御する複数のVM(Virtual Machine)のソフトウェアであるVMソフトウェア、及び2以上の前記VMで共用される共通ソフトウェアを記憶する記憶部と、
各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する検証部と、
を備える車両の制御装置。
【請求項2】
各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用するか否かを決定する流用判断部を更に備え、
前記検証部は、
他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用すると決定した場合には、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用して、前記VMのソフトウェアを検証し、
他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用しないと決定した場合には、前記VMのVMソフトウェア及び前記共通ソフトウェアを検証
する請求項1記載の車両の制御装置。
【請求項3】
前記検証部は、前記VMのソフトウェアの真正性を検証する請求項1又は2記載の車両の制御装置。
【請求項4】
前記検証部は、前記複数のVMのソフトウェアを起動するときに、各前記VMのソフトウェアを検証する請求項1~請求項3の何れか1項記載の車両の制御装置。
【請求項5】
前記指標は、前記VMが制御する機器の機能安全に関する機能安全指標、又は前記VMのソフトウェアのセキュリティに関するセキュリティ指標である請求項1~請求項4の何れか1項記載の車両の制御装置。
【請求項6】
車両に搭載された機器を制御する複数のVM(Virtual Machine)のソフトウェアであるVMソフトウェア、及び2以上の前記VMで共用される共通ソフトウェアを記憶する記憶部を含むコンピュータが、
各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する検証ステップ
を備える車両の制御方法。
【請求項7】
車両に搭載された機器を制御する複数のVM(Virtual Machine)のソフトウェアであるVMソフトウェア、及び2以上の前記VMで共用される共通ソフトウェアを記憶する記憶部を含むコンピュータに、
各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する検証ステップ
を含む処理を実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車両の制御装置、車両の制御方法及び制御プログラムに関する。
【背景技術】
【0002】
車両のECUの機能をソフトウェアとして1つの制御装置に統合するような開発が行われている。例えば、特許文献1には、バーチャルマシン(VM)間でプログラムモジュールを共用し、VMの起動時間短縮やメモリ節約をする技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、車両のECUの機能を有する複数のソフトウェアを1つの制御装置で実行する場合、複数のVM(Virtual Machine)を構成することで実現される。この場合、ECUの起動時に、VMを構成するのに必要なソフトウェアの真正性を検証するため、VMの数が増加すると、真正性の検証にかかる時間がVMの数に比例して増加し、全てのVMを起動し終わるまでの時間が増加してしまう。
【0005】
本発明は、複数のVMで共用するソフトウェアの検証の結果を流用することにより、複数のVMのソフトウェアの検証にかかる時間を短くする車両の制御装置、車両の制御方法及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
請求項1に記載の車両の制御装置は、車両に搭載された機器を制御する複数のVM(Virtual Machine)のソフトウェアであるVMソフトウェア、及び2以上の前記VMで共用される共通ソフトウェアを記憶する記憶部と、各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する検証部と、を備えている。
【0007】
請求項1に記載の車両の制御装置では、車両に搭載された機器を制御する複数のVMのソフトウェアであるVMソフトウェア、及び2以上の前記VMで共用される共通ソフトウェアが、記憶部に記憶されている。当該車両の制御装置では、検証部により、各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する。これにより、共通ソフトウェアの検証を重複して行わない分だけ、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。すなわち、複数のVMで共用するソフトウェアの検証の結果を流用することにより、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。
【0008】
請求項2に記載の車両の制御装置は、請求項1に記載の車両の制御装置において、各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用するか否かを決定する流用判断部を更に備え、前記検証部は、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用すると決定した場合には、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用して、前記VMのソフトウェアを検証し、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用しないと決定した場合には、前記VMのVMソフトウェア及び前記共通ソフトウェアを検証する。これにより、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用すると決定した場合には、共通ソフトウェアの検証を重複して行わないため、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。
【0009】
請求項3に記載の車両の制御装置は、請求項1又は2に記載の車両の制御装置において、前記検証部は、前記VMのソフトウェアの真正性を検証する。これにより、複数のVMのソフトウェアの真正性の検証にかかる時間を短くすることができる。なお、真正性を検証する、とは、改ざんされていないことを検証することである。
【0010】
請求項4に記載の車両の制御装置は、請求項1~請求項3の何れか1項記載の車両の制御装置において、前記検証部は、前記複数のVMのソフトウェアを起動するときに、各前記VMのソフトウェアを検証する。これにより、複数のVMのソフトウェアを起動するのにかかる時間を短くすることができる。なお、VMのソフトウェアを起動する、とは、VMのVMソフトウェア及び共通ソフトウェアを記憶部から読み出して展開することである。
【0011】
請求項5に記載の車両の制御装置は、請求項1~請求項4の何れか1項記載の車両の制御装置において、前記指標は、前記VMが制御する機器の機能安全に関する機能安全指標、又は前記VMのソフトウェアのセキュリティに関するセキュリティ指標である。これにより、VMが制御する機器の機能安全、又はVMのソフトウェアのセキュリティと、複数のVMのソフトウェアの検証にかかる時間の短縮とを両立することができる。
【0012】
請求項6に記載の車両の制御方法は、車両に搭載された機器を制御する複数のVM(Virtual Machine)のソフトウェアであるVMソフトウェア、及び2以上の前記VMで共用される共通ソフトウェアを記憶する記憶部を含むコンピュータが、各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する検証ステップ、を備えている。
【0013】
請求項6に記載の車両の制御方法は、検証ステップにより、各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する。これにより、共通ソフトウェアの検証を重複して行わない分だけ、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。すなわち、複数のVMで共用するソフトウェアの検証の結果を流用することにより、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。
【0014】
請求項7に記載の制御プログラムは、車両に搭載された機器を制御する複数のVM(Virtual Machine)のソフトウェアであるVMソフトウェア、及び2以上の前記VMで共用される共通ソフトウェアを記憶する記憶部を含むコンピュータに、各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する検証ステップを含む処理を実行させる。
【0015】
請求項7に記載の制御プログラムは、検証ステップにより、各前記VMのソフトウェアを検証する際に、前記VMに対して予め付与された指標に応じて、他の前記VMのソフトウェアの検証で得られた、前記共通ソフトウェアの検証結果を流用する。これにより、共通ソフトウェアの検証を重複して行わない分だけ、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。すなわち、複数のVMで共用するソフトウェアの検証の結果を流用することにより、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。
【発明の効果】
【0016】
本発明によれば、複数のVMで共用するソフトウェアの検証の結果を流用することにより、複数のVMのソフトウェアの検証にかかる時間を短くすることができる。
【図面の簡単な説明】
【0017】
【
図1】第1の実施形態に係る車両のハードウェア構成を示すブロック図である。
【
図2】第1の実施形態の車両の機能構成の例を示すブロック図である。
【
図3】第1の実施形態における起動処理の流れを示すフローチャートである。
【
図4】第1の実施形態における起動処理の流れを示すフローチャート(
図3の具体例)である。
【
図5】第2の実施形態の車両の機能構成の例を示すブロック図である。
【
図6】第3の実施形態の車両の機能構成の例を示すブロック図である。
【
図7】第4の実施形態の車両の機能構成の例を示すブロック図である。
【
図8】第5の実施形態の車両の機能構成の例を示すブロック図である。
【
図9】第5の実施形態における起動処理の流れを示すフローチャートである。
【
図10】第5の実施形態の他の例における起動処理の流れを示すフローチャートである。
【
図11】実施形態の他の例における車両の機能構成の例を示すブロック図である。
【
図12】実施形態の他の例における起動処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0018】
[第1の実施形態]
図1は、第1の実施形態に係る車両12の制御系を示すブロック図である。
【0019】
(構成)
図1に示されるように、第1の実施形態に係る車両12は、車両の制御装置(以下、単に「制御装置」とする)10としてのECU(Electronic Control Unit)20と、ECU20に接続される車載機器群16とを含んで構成されている。車載機器群16は、車両12に設けられたセンサ類であって、ボデー各部、エンジン各部に装着されたセンサを含む。また、車載機器群16は、車両12に設けられた駆動用の装置類であって、ボデー各部、エンジン各部に装着されたモータ、バルブ、アクチュエータを含む。
【0020】
ECU20は、CPU(Central Processing Unit)20A、ROM(Read Only Memory)20B、RAM(Random Access Memory)20C、通信I/F(Inter Face)20D及び入出力I/F(Inter Face)20E、ストレージ20F及びセキュリティモジュール20Gを含んで構成されている。CPU20A、ROM20B、RAM20C、通信I/F20D、入出力I/F20E、ストレージ20F及びセキュリティモジュール20Gは、バス20Hを介して相互に通信可能に接続されている。
【0021】
CPU20Aは、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU20Aは、ROM20Bからプログラムを読み出し、RAM20Cを作業領域としてプログラムを実行する。本実施形態では、CPU20A自体を複数備えてもよいし(いわゆる、マルチプロセッサ)、CPU20Aにおいてコアを複数有していてもよい(いわゆる、マルチコア)。
【0022】
ROM20Bは、各種プログラム及び各種データを記憶している。本実施形態のROM20Bには、制御プログラム200が記憶されている。制御プログラム200は、後述する起動処理を行うためのプログラムである。また、ROM20Bには、複数のVMで共用される共通ソフトウェア群210が記憶されている。
【0023】
RAM20Cは、作業領域として一時的にプログラム又はデータを記憶する。
【0024】
通信I/F20Dは、車両12に設けられた他の装置と接続するためのインタフェースである。当該インタフェースは、CAN(Controller Area Network)、イーサネット(登録商標)等による通信規格が用いられる。
【0025】
入出力I/F20Eは、車両12に搭載される車載機器群16と通信するためのインタフェースである。
【0026】
ストレージ20Fには、VM起動順序リスト220が記憶されている。VM起動順序リスト220は、各VMを起動する場合における各VMの起動順序を規定したリストである。VM起動順序リスト220には、更に、各VMに対して予め定められた指標が付与されている。指標としては、例えば、VMに対して求められるシステム安全性要求レベルが用いられる。ここで、システム安全性要求レベルは、ECUの誤動作、故障などにより引き起こされる問題の種類と発生確率の組み合わせから、当該VMに求められる安全性のレベルである。車両の場合は、ISO26262で車両の電子制御システムに対し、安全性のレベルは、ASIL(Automotive Safety Intergrity Level)として定義されている。具体的には、システム異常が生じることにより人体へ危害を及ぼしたり物的損害を与えるなどの可能性があるVMには、システム安全性要求レベル「高」が付与されている。一方、システム安全性が要求されないVM、つまり、システム異常が生じることにより人体へ危害を及ぼしたり物的損害を与えるなどの可能性がないVMには、システム安全性要求レベル「低」が付与されている。それ以外のVMには、システム安全性要求レベル「中」が付与されている。
【0027】
また、ストレージ20Fには、2つ以上のVMの各々を構成するためのVMソフトウェア群230が記憶されている。2つ以上のVMソフトウェア群230は、例えば、後述するマルチメディアVMを構成するためのマルチメディアVMソフトウェア群230A、後述するボデー制御VMを構成するためのボデー制御VMソフトウェア群230B、及び後述する自動運転制御VMを構成するための自動運転制御VMソフトウェア群230Cを含んでいる。なお、VMソフトウェア群230は、用途に応じたVMソフトウェア群230をさらに含んでいる。
【0028】
ストレージ20Fは、ROMやハードディスク、又は各種Flashデバイス(SSD(Solid State Drive)、eMMC(embedded MultiMediaCard)、SD(Secure Digital)など)で実現される。
【0029】
セキュリティモジュール20Gは、ハードウェアでソフトウェアの真正性を検証するものであり、例えば、TPM(Trusted Platform Module)、又はHSM(Hardware Security Module)である。セキュリティモジュール20Gは、例えば、保管している鍵と、暗号又は復号アクセラレータとを用いた暗号又は復号を行ったり、ハッシュ値等の演算を行ったりして、ソフトウェアの真正性を検証する。
【0030】
図2は、ECU20の機能構成の例を示すブロック図である。各機能構成は、CPU20AがROM20Bに記憶された制御プログラム200を読み出し、これを実行することによって実現される。
【0031】
図2に示されるように、ECU20は、2つ以上のVM110と、VM構成部300とを有している。VM110は、例えば、マルチメディアVM110A、ボデー制御VM110B及び自動運転制御VM110Cを含んでいる。
【0032】
なお、ECU20において実現されるVM110はこの限りでなく、用途に応じたVM110をさらに含んでいてもよい。
【0033】
VM構成部300は、各VM110を仮想的に構成する機能を有している。このVM構成部300は、いわゆるハイパーバイザーの機能により実現され、起動時に、ストレージ20Fから、VM起動順序リスト220を読み出し、VM起動順序リスト220に規定されている起動順序に従って、VMソフトウェア群230及び共通ソフトウェア群210を読み出し、VM110を起動する。具体的には、VM構成部300は、VMのソフトウェア群230及び共通ソフトウェア群210をRAM20Cに展開し、VM110を起動させる。
【0034】
VM構成部300は、起動VM判断部310と、流用判断部320と、検証部330と、起動部340とをさらに含んでいる。
【0035】
起動VM判断部310は、VM起動順序リスト220に規定されている起動順序に従って、起動するVM110を判断すると共に、当該VM110のシステム安全性要求レベルを取得する。
【0036】
流用判断部320は、各VM110のVMソフトウェア群230を検証する際に、当該VM110に対して予め付与されたシステム安全性要求レベルに応じて、他のVM110のVMソフトウェア群230の検証で得られた、共通ソフトウェア群210の検証結果を流用するか否かを決定する。具体的には、流用判断部320は、当該VM110のシステム安全性要求レベルが「高」である場合には、共通ソフトウェア群210の検証結果を流用しないと決定する。例えば、ボデー制御VM110Bには、システム安全性要求レベル「高」が付与されているため、ボデー制御VM110Bについて、共通ソフトウェア群210の検証結果を流用しないと決定する。
【0037】
流用判断部320は、当該VM110のシステム安全性要求レベルが「中」である場合には、他のVM110のVMソフトウェア群230の検証で得られた、共通ソフトウェア群210の検証結果を流用すると決定する。例えば、自動運転制御VM110Cには、システム安全性要求レベル「中」が付与されているため、自動運転制御VM110Cについて、共通ソフトウェア群210の検証結果を流用すると決定する。
【0038】
流用判断部320は、当該VMのシステム安全性要求レベルが「低」である場合には、当該VM110のVMソフトウェア群230の検証を行わないと決定する。例えば、マルチメディアVM110Aには、システム安全性要求レベル「低」が付与されているため、マルチメディアVMソフトウェア群230Aの検証を行わないと決定する。
【0039】
検証部330は、複数のVM110を起動するときに、各VM110のVMソフトウェア群230の真正性を検証する。このとき、検証部330は、他のVM110のVMソフトウェア群230の検証で得られた、共通ソフトウェア群210の検証結果を流用しないと決定した場合には、他のVM110のVMソフトウェア群230の検証で得られた、共通ソフトウェア群210の検証結果を流用しないで、当該VM110のVMソフトウェア群230の真正性を検証する。例えば、検証部330は、共通ソフトウェア群210の検証結果を流用しないと決定された場合には、セキュリティモジュール20Gを用いて、当該VM110のVMソフトウェア群230及び共通ソフトウェア群210の真正性を検証する。
【0040】
検証部330は、共通ソフトウェア群210の検証結果を流用すると決定された場合には、セキュリティモジュール20Gを用いて、当該VM110のVMソフトウェア群230の真正性を検証し、共通ソフトウェア群210の検証を省略する。
【0041】
検証部330は、VMソフトウェア群230の検証を行わないと決定された場合には、当該VM110のVMソフトウェア群230及び共通ソフトウェア群210の検証を省略する。
【0042】
起動部340は、各VM110について、当該VM110のVMソフトウェア群230及び共通ソフトウェア群210の真正性の検証が成功した場合に、当該VM110のVMソフトウェア群230及び共通ソフトウェア群210をRAM20Cに展開して、当該VM110を起動する。
【0043】
(制御の流れ)
本実施形態において、ECU10が実行する起動処理の流れの例を
図3のフローチャートで説明する。
【0044】
図3のステップS100において、CPU20Aは、ソフトウェアとしてのハイパーバイザーを起動する。
【0045】
ステップS101において、起動VM判断部310は、VM起動順序リスト220に規定されている起動順序に従って、起動するVM110を判断すると共に、当該VM110のシステム安全性要求レベルを取得する。
【0046】
ステップS102において、起動VM判断部310は、起動していないVM110があるか否かを判定する。上記ステップS101で起動するVM110が判断された場合には、ステップS103へ進む。一方、上記ステップS101で起動するVM110が判断されなかった場合には、起動処理を終了する。
【0047】
ステップS103においては、流用判断部320は、起動するVM110のシステム安全性要求レベルが「高」、「中」、及び「低」の何れかであるかを判定する。起動するVM110のシステム安全性要求レベルが「高」である場合には、ステップS105へ進む。起動するVM110のシステム安全性要求レベルが「中」である場合には、ステップS104へ進む。起動するVM110のシステム安全性要求レベルが「低」である場合には、ステップS109へ進む。
【0048】
ステップS104において、流用判断部320は、共通ソフトウェア群210について、他のVM110の検証において検証済みであるか否かを判定する。共通ソフトウェア群210について、他のVM110の検証において検証済みである場合には、流用判断部320は、共通ソフトウェア群210についての検証結果を流用すると判断し、ステップS107へ進む。共通ソフトウェア群210について、他のVM110の検証において検証されていない場合には、ステップS105へ進む。
【0049】
ステップS105において、検証部330は、セキュリティモジュール20Gを用いて、共通ソフトウェア群210の真正性を検証する。
【0050】
ステップS106において、検証部330は、上記ステップS105の検証結果が、真正であるとの検証結果であるか否かを判定する。上記ステップS105の検証結果が、真正でないとの検証結果である場合には、ステップS110へ進み、CPU20Aが、起動エラーを出力し、起動処理を終了する。一方、上記ステップS105の検証結果が、真正であるとの検証結果である場合には、ステップS107へ進む。
【0051】
ステップS107において、検証部330は、セキュリティモジュール20Gを用いて、当該VM110のVMソフトウェア群230の真正性を検証する。
【0052】
ステップS108において、検証部330は、上記ステップS107の検証結果が、真正であるとの検証結果であるか否かを判定する。上記ステップS107の検証結果が、真正でないとの検証結果である場合には、ステップS110へ進む。一方、上記ステップS107の検証結果が、真正であるとの検証結果である場合には、ステップS109へ進む。
【0053】
ステップS109において、起動部340は、起動するVM110のVMソフトウェア群230及び共通ソフトウェア群210をRAM20Cに展開して、当該VM110を起動し、上記ステップS101へ戻る。
【0054】
ECU10が実行する起動処理の流れの具体例を
図4のフローチャートで説明する。ここでは、VM起動順序リスト220に、マルチメディアVM110A、ボデー制御VM110B、自動運転制御VM110Cの順に起動することが規定されている場合を例に説明する。
【0055】
ステップS101A~ステップS109Aにおいて、マルチメディアVM110Aを、起動するVM110として、上記
図3のステップS101~ステップS109と同様に処理を行う。このとき、マルチメディアVM110Aのシステム安全性要求レベルが「低」であるため、ステップS103Aにおいて、起動するマルチメディアVM110Aのシステム安全性要求レベルが「低」であると判定され、マルチメディアVMソフトウェア群230A及び共通ソフトウェア群210の何れについても真正性の検証を行わずに、ステップS109Aへ進む。
【0056】
そして、ステップS101B~ステップS109Bにおいて、ボデー制御VM110Bを、起動するVM110として、上記
図3のステップS101~ステップS109と同様に処理を行う。このとき、ボデー制御VM110Bのシステム安全性要求レベルが「高」であるため、ステップS103Bにおいて、起動するボデー制御VM110Bのシステム安全性要求レベルが「高」であると判定され、ステップS105B、ステップS107Bにおいて、ボデー制御VMソフトウェア群230B及び共通ソフトウェア群210の双方について真正性の検証を行う。
【0057】
そして、ステップS101C~ステップS109Cにおいて、自動運転制御VM110Cを、起動するVM110として、上記
図3のステップS101~ステップS109と同様に処理を行う。このとき、自動運転制御VM110Cのシステム安全性要求レベルが「中」であるため、ステップS103Cにおいて、起動する自動運転制御VM110Cのシステム安全性要求レベルが「中」であると判定される。また、ステップS104Cにおいて、共通ソフトウェア群210について、ボデー制御VM110Bの検証において検証済みであると判定され、ステップS107へ進む。そして、ステップS107Cにおいて、自動運転制御VMソフトウェア群230Cについて真正性の検証を行う。
【0058】
(第1の実施形態のまとめ)
本実施形態の制御装置10では、複数のVMで共用する共通ソフトウェア群の検証の結果を流用することにより、複数のVMのソフトウェア群の検証にかかる時間を短くすることができる。
【0059】
また、本実施形態の制御装置10では、VMが制御する機器の機能安全と、複数のVMのソフトウェアの検証にかかる時間の短縮とを両立することができる。
【0060】
また、本実施形態の制御装置10では、ECUの故障時安全性担保のために、ECU起動時に、VMのソフトウェア群に改ざんがないことを検証する。ECU起動時に行う共通ソフトウェア群の検証を、特定条件下では検証済みであると認め、起動時間の短縮を図りつつ、共通ソフトウェア群の検証は、VMに求められる安全性のレベルに応じて、再検証するかどうかを決定し、自システムの安全性担保を図る。
【0061】
また、システム安全性要求レベルが高いVMに関しては、システム異常が生じることにより人体へ危害を及ぼしたり、物的損害を与えるなどの可能性があり、VM起動前にそのVMを構成するVMソフトウェア群230、及び共通ソフトウェア群210が何らかの要因によって改ざんされてしまっていないかを、ECU20は、セキュリティモジュールを用いて検証する。一方で、システム安全性が要求されないVM、つまり、システム異常により人体へ危害を及ぼしたり、物的損害を与えるなどの可能性がないVMについては、そのソフトウェアの真正性検証は必須ではないため、VM起動時間の短縮のためにソフトウェア群の真正性検証を行わないこととする。
【0062】
[第2の実施形態]
第1の実施形態では、ECU20にROM20Bを設けていた。これに対して、第2の実施形態では、ECU20にROM20Bを設けていない点で第1の実施形態と異なる。以下、第1の実施形態との相違点について説明する。なお、同一の構成には同一の符号を付しており、説明については省略する。
【0063】
図5に示されるように、本実施形態のECU20は、CPU20A、RAM20C、通信I/F20D及び入出力I/F20E、ストレージ20F及びセキュリティモジュール20Gを含んで構成されている。
【0064】
ストレージ20Fには、制御プログラム200及び共通ソフトウェア群210が記憶されている。
【0065】
本実施形態においても、第1の実施形態と同様の作用効果を得ることができる。
【0066】
[第3の実施形態]
第1の実施形態では、ECU20にストレージ20Fを設けていた。これに対して、第3の実施形態では、ECU20にストレージ20Fを設けていない点で第1の実施形態と異なる。以下、第1の実施形態との相違点について説明する。なお、同一の構成には同一の符号を付しており、説明については省略する。
【0067】
図6に示されるように、本実施形態のECU20は、CPU20A、ROM20B、RAM20C、通信I/F20D、入出力I/F20E及びセキュリティモジュール20Gを含んで構成されている。
【0068】
ROM20Bには、VM起動順序リスト220及び2つ以上のVMソフトウェア群230が記憶されている。
【0069】
本実施形態においても、第1の実施形態と同様の作用効果を得ることができる。
【0070】
[第4の実施形態]
第1の実施形態に対して、第4の実施形態では、ROM20Bの代わりにEEPROM(Electrically Erasable Programmable Read-Only Memory)420Bを設けた点で第1の実施形態と異なる。以下、第1の実施形態との相違点について説明する。なお、同一の構成には同一の符号を付しており、説明については省略する。
【0071】
図7に示されるように、本実施形態のECU20は、CPU20A、EEPROM420B、RAM20C、通信I/F20D、入出力I/F20E、ストレージ20F及びセキュリティモジュール20Gを含んで構成されている。
【0072】
EEPROM20Bには、制御プログラム200及び共通ソフトウェア群210が記憶されている。
【0073】
本実施形態においても、第1の実施形態と同様の作用効果を得ることができる。
【0074】
[第5の実施形態]
第1の実施形態に対して、第5の実施形態では、セキュリティモジュール20Gの他に、セキュリティモジュール20IをECU20に設けた点で異なる。以下、第1の実施形態との相違点について説明する。なお、同一の構成には同一の符号を付しており、説明については省略する。
【0075】
(構成)
図8に示されるように、本実施形態のECU20は、CPU20A、ROM20B、RAM20C、通信I/F20D、入出力I/F20E、ストレージ20F、セキュリティモジュール20G及びセキュリティモジュール20Iを含んで構成されている。
【0076】
検証部330は、複数のVMのソフトウェアを起動するときに、各VMのソフトウェアの真正性の検証を、セキュリティモジュール20G及びセキュリティモジュール20Iを用いて並列に行う。
【0077】
(制御の流れ)
本実施形態において、ECU10が実行する起動処理の流れの例を
図9のフローチャートで説明する。なお、上記実施形態と同一の処理には同一の符号を付しており、説明については省略する。
【0078】
図9のステップS100において、CPU20Aは、ソフトウェアとしてのハイパーバイザーを起動する。
【0079】
ステップS101において、起動VM判断部310は、VM起動順序リスト220に規定されている起動順序に従って、起動するVM110を判断すると共に、当該VM110のシステム安全性要求レベルを取得する。ここでは、起動するVM110を2つ判断する。
【0080】
ステップS102において、起動VM判断部310は、起動していないVM110があるか否かを判定する。上記ステップS101で起動するVM110が判断された場合には、ステップS500へ進む。一方、上記ステップS101で起動するVM110が判断されなかった場合には、起動処理を終了する。
【0081】
ステップS500において、CPU20Aは、起動する2つのVM110の起動処理を並列に実行する。このステップS500は、起動する2つのVM110に対して、セキュリティモジュール20G及びセキュリティモジュール20Iを用いて、上記
図3のステップS103~ステップS110と同様の処理を並列に行う。そして、ステップS101へ戻る。
【0082】
本実施形態においても、第1の実施形態と同様の作用効果を得ることができる。
【0083】
また、VM110の起動を並列化することが可能となり、安全性の担保はそのままにVMの起動時間の短縮を図ることができる。
【0084】
[備考]
なお、上記第5実施形態では、VM110の起動を並列化する場合を例に説明したが、これに限定されない。ソフトウェア群の真正性の検証を並列化するようにしてもよい。この場合における、ECU10が実行する起動処理の流れの例を
図10のフローチャートで説明する。なお、上記実施形態と同一の処理には同一の符号を付しており、説明については省略する。
【0085】
図10のステップS104において、流用判断部320は、共通ソフトウェア群210について、他のVM110の検証において検証済みであるか否かを判定する。共通ソフトウェア群210について、他のVM110の検証において検証済みである場合には、流用判断部320は、共通ソフトウェア群210についての検証結果を流用すると判断し、ステップS107へ進む。共通ソフトウェア群210について、他のVM110の検証において検証されていない場合には、ステップS600へ進む。
【0086】
ステップS600において、検証部330は、セキュリティモジュール20Gを用いた、VMソフトウェア群230の真正性の検証と、セキュリティモジュール20Iを用いた、共通ソフトウェア群210の真正性の検証と、を並列に行う。
【0087】
ステップS601において、検証部330は、上記ステップS107又はS600の検証結果が、真正であるとの検証結果であるか否かを判定する。上記ステップS107又はS600の検証結果が、真正でないとの検証結果である場合には、ステップS110へ進む。一方、上記ステップS107又はS600の検証結果が、真正であるとの検証結果である場合には、ステップS109へ進む。
【0088】
また、上記実施形態では、システム安全性要求レベルを「高」、「中」、「低」の3段階としたが、ECUの特性や安全性要件などに合わせて、システム安全性要求レベルが更に細分化されてもよい。ISO26262では、ASILはA~Dの4段階と対象外とからなる5段階である。この5段階の何れであるかに応じて、共通ソフトウェア群210の検証結果を流用するか否かを決定してもよい。
【0089】
また、上記実施形態では、安全性要求レベルが最上位のVMを起動するときにはVMソフトウェア群230と共通ソフトウェア群210との双方の真正性の検証を行う場合を例に説明したが、これに限定されない。安全性要求レベルが細分化されたとき、上位2レベルまでは、VMソフトウェア群230と共通ソフトウェア群210との双方の真正性の検証を行うようにしてもよい。
【0090】
また、上記実施形態では、共通ソフトウェア群210を1つとしてあげたが、起動するVMの内容によっては、共通ソフトウェア群210が複数存在することも考えられる。この場合、
図11に示すように、ROM20Bは、共通ソフトウェア群210AB及び共通ソフトウェア群210CDを記憶している。例えば、共通ソフトウェア群210ABは、マルチメディアVM110Aとボデー制御VM110Bとで共用され、共通ソフトウェア群210CDは、自動運転制御VM110Cと他のVM110とで共用される。この場合、VM起動順序リスト220には、各VM110について、当該VM110と関係する共通ソフトウェア群210の情報を更に規定しておく必要がある。また、VM構成部300は、どの共通ソフトウェア群210を、どのシステム安全性要求レベルのVM起動時に真正性検証を行ったかを記憶しておく必要がある。
【0091】
また、上記実施形態では、共通ソフトウェア群210の真正性の検証を行い、その後、VMソフトウェア群230の真正性の検証を行う場合を例に説明したが、これに限定されない。共通ソフトウェア群210の真正性の検証と、VMソフトウェア群230の真正性の検証との順序を入れ替えてもよい。この場合には、
図12に示すように、ステップS103において、流用判断部320は、起動するVM110のシステム安全性要求レベルが「高」、「中」、及び「低」の何れかであるかを判定する。起動するVM110のシステム安全性要求レベルが「中」又は「高」である場合には、ステップS107へ進む。起動するVM110のシステム安全性要求レベルが「低」である場合には、ステップS109へ進む。
【0092】
ステップS107において、検証部330は、セキュリティモジュール20Gを用いて、当該VM110のVMソフトウェア群230の真正性を検証する。
【0093】
ステップS108において、検証部330は、上記ステップS107の検証結果が、真正であるとの検証結果であるか否かを判定する。上記ステップS107の検証結果が、真正でないとの検証結果である場合には、ステップS110へ進む。一方、上記ステップS107の検証結果が、真正であるとの検証結果である場合には、ステップS104へ進む。
【0094】
ステップS104において、流用判断部320は、共通ソフトウェア群210について、他のVM110の検証において検証済みであるか否かを判定する。共通ソフトウェア群210について、他のVM110の検証において検証済みである場合には、流用判断部320は、共通ソフトウェア群210についての検証結果を流用すると判断し、ステップS109へ進む。共通ソフトウェア群210について、他のVM110の検証において検証されていない場合には、ステップS105へ進む。
【0095】
ステップS105において、検証部330は、セキュリティモジュール20Gを用いて、共通ソフトウェア群210の真正性を検証する。
【0096】
ステップS106において、検証部330は、上記ステップS105の検証結果が、真正であるとの検証結果であるか否かを判定する。上記ステップS105の検証結果が、真正でないとの検証結果である場合には、ステップS110へ進み、CPU20Aが、起動エラーを出力し、起動処理を終了する。一方、上記ステップS105の検証結果が、真正であるとの検証結果である場合には、ステップS109へ進む。
【0097】
また、上記実施形態では、各VM110に対して付与される指標として、安全性要求レベルを用いる場合を例に説明したが、これに限定されない。各VM110に対して付与される指標として、例えば、当該VM110のソフトウェアのセキュリティレベルを付与してもよい。この場合、ソフトウェアのセキュリティレベルが高い場合には、他のVM110の検証で得られた共通ソフトウェア群210の真正性の検証結果を流用すると判断し、一方、ソフトウェアのセキュリティレベルが低い場合には、他のVM110の検証で得られた共通ソフトウェア群210の真正性の検証結果を流用せずに、当該VM110のVMソフトウェア群230及び共通ソフトウェア群210の真正性を検証する。
【0098】
また、上記実施形態では、各VM110のVMソフトウェア群230及び共通ソフトウェア群210の真正性を検証する場合を例に説明したが、これに限定されない。例えば、各VM110のVMソフトウェア群230及び共通ソフトウェア群210の発行者の妥当性を検証するようにしてもよい。
【0099】
また、上記実施形態では、VM起動順序リスト220を基にVM110を起動していく場合を例に説明したが、これに限定されない。制御プログラム200内でVM110の起動順序を固定的にしてもよい。この場合、起動処理内における、起動するVM110の判定が不要となる。あるいは、起動VM判断部310が、VM起動順序リスト220を用いずに、ストレージ20F又はROM20B内のVMソフトウェア群230を走査し、VM110の起動順序を決めるようにしてもよい。
【0100】
また、上記実施形態でCPU20Aがソフトウェア(プログラム)を読み込んで実行した処理は、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、各処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0101】
また、上記実施形態において、プログラムはコンピュータが読み取り可能な非一時的記録媒体に予め記憶(インストール)されている態様で説明した。例えば、ECU20において制御プログラム200は、ROM20Bに予め記憶されている。しかしこれに限らず、各プログラムは、HDD(Hard Disk Drive)、及びSSD等のストレージに記憶されていてもよい。また、各プログラムは、CD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的記録媒体に記録された形態で提供されてもよい。また、各プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0102】
上記実施形態で説明した処理の流れも、一例であり、主旨を逸脱しない範囲内において不要なステップを削除したり、新たなステップを追加したり、処理順序を入れ替えたりしてもよい。
【符号の説明】
【0103】
10 車両の制御装置
12 車両
20 ECU
20B ROM(記憶部)
20F ストレージ(記憶部)
110 VM(Virtual Machine)
110A マルチメディアVM
110B ボデー制御VM
110C 自動運転制御VM
200 制御プログラム
210、210AB、210CD 共通ソフトウェア群(共通ソフトウェア)
220 起動順序リスト
230 VMソフトウェア群(VMソフトウェア)
230A マルチメディアVMソフトウェア群
230B ボデー制御VMソフトウェア群
230C 自動運転制御VMソフトウェア群
300 VM構成部
320 流用判断部
330 検証部
340 起動部