(57)【特許請求の範囲】
【請求項１】
送信装置と、前記送信装置と接続される受信装置と、を備える通信システムであって、
前記送信装置は、
前記受信装置と同期し、かつ、前記受信装置と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する第１の生成部と、
通信で送受信されるデータの単位を表す通信フレームの種別を示すフレーム識別子と、前記擬似乱数とを少なくとも含む通信フレーム識別子を含む前記通信フレームを生成する第２の生成部と、
前記通信フレームを送信する送信部と、を備え、
前記受信装置は、
前記送信装置と同期し、かつ、前記アルゴリズムに基づいて、前記擬似乱数を生成する第３の生成部と、
前記通信フレームを受信する受信部と、
前記通信フレーム識別子に含まれる擬似乱数と、前記第３の生成部により生成された前記擬似乱数とを比較し、前記通信フレーム識別子に含まれる前記フレーム識別子と、前記受信装置の受信対象として予め定められた１以上の前記フレーム識別子とを比較する比較部と、
前記通信フレームを利用するフレーム処理、前記通信フレームを廃棄する廃棄処理、および、正当な権限を持たない第三者からの攻撃であることを判定する攻撃判定処理のうち、前記比較部による比較の結果に応じたいずれかの処理を行う処理部と、を備え、
前記第１の生成部および前記第３の生成部は、前記送信装置と前記受信装置との間で前記通信フレームの送受信が成功するたびに、前記アルゴリズムに基づく計算を行って前記擬似乱数を更新する、
通信システム。
【請求項２】
前記処理部は、
前記通信フレーム識別子に含まれる前記擬似乱数と、前記第３の生成部により生成された前記擬似乱数とが一致し、かつ、前記受信装置の受信対象として予め定められた１以上の前記フレーム識別子の中に、前記通信フレーム識別子に含まれる前記フレーム識別子と一致する前記フレーム識別子が存在する場合は、前記フレーム処理を行い、
前記通信フレーム識別子に含まれる前記擬似乱数と、前記第３の生成部により生成された前記擬似乱数とが一致し、かつ、前記受信装置の受信対象として予め定められた１以上の前記フレーム識別子の中に、前記通信フレーム識別子に含まれる前記フレーム識別子と一致する前記フレーム識別子が存在しない場合は、前記廃棄処理を行い、
前記通信フレーム識別子に含まれる前記擬似乱数と、前記第３の生成部により生成された前記擬似乱数とが一致しない場合は、前記攻撃判定処理を行う、
請求項１に記載の通信システム。
【請求項３】
前記送信装置と前記受信装置との間での前記通信フレームの送受信は、ＣＳＭＡ／ＣＲ方式で行われる、
請求項１または２に記載の通信システム。
【請求項４】
前記送信装置と前記受信装置との間での前記通信フレームの送受信は、ＣＡＮまたはＣＡＮ−ＦＤに基づいて行われる、
請求項３に記載の通信システム。
【請求項５】
前記第１の生成部および前記第３の生成部は、前記通信システムの起動時に、予め定められた同じ初期値を用いて前記アルゴリズムに基づく計算を行って前記擬似乱数を生成する、
請求項１に記載の通信システム。
【請求項６】
前記アルゴリズムは、前記擬似乱数のデータ長を定期的に変化させる手順を含む、
請求項１に記載の通信システム。
【請求項７】
前記初期値を更新する更新部をさらに備え、
前記第１の生成部および前記第３の生成部は、前記更新部により前記初期値が更新されるたびに、その更新された前記初期値を用いて前記アルゴリズムに基づく計算を行って前記擬似乱数を生成する、
請求項５に記載の通信システム。
【請求項８】
通信で送受信されるデータの単位を表す通信フレームを送信する送信装置と接続される受信装置であって、
前記送信装置と同期し、かつ、前記送信装置と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する擬似乱数生成部と、
前記通信フレームの種別を示すフレーム識別子と、前記送信装置により生成された前記擬似乱数とを少なくとも含む通信フレーム識別子を含む前記通信フレームを受信する受信部と、
前記通信フレーム識別子に含まれる前記擬似乱数と、前記擬似乱数生成部により生成された前記擬似乱数とを比較し、前記通信フレーム識別子に含まれる前記フレーム識別子と、前記受信装置の受信対象として予め定められた１以上の前記フレーム識別子とを比較する比較部と、
前記通信フレームを利用するフレーム処理、前記通信フレームを廃棄する廃棄処理、および、正当な権限を持たない第三者からの攻撃であることを判定する攻撃判定処理のうち、前記比較部による比較の結果に応じたいずれかの処理を行う処理部と、を備え、
前記擬似乱数生成部および前記送信装置は、前記送信装置と前記受信装置との間で前記通信フレームの送受信が成功するたびに、前記アルゴリズムに基づく計算を行って前記擬似乱数を更新する、
受信装置。
【請求項９】
通信で送受信されるデータの単位を表す通信フレームを送信する送信装置と接続される受信装置による受信方法であって、
前記送信装置と同期し、かつ、前記送信装置と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する生成ステップと、
前記通信フレームの種別を示すフレーム識別子と、前記送信装置により生成された前記擬似乱数とを少なくとも含む通信フレーム識別子を含む前記通信フレームを受信する受信ステップと、
前記通信フレーム識別子に含まれる前記擬似乱数と、前記受信装置が生成した前記擬似乱数とを比較し、前記通信フレーム識別子に含まれる前記フレーム識別子と、前記受信装置の受信対象として予め定められた１以上の前記フレーム識別子とを比較する比較ステップと、
前記通信フレームを利用するフレーム処理、前記通信フレームを廃棄する廃棄処理、および、正当な権限を持たない第三者からの攻撃であることを判定する攻撃判定処理のうち、前記比較ステップによる比較の結果に応じたいずれかの処理を行い、
前記受信装置および前記送信装置は、前記送信装置と前記受信装置との間で前記通信フレームの送受信が成功するたびに、前記アルゴリズムに基づく計算を行って前記擬似乱数を更新する、
受信方法。
【請求項１０】
通信で送受信されるデータの単位を表す通信フレームを送信する送信装置と接続される受信装置を、
前記送信装置と同期し、かつ、前記送信装置と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する擬似乱数生成手段と、
前記通信フレームの種別を示すフレーム識別子と、前記送信装置により生成された前記擬似乱数とを少なくとも含む通信フレーム識別子を含む前記通信フレームを受信する受信手段と、
前記通信フレーム識別子に含まれる前記擬似乱数と、前記擬似乱数生成手段により生成された前記擬似乱数とを比較し、前記通信フレーム識別子に含まれる前記フレーム識別子と、前記受信装置の受信対象として予め定められた１以上の前記フレーム識別子とを比較する比較手段と、
前記通信フレームを利用するフレーム処理、前記通信フレームを廃棄する廃棄処理、および、正当な権限を持たない第三者からの攻撃であることを判定する攻撃判定処理のうち、前記比較手段による比較の結果に応じたいずれかの処理を行う処理手段として機能させ、
前記擬似乱数生成手段および前記送信装置は、前記送信装置と前記受信装置との間で前記通信フレームの送受信が成功するたびに、前記アルゴリズムに基づく計算を行って前記擬似乱数を更新する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信システム、受信装置、受信方法およびプログラムに関する。
【背景技術】
【０００２】
例えば車載のＥＣＵ（Electronic  Control  Unit）間の基幹ネットワークとして、ＣＡＮ（Controller  Area  Network）が用いられている。ＣＡＮには、ＥＣＵを追加するためのインターフェースも用意されているので、このインターフェースを介してＣＡＮに接続し、外部から不正な通信フレーム（メッセージ）を送信することも考えられる。ＣＡＮの通信フレームのヘッダ部分は、識別領域を持っており、通信フレームの種別を示すフレーム識別子（アービトレーションＩＤ）が格納されており、このアービトレーションＩＤは、通信フレームの種別毎に固定されている。例えばＣＡＮの通信フレームを盗聴して、そのヘッダ部分に格納されたアービトレーションＩＤを特定（解析）し、その特定したアービトレーションＩＤを使って不正な通信フレームを作成して送信することも考えられる。
【０００３】
ＣＡＮのセキュリティを向上させるための技術として、例えば通信フレームのうち送信対象のデータが格納される領域（データ領域）に、公開鍵暗号を用いたデジタル署名と通常のデータとを格納して送信し、受信側がデジタル署名を検証して送信側の正当性を確認する技術が知られている。また、例えば通信フレームのヘッダ部分に、通信フレームの種別を示す識別子とともに、該識別子に対応付けられたシーケンス番号をセキュリティ情報として含ませることで、異常メッセージを検出する技術が知られている。また、例えば通信フレームの送信毎に、該通信フレームの種別を示すフレーム識別子を更新する技術も知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１８６６３５号公報
【特許文献２】特開２０１４−１８３３９５号公報
【特許文献３】特開２０１４−１７７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、通信のセキュリティを更に向上させることが可能な通信システム、受信装置、受信方法およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態の通信システムは、送信装置と、該送信装置と接続される受信装置と、を備える。送信装置は、第１の生成部と第２の生成部と送信部とを備える。第１の生成部は、受信装置と同期し、かつ、受信装置と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する。第２の生成部は、通信で送受信されるデータの単位を表す通信フレームの種別を示すフレーム識別子と、擬似乱数とを少なくとも含む通信フレーム識別子を生成し、通信フレームを生成する。送信部は、通信フレームを送信する。受信装置は、第３の生成部と受信部と比較部と処理部とを備える。第３の生成部は、送信装置と同期し、かつ、アルゴリズムに基づいて、擬似乱数を生成する。受信部は、通信フレームを受信する。比較部は、通信フレーム識別子に含まれる擬似乱数と、第３の生成部により生成された擬似乱数とを比較し、通信フレーム識別子に含まれるフレーム識別子と、受信装置の受信対象として予め定められた１以上のフレーム識別子とを比較する。処理部は、比較部による比較の結果に応じて、通信フレームを利用するフレーム処理、通信フレームを廃棄する廃棄処理、正当な権限を持たない第三者からの攻撃であることを判定する攻撃判定処理のうちの何れかを行う。
【図面の簡単な説明】
【０００７】
【図１】実施形態の通信システムの構成の一例を示す図。
【図２】実施形態の通信ノードの構成の一例を示す図。
【図３】実施形態のＣＰＵが有する機能の一例を示す図。
【図４】実施形態の通信フレームの一例を示す図。
【図５】実施形態の受信フィルターが有する機能の一例を示す図。
【図６】実施形態の送信装置が擬似乱数を生成する処理の一例を示す図。
【図７】実施形態の受信装置が擬似乱数を生成する処理の一例を示す図。
【図８】実施形態の送信装置による通信フレームの送信処理の一例を示す図。
【図９】実施形態の受信装置による通信フレームの受信処理の一例を示す図。
【図１０】実施形態の受信装置による通信フレームの受信処理の一例を示す図。
【図１１】変形例の通信システムの構成の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照しながら、実施形態に係る通信システム、受信装置、受信方法およびプログラムの実施形態を詳細に説明する。
【０００９】
図１は、本実施形態の通信システム１の概略構成の一例を示す図である。図１に示すように、通信システム１は、複数の通信ノード１０を備え、これらは通信線（バス）２０を介して相互に接続されている。本実施形態の通信システム１は、車両内で構築されるネットワークを表す車載ネットワークシステムとして構成され、各通信ノード１０は、電子制御装置（ECU：Electronic  Control  Unit）で構成されている。
【００１０】
通信ノード１０間の通信フレームの送受信は、ＣＳＭＡ／ＣＲ（Carrier  Sense  Multiple  Access  with  Collision  Resolution）方式で行われる。より具体的には、通信ノード１０間の通信フレームの送受信は、ＣＡＮまたはＣＡＮ−ＦＤ（CAN  with  Flexible  Data  Rate）に基づいて行われる。この例では、通信ノード１０間の通信フレームの送受信は、ＣＡＮのプロトコルに準じて行われるものとする。ここでは、通信フレームとは、通信で送受信されるデータの単位を表し、「メッセージ」と称する場合もある。
【００１１】
何れかの通信ノード１０が通信フレームを送信可能な状態になると、該通信ノード１０は、通信線２０がビジー状態（通信線２０を利用不可能な状態）であるかどうかを確認し、通信線２０がビジー状態でなければ、通信線２０を介して通信フレームを送信する。本実施形態では、通信ノード１０間の通信フレームの送受信は、ＣＡＮのプロトコルに準じて行われるので、通信フレームには、送信側の通信ノード１０（「送信装置」）、あるいは、受信側の通信ノード１０（「受信装置」）の宛先を示すアドレスは含まれておらず、その代わりにアービトレーションＩＤが含まれている。アービトレーションＩＤは、通信フレームの種別を示すフレーム識別子の一例であり、通信フレーム（メッセージ）を識別し、その優先順位を示す固有のＩＤである。以下の説明では、アービトレーションＩＤを、「フレーム識別子」と称する場合がある。送信側の通信ノード１０が通信線２０を介して通信フレームを送信すると、通信線２０に接続された他の全ての通信ノード１０が該通信フレームを受信し、その受信した通信フレームに含まれるフレーム識別子を確認して、その通信フレームの取り扱いを決定する。より具体的な内容については後述する。
【００１２】
図２は、通信ノード１０の構成の一例を示す図である。説明の便宜上、図２では、１台の通信ノード１０のみを例示しているが、他の通信ノード１０も同様の構成である。図２に示すように、通信ノード１０は、ＣＰＵ３０と、ＣＡＮノード４０とを備える。
【００１３】
図３は、ＣＰＵ３０が有する機能の一例を示す図である。図３に示すように、ＣＰＵ３０は、擬似乱数生成部３０１と、通信フレーム識別子生成部３０２と、通信フレーム識別子設定部３０３とを有する。これらの機能は、ＣＰＵ３０が記憶装置（不図示）に記憶されたプログラムを実行することにより実現される。なお、これらの機能のうちの少なくとも一部が専用のハードウェア回路（半導体集積回路等）で実現されてもよい。また、図３の例では、本実施形態に関する機能を主に例示しているが、ＣＰＵ３０が有する機能はこれらに限られるものではない。
【００１４】
擬似乱数生成部３０１は、他の通信ノード１０と同期し、かつ、他の通信ノード１０と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する。通信ノード１０が送信側の通信ノード１０（送信装置）として動作する場合は、擬似乱数生成部３０１は、受信側の通信ノード１０と同期し、かつ、受信側の通信ノード１０と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する。また、通信ノード１０が受信側の通信ノード１０（受信装置）として動作する場合は、擬似乱数生成部３０１は、送信側の通信ノード１０と同期し、かつ、送信側の通信ノード１０と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する。
【００１５】
本実施形態では、擬似乱数生成部３０１は、通信システム１の起動時に、予め定められた同じ初期値（乱数生成用のシード）を用いてアルゴリズムに基づく計算を行って擬似乱数を生成する。この例では、各通信ノード１０に対して、予め定められた初期値が埋め込まれているものとする。また、擬似乱数生成部３０１は、送信側の通信ノード１０と受信側の通信ノード１０との間で通信フレームの送受信が成功するたびに、アルゴリズムに基づく計算を行って擬似乱数を更新する。
【００１６】
なお、ここでは、ＣＰＵ３０が擬似乱数生成部３０１の機能を有している場合を例に挙げて説明しているが、これに限らず、例えば後述のＣＡＮノード４０が擬似乱数生成部３０１の機能を有する形態であってもよい。
【００１７】
図３の説明を続ける。通信フレーム識別子生成部３０２は、通信ノード１０が送信側の通信ノード１０（送信装置）として動作する場合の機能であり、送信対象の通信フレームの種別を示すフレーム識別子と、擬似乱数生成部３０１により生成された擬似乱数（最新の擬似乱数）とを少なくとも含む通信フレーム識別子を生成する。
【００１８】
図４は、通信フレーム識別子生成部３０２によって生成される通信フレーム識別子を持つ通信フレームの一例である。通信フレームの先頭部分の領域である識別子領域には、フレーム識別子と、擬似乱数生成部３０１により生成された擬似乱数とが格納される。図４の例では、識別子領域は、フレーム識別領域と、乱数領域とに分けられ、フレーム識別領域にはフレーム識別子が格納され、乱数領域には擬似乱数が格納される。なお、これに限らず、例えば識別子領域を２つの領域に分けることなく、フレーム識別子と擬似乱数を格納する形態であってもよい。ここで、一般的にフレーム識別子の上位部分は、通信フレームの優先順位を示す情報を構成するので、フレーム識別子の上位部分に擬似乱数を付加すると、優先順位が変化してしまう。このため、フレーム識別子の下位側に擬似乱数を付加することで、優先順位を維持することが望ましい。これらの形態は、「フレーム識別子と、擬似乱数とを少なくとも含む通信フレーム識別子を生成する」という概念に含まれている。
【００１９】
図３の説明を続ける。通信フレーム識別子設定部３０３は、自装置（通信ノード１０）の受信対象となる通信フレームの種別を含んだ通信フレーム識別子を設定する。
【００２０】
図２に戻って説明を続ける。図２に示すように、ＣＡＮノード４０は、インターフェース４０１と、送信バッファー４０２と、ＣＡＮプロトコルコントローラー４０３と、送受信コントローラー４０４と、受信バッファー４０５と、受信フィルター４０６と、を備える。なお、図２の例では、本実施形態に関する構成要素を主に例示しているが、ＣＡＮノード４０の構成要素はこれらに限られるものではない。
【００２１】
インターフェース４０１は、ＣＰＵ３０と接続するためのインターフェースであり、ＣＡＮフレームを生成する。生成されたＣＡＮフレームは送信バッファー４０２に格納される。
【００２２】
ＣＡＮプロトコルコントローラー４０３は、通信線２０がビジー状態であるかどうかを確認し、その確認結果を送受信コントローラー４０４へ通知する。送受信コントローラー４０４は、送信バッファー４０２に未送信の通信フレームが存在し、かつ、通信線２０がビジー状態でなければ、送信バッファー４０２に格納された通信フレームの送信をＣＡＮプロトコルコントローラー４０３へ依頼する。この依頼を受けたＣＡＮプロトコルコントローラー４０３は、送信バッファー４０２に格納された通信フレームを、通信線２０を介して他の通信ノード１０へ送信する。ＣＡＮプロトコルコントローラー４０３は、通信フレームの送信が成功したかどうかを監視する機能を有し、その監視結果をＣＰＵ３０へ通知することもできる。
【００２３】
また、ＣＡＮプロトコルコントローラー４０３は、通信線２０を介して他の通信ノード１０（送信側の通信ノード１０）からの通信フレームを受信する機能も有しており、送信側の通信ノード１０から受信した通信フレームを受信バッファー４０５に格納する。
【００２４】
受信フィルター４０６は、ＣＰＵ３０（通信フレーム識別子設定部３０３）によって設定された１以上のフレーム識別子（自装置の受信対象として予め定められた１以上のフレーム識別子）と、ＣＰＵ３０（擬似乱数生成部３０１）によって生成された擬似乱数とを取得する。この例では、受信フィルター４０６は、ＣＰＵ３０によって設定された１以上のフレーム識別子と、ＣＰＵ３０によって生成された擬似乱数とを、インターフェース４０１および送受信コントローラー４０４を介してＣＰＵ３０から取得する。
【００２５】
以下、受信フィルター４０６の詳細な機能を説明する。図５は、受信フィルター４０６が有する機能の一例を示す図である。図５に示すように、受信フィルター４０６は、比較部４１１と処理部４１２とを有する。
【００２６】
比較部４１１は、通信フレーム識別子（受信した通信フレームに含まれる通信フレーム識別子）に含まれる擬似乱数と、ＣＰＵ３０（擬似乱数生成部３０１）により生成された擬似乱数とを比較し、該通信フレーム識別子に含まれるフレーム識別子と、自装置の受信対象として予め定められた１以上のフレーム識別子とを比較する。本実施形態では、比較部４１１は、受信バッファー４０５に格納された通信フレームの通信フレーム識別子に含まれる擬似乱数と、ＣＰＵ３０から取得した擬似乱数とを比較し、該通信フレーム識別子に含まれるフレーム識別子と、ＣＰＵ３０から取得した１以上のフレーム識別子とを比較する。
【００２７】
処理部４１２は、比較部４１１による比較の結果に応じて、通信フレームを利用するフレーム処理、通信フレームを廃棄する廃棄処理、正当な権限を持たない第三者からの攻撃であることを判定する攻撃判定処理のうちの何れかを行う。より具体的には、処理部４１２は、受信バッファー４０５に格納された通信フレーム（受信した通信フレーム）の通信フレーム識別子に含まれる擬似乱数と、ＣＰＵ３０（擬似乱数生成部３０１）により生成された擬似乱数とが一致し、かつ、自装置（受信装置）の受信対象として予め定められた１以上のフレーム識別子の中に、該通信フレーム識別子に含まれるフレーム識別子と一致するフレーム識別子が存在する場合は、フレーム処理を行う。この場合、処理部４１２は、通信フレームの受信は「成功」したと判断し、その判断結果と、受信した通信フレームをＣＰＵ３０へ渡すこともできる。これにより、ＣＰＵ３０は、通信フレームの受信が成功したことを知ることができる。
【００２８】
また、処理部４１２は、受信バッファー４０５に格納された通信フレームの通信フレーム識別子に含まれる擬似乱数と、ＣＰＵ３０により生成された擬似乱数とが一致し、かつ、自装置の受信対象として予め定められた１以上のフレーム識別子の中に、該通信フレーム識別子に含まれるフレーム識別子と一致するフレーム識別子が存在しない場合は、廃棄処理を行う。この場合、処理部４１２は、通信フレームの受信は「成功」したと判断し、その判断結果と、通信フレームを廃棄した旨をＣＰＵ３０へ通知することもできる。これにより、ＣＰＵ３０は、通信フレームの受信が成功したことを知ることができる。この例では、処理部４１２は、受信した通信フレームの通信フレーム識別子に含まれる擬似乱数と、ＣＰＵ３０により生成された擬似乱数とが一致する場合は、自装置の受信対象として予め定められた１以上のフレーム識別子の中に、該通信フレームに含まれるフレーム識別子と一致するフレーム識別子が存在するか否かに関わらず、通信フレームの受信は「成功」したと判断する（つまり、通信フレームの送信元を認証する）。
【００２９】
さらに、処理部４１２は、受信バッファー４０５に格納された通信フレームの通信フレーム識別子に含まれる擬似乱数と、ＣＰＵ３０により生成された擬似乱数とが一致しない場合は、攻撃判定処理を行う。この場合、自装置の受信対象として予め定められた１以上のフレーム識別子の中に、該通信フレーム識別子に含まれるフレーム識別子と一致するフレーム識別子が存在していても、処理部４１２は攻撃判定処理を行うことになる。この場合、受信側の通信ノード１０は、通信フレームの受信は「失敗」したと判断し、その判断結果と、攻撃判定処理を行った旨をＣＰＵ３０へ通知する。これにより、ＣＰＵ３０は、通信フレームの受信が失敗し、正当な権限を持たない第三者からの攻撃を受けていることを知ることができる。この場合、ＣＰＵ３０は、例えば正当な権限を持たない第三者からの攻撃を受けていることを警告する警告情報（例えば車両の停止を促す情報でもよい）を出力することもできる。この警告情報の出力形態は任意であり、例えば警告情報を画像情報として表示装置（ディスプレイ）に表示する形態であってもよいし、音声情報としてスピーカーから出力する形態であってもよい。
【００３０】
また、この場合において、処理部４１２は、通信フレームの受信が「失敗」したことをＣＡＮプロトコルコントローラー４０３へ通知する。この通知を受けたＣＡＮプロトコルコントローラー４０３は、通信フレームの受信が「失敗」したことを示す信号（例えばエラーを表す１ビットの情報）を通信線２０に対して出力する。これにより、送信側の通信ノード１０のＣＡＮプロトコルコントローラー４０３は、通信フレームの送信が失敗したことを検出することができる。この例では、送信側の通信ノード１０のＣＡＮプロトコルコントローラー４０３は、通信フレームの送信後、一定期間にわたって通信線２０の状態を確認することにより、通信フレームの送信が成功したか否かを検出する。
【００３１】
なお、この例では、受信フィルター４０６が、処理部４１２の機能を有している場合を例に挙げて説明したが、これに限らず、例えばＣＰＵ３０が、以上に説明した処理部４１２の機能を有する形態であってもよい。
【００３２】
以上がＣＡＮノード４０の構成となる。本実施形態では、以上に説明したインターフェース４０１、送信バッファー４０２、ＣＡＮプロトコルコントローラー４０３、送受信コントローラー４０４、受信バッファー４０５、および、受信フィルター４０６の各々は専用のハードウェア回路（半導体集積回路等）で実現されているが、これに限らず、例えばＣＡＮプロトコルコントローラー４０３、送受信コントローラー４０４、および、受信フィルター４０６の各々の機能は、ＣＡＮノード４０に搭載されたＣＰＵ（ＣＰＵ３０とは別のＣＰＵ）が、不図示の記憶装置に格納されたプログラムを実行することにより実現される形態であってもよい。
【００３３】
また、本実施形態では、通信ノード１０は、ＣＰＵ３０とＣＡＮノード４０に分かれて構成されているが、これに限らず、例えば通信ノード１０は、以上に説明したＣＰＵ３０が有する機能と、ＣＡＮノード４０が有する機能とを実現可能な単一の装置で構成されてもよい。この単一の装置のハードウェア構成の一例としては、ＣＰＵ、ＲＯＭやＲＡＭ等の記憶装置、通信線２０と接続するためのインターフェース（ＣＡＮのプロトコルに準じて通信フレームの送受信を行うためのインターフェース）、送信バッファー４０２、受信バッファー４０５などを備える形態などが考えられる。この形態では、例えばＣＰＵが記憶装置に格納されたプログラムを実行することにより、上述の擬似乱数生成部３０１、通信フレーム識別子生成部３０２、通信フレーム識別子設定部３０３、ＣＡＮプロトコルコントローラー４０３、送受信コントローラー４０４、および受信フィルター４０６の各々の機能を実現する形態であってもよい。また、これらの機能のうちの少なくとも一部が専用のハードウェア回路（半導体集積回路等）で実現される形態であってもよい。
【００３４】
要するに、通信ノード１０は、送信側の通信ノード１０（送信装置）として動作する場合の機能として、第１の生成部と第２の生成部と送信部とを備える形態であればよい。第１の生成部は、受信装置と同期し、かつ、該受信装置と共通のアルゴリズムに基づいて、２ビット以上の擬似乱数を生成する機能であり、この例では、擬似乱数生成部３０１が有する機能に対応している。第２の生成部は、通信フレームの種別を示すフレーム識別子と、第１の生成部により生成された擬似乱数とを少なくとも含む通信フレームを生成する機能であり、この例では、通信フレーム識別子生成部３０２が有する機能に対応している。送信部は、通信フレームを送信する機能であり、この例では、ＣＡＮプロトコルコントローラー４０３または送受信コントローラー４０４が有する機能に対応している。
【００３５】
また、通信ノード１０は、受信側の通信ノード１０（受信装置）として動作する場合の機能として、第３の生成部と受信部と比較部と処理部とを備える形態であればよい。第３の生成部は、送信装置と同期し、かつ、アルゴリズムに基づいて、擬似乱数を生成する機能であり、この例では、擬似乱数生成部３０１が有する機能に対応している。受信部は、通信フレームを受信する機能であり、この例では、ＣＡＮプロトコルコントローラー４０３が有する機能に対応している。比較部は、受信した通信フレームの通信フレーム識別子に含まれる擬似乱数と、第３の生成部により生成された擬似乱数とを比較し、該通信フレーム識別子に含まれるフレーム識別子と、受信装置の受信対象として予め定められた１以上のフレーム識別子とを比較する機能であり、この例では、受信フィルター４０６が有する機能（比較部４１１）に対応している。処理部は、比較部による比較の結果に応じて、通信フレームの受信を許可するフレーム処理、通信フレームを廃棄する廃棄処理、正当な権限を持たない第三者からの攻撃であることを判定する攻撃判定処理のうちの何れかを行う機能であり、この例では、受信フィルター４０６が有する機能（処理部４１２）に対応している。
【００３６】
本実施形態の通信ノード１０は、送信側の通信ノード１０（送信装置）として動作する場合の機能（第１の生成部、第２の生成部、送信部）、および、受信側の通信ノード１０（受信装置）として動作する場合の機能（第３の生成部、受信部、比較部、処理部）の両方を備えている。
【００３７】
図６は、送信側の通信ノード１０（送信装置）が擬似乱数を生成する処理の一例を示すフローチャートである。まず通信システム１の起動時に、擬似乱数生成部３０１は、予め各通信ノード１０に対して共通に与えられている初期値（シード）を用いて、受信側と共通のアルゴリズムに基づく計算を行って擬似乱数を生成する（ステップＳ１）。その後、ステップＳ１で生成された擬似乱数と、送信対象の通信フレームの種別を示すフレーム識別子とを含む通信フレーム識別子が識別子領域に格納された通信フレームが生成され、該通信フレームの送信が行われる。そして、該通信フレームの送信が成功したと判断された場合（ステップＳ２：Ｙｅｓ）、擬似乱数生成部３０１は、アルゴリズムに基づく計算を行って擬似乱数を更新する（ステップＳ３）。その後は、通信フレームの送信タイミングごとに、ステップＳ３で更新された擬似乱数と、送信対象の通信フレームの種別を示すフレーム識別子とを含む通信フレーム識別子が識別子領域に格納された通信フレームの生成および送信が行われ、ステップＳ２以降の処理が繰り返される。
【００３８】
図７は、受信側の通信ノード１０（受信装置）が擬似乱数を生成する処理の一例を示すフローチャートである。まず通信システム１の起動時に、擬似乱数生成部３０１は、予め各通信ノード１０に対して共通に与えられている初期値を用いて、送信側と共通のアルゴリズムに基づく計算を行って擬似乱数を生成する（ステップＳ１１）。その後、送信側の通信ノード１０から受信した通信フレームと、ステップＳ１１で生成された擬似乱数と、自装置の受信対象として予め設定された１以上のフレーム識別子とに基づいて、通信フレームの受信が成功したと判断された場合（ステップＳ１２：Ｙｅｓ）、擬似乱数生成部３０１は、アルゴリズムに基づく計算を行って擬似乱数を更新する（ステップＳ１３）。通信フレームの受信が成功したか否かの判断方法は上述したとおりである。その後は、送信側の通信ノード１０から通信フレームを受信するたびに、その受信した通信フレームと、ステップＳ１３で更新された擬似乱数と、自装置の受信対象として設定された１以上のフレーム識別子とに基づいて、通信フレームの受信が成功したか否かが判断され、ステップＳ１２以降の処理が繰り返される。
【００３９】
図８は、送信側の通信ノード１０（送信装置）による通信フレームの送信処理の一例を示すフローチャートである。ここでは、擬似乱数生成部３０１によって予め擬似乱数が生成（更新）済みであることを前提とする。図８に示すように、通信フレーム識別子生成部３０２は、送信対象の通信フレームの種別を示すフレーム識別子をフレーム識別領域に格納し、擬似乱数生成部３０１によって生成済みの擬似乱数（最新の擬似乱数）を乱数領域に格納する（ステップＳ２１）。次に、通信フレーム識別子生成部３０２は、送信対象のデータがあるかどうかを確認する（ステップＳ２２）。ステップＳ２２の結果が肯定の場合（ステップＳ２２：Ｙｅｓ）、通信フレーム識別子生成部３０２は、通信フレームのうちデータが格納される領域（データ領域）に、送信対象のデータを格納する（ステップＳ２３）。この例では、データ領域は、識別子領域の後に続く領域となる。以上のようにして、送信対象の通信フレームが生成され、生成された通信フレームは送信バッファー４０２に格納される。
【００４０】
そして、通信線２０がビジー状態でなければ、送受信コントローラー４０４は、ＣＡＮプロトコルコントローラー４０３に対して通信フレームの送信を依頼し、この依頼を受けたＣＡＮプロトコルコントローラー４０３は、送信バッファー４０２に格納された通信フレームを通信線２０へ送信する（ステップＳ２４）。
【００４１】
図９は、受信側の通信ノード１０（受信装置）による通信フレームの受信処理の一例を示すフローチャートである。ここでは、擬似乱数生成部３０１によって予め擬似乱数が生成（更新）済みであることを前提とする。図９に示すように、ＣＰＵ３０（通信フレーム識別子設定部３０３）は、受信対象の１以上のフレーム識別子を設定する（ステップＳ３１）。上述したように、この例では、受信フィルター４０６は、ステップＳ３１で設定された１以上のフレーム識別子（自装置の受信対象となる１以上のフレーム識別子）と、擬似乱数生成部３０１によって生成済みの擬似乱数（最新の擬似乱数）とをＣＰＵ３０から取得する。
【００４２】
そして、送信側の通信ノード１０から通信フレームを受信した場合（ステップＳ３２：Ｙｅｓ）、受信フィルター４０６（比較部４１１）は、その受信した通信フレーム（受信バッファー４０５に格納された通信フレーム）の通信フレーム識別子に含まれる擬似乱数と、ＣＰＵ３０から取得した擬似乱数とが一致し、かつ、自装置（受信装置）の受信対象として予め定められた１以上のフレーム識別子（ＣＰＵ３０から取得した１以上のフレーム識別子）の中に、該通信フレーム識別子に含まれるフレーム識別子と一致するフレーム識別子が存在するか否かを確認する（ステップＳ３３）。ステップＳ３３の結果が肯定の場合（ステップＳ３３：Ｙｅｓ）、受信フィルター４０６（処理部４１２）は、上述のフレーム処理を行う（ステップＳ３４）。
【００４３】
ステップＳ３３の結果が否定の場合（ステップＳ３３：Ｎｏ）、受信フィルター４０６（比較部４１１）は、擬似乱数は一致しているか否かを確認する（ステップＳ３５）。ステップＳ３５の結果が肯定の場合（ステップＳ３５：Ｙｅｓ）、受信フィルター４０６（処理部４１２）は、上述の廃棄処理を行う（ステップＳ３６）。一方、ステップＳ３５の結果が否定の場合（ステップＳ３５：Ｎｏ）、受信フィルター４０６（処理部４１２）は、上述の攻撃判定処理を行う（ステップＳ３７）。
【００４４】
図１０は、受信側の通信ノード１０（受信装置）による通信フレームの受信処理の他の例を示すフローチャートである。ここでは、擬似乱数生成部３０１によって予め擬似乱数が生成（更新）済みであることを前提とする。図１０に示すように、ＣＰＵ３０（通信フレーム識別子設定部３０３）は、受信対象の１以上のフレーム識別子を設定する（ステップＳ４１）。上述したように、この例では、受信フィルター４０６は、ステップＳ４１で設定された１以上のフレーム識別子（自装置の受信対象となる１以上のフレーム識別子）と、擬似乱数生成部３０１によって生成済みの擬似乱数（最新の擬似乱数）とをＣＰＵ３０から取得する。
【００４５】
そして、送信側の通信ノード１０から通信フレームを受信した場合（ステップＳ４２：Ｙｅｓ）、受信フィルター４０６（比較部４１１）は、その受信した通信フレーム（受信バッファー４０５に格納された通信フレーム）の通信フレーム識別子に含まれる擬似乱数と、ＣＰＵ３０から取得した擬似乱数とが一致するか否かを確認する（ステップＳ４３）。ステップＳ４３の結果が否定の場合（ステップＳ４３：Ｎｏ）、受信フィルター４０６（処理部４１２）は、上述の攻撃判定処理を行う（ステップＳ４４）。
【００４６】
ステップＳ４３の結果が肯定の場合（ステップＳ４３：Ｙｅｓ）、受信フィルター４０６（比較部４１１）は、自装置（受信装置）の受信対象として予め定められた１以上のフレーム識別子（ＣＰＵ３０から取得した１以上のフレーム識別子）の中に、通信フレーム識別子に含まれるフレーム識別子と一致するフレーム識別子が存在するか否かを確認する（ステップＳ４５）。ステップＳ４５の結果が肯定の場合（ステップＳ４５：Ｙｅｓ）、受信フィルター４０６（処理部４１２）は、上述のフレーム処理を行う（ステップＳ４７）。ステップＳ４５の結果が否定の場合（ステップＳ４５：Ｎｏ）、受信フィルター４０６（比較部４１１）は、受信フィルター４０６（処理部４１２）は、上述の廃棄処理を行う（ステップＳ４６）。
【００４７】
なお、攻撃判断処理（図９のステップＳ３７、図１０のステップＳ４４）を行わなくても良い。
【００４８】
なお、図９と図１０には、受信フィルター４０６が、比較部４１１の機能を有している場合を例に挙げて説明したが、これに限らず、例えばＣＰＵ３０が、以上に説明した比較部４１１の機能を有する形態であってもよい。
【００４９】
以上に説明したように、本実施形態では、送信側と受信側で同期し、かつ、共通のアルゴリズムに基づいて、フレーム識別子とは無関係な２ビット以上の擬似乱数をそれぞれ生成する。そして、送信側は、その生成した擬似乱数を通信フレームに含ませて送信し、受信側は、送信側と同期して生成した擬似乱数と、受信した通信フレームに含まれる擬似乱数とを比較することで、送信側の正当性を確認することができる。本実施形態における送信側の正当性を確認するための情報は、フレーム識別子とは無関係に作成された２ビット以上の擬似乱数であるので、フレーム識別子に対応付けられたシーケンス番号を用いて送信側の正当性を確認する構成に比べて、送信側の正当性を確認するための情報の解析や予測は困難になる。これにより、通信のセキュリティを更に向上させることが可能になる。
【００５０】
以上、本発明の実施形態を説明したが、上述の実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら新規な実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００５１】
以下、変形例を説明する。上述の実施形態と共通する部分については適宜に説明を省略する。
【００５２】
（１）変形例１
例えば擬似乱数を生成するための上述のアルゴリズム（各通信ノード１０が共有するアルゴリズム）は、擬似乱数のデータ長を定期的に変化させる手順を含む形態であってもよい。擬似乱数の長さを所定のルールで変化させることにより、擬似乱数の解析や予測を困難にすることができる。
【００５３】
（２）変形例２
例えば通信システム１に含まれる複数の通信ノード１０のうちの何れかが、擬似乱数の生成に用いられる初期値（乱数生成用のシード）を管理する形態であってもよい。以下の説明では、図１１に示すように、初期値を管理する通信ノード１０を「管理ノード１０Ａ」と称し、その他の通信ノード１０を「普通ノード１０Ｂ」と称する。管理ノード１０Ａは、上述した通信ノード１０が有する機能の他に、初期値を更新する機能（更新部）をさらに有し、初期値を更新するたびに、その更新した初期値を全ての普通ノード１０Ｂへ配信する。例えば更新した初期値を暗号化して配信することもできる。例えば管理ノード１０Ａは、通信フレームの送受信が成功するたびに、初期値を更新し、その更新した初期値を全ての普通ノード１０Ｂへ配信する形態であってもよい。
【００５４】
普通ノード１０Ｂが有する擬似乱数生成部３０１は、更新された初期値を受け取るたびに、その更新された初期値を用いてアルゴリズムに基づく計算を行って擬似乱数を生成する。同様に、管理ノード１０Ａが有する擬似乱数生成部３０１は、初期値が更新されるたびに、その更新された初期値を用いてアルゴリズムに基づく計算を行って擬似乱数を生成する。つまり、通信システム１に含まれる複数の通信ノード１０の各々は、更新部により初期値が更新されるたびに、その更新された初期値を用いてアルゴリズムに基づく計算を行って擬似乱数を生成することになる。
【００５５】
要するに、通信システム１は、初期値を更新する更新部を備え、送信側の通信ノード１０が有する擬似乱数生成部３０１（第１の生成部）、および、受信側の通信ノード１０が有する擬似乱数生成部３０１（第３の生成部）は、更新部により初期値が更新されるたびに、その更新された初期値を用いてアルゴリズムに基づく計算を行って擬似乱数を生成する形態であればよい。
【００５６】
以上の各実施形態および各変形例は、任意に組み合わせることが可能である。
【００５７】
また、上述の実施形態および各変形例の通信ノード１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上述の実施形態および各変形例の通信ノード１０で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。また、上述の実施形態および各変形例の通信ノード１０で実行されるプログラムを、ＲＯＭ等の不揮発性の記録媒体に予め組み込んで提供するようにしてもよい。
【符号の説明】
【００５８】
１      通信システム
１０    通信ノード
２０    通信線
３０    ＣＰＵ
４０    ＣＡＮノード
３０１  擬似乱数生成部
３０２  通信フレーム識別子生成部
３０３  通信フレーム識別子設定部
４０１  インターフェース
４０２  送信バッファー
４０３  ＣＡＮプロトコルコントローラー
４０４  送受信コントローラー
４０５  受信バッファー
４０６  受信フィルター
４１１  比較部
４１２  処理部
【図１】
0006615721.tif 000002
【図２】
0006615721.tif 000003
【図３】
0006615721.tif 000004
【図４】
0006615721.tif 000005
【図５】
0006615721.tif 000006
【図６】
0006615721.tif 000007
【図７】
0006615721.tif 000008
【図８】
0006615721.tif 000009
【図９】
0006615721.tif 000010
【図１０】
0006615721.tif 000011
【図１１】
0006615721.tif 000012