(57)【要約】【課題】不正な操作を行うことができない。【解決手段】スレーブノードは、他のスレーブノードへ伝送する情報が設定されたフレームをバスへ送信する（Ｓ２１）。攻撃者は、フレームが送信されると同時に、不正なレスポンスをバスへ送信する（Ｓ３１）。スレーブノードは、バスの状態を監視し、フレームのデータとバス上のデータとが一致しないビットエラーを検知する（Ｓ２２）。スレーブノードは、ビットエラーを検知したら、ビットエラーが発生した位置からフレームの終了位置までバス上で転送されるデータを無効化する防御処理を実施する（Ｓ２３）。【選択図】図８
2018007130.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信装置がバスにより接続された通信システムであって、
上記通信装置は、
他の通信装置へ伝送する情報が設定されたフレームを上記バスへ送信するフレーム送信部と、
上記バスの状態を監視し、上記フレームのデータと上記バス上のデータとが一致しないビットエラーを検知するエラー検知部と、
上記ビットエラーを検知したら、上記ビットエラーが発生した位置から上記フレームの終了位置まで上記バス上で転送されるデータを無効化する防御処理を実施する防御処理部と、
を含む通信システム。
【請求項２】
請求項１に記載の通信システムであって、上記防御処理部によって実施される防御処理が、上記バス上で転送されるデータを無効化する防御信号を送信することを特徴とする通信システム。
【請求項３】
請求項２に記載の通信システムであって、上記防御信号が、上記バス上で転送されるデータを上書きするものであること特徴とする通信システム。
【請求項４】
請求項２に記載の通信システムであって、上記防御処理部が、ビットエラーを検知した信号線とは異なる信号線を用いて、上記バス上で転送されるデータを無効化する防御信号を送信することを特徴とする通信システム。
【請求項５】
請求項１に記載の通信システムであって、
上記複数の通信装置は、Ｎを通信装置の台数として、１台のマスターノードとＮ−１台のスレーブノードとからなり、
上記スレーブノードは、上記防御処理を実施した後に、上記ビットエラーの発生を通知する情報が設定されたフレームを上記バスへ送信するエラー通知部をさらに含む、
通信システム。
【請求項６】
請求項５に記載の通信システムであって、
上記マスターノードは、上記ビットエラーの発生を通知する情報が設定されたフレームを受信すると、安全状態へ移行する指示を示す情報が設定されたフレームを上記バスへ送信する状態移行指示部をさらに含み、
上記スレーブノードは、上記安全状態へ移行する指示を示す情報が設定されたフレームを受信すると、安全状態へ移行する状態移行部をさらに含む、
通信システム。
【請求項７】
請求項１に記載の通信システムであって、
上記防御処理を実施した後に、安全状態へ移行する指示を示す情報が設定されたフレームを上記バスへ送信する状態移行指示部をさらに含む、
通信システム。
【請求項８】
複数の通信装置がバスにより接続された通信システムにおいて用いられる上記通信装置であって、
他の通信装置へ伝送する情報が設定されたフレームを上記バスへ送信するフレーム送信部と、
上記バスの状態を監視し、上記フレームのデータと上記バス上のデータとが一致しないビットエラーを検知するエラー検知部と、
上記ビットエラーを検知したら、上記ビットエラーが発生した位置から上記フレームの終了位置まで上記バス上で転送されるデータを無効化する防御処理を実施する防御処理部と、
を含む通信装置。
【請求項９】
複数の通信装置がバスにより接続された通信システムが実行する通信方法であって、
第一の通信装置のフレーム送信部が、第二の通信装置へ伝送する情報が設定されたフレームを上記バスへ送信するフレーム送信ステップと、
上記第一の通信装置のエラー検知部が、上記バスの状態を監視し、上記フレームのデータと上記バス上のデータとが一致しないビットエラーを検知するエラー検知ステップと、
上記第一の通信装置の防御処理部が、上記ビットエラーを検知したら、上記ビットエラーが発生した位置から上記フレームの終了位置まで上記バス上で転送されるデータを無効化する防御処理を実施する防御処理ステップと、
を含む通信方法。
【請求項１０】
請求項９に記載の通信方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御機器で用いる通信技術に関する。
【背景技術】
【０００２】
自動車や船舶、航空機、その他の制御機器等の内部では、エレクトロニックコントロールユニット（ECU: Electronic Control Unit）と呼ばれるマイクロコンピュータが複数個搭載されており、電子制御が行われている。例えば自動車では、複数のＥＣＵやセンサ間で制御情報のデータ転送を行う際に、駆動系の制御ではController Area Network（CAN）、ボディ系の制御ではLocal Interconnect Network（LIN）といった制御用の車載通信プロトコルが一般的に利用されている。このような車載通信プロトコルを用いて、車速、エンジン回転数、舵角、故障情報等の車載制御情報に関するデータの送受信が、ＥＣＵ間やセンサ間で行われている。
【０００３】
例えば、ＬＩＮ通信プロトコルは、図１に示すように、単一のマスターノード１および複数のスレーブノード２−１，２−２がＬＩＮバス３に接続されて構成される。ＬＩＮバス３は通常１本のメタル線で構成されるシリアルバスである。図１の例ではスレーブノードを２個のみ図示しているが、ＬＩＮ通信プロトコルでは最大１５個のスレーブノードを用いることが可能である。ＬＩＮ通信プロトコルの基本的な通信単位はフレームと呼ばれ、フレームにはヘッダーとレスポンスの２種類がある。ヘッダーは、ブレーク（Sync break）、同期バイト（Sync field）、識別子（ID field）の３つの領域から構成されるフレームである。レスポンスは、データ（Data field）、チェックサム（Checksum field）の２つの領域から構成されるフレームである。データ領域は最大８バイトであり、チェックサムは１バイトである。
【０００４】
ＬＩＮ通信プロトコルによる通信は、マスターノード１が相手先のスレーブノード２の識別子（図１の例では、「ID: 0x01」）を含むヘッダーを送信することで開始される。このとき、ヘッダーはＬＩＮバス３上にブロードキャストされ、該当する識別子「ID: 0x01」を持つスレーブノード２−１のみが受信し、そのヘッダーに対するレスポンスを送信する。次に、受信ノードに対応する識別子（図１の例では、「ID: 0x02」）を持つスレーブノード２−２がレスポンスを受信する。ＬＩＮ通信プロトコルの詳細については、非特許文献１を参照されたい。
【０００５】
車載通信プロトコルでは、データの送信を行うＥＣＵ（以下、「送信ノード」と呼ぶ）が、バス上に送信したデータが正しくバス上に流れているかを確認するために、バス上に流れているデータをバイト単位またはビット単位で監視し、自身が送信したデータとバス上のデータが一致しているかを確認する。もし、両者が一致していなければ、送信ノードは何らかの通信エラーが起きたと判断し（以下、このエラーを「ビットエラー」と呼ぶ）、バスへのデータ送信を停止することが一般的に行われている（例えば、非特許文献２参照）。このように、ビットエラーを検出した場合に送信ノードがバスへのデータ送信を停止することにより、誤ったデータをバス上に送信しないように制御している。なお、ＬＩＮ通信プロトコルでは、通信エラーを検出する方法については仕様で決められているが、通信エラーを検出した後の処理については規定されておらず、アプリケーションが任意に実装することが可能となっている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】ISO/DIS 17987-3.2, “Road vehicles -- Local Interconnect Network (LIN) -- Part 3: Protocol specification, ICS: 01.040.43; 43.020, 2015-12-05.
【非特許文献２】サイプレスセミコンダクタ，“F2MC-16FX Family MB96600 Series LINの使用方法”，AN704-00007-2v0-J，2.0版，2012年4月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の車載通信プロトコルの実装では、送信ノードと受信ノードとの間で正しいデータ伝送を行うために、ビットエラーが検出された場合には、一般的に、送信ノードがデータ送信を停止することを行っていた。しかしながら、このような実装では、攻撃者が不正データをバス上に送信し、受信ノードにそのデータが正しいものと誤認識させることにより、不正な挙動を誘発して自動車が危険な状況に陥る可能性があった。このような攻撃方法には、レスポンスの衝突による攻撃と、ヘッダーの衝突による攻撃の２種類がある。以下、各攻撃方法の詳細を順に説明する。
【０００８】
図２を参照して、レスポンスの衝突による攻撃の流れを説明する。まず、マスターノード１がヘッダー（図２の例では、「ID: 0x01」）をＬＩＮバス３上に送信する。次に、識別子「ID: 0x01」を持つスレーブノード２−１がヘッダーに応じてレスポンスを送信する。このとき、同時に、攻撃者４が何らかの方法でＬＩＮバス３にアクセスし、不正なレスポンスを送信する。これにより、正規のレスポンスと不正なレスポンスの衝突が起きる。スレーブノード２−１は例えばバイト単位でＬＩＮバス３上のデータを監視しているとすると、ビットエラーを検知して衝突が起きたバイト以降のデータ送信を停止する。一方、攻撃者４は衝突を発生させたバイトから連続して不正なレスポンスを送信する。これにより、ＬＩＮバス３上には攻撃者４が送信した不正なレスポンスのみが送信される。受信ノードであるスレーブノード２−２は不正なレスポンスを正規のレスポンスと誤認識して受信してしまい、不正な挙動が誘発されることになる。
【０００９】
図３に、レスポンスの衝突による攻撃のタイムチャートを示す。まず、マスターノードがヘッダーをバス上に送信する。次に、ヘッダーを受信したスレーブノードがレスポンス（図３の例では、「0xAA ……」）を送信する。同時に、攻撃者が不正なレスポンス（図３の例では、「0xA0 0x01 0x02 0x03」）をバス上に送信する。これにより、１バイト目（「0xAA」と「0xA0」）でレスポンスの衝突が起きる。スレーブノードはビットエラーを検知してレスポンスの２バイト目以降の送信を停止するが、攻撃者は不正なレスポンスの送信を継続するため、バス上のデータは不正なレスポンス（「0xA0 0x01 0x02 0x03」）のみとなる。
【００１０】
図４を参照して、ヘッダーの衝突による攻撃を説明する。攻撃者がヘッダーの衝突を故意に引き起こすことにより、スケジュールに記載された送受信の順番を変え、かつ、不正なレスポンスを正しいものとして受信ノードに受信および解釈させることが可能となる。ここで、スケジュールとはマスターノードのみが所有する、送信タイミングや送信の順番が定義されている情報である。
【００１１】
まず、マスターノード１がヘッダー（図４の例では、「ID: 0x02」）をＬＩＮバス３上に送信する。このとき、同時に、攻撃者４が何らかの方法でＬＩＮバス３にアクセスして、不正なヘッダー（図４の例では、「ID: 0x01」）をＬＩＮバス３上に送信する。これにより、ＬＩＮバス３上には不正なヘッダー（ID：0x01）がブロードキャストされるため、本来は識別子「ID：0x02」を持つスレーブノード２−２が受信および解釈すべきヘッダーが、スレーブノード２−１により受信および解釈されることになる。以降は、上述したレスポンスの衝突による攻撃と同様にして、スレーブノード２−２に不正なレスポンスを受信させ、不正な挙動を誘発させることが可能となる。
【００１２】
この発明は、上述のような点に鑑みて、攻撃者が不正なデータをバス上に送信したとしても、不正な操作を行うことができない通信技術を提供することである。
【課題を解決するための手段】
【００１３】
上記の課題を解決するために、この発明の通信システムは、複数の通信装置がバスにより接続された通信システムであって、通信装置は、他の通信装置へ伝送する情報が設定されたフレームをバスへ送信するフレーム送信部と、バスの状態を監視し、フレームのデータとバス上のデータとが一致しないビットエラーを検知するエラー検知部と、ビットエラーを検知したら、ビットエラーが発生した位置からフレームの終了位置までバス上で転送されるデータを無効化する防御処理を実施する防御処理部と、を含む。
【発明の効果】
【００１４】
この発明によれば、攻撃者が不正なデータをバス上に送信したとしても、異常を検知した直後に不正なデータを無効化する防御処理を実施するため、不正な操作を行うことができなくなる。
【図面の簡単な説明】
【００１５】
【図１】図１は、従来の車載通信プロトコルを説明するための図である。
【図２】図２は、レスポンスの衝突による攻撃を説明するための図である。
【図３】図３は、レスポンスの衝突による攻撃を説明するための図である。
【図４】図４は、ヘッダーの衝突による攻撃を説明するための図である。
【図５】図５は、通信システムの機能構成を例示する図である。
【図６】図６は、通信装置（マスターノード）の機能構成を例示する図である。
【図７】図７は、通信装置（スレーブノード）の機能構成を例示する図である。
【図８】図８は、レスポンスの衝突による攻撃に対する通信方法の処理手続きを例示する図である。
【図９】図９は、パラレル通信におけるバスの構成を説明するための図である。
【図１０】図１０は、レスポンスの衝突による攻撃に対する防御信号を説明するための図である。
【図１１】図１１は、防御信号により異常を検知する構成を説明するための図である。
【図１２】図１２は、ヘッダーの衝突による攻撃に対する通信方法の処理手続きを例示する図である。
【図１３】図１３は、データの衝突による攻撃に対する通信方法の処理手続きを例示する図である。
【発明を実施するための形態】
【００１６】
この発明の通信技術では、ノード（ＥＣＵやセンサ）間でのデータ送受信に用いる車載通信プロトコルにおいて、データ送信時にビットエラーが発生した場合、不正なデータを無効化する防御処理を実施し、安全状態へ移行することを示す信号をバス上に送信する。また、安全状態に移行した後に異常が連続しなければ正常状態へ復帰することを示す信号をバス上に送信する。この実装により、攻撃者が不正なデータをバス上に送信することで、正規のデータの送信を停止させると共に、不正な挙動を誘発する不正なデータを通信に挿入したとしても、送信ノードが実施した防御処理により不正なデータが無効化され、安全な状態へ移行する。これにより、攻撃者が不正なデータをバス上に送信したとしても不正な挙動を誘発することができなくなる。
【００１７】
また、例えば自然環境の影響等、意図的な攻撃ではない要因により、送信ノードがバス上に送信したデータの一部が変化した場合であっても、送信ノードがビットエラーを検知して受信ノードへ異常が起きたことを通知し、全ノードが安全状態に移行することができ、その後に正常状態へ復帰することが可能である。そのため、従来技術に比べて、車載通信プロトコルの完全性を担保できる。
【００１８】
すなわち、この発明の通信技術は、攻撃者によって攻撃された可能性の高い状況で、攻撃者が送信する不正データを有効にしないように防御処理で無効化し、異常が連続で続かなければ自動で正常状態に復元することがポイントである。また、例えば自然環境の影響等、意図的な攻撃とは異なる要因でデータ値が変化したとしても、同等の処理を用いて自動で正常状態に復元することができる点もポイントとなる。
【００１９】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００２０】
実施形態の通信システムは、図５に示すように、通信装置（マスターノード）１、N（1≦N≦15）台の通信装置（スレーブノード）２−１，…，２−Ｎを含み、各通信装置はバス３により接続される。バス３には、攻撃者４が何らかの方法でアクセス可能となっているものとする。通信装置（マスターノード）１は、図６に示すように、フレーム送信部１１、エラー検知部１２、防御処理部１３、および状態移行指示部１４を含む。通信装置（スレーブノード）２−ｎ（ただし、ｎは１以上Ｎ以下の整数）は、図７に示すように、フレーム送信部２１、エラー検知部２２、防御処理部２３、エラー通知部２４、および状態移行部２５を含む。この通信システムが後述する各ステップの処理を行うことにより実施形態の通信方法が実現される。
【００２１】
実施形態の通信装置は、車載通信プロトコルにより通信を行う機能を備えたマイクロコンピュータもしくはマイクロコントローラであり、予めフラッシュメモリにインストールされたコンピュータプログラムを実行することにより、後述する各構成部の処理を実現する。通信装置は、車載通信プロトコルによる制御の対象とされる車体装備（例えば、パワーウィンドウや電動ミラー、エアコン、オーディオなど）に組み込まれて利用される。
【００２２】
以下、図８を参照して、実施形態の通信方法の処理手続きの一例を説明する。ここでは、レスポンスの衝突による攻撃を例として説明する。
【００２３】
ステップＳ１１において、マスターノード１のフレーム送信部１１は、受信ノードであるスレーブノード２−ｎの識別子を設定したヘッダーをバス３へ送信する。ヘッダーはバス３を通じてすべてのスレーブノード２−１，…，２−Ｎへブロードキャストされ、ヘッダーに設定された識別子をもつスレーブノード２−ｎのみがヘッダーを受信する。
【００２４】
ステップＳ２１において、スレーブノード２−ｎのフレーム送信部２１は、受信したヘッダーを解釈して所望の処理を実行し、その応答となるレスポンスをバス３へ送信する。ここでは、レスポンスは８バイトのデータ領域をもつものとする。
【００２５】
ステップＳ３１において、攻撃者４は、スレーブノード２−ｎからレスポンスが送信されると同時に、不正な挙動を誘発するための不正なデータが設定された不正なレスポンスをバス３へ送信する。ここでは、不正なレスポンスは、正規のレスポンスと１バイト目が異なるデータをもつものとする。これにより、スレーブノード２−ｎが送信した正規のレスポンスと攻撃者４が送信した不正なレスポンスとがバス３上で衝突を起こす。
【００２６】
ステップＳ２２において、スレーブノード２−ｎのエラー検知部２２は、バス３上のデータをバイト単位で監視し、自身が送信したデータとバス３上のデータとを比較してビットエラーを検知する。ここでは、１バイト目が異なる不正なレスポンスが送信されたため、１バイト目でビットエラーが検知される。
【００２７】
ステップＳ２３において、スレーブノード２−ｎの防御処理部２３は、エラー検知部２２においてビットエラーが検知されると、エラーが発生したバイト位置の直後からレスポンスの終了位置まで、不正なレスポンスを無効化するための防御処理を実施する。この防御処理としては複数の実装が考えられる。例えば、バス３がシリアル通信の場合には、（１）絶縁状態にスイッチングする、（２）バス３上で転送されるデータを無効化する防御信号を送信する、などが考えられる。データを無効化する防御信号としては、（２−１）バス３上で転送されるデータを上書きする防御信号や、（２−２）バス３に対して異常な電位を付与する防御信号、などが考えられる。また、例えば、バス３がパラレル通信の場合には、（２−３）データを無効化する防御信号を送る際に、ビットエラーを検知した信号線とは異なる信号線を用いて、データを無効化する防御信号を送信することができる。
【００２８】
（２−１）バス３上で転送されるデータを上書きする防御信号について、より詳しく説明する。例えば、１バイト目でビットエラーが検知された場合、２バイト目から８バイト目までの７バイトとチェックサム１バイトに「0x00」が設定された信号を防御信号として送信する。車載通信プロトコルでは、物理層の仕様として０と１が同時に送信された場合、０を優先して伝送することが規定されているため、バス３上では電気的に０が優先して送信される。そのため、攻撃者４が２バイト目以降に不正なデータを送信したとしても、防御信号により上書きされて、他のノードが不正なレスポンスを受信することがなくなる。ここでは、１バイト目でビットエラーが発生する例を説明したが、他のバイト位置（２バイト目から８バイト目のいずれか）で衝突が起きた場合も同様である。
【００２９】
（２−２）バス３に対して異常な電位を付与する防御信号は、例えば、ＣＡＮのような複数線による通信プロトコルにおいて、エラー検知後に１線のみに特定の電位を付与するものである。このとき、各ノードには特定の信号線から特定の電位を受け取ると異常値と認識して受信しないような機能を持たせておく。
【００３０】
（２−３）パラレル通信の場合、図９に示すように、処理したい内容を示すデータを通信するＮ本の信号線Ｓｉｇ１−１，…，Ｓｉｇ１−Ｎと、それらのデータが有効か無効かを示すデータを通信する信号線Ｓｉｇ２とによりノード間が接続される構成となる。このとき、いずれかの信号線Ｓｉｇ１−１，…，Ｓｉｇ１−Ｎでエラーを検知した場合、エラーを検知したビットまたはバイト以降に信号線Ｓｉｇ２によってデータを無効化する防御信号を送信する。信号線Ｓｉｇ２により送信する防御信号の論理値は、物理層の仕様として電気的に優先される側の論理値に設定することで、データの完全性を守ることができる。
【００３１】
図１０に、レスポンスの衝突による攻撃に対してバス上のデータを上書きする防御信号を送信する際のタイムチャートを示す。まず、マスターノードがヘッダーをバス上に送信する。次に、ヘッダーを受信したスレーブノードがレスポンス（図１０の例では、「0xAA ……」）を送信する。同時に、攻撃者が不正なレスポンス（図１０の例では、「0xA0 0x01 0x02 0x03」）をバス上に送信する。これにより、１バイト目（「0xAA」と「0xA0」）でレスポンスの衝突が起きる。ここで、スレーブノードはビットエラーを検知して２バイト目以降に「0x00」を設定した防御信号を送信する。攻撃者は不正なレスポンスの送信を継続するが、防御信号の方が優先されるため、バス上に不正なレスポンスが送信されることを防ぐことができる。
【００３２】
ステップＳ１２において、マスターノード１のフレーム送信部１１は、スケジュールに従って、次のヘッダーをバス３へ送信する。ヘッダーはバス３を通じてすべてのスレーブノード２−１，…，２−Ｎへブロードキャストされる。このときヘッダーに設定される識別子は、いずれのスレーブノードのものであってもよい。
【００３３】
ステップＳ２４において、スレーブノード２−ｎのエラー通知部２４は、ヘッダー内の識別子の値に関わらず、異常が起きていることをマスターノード１へ通知するためのレスポンスをバス３へ送信する。ここでは、１バイト目から８バイト目までがすべて「0x00」であるフレームを送信する。チェックサムは「0x00」でもよいし、通常のチェックサムの計算手法に基づいて算出した値を設定してもよい。
【００３４】
ステップＳ１３において、マスターノード１の状態移行指示部１４は、スレーブノード２−ｎから異常が起きていることを通知するレスポンスを受信すると、各スレーブノード２−１，…，２−Ｎを安全状態へ移行させるためのヘッダーをバス３上に送信する。このとき、ヘッダーに設定する識別子は「ID: 0x00」とする。状態移行指示部１４は、安全状態へ移行させるためのヘッダーを送信するか否かを判断するため、各スレーブノード２−１，…，２−Ｎがバス３上に送信するレスポンスを監視する。
【００３５】
ステップＳ２５において、スレーブノード２−ｎの状態移行部２５は、マスターノード１から安全状態へ移行させるためのヘッダーを受信すると、安全状態へ移行する。ここで、安全状態とは、例えば、自動車を低速で動作する等、最低限の動作のみができる状態を意味する。
【００３６】
ステップＳ１４において、マスターノード１の状態移行指示部１４は、各スレーブノード２−１，…，２−Ｎの状態を監視するためのヘッダーをバス３へ送信する。スレーブノード２−ｎから防御信号や異常を通知するためのレスポンスが一定の回数連続してバス３へ送信された場合、スレーブノード２−ｎが危険な状態であるものとみなし、スレーブノード２−ｎを危険状態へ移行させるためのヘッダーをバス３へ送信する。一方、スレーブノード２−ｎから正常なレスポンスがバス３へ送信された場合、スレーブノード２−ｎが正常な状態に復帰したと判断し、スレーブノード２−ｎの安全状態を解除して正常状態へ移行させるためのヘッダーをバス３へ送信する。ここで、安全状態を解除するためのヘッダーは、例えば、識別子が「0xFB（２ビットのパリティ0x11＋６ビットのフレームID: 0x3B）」を含むものとする。
【００３７】
ステップＳ２６において、スレーブノード２−ｎの状態移行部２５は、マスターノード１から危険状態へ移行させるためのヘッダーを受信すると、安全状態から危険状態へ移行する。危険状態に移行すると、スレーブノード２−ｎはバス３から論理的に切り離される。同時に、例えば、運転者に対して警告表示を示すなどして、異常が発生していることを通知する。
【００３８】
ステップＳ２７において、スレーブノード２−ｎの状態移行部２５は、マスターノード１から正常状態へ移行させるためのヘッダーを受信すると、安全状態から正常状態へ移行する。
【００３９】
上述のステップＳ２４では、マスターノード１に異常を知らせるために、スレーブノード２−ｎはヘッダー内の識別子の値に関わらず、データ領域がすべて「0x00」のレスポンスを送信するものとした。このとき、マスターノード１の状態移行指示部１４を、チェックサムを含めて最下位バイトから２バイト以上の「0x00」が続いたレスポンスを受信したら異常が起きたと判断するように構成することで、スレーブノード２−ｎの防御処理部２３が送信した防御信号によりエラーを通知することができる。例えば、図１１に示すように、データ領域の６バイト目で正規のレスポンスと不正なレスポンスの衝突が発生した場合、データ領域の７バイト目からチェックサムまでの３バイトで「0x00」が続くため、これを受信したマスターノード１は異常が起きたと判断することができる。この場合、スレーブノード２−ｎはエラー通知部２４を備えなくてもよく、上述のステップＳ１２およびＳ２４は省略することができる。
【００４０】
上述のステップＳ１３では、安全状態へ移行するためのヘッダーを各スレーブノード２−１，…，２−Ｎに送信したが、あらかじめ識別子（６ビット）の中に安全状態に移行するフラグを意味するビットを割り当てておいてもよい。例えば、識別子の最下位ビットに安全状態に移行するためのビットを割り当てたとする。ここでは、識別子の最下位ビットが１のときは正常状態を意味し、０のときは異常が起きて安全状態に移行する状態を意味するものとする。例えば、正常状態の識別子は「ID: 0x11（二進数表記で100010：左端が最下位ビット）」、安全状態に移行する場合は「ID: 0x10（二進数表記で000010：左端が最下位ビット）」となる。このとき、ビットエラーを検知したスレーブノード２−ｎが防御信号を送信した後、マスターノード１がスケジュールに沿ってヘッダーを送信する際に、最下位ビットを０に設定した識別子を含むヘッダーを送信する。各スレーブノード２−１，…，２−Ｎは識別子の最下位ビットを０に設定したヘッダーを受信したら安全状態に移行する。スレーブノード２−ｎからのレスポンスが正常に送信され、マスターノード１がスレーブノード２−ｎは正常状態に戻ったと判断した場合、次のヘッダーからは識別子の最下位ビットを１に設定したヘッダーを送信する。このようにして各スレーブノード２−１，…，２−Ｎは正常状態に復帰する。
【００４１】
上述のステップＳ１４およびＳ２７では、マスターノード１が安全状態を解除することを示す識別子を含むヘッダーを送信することにより、スレーブノード２−ｎが安全状態から正常状態へ復帰した。このとき、スレーブノード２−ｎに異常がなければ、マスターノード１が識別子を含むヘッダーを送付することなく、スレーブノード２−ｎが自律的に安全状態を解除してもよい。例えば、安全状態で正常な通信が行われた場合（すなわち、送信ノードがビットエラーを検知しなかった場合）、送信ノードであるスレーブノード２−ｎは自然に正常状態に移行する。このとき、他のスレーブノードは安全状態のままであるが、他のスレーブノードも自身が送信ノードとなったときに異常がなければ随時安全状態を解除すればよい。
【００４２】
以下、図１２を参照して、実施形態の通信方法の処理手続きの他の例を説明する。ここでは、ヘッダーの衝突による攻撃を例として説明する。
【００４３】
ステップＳ１１において、マスターノード１のフレーム送信部１１は、受信ノードであるスレーブノード２−ｎの識別子を設定したヘッダーをバス３へ送信する。
【００４４】
ステップＳ３２において、攻撃者４は、マスターノード１からヘッダーが送信されると同時に、例えば正規のヘッダーとは異なる識別子が設定された不正なヘッダーをバス３へ送信する。これにより、マスターノード１が送信した正規のヘッダーと攻撃者４が送信した不正なヘッダーとがバス３上で衝突を起こす。
【００４５】
ステップＳ１５において、マスターノード１のエラー検知部１２は、バス３上のデータをバイト単位もしくはビット単位で監視し、自身が送信したデータとバス３上のデータとを比較してビットエラーを検知する。
【００４６】
ステップＳ３１において、攻撃者４は、不正なヘッダーを送信した後に、不正な挙動を誘発するためのデータが設定された不正なレスポンスをバス３へ送信する。
【００４７】
ステップＳ１６において、マスターノード１の防御処理部１３は、エラー検知部１２においてビットエラーが検知されると、不正なレスポンスを無効化するための防御処理を実施する。ここでは、データ領域の１バイト目から８バイト目まですべて「0x00」が設定された信号を防御信号として送信する。この防御信号により攻撃者４が送信した不正なレスポンスが上書きされるため、他のノードが不正なレスポンスを受信することがなくなる。
【００４８】
以下、ステップＳ１３からステップＳ２７までの処理は、上述のレスポンスの衝突による攻撃の場合と同様である。
【００４９】
上述の実施形態では、１台のマスタノードとＮ−１台のスレーブノードによるマスター・スレーブ方式の通信システムを例として説明したが、例えば、全ノードがマスターノードとなり得るマルチマスター方式としても、この発明の通信技術は適用できる。図１３にマルチマスター方式においてデータの衝突による攻撃に対応する実施形態を示す。図１３の例では、ノードＡが送信したデータに対して攻撃者が不正なデータを衝突させる攻撃を行うが、ノードＡがエラーを検知し、防御処理を実施している。ステップＳ１５以降の処理は、マスター・スレーブ方式のヘッダ衝突による攻撃の場合と同様である。
【００５０】
このように構成することにより、攻撃者が不正なデータをバス上に送信したとしても、各ノードは異常を検知した直後に防御処理を実施するため、不正なデータが無効化される。その結果、攻撃者が任意の不正なデータをバス上に送信することにより不正な操作を行う攻撃ができなくなるという効果がある。
【００５１】
また、自然環境等の攻撃ではない要因で正規データの一部が変化しても、変化したデータは防御処理で無効化され、異常が連続しなければ正常状態に復帰することが可能である。そのため、車載通信プロトコルの完全性を従来技術に比べてより担保できる。
【００５２】
さらに、この発明は既存の車載通信プロトコルを基にしているため、容易な実装方法により実現できる。また、データ衝突時にマスターノードがデータを送信する場合やヘッダーの衝突時には、衝突が起きたバイトに続いて防御信号を送信するオーバーヘッド（通信量）のみであるため、通常の車載通信プロトコルと比較した全体のオーバーヘッドは少ない。
【００５３】
この発明の通信技術によるヘッダーまたはレスポンスの衝突による攻撃への対策は、技術的に組み合わせることを阻害する要因がない限り、他の技術による異なる対策法と同時に実装してもよい。
【００５４】
上述の実施形態では、ＬＩＮ通信プロトコルを基にして、この発明の技術を適用する例を説明したが、この発明の適用可能な範囲はＬＩＮ通信プロトコルに限定されず、不正なデータを通信路上に送信することで不正な操作を行う攻撃が行われ得る通信プロトコルに対して汎用的に適用することが可能である。特に、この発明の通信技術は、ビットエラー検知が実装された車載通信プロトコルへの応用が有効である。
【００５５】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００５６】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００５７】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００５８】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００５９】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００６０】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００６１】
１  通信装置（マスターノード）
２  通信装置（スレーブノード）
３  バス
４  攻撃者
【図１】
2018007130.tif 000003
【図２】
2018007130.tif 000004
【図３】
2018007130.tif 000005
【図４】
2018007130.tif 000006
【図５】
2018007130.tif 000007
【図６】
2018007130.tif 000008
【図７】
2018007130.tif 000009
【図８】
2018007130.tif 000010
【図９】
2018007130.tif 000011
【図１０】
2018007130.tif 000012
【図１１】
2018007130.tif 000013
【図１２】
2018007130.tif 000014
【図１３】
2018007130.tif 000015