説明

保護通信方法

【課題】CANにおけるフォーマットの互換性確保とセキュリティ性向上を両立させた保護通信方法を提供することを課題とする。
【解決手段】CAN通信プロトコルに基づいて送受信されるデータを保護するための保護通信方法であって、MAC(メッセージ認証コード)を生成し(S46)、MACと送信データを暗号化し(S48)、その暗号化したMACと通し番号とワーク鍵IDをCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、標準フォーマット互換のメッセージIDを拡張フォーマットの識別子ベース領域に格納し、暗号化した送信データを拡張フォーマットのデータ領域に格納し(S49)、その拡張フォーマットでメッセージを送信する(S49)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、CAN通信プロトコルに基づいて送受信されるデータを保護するための保護通信方法に関する。
【背景技術】
【0002】
車載のECU[Electronic Control Unit]間の基幹ネットワークとして、一般に、CAN[Controller Area Network]が用いられている。CANには、OBD[OnBoard Diagnosis]のためのインタフェースやECU追加のためのコネクタも用意されている。このような箇所からCANに接続し、外部から不正メッセージを送信することも可能である。このような不正メッセージを排除してセキュリティ性を向上させるために、一般に、メッセージにMAC[Message Authentication Code](メッセージ認証コード)を付与する手法がある。特許文献1には、ネットワークにおけるデータ通信においてMACを暗号化して送信する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平7−297819号公報
【特許文献2】特開2010−187327号公報
【特許文献3】特開2010−258990号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
セキュリティ性を向上させるためには、上記のようにMAC等のセキュリティに関するデータを追加する必要がある。しかし、CANの場合、標準フォーマットが決まっており、データ領域に格納可能なデータは最大8バイトであり、データ領域に格納するデータは決まっているので、データ領域に安全な長さのMACを格納することは困難である。また、MACを付加するために、送信データ量を大幅に増加すると、コストアップにつながる。さらに、CANは車載の標準の基幹ネットワークとして定着しているので、他の通信方式に移行することは難しい。
【0005】
そこで、本発明は、CANにおけるフォーマットの互換性確保とセキュリティ性向上を両立させた保護通信方法を提供することを課題とする。
【課題を解決するための手段】
【0006】
本発明に係る保護通信方法は、CAN通信プロトコルに基づいて送受信されるデータを保護するための保護通信方法であって、メッセージ認証コードを生成する生成ステップと、生成ステップで生成したメッセージ認証コードと送信データを暗号化する暗号化ステップと、暗号化ステップで暗号化したメッセージ認証コードをCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、暗号化ステップで暗号化した送信データを拡張フォーマットのデータ領域に格納する格納ステップと、格納ステップで格納した拡張フォーマットでメッセージを送信する送信ステップとを含むこと特徴とする。
【0007】
この保護通信方法では、生成ステップでメッセージ認証コードを生成し、暗号化ステップでメッセージ認証コードと送信データをそれぞれ暗号化する。そして、保護通信方法では、格納ステップで少なくとも暗号化したメッセージ認証コードを拡張フォーマットの識別子拡張領域に格納するとともに暗号化した送信データを拡張フォーマットのデータ領域に格納し、送信ステップでその拡張フォーマットでメッセージを送信する。この際、拡張フォーマットの識別子ベース領域には、標準フォーマット互換の識別子(ID)が格納される。したがって、CANのハードウェアでは拡張フォーマットとして処理でき、CANに接続される各ノードのアプリケーションソフトウェアでは拡張フォーマットの識別子ベース領域に格納される標準フォーマット互換の識別子(ID)を用いて標準フォーマットと同等に処理できる。また、拡張フォーマットの識別子拡張領域に格納される暗号化したメッセージ認証コードを用いてメッセージを認証でき、メッセージの安全性を向上できる。さらに、メッセージ認証コードを暗号化することにより、少ないデータ量でもメッセージの安全性を向上でき、拡張フォーマットの識張子拡張領域内において暗号化メッセージ認証コードを格納する領域を確保でき、拡張フォーマットのデータ領域にメッセージ認証コードを格納しなくてよい。また、送信データを暗号化することにより、送信データの安全性を向上できる。このように、保護通信方法では、メッセージ認証コードと送信データを暗号化し、この暗号化したメッセージ認証コードと送信データを拡張フォーマットを利用して送信することにより、CANにおけるフォーマットの互換性を確保しつつセキュリティ性を向上させることができる。
【0008】
本発明の上記保護通信方法では、格納ステップではワーク鍵ID、メッセージの通し番号をCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、送信ステップで送信された拡張フォーマットのメッセージを受信したノードにおいて、通し番号の検証又はメッセージ認証コードの検証で異常を検出した場合、防御モードに移行する。
【0009】
この保護通信方法では、格納ステップで拡張フォーマットの識別子拡張領域に暗号化メッセージ認証コードの他にワーク鍵IDとメッセージの通し番号を格納し、送信ステップでその拡張フォーマットでメッセージを送信する。CANバスに接続する各ノードでは、この拡張フォーマットのメッセージを受信した場合、メッセージの通し番号で検証するとともにメッセージ認証コードを用いて検証し、少なくとも一方の検証で異常を検出した場合には防御モードに移行する。このように、保護通信方式では、通し番号とメッセージ認証コードによってメッセージを検証することにより、再送攻撃等の不正メッセージを高精度に検出でき、メッセージの安全性を向上でき、セキュリティ性がより向上する。
【発明の効果】
【0010】
本発明によれば、メッセージ認証コードと送信データを暗号化し、この暗号化したメッセージ認証コードと送信データを拡張フォーマットを利用して送信することにより、CANにおけるフォーマットの互換性を確保しつつセキュリティ性を向上させることができる。
【図面の簡単な説明】
【0011】
【図1】本実施の形態に係るCAN通信システムの構成図である。
【図2】保護通信メンバECUのメモリに確保される保護通信で必要なバッファであり、(a)がワーク鍵関連のバッファであり、(b)が送信メッセージ関連のバッファであり、(c)が受信メッセージ関連のバッファである。
【図3】保護メッセージの拡張フォーマットの識別子領域である。
【図4】保護通信マスタECUにおけるワーク鍵シードメッセージ送信シーケンスのフローチャートである。
【図5】保護通信メンバECUにおけるワーク鍵シードメッセージ受信シーケンスのフローチャートである。
【図6】保護通信メンバECUにおけるメッセージ送信シーケンスのフローチャートである。
【図7】保護通信メンバECUにおけるメッセージ受信シーケンスのフローチャートである。
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明に係る保護通信方法の実施の形態を説明する。なお、各図において同一又は相当する要素については同一の符号を付し、重複する説明を省略する。
【0013】
本実施の形態では、本発明に係る保護通信方法を、車両に搭載されるCAN通信システムに適用する。本実施の形態に係るCAN通信システムは、CAN2.0の通信プロトコルに基づいてメッセージを送受信する車載LAN[Local Area Network]であり、CANバスに複数のECU(ノード)が接続されている。特に、本実施の形態では、CAN通信システムにおける保護通信処理について詳細に説明する。
【0014】
なお、CAN2.0の通信プロトコルのデータフレームには、標準フォーマットと拡張フォーマットがある。標準フォーマット、拡張フォーマットは、データを格納するデータ領域とメッセージIDを格納する識別子領域(ID領域)を有している。データ領域は、0〜8バイト(0〜64ビット)のデータを格納可能である。標準フォーマットの識別子領域は、11ビット長である。拡張フォーマットの識別子領域は、29ビット長である。拡張フォーマットの識別子領域は、11ビット長の識別子ベース領域と18ビット長の識別子拡張領域で構成される。
【0015】
図1〜図3を参照して、本実施の形態に係るCAN通信システム1について説明する。図1は、本実施の形態に係るCAN通信システムの構成図である。図2は、保護通信メンバECUのメモリに確保される保護通信で必要なバッファであり、(a)がワーク鍵関連のバッファであり、(b)が送信メッセージ関連のバッファであり、(c)が受信メッセージ関連のバッファである。図3は、保護メッセージの拡張フォーマットの識別子領域である。
【0016】
CAN通信システム1は、保護通信のマスタとなる保護通信マスタECU2と相互に保護通信を行う複数の保護通信メンバECU3(3A,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に搭載される中位層のソフトウェアによる処理で保護通信のための各処理を行う。
【0017】
保護通信マスタECU2では、周期的に、ワーク鍵シードを格納してワーク鍵シードメッセージを送信する。保護通信メンバECU3では、ワーク鍵シードメッセージを受信すると、ワーク鍵シードからワーク鍵を生成する(周期的にワーク鍵を更新する)。保護メッセージを送信する場合、保護通信メンバECU3Aでは、MACを生成し、MACと送信データ本体を暗号化し、拡張フォーマットのデータ領域に暗号化した送信データ本体を格納するとともに拡張フォーマットの識別子拡張領域にワーク鍵ID、通し番号、暗号化したMACを格納してメッセージを送信する。保護メッセージを受信した場合、保護通信メンバECU3Bでは、暗号化された送信データ本体とMACを復号化し、通し番号とMACで検証し、検証で異常を検出した場合には防御モードに移行する。
【0018】
なお、ワーク鍵は、CAN通信システム1において周期的に更新される鍵であり、本実施の形態ではストリーム暗号化に用いる鍵ストリームを生成するために使われる。ワーク鍵IDは、ワーク鍵の更新タイミングを送信側と受信側で同期をとるために用いられ、本実施の形態ではワーク鍵シードを更新(ひいては、ワーク鍵を更新)する際に0と1とで切り替えられる。ワーク鍵シードは、ワーク鍵を生成するためのシードであり、本実施の形態では64ビットとする。通し番号は、送信側の保護通信メンバECU3Aが送信するメッセージID毎に付与され、同じメッセージIDのメッセージを送信する毎に1ずつ増加する番号であり、ワーク鍵が更新される毎にリセットされる。システム鍵は、CAN通信システム1に接続される全てのECUが事前に持っている共有鍵である。
【0019】
保護通信マスタECU2は、保護通信でマスタとなるECUであり、保護通信を行うECUの中から任意のECUが選択される。保護通信マスタECU2は、周期的に、ワーク鍵シードを生成し、ワーク鍵IDを付加したワーク鍵シードメッセージを送信する。
【0020】
具体的には、保護通信マスタECU2では、一定時間毎に、ワーク鍵シードを生成し、標準フォーマットのデータ領域にワーク鍵シードを格納するとともに識別子領域(ID28〜ID18)にワーク鍵IDのメッセージIDを格納し、ワーク鍵シードメッセージをCANバス4上に送信する。ワーク鍵シードは、例えば、64ビット長乱数である。ワーク鍵ID=0の場合にはメッセージIDを0x10とし、ワーク鍵ID=1の場合にはメッセージIDを0x11とする。ワーク鍵IDはワーク鍵メッセージを送信する毎(ワーク鍵シードを更新する毎)に切り替えられ、0、1、0、1・・・が繰り返される。なお、ワーク鍵シードメッセージのCRC[Cyclic Redundancy Check]は、送信時にCANのハードウェアによって付与されるものとする。
【0021】
保護通信メンバECU3は、相互に保護通信を行う複数のECUである。保護通信メンバECU3は、ワーク鍵シードメッセージを受信する毎に、ワーク鍵シードメッセージからワーク鍵IDとワーク鍵シードを取得し、ワーク鍵を生成する。また、送信側の保護通信メンバECU3Aは、保護メッセージの場合、通し番号とデータ本体のMACを計算し、データ本体と平文MAC(MACの一部)をワーク鍵を用いたストリーム暗号で暗号化し、暗号化データ本体の他にワーク鍵ID、通し番号、暗号化MACを拡張フォーマットに格納して保護メッセージを送信する。また、保護通信メンバECU3Bは、保護メッセージを受信すると、暗号化データ本体と暗号化MACを復号化し、その復号化したデータ本体と通し番号のMACを計算し、計算したMACと復号化したMACとを検証するとともに通し番号を検証し、検証で異常がある場合には防御モードに移行する。
【0022】
各保護通信メンバECU3には、下記に示すように、メモリ上に保護通信に必要なバッファ領域がそれぞれ確保されている。保護通信メンバECU3は、図2(a)に示すように、最新ワーク鍵IDを管理するための最新ワーク鍵IDバッファIBを有しており、初期値は−1である。最新ワーク鍵IDバッファIBは、0,1,−1のうちのいずれかの値が格納され、値が−1の場合には「無効」を意味する。また、保護通信メンバECU3は、図2(a)に示すように、ワーク鍵ID=0の場合のワーク鍵を管理するためのワーク鍵0バッファKBとワーク鍵ID=1の場合のワーク鍵を管理するためのワーク鍵1バッファKBを有しており、各バッファKB,KBの初期値は0である。
【0023】
また、保護通信メンバECU3は、図2(b)に示すように、保護メッセージ送信する場合の各メッセージIDの通し番号を管理するために受信メッセージID毎に通し番号バッファTNB,TNB,TNB,・・・,TNBを有しており、初期値は0である。ECU3毎に送信するメッセージIDは決まっており、ECU3毎に送信メッセージIDの個数nは変わる。また、保護通信メンバECU3は、図2(c)に示すように、保護メッセージを受信した場合の最新のワーク鍵IDを管理するために受信メッセージID毎に最新ワーク鍵IDバッファRIB,RIB,RIB,・・・,RIBを有しており、初期値は−1である。また、保護通信メンバECU3は、図2(c)に示すように、保護メッセージを受信した場合の最新の通し番号を管理するために受信メッセージID毎に最新通し番号バッファRNB,RNB,RNB,・・・,RNBを有しており、初期値は0である。ECU3毎に受信するメッセージIDは決まっており、ECU3毎に受信メッセージIDの個数nは変わる。
【0024】
ワーク鍵シードメッセージ受信時について具体的に説明する。ワーク鍵シードメッセージを受信すると、保護通信メンバECU3では、ワーク鍵シードメッセージの標準フォーマットのデータ領域からワーク鍵シードを取り出し、そのワーク鍵シードを用いてワーク鍵を生成する。ワーク鍵の生成方法としては、例えば、ワーク鍵ID=0の場合にはワーク鍵シードSeed0を用いて式(1)によりワーク鍵KW0を計算し、ワーク鍵ID=1の場合にはワーク鍵シードSeed1を用いて式(2)によりワーク鍵KW1を計算する。式(1)、(2)のEKsはシステム鍵Ksを鍵としたDES[Data Encryption Standard]などの64ビット長ブロック暗号演算である。
W0=EKs(Seed0)・・・(1)
W1=EKs(Seed1)・・・(2)
【0025】
そして、保護通信メンバECU3では、標準フォーマットの識別子領域(ID28〜ID18)に格納されるメッセージIDが0x10(ワーク鍵IDが0)の場合にはワーク鍵0バッファKBにワーク鍵を保存し、メッセージIDが0x11(ワーク鍵IDが1)の場合にはワーク鍵1バッファKBにワーク鍵を保存する。また、保護通信メンバECU3では、ワーク鍵IDが更新される毎にそのワーク鍵IDを最新ワーク鍵IDバッファIBに保存する。また、保護通信メンバECU3では、ワーク鍵が更新される毎(新しいワーク鍵シードを受信する毎)に、送信メッセージID毎の通し番号バッファTNB,・・・,TNBを全て0でクリアする。また、保護通信メンバECU3では、受信メッセージID毎の最新ワーク鍵IDバッファRIB,・・・,RIBに格納されるワーク鍵IDと標準フォーマットの識別子領域(ID28〜ID18)に格納されるメッセージIDのワーク鍵IDとが等しい場合(同じワーク鍵IDのワーク鍵が更新された場合(新しいワーク鍵シードを受信した場合))、受信メッセージID毎の最新ワーク鍵IDバッファRIB,・・・,RIBを全て−1でクリアするとともに受信メッセージID毎の通し番号バッファRNB,・・・,RNBを全て0でクリアする。なお、ワーク鍵シードメッセージのCRCは、受信時にCANのハードウェアで検証されるものとする。
【0026】
メッセージ送信時について具体的に説明する。送信側の保護通信メンバECU3Aでは、標準フォーマットのメッセージIDで送信する各種送信情報を収集し、収集できた送信情報からメッセージIDを取得する。CAN通信システム1では、メッセージID毎に、データ領域に格納される送信情報が予め決められている。保護通信メンバECU3Aでは、メッセージIDに基づいて保護対象メッセージか否かを判定する。CAN通信システム1では、メッセージID毎に、保護通信の対象か否か予め決められている。
【0027】
メッセージIDが保護対象メッセージの場合、保護通信メンバECU3Aでは、送信するメッセージIDに対応する通し番号バッファTNBに保存されている通し番号(前回送信時の通し番号)に1を加算し、その加算後の通し番号(今回送信時の通し番号)を通し番号バッファTNBに保存する。保護通信メンバECU3Aでは、送信するメッセージID、最新のワーク鍵ID(最新ワーク鍵IDバッファIBに格納されているワーク鍵ID)、今回送信時の通し番号及び収集された送信情報からなるデータ本体からMACを計算し、その計算したMACの下位13ビットを平文MACとする。MACの計算としては、例えば、システム鍵Ksを用いてOMAC[One-Key CBC MAC]方式で計算する。保護通信メンバECU3Aでは、最新のワーク鍵(最新のワーク鍵IDが0の場合にはワーク鍵0バッファKBに保存されているワーク鍵、最新のワーク鍵IDが1の場合にはワーク鍵1バッファKBに保存されているワーク鍵)、送信するメッセージID、最新のワーク鍵ID及び今回送信時の通し番号を用いて、ストリーム暗号の鍵ストリームを生成し、データ本体と平文MACを鍵ストリームを用いてストリーム暗号化する。ストリーム暗号としては、例えば、ブロック暗号のOFB[Output Feed Back]モードにより、メッセージIDとワーク鍵IDと通し番号を用いて初期ベクトルを生成し、初期ベクトルと鍵(ワーク鍵)を用いて鍵ストリームを生成し、鍵ストリームと平文を結合して暗号文を生成する。
【0028】
保護通信メンバECU3Aでは、図3に示すように、拡張フォーマットの識別子ベース領域(ID28〜ID18)に送信するメッセージID(標準フォーマット互換の11ビットのメッセージID)を格納し、拡張フォーマットの識別子拡張領域のID17に最新のワーク鍵IDを格納し、識別子拡張領域のID16〜ID13に今回送信時の通し番号を格納し、識別子拡張領域のID12〜ID0に暗号化したMACを格納し、拡張フォーマットのデータ領域に暗号化したデータ本体を格納する。そして、保護通信メンバECU3Aでは、拡張フォーマットでメッセージ(保護メッセージ)をCANバス4上に送信する。このように、拡張フォーマットに格納することにより、保護メッセージは、CAN2.0の通常の拡張フォーマットと同等の形式をとる。したがって、CANのハードウェアでは、CAN2.0の拡張フォーマットとして処理する。なお、送信メッセージのCRCは、送信時にCANのハードウェアによって付与されるものとする。
【0029】
メッセージ受信時について具体的に説明する。メッセージを受信すると、受信側の保護通信メンバECU3Bでは、識別子領域のID28〜ID18に格納されるメッセージIDに基づいて受信対象メッセージか否かを判定し、受信対象メッセージの場合には標準フォーマットか否かを判定する。
【0030】
拡張フォーマットの場合、保護通信メンバECU3Bでは、受信したメッセージIDに対応する最新ワーク鍵IDバッファRIBから最新のワーク鍵IDを取得するとともに、受信したメッセージIDに対応する最新通し番号バッファRNBから通し番号(前回受信時の通し番号)を取得する。保護通信メンバECU3Bでは、拡張フォーマットの識別子拡張領域のID17に格納されるワーク鍵IDが最新のワーク鍵ID(同じメッセージIDのメッセージを前回受信したときのワーク鍵ID)と一致する場合、拡張フォーマットの識別子拡張領域のID16〜ID13に格納される通し番号が最新の通し番号(同じメッセージIDのメッセージを前回受信したときの通し番号)より大きい番号か否かを判定する。ワーク鍵IDが前回受信時と同じで通し番号が前回受信時の通し番号以下の場合(同じメッセージIDのメッセージを前回受信したときとワーク鍵IDが同じで通し番号が前回受信時から減っているかあるいは同じ場合)、保護通信メンバECU3Bでは、受信したメッセージを不正メッセージ(攻撃メッセージ)と判断し、そのメッセージを破棄し、防御モードに移行する。
【0031】
ワーク鍵IDが前回受信時と同じで通し番号が前回受信時の通し番号より大きい場合あるいはワーク鍵IDが前回受信時と異なる場合、保護通信メンバECU3Bでは、受信したメッセージIDに対応する最新ワーク鍵IDバッファRIBに今回のワーク鍵IDを保存するとともに、メッセージIDに対応する最新通し番号バッファRNBに今回の通し番号を保存する。
【0032】
保護通信メンバECU3Bでは、最新のワーク鍵(最新のワーク鍵IDが0の場合にはワーク鍵0バッファKBに保存されているワーク鍵、最新のワーク鍵IDが1の場合にはワーク鍵1バッファKBに保存されているワーク鍵)、今回受信したメッセージID、今回受信したワーク鍵ID及び今回受信した通し番号を用いて、ストリーム暗号の鍵ストリームを生成し、拡張フォーマットのデータ領域に格納される暗号化データ本体と拡張フォーマットの識別子拡張領域のID12〜ID0に格納される暗号化MACを鍵ストリームを用いて復号化する。そして、保護通信メンバECU3Bでは、今回受信したメッセージID、今回受信したワーク鍵ID、今回受信した通し番号及び復号化したデータ本体からMACを計算し、その計算したMACの下位13ビットと復号化した平文MACとを比較する。保護通信メンバECU3Bでは、比較したMACが一致しない場合、受信したメッセージを不正メッセージと判断し、そのメッセージを破棄し、防御モードに移行する。また、保護通信メンバECU3Bでは、比較したMACが一致する場合、上位層のアプリケーションソフトにおいて11ビットのメッセージID(すなわち、標準フォーマットのデータ形式)で受信処理を行う。なお、メッセージのCRCは、受信時にCANのハードウェアによって検証されているものとする。
【0033】
図1〜図3を参照して、CAN通信システム1における保護通信の処理の流れを説明する。ここでは、保護通信マスタECU2におけるワーク鍵シードメッセージ送信処理について図4のフローチャートに沿って説明し、保護通信メンバECU3におけるワーク鍵シードメッセージ受信処理について図5のフローチャートに沿って説明し、送信側の保護通信メンバECU3Aにおけるメッセージ送信処理については図6のフローチャートに沿って説明し、受信側の保護通信メンバECU3Bにおけるメッセージ受信処理については図7のフローチャートに沿って説明する。
【0034】
保護通信マスタECU2では、最初に、メッセージIDとして0x10(ワーク鍵ID=0)を設定する(S10)。ワーク鍵シードメッセージの送信タイミング毎に、保護通信マスタECU2では、ワーク鍵シード(64ビット長乱数)を生成する(S11)。保護通信マスタECU2では、標準フォーマットの識別子領域にメッセージIDを格納し、データ領域にワーク鍵シードを格納し、ワーク鍵シードメッセージを生成する(S12)。そして、保護通信マスタECU2では、ワーク鍵シードメッセージを送信する(S13)。
【0035】
ワーク鍵シードメッセージ送信後、保護通信マスタ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)。
【0036】
このように、保護通信マスタECU2では、周期的に、ワーク鍵シードを更新し、ワーク鍵シードを更新する毎にメッセージID(ワーク鍵ID)を切り替えて、ワーク鍵シードメッセージを保護通信メンバECU3に送信する。
【0037】
ワーク鍵シードメッセージを受信する毎に(S20)、全ての保護通信メンバECU3では、ワーク鍵シードメッセージの標準フォーマットの識別子領域に格納されるメッセージIDが0x10か否かを判定する(S21)。保護通信メンバECU3では、S21にてメッセージIDが0x10と判定した場合にはワーク鍵IDを0とし(S22)、S21にてメッセージIDが0x11と判定した場合にはワーク鍵IDを1とする(S23)。
【0038】
保護通信メンバECU3では、ワーク鍵シードメッセージの標準フォーマットのデータ領域からワーク鍵シードを取得し(S24)、そのワーク鍵シードを用いてワーク鍵を生成する(S25)。保護通信メンバECU3では、S22又はS23で取得したワーク鍵IDに対応するワーク鍵バッファKBに生成したワーク鍵を保存する(S26)。
【0039】
保護通信メンバECU3では、全ての送信メッセージIDに対応する通し番号バッファTNB,・・・,TNBの通し番号を0でクリアする(S27)。また、保護通信メンバECU3では、全ての受信メッセージに対応する最新ワーク鍵IDバッファRTB,・・・,RTBに保存されているワーク鍵IDがS22又はS23で取得したワーク鍵IDと等しい場合、全ての受信メッセージに対応する最新ワーク鍵IDバッファRTB,・・・,RTBのワーク鍵IDを−1でクリアし、全ての受信メッセージに対応する最新通し番号バッファRNB,・・・,RNBの通し番号を0でクリアする(S28)。最後に、保護通信メンバECU3では、最新ワーク鍵IDバッファIBにS22又はS23で取得したワーク鍵IDを保存する(S29)。
【0040】
このように、全ての保護通信メンバECU3では、周期的に、ワーク鍵シードメッセージを受信し、ワーク鍵シードからワーク鍵を更新するとともにワーク鍵IDも切り替えられる。
【0041】
送信側の保護通信メンバECU3Aでは、標準フォーマットのメッセージIDで送信する各種送信情報を収集する(S40)。そして、保護通信メンバECU3Aでは、収集できた送信情報からメッセージIDを取得する(S41)。保護通信メンバECU3Aでは、そのメッセージIDに基づいて保護対象メッセージか否かを判定する(S42)。S42にて保護対象メッセージでないと判定した場合、保護通信メンバECU3Aでは、標準フォーマットの識別子領域にメッセージIDを格納し、標準フォーマットのデータ領域に収集した送信情報のデータを格納し、標準フォーマットでメッセージを送信する(S43)。
【0042】
S42にて保護対象メッセージと判定した場合、保護通信メンバECU3Aでは、最新ワーク鍵IDバッファIBから最新のワーク鍵IDを取得する(S44)。また、保護通信メンバECU3Aでは、送信するメッセージIDに対応する通し番号バッファTNBから通し番号を取得し、その取得した通し番号に1を加算し、その加算後の通し番号を通し番号バッファTNBに保存する(S45)。
【0043】
保護通信メンバECU3Aでは、送信するメッセージIDと最新のワーク鍵IDと加算後の通し番号と収集できた送信情報によるデータ領域のデータからMACを生成し、生成したMACの下位13ビットを平文MACとする(S46)。また、保護通信メンバECU3Aでは、最新のワーク鍵IDに対応するワーク鍵バッファKBからワーク鍵を取得し、そのワーク鍵と送信するメッセージIDと最新のワーク鍵IDと加算後の通し番号からストリーム暗号の鍵ストリームを生成する(S47)。そして、保護通信メンバECU3Aでは、収集した送信情報によるデータ領域のデータと平文MACを鍵ストリームを用いてそれぞれ暗号化する(S48)。
【0044】
保護通信メンバECU3Aでは、拡張フォーマットのデータ領域に暗号化したデータを入れ、拡張フォーマットの識別子ベース領域(ID28〜ID18)にメッセージIDを入れ、拡張フォーマットの識別子拡張領域(ID17〜ID0)に最新のワーク鍵IDと加算後の通し場号と暗号化したMACを入れ、拡張フォーマットでメッセージを送信する(S49)。
【0045】
このように、メッセージを送信する場合、保護通信メンバECU3Aでは、そのメッセージが保護対象の場合には、通し番号とデータ本体を含むMACを生成し、そのMACの一部とデータ本体をワーク鍵を用いたストリーム暗号で暗号化し、拡張フォーマットの識別子拡張領域を利用してワーク鍵ID、通し番号、暗号化MAC(セキュリティに関するデータ)を入れて、拡張フォーマットでメッセージを送信する。この際、保護通信メンバECU3AのCANのハードウェアでは、拡張フォーマットとして送信処理を行う。また、保護通信メンバECU3Aの上位層のアプリケーションソフトウェアからは、メッセージIDが標準フォーマットと同じく11ビットとなる。
【0046】
受信側の保護通信メンバECU3Bでは、メッセージを受信する毎に(S60)、ID28〜ID18に格納されているメッセージIDに基づいて受信対象のメッセージか否かを判定する(S61)。S61にて受信対象のメッセージでないと判定した場合、保護通信メンバECU3Bでは、処理を終了する。
【0047】
S61にて受信対象のメッセージと判定した場合、保護通信メンバECU3Bでは、メッセージが標準フォーマットか否かを判定する(S62)。S62にて標準フォーマットと判定した場合、保護通信メンバECU3Bでは、上位層のアプリケーションソフトウェアが標準フォーマットの通常の受信処理を行う(S63)。
【0048】
S62にて拡張フォーマットと判定した場合、保護通信メンバECU3Bでは、拡張フォーマットの識別子ベース領域(ID28〜ID18)の受信メッセージIDに対応する最新ワーク鍵IDバッファRIBと最新通し番号バッファRNBからワーク鍵IDと通し番号の組を取得する(S64)。そして、保護通信メンバECU3Bでは、拡張フォーマットの識別子拡張領域のID17のデータと取得したワーク鍵IDとが一致するか否かを判定する(S65)。S65にて一致すると判定した場合、保護通信メンバECU3Bでは、拡張フォーマットの識別子拡張領域のID16〜ID13のデータが取得した通し番号より大きいか否かを判定する(S66)。S66にてID16〜ID13のデータが取得した通し番号以下と判定した場合、保護通信メンバECU3Bでは、受信したメッセージを廃棄し、防御モードに移行する(S73)。
【0049】
S65にて一致しないと判定した場合又はS66にてID16〜ID13のデータが取得した通し番号より大きいと判定した場合、保護通信メンバECU3Bでは、受信メッセージIDに対応する最新ワーク鍵IDバッファRIBに拡張フォーマットの識別子拡張領域のID17のデータ(今回受信したワーク鍵ID)を保存し、最新通し番号バッファRNBに拡張フォーマットの識別子拡張領域のID16〜ID13のデータ(今回受信した通し番号)を保存する(S67)。
【0050】
保護通信メンバECU3Bでは、ワーク鍵IDに対応するワーク鍵バッファKBからワーク鍵を取得し、そのワーク鍵と受信したメッセージIDと受信したワーク鍵IDと受信した通し番号からストリーム暗号の鍵ストリームを生成する(S68)。そして、保護通信メンバECU3Bでは、受信メッセージの拡張フォーマットのデータ領域の暗号化データと拡張フォーマットの識別子拡張領域のID12〜ID0の暗号化MACを鍵ストリームを用いてそれぞれ復号化する(S69)。さらに、保護通信メンバECU3Bでは、受信したメッセージIDと受信したワーク鍵IDと受信した通し番号と復号化したデータからMACを生成し、生成したMACの下位13ビットと復号化した平文MACとを比較する(S70)。そして、保護通信メンバECU3Bでは、S70で比較した結果、MACが等しいか否かを判定する(S71)。
【0051】
S71にてMACが等しいと判定した場合、保護通信メンバECU3Bでは、上位層のアプリケーションソフトウェアが11ビットのメッセージIDとして標準フォーマットのデータ形式で受信処理を行う(S72)。一方、S71にてMACが等しくないと判定した場合、保護通信メンバECU3Bでは、受信したメッセージを廃棄し、防御モードに移行する(S73)。
【0052】
このように、拡張フォーマットでメッセージを受信した場合、保護通信メンバECU3Bでは、通し番号とMACによる検証で不正メッセージか否かを判定し、不正メッセージと判定した場合には防御モードに移行する。この際、保護通信メンバECU3BのCANのハードウェアでは、拡張フォーマットとして受信処理を行う。また、保護通信メンバECU3Bの上位層のアプリケーションソフトウェアでは、標準フォーマットと同等の11ビットのメッセージIDとして受信処理を行う。
【0053】
このCAN通信システム1によれば、MACとデータ本体を暗号化し、この暗号化したMACとデータ本体を拡張フォーマットを利用して送信することにより、CANにおけるフォーマットの互換性を確保しつつセキュリティ性を向上させることができる。また、CAN通信システム1によれば、メッセージID毎の通し番号とMACによってメッセージを検証することにより、再送攻撃等の不正メッセージを高精度に検出でき、メッセージの安全性を向上でき、セキュリティ性がより向上する。また、CAN通信システム1によれば、各ECU2,3におけるソフトウェアによる処理だけで簡易に保護通信を行うことができる。
【0054】
特に、CAN通信システム1によれば、CANのハードウェアが拡張フォーマットとして処理できるとともに、各保護通信メンバECU3の上位層のアプリケーションソフトウェアが拡張フォーマットの識別子ベース領域に格納される標準フォーマット互換のメッセージID(11ビット)を用いて標準フォーマットと同等に受信処理できる。さらに、CAN通信システム1によれば、MACを暗号化しているので、少ないデータ量でもメッセージの安全性を確保できる。したがって、拡張フォーマットの識張子拡張領域内に暗号化MACや通し番号を格納する領域を確保でき、拡張フォーマットのデータ領域にMAC等を格納しなくてよいので、拡張フォーマットのデータ領域には通常と同様にデータを格納でき、データ領域の互換性も確保できる。また、CAN通信システム1によれば、データ本体を暗号化しているので、データ本体の安全性も向上できる。
【0055】
さらに、CAN通信システム1によれば、保護通信マスタECU2から周期的に更新したワーク鍵シードを送信することにより、保護通信メンバECU3で周期的にワーク鍵を更新でき、ワーク鍵の安全性を確保できる。また、CAN通信システム1によれば、ワーク鍵シードを更新する毎にワーク鍵IDを0と1で切り替えることにより、メッセージの送信側と受信側とでワーク鍵の更新の同期をとることができる。
【0056】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【0057】
例えば、本実施の形態では車両に搭載されるCAN通信システムに適用したが、車両以外のCANにも適用可能である。また、本実施の形態ではソフトウェアで保護通信のための各処理を行う構成としたが、処理の一部(例えば、暗号化処理)をCANのハードウェアで行ってもよい。
【0058】
また、本実施の形態ではワーク鍵を更新する際に送信側と受信側で同期をとるために、ワーク鍵IDを導入し、ワーク鍵IDを0と1で切り替える手法を適用したが、他の手法を用いてもよい。また、本実施の形態ではMACと通し番号を用いてメッセージを検証したが、MACによる検証だけでもよい。この場合、拡張フォーマットの識別子拡張領域には少なくとも暗号化MACを格納すればよい。
【0059】
また、本実施の形態ではメッセージID、ワーク鍵ID、通し番号、データ本体からMACを生成したが、この組み合わせ以外でMACを生成してもよい。また、本実施の形態ではワーク鍵、メッセージID、ワーク鍵ID、通し番号から鍵ストリームを生成したが、この組み合わせ以外で鍵ストリームを生成してもよい。また、本実施の形態ではストリーム暗号を適用したが、他の暗号方法を適用してもよい。
【0060】
また、本実施の形態では保護通信マスタECUでワーク鍵シードを更新する毎にワーク鍵シードメッセージを一度だけ保護通信メンバECUに送信する構成としたが、保護通信メンバECUでワーク鍵シードメッセージを確実に受信するために、保護通信マスタECUから同じワーク鍵シードメッセージを複数回送信するようにしてもよい。
【符号の説明】
【0061】
1…CAN通信システム、2…保護通信マスタECU、3,3A,3B…保護通信メンバECU、4…CANバス、5…OBD−IIポート。

【特許請求の範囲】
【請求項1】
CAN通信プロトコルに基づいて送受信されるデータを保護するための保護通信方法であって、
メッセージ認証コードを生成する生成ステップと、
前記生成ステップで生成したメッセージ認証コードと送信データを暗号化する暗号化ステップと、
前記暗号化ステップで暗号化したメッセージ認証コードをCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、前記暗号化ステップで暗号化した送信データを拡張フォーマットのデータ領域に格納する格納ステップと、
前記格納ステップで格納した拡張フォーマットでメッセージを送信する送信ステップと、
を含むこと特徴とする保護通信方法。
【請求項2】
前記格納ステップでは、ワーク鍵ID、メッセージの通し番号をCAN通信プロトコルの拡張フォーマットの識別子拡張領域に格納し、
前記送信ステップで送信された拡張フォーマットのメッセージを受信したノードにおいて、前記通し番号の検証又は前記メッセージ認証コードの検証で異常を検出した場合、防御モードに移行することを特徴とする請求項1に記載の保護通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2013−48374(P2013−48374A)
【公開日】平成25年3月7日(2013.3.7)
【国際特許分類】
【出願番号】特願2011−186243(P2011−186243)
【出願日】平成23年8月29日(2011.8.29)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】