(57)【要約】  共通の通信線に対して不正な装置がメッセージ送信を行った場合に、このようなメッセージ送信を検出することができる通信制御装置及び通信システムを提供する。  監視装置は、ＥＣＵによる周期的なメッセージ送信の基準時点ｔ０を決定し、基準時点ｔ０に対してメッセージの送信周期Ｔの整数倍の期間を加えた複数の送信予定時点ｔ１，ｔ２…を決定し、各送信予定時点に対してこの時点を含む所定期間をメッセージ送信の許可期間と決定する。監視装置は、ＣＡＮバス上に検出されたメッセージが許可期間内に送信されたものであるか否かを判定する。監視装置は、不正なメッセージに対して送信を許可しないと判定した場合、このメッセージを受信するＥＣＵに対してメッセージを破棄させるための処理を行う。
2016080422.tif 000002
【特許請求の範囲】
【請求項１】
周期的にメッセージ送信を行うメッセージ送信部を有する通信装置による通信を制御する通信制御装置であって、
前記メッセージ送信部によるメッセージ送信に係る基準時点を決定する基準時点決定部と、
該基準時点決定部が決定した基準時点に前記メッセージ送信部によるメッセージ送信周期の整数倍の期間を加えた送信予定時点に対し、該送信予定時点を含む所定期間をメッセージ送信の許可期間とする許可期間決定部と、
前記通信装置が送信したメッセージを検出するメッセージ検出部と、
該メッセージ検出部が検出したメッセージが、前記許可期間決定部が決定した許可期間内に送信されたものであるか否かに応じて、前記メッセージの送信可否を判定する送信可否判定部と
を備えることを特徴とする通信制御装置。
【請求項２】
制御対象の通信装置が複数存在する場合に、
前記基準時点決定部及び前記許可期間決定部は、複数の通信装置それぞれについて前記基準時点及び前記許可期間を決定するようにしてあること
を特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記通信装置が送信する前記メッセージには、該メッセージの優先度を示す情報を含み、
前記許可期間決定部は、メッセージの優先度毎に前記許可期間を決定するようにしてあること
を特徴とする請求項１又は請求項２に記載の通信制御装置。
【請求項４】
複数の前記通信装置のメッセージ送信が衝突した場合に、メッセージに対して定められた優先度に応じて送信順序を調停する調停手段を備え、
前記送信可否判定部は、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に送信を完了した他のメッセージの優先度を調べ、前記判定対象のメッセージより優先度が低い他のメッセージが存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあること
を特徴とする請求項３に記載の通信制御装置。
【請求項５】
前記送信可否判定部は、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に、所定長を超えるメッセージ無送信期間が存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあること
を特徴とする請求項１乃至請求項４のいずれか１つに記載の通信制御装置。
【請求項６】
前記通信装置に対してハッシュ値の算出要求を与えるハッシュ値要求部と、
前記算出要求に対する応答として前記通信装置が送信するハッシュ値を受信するハッシュ値受信部と、
該ハッシュ値受信部が受信したハッシュ値の正誤を判定するハッシュ値判定部と
を備え、
前記基準時点決定部は、前記通信装置から正しいハッシュ値の受信を完了した時点に基づいて、前記基準時点を決定するようにしてあること
を特徴とする請求項１乃至請求項５のいずれか１つに記載の通信制御装置。
【請求項７】
前記送信可否判定部が送信を許可しないと判定したメッセージを、該メッセージを受信する前記通信装置に破棄させる処理を行う破棄処理部を備えること
を特徴とする請求項１乃至請求項６のいずれか１つに記載の通信制御装置。
【請求項８】
互いにメッセージの送受信を行う複数の通信装置及び該通信装置による通信を制御する通信制御装置を備える通信システムであって、
前記通信装置は、周期的にメッセージ送信を行うメッセージ送信部を有し、
前記通信制御装置は、
前記メッセージ送信部によるメッセージ送信に係る基準時点を決定する基準時点決定部と、
該基準時点決定部が決定した基準時点に前記メッセージ送信部によるメッセージ送信周期の整数倍の期間を加えた送信予定時点に対し、該送信予定時点を含む所定期間をメッセージ送信の許可期間とする許可期間決定部と、
前記通信装置が送信したメッセージを検出するメッセージ検出部と、
該メッセージ検出部が検出したメッセージが、前記許可期間決定部が決定した許可期間内に送信されたものであるか否かに応じて、前記メッセージの送信可否を判定する送信可否判定部と
を有すること
を特徴とする通信システム。
【請求項９】
前記基準時点決定部及び前記許可期間決定部は、前記複数の通信装置それぞれについて前記基準時点及び前記許可期間を決定するようにしてあること
を特徴とする請求項８に記載の通信システム。
【請求項１０】
前記通信装置が送信する前記メッセージには、該メッセージの優先度を示す情報を含み、
前記許可期間決定部は、メッセージの優先度毎に前記許可期間を決定するようにしてあること
を特徴とする請求項８又は請求項９に記載の通信システム。
【請求項１１】
複数の前記通信装置のメッセージ送信が衝突した場合に、メッセージに対して定められた優先度に応じて送信順序を調停する調停手段を備え、
前記送信可否判定部は、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に送信を完了した他のメッセージの優先度を調べ、前記判定対象のメッセージより優先度が低い他のメッセージが存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあること
を特徴とする請求項１０に記載の通信システム。
【請求項１２】
前記送信可否判定部は、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に、所定長を超えるメッセージ無送信期間が存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあること
を特徴とする請求項８乃至請求項１１のいずれか１つに記載の通信システム。
【請求項１３】
前記通信制御装置は、
前記通信装置に対してハッシュ値の算出要求を与えるハッシュ値要求部と、
前記算出要求に対する応答として前記通信装置が送信するハッシュ値を受信するハッシュ値受信部と、
該ハッシュ値受信部が受信したハッシュ値の正誤を判定するハッシュ値判定部と
を有し、
前記通信装置は、
前記通信制御装置からの算出要求に応じてハッシュ値を算出するハッシュ値算出部と、
該ハッシュ値算出部が算出したハッシュ値を前記通信制御装置へ送信するハッシュ値送信部と
を有し、
前記基準時点決定部は、前記通信装置から正しいハッシュ値の受信を完了した時点に基づいて、前記基準時点を決定するようにしてあること
を特徴とする請求項８乃至請求項１２のいずれか１つに記載の通信システム。
【請求項１４】
前記メッセージ送信部は、前記ハッシュ値送信部が正しいハッシュ値の送信を完了した時点に基づく基準時点を決定し、決定した時点を基準として周期的にメッセージ送信を行うようにしてあること
を特徴とする請求項１３に記載の通信システム。
【請求項１５】
前記通信制御装置は、前記送信可否判定部が送信を許可しないと判定したメッセージを、該メッセージを受信する前記通信装置に破棄させる処理を行う破棄処理部を有すること
を特徴とする請求項８乃至請求項１４のいずれか１つに記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＣＡＮ（Controller Area Network）などのように、複数の通信装置がメッセージの送受信を行う通信システム、及び、このシステムに対する不正なメッセージの侵入を検出する通信制御装置に関する。
【背景技術】
【０００２】
従来、車両に搭載された複数のＥＣＵ（Electronic Control Unit）間の通信には、ＣＡＮの通信プロトコルが広く採用されている。ＣＡＮの通信プロトコルを採用した通信システムは、複数のＥＣＵが共通のＣＡＮバスに接続された構成となり、送信側のＥＣＵがＣＡＮバスへ出力した信号を受信側のＥＣＵが取得することによってメッセージの送受信が行われる。このような通信システムにおいて、共通の通信線上への不正なメッセージ侵入を検出又は防止するための技術が研究されている。【０００３】
特許文献１においては、外部データの入力規制を行う車両ネットワークの通信管理装置が提案されている。この通信管理装置は、ＣＡＮバス上のデータの監視及び外部から入力されるデータの監視を行い、ＣＡＮバスの使用率が負荷基準値を超えているとき、及び、外部データの転送に伴いＣＡＮバスの使用率が負荷基準値を超えることが予測されるときに、外部データの送信規制を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−３８７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
車載の通信システムにおいて、例えばＣＡＮバスに悪意のある装置が接続される可能性がある。このような装置は、例えばＣＡＮバスに対して不正なメッセージ送信を行うことによって、ＣＡＮバスに接続された正規のＥＣＵなどを誤動作させる虞がある。特許文献１に記載の通信管理装置は、ＣＡＮバスの使用率が負荷基準値を超えているか否かを判定する構成であるため、悪意のある装置によるメッセージ送信量が少ない場合には送信規制を行うことができないという問題がある。【０００６】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、共通の通信線に対して不正な装置がメッセージ送信を行った場合に、このようなメッセージ送信を検出することができる通信制御装置及び通信システムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係る通信制御装置は、周期的にメッセージ送信を行うメッセージ送信部を有する通信装置による通信を制御する通信制御装置であって、前記メッセージ送信部によるメッセージ送信に係る基準時点を決定する基準時点決定部と、該基準時点決定部が決定した基準時点に前記メッセージ送信部によるメッセージ送信周期の整数倍の期間を加えた送信予定時点に対し、該送信予定時点を含む所定期間をメッセージ送信の許可期間とする許可期間決定部と、前記通信装置が送信したメッセージを検出するメッセージ検出部と、該メッセージ検出部が検出したメッセージが、前記許可期間決定部が決定した許可期間内に送信されたものであるか否かに応じて、前記メッセージの送信可否を判定する送信可否判定部とを備えることを特徴とする。【０００８】
また本発明に係る通信制御装置は、制御対象の通信装置が複数存在する場合に、前記基準時点決定部及び前記許可期間決定部は、複数の通信装置それぞれについて前記基準時点及び前記許可期間を決定するようにしてあることを特徴とする。【０００９】
また本発明に係る通信制御装置は、前記通信装置が送信する前記メッセージには、該メッセージの優先度を示す情報を含み、前記許可期間決定部は、メッセージの優先度毎に前記許可期間を決定するようにしてあることを特徴とする。【００１０】
また本発明に係る通信制御装置は、複数の前記通信装置のメッセージ送信が衝突した場合に、メッセージに対して定められた優先度に応じて送信順序を調停する調停手段を備え、前記送信可否判定部は、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に送信を完了した他のメッセージの優先度を調べ、前記判定対象のメッセージより優先度が低い他のメッセージが存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあることを特徴とする。【００１１】
また本発明に係る通信制御装置は、前記送信可否判定部は、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に、所定長を超えるメッセージ無送信期間が存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあることを特徴とする。【００１２】
また本発明に係る通信制御装置は、前記通信装置に対してハッシュ値の算出要求を与えるハッシュ値要求部と、前記算出要求に対する応答として前記通信装置が送信するハッシュ値を受信するハッシュ値受信部と、該ハッシュ値受信部が受信したハッシュ値の正誤を判定するハッシュ値判定部とを備え、前記基準時点決定部は、前記通信装置から正しいハッシュ値の受信を完了した時点に基づいて、前記基準時点を決定するようにしてあることを特徴とする。【００１３】
また本発明に係る通信制御装置は、前記送信可否判定部が送信を許可しないと判定したメッセージを、該メッセージを受信する前記通信装置に破棄させる処理を行う破棄処理部を備えることを特徴とする。【００１４】
また本発明に係る通信システムは、互いにメッセージの送受信を行う複数の通信装置及び該通信装置による通信を制御する通信制御装置を備える通信システムであって、前記通信装置は、周期的にメッセージ送信を行うメッセージ送信部を有し、前記通信制御装置は、前記メッセージ送信部によるメッセージ送信に係る基準時点を決定する基準時点決定部と、該基準時点決定部が決定した基準時点に前記メッセージ送信部によるメッセージ送信周期の整数倍の期間を加えた送信予定時点に対し、該送信予定時点を含む所定期間をメッセージ送信の許可期間とする許可期間決定部と、前記通信装置が送信したメッセージを検出するメッセージ検出部と、該メッセージ検出部が検出したメッセージが、前記許可期間決定部が決定した許可期間内に送信されたものであるか否かに応じて、前記メッセージの送信可否を判定する送信可否判定部とを有することを特徴とする。【００１５】
また、本発明に係る通信システムは、前記基準時点決定部及び前記許可期間決定部が、前記複数の通信装置それぞれについて前記基準時点及び前記許可期間を決定するようにしてあることを特徴とする。【００１６】
また、本発明に係る通信システムは、前記通信装置が送信する前記メッセージには、該メッセージの優先度を示す情報を含み、前記許可期間決定部は、メッセージの優先度毎に前記許可期間を決定するようにしてあることを特徴とする。【００１７】
また、本発明に係る通信システムは、複数の前記通信装置のメッセージ送信が衝突した場合に、メッセージに対して定められた優先度に応じて送信順序を調停する調停手段を備え、前記送信可否判定部は、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に送信を完了した他のメッセージの優先度を調べ、前記判定対象のメッセージより優先度が低い他のメッセージが存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあることを特徴とする。【００１８】
また、本発明に係る通信システムは、前記送信可否判定部が、判定対象のメッセージに関する前記送信予定時点から前記判定対象のメッセージの送信が完了するまでの間に、所定長を超えるメッセージ無送信期間が存在する場合に、前記判定対象のメッセージの送信を許可しないと判定するようにしてあることを特徴とする。【００１９】
また、本発明に係る通信システムは、前記通信制御装置が、前記通信装置に対してハッシュ値の算出要求を与えるハッシュ値要求部と、前記算出要求に対する応答として前記通信装置が送信するハッシュ値を受信するハッシュ値受信部と、該ハッシュ値受信部が受信したハッシュ値の正誤を判定するハッシュ値判定部とを有し、前記通信装置は、前記通信制御装置からの算出要求に応じてハッシュ値を算出するハッシュ値算出部と、該ハッシュ値算出部が算出したハッシュ値を前記通信制御装置へ送信するハッシュ値送信部とを有し、前記基準時点決定部は、前記通信装置から正しいハッシュ値の受信を完了した時点に基づいて、前記基準時点を決定するようにしてあることを特徴とする。【００２０】
また、本発明に係る通信システムは、前記メッセージ送信部が、前記ハッシュ値送信部が正しいハッシュ値の送信を完了した時点に基づく基準時点を決定し、決定した時点を基準として周期的にメッセージ送信を行うようにしてあることを特徴とする。【００２１】
また、本発明に係る通信システムは、前記通信制御装置が、前記送信可否判定部が送信を許可しないと判定したメッセージを、該メッセージを受信する前記通信装置に破棄させる処理を行う破棄処理部を有することを特徴とする。【００２２】
本発明においては、共通の通信線に複数の通信装置が接続され、各通信装置が周期的にメッセージ送信を行う構成の通信システムに対して、不正なメッセージ送信を検出する通信制御装置を設ける。通信制御装置は、通信装置による周期的なメッセージ送信の基準時点（ｔ０）を決定し、基準時点（ｔ０）に対してメッセージの送信周期（Ｔ）の整数（ｎ＝１，２，３，…）倍の期間を加えた複数の時点（ｔ１＝ｔ０＋Ｔ，ｔ２＝ｔ０＋２Ｔ，ｔ３＝ｔ０＋３Ｔ，…，ｔｎ＝ｔ０＋ｎＴ）を送信予定時点と決定し、各送信予定時点（ｔ１，ｔ２，ｔ３，…，ｔｎ）に対してこの時点を含む所定期間（ｔ１−Ａ〜ｔ１＋Ｂ，ｔ２−Ａ〜ｔ２＋Ｂ，ｔ３−Ａ〜ｔ３＋Ｂ，…，ｔｎ−Ａ〜ｔｎ＋Ｂ）をメッセージ送信の許可期間と決定する。
また通信制御装置は、共通の通信線を監視することによって、通信装置が送信したメッセージを検出する。通信制御装置は、検出されたメッセージが上記の許可期間内に送信されたものであるか否かを判定することにより、このメッセージが不正なものであるか否かを判定することができ、このメッセージの送信を許可するか否かを判定することができる。【００２３】
上記のように本発明の通信制御装置は、最初の段階で決定した基準時点に基づいて、以降のメッセージ送信の許可期間を決定する構成、即ち絶対的な基準で許可期間を決定する構成である。これに対して例えばメッセージ受信毎に、このメッセージの受信時点に周期Ｔを加えた時点を含む所定期間を許可期間とする構成、即ち相対的な基準で許可期間を決定する構成を採用することが考えられる。しかし、ＣＡＮの通信プロトコルではメッセージ送信の衝突が発生した場合には調停処理が行われ、優先度の低いメッセージの送信に遅延が発生する。相対的な決定を行う構成では、メッセージ送信に遅延が発生した場合に、判定のための許可期間が変動するため、許可期間をある程度広く設定する必要があり、許可期間を狭めることが容易でない。許可期間が広いほど不正なメッセージを正当であると誤判定する可能性が高まる。また相対的な決定を行う構成では、不正なメッセージの受信を基準として次のメッセージの許可期間が決定される虞がある。このような事態が発生した場合、不正なメッセージが連続的に正当なメッセージであると誤判定される可能性がある。本発明の通信制御装置は、絶対的な基準で許可期間を決定することによって、これらの問題が発生することを回避することが可能である。【００２４】
また本発明においては、通信システムに含まれる各通信装置について、通信制御装置は基準時点をそれぞれ個別に決定する。また通信制御装置は、決定したそれぞれの基準時点に対して許可期間を通信装置毎に決定する。なお各通信装置のメッセージ送信周期はそれぞれ異なっていてよい。これにより、通信システムにメッセージの送信周期及び送信タイミング等が異なる通信装置が含まれる場合であっても、通信制御装置が通信装置毎にメッセージ送信の可否を判定することができる。【００２５】
また本発明においては、送信周期が異なる複数種別のメッセージを通信装置が送信可能とし、通信制御装置はメッセージ種別毎に許可期間を決定する。なお通信制御装置は、基準時点についてもメッセージの種別毎に決定してもよい。これにより送信周期が異なるメッセージを１つの通信装置が送信する場合であっても、通信制御装置は、メッセージの種別毎に送信の可否を判定することができる。【００２６】
また本発明においては、共通の通信線に対して複数の通信装置が接続される構成であるため、複数の通信装置が同時的にメッセージ送信を行った場合に、通信線上で複数のメッセージが衝突する可能性がある。このような場合には通信装置間で調停処理を行い、メッセージの優先度に応じた順序で送信がなされる。即ち、衝突した複数のメッセージについて、まず優先度が高いメッセージの送信が行われた後、優先度が低いメッセージの送信が行われる。
このような調停処理が行われる通信システムでは、通信装置が周期的に送信しようとしたメッセージが他のメッセージと衝突して遅延する可能性がある。そこで通信制御装置は、判定対象のメッセージについて送信予定時点からこのメッセージの送信完了までの間に、他のメッセージが送信されたか否かを調べる。他のメッセージが送信されていた場合、通信制御装置は、判定対象のメッセージの優先度と他のメッセージの優先度とを比較する。
他のメッセージの優先度が判定対象のメッセージの優先度より高い場合、判定対象のメッセージは正当な調停処理によって送信に遅延が発生したと考えられるため、通信制御装置は、判定対象のメッセージの送信を許可する。これに対して、他のメッセージの優先度が判定対象のメッセージの優先度より低い場合、判定対象のメッセージの遅れは正当な調停処理によるものではないと考えられるため、通信制御装置は、判定対象のメッセージの送信を許可しない。これにより、調停処理によってメッセージ送信に遅延が発生する通信システムであっても、通信制御装置は、メッセージ送信の可否を判定することができる。【００２７】
また本発明においては、判定対象のメッセージの送信予定時点からこのメッセージの送信が完了するまでの間に、所定長を超えるメッセージ無送信期間が存在するか否かを通信制御装置が判定する。メッセージ無送信期間が存在する場合、判定対象のメッセージの遅延は正当な調停処理によって発生したものではないと考えられるため、通信制御装置は、判定対象のメッセージの送信を許可しない。【００２８】
また本発明においては、基準時点を決定するために、通信制御装置と通信装置との間で所定の手続を行う。通信制御装置は、通信装置に対してハッシュ値の算出要求を送信する。このときに通信制御装置は、ハッシュ値算出に必要な情報を算出要求と共に通信装置へ与えてもよい。通信制御装置から算出要求を受信した通信装置は、例えば自身のメモリに記憶された情報などに基づいて所定のハッシュ関数を用いたハッシュ値の算出を行い、算出したハッシュ値を通信制御装置へ送信する。通信装置からハッシュ値を受信した通信制御装置は、このハッシュ値が正しいものであるか否かを判定する。受信したハッシュ値が正しいものである場合、通信制御装置は、このハッシュ値の受信を完了した時点に基づいて基準時点を決定する。なお通信装置は、正しいハッシュ値の受信完了時点を基準時点としてもよく、受信完了時点に所定の時間を増減した時点を基準時点としてもよい。
同様に通信装置は、正しいハッシュ値の送信を完了した時点に基づいて基準時点を決定し、決定した時点を基準として周期的なメッセージ送信を行う。
ハッシュ値に基づく信頼性の高い通信結果に基づいて基準時点を決定することができるため、通信制御装置は、信頼性の高い不正メッセージ検出を行うことができる。【００２９】
また本発明においては、通信制御装置が不正なメッセージであるとして送信を許可しないと判定したメッセージについて、このメッセージを受信する通信装置に対してメッセージを破棄させる処理を通信制御装置が行う。これにより不正なメッセージを通信装置が受信し、このメッセージに応じた処理が通信装置にて行われることを防止できる。
【発明の効果】
【００３０】
本発明による場合は、通信制御装置が基準時点に対してメッセージ送信期間の整数倍の期間を加えた時点を含む許可期間を決定し、通信装置が送信したメッセージが許可期間内であるか否かを判定する構成とすることにより、不正な装置が共通の通信線に対して送信したメッセージを精度よく検出することができる。
【図面の簡単な説明】
【００３１】
【図１】本実施の形態に係る通信システムの構成を示す模式図である。
【図２】ＥＣＵの構成を示すブロック図である。
【図３】監視装置の構成を示すブロック図である。
【図４】監視装置の記憶部に記憶される複写データの構成を説明する模式図である。
【図５】監視装置の記憶部に記憶される周期情報の構成を説明する模式図である。
【図６】監視装置による不正メッセージ検出処理を説明するための模式図である。
【図７】送信可否判定部によるアービトレーション処理に関する条件判定を説明するための模式図である。
【図８】送信可否判定部によるアービトレーション処理に関する条件判定を説明するための模式図である。
【図９】送信可否判定部によるアービトレーション処理に関する条件判定を説明するための模式図である。
【図１０】送信可否判定部によるメッセージ無送信期間に関する条件判定を説明するための模式図である。
【図１１】監視装置が行うメッセージ送信の可否判定処理の手順を示すフローチャートである。
【図１２】監視装置が行うメッセージ送信の可否判定処理の手順を示すフローチャートである。
【図１３】ＥＣＵ及び監視装置の間で行われる基準時点決定処理を説明するための模式図である。
【図１４】監視装置による複数のＥＣＵとの基準時点決定処理を説明するための模式図である。
【図１５】監視装置による基準時点決定処理の手順を示すフローチャートである。
【図１６】監視装置からのハッシュ値算出要求に応じてＥＣＵが行う処理の手順を示すフローチャートである。
【図１７】監視装置からのハッシュ値確認要求に応じてＥＣＵが行う処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００３２】
＜システム構成＞
図１は、本実施の形態に係る通信システムの構成を示す模式図である。本実施の形態に係る通信システムは、車両１に搭載された複数のＥＣＵ３と、１つの監視装置５とを備えて構成されている。ＥＣＵ３及び監視装置５は、車両１に敷設された共通の通信線を介して接続され、相互にメッセージを送受信することができる。本実施の形態においては、この通信線をＣＡＮバスとし、ＥＣＵ３及び監視装置５は、ＣＡＮプロトコルに従った通信を行う。ＥＣＵ３は、例えば車両１のエンジンの制御を行うエンジンＥＣＵ、車体の電装品の制御を行うボディＥＣＵ、ＡＢＳ（Antilock Brake System）に関する制御を行うＡＢＳ−ＥＣＵ、又は、車両１のエアバッグの制御を行うエアバッグＥＣＵ等のように、種々の電子制御装置であってよい。監視装置５は、車内ネットワークに対する不正なメッセージ送信を監視する装置である。監視装置５は、監視専用の装置として設けられてもよく、例えばゲートウェイなどの装置に監視の機能を付加した構成であってもよく、また例えばいずれか１つのＥＣＵ３に監視の機能を付加した構成であってもよい。
【００３３】
図２は、ＥＣＵ３の構成を示すブロック図である。なお図２においては、車両１に設けられた複数のＥＣＵ３について、通信及び不正検知等に関するブロックを抜き出して図示してある。これらのブロックは各ＥＣＵ３に共通である。本実施の形態に係るＥＣＵ３は、処理部３１、ＲＯＭ（Read Only Memory）３２、ＲＡＭ（Random Access Memory）３３及びＣＡＮ通信部３４等を備えて構成されている。処理部３１は、ＣＰＵ（Central Processing Unit）又はＭＰＵ（Micro-Processing Unit）等の演算処理装置を用いて構成されている。処理部３１は、ＲＯＭ３２に記憶されたプログラム３２ａを読み出して実行することにより、車両１に係る種々の情報処理又は制御処理等を行う。
【００３４】
ＲＯＭ３２は、フラッシュメモリ又はＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等の不揮発性のメモリ素子を用いて構成されている。ＲＯＭ３２は、処理部３１が実行するプログラム３２ａと、これにより行われる処理に必要な種々のデータ３２ｂとが記憶されている。なおＲＯＭ３２に記憶されるプログラム３２ａ及びデータ３２ｂは、ＥＣＵ３毎に異なる。ＲＡＭ３３は、ＳＲＡＭ（Static Random Access Memory）又はＤＲＡＭ（Dynamic Random Access Memory）等のデータ書き換え可能なメモリ素子を用いて構成されている。ＲＡＭ３３は、処理部３１の処理により生成された種々のデータを記憶する。
【００３５】
ＣＡＮ通信部３４は、ＣＡＮの通信プロトコルに従って、ＣＡＮバスを介した他のＥＣＵ３又は監視装置５との通信を行う。ＣＡＮ通信部３４は、処理部３１から与えられた送信用の情報を、ＣＡＮの通信プロトコルに従った信号に変換し、変換した信号をＣＡＮバスへ出力することで他のＥＣＵ３又は監視装置５への情報送信を行う。ＣＡＮ通信部３４は、ＣＡＮバスの電位をサンプリングすることによって、他のＥＣＵ３又は監視装置５が出力した信号を取得し、この信号をＣＡＮの通信プロトコルに従って２値の情報に変換することで情報の受信を行い、受信した情報を処理部３１へ与える。
【００３６】
またＣＡＮ通信部３４は、自らのメッセージ送信と、他のＥＣＵ３又は監視装置５によるメッセージ送信とに衝突が発生した場合に、いずれのメッセージを先に送信するかを調停する処理、いわゆるアービトレーション処理を行う。各ＥＣＵ３が送信するメッセージには、メッセージの種別に応じて予めＩＤが定められている。このＩＤは、数値として扱われる情報であり、その値が小さいほどメッセージ送信の優先度が高い。このため通信システムにおいては、ＣＡＮバス上で複数のメッセージ送信が衝突した場合、最も優先度が高いメッセージ送信が行われ、このメッセージの送信完了後に他のメッセージの送信が行われる。なおＣＡＮ通信部３４が行うアービトレーション処理は、既存の技術であるため、詳細な処理手順の説明は省略する。
【００３７】
本実施の形態においてＥＣＵ３の処理部３１には、プログラム３２ａの実行により、メッセージ処理部４１及びハッシュ値算出部４２等がソフトウェア的な機能ブロックとして実現される。なおメッセージ処理部４１及びハッシュ値算出部４２等は、その一部又は全部がハードウェアによる機能ブロックとして実現されてもよい。メッセージ処理部４１は、センサなどが検知した情報又は制御対象の機器からのフィードバック情報等の情報を取得し、取得した情報を含むＣＡＮプロトコルのメッセージを作成し、作成したメッセージをＣＡＮバスに対して送信する処理を周期的に行う。なおメッセージの送信周期は、メッセージの種別（即ちＩＤ）毎に定められており、メッセージ処理部４１は、メッセージの種別毎に異なる周期で送信を行うことができる。
【００３８】
ハッシュ値算出部４２は、監視装置５からの算出要求に応じて、ハッシュ値を算出する処理を行う。ハッシュ値算出部４２は、ＲＯＭ３２に記憶されているデータ（プログラム３２ａ及びデータ３２ｂの両方を含んでよい）の一部又は全部と、監視装置５からの算出要求に付されたランダムシードとに基づいて、予め定められたハッシュ関数を用いることによりハッシュ値を算出する。ハッシュ値算出部４２によりハッシュ値算出の詳細手順は後述する。ハッシュ値算出部４２は、算出したハッシュ値を、算出要求に対する応答として、監視装置５へ送信する。
【００３９】
図３は、監視装置５の構成を示すブロック図である。監視装置５は、処理部５１、記憶部５２及びＣＡＮ通信部５３等を備えて構成されている。処理部５１は、ＣＰＵ又はＭＰＵ等の演算処理装置を用いて構成され、記憶部５２に記憶されたプログラムを読み出して実行することにより、車両１のＥＣＵ３の挙動及び通信等を監視する処理を行う。記憶部５２は、フラッシュメモリ又はＥＥＰＲＯＭ等のデータ書き換え可能な不揮発性のメモリ素子を用いて構成されている。本実施の形態において記憶部５２は、車両１に搭載されたＥＣＵ３のＲＯＭ３２の記憶内容を複写した複写データ５２ａと、各ＥＣＵ３が送信するメッセージの送信周期に関する周期情報５２ｂとを記憶している。
【００４０】
ＣＡＮ通信部５３は、ＣＡＮの通信プロトコルに従って、ＣＡＮバスを介したＥＣＵ３との通信を行う。ＣＡＮ通信部５３は、処理部５１から与えられた送信用の情報を、ＣＡＮの通信プロトコルに従った信号に変換し、変換した信号をＣＡＮバスへ出力することでＥＣＵ３への情報送信を行う。ＣＡＮ通信部５３は、ＣＡＮバスの電位をサンプリングすることによって、ＥＣＵ３が出力した信号を取得し、この信号をＣＡＮの通信プロトコルに従って２値の情報に変換することで情報の受信を行い、受信した情報を処理部５１へ与える。
【００４１】
本実施の形態において監視装置５の処理部５１には、基準時点決定部６１、許可期間決定部６２、送信可否判定部６３及び破棄処理部６４等が設けられている。基準時点決定部６１〜破棄処理部６４は、ハードウェアの機能ブロックとして構成されるものであってもよく、ソフトウェアの機能ブロックとして構成されるものであってもよい。基準時点決定部６１及び許可期間決定部６２は、監視装置５が不正なメッセージ送信を検出するための条件などを決定する処理を行う。送信可否判定部６３は、基準時点決定部６１及び許可期間決定部６２が決定した条件に基づいて、ＣＡＮバス上に出力されたメッセージの送信可否を判定する処理を行う。破棄処理部６４は、送信可否判定部６３により送信を許可されなかったメッセージについて、このメッセージがＥＣＵ３にて受信されることを阻止すべく、ＥＣＵ３にメッセージを破棄させるための処理を行う。
【００４２】
図４は、監視装置５の記憶部５２に記憶される複写データ５２ａの構成を説明する模式図である。監視装置５は、車両１に搭載された監視対象の全てのＥＣＵ３について、ＲＯＭ３２の記憶内容と同じものを複写データ５２ａとして記憶している。複写データ５２ａは、各ＥＣＵ３に対して一意に付された識別情報（図４においてＥＣＵａ、ＥＣＵｂ…）と、各ＥＣＵ３のＲＯＭ３２の記憶内容とが対応付けて記憶されている。
【００４３】
図５は、監視装置５の記憶部５２に記憶される周期情報５２ｂの構成を説明する模式図である。監視装置５は、車両１内のネットワーク上で送受信されるメッセージに付される識別情報（ＣＡＮ−ＩＤ）と、このＣＡＮ−ＩＤを有するメッセージが送信される周期とを対応付けて周期情報５２ｂとして記憶している。図示の例では、ＣＡＮ−ＩＤが１のメッセージは送信周期が１０ｍｓであり、ＣＡＮ−ＩＤが２のメッセージは送信周期が５０ｍｓであり、ＣＡＮ−ＩＤが３のメッセージは送信周期が３２ｍｓであることが周期情報５２ｂに記憶されている。なお、これらの数値は一例である。
【００４４】
＜不正メッセージ検出処理＞
本実施の形態に係る通信システムでは、複数のＥＣＵ３がメッセージの送受信を行うＣＡＮバス上に不正なメッセージが送信されたことを検出する処理を監視装置５が行う。例えばＣＡＮバスに対して不正な通信装置が不正に接続され、この通信装置が不正なメッセージをＣＡＮバス上に送信することが考えられる。また例えば、車両１に搭載されたいずれかのＥＣＵ３に不正な改造又は改変等がなされ、このＥＣＵ３が不正なメッセージを送信することが考えられる。これらは不正なメッセージの一例であり、監視装置５が検出する不正なメッセージはこれら以外の要因によるものであってよい。
【００４５】
不正な通信装置は、ＣＡＮプロトコルに従い、特定のＣＡＮ−ＩＤを付した不正メッセージを送信することができる。このような不正メッセージに付されるＣＡＮ−ＩＤは、車両１の通信システムにおいて利用される正当なものが用いられるが、不正メッセージに含まれる他のデータは不正なデータとなる。ＣＡＮ−ＩＤに基づいてＥＣＵ３が不正メッセージを受信した場合、ＥＣＵ３は不正なデータに基づく処理を行うこととなる。本実施の形態に係る通信システムでは、正規のＣＡＮ−ＩＤが付された不正メッセージ、いわゆるなりすましメッセージの検出を行うものである。
【００４６】
本実施の形態に係る監視装置５は、周期的に送信されるべきメッセージについて、このメッセージが正しい周期で送信されているか否かを判断することにより、不正なメッセージの検出を行う。図６は、監視装置５による不正メッセージ検出処理を説明するための模式図である。監視装置５は、通信システム内で送受信されるメッセージに付されるＣＡＮ−ＩＤ毎に、このＣＡＮ−ＩＤを有するメッセージの送信を許可する許可期間を決定する。図６には、ある１つのＣＡＮ−ＩＤが付されるメッセージについて、監視装置５が決定した許可期間などを図示してある。なお本実施の形態においては、１つのＣＡＮ−ＩＤを複数のＥＣＵ３が利用する、即ち同一のＣＡＮ−ＩＤが付されたメッセージを複数のＥＣＵ３が送信することはないものとしている。
【００４７】
本例において、監視装置５が監視対象とするメッセージの送信周期はＴである。監視装置５の基準時点決定部６１は、このメッセージを送信するＥＣＵ３との間で所定の手続を行うことによって、メッセージ送信の基準時点ｔ０を決定する（なお基準時点の決定処理の詳細は後述する）。監視装置５の許可期間決定部６２は、記憶部５２に記憶した周期情報５２ｂを参照することによって、監視対象のメッセージの送信周期Ｔを取得する。許可期間決定部６２は、基準時点ｔ０に対して送信周期Ｔを加えた時点ｔ１をメッセージの送信予定時点ｔ１とする。同様に、許可期間決定部６２は、基準時点ｔ０に対して送信周期Ｔの２倍を加えた時点ｔ２を送信予定時点ｔ２とし、基準時点ｔ０に対して送信周期Ｔの３倍を加えた時点ｔ３を送信予定時点ｔ３とし、…、基準時点ｔ０に対して送信周期Ｔのｎ倍を加えた時点ｔｎを送信予定時点ｔｎとすることができる（ｎ＝１，２，３…）。
【００４８】
監視装置５の許可期間決定部６２は、送信予定時点ｔ１に対して所定の期間Ａ及び期間Ｂの猶予を設けた期間を許可期間と決定する。許可期間決定部６２は、ｔ１−Ａ≦ｔ≦ｔ１＋Ｂの期間を許可期間と決定する。送信予定時点ｔ２、ｔ３…についても同様である。即ち許可期間決定部６２は、ｔ０＋ｎＴ−Ａ≦ｔ≦ｔ０＋ｎＴ＋Ｂ（ｎ＝１，２，３…）を許可期間と決定する。
【００４９】
なお許可期間を決定するための期間Ａ及び期間Ｂは、例えば通信システムのシミュレーション又は実機での測定結果等に基づいて、予め決定される。期間Ａ及び期間Ｂは、全てのメッセージについて同じ値を用いてもよく、例えばＣＡＮ−ＩＤ毎に異なる値を用いてもよい。ＣＡＮ−ＩＤ毎に異なる値を用いる場合、周期情報５２ｂにＣＡＮ−ＩＤと対応付けて期間Ａ及び期間Ｂを記憶しておくことができる。期間Ａは、監視装置５とこのメッセージを送信するＥＣＵ３とのクロック誤差などに基づいて決定することができる。期間Ｂは、このメッセージがアービトレーション処理によって遅延する時間を考慮して決定される。
【００５０】
監視装置５のＣＡＮ通信部５３は、ＣＡＮバスに対するメッセージの送信を監視しており、メッセージ送信を検出した場合に処理部５１へ通知する。処理部５１の送信可否判定部６３は、ＣＡＮ通信部５３からの通知に基づいて、送信されたメッセージのＣＡＮ−ＩＤ、及び、メッセージ送信の開始時点又は終了時点に関する情報を取得する。また送信可否判定部６３は、取得したＣＡＮ−ＩＤに対して許可期間決定部６２が決定した許可期間を取得する。送信可否判定部６３は、送信が検出されたメッセージが、許可期間内に送信されたものであるか否かを判定する。
【００５１】
なおメッセージが許可期間内に送信されたか否かを判断する条件には、メッセージの送信が許可期間内に開始されることを条件とするか、又は、メッセージの送信が許可期間内に完了したことを条件とするかの２通りが考えられる。いずれの条件を採用しても可能であり、いずれの条件を採用するかに応じて期間Ｂの値を適宜に設定すればよい。なお本実施の形態においては、許可期間内にメッセージ送信が完了することを条件として、送信可否判定部６３はメッセージが許可期間内に送信されたか否かを判定するものとする。
【００５２】
送信可否判定部６３は、メッセージが許可期間内に送信されたものではない場合、このメッセージが不正メッセージであると判断し、このメッセージの送信を許可しないと判定する。メッセージ送信を許可しないと送信可否判定部６３が判定した場合、監視装置５の破棄処理部６４は、ＣＡＮバスに接続されたＥＣＵ３に対して、このメッセージを破棄させる処理を行う。なお、メッセージ破棄処理の詳細は後述する。
【００５３】
送信可否判定部６３は、メッセージが許可期間内に送信されたものである場合、更に別の条件判定を行う。送信可否判定部６３は、アービトレーション処理に関する条件判定と、メッセージ無送信期間に関する条件判定とを行う。
【００５４】
図７乃至図９は、送信可否判定部６３によるアービトレーション処理に関する条件判定を説明するための模式図である。上述のようにＣＡＮの通信システムにおいては、複数のメッセージ送信が衝突した場合にアービトレーション処理が行われ、優先度の低いメッセージの送信に遅延が発生する可能性がある。図７では、判定対象のメッセージのＣＡＮ−ＩＤが７であり、このメッセージより優先度の高い３つのメッセージ（ＣＡＮ−ＩＤがそれぞれ３，５，２のメッセージ）がアービトレーション処理によって先に送信された状態を図示してある。
【００５５】
送信可否判定部６３は、判定対象のメッセージの許可期間において、判定対象のメッセージの送信以前に、他のメッセージ送信が行われているか否かを判定する。他のメッセージ送信が行われている場合、送信可否判定部６３は、送信された一又は複数の他のメッセージのＣＡＮ−ＩＤを調べ、判定対象のメッセージのＣＡＮ−ＩＤと比較する。ＣＡＮプロトコルにおいてメッセージに付されるＣＡＮ−ＩＤは優先度を示しており、その数値が小さいほど優先度が高い。送信可否判定部６３は、以前に送信された他のメッセージの全てについて、以下の条件１又は条件２のいずれかが成立する場合に限り、判定対象のメッセージを正規のものであると判断する。
条件１：他のメッセージのＣＡＮ−ＩＤが判定対象のメッセージのＣＡＮ−ＩＤより小さい場合、即ち以前のメッセージが全て優先度の高いものである場合
条件２：他のメッセージが判定対象のメッセージより低優先度であるが、判定対象メッセージの許可期間の開始以前に送信開始されて低優先度のメッセージが送信されていた場合
【００５６】
条件１に関して、送信許可後に連続して送信されるメッセージのうち、以前に送信されたメッセージの少なくとも１つのＣＡＮ−ＩＤが判定対象のメッセージのＣＡＮ−ＩＤより大きい場合、即ち以前に優先度の低いメッセージが送信されている場合に、送信可否判定部６３は、判定対象のメッセージを不正なメッセージであると判断する。図８では、判定対象のメッセージのＣＡＮ−ＩＤが７であり、このメッセージの送信以前に、ＣＡＮ−ＩＤが３，５，９のメッセージが送信された状態を図示してある。ＣＡＮ−ＩＤが９のメッセージは、ＣＡＮ−ＩＤが７である判定対象のメッセージより優先度が低い。このため判定対象のメッセージは、アービトレーション処理によって図示のタイミングに遅延したのではなく、不正な通信装置によって図示のタイミングで送信された可能性がある。判定対象のメッセージが不正なメッセージであり送信を許可しないと送信可否判定部６３が判定した場合、破棄処理部６４によるメッセージ破棄処理が行われる。
【００５７】
条件２は、条件１の例外を規定したものである。即ち条件１によれば、判定対象のメッセージ以前の他のメッセージは、判定対象のメッセージより優先度が高いものであることが必要である。しかし、メッセージの許可期間内に送信された一又は複数の他のメッセージのうち、最初に送信されたメッセージについては、許可期間の開始時点で既に送信されているメッセージである場合には、判定対象のメッセージより低優先度であってもよいとしたものが条件２である。図９では、図７に示したメッセージに加えて、許可期間の開始以前にＣＡＮ−ＩＤが１０のメッセージが送信された状態を図示してある。ＣＡＮ−ＩＤが１０のメッセージは、ＣＡＮ−ＩＤが７である判定対象のメッセージより優先度が低い。しかしこの低優先度のメッセージは、判定対象のメッセージの許可期間の開始以前に送信開始されたメッセージであるため、送信可否判定部６３は、判定対象のメッセージの送信を許可する。
【００５８】
図１０は、送信可否判定部６３によるメッセージ無送信期間に関する条件判定を説明するための模式図である。送信可否判定部６３は、判定対象のメッセージの許可期間において、送信予定時点ｔ１から判定対象メッセージの送信までの間に、ＣＡＮバス上にメッセージが送信されていないメッセージ無送信期間が存在するか否かを調べる。メッセージ無送信期間が存在する場合、送信可否判定部６３は、このメッセージ無送信期間が所定長を超えるか否かを判定する。なお、メッセージ無送信期間が複数存在する場合、送信可否判定部６３は、各メッセージ無送信期間と所定長との比較を個別に行う。
【００５９】
所定長としては、例えばメッセージの３ビット〜１０ビット程度を送信するために必要な期間を設定することができる。これはＣＡＮプロトコルのメッセージ送信におけるＩＦＳ（Inter Frame Space）の３ビット、又は、ＩＦＳにＥＯＦ（End Of Frame）の７ビットを加えた１０ビット等の期間に基づくものである。ただしこれらの数値は一例であって、所定長はこれら以外の期間であってよい。
【００６０】
送信予定時点からメッセージ送信までの間に存在するメッセージ無送信期間が所定長を超える場合、判定対象のメッセージの遅れは正当な遅れではないと判断できる。よってこのような場合、送信可否判定部６３は、判定対象のメッセージが不正なメッセージであり、送信を許可しないと判定する。判定対象のメッセージが不正なメッセージであり送信を許可しないと送信可否判定部６３が判定した場合、破棄処理部６４によるメッセージ破棄処理が行われる。
【００６１】
また送信予定時点からメッセージ送信までの間にメッセージ無送信期間が存在しない場合、又は、メッセージ無送信期間が存在しても所定長より短い場合、送信可否判定部６３は、判定対象のメッセージが正当なメッセージであると判定し、送信を許可する。
【００６２】
このように送信可否判定部６３は、許可期間内に判定対象のＣＡＮ−ＩＤを有するメッセージの送信を検出した場合、このメッセージの送信に正当なアービトレーション処理による遅延以外の遅れが発生しているか否かを判定する。即ち送信可否判定部６３は、許可期間内にて判定対象のメッセージより先に送信されたメッセージの優先度が高いこと（ただし許可期間以前に送信開始されたメッセージを除く）、及び、送信予定時点から判定対象のメッセージ送信までに所定長を超えるメッセージ無送信期間が存在しないことを、判定対象のメッセージの送信を許可する条件とする。送信可否判定部６３は、両条件が満たされる場合に判定対象のメッセージ送信を許可し、少なくとも一方の条件が満たされない場合には判定対象のメッセージ送信を許可しない。
【００６３】
なお監視装置５は、送信可否判定部６３によるこれらの条件判定を行うために、ＣＡＮバス上に送信されたメッセージの履歴を記憶部５２に記憶している。記憶する履歴には、送信されたメッセージのＣＡＮ−ＩＤ、及び、送信開始時点又は送信終了時点に関する情報等が含まれる。また監視装置５によるメッセージ送信の監視は、ＣＡＮ−ＩＤ毎に行われる。即ち監視装置５は、ＣＡＮ−ＩＤ毎に許可期間を決定し、ＣＡＮ−ＩＤ毎にメッセージ送信の可否を判定する。例えば図７においては、ＣＡＮ−ＩＤが７のメッセージを対象として監視装置５が判定を行う例を説明したが、このときに監視装置５はＣＡＮ−ＩＤが３，５，２のメッセージについてもそれぞれ個別に送信可否の判定を行っている。
【００６４】
図１１及び図１２は、監視装置５が行うメッセージ送信の可否判定処理の手順を示すフローチャートである。なお本フローチャートにて用いる変数ｎは、例えば監視装置５の処理部５１が有するレジスタ又はメモリ等の記憶領域を利用して実現され得る。まず、監視装置５の処理部５１は、基準時点決定部６１にて基準時点ｔ０を決定する処理を行う（ステップＳ１）。処理部５１は、記憶部５２に記憶された周期情報５２ｂを読み出して（ステップＳ２）、判定対象のメッセージの送信周期Ｔを取得する。次いで処理部５１は、変数ｎの値を１に初期化する（ステップＳ３）。処理部５１の許可期間決定部６２は、ステップＳ１にて決定した基準時点ｔ０、ステップＳ２にて取得した周期Ｔ、予め定められた定数Ａ及びＢ、並びに、変数ｎに基づいて、許可期間を決定する（ステップＳ４）。なお許可期間は、（ｔ０＋ｎＴ−Ａ）から（ｔ０＋ｎＴ＋Ｂ）までの期間と決定することができる。
【００６５】
処理部５１の送信可否判定部６３は、ステップＳ４にて決定した許可期間が終了したか否かを判定する（ステップＳ５）。許可期間が終了していない場合（Ｓ５：ＮＯ）、送信可否判定部６３は、ＣＡＮ通信部５３にてＣＡＮバス上でのメッセージ受信を検出したか否かを調べる（ステップＳ７）。メッセージ受信を検出していない場合（Ｓ７：ＮＯ）、送信可否判定部６３は、ステップＳ５へ処理を戻す。メッセージ受信を検出した場合（Ｓ７：ＹＥＳ）、送信可否判定部６３は、検出されたメッセージのＣＡＮ−ＩＤを調べることにより、このメッセージが判定対象のメッセージであるか否かを判定する（ステップＳ８）。判定対象のメッセージでない場合（Ｓ８：ＮＯ）、送信可否判定部６３は、このメッセージに関する情報（ＣＡＮ−ＩＤ、送信開始時点及び終了時点等の情報）を履歴として記録し（ステップＳ９）、ステップＳ５へ処理を戻す。判定対象のメッセージである場合（Ｓ８：ＹＥＳ）、送信可否判定部６３は、このメッセージが許可期間内に送信されたものであるか否かを判定する（ステップＳ１０）。許可期間内に送信されたものでない場合（Ｓ１０：ＮＯ）、処理部１０は、破棄処理部６４によるメッセージ破棄処理を行って（ステップＳ１１）、ステップＳ５へ処理を戻す。
【００６６】
判定対象のメッセージが許可期間内に送信されたものである場合（Ｓ１０：ＹＥＳ）、送信可否判定部６３は、送信予定時点ｔｎに対するこのメッセージの遅延の有無を判定する（ステップＳ１２）。遅延がない場合（Ｓ１２：ＮＯ）、送信可否判定部６３は、このメッセージが正当なものであるため送信を許可すると判定し、メッセージ破棄処理を行うことなくステップＳ５へ処理を戻す。送信予定時点ｔｎに対するメッセージの遅延がある場合（Ｓ１２：ＹＥＳ）、送信可否判定部６３は、ステップＳ９にて記録していたメッセージ送信に関する履歴を取得する（ステップ１３）。
【００６７】
送信可否判定部６３は、取得した履歴に基づいて、送信予定時点ｔｎから判定対象のメッセージ送信までの間に、判定対象のメッセージより低優先度のメッセージの送信がなされたか否かを判定する（ステップＳ１４）。低優先度のメッセージ送信がなされている場合（Ｓ１４：ＹＥＳ）、送信可否判定部６３は、この低優先度のメッセージが、判定対象のメッセージの許可期間以前に送信開始されたものであるか否かを更に判定する（ステップＳ１５）。
【００６８】
低優先度のメッセージの送信がなされていない場合（Ｓ１４：ＮＯ）、又は、低優先度のメッセージが許可期間以前に送信開始されたものである場合（Ｓ１５：ＹＥＳ）、送信可否判定部６３は、送信予定時点ｔｎから判定対象のメッセージ送信までの間に、所定長を超えるメッセージの無送信期間があるか否かを判定する（ステップＳ１６）。メッセージ無送信期間がない場合（Ｓ１６：ＮＯ）、送信可否判定部６３は、このメッセージが正当なものであるため送信を許可すると判定し、メッセージ破棄処理を行うことなくステップＳ５へ処理を戻す。
【００６９】
低優先度のメッセージが許可期間以前に送信開始されたものでない場合（Ｓ１５：ＮＯ）、又は、所定長を超えるメッセージ無送信期間がある場合（Ｓ１６：ＹＥＳ）、送信可否判定部６３は、このメッセージが正当なものではないため送信を許可しないと判定し、破棄処理部６４によるメッセージ破棄処理を行って（ステップＳ１７）、ステップＳ５へ処理を戻す。
【００７０】
ステップＳ５において許可期間が終了したと判定した場合（Ｓ５：ＹＥＳ）、処理部５１は、変数ｎに１を加算し（ステップＳ６）、ステップＳ４へ処理を戻し、次の許可期間に関する監視を行う。
【００７１】
＜メッセージ破棄処理＞
本実施の形態に係る通信システムでは、ＣＡＮバス上に出力されたメッセージが正当なものではなく、送信を許可しないと判定した場合に、監視装置５は、ＣＡＮバスに接続されたＥＣＵ３にこのメッセージを破棄させるための処理を行う。本実施の形態に係る通信システムにて送受信されるメッセージは、ＣＡＮプロトコルに従ったものであり、ＣＡＮヘッダ、データフィールド、ＣＲＣ（Cyclic Redundancy Check）フィールド、ＡＣＫフィールド及びＥＯＦ（End Of Frame）等を含んで構成されている。ＣＡＮヘッダは、従来のＣＡＮプロトコルにおけるＳＯＦ（Start Of Frame）、アービトレーションフィールド及びコントロールフィールド等を含むものであり、アービトレーションフィールドに上述のＣＡＮ−ＩＤが設定される。データフィールドは、例えばＥＣＵ３に対する制御指示又はセンサ検知結果等のように、ＥＣＵ３間で授受すべき情報の本体が格納される。ＣＲＣフィールド、ＡＣＫフィールド及びＥＯＦは、従来のＣＡＮプロトコルにて用いられるものと同じであるため詳細な説明は省略する。ＣＲＣフィールドは、誤り検出を行うための情報を格納する。ＡＣＫフィールドは、このフレームを受信するＥＣＵ３による受信応答のためのフィールドである。ＥＯＦは、フィールドの終了を示す特定のビット列である。
【００７２】
監視装置５の破棄処理部６４は、送信可否判定部６３が送信を許可しないと判定したメッセージについて、このメッセージのＥＯＦの出力期間中に、ＣＡＮバスに対してエラーフレームを送信する。このエラーフレームにより、ＣＡＮバスに接続された全てのＥＣＵ３は、受信中の不正なメッセージを破棄することができる。
【００７３】
この方法でメッセージの破棄を行うために、監視装置５の送信可否判定部６３はメッセージのＥＯＦがＣＡＮバスに出力される前に判定を終える必要がある。送信可否判定部６３は、例えばＣＡＮバス上へのメッセージのＣＡＮヘッダ出力が終了した時点で上述の判定処理を開始し、ＥＯＦの出力前に判定を終える。なおＣＡＮプロトコルのメッセージは、そのメッセージ長が規定されているため、送信可否判定部６３は、メッセージの送信終了前であっても送信終了時点を算出することが可能である。
【００７４】
なお監視装置５は、送信可否判定部６３が不正なメッセージであると判定したＣＡＮ−ＩＤを記憶しておき、これ以後にＣＡＮバスに対して同じＣＡＮ−ＩＤのメッセージが出力された場合には、送信可否判定部６３による判定を行うことなく、破棄処理部６４によってこのメッセージを破棄させる構成としてもよい。また監視装置５によるメッセージ破棄の処理は上述の方法によるものに限らず、その他の種々の方法で行ってよい。また監視装置５は、送信可否判定部６３が不正なメッセージであると判定した場合に、ＥＣＵ３に対する警告メッセージの送信、車両１のユーザに対する報知、外部のサーバ装置に対する情報送信、又は、通信システム若しくは該当する通信ネットワークのシャットダウン等の破棄以外の処理を行う構成としてもよい。
【００７５】
＜基準時点決定処理＞
本実施の形態に係る通信システムでは、ＥＣＵ３によるメッセージ送信及び監視装置５によるメッセージ送信の監視を開始する前に、基準時点ｔ０を決定する処理を行う必要がある。図１３は、ＥＣＵ３及び監視装置５の間で行われる基準時点決定処理を説明するための模式図である。本実施の形態に係る通信システムの監視装置５は、電源投入などにより起動した後、処理部５１の基準時点決定部６１による基準時点決定処理を開始する。
【００７６】
基準時点決定処理において監視装置５の基準時点決定部６１は、まずハッシュ値算出に用いられる情報の生成を行う。本実施の形態において基準時点決定部６１は、ランダムシード及び領域指定情報を生成する。基準時点決定部６１は、所定のアルゴリズムにより乱数を発生させて得られた所定ビット長のデータをランダムシードとする。領域指定情報は、ハッシュ値算出の対象とするＲＯＭ３２の領域を指定する情報であり、例えば開始アドレス及び終了アドレス、又は、開始アドレス及びデータサイズ等の情報である。基準時点決定部６１は、例えば乱数に基づいて開始アドレスを決定し、この開始アドレスに所定数を加算したものを終了アドレスとすることができる。
【００７７】
監視装置５の基準時点決定部６１は、生成したランダムシード及び領域指定情報を、ハッシュ値の算出要求と共に、ＥＣＵ３へ送信する。また基準時点決定部６１は、記憶部５２の複写データ５２ａから処理対象のＥＣＵ３の記憶内容を読み出し、読み出した記憶内容と、生成したランダムシード及び領域指定情報とを用いて、ハッシュ値を算出する。基準時点決定部６１は、複写された記憶内容から領域指定情報にて指定された箇所を抽出し、抽出した記憶内容とランダムシードとを予め定められたハッシュ関数へ入力することにより、ハッシュ値を算出する。本実施の形態において基準時点決定部６１は、ＳＨＡ−１のハッシュ関数を用いて１６０ビットのハッシュ値を算出するものとする。
【００７８】
監視装置５からのランダムシード及び領域指定情報を受信したＥＣＵ３は、自らのＲＯＭ３２の記憶内容と、受信したランダムシード及び領域指定情報とを用いて、処理部３１のハッシュ値算出部４２にてハッシュ値を算出する。ハッシュ値算出部４２は、ＲＯＭ３２から領域指定情報にて指定された箇所を抽出し、抽出した記憶内容とランダムシードとを予め定められたハッシュ関数へ入力することにより、ハッシュ値を算出する。なお、監視装置５が用いるハッシュ関数とＥＣＵ３が用いるハッシュ関数とは同じものであり、監視装置５が複写データ５２ａに記憶している内容とＥＣＵ３がＲＯＭ３２に記憶している内容とは同じであるため、監視装置５及びＥＣＵ３は同じハッシュ値を算出するはずである。なお両ハッシュ値が異なる値となった場合、ＥＣＵ３のＲＯＭ３２の記憶内容が改ざんされている可能性がある。
【００７９】
ここで、監視装置５及びＥＣＵ３によるハッシュ値算出の方法を簡単に説明する。監視装置５及びＥＣＵ３は、例えばＭＤ（Message Digest）４、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２、ＥＩＰＥＭＤ−１６０又はＳＨＡ−３等の既存のハッシュ関数を利用してハッシュ値の算出を行う構成とすることができる。これらはいわゆる一方向のハッシュ関数であり、入力された情報に対して一つのハッシュ値を出力する関数である。ハッシュ関数に入力される情報は、本実施の形態においてＥＣＵ３のＲＯＭ３２に記憶されたプログラム３２ａ又はデータ３２ｂの一部又は全部である。ハッシュ関数に入力されるものがプログラム３２ａ若しくはデータ３２ｂのいずれであっても、又は、プログラム３２ａ及びデータ３２ｂの両方であっても、ハッシュ関数は入力されたものを単に２値の情報として扱い、ハッシュ値を算出することができる。監視装置５及びＥＣＵ３は、予め定められたハッシュ関数を記憶しており、このハッシュ関数を用いてハッシュ値の算出を行う。
【００８０】
以下、監視装置５及びＥＣＵ３がＳＨＡ−１のハッシュ関数を用いてハッシュ値を算出する場合について、算出方法を説明する。なおＳＨＡ−１のハッシュ関数の詳細な処理、並びに、監視装置５及びＥＣＵ３が他のハッシュ関数を用いる場合については、これらのハッシュ関数は既存の技術であるため、説明を省略する。
【００８１】
ＳＨＡ−１のハッシュ関数を利用する場合、監視装置５及びＥＣＵ３は、まずパディング処理を行う。パディング処理において監視装置５及びＥＣＵ３は、入力情報の後に余分なデータを付け加えることによって、処理対象の情報のサイズを所定値（５１２ビット）の整数倍となるように調整する。次いで監視装置５及びＥＣＵ３は、パディング処理された情報を５１２ビット毎のブロックに分割し、各ブロックについて８０個の値を算出する第１処理を行う。
【００８２】
次いで監視装置５及びＥＣＵ３は、所定サイズ（１６０ビット）の初期値に対して、第１処理にて算出した値を用いた演算を行い、演算後の１６０ビットの値をハッシュ値とする第２処理を行う。第２処理において、まず監視装置５及びＥＣＵ３は、１６０ビットの初期値に対して、１つのブロックについて算出した８０個の値を用いて８０ステップの演算を行う。この８０ステップの演算により、１６０ビットの初期値に対して、ブロックの情報を混ぜ込むことができ、出力として１６０ビットの値が得られる。監視装置５及びＥＣＵ３は、得られた１６０ビットの値を初期値として、次のブロックについて算出した８０個の値を用いて同様に８０ステップの演算を行う。監視装置５及びＥＣＵ３は、全ブロックについて同様の８０ステップの処理を行い、最終的に得られた１６０ビットの値をハッシュ値とする。
【００８３】
また本実施の形態において監視装置５及びＥＣＵ３は、監視装置５が生成したランダムシードを利用してハッシュ値の算出を行う必要がある。例えば監視装置５及びＥＣＵ３は、上記のパディング処理において、入力情報に付加するデータにランダムシードを用いることができる。また例えば監視装置５及びＥＣＵ３は、上記の第２処理において、１６０ビットの初期値にランダムシードを用いることができる。本実施の形態においては、第２処理の初期値にランダムシードを用いるものとする。
【００８４】
なお監視装置５及びＥＣＵ３によるランダムシードの利用方法は上記のものに限らない。例えば監視装置５及びＥＣＵ３は、ハッシュ値算出の対象とするＲＯＭ３２の記憶内容とランダムシードとの論理演算値（排他的論理和など）をハッシュ関数への入力情報とすることができる。また例えば監視装置５及びＥＣＵ３は、ハッシュ値算出の対象とするＲＯＭ３２の記憶内容の先頭部分又は末尾部分等の所定位置にランダムシードを付加したものをハッシュ関数への入力情報とすることができる。
【００８５】
監視装置５の基準時点決定部６１は、ランダムシード及び領域指定情報のＥＣＵ３への送信並びにハッシュ値の算出を終えた後、算出したハッシュ値の一部分を抽出する処理を行う。本実施の形態において基準時点決定部６１は、算出した１６０ビットのハッシュ値から、６４ビットの値を抽出して確認用情報とする。基準時点決定部６１は、抽出した確認用情報を含むハッシュ確認要求を、処理対象のＥＣＵ３へ送信する。
【００８６】
監視装置５からハッシュ確認要求を受信したＥＣＵ３は、受信したハッシュ確認要求に含まれる確認用情報を取得する。ＥＣＵ３の処理部３１は、監視装置５から取得した確認用情報と、自らがハッシュ値算出部４２にて算出したハッシュ値とを比較する。処理部３１は、ハッシュ値算出部４２が算出したハッシュ値に、監視装置５から確認用情報として取得したハッシュ値の一部が含まれるか否かを判定する。自らのハッシュ値に確認用情報のハッシュ値が含まれないと判定した場合、ＥＣＵ３が算出したハッシュ値と監視装置５が算出したハッシュ値が一致しないと考えられるため、処理部３１は処理を中断し、監視装置５へエラー通知などを行う。
【００８７】
自らのハッシュ値に確認用情報のハッシュ値が含まれると判定した場合、ＥＣＵ３が算出したハッシュ値と監視装置５が算出したハッシュ値とが同じ値であるとみなし、処理部３１は、監視装置５へハッシュ確認要求に対する応答（ハッシュ確認応答）を送信する処理を行う。このときに処理部３１は、ハッシュ値算出部４２が算出した１６０ビットのハッシュ値において監視装置５からの確認用情報に続く６４ビットの情報を、応答情報として抽出する。処理部３１は、抽出した６４ビットの応答情報をハッシュ確認応答に含めて監視装置５へ送信する。なおハッシュ値から確認用情報及び応答情報を抽出する方法は、これに限らない。例えば確認用情報及び応答情報の一部が重複していてもよい。
【００８８】
ＥＣＵ３からハッシュ確認応答を受信した監視装置５の基準時点決定部６１は、受信したハッシュ確認応答に含まれる応答情報を取得する。基準時点決定部６１は、ＥＣＵ３から取得した応答情報と、自らが算出したハッシュ値とを比較する。基準時点決定部６１は、自らが算出したハッシュ値から確認用情報を除いた部分に、ＥＣＵ３からの応答情報として取得したハッシュ値の一部が含まれるか否かを判定する。自らのハッシュ値に応答情報のハッシュ値が含まれないと判定した場合、監視装置５が算出したハッシュ値とＥＣＵ３が算出したハッシュ値とが一致しないと考えられるため、基準時点決定部６１は処理を中断し、ＥＣＵ３へエラー通知などを行う。
【００８９】
自らのハッシュ値に応答情報のハッシュ値が含まれると判定した場合、基準時点決定部６１は、監視装置５が算出したハッシュ値とＥＣＵ３が算出したハッシュ値とが同じ値であるとみなす。このときに基準時点決定部６１は、ＥＣＵ３へハッシュ値の判定に成功した旨を通知してもよい。基準時点決定部６１は、ＥＣＵ３から正当なハッシュ確認応答の受信を完了した時点を、基準時点ｔ０と決定する。基準時点ｔ０を決定した後、監視装置５は、上述のように送信予定時点及び許可期間を決定してメッセージ送信の監視を開始する。
【００９０】
同様に、ＥＣＵ３の処理部３１は、監視装置５に対するハッシュ確認応答の送信を完了した時点を、基準時点ｔ０とする。ＥＣＵ３のメッセージ処理部４１は、この基準時点ｔ０に対して周期Ｔでメッセージの送信を行う。
【００９１】
なお本実施の形態に係る通信システムにおいてはＣＡＮバスに複数のＥＣＵ３が接続されており、監視装置５は複数のＥＣＵ３との間で基準時点決定処理をそれぞれ行う必要がある。図１４は、監視装置５による複数のＥＣＵ３との基準時点決定処理を説明するための模式図である。本例においては、監視装置５が３つのＥＣＵ３との間で基準時点決定処理を行うものとするが、監視装置５が２つ以下のＥＣＵ３又は４つ以上のＥＣＵ３と基準時点決定処理を行う場合も同様である。
【００９２】
監視装置５は、ランダムシード及び領域指定情報を含むハッシュ値算出要求を各ＥＣＵ３へ順次送信する。このときに各ハッシュ値算出要求に含めるランダムシード及び領域指定情報は、共通の値を用いてもよく、ＥＣＵ３毎に異なる値を設定してもよい。監視装置５からハッシュ値算出要求を受信した各ＥＣＵ３は、自らのＲＯＭ３２の記憶内容に基づいてそれぞれハッシュ値の算出を行う。また監視装置５は、記憶部５２の複写データ５２ａから各ＥＣＵ３の記憶内容を読み出し、各ＥＣＵ３についてハッシュ値の算出を行う。
【００９３】
各ＥＣＵ３のハッシュ値の算出を終えた監視装置５は、いずれか１つのＥＣＵ３に対してハッシュ値確認要求を送信し、このＥＣＵ３からハッシュ値確認応答を受信する。監視装置５は、受信したハッシュ値確認応答に含まれるハッシュ値が正しいものであるか否かを判定し、ハッシュ値が正しいものであればハッシュ値確認応答の受信を完了した時点をこのＥＣＵ３との基準時点ｔ０と決定する。
【００９４】
次いで監視装置５は、別の１つのＥＣＵ３についてハッシュ値確認要求の送信、ハッシュ値確認応答の受信及び基準時点の決定を行う。このように監視装置５は、ハッシュ値確認要求の送信、ハッシュ値確認応答の受信及び基準時点の決定を、通信システムに含まれる各ＥＣＵ３に対して順次的に繰り返し行う。全てのＥＣＵ３について基準時点が決定した後、監視装置５はメッセージ送信の監視を開始し、各ＥＣＵ３はメッセージの送受信を開始する。なお監視装置５による監視及びＥＣＵ３によるメッセージ送信は、基準時点が決定したものから順次的に開始してもよい。
【００９５】
図１５は、監視装置５による基準時点決定処理の手順を示すフローチャートである。監視装置５の基準時点決定部６１は、ハッシュ値算出に用いられるランダムシードと、ハッシュ値算出の対象とするＥＣＵ３のＲＯＭ３２の記憶領域を指定する領域指定情報とを生成する（ステップＳ２１）。基準時点決定部６１は、生成したランダムシード及び領域指定情報を含むハッシュ値算出要求を、ＣＡＮ通信部５３にて処理対象のＥＣＵ３へ送信する（ステップＳ２２）。
【００９６】
基準時点決定部６１は、記憶部５２から処理対象のＥＣＵ３の記憶内容の複写データ５２ａを取得し、取得した複写データ５２ａとステップＳ２１にて生成したランダムシード及び領域指定情報とを基に、所定のハッシュ関数を用いてハッシュ値を算出する（ステップＳ２３）。基準時点決定部６１は、ステップＳ２３にて算出したハッシュ値から一部分を確認用情報として抽出する（ステップＳ２４）。基準時点決定部６１は、抽出した確認用情報を含むハッシュ値確認要求を、ＣＡＮ通信部５３にて処理対象のＥＣＵ３へ送信する（ステップＳ２５）。
【００９７】
次いで基準時点決定部６１は、ハッシュ値確認要求に対してＥＣＵ３が送信するハッシュ値確認応答をＣＡＮ通信部５３にて受信したか否かを判定する（ステップＳ２６）。ハッシュ値確認応答を受信していない場合（Ｓ２６：ＮＯ）、基準時点決定部６１は、処理対象のＥＣＵ３からエラー通知を受信したか否かを判定する（ステップＳ２７）。エラー通知を受信していない場合（Ｓ２７：ＮＯ）、基準時点決定部６１はステップＳ２６へ処理を戻し、ハッシュ値確認応答又はエラー通知をＥＣＵ３から受信するまで待機する。
【００９８】
処理対象のＥＣＵ３からハッシュ値確認応答を受信した場合（Ｓ２６：ＹＥＳ）、基準時点決定部６１は、受信したハッシュ値確認応答に含まれる応答情報が、ステップＳ２３にて算出したハッシュ値に含まれるか否かに応じて、応答情報の成否を判定する（ステップＳ２８）。ＥＣＵ３からエラー通知を受信した場合（Ｓ２７：ＹＥＳ）、又は、ＥＣＵ３から受信した応答情報が正しいものでない場合（Ｓ２８：ＮＯ）、基準時点決定部６１は、対象のＥＣＵ３のＲＯＭ３２の記憶内容が改変された可能性があると判断し、例えばこのＥＣＵ３の動作を停止させるなどの適宜のエラー処理を行って（ステップＳ２９）、処理を終了する。
【００９９】
ＥＣＵ３から受信した応答情報が正しい場合（Ｓ２８：ＹＥＳ）、基準時点決定部６１は、ＥＣＵ３からハッシュ値確認応答の受信を完了した時点を基準時点と決定し（ステップＳ３０）、処理を終了する。
【０１００】
図１６は、監視装置５からのハッシュ値算出要求に応じてＥＣＵ３が行う処理の手順を示すフローチャートである。ＥＣＵ３の処理部３１は、ＣＡＮ通信部３４にて監視装置５からハッシュ値算出要求を受信したか否かを判定する（ステップＳ３１）。ハッシュ値算出要求を受信していない場合（Ｓ３１：ＮＯ）、処理部３１は、ハッシュ値算出要求を受信するまで待機する。ハッシュ値算出要求を受信した場合（Ｓ３１：ＹＥＳ）、処理部３１は、受信したハッシュ値算出要求に含まれるランダムシード及び領域指定情報を取得する（ステップＳ３２）。処理部３１のハッシュ値算出部４２は、ＲＯＭ３２の記憶内容と、ステップＳ３２にて取得したランダムシード及び領域指定情報とに基づいて、所定のハッシュ関数を用いてハッシュ値を算出する（ステップＳ３３）。処理部３１は、算出したハッシュ値を記憶部３３に記憶し（ステップＳ３４）、処理を終了する。
【０１０１】
図１７は、監視装置５からのハッシュ値確認要求に応じてＥＣＵ３が行う処理の手順を示すフローチャートである。ＥＣＵ３の処理部３１は、ＣＡＮ通信部３４にて監視装置５からハッシュ値確認要求を受信したか否かを判定する（ステップＳ４１）。ハッシュ値確認要求を受信していない場合（Ｓ４１：ＮＯ）、処理部３１は、ハッシュ値確認要求を受信するまで待機する。ハッシュ値確認要求を受信した場合（Ｓ４１：ＹＥＳ）、処理部３１は、記憶部３３に記憶したハッシュ値を読み出す（ステップＳ４２）。処理部３１は、ステップＳ４１にて受信したハッシュ値確認要求に含まれる確認用情報が、ステップＳ４２にて読み出したハッシュ値に含まれるか否かに応じて、確認用情報の成否を判定する（ステップＳ４３）。確認用情報が正しいものでない場合（Ｓ４３：ＮＯ）、処理部３１は、エラー通知を監視装置５へ送信し（ステップＳ４４）、処理を終了する。
【０１０２】
監視装置５からの確認用情報が正しい場合（Ｓ４３：ＹＥＳ）、処理部３１は、ステップＳ４２にて読み出したハッシュ値から確認用情報に続く所定長の部分を応答情報として抽出する（ステップＳ４５）。処理部３１は、抽出した応答情報を含むハッシュ値確認応答をＣＡＮ通信部３４にて監視装置５へ送信する（ステップＳ４６）。処理部３１は、ハッシュ値確認応答の送信を完了した時点を基準時点と決定し（ステップＳ４７）、処理を終了する。
【０１０３】
なお本実施の形態に係る通信システムにおいては、監視装置５及びＥＣＵ３の起動時に基準時点の決定処理を行う構成としたが、処理を行うタイミングはこれに限らない。また何らかの要因によりＥＣＵ３がメッセージを送信するタイミングにズレなどが生じた場合又はメッセージ送信の周期を変更した場合等に、監視装置５及びＥＣＵ３の間で基準時点を再決定する処理を行ってもよい。
【０１０４】
基準時点を再決定する場合、上述のような最初の基準時点決定処理と同様の処理を行ってもよい。即ち監視装置５がハッシュ値算出要求及びハッシュ値確認要求を送信し、これに応じてＥＣＵ３がハッシュ値確認応答を送信して基準時点を再決定してもよい。なお場合には、ＥＣＵ３から監視装置５に対して基準時点を再決定する処理を行う要求を送信し、これに応じて監視装置５が基準時点決定処理を開始する構成としてよい。
【０１０５】
又は、基準時点決定処理を行った際のハッシュ値を記憶しておき、ＥＣＵ３がこのハッシュ値を含む基準時点の再決定要求を監視装置５へ送信してもよい。この再決定要求を受信した監視装置５は、再決定要求に含まれるハッシュ値が正しいものである場合に、再決定要求の受信を完了した時点を新たな基準時点とする。ＥＣＵ３は、再決定要求の送信を完了した時点を新たな基準時点とすればよい。
【０１０６】
＜まとめ＞
以上の構成の本実施の形態に係る通信システムは、ＣＡＮバスに複数のＥＣＵ３が接続され、各ＥＣＵ３が周期的にメッセージ送信を行う構成の通信システムに対して、不正なメッセージ送信を検出する監視装置５を設けた構成である。監視装置５は、ＥＣＵ３による周期的なメッセージ送信の基準時点ｔ０を決定し、基準時点ｔ０に対してメッセージの送信周期Ｔの整数倍の期間を加えた複数の送信予定時点ｔ１＝ｔ０＋Ｔ，ｔ２＝ｔ０＋２Ｔ，…を決定し、各送信予定時点に対してこの時点を含む所定期間ｔ１−Ａ〜ｔ１＋Ｂ，ｔ２−Ａ〜ｔ２＋Ｂ，…をメッセージ送信の許可期間と決定する。
【０１０７】
また監視装置５は、ＣＡＮバスを監視することによって、ＥＣＵ３が送信したメッセージを検出する。監視装置５は、検出されたメッセージが許可期間内に送信されたものであるか否かを判定することによって、このメッセージが不正なものであるか否かを判定することができ、このメッセージの送信を許可するか否かを判定することができる。
【０１０８】
このようの本実施の形態に係る監視装置５は、最初の段階で決定した基準時点ｔ０に基づいて、以降のメッセージ送信の許可期間を決定する構成、即ち絶対的な基準で許可期間を決定する構成である。これに対して例えばメッセージ受信毎に、このメッセージの受信時点に周期Ｔを加えた時点を送信予定時点として許可期間を決定する構成、即ち相対的な基準で許可期間を決定する構成を採用することが考えられる。しかし、ＣＡＮの通信プロトコルではメッセージ送信の衝突が発生した場合にはアービトレーション処理が行われ、優先度の低いメッセージの送信に遅延が発生する。相対的な決定を行う構成では、メッセージ送信に遅延が発生した場合に、判定のための許可期間が変動するため、許可期間をある程度広く設定する必要があり、許可期間を狭めることが容易でない。許可期間が広いほど不正なメッセージを正当であると誤判定する可能性が高まる。また相対的な決定を行う構成では、不正なメッセージの受信を基準として次のメッセージの許可期間が決定される虞がある。このような事態が発生した場合、不正なメッセージが連続的に正当なメッセージであると誤判定される可能性がある。本実施の形態に係る監視装置５は、絶対的な基準で許可期間を決定することによって、これらの問題が発生することを回避できる。
【０１０９】
また監視装置５は、通信システムに含まれる各ＥＣＵ３について、基準時点ｔ０をそれぞれ個別に決定する。監視装置５は、決定したそれぞれの基準時点ｔ０に対して送信予定時点ｔｎ及び許可期間をＥＣＵ３毎に決定する。これにより、通信システムにメッセージの送信周期Ｔ及び送信タイミング等が異なるＥＣＵ３が含まれていても、監視装置５はＥＣＵ３毎にメッセージ送信の可否を判定することができる。
【０１１０】
またＥＣＵ３は送信周期が異なる複数種別のメッセージ送信を行うことが可能であり、監視装置５はメッセージのＣＡＮ−ＩＤ毎に許可期間を決定する。これにより送信周期が異なるメッセージを１つのＥＣＵ３が送信する場合であっても、監視装置５は、メッセージの種別毎に送信の可否を判定することができる。なお本実施の形態においては基準時点ｔ０をＥＣＵ３毎に決定したが、これに限るものではなく、基準時点ｔ０をＣＡＮ−ＩＤ毎に決定してもよい。この場合、監視装置５は、１つのＥＣＵ３に対して複数回（即ち、このＥＣＵ３に割り当てられたＣＡＮ−ＩＤの数）の基準時点決定処理を行えばよい。
【０１１１】
またＣＡＮの通信プロトコルにおいてはメッセージの送信が衝突した場合に、アービトレーション処理によってメッセージ送信が遅延する可能性がある。そこで監視装置５は、判定対象のメッセージについて送信予定時点ｔｎからこのメッセージの送信完了までの間に、他のメッセージが送信されたか否かを調べる。他のメッセージが送信されていた場合、監視装置５は、判定対象のメッセージの優先度と他のメッセージの優先度とを比較する。他のメッセージの優先度が判定対象のメッセージの優先度より高い場合、判定対象のメッセージはアービトレーション処理によって送信に遅延が発生したと考えられるため、監視装置５は、判定対象のメッセージの送信を許可する。これに対して、他のメッセージの優先度が判定対象のメッセージの優先度より低い場合（ただし、許可期間開始以前に送信されたメッセージを除く）、判定対象のメッセージの遅れが正当なアービトレーション処理によるものではないと考えられるため、監視装置５は、判定対象のメッセージの送信を許可しない。これにより、アービトレーション処理によってメッセージ送信に遅延が発生する通信システムであっても、監視装置５は、メッセージ送信の可否を判定することができる。
【０１１２】
また監視装置５は、判定対象のメッセージの送信予定時点ｔｎからこのメッセージの送信が完了するまでの間に、所定長を超えるメッセージ無送信期間が存在するか否かを判定する。メッセージ無送信期間が存在する場合、判定対象のメッセージの遅延は正当なアービトレーション処理によって発生したものではないと考えられるため、監視装置５は、判定対象のメッセージの送信を許可しない。
【０１１３】
また本実施の形態に係る通信システムにおいては、基準時点ｔ０を決定するために、監視装置５とＥＣＵ３との間で所定の手続を行う。監視装置５は、ＥＣＵ３に対してハッシュ値算出要求を送信する。このときに監視装置５は、ハッシュ値算出に必要なランダムシード及び領域指定情報をＥＣＵ３へ与える。監視装置５からハッシュ値算出要求を受信したＥＣＵ３は、ハッシュ値算出要求に含まれるランダムシード及び領域指定情報と、ＲＯＭ３２に記憶されたデータとに基づいて、所定のハッシュ関数を用いたハッシュ値の算出を行う。ＥＣＵ３は、監視装置５からのハッシュ値確認要求に応じて、算出したハッシュ値を含むハッシュ値確認応答を監視装置５へ送信する。ＥＣＵ３からハッシュ値確認応答を受信した監視装置５は、ハッシュ値確認応答に含まれるハッシュ値が正しいものであるか否かを判定する。ハッシュ値が正しいものである場合、監視装置５は、ハッシュ値確認応答の受信を完了した時点に基づいて基準時点ｔ０を決定する。例えば監視装置５は、ハッシュ値確認等々の受信完了時点を基準時点ｔ０とする。ただし基準時点ｔ０はこれに限るものではなく、例えばハッシュ値確認応答の送信開始時点を基準時点ｔ０としてもよく、また例えばハッシュ値確認応答の受信完了時点に対して所定期間を増減した時点を基準時点ｔ０としてもよい。この場合にＥＣＵ３は、正しいハッシュ値を含むハッシュ確認応答の送信完了時点に基づいて基準時点ｔ０を決定し、決定した時点を基準に周期Ｔでのメッセージ送信を行う。ハッシュ値に基づく信頼性の高い情報送受信に基づいて基準時点ｔ０を決定することができるため、監視装置５は、信頼性の高い不正メッセージ検出処理を行うことができる。
【０１１４】
また監視装置５は、不正なメッセージに対して送信を許可しないと判定した場合、このメッセージを受信するＥＣＵ３に対してメッセージを破棄させるための処理を行う。例えば監視装置５は、不正なメッセージのＥＯＦの出力期間中に、ＣＡＮバスに対してエラーフレームを送信することによって、ＥＣＵ３にこのメッセージを破棄させることができる。これにより、不正なメッセージをＥＣＵ３が受信し、このメッセージに応じた処理がＥＣＵ３にて行われることを防止できる。
【０１１５】
なお本実施の形態においては、基準時点の決定処理、許可期間の決定処理、送信可否の判定処理及び不正メッセージの破棄処理等を監視装置５の処理部５１（いわゆるＣＰＵなど）が行う構成としたが、これに限るものではなく、これらの処理をＣＡＮ通信部５３（いわゆるＣＡＮコントローラなど）が行う構成としてもよい。同様に、ＥＣＵ３のハッシュ値算出処理など基準時点の決定処理は、処理部３１が行うのではなく、ＣＡＮ通信部３４が行う構成としてもよい。
【０１１６】
また、監視装置５及びＥＣＵ３の間でハッシュ値を利用した情報交換を行って基準時点ｔ０を決定する構成としたが、基準時点ｔ０の決定はハッシュ値を利用しない方法で行ってもよい。例えば公開鍵又は秘密鍵等を利用して暗号化された情報を監視装置５及びＥＣＵ３の間で送受信し、この送受信結果に基づいて基準時点ｔ０を決定してもよい。監視装置５及びＥＣＵ３が信頼性の高い通信を行い、この通信結果に基づいて基準時点ｔ０を決定すればよい。また、監視装置５及びＥＣＵ３が時刻同期機能を有する場合には、この機能により同期された時刻を用いて基準時点ｔ０を決定してもよい。
【０１１７】
また監視装置５は、ＥＣＵ３のＲＯＭ３２の記憶内容を複写した複写データ５２ａを記憶部５２に記憶する構成としたが、これに限るものではない。例えば複写データ５２ａは別のサーバ装置などが記憶し、監視装置５が必要に応じてサーバ装置から複写データ５２ａを取得してもよく、更にはサーバ装置にハッシュ値算出機能を設けて監視装置５がサーバ装置から必要なハッシュ値を取得する構成としてもよい。また本実施の形態においては、車両１に搭載された通信システムを例に説明を行ったが、通信システムは車両１に搭載されるものに限らず、例えば飛行機又は船舶等の移動体に搭載されるものであってよく、また例えば移動体ではなく工場、オフィス又は学校等に設置されるものであってもよい。
【０１１８】
（変形例）
上述の実施の形態における監視装置５は、送信予定時点からメッセージ送信までの間にメッセージ無送信期間が存在しない場合、又は、メッセージ無送信期間が存在しても所定長より短い場合に、判定対象のメッセージが正当なメッセージであると送信可否判定部６３が判定し、送信を許可する構成であった。変形例に係る監視装置５は、上述の監視装置５の構成に、送信可否判定部６３の判定条件を追加した構成である。
【０１１９】
例えば、対象となる２つ以上のメッセージが送信許可期間内に到着する場合、いずれのメッセージが正当なメッセージであるかをこの時点で判定することはできない。しかしながら、このような状況が頻繁に発生する場合には、いずれかのメッセージが不正なものである可能性がある。
【０１２０】
そこで変形例に係る監視装置５の送信可否判定部６３は、送信許可期間内に２つ以上の対象メッセージが到着したと判定した場合、これら複数のメッセージの全てについて、以降のメッセージ送信を許可しない。これにより変形例に係る監視装置５は、不正である可能性のあるメッセージの送信を禁止することができる。
【０１２１】
なお変形例に係る監視装置５は、例えば送信許可期間内に２つ以上の対象メッセージが到着した回数をカウントし、この回数が所定回数を超えた場合にメッセージの送信を禁止する構成としてもよい。
【符号の説明】
【０１２２】
１  車両
３  ＥＣＵ（通信装置）
５  監視装置（通信制御装置）
３１  処理部（ハッシュ値送信部）
３２  ＲＯＭ
３２ａ  プログラム
３２ｂ  データ
３３  ＲＡＭ
３４  ＣＡＮ通信部（調停手段）
４１  メッセージ処理部（メッセージ送信部）
４２  ハッシュ値算出部
５１  処理部
５２  記憶部
５２ａ  複写データ
５２ｂ  周期情報
５３  ＣＡＮ通信部（メッセージ検出部）
６１  基準時点決定部（ハッシュ値要求部、ハッシュ値受信部、ハッシュ値判定部）
６２  許可期間決定部
６３  送信可否判定部
６４  破棄処理部
【図１】
2016080422.tif 000003
【図２】
2016080422.tif 000004
【図３】
2016080422.tif 000005
【図４】
2016080422.tif 000006
【図５】
2016080422.tif 000007
【図６】
2016080422.tif 000008
【図７】
2016080422.tif 000009
【図８】
2016080422.tif 000010
【図９】
2016080422.tif 000011
【図１０】
2016080422.tif 000012
【図１１】
2016080422.tif 000013
【図１２】
2016080422.tif 000014
【図１３】
2016080422.tif 000015
【図１４】
2016080422.tif 000016
【図１５】
2016080422.tif 000017
【図１６】
2016080422.tif 000018
【図１７】
2016080422.tif 000019
【国際調査報告】
2016080422.tif 000020
2016080422.tif 000021