(57)【要約】【課題】攻撃者の傍受によるデータ解析を困難にし、セキュリティ強度を向上できること。【解決手段】車両１００に設けられる車載システムは、送信側のＥＣＵ１０１Ａと受信側のＥＣＵ１０１Ｂとの間でデータの送受信を行う。送信側のＥＣＵ１０１Ａのメッセージ認証部は、送信データから生成したＭＡＣ値と、前回送信した送信データから生成したＭＡＣ値とに基づく差分データを生成し、送信データとともに差分データを含むＭＡＣ値を送信する。受信側のＥＣＵ１０１Ｂのメッセージ認証部は、受信データからＭＡＣ値を生成し、生成したＭＡＣ値と前回の受信データから生成したＭＡＣ値とに基づく差分データを生成し、生成した差分データと受信データに含まれる差分データとを比較することにより、受信データの正当性を判定する。【選択図】図３
2019080241.tif 000002
【特許請求の範囲】
【請求項１】
車両に設けられる送信側装置と受信側装置との間でデータの送受信を行う車載システムにおいて、
前記送信側装置は、
送信データから生成したＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値と、前回送信した送信データから生成したＭＡＣ値とに基づく差分データを生成し、前記送信データとともに前記差分データを含む前記ＭＡＣ値を送信し、
前記受信側装置は、
受信データからＭＡＣ値を生成し、生成したＭＡＣ値と前回の受信データから生成したＭＡＣ値とに基づく差分データを生成し、生成した前記差分データと前記受信データに含まれる差分データとを比較することにより、受信データの正当性を判定することを特徴とする車載システム。
【請求項２】
前記送信側装置は、
生成した前記ＭＡＣ値を所定データ量で複数に分割し、分割後の複数の前記ＭＡＣ値と、分割後の一部の前記ＭＡＣ値と前回送信時の対応する一部の前記ＭＡＣ値との差分を求めた差分データと、を再結合して送信し、
前記受信側装置は、
前記受信データに含まれる前記ＭＡＣ値と、前回の受信データから生成したＭＡＣ値を、前記送信側装置で分割された複数の前記ＭＡＣ値および前記差分データのそれぞれで比較することを特徴とする請求項１に記載の車載システム。
【請求項３】
前記送信側装置は、
前記送信データに連続するカウント値を含めて送信し、
前記受信側装置は、
前記受信データの前記カウント値をカウントし、カウント値の連続性に基づき前記受信データの欠損の有無を検出するカウンタを有し、
前記受信データの欠損時には、当該受信データに含まれ、受信できた分割後の複数の前記ＭＡＣ値を用い、前回の受信データから生成した前記ＭＡＣ値と比較することで、前記受信データの正当性を判断することを特徴とする請求項２に記載の車載システム。
【請求項４】
前記送信側装置および前記受信側装置は、
前記差分データを間引く設定に基づき、当該間引いた差分データを送受信し、前記受信データの正当性を判断することを特徴とする請求項１〜３のいずれか一つに記載の車載システム。
【請求項５】
前記送信側装置および前記受信側装置は、
データの送信ごとに前記差分データの一部をシフト演算して送受信し、前記受信データの正当性を判断することを特徴とする請求項１〜４のいずれか一つに記載の車載システム。
【請求項６】
前記送信側装置および前記受信側装置は、
分割した複数の前記ＭＡＣ値と前記差分データのデータ長を可変する設定に基づき、当該可変したデータ長の前記ＭＡＣ値と前記差分データを送受信し、前記受信データの正当性を判断することを特徴とする請求項１〜５のいずれか一つに記載の車載システム。
【請求項７】
前記送信側装置および前記受信側装置は、
分割した複数の前記ＭＡＣ値と前記差分データの配置順を可変する設定に基づき、当該可変した配置順の前記ＭＡＣ値と前記差分データを送受信し、前記受信データの正当性を判断することを特徴とする請求項１〜６のいずれか一つに記載の車載システム。
【請求項８】
前記送信側装置および前記受信側装置は、
前記車両のＣＡＮバスを介して前記データの送受信を行うＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）であることを特徴とする請求項１〜７のいずれか一つに記載の車載システム。
【請求項９】
前記送信側装置および前記受信側装置は、
前記車両のＣＡＮバスを介して前記データの送受信を行うＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）と、
前記ＥＣＵによる前記データの送受信時に、前記ＭＡＣ値および前記差分データに関する認証処理を行うメッセージ認証部と、
を備えたことを特徴とする請求項１〜７のいずれか一つに記載の車載システム。
【請求項１０】
車両に設けられる送信側装置と受信側装置との間でデータの送受信を行う車載システムにおけるデータ送受信方法において、
前記送信側装置は、
送信データから生成したＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値と、前回送信した送信データから生成したＭＡＣ値とに基づく差分データを生成し、
前記送信データとともに前記差分データを含む前記ＭＡＣ値を送信し、
前記受信側装置は、
受信データからＭＡＣ値を生成し、
生成したＭＡＣ値と前回の受信データから生成したＭＡＣ値とに基づく差分データを生成し、
生成した前記差分データと前記受信データに含まれる差分データとを比較することにより、受信データの正当性を判定する、
ことを特徴とする車載システムにおけるデータ送受信方法。
【請求項１１】
前記送信側装置は、
生成した前記ＭＡＣ値を所定データ量で複数に分割し、
分割後の複数の前記ＭＡＣ値と、分割後の複数のＭＡＣ値の差分を求めた差分データとを再結合して送信し、
前記受信側装置は、
前記受信データに含まれる前記ＭＡＣ値と、前回の受信データから生成したＭＡＣ値を、前記送信側装置で分割された複数の前記ＭＡＣ値および差分データのそれぞれで比較する、
ことを特徴とする請求項１０に記載の車載システムにおけるデータ送受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両内でデータの送受信を行う車載システムおよび車載システムにおけるデータ送受信方法に関する。
【背景技術】
【０００２】
インターネットの普及により、通信データの改ざんやなりすましなど、通信特有の問題が増加している。これらの悪意をもったネット工作を防ぐための技術として、メッセージ認証がある。メッセージ認証では、メッセージにメッセージ認証コード（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）と呼ばれるデータを送信側で付加し、受信側でＭＡＣ値を検証することでデータの整合チェックを行う。
【０００３】
しかし、攻撃者側でも総当たり攻撃によりデータ収集し、データからハッシュ値（上記ＭＡＣ値）の規則性を見つけ、特定のハッシュ値をもつメッセージを探索する原像攻撃を行っている。原像攻撃では、複数種類の還元関数のレインボーテーブルなどが用いられる。
【０００４】
一方、通信側での総当たり攻撃の検知には、所定の攻撃回数が必要となり、最初から全ての攻撃を防ぐことは不可能である。総当たり攻撃が繰り返されると、結果として攻撃者にデータの蓄積を許してしまい、攻撃が成功する確率が高まる。
【０００５】
従来技術として、データの送信側がメッセージに基づいてＭＡＣ値を生成し、一部のＭＡＣ値を自身のパケットのカウント値に基づいて抜き出して分割ＭＡＣ値とし、メッセージに付加して送信する技術がある（例えば、下記特許文献１参照。）。また、データの送信側がメッセージを分割し、予め記憶された認証データと分割したメッセージとを結合し、共通鍵を用いて暗号データを生成し、送信する技術がある（例えば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−１５８２０４号公報
【特許文献２】特開２００５−０１２４６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術では、データとＭＡＣ値が対応して送信されるため、これらデータとＭＡＣ値の規則性を見つけるレインボー攻撃のような原像攻撃には対応できず、セキュリティ強度を向上できない。
【０００８】
一つの側面では、本発明は、攻撃者の傍受によるデータ解析を困難にし、セキュリティ強度を向上できることを目的とする。
【課題を解決するための手段】
【０００９】
一つの案では、車載システムは、車両に設けられる送信側装置と受信側装置との間でデータの送受信を行う車載システムにおいて、前記送信側装置は、送信データから生成したＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値と、前回送信した送信データから生成したＭＡＣ値とに基づく差分データを生成し、前記送信データとともに前記差分データを含む前記ＭＡＣ値を送信し、前記受信側装置は、受信データからＭＡＣ値を生成し、生成したＭＡＣ値と前回の受信データから生成したＭＡＣ値とに基づく差分データを生成し、生成した前記差分データと前記受信データに含まれる差分データとを比較することにより、受信データの正当性を判定することを要件とする。
【発明の効果】
【００１０】
一つの実施形態によれば、攻撃者の傍受によるデータ解析を困難にし、セキュリティ強度を向上できるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態にかかる車載システムのシステム構成例を示す図である。
【図２】図２は、実施の形態にかかる車載システムのハードウェア構成例を示す図である。
【図３】図３は、実施の形態にかかる車載システムによるデータの送受信の手順を示す説明図である。
【図４】図４は、実施の形態にかかる車載システムによるデータの送受信時に用いるＭＡＣ値の生成の手順を示す説明図である。
【図５】図５は、実施の形態にかかる車載システムのデータ送信処理例を示すフローチャートである。
【図６Ａ】図６Ａは、実施の形態にかかる車載システムのデータ受信処理例を示すフローチャートである。（その１）
【図６Ｂ】図６Ｂは、実施の形態にかかる車載システムのデータ受信処理例を示すフローチャートである。（その２）
【図６Ｃ】図６Ｃは、実施の形態にかかる車載システムのデータ受信処理例を示すフローチャートである。（その３）
【図７】図７は、実施の形態にかかる車載システムにおけるＭＡＣの他の分割例を説明する図である。
【発明を実施するための形態】
【００１２】
（実施の形態）
図１は、実施の形態にかかる車載システムのシステム構成例を示す図である。実施の形態の車載システムは、車両１００に搭載される複数のＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１０１を含む。
【００１３】
ＥＣＵ１０１は、車両１００に搭載されたエンジンやエアコン等各部の制御を行うために、車両１００の複数の各部にそれぞれ設けられる。ＥＣＵ１０１は、例えば、機能別に各種センサによる検出処理を行うセンサ系ＥＣＵ１０１ａ、車両１００の各部の制御を行う制御系ＥＣＵ１０１ｂがある。また、車両１００を運転するドライバの先進運転支援を行うＡＤＡＳ（Ａｄｖａｎｃｅｄ  Ｄｒｉｖｅｒ  Ａｓｓｉｓｔａｎｃｅ  Ｓｙｓｔｅｍ）＿ＥＣＵ１０１ｃ、車両１００を走行駆動する駆動部を制御する駆動系ＥＣＵ１０１ｄがある。
【００１４】
各機能のＥＣＵ１０１は、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バス１０３を介して互いにデータを送受信する。この際、ＥＣＵ１０１は、メッセージ認証部１０２により、送受信するメッセージにセキュリティをもたせるメッセージ認証処理を行う。
【００１５】
図２は、実施の形態にかかる車載システムのＥＣＵのハードウェア構成例を示す図である。ＥＣＵ１０１は、ＣＰＵ２０１、ＲＡＭ、ＲＯＭ等のメモリ２０２、センサ２０３、出力装置２０４、ＣＡＮ送受信ポート２０５、ＴＰＭ２０６、等を含む。ＴＰＭは、Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅの略であり、ＭＡＣの生成や鍵の管理をハードウェアで行う際に設けるセキュリティチップである。
【００１６】
ＣＰＵ２０１は、メモリ２０２のＲＯＭ等から制御プログラムを読み出して実行し、この際、メモリ２０２のＲＡＭ等を作業エリアとして使用することで、各ＥＣＵの機能を実現する。
【００１７】
ＥＣＵ１０１は、図１に示したように各機能別に複数設けられる。メッセージ認証部１０２は、ＥＣＵ１０１の外部に専用ハードウェアとして設けることもできる。この場合、メッセージ認証部１０２もＥＣＵ１０１と同等のハードウェア構成（例えば、ＬＳＩやＤＳＰ、ＣＰＵ、メモリ等）を有する。
【００１８】
また、ＥＣＵ１０１がメッセージ認証部１０２の機能を含む場合には、ＣＰＵ２０１は、メッセージ認証部１０２が行う送受信するデータに対するメッセージ認証の機能をプログラム実行することができる。
【００１９】
センサ２０３は、ＥＣＵ１０１の機能を実現する制御処理に必要な各種検知を行う。例えば、センサ２０３は、エンジンの回転数や温度、燃料の消費状態、エアコンの室内温度や湿度、消費電力、車両の速度や、加速度、移動距離、方向、重力、現在位置等を検知する。
【００２０】
出力装置２０４は、ＣＰＵ２０１が処理したデータ等をＥＣＵ１０１外部に出力する装置であり、例えば、ＥＣＵ１０１の外部に設ける計器や表示装置、操作パネルとの間で情報を入出力するための入出力インタフェース（ＩＦ）である。ＣＡＮ送受信ポート２０５は、ＣＡＮ１０３を介して他のＥＣＵ１０１とデータを送受信するための通信ＩＦである。
【００２１】
図３は、実施の形態にかかる車載システムによるデータの送受信の手順を示す説明図である。ＥＣＵ１０１間でのデータの送受信の状態を示し、縦軸には、送信側のＥＣＵ１０１Ａから受信側のＥＣＵ１０１Ｂに対する送信の回数を記載してある。ＭＡＣに対するデータ処理は、メッセージ認証部１０２が行うが、図３では、説明の便宜上、ＥＣＵ１０１がＭＡＣのデータ処理を行うものとして記載してある。
【００２２】
１回目の送信では、送信側装置であるＥＣＵ１０１Ａは、通信開始後の最初のメッセージとして、生成したＭＡＣ値自体に加工を施さない全体のＭＡＣ１（３０１）をデータ（例えば、８Ｂｙｔｅ＋カウント値）に付加して送信する（ステップＳ３０１）。
【００２３】
例えば、ＭＡＣ１は２０Ｂｙｔｅ（１６０ｂｉｔ）のデータ長である。ＭＡＣ生成のアルゴリズムは、ＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  ＭＡＣ）、ＣＭＡＣ（Ｃｉｐｈｅｒ−ｂａｓｅｄ  ＭＡＣ）等、各種アルゴリズムを用いることができる。
【００２４】
受信側装置であるＥＣＵ１０１Ｂは、１回目に受信したデータに対し、既存のＭＡＣ値を用いた通常のメッセージ検証を行う。この際、送信側のＥＣＵ１０１Ａ、および受信側のＥＣＵ１０１Ｂは、いずれも前回（１回目）のＭＡＣ値を不揮発領域（メモリ２０２）に保持しておく。
【００２５】
そして、実施の形態では、２回目以降の送信時には、送信側のＥＣＵ１０１Ａは、新しいＭＡＣ値をバイト（ビット）単位で３つに分割する。図示のように、例えば、ＭＡＣ２先頭３０２ａ（４Ｂｙｔｅ）、ＭＡＣ２中間３０２ｂ（１２Ｂｙｔｅ）、ＭＡＣ２末尾３０２ｃ（４Ｂｙｔｅ）、の３つに分割する。分割するＭＡＣのサイズは、送信側のＥＣＵ１０１Ａおよび受信側のＥＣＵ１０１Ｂで同じ値となるように予め定め、それぞれ設定しておく。
【００２６】
次に、送信側のＥＣＵ１０１Ａは、３分割したＭＡＣ２（３０２）のうちの先頭と末尾は生成したＭＡＣの値を加工せず、そのままＭＡＣ２先頭３０２ａと、ＭＡＣ２末尾３０２ｃと、に分割する。また、送信側のＥＣＵ１０１Ａは、１回目に送信したＭＡＣ１（３０１）についても同様に３分割し、３分割したＭＡＣ１（３０１）のうちの先頭と末尾は生成したＭＡＣの値を加工せず、そのままＭＡＣ１先頭３０１ａと、ＭＡＣ１末尾３０１ｃと、に分割する。
【００２７】
そして、実施の形態では、送信側のＥＣＵ１０１Ａは、中間部のＭＡＣについては、最初のＭＡＣ１（３０１）のＭＡＣ１中間３０１ｂと、２回目のＭＡＣ２（３０２）のＭＡＣ２中間３０２ｂのＭＡＣ値の差分を取った差分データ３０２ｄを用いる。ＥＣＵ１０１Ａは、不揮発領域（メモリ２０２）に保持しておいた最初のＭＡＣ１（３０１）のＭＡＣ１中間３０１ｂのデータを参照し、差分データ３０２ｄを算出する。
【００２８】
そして、送信側のＥＣＵ１０１Ａは、２回目の送信時のＭＡＣ値として、ＭＡＣ２先頭３０２ａと、差分データ３０２ｄ（ＭＡＣ２中間−ＭＡＣ１中間）と、ＭＡＣ２末尾３０２ｃ、の３つを連結する。そして、送信側のＥＣＵ１０１Ａは、この連結したＭＡＣ値をデータに付加して受信側のＥＣＵ１０１Ｂに送信する（ステップＳ３０２）。
【００２９】
なお、３回目の送信時は、送信データに付加するＭＡＣは、ＭＡＣ３先頭３０３ａ、ＭＡＣ３末尾３０３ｃ、差分データ（ＭＡＣ３中間−ＭＡＣ２中間）３０３ｄからなる。これらのＭＡＣ値をデータに付加して受信側のＥＣＵ１０１Ｂに送信する（ステップＳ３０３）。以降の送信時においても上記同様に、今回のＭＡＣ中間と前回までのＭＡＣ中間の値の差分データを算出し、差分データをＭＡＣ中間のデータとして送信する。
【００３０】
図４は、実施の形態にかかる車載システムによるデータの送受信時に用いるＭＡＣ値の生成の手順を示す説明図である。図４を用いて、上述したＭＡＣ中間のＭＡＣ値の生成を説明する。
【００３１】
送信側のＥＣＵ１０１Ａは、２回目以降のデータ送信時には、データに付加するＭＡＣ値は、ＭＡＣ２先頭３０２ａ（先頭の４Ｂｙｔｅ）と、ＭＡＣ２末尾３０２ｃ（末尾の４Ｂｙｔｅ）とを用いる。
【００３２】
そして、中間のＭＡＣ値については、２回目に送信するＭＡＣ２中間３０２ｂ（先頭から５〜１６Ｂｙｔｅ目の全１２Ｂｙｔｅ）と、１回目に送信したＭＡＣ１中間３０１ｂのＭＡＣ値（１２Ｂｙｔｅ）の値の差分を求める。求めた差分（１２Ｂｙｔｅ）を中間の差分データ３０２ｄとする。このように、２回目以降（回数ｎ）は、ｎ−１回目との差分を取ったものを、差分データ３０２ｄとする。
【００３３】
そして、送信側のＥＣＵ１０１Ａは、ＭＡＣ２先頭３０２ａと、差分データ３０２ｄと、ＭＡＣ２末尾３０２ｃ、の３つを連結したＭＡＣ（２０Ｂｙｔｅ）をデータに付加し、受信側のＥＣＵ１０１Ｂに送信する。
【００３４】
受信側のＥＣＵ１０１Ｂでは、メッセージ検証時に、受信したデータとカウント値に基づきＭＡＣ値を算出し、算出したＭＡＣ値と前回受信したＭＡＣ値とを比較する。この際、ＭＡＣ値は、先頭、末尾、差分データのそれぞれに対する比較を行う。
【００３５】
ここで、ＭＡＣの中間に位置する差分データ３０２ｄの他の生成方法について説明しておく。一つ目は、差分データ３０２ｄの間引きである。送信側のＥＣＵ１０１Ａは、ＭＡＣの中間に配置する差分データ３０２ｄを間引くことで、送信データ長を減らし、ＣＡＮバス１０３の負荷を軽減できる。上述した説明では、差分データ３０２ｄのデータ長を１２Ｂｙｔｅとしたが、例えば、４Ｂｙｔｅ間引いて８Ｂｙｔｅとすることで、送信データ長を４Ｂｙｔｅ削減することができる。
【００３６】
また、３回目以降の送信時には、送信側のＥＣＵ１０１Ａは、差分データ３０３ｄの末尾４Ｂｙｔｅを１Ｂｙｔｅずつシフト演算してもよい。例えば、図４に示すように、３回目の送信時に、差分データ３０３ｄを、（回数ｎ−２）％（ｎ−２を９で割った余り、例えば、１２−４＋１）のＢｙｔｅだけシフトしたデータとする。
【００３７】
この場合、３回目以降の送信時毎に送信データに載せるＢｙｔｅ位置は、送信毎にずらすことになり、１２Ｂｙｔｅ分が差分の先頭に達する毎に、再度末尾から送信データに載せる（送信２回目と同様の処理）ことを繰り返す。これにより、データの解析がより困難となり、さらにセキュリティ強度を向上できる。
【００３８】
送信側と受信側のメッセージ認証部１０２は、互いの予めの設定に基づき、上述した差分データの間引きやビットシフトのほかに、以下のように送受信するＭＡＣ値を変更できる。
【００３９】
例えば、３分割したＭＡＣの先頭、差分、末尾の各データ長をそれぞれ可変することができる。この場合、送信側のＥＣＵ１０１Ａが送信データにそれぞれのＭＡＣのデータ長を載せて送信し、後から変更可能としてもよい。また、データ長だけでなく、ＭＡＣの配置位置（先頭、差分、末尾の順番）を可変とすることもできる。
【００４０】
図５は、実施の形態にかかる車載システムのデータ送信処理例を示すフローチャートである。送信側のＥＣＵ１０１とメッセージ認証部１０２とが別体で設けられた例において（例えば、図１参照）、メッセージ認証部１０２が行うＭＡＣ値の生成手順について説明する。
【００４１】
メッセージ認証部１０２は、メモリ等の不揮発領域５０１を用いて、送信データの送信カウンタ５０１ａと、前ＭＡＣ値（前回送信時のＭＡＣ値）５０１ｂを保持する。なお、ＥＣＵ１０１Ａの初回電源ＯＮ（システムで１回）で送信カウンタ、前ＭＡＣ値は初期値「０」に設定される。
【００４２】
はじめに、メッセージ認証部１０２は、送信側のＥＣＵ１０１Ａの送信要求を待機する（ステップＳ５０１：Ｎｏのループ）。送信側のＥＣＵ１０１Ａから送信要求があれば（ステップＳ５０１：Ｙｅｓ）、送信データをＥＣＵ１０１Ａから受信する（ステップＳ５０２）。
【００４３】
次に、メッセージ認証部１０２は、最初（１回目）の送信であるかを判断する（ステップＳ５０３）。この際、メッセージ認証部１０２は、不揮発領域５０１を参照し、送信カウンタ５０１ａの値が「０」で、かつ前ＭＡＣ値５０１ｂの値が「０」であれば、最初の送信であると判断し（ステップＳ５０３：Ｙｅｓ）、ステップＳ５０４の処理に移行する。
【００４４】
一方、送信カウンタ５０１ａの値が「０」以外、あるいは前ＭＡＣ値５０１ｂの値が「０」以外であれば、メッセージ認証部１０２は、２回目以降の送信であると判断し（ステップＳ５０３：Ｎｏ）、ステップＳ５０６の処理に移行する。
【００４５】
ステップＳ５０４では、メッセージ認証部１０２は、不揮発領域５０１の送信カウンタ５０１ａをインクリメントしてカウント値に「１」を設定し（ステップＳ５０４）、送信データと送信カウンタ５０１ａのカウント値からＭＡＣ値を算出する（ステップＳ５０５）。この後、メッセージ認証部１０２は、ステップＳ５０８の処理に移行する。
【００４６】
ステップＳ５０６では、メッセージ認証部１０２は、送信データと送信カウンタ５０１ａのカウント値からＭＡＣ値を算出する（ステップＳ５０６）。そして、メッセージ認証部１０２は、不揮発領域５０１から前ＭＡＣ値５０１ｂを読み出し、算出したＭＡＣ値と前ＭＡＣ値との差分を算出する（ステップＳ５０７）。
【００４７】
この際、メッセージ認証部１０２は、算出したＭＡＣ値を差分データ３０２ｄとして上記ＭＡＣ中間（例えば、ＭＡＣ２中間）の領域に挿入（配置）し、ステップＳ５０８の処理に移行する。
【００４８】
ステップＳ５０８では、メッセージ認証部１０２は、送信データに、カウント値とＭＡＣを付加し（ステップＳ５０８）、データを送信する（ステップＳ５０９）。この後、メッセージ認証部１０２は、送信カウンタ５０１ａを更新し、算出したＭＡＣ値を前ＭＡＣ値５０１ｂとして不揮発領域５０１に保存し（ステップＳ５１０）、以上の１回の送信処理を終了する。
【００４９】
なお、最初（１回目）の送信処理は、システム（ＥＣＵ１０１Ａ，メッセージ認証部１０２）が最初に電源投入された後の送信時のみである。以降、メッセージ認証部１０２は、電源がＯＦＦ→ＯＮとなった際には不揮発領域５０１に保存した値を用いてＭＡＣ値の差分を求める。
【００５０】
図６Ａ〜図６Ｃは、実施の形態にかかる車載システムのデータ受信処理例を示すフローチャートである。受信側のＥＣＵ１０１Ｂとメッセージ認証部１０２とが別体で設けられた例において（例えば、図１参照）、メッセージ認証部１０２が行うメッセージ認証手順について説明する。
【００５１】
はじめに、メッセージ認証部１０２は、ＣＡＮバス１０３から受信要求があるかを待機する（ステップＳ６０１：Ｎｏのループ）。受信要求があれば（ステップＳ６０１：Ｙｅｓ）、メッセージ認証部１０２は、ＣＡＮバス１０３を介して送信側のＥＣＵ１０１Ａから送信されたデータを受信する（ステップＳ６０２）。
【００５２】
次に、メッセージ認証部１０２は、受信データ（データ、カウント値）からＭＡＣ値を算出する（ステップＳ６０３）。そして、メッセージ認証部１０２は、受信データが最初の受信であるか判断する（ステップＳ６０４）。この際、メッセージ認証部１０２は、不揮発領域６０１を参照し、受信カウンタ６０１ａのカウント値が「０」でかつ、前ＭＡＣ値６０１ｂが「０」であれば、最初の受信と判断する。
【００５３】
受信データが最初の受信であれば（ステップＳ６０４：Ｙｅｓ）、メッセージ認証部１０２は、受信したＭＡＣ値と算出したＭＡＣ値とを比較し（ステップＳ６０５）、ステップＳ６１２の処理に移行する。
【００５４】
一方、受信データが最初の受信でなければ（ステップＳ６０４：Ｎｏ）、メッセージ認証部１０２は、受信カウンタ６０１ａのカウント値をチェックし（ステップＳ６０６）、カウント値が連続しているか判断する（ステップＳ６０７）。ここでは、メッセージ認証部１０２は、送信側が送信データに付加したカウント値が連続していることに基づき、受信したカウント値の連続の有無によってデータの欠落を判断している。
【００５５】
カウント値が連続していれば（ステップＳ６０７：Ｙｅｓ）、メッセージ認証部１０２は、データの欠落がないと判断し、受信したＭＡＣ値と前ＭＡＣ値との差分を算出し、比較用ＭＡＣ値を生成する（ステップＳ６０８）。この後、メッセージ認証部１０２は、受信したＭＡＣ値と比較用ＭＡＣ値とを比較し（ステップＳ６０９）、ステップＳ６１２の処理に移行する。
【００５６】
一方、カウント値が連続していなければ（ステップＳ６０７：Ｎｏ）、メッセージ認証部１０２は、データの欠落があると判断し、受信したＭＡＣ値から先頭と末尾を取得する（ステップＳ６１０）。この後、メッセージ認証部１０２は、受信したＭＡＣ値の先頭と末尾と、算出したＭＡＣ値の先頭と末尾とをそれぞれ比較し（ステップＳ６１１）、ステップＳ６１２の処理に移行する。
【００５７】
ステップＳ６１２では、メッセージ認証部１０２は、受信したＭＡＣ値と算出したＭＡＣ値が一致しているか判断する（ステップＳ６１２）。判断した結果、ＭＡＣ値が一致していれば（ステップＳ６１２：Ｙｅｓ）、メッセージ認証部１０２は、受信したデータをＥＣＵ１０１にデータ送信する（ステップＳ６１３）。
【００５８】
また、メッセージ認証部１０２は、受信カウンタ６０１ａのカウント値、および算出したＭＡＣ値を前ＭＡＣ値６０１ｂとし、それぞれ不揮発領域６０１に保存し（ステップＳ６１４）、以上の１回の受信処理を終了する。
【００５９】
一方、判断した結果、ＭＡＣ値が一致していなければ（ステップＳ６１２：Ｎｏ）、メッセージ認証部１０２は、受信したデータを破棄し（ステップＳ６１５）、以上の一回の受信処理を終了する。
【００６０】
そして、上記の処理によれば、送信側でＭＡＣ値の一部（例えばＭＡＣ先頭とＭＡＣ末尾）を、差分データとともに送信している。このため、受信側のメッセージ認証部１０２では、データの欠落が発生した場合でも（ステップＳ６０７：Ｎｏ以降の処理）、メッセージ認証を実行できる。この場合、受信側では受信データのうちＭＡＣ値の一部（例えばＭＡＣ先頭とＭＡＣ末尾）が受信できれば、全体のＭＡＣ値の一部の検証により、正当性の判定を行うことができる。
【００６１】
図５〜図６Ｃを用いて説明した上記処理は、ＥＣＵ１０１外部のメッセージ認証部１０２が行う例を説明した。これに限らず、メッセージ認証部１０２がＥＣＵ１０１に内蔵されている場合には、上記処理は、送信側および受信側のＥＣＵ１０１において、ＣＰＵ２０１がプログラム実行し、不揮発領域５０１，６０１としてメモリ２０２を用いて同様に行うことができる。
【００６２】
（ＭＡＣのｎ分割構成例）
上述した実施の形態の説明では、送信するＭＡＣを３分割する例を説明したが、これに限らず４分割以上の複数ｎで分割して送信してもよい。ここで、ＭＡＣを３分割することで、データ欠落時でも受信側のＥＣＵ１０１Ｂでのメッセージ認証が可能となる。ここで、例えば、ＭＡＣを２分割したときには、いずれか一方のＭＡＣの欠落でメッセージ認証ができなくなる。
【００６３】
これに対し、上記の３分割によりＭＡＣのデータ領域内の配置場所がそれぞれ異なる先頭と末尾、および中間の３か所としている。この場合、例えば、中間のＭＡＣのデータが送信中に欠落した場合でも受信側のＥＣＵ１０１Ｂでは先頭と末尾のＭＡＣ値を対比によりメッセージ認証が行えるようになる。
【００６４】
図７は、実施の形態にかかる車載システムにおけるＭＡＣの他の分割例を説明する図である。図７には、送信するＭＡＣ全体のデータ長２０Ｂｙｔｅを５Ｂｙｔｅずつ４分割した例を示す。
【００６５】
図７（ａ）の例では、ＭＡＣ全体を先頭と、中間と、末尾でそれぞれ５Ｂｙｔｅずつ３分割する。そして、送信するＭＡＣとして、ＭＡＣ先頭７０１ａと、ＭＡＣ差分１（７０１ｂ）と、ＭＡＣ中間７０１ｃと、ＭＡＣ差分２（７０１ｄ）とを用いる。このように、ＭＡＣ末尾を送信に用いないこともできる。
【００６６】
ＭＡＣ先頭７０１ａとＭＡＣ中間７０１ｃは、送信するＭＡＣを３分割したときの先頭と中間のＭＡＣそのものである。ＭＡＣ差分１（７０１ｂ）は、ＭＡＣ先頭７０１ａとＭＡＣ中間７０１ｃとの差分を求めた差分データである。ＭＡＣ差分２（７０１ｄ）は、ＭＡＣ中間７０１ｃとＭＡＣ末尾との差分を求めた差分データである。
【００６７】
図７（ｂ）の例では、ＭＡＣ全体を先頭と、中間と、末尾でそれぞれ５Ｂｙｔｅずつ３分割する。そして、送信するＭＡＣとして、ＭＡＣ差分１（７１１ａ）と、ＭＡＣ中間７１１ｂと、ＭＡＣ差分２（７１１ｃ）と、ＭＡＣ末尾７１１ｄを用いる。このように、ＭＡＣ先頭を送信に用いないこともできる。
【００６８】
ＭＡＣ中間７１１ｂとＭＡＣ末尾７１１ｄは、送信するＭＡＣを３分割したときの中間と末尾のＭＡＣそのものである。ＭＡＣ差分１（７１１ａ）は、ＭＡＣ先頭とＭＡＣ中間７１１ｂとの差分を求めた差分データである。ＭＡＣ差分２（７１１ｃ）は、ＭＡＣ中間７１１ｂとＭＡＣ末尾７１１ｄとの差分を求めた差分データである。
【００６９】
このように、ＭＡＣとして割り当てられる所定Ｂｙｔｅ数（例えば、２０Ｂｙｔｅ）の範囲内でＭＡＣの分割数、および送信するＭＡＣの各分割領域の値を任意に組み合わせることができる。これにより、データの解析がより困難となり、さらにセキュリティ強度を向上できるようになる。
【００７０】
以上説明した実施の形態によれば、送信データに付加するＭＡＣを複数に分割し、分割した先頭や末尾のＭＡＣ値とともに、データ領域の一部に、前回送信時のＭＡＣ値と今回のＭＡＣ値との差分の値の差分データを挿入により結合した全体のＭＡＣ値を送信する。これにより、送信データに付加するＭＡＣは、送信データに基づき算出したＭＡＣ値全体がそのまま送信されるものではなく、データとＭＡＣ値が対応して送信されるものではないため、ある１回の送信データの単独メッセージだけでは、メッセージの内容を解析不可にできる。
【００７１】
また、データの送信毎に、ＭＡＣが任意のＢｙｔｅ毎に複数に分割され、かつ差分データが更新されるため、攻撃対象者がＥＣＵ間で送受しているデータを複数抜き取ったとしても、複数のデータのメッセージからＭＡＣ値を生成するアルゴリズムを特定することが困難となる。
【００７２】
そして、送信時毎のＭＡＣ値は、送信データのメッセージに応じてＭＡＣ値が異なり、かつＭＡＣ値の一部は前回の送信データとの差分データからなる。これにより、外部から見えるＭＡＣ値全体と送信データとの規則性の特定を困難にできる。そして、レインボー攻撃のような、データとＭＡＣ値の関係性から攻撃データを作成する衝突攻撃を不可能にでき、既存技術に比して原像攻撃の耐性を向上し、セキュリティ強度を向上できるようになる。
【００７３】
また、差分データを間引くことで送信データのデータ長を減らし、ＣＡＮ等のバス負荷を軽減することができるようになる。また、データの送信ごとに前記差分データの一部をシフト演算して送信することもできる。また、分割するＭＡＣの各部のデータ長を可変とすることもできる。また、分割する各データ部のデータ順を可変とすることもできる。これらは、データの送信側と受信側で取り決めておけばよい。さらに、特定の時期毎や、所定の期間経過毎に可変することもできる。
【００７４】
例えば、ＭＡＣの先頭、末尾、差分のデータ長を可変にすることで、よりセキュリティ強度を高めることができる。さらに、分割したＭＡＣの中間の差分データのデータ長を減らすことで１回の送信データ量を減らすことができる。この場合、信頼性の低下を抑えてデータ量を減らすことができ、通信時間の短縮、通信トラフィックの軽量化を図ることができるようになる。また、データの送信ごとに前記差分データの一部をシフト演算する場合、簡単なビットシフト演算により、データの解析をより困難にすることができる。
【００７５】
なお、データ量の減少により信頼性の低下の懸念について、実施の形態では、ＭＡＣ値を検証する際の比較ＭＡＣ値はＭＡＣ値全体のフルサイズで算出しており、データの減少は差分データだけとなる。加えて、この差分データも送信側と受信側でそれぞれ減らしたデータ量の２つのＭＡＣ値の合致を条件としているため、既存の技術に比して信頼性を向上できるものであり、信頼性の低下を抑えることができる。
【００７６】
また、送信データには送信データのカウント値が含まれている。カウント値は送信側が送信データの送信によってインクリメントする仕組みであり、受信側では、このカウント値の連続性を判断する。これにより、受信側では、受信データの欠落があったかどうかを判断することができる。
【００７７】
ここで、ＭＡＣのデータの欠落があった場合、前回データとの差分を取ることができなくなるが、受信データには、先頭と末尾のＭＡＣ値が付加されているため、受信側では先頭と末尾のＭＡＣ値を使用した比較を行うことができる。比較した結果のＭＡＣ値が一致すればメッセージ検証できたと判断でき、使用したＭＡＣ値を前回値として保存しておく。以降は、通常時の２回目受信時と同じように差分比較を含む処理を継続して行うことができる。
【００７８】
そして、実施の形態のＭＡＣ値は、ＨＭＡＣやＣＭＡＣ等各種アルゴリズムを用いたメッセージ認証に適用でき、生成したＭＡＣ値を分割し、差分データを算出する簡単な処理でメッセージのセキュリティを向上できる。
【００７９】
また、実施の形態で説明したように、上述したメッセージ認証を行うデータ送受信を車載システムに適用することにより、車載システムのＥＣＵが行う各種制御に対する原像攻撃等の各種ハッキングを防ぐことができる。例えば、車両に対する無線や有線（車両への故意のハッキングツールの実装）によりＣＡＮバス上でＥＣＵ同士が送受信する通信を不正に傍受し、通信データの改ざんやなりすましによってＥＣＵを不正制御する等の攻撃を防ぐことができるようになる。これにより、車載システムのＥＣＵによる車両制御をハッキングから防ぐことができ、本来のＥＣＵ制御が行え、ＥＣＵ制御に基づく安全運転等を遂行できるようになる。
【００８０】
なお、本実施の形態で説明した車載システムにおけるデータ送受信にかかる方法は、予め用意された制御プログラムを対象機器（上記ＥＣＵやメッセージ認証部）等のコンピュータ（ＣＰＵ等）が実行することにより実現することができる。本制御プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【００８１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００８２】
（付記１）車両に設けられる送信側装置と受信側装置との間でデータの送受信を行う車載システムにおいて、
前記送信側装置は、
送信データから生成したＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値と、前回送信した送信データから生成したＭＡＣ値とに基づく差分データを生成し、前記送信データとともに前記差分データを含む前記ＭＡＣ値を送信し、
前記受信側装置は、
受信データからＭＡＣ値を生成し、生成したＭＡＣ値と前回の受信データから生成したＭＡＣ値とに基づく差分データを生成し、生成した前記差分データと前記受信データに含まれる差分データとを比較することにより、受信データの正当性を判定することを特徴とする車載システム。
【００８３】
（付記２）前記送信側装置は、
生成した前記ＭＡＣ値を所定データ量で複数に分割し、分割後の複数の前記ＭＡＣ値と、分割後の一部の前記ＭＡＣ値と前回送信時の対応する一部の前記ＭＡＣ値との差分を求めた差分データと、を再結合して送信し、
前記受信側装置は、
前記受信データに含まれる前記ＭＡＣ値と、前回の受信データから生成したＭＡＣ値を、前記送信側装置で分割された複数の前記ＭＡＣ値および前記差分データのそれぞれで比較することを特徴とする付記１に記載の車載システム。
【００８４】
（付記３）前記送信側装置は、
前記送信データに連続するカウント値を含めて送信し、
前記受信側装置は、
前記受信データの前記カウント値をカウントし、カウント値の連続性に基づき前記受信データの欠損の有無を検出するカウンタを有し、
前記受信データの欠損時には、当該受信データに含まれ、受信できた分割後の複数の前記ＭＡＣ値を用い、前回の受信データから生成した前記ＭＡＣ値と比較することで、前記受信データの正当性を判断することを特徴とする付記２に記載の車載システム。
【００８５】
（付記４）前記送信側装置および前記受信側装置は、
前記差分データを間引く設定に基づき、当該間引いた差分データを送受信し、前記受信データの正当性を判断することを特徴とする付記１〜３のいずれか一つに記載の車載システム。
【００８６】
（付記５）前記送信側装置および前記受信側装置は、
データの送信ごとに前記差分データの一部をシフト演算して送受信し、前記受信データの正当性を判断することを特徴とする付記１〜４のいずれか一つに記載の車載システム。
【００８７】
（付記６）前記送信側装置および前記受信側装置は、
分割した複数の前記ＭＡＣ値と前記差分データのデータ長を可変する設定に基づき、当該可変したデータ長の前記ＭＡＣ値と前記差分データを送受信し、前記受信データの正当性を判断することを特徴とする付記１〜５のいずれか一つに記載の車載システム。
【００８８】
（付記７）前記送信側装置および前記受信側装置は、
分割した複数の前記ＭＡＣ値と前記差分データの配置順を可変する設定に基づき、当該可変した配置順の前記ＭＡＣ値と前記差分データを送受信し、前記受信データの正当性を判断することを特徴とする付記１〜６のいずれか一つに記載の車載システム。
【００８９】
（付記８）前記送信側装置および前記受信側装置は、
前記車両のＣＡＮバスを介して前記データの送受信を行うＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）であることを特徴とする付記１〜７のいずれか一つに記載の車載システム。
【００９０】
（付記９）前記送信側装置および前記受信側装置は、
前記車両のＣＡＮバスを介して前記データの送受信を行うＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）と、
前記ＥＣＵによる前記データの送受信時に、前記ＭＡＣ値および前記差分データに関する認証処理を行うメッセージ認証部と、
を備えたことを特徴とする付記１〜７のいずれか一つに記載の車載システム。
【００９１】
（付記１０）前記送信側装置および前記受信側装置は、
送受信する前記データをそれぞれカウントするカウンタの値と、
前回の送受信時に用いた前記ＭＡＣ値および前記差分データと、を保持する記憶領域を有することを特徴とする付記１〜８のいずれか一つに記載の車載システム。
【００９２】
（付記１１）車両に設けられる送信側装置と受信側装置との間でデータの送受信を行う車載システムにおけるデータ送受信方法において、
前記送信側装置は、
送信データから生成したＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値と、前回送信した送信データから生成したＭＡＣ値とに基づく差分データを生成し、
前記送信データとともに前記差分データを含む前記ＭＡＣ値を送信し、
前記受信側装置は、
受信データからＭＡＣ値を生成し、
生成したＭＡＣ値と前回の受信データから生成したＭＡＣ値とに基づく差分データを生成し、
生成した前記差分データと前記受信データに含まれる差分データとを比較することにより、受信データの正当性を判定する、
ことを特徴とする車載システムにおけるデータ送受信方法。
【００９３】
（付記１２）前記送信側装置は、
生成した前記ＭＡＣ値を所定データ量で複数に分割し、
分割後の複数の前記ＭＡＣ値と、分割後の複数のＭＡＣ値の差分を求めた差分データとを再結合して送信し、
前記受信側装置は、
前記受信データに含まれる前記ＭＡＣ値と、前回の受信データから生成したＭＡＣ値を、前記送信側装置で分割された複数の前記ＭＡＣ値および差分データのそれぞれで比較する、
ことを特徴とする付記１１に記載の車載システムにおけるデータ送受信方法。
【符号の説明】
【００９４】
１００  車両
１０１（１０１ａ〜１０１ｄ，１０１Ａ，１０１Ｂ）  ＥＣＵ
１０２  メッセージ認証部
１０３  ＣＡＮバス
２０１  ＣＰＵ
２０２  メモリ
２０３  センサ
２０４  出力装置
２０５  ＣＡＮ送受信ポート
３０１ａ，３０２ａ，３０３ａ  ＭＡＣ先頭
３０１ｂ，３０２ｂ  ＭＡＣ中間
３０１ｃ，３０２ｃ，３０３ｃ  ＭＡＣ末尾
３０２ｄ，３０３ｄ  差分データ
５０１，６０１  不揮発領域
５０１ａ  送信カウンタ
５０１ｂ  前ＭＡＣ値
６０１ａ  受信カウンタ
６０１ｂ  前ＭＡＣ値
【図１】
2019080241.tif 000003
【図２】
2019080241.tif 000004
【図３】
2019080241.tif 000005
【図４】
2019080241.tif 000006
【図５】
2019080241.tif 000007
【図６Ａ】
2019080241.tif 000008
【図６Ｂ】
2019080241.tif 000009
【図６Ｃ】
2019080241.tif 000010
【図７】
2019080241.tif 000011