(57)【要約】【課題】乗員の乗車していない場合にソフトウェアの改竄検知を行うことが可能な改竄検知システムを提供すること。【解決手段】バッテリー電源１３から電源供給可能な２つ以上の電子制御ユニットを有するソフトウェアの改竄検知システム１００であって、第１の電子制御ユニット１１は、自車両が駐車中であると判断した場合、バッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える電源制御手段５７を有し、１つ以上の第２の電子制御ユニット１２は、バッテリー電源がＯＮに切り替わることで再起動する際、記憶媒体に記憶されているソフトウェアの改竄の有無を検知する改竄検知手段６１を有する、ことを特徴とする。【選択図】図１
2014151720.tif 000002
【特許請求の範囲】
【請求項１】
バッテリー電源から電源供給可能な電子制御ユニットを有するソフトウェアの改竄検知システムであって、
第１の電子制御ユニットは、自車両が駐車中であると判断した場合、バッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える電源制御手段を有し、
１つ以上の第２の電子制御ユニットは、バッテリー電源がＯＮに切り替わることで再起動する際、記憶媒体に記憶されているソフトウェアの改竄の有無を検知する改竄検知手段を有する、
ことを特徴とする改竄検知システム。
【請求項２】
バッテリー電源に加え、原動力始動操作部材がＯＮに操作されることで電源供給を開始する原動力電源系から電源供給可能な第３の電子制御ユニットをさらに有し、
前記第３の電子制御ユニットの前記改竄検知手段は、バッテリー電源がＯＮに切り替わることで起動する際、改竄検知を行うが、前記原動力電源系がＯＮになることで起動する場合には改竄検知を行わない、
ことを特徴とする請求項１記載の改竄検知システム。
【請求項３】
前記第１の電子制御ユニットと前記第２の電子制御ユニットは通信ネットワークを介して通信可能に接続されており、
前記第１の電子制御ユニットは、前記電源制御手段がバッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える前に、揮発性メモリに記憶されているデータの退避を前記第２の電子制御ユニットに指示し、
前記第２の電子制御ユニットは、退避の指示により、揮発性メモリに記憶されているデータを不揮発性メモリに退避するデータ退避手段と、
再起動後に、不揮発性メモリに退避したデータを揮発性メモリに復帰するデータ復帰手段と、を有する、
ことを特徴とする請求項１又は２記載の改竄検知システム。
【請求項４】
前記第２の電子制御ユニット及び前記第３の電子制御ユニットは、前記改竄検知手段による改竄の検知結果を前記第１の電子制御ユニットに送信する検知結果送信手段、を有する、ことを特徴とする請求項２項記載の改竄検知システム。
【請求項５】
改竄検知するタイミングと間隔の設定を受け付ける設定画面を表示装置に表示する設定受付手段を有し、
前記電源制御手段は、最後に改竄検知してから前記設定受付手段が受け付けた前記間隔が経過しかつ前記タイミングになった場合、バッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える、
ことを特徴とする請求項１〜４いずれか１項記載の改竄検知システム。
【請求項６】
前記第１の電子制御ユニットは、前記電源制御手段がバッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える前に自機を再起動し、
再起動する際、記憶媒体に記憶されているソフトウェアの改竄の有無を検知する改竄検知手段を有し、
前記改竄検知手段がソフトウェアが改竄されていることを検知しなかった場合に、前記電源制御手段がバッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える、
ことを特徴とする請求項１〜５いずれか１項記載の改竄検知システム。
【請求項７】
バッテリー電源から電源供給された電子制御ユニットであって、
第２の電子制御ユニットが、自車両が駐車中であると判断し、バッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替えた場合、
バッテリー電源がＯＮに切り替わることで再起動する際、記憶媒体に記憶されているソフトウェアの改竄の有無を検知する改竄検知手段を有する、
ことを特徴とする電子制御ユニット。
【請求項８】
バッテリー電源がＯＦＦからＯＮに切り替わることで再起動する際、記憶媒体に記憶されているソフトウェアの改竄の有無を検知する第２の電子制御ユニットに供給するバッテリー電源をＯＮ又はＯＦＦする電子制御ユニットであって、
自車両が駐車中であると判断した場合、バッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える電源制御手段を有する、
ことを特徴とする電子制御ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの改竄を検知する改竄検知システムに関する。
【背景技術】
【０００２】
パーソナルコンピュータやワークステーションのような汎用型のコンピュータは、ＨＤＤ（Hard Disk Drive）などの不揮発メモリに記憶されたプログラムを実行することで動作する。汎用型のコンピュータは、ウィルスなどのマルウェアにより不正な動作を行うことが知られており、従来からチェックソフトなどでマルウェアの検知が行われている。
【０００３】
組み込み系のコンピュータもプログラムを実行することで動作するが、プログラムは任意の書き込みが困難なＲＯＭに記憶されているためマルウェアの検知に限られず、ＲＯＭのプログラムに対する改竄検知が行われる場合がある（例えば、特許文献１参照。）。特許文献１には、ファームウェアのハッシュ値を二次記憶装置に保存しておき、機器の起動時に再計算されたファームウェアのハッシュ値と比較して改竄を検知するという記載がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１４６３３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、従来、車両に搭載されるマイコンは、このような改竄検知を行っていない。しかし、特許文献１に記載のようにプログラムの改竄検知は機器の起動時に行われることが一般的である。これは、起動後の例えば処理負荷の低い場合に改竄検知を行っても、すでに改竄されたプログラムを実行しているため、不具合が生じたり改竄検知そのものが困難になるおそれがあるためである。
【０００６】
車両の場合、エンジン制御のマイコンやブレーキ制御のマイコンなどがあり、走行に必須のこれらのマイコンのプログラムの改竄を検知することが望まれる。一方、走行に必須のマイコンの起動時に改竄を検知すると、運転者が走行を開始するまでに、毎回、一定時間、待たされるため、利便性が低下してしまうという問題がある。
【０００７】
本発明は、上記課題に鑑み、乗員の乗車していない場合にソフトウェアの改竄検知を行うことが可能な改竄検知システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、バッテリー電源から電源供給可能な２つ以上の電子制御ユニットを有するソフトウェアの改竄検知システムであって、第１の電子制御ユニットは、自車両が駐車中であると判断した場合、バッテリー電源をＯＮからＯＦＦに、さらにＯＦＦからＯＮに切り替える電源制御手段を有し、１つ以上の第２の電子制御ユニットは、バッテリー電源がＯＮに切り替わることで再起動する際、記憶媒体に記憶されているソフトウェアの改竄の有無を検知する改竄検知手段を有する、ことを特徴とする。
【発明の効果】
【０００９】
乗員の乗車していない場合にソフトウェアの改竄検知を行うことが可能な改竄検知システムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施例の電子制御装置によるプログラムの改竄検知について模式的に説明する図の一例である。
【図２】改竄検知システムの概略構成図の一例である。
【図３】電源制御コンピュータ又はＥＣＵのハードウェア構成図の一例である。
【図４】ナビＥＣＵ、電源制御コンピュータ、及び、ＥＣＵの機能ブロック図の一例である。
【図５】表示装置に表示される設定画面の一例を示す図である。
【図６】電源制御コンピュータとＥＣＵの動作手順の一例を示すフローチャート図である。
【図７】電源制御コンピュータ又はＥＣＵのハードウェア構成図の一例である（実施例２）。
【図８】電源制御コンピュータとＥＣＵの動作手順の一例を示すフローチャート図である（実施例２）。
【図９】電源制御コンピュータのソフトウェアの改竄検知を模式的に説明する図の一例である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
【実施例１】
【００１２】
図１は、本実施例の電子制御装置によるプログラムの改竄検知について模式的に説明する図の一例である。
【００１３】
電源制御コンピュータ１１は＋Ｂ電源１３のＯＮ／ＯＦＦを制御することができる。図では＋Ｂ電源１３の系統に複数のＥＣＵ（Electronic Control Unit）１〜ｎが接続されている。各ＥＣＵ１〜ｎは、＋Ｂ電源１３又はＩＧ電源のＥＣＵのいずれでもよい。＋Ｂ電源１３のＥＣＵは電源モードがＯＦＦでも動作可能か又はスリープ状態であり、ＩＧ電源のＥＣＵは電源モードがＯＦＦでは動作しない。
【００１４】
(i)  電源制御コンピュータ１１は車両が駐車状態になると、＋Ｂ電源１３をＯＮからＯＦＦに、そして、ＯＦＦからＯＮに制御する。
【００１５】
(ii)  ＥＣＵ１〜ｎは、＋Ｂ電源１３のＯＮにより再起動（リセット）するので、起動プログラムの実行を開始する。起動プログラムはＲＯＭからハッシュ値を作成するなどして改竄検知を行う。
【００１６】
(iii)  ＥＣＵ１〜ｎは改竄検知の結果を電源制御コンピュータ１１に送信した後、それぞれのプログラムを実行して主要な機能を提供する（駐車中なのでやがてスリープする。）。
【００１７】
したがって、本実施例によれば、ＩＧスイッチのＯＮ時に改竄検知する必要がないので、車両に乗車して走行しようとする運転者や乗員（以下、区別することなくユーザという）を待たせる時間が増大することがない。また、＋Ｂ電源１３を電源とするＥＣＵは、不具合の発生時のリセットを除けばバッテリーが脱着されない限り再起動しないので、改竄検知が行われるタイミングを起動時に限定するとほとんど改竄検知される機会がない。これに対し、本実施例では、駐車中に改竄検知を行うことができるので、＋Ｂ電源１３を電源とするＥＣＵも充分な頻度で改竄検知することができる。例えば、駐車後、ユーザが走行する前には改竄検知されているので、起動時に改竄検知が行われる場合と同等の効果が得られる。
【００１８】
〔構成例〕
図２は、改竄検知システム１００の概略構成図の一例を示す。改竄検知システム１００は、電源制御コンピュータ１１により制御され、電源制御コンピュータ１１は電源系Ｎｏ１を経由してナビＥＣＵ２１、エンジンＥＣＵ２２、及び、ブレーキＥＣＵ２３に＋Ｂ電源１３を供給し、電源系Ｎｏ２を経由してＥＣＵ Ｅ２４、ＥＣＵ  Ｆ２５に＋Ｂ電源１３を供給する（以下、区別しない場合には電源系Ｎｏ１と２のＥＣＵを単に「ＥＣＵ」１２という場合がある）。また、電源制御コンピュータ１１は通信線Ｎｏ１によりナビＥＣＵ２１、エンジンＥＣＵ２２、及び、ブレーキＥＣＵ２３と通信可能に接続されており、通信線Ｎｏ２によりＥＣＵ Ｅ２４、ＥＣＵ Ｆ２５と通信可能に接続されている。
【００１９】
電源制御コンピュータ１１はスイッチング回路２６と通信回路２７を有する。スイッチング回路２６は＋Ｂ電源１３を電源系毎にＯＮ→ＯＦＦ→ＯＮする（電源系Ｎｏ１のＥＣＵは同時にＯＮ／ＯＦＦし、電源系Ｎｏ２のＥＣＵは同時にＯＮ／ＯＦＦする。）。電源系の数は１例であって、各ＥＣＵ毎に個別の電源系を有していてもよい。
【００２０】
通信回路２７は、コネクタ１４を介して各ＥＣＵと通信する回路であり、ナビＥＣＵ２１、エンジンＥＣＵ２２、ブレーキＥＣＵ２３、ＥＣＵ Ｅ２４及びＥＣＵ  Ｆ２５は互いに通信可能である。なお、コネクタ１４は、物理形状や信号形式などが規定されたワイヤハーネスなどを接続するための接続インタフェースである。
【００２１】
図示するように電源系Ｎｏ１と電源系Ｎｏ２は共に＋Ｂ電源である。＋Ｂ電源とはＩＧスイッチがＯＮかＯＦＦかに拘わらず（電源モードに拘わらす）バッテリーから電力供給可能な電源経路である。これに対しＩＧ電源とはＩＧスイッチがＯＮに操作され、電源モードがＩＧ−ＯＮの場合にのみ電源供給可能な電源経路である。なお、本実施例ではガソリンエンジン又はディーゼルエンジンを動力源とする車両を例にしているが、ハイブリッド車両や電気自動車にも同様に適用できる。ガソリンエンジン又はディーゼルエンジンを動力源とする車両のＩＧ電源は、ＩＧスイッチでなくパワースイッチがＯＮに操作され、電源モードがＲＥＡＤＹ−ＯＮの場合にのみ電源供給可能な電源経路である（ＩＧスイッチ又はパワースイッチは特許請求の範囲の原動力始動操作部材に相当する。）。
【００２２】
したがって、ナビＥＣＵ２１、エンジンＥＣＵ２２、ブレーキＥＣＵ２３、ＥＣＵ Ｅ２４、及び、ＥＣＵ Ｆ２５は、バッテリーが取り外されない限り、常に電力が供給されている。エンジンＥＣＵ２２やブレーキＥＣＵ２３などの走行時に動作するＥＣＵのマイコンは、一般に駐車中はスリープモード（動作クロックが低くなる、ＣＰＵなどの一部にしか電源供給されない）である。また、ナビＥＣＵ２１は例えばＡＣＣ ＯＮで動作するが、駐車中はスリープモードである。電源制御コンピュータ１１も＋Ｂ電源１３を電源とする。なお、＋ＩＧ電源のＥＣＵについては実施例２にて説明する。
【００２３】
図示するＥＣＵは＋Ｂ電源１３を電源とするＥＣＵの一例であって、ナビＥＣＵ２１等である必要はない。また、ナビＥＣＵ２１、エンジンＥＣＵ２２、ブレーキＥＣＵ２３、ＥＣＵ Ｅ２４、及び、ＥＣＵ  Ｆ２５が、＋Ｂ電源１３でない車両があってもよく、本実施例は＋Ｂ電源１３のＥＣＵの改竄検知例にすぎない。この他にどのようなＥＣＵを有していてもよい。
【００２４】
ナビＥＣＵ２１は、ＧＮＳＳ（Global Navigation Satellite System）などにより自車両の位置を検出し、表示装置に道路地図と自車両の位置を表示する。また、目的地が設定されると現在地から目的地までの経路を探索し、右左折の手前で案内する。エンジンＥＣＵ２２は燃料噴射量、点火タイミング、スロットル開度の制御などを行う。ブレーキＥＣＵ２３はブレーキ油圧を生成したり、各輪の制動圧を制御することでＥＳＣ（Electronic Stability Control）、ＡＢＳ（Anti-Lock Breaking System）、ＴＲＣ（Traction Control）などを行う。 
図３（ａ）は、電源制御コンピュータ１１又はＥＣＵ１２のハードウェア構成図の一例を示す。ＥＣＵ１２は入力回路３１、マイコン３２、出力回路３３、ＣＡＮ通信部３５、及び、電源回路３４を有している。なお、本実施例では特徴部の説明に用いる機能を図示したに過ぎず、ＥＣＵ１２は図示した以外にも機能を有しており、各ＥＣＵ１２の機能は同一でも異なっていてもよい。
【００２５】
入力回路３１には各種のセンサーが接続されている。センサーの種類はＥＣＵ１２によって様々であるが、例えばクランクポジションセンサや車輪速センサーなどである。入力回路３１は、必要であればＡ／Ｄ変換を行ったり値を加工したりして、センサーの識別情報など共にデジタルデータとしてマイコン３２に受け渡す。
【００２６】
出力回路３３には、各種のアクチュエータやスイッチ素子、ドライバ回路などが接続されている。出力回路３３は必要であればマイコン３２の演算結果をＤ／Ａ変換して、アクチュエータ等に出力する。
【００２７】
マイコン３２はＣＰＵ３６、ＲＯＭ３８、ＲＡＭ３７及び不揮発メモリ３９を有する。マイコン３２も、図示する以外に割込みコントローラ、Ｉ／Ｏ、ＷＤＴ（Watch  Dog Timer）、ＤＭＡＣ（Direct Memory Access Controller）、タイマなどを有するが省略されている。ＣＰＵ３６は、ＲＯＭ３８に記憶されたプログラムを実行することでマイコン全体を制御する。ＲＯＭ３８には後述するソフトウェアが記憶されている。ＲＡＭ３７にはプログラムやデータが展開され、ＲＡＭ３７はＣＰＵ３６がアクセスする作業メモリになる。不揮発メモリ３９は電源ＯＦＦでも記憶内容が消去されない記憶素子で構成されたメモリである。不揮発メモリ３９にはＲＯＭ３８に記憶されているソフトウェアのハッシュ値やサム値が記憶されている。
【００２８】
ＣＡＮ通信部３５は、ＣＡＮ（Controller Area Network）プロトコルに従い、通信系に接続された電源制御コンピュータ１１又はＥＣＵ１２と通信するための通信装置である。ＣＡＮ通信部３５はメッセージを受信するとＣＰＵ３６に通知する。また、ＣＰＵ３６がメッセージを送信する際は、ＣＰＵ３６からの指示によりメッセージを作成して通信バスに送信する。このＣＡＮ通信部３５のメッセージの受信は入力の一形態であり、送信は出力の一形態である。なお、ＣＡＮプロトコルは一例に過ぎず、ＦｒｅｘＬａｙ、ＬＩＮ（Local Interconnect Network）又はイーサネット（登録商標）等の通信プロトコルで通信してもよい。
【００２９】
電源回路３４は、＋Ｂ電源１３から所定の電圧を生成してマイコン３２のＶｃｃ端子４１とＲＳＴ端子４０に供給する。また、各ＥＣＵ１２は＋Ｂ電源１３を電源とするので、ＩＧスイッチがＯＦＦでも電源制御コンピュータ１１から電源が供給される。しかし、マイコン３２がスリープモードに移行した場合に、電源回路３４は電源を供給するブロックを制限するなどの省電力制御を行う。
【００３０】
ＲＳＴ端子４０は、Ｖｃｃ端子４１の電圧がＨｉｇｈでＲＳＴ端子４０の入力がＬｏｗになるとマイコン３２をリセットする端子である（アクティブロー）。電源回路３４とＲＳＴ端子４０との間にはスイッチ４２が配置されている。スイッチ４２は、ＷＤＴや不図示のマイコン３２が任意のタイミングでＯＦＦに制御することで、マイコン３２をリセットするためのものである。
【００３１】
電源制御コンピュータ１１がスイッチング回路２６にて＋Ｂ電源１３をＯＮ→ＯＦＦ→ＯＮに制御すると、マイコン３２は再起動する。この場合も、一定時間、ＲＳＴ端子４０がＬｏｗを維持するので（Ｈｉｇｈになるまでに一定時間が必要）その間、Ｖｃｃ端子４１の入力がＨｉｇｈとなることからマイコン３２がリセットされる。このように、＋Ｂ電源１３のＯＮ→ＯＦＦ→ＯＮにより再起動と、ＲＳＴ端子４０のＯＮ→ＯＦＦ→ＯＮによるリセットは、マイコン３２が行う動作としては同じである。
【００３２】
図３（ｂ）はＲＯＭ３８に記憶されているソフトウェアを模式的に説明する図の一例である。ＲＯＭ３８にはアプリＡ〜Ｃなど、ＥＣＵ１２に特有の制御や処理を行うプログラムの他、ベクタテーブル、及び、システムが記憶されている。システムは、例えばＯＳ、デバイスドライバ、通信用のミドルウェアなどである。ＯＳとしては、ＯＳＥＫ（Open system together with interfaces for automotive electronics）、ＡＵＴＯＳＡＲ（AUTomotive Open System Architecture） ＯＳなどのリアルタイムＯＳがあるが、これらに限定されるものではない。
【００３３】
ベクタテーブルは、主に割込み発生時や例外発生時にＣＰＵ３６が実行すべきプログラムのアドレスが登録されたテーブルである。また、ベクタテーブルには、電源ＯＮ（＋Ｂ電源のＯＦＦ→ＯＮ、バッテリーの脱着）時にＣＰＵ３６が実行すべきプログラムのアドレス、リセット入力時にＣＰＵ３６が実行すべきプログラムのアドレスが登録されている（本実施例では同じアドレスが登録されているとする。）。
【００３４】
電源ＯＮやリセット時にＣＰＵ３６が実行すべきプログラムは、初期化や自己診断を行うプログラムであり、起動プログラムと称することとする。起動プログラムは、初期化部６２、自己診断部６３及び改竄検知部６１を有している。なお、改竄検知部６１は、システムの一部でなく、システムとは独立のアプリとして実装されていてもよい。また、ＲＯＭ３８の改竄に対応するため、改竄検知部６１を不揮発メモリ３９に記憶しておくことも有効である。
【００３５】
初期化部６２は、関数呼び出し時や割り込み処理時に戻りアドレスを退避したり変数を確保するためのスタックポインタ、ＣＰＵ３６より低速なメモリにアクセスする場合のバスタイミング、初期値付き変数の初期値設定などを行う。なお、初期化部６２は必要であれば初期化の前に、ＣＰＵ３６がプログラムの実行が可能になってからマイコン全体が安定するまでの所定の安定化時間が経過するまで待機する。
【００３６】
自己診断部６３は、ハードウェアの自己診断を行う。例えば、入力回路３１に接続されているセンサーが応答して正しい検出信号を検出するか否か、出力回路３３に接続されているアクチュエータ等が応答し診断用に指示した稼働範囲で可動するか否か等を判定する。また、自己診断部６３はＲＡＭチェックを行う。ＲＡＭチェックは、ＲＡＭ３７に書き込まれたデータとＲＡＭ３７から読み出したデータが一致するか否かをチェックする診断方法である。自己診断部６３は例えばＲＡＭ３７の全体に"１"を書き込んだ後、読み出して"１"と一致するか否かを比較する。また、ＲＡＭ３７の全体に"０"を書き込んだ後、読み出して"０"と一致するか否かを比較する。
【００３７】
ＲＡＭ３７が正常な場合、データ復帰部６０は再起動前に不揮発メモリ３９に退避されたＲＡＭ３７のデータをＲＡＭ３７に復帰させる。詳しくは後述する。
【００３８】
そして、改竄検知部６１は、ＲＯＭ３８の改竄検知を行う。ＲＯＭ３８の改竄は、例えばハッシュ値やサム値を不揮発メモリ３９に記憶しておき、ＲＯＭ３８から作成したハッシュ値やサム値と比較することで行う。ハッシュ値やサム値は、好ましくはＲＯＭ３８の全体に対し作成されるが、例えばアプリＡ〜Ｃなど一部から作成してもよい。ハッシュ値の場合、車両の出荷時などにＥＣＵ１２がＲＯＭ３８の全体をハッシュ関数に入力して例えば128〜512ビットのハッシュ値を作成し不揮発メモリ３９に記憶させる。サム値の場合、所定のバイト数毎にサム値を計算し、不揮発メモリ３９に記憶させる。いずれの方法で改竄を検知してもよいし、両方で改竄を検知してもよい。
【００３９】
起動プログラムの実行が終わると、引き続きシステムの起動が行われ、システムの起動が完了するとＣＰＵ３６はアプリＡ〜Ｃを実行する。
【００４０】
〔改竄検知のための機能〕
図４は、ナビＥＣＵ２１、電源制御コンピュータ１１、及び、ＥＣＵ１２の機能ブロック図の一例を示す。ナビＥＣＵ２１は他のＥＣＵ１２と同様に＋Ｂ電源１３のＯＮ→ＯＦＦ→ＯＮにより起動するが、ユーザが改竄検知について設定するためのインタフェースを提供するため別に図示した。したがって、ナビＥＣＵ２１もＥＣＵ１２と同様の機能を有している。また、ユーザが改竄検知について設定するためのインタフェースを提供するのは他のＥＣＵでもよい。
【００４１】
ナビＥＣＵ２１は設定画面出力部５１と設定送信部５２を有している。設定画面出力部５１は表示装置５３に改竄検知設定画面を表示する。設定送信部５２は、ユーザが改竄検知設定画面から設定した改竄検知の設定内容を受け付け、電源制御コンピュータ１１に送信する。表示装置５３は、液晶や有機ＥＬなどのフラットパネルディスプレイである。ナビＥＣＵ２１が道路地図を表示するための表示装置を兼用できる。
【００４２】
図５は表示装置５３に表示される設定画面の一例を示す図である。ユーザが所定の操作方法でナビを操作すると図５（ａ）の改竄検知設定画面が表示される。改竄検知設定画面には「プログラムの改竄検知を行いますか？」というメッセージに対し「はい」「いいえ」と表示されている。ユーザが「はい」を選択すると改竄検知が行われる。なお、ユーザが「いいえ」を選択した場合でも、電源制御コンピュータ１１は重要なＥＣＵについては改竄検知することができる。重要なＥＣＵとは、エンジンＥＣＵ２２やブレーキＥＣＵ２３など走行に必要なＥＣＵである。
【００４３】
「はい」を選択したユーザは、「詳細を設定しますか？」というメッセージに対し「標準設定」又は「詳細設定」を選択する。「標準設定」とは、予め定められたＥＣＵに対し、予め定められたタイミングかつ予め定められた間隔で改竄検知を行う設定である。ユーザが「詳細設定」を選択すると、図５（ｂ）のように、任意のＥＣＵ、タイミング及び間隔を設定することができる。
【００４４】
図５（ｂ）は改竄検知設定画面の詳細設定の一例を示す図である。「改竄検知を行うＥＣＵを選択してください」というメッセージに対し選択可能なＥＣＵが表示されている。ユーザは任意のＥＣＵを選択することができる。なお、電源系としてはＮｏ１とＮｏ２の２つしかないので、ここでユーザが選択したＥＣＵと同系統のＥＣＵは同時に＋Ｂ電源１３がＯＮ／ＯＦＦされる。したがって、実際には選択した以上のＥＣＵ１２において改竄検知される。ユーザが選択したＥＣＵ１２のみが改竄検知するには、１つのＥＣＵに１つの電源系を用意すればよい。
【００４５】
また、「改竄検知を行うタイミングを設定してください」というメッセージに対し「駐車中」「乗車直前」「時刻設定」が選択可能に表示されている。「駐車中」とは、例えばユーザが降車してドアがロックされた状態、又は、降車後（ドアロック後）所定時間が経過した状態、をいう。「乗車直前」とは、ユーザが乗車する時刻を毎日、記録した場合における乗車が予測される時刻の所定時間前をいう。「時刻設定」をユーザが選択した場合、時計が表示されユーザが任意の時刻を設定する。ユーザは駐車している時間帯（例えば明け方未明）を設定する。電源制御コンピュータ１１はこの時刻になると改竄検知を開始するが、車両が駐車していていない場合（例えばドアロックされていない場合）は改竄検知することはない。
【００４６】
「換算検知を行う間隔を設定してください」というメッセージに対し「毎回」「週間隔」「月間隔」が選択可能に表示されている。「毎回」とは「改竄検知を行うタイミングを設定してください」で設定されたタイミングを満たす場合は毎回、改竄検知するという設定である。「週間隔」とは上記タイミングを満たしても最後に改竄検知されてから１週間経過するまでは改竄検知を実行しない設定であり、「月間隔」とは上記タイミングを満たしても１月経過するまでは改竄検知を実行しない設定である。
【００４７】
なお、図５では車載された表示装置５３をユーザインタフェースとしているが、ユーザは、インターネット上のサーバと、ＰＣ（Personal Computer）やスマートフォンで通信して、タイミングと間隔を設定することもできる。また、例えば、音声にて出力された質問に、音声にて回答することでタイミングや間隔を設定してもよい。
【００４８】
図４に戻り、設定送信部５２は、以上の設定内容を電源制御コンピュータ１１に送信する。電源制御コンピュータ１１は、検知実行判定部５５、退避指示部５６、＋Ｂ電源制御部５７、及び、検知結果収集部５８を有すると共に、ナビＥＣＵ２１から受信した設定内容５４を記憶している。検知実行判定部５５は、設定内容５４に基づき改竄検知を行うタイミングか否かを判定する。また、最後に改竄検知を行った日時を記録している。改竄検知を行うと設定されているタイミングで、かつ、最後に実行した日時から設定された間隔が経過している場合に、改竄検知を行うと判定する。
【００４９】
退避指示部５６は、ＥＣＵ１２に対し、ＲＡＭ３７のデータを退避するよう指示する。退避指示部５６は、全てのＥＣＵ１２からＲＡＭ３７のデータの退避が完了したことを受信すると＋Ｂ電源１３のＯＦＦを許可する。
【００５０】
＋Ｂ電源制御部５７はスイッチング回路２６をＯＮからＯＦＦに設定し、その後、ＯＮに設定する。これにより、電源回路３４がＶｃｃに入力する電源がＯＮからＯＦＦ，そして再度ＯＮになるのでマイコン３２が再起動する。検知結果収集部５８は各ＥＣＵ１２から検知結果を収集し記憶する。検知結果収集部５８は表示装置５３に検知結果（改竄有り、なし）をＥＣＵ別に表示する。また、改竄を検知した場合は、車体番号などの車両の識別情報とＥＣＵ１２の識別情報をサービスセンターに送信する。
【００５１】
各ＥＣＵ１２はデータ退避部５９、データ復帰部６０、改竄検知部６１、及び、検知結果送信部６４を有する。データ退避部５９は、電源制御コンピュータ１１から指示によりＲＡＭ３７に記憶されたデータをアドレスに対応づけて不揮発メモリ３９に退避する。＋Ｂ電源１３のＥＣＵ１２は駐車中はスリープモードなどの省エネ状態なので、ＣＰＵ３６のレジスタやタスクのデータがＲＡＭ３７に退避されている場合がある。また、アクティブサスペンションの硬さ設定、電動パワステの操舵の軽さ、アクセルペダルの操舵に対するエンジンの回転数の応答性などを設定可能な車両では、ユーザが設定したこれらの設定値がＲＡＭ３７に記憶されている。この他にも、ナビやＡＶ機能などのユーザの最後の設定、エアコンの温度設定、パワーシートのリクライニング角度・前後位置、ドアミラー角度、駐車位置情報、ユーザが管理する電話帳のアドレス情報などがＲＡＭ３７に記憶されている可能性がある。データ退避部５９はこれらのデータが再起動により消去されないように不揮発メモリ３９に退避する。なお、これらのデータを削除してよければＲＡＭ３７のデータの退避は不要である。
【００５２】
データの退避が完了すると電源制御コンピュータ１１が＋Ｂ電源１３をＯＮ→ＯＦＦ→ＯＮするので、起動したマイコン３２のデータ復帰部６０は不揮発メモリ３９のデータをＲＡＭ３７に復帰する。その後、改竄検知部６１はＲＯＭ３８の改竄検知を行う。すなわち、ＲＯＭ３８からハッシュ値を作成し、不揮発メモリ３９に記憶されているハッシュ値と比較して一致するか否かを判定する。検知結果送信部６４は、検知結果を電源制御コンピュータ１１に送信する。
【００５３】
〔動作手順〕
図６は、電源制御コンピュータ１１とＥＣＵ１２の動作手順の一例を示すフローチャート図である。電源制御コンピュータ１１は＋Ｂ電源１３なので周期的にこの処理を行う。
【００５４】
まず、検知実行判定部５５は設定されたタイミングになったか否かを判定する（Ｓ１１０）。設定されたタイミングでない場合（Ｓ１１０のＮｏ）、次の周期で同様の判定を行う。
【００５５】
設定されたタイミングの場合（Ｓ１１０のＹｅｓ）、検知実行判定部５５は前回の実行から設定された間隔が経過したか否かを判定する（Ｓ１２０）。前回の実行から設定された間隔が経過していない場合（Ｓ１２０のＮｏ）、次の周期で同様の判定を行う。
【００５６】
前回の実行から設定された間隔が経過した場合（Ｓ１２０のＹｅｓ）、検知実行判定部５５はユーザが全て降車しているか否かを判定する（Ｓ１３０）。この判定はステップＳ１１０と重複する可能性があるが、ステップＳ１３０の判定はユーザが乗車していないことを最終的に確認するための判定である。
【００５７】
ユーザが全て降車している場合（Ｓ１３０のＹｅｓ）、退避指示部５６は、ＥＣＵ１２にＲＡＭ３７のデータの退避を指示する（Ｓ１４０）。
【００５８】
これにより、各ＥＣＵ１２はＷａｋｅＵｐして、データ退避部５９がＲＡＭ３７のデータを不揮発メモリ３９に退避する（Ｓ２１０）。データを退避したデータ退避部５９は退避完了を電源制御コンピュータ１１に送信する（Ｓ２２０）。
【００５９】
＋Ｂ電源制御部５７はスイッチング回路２６を制御して＋Ｂ電源１３をＯＮ→ＯＦＦ→ＯＮに制御する（Ｓ１５０）。これにより、各ＥＣＵ１２のマイコン３２が再起動する（Ｓ２３０）。
【００６０】
また、再起動したＥＣＵ１２のデータ復帰部６０は不揮発メモリ３９に退避してあるデータをＲＡＭ３７に復帰する（Ｓ２４０）。
【００６１】
そして、改竄検知部６１がＲＯＭ３８の改竄検知を実行する（Ｓ２５０）。検知結果送信部６４は検知結果を電源制御コンピュータ１１に送信する（Ｓ２６０）。
【００６２】
検知結果収集部５８は各ＥＣＵ１２からの検知結果を表示して、必要であれば（例えば改竄が検知された場合）はサービスセンターに送信する（Ｓ１６０）。
【００６３】
以上説明したように、本実施例のＥＣＵ１２は、＋Ｂ電源１３のＯＮ→ＯＦＦ→ＯＮにより改竄検知を実行するので、ユーザが乗車する直前に改竄検知する必要がなく、ユーザが走行できない待ち時間が発生することを防止できる。
【実施例２】
【００６４】
実施例１ではＩＧ電源のＥＣＵ１２に対し、駐車中に改竄検知することができたがＩＧスイッチのＯＮによっても改竄検知するおそれがある。すなわち、＋Ｂ電源１３のＯＮ→ＯＦＦ→ＯＮによりマイコン３２を再起動するので、ＥＣＵ１２としては、ＩＧ電源のＯＦＦ→ＯＮによりマイコン３２が再起動した場合と区別が付かない。このため、ＩＧ電源のＥＣＵ１２は、＋Ｂ電源１３のＯＮ→ＯＦＦ→ＯＮだけでなくＩＧスイッチのＯＦＦ→ＯＮの度に改竄検知するおそれがある。
【００６５】
本実施例では、電源回路３４がＩＧスイッチのＯＮを記録することで、ＩＧスイッチのＯＦＦ→ＯＮでは改竄検知しないＥＣＵ１２について説明する。
【００６６】
図７は、電源制御コンピュータ１１又はＥＣＵ１２のハードウェア構成図の一例を示す。本実施例において、図３において同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。本実施例のＥＣＵ１２はＩＧ電源を電源とするものとし、電源回路３４にはＩＧ電源と＋Ｂ電源（電源系Ｎｏ１又はＮｏ２）１３が接続される。また、電源回路３４は、ＩＧ電源がＯＮの時にのみＯＮとなる電源フラグＦ４３を有している。
【００６７】
本実施例では機能ブロック図に変更がないが、ＩＧ電源のＥＣＵ１２は、駐車中は動作していないので、＋Ｂ電源１３のＯＮ→ＯＦＦ→ＯＮにより改竄検知する場合、ＲＡＭ３７のデータを退避する必要はない。当然、ＲＡＭ３７にデータを復帰する必要もない。したがって、データ退避部５９及びデータ復帰部６０はなくてもよい。また、本実施例の改竄検知部６１は、改竄検知の前に、電源フラグＦ４３を参照してＨｉｇｈであれば、改竄検知を行わない。これにより、ＩＧスイッチのＯＮによりマイコン３２が起動した場合に改竄検知することを防止できる。電源フラグＦ４３はＩＧ電源がＯＮであることが判別できればよいので、ＩＧ電源の電圧そのものを参照してもよい。
【００６８】
図８は、電源制御コンピュータ１１とＥＣＵ１２の動作手順の一例を示すフローチャート図である。電源制御コンピュータ１１は＋Ｂ電源１３なので周期的にこの処理を行う。
【００６９】
電源制御コンピュータ１１の動作は実施例１と同様でよい。ＥＣＵ１２側の動作は、ステップＳ２１０のＲＡＭ３７のデータを退避すること及びＳ２２０の退避完了を通知することは不要になる。しかし、ＩＧ電源のＥＣＵ１２は駐車中は停止しているので、電源制御コンピュータ１１からデータの退避指示があっても不都合はない。
【００７０】
以下、＋Ｂ電源のＥＣＵ１２とＩＧ電源のＥＣＵ１２とに分けて説明する。
【００７１】
・＋Ｂ電源のＥＣＵ
ステップＳ２３０で＋Ｂ電源のＥＣＵ１２が再起動する。再起動したＥＣＵ１２の改竄検知部６１は電源フラグＦ４３がＬｏｗか否かを判定する（Ｓ２３５）。＋Ｂ電源のＥＣＵでは電源フラグＦ４３がないか又はＬｏｗなので、＋Ｂ電源のＥＣＵ１２はＲＡＭ３７にデータを復帰する（Ｓ２４０）。
【００７２】
また、改竄検知部６１がＲＯＭ３８の改竄検知を実行する（Ｓ２５０）。検知結果送信部６４は検知結果を電源制御コンピュータ１１に送信する（Ｓ２６０）。
【００７３】
・ＩＧ電源のＥＣＵ
Ａ．駐車中
ＩＧ電源のＥＣＵは駐車中は作動していない。電源制御コンピュータが＋Ｂ電源をＯＮ→ＯＦＦ→ＯＮに制御すると、電源回路３４は＋Ｂ電源をマイコン３２に供給することでＩＧ電源のＥＣＵ１２が起動する（Ｓ２３０）。
【００７４】
起動したＥＣＵ１２の改竄検知部６１は電源フラグＦ４３がＬｏｗか否かを判定する（Ｓ２３５）。ＩＧ電源のＥＣＵ１２でも駐車中は電源フラグＦ４３がＬｏｗなので、＋Ｂ電源のＥＣＵ１２はＲＡＭ３７にデータを復帰するが、元々退避されていないので実際には復帰されない（Ｓ２４０）。
【００７５】
そして、改竄検知部６１がＲＯＭ３８の改竄検知を実行する（Ｓ２５０）。検知結果送信部６４は検知結果を電源制御コンピュータ１１に送信する（Ｓ２６０）。したがって、ＩＧ電源のＥＣＵ１２も改竄検知できる。
Ｂ．ＩＧスイッチのＯＮ時
ユーザが乗車してＩＧスイッチをＯＮに操作するとＩＧ電源がＯＮになる。これにより、ＩＧ電源のＥＣＵ１２が起動する（Ｓ２３０）。
【００７６】
起動したＥＣＵ１２の改竄検知部６１は電源フラグＦ４３がＬｏｗか否かを判定する（Ｓ２３５）。ＩＧ電源がＯＮなので電源フラグＦ４３はＨｉｇｈである。したがって、ＩＧ電源のＥＣＵ１２の改竄検知部６１は改竄検知することなくシステムが起動する。このように、ＩＧ電源のＥＣＵ１２はＩＧスイッチがＯＦＦ→ＯＮとなっても改竄検知することを防止できる。
【００７７】
このように、図８の動作手順はＩＧ電源か＋Ｂ電源１３かを問わずに適用できる。以上説明したように、本実施例では、ＩＧ電源のＥＣＵ１２がＩＧ電源がＯＮか否かを判定するので、ＩＧ電源のＥＣＵ１２がＩＧスイッチのＯＮの度に改竄検知することを防止できる。
【実施例３】
【００７８】
実施例１，２では電源制御コンピュータ１１以外のＥＣＵ１２について改竄検知したが、電源制御コンピュータ１１もＲＯＭ３８のソフトウェアについて改竄検知することが好ましい。
【００７９】
図９は、電源制御コンピュータ１１のソフトウェアの改竄検知を模式的に説明する図の一例である。電源制御コンピュータ１１は２つのスイッチング回路２６（以下、スイッチング回路１，２という）を有しており、１つは電源系Ｎｏ１、Ｎｏ２に接続され、もう１つは電源制御コンピュータ１１の電源回路３４に接続されている。したがって、電源制御コンピュータ１１がスイッチング回路２をＯＮ→ＯＦＦ→ＯＮにすれば、電源制御コンピュータ１１のマイコン３２が再起動する。これにより、電源制御コンピュータ１１は改竄検知を行う。したがって、電源制御コンピュータ１１も同じ仕組みで改竄検知することができる。
【００８０】
改竄検知を行うタイミングは他のＥＣＵ１２と同様であるが、他のＥＣＵ１２と同時に行わないことが好ましい。例えば、スイッチング回路１をＯＮ→ＯＦＦ→ＯＮにする直前に、スイッチング回路２をＯＮ→ＯＦＦ→ＯＮにすることで、電源制御コンピュータ１１が改竄検知を行う。そして、改竄されていない場合に、他のＥＣＵ１２に対し検知結果を行う（スイッチング回路１をＯＮ→ＯＦＦ→ＯＮにする）。これにより、電源制御コンピュータ１１のソフトウェアが改竄されていないことが確認できた場合に、他のＥＣＵ１２の改竄検知を行うことができる。また、他のＥＣＵ１２と同時に行わないことで、他のＥＣＵ１２が送信する検知結果を確実に受信できる。
【００８１】
また、図９のようにハード的な回路を用いるのでなく、電源制御コンピュータ１１のシステム又はアプリが設定されたタイミング及び間隔でスイッチ４２をＯＮ→ＯＦＦ→ＯＮに制御してもよい。この場合、電源制御コンピュータ１１のシステム又はアプリに、スイッチ４２をＯＮ→ＯＦＦ→ＯＮに制御する機能が必要になるが、スイッチング回路２６は１つでよい。
【００８２】
以上説明したように、本実施例の改竄検知システム１００はＥＣＵ１２だけでなく電源制御コンピュータ１１も改竄検知することができる。
【符号の説明】
【００８３】
１１      電源制御コンピュータ
１２      ＥＣＵ
１３      ＋Ｂ電源
２１      ナビＥＣＵ
２６      スイッチング回路
２７      通信回路
３２      マイコン
３４      電源回路
３９      不揮発メモリ
６１      改竄検知部
１００    改竄検知システム
【図１】
2014151720.tif 000003
【図２】
2014151720.tif 000004
【図３】
2014151720.tif 000005
【図４】
2014151720.tif 000006
【図５】
2014151720.tif 000007
【図６】
2014151720.tif 000008
【図７】
2014151720.tif 000009
【図８】
2014151720.tif 000010
【図９】
2014151720.tif 000011