以下、添付図面を参照して、本願が開示する制御装置の実施の形態について、詳細に説明する。ただし、以下に示す実施の形態は一例であり、これらの実施の形態によって、本願発明が限定されるものではない。
実施の形態1.
図1は、本発明の実施の形態1に係る制御装置の構成の一例を示す図である。図1の制御装置は、車載制御システムの一部として構成されており、モータの制御を行う。
図1において、モータ制御装置100は、制御対象であるモータ110に接続されている。モータ制御装置100は、制御部101と、記憶部102と、期待値生成部103と、状態情報取得部104と、検証値生成部105と、判定部106と、書き換え処理部107と、起動モード判定部108とを備えている。また、モータ制御装置100の内部には、カウンタ109が搭載されている。カウンタ109は、モータ制御装置100が起動するたびに、自身のカウント値を+1加算する。
制御部101は、制御対象であるモータ110の制御処理を行う。より詳細には、制御部101は、モータ110の制御に係る制御量および処理値の演算を行う。
記憶部102は、フラッシュメモリ等の書き換え可能なメモリデバイスによって構成されている。記憶部102は、制御部101の制御処理に用いられるプログラムおよびデータを記憶する。なお、これ以降、本願の明細書では、記憶部102に記憶されるプログラムおよびデータをまとめて、「データ」と呼ぶことにする。
図2に示されるように、記憶部102は、複数の記憶領域を含んでいる。この例では、複数の記憶領域は、第1の記憶領域102aおよび第2の記憶領域102bである。ここで、第2の記憶領域102bは、第1の記憶領域を包含している。また、第1の記憶領域102aには、第2の記憶領域102bよりも重要度の高いデータが記憶されている。
なお、第1の記憶領域102aに記憶される重要度の高いデータとは、当該データが不正に書き換えられた場合に、モータ110の制御処理の安全性が確保できないようなデータである。これに対して、第2の記憶領域102bに記憶されるデータは、当該データが不正に書き換えられた場合でも、モータ110の制御処理の安全性が確保できるようなデータである。
なお、第1の記憶領域102aと第2の記憶領域102bとは、別個のメモリデバイスによって構成されることが好ましい。ただし、単一のメモリデバイス上に第1の記憶領域102aと第2の記憶領域102bとが含まれていてもよい。
図1に戻って、期待値生成部103は、第1の記憶領域102aのデータから第1の期待値を生成して、自身の内部メモリに予め記憶する。また、期待値生成部103は、第2の記憶領域102bのデータから第2の期待値を生成して、自身の内部メモリに予め記憶する。
状態情報取得部104は、モータ制御装置100の起動時、制御部101による制御処理の開始後に、カウンタ109のカウント値を第1の状態情報として取得して、自身の内部メモリに記憶する。先述したように、カウンタ109は、モータ制御装置100が起動するたびに、自身のカウント値を+1加算する。
検証値生成部105は、モータ制御装置100の起動時、制御部101による制御処理の開始前に、カウンタ109のカウント値を第2の状態情報として新たに取得する。
検証値生成部105は、新たに取得した第2の状態情報と、状態情報取得部104に記憶されている第1の状態情報との比較に基づいて、記憶部102の第1の記憶領域102aおよび第2の記憶領域102bのいずれかを選択する。
検証値生成部105は、第1の記憶領域102aが選択された場合には、第1の記憶領域102aのデータから第1の検証値を生成する。また、検証値生成部105は、第2の記憶領域102bが選択された場合には、第2の記憶領域102bのデータから第2の検証値を生成する。
判定部106は、検証値生成部105によって生成された検証値と、当該検証値の生成に用いられた記憶領域のデータから生成されて期待値生成部103に予め記憶されている期待値との比較に基づいて、当該記憶領域のデータの完全性を検証する。
判定部106は、上記の記憶領域のデータの完全性が保証され、データの不正な書き換えが行われていないと判断された場合には、制御部101によるモータ110の制御処理を開始させる。また、判定部106は、上記の記憶領域のデータの完全性が保証されず、データの不正な書き換えが行われていると判断された場合には、制御部101によるモータ110の制御処理を開始させない。
書き換え処理部107は、記憶部102に記憶されるデータの書き換え処理を行う。
起動モード判定部108は、モータ制御装置100の起動モードの判定を行う。起動モードには、モータ110の制御を行う「制御モード」と、記憶部102のデータおよび期待値生成部103の期待値を書き換える「書き換えモード」とがある。
次に、本実施の形態1に係るモータ制御装置100の起動時の処理について、図3および図4のフローチャートを参照して説明する。なお、図3の処理は、モータ制御装置100の起動時、制御部101による制御処理の開始後に行われる処理である。また、図4の処理は、モータ制御装置100の起動時、制御部101による制御処理の開始前に行われる処理である。
まず、モータ制御装置100の起動時、制御部101による制御処理の開始後に行われる処理について、図3を参照して説明する。
図3のステップS301において、状態情報取得部104は、カウンタ109のカウント値を第1の状態情報として取得して、自身の内部メモリに記憶する。
ステップS302において、状態情報取得部104は、予め決定された時間が経過するまで待機する。予め決定された時間が経過すると、処理フローはステップS301に戻る。
以上の処理によって、制御部101による制御処理の開始後、状態情報取得部104は、予め決定された時間間隔で、カウンタ109のカウント値を第1の状態情報として繰り返し取得して、自身の内部メモリに記憶することになる。
次に、モータ制御装置100の起動時、制御部101による制御処理の開始前に行われる処理について、図4を参照して説明する。
図4のステップ401において、カウンタ109は、自身のカウント値を更新する。詳細には、カウンタ109は、自身のカウント値を+1加算する。
ステップS402において、起動モード判定部108は、モータ制御装置100の起動モードの判定を行う。起動モードが、モータ110の制御を行う「制御モード」である場合には、処理フローはステップS403に進む。一方、起動モードが記憶部102のデータおよび期待値生成部103の期待値を書き換える「書き換えモード」である場合には、処理フローはステップS411に進む。
ステップS403において、検証値生成部105は、カウンタ109のカウント値を第2の状態情報として新たに取得して、自身の内部メモリに記憶する。
ステップS404において、検証値生成部105は、ステップS403で新たに取得された第2の状態情報と、状態情報取得部104に記憶されている第1の状態情報との比較に基づいて、第1の記憶領域102aおよび第2の記憶領域102bのいずれかを選択する。
詳細には、検証値生成部105は、第2の状態情報であるカウント値と、第1の状態情報であるカウント値との差分を計算し、当該差分が予め決定された範囲内にあるか否かを判定する。本実施の形態1では、予め決定された範囲は+1以下の範囲である。
カウント値の差分が+1以下の範囲内にある場合には、検証値生成部105は、第1の記憶領域102aを選択する。この場合、処理フローはステップS405に進む。ここで、ステップS405とそれに続くステップS406の処理は、本実施の形態1における第1のセキュアブート処理である。
一方、カウント値の差分が+1以下の範囲内にない場合には、検証値生成部105は、第2の記憶領域102bを選択する。この場合、処理フローはステップS407に進む。ここで、ステップS407とそれに続くステップS408の処理は、本実施の形態1における第2のセキュアブート処理である。
ステップS405において、検証値生成部105は、第1の記憶領域102aに記憶されているデータに基づいて、第1の検証値を生成する。
ステップS406において、判定部106は、検証値生成部105によって生成された第1の検証値と、期待値生成部103に予め記憶されている第1の期待値とを比較する。
すなわち、第1のセキュアブート処理では、第1の記憶領域102aのデータに基づいて第1の検証値が生成され、当該第1の検証値と、同じく第1の記憶領域102aのデータから生成された第1の期待値との比較が行われる。
一方、ステップS407において、検証値生成部105は、第2の記憶領域102bに記憶されているデータに基づいて、第2の検証値を生成する。
ステップS408において、判定部106は、検証値生成部105によって生成された第2の検証値と、期待値生成部103に予め記憶されている第2の期待値とを比較する。
すなわち、第2のセキュアブート処理では、第2の記憶領域102bのデータに基づいて第2の検証値が生成され、当該第2の検証値と、同じく第2の記憶領域102bのデータから生成された第2の期待値との比較が行われる。
上記のステップS405およびS406による第1のセキュアブート処理が行われた場合には、ステップS409において、判定部106は、ステップS406における検証値と期待値との比較結果が正常であるか否か、すなわち両者が一致しているか否かを判定する。
また、上記のステップS407およびS408による第2のセキュアブート処理が行われた場合には、ステップS409において、判定部106は、ステップS408における検証値と期待値との比較結果が正常であるか否か、すなわち両者が一致しているか否かを判定する。
上記の比較結果が正常である場合、すなわち検証値と期待値とが一致している場合には、記憶領域のデータの完全性が保証される。この場合、処理フローはステップS410に進み、制御部101による制御処理が開始される。
一方、上記の比較結果が異常である場合、すなわち検証値と期待値とが一致していない場合には、記憶領域のデータの完全性が保証されない。この場合、処理フローはステップS410に進まず、制御部101による制御処理は開始されない。
上記の図4の処理では、前回のモータ制御装置100の起動時、制御部101による制御処理の開始後に状態情報取得部104によって取得された第1の状態情報と、今回のモータ制御装置100の起動時、制御部101による制御処理の開始前に新たに取得された第2の状態情報との差分が、予め決定された範囲内にある場合には、ステップS405およびS406の第1のセキュアブート処理が行われる。この第1のセキュアブート処理では、第1の記憶領域102aのデータの完全性が判定される。
これに対して、前回のモータ制御装置100の起動時、制御部101による制御処理の開始後に状態情報取得部104によって取得された第1の状態情報と、今回のモータ制御装置100の起動時、制御部101による制御処理の開始前に新たに取得された第2の状態情報との差分が、予め決定された範囲内にない場合には、ステップS407およびS408の第2のセキュアブート処理が行われる。この第2のセキュアブート処理では、第2の記憶領域102bのデータの完全性が判定される。
先述したように、第2の記憶領域102bは、第1の記憶領域102aを包含している。また、第1の記憶領域102aのデータの重要度は、第2の記憶領域102bのデータの重要度よりも高い。
したがって、第1のセキュアブート処理は、第2のセキュアブート処理と比べて扱うデータ量が少ないため、第2のセキュアブート処理よりも高速である。
なお、ステップS411においては、書き換え処理部107によって、記憶部102に記憶されているデータの書き換え処理が行われる。この際、期待値生成部103は、第1の記憶領域102aのデータに基づいて第1の期待値を生成し、自身の内部メモリに記憶する。また、期待値生成部103は、第2の記憶領域102bのデータに基づいて第2の期待値を生成し、同じく自身の内部メモリに記憶する。
以上説明したように、本実施の形態1において、モータ制御装置100は、自身の起動時、制御部101による制御処理の開始後に、図3のフローチャートに従って、第1の状態情報であるカウント値を予め決定された時間間隔で繰り返し取得して記憶する。
また、次回の起動時、モータ制御装置100は、制御部101による制御処理の開始前に、図4のフローチャートに従って、前回の起動時に取得して記憶した第1の状態情報であるカウント値と、今回の起動時に新たに取得した第2の状態情報であるカウント値との差分を計算する。
上記の差分が予め決定された範囲内にある場合には、モータ制御装置100は、前回の起動から今回の起動までの間に、意図しない起動による記憶部102のデータの不正な書き換えが行われた可能性は低いと判断する。この場合、モータ制御装置100は、第1の記憶領域102aの完全性のみを検証する高速の第1のセキュアブート処理を行う。
これに対して、上記の差分が予め決定された範囲内にない場合には、モータ制御装置100は、前回の起動から今回の起動までの間に、意図しない起動による記憶部102のデータの不正な書き換えが行われた可能性が高いと判断する。この場合、モータ制御装置100は、第1の記憶領域102aを包含する第2の記憶領域102bの完全性を検証する低速の第2のセキュアブート処理を行う。
上記の特徴により、本実施の形態1に係るモータ制御装置100では、起動時のセキュアブート処理の処理時間を短縮することができる。
また、図3のフローチャートに示されるように、モータ制御装置100は、制御部101による制御処理の開始後は、予め決定された時間間隔で、第1の状態情報を取得して記憶する。そのため、例えばモータ制御装置100の停止時にのみ状態情報を取得して記憶する場合に比べて、電源が突然遮断された場合等、モータ制御装置100が正常な終了シーケンスを通らずに終了した場合でも、次回起動時に、セキュアブート処理による検証を行うことができる。
また、本実施の形態1では、状態情報としてカウンタ109のカウント値を用いる例を示したが、状態情報はこれに限定されるものではない。状態情報は、モータ制御装置100の起動に伴って変化する可能性のある情報であればよい。例えば、モータ制御装置100に接続されている電圧センサから取得される電池の電圧値等のアナログ値を、状態情報として用いてもよい。
その場合には、図3のステップS302の時間を比較的短く設定すると共に、図4のステップS404で用いる検証時の範囲を適切に定めることによって、前回の起動から今回の起動までの経過時間を調べ、短時間での再起動であるか否かを判定することができる。したがって、短時間での再起動である場合には、高速のセキュアブート処理を行うことによって、安全かつ高速にモータ制御装置100を起動することができる。
また、図3のステップS301において、状態情報取得部104の内部メモリに第1の状態情報を記憶する際に、第1の状態情報を暗号化するようにしてもよい。その場合、図4のステップS406およびS408において、状態情報取得部104の内部メモリから第1の状態情報を読み出す際に、暗号化された第1の状態情報を復号する。このように、第1の状態情報を暗号化することによって、第1の状態情報そのものを不正に書き換えられる可能性が低下するため、安全性がさらに向上する。
また、本実施の形態1では、記憶部102に、第1の記憶領域102aおよび第2の記憶領域102bの2つの記憶領域が含まれる場合を説明したが、記憶領域の数はこれに限定されるものではなく、3つ以上であってもよい。その場合、記憶領域の数にあわせて、状態情報および期待値の数も決定される。
実施の形態2.
図5は、本発明の実施の形態2に係る制御装置の構成の一例を示す図である。実施の形態1と同様に、図5の制御装置は、車載制御システムの一部として構成されており、モータの制御を行う。なお、実施の形態1と同一または同様の構成要素については、同一の参照符号を付して、詳細な説明は省略する。
図5において、モータ制御装置200は、制御対象であるモータ110に接続されている。また、モータ制御装置200は、有線のCAN(Controller Area Network)ネットワーク520を介して、車両ドア510の開閉を制御する外部機器としてのドア制御装置500と通信可能に接続されている。
モータ制御装置200は、制御部101と、記憶部202と、期待値生成部203と、状態情報取得部204と、検証値生成部205と、判定部206と、書き換え処理部107と、起動モード判定部108とを備えている。また、モータ制御装置200は、送受信部209を備えている。送受信部209は、ドア制御装置500との間でCANネットワーク520を介したデータの送受信を行う。
制御部101は、制御対象であるモータ110の制御処理を行う。
記憶部202は、フラッシュメモリ等の書き換え可能なメモリデバイスによって構成されている。
図6に示されるように、記憶部202には、第1の記憶領域202aと、第2の記憶領域202bと、第3の記憶領域202cとが含まれている。ここで、第2の記憶領域202bは、第1の記憶領域202aを包含している。また、第3の記憶領域202cは、第1の記憶領域202aおよび第2の記憶領域202bを包含している。
第1の記憶領域202a、第2の記憶領域202bおよび第3の記憶領域202cの順に、重要度の高いデータが記憶されている。なお、各記憶領域は、別個のメモリデバイスによって構成されることが好ましい。ただし、単一のメモリデバイス上に各記憶領域が含まれていてもよい。
図5に戻って、期待値生成部203は、第1の記憶領域202aのデータから第1の期待値を生成して、自身の内部メモリに予め記憶する。また、期待値生成部203は、第2の記憶領域202bのデータから第2の期待値を生成して、自身の内部メモリに予め記憶する。また、期待値生成部203は、第3の記憶領域202cのデータから第3の期待値を生成して、自身の内部メモリに予め記憶する。
状態情報取得部204は、モータ制御装置200の起動時、制御部101による制御処理の開始後に、送受信部209およびCANネットワーク520介して、ドア制御装置500から車両ドア510の開閉回数を第1の状態情報として取得して、自身の内部メモリに記憶する。
検証値生成部205は、モータ制御装置200の起動時、制御部101による制御処理の開始前に、送受信部209およびCANネットワーク520を介して、ドア制御装置500から車両ドア510の開閉回数を第2の状態情報として新たに取得する。
検証値生成部205は、新たに取得した第2の状態情報と、状態情報取得部204に記憶されている第1の状態情報との比較に基づいて、記憶部202の第1の記憶領域202a、第2の記憶領域202bおよび第3の記憶領域202cのいずれかを選択する。
検証値生成部205は、第1の記憶領域202aが選択された場合には、第1の記憶領域202aのデータから第1の検証値を生成する。また、検証値生成部205は、第2の記憶領域202bが選択された場合には、第2の記憶領域202bのデータから第2の検証値を生成する。また、検証値生成部205は、第3の記憶領域202cが選択された場合には、第3の記憶領域202cのデータから第3の検証値を生成する。
判定部206は、検証値生成部205によって生成された検証値と、当該検証値の生成に用いられた記憶領域のデータから生成されて期待値生成部203に予め記憶されている期待値との比較に基づいて、当該記憶領域のデータの完全性を検証する。
判定部206は、上記の記憶領域のデータの完全性が保証され、データの不正な書き換えが行われていないと判断された場合には、制御部101によるモータ110の制御処理を開始させる。また、判定部206は、上記の記憶領域のデータの完全性が保証されず、データの不正な書き換えが行われていると判断された場合には、制御部101によるモータ110の制御処理を開始させない。
書き換え処理部107は、記憶部102に記憶されるデータの書き換え処理を行う。
起動モード判定部108は、モータ制御装置100の起動モードの判定を行う。
また、ドア制御装置500は、制御部501と、記憶部502と、送受信部503とを備えている。
制御部501は、制御対象である車両ドア510の開閉の制御処理を行う。
記憶部502は、車両ドア510の開閉回数を記憶している。
送受信部503は、モータ制御装置200との間でCANネットワーク520を介したデータの送受信を行う。
次に、本実施の形態2に係るモータ制御装置200の起動時の処理について、図7および図8のフローチャートを参照して説明する。なお、図7の処理は、モータ制御装置200の起動時、制御部101による制御処理の開始後に行われる処理である。また、図8の処理は、モータ制御装置200の起動時、制御部101による制御処理の開始前に行われる処理である。
まず、モータ制御装置200の起動時、制御部101による制御処理の開始後に行われる処理について、図7を参照して説明する。
図7のステップS701において、状態情報取得部204は、送受信部209を介して、ドア制御装置500に対して、車両ドア510の開閉回数の送信を依頼する。
ステップS702において、状態情報取得部204は、ドア制御装置500から、送受信部209を介して、車両ドア510の開閉回数が受信されるまで待機する。
ステップS703において、状態情報取得部204は、ステップS702で受信された車両ドア510の開閉回数を、第1の状態情報として自身の内部メモリに記憶する。
ステップS704において、状態情報取得部204は、予め決定された事象が発生するまで待機する。ここで、予め決定された事象としては、例えば、ドア制御装置500からの特定メッセージの受信とすることができる。予め決定された事象が発生すると、処理フローはステップS701に戻る。
以上の処理によって、制御部101による制御処理の開始後、状態情報取得部204は、予め決定された事象が発生するたびに、車両ドア510の開閉回数を第1の状態情報として繰り返し取得して、自身の内部メモリに記憶することになる。
次に、モータ制御装置200の起動時、制御部101による制御処理の開始前に行われる処理について、図8を参照して説明する。
図8のステップS801において、起動モード判定部108によって、モータ制御装置200の起動モードの判定が行われる。起動モードが、モータ110の制御を行う「制御モード」である場合には、処理フローはステップS802に進む。一方、起動モードが記憶部202のデータおよび期待値生成部203の期待値を書き換える「書き換えモード」である場合には、処理フローはステップS814に進む。
ステップS802において、検証値生成部205は、送受信部209を介して、ドア制御装置500に対して、車両ドア510の開閉回数の送信を依頼する。
ステップS803において、検証値生成部205は、ドア制御装置500から、送受信部209を介して、車両ドア510の開閉回数が受信されるまで待機する。
ステップS804において、検証値生成部205は、ステップS803で受信された車両ドア510の開閉回数を、第2の状態情報として自身の内部メモリに記憶する。
ステップS805において、検証値生成部205は、ステップS804で新たに取得された第2の状態情報と、状態情報取得部204に記憶されている第1の状態情報との比較に基づいて、第1の記憶領域202a、第2の記憶領域202bおよび第3の記憶領域202cのいずれかを選択する。
詳細には、検証値生成部205は、第2の状態情報である開閉回数と、第1の状態情報である開閉回数との差分を計算し、当該差分に基づいて、第1の記憶領域202a、第2の記憶領域202bおよび第3の記憶領域202cのいずれかを選択する。
本実施の形態2では、上記の差分が1未満の範囲内にある場合には、検証値生成部205は、第1の記憶領域202aを選択する。この場合、処理フローはステップS806に進む。ここで、ステップS806とそれに続くステップS807は、本実施の形態2における第1のセキュアブート処理である。
また、上記の差分が1以上かつ2未満の範囲内にある場合には、検証値生成部205は、第2の記憶領域202bを選択する。この場合、処理フローはステップS808に進む。ここで、ステップS808とそれに続くステップS809は、本実施の形態2における第2のセキュアブート処理である。
また、上記の差分が2以上の範囲内にある場合には、検証値生成部205は、第3の記憶領域202cを選択する。この場合、処理フローはステップS810に進む。ここで、ステップS810とそれに続くステップS811は、本実施の形態2における第3のセキュアブート処理である。
ステップS806において、検証値生成部205は、第1の記憶領域202aに記憶されているデータに基づいて、第1の検証値を生成する。
ステップS807において、判定部206は、検証値生成部205によって生成された第1の検証値と、期待値生成部203に予め記憶されている第1の期待値とを比較する。
すなわち、第1のセキュアブート処理では、第1の記憶領域202aのデータに基づいて第1の検証値が生成され、当該第1の検証値と、同じく第1の記憶領域202aのデータから生成された第1の期待値との比較が行われる。
また、ステップS808において、検証値生成部205は、第2の記憶領域202bに記憶されているデータに基づいて、第2の検証値を生成する。
ステップS809において、判定部206は、検証値生成部205によって生成された第2の検証値と、期待値生成部203に予め記憶されている第2の期待値とを比較する。
すなわち、第2のセキュアブート処理では、第2の記憶領域202bのデータに基づいて第2の検証値が生成され、当該第2の検証値と、同じく第2の記憶領域202bのデータから生成された第2の期待値との比較が行われる。
また、ステップS810において、検証値生成部205は、第3の記憶領域202cに記憶されているデータに基づいて、第3の検証値を生成する。
ステップS811において、判定部206は、検証値生成部205によって生成された第3の検証値と、期待値生成部203に予め記憶されている第3の期待値とを比較する。
すなわち、第3のセキュアブート処理では、第3の記憶領域202cのデータに基づいて第3の検証値が生成され、当該第3の検証値と、同じく第3の記憶領域202cのデータから生成された第3の期待値との比較が行われる。
上記のステップS806およびS807による第1のセキュアブート処理が行われた場合には、ステップS812において、判定部206は、ステップS807における検証値と期待値との比較結果が正常であるか否か、すなわち両者が一致しているか否かを判定する。
また、上記のステップS808およびS809による第2のセキュアブート処理が行われた場合には、ステップS812において、判定部206は、ステップS809における検証値と期待値との比較結果が正常であるか否か、すなわち両者が一致しているか否かを判定する。
また、上記のステップS810およびS811による第3のセキュアブート処理が行われた場合には、ステップS812において、判定部206は、ステップS811における検証値と期待値との比較結果が正常であるか否か、すなわち両者が一致しているか否かを判定する。
上記の比較結果が正常である場合、すなわち検証値と期待値とが一致している場合には、記憶領域のデータの完全性が保証される。この場合、処理フローはステップS813に進み、制御部101による制御処理が開始される。
一方、上記の比較結果が異常である場合、すなわち検証値と期待値とが一致していない場合には、記憶領域のデータの完全性が保証されない。この場合、処理フローはステップS813に進まず、制御部101による制御処理は開始されない。
上記の図8の処理では、前回のモータ制御装置200の起動時、制御部101による制御処理の開始後に状態情報取得部204によって取得された第1の状態情報と、今回のモータ制御装置200の起動時、制御部101による制御処理の開始前に新たに取得された第2の状態情報との差分が、1未満の範囲内にある場合には、ステップS806およびS807の第1のセキュアブート処理が行われる。この第1のセキュアブート処理では、第1の記憶領域202aのデータの完全性が判定される。
また、前回のモータ制御装置200の起動時、制御部101による制御処理の開始後に状態情報取得部204によって取得された第1の状態情報と、今回のモータ制御装置200の起動時、制御部101による制御処理の開始前に新たに取得された第2の状態情報との差分が、1以上かつ2未満の範囲内にある場合には、ステップS808およびS809の第2のセキュアブート処理が行われる。この第2のセキュアブート処理では、第2の記憶領域202bのデータの完全性が判定される。
また、前回のモータ制御装置200の起動時、制御部101による制御処理の開始後に状態情報取得部204によって取得された第1の状態情報と、今回のモータ制御装置200の起動時、制御部101による制御処理の開始前に新たに取得された第2の状態情報との差分が、2以上の範囲内にある場合には、ステップS810およびS811の第3のセキュアブート処理が行われる。この第3のセキュアブート処理では、第3の記憶領域202cのデータの完全性が判定される。
先述したように、第2の記憶領域202bは、第1の記憶領域202aを包含している。また、第3の記憶領域202cは、第1の記憶領域202aおよび第2の記憶領域202bを包含している。また、第1の記憶領域202a、第2の記憶領域202bおよび第3の記憶領域202cの順で、データの重要度が高い。
したがって、第1のセキュアブート処理、第2のセキュアブート処理および第3のセキュアブート処理の順で高速である。
なお、ステップS814においては、書き換え処理部107によって、記憶部202に記憶されているデータの書き換え処理が行われる。この際、期待値生成部203は、第1の記憶領域202aのデータに基づいて第1の期待値を生成し、自身の内部メモリに記憶する。また、期待値生成部203は、第2の記憶領域202bのデータに基づいて第2の期待値を生成し、同じく自身の内部メモリに記憶する。さらに、期待値生成部203は、第3の記憶領域202cのデータに基づいて第3の期待値を生成し、同じく自身の内部メモリに記憶する。
以上説明したように、本実施の形態2において、モータ制御装置200は、自身の起動時、制御部101による制御処理の開始後に、図7のフローチャートに従って、第1の状態情報である車両ドア510の開閉回数を、予め決定された事象が発生するたびに繰り返し取得して記憶する。
また、次回の起動時、モータ制御装置200は、制御部101による制御処理の開始前に、図8のフローチャートに従って、前回の起動時に取得して記憶した第1の状態情報である開閉回数と、今回の起動時に新たに取得した第2の状態情報である開閉回数との差分を計算する。
上記の差分が1未満の範囲内にある場合には、モータ制御装置200は、前回の起動から今回の起動までの間に、意図しない起動による記憶領域のデータの不正な書き換えが行われた可能性は低いと判断する。この場合、モータ制御装置200は、第1の記憶領域202aの完全性のみを検証する高速の第1のセキュアブート処理を行う。
また、上記の差分が1以上かつ2未満の範囲内にある場合には、モータ制御装置200は、前回の起動から今回の起動までの間に、意図しない起動による記憶領域のデータの不正な書き換えが行われた可能性が中程度であると判断する。この場合、モータ制御装置200は、第1の記憶領域202aを包含する第2の記憶領域202bの完全性を検証する中速の第2のセキュアブート処理を行う。
また、上記の差分が2以上の範囲内にある場合には、モータ制御装置200は、前回の起動から今回の起動までの間に、意図しない起動による記憶領域のデータの不正な書き換えが行われた可能性が高いと判断する。この場合、モータ制御装置200は、第1の記憶領域202aおよび第2の記憶領域202bを包含する第3の記憶領域202cの完全性を検証する低速の第3のセキュアブート処理を行う。
上記の特徴により、本実施の形態2に係るモータ制御装置200では、起動時のセキュアブート処理の処理時間を短縮することができる。
また、図7のフローチャートに示されるように、モータ制御装置200は、制御部101による制御処理の開始後は、予め決定された事象が発生するたびに、第1の状態情報を取得して記憶する。そのため、例えばモータ制御装置200の停止時にのみ状態情報を取得して記憶する場合に比べて、電源が突然遮断された場合等、モータ制御装置200が正常な終了シーケンスを通らずに終了した場合でも、次回起動時に、セキュアブート処理による検証を行うことができる。
また、本実施の形態2では、状態情報として車両ドア510の開閉回数を用いる例を示したが、状態情報はこれに限定されるものではない。状態情報は、モータ制御装置200の起動に伴って変化する可能性のある情報であればよい。例えば、モータ制御装置200から他の制御装置、外部センサ等へのアクセス回数を、状態情報として用いてもよい。
また、他の制御装置が保有する時間情報を、状態情報として用いてもよい。この場合、図8のステップS805で用いる検証時の範囲を適切に定めることによって、前回の起動から今回の起動までの経過時間を調べ、短時間での再起動であるか否かを判定することができる。したがって、短時間での再起動である場合には、高速のセキュアブート処理を行うことによって、安全かつ高速にモータ制御装置200を起動することができる。
また、図7のステップS703において、状態情報取得部204の内部メモリに第1の状態情報を記憶する際に、第1の状態情報を暗号化するようにしてもよい。その場合、図8のステップS807、S809およびS811のいずれかにおいて、状態情報取得部204から第1の状態情報を読み出す際に、暗号化された第1の状態情報を復号する。このように、第1の状態情報を暗号化することによって、第1の状態情報そのものを不正に書き換えられる可能性が低下するため、安全性がさらに向上する。
また、モータ制御装置200とドア制御装置500との間のCANネットワーク520を介した通信を暗号化してもよい。これにより、CANネットワーク上520における状態情報の不正な書き換えの可能性を低下させることができる。
また、本実施の形態2では、CANネットワーク520による有線通信の例を示したが、モータ制御装置200とドア制御装置500との間の通信方法はこれに限定されるものではない。有線通信または無線通信を問わず、他の種類のネットワークを用いても同様の効果が得られる。
また、本実施の形態2では、記憶部202に3つの記憶領域が含まれる場合を説明したが、記憶領域の数はこれに限定されるものではなく、さらに多くの記憶領域を含んでもよい。その場合、記憶領域の数にあわせて、状態情報および期待値の数も決定される。
なお、上述した実施の形態1および2に係るモータ制御装置における各機能は、処理回路によって実現される。各機能を実現する処理回路は、専用のハードウェアであってもよく、メモリに格納されるプログラムを実行するプロセッサであってもよい。図9は、本発明の実施の形態1および2に係るモータ制御装置の各機能を専用のハードウェアである処理回路1000で実現する場合を示した構成図である。また、図10は、本発明の実施の形態1および2に係るモータ制御装置の各機能をプロセッサ2001およびメモリ2002を備えた処理回路2000により実現する場合を示した構成図である。
処理回路が専用のハードウェアである場合、処理回路1000は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはこれらを組み合わせたものが該当する。モータ制御装置の各部の機能それぞれを個別の処理回路1000で実現してもよいし、各部の機能をまとめて処理回路1000で実現してもよい。
一方、処理回路がプロセッサ2001の場合、モータ制御装置の各部の機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアおよびファームウェアは、プログラムとして記述され、メモリ2002に格納される。プロセッサ2001は、メモリ2002に記憶されたプログラムを読み出して実行することにより、各部の機能を実現する。すなわち、モータ制御装置は、処理回路2000により実行されるときに、上述した各制御が結果的に実行されることになるプログラムを格納するためのメモリ2002を備える。
これらのプログラムは、上述した各部の手順あるいは方法をコンピュータに実行させるものであるともいえる。ここで、メモリ2002とは、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)等の、不揮発性または揮発性の半導体メモリが該当する。また、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等も、メモリ2002に該当する。
なお、上述した各部の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
このように、処理回路は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせによって、上述した各部の機能を実現することができる。
上記の課題を解決するために、本発明に係る制御装置は、制御対象の制御処理を行う制御部と、複数の記憶領域を含む記憶部と、記憶部の複数の記憶領域のデータから複数の期待値をそれぞれ生成する、期待値生成部と、制御装置の起動に伴って変化する可能性のある第1の状態情報を取得する、状態情報取得部と、新たに取得した第2の状態情報と、状態情報取得部によって取得された第1の状態情報との比較に基づいて、記憶部の複数の記憶領域の中から1つの記憶領域を選択し、選択された記憶領域のデータから検証値を生成する、検証値生成部と、検証値生成部によって生成された検証値と、当該検証値の生成に用いられた記憶領域のデータから生成されて期待値生成部によって生成された期待値との比較に基づいて、記憶領域のデータの完全性を検証し、制御部による制御処理を開始させるか否かを判定する、判定部とを備え、記憶部は、複数の記憶領域として、第1の記憶領域と、当該第1の記憶領域を包含する第2の記憶領域とを含み、検証値生成部は、第2の状態情報と第1の状態情報との差分を計算し、当該差分が予め決定された範囲内にある場合には、第1の記憶領域のデータから検証値を生成し、差分が前記予め決定された範囲内にない場合には、第2の記憶領域のデータから検証値を生成する。