(57)【特許請求の範囲】
【請求項１】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部と、
他の制御装置と接続する通信部と、
前記通信部を介した通信データからセキュリティ攻撃を検出する攻撃検知部を備えた車両用制御装置であって、
前記確認部は前記攻撃検知部の検出結果に基づいて前記タイミングを決定する車両用制御装置。
【請求項２】
前記確認部は、前記攻撃検知部が前記セキュリティ攻撃を検出した時に前記第二の保護制御部に前記検証処理の実行を指示する請求項１に記載の車両用制御装置。
【請求項３】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部を備えた車両用制御装置であって、
前記確認部は前記車両用制御装置がスリープ状態となる直前または電源遮断される直前に、前記第二の保護制御部に前記検証処理の実行を指示する車両用制御装置。
【請求項４】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部と、
前記監視処理の、呼び出し順序または呼び出し元の処理を規定する呼び出しテーブルを備えた車両用制御装置であって、
前記確認部は前記車両用制御装置の起動後の作動状態に応じて前記タイミングを決定し、
前記第二の保護制御部は、前記監視処理の呼び出し順序または呼び出し元の処理が前記呼び出しテーブルに規定された前記順序または前記呼び出し元の処理と一致するかどうかに基づいて前記第一の保護制御部の健全性を検証する車両用制御装置。
【請求項５】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部を備えた車両用制御装置であって、
前記確認部は前記車両用制御装置の起動後の作動状態に応じて前記タイミングを決定し、
前記第二の保護制御部は、前記監視処理の実行時間に基づいて前記第一の保護制御部の健全性を検証する車両用制御装置。
【請求項６】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部と、
他の制御装置と接続する通信部を備えた車両用制御装置であって、
前記確認部は前記車両用制御装置の起動後の作動状態に応じて前記タイミングを決定し、
前記第二の保護制御部が前記検証処理を実行して前記第一の保護制御部の健全性が否定的と判断した場合は、他の制御装置へ通知する車両用制御装置。
【請求項７】
前記第一の保護制御部の実行するプログラムを書き換える管理部を備え、
前記攻撃検知部が前記セキュリティ攻撃を検知した場合は、前記管理部は前記第一の保護制御部の実行するプログラムを以前に書き込まれていたプログラムまたはセキュリティ攻撃対応プログラムに書き換える請求項１または２に記載の車両用制御装置。
【請求項８】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部と、
前記第一の保護制御部の実行するプログラムを書き換える管理部を備えた車両用制御装置であって、
前記確認部は前記車両用制御装置の起動後の作動状態に応じて前記タイミングを決定し、
前記第二の保護制御部が前記検証処理を実行して前記第一の保護制御部の健全性が否定的と判断した場合は、前記管理部は前記第一の保護制御部の実行するプログラムを、以前に書き込まれていたプログラムにまたは異常対応プログラムに書き換える車両用制御装置。
【請求項９】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部を備えた車両用制御装置であって、
前記確認部は前記車両用制御装置の起動後の作動状態に応じて前記タイミングを決定し、
前記第二の保護制御部は、前記第一の保護制御部に検証用のデータを入力して前記監視処理を実行させ、前記監視処理の実行後の出力に基づいて健全性を検証する車両用制御装置。
【請求項１０】
車載機器の制御を行う主制御部と
前記主制御部の入出力の監視処理を実行する第一の保護制御部と、
前記第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、
前記第二の保護制御部が前記検証処理を実行するタイミングを指示する確認部を備えた車両用制御装置であって、
前記確認部は前記車両用制御装置の起動後の作動状態に応じて前記タイミングを決定し、
前記第一の保護制御部は、前記主制御部の出力を制限する車両用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、車両用制御装置に関する。
【背景技術】
【０００２】
車両には、ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）と呼ばれる車両用制御装置が複数搭載されている。車両用制御装置は１つあるいは複数で車両の走る・曲がる・止まるといった走行に関わる基本的な機能、車内環境の制御機能、ナビゲーションなどの情報提供機能を達成するために、車載機器を制御している。車両用制御装置は、これらに加えて、異常発生に対する通知、縮退運転などのセーフティ機能を提供している。セーフティ機能は、ＩＳＯ  ２６２６２に従って、車両メーカが定めるＡＳＩＬ（Automotive Safety Integrity Level）に基づき、部品の信頼性を所定以上に維持するように車両および車載機器の設計とシステム構築により実現されている。
【０００３】
また、悪意のある者が、不正な情報を車両へ送信するセキュリティ攻撃を行うことがある。セキュリティ攻撃が、車載機器に異常な挙動を引き起こさせる可能性がある。このようなセキュリティ攻撃への対策のために、車両と車両用制御装置の設計者は、把握しうる不正な情報への対応を考慮しなければならない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１９−７３１０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、上記に述べたような車両用制御装置のセーフティ異常とセキュリティ異常に対して適切に対処できるセーフティ対処とセキュリティ対処の、２つの対処の選択方法を提案している。しかしながら、特許文献１の技術には、以下のような課題がある。
【０００６】
セーフティ対処が正しく動作しない場合の対応がないため、セーフティ対処の故障の場合、および、セキュリティ攻撃によってセーフティ対処を正しく動作させられない状況が起きている場合、セーフティ対処を実現することができない。この状況を検知して対処する必要がある。
【０００７】
一般的に、車両用制御装置を構成する部品の信頼性等を考慮して、セーフティ対処が正しく動作することの確認を起動時に行うケースがある。しかし、起動時以外にもセーフティ対処の故障が発生する可能性、セーフティに異常を起こしうるセキュリティ攻撃の発生の可能性があり、これらの場合への即応性のある対応ができていない。
【０００８】
本願は、上記のような課題を解決するためになされたものであり、車両内の制御に対するセーフティ対処の故障および車両に対するセキュリティ攻撃に対して、適切なタイミングでセーフティ対処の健全性の確認を行う車両用制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願に係る車両用制御装置は、車載機器の制御を行う主制御部と、主制御部の入出力の監視処理を実行する第一の保護制御部と、第一の保護制御部の健全性の検証処理を実行する第二の保護制御部と、第二の保護制御部が検証処理を実行するタイミングを指示する確認部と、他の制御装置と接続する通信部と、通信部を介した通信データからセキュリティ攻撃を検出する攻撃検知部を備えた車両用制御装置であって、
確認部は攻撃検知部の検出結果に基づいて検証処理を実行するタイミングを決定するものである。
【発明の効果】
【００１０】
本願に係る車両用制御装置によれば、車両内の制御に対するセーフティ対処の故障および車両に対するセキュリティ攻撃に対して、適切なタイミングでセーフティ対処の健全性の確認を行うことが可能となる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る、車両用制御装置と他の制御装置との接続を示す全体構成図である。
【図２】実施の形態１に係る、車両用制御装置のハードウェア構成図である。
【図３】実施の形態１に係る、主制御部の処理のフローチャートである。
【図４】実施の形態１に係る、第一の保護制御部の処理のフローチャートである。
【図５】実施の形態１に係る、第二の保護制御部の処理の第一のフローチャートである。
【図６】実施の形態１に係る、第二の保護制御部の処理の第二のフローチャートである。
【図７】実施の形態１に係る、異常処理のフローチャートである。
【図８】実施の形態２に係る、第二の保護制御部の処理の第一のフローチャートである。
【図９】実施の形態２に係る、第二の保護制御部の処理の第二のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本願に係る車両用制御装置の実施の形態について、図面を参照して説明する。
【００１３】
１．実施の形態１
図１は、実施の形態１に係る、車両用制御装置２０１と車両１０１の内外の他の制御装置との接続を示す全体構成図である。車両１０１は、車両用制御装置２０１、２０２、２０３を備えている。車両１０１の搭載する車両用制御装置２０１、２０２、２０３は有線通信５０１で接続されている。車両１０１の外部とは、車両用制御装置２０２を介して、無線通信５０２で接続されている。他の車両１０２およびサーバ１００１と無線通信５０２で接続されている。このサーバ１００１には、例えば車両メーカ、制御装置のサプライヤなどが設けるサーバが用いられる。そのほか車両１０１に搭載された車両用制御装置２０１、２０２、２０３は、車両１０１と同様の車両用制御装置を備える他の車両１０２の車両用制御装置とも無線通信５０２を介して接続される。このほか、有線通信５０１または無線通信５０２を介して、車両内の制御装置を診断する車両外の診断装置とも接続可能である（不図示）。車両１０２にも、車両１０１と同様の構成要素、または一部の構成要素を有する車両用制御装置が搭載されている。また、車外との無線通信５０２を行う車両用制御装置２０２は、主制御部を有しない、交換機であってもよい。
【００１４】
＜車両用制御装置＞
図２は、実施の形態１に係る車両用制御装置２０１のハードウェア構成図である。本実施の形態では、車両用制御装置２０１は、エンジン制御、変速機制御、ステアリング制御、ブレーキ制御、オーディオ制御、ビデオ制御、衝突予防制御、車間距離制御、ヘッドライト制御、ドア制御、パワーウィンドウ制御、無線キーロック制御、などの車載機器を制御する制御装置である。車両用制御装置２０１の各機能は、車両用制御装置２０１が備えた処理回路により実現される。具体的には、車両用制御装置２０１は、図２に示すように、処理回路として、ＣＰＵ（Central Processing Unit）等の演算処理装置９０（コンピュータ）、演算処理装置９０とデータのやり取りをする記憶装置９１、演算処理装置９０に外部の信号を入力する入力回路９２、及び演算処理装置９０から外部に信号を出力する出力回路９３等を備えている。
【００１５】
演算処理装置９０として、ＡＳＩＣ（Application Specific Integrated Circuit）、ＩＣ（Integrated Circuit）、ＤＳＰ（Digital Signal Processor）、ＦＰＧＡ（Field Programmable Gate Array）、各種の論理回路、及び各種の信号処理回路等が備えられてもよい。また、演算処理装置９０として、同じ種類のものまたは異なる種類のものが複数備えられ、各処理が分担して実行されてもよい。記憶装置９１として、演算処理装置９０からデータを読み出し及び書き込みが可能に構成されたＲＡＭ（Random Access Memory）、演算処理装置９０からデータを読み出し可能に構成されたＲＯＭ（Read Only Memory）、フラッシュメモリ等が備えられている。入力回路９２は、各種のセンサ及びスイッチが接続され、これらセンサ及びスイッチの出力信号を演算処理装置９０に入力するＡ／Ｄ変換器等を備えている。出力回路９３は、電気負荷が接続され、これら電気負荷に演算処理装置９０からの制御信号を変換して出力する駆動回路等を備えている。
【００１６】
車両用制御装置２０１が備える各機能は、演算処理装置９０が、ＲＯＭ等の記憶装置９１に記憶されたソフトウェア（プログラム）を実行し、記憶装置９１、入力回路９２、及び出力回路９３等の制御装置３の他のハードウェアと協働することにより実現される。なお、制御装置３が用いる閾値、判定値等の設定データは、ソフトウェア（プログラム）の一部として、ＲＯＭ等の記憶装置９１に記憶されている。
【００１７】
図１の車両用制御装置２０１の構成要素の機能について説明する。図１の車両用制御装置２０１の内部に記載された４０１から４０９で示された各機能は、それぞれソフトウェアのモジュールで構成されるものであってもよいが、ソフトウェアとハードウェアの組み合わせによって構成されるものであってもよい。
【００１８】
実施の形態１に係る車両用制御装置２０１は、車載機器の制御を行う主制御部４０１と、主制御部４０１の入出力の監視処理を実行する第一の保護制御部４０２と、第一の保護制御部４０２の健全性の検証処理を実行する第二の保護制御部４０６と、第二の保護制御部４０６が検証処理を実行するタイミングを指示する確認部４０５を備えた車両用制御装置２０１であって、確認部４０５は車両用制御装置２０１の起動後の作動状態に応じて検証処理を実行するタイミングを決定するものである。以下、個別に各機能について説明する。
【００１９】
＜主制御部＞
主制御部４０１は、車両１０１の車載機器を操作する機能を果たす。例示的には、車両の走る・曲がる・止まるに関わる機能である、エンジン制御、変速機制御、ステアリング制御、ブレーキ制御などの機能、ユーザに車内エンターテインメントを提供するオーディオ制御、ビデオ制御などの機能、車両１０１がより安全に走行するための衝突予防制御、車間距離制御などの機能、車両１０１のライト、ドア、窓と物理的な鍵を操作するヘッドライト制御、ドア制御、パワーウィンドウ制御、無線キーロック制御などの機能の少なくともひとつを実施する。車両用制御装置２０１、２０２、２０３は、単一の主制御部または複数の主制御部を有する。また、車両用制御装置２０２は、無線通信５０２の送受信制御の機能を有するが、これを車両用制御装置２０２の主制御部の機能としてもよい。
【００２０】
なお、車両１０１の有する機能は、１つの車両用制御装置２０１が備える主制御部４０１のみで実現されるもの以外に、複数の車両用制御装置を用いて実現されるものも存在する。たとえば、車両用制御装置２０１、２０２、２０３の主制御部がそれぞれ、外部情報取得機能、状況算出機能、ステアリング制御機能を果たす場合に、車両１０１の車線維持制御を実施する機能は、車両１０１の外部の情報を取得する車両用制御装置２０２、取得した情報を分析して現在状況と予測状況と目標状況を算出する車両用制御装置２０３、算出した目標状況に基づきステアリングの操作を行う車両用制御装置２０１の３つの車両用制御装置で実現される。
【００２１】
＜第一の保護制御部＞
第一の保護制御部４０２は、主制御部４０１の入出力の監視処理を実施する。監視処理は、主制御部４０１の入力が異常であるか否かを判定する処理、主制御部４０１の処理が異常か否かを判定する処理、主制御部４０１の出力が異常であるか否かを判定する処理の全部または一部からなる。
【００２２】
主制御部４０１の入力が、予想できる範囲外であれば、不正な入力がされていると判断でき、その場合の主制御部４０１の出力は信用できないとして退けるべきである。主制御部４０１の入力に対して、出力が妥当でないと判断できる場合、主制御部４０１の処理が異常であると判断できる。例えば、出力の最小許容値と最大許容値の範囲内であっても、主制御部４０１の処理が車載機器を制御目標値から外れる方向に制御している場合がこれに相当する。また、主制御部４０１の出力が、出力の最小許容値と最大許容値の範囲外である場合、不正出力データとして主制御部４０１の異常が判断できる。
【００２３】
よって、第一の保護制御部４０２の監視処理を実行することによって、主制御部４０１の入出力が監視され、入出力に異常があれば、主制御部の異常を判定できる。
【００２４】
さらに、主制御部４０１が不正な値を出力しようとすると、車両１０１の挙動とユーザへ悪影響を与えないようにする処理を行ってもよい。具体的には、主制御部４０１の出力範囲を制限し、縮退運転をさせる。これらはＩＳＯ  ２６２６２のSafety Mechanismの要求を満足するために設定されてもよい。
【００２５】
＜呼び出しテーブル＞
呼び出しテーブル４０３は、第一の保護制御部４０２で実施される監視処理と、その他の処理の実施順序を規定するテーブルである。第一の保護制御部４０２で実施する監視処理は、所定の事前処理の後に呼ばれることが呼び出しテーブル４０３によって規定されている。呼び出しテーブル４０３は、車両用制御装置２０１内部の記憶装置９１に登録されているものであり、たとえばワンチップマイコンが内蔵するフラッシュメモリ、外付けのＥＥＰＲＯＭなどで実現される。
【００２６】
呼び出しテーブル４０３に登録される事前処理は１つとは限らず、第一の保護制御部４０２で実施する監視処理は複数の事前処理から呼ばれる構造となっていてもよい。第一の保護制御部４０２で実施する監視処理が複数の処理で構成されていてもよい。なお、第一の保護制御部４０２で実施する監視処理あるいは事前処理が複数の処理となった場合は、第一の保護制御部４０２で実施する監視処理が実行されるまでの事前処理を構成する複数の処理の実行順序あるいは回数についても、呼び出しテーブルに規定していることが望ましい。
【００２７】
呼び出しテーブル４０３で規定される内容は、呼び出して実行される処理の順序であるが、処理が呼び出される階層を規定することとしてもよい。すなわち、実行される処理と、その処理の中で呼び出される処理を規定することで、呼び出し処理とその呼び出し元の処理を規定することとしてもよい。例えば、第一の保護制御部４０２で実施する監視処理は、特定の上位処理の中で呼び出されることが、呼び出しテーブル４０３で規定されていることとしてもよい。
【００２８】
呼び出しテーブル４０３で、第一の保護制御部４０２で実施する監視処理の順序、または呼び出し元が規定されるので、正規の監視処理については、必ず所定の事前処理のあと実行される、または所定の上位処理の中で呼び出されることとなる。監視処理の実行順序が所定の事前処理の後ではない、または呼び出し元の処理が所定の上位処理でない場合は、正規の手順ではない不正な監視処理がなされていると判断することができる。例えば、セキュリティ攻撃により、第一の保護制御部４０２が不正な呼び出し順序、あるいは不正な呼び出し元により呼び出されることが考えられ、この場合異常と判定する。
【００２９】
以上のように、呼び出しテーブル４０３で規定している、処理の順序または呼び出し処理とその呼び出し元と、実際の第一の保護制御部４０２で実施する監視処理の順序、または呼び出し元を比較するだけで、監視処理の健全性の検証をするので、複雑な処理を伴わず効果的な検証ができる。
【００３０】
また、呼び出しテーブル４０３は信頼される暗号技術で保護されていて、データが完全であること、呼出時に確実に参照されていること、特定範囲外へ情報漏洩しないようにすること、といったセキュリティが確保されていてもよい。これらの保護に用いられる暗号鍵は車両用制御装置２０１、車両１０１内の他の車両用制御装置、サーバ１００１のいずれかで保管されることが望ましい。
【００３１】
＜計時部＞
計時部４０４は、第一の保護制御部４０２の監視処理の実行時間を計測するものであり、監視処理の実行開始から実行終了までの時間を計測する。第一の保護制御部４０２の監視処理が複数の処理で構成されている場合は、最初の処理の実行開始から最後の処理の実行終了までの時間を計測する。第一の保護制御部４０２の監視処理の実行が、他の処理の空き時間を利用して細切れで行われている場合は、実際に監視処理が実行されている時間を積算して、実行時間の計測値としてもよい。
【００３２】
第一の保護制御部４０２の監視処理の実行時間の範囲をあらかじめ確認しておくことによって、監視処理の実行時間が所定範囲から外れている時、不正な監視処理が実行されていると判断することができる。例えば、セキュリティ攻撃により第一の保護制御部４０２の処理が変更されていたり、第一の保護制御部４０２の処理全てを実行することができなかったりする場合には、予め設計した時間通りに第一の保護制御部４０２の処理が行われないため、異常であると判断する。
【００３３】
以上のように、第一の保護制御部４０２の監視処理の実行時間を計測し、所定の範囲内にあるか否かで監視処理の健全性を検証するので、複雑な処理を伴わず効果的な検証ができる。
【００３４】
＜第二の保護制御部＞
第二の保護制御部４０６は、第一の保護制御部４０２の健全性の検証処理を実施する。
具体的には、第二の保護制御部は、所定の検証用データを入力し、第一の保護制御部４０２の監視処理を実行させる。第一の保護制御部４０２の監視処理の実行後の出力が妥当かどうかを確認して、第一の保護制御部４０２の健全性を検証する。第二の保護制御部４０６から第一の保護制御部４０２の監視処理を呼び出すことを呼び出しテーブル４０３に規定しておく。
【００３５】
第一の保護制御部４０２がソフトウェアモジュールのみによって構成されている場合は、検証用の入出力データおよび、第一の保護制御部４０２の監視処理の実行後の出力データは、主制御部の車載機器の制御用データとして用いられないよう、データを切り分ける。第二の保護制御部４０６から第一の保護制御部４０２の監視処理を呼び出して実行させるときの入出力データと、監視処理を実行した結果である出力データは、健全性の検証にのみ用いる。健全性の検証に効果が大きい検証用の入出力データを準備できるので意義がある。
【００３６】
第一の保護制御部４０２がハードウェアを含んで構成されている場合は、検証用の入力および、第一の保護制御部４０２の監視処理の実行後の出力が、主制御部の車載機器の制御に影響を与えないように切り離す。第一の保護制御部４０２の入出力端子と、主制御部の車載機器の制御用入出力端子を、リレー回路等により物理的に切り離して、健全性の検証を行う。第一の保護制御部４０２がハードウェアを含んで構成されている場合は、以下の入力データ、出力データ、検証用データは、入力信号、出力信号、検証用信号と読み替えることとする。
【００３７】
第一の保護制御部４０２の健全性の検証処理のために入力する検証用データは、第一の保護制御部４０２が主制御部４０１の入出力が異常であると判断すべきデータと、異常がないと判断すべきデータの双方を準備して、監視処理の健全性の検証に用いることが望ましい。また、監視処理のうち、主制御部４０１の入力値が異常であるか否かを判定する処理、主制御部４０１の処理が異常か否かを判定する処理、主制御部４０１の出力が異常であるか否かを判定する処理について、それぞれについて可能な範囲で、異常がある場合と異常がない場合の入力データを準備して検証を実施することが望ましい。
【００３８】
＜通信部＞
通信部４０７は、車両用制御装置２０１が、車両１０１に搭載される他の車両用制御装置２０２、２０３と有線通信５０１を介してデータを送受信する機能であり、例えば各種の自動車用ＬＡＮ、車内通信プロトコルを用いることができる。さらに、車両用制御装置２０２を介して、車外の通信網６０１とも無線通信５０２で通信することができるものである。無線通信として、携帯電話用の電波網、衛星通信回線、無線ＬＡＮ回線を利用してもよい。
【００３９】
第二の保護制御部４０６が、第一の保護制御部４０２の健全性の検証処理を実行した結果、健全性が否定的と判断した場合、通信部４０７を介して判断結果を他の車両用制御装置２０２、２０３に伝達する。同一車輛１０１内の他の車両用制御装置２０２、２０３に第一の保護制御部４０２の非健全性を伝えることで、車両用制御装置２０１の入出力についての信頼性への警告ができ、車両用制御装置２０１がセキュリティ攻撃を受けた場合は、他の車両用制御装置２０２、２０３も、セキュリティ攻撃の影響を受けている可能性があることを伝達できるからである。また、車両用制御装置２０２を介して無線通信５０２によって車外のサーバ１００１、他の車両１０２、診断装置にも、判断結果を伝えることができる。社外のサーバ１００１は、他の車両についても第一の保護制御部４０２の健全性の検証の必要性を考慮することができ、第一の保護制御部４０２のプログラムの更新に関しても与える影響を考慮することができる。他の車両１０２についても、セキュリティ攻撃の可能性に備えることができる。また、診断装置にて自己診断結果を読み出し、車両用制御装置２０１の修理の必要性を確認できる。
【００４０】
＜攻撃検知部＞
攻撃検知部４０８は、車両１０１へのセキュリティ攻撃を検知、あるいは推測する処理を実施する。通信部４０７が、予め定められた通信データ以外のデータで主制御部に直接影響があるデータを受信した場合、予め定められたタイミングで通信データを受信しなかった場合、予め定められたタイミング以外で通信データを受信した場合、予め定められた異常な受信データを受信した場合、暗号技術を施したデータを正しく処理できなかった場合、などにセキュリティ攻撃を受けたと判断し、攻撃検知部４０８はセキュリティ攻撃の検知を出力する。そのほか、車両用制御装置２０１が備えるべき機能以外の動作を実行したことを確認した場合、車両１０１の走行状態等から想定される車両用制御装置２０１の処理を外れる処理が実行されていることを確認した場合に、セキュリティ攻撃を受けたと判断し、攻撃検知部４０８はセキュリティ攻撃の検知を出力する。
【００４１】
セキュリティ攻撃の推測としては、例えば主制御部４０１には直接影響がないが、通信部４０７が想定外の通信データを受信した場合、車両用制御装置２０１そのものとそれ以外の車両用制御装置２０２、２０３、あるいは車両１０２などの他の車両で検出した不審な通信データまたは制御状態を、車両用制御装置２０１が把握した場合、セキュリティ攻撃の兆候があるとして、攻撃検知部４０８はセキュリティ攻撃の推測を出力する。第一の保護制御部４０２が検出しなくとも、複数の情報を用いて想定される状況と現状発生している事象とが整合しない場合、例えば車両状態、乗員状態、周辺環境から判断して起こりえない事象が車両１０１の構成要素に発生した場合もセキュリティ攻撃の兆候があるとして、攻撃検知部４０８はセキュリティ攻撃の推測を出力する。攻撃検知部４０８がセキュリティ攻撃を検知または推測した場合、速やかに、第一の保護制御部４０２の健全性の検証処理を実行することが望ましい。セキュリティ攻撃の推測は、広義のセキュリティ攻撃ととらえて、セキュリティ攻撃の対策を実施することができる。しかし、セキュリティ攻撃対策の負荷が増えすぎる弊害を考慮して、セキュリティ攻撃の推測については対策の実施を省略することもできる。
【００４２】
＜確認部＞
確認部４０５は、第二の保護制御部４０６に対し、第一の保護制御部４０２の健全性の検証処理を行うタイミングを指示する。そのタイミングは、主制御部４０１が稼働中に第一の保護制御部４０２を利用することがないタイミングであり、例えば車両１０１の電源オフ直前、スリープ機能により車両用制御装置２０１がスリープする直前に、第二の保護制御部４０６に対し、第一の保護制御部４０２の健全性の検証処理を行うよう指示する。
車両１０１の電源オフ直前であれば、主制御部４０１が車載機器を緊急に操作しなければならない可能性が低く、主制御部４０１の稼働を妨げることなく、第一の保護制御部４０２の健全性の検証処理を行うことができるからである。スリープ機能により車両用制御装置２０１がスリープする直前についても、同様であり、主制御部４０１の稼働を妨げることなく、第一の保護制御部４０２の健全性の検証処理を行うことができる。
【００４３】
また、攻撃検知部４０８がセキュリティ攻撃を検知あるいは推測した時点に、確認部４０５は、第二の保護制御部４０６に対し、第一の保護制御部４０２の健全性の検証処理を行う指示を出すこともできる。セキュリティ攻撃の検知に対し、第一の保護制御部４０２の健全性の検証が優先的に必要となり、即応性が求められるからである。
【００４４】
このほかに、確認部４０５は、主制御部４０１の稼働を阻害しない範囲で、例えば所定時間ごとに、または、停車、エンジンストップなどのイベントごとに、第二の保護制御部４０６に対し、第一の保護制御部４０２の健全性の検証処理を行う指示をすることとしてもよい。その場合、主制御部４０１の処理が実行され、第一の保護制御部４０２の処理が実行された直後に限定して、第一の保護制御部４０２の健全性の検証処理を行う指示をすることとしてもよい。直近の主制御部４０１の処理の実施によって、車載機器が制御され、主制御部４０１の入出力の監視処理が実行されて安全性が確認された直後であれば、次回の車載機器の操作が変更されるまで、時間的余裕があると考えられるからである。
【００４５】
以上のように、確認部４０５が車両用制御装置２０１の起動後の作動状態に応じて、第一の保護制御部４０２の健全性の検証処理を行うタイミングを決定し指示するので、適正なタイミングで検証処理を実行することができる。
【００４６】
＜管理部＞  
車両用制御装置２０１の管理部４０９は、プログラム更新依頼の通知を受けて、車両用制御装置２０１の処理を更新する機能を備える。プログラム更新依頼の通知は、車両用制御装置２０１の内部、または外部から送信される。管理部４０９は、少なくとも第一の保護制御部４０２の処理が記載されたプログラムを更新して最新化する。この時、管理部４０９は、第一の保護制御部４０２の処理を記述した現在のプログラムおよびそれ以前に格納されていたプログラムを保持している。
【００４７】
攻撃検知部４０８がセキュリティ攻撃を検知あるいは推測した場合、第一の保護制御部４０２の処理がセキュリティ攻撃によって改変されている可能性を考慮し、管理部４０９は第一の保護制御部４０２の処理を、以前に格納されていたプログラムに書き換える。ひとつ前のバージョンのプログラムに書き戻すことで、使用実績のある信頼性の高いプログラムを使用できるからである。この時、管理部４０９が書き戻すプログラムは、前回使用していたプログラムではなく、車両用制御装置２０１が製造時に書き込まれていた初期プログラムに書き戻してもよい。セキュリティ攻撃を、より以前から受けていて、前回使用していたプログラムも改変がされている恐れがあり、この可能性を払拭できるからである。
【００４８】
また、書き換えるプログラムを、セキュリティ攻撃を受けたときのために準備された、セキュリティ攻撃対応プログラムとしてもよい。セキュリティ攻撃によって、データ等が改変された場合でも、より安全側に処理がされるように作成されたプログラムを準備することができるからである。
【００４９】
第一の保護制御部の健全性の検証処理を実行した結果、健全性が否定的と判断された場合、第一の保護制御部４０２の処理が改変されている可能性を考慮し、管理部４０９は第一の保護制御部４０２の処理を、以前に格納されていたプログラムに書き換える。ひとつ前のバージョンのプログラムに書き戻すことで、使用実績のある信頼性の高いプログラムを使用できるからである。この時、管理部４０９が書き戻すプログラムは、前回使用していたプログラムではなく、車両用制御装置２０１が製造時に書き込まれていた初期プログラムに書き戻してもよい。より以前からプログラムの改変が行われていて、前回使用していたプログラムも改変がされている恐れがあり、この可能性を払拭できるからである。
【００５０】
また、書き換えるプログラムを、異常対応に準備された、異常対応プログラムとしてもよい。プログラムの異常があった場合でも、より安全側に処理がされるように作成されたプログラムを準備することができるからである。
【００５１】
図３、４、５、６、７を参照して、車両用制御装置の制御手順についてフローチャートに基づいて説明する。図３は、実施の形態１に係る、主制御部４０１の処理のフローチャートである。図４は、実施の形態１に係る、第一の保護制御部４０２の処理のフローチャートである。図５は、実施の形態１に係る、第二の保護制御部４０６の処理の第一のフローチャートである。図６は、実施の形態１に係る、第二の保護制御部４０６の処理の第二のフローチャートであり、図５の第一のフローチャートの続きである。図７は、実施の形態１に係る、異常処理のフローチャートである。
【００５２】
＜主制御部の処理の流れ＞
図３にて、車両用制御装置２０１の主制御部４０１の処理が実行される流れを説明する。図３の処理は、所定時間ごと（例えば１０ｍｓごと）に実行され、車載機器が操作される。実行タイミングは所定時間ごとではなく、クランク角信号、車輪回転信号、トルクセンサ信号などの信号をトリガとして処理が開始されることにしてもよい。
【００５３】
ステップＳ３０１で開始された処理は、主制御部演算処理ステップＳ３０２にて、主制御部が処理すべき入力データを処理して車載機器を駆動するための出力データを算出するステップである。入力データ、出力データともに所定のレジスタに設定され、監視処理の準備がされる。出力データはこの段階では車載機器の操作に反映されない。次に、ステップＳ４００で、第一の保護制御部４０２の監視処理が呼び出されて実行される。図３では、ステップＳ４００が呼び出される前の処理がステップＳ３０２であり、呼び出しテーブル４０３に実行順序が記載されている。第一の保護制御部４０２の監視処理ステップＳ４００で、主制御部４０１の入出力が監視され、異常の有無が判断され、異常時は縮退運転処理によって出力が制限される。次のステップの主制御部車載機器操作ステップＳ３０４にて、出力データが車載機器の操作に反映される。次のステップＳ３０５にて主制御部４０１の処理が終了する。このフローにより、主制御部４０１の処理が、第一の保護制御部による監視付きで実行され、セーフティ対処がなされている。
【００５４】
＜第一の保護制御部の処理の流れ＞
図４は、図３で呼び出される処理である、第一の保護制御部４０２の監視処理ステップＳ４００の処理内容を展開したフローチャートである。ステップＳ４０１で開始された処理は、次に入力チェックステップＳ４０２で、主制御部４０１の入力値をチェックする。ステップＳ４０３で主制御部４０１の入力値が、予想できる範囲外かどうかを判定する。範囲内の場合はステップＳ４０４で入力異常フラグをクリアする。範囲外の場合は、不正な入力がされていると判断でき、ステップＳ４０５で入力異常フラグをセットする。
【００５５】
ステップＳ４０４、ステップＳ４０５の後、ステップＳ４０６で主制御部４０１の処理内容をチェックする。主制御部４０１の入力情報に対して、出力情報が妥当でないと判断できる場合、主制御部４０１の処理が異常であると判断できる。例えば、出力の最小許容値と最大許容値の範囲内であっても、主制御部４０１の処理が車載機器を制御目標値から外れる方向に制御している場合、または、安定性を失う方向に制御する場合がこれに相当する。ステップＳ４０７で処理が異常でないと判断した場合は、ステップＳ４０８で処理異常フラグをクリアする。ステップＳ４０７で処理が異常と判断した場合は、ステップＳ４０９で処理異常フラグをセットする。
【００５６】
ステップＳ４０８、ステップＳ４０９の後、ステップＳ４１０で主制御部４０１の出力をチェックする。主制御部４０１の出力が、出力の最小許容値と最大許容値の範囲外である場合、不正出力として主制御部４０１の異常が判断できる。ステップＳ４１１で出力が異常かどうか判断する。ステップＳ４１１で主制御部４０１の出力が異常でないと判断した場合は、ステップＳ４１２で出力異常フラグをクリアする。ステップＳ４１１で主制御部４０１の出力が異常と判断した場合は、ステップＳ４１３で出力異常フラグをセットする。
【００５７】
ステップＳ４１２、ステップＳ４１３の後、ステップＳ４１４で入力異常フラグ、処理異常フラグ、出力異常フラグのいずれかがセットされているかどうかをチェックする。いずれのフラグもセットされていなければ、ステップＳ４１６で第一の保護制御部４０２の監視処理を終了する。いずれかのフラグがセットされている場合は、ステップＳ４１５で縮退運転制御を実施し、縮退運転の場合の縮退運転テーブルによって、入力データに応じた出力データを算出し、出力データとして、処理を終了する。ここで、異常が発生している場合、縮退運転テーブルによって出力データを算出したが、出力データを所定範囲に限定することで対処してもよい。車載機器を制御するために、より安全側の出力データを得ることができれば問題ない。
【００５８】
＜第二の保護制御部の処理の流れ＞
図５、図６にて、車両用制御装置２０１の第二の保護制御部４０６の処理が実行される流れについて説明する。図５、図６の処理は、所定時間ごと（例えば１０ｍｓごと）に実行される。実行タイミングは所定時間ごとではなく、センサ信号などをトリガとして処理が開始されることとしてもよい。加えて、車両１０１の電源オフ直前、スリープ機能により車両用制御装置２０１がスリープする直前、攻撃検知部４０８がセキュリティ攻撃を検知あるいは推測した時点、停車、エンジンストップなどのイベント発生時に実施してもよい。
【００５９】
ステップＳ５０１で開始された処理は、第二の保護制御部４０６の処理が実行されるタイミングが決定されるステップＳ５０２に進む。確認部４０５は、第二の保護制御部４０６に対し、第一の保護制御部４０２の健全性の検証処理を行うタイミングを決定する。検証処理の実施タイミングとしては、車両１０１の電源オフ直前、スリープ機能により車両用制御装置２０１がスリープする直前、攻撃検知部４０８がセキュリティ攻撃を検知あるいは推測した時点、停車、エンジンストップなどのイベント発生時、所定時間ごとなどが考えられる。これらはいずれも、車両用制御装置２０１の起動後の作動状態に応じて決定されるタイミングである。
【００６０】
これにより、適切なタイミングで第一の保護制御部４０２の監視処理の健全性を検証することができる。次に、ステップＳ５０３でタイミングが合致したかどうかを確認し、現時点が決定された検証処理の実施タイミングでない場合は、ステップＳ５３１に進む。タイミングの合致は、ステップＳ５０２で定めたタイミングに対して現在時点が定めたタイミングである、もしくはそのタイミングを過ぎている場合を言う。前回、ステップＳ５０３を実行したとき以降に、ステップＳ５０２で定めたタイミングとなった場合、次のステップＳ５０３を実行した時、タイミング合致と判断する。
【００６１】
ステップＳ５０３で、現在が決定された検証処理の実施タイミングである場合は、ステップＳ５０４に進み、検証用入出力データ１を設定する。検証用入出力データ１は、主制御部４０１の処理として入力データに対して異常な出力データである。入力データ、出力データともに所定のレジスタに設定され、監視処理の準備がされる。ステップＳ５０４の後、ステップＳ５０５で、第一の保護制御部４０２の監視処理が呼び出されて実行される。ステップＳ５０５は図３のステップＳ４００と同じ処理である。図５では、ステップＳ５０５が呼び出される前の処理がステップＳ５０４であり、呼び出しテーブル４０３に実行順序が記載されている。第一の保護制御部４０２の監視処理ステップＳ５０５で、入出力データが監視され、異常の有無が判断され、異常時は縮退運転処理によって出力が制限される。監視処理ステップＳ５０５による判定結果が、入力異常フラグ、処理異常フラグ、出力異常フラグのセット、クリアの状態で示される。例えば、処理異常フラグがセットされており、縮退運転テーブルによって求められた新たな出力データがレジスタに設定される。
【００６２】
検証用入出力データ１の入力データと出力データの組み合わせに対して、第一の保護制御部４０２の正しい判断によるフラグの設定と縮退運転による出力データが、あらかじめ用意されている。ステップＳ５０６で、ステップＳ５０５にて実行した第一の保護制御部４０２の処理による、フラグの設定と縮退運転による出力データが、あらかじめ用意されたデータと照合される。照合結果が合致している場合は、ステップＳ５０７で第一の保護制御部４０２の判断が健全であるとして、不正１フラグがクリアされる。照合結果が不一致の場合は、ステップＳ５０８で第一の保護制御部４０２の判断が健全でないとして、不正１フラグがセットされる。出力データの照合結果の合致は、所定の幅をもって許容されるものとする。
【００６３】
ステップＳ５０７、ステップＳ５０８の後、ステップＳ５０９で検証用入出力データ２を設定する。検証用入出力データ２は、主制御部４０１の処理として入力データに対して正常な出力データである。入力データ、出力データともに所定のレジスタに設定され、監視処理の準備がされる。ステップＳ５０９の後、ステップＳ５１０で、第一の保護制御部４０２の監視処理が呼び出されて実行される。ステップＳ５１０は図３のステップＳ４００と同じ処理である。図５では、ステップＳ５１０が呼び出される前の処理がステップＳ５０９であり、呼び出しテーブル４０３に実行順序が記載されている。第一の保護制御部４０２の監視処理ステップＳ５１０で、入出力データが監視され、異常の有無が判断され、異常時は縮退運転処理によって出力が制限される。監視処理ステップＳ５１０による判定結果が、入力異常フラグ、処理異常フラグ、出力異常フラグのセット、クリアの状態で示される。例えば、すべてのフラグがクリアされて、出力データは適正としてそのまま出力データがレジスタに設定される。
【００６４】
検証用入出力データ２の入力データと出力データの組み合わせに対して、第一の保護制御部４０２の正しい判断によるフラグの設定と縮退運転による出力データが、あらかじめ用意されている。検証用入出力データ２は、入力データに対して正常な出力データなので、フラグは全てクリアされ、出力データはそのまま維持される。ステップＳ５１１で、ステップＳ５１０にて実行した第一の保護制御部４０２の処理による、フラグの設定と出力データが、あらかじめ用意されたデータと照合される。照合結果が合致している場合は、ステップＳ５１２で第一の保護制御部４０２の判断が健全であるとして、不正１フラグがクリアされる。照合結果が不一致の場合は、ステップＳ５１３で第一の保護制御部４０２の判断が健全でないとして、不正１フラグがセットされる。出力データの照合結果の合致は、所定の幅をもって許容されるものとする。
【００６５】
ステップＳ５１２、ステップＳ５１３の後、ステップＳ５１４で検証用入出力データ３を設定する。検証用入出力データ３は、入力データが、予想できる範囲外である。入力データ、出力データともに所定のレジスタに設定され、監視処理の準備がされる。ステップＳ５１４の後、ステップＳ５１５で、第一の保護制御部４０２の監視処理が呼び出されて実行される。ステップＳ５１５は図３のステップＳ４００と同じ処理である。図５では、ステップＳ５１５が呼び出される前の処理がステップＳ５１４であり、呼び出しテーブル４０３に実行順序が記載されている。第一の保護制御部４０２の監視処理ステップＳ５１５で、入出力データが監視され、異常の有無が判断され、異常時は縮退運転処理によって出力が制限される。監視処理ステップＳ５１５による判定結果が、入力異常フラグ、処理異常フラグ、出力異常フラグのセット、クリアの状態で示される。例えば、入力異常フラグがセットされて、出力データはより安全側の値が選択される。
【００６６】
検証用入出力データ３の入力データと出力データの組み合わせに対して、第一の保護制御部４０２の正しい判断によるフラグの設定と縮退運転による出力データが、あらかじめ用意されている。検証用入出力データ３は、入力データが、予想できる範囲外であるので、入力異常フラグがセットされ、出力データはより安全側の値が選択される。ステップＳ５１６で、ステップＳ５１５にて実行した第一の保護制御部４０２の処理による、フラグの設定と出力データが、あらかじめ用意されたデータと照合される。照合結果が合致している場合は、ステップＳ５１７で第一の保護制御部４０２の判断が健全であるとして、不正３フラグがクリアされる。照合結果が不一致の場合は、ステップＳ５１８で第一の保護制御部４０２の判断が健全でないとして、不正３フラグがセットされる。
【００６７】
ステップＳ５１７、ステップＳ５１８の後、ステップＳ５１９で検証用入出力データ４を設定する。検証用入出力データ４は、出力データが、予想できる範囲外である。入力データ、出力データともに所定のレジスタに設定され、監視処理の準備がされる。ステップＳ５１９の後、ステップＳ５２０で、第一の保護制御部４０２の監視処理が呼び出されて実行される。ステップＳ５２０は図３のステップＳ４００と同じ処理である。図６では、ステップＳ５２０が呼び出される前の処理がステップＳ５１９であり、呼び出しテーブル４０３に実行順序が記載されている。第一の保護制御部４０２の監視処理ステップＳ５２０で、入出力データが監視され、異常の有無が判断され、異常時は縮退運転処理によって出力が制限される。監視処理ステップＳ５２０による判定結果が、入力異常フラグ、処理異常フラグ、出力異常フラグのセット、クリアの状態で示される。例えば、出力異常フラグがセットされて、出力データはより安全側の値が選択される。
【００６８】
検証用入出力データ４の入力データと出力データの組み合わせに対して、第一の保護制御部４０２の正しい判断によるフラグの設定と縮退運転による出力データが、あらかじめ用意されている。検証用入出力データ４は、出力データが、出力の最小許容値と最大許容値の範囲外なので、出力異常フラグがセットされ、出力データはより安全側の値が選択される。ステップＳ５２１で、ステップＳ５２０にて実行した第一の保護制御部４０２の処理による、フラグの設定と出力データが、あらかじめ用意されたデータと照合される。照合結果が合致している場合は、ステップＳ５２２で第一の保護制御部４０２の判断が健全であるとして、不正４フラグがクリアされる。照合結果が不一致の場合は、ステップＳ５２３で第一の保護制御部４０２の判断が健全でないとして、不正４フラグがセットされる。
【００６９】
ステップＳ５２２、ステップＳ５２３の後、ステップＳ５２４で第一の保護制御部４０２の監視処理が実行される直前に実行された処理について、呼び出しテーブル４０３に規定されている処理であるかどうか照合する。第一の保護制御部４０２の監視処理の直前に実行される事前処理は、呼び出しテーブル４０３にて規定されているので、規定されていない処理が直前に実行されていれば、不正な処理が実行されているとみなされる。呼び出しテーブル４０３で規定される内容は、呼び出して実行される処理の順序であるが、処理が呼び出される階層を規定することとしてもよい。すなわち、実行される処理と、その処理の中で呼び出される処理を規定することで、呼び出し処理とその呼び出し元の処理を規定することとしてもよい。
【００７０】
第一の保護制御部４０２の処理がされたステップとその直前の事前処理のステップについて、記憶されている処理が、呼び出しテーブルの記載と合致した場合はステップＳ５２５で呼び出しテーブル不一致フラグがクリアされる。記憶されている処理が、呼び出しテーブルの記載と不一致の場合はステップＳ５２６で呼び出しテーブル不一致フラグがセットされる。
【００７１】
ステップＳ５２５、ステップＳ５２６の後、ステップＳ５２７で計時部４０４によって計測された第一の保護制御部４０２の監視処理の実行時間が、所定範囲内であったかどうか判定される。監視処理の実行時間が所定範囲から外れている時、不正な監視処理が実行された判断する。監視処理の実行時間が所定範囲内である時、ステップＳ５２８で実行時間異常フラグがクリアされる。監視処理の実行時間が所定範囲外である時、ステップＳ５２９で実行時間異常フラグがセットされる。
【００７２】
ステップＳ５２８、ステップＳ５２９の後、ステップＳ５３０で不正１フラグ、不正２フラグ、不正３フラグ、不正４フラグ、呼び出しテーブル不一致フラグ、実行時間異常フラグのいずれかがセットされているかどうか判定する。すべてのフラグがクリアされていれば、ステップＳ５３１へ進む。いずれかのフラグがセットされていた場合は異常処理ステップＳ６００を実行した後、ステップＳ５３３へ進んで処理を終了する。
【００７３】
ステップＳ５３１では、攻撃検知部４０８がセキュリティ攻撃を検知あるいは推測したかどうかを確認する。セキュリティ攻撃を検知あるいは推測していない場合は、ステップＳ５３３へ進み処理を終了する。セキュリティ攻撃を検知あるいは推測している場合は、ステップＳ５３２でプログラムの書き戻しを実行する。管理部４０９が第一の保護制御部４０２の処理を、以前に格納されていたプログラムに書き換える。この時、以前に格納されていたプログラムに書き換えるかわりに、初期プログラムに書き戻してもよい。また、セキュリティ攻撃対応に準備された、セキュリティ攻撃対応プログラムに書き換えることもできる。ステップＳ５３２の後、ステップＳ５３３で処理を終了する。
【００７４】
以上のような流れで、車両用制御装置２０１の第二の保護制御部４０６の処理によって、適切なタイミングで、第一の保護制御部４０２の監視処理の健全性を検証することができる。また、第一の保護制御部４０２の監視処理を実施する順序、実行時間から監視処理の健全性を検証することができる。さらに、セキュリティ攻撃を検知あるいは推測した場合に、第一の保護制御部４０２の監視処理のプログラムを書き戻すことができる。
【００７５】
＜異常処理の流れ＞
図７にて実施の形態１に係る異常処理の流れについて説明する。図７は、図６のステップＳ６００で呼び出される異常処理の内容を示すフローチャートである。ステップＳ６０１で異常処理を開始し、次にステップＳ６０２で、通信部４０７を介して、異常状態を通知する。車両１０１に搭載される他の車両用制御装置２０２、２０３に有線通信５０１を介して異常状態を送信する。また、車両用制御装置２０２を介して、無線通信で別の車両１０２とサーバ１００１に通知する。また、有線通信５０１または無線通信５０２を介して診断装置にも異常状態を送信する、
【００７６】
ステップＳ６０２の後、ステップＳ６０３にてプログラムの書き戻しを実行する。管理部４０９が第一の保護制御部４０２の処理を、以前に格納されていたプログラムに書き換える。この時、以前に格納されていたプログラムに書き換えるかわりに、初期プログラムに書き戻してもよい。また、異常対応に準備された、異常対応プログラムに書き換えることもできる。ステップＳ６０３の後、ステップＳ６０４で異常処理が終了する。
【００７７】
上記の、図１、５の説明では、実施の形態１において、確認部４０５が、第二の保護制御部４０６による第一の保護制御部４０２の健全性の検証の実施タイミングを指示することとしたが、確認部４０５が健全性の検証結果の正否判定を行う構成としてもよい。また、確認部４０５と第二の保護制御部４０６の機能を統合して第二の保護制御部４０６の機能に取り込んでもよい。
【００７８】
上記の説明では、実施の形態１において、車両１０１および車両１０１外とのネットワーク構成を図１のとおりとしたが、車両用制御装置の数、車両用制御装置間の通信線の結線方法はこの限りでなく、接続される車両用制御装置間で情報をやり取りすることができる構成であれば、実施の形態１の特徴を適用可能である。
【００７９】
第一の保護制御部４０２がソフトウェアモジュールのみによって構成されている場合は、検証用の入出力データおよび、第一の保護制御部４０２の監視処理の実行後の出力データは、主制御部の車載機器の制御用データとして用いられないよう、データを切り分けることとした。しかし、第一の保護制御部４０２の処理と同様のソフトウェア処理を複数並行して、またはシリアルに実行させて、結果を比較することで健全性の検証としてもよい。また、その場合、不一致の出力データを出力値として用いないようにしてもよい。
【００８０】
２．実施の形態２
図８は、実施の形態２に係る、第二の保護制御部４０６の処理の第一のフローチャートである。図９は、実施の形態２に係る、第二の保護制御部４０６の処理の第二のフローチャートであり、図８の続きである。実施の形態１では、車両用制御装置２０１の確認部４０５が、健全性の検証処理の実行タイミングを指示すべき対象の、第一の保護制御部４０２が一つである場合について、図５、図６にて説明した。実施の形態２に係る、図８、図９の第二の保護制御部４０６の処理のフローチャートが、図５、図６と異なるのは、車両用制御装置２０１の確認部４０５が、車両用制御装置２０１の第一の保護制御部４０２だけでなく、車両用制御装置２０２の第一の保護制御部と、車両用制御装置２０３の第一の保護制御部の、監視処理の健全性を検証するタイミングを決定する点である。
【００８１】
以下、図８、図９について説明する。第二の保護制御部４０６の処理のフローチャートの開始ステップＳ７０１のタイミングは実施の形態１と同様であり、所定時間ごと（例えば１０ｍｓごと）、セキュリティ攻撃を受けた時、等に実行される。
【００８２】
ステップＳ７０２では、確認部４０５は、健全性の検証処理を実行すべき第一の保護制御部が複数ある場合、それらの処理の重要度を決定する。その後、ステップＳ７０３で、重要度を考慮して、第一の保護制御部ごとの健全性の検証処理を実行すべきタイミングを決定する。確認部４０５は、車両用制御装置２０１ごとに設ける必要はなく、車両１０１ごとに設けて車両内の車両用制御装置２０１、２０２、２０３の主制御部ごとに存在する第一の保護制御部について重要度に応じて健全性の検証処理を実行すべきタイミングを決定する。また、確認部４０５を、車外のサーバ１００１上に設けることによって、車両ごとに複数存在する車両用制御装置の第一の保護制御部の重要度に応じて、それぞれの第一の保護制御部の健全性の検証処理を実行するタイミングを決めることとしてもよい。
【００８３】
それぞれの第一の保護制御部の処理の重要度は、第一の保護制御部に定められた安全確保がどれほど重要な役割を担っているかを判断指標としてもよい。たとえば、ＩＳＯ  ２６２６２のＡＳＩＬに応じて決めることも可能である。ＡＳＩＬ  ＤとＡＳＩＬ  Ａの第一の保護制御部がある場合には、ＡＳＩＬ  Ｄの第一の保護制御部を処理の重要度が高いとして優先して検証する。
【００８４】
また、処理の重要度は、車両状態、乗員状態、周辺環境あるいは予め決定される運転計画に基づいて判断されてもよい。例えば、車両１０１が駐車した場合には次の発進に向けて必要となる車両の駆動に関わる主制御部の第一の保護制御部の重要度が高いため、優先的に検証する。そのほか車両１０１のユーザが設定した運転計画「一般道を走行、その後高速道路を走行」に沿った運転がなされている場合は、現在の周辺環境（一般道）を走行したのち、次の周辺環境（高速道路）になる場合に利用される車線維持、前車追従運転等の主制御部に対する第一の保護制御部の重要度が高い。
【００８５】
以上のように、第一の保護制御部４０２の処理の重要度に応じて、第一の保護制御部４０２の処理の健全性の検証を実行するタイミングを決められるので、重要度に応じた適切なタイミングで健全性の検証を実行できる。
【００８６】
ステップＳ７０３で、複数の第一の保護制御部の健全性の検証タイミングを、それぞれの重要度に基づいて決定した後、ステップＳ７０４でいずれかの検証タイミングと合致しているか否かを確認する。いずれの検証タイミングに合致していない場合は、健全性の検証を実施せずステップＳ９９０へ進む。タイミングの合致は、ステップＳ７０３で定めたタイミングに対して現在時点が定めたタイミングである、もしくはそのタイミングを過ぎている場合を言う。前回、ステップＳ７０４を実行したとき以降に、ステップＳ７０３で定めたタイミングとなった場合、次のステップＳ７０４を実行した時、タイミング合致と判断する。
【００８７】
ステップＳ７０４で、いずれかの検証タイミングになっている場合は、ステップＳ７０５で車両用制御装置２０１の第一の保護制御部４０２の健全性の検証タイミングか否かを確認する。車両用制御装置２０１の第一の保護制御部４０２の健全性検証タイミングであれば、ステップＳ７０６に進んで、第一の保護制御部４０２の健全性検証を開始する。ステップＳ７０６で、車両用制御装置２０１の第一の保護制御部４０２の検証用入出力データをレジスタに設定する。図８、図９のステップＳ７０６からステップＳ７３２の処理は、図５、図６のステップＳ５０４からステップＳ５３０までの処理と同様なので説明を省略し、図８では記載を省略した処理を破線で示している。
【００８８】
図９のステップＳ７３２の処理は、図６のステップＳ５３０の処理と同等である。第一の保護制御部４０２に関して健全性の検証をし、ステップＳ７３２で、不正１フラグ、不正２フラグ、不正３フラグ、不正４フラグ、呼び出しテーブル不一致フラグ、実行時間異常フラグのいずれかがセットされているかどうか判定する。すべてのフラグがクリアされていれば、ステップＳ７３３へ進む。いずれかのフラグがセットされていた場合は異常処理ステップＳ６００を実行した後、ステップＳ９９０へ進んで処理を終了する。異常処理ステップＳ６００は、図６のステップＳ６００と同じ処理であって、図７にステップＳ６０１からステップＳ６０４に展開して説明している。
【００８９】
図９のステップＳ７３３は図６のステップＳ５３１の処理と同等である。図９のステップＳ７３３では、攻撃検知部４０８がセキュリティ攻撃を検知あるいは推測したかどうかを確認する。セキュリティ攻撃を検知あるいは推測していない場合は、ステップＳ９９０へ進み処理を終了する。セキュリティ攻撃を検知あるいは推測している場合は、ステップＳ７３４でプログラムの書き戻しを実行する。管理部４０９が第一の保護制御部４０２の処理を、以前に格納されていたプログラムに書き換える。この時、以前に格納されていたプログラムに書き換えるかわりに、初期プログラムに書き戻してもよい。また、セキュリティ攻撃対応に準備された、セキュリティ攻撃対応プログラムに書き換えることもできる。ステップＳ７３４の後、ステップＳ９９０で処理を終了する。
【００９０】
図８のステップＳ７０５で車両用制御装置２０１の第一の保護制御部４０２の健全性の検証タイミングでない場合、ステップＳ７３５で、車両用制御装置２０２の第一の保護制御部の健全性の検証タイミングか否かを確認する。そうであれば、ステップＳ７３６で車両用制御装置２０２の第一の保護制御部の健全性の検証のための検証用入出力データ２１をレジスタに設定する。図８、図９のステップＳ７３６からステップＳ７６２までの処理は、対象の車両用制御装置が２０２となる以外は、図５、図６のステップＳ５０４からステップＳ５３０までの処理に準ずるので説明を省略する。図８では記載を省略した処理を破線で示している。
【００９１】
図９のステップＳ７６２は、対象の車両用制御装置が２０２となる以外は、図６のステップＳ５３０の処理に準ずる。図９のステップＳ７６２で不正１フラグ、不正２フラグ、不正３フラグ、不正４フラグ、呼び出しテーブル不一致フラグ、実行時間異常フラグのいずれかがセットされているかどうか判定する。すべてのフラグがクリアされていれば、ステップＳ７６３へ進む。いずれかのフラグがセットされていた場合は異常処理ステップＳ８００を実行した後、ステップＳ９９０へ進んで処理を終了する。
【００９２】
ステップＳ７６３では、攻撃検知部がセキュリティ攻撃を検知あるいは推測したかどうかを確認する。セキュリティ攻撃を検知あるいは推測していない場合は、ステップＳ９９０へ進み処理を終了する。セキュリティ攻撃を検知あるいは推測している場合は、ステップＳ７６４で車両用制御装置２０２のプログラムの書き戻しを実行する。管理部が車両用制御装置２０２の第一の保護制御部の処理を、以前に格納されていたプログラムに書き換える。この時、以前に格納されていたプログラムに書き換えるかわりに、初期プログラムに書き戻してもよい。また、セキュリティ攻撃対応に準備された、セキュリティ攻撃対応プログラムに書き換えることもできる。ステップＳ７６４の後、ステップＳ９９０で処理を終了する。
【００９３】
図８のステップＳ７３５で車両用制御装置２０２の第一の保護制御部の健全性の検証タイミングでない場合、車両用制御装置２０３の第一の保護制御部の健全性の検証タイミングである。ステップＳ７６６で車両用制御装置２０３の第一の保護制御部の健全性の検証のための検証用入出力データ３１をレジスタに設定する。図８、図９のステップＳ７６６からステップＳ７９２の処理は、対象の車両用制御装置が２０３となる以外は、図５、図６のステップＳ５０４からステップＳ５３０までの処理に準ずるので説明を省略する。図８では記載を省略した処理を破線で示している。
【００９４】
図９のステップＳ７９２は、対象の車両用制御装置が２０３となる以外は、図６のステップＳ５３０の処理に準ずる。図９のステップＳ７９２で不正１フラグ、不正２フラグ、不正３フラグ、不正４フラグ、呼び出しテーブル不一致フラグ、実行時間異常フラグのいずれかがセットされているかどうか判定する。すべてのフラグがクリアされていれば、ステップＳ７９３へ進む。いずれかのフラグがセットされていた場合は異常処理ステップＳ９００を実行した後、ステップＳ９９０へ進んで処理を終了する。
【００９５】
ステップＳ７９３では、攻撃検知部がセキュリティ攻撃を検知あるいは推測したかどうかを確認する。セキュリティ攻撃を検知あるいは推測していない場合は、ステップＳ９９０へ進み処理を終了する。セキュリティ攻撃を検知あるいは推測している場合は、ステップＳ７９４で車両用制御装置２０３のプログラムの書き戻しを実行する。管理部が車両用制御装置２０３の第一の保護制御部の処理を、以前に格納されていたプログラムに書き換える。この時、以前に格納されていたプログラムに書き換えるかわりに、初期プログラムに書き戻してもよい。また、セキュリティ攻撃対応に準備された、セキュリティ攻撃対応プログラムに書き換えることもできる。ステップＳ７３４の後、ステップＳ９９０で処理を終了する。
【００９６】
図９のステップＳ８００で呼び出される異常処理の内容は、対象となる車両用制御装置が、２０２となる以外は、図７に示される異常処理（ステップＳ６０１、ステップＳ６０２、ステップＳ６０３、ステップＳ６０４）に準ずるので説明を省略する。
【００９７】
図９のステップＳ９００で呼び出される異常処理の内容は、対象となる車両用制御装置が、２０３となる以外は、図７に示される異常処理（ステップＳ６０１、ステップＳ６０２、ステップＳ６０３、ステップＳ６０４）に準ずるので説明を省略する。
【００９８】
図８、図９のフローチャートで、実施の形態２に係る、車両用制御装置２０１の確認部４０５が、健全性の検証処理の実行タイミングを指示すべき対象が、車両用制御装置２０１の第一の保護制御部４０２だけでなく、車両用制御装置２０２の第一の保護制御部と、車両用制御装置２０３の第一の保護制御部の監視処理の健全性を検証するタイミングを決定する場合について説明した。単一の確認部４０５が、監視処理の健全性を検証するタイミングを決定する対象は、これ以外の、同一の車両用制御装置の中の複数の主制御部に対応した複数の第一の保護制御部でもよい。また、異なる車両（例えば車両１０２）の車両用制御装置の監視処理の健全性を検証するタイミングを決定することとしてもよい。
【００９９】
また、確認部４０５、攻撃検知部４０８は、車両ではなくサーバ１００１に設置されてもよい。たとえば、攻撃検知部４０８は、攻撃の兆候を検知しようとすると、多くの既存あるいは車両リリース後に発見される脅威、脆弱性の情報に基づいた判断が望ましい。この場合多くの情報を処理する必要があることから、車両用制御装置に搭載されるようなスペックよりも高い演算能力を有した計算機で攻撃有無を判断することで幅広い範囲の攻撃方法に対して、これを検知することができる。また、重要性を車両の走行状態、環境に応じて決定し変動させて、監視処理の健全性を検証するタイミングを決定するためにも、計算能力の高い制御装置が望ましいので、サーバ１００１への設定が選択される場合がある。
【０１００】
本願は、様々な例示的な実施の形態及び実施例が記載されているが、１つ、または複数の実施の形態に記載された様々な特徴、態様、及び機能は特定の実施の形態の適用に限られるのではなく、単独で、または様々な組み合わせで実施の形態に適用可能である。従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも１つの構成要素を変形する場合、追加する場合または省略する場合、さらには、少なくとも１つの構成要素を抽出し、他の実施の形態の構成要素と組み合わせる場合が含まれるものとする。
【符号の説明】
【０１０１】
２０１、２０２、２０３  車両用制御装置、４０１  主制御部、
４０３  呼び出しテーブル、４０２  第一の保護制御部、４０５  確認部、
４０６  第二の保護制御部、４０７  通信部、４０８  攻撃検知部、４０９  管理部
【図１】
0006968137.tif 000002
【図２】
0006968137.tif 000003
【図３】
0006968137.tif 000004
【図４】
0006968137.tif 000005
【図５】
0006968137.tif 000006
【図６】
0006968137.tif 000007
【図７】
0006968137.tif 000008
【図８】
0006968137.tif 000009
【図９】
0006968137.tif 000010