"CAN通信プロトコルに基づいて送受信されるデータを保護するための保護通信方法であって、メッセージ認証コードを生成する生成ステップと、前記生成ステップで生成したメッセージ認証コードと送信データを暗号化する暗号化ステップと、前記暗号化ステップで暗号化したメッセージ認証コードをCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、前記暗号化ステップで暗号化した送信データを拡張フォーマットのデータ領域に格納する格納ステップと、前記格納ステップで格納した拡張フォーマットでメッセージを送信する送信ステップと、を含むこと特徴とする保護通信方法。前記格納ステップでは、ワーク鍵ID、メッセージの通し番号をCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、前記送信ステップで送信された拡張フォーマットのメッセージを受信したノードにおいて、前記通し番号の検証又は前記メッセージ認証コードの検証で異常を検出した場合、防御モードに移行することを特徴とする請求項1に記載の保護通信方法。セキュリティ性を向上させるためには、上記のようにMAC等のセキュリティに関するデータを追加する必要がある。しかし、CANの場合、標準フォーマットが決まっており、データ領域に格納可能なデータは最大8バイトであり、データ領域に格納するデータは決まっているので、データ領域に安全な長さのMACを格納することは困難である。また、MACを付加するために、送信データ量を大幅に増加すると、コストアップにつながる。さらに、CANは車載の標準の基幹ネットワークとして定着しているので、他の通信方式に移行することは難しい。そこで、本発明は、CANにおけるフォーマットの互換性確保とセキュリティ性向上を両立させた保護通信方法を提供することを課題とする。本発明に係る保護通信方法は、CAN通信プロトコルに基づいて送受信されるデータを保護するための保護通信方法であって、メッセージ認証コードを生成する生成ステップと、生成ステップで生成したメッセージ認証コードと送信データを暗号化する暗号化ステップと、暗号化ステップで暗号化したメッセージ認証コードをCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、暗号化ステップで暗号化した送信データを拡張フォーマットのデータ領域に格納する格納ステップと、格納ステップで格納した拡張フォーマットでメッセージを送信する送信ステップとを含むこと特徴とする。この保護通信方法では、生成ステップでメッセージ認証コードを生成し、暗号化ステップでメッセージ認証コードと送信データをそれぞれ暗号化する。そして、保護通信方法では、格納ステップで少なくとも暗号化したメッセージ認証コードを拡張フォーマットの識別子拡張領域に格納するとともに暗号化した送信データを拡張フォーマットのデータ領域に格納し、送信ステップでその拡張フォーマットでメッセージを送信する。この際、拡張フォーマットの識別子ベース領域には、標準フォーマット互換の識別子IDが格納される。したがって、CANのハードウェアでは拡張フォーマットとして処理でき、CANに接続される各ノードのアプリケーションソフトウェアでは拡張フォーマットの識別子ベース領域に格納される標準フォーマット互換の識別子IDを用いて標準フォーマットと同等に処理できる。また、拡張フォーマットの識別子拡張領域に格納される暗号化したメッセージ認証コードを用いてメッセージを認証でき、メッセージの安全性を向上できる。さらに、メッセージ認証コードを暗号化することにより、少ないデータ量でもメッセージの安全性を向上でき、拡張フォーマットの識張子拡張領域内において暗号化メッセージ認証コードを格納する領域を確保でき、拡張フォーマットのデータ領域にメッセージ認証コードを格納しなくてよい。また、送信データを暗号化することにより、送信データの安全性を向上できる。このように、保護通信方法では、メッセージ認証コードと送信データを暗号化し、この暗号化したメッセージ認証コードと送信データを拡張フォーマットを利用して送信することにより、CANにおけるフォーマットの互換性を確保しつつセキュリティ性を向上させることができる。本発明の上記保護通信方法では、格納ステップではワーク鍵ID、メッセージの通し番号をCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、送信ステップで送信された拡張フォーマットのメッセージを受信したノードにおいて、通し番号の検証又はメッセージ認証コードの検証で異常を検出した場合、防御モードに移行する。この保護通信方法では、格納ステップで拡張フォーマットの識別子拡張領域に暗号化メッセージ認証コードの他にワーク鍵IDとメッセージの通し番号を格納し、送信ステップでその拡張フォーマットでメッセージを送信する。CANバスに接続する各ノードでは、この拡張フォーマットのメッセージを受信した場合、メッセージの通し番号で検証するとともにメッセージ認証コードを用いて検証し、少なくとも一方の検証で異常を検出した場合には防御モードに移行する。このように、保護通信方式では、通し番号とメッセージ認証コードによってメッセージを検証することにより、再送攻撃等の不正メッセージを高精度に検出でき、メッセージの安全性を向上でき、セキュリティ性がより向上する。本発明によれば、メッセージ認証コードと送信データを暗号化し、この暗号化したメッセージ認証コードと送信データを拡張フォーマットを利用して送信することにより、CANにおけるフォーマットの互換性を確保しつつセキュリティ性を向上させることができる。以下、図面を参照して、本発明に係る保護通信方法の実施の形態を説明する。なお、各図において同一又は相当する要素については同一の符号を付し、重複する説明を省略する。本実施の形態では、本発明に係る保護通信方法を、車両に搭載されるCAN通信システムに適用する。本実施の形態に係るCAN通信システムは、CAN2.0の通信プロトコルに基づいてメッセージを送受信する車載LANLocalAreaNetworkであり、CANバスに複数のECUノードが接続されている。特に、本実施の形態では、CAN通信システムにおける保護通信処理について詳細に説明する。なお、CAN2.0の通信プロトコルのデータフレームには、標準フォーマットと拡張フォーマットがある。標準フォーマット、拡張フォーマットは、データを格納するデータ領域とメッセージIDを格納する識別子領域ID領域を有している。データ領域は、0~8バイト0~64ビットのデータを格納可能である。標準フォーマットの識別子領域は、11ビット長である。拡張フォーマットの識別子領域は、29ビット長である。拡張フォーマットの識別子領域は、11ビット長の識別子ベース領域と18ビット長の識別子拡張領域で構成される。図1~図3を参照して、本実施の形態に係るCAN通信システム1について説明する。図1は、本実施の形態に係るCAN通信システムの構成図である。図2は、保護通信メンバECUのメモリに確保される保護通信で必要なバッファであり、aがワーク鍵関連のバッファであり、bが送信メッセージ関連のバッファであり、cが受信メッセージ関連のバッファである。図3は、保護メッセージの拡張フォーマットの識別子領域である。CAN通信システム1は、保護通信のマスタとなる保護通信マスタECU2と相互に保護通信を行う複数の保護通信メンバECU33A,3Bとからなり、各ECU2,3がCANバス4に接続されている。また、CAN通信システム1は、保守用のOBD-IIポート5やECU追加のためのコネクタ図示せずなども備えており、これらもCANバス4に接続されている。例えば、OBD-IIポート5に不正送信機器WEが接続され、OBD-IIポート5からCANバス4上に不正メッセージを送信することが可能である。CAN通信システム1では、保護対象のメッセージの場合、そのような不正メッセージを検出し、不正メッセージを排除する保護通信を行う。本実施の形態では、各ECU2,3に搭載される中位層のソフトウェアによる処理で保護通信のための各処理を行う。保護通信マスタECU2では、周期的に、ワーク鍵シードを格納してワーク鍵シードメッセージを送信する。保護通信メンバECU3では、ワーク鍵シードメッセージを受信すると、ワーク鍵シードからワーク鍵を生成する周期的にワーク鍵を更新する。保護メッセージを送信する場合、保護通信メンバECU3Aでは、MACを生成し、MACと送信データ本体を暗号化し、拡張フォーマットのデータ領域に暗号化した送信データ本体を格納するとともに拡張フォーマットの識別子拡張領域にワーク鍵ID、通し番号、暗号化したMACを格納してメッセージを送信する。保護メッセージを受信した場合、保護通信メンバECU3Bでは、暗号化された送信データ本体とMACを復号化し、通し番号とMACで検証し、検証で異常を検出した場合には防御モードに移行する。なお、ワーク鍵は、CAN通信システム1において周期的に更新される鍵であり、本実施の形態ではストリーム暗号化に用いる鍵ストリームを生成するために使われる。ワーク鍵IDは、ワーク鍵の更新タイミングを送信側と受信側で同期をとるために用いられ、本実施の形態ではワーク鍵シードを更新ひいては、ワーク鍵を更新する際に0と1とで切り替えられる。ワーク鍵シードは、ワーク鍵を生成するためのシードであり、本実施の形態では64ビットとする。通し番号は、送信側の保護通信メンバECU3Aが送信するメッセージID毎に付与され、同じメッセージIDのメッセージを送信する毎に1ずつ増加する番号であり、ワーク鍵が更新される毎にリセットされる。システム鍵は、CAN通信システム1に接続される全てのECUが事前に持っている共有鍵である。保護通信マスタECU2は、保護通信でマスタとなるECUであり、保護通信を行うECUの中から任意のECUが選択される。保護通信マスタECU2は、周期的に、ワーク鍵シードを生成し、ワーク鍵IDを付加したワーク鍵シードメッセージを送信する。具体的には、保護通信マスタECU2では、一定時間毎に、ワーク鍵シードを生成し、標準フォーマットのデータ領域にワーク鍵シードを格納するとともに識別子領域ID28~ID18にワーク鍵IDのメッセージIDを格納し、ワーク鍵シードメッセージをCANバス4上に送信する。ワーク鍵シードは、例えば、64ビット長乱数である。ワーク鍵ID=0の場合にはメッセージIDを0x10とし、ワーク鍵ID=1の場合にはメッセージIDを0x11とする。ワーク鍵IDはワーク鍵メッセージを送信する毎ワーク鍵シードを更新する毎に切り替えられ、0、1、0、1が繰り返される。なお、ワーク鍵シードメッセージのCRCCyclicRedundancyCheckは、送信時にCANのハードウェアによって付与されるものとする。保護通信メンバECU3は、相互に保護通信を行う複数のECUである。保護通信メンバECU3は、ワーク鍵シードメッセージを受信する毎に、ワーク鍵シードメッセージからワーク鍵IDとワーク鍵シードを取得し、ワーク鍵を生成する。また、送信側の保護通信メンバECU3Aは、保護メッセージの場合、通し番号とデータ本体のMACを計算し、データ本体と平文MACMACの一部をワーク鍵を用いたストリーム暗号で暗号化し、暗号化データ本体の他にワーク鍵ID、通し番号、暗号化MACを拡張フォーマットに格納して保護メッセージを送信する。また、保護通信メンバECU3Bは、保護メッセージを受信すると、暗号化データ本体と暗号化MACを復号化し、その復号化したデータ本体と通し番号のMACを計算し、計算したMACと復号化したMACとを検証するとともに通し番号を検証し、検証で異常がある場合には防御モードに移行する。各保護通信メンバECU3には、下記に示すように、メモリ上に保護通信に必要なバッファ領域がそれぞれ確保されている。保護通信メンバECU3は、図2aに示すように、最新ワーク鍵IDを管理するための最新ワーク鍵IDバッファIBを有しており、初期値は-1である。最新ワーク鍵IDバッファIBは、0,1,-1のうちのいずれかの値が格納され、値が-1の場合には無効を意味する。また、保護通信メンバECU3は、図2aに示すように、ワーク鍵ID=0の場合のワーク鍵を管理するためのワーク鍵0バッファKB0とワーク鍵ID=1の場合のワーク鍵を管理するためのワーク鍵1バッファKB1を有しており、各バッファKB0,KB1の初期値は0である。また、保護通信メンバECU3は、図2bに示すように、保護メッセージ送信する場合の各メッセージIDの通し番号を管理するために受信メッセージID毎に通し番号バッファTNB1,TNB2,TNB3,,TNBnを有しており、初期値は0である。ECU3毎に送信するメッセージIDは決まっており、ECU3毎に送信メッセージIDの個数nは変わる。また、保護通信メンバECU3は、図2cに示すように、保護メッセージを受信した場合の最新のワーク鍵IDを管理するために受信メッセージID毎に最新ワーク鍵IDバッファRIB1,RIB2,RIB3,,RIBnを有しており、初期値は-1である。また、保護通信メンバECU3は、図2cに示すように、保護メッセージを受信した場合の最新の通し番号を管理するために受信メッセージID毎に最新通し番号バッファRNB1,RNB2,RNB3,,RNBnを有しており、初期値は0である。ECU3毎に受信するメッセージIDは決まっており、ECU3毎に受信メッセージIDの個数nは変わる。ワーク鍵シードメッセージ受信時について具体的に説明する。ワーク鍵シードメッセージを受信すると、保護通信メンバECU3では、ワーク鍵シードメッセージの標準フォーマットのデータ領域からワーク鍵シードを取り出し、そのワーク鍵シードを用いてワーク鍵を生成する。ワーク鍵の生成方法としては、例えば、ワーク鍵ID=0の場合にはワーク鍵シードSeed0を用いて式1によりワーク鍵KW0を計算し、ワーク鍵ID=1の場合にはワーク鍵シードSeed1を用いて式2によりワーク鍵KW1を計算する。式1、2のEKsはシステム鍵Ksを鍵としたDESDataEncryptionStandardなどの64ビット長ブロック暗号演算である。KW0=EKsSeed01KW1=EKsSeed12そして、保護通信メンバECU3では、標準フォーマットの識別子領域ID28~ID18に格納されるメッセージIDが0x10ワーク鍵IDが0の場合にはワーク鍵0バッファKB0にワーク鍵を保存し、メッセージIDが0x11ワーク鍵IDが1の場合にはワーク鍵1バッファKB1にワーク鍵を保存する。また、保護通信メンバECU3では、ワーク鍵IDが更新される毎にそのワーク鍵IDを最新ワーク鍵IDバッファIBに保存する。また、保護通信メンバECU3では、ワーク鍵が更新される毎新しいワーク鍵シードを受信する毎に、送信メッセージID毎の通し番号バッファTNB1,,TNBnを全て0でクリアする。また、保護通信メンバECU3では、受信メッセージID毎の最新ワーク鍵IDバッファRIB1,,RIBnに格納されるワーク鍵IDと標準フォーマットの識別子領域ID28~ID18に格納されるメッセージIDのワーク鍵IDとが等しい場合同じワーク鍵IDのワーク鍵が更新された場合新しいワーク鍵シードを受信した場合、受信メッセージID毎の最新ワーク鍵IDバッファRIB1,,RIBnを全て-1でクリアするとともに受信メッセージID毎の通し番号バッファRNB1,,RNBnを全て0でクリアする。なお、ワーク鍵シードメッセージのCRCは、受信時にCANのハードウェアで検証されるものとする。メッセージ送信時について具体的に説明する。送信側の保護通信メンバECU3Aでは、標準フォーマットのメッセージIDで送信する各種送信情報を収集し、収集できた送信情報からメッセージIDを取得する。CAN通信システム1では、メッセージID毎に、データ領域に格納される送信情報が予め決められている。保護通信メンバECU3Aでは、メッセージIDに基づいて保護対象メッセージか否かを判定する。CAN通信システム1では、メッセージID毎に、保護通信の対象か否か予め決められている。メッセージIDが保護対象メッセージの場合、保護通信メンバECU3Aでは、送信するメッセージIDに対応する通し番号バッファTNBiに保存されている通し番号前回送信時の通し番号に1を加算し、その加算後の通し番号今回送信時の通し番号を通し番号バッファTNBiに保存する。保護通信メンバECU3Aでは、送信するメッセージID、最新のワーク鍵ID最新ワーク鍵IDバッファIBに格納されているワーク鍵ID、今回送信時の通し番号及び収集された送信情報からなるデータ本体からMACを計算し、その計算したMACの下位13ビットを平文MACとする。MACの計算としては、例えば、システム鍵Ksを用いてOMACOneKeyCBCMAC方式で計算する。保護通信メンバECU3Aでは、最新のワーク鍵最新のワーク鍵IDが0の場合にはワーク鍵0バッファKB0に保存されているワーク鍵、最新のワーク鍵IDが1の場合にはワーク鍵1バッファKB1に保存されているワーク鍵、送信するメッセージID、最新のワーク鍵ID及び今回送信時の通し番号を用いて、ストリーム暗号の鍵ストリームを生成し、データ本体と平文MACを鍵ストリームを用いてストリーム暗号化する。ストリーム暗号としては、例えば、ブロック暗号のOFBOutputFeedBackモードにより、メッセージIDとワーク鍵IDと通し番号を用いて初期ベクトルを生成し、初期ベクトルと鍵ワーク鍵を用いて鍵ストリームを生成し、鍵ストリームと平文を結合して暗号文を生成する。保護通信メンバECU3Aでは、図3に示すように、拡張フォーマットの識別子ベース領域ID28~ID18に送信するメッセージID標準フォーマット互換の11ビットのメッセージIDを格納し、拡張フォーマットの識別子拡張領域のID17に最新のワーク鍵IDを格納し、識別子拡張領域のID16~ID13に今回送信時の通し番号を格納し、識別子拡張領域のID12~ID0に暗号化したMACを格納し、拡張フォーマットのデータ領域に暗号化したデータ本体を格納する。そして、保護通信メンバECU3Aでは、拡張フォーマットでメッセージ保護メッセージをCANバス4上に送信する。このように、拡張フォーマットに格納することにより、保護メッセージは、CAN2.0の通常の拡張フォーマットと同等の形式をとる。したがって、CANのハードウェアでは、CAN2.0の拡張フォーマットとして処理する。なお、送信メッセージのCRCは、送信時にCANのハードウェアによって付与されるものとする。メッセージ受信時について具体的に説明する。メッセージを受信すると、受信側の保護通信メンバECU3Bでは、識別子領域のID28~ID18に格納されるメッセージIDに基づいて受信対象メッセージか否かを判定し、受信対象メッセージの場合には標準フォーマットか否かを判定する。拡張フォーマットの場合、保護通信メンバECU3Bでは、受信したメッセージIDに対応する最新ワーク鍵IDバッファRIBiから最新のワーク鍵IDを取得するとともに、受信したメッセージIDに対応する最新通し番号バッファRNBiから通し番号前回受信時の通し番号を取得する。保護通信メンバECU3Bでは、拡張フォーマットの識別子拡張領域のID17に格納されるワーク鍵IDが最新のワーク鍵ID同じメッセージIDのメッセージを前回受信したときのワーク鍵IDと一致する場合、拡張フォーマットの識別子拡張領域のID16~ID13に格納される通し番号が最新の通し番号同じメッセージIDのメッセージを前回受信したときの通し番号より大きい番号か否かを判定する。ワーク鍵IDが前回受信時と同じで通し番号が前回受信時の通し番号以下の場合同じメッセージIDのメッセージを前回受信したときとワーク鍵IDが同じで通し番号が前回受信時から減っているかあるいは同じ場合、保護通信メンバECU3Bでは、受信したメッセージを不正メッセージ攻撃メッセージと判断し、そのメッセージを破棄し、防御モードに移行する。ワーク鍵IDが前回受信時と同じで通し番号が前回受信時の通し番号より大きい場合あるいはワーク鍵IDが前回受信時と異なる場合、保護通信メンバECU3Bでは、受信したメッセージIDに対応する最新ワーク鍵IDバッファRIBiに今回のワーク鍵IDを保存するとともに、メッセージIDに対応する最新通し番号バッファRNBiに今回の通し番号を保存する。保護通信メンバECU3Bでは、最新のワーク鍵最新のワーク鍵IDが0の場合にはワーク鍵0バッファKB0に保存されているワーク鍵、最新のワーク鍵IDが1の場合にはワーク鍵1バッファKB1に保存されているワーク鍵、今回受信したメッセージID、今回受信したワーク鍵ID及び今回受信した通し番号を用いて、ストリーム暗号の鍵ストリームを生成し、拡張フォーマットのデータ領域に格納される暗号化データ本体と拡張フォーマットの識別子拡張領域のID12~ID0に格納される暗号化MACを鍵ストリームを用いて復号化する。そして、保護通信メンバECU3Bでは、今回受信したメッセージID、今回受信したワーク鍵ID、今回受信した通し番号及び復号化したデータ本体からMACを計算し、その計算したMACの下位13ビットと復号化した平文MACとを比較する。保護通信メンバECU3Bでは、比較したMACが一致しない場合、受信したメッセージを不正メッセージと判断し、そのメッセージを破棄し、防御モードに移行する。また、保護通信メンバECU3Bでは、比較したMACが一致する場合、上位層のアプリケーションソフトにおいて11ビットのメッセージIDすなわち、標準フォーマットのデータ形式で受信処理を行う。なお、メッセージのCRCは、受信時にCANのハードウェアによって検証されているものとする。図1~図3を参照して、CAN通信システム1における保護通信の処理の流れを説明する。ここでは、保護通信マスタECU2におけるワーク鍵シードメッセージ送信処理について図4のフローチャートに沿って説明し、保護通信メンバECU3におけるワーク鍵シードメッセージ受信処理について図5のフローチャートに沿って説明し、送信側の保護通信メンバECU3Aにおけるメッセージ送信処理については図6のフローチャートに沿って説明し、受信側の保護通信メンバECU3Bにおけるメッセージ受信処理については図7のフローチャートに沿って説明する。保護通信マスタECU2では、最初に、メッセージIDとして0x10ワーク鍵ID=0を設定するS10。ワーク鍵シードメッセージの送信タイミング毎に、保護通信マスタECU2では、ワーク鍵シード64ビット長乱数を生成するS11。保護通信マスタECU2では、標準フォーマットの識別子領域にメッセージIDを格納し、データ領域にワーク鍵シードを格納し、ワーク鍵シードメッセージを生成するS12。そして、保護通信マスタECU2では、ワーク鍵シードメッセージを送信するS13。ワーク鍵シードメッセージ送信後、保護通信マスタECU2では、次の送信タイミングまで一定時間待つS14。一定時間後、保護通信マスタECU2では、ワーク鍵シードメッセージの最新のメッセージIDが0x10か否かを判定するS15。保護通信マスタECU2では、S15にてメッセージIDが0x10と判定した場合にはメッセージIDとして0x11ワーク鍵ID=1を設定しS16、S15にてメッセージIDが0x11と判定した場合にはメッセージIDとして0x10ワーク鍵ID=0を設定するS17。そして、保護通信マスタECU2では、上記したように、ワーク鍵シードを生成しS11、そのワーク鍵シードにメッセージIDを付加してワーク鍵シードメッセージを生成しS12、ワーク鍵シードメッセージを送信するS13。このように、保護通信マスタECU2では、周期的に、ワーク鍵シードを更新し、ワーク鍵シードを更新する毎にメッセージIDワーク鍵IDを切り替えて、ワーク鍵シードメッセージを保護通信メンバECU3に送信する。ワーク鍵シードメッセージを受信する毎にS20、全ての保護通信メンバECU3では、ワーク鍵シードメッセージの標準フォーマットの識別子領域に格納されるメッセージIDが0x10か否かを判定するS21。保護通信メンバECU3では、S21にてメッセージIDが0x10と判定した場合にはワーク鍵IDを0としS22、S21にてメッセージIDが0x11と判定した場合にはワーク鍵IDを1とするS23。保護通信メンバECU3では、ワーク鍵シードメッセージの標準フォーマットのデータ領域からワーク鍵シードを取得しS24、そのワーク鍵シードを用いてワーク鍵を生成するS25。保護通信メンバECU3では、S22又はS23で取得したワーク鍵IDに対応するワーク鍵バッファKBjに生成したワーク鍵を保存するS26。保護通信メンバECU3では、全ての送信メッセージIDに対応する通し番号バッファTNB1,,TNBnの通し番号を0でクリアするS27。また、保護通信メンバECU3では、全ての受信メッセージに対応する最新ワーク鍵IDバッファRTB1,,RTBnに保存されているワーク鍵IDがS22又はS23で取得したワーク鍵IDと等しい場合、全ての受信メッセージに対応する最新ワーク鍵IDバッファRTB1,,RTBnのワーク鍵IDを-1でクリアし、全ての受信メッセージに対応する最新通し番号バッファRNB1,,RNBnの通し番号を0でクリアするS28。最後に、保護通信メンバECU3では、最新ワーク鍵IDバッファIBにS22又はS23で取得したワーク鍵IDを保存するS29。このように、全ての保護通信メンバECU3では、周期的に、ワーク鍵シードメッセージを受信し、ワーク鍵シードからワーク鍵を更新するとともにワーク鍵IDも切り替えられる。送信側の保護通信メンバECU3Aでは、標準フォーマットのメッセージIDで送信する各種送信情報を収集するS40。そして、保護通信メンバECU3Aでは、収集できた送信情報からメッセージIDを取得するS41。保護通信メンバECU3Aでは、そのメッセージIDに基づいて保護対象メッセージか否かを判定するS42。S42にて保護対象メッセージでないと判定した場合、保護通信メンバECU3Aでは、標準フォーマットの識別子領域にメッセージIDを格納し、標準フォーマットのデータ領域に収集した送信情報のデータを格納し、標準フォーマットでメッセージを送信するS43。S42にて保護対象メッセージと判定した場合、保護通信メンバECU3Aでは、最新ワーク鍵IDバッファIBから最新のワーク鍵IDを取得するS44。また、保護通信メンバECU3Aでは、送信するメッセージIDに対応する通し番号バッファTNBiから通し番号を取得し、その取得した通し番号に1を加算し、その加算後の通し番号を通し番号バッファTNBiに保存するS45。保護通信メンバECU3Aでは、送信するメッセージIDと最新のワーク鍵IDと加算後の通し番号と収集できた送信情報によるデータ領域のデータからMACを生成し、生成したMACの下位13ビットを平文MACとするS46。また、保護通信メンバECU3Aでは、最新のワーク鍵IDに対応するワーク鍵バッファKBjからワーク鍵を取得し、そのワーク鍵と送信するメッセージIDと最新のワーク鍵IDと加算後の通し番号からストリーム暗号の鍵ストリームを生成するS47。そして、保護通信メンバECU3Aでは、収集した送信情報によるデータ領域のデータと平文MACを鍵ストリームを用いてそれぞれ暗号化するS48。保護通信メンバECU3Aでは、拡張フォーマットのデータ領域に暗号化したデータを入れ、拡張フォーマットの識別子ベース領域ID28~ID18にメッセージIDを入れ、拡張フォーマットの識別子拡張領域ID17~ID0に最新のワーク鍵IDと加算後の通し場号と暗号化したMACを入れ、拡張フォーマットでメッセージを送信するS49。このように、メッセージを送信する場合、保護通信メンバECU3Aでは、そのメッセージが保護対象の場合には、通し番号とデータ本体を含むMACを生成し、そのMACの一部とデータ本体をワーク鍵を用いたストリーム暗号で暗号化し、拡張フォーマットの識別子拡張領域を利用してワーク鍵ID、通し番号、暗号化MACセキュリティに関するデータを入れて、拡張フォーマットでメッセージを送信する。この際、保護通信メンバECU3AのCANのハードウェアでは、拡張フォーマットとして送信処理を行う。また、保護通信メンバECU3Aの上位層のアプリケーションソフトウェアからは、メッセージIDが標準フォーマットと同じく11ビットとなる。受信側の保護通信メンバECU3Bでは、メッセージを受信する毎にS60、ID28~ID18に格納されているメッセージIDに基づいて受信対象のメッセージか否かを判定するS61。S61にて受信対象のメッセージでないと判定した場合、保護通信メンバECU3Bでは、処理を終了する。S61にて受信対象のメッセージと判定した場合、保護通信メンバECU3Bでは、メッセージが標準フォーマットか否かを判定するS62。S62にて標準フォーマットと判定した場合、保護通信メンバECU3Bでは、上位層のアプリケーションソフトウェアが標準フォーマットの通常の受信処理を行うS63。S62にて拡張フォーマットと判定した場合、保護通信メンバECU3Bでは、拡張フォーマットの識別子ベース領域ID28~ID18の受信メッセージIDに対応する最新ワーク鍵IDバッファRIBiと最新通し番号バッファRNBiからワーク鍵IDと通し番号の組を取得するS64。そして、保護通信メンバECU3Bでは、拡張フォーマットの識別子拡張領域のID17のデータと取得したワーク鍵IDとが一致するか否かを判定するS65。S65にて一致すると判定した場合、保護通信メンバECU3Bでは、拡張フォーマットの識別子拡張領域のID16~ID13のデータが取得した通し番号より大きいか否かを判定するS66。S66にてID16~ID13のデータが取得した通し番号以下と判定した場合、保護通信メンバECU3Bでは、受信したメッセージを廃棄し、防御モードに移行するS73。S65にて一致しないと判定した場合又はS66にてID16~ID13のデータが取得した通し番号より大きいと判定した場合、保護通信メンバECU3Bでは、受信メッセージIDに対応する最新ワーク鍵IDバッファRIBiに拡張フォーマットの識別子拡張領域のID17のデータ今回受信したワーク鍵IDを保存し、最新通し番号バッファRNBiに拡張フォーマットの識別子拡張領域のID16~ID13のデータ今回受信した通し番号を保存するS67。保護通信メンバECU3Bでは、ワーク鍵IDに対応するワーク鍵バッファKBjからワーク鍵を取得し、そのワーク鍵と受信したメッセージIDと受信したワーク鍵IDと受信した通し番号からストリーム暗号の鍵ストリームを生成するS68。そして、保護通信メンバECU3Bでは、受信メッセージの拡張フォーマットのデータ領域の暗号化データと拡張フォーマットの識別子拡張領域のID12~ID0の暗号化MACを鍵ストリームを用いてそれぞれ復号化するS69。さらに、保護通信メンバECU3Bでは、受信したメッセージIDと受信したワーク鍵IDと受信した通し番号と復号化したデータからMACを生成し、生成したMACの下位13ビットと復号化した平文MACとを比較するS70。そして、保護通信メンバECU3Bでは、S70で比較した結果、MACが等しいか否かを判定するS71。S71にてMACが等しいと判定した場合、保護通信メンバECU3Bでは、上位層のアプリケーションソフトウェアが11ビットのメッセージIDとして標準フォーマットのデータ形式で受信処理を行うS72。一方、S71にてMACが等しくないと判定した場合、保護通信メンバECU3Bでは、受信したメッセージを廃棄し、防御モードに移行するS73。このように、拡張フォーマットでメッセージを受信した場合、保護通信メンバECU3Bでは、通し番号とMACによる検証で不正メッセージか否かを判定し、不正メッセージと判定した場合には防御モードに移行する。この際、保護通信メンバECU3BのCANのハードウェアでは、拡張フォーマットとして受信処理を行う。また、保護通信メンバECU3Bの上位層のアプリケーションソフトウェアでは、標準フォーマットと同等の11ビットのメッセージIDとして受信処理を行う。このCAN通信システム1によれば、MACとデータ本体を暗号化し、この暗号化したMACとデータ本体を拡張フォーマットを利用して送信することにより、CANにおけるフォーマットの互換性を確保しつつセキュリティ性を向上させることができる。また、CAN通信システム1によれば、メッセージID毎の通し番号とMACによってメッセージを検証することにより、再送攻撃等の不正メッセージを高精度に検出でき、メッセージの安全性を向上でき、セキュリティ性がより向上する。また、CAN通信システム1によれば、各ECU2,3におけるソフトウェアによる処理だけで簡易に保護通信を行うことができる。特に、CAN通信システム1によれば、CANのハードウェアが拡張フォーマットとして処理できるとともに、各保護通信メンバECU3の上位層のアプリケーションソフトウェアが拡張フォーマットの識別子ベース領域に格納される標準フォーマット互換のメッセージID11ビットを用いて標準フォーマットと同等に受信処理できる。さらに、CAN通信システム1によれば、MACを暗号化しているので、少ないデータ量でもメッセージの安全性を確保できる。したがって、拡張フォーマットの識張子拡張領域内に暗号化MACや通し番号を格納する領域を確保でき、拡張フォーマットのデータ領域にMAC等を格納しなくてよいので、拡張フォーマットのデータ領域には通常と同様にデータを格納でき、データ領域の互換性も確保できる。また、CAN通信システム1によれば、データ本体を暗号化しているので、データ本体の安全性も向上できる。さらに、CAN通信システム1によれば、保護通信マスタECU2から周期的に更新したワーク鍵シードを送信することにより、保護通信メンバECU3で周期的にワーク鍵を更新でき、ワーク鍵の安全性を確保できる。また、CAN通信システム1によれば、ワーク鍵シードを更新する毎にワーク鍵IDを0と1で切り替えることにより、メッセージの送信側と受信側とでワーク鍵の更新の同期をとることができる。以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。例えば、本実施の形態では車両に搭載されるCAN通信システムに適用したが、車両以外のCANにも適用可能である。また、本実施の形態ではソフトウェアで保護通信のための各処理を行う構成としたが、処理の一部例えば、暗号化処理をCANのハードウェアで行ってもよい。また、本実施の形態ではワーク鍵を更新する際に送信側と受信側で同期をとるために、ワーク鍵IDを導入し、ワーク鍵IDを0と1で切り替える手法を適用したが、他の手法を用いてもよい。また、本実施の形態ではMACと通し番号を用いてメッセージを検証したが、MACによる検証だけでもよい。この場合、拡張フォーマットの識別子拡張領域には少なくとも暗号化MACを格納すればよい。また、本実施の形態ではメッセージID、ワーク鍵ID、通し番号、データ本体からMACを生成したが、この組み合わせ以外でMACを生成してもよい。また、本実施の形態ではワーク鍵、メッセージID、ワーク鍵ID、通し番号から鍵ストリームを生成したが、この組み合わせ以外で鍵ストリームを生成してもよい。また、本実施の形態ではストリーム暗号を適用したが、他の暗号方法を適用してもよい。また、本実施の形態では保護通信マスタECUでワーク鍵シードを更新する毎にワーク鍵シードメッセージを一度だけ保護通信メンバECUに送信する構成としたが、保護通信メンバECUでワーク鍵シードメッセージを確実に受信するために、保護通信マスタECUから同じワーク鍵シードメッセージを複数回送信するようにしてもよい。"