(本発明の基礎となった知見)
ところで、不正なフレームによる脅威に対処する監視を過度に行うことで、監視装置を含む車載ネットワークシステムの消費電力が過度に増大することは好ましくない。
そこで、本開示は、車載ネットワークシステムのセキュリティを確保した上で、消費電力の増大を防止すべく、不正なフレームの送信を検知する不正検知処理を効率的に実行し得るECUである不正検知電子制御ユニット(不正検知ECU)を提供する。また、本開示は、その効率的に不正検知処理を行う不正検知ECUを備える車載ネットワークシステム、及び、その車載ネットワークシステムにおいて効率的に不正なフレームを検知するために用いられる不正検知方法を提供する。
本開示の一態様に係る不正検知電子制御ユニットは、CAN(Controller Area Network)プロトコルに従って通信を行う複数の電子制御ユニットが通信に用いるバスに接続されて不正検知処理を行う不正検知電子制御ユニットであって、前記バスから得たデータフレームのIDに基づいて不正検知処理タイミングを決定する不正検知処理要求部と、前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて前記不正検知処理を行う不正検知処理部とを備える不正検知電子制御ユニットである。これにより、データフレームのIDに基づくタイミングで不正検知処理を行うため、不正なフレームの効率的な検知が実現され得る。
また、前記不正検知電子制御ユニットは、プログラムを実行するマイクロプロセッサを含む半導体集積回路であるマイコン部と、前記マイコン部に接続され、前記不正検知処理要求部としての機能を実現する半導体集積回路であるコントローラ部とを備え、前記マイクロプロセッサは、前記プログラムの実行により割り込み要求信号に対応して前記不正検知処理を行うことで、前記不正検知処理部としての機能を実現し、前記不正検知処理要求部は、決定した前記不正検知処理タイミングで前記マイクロプロセッサへと前記割り込み要求信号を送出することとしても良い。これにより、不正検知処理タイミングが到来したら割り込み要求信号によりマイコン部のプロセッサに通知されるため、プロセッサは割り込み要求信号が入力されるまでは、不正検知処理を実行せず、例えば低消費電力状態(スリープ状態)等になり得る。従って、比較的消費電力を抑えてセキュリティの確保を実現し得る。
また、前記不正検知電子制御ユニットは、1つ以上のIDそれぞれについてタイミングを対応付けた対応情報を保持する不正検知処理タイミング保持部を備え、前記不正検知処理要求部は、前記バスから得たデータフレームの前記IDと前記対応情報において対応付けたタイミングを前記不正検知処理タイミングとして前記決定を行うこととしても良い。これにより、セキュリティ上、重要なデータフレームのIDと重要性の低いデータフレームのIDとで異なる不正検知処理タイミングを対応情報に定めておくことができ、重要性に応じて効率的に不正なフレームを検知できるようになる。
また、前記対応情報は、1つ以上の前記IDそれぞれについてデータフレーム中の1つ又は複数の特定フィールドの受信タイミングを前記タイミングとして対応付けており、前記不正検知電子制御ユニットは、前記不正検知処理部が前記特定フィールドの受信タイミングで行う前記不正検知処理において不正を検知した場合に、前記バスにエラーフレームを送出することとしても良い。また、前記1つ又は複数の特定フィールドのうちの1つは、IDフィールド、DLC(Data Length Code)のフィールド及びデータフィールドのうちのいずれかであることとしても良い。これらにより、例えば、セキュリティ上、重要なデータフレームのIDについては、特定フィールド(例えばIDフィールド、DLCのフィールド、データフィールド等)の受信タイミングで不正検知処理を行って不正が検知されるとエラーフレームの送出により、不正なフレームに対応したECUの制御等を阻止することが可能となる。
また、前記不正検知電子制御ユニットは、前記対応情報に係る前記複数のIDそれぞれについて、当該IDを含むデータフレームについて既に行われた前記不正検知処理での不正の検知回数を示すように更新される不正状態情報を保持する不正状態保持部を備え、前記不正検知処理タイミング保持部は、前記対応情報を、前記複数のIDそれぞれについて、前記不正状態情報における当該IDに係る前記不正の検知回数が多い程、多くの前記特定フィールドの受信タイミングを対応付けるように更新することとしても良い。これにより、不正の検知回数が多くなった場合に監視頻度を高めるので、例えば不正への対応を迅速化することが可能となる。
また、前記不正検知処理要求部は、既に行われた前記不正検知処理での不正の検知結果に応じて前記不正検知処理タイミングの前記決定を行うこととしても良い。これにより、不正の検知回数等を不正検知処理タイミングに反映させ得るので、例えば一定数以上の不正があった場合にのみ監視頻度を高める等といった、効率的な監視(つまり不正検知処理の実行)が可能となる。
また、前記不正検知処理要求部は、前記バスを搭載する車両の状態に応じて前記不正検知処理タイミングの前記決定を行うこととしても良い。これにより、車両の状態との関係で特定のIDを含むデータフレームのセキュリティ上の重要性が変化するような場合において、不正なフレームの効率的な検知が実現され得る。
また、前記不正検知処理要求部は、前記データフレームのIDが第1値であれば前記データフレームの受信中のタイミングを前記不正検知処理タイミングとして前記決定を行い、前記データフレームのIDが前記第1値と異なる第2値であれば前記データフレームの受信完了以後のタイミングを前記不正検知処理タイミングとして前記決定を行い、前記不正検知電子制御ユニットは、前記不正検知処理部が前記データフレームの受信中のタイミングで行う前記不正検知処理において不正を検知した場合に、前記バスにエラーフレームを送出することとしても良い。これにより、例えば、不正を迅速に検知して阻止すべきか、不正について網羅的な検査を行うべきか等の不正検知の必要性がデータフレームのID毎に異なる場合において、必要性に対応した不正検知処理が実現可能となる。例えば、データフレームの受信中のタイミングを不正検知処理タイミングとして不正検知処理を行えば不正の検知時にエラーフレームの送出により不正なデータフレームを上書きして無効化することが可能となる。また、例えばデータフレームの受信完了時を不正検知処理タイミングとして不正検知処理を行えば、この1度のタイミングでデータフレーム中のIDフィールド、DLC、データフィールド等の各部の内容について検査を行うことが可能となるため、効率的な不正検知が実現できる。
また、前記不正検知電子制御ユニットは、更に、前記プログラムを記憶するメモリを含んでもよい。
また、前記不正検知電子制御ユニットは、更に、前記プログラムを記憶するハードディスク装置を含んでもよい。
また、本開示の一態様に係る車載ネットワークシステムは、CAN(Controller Area Network)プロトコルに従ってバスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、前記バスから得たデータフレームのIDに基づいて不正検知処理タイミングを決定する不正検知処理要求部と、前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う不正検知処理部とを備える車載ネットワークシステムである。これにより、データフレームのIDに基づくタイミングで効率的に消費電力を抑制して不正検知処理を行う車載ネットワークシステムが実現され得る。
また、本開示の一態様に係る不正検知方法は、CAN(Controller Area Network)プロトコルに従ってバスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる不正検知方法であって、前記バスから得たデータフレームのIDに基づいて不正検知処理タイミングを決定し、決定した前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う不正検知方法である。これにより、データフレームのIDに基づくタイミングで効率的に不正検知処理を行うことができる。
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD−ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
以下、実施の形態に係る車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本開示の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本開示を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
(実施の形態1)
以下、本開示の実施の形態として、複数のECUがバスを介して通信する車載ネットワークシステム10において用いられる不正検知方法について、図面を用いて説明する。不正検知方法は、主としてバスに接続された不正検知ECUにより実行される。不正検知ECUは、不正検知処理(バス上に現れたフレームが不正なフレームであるか否かを判別する処理)のための制御プログラムをプロセッサ(マイクロプロセッサ)に実行させるタイミングを、受信中のデータフレームに応じて決定する機能を有し、効率的な不正の検知を実現する。
[1.1 車載ネットワークシステム10の全体構成]
図1は、実施の形態1に係る車載ネットワークシステム10の全体構成を示す図である。車載ネットワークシステム10は、CANプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ等の各種機器が搭載された自動車におけるネットワーク通信システムである。車載ネットワークシステム10は、バスを介してフレームに係る通信を行う複数の装置を備え、不正検知方法を用いる。具体的には図1に示すように車載ネットワークシステム10は、バス300と、不正検知ECU100、各種機器に接続されたECU200a、200b等のECUといったバスに接続された各ノードとを含んで構成される。なお、車載ネットワークシステム10には、不正検知ECU100及びECU200a、200b以外にもいくつものECUが含まれ得るが、ここでは、便宜上不正検知ECU100及びECU200a、200bに注目して説明を行う。ECU(例えば、不正検知ECU100及びECU200a、200bなど)は、例えば、プロセッサ(マイクロプロセッサ)、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行される制御プログラム(コンピュータプログラム)を記憶することができる。
また、ECUは、例えば、図示しないハードディスク装置を含んでもよい。また、ハードディスク装置に制御プログラム(コンピュータプログラム)を記憶してもよい。
例えばプロセッサが、制御プログラム(コンピュータプログラム)に従って動作することにより、ECUを構成する要素の一部又は全部の機能をソフトウェア的に実現することになる。
なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
ECU200a、200bは、バス300と接続され、それぞれセンサ210、アクチュエータ220に接続されている。センサ210の一例としては、加速度センサや、操舵角センサ等が挙げられる。アクチュエータ220の一例としては、ブレーキアクチュエータ等が挙げられる。ECU200aは、センサ210の状態を取得して、取得した情報をデータフレームに含めて、バス300に送出する。ECU200bは、ECU200aからバス300に送出されたデータフレームを受信し、そのデータフレームに含まれるセンサ210の状態に係る情報に従ってアクチュエータ220を制御する。
不正検知ECU100は、バス300に接続される一種のECUであり、バス上に流れるフレーム(つまりバス上に現れるフレーム)を監視して、不正なフレーム(つまり予め定められたルールに適合しないフレーム)が流れているか否かを判別するための不正検知処理を行う機能を有する。
車載ネットワークシステム10においてはCANプロトコルに従って、各ECUがフレームの授受を行う。CANプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがある。ここではデータフレーム及びエラーフレームを中心に説明する。
[1.2 データフレームフォーマット]
以下、CANプロトコルに従ったネットワークで用いられるフレームの1つであるデータフレームについて説明する。
図2は、CANプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、CANプロトコルで規定される標準IDフォーマットにおけるデータフレームを示している。データフレームは、SOF(Start Of Frame)、IDフィールド、RTR(Remote Transmission Request)、IDE(Identifier Extension)、予約ビット「r」、DLC(Data Length Code)、データフィールド、CRC(Cyclic Redundancy Check)シーケンス、CRCデリミタ「DEL」、ACK(Acknowledgement)スロット、ACKデリミタ「DEL」、及び、EOF(End Of Frame)の各フィールドで構成される。
SOFは、1bitのドミナントで構成される。バスがアイドルの状態はレセシブになっており、SOFによりドミナントへ変更することでフレームの送信開始を通知する。
IDフィールドは、11bitで構成される、データの種類を示す値であるIDを格納するフィールドである。複数のノードが同時に送信を開始した場合、このIDフィールドで通信調停を行うために、IDが小さい値を持つフレームが高い優先度となるよう設計されている。
RTRは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいては1bitのドミナントで構成される。
IDEと「r」とは、それぞれ1bitのドミナントで構成される。
DLCは、4bitで構成され、データフィールドの長さを示す値である。ここでは、データフレームにおけるDLCの値を格納する4bitをDLCのフィールドとも称する。
データフィールドは、最大64bitで構成される送信するデータの内容を示す値である。8bit毎に長さを調整できる。送られるデータの仕様については、CANプロトコルで規定されておらず、車載ネットワークシステム10において定められる。従って、車種、製造者(製造メーカ)等に依存した仕様となる。
CRCシーケンス(図2に示す「CRC」)は、15bitで構成される。SOF、IDフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
CRCデリミタ(図2に示す「CRC」と「ACK」の間に位置する「DEL」)は、1bitのレセシブで構成されるCRCシーケンスの終了を表す区切り記号である。なお、CRCシーケンス及びCRCデリミタを合わせてCRCフィールドと称する。
ACKスロット(図2に示す「ACK」)は、1bitで構成される。送信ノードはACKスロットをレセシブにして送信を行う。受信ノードはCRCシーケンスまで正常に受信ができていればACKスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にACKスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
ACKデリミタ(図2に示す「ACK」と「EOF」の間に位置する「DEL」)は、1bitのレセシブで構成されるACKの終了を表す区切り記号である。
EOFは、7bitのレセシブで構成されており、データフレームの終了を示す。
[1.3 エラーフレームフォーマット]
図3は、CANプロトコルで規定されるエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ(プライマリ)と、エラーフラグ(セカンダリ)と、エラーデリミタとから構成される。
エラーフラグ(プライマリ)は、エラーの発生を他のノードに知らせるために使用される。エラーを検知したノードはエラーの発生を他のノードに知らせるために6bitのドミナントを連続で送信する。この送信は、CANプロトコルにおけるビットスタッフィングルール(連続して同じ値を6bit以上送信しない)に違反し、他のノードからのエラーフレーム(セカンダリ)の送信を引き起こす。
エラーフラグ(セカンダリ)は、エラーの発生を他のノードに知らせるために使用される連続した6ビットのドミナントで構成される。エラーフラグ(プライマリ)を受信してビットスタッフィングルール違反を検知した全てのノードがエラーフラグ(セカンダリ)を送信することになる。
エラーデリミタ「DEL」は、8bitの連続したレセシブであり、エラーフレームの終了を示す。
[1.4 不正検知ECU100の構成]
図4は、不正検知ECU100の構成図である。不正検知ECU100は、トランシーバ部130と、コントローラ部140と、マイコン部150とを含んで構成される。
トランシーバ部130は、通信回路等の電子回路である。トランシーバ部130は、コントローラ部140から通知されたフレームをバス300に送信可能な電気信号に変換して送信し、また、バス300に現れる電気信号を受信することで、1bitずつ受信したフレームの内容をコントローラ部140へ通知する。
コントローラ部140は、マイコン部150及びトランシーバ部130と信号の授受を行う、デジタル回路及びメモリ等の記憶媒体を含む半導体集積回路である。コントローラ部140は、プロトコル処理部141と、不正検知処理要求部142と、不正フレーム判断部143と、不正検知処理タイミング保持部144とを有する。
プロトコル処理部141は、トランシーバ部130と通信を行い、プロトコル(CANプロトコル等)に従った処理を行う。プロトコル処理部141は、例えば受信中のフレームについてエラーを検知した場合は、トランシーバ部130にエラーフレームを送信させるべく、エラーフレームの送信(つまり送信要求)をトランシーバ部130に通知する。プロトコル処理部141は、データフレームの受信が完了した場合は、データフレームの受信完了をマイコン部150に通知する。プロトコル処理部141は、マイコン部150からのデータフレーム送信要求に対して、プロトコルに従ってデータフレームを送信できるようにトランシーバ部130に通知する。プロトコル処理部141は、トランシーバ部130から通知されるフレームの内容を、不正検知処理要求部142にも通知する。プロトコル処理部141は、不正フレーム判断部143からエラーフレームの送信(つまり送信要求)を通知された場合には、エラーフレームの送信をトランシーバ部130に通知する。また、プロトコル処理部141は、トランシーバ部130を介して取得した、バス300に現れたデータフレームの内容を一時的に保持して、マイコン部150から不正検知処理に必要なID、DLC、データ等の情報が要求された場合に要求された情報をマイコン部150に与える。更に、プロトコル処理部141は、データフレームの前回受信時と今回受信時との差を算定してその算定結果等である受信タイミングに係るタイミング通知情報が要求された場合にそのタイミング通知情報をマイコン部150に与える。
不正検知処理要求部142は、受信中のデータフレームをプロトコル処理部141から通知され、データフレーム受信中に、不正検知処理タイミング保持部144を参照し、受信中のデータフレーム(具体的にはフレームのID)に応じて不正検知処理タイミングを決定する。そして不正検知処理要求部142は、決定した不正検知処理タイミングが到来した時点でマイコン部150の不正検知処理部154へ、不正検知処理要求信号を通知する。
不正フレーム判断部143は、マイコン部150の不正検知処理部154による不正検知処理における不正の検知結果を取得して、不正を検知した場合には、エラーフレームの送信をプロトコル処理部141に通知する。
不正検知処理タイミング保持部144は、記憶媒体(または記録媒体ともいう)等により、複数のIDそれぞれについてタイミングを対応付けた対応情報(図5参照)を保持する。記憶媒体とは、例えば、不正検知ECU100(例えば、コントローラ部140)に含まれるメモリである。
マイコン部150は、コントローラ部140と信号の授受を行う、プログラムを実行するプロセッサ(マイクロプロセッサ)及びメモリを含む半導体集積回路である。プログラムは、例えば、半導体集積回路のメモリに記憶される。または、不正検知ECU100が図示しないハードディスク装置を含む場合、プログラムは、ハードディスク装置に記憶されてもよい。プロセッサが、このプログラムを実行することにより、マイコン部150が機能する。マイコン部150は、プログラムを実行するプロセッサ、メモリ等により実現される機能的な構成要素として、コントローラ通信部151と、フレーム処理部152と、フレーム生成部153と、不正検知処理部154と、不正検知ルール保持部155とを有する。
コントローラ通信部151は、コントローラ部140から受信したデータフレームを、フレーム処理部152へ通知する。コントローラ通信部151は、フレーム生成部153から通知されたデータフレームを、コントローラ部140へ通知し、データフレーム送信要求を行う。コントローラ通信部151は、不正検知処理部154から不正検知処理に必要な情報の取得要求通知を受け、コントローラ部140から、不正検知処理に必要なID(つまりIDフィールドの内容)と、DLC(DLCのフィールドの内容)と、データ(データフィールドの内容)と、データフレームの受信タイミングに係るタイミング通知情報とを取得する。
フレーム処理部152は、コントローラ通信部151から通知されたデータフレームを、処理する。
フレーム生成部153は、コントローラ通信部151に、データフレームの送信要求を通知する。
不正検知処理部154は、コントローラ部140の不正検知処理要求部142から不正検知処理要求信号を受信すると不正検知処理を行う。例えば、不正検知処理要求信号は、マイコン部150のプロセッサに対する割り込み要求信号として与えられる。プロセッサは、割り込み要求信号による割り込みに対応して、例えばプログラムの実行中であればその実行を中断して、予め定められた特定の割り込み対応処理プログラムを実行することで、不正検知処理部154の主たる機能を実現し、つまり不正検知処理を行う。プロセッサは、例えば特にプログラムの実行の必要がない場合には低消費電力状態(スリープ状態)になり得るが、この場合において割り込み要求信号(不正検知処理要求信号)を受信するとスリープを解除して通常の消費電力状態に戻って、不正検知処理を実行する。不正検知処理は、バス300に送出されたフレームつまりバス300に現れたフレームが不正なフレームであるか否か、つまり予め定められたルールに適合しないフレームであるか否かを判別するための処理である。その判別は、不正検知ルール保持部155が保持する不正検知ルール(図6参照)に基づいて行われる。
不正検知処理の内容は、不正か否かの判別対象となるデータフレームのID毎に予め定められており(例えば不正検知ルールで規定されており)、例えば、対応情報等によりID毎に定められた不正検知処理タイミングと対応して次のようになっている。即ち、不正検知処理部154は、いつ不正検知処理要求信号を通知されて動作するかによって不正検知処理として次に示す検査を行う。不正検知処理部154は、データフレームにおけるID受信時(つまりIDフィールドを受信した時)に不正検知処理要求信号を通知されて動作する場合には、不正検知処理として、受信中のデータフレームのID(IDフィールドの値)が、不正検知ルール保持部155の不正検知ルールにおいて規定されていないIDか否かにより、不正なID(つまり不正なフレーム)か否かを判別する検査を行う。更に、この場合に、不正検知ルール保持部155に格納された不正検知ルールにより周期についてのルールが規定されているときには、前回データフレームを受信してから今回データフレームを受信するまでの時間がルールで規定している周期と合致するか否かにより不正な周期(つまり不正なフレーム)であるか否かを判別する検査を行う。また、不正検知処理部154は、データフレームにおけるDLC受信時(つまりDLCのフィールドを受信した時)に不正検知処理要求信号を通知されて動作する場合には、受信中のデータフレームのDLCのフィールドの値が、不正検知ルールに規定されたDLCと異なるか否かにより、不正なDLC(つまり不正なフレーム)か否かを判別する検査を行う。また、不正検知処理部154は、データフレームにおけるデータ受信時(つまりデータフィールドを受信した時)に不正検知処理要求信号を通知されて動作する場合には、受信中のデータフィールドの値が、不正検知ルールに規定された値と異なるか否かにより、不正なデータ(つまり不正なフレーム)か否かを判別する検査を行う。また、不正検知処理部154は、データフレームの受信完了後に不正検知処理要求信号を通知されて動作する場合には、上述した不正なIDか否か、不正な周期か否か、不正なDLCか否か、及び、不正なデータか否かに係る検査を行い、不正なフレームか否かを判別する。なお、不正検知処理としては、データ値が前回のデータフレームのデータ値から予め定められた変動量よりも大きく変化する場合に不正なフレームと判別するようなデータの一貫性に係る検査を行っても良い。
不正検知処理部154は、不正検知処理を行った後に、不正が検知されたか否かを示す不正検知処理の結果を、コントローラ部140の不正フレーム判断部143に通知する。なお、不正検知処理部154は、不正検知処理に必要なID(IDフィールドの内容)と、DLC(DLCのフィールドの内容)と、データ(データフィールドの内容)と、データフレームの受信タイミングに係るタイミング通知情報とのうちの1以上の情報の取得要求通知を、コントローラ通信部151に伝達することで、不正検知処理に必要な情報の取得を行う。
不正検知ルール保持部155は、不正検知処理部154に参照されるべき不正検知ルール(図6参照)を記憶媒体(または、記録媒体ともいう)等により保持する。記憶媒体とは、例えば、不正検知ECU100(例えば、マイコン部150)に含まれるメモリである。
なお、不正検知処理部154或いは不正フレーム判断部143において、フレームの不正が検知された場合に記憶媒体等に、不正なフレームに関するログ情報(例えばフレームの内容、受信日時等)を記録することとしても良いし、不正を報知するための制御(表示、外部サーバへの情報送信等)を行っても良い。
[1.5 対応情報]
図5は、不正検知処理タイミング保持部144が保持する対応情報の一例としてのリストを示す。対応情報は、複数のIDそれぞれについてタイミング(不正検知処理タイミング)を対応付けた情報であり、不正検知処理要求部142が、割り込み要求信号(不正検知処理要求信号)を通知するタイミングを決定するために利用される。対応情報は、図5に例示するリストでは、1つ以上のIDそれぞれについて、不正検知処理タイミングとして、データフレーム中の1つ又は複数の特定フィールド(IDフィールド、DLCのフィールド、データフィールド等)の受信タイミングを対応付けている。この例は、受信中のデータフレームのIDに応じて、不正検知処理要求信号の通知(発生)のタイミングが異なることを示している。
IDが0x100のデータフレームを受信した場合は、不正検知処理要求部142は、データフレームのID受信時(IDフィールドを受信した時)に、マイコン部150のプロセッサに対する割り込み要求信号としての不正検知処理要求信号を発生させ、不正検知処理部154による不正検知処理の実行を要求することになる。同様に、0x200のIDのデータフレームについては、ID受信時と、データ受信時(データフィールドを受信した時)との両方のタイミングで不正検知処理要求信号を発生させ、IDが0x400のデータフレームについては、ID受信時と、DLC受信時(DLCのフィールドを受信した時)との両方のタイミングで、不正検知処理要求信号を発生させる。一方、IDが0x300のデータフレームについては、不正検知処理要求信号を発生させない。また図5に例示するリストに含まれないIDについては、不正検知処理要求部142は、データフレームの受信完了後に不正検知処理要求信号を発生させる。これは、例えば、図5のリストに含まれない各IDについてデータフレームの受信完了以後のタイミング(例えばデータフレーム受信完了時)を対応付けた対応情報が定められていることと同じ意味を示す。なお、不正検知処理要求信号を発生させないIDについて、リストに含ませないこととして、データフレームの受信完了後に不正検知処理を実行させるべきデータフレームのIDとそのデータフレームの受信完了以後のタイミング(例えばデータフレーム受信完了時)とを対応付けた情報を、対応情報としてのリストに含ませることとしても良い。
[1.6 不正検知ルール]
図6は、不正検知ルール保持部155が保持する不正検知ルールの一例としてのリストを示す。不正検知ルールは、複数のIDそれぞれについて不正の検知のための検査内容を対応付けた情報であり、不正検知処理部154が不正検知処理の内容となる検査を特定する際に利用される。図6に例示するリストは、1つ以上のIDそれぞれについて、DLC、データ、周期の各項目について正常値を示す基準情報を対応付けている。検査において基準情報は、例えば、データフレームの一部の受信により得られたビット列等との照合に用いられる。図6の例では、不正検知のための検査で用いられない項目については、「なし」と表記しており、不正検知処理においてその項目に係る検査は行われない。
図6の例では、IDが0x100であるデータフレームのDLCの正常値は「なし」でありDLCについては検査が行われず、データの正常値は「なし」(データについての検査は行われない旨を示す)であり、またデータフレームの受信周期を表す周期の正常値は20msである。IDが0x200であるデータフレームのDLCの正常値は「なし」であり、DLCについては検査が行われず、データの正常値は、最上位バイトが0x20であり、また周期の正常値は「なし」のため、周期については検査が行われない。IDが0x400のデータフレームについてのDLCの正常値は2であり、また、データと周期に関しては正常値が「なし」であるため検査を行わない。なお、不正検知ルール保持部155は、不正検知ルールに係るリストの内容を、暗号化して保持しても良い。また、不正検知処理部154が行う不正検知処理の内容の全てを、不正検知ルールに係るリストに基づいて特定する必要はなく、ID、DLC、データ及び周期の1以上の項目についてだけ、正常値を不正検知ルールとしてのリストで保持することとしても良い。不正検知ルール、プログラム等によって定まる不正検知処理の内容は、ここで示した例に限られない。
[1.7 ECU200aの構成]
図7は、ECU200aの構成図である。ECU200aは、トランシーバ部130と、コントローラ部240と、マイコン部250とを含んで構成される。
トランシーバ部130は、不正検知ECU100(図4参照)におけるトランシーバ部130と、同様であるため説明を省略する。
コントローラ部240は、マイコン部250及びトランシーバ部130と信号の授受を行う、デジタル回路及びメモリ等の記憶媒体を含む半導体集積回路である。コントローラ部240は、プロトコル処理部241を有する。コントローラ部240は、不正検知ECU100のコントローラ部140と異なり、不正検知処理要求部142及び不正フレーム判断部143を含まない。
プロトコル処理部241は、トランシーバ部130と通信を行い、プロトコル(CANプロトコル等)に従った処理を行う。プロトコル処理部241は、例えば受信中のフレームについてエラーを検知した場合は、トランシーバ部130にエラーフレームを送信させるべく、エラーフレームの送信(つまり送信要求)をトランシーバ部130に通知する。プロトコル処理部241は、データフレームの受信が完了した場合は、データフレームの受信完了をマイコン部250に通知する。プロトコル処理部241は、マイコン部250からのデータフレーム送信要求に対して、プロトコルに従ってデータフレームを送信できるようにトランシーバ部130に通知する。
マイコン部250は、コントローラ部240と信号の授受を行う、プログラムを実行するプロセッサ及びメモリを含む半導体集積回路である。マイコン部250は、プログラムを実行するプロセッサ、メモリ等により実現される機能的な構成要素として、コントローラ通信部151と、フレーム処理部252と、フレーム生成部253と、外部機器入出力部254とを有する。
コントローラ通信部151は、不正検知ECU100(図4参照)におけるコントローラ通信部151と同様である。但し、コントローラ通信部151は、マイコン部250が含まない不正検知処理部154とは連携しない。即ち、コントローラ通信部151は、コントローラ部240から受信したデータフレームを、フレーム処理部252へ通知する。コントローラ通信部151は、フレーム生成部253から通知されたデータフレームを、コントローラ部240へ通知し、データフレーム送信要求を行う。
フレーム処理部252は、コントローラ通信部151から通知されたデータフレームを処理して結果を外部機器入出力部254へ通知する。
フレーム生成部253は、外部機器入出力部254から通知された値に基づいてデータフレームを生成し、コントローラ通信部151に、データフレームを通知する。
外部機器入出力部254は、ECU200aに接続される外部機器と、通信を行う。即ち、外部機器入出力部254は、センサ210から、センサ情報を取得し、フレーム生成部253に通知する。
ECU200bも上述のECU200aと同様の構成を備える。但し、ECU200bにおける外部機器入出力部254は、ECU200bに接続されるアクチュエータ220へ、フレーム処理部252から通知された値に基づいた制御情報を出力することで、アクチュエータ220の制御を行う。
[1.8 不正検知ECU100における各部のデータフレーム受信時の連携動作に係るシーケンス]
以下、上述の構成を備える車載ネットワークシステム10のバス300に不正なECUがアクセスして、IDが0x100であるデータフレームを送信した場合について、バス300に接続された、不正検知方法を行う不正検知ECU100の動作例について説明する。
図8は、不正なデータフレームを受信した場合における不正検知ECU100の各部の連携動作例を示すシーケンス図である。前提として、不正検知ECU100の不正検知処理タイミング保持部144が図5に例示した対応情報としてのリストを保持し、不正検知ルール保持部155が図6に例示した不正検知ルールとしてのリストを保持しているとする。また、不正検知ECU100は、10ms前に、IDが0x100であるデータフレームを受信した状態であるものとする。図8のシーケンス図では、不正検知処理要求部142、不正検知処理部154、不正フレーム判断部143及びプロトコル処理部141との相互間での信号の伝達に係る動作を矢線で示しており、上から下へ向かう時間の流れに沿って各部の動作を矩形の処理ブロックで示している。
IDが0x100であるデータフレームがバス300に送信されると、不正検知ECU100のコントローラ部140のプロトコル処理部141は、トランシーバ部130を介してバス300から、そのデータフレームのID(つまりIDフィールドの値である0x100)を受信する(ステップS1001)。IDを受信するとプロトコル処理部141は、不正検知処理要求部142へ、受信中のデータフレームのID(受信したID)を通知する(ステップS1002)。
不正検知処理要求部142は、不正検知処理タイミング保持部144が保持している対応情報を参照して、通知されたIDに対応する不正検知処理タイミングを決定する(ステップS1003)。図5の対応情報の例によれば、受信したデータフレームのIDである0x100に対応するID受信時というタイミングが不正検知処理タイミングとして決定される。
不正検知処理要求部142は、ステップS1003で決定した不正検知処理タイミングが到来した時点で、マイコン部150のプロセッサに割り込み要求信号(不正検知処理要求信号)を入力することで不正検知処理の実行を要求する(ステップS1004)。コントローラ部140からマイコン部150への割り込み要求信号の伝達(プロセッサへの割り込み)のタイミングにより、不正検知処理の実行タイミングが制御される。不正検知処理タイミングがID受信時であれば、IDが受信された時点なので直ちに不正検知処理要求信号(割り込み要求信号)が不正検知処理部154に通知される。なお、もし決定された不正検知処理タイミングが例えばDLC受信時であればDLCが受信された時点を待って不正検知処理要求信号が不正検知処理部154に通知される。また、もし決定された不正検知処理タイミングが例えばデータフレーム受信完了時であればデータフレームの受信が完了した時点を待って不正検知処理要求信号が不正検知処理部154に通知される。
割り込み要求信号を受けると、マイコン部150でプロセッサが、割り込み対応処理プログラムを実行する。これにより不正検知処理部154が不正検知処理を実行する(ステップS1005)。不正検知処理部154は、不正検知処理においては、コントローラ通信部151を介してコントローラ部140のプロトコル処理部141に、バス300から受信したIDと、受信周期に係るタイミング通知情報との取得要求通知を伝達する(ステップS1005a)。これに呼応してプロトコル処理部141が伝達するID及びタイミング通知情報を不正検知処理部154は、コントローラ通信部151を介して取得する(ステップS1005b)。不正検知処理部154は、不正検知処理において、取得したID及びタイミング通知情報を、不正検知ルールに基づいて検査する。この検査において、取得したIDは、図6の不正検知ルールとしてのリストに含まれているため正常なIDと判別されるが、タイミング通知情報が示す受信タイミングは例えば前回受信から10ms経過を表しており、図6の不正検知ルールのリストで規定されている20msとは異なるため、不正な周期と判別される。このため、不正検知処理部154は、不正なフレームを検知した旨を不正検知処理の結果として、コントローラ部140の不正フレーム判断部143に通知する(ステップS1006)。
不正フレーム判断部143は、不正検知処理の結果の通知を受けると、不正検知処理において不正が検知されたか否かを判別し(ステップS1007)、不正が検知された場合には、プロトコル処理部141に、エラーフレームの送信(送信要求)を通知する(ステップS1008)。
プロトコル処理部141は、不正フレーム判断部143からエラーフレームの送信を通知された場合には、エラーフレームの送信(送信要求)をトランシーバ部130に通知する(ステップS1009)。これによりトランシーバ部130がエラーフレームをバス300へと送出することになる。バス300での送信途中のデータフレーム(IDが0x100でありIDフィールドまで送信がなされたデータフレーム)の残りの部分に対して、連続するドミナントで構成されるエラーフレームがレセシブより優先され、言わばエラーフレームにより上書きされることになる。このため、バス300に接続されたECU200a、200bが不正なデータフレームに対応して動作(不正な動作等)をすることが阻止される。これは、不正なデータフレームに対応した動作により、ECU200a、200bが不要な電力消費を行うことの阻止にもなる。なお、不正検知ECU100において、上述の例ではID受信時に不正検知処理を行っているので不正が検知されたらエラーフレームを送信するが、もしデータフレームの受信完了時に不正検知を行っているのであればエラーフレームの送信は行わず、例えばログ情報の記録、不正の報知に係る制御等を行い得る。
[1.9 不正検知ECU100のデータフレーム受信時の処理]
以下、不正検知ECU100がデータフレーム受信時に行う処理について図9のフローチャートに即して説明する。
不正検知ECU100は、バス300からデータフレームのIDフィールドまでを受信することにより、データフレームのIDを取得する(ステップS1101)。
不正検知ECU100は、不正検知処理要求部142により、不正検知処理タイミング保持部144が保持している対応情報を参照して、取得したデータフレームのIDに対応する不正検知処理タイミングを決定する(ステップS1102)。これにより、受信されたIDに応じて、例えばID受信時、DLC受信時、データ受信時、データフレーム受信完了時等のうち1つ又は複数が不正検知処理タイミングとして決定される。
不正検知ECU100は、不正検知処理要求部142により、決定した不正検知処理タイミングが到来したか否かを判定する(ステップS1103)。不正検知処理タイミングが到来していなければ、データフレームの受信が完了したか否かを判定し(ステップS1104)、完了していなければプロトコル処理部141等により、バス300上に現れた次の1ビットを受信して(ステップS1105)、ステップS1103の判定に戻る。なお、不正検知ECU100では、データフレームの受信が完了すると、プロトコル処理部141により、マイコン部150にデータフレームの受信完了が通知される。不正検知ECU100は、ステップS1104での判定で、データフレームの受信が完了していたらデータフレームの受信時の処理を終える。
ステップS1103において不正検知処理タイミングが到来したと判定された場合には、不正検知ECU100は、コントローラ部140の不正検知処理要求部142からマイコン部150のプロセッサに割り込み要求信号(不正検知処理要求信号)を入力することで、不正検知処理部154により、不正検知ルールに基づき不正検知処理を実行する(ステップS1106)。
不正検知ECU100は、データフレーム受信中において不正検知処理部154による不正検知処理の結果として不正が検知された場合には(ステップS1107)、バス300へとエラーフレームを送出することでエラーフレームの送信を行う(ステップS1108)。また、不正検知ECU100は、不正検知処理の結果が正常である場合(不正が検知されなかった場合)、或いは、データフレーム受信後に不正検知処理の結果として不正が検知された場合には、エラーフレームを送信せずにステップS1104での判定を行う。
図9に示す処理は、データフレームのIDが受信される毎に繰り返し行われる。例えば、不正検知処理要求部142は、データフレームのIDが第1値(例えば0x100、0x200等)であればデータフレームの受信中のタイミングを不正検知処理タイミングとして決定する。そして、データフレームのIDが第1値と異なる第2値(例えば0x500等)であればデータフレームの受信完了以後のタイミング(例えばデータフレーム受信完了時)を不正検知処理タイミングとして決定する。この場合において、不正検知ECU100は、不正検知処理部154がデータフレームの受信中のタイミングで行う不正検知処理において不正を検知したときにバス300にエラーフレームを送出するが、データフレームの受信完了時のタイミングで行う不正検知処理において不正を検知したときにはエラーフレームを送出しない。このように不正検知処理タイミングを決定することは、第1値のIDを含むデータフレームがセキュリティ上、迅速な不正の検知を要するものであり、第2値のIDを含むデータフレームが不正の検知の迅速性を要しない場合に有用である。
[1.10 実施の形態1の効果]
実施の形態1に係る車載ネットワークシステム10では、不正検知ECU100が、不正検知処理タイミング保持部144に保持された対応情報に基づいて、受信したデータフレームのIDに応じた不正検知処理タイミングを決定し、その決定した不正検知処理タイミングで不正検知処理を行う。これにより、セキュリティの確保のために、バス300で送信される各データフレームに対して一律に監視を行うのではなく、データフレームのIDに対応した適切なタイミングで不正検知処理を行うため、不正なフレームの効率的な検知が実現され得る。例えば、セキュリティ上、重要なデータフレームのIDに対応して、例えばID受信時、DLC受信時、データ受信時の2つ以上を対応付けるように対応情報を定めておくことにより、ID、データフレームの受信周期、DLC及びデータ(データフィールドの内容)のいくつかを迅速に検査できる。そして、不正が検知されるとエラーフレームの送信により、他のECUが不正な動作等をすることを迅速に阻止できる。不正検知処理タイミングが到来したらコントローラ部140から、割り込み要求信号によりマイコン部150のプロセッサに通知されるため、プロセッサは割り込み要求信号が入力されるまでは例えば低消費電力状態(スリープ状態)等になることができ、また、不正検知処理を終えた後に必要な処理がなくなれば再び低消費電力状態に戻ることができる。また、例えば、重要性が比較的低いデータフレームのIDに対応して、データフレーム受信完了時を対応付けるように対応情報を定めておくことで、データフレーム受信完了後の1回の不正検知処理でID、データフレームの受信周期、DLC、データ(データフィールドの内容)等の検査を行うことが可能になり、消費電力を抑えたセキュリティの確保が図れる。
(実施の形態2)
以下、実施の形態1で示した車載ネットワークシステム10を一部変形してなる車載ネットワークシステム11について説明する。
実施の形態1に係る車載ネットワークシステム10の不正検知ECU100では、バス300で送信されたデータフレームについて不正を検知する不正検知処理を実行するための不正検知処理タイミングを、データフレームのIDに応じて決定した。これに対して、本実施の形態に係る車載ネットワークシステム11は、データフレームのIDだけでなく、バス300等の車載ネットワークシステム11を搭載している車両の状態、及び、不正状態(つまり不正検知処理の結果)にも応じて不正検知処理タイミングを決定する不正検知ECU2100を備える。不正検知ECU100を一部変形してなる不正検知ECU2100は、不正検知処理タイミングを、データフレームのIDと車両の状態と不正状態とにより特定される監視レベルに応じて決定する。
[2.1 車載ネットワークシステム11の全体構成]
図10は、実施の形態2に係る車載ネットワークシステム11の全体構成を示す図である。
車載ネットワークシステム11は、図10に示すように、バス300と、不正検知ECU2100、各種機器に接続されたECU200a、200b、2200c等のECUといったバスに接続された各ノードとを含んで構成される。本実施の形態において、実施の形態1と同様の機能を有する構成要素については、同じ符号を付して説明を省略する。また、車載ネットワークシステム11は、本実施の形態で特に示さない点については車載ネットワークシステム10と同様である。
ECU2200cは、バス300と接続され、また、バッテリ2230及び車速センサ2240に接続されており、これらから情報を取得することで、現在の車両の状態が、停車中、充電中、走行中及び高速走行中のいずれかであるかを特定して、特定した車両の状態を示すデータフレームをバス300に送出する。ここで、停車中は、車速がゼロであって充電中(バッテリ2230への充電中)以外である状態を示す。また、走行中は、車両が高速走行中でなく走行している状態を示す。高速走行中は車速が一定速度(例えば60Km/時)以上である状態を示す。ECU2200cは、ECU200a(図7参照)と同様の構成を有するため、ここでの説明を省略する。バッテリ2230は、各ECU等に電力を供給するための電源である。
不正検知ECU2100は、不正検知ECU100(図4参照)を一部変形したものであり、バス300と接続され、バス上に流れるフレームを監視して、不正フレームが流れているか否かを判別するための不正検知処理を行う機能を有する。
[2.2 不正検知ECU2100の構成]
図11は、不正検知ECU2100の構成図である。不正検知ECU2100は、トランシーバ部130と、コントローラ部2140と、マイコン部2150とを含んで構成される。なお、実施の形態1と同様の機能を有する構成要素については、同じ符号を付して説明を省略する。
コントローラ部2140は、コントローラ部140を一部変形したものであり、マイコン部2150及びトランシーバ部130と信号の授受を行う、デジタル回路及びメモリ等の記憶媒体を含む半導体集積回路である。コントローラ部2140は、プロトコル処理部2141と、不正検知処理要求部142と、不正フレーム判断部143と、不正検知処理タイミング保持部144とを有する。
プロトコル処理部2141は、実施の形態1で示しプロトコル処理部141の機能に加えて、コントローラ通信部151から不正検知処理タイミング保持部144の更新要求を通知された場合に、不正検知処理タイミング保持部144が保持する対応情報を更新する機能を有する。
マイコン部2150は、コントローラ部2140と信号の授受を行う、プログラムを実行するプロセッサ及びメモリを含む半導体集積回路である。プログラムは、例えば、半導体集積回路のメモリに記憶される。または、不正検知ECU2100が図示しないハードディスク装置を含む場合、プログラムは、ハードディスク装置に記憶されてもよい。プロセッサが、このプログラムを実行することにより、マイコン部150が機能する。マイコン部2150は、プログラムを実行するプロセッサ、メモリ等により実現される機能的な構成要素として、コントローラ通信部151と、フレーム処理部2152と、フレーム生成部153と、不正検知処理部2154と、不正検知ルール保持部155と、監視レベル決定部2156と、不正状態保持部2157と、車状態保持部2158と、監視レベル保持部2159とを有する。
フレーム処理部2152は、コントローラ通信部151から通知されたデータフレームを、処理する。データフレームの処理の一例としては、フレーム処理部2152は、ECU2200cから通知されたデータフレームを解釈することで車両の状態を取得して、その車両の状態を示す車両状態情報を、車状態保持部2158に格納する。フレーム処理部2152は、車両状態情報を更新した場合には、車両状態情報を更新した旨を、監視レベル決定部2156に通知する。
不正検知処理部2154は、不正検知処理部154を一部変形したものであり、コントローラ部2140から不正検知処理要求信号を受信し、不正検知処理を行う。例えば、不正検知処理要求信号は、マイコン部2150のプロセッサに対する割り込み要求信号として与えられる。不正検知処理の内容については、実施の形態1における不正検知処理部154による不正検知処理と同様である。不正検知処理部2154は、不正検知処理を行った後に、不正が検知されたか否かを示す不正検知処理の結果を、コントローラ部2140の不正フレーム判断部143に通知する。また、不正検知処理部2154は、不正検知処理に必要なID(IDフィールドの内容)と、DLC(DLCのフィールドの内容)と、データ(データフィールドの内容)と、データフレームの受信タイミングに係るタイミング通知情報とのうちの1以上の情報の取得要求通知を、コントローラ通信部151に伝達することで、不正検知処理に必要な情報の取得を行う。また、不正検知処理部2154は、現在時刻を取得する機能を有し、不正検知処理の結果、不正なデータフレームであると判別した場合には、不正状態保持部2157に格納されている不正状態情報(図14参照)における該当するIDの不正が検知された回数(不正発生回数とも称する)と最終更新時刻とを、更新する。このとき、不正発生回数についての更新前の最終更新時刻と、現在時刻とに一定以上の時間差がある場合は、不正発生回数をゼロにリセットする。不正検知処理部2154は、不正状態情報を更新した場合には、監視レベル決定部2156に、不正状態情報を更新したことを通知する。
監視レベル決定部2156は、不正検知処理部2154から不正状態情報の更新を通知された時と、フレーム処理部2152から車両状態情報の更新を通知された時とにおいて、不正状態保持部2157と車状態保持部2158とを参照し、ID毎について監視レベルを決定する。そして監視レベル決定部2156は、決定した監視レベルと、監視レベル保持部2159が保持している監視レベル情報が示すこれまでの監視レベルとを比較することで、不一致であれば、決定した監視レベルを示すように監視レベル情報を更新する。監視レベル情報を更新した場合には、監視レベル決定部2156は、コントローラ通信部151を介して更新要求を通知することで、コントローラ部2140の不正検知処理タイミング保持部144が保持している対応情報における不正検知処理タイミングを、監視レベルに応じて不正検知処理タイミング特定用情報(図12参照)に基づいて書き換える。なお、監視レベル決定部2156は、監視レベルの決定を、例えば、図13に例示するテーブル(対応表)に基づいて行う。この監視レベルの決定方法については後述する。
不正状態保持部2157は、不正検知処理部2154の不正検知処理の結果から求まる不正状態を示す不正状態情報(図14参照)を保持している。不正状態情報は、具体的には、データフレームのID(対応情報で不正検知処理タイミングと対応付けられた各ID)毎についての既に行われた不正検知処理での不正の検知回数(不正発生回数)を示すように更新される情報である。
車状態保持部2158は、ECU2200cから送信されたデータフレームによりフレーム処理部2152が取得した車両の状態を示す車両状態情報(図15参照)を保持する。
監視レベル保持部2159は、ID毎についての監視レベルを示す監視レベル情報(図16参照)を保持している。
[2.3 不正検知処理タイミング特定用情報]
図12は、不正検知処理タイミング特定用情報の一例を示す図である。同図に示すように、不正検知処理タイミング特定用情報は、監視レベルと不正検知処理タイミングとの対応を示す。監視レベル決定部2156は、この不正検知処理タイミング特定用情報に従って、決定した監視レベルに対応する不正検知処理タイミングを特定し、不正検知処理タイミング保持部144が保持している対応情報を、特定した不正検知処理タイミングを示すように更新する。図12の例では、監視レベルを0から3までの4段階に区分している。なお、これは一例であって、監視レベルを何段階に区分しても良い。図12に例示する不正検知処理タイミング特定用情報により、不正検知ECU2100では監視レベルに応じて次のような処理がなされることになる。即ち、監視レベルが0の場合には、不正検知処理が行われない。監視レベルが1の場合には、データフレーム受信完了時に、不正検知処理要求信号が不正検知処理部2154に通知され、不正検知処理が開始される。監視レベルが2の場合には、ID受信時(つまりデータフレームにおけるIDフィールドを受信した時)に、不正検知処理要求信号が不正検知処理部2154に通知され、不正検知処理が開始される。監視レベルが3の場合には、ID受信時、DLC受信時(DLCのフィールドを受信した時)及びデータ受信時(データフィールドを受信した時)のそれぞれの時点で、不正検知処理要求信号が不正検知処理部2154に通知され、不正検知処理が開始される。監視レベルが2又は3の場合においては、データフレームの受信中に、不正検知処理が行われることになるため、不正検知処理においてデータフレームに係る不正が検知されると、エラーフレームをバス300に送出して不正なデータフレームを上書きすることで、不正なデータフレームを無効化することができる。ここでは、監視レベルが4段階のうち最も高い3の場合には0〜2よりも迅速或いは多項目の検査を行う例を示しており、車両の状態及び不正発生回数により特定される監視レベルと不正検知処理タイミングを適切に設定することは有用である。なお、不正検知処理タイミング特定用情報の内容は図12の例に限られることはない。
[2.4 監視レベルの決定方法]
図13は、監視レベル決定部2156が監視レベルを決定するために用いるテーブルの一例を示す図である。同図ではID毎に異なるテーブルが定められている例を示している。図13において(a)はID「0x100」について、(b)はID「0x200」について、(c)はID「0x300」について、(d)はID「0x400」について、それぞれ、車両の状態と不正が検知された回数(不正発生回数)とから監視レベルを特定するためのテーブルを示す。この各テーブルに従って、監視レベル決定部2156は、車両の状態及び不正発生回数に応じて監視レベルを決定する。図13の例によれば、IDが0x100であるデータフレームに関して、車両の状態が停車中の場合には、不正発生回数が何回であっても監視レベルは0と決定される。IDが0x100であるデータフレームに関して、車両の状態が充電中の場合に、不正発生回数が4回以下であれば監視レベルは1と決定され、不正発生回数が5回以上であれば監視レベルは3と決定される。IDが0x100であるデータフレームに関して、車両の状態が走行中の場合に、不正発生回数が4回以下であれば監視レベルは2と決定され、不正発生回数が5回以上であれば監視レベルは3と決定される。IDが0x100であるデータフレームに関して、車両の状態が高速走行中の場合には、不正発生回数が何回であっても監視レベルは3と決定される。IDが0x200と、0x300と、0x400のデータフレームに関しても同様に、車両の状態と不正発生回数とから監視レベルが決定される。なお、図13のテーブルが無いIDのデータフレームに関しての監視レベルは、1とする。例えば、不正検知処理による監視の必要性の高さ等に対応して監視レベルの高さを適切に設定することが有用となる。
図13の(a)のテーブルの例は、IDが0x100のデータフレームが、主に走行中に送信されるクルーズコントロールに関する制御用のデータフレームであり、走行中に比較的高い監視レベルで不正検知を行う必要があることを想定した例である。図13の(b)のテーブルの例は、IDが0x200のデータフレームが、充電制御に関するデータフレームであり、充電中により高い監視レベルで不正検知を行う必要があることを想定した例である。図13の(c)のテーブルの例は、IDが0x300であるデータフレームが、バッテリの残量通知に関するデータフレームであることを想定した例である。また、図13の(d)のテーブルの例は、IDが0x400であるデータフレームが、車両の制御に直ちに重大な影響を与えることの無いようなECUの状態通知に関するデータフレームであることを想定した例であり、不正発生回数が多い場合は監視レベルを上げることで車両が安全な状態を保てるようにしている。このように、IDで区別されるデータフレームの特性に応じて、車両の状態或いは不正発生回数との関係で監視レベルを適切に定めることで、電力消費の低減を図り、不正検知処理を効率的に行うことが可能となる。
[2.5 不正状態情報]
図14は、不正状態保持部2157に保持される不正状態情報の一例を示す図である。同図に示すように、不正状態情報は、データフレームのID毎について、不正が検知された回数(不正発生回数)と、不正状態情報が最後に更新された時刻を示す最終更新時刻とを記録した情報である。この不正状態情報は、不正検知処理部2154によりデータフレームについて不正が検知される度に更新される。
図14の例では、IDが0x100、0x200及び0x300の各データフレームに関しては、不正発生回数が0回で最終更新時刻は起動時(例えば車載ネットワークシステムに電力の供給が開始された時)であり、起動時に設定した初期値のままとなっている。また、IDが0x400であるデータフレームに関しては、不正発生回数が3回であり、最終更新時刻は起動20分後となっている。
[2.6 車両状態情報]
図15は、車状態保持部2158に保持される車両状態情報の一例を示す図である。図15に例示する車両状態情報は、車両の状態が充電中であることを示している。車両状態情報は、フレーム処理部2152が、例えば、ECU2200cから通知されたデータフレームを解釈することで車両の状態を取得して、その車両の状態を示すように更新する。車両の状態は、例えば、停車中、充電中、走行中及び高速走行中の4つの状態のうちいずれかとなる。
[2.7 監視レベル情報]
図16は、監視レベル保持部2159に保持される監視レベル情報の一例を示す図である。監視レベル情報は、ID毎について、そのIDを含むデータフレームに対応する監視レベルを示す。
図16の例は、IDが0x100のデータフレームに関しては監視レベルが1、IDが0x200のデータフレームに関しては監視レベルが2、IDが0x300のデータフレームに関しては監視レベルが3、IDが0x400のデータフレームに関しては、監視レベルが0である状態を示している。監視レベルは、0〜3の4段階に区分されている。
[2.8 監視レベル更新に応じて変化する不正検知ECU2100の動作例1]
図17は、監視レベル更新に応じて変化する不正検知ECU2100の動作を例示する図である。同図は、車両の状態の変化に伴い監視レベルが更新された場合の動作例を示す。前提として、不正検知ECU2100の不正状態保持部2157に保持される不正状態情報は、図14に例示する状態であるものとする。このとき、不正検知ECU2100は、IDが0x100であるデータフレームについて不正を1度も検知していない。
まず、図17に示すように、ECU2200cから停車中であることを通知するデータフレームがバス300上に流れる。このデータフレームを受信することで不正検知ECU2100は、停車中を示すように車両状態情報を更新し、図13の(a)に例示するテーブルに基づいてIDが0x100であるデータフレームについての監視レベルを0と決定する。続いてIDが0x100のデータフレームがバス300上に流れる。このデータフレームに対して、監視レベルが0であるため、不正検知ECU2100は、不正検知処理を行わない。次に、車載ネットワークシステム11を搭載した車両が走行を開始すると、ECU2200cから走行中であることを通知するデータフレームがバス300上に流れる。このデータフレームを受信することで不正検知ECU2100は、走行中を示すように車両状態情報を更新し、図13の(a)に例示するテーブルに基づいてIDが0x100であるデータフレームについての監視レベルを2と決定する。これにより、不正検知ECU2100のIDが0x100であるデータフレームに対する監視レベルは2となる。そのため、続いてバス300にIDが0x100のデータフレームが流れると、このデータフレームに対して、ID受信時に不正検知処理(IDが不正か否か及びデータフレームの周期が不正か否かを判別する検査)が実行される(図12参照)。
[2.9 監視レベル更新に応じて変化する不正検知ECU2100の動作例2]
図18は、監視レベル更新に応じて変化する不正検知ECU2100の動作の別の例を示す図である。同図は、不正の検知回数の増加に伴い監視レベルが更新された場合の動作例を示す。前提として、不正検知ECU2100の不正状態保持部2157に保持される不正状態情報は、図14に例示する状態であるものとする。このとき、不正検知ECU2100は、IDが0x400であるデータフレームについて既に不正を3回検知している。
まず、図18に示すように、ECU2200cから走行中であることを通知するデータフレームがバス300上に流れる。このデータフレームを受信することで不正検知ECU2100は、走行中を示すように車両状態情報を更新する。図13の(d)に例示するテーブルに基づくとIDが0x400であるデータフレームについての監視レベルは1である。続いてIDが0x400のデータフレームがバス300上に流れる。このデータフレームに対して、監視レベルが1であるため、データフレーム受信完了時に、不正検知処理としてID及びDLCが不正か否かを判別する検査を行う(図6、図12参照)。続いて、2回目、3回目とIDが0x400のデータフレーム(但しDLCが8という不正な値となっているデータフレーム)がバス300上に流れる。不正検知ECU2100では、2回目と3回目とに受信するIDが0x400のデータフレームについては、不正検知処理の結果、DLCが8であるため、不正と判別する。これにより、不正状態情報が更新され、不正が検知された回数が5になるため、監視レベルが3となる(図13参照)。そのため、以後はIDが0x400のデータフレームについては、データフレームの受信中(ID受信時及びDLC受信時)に不正検知処理が行われる(図6、図12参照)。このため、5回目に受信したIDが0x400のデータフレーム(DLCが8という不正な値となっているデータフレーム)は、データフレーム受信中に、DLCが不正と判別され、不正なデータフレームとして検知されるため、データフレーム受信中にエラーフレームが送信される。これにより、バス300上のその不正なデータフレームが上書きされて無効化されることになる。
なお、この例では、不正検知処理タイミング保持部144は、対応情報のIDが0x400についての不正検知処理タイミングについては、車両状態情報が走行中である場合において、不正状態情報における不正の検知回数(不正発生回数)が多い程、ID受信時、DLC受信時、データ受信時及びデータフレーム受信完了時のうちの多くの受信タイミングとなるように更新されている。つまり、不正発生回数が増加することでデータフレーム受信完了時からID受信時及びDLC受信時へと不正検知処理タイミングが増加している。このように、不正検知処理タイミング保持部144は、対応情報を、複数のIDそれぞれについて不正状態情報におけるそのIDに係る不正の検知回数(不正発生回数)が多い程、ID受信時、DLC受信時、データ受信時及びデータフレーム受信完了時のうちの多くの受信タイミングを対応付けるように更新してもよい。
[2.10 不正検知ECU2100のデータフレーム受信時の処理]
以下、不正検知ECU2100がデータフレーム受信時に行う処理について図19のフローチャートに即して説明する。実施の形態1で示した不正検知ECU100の処理ステップ(図9参照)と同様の処理ステップについては、同じ符号を付しており、説明を適宜省略する。
不正検知ECU2100は、不正検知処理要求部142により、不正検知処理タイミング保持部144が保持している対応情報を参照して、受信したデータフレームのIDに対応する不正検知処理タイミングを決定する(ステップS1102)。決定した不正検知処理タイミングが到来した時に(ステップS1103)、不正検知ECU2100は、コントローラ部2140の不正検知処理要求部142からマイコン部2150のプロセッサに割り込み要求信号(不正検知処理要求信号)を入力することで、不正検知処理部2154により、不正検知ルールに基づき不正検知処理を実行する(ステップS1106)。
不正検知ECU2100は、不正検知処理の結果として不正が検知されたか否かを判別し(ステップS2107)、不正が検知された場合には不正状態保持部2157が保持する不正状態情報を更新する(ステップS2108)。つまり、不正が検知された場合には、不正状態情報における該当するIDの不正が検知された回数を1増加させる。ステップS2107で不正が検知されなかったと判別した場合には、不正検知ECU2100は、ステップS1105に処理を移す。
ステップS2108で不正状態情報を更新した後に、不正検知ECU2100は、データフレーム受信中か否かを判別して(ステップS2109)、データフレーム受信中である場合に限ってバス300へとエラーフレームを送信する(ステップS2110)。
[2.11 不正検知ECU2100の監視レベル決定部2156による処理]
図20は、監視レベル決定部2156における監視レベルの決定に係る処理を示すフローチャートである。
監視レベル決定部2156は、不正検知処理部2154から不正状態情報の更新を通知されたか或いはフレーム処理部2152から車両状態情報の更新を通知されたかを判断し、通知を待ってこの判断を繰り返す(ステップS3001)。
不正状態情報又は車両状態情報の更新の通知がなされた場合には、監視レベル決定部2156は、不正状態情報及び車両状態情報に基づいて、データフレームのID毎に対応して監視レベルを決定する(ステップS3002)。
続いて、監視レベル決定部2156は、決定した監視レベルが、以前の監視レベルから変化しているか(更新されたか)を、監視レベル保持部2159を参照することにより確認する(ステップS3003)。即ち、監視レベル決定部2156は、決定した監視レベルと、監視レベル保持部2159が保持している監視レベル情報(図16参照)が示す、以前の監視レベルとを比較することで、不一致であれば、以前の監視レベルから変化していると判別する。この比較で一致していれば、監視レベルは変化していないので監視レベル決定部2156は、監視レベル情報の更新を行わずに処理を終える。
ステップS3003において、決定した監視レベルが以前の監視レベルから変化していると判別した場合には、監視レベル決定部2156は、監視レベル保持部2159が保持している監視レベル情報を、ID毎に決定した監視レベルを示すように更新する(ステップS3004)。
ステップS3004で監視レベル情報を更新した後に、監視レベル決定部2156は、コントローラ通信部151を介して更新要求を通知する(ステップS3005)。この更新要求の通知により、監視レベル決定部2156は、コントローラ部2140の不正検知処理タイミング保持部144が保持している対応情報における不正検知処理タイミングを、監視レベルに応じて不正検知処理タイミング特定用情報(図12参照)に基づいて書き換える。
[2.12 実施の形態2の効果]
実施の形態2に係る車載ネットワークシステム11では、不正検知ECU2100が、不正検知処理タイミング保持部144に保持された対応情報に基づいて、受信したデータフレームのIDに応じた不正検知処理タイミングを決定し、その決定した不正検知処理タイミングで不正検知処理を行う。データフレームのIDに対応した適切なタイミングで不正検知処理を行うため、不正なフレームの効率的な検知が実現され得る。更に、車載ネットワークシステム11では、車載ネットワークシステム11を搭載する車両の状態と不正検知処理の結果に係る不正状態とに応じて、具体的には車両の状態及び不正状態から決定される監視レベルに応じて、不正検知処理タイミングを変化させ得る。これにより、車両の状態及び不正状態に応じた適切なタイミングで不正検知処理を実行することが可能となり、消費電力の低減を図ることが可能となる。
(他の実施の形態)
以上のように、本開示に係る技術の例示として実施の形態1、2を説明した。しかしながら、本開示に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本開示の一実施態様に含まれる。
(1)上述した不正検知処理要求部142は、不正検知処理タイミングを対応情報に基づいて決定しているが、対応情報の内容、形式等は任意に変更可能であり、ID毎に、不正検知処理タイミングを別々に定めることができれば良い。
(2)上記実施の形態では、CANプロトコルにおけるデータフレームを標準IDフォーマットで記述しているが、拡張IDフォーマットであっても良い。拡張IDフォーマットの場合には、標準IDフォーマットにおけるID位置のベースIDと、拡張IDとを合わせて29ビットで、データフレームのIDを表す。
(3)上記実施の形態では、不正検知処理タイミングが、ID受信時とDLC受信時とデータ受信時とデータフレーム受信完了時とのいずれかである例を示したが、これら以外のタイミングで不正検知処理を行っても良い。例えば、不正検知ルール(図6参照)が各IDについてのデータのルールとしてデータフィールドの先頭から所定数バイト(例えば最上位1バイト等)の値を規定する場合において、不正検知処理タイミングとしては、データ受信時ではなく(つまりDLCが示すサイズのデータフィールドを受信した時)ではなく、データフィールドの先頭から所定数バイト(例えば1バイト)を受信した時としても良い。
(4)上記実施の形態では、不正検知ECU100、2100がデータフレームの受信中に、データフレームについての不正を検知した場合にエラーフレームを送信することとしたが、必ずしもエラーフレームの送信を行わなくても良く、エラーフレームの送信以外の方法(例えばバス300以外の通信路により他のECUにエラーを通知すること等)で、ECUによる不正なデータフレームの実行を阻止しても良い。また、エラーフレームを送信せずに、データフレームにより不正を検知したことを他のECUに通知しても良いし、上述したようにログ情報の記録、外部サーバへの情報送信等を行っても良い。
(5)上述した不正検知処理部154、2154が不正検知処理として1つのデータフレームについて複数の検査を行う場合においては、そのうちの1つの検査で不正なフレームであると判別できた場合(不正が検知された場合)に、残りの検査を省略しても良い。
(6)上記実施の形態では、車両状態情報が示す車両の状態は、例えば、停車中、充電中、走行中及び高速走行中の4つの状態のうちいずれかであることとしたが、この他の状態を示すようにしても良い。車両に搭載されたセンサ、機器等で識別できる各種状態を、車両状態情報における車両の状態として用い得る。例えば、イグニッションキーがイグニッションキーシリンダに差し込まれた状態、ギアポジション(例えばパーキング、ニュートラル、1速、2速等)の状態、バス300等のネットワーク負荷の状態等を、車両状態情報における車両の状態として用い得る。なお、ネットワーク負荷の状態については、車載ネットワークシステム11を構成する各バスそれぞれについてそのバスに接続されているECUの機能分類に応じて、特定の機能分類のECUが接続されたバスの負荷の状態に注目してその負荷の状態を車両状態情報における車両の状態として用いても良い。ECUの機能分類としては例えば、エンジン、モータ、燃料、電池、トランスミッション等の制御といった車両の走行に関連する機能である「駆動系」、或いは、ドアロック、エアコン、ライト、ウィンカー等といった車両の装備の制御に関連する機能である「ボディ系」等が挙げられる。また、対応情報においては、ID毎に不正検知処理タイミングを定める他に、複数IDからなるIDグループ(例えばそのIDのデータフレームを送信するECUの機能分類により区分したグループ等)毎に不正検知処理タイミングを定めても良い。
(7)上記実施の形態では、不正検知ECU2100は、他のECUから車両の状態を示すデータフレームを、バスを介して取得したが、車両の状態を別の手段によって取得しても良い。例えば、車両の状態を通知するための専用の通信路(例えば専用の信号線等)によって、車両の状態を取得しても良い。
(8)上記実施の形態では、各IDのデータフレームについての監視レベルの決定の基礎となる不正状態の例として、不正検知処理により不正が検知された回数(不正発生回数)を示したが、不正状態として不正発生回数以外を用いても良い。例えば、不正検知処理の結果に基づいて計算されるIDの信頼度等を用いても良い。
(9)上記実施の形態では、監視レベルが、車両の状態と不正状態とに応じて決定されるとしたが、監視レベルは、この2つのうち車両の状態のみに応じて決定されることとしても良い。また、不正状態のみに応じて決定されることとしても良い。また、監視レベルの決定に必ずしもテーブル(図13参照)を用いる必要はなく、例えば、車両の状態と不正状態とを入力とする演算(関数等)により決定しても良い。
(10)上記実施の形態では、マイコン部150、2150で不正検知処理を行ったが、コントローラ部140、2140において不正検知処理を行っても良い。また、上記実施形態では、マイコン部2150で監視レベルを決定していたが、コントローラ部2140において監視レベルを決定しても良い。また、上記実施の形態では、マイコン部2150が不正状態保持部2157と車状態保持部2158とを有しているが、コントローラ部140、2140がこれらの両方又は一方を有しても良い。
(11)上記実施の形態では、不正状態保持部2157に、最終更新時刻を保持し、現在時刻との差分によって不正発生回数のリセットの判断を行っていたが、別の手段によってリセットを行っても良い。例えば、最終更新時にタイマをセットして、タイマによって、リセットされるようにしても良い。また、不正発生回数のリセットを行わなくても良く、不正状態保持部2157は、最終更新時刻を記録しなくても良い。
(12)上記実施の形態では、不正検知処理要求部142が、不正検知処理要求信号を割り込み要求信号として、不正検知処理部154、2154に通知(具体的にはマイコン部150、2150のプロセッサに入力)する例を示したが、不正検知処理要求信号の通知を他の方法(例えば不正検知処理部154、2154から定期的に不正検知処理要求を問い合わせる方法等)で行っても良い。
(13)上記実施の形態では、不正検知処理部154、2154は、不正検知処理に必要な情報の取得を、コントローラ通信部151を介して行うこととしたが、コントローラ部140、2140と直接通信を行い、不正検知処理に必要な情報を取得しても良い。この取得を、例えばコントローラ通信部151がコントローラ部140、2140と信号の授受を行うための通信路とは別の通信路(専用の信号線等)を設けることにより実現しても良い。
(14)上記実施の形態では、不正検知処理部2154は、不正状態保持部2157の内容(不正状態情報)を更新したことを監視レベル決定部2156に通知していたが、この更新の通知を行わなくても良い。同様に、フレーム処理部2152は、車両状態情報の更新の通知を行わなくても良い。また、上記実施の形態では、監視レベル決定部2156は、車両状態情報又は不正状態情報が更新されたことを通知されたときに監視レベルを決定していたが、監視レベルの決定はこのときに限定されるものではない。例えば、監視レベル決定部2156は、監視レベルを定期的に決定しても良い。
(15)上記実施の形態では、監視レベル決定部2156は、不正検知処理タイミング保持部144の内容(対応情報)の更新を、コントローラ通信部151を介して行うこととしたが、コントローラ部140、2140と直接通信を行い、対応情報を更新しても良い。この更新を、例えばコントローラ通信部151がコントローラ部2140と信号の授受を行うための通信路とは別の通信路(専用の信号線等)を設けることにより実現しても良い。
(16)上記実施の形態における不正検知ECU及び他のECUは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア(デジタル回路等)によりその機能を実現することとしても良い。
(17)上記実施の形態における各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしても良い。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAM等を含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全部を含むように1チップ化されても良い。また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
(18)上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしても良い。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしても良い。
(19)本開示の一態様としては、例えば図8、図9等に示す不正検知方法であるとしても良い。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本開示の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本開示の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本開示の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
(20)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本開示の範囲に含まれる。