(57)【要約】【課題】車外ネットワークに接続されるＥＣＵを備えた車載通信システムにおいて、車外ネットワークに接続されないＥＣＵの処理動作がサイバー攻撃の影響を受けることを阻止する。【解決手段】車載通信システム１０では、第１のＥＣＵ１１が、第１の暗号鍵と第２の暗号鍵のうち第１の暗号鍵だけを保持し、第２のＥＣＵ１２が、第１の暗号鍵を保持し、車外ネットワークに接続される第３のＥＣＵ１３が、第１の暗号鍵と第２の暗号鍵のうち第２の暗号鍵だけを保持する。第２のＥＣＵ１２は、第１の暗号鍵を使用して生成した送信側コードを付与した通信データを送信する。第１のＥＣＵ１１は、通信データを受信した場合に、第１の暗号鍵を使用して生成した受信側コードによって、受信した通信データに付与された送信側コードの検証を行う。【選択図】図４
2016116075.tif 000002
【特許請求の範囲】
【請求項１】
通信データの送信側が生成するメッセージ認証コードである送信側コードと、前記通信データの受信側が生成するメッセージ認証コードである受信側コードとを使用してメッセージ認証を行う車載通信システムであって、
車載ネットワークに接続され、第１の暗号鍵と前記第１の暗号鍵とは異なる第２の暗号鍵のうち前記第１の暗号鍵だけを保持する第１のＥＣＵと、
前記車載ネットワークに接続され、前記第１の暗号鍵を少なくとも保持する第２のＥＣＵと、
前記車載ネットワーク及び車外ネットワークに接続され、前記第１の暗号鍵と前記第２の暗号鍵のうち前記第２の暗号鍵だけを保持して、前記第２の暗号鍵を使用して前記車載ネットワークにおける通信時に前記送信側コード又は前記受信側コードを生成する第３のＥＣＵとを備え、
前記第２のＥＣＵは、前記第１の暗号鍵を使用して生成した送信側コードを付与した通信データを送信し、
前記第１のＥＣＵは、前記通信データを受信した場合に、前記第１の暗号鍵を使用して生成した受信側コードによって、前記受信した通信データに付与された送信側コードの検証を行う、車載通信システム。
【請求項２】
前記車載ネットワークに接続され、前記第１の暗号鍵及び前記第２の暗号鍵を保持する第４のＥＣＵをさらに備え、
前記第２のＥＣＵは、第１の識別子を付与する通信データに対し、前記第１の暗号鍵を使用して生成した送信側コードを付与して送信し、
前記第３のＥＣＵは、前記第１の識別子とは異なる第２の識別子を付与する通信データに対し、前記第２の暗号鍵を使用して生成した送信側コードを付与して送信し、
前記第４のＥＣＵは、受信した通信データに前記第１の識別子が付与されている場合は、前記第１の暗号鍵を使用して生成した受信側コードによって、前記受信した通信データに付与された送信側コードの検証を行い、受信した通信データに前記第２の識別子が付与されている場合は、前記第２の暗号鍵を使用して生成した受信側コードによって、前記受信した通信データに付与された送信側コードの検証を行う、請求項１に記載の車載通信システム。
【請求項３】
前記車載ネットワークに接続され、前記第２の暗号鍵を保持する第４のＥＣＵと、
前記第３のＥＣＵ及び前記第４のＥＣＵの各々に対し、車両の最新の積算走行距離を送信する第５のＥＣＵとをさらに備え、
前記第４のＥＣＵは、前記第５のＥＣＵから受信した前記最新の積算走行距離と前記第２の暗号鍵とを使用して生成した送信側コードを付与した通信データを送信し、
前記第３のＥＣＵは、前記第４のＥＣＵから前記通信データを受信した場合に、前記第５のＥＣＵから受信した前記最新の積算走行距離と前記第２の暗号鍵とを使用して生成した受信側コードによって、前記受信した通信データに付与された前記送信側コードの検証を行う、請求項１に記載の車載通信システム。
【請求項４】
前記車載ネットワークに接続され、前記第２の暗号鍵を保持する第４のＥＣＵをさらに備え、
前記第４のＥＣＵは、前記第３のＥＣＵに対しアクセス要求を行うことによって前記第３のＥＣＵが生成した乱数をチャレンジデータとして受信した後に、前記チャレンジデータと前記第２の暗号鍵とを使用して生成した送信側コードを付与した通信データを送信し、
前記第３のＥＣＵは、前記第４のＥＣＵから前記通信データを受信した場合に、前記第４のＥＣＵへ送信したチャレンジデータと同じデータと前記第２の暗号鍵とを使用して生成した受信側コードによって、前記受信した通信データに付与された前記送信側コードの検証を行う、請求項１に記載の車載通信システム。
【請求項５】
前記車載ネットワークに接続され、前記第１の暗号鍵及び前記第２の暗号鍵を保持する第４のＥＣＵをさらに備え、
前記第４のＥＣＵは、前記第１の暗号鍵を使用して生成した第１の送信側コードと、前記第２の暗号鍵を使用して生成した第２の送信側コードとを付与した通信データを送信し、
前記第１のＥＣＵ及び前記第３のＥＣＵの各々は、前記第４のＥＣＵから前記通信データを受信した場合に、受信した通信データに付与された第１の送信側コード及び第２の送信側コードの片方に、自身が保持する暗号鍵を使用して生成した受信側コードが一致した場合に、前記通信データの認証が成功したと判定する、請求項１に記載の車載通信システム。
【請求項６】
前記第１のＥＣＵは、車両の走行状態を制御するＥＣＵである、請求項１に記載の車載通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ認証を行う車載通信システムに関する。
【背景技術】
【０００２】
従来から、暗号鍵を使用してメッセージ認証を行う車載通信システムが知られている。特許文献１には、この種の車載通信システムが記載されている。特許文献１に記載の車載通信システムでは、通信すべきデータを含むメインメッセージを送信した後に、メインメッセージのデータフィールドに対するＭＡＣ（メッセージ認証コード）を含むＭＡＣメッセージを送信する。ＭＡＣは、共通鍵ブロック暗号の一つであるＡＥＳ暗号アルゴリズムによって求められる。そして、受信したメインメッセージのデータフィールドから得られるＭＡＣと、受信したＭＡＣメッセージに含まれるＭＡＣが一致するか否かによって、受信側においてメインメッセージの正当性を検証する。
【０００３】
また、車外ネットワークに接続される車載通信システムが知られている。この種の車載通信システムとしては、データ通信モジュール（ＤＣＭ：Data Communication Module）を介して外部機器と無線通信を行うシステムが実用化されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−０９８７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、車外ネットワークに接続される車載通信システムは、不正侵入又はウィルス（不正プログラム）などのサイバー攻撃を受ける虞がある。例えば、車外ネットワークに接続されるＥＣＵ（車外ネットワーク用のインターフェースを有するＥＣＵ）を介して車載ネットワークに接続した第三者が、ＥＣＵ間で通信される通信データを不正取得し、その通信データを改ざんした不正データを車載ネットワークに送信する虞がある。
【０００６】
他方、メッセージ認証を行う従来の車載通信システムは、１種類の暗号鍵だけを使用してメッセージ認証を行う。従来の車載通信システムに対し車外ネットワークに接続されるＥＣＵを設ける場合、そのＥＣＵは、車外ネットワークに接続されない他のＥＣＵと同じ暗号鍵を保持することになる。車外ネットワークに接続されるＥＣＵから車載ネットワークに送信される不正データには、他のＥＣＵと同じ暗号鍵を使用して生成されたメッセージ認証コードが付与される。車外ネットワークに接続されないＥＣＵが不正データを受信すると、不正データの認証が成功してしまう。第三者が直接侵入等をすることができないＥＣＵであっても、ＥＣＵの処理動作がサイバー攻撃の影響を受ける虞がある。
【０００７】
本発明は、車外ネットワークに接続されるＥＣＵを備えた車載通信システムにおいて、車外ネットワークに接続されないＥＣＵの処理動作がサイバー攻撃の影響を受けることを阻止することを目的とする。
【課題を解決するための手段】
【０００８】
第１の発明は、通信データの送信側が生成するメッセージ認証コードである送信側コードと、通信データの受信側が生成するメッセージ認証コードである受信側コードとを使用してメッセージ認証を行う車載通信システムであって、車載ネットワークに接続され、第１の暗号鍵と第１の暗号鍵とは異なる第２の暗号鍵のうち第１の暗号鍵だけを保持する第１のＥＣＵと、車載ネットワークに接続され、第１の暗号鍵を少なくとも保持する第２のＥＣＵと、車載ネットワーク及び車外ネットワークに接続され、第１の暗号鍵と第２の暗号鍵のうち第２の暗号鍵だけを保持して、第２の暗号鍵を使用して車載ネットワークにおける通信時に送信側コード又は受信側コードを生成する第３のＥＣＵとを備え、第２のＥＣＵは、第１の暗号鍵を使用して生成した送信側コードを付与した通信データを送信し、第１のＥＣＵは、通信データを受信した場合に、第１の暗号鍵を使用して生成した受信側コードによって、受信した通信データに付与された送信側コードの検証を行う。
【０００９】
第１の発明では、第１のＥＣＵが、第１の暗号鍵と第２の暗号鍵のうち第１の暗号鍵だけを保持する。第２のＥＣＵが、第１の暗号鍵を少なくとも保持する。車外ネットワークに接続される第３のＥＣＵが、第１の暗号鍵と第２の暗号鍵のうち第２の暗号鍵だけを保持する。第２のＥＣＵは、第１の暗号鍵を使用して生成した送信側コードを付与した通信データを送信する。第１のＥＣＵは、第２のＥＣＵからの通信データを受信した場合に、第１の暗号鍵を使用して生成した受信側コードによって、受信した通信データに付与されている送信側コードの検証を行う。この場合、送信側コードも受信側コードも、第１の暗号鍵を使用して生成されるため、通信データの認証は成功する。
【００１０】
また、第３のＥＣＵから車載ネットワークに不正データが送信される場合に、第３のＥＣＵは、第１の暗号鍵を保持しておらず、第２の暗号鍵を使用して送信側コードを生成する。第１のＥＣＵは、不正データを受信した場合に、第１の暗号鍵を使用して生成した受信側コードによって、不正データに付与されている送信側コードの検証を行う。この場合は、送信側コードと受信側コードが、互いに異なる暗号鍵を使用して生成されるため、不正データの認証は成功しない。
【００１１】
第２の発明は、第１の発明において、車載ネットワークに接続され、第１の暗号鍵及び第２の暗号鍵を保持する第４のＥＣＵをさらに備え、第２のＥＣＵは、第１の識別子を付与する通信データに対し、第１の暗号鍵を使用して生成した送信側コードを付与して送信し、第３のＥＣＵは、第１の識別子とは異なる第２の識別子を付与する通信データに対し、第２の暗号鍵を使用して生成した送信側コードを付与して送信し、第４のＥＣＵは、受信した通信データに第１の識別子が付与されている場合は、第１の暗号鍵を使用して生成した受信側コードによって、受信した通信データに付与された送信側コードの検証を行い、受信した通信データに第２の識別子が付与されている場合は、第２の暗号鍵を使用して生成した受信側コードによって、受信した通信データに付与された送信側コードの検証を行う。
【００１２】
第２の発明では、第４のＥＣＵが、第２のＥＣＵからの正規の通信データに対して認証を行うことができるように第１の暗号鍵を保持し、第３のＥＣＵからの正規の通信データに対して認証を行うことができるように第２の暗号鍵を保持する。第２のＥＣＵは、第１の識別子を付与する通信データに対し、第１の暗号鍵を使用して生成した送信側コードを付与して送信する。第３のＥＣＵは、第２の識別子を付与する通信データに対し、第２の暗号鍵を使用して生成した送信側コードを付与して送信する。
【００１３】
第４のＥＣＵが第２のＥＣＵからの通信データを受信した場合、通信データに第１の識別子が付与されている。第４のＥＣＵは、受信した通信データに付与されている送信側コードの検証に、第１の暗号鍵を使用して生成した受信側コードを使用する。この場合、送信側コードも受信側コードも、第１の暗号鍵を使用して生成されるため、通信データの認証は成功する。また、第４のＥＣＵが第３のＥＣＵからの通信データを受信した場合、送信側コードも受信側コードも、第２の暗号鍵を使用して生成されるため、通信データの認証は成功する。第２の発明では、第４のＥＣＵが、通信データに付与された識別子に基づいて暗号鍵を使い分けるため、第２のＥＣＵからの通信データと、第３のＥＣＵからの通信データとの各々に対して、送信側コードを検証できる。
【００１４】
第３の発明は、第１の発明において、車載ネットワークに接続され、第２の暗号鍵を保持する第４のＥＣＵと、第３のＥＣＵ及び第４のＥＣＵの各々に対し、車両の最新の積算走行距離を送信する第５のＥＣＵとをさらに備え、第４のＥＣＵは、第５のＥＣＵから受信した最新の積算走行距離と第２の暗号鍵とを使用して生成した送信側コードを付与した通信データを送信し、第３のＥＣＵは、第４のＥＣＵから通信データを受信した場合に、第５のＥＣＵから受信した最新の積算走行距離と第２の暗号鍵とを使用して生成した受信側コードによって、受信した通信データに付与された送信側コードの検証を行う。
【００１５】
第３の発明では、第４のＥＣＵから第３のＥＣＵへ送信される通信データに対し、第４のＥＣＵ及び第３のＥＣＵの各々で、暗号鍵に加えて、車両の走行に伴って値が変化する積算走行距離を使用して、メッセージ認証コードが生成される。積算走行距離が増加すれば、新たに生成されるメッセージ認証コードは、過去に生成されたメッセージ認証コードと同じにはならない。
【００１６】
第４の発明は、第１の発明において、車載ネットワークに接続され、第２の暗号鍵を保持する第４のＥＣＵをさらに備え、第４のＥＣＵは、第３のＥＣＵに対しアクセス要求を行うことによって第３のＥＣＵが生成した乱数をチャレンジデータとして受信した後に、チャレンジデータと第２の暗号鍵とを使用して生成した送信側コードを付与した通信データを送信し、第３のＥＣＵは、第４のＥＣＵから通信データを受信した場合に、第４のＥＣＵへ送信したチャレンジデータと同じデータと第２の暗号鍵とを使用して生成した受信側コードによって、受信した通信データに付与された送信側コードの検証を行う。
【００１７】
第４の発明では、第４のＥＣＵから第３のＥＣＵへ送信される通信データに対し、第３のＥＣＵ及び第４のＥＣＵの各々で、暗号鍵に加えてチャレンジデータを使用して、メッセージ認証コードが生成される。チャレンジデータは、チャレンジアンドレスポンス方式の認証において、アクセス要求を受けたノードが生成する乱数である。第４の発明では、第４のＥＣＵから第３のＥＣＵへ送信される通信データに対するメッセージ認証コードが、乱数を用いて生成される。
【００１８】
第５の発明は、第１の発明において、車載ネットワークに接続され、第１の暗号鍵及び第２の暗号鍵を保持する第４のＥＣＵをさらに備え、第４のＥＣＵは、第１の暗号鍵を使用して生成した第１の送信側コードと、第２の暗号鍵を使用して生成した第２の送信側コードとを付与した通信データを送信し、第１のＥＣＵ及び第３のＥＣＵの各々は、第４のＥＣＵから通信データを受信した場合に、受信した通信データに付与された第１の送信側コード及び第２の送信側コードの片方に、自身が保持する暗号鍵を使用して生成した受信側コードが一致した場合に、通信データの認証が成功したと判定する。
【００１９】
第５の発明では、第４のＥＣＵが、第１のＥＣＵ及び第３のＥＣＵの各々で使用される通信データを送信する場合に、通信データに対し、第１の暗号鍵を使用して生成した第１の送信側コードと、第２の暗号鍵を使用して生成した第２の送信側コードとを付与する。第４のＥＣＵから通信データを受信した第１のＥＣＵでは、受信した通信データに付与された第１の送信側コード及び第２の送信側コードのうち第１の送信コードに、自身が保持する第１の暗号鍵を使用して生成した受信側コードが一致する。第４のＥＣＵから通信データを受信した第３のＥＣＵでは、受信した通信データに付与された第１の送信側コード及び第２の送信側コードのうち第２の送信コードに、自身が保持する第２の暗号鍵を使用して生成した受信側コードが一致する。第１のＥＣＵ及び第３のＥＣＵの各々で、通信データの認証が成功と判定される。第５の発明では、第１の暗号鍵だけを保持する第１のＥＣＵでも、第２の暗号鍵だけを保持する第３のＥＣＵでも、通信データに付与された送信側コードの検証を行うことができる。
【００２０】
第６の発明は、第１の発明において、第１のＥＣＵが、車両の走行状態を制御するＥＣＵである。
【発明の効果】
【００２１】
第１の発明では、送信側コードの検証の際に第１のＥＣＵが使用する第１の暗号鍵が、第３のＥＣＵによって保持されていない。そのため、車外ネットワークに接続される第３のＥＣＵから、不正データが車載ネットワークに送信されたとしても、第１のＥＣＵでは、不正データの認証は成功しない。そのため、車外ネットワークに接続されない第１のＥＣＵの処理動作がサイバー攻撃の影響を受けることを阻止することができる。
【００２２】
第２の発明では、第４のＥＣＵが、通信データに付与された識別子に基づいて暗号鍵を使い分けるため、第２のＥＣＵからの通信データと、第３のＥＣＵからの通信データとの各々に対して、送信側コードを検証できる。そのため、第２のＥＣＵからの通信データと第３のＥＣＵからの通信データとの各々に対して送信側コードの検証を行った上で、第４のＥＣＵでこれらの通信データを使用することができる。
【００２３】
第３の発明では、第４のＥＣＵから第３のＥＣＵへ送信する通信データに対するメッセージ認証コードの生成に、積算走行距離を使用している。ここで、車外ネットワークに対し接続可能な車載通信システムでは、サイバー攻撃として、通信データ及び送信側コードのコピーを含むコピーデータを車載ネットワークに送信されることが想定される。第４のＥＣＵから第３のＥＣＵへ送信する通信データ及び送信側コードのコピーを含むコピーデータが車載ネットワークに送信された場合に、メッセージ認証コードの生成に第２の暗号鍵だけ使用していれば、第３のＥＣＵでコピーデータの認証が成功してしまう。そして、コピーデータに含まれる通信データが外部機器へ送信されてしまう。コピーデータが、正規の通信データが送信された時点からある程度時間が経過した後に車載ネットワークに送信された場合は、最新の情報とは異なる通信データが、外部機器へ送信されてしまう。第３の発明では、メッセージ認証コードの生成に積算走行距離を使用しているため、積算走行距離が増加すれば、新たに生成されるメッセージ認証コードが、過去に生成されたメッセージ認証コードと同じにならない。従って、コピーデータの認証が第３のＥＣＵで成功することを阻止することができ、最新の情報とは異なる通信データが外部機器へ送信されることを阻止することができる。
【００２４】
第４の発明では、第４のＥＣＵから第３のＥＣＵへ送信する通信データに対するメッセージ認証コードの生成に、チャレンジデータを使用しているため、メッセージ認証コードが生成される度に異なるコードになる。従って、上述のコピーデータの認証が第３のＥＣＵで成功することを阻止することができ、最新の情報とは異なる通信データが外部機器へ送信されることを阻止することができる。
【００２５】
第５の発明では、第１の暗号鍵だけを保持する第１のＥＣＵでも、第２の暗号鍵だけを保持する第３のＥＣＵでも、通信データに付与された送信側コードの検証を行うことができる。第１のＥＣＵ及び第３のＥＣＵの２つのＥＣＵで使用される通信データの送信を１回で行うことができる。
【００２６】
第６の発明では、車両の走行状態を制御するＥＣＵの処理動作がサイバー攻撃の影響を受けることを阻止することができる。
【図面の簡単な説明】
【００２７】
【図１】実施の形態に係る車載通信システムの概略構成図
【図２】メッセージ認証コードの生成方法を説明するための図
【図３】第３のＥＣＵから不正データを含むデータフレームが送信された場合について説明するための図
【図４】受信用テーブルを示す図
【図５】第４のＥＣＵが実行する受信側処理のフローチャート
【図６】変形例２におけるメッセージ認証の流れを示す図
【図７】変形例３に係る車載通信システムにおいて第４のＥＣＵが送信するデータフレームを示す図
【発明を実施するための形態】
【００２８】
以下、図１−図５を参照しながら、実施の形態について詳細に説明する。図１は、本実施の形態に係る車載通信システム１０の概略構成図である。車載通信システム１０には、車外ネットワークに接続されるＥＣＵが設けられている。本実施の形態では、車外ネットワークに接続されないＥＣＵが保持する暗号鍵と、車外ネットワークに接続されるＥＣＵが保持する暗号鍵とを互いに異ならせることで、車外ネットワークに接続されるＥＣＵから不正データが車載ネットワーク２０に送信されたとしても、車外ネットワークに接続されないＥＣＵで、不正データの認証が成功しないようにしている。
【００２９】
［車載通信システムの全体構成について］
車載通信システム１０は、図１に示すように、伝送路２２（バス）と、伝送路２２を介して互いに接続された複数のＥＣＵ（Electronic Control Unit）１１〜１５（ノード）とを備えた通信システムである。複数のＥＣＵ１１〜１５が伝送路２２を介して互いに接続されることによって、車載ネットワーク２０が形成されている。以下では、ＥＣＵ１１を第１のＥＣＵ１１と言い、ＥＣＵ１２を第２のＥＣＵ１２と言い、ＥＣＵ１３を第３のＥＣＵ１３と言い、ＥＣＵ１４を第４のＥＣＵ１４と言い、ＥＣＵ１５を第５のＥＣＵ１５と言う。
【００３０】
各ＥＣＵ１１〜１５は、各々に対応する車載機器を制御する。第１のＥＣＵ１１、第２のＥＣＵ１２、第４のＥＣＵ１４及び第５のＥＣＵ１５の各々は、車載ネットワーク２０に対する車内用インターフェースを有するが、車外ネットワークに対する車外用インターフェースを有していない。第３のＥＣＵ１３は、車載ネットワーク２０に対する車内用インターフェースと、車外ネットワークに対する車外用インターフェースとを有している。各ＥＣＵ１１〜１５の車内用インターフェースには伝送路２２が接続されている。車外用インターフェースには、第３のＥＣＵ１３が制御する通信機２５が接続されている。各ＥＣＵ１１〜１５は、車載ネットワーク２０に接続され、車載ネットワーク２０を介して、他のＥＣＵ１１〜１５と通信を行う。第３のＥＣＵ１３は、車外ネットワークに接続され、車外ネットワークを介して、外部機器（車外に存在する外部端末等）と通信（例えばセキュア通信）を行う。第３のＥＣＵ１３及び通信機２５は、外部機器と通信を行う車外通信ユニットを構成している。外部機器は、例えばＩＴＳ端末（ＩＴＳスポット）、又は、マルチメディア用の外部端末などである。各ＥＣＵ１１〜１５は、ＣＰＵ、ＲＯＭ、ＲＡＭ等（図示省略）を備えたマイクロコンピュータにより構成されている。各ＥＣＵ１１〜１５は、ＲＯＭ等のメモリーに格納されたプログラムをＣＰＵが実行することによって各種処理を実行する。
【００３１】
車載通信システム１０では、ＥＣＵ１１〜１５間の通信にデータフレームが使用される。車載ネットワーク２０では、所定の通信プロトコルに従って、ＥＣＵ１１〜１５間でデータフレームの送受信が行われる。車載ネットワーク２０は、例えば、ＣＡＮ（Controller Area Network）である。なお、車載通信システム１０は、車載ネットワーク２０に加えて、ＣＡＮ以外の車載ネットワーク（例えば、ＬＩＮ（Local Interconnect Network））と、通信プロトコルが互いに異なる車載ネットワーク間を接続するゲートウェイとを備えている（図示省略）。なお、車外用インターフェースを有する第３のＥＣＵ１３は、ＣＡＮ以外の車載ネットワークに設けられていてもよい。
【００３２】
データフレームには、通信情報を格納するデータ領域と、そのデータ領域に格納された通信情報に対応付けられた識別子を格納する識別子領域とが少なくとも設けられている。データフレームには、通信情報及び識別子が少なくとも含まれる。通信情報は、例えば、車速情報（自車の速度）、エンジン情報、カメラ情報などである。通信情報が異なれば、異なる識別子が割り当てられる。例えば、識別子は、通信情報ごとに割り当てられた数値で表される。ＣＡＮでは、識別子としてＣＡＮＩＤが使用される。
【００３３】
車載通信システム１０では、識別子を使用したメッセージ・アドレッシングが採用されている。各ＥＣＵ１１〜１５は、通信情報をデータ領域に格納しその通信情報に対応付けられた識別子を識別子領域に格納したデータフレームを、車載ネットワーク２０に送信する。各ＥＣＵ１１〜１５は、自身が接続された車載ネットワーク２０を流れるデータフレームを受信できる。各ＥＣＵ１１〜１５は、データフレームを受信した際に、データフレームに含まれる識別子に基づいて、自身が車載機器の制御に使用する通信情報がデータフレームに含まれているか否かを判断する。各ＥＣＵ１１〜１５は、データフレームに含まれる識別子に関係なく車載ネットワーク２０を流れるデータフレームを受信できるが、受信したデータフレームの中から、識別子に基づいて、自身が車載機器の制御に使用するデータフレームを選別する。
【００３４】
また、車載通信システム１０では、データフレームの正当性を検証するための認証手続きとして、メッセージ認証が行われる。車載通信システム１０は、車外用インターフェースを介してサイバー攻撃を受ける虞がある。車載通信システム１０では、車載ネットワーク２０のセキュリティ性を向上させるために、メッセージ認証が行われる。車載通信システム１０には、メッセージ認証に使用する暗号鍵として、第１の暗号鍵Ｋ１と、第１の暗号鍵Ｋ１とは異なる第２の暗号鍵Ｋ２とが準備されている。第１の暗号鍵Ｋ１は、車外用インターフェースを有しないＥＣＵ間の通信で使用される。第２の暗号鍵Ｋ２は、車外用インターフェースを有しないＥＣＵと、車外用インターフェースを有するＥＣＵとの間の通信で使用される。第１のＥＣＵ１１及び第２のＥＣＵ１２の各々は、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２のうち第１の暗号鍵Ｋ１だけを保持している。第３のＥＣＵ１３は、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２のうち第２の暗号鍵Ｋ２だけを保持している。第４のＥＣＵ１４は、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２を保持している。各ＥＣＵ１１〜１４では、暗号鍵がメモリーに記憶されている。なお、第５のＥＣＵ１５が保持する暗号鍵等については、後述する変形例で説明する。
【００３５】
［メッセージ認証について］
メッセージ認証は、データフレームの送信側のＥＣＵ１１〜１５で送信側処理が実行された後に、データフレームの受信側のＥＣＵ１１〜１５で受信側処理が実行される。送信側処理は、送信対象のデータフレームに対しメッセージ認証コード（ＭＡＣ（Message Authentication Code））を付与する処理である。受信側処理は、受信したデータフレームに付与されたメッセージ認証コードを検証する処理である。以下では、データフレームの送信側が作成するメッセージ認証コードを「送信側コード」と言い、データフレームの受信側が作成するメッセージ認証コードを「受信側コード」と言う。なお、暗号鍵を使用したメッセージ認証コードの生成には、ＭＡＣアルゴリズム（例えば、ハッシュ関数を使う方式、ブロック暗号アルゴリズムを使う方式）が使用される。
【００３６】
図２は、メッセージ認証コードの生成方法を説明するための図である、送信側処理について説明する。各ＥＣＵ１１〜１５は、図２（ａ）に示すように、送信側コード生成用のメッセージとして、データフレームのデータ領域に格納する通信情報を使用する。各ＥＣＵ１１〜１５は、所定の暗号鍵を使用して、通信情報から送信側コードを生成する。そして、各ＥＣＵ１１〜１５は、通信情報（メッセージ）に対し送信側コードを付与し、識別子、通信情報、及び送信側コードを含むデータフレームを車載ネットワーク２０に送信する。
【００３７】
続いて、受信側処理について説明する。各ＥＣＵ１１〜１５は、車載ネットワーク２０を流れるデータフレームを受信した際に、データフレームに含まれる識別子に基づいて、自身が使用する通信情報がデータフレームに含まれていると判断した場合に、受信側処理を実行する。各ＥＣＵ１１〜１５は、図２（ｂ）に示すように、受信側コード生成用のメッセージとして、受信したデータフレームのデータ領域に格納された通信情報を使用する。各ＥＣＵ１１〜１５は、所定の暗号鍵を使用して、データ領域から抽出した通信情報から受信側コードを生成する。各ＥＣＵ１１〜１５は、受信したデータフレームに付与された送信側コードと、自身が生成した受信側コードとを照合する。各ＥＣＵ１１〜１５は、送信側コードと受信側コードとが一致した場合に「認証成功」と判定し、送信側コードと受信側コードとが一致しない場合に「認証失敗」と判定する。
【００３８】
本実施の形態では、通信情報（通信データ）に付与された送信側コードが、通信情報と同じデータフレームに格納されて、車載ネットワーク２０に送信される。この場合、特開２０１３−４８３７４号公報に記載された拡張フォーマットの識別子拡張領域に、送信側コードを格納してもよい。また、通信情報に付与された送信側コードは、通信情報とは別途に、特開２０１３−９８７１９号公報に記載されたＭＡＣメッセージに含ませて、車載ネットワーク２０に送信されてもよい。
【００３９】
ここで、第１のＥＣＵ１１は、車両の走行状態を制御するＥＣＵ（車両の走行上の安全に関係するＥＣＵ）である。第１のＥＣＵ１１は、第２のＥＣＵ１２から送信された通信情報Ａ（例えば、車速情報）を使用して、車載機器の制御を行う。通信情報Ａには第１の識別子が割り当てられている。
【００４０】
第２のＥＣＵ１２は、例えば車両の走行状態を制御するＥＣＵである。第２のＥＣＵ１２は、車載ネットワーク２０における通信情報Ａ（第１のＥＣＵ１１によって使用される通信情報）の発信元になるＥＣＵである。車載ネットワーク２０における通信情報の発信元とは、車載ネットワーク２０に最初に通信情報を送信したＥＣＵを意味する。第２のＥＣＵ１２は、通信情報Ａを含むデータフレームを送信する際に、送信側処理を行う。第２のＥＣＵ１２は、第１の暗号鍵Ｋ１を使用して通信情報Ａから送信側コードを生成し、通信情報Ａに割り当てられた第１の識別子、通信情報Ａ、及び送信側コードを含むデータフレームを送信する。
【００４１】
次に、図３を使用して、例えば、車外ネットワークに接続される第３のＥＣＵ１３を介して車載ネットワーク２０に接続した第三者によって、第２のＥＣＵ１２から送信されたデータフレーム３１が不正取得される場合について説明する。データフレーム３１には、第１の識別子、通信情報Ａ、及び、第１の暗号鍵Ｋ１を使用して生成された送信側コードが含まれている。第三者は、データフレーム３１に含まれる通信情報Ａを通信情報Ａ’へ改ざんし、通信情報Ａ’（不正データ）を含むデータフレーム３２を第３のＥＣＵ１３から車載ネットワーク２０に送信する。第３のＥＣＵ１３は、データフレーム３２を送信する際に、送信側処理を行う。第３のＥＣＵ１３は、第１の暗号鍵Ｋ１を保持していないため、第２の暗号鍵Ｋ２を使用して通信情報Ａ’から送信側コードを生成し、第１の識別子、通信情報Ａ’、及び送信側コードを含むデータフレームを送信する。このデータフレーム３２を受信した第１のＥＣＵ１１は、データフレームに第１の識別子が含まれているため、自身が車載機器の制御に使用する通信情報がデータフレームに含まれていると判断して、受信側処理を行う。第１のＥＣＵ１１は、第１の暗号鍵Ｋ１を使用して、通信情報Ａ’から受信側コードを生成する。この場合、送信側コードの生成に第２の暗号鍵Ｋ２が使用され、受信側コードの生成に第１の暗号鍵Ｋ１が使用されるため、データフレーム３２の認証は成功しない。そのため、第１のＥＣＵ１１の処理動作がサイバー攻撃の影響を受けることを阻止することができる。
【００４２】
また、第４のＥＣＵ１４は、第２のＥＣＵ１２から送信された通信情報Ａと、第３のＥＣＵ１３から送信された通信情報Ｂとを使用して、車載機器を制御するＥＣＵである。通信情報Ｂは、第３のＥＣＵ１３が車外用インターフェースを介して外部機器から取得した情報である。通信情報Ｂには第２の識別子が割り当てられている。
【００４３】
上述したように、第２のＥＣＵ１２は、通信情報Ａを含むデータフレームを送信する際に、送信側処理を行う。第２のＥＣＵ１２は、第１の暗号鍵Ｋ１を使用して通信情報Ａから送信側コードを生成し、第１の識別子、通信情報Ａ、及び送信側コードを含むデータフレームを送信する。また、第３のＥＣＵ１３は、通信情報Ｂを含むデータフレームを送信する際に、送信側処理を行う。第３のＥＣＵ１３は、第２の暗号鍵Ｋ２を使用して通信情報Ｂから送信側コードを生成し、第２の識別子、通信情報Ｂ、及び送信側コードを含むデータフレームを送信する。
【００４４】
図４は、第４のＥＣＵ１４が受信側処理等で使用する受信用テーブルの一例である。図５は、第４のＥＣＵ１４が実行する受信側処理のフローチャートである。受信用テーブルには、第４のＥＣＵ１４が車載機器の制御に使用する通信情報に対し、識別子が対応付けられている。第４のＥＣＵ１４は、データフレームを受信した際に、受信したデータフレームに含まれる識別子が、受信用テーブルの識別子の中に存在している場合に、自身が使用する通信情報がデータフレームに含まれていると判断して、受信側処理を行う。第４のＥＣＵ１４は、通信情報Ａを含むデータフレーム、又は、通信情報Ｂを含むデータフレームを受信した場合は、受信したデータフレームに含まれる識別子（第１の識別子又は第２の識別子）が、受信用テーブルの識別子の中に存在しているため、受信側処理を行う。
【００４５】
受信用テーブルでは、図４に示すように、識別子の各々に暗号鍵が割り当てられている。通信情報Ａに対応する第１の識別子（ＩＤ＝１００）には、第１の暗号鍵Ｋ１が割り当てられている。通信情報Ｂに対応する第２の識別子（ＩＤ＝１５０）には、第２の暗号鍵Ｋ２が割り当てられている。受信用テーブルでは、車外用インターフェースを有しないＥＣＵ（第２のＥＣＵ１２）で付与される第１の識別子に対して、第１の暗号鍵Ｋ１が割り当てられ、第３のＥＣＵ１３で付与される第２の識別子に対して、第２の暗号鍵Ｋ２が割り当てられている。受信用テーブルを参照することで、データフレームに含まれる識別子が、車外用インターフェースを有しないＥＣＵで付与されたか否か（つまり、不正データの送信元になる虞がある第３のＥＣＵ１３以外のＥＣＵで付与されたか否か）を判断できる。
【００４６】
なお、図４には、２種類の通信情報のみが記載されているが、第４のＥＣＵ１４が車載機器の制御に使用する通信情報は３種類以上あってもよい。この場合、車外用インターフェースを有しないＥＣＵで付与される識別子に、第１の暗号鍵Ｋ１が割り当てられ、第３のＥＣＵ１３で付与される識別子に、第２の暗号鍵Ｋ２が割り当てられる。
【００４７】
図５を参照して、第４のＥＣＵ１４が実行する受信側処理について具体的に説明する。第４のＥＣＵ１４は、受信側処理として、受信したデータフレームを検証対象フレームとし、検証対象フレームに付与された送信側コードの検証を行う。
【００４８】
第４のＥＣＵ１４は、ステップＳ１１において、受信側コードの生成に使用する暗号鍵を決定する使用鍵判定を行う。第４のＥＣＵ１４は、使用鍵判定として、受信用テーブルを参照して、検証対象フレームに含まれる識別子が、受信用テーブルで第１の暗号鍵Ｋ１に割り当てられた識別子であるか否かを判定する。検証対象フレームに含まれる識別子が、第１の暗号鍵Ｋ１に割り当てられた識別子である場合、第４のＥＣＵ１４は、ステップＳ１２へ進み、第１の暗号鍵Ｋ１を使用して受信側コードを生成する。一方、検証対象フレームに含まれる識別子が、第１の暗号鍵Ｋ１に割り当てられた識別子ではない場合（第２の暗号鍵Ｋ２に割り当てられた識別子である場合）、第４のＥＣＵ１４は、ステップＳ１３へ進み、第２の暗号鍵Ｋ２を使用して受信側コードを生成する。このように、第４のＥＣＵ１４は、検証対象フレームに含まれる識別子に応じて、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２とを使い分ける。ステップＳ１２又はステップＳ１３が終了するとステップＳ１４へ進む。
【００４９】
ステップＳ１４において、第４のＥＣＵ１４は、送信側コードと受信側コードとが一致するか否かを判定する。第４のＥＣＵ１４は、送信側コードと受信側コードとが一致する場合に、ステップＳ１５に進み「認証成功」と判定する。この場合、第４のＥＣＵ１４は、検証対象フレームに含まれている通信情報を使用して、車載機器の制御を行う。一方、第４のＥＣＵ１４は、送信側コードと受信側コードとが一致しない場合、ステップＳ１６に進み「認証失敗」と判定する。この場合、第４のＥＣＵ１４は、検証対象フレームに含まれている通信情報を車載機器の制御に使用しない。
【００５０】
第４のＥＣＵ１４が第２のＥＣＵ１２から通信情報Ａを含む正規のデータフレームを受信した場合について説明する。このデータフレームには、上述したように、第１の識別子が含まれている。そのため、第４のＥＣＵ１４は、ステップＳ１１で「Ｙｅｓ」と判定し、ステップＳ１２において、第１の暗号鍵Ｋ１を使用して受信側コードを生成する。また、第２のＥＣＵ１２からの正規のデータフレームには、第１の暗号鍵Ｋ１を使用して生成された送信側コードが付与されている。従って、ステップＳ１４において、送信側コードと受信側コードとが一致し、ステップＳ１５において「認証成功」と判定される。第４のＥＣＵ１４は、通信情報Ａを使用して車載機器の制御を行う。
【００５１】
次に、第４のＥＣＵ１４が第３のＥＣＵ１３から通信情報Ｂを含む正規のデータフレームを受信した場合について説明する。このデータフレームには、上述したように、第２の識別子が含まれている。そのため、第４のＥＣＵ１４は、ステップＳ１１で「Ｎｏ」と判定し、ステップＳ１３において、第２の暗号鍵Ｋ２を使用して受信側コードを生成する。また、第３のＥＣＵ１３からの正規のデータフレームには、第２の暗号鍵Ｋ２を使用して生成された送信側コードが付与されている。従って、ステップＳ１４において、送信側コードと受信側コードとが一致し、ステップＳ１５において「認証成功」と判定される。第４のＥＣＵ１４は、通信情報Ｂを使用して車載機器の制御を行う。
【００５２】
次に、不正データを含むデータフレームが第３のＥＣＵ１３から車載ネットワークに送信される場合について説明する。不正データは、第２のＥＣＵ１２から送信された通信情報Ａが改ざんされた通信情報Ａ’とする。第３のＥＣＵ１３で識別子が変更されない場合は、このデータフレームに、図３に示すデータフレーム３２と同様に、第１の識別子、通信情報Ａ’、及び、第２の暗号鍵Ｋ２を使用して生成された送信側コードが含まれている。不正データを含むデータフレームを受信した第４のＥＣＵ１４は、データフレームに第１の識別子が含まれているため、自身が車載機器の制御に使用する通信情報がデータフレームに含まれていると判断して、受信側処理を行う。第４のＥＣＵ１４は、ステップＳ１１で「Ｙｅｓ」と判定し、ステップＳ１２で、第１の暗号鍵Ｋ１を使用して受信側コードを生成する。送信側コードは第２の暗号鍵Ｋ２を使用して生成されているため、ステップＳ１４で、送信側コードと受信側コードとが一致せず、データフレームの認証は失敗する。従って、車外ネットワークに接続されない第４のＥＣＵ１４のセキュリティ性を向上させることができる。
【００５３】
一方、第３のＥＣＵ１３で識別子が第１の識別子から第２の識別子へ変更される場合は、第４のＥＣＵ１４は、第２の暗号鍵Ｋ２を使用して受信側コードを生成する。この場合は、通信情報Ａ’（例えば、改ざんされた速度情報）を含むデータフレームの認証が、第４のＥＣＵ１４で成功する。しかし、データフレームに付与されている識別子が第２の識別子である以上は、第４のＥＣＵ１４は、通信情報Ｂ（例えば、位置情報）として、通信情報Ａ’を取り扱おうとする。通信情報Ａ’は、通信情報Ｂとはデータの内容が全く異なる通信情報Ａ（速度情報）が基になっている。そのため、第４のＥＣＵ１４では、位置情報を用いる制御に、通信情報Ａ’が使用されることはない。従って、車外ネットワークに接続されない第４のＥＣＵ１４のセキュリティ性を向上させることができる。
【００５４】
なお、識別子が第１の識別子から第２の識別子へ変更された場合に、不正データを含むデータフレームの認証が第４のＥＣＵ１４で成功しないように、メッセージ認証コードの生成に用いるメッセージとして、通信情報に加えて、識別子を使用してもよい。不正データを含むデータフレームが第３のＥＣＵ１３から車載ネットワークに送信される際に、送信側コードの生成後に識別子が変更された場合、このデータフレームに、第２の識別子、通信情報Ａ’、及び、通信情報Ａ’と第１の識別子（変更前の識別子）から第２の暗号鍵Ｋ２を使用して生成された送信側コードが含まれている。このデータフレームを受信した第４のＥＣＵ１４は、通信情報Ａ’と第２の識別子から第２の暗号鍵Ｋ２を使用して受信側コードを生成する。そのため、不正データを含むデータフレームの認証が第４のＥＣＵ１４で成功しない。
【００５５】
［実施の形態の効果等］
本実施の形態では、送信側コードの検証の際に第１のＥＣＵ１１が使用する第１の暗号鍵Ｋ１が、第３のＥＣＵ１３によって保持されていない。そのため、車外用インターフェースを有する第３のＥＣＵ１３から、不正データを含むデータフレームが車載ネットワーク２０に送信されたとしても、第１のＥＣＵ１１では、不正データを含むデータフレームの認証は成功しない。そのため、第１のＥＣＵ１１の処理動作がサイバー攻撃の影響を受けることを阻止することができる。
【００５６】
また、本実施の形態では、第４のＥＣＵ１４が、データフレームに付与された識別子に基づいて暗号鍵を使い分けるため、第２のＥＣＵ１２からのデータフレームと、第３のＥＣＵ１３からのデータフレームとの各々に対して、送信側コードを検証できる。従って、第２のＥＣＵ１２からのデータフレームと第３のＥＣＵ１３からのデータフレームとの各々に対してメッセージ認証を行った上で、第４のＥＣＵ１４で、これらのデータフレームに含まれる通信情報を使用することができる。
【００５７】
ここで、車載通信システム１０は、第１のＥＣＵ１１及び第２のＥＣＵ１２以外に、車両の走行状態を制御する複数のＥＣＵを含む。これらの複数のＥＣＵのうち、第３のＥＣＵ１３が外部機器から取得した通信情報（以下、「外部取得情報」という。）を使用しないＥＣＵは、第１の暗号鍵Ｋ１及び第２の暗号鍵Ｋ２のうち第１の暗号鍵Ｋ１だけを保持している。そのため、第１のＥＣＵ１１及び第２のＥＣＵ１２と同様に、ＥＣＵの処理動作がサイバー攻撃の影響を受けることを阻止することができる。また、車両の走行状態を制御する複数のＥＣＵのうち、外部取得情報を使用するＥＣＵは、第１の暗号鍵Ｋ１及び第２の暗号鍵Ｋ２を保持して、第４のＥＣＵ１４と同じ受信側処理を実行する。
【００５８】
また、車両に後付けされるＥＣＵは、第１の暗号鍵Ｋ１及び第２の暗号鍵Ｋ２のうち第２の暗号鍵Ｋ２だけを保持するようにしてもよい。この場合、当初から車両に搭載されたＥＣＵと、車両に後付けされるＥＣＵとで、セキュリティレベルを異ならせることができる。
【００５９】
なお、本実施の形態では、第１のＥＣＵ１１が、フェールセーフ処理を実行するＥＣＵ（以下、「フェールセーフＥＣＵ」という。）であってもよい。この場合、フェールセーフＥＣＵの処理動作がサイバー攻撃の影響を受けることを阻止することができる。例えば、フェールセーフ処理は、車両状態の信号を対象とし、所定の信号を受信した場合だけ対象操作を許可する処理である。フェールセーフＥＣＵが車両の走行状態を制御するＥＣＵである場合の例として、フェールセーフＥＣＵは、例えばエンジン制御ＥＣＵである。エンジン制御ＥＣＵは、外部機器から第３のＥＣＵ１３を介してエンジン起動信号が入力された場合に、車速がゼロであることを示す車速信号と、車両のフードが閉状態であることを示すフード信号とを受信した場合にだけ、エンジンを始動させる。この場合、車速信号とフード信号に対し、第１の暗号鍵を使用してメッセージ認証が行われるため、第３のＥＣＵ１３からのサイバー攻撃を阻止できる。また、フェールセーフＥＣＵが車両の走行状態を制御するＥＣＵではない場合の例として、フェールセーフＥＣＵは、パーキングブレーキがＯＮ状態であることを示すパーキングブレーキ信号をメータＥＣＵ等から受信した場合だけ、バックドアを電動で開ける操作を許可するバックドアコントロールＥＣＵ等がある。また、第４のＥＣＵ１４が、フェールセーフＥＣＵであってもよい。
【００６０】
また、車両の走行状態を制御するＥＣＵ以外のボデー系のＥＣＵのうち、外部取得情報を使用しないＥＣＵが、第１の暗号鍵Ｋ１及び第２の暗号鍵Ｋ２のうち第１の暗号鍵Ｋ１だけを保持していてもよい。第１のＥＣＵ１１と同様に、ボデー系のＥＣＵの処理動作がサイバー攻撃の影響を受けることを阻止することができる。なお、ボデー系のＥＣＵは、第１の暗号鍵Ｋ１及び第２の暗号鍵Ｋ２のうち第２の暗号鍵Ｋ２だけを保持していてもよい。この場合、ボデー系のＥＣＵ同士と、車両の走行状態を制御するＥＣＵ同士とで、セキュリティレベルを異ならせている。この場合は、ボデー系のＥＣＵ同士の通信におけるデータフレームのメッセージ認証で、送信側コード及び受信側コードの各々が、第２の暗号鍵Ｋ２を使用して生成される。
【００６１】
［ＥＣＵの具体例］
第１のＥＣＵ１１は、例えばエンジン制御ＥＣＵである。第１のＥＣＵ１１は、車速情報などに基づいて、エンジンの制御を行う。第２のＥＣＵ１２は、例えば車載ネットワーク２０におい車速情報の発信元になるＥＣＵ（例えば、車速センサに接続されたブレーキＥＣＵ）である。第２のＥＣＵ１２も、車両の走行状態を制御するＥＣＵである。第２のＥＣＵ１２は、定期的に、最新の車速情報（通信情報Ａ）を含むデータフレームを車載ネットワーク２０に送信する。また、第３のＥＣＵ１３は、車外用インターフェースを介して最新の位置情報（通信情報Ｂ）を取得し、定期的に、最新の位置情報を含むデータフレームを車載ネットワーク２０に送信する。第４のＥＣＵ１４は、例えば、外部取得情報を用いて、車両のドライバーに対する運転支援を行う運転支援ＥＣＵである。第４のＥＣＵ１４は、例えば、第２のＥＣＵ１２から送信された車速情報と、第３のＥＣＵ１３から送信された車両の位置情報とを使用して、運転支援を行う。
【００６２】
［変形例１］
変形例１では、第４のＥＣＵ１４が、第３のＥＣＵ１３を介して通信情報を外部機器へ送信するＥＣＵである。例えば、第４のＥＣＵ１４は、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２のうち第２の暗号鍵Ｋ２だけを保持している。第４のＥＣＵ１４から第３のＥＣＵ１３へ送信するデータフレーム（つまり、第３のＥＣＵ１３から外部機器へ送信される通信情報（以下、「外部向け情報」という。）を含むデータフレーム）の認証を行う場合に、車両の積算走行距離を使用して、メッセージ認証コードが生成される。なお、第４のＥＣＵ１４は、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２の両方を保持していてもよい。
【００６３】
ところで、車外ネットワークに接続される第３のＥＣＵ１３が設けられた車載通信システム１０では、外部向け情報を含むデータフレームが不正取得された場合に、そのデータフレームをコピーしたコピーデータが、車載ネットワーク２０に送信される虞がある。その場合に、メッセージ認証コードの生成に、通信情報及び第２の暗号鍵Ｋ２だけ使用していれば、第３のＥＣＵ１３で、コピーデータの認証が成功し、コピーデータに含まれる通信情報が外部機器へ送信されてしまう。コピーデータが、正規のデータフレームが送信された時点からある程度時間が経過した後に車載ネットワーク２０に送信された場合は、最新の情報とは異なる外部向け情報が、外部機器へ送信されてしまう。例えば、外部向け情報が車速情報である場合、最新の情報とは異なる車速情報が、外部機器へ送信されてしまう。
【００６４】
変形例１では、コピーデータの認証が第３のＥＣＵ１３で成功しないように、外部向け情報を含むデータフレームに対し、車両の走行に伴って値が変化する積算走行距離を使用してメッセージ認証コードを生成する。
【００６５】
車載ネットワーク２０には、第５のＥＣＵ１５（メータＥＣＵ）が接続されている。第５のＥＣＵ１５は、車内用インターフェースを有し、第２の暗号鍵Ｋ２を保持している。第５のＥＣＵ１５は、車輪に設けられた車輪速センサから出力されるパルス信号をカウントすることによって、車両の積算走行距離を算出する。第５のＥＣＵ１５は、最新の積算走行距離をオドメータに表示する。また、第５のＥＣＵ１５は、所定の時間間隔で、積算走行距離を車載ネットワーク２０に送信する際に、送信側処理を行う。第５のＥＣＵ１５は、第２の暗号鍵Ｋ２を使用して送信側コードを生成し、積算走行距離、及び、積算走行距離に対応付けられた識別子、及び、送信側コードを含むデータフレームを車載ネットワーク２０に送信する。
【００６６】
第３のＥＣＵ１３及び第４のＥＣＵ１４の各々は、積算走行距離を含むデータフレームを受信し、このデータフレームに含まれる識別子に基づいて、自身が使用する通信情報（積算走行距離）がデータフレームに含まれていると判断し、受信側処理を行う。第３のＥＣＵ１３及び第４のＥＣＵ１４の各々では、第２の暗号鍵Ｋ２を使用して受信側コードが生成される。そのため、データフレームの認証は成功する。第３のＥＣＵ１３及び第４のＥＣＵ１４の各々は、認証成功後に、積算走行距離を記憶する。第３のＥＣＵ１３と第４のＥＣＵ１４の各々には、同じ値の積算走行距離が保持される。
【００６７】
第４のＥＣＵ１４は、外部向け情報（例えば車速情報）を含むデータフレームを送信する際に、送信側処理を行う。第４のＥＣＵ１４は、自身が保持している最新の積算走行距離、及び、データフレームに格納する外部向け情報をメッセージとして使用する。第４のＥＣＵ１４は、第２の暗号鍵Ｋ２を使用して、最新の積算走行距離及び外部向け情報から、送信側コードを生成する。そして、第４のＥＣＵ１４は、外部向け情報、外部向け情報に対応した識別子、及び送信側コードを含むデータフレームを車載ネットワーク２０に送信する。
【００６８】
第３のＥＣＵ１３は、外部向け情報を含むデータフレームを受信した際に、データフレームに含まれる識別子に基づいて、自身が外部機器との通信に使用する外部向け情報がデータフレームに含まれていると判断して、受信側処理を実行する。第３のＥＣＵ１３は、外部向け情報を含むデータフレームを検証対象フレームとして、受信側処理を行う。第３のＥＣＵ１３は、自身が保持している最新の積算走行距離、及び、検証対象フレームに含まれる外部向け情報をメッセージとして使用する。第３のＥＣＵ１３は、第２の暗号鍵Ｋ２を使用して、最新の積算走行距離及び外部向け情報から、受信側コードを生成する。そして、第３のＥＣＵ１３は、検証対象フレームに含まれる送信側コードと、自身が生成した受信側コードとを照合する。送信側コードと受信側コードは、共に最新の積算走行距離及び第２の暗号鍵Ｋ２を使用して生成されているため、送信側コードと受信側コードは一致する。検証対象フレームの認証は成功する。第３のＥＣＵ１３は、外部機器との間の通信プロトコルに従って、外部向け情報を外部機器へ送信する。
【００６９】
変形例１では、積算走行距離が増加すれば、新たに生成されるメッセージ認証コード（送信側コード及び受信側コード）は、過去に生成されたメッセージ認証コードと同じにはならない。そのため、コピーデータの認証が第３のＥＣＵ１３で成功することを阻止でき、最新の情報とは異なる通信情報が外部機器へ送信されることを阻止することができる。
【００７０】
なお、車両が停止している間は、積算走行距離が変化しないため、新たに生成されるメッセージ認証コードが、その停止中に過去に生成されたメッセージ認証コードと同じなる場合がある。そのため、メッセージ認証コードの生成時に、メッセージとして、車両のイグニッションスイッチの操作回数（ＯＮ回数とＯＦＦ回数の合計）をさらに使用してもよい。つまり、第２の暗号鍵Ｋ２を使用して、最新の積算走行距離、イグニッションスイッチの操作回数、及び、外部向け情報から、メッセージ認証コードを生成してもよい。また、イグニッションスイッチの操作回数の代わりに、イグニッションスイッチのＯＮ回数又はＯＦＦ回数を、メッセージとして使用してもよい。操作回数、ＯＮ回数、又はＯＦＦ回数は、例えば車両を購入したユーザが車両の使用を開始した時点からの積算回数である。操作回数、ＯＮ回数、又はＯＦＦ回数は、例えばイグニッションスイッチに接続されたＥＣＵによってカウントされ、そのカウント値がカウントの度に車載ネットワーク２０へ送信される。これにより、第４のＥＣＵ１４及び第３のＥＣＵ１３で、カウント値を共有できる。また、各ＥＣＵにカウンタを設ける場合とは異なり、そのカウンタ値を予め揃える手順が必要ない。なお、メッセージ認証コードの生成方法としては、メッセージと暗号鍵との掛け算により生成する方法、又は、複数のデータ（メッセージ）を繋げてハッシュ関数により変換する方法等を用いることができる。
【００７１】
［変形例２］
変形例２では、変形例１と同様に、第４のＥＣＵ１４が、第３のＥＣＵ１３を介して通信情報を外部機器へ送信するＥＣＵである。例えば、第４のＥＣＵ１４は、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２のうち第２の暗号鍵Ｋ２だけを保持している。第４のＥＣＵ１４から第３のＥＣＵ１３へ送信するデータフレームの認証を行う場合に、変形例１とは異なり、チャレンジアンドレスポンス方式のチャレンジデータを使用して、メッセージ認証コードを生成する。なお、第４のＥＣＵ１４は、第１の暗号鍵Ｋ１と第２の暗号鍵Ｋ２の両方を保持していてもよい。図６は、変形例２におけるメッセージ認証の流れを示す図である。
【００７２】
第４のＥＣＵ１４は、外部向け情報（例えば車速情報）を含むデータフレームを第３のＥＣＵ１３へ送信する際に、第３のＥＣＵ１３に対してアクセス要求を行う。アクセス要求を受けた第３のＥＣＵ１３は、所定のビット数の乱数をチャレンジデータとして生成する。第３のＥＣＵ１３は、チャレンジデータを自身のメモリーに保持すると共に、第４のＥＣＵ１４へチャレンジデータを送信する。
【００７３】
第４のＥＣＵ１４は、第３のＥＣＵ１３からチャレンジデータを受信すると、送信側処理を行う。第４のＥＣＵ１４は、受信したチャレンジデータ、及び、データフレームに格納する外部向け情報をメッセージとして使用する。第４のＥＣＵ１４は、第２の暗号鍵Ｋ２を使用して、チャレンジデータ及び外部向け情報から、送信側コードを生成する。そして、第４のＥＣＵ１４は、外部向け情報、外部向け情報に対応した識別子、及び送信側コードを含むデータフレームを車載ネットワーク２０に送信する。なお、チャレンジデータの通信では、送信側コード及び受信側コードの各々の生成に第２の暗号鍵Ｋ２が使用される。
【００７４】
第３のＥＣＵ１３は、外部向け情報を含むデータフレームを受信した際に、データフレームに含まれる識別子に基づいて、自身が外部機器との通信に使用する外部向け情報がデータフレームに含まれていると判断して、受信側処理を実行する。第３のＥＣＵ１３は、外部向け情報を含むデータフレームを検証対象フレームとして、受信側処理を行う。第３のＥＣＵ１３は、自身が保持しているチャレンジデータ、及び、検証対象フレームに含まれる外部向け情報をメッセージとして使用する。第３のＥＣＵ１３は、第２の暗号鍵Ｋ２を使用して、チャレンジデータ及び外部向け情報から、受信側コードを生成する。そして、第３のＥＣＵ１３は、検証対象フレームに含まれる送信側コードと、自身が生成した受信側コードとを照合する。送信側コードと受信側コードは、共にチャレンジデータ及び第２の暗号鍵Ｋ２を使用して生成されているため、送信側コードと受信側コードは一致する。検証対象フレームの認証は成功する。第３のＥＣＵ１３は、外部機器との間の通信プロトコルに従って、外部向け情報を外部機器へ送信する。
【００７５】
変形例２では、暗号鍵に加えて乱数（チャレンジデータ）を使用してメッセージ認証コードを生成するため、メッセージ認証コードが生成される度に異なるコードになる。そのため、変形例１と同様に、コピーデータの認証が第３のＥＣＵ１３で成功することを阻止でき、最新の情報とは異なる通信情報が外部機器へ送信されることを阻止することができる。
【００７６】
［変形例３］
変形例３では、第４のＥＣＵ１４が、第１のＥＣＵ１１及び第３のＥＣＵ１３の各々で使用される通信情報Ｃを含むデータフレームを送信するＥＣＵである。第４のＥＣＵ１４は、第１の暗号鍵Ｋ１及び第２の暗号鍵Ｋ２を保持している。第４のＥＣＵ１４は、通信情報Ｃを含むデータフレームに対し、第１の暗号鍵Ｋ１を使用して生成した第１の送信側コードと、第２の暗号鍵Ｋ２を使用して生成した第２の送信側コードとを付与する。
【００７７】
第４のＥＣＵ１４は、通信情報Ｃを含むデータフレームを送信する際に、送信側処理を行う。第４のＥＣＵ１４は、第１の暗号鍵Ｋ１を使用して、通信情報Ｃから第１の送信側コードを生成すると共に、第２の暗号鍵Ｋ２を使用して、通信情報Ｃから第２の送信側コードを生成する。そして、第４のＥＣＵ１４は、図７に示すように、通信情報Ｃに対応した識別子、通信情報Ｃ、第１の送信側コード、及び第２の送信側コードを含むデータフレームを車載ネットワーク２０に送信する。
【００７８】
また、第１のＥＣＵ１１は、通信情報Ｃを含むデータフレームを受信した際に、データフレームに含まれる識別子に基づいて、自身が使用する通信情報がデータフレームに含まれていると判断して、受信側処理を実行する。第１のＥＣＵ１１は、通信情報Ｃを含むデータフレームを検証対象フレームとして、受信側処理を行う。第１のＥＣＵ１１は、第１の暗号鍵Ｋ１を使用して、検証対象フレームに含まれる通信情報Ｃから、受信側コードを生成する。そして、第１のＥＣＵ１１は、検証対象フレームに含まれる第１の送信側コード及び第２の送信側コードのうち片方の送信側コードと、自身が生成した受信側コードとが一致する場合に、検証対象フレームの認証は成功と判定する。受信側コードは、第１の暗号鍵Ｋ１を使用して生成されているため、第１の送信側コードと一致する。そのため、検証対象フレームの認証は成功する。
【００７９】
第３のＥＣＵ１３は、通信情報Ｃを含むデータフレームを受信した際に、データフレームに含まれる識別子に基づいて、自身が外部機器との通信に使用する通信情報Ｃがデータフレームに含まれていると判断して、受信側処理を実行する。第３のＥＣＵ１３は、通信情報Ｃを含むデータフレームを検証対象フレームとして、受信側処理を行う。第３のＥＣＵ１３は、第２の暗号鍵Ｋ２を使用して、検証対象フレームに含まれる通信情報Ｃから受信側コードを生成する。そして、第３のＥＣＵ１３は、検証対象フレームに含まれる第１の送信側コード及び第２の送信側コードのうち片方の送信側コードと、自身が生成した受信側コードとが一致する場合に、検証対象フレームの認証は成功と判定する。受信側コードは、第２の暗号鍵Ｋ２を使用して生成されているため、第２の送信側コードと一致する。そのため、検証対象フレームの認証は成功し、第３のＥＣＵ１３は、外部機器との間の通信プロトコルに従って、通信情報Ｃを外部機器へ送信する。
【００８０】
変形例３によれば、第１の暗号鍵Ｋ１だけを保持する第１のＥＣＵ１１でも、第２の暗号鍵Ｋ２だけを保持する第３のＥＣＵ１３でも、通信情報Ｃを含むデータフレームに付与された送信側コードの検証を行うことができる。第１のＥＣＵ１１及び第３のＥＣＵ１３の２つのＥＣＵで使用される通信データの送信を１回で行うことができる。
【００８１】
［変形例４］
上述の実施の形態では、各ＥＣＵ１１〜１５で、メッセージ認証コード（送信側コード及び受信側コード）の生成時のメッセージとして通信情報だけを使用しているが、変形例４では、メッセージ認証コードの生成時のメッセージとして、メッセージ認証コードの生成の度に値が変化するデータ（例えば、最新の走行距離情報又はチャレンジデータ）を使用してもよい。この場合、車載通信システム１０は、各ＥＣＵ１１〜１５で、同一の値のデータを共有できるように構成されている。なお、メッセージ認証コードの生成時のメッセージとして、車両のイグニッションスイッチの操作回数（ＯＮ回数とＯＦＦ回数の合計）、ＯＮ回数又はＯＦＦ回数をさらに使用してもよい。
【産業上の利用可能性】
【００８２】
本発明は、メッセージ認証を行う車載通信システムなどに適用可能である。
【符号の説明】
【００８３】
１０    車載通信システム
１１    第１のＥＣＵ
１２    第２のＥＣＵ
１３    第３のＥＣＵ
１４    第４のＥＣＵ
１５    第５のＥＣＵ
２０    車載ネットワーク
２２    伝送路
２５    通信機
【図１】
2016116075.tif 000003
【図２】
2016116075.tif 000004
【図３】
2016116075.tif 000005
【図４】
2016116075.tif 000006
【図５】
2016116075.tif 000007
【図６】
2016116075.tif 000008
【図７】
2016116075.tif 000009