(57)【要約】【課題】各ノードにおけるカウンタの管理負担、およびカウント値の再同期に要する通信トラフィックを軽減する。【解決手段】管理ノード（１０ｋ）では、上位カウント値保持部（１１ｋ）が上位カウント値を保持し、上位カウント値配信部（１４３）が、上位更新条件に従って上位カウント値を更新し、更新後の上位カウント値を通常ノードに配信する。通常ノード（１０ｎ，１０ｋ）では、カウント値保持部（１１ｎ，１１ｋ）がカウント値を保持し、下位更新部（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０）が、下位更新条件に従ってカウント値保持部が保持する下位カウント値を更新し、上位更新部（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０）が、管理ノードから配信された上位カウント値により、カウント値保持部が保持する上位カウント値を更新しかつ下位カウント値をリセットする。【選択図】図１
2019165473.tif 000002
【特許請求の範囲】
【請求項１】
相互に接続された複数のノードを備え、前記ノードの一つを管理ノード（１０ｋ、１０ｇ）、メッセージの送受信を行う前記ノードを通常ノード（１０ｎ，１０ｋ）とし、前記通常ノードはカウンタのカウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて、前記カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、前記通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されたメッセージである通常メッセージを検証するよう構成された通信システム（１，１ａ）であって、
前記管理ノードは、
前記上位カウント値を保持する上位カウント値保持部（１１ｋ）と、
予め設定された上位更新条件に従って前記上位カウント値を更新する上位カウント値更新部（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）と、
前記上位カウント値保持部が保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、前記通常メッセージとは異なる前記メッセージである更新用メッセージを用いて前記通常ノードに配信する上位カウント値配信部（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）と、
を備え、
前記通常ノードは、
前記カウント値を保持するカウント値保持部（１１ｎ，１１ｋ）と、
予め設定された下位更新条件に従って前記カウント値保持部が保持する前記下位カウント値を更新する下位更新部（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）と、
前記更新用メッセージにより前記管理ノードから配信される前記上位カウント値を用いて、前記カウント値保持部が保持する前記上位カウント値を更新する上位更新部（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）と、
前記上位更新部によって前記上位カウント値が更新されると、前記下位カウント値を初期化する下位初期化部（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、
を備え、
前記上位更新条件は、予め設定された周期的な計時タイミングであり、
前記配信条件には、前記計時タイミングの周期より長い周期に設定された再同期タイミングが含まれる
通信システム。
【請求項２】
相互に接続された複数のノードを備え、前記ノードの一つを管理ノード（１０ｋ、１０ｇ）、メッセージの送受信を行う前記ノードを通常ノード（１０ｎ，１０ｋ）とし、前記通常ノードはカウンタのカウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて、前記カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、前記通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されたメッセージである通常メッセージを検証するよう構成された通信システム（１，１ａ）であって、
前記管理ノードは、
前記上位カウント値を保持する上位カウント値保持部（１１ｋ）と、
予め設定された上位更新条件に従って前記上位カウント値を更新する上位カウント値更新部（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）と、
前記上位カウント値保持部が保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、前記通常メッセージとは異なる前記メッセージである更新用メッセージを用いて前記通常ノードに配信する上位カウント値配信部（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）と、
を備え、
前記通常ノードは、
前記カウント値を保持するカウント値保持部（１１ｎ，１１ｋ）と、
予め設定された下位更新条件に従って前記カウント値保持部が保持する前記下位カウント値を更新する下位更新部（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）と、
前記更新用メッセージにより前記管理ノードから配信される前記上位カウント値を用いて、前記カウント値保持部が保持する前記上位カウント値を更新する上位更新部（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）と、
前記上位更新部によって前記上位カウント値が更新されると、前記下位カウント値を初期化する下位初期化部（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、
前記管理ノードへ再同期要求を送信する要求送信部（１４２：Ｓ４４０）と、
を備え、
前記配信条件には、前記通常ノードから送信された前記再同期要求の受信が含まれる
通信システム。
【請求項３】
前記上位更新条件は、予め設定された周期的な計時タイミングであり、
前記配信条件には、前記計時タイミングの周期より長い周期に設定された再同期タイミングが含まれる
請求項２に記載の通信システム。
【請求項４】
前記上位更新条件は、電源の立ち上げの検出または予め設定された周期的な再同期タイミングのうち少なくとも一方であり、
前記配信条件は、前記上位更新条件と同一である、
請求項１または請求項２に記載の通信システム。
【請求項５】
前記上位更新部は、
前記更新用メッセージにより前記管理ノードから配信される前記上位カウント値を一時的に保持する一時保持部（１４２：Ｓ６１０〜Ｓ６３０）と、
前記一時保持部に保持された上位カウント値を用いて生成される前記メッセージ認証コードによって前記メッセージの検証に成功した場合に、前記一時保持部に保持された上位カウント値によって、前記カウント値保持部が保持する上位カウント値を更新する更新反映部（１４２：Ｓ６４０，Ｓ６７０〜Ｓ６８０）と、
を備える請求項１ないし請求項４のいずれか１項に記載の通信システム。
【請求項６】
前記管理ノードは、前記上位カウント値を複数の部分に分割して管理し、分割された部分毎に異なった前記上位更新条件を適用することを特徴とする請求項１ないし請求項５のいずれか１項に記載の通信システム。
【請求項７】
前記通常ノードは、前記下位更新条件として、前記通常メッセージの送受信を適用することを特徴とする請求項１ないし請求項６のいずれか１項に記載の通信システム。
【請求項８】
前記通常ノードは、前記下位更新条件として、予め設定された周期的な更新タイミングを適用することを特徴とする請求項１ないし請求項６のいずれか１項に記載の通信システム。
【請求項９】
前記ノードは、前記メッセージ認証コードの生成に、予め設定された共通鍵を用いることを特徴とする請求項１ないし請求項８のいずれか１項に記載の通信システム。
【請求項１０】
前記共通鍵は、前記上位カウント値が更新される毎に、前記更新された上位カウント値を用いて生成されることを特徴とする請求項９に記載の通信システム。
【請求項１１】
前記共通鍵は、前記上位カウント値が配信される毎に、前記配信された前記上位カウント値を用いて生成されることを特徴とする請求項９または請求項１０に記載の通信システム。
【請求項１２】
前記通常メッセージを送信するノードは、自ノードが保持する前記下位カウント値又は前記下位カウント値の下位所定桁を前記通常メッセージに付加し、
前記通常メッセージを受信したノードは、自ノードが保持する前記下位カウント値と前記通常メッセージに示された前記下位カウント値との比較により、前記通常メッセージの正否を判断することを特徴とする請求項１ないし請求項１１のいずれか１項に記載の通信システム。
【請求項１３】
前記管理ノードが前記更新用メッセージにより前記上位カウント値を配信する際にも、前記メッセージ認証コードを用いてメッセージの完全性を保証することを特徴とする請求項１ないし請求項１２のいずれか１項に記載の通信システム。
【請求項１４】
カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されるメッセージである通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証するよう構成され、前記カウント値の上位側である上位カウント値、及び前記下位カウント値を保持するカウント値保持部（１１ｎ，１１ｋ）と、予め設定された下位更新条件に従って前記カウント値保持部が保持する前記下位カウント値を更新する下位更新部（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）と、配信される前記上位カウント値を用いて、前記カウント値保持部が保持する前記上位カウント値を更新する上位更新部（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）と、前記上位更新部によって前記上位カウント値が更新されると、前記下位カウント値を初期化する下位初期化部（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、を備える通常ノード（１０ｎ，１０ｋ）と通信可能に接続された管理ノード（１０ｋ，１０ｇ）であって、
前記上位カウント値を保持する上位カウント値保持部（１１ｋ）と、
予め設定された上位更新条件に従って、前記上位カウント値を更新する上位カウント値更新部（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）と、
前記上位カウント値保持部が保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、前記通常メッセージとは異なる前記メッセージである更新用メッセージにより前記通常ノードに配信する上位カウント値配信部（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）と、
を備え、
前記上位更新条件は、予め設定された周期的な計時タイミングであり、
前記配信条件には、前記計時タイミングの周期より長い周期に設定された再同期タイミングが含まれる
る管理ノード。
【請求項１５】
カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されるメッセージである通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証するよう構成され、前記カウント値の上位側である上位カウント値、及び前記下位カウント値を保持するカウント値保持部（１１ｎ，１１ｋ）と、予め設定された下位更新条件に従って前記カウント値保持部が保持する前記下位カウント値を更新する下位更新部（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）と、配信される前記上位カウント値を用いて、前記カウント値保持部が保持する前記上位カウント値を更新する上位更新部（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）と、前記上位更新部によって前記上位カウント値が更新されると、前記下位カウント値を初期化する下位初期化部（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、再同期要求を送信する要求送信部（１４２：Ｓ４４０）と、を備える通常ノード（１０ｎ，１０ｋ）と通信可能に接続された管理ノード（１０ｋ，１０ｇ）であって、
前記上位カウント値を保持する上位カウント値保持部（１１ｋ）と、
予め設定された上位更新条件に従って、前記上位カウント値を更新する上位カウント値更新部（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）と、
前記上位カウント値保持部が保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、前記通常メッセージとは異なる前記メッセージである更新用メッセージにより前記通常ノードに配信する上位カウント値配信部（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）と、
を備え、
前記配信条件には、前記通常ノードから送信された前記再同期要求の受信が含まれる
管理ノード。
【請求項１６】
カウンタのカウント値を２分割した上位側である上位カウント値を保持する上位カウント値保持部（１１ｋ）と、予め設定された上位更新条件に従って、前記上位カウント値を更新する上位カウント値更新部（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）と、前記上位カウント値保持部が保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って配信する上位カウント値配信部（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）と、を備え、前記配信条件には再同期要求の受信が含まれる管理ノードと通信可能に接続され、前記カウント値の下位側を下位カウント値とし、通常ノード間の通信に使用され、前記下位カウント値又は前記下位カウント値の下位所定桁の少なくとも一部が付与されるメッセージである通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証する通常ノードであって、
前記上位カウント値及び前記下位カウント値を保持するカウント値保持部（１１ｎ，１１ｋ）と、
予め設定された下位更新条件に従って前記カウント値保持部が保持する前記下位カウント値を更新する下位更新部（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）と、
前記管理ノードから配信される前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかが付与された前記メッセージであって前記通常メッセージとは異なる更新用メッセージを用いて、前記カウント値保持部が保持する前記上位カウント値を更新する上位更新部（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）と、
前記上位更新部によって前記上位カウント値が更新されると、前記下位カウント値を初期化する下位初期化部（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、
前記管理ノードへ前記再同期要求を送信する要求送信部（１４２：Ｓ４４０）と、
を備える通常ノード。
【請求項１７】
相互に接続された複数のノードを備え、前記ノードの一つを管理ノード（１０ｋ、１０ｇ）、メッセージの送受信を行う前記ノードを通常ノード（１０ｎ，１０ｋ）とし、前記通常ノードはカウンタのカウント値を用いてメッセージ認証コードを生成し、前記カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、前記通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されたメッセージである通常メッセージを、前記メッセージ認証コードを用いて検証するよう構成された通信システムにおいて、前記通常ノード間で前記カウンタのカウント値を同期させるカウンタ同期方法であって、
前記管理ノードは、前記上位カウント値を保持し、該上位カウント値を、予め設定された上位更新条件に従って更新し（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）、予め設定された配信条件に従って、前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかが付与された前記メッセージであり、前記通常メッセージとは異なる更新用メッセージを前記通常ノードに配信し（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）、
前記通常ノードは、それぞれ、前記上位カウント値及び下位カウント値を保持し、前記下位カウント値を、予め設定された下位更新条件に従って更新し（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）、前記更新用メッセージにより前記管理ノードから配信される前記上位カウント値を用いて、当該通常ノードが保持する前記上位カウント値を更新し（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）、該上位カウント値が更新されると、前記下位カウント値を初期化し（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）、
前記上位更新条件は、予め設定された周期的な計時タイミングであり、
前記配信条件には、前記計時タイミングの周期より長い周期に設定された再同期タイミングが含まれる
カウンタ同期方法。
【請求項１８】
相互に接続された複数のノードを備え、前記ノードの一つを管理ノード（１０ｋ、１０ｇ）、メッセージの送受信を行う前記ノードを通常ノード（１０ｎ，１０ｋ）とし、前記通常ノードはカウンタのカウント値を用いてメッセージ認証コードを生成し、前記カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、前記通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されたメッセージである通常メッセージを、前記メッセージ認証コードを用いて検証するよう構成された通信システムにおいて、前記通常ノード間で前記カウンタのカウント値を同期させるカウンタ同期方法であって、
前記管理ノードは、前記上位カウント値を保持し、該上位カウント値を、予め設定された上位更新条件に従って更新し（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）、予め設定された配信条件に従って、前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかが付与された前記メッセージであり、前記通常メッセージとは異なる更新用メッセージを前記通常ノードに配信し（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）、前記配信条件には、前記通常ノードから送信された再同期要求の受信が含まれ、
前記通常ノードは、それぞれ、前記上位カウント値及び下位カウント値を保持し、前記下位カウント値を、予め設定された下位更新条件に従って更新し（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）、前記更新用メッセージにより前記管理ノードから配信される前記上位カウント値を用いて、当該通常ノードが保持する前記上位カウント値を更新し（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）、該上位カウント値が更新されると、前記下位カウント値を初期化し（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）、予め設定された条件で前記管理ノードへ前記再同期要求を送信する（１４２：Ｓ４４０）、
カウンタ同期方法。
【請求項１９】
カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されるメッセージである通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証し、前記上位カウント値及び前記下位カウント値を保持し（１１ｎ，１１ｋ）、予め設定された下位更新条件に従って、保持する前記下位カウント値を更新し（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）、配信される前記上位カウント値を用いて、保持する前記上位カウント値を更新するとともに（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）、前記下位カウント値を初期化する（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）通常ノード（１０ｎ，１０ｋ）と通信する管理ノード（１０ｋ，１０ｇ）におけるカウント値配信方法であって、
前記上位カウント値を保持し（１１ｋ）、
予め設定された上位更新条件に従って、当該管理ノードが保持する前記上位カウント値を更新し（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）、
当該管理ノードが保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、前記通常メッセージとは異なる前記メッセージである更新用メッセージを用いて前記通常ノードに配信する（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）、
前記上位更新条件は、予め設定された周期的な計時タイミングであり、
前記配信条件には、前記計時タイミングの周期より長い周期に設定された再同期タイミングが含まれる
カウント値配信方法。
【請求項２０】
カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されるメッセージである通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証し、前記上位カウント値及び前記下位カウント値を保持し（１１ｎ，１１ｋ）、予め設定された下位更新条件に従って、保持する前記下位カウント値を更新し（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）、配信される前記上位カウント値を用いて、保持する前記上位カウント値を更新するとともに（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）、前記下位カウント値を初期化し（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）、予め設定された条件で再同期要求を送信する通常ノード（１０ｎ，１０ｋ）と通信する管理ノード（１０ｋ，１０ｇ）におけるカウント値配信方法であって、
前記上位カウント値を保持し（１１ｋ）、
予め設定された上位更新条件に従って、当該管理ノードが保持する前記上位カウント値を更新し（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）、
当該管理ノードが保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、前記通常メッセージとは異なる前記メッセージである更新用メッセージを用いて前記通常ノードに配信し（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）、
前記配信条件には、前記通常ノードから送信された前記再同期要求の受信が含まれる
カウント値配信方法。
【請求項２１】
カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値として、前記上位カウント値を保持し（１１ｋ）、予め設定された上位更新条件に従って、前記上位カウント値を更新し（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）、保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、更新用メッセージを用いて配信し（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）、前記配信条件には再同期要求の受信が含まれる管理ノードと通信する通常ノードであって、前記更新用メッセージとは異なる前記メッセージであって前記通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与される通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証する通常ノードにおけるカウント値初期化方法であって、
前記上位カウント値及び前記下位カウント値を保持し（１１ｎ，１１ｋ）、
予め設定された下位更新条件に従って、当該通常ノードが保持する前記下位カウント値
を更新し（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）、
予め設定された条件で前記管理ノードへ再同期要求を送信し（１４２：Ｓ４４０）、
前記更新用メッセージを用いて前記管理ノードから配信される前記上位カウント値を用いて、当該通常ノードが保持する前記上位カウント値を更新するとともに（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）、
前記下位カウント値を初期化する（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、
カウント値初期化方法。
【請求項２２】
カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値とし、通常ノード間の通信に使用され、前記上位カウント値は付与されず、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されるメッセージである通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証し、前記上位カウント値及び前記下位カウント値を保持し（１１ｎ，１１ｋ）、予め設定された下位更新条件に従って、保持する前記下位カウント値を更新し（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）、配信される前記上位カウント値を用いて、保持する前記上位カウント値を更新するとともに（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）、前記下位カウント値を初期化する（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）通常ノード（１０ｎ，１０ｋ）と通信する管理ノード（１０ｋ，１０ｇ）で実行されるカウント値配信用のプログラムであって、
予め設定された上位更新条件に従って、当該管理ノードが保持する前記上位カウント値を更新するステップ（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）と、
当該管理ノードが保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、前記通常メッセージとは異なる前記メッセージである更新用メッセージを用いて前記通常ノードに配信するステップ（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）と、
を有し、
前記上位更新条件は、予め設定された周期的な計時タイミングであり、
前記配信条件には、前記計時タイミングの周期より長い周期に設定された再同期タイミングが含まれる
コンピュータにて実行可能なプログラム。
【請求項２３】
カウンタのカウント値を２分割した上位側を上位カウント値とし、前記カウンタのカウント値を２分割した下位側を下位カウント値として、前記上位カウント値を保持し（１１ｋ）、予め設定された上位更新条件に従って、前記上位カウント値を更新し（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）、保持する前記上位カウント値、前記上位カウント値を２分割した上位側、及び前記上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、更新用メッセージを用いて配信し（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）、前記配信条件には、前記通常ノードから送信された再同期要求の受信が含まれる管理ノードと通信する通常ノードであって、前記更新用メッセージとは異なる前記メッセージであって前記通常ノード間の通信に使用され、前記下位カウント値又は前記下位カウント値の下位所定桁が付与されるメッセージである通常メッセージの送受信を行い、前記カウント値を用いてメッセージ認証コードを生成し、該メッセージ認証コードを用いて前記通常メッセージを検証する通常ノードで実行されるカウント値初期化用のプログラムであって、
予め設定された下位更新条件に従って、当該通常ノードが保持する前記下位カウント値を更新するステップ（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）と、
前記管理ノードから配信される前記上位カウント値を用いて、当該通常ノードが保持する前記上位カウント値を更新するとともに（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）、前記下位カウント値を初期化するステップ（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、
前記管理ノードへ前記再同期要求を送信するステップ（１４２：Ｓ４４０）と、
を有する、
コンピュータにて実行可能なプログラム。
【請求項２４】
請求項２２または請求項２３に記載のプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信システムにおいてメッセージを認証する技術に関する。
【背景技術】
【０００２】
従来、車載ネットワークでのメッセージ認証において、各ＥＣＵでＣＡＮプロトコルのメッセージ識別子（以下、ＣＡＮＩＤ）毎にメッセージの送信回数をカウントし、そのカウント値をメッセージ認証コード（以下、ＭＡＣ）の生成に利用することで、リプレイ攻撃への耐性を持たせる技術が知られている（特許文献１参照）。なお、ＣＡＮは登録商標である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−９８７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、カウンタは、繰り返し周期が十分に長くなるようにビット数の大きいものが用いられる。このため、ＣＡＮＩＤ毎にカウント値を管理すると、各ＥＣＵで管理すべきデータ量が膨大になり、これを格納するためのメモリサイズや不揮発性メモリ等のリソースも増大するという問題があった。
【０００５】
また、従来技術では、ゲートウェイがメッセージを間引く等、何等かの理由でメッセージ抜けが生じると、送信側と受信側とでカウント値にずれが生じ、ＭＡＣの検証結果が一致しなくなることがある。このような場合に、送信側と受信側とでカウント値を合わせる、いわゆる再同期を行う必要がある。この再同期もＣＡＮＩＤ毎に行う必要があるため、複数のＥＣＵ間でカウンタずれが生じると、多数の再同期用のパケットがネットワーク上に流れることになり、通信トラフィックが増大するという問題もあった。
【０００６】
本開示は、各ノードにおけるカウンタの管理負担、およびカウント値の再同期に要する通信トラフィックを軽減することを目的とする。
【課題を解決するための手段】
【０００７】
本開示の一態様は、相互に接続された複数のノードを備える通信システム（１，１ａ）であって、ノードの一つを管理ノード（１０ｋ、１０ｇ）、メッセージの送受信を行うノードを通常ノード（１０ｎ，１０ｋ）とする。通常ノードはカウンタのカウント値を用いてメッセージ認証コードを生成し、メッセージ認証コードを用いて、通常ノード間の通信に使用される通常メッセージを検証する。なお、カウンタのカウント値を２分割した上位側を上位カウント値とし、カウンタのカウント値を２分割した下位側を下位カウント値として、通常メッセージは、上位カウント値は付与されず、下位カウント値又は下位カウント値の下位所定桁が付与されたメッセージである。
【０００８】
管理ノードは、上位カウント値保持部（１１ｋ）と、上位カウント値更新部（１４３：Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１６０）と、上位カウント値配信部（１４３：Ｓ１１０、Ｓ１３０〜Ｓ１５０，Ｓ１７０）と、を備える。上位カウント値保持部は、上位カウント値を保持する。上位カウント値更新部は、予め設定された上位更新条件に従って上位カウント値を更新する。上位カウント値配信部は、上位カウント値保持部が保持する上位カウント値、上位カウント値を２分割した上位側、及び上位カウント値を２分割した下位側のいずれかを、予め設定された配信条件に従って、通常メッセージとは異なるメッセージである更新用メッセージを用いて通常ノードに配信する。
【０００９】
通常ノードは、カウント値保持部（１１ｎ，１１ｋ）と、下位更新部（１４１：Ｓ２１０〜Ｓ２２０，１４２：Ｓ４００〜Ｓ４７０，Ｓ５１０〜Ｓ５２０，Ｓ６４０〜Ｓ６６０）と、上位更新部（１４２：Ｓ３１０〜Ｓ３９０，Ｓ４１０〜Ｓ４４０，Ｓ６１０〜Ｓ６４０，Ｓ６７０〜Ｓ６８０）と、下位初期化部（１４２：Ｓ３８０，Ｓ４３０，Ｓ６８０）と、を備える。カウント値保持部は、カウント値を保持する。下位更新部は、予め設定された下位更新条件に従ってカウント値保持部が保持する下位カウント値を更新する。上位更新部は、更新用メッセージにより管理ノードから配信される上位カウント値を用いて、カウント値保持部が保持する上位カウント値を更新する。下位初期化部は、上位更新部によって上位カウント値が更新されると、下位カウント値を初期化する。上位更新条件は、予め設定された周期的な計時タイミングである。配信条件には、計時タイミングの周期より長い周期に設定された再同期タイミングが含まれる。
【００１０】
また、本開示の一態様は、相互に接続された複数のノードを備える通信システム（１，１ａ）であって、通常ノードが要求送信部（１４２：Ｓ４４０）を更に備えること、上位更新条件が特に限定されないこと、および配信条件が異なること以外は、上述の態様と同様である。要求送信部は、予め設定されたタイミングで管理ノードへ再同期要求を送信する。配信条件には、通常ノードから送信された再同期要求の受信が含まれる。
【００１１】
このような構成によれば、上位カウント値は、管理ノードが一括して管理し、通常ノードは、管理ノードから配信される上位カウント値を、メッセージの用途や種類等によらず共通に記憶し、下位カウント値のみを、メッセージの用途や種類毎に個別に管理する。このため、通常ノードでは、カウント値を保存するために必要なデータ量を抑制することができ、不揮発性メモリを必ずしも必要としない。また、管理ノードによって上位カウント値が更新される毎に、各通常ノードの下位カウント値がリセットされるため、メッセージの送受信間でのカウント値のずれが生じにくく、仮に、カウント値のずれが生じたとしても、管理ノードが上位カウント値の配信を行うだけでカウント値の再同期を簡単に行うことができる。その結果、再同期に要する通信トラフィックも軽減することができる。
【００１２】
本開示の一態様として、本開示は、上述の通信システムを構成する管理ノードとして把握されてもよい。
本開示の一態様として、本開示は、上述の通信システムを構成する通常ノードとして把握されてもよい。
本開示の一態様として、本開示は、上述の通信システムを構成する通常ノード間でカウンタのカウント値を同期させるカウンタ同期方法として把握されてもよい。
本開示の一態様として、本開示は、上述の通信システムを構成する管理ノードにおけるカウント値配信方法として把握されてもよい。
本開示の一態様として、本開示は、上述の通信システムを構成する通常ノードにおけるカウント値初期化方法として把握されてもよい。
本開示の一態様として、本開示は、上述の通信システムを構成する管理ノードで実行されるカウント値配信用のプログラムとして把握されてもよい。
本開示の一態様として、本開示は、上述の通信システムを構成する通常ノードで実行されるカウント値初期化用のプログラムとして把握されてもよい。
本開示の一態様として、本開示は、上述のプログラムが記録されたコンピュータが読み取り可能な記録媒体として把握されてもよい。
【００１３】
なお、上述のプログラムは、コンピュータに組み込まれるＲＯＭやバックアップＲＡＭに記憶され、これらＲＯＭやバックアップＲＡＭからコンピュータにロードして用いてもよいし、ネットワークを介してコンピュータにロードして用いてもよい。
【００１４】
また、上述の記録媒体としては、例えば、光ディスク、磁気ディスク、ＵＳＢメモリやメモリカード（登録商標）などの半導体製メモリ等が含まれる。
【００１５】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１６】
【図１】通信システムの全体構成を示すブロック図である。
【図２】カウンタの構造を示す説明図であり、（ａ）は基本的なカウンタ、（ｂ）は管理ＥＣＵが管理するカウンタ、（ｃ）は通常ＥＣＵが管理するカウンタである。
【図３】管理ＥＣＵと通常ＥＣＵとの間で送受信される初期化メッセージ、周期メッセージ、および通常ＥＣＵ同士で送受信される通常メッセージの構造を示す説明図である。
【図４】メッセージを送信する送信側ＥＣＵおよびメッセージを受信する受信側ＥＣＵでの処理の概要を示す説明図である。
【図５】管理ＥＣＵのメッセージ処理部が実行する同期処理のフローチャートである。
【図６】通常ＥＣＵのメッセージ処理部が実行する送信処理のフローチャートである。
【図７】通常ＥＣＵのメッセージ処理部が実行する受信処理のフローチャートである。
【図８】第２実施形態における送信処理のフローチャートである。
【図９】第２実施形態における受信処理の変更部位のフローチャートである。
【図１０】第３実施形態において通常ＥＣＵが管理するカウンタの構造を示す説明図である。
【図１１】第３実施形態における受信処理のフローチャートである。
【図１２】第４実施形態における通信システムの全体構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下に本発明が適用された実施形態について、図面を用いて説明する。
［１．第１実施形態］
［１．１．全体構成］
通信システム１は、車両に搭載され、図１に示すように、複数のノード１０と、各ノード１０を相互に接続するバス状の通信路３とを備える。また、通信システム１では、通信路３上で調停負けしたノード１０は送信を直ちに停止し、調停勝ちしたノード１０のみが送信を継続する、いわゆるＣＳＭＡ／ＣＡ方式のアクセス制御方式が用いられている。具体的には、ＩＳＯ１１８９８に規定されたＣＡＮプロトコルが用いられ、フレームのヘッダ部分に付与される識別子（以下、ＣＡＮＩＤ）を用いて調停が実施される。なお、ＣＡＮは登録商標である。
【００１８】
ノード１０は、電子制御装置（以下、ＥＣＵ）とも呼ばれる。なお、ＥＣＵは、Electronic Control Unitの略である。以下では、ノード１０の一つを管理ＥＣＵ１０ｋ、それ以外を通常ＥＣＵ１０ｎと呼び、両者を特に区別しない場合は、単にＥＣＵ１０と呼ぶ。これは後述する管理ＥＣＵ１０ｋおよび通常ＥＣＵ１０ｎの各構成要素についても同様である。
【００１９】
［１．２．管理ＥＣＵ］
管理ＥＣＵ１０ｋは、カウント値保持部１１ｋ、鍵保持部１２ｋ、制御部１３ｋ、メッセージ処理部１４ｋ、通信コントローラ１５ｋを備える。
【００２０】
通信コントローラ１５ｋは、周知のＣＡＮコントローラを備える。通信コントローラ１５ｋは、メッセージ処理部１４ｋから供給される各種メッセージを、ＣＡＮプロトコルに従った通信フレームに載せて通信路３に送信する。また、ＣＡＮコントローラは、通信路３から自ＥＣＵ１０ｋで受信すべきＣＡＮＩＤが付与された通信フレームを受信すると、メッセージを抽出して、メッセージ処理部１４ｋに供給する。なお、通信フレームには、メッセージの種類に応じたメッセージ識別子（即ち、ＣＡＮＩＤ）が付与される。
【００２１】
カウント値保持部１１ｋは、読み書き自在な不揮発性メモリを備える。カウント値保持部１１ｋには、管理用カウンタのカウント値を保持するエリアと、通信用カウンタのカウント値を保持するエリアとが用意されている。
【００２２】
なお、図２（ａ）に示すように、基本となるカウンタは、後述するメッセージ認証コード（即ち、ＭＡＣ）の生成に使用する所定ビットのものである。ここでは、６４ビットのカウンタを用いる。このカウンタは、上位４８ビットと下位１６ビットに２分割され、その上位側のカウント値を上位カウント値、下位側のカウント値を下位カウント値という。上位カウント値は、更に２４ビットずつに２分割され、その上位側のカウント値をトリップカウント値Ｃtr、下位側のカウント値をインターバルカウント値Ｃinという。また、下位カウント値はメッセージカウント値Ｃmeともいう。
【００２３】
そして、管理用カウンタのカウント値は、図２（ｂ）に示すように、上位カウント値、即ち、トリップカウント値Ｃtrとインターバルカウント値Ｃinとで構成されている。また、通信用カウンタのカウント値は、図２（ｃ）に示すように、自ＥＣＵが扱うＣＡＮＩＤ毎に設けられた下位カウント値と、自ＥＣＵが扱う全てのＣＡＮＩＤに共通に設けられた上位カウント値とで構成されている。なお、各ＥＣＵ１０は、一つのＣＡＮＩＤについては、送信または受信の一方のみが可能であるため、ＣＡＮＩＤ毎に設けられた各通信カウンタは、それぞれ送信用の通信カウンタまたは受信用の通信カウンタのいずれかとして動作する。
【００２４】
鍵保持部１２ｋは、読み書き自在な不揮発性メモリを備える。鍵保持部１２ｋは、ＭＡＣの生成に使用する所定ビットのいわゆる共通鍵Ｋを記憶する。ここでは、１２８ビットの共通鍵Ｋを用いる。この共通鍵Ｋは、全てのＥＣＵ１０に共通のものであり、鍵保持部１２ｋには予め記憶されている。
【００２５】
制御部１３ｋは、周知のコンピュータを備える。制御部１３ｋは、メッセージ処理部１４ｋおよび通信コントローラ１５ｋを介した他のＥＣＵ１０との通信によって、予め自ＥＣＵに割り当てられた機能を実現するための各種処理を実行する。その際、制御部１３ｋは、メッセージ処理部１４ｋとの間でデータＰＤＵをやりとりする。
【００２６】
メッセージ処理部１４ｋは、ＣＰＵと、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の半導体メモリ（以下、メモリ）と、を有する周知のマイクロコンピュータを中心に構成される。メッセージ処理部１４ｋの各種機能は、ＣＰＵが非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、メモリが、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムが実行されることで、プログラムに対応する方法が実行される。なお、メッセージ処理部１４ｋを構成するマイクロコンピュータの数は１つでも複数でもよい。
【００２７】
メッセージ処理部１４ｋは、ＣＰＵがプログラムを実行することで実現される機能の構成として、送信処理部１４１、受信処理部１４２、同期処理部１４３を備える。送信処理部１４１は、他のＥＣＵ１０にメッセージを送信する処理を実行する。受信処理部１４２は、他のＥＣＵからメッセージを受信する処理を実行する。同期処理部１４３は、メッセージに付加するＭＡＣの生成や検証に使用するカウンタの値を、各ＥＣＵ１０間で同期させる処理を実行する。これらの処理の詳細は、後述する。
【００２８】
［１．３．通常ＥＣＵ］
通常ＥＣＵ１０ｎは、管理ＥＣＵ１０ｋと同様に、カウント値保持部１１ｎ、鍵保持部１２ｎ、制御部１３ｎ、メッセージ処理部１４ｎ、通信コントローラ１５ｎを備える。このうち、鍵保持部１２ｎ，制御部１３ｎ，通信コントローラ１５ｎは、管理ＥＣＵ１０ｋの鍵保持部１２ｋ，制御部１３ｋ，通信コントローラ１５ｋと同様であるため、説明を省略する。
【００２９】
カウント値保持部１１ｎは、通信用カウンタのカウント値を保持するメモリを備える。メモリは、管理ノード１０ｋのカウント値保持部１１ｋとは異なり、必ずしも不揮発性メモリである必要はない。通信用カウンタのカウント値の詳細は、図２（ｃ）に示したカウント値保持部１１ｋに保持されるものと同様である。
【００３０】
メッセージ処理部１４ｎは、メッセージ処理部１４ｋと同様の送信処理部１４１および受信処理部１４２を備える。
つまり、通常ＥＣＵ１０ｎは、管理ＥＣＵ１０ｋの構成から、管理ＥＣＵ１０ｋ独自の機能に関わる構成（管理用カウンタ、同期処理部１４３）を省略したものとなっている。換言すれば、管理ＥＣＵ１０ｋは、通常ＥＣＵ１０ｎの機能を備えており、通常ＥＣＵ１０ｎとしても機能する。
【００３１】
[１．４．メッセージ処理部]
メッセージ処理部１４が扱うメッセージを、図３に示す。メッセージは、ＤＡＴＡ領域、ＣＮＴ領域、ＭＡＣ領域を備える。メッセージには、管理ＥＣＵ１０ｋから通常ＥＣＵ１０ｎへの配信に用いる初期化メッセージおよび周期メッセージと、通常ＥＣＵ１０ｎ同士が通信する際に用いる通常メッセージとがある。
【００３２】
初期化メッセージは、図３（ａ）に示すように、ＤＡＴＡ領域にはトリップカウント値Ｃtr、ＣＮＴ領域には０、ＭＡＣ領域にはＤＡＴＡ領域の情報を用いて生成されたＭＡＣの一部が格納される。またＤＡＴＡ領域にはインターバルカウント値Ｃinを含めてもよい。
【００３３】
周期メッセージは、図３（ｂ）に示すように、ＤＡＴＡ領域にはインターバルカウント値Ｃin、ＣＮＴ領域には０、ＭＡＣ領域にはＤＡＴＡ領域の情報を用いて生成されたＭＡＣの一部が格納される。
【００３４】
通常メッセージは、図３（ｃ）に示すように、ＤＡＴＡ領域にはデータＰＤＵ、ＣＮＴ領域にはメッセージカウント値Ｃme、ＭＡＣ領域にはＤＡＴＡ領域およびＣＮＴ領域の情報を用いて生成されたＭＡＣの一部が格納される。
【００３５】
なお、初期化メッセージおよび周期メッセージでは、ＣＮＴ領域を省略してもよい。
ここで、メッセージ処理部１４が、通常メッセージを送受信する際に実施する処理の概要を、図４を用いて説明する
メッセージを送信する送信側のＥＣＵ１０は、制御部１３から供給されるデータＰＤＵと、鍵保持部１２に保持されている共通鍵Ｋと、カウント値保持部１１に保持されている通信用カウンタのカウント値ＣＴｓ（即ち、Ｃtr，Ｃin，Ｃme）とを用いてＭＡＣを生成する。そして、ＤＡＴＡ領域にはデータＰＤＵ、ＣＮＴ領域には送信用カウンタのメッセージカウント値Ｃme、ＭＡＣ領域には生成されたＭＡＣの一部を載せたメッセージを生成し、これを通信コントローラ１５に供給する。
【００３６】
一方、通信コントローラ１５を介してメッセージを受信した受信側のＥＣＵ１０は、メッセージのＤＡＴＡ領域の値と、鍵保持部１２に保持されている共通鍵Ｋと、カウント値保持部１１に保持されている通信用カウンタの上位カウント値（即ち、Ｃtr，Ｃin）にメッセージのＣＮＴ領域の値（即ち、ｒ＿Ｃme）を下位カウント値として連結したカウント値ＣＴｒとを用いてＭＡＣを生成する。そして、生成されたＭＡＣとメッセージのＭＡＣ領域の値とを比較することでＭＡＣを検証する。この検証により、メッセージの完全性が確認された場合、即ちＭＡＣ検証ＯＫの場合は、メッセージのＤＡＴＡ領域の値をデータＰＤＵとして制御部１３に供給する。この検証により、完全性が否定された場合、即ちＭＡＣ検証ＮＧの場合は、メッセージを破棄する。
【００３７】
初期化メッセージを送受信する場合、送信側のＥＣＵ１０は、データＰＤＵの代わりに、カウント値保持部１１に保持されたトリップカウント値Ｃtrを用いる。送信側のＥＣＵ１０は、ＭＡＣを、通信用カウンタのカウント値ＣＴｓを用いることなく、トリップカウント値Ｃtrと共通鍵Ｋとから生成する。そして、ＤＡＴＡ領域にはトリップカウント値Ｃtrを格納し、ＭＡＣ領域には生成したＭＡＣの一部を格納した初期化メッセージを生成する（図３（ａ）参照）。なお、受信側のＥＣＵ１０でも、カウント値Ｃtrを用いることなく、ＤＡＴＡ領域の値と共通鍵ＫとからＭＡＣを生成する。
【００３８】
周期メッセージを送受信する場合、トリップカウント値Ｃtrの代わりにインターバルカウント値Ｃinを用いる以外は、初期化メッセージの場合と同様に動作する。
［１．４．１．同期処理部］
ここで、メッセージ処理部１４が実行する処理のうち、管理ＥＣＵ１０ｋのみで実施される同期処理部１４３の処理を、図５に示すフローチャートを用いて説明する。本処理は、管理ＥＣＵ１０ｋの電源が投入されると起動する。
【００３９】
同期処理部１４３が起動すると、Ｓ１１０にて、自車両のイグニションスイッチのオン状態（ＩＧ−ＯＮ）が検出されたか否かを判断する。ＩＧ−ＯＮが検出されなければ、Ｓ１４０に進む。
【００４０】
Ｓ１２０では、カウント値保持部１１ｋに格納された管理用カウンタのカウント値を更新する。具体的には、トリップカウント値Ｃtrをインクリメント（即ち、Ｃtr←Ｃtr＋１）し、インターバルカウント値Ｃinをゼロにリセットする。
【００４１】
続くＳ１３０では、Ｓ１２０にてインクリメントされたトリップカウント値Ｃtrを用いて初期化メッセージを生成、送信する。
続くＳ１４０では、予め設定された一定周期で発生する同期タイミングであるか否かを判断する。同期タイミングであればＳ１６０に移行し、同期タイミングでなければ、Ｓ１５０に移行する。
【００４２】
Ｓ１５０では、通常ＥＣＵ１０ｎから再同期要求を受信したか否かを判断する。再同期要求を受信していればＳ１７０に移行し、再同期要求を受信していなければＳ１１０に戻る。
【００４３】
Ｓ１６０では、カウント値保持部１１ｋに格納された管理用カウンタのインターバルカウント値Ｃinをインクリメント（即ち、Ｃin←Ｃin＋１）する。
続くＳ１７０では、インターバルカウント値Ｃinを用いて周期メッセージを生成、送信して、Ｓ１１０に戻る。
【００４４】
つまり、管理カウンタのトリップカウント値Ｃtrは、ＩＧ−ＯＮが検出される毎に更新される。その更新されたトリップカウント値Ｃtrは、初期化メッセージによって、各ＥＣＵ１０に配信される。
【００４５】
また、管理カウンタのインターバルカウント値Ｃinは、ＩＧ−ＯＮが検出されると０にリセットされ、同期タイミング毎に更新される。その更新されたインターバルカウント値Ｃinは、周期メッセージによって、各ＥＣＵ１０に配信される。なお、周期メッセージは、通常ＥＣＵ１０ｎから再同期要求を受信した時にも同様に配信される。
【００４６】
［１．４．２．送信処理部］
ＥＣＵ１０（即ち、通常ＥＣＵ１０ｎおよび通常ＥＣＵの機能を有した管理ＥＣＵ１０ｋ）の送信処理部１４１が実行する処理を、図６に示すフローチャートを用いて説明する。本処理は、ＥＣＵ１０の電源が投入されると起動する。
【００４７】
送信処理部１４１は、本処理が起動すると、Ｓ２１０にて、制御部１３からの送信要求があるか否かを判断する。送信要求がなければ同ステップを繰り返すことで待機し、送信要求があるとＳ２２０に進む。
【００４８】
Ｓ２２０では、制御部１３から供給されるデータＰＤＵの内容に対応するＣＡＮＩＤを特定し、そのＣＡＮＩＤで使用する通信用カウンタのメッセージカウント値Ｃmeをインクリメント（即ち、Ｃme←Ｃme＋１）する。
【００４９】
続くＳ２３０では、制御部１３から供給されるデータＰＤＵおよびＳ２２０でインクリメントされたメッセージカウント値Ｃmeを用いて通常メッセージを生成、送信し、Ｓ２１０に戻る。
【００５０】
［１．４．３．受信処理部］
ＥＣＵ１０の受信処理部１４２が実行する処理を、図７に示すフローチャートを用いて説明する。本処理は、ＥＣＵ１０の電源が投入されると起動する。
【００５１】
受信処理部１４２は、本処理が起動すると、Ｓ３１０にて、初期化メッセージを受信したか否かを判断する。受信していなければＳ３２０に進む。
Ｓ３２０では、自車両のＩＧ−ＯＮが検出されたか否かを判断する。ＩＧ−ＯＮが検出されていなければＳ３９０に進み、検出されていればＳ３３０に進む。
【００５２】
Ｓ３３０では、カウント値保持部１１に格納されている通信用カウンタのトリップカウント値Ｃtrをインクリメント（即ち、Ｃtr←Ｃtr＋１）して、Ｓ３８０に進む。
先のＳ３１０にて、初期化メッセージを受信していると判断された場合、Ｓ３４０に進み、初期化メッセージのＤＡＴＡ領域に示されたトリップカウント値ｒ＿Ｃtrと鍵保持部１２に保持された共通鍵Ｋとに基づいてＭＡＣを生成し、この生成したＭＡＣと初期化メッセージのＭＡＣ領域に示された値とを比較することでＭＡＣ検証をする。その結果、ＭＡＣ検証ＮＧであればＳ３７０に進み、ＭＡＣ検証ＯＫであればＳ３５０に進む。
【００５３】
Ｓ３５０では、初期化メッセージのＤＡＴＡ領域に示されたトリップカウント値ｒ＿Ｃtrが、カウント値保持部１１に保持された通信用カウンタのトリップカウント値Ｃtrより大きいか否かを判断する。ｒ＿Ｃtr＞Ｃtrであれば、Ｓ３６０に進み、ｒ＿Ｃtr≦Ｃtrであれば、Ｓ３７０に進む。
【００５４】
Ｓ３６０では、カウント値保持部１１に保持された通信用カウンタのトリップカウント値ＣtrをＤＡＴＡ領域に示されたトリップカウント値ｒ＿Ｃtrで更新してＳ３８０に進む。
【００５５】
Ｓ３７０では、受信した初期化メッセージに異常があるものとして予め定められたエラー処理を実行する。
Ｓ３８０では、カウント値保持部１１に保持された通信用カウンタのインターバルカウント値Ｃin、および全てのＣＡＮＩＤについてのメッセージカウント値Ｃmeを０にリセットする。
【００５６】
つまり、Ｓ３１０〜Ｓ３８０の処理により、初期化メッセージを正常に受信するかＩＧ−ＯＮを検出すると、通信用カウンタのカウント値（Ｃtrを除く）が初期化されることになる。
【００５７】
続くＳ３９０では、周期メッセージを受信したか否かを判断する。周期メッセージを受信していなければ、Ｓ４００に進み、通常メッセージを受信したか否かを判断する。通常メッセージを受信していなければ、Ｓ３１０に戻る。
【００５８】
先のＳ３９０にて周期メッセージを受信したと判断された場合は、Ｓ４１０に進み、受信した周期メッセージのＤＡＴＡ領域に示されたインターバルカウント値ｒ＿Ｃinと鍵保持部１２に保持された共通鍵Ｋとに基づいてＭＡＣを生成し、この生成したＭＡＣと、周期メッセージのＭＡＣ領域に示された値とを比較することでＭＡＣ検証をする。その結果、ＭＡＣ検証ＮＧであればＳ４４０に進み、ＭＡＣ検証ＯＫであればＳ４２０に進む。
【００５９】
Ｓ４２０では、周期メッセージのＤＡＴＡ領域に示されたインターバルカウント値ｒ＿Ｃinが、カウント値保持部１１に保持された通信用カウンタのインターバルカウント値Ｃinより大きいか否かを判断する。ｒ＿Ｃin＞Ｃinであれば、Ｓ４３０に進み、ｒ＿Ｃin≦Ｃinであれば、Ｓ４４０に進む。
【００６０】
Ｓ４３０では、カウント値保持部１１に保持された通信用カウンタのインターバルカウント値Ｃinを周期メッセージのＤＡＴＡ領域に示されたインターバルカウント値ｒ＿Ｃinで更新すると共に、全てのＣＡＮＩＤについてのメッセージカウント値Ｃmeを０にリセットしてＳ３１０に戻る。
【００６１】
一方Ｓ４４０では、管理ＥＣＵに対して再同期要求を送信してＳ３１０に戻る。
先のＳ４００にて通常メッセージを受信したと判断された場合は、Ｓ４５０に進む。
Ｓ４５０では、通常メッセージのＤＡＴＡ領域に示されたデータｒ＿ＰＤＵと鍵保持部１２に保持された共通鍵Ｋと、カウント値保持部１１に保持された通信用カウンタのトリップカウント値Ｃtr、インターバルカウント値Ｃinに、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeを連結したカウント値ＣＴrとに基づいてＭＡＣを生成する。更に、この生成したＭＡＣと、通常メッセージのＭＡＣ領域に示された値とを比較することでＭＡＣ検証をする。その結果、ＭＡＣ検証ＮＧであればＳ３１０に戻り、ＭＡＣ検証ＯＫであればＳ４６０に進む。
【００６２】
Ｓ４６０では、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeが、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃmeより大きいか否かを判断する。但し、このメッセージカウント値Ｃmeは、受信した通常メッセージのＣＡＮＩＤ用のものであ。ｒ＿Ｃme＞Ｃmeであれば、Ｓ４７０に進み、ｒ＿Ｃme≦Ｃmeであれば、Ｓ３１０に戻る。
【００６３】
Ｓ４７０では、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃmeをインクリメント（即ち、Ｃme←Ｃme＋１）して、Ｓ３１０に戻る。このとき、通常メッセージのＤＡＴＡ領域は、データＰＤＵとして制御部１３に供給される。
【００６４】
つまり、Ｓ３９０〜Ｓ４７０の処理により、周期メッセージを正常に受信する毎に、通信用カウンタのインターバルカウント値Ｃinが更新され、メッセージカウント値Ｃmeが初期化される。また、通常メッセージを正常に受信する毎に、通信用カウンタのメッセージカウント値が更新される。
【００６５】
なお、メッセージ処理部１４ｋを構成する各要素である送信処理部１４１、受信処理部１４２、同期処理部１４３を実現する手法は、ソフトウェアに限るものではなく、その一部又は全部の要素について、一つあるいは複数のハードウェアを用いて実現してもよい。例えば、各部の機能がハードウェアである電子回路によって実現される場合、その電子回路は多数の論理回路を含むデジタル回路、又はアナログ回路、あるいはこれらの組み合わせによって実現してもよい。
【００６６】
［１．５．動作］
このように構成された通信システム１は、以下のように動作する。
管理ＥＣＵ１０ｋは、ＩＧ−ＯＮを検出すると、管理用カウンタのトリップカウント値Ｃtrを更新し、その更新した値を、初期化メッセージによって、各ＥＣＵ１０に配信する。このとき、初期化メッセージには、ＭＡＣも付加される。
【００６７】
初期化メッセージを受信したＥＣＵ１０は、初期化メッセージに示されたトリップカウント値ｒ＿ＣtrのＭＡＣ検証と、自ＥＣＵが保持するトリップカウント値Ｃtrとの大小比較とを行う。その結果、ＭＡＣ検証ＯＫ（即ち、メッセージは完全性あり）、かつｒ＿Ｃtr＞Ｃtrである場合に、自ＥＣＵが保持するトリップカウント値Ｃtrを更新し、インターバルカウント値Ｃinとメッセージカウント値Ｃmeを初期化する。
【００６８】
これにより、各ＥＣＵ１０が保持する通信用カウンタのカウント値は、いずれも同じ値となり送信側と受信側とで同期した状態となる。
その後、通常メッセージを送受信する毎に、送信側のＥＣＵ１０および受信側のＥＣＵ１０のそれぞれが、対応するＣＡＮＩＤの通信用カウンタのメッセージカウント値Ｃme、を更新し、そのメッセージカウント値Ｃmeを用いて、ＭＡＣ生成・検証等を実施する。
【００６９】
また、管理ＥＣＵ１０ｋは、一定周期（例えば、５００ｍｓ）の同期タイミング毎に、管理用カウンタのインターバルカウント値Ｃinを更新し、その更新したインターバルカウント値Ｃinを、周期メッセージによって各ＥＣＵ１０に配信する。このとき、周期メッセージには、ＭＡＣも付加される。
【００７０】
周期メッセージを受信したＥＣＵ１０は、周期メッセージに示されたインターバルカウント値ｒ＿ＣinのＭＡＣ検証と、自ＥＣＵが保持するインターバルカウント値Ｃinとの大小比較を行う。ＭＡＣ検証ＯＫ、かつｒ＿Ｃin＞Ｃinである場合に、自ＥＣＵが保持するインターバルカウント値Ｃinを更新し、メッセージカウント値Ｃmeを初期化する。
【００７１】
これにより、あるＣＡＮＩＤについて、メッセージ送信側のＥＣＵが保持する通信用カウンタのカウント値と、メッセージ受信側のＥＣＵが保持する通信用カウンタのカウント値との間にずれが生じていたとしても、周期メッセージを受信することによって、両ＥＣＵの通信用カウンタのカウント値は同じ値となり、即ち、カウント値が同期した状態に復帰する。
【００７２】
［１．６．効果］
以上説明したように、通信システム１では、通信用カウンタを上位カウント値（即ち、トリップカウント値Ｃtr、インターバルカウント値Ｃin）と、下位カウント値（即ち、メッセージカウント値Ｃme）に分けている。そして、管理ＥＣＵ１０ｋが上位カウント値を一括管理し、各ＥＣＵ１０は、上位カウント値については、メッセージ種別（即ち、ＣＡＮＩＤ）の違いによらず、管理ＥＣＵ１０ｋから配信された共通の値を使用し、下位カウント値の更新のみを行う。
【００７３】
従って、各ＥＣＵ１０は、通信用カウンタのカウント値として、下位カウント値のみＣＡＮＩＤ毎に保持し、上位カウント値については全てのＣＡＮＩＤに共通な一つの値を保持すればよいため、通信用カウンタのカウント値を保持するために必要なメモリサイズを大幅に削減することができる。
【００７４】
また、通信システム１では、管理ＥＣＵ１０ｋが、上位カウント値（特にインターバルカウント値Ｃin）を周期的に更新して各ＥＣＵ１０に配信する。この配信を受けた各ＥＣＵ１０は、通信用カウンタの上位カウント値の更新だけでなく下位カウント値のリセットも行う。このため、通信システム１では、各ＥＣＵ１０が保持する通信カウンタのカウント値を定期的に再同期させることができる。
【００７５】
しかも、通信システム１では、上位カウント値を二つに分け、その一部であるトリップカウント値Ｃtrは、ＩＧ−ＯＮ時にのみ配信し、残りの部分であるインターバルカウント値Ｃinのみを定期的に送信している。このため、単一のメッセージで送信可能なデータ量が少ないＣＡＮプロトコルを採用した通信システムであっても、再同期を実施する時には、単一の周期メッセージだけを送信すればよいため、再同期時の通信トラフィックを大幅に削減することができる。
【００７６】
通信システム１では、各ＥＣＵ１０は、初期メッセージの受信時だけでなく、ＩＧ−ＯＮを検出した時にも、通信用カウンタのカウント値を初期化する。このため、各ＥＣＵ１０は、初期化メッセージの配信を待つことなく、速やかに通常メッセージの送受信を開始することができる。
【００７７】
通信システム１では、周期メッセージを受信したＥＣＵ１０は、周期メッセージの異常を検出した場合、管理ＥＣＵ１０ｋに対して再同期要求を送信し、再同期要求を受信した管理ＥＣＵ１０ｋは、再同期タイミングを待つことなく、再び周期メッセージを送信する。従って、通信システム１では、通信用カウンタのカウント値の同期がとれていない状態を、速やかに解消することができる。
【００７８】
通信システム１では、メッセージを受信したＥＣＵ１０は、ＭＡＣ検証だけでなく、メッセージに示されたカウント値と自ＥＣＵ１０が保持するカウント値との比較によっても受信したメッセージの正否を判断して、メッセージを破棄する。これにより、通信システム１では、いわゆるリプライ攻撃によるメッセージを排除することができ、システムのセキュリティを向上させることができる。
【００７９】
本実施形態では、管理ＥＣＵ１０ｋは、通常ＥＣＵ１０ｎとしての機能を有しているが、管理ＥＣＵ１０ｋから通常ＥＣＵ１０ｎとしての機能を削除し、同期処理専用のＥＣＵとして構成してもよい。
【００８０】
［２．第２実施形態］
［２．１．第１実施形態との相違点］
第２実施形態は、基本的な構成は第１実施形態と同様であるため、相違点について説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【００８１】
前述した第１実施形態では、通信用カウンタのメッセージカウント値Ｃmeを、通常メッセージの送受信毎に更新している。これに対し、第２実施形態では、通常メッセージの送受信によらず、一定の更新時間（例えば１ｍｓ）毎に更新する点で第１実施形態とは相違する。
【００８２】
以下では、第１実施形態と相違する送信処理部１４１および受信処理部１４２の処理について説明する。
［２．２．送信処理部］
送信処理部１４１が実行する処理を、図８に示すフローチャートを用いて説明する。本処理は、通常ＥＣＵの電源が投入されると起動する。
【００８３】
送信処理部は、本処理が起動すると、Ｓ５１０にて、予め設定された一定の更新時間毎の更新タイミングであるか否かを判断する。更新タイミングであればＳ５２０に進み、更新タイミングでなければＳ５３０に進む。
【００８４】
Ｓ５２０では、即ち更新タイミングになると、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃmeをインクリメント（即ち、Ｃme←Ｃme＋１）して、Ｓ５３０に進む。
【００８５】
Ｓ５３０では、制御部１３からの送信要求があるか否かを判断する。送信要求があればＳ５４０に進み、送信要求がなければ、Ｓ５１０に戻る。
Ｓ５４０では、即ち送信要求があると、制御部１３から供給されるデータＰＤＵおよびカウント値保持部１１に保持された通信用カウンタのカウント値を用いて通常メッセージを生成、送信し、Ｓ５１０に戻る。
【００８６】
つまり、本実施形態では、メッセージカウント値Ｃmeの更新を、メッセージ送信に依らず、周期的な更新タイミングで行っている。
［２．３．受信処理部］
受信処理部１４２が実行する処理では、図７に示すフローチャート中のＳ４６０およびＳ４７０の代わりに、図９に示すＳ４６５およびＳ４７５を実行する点だけが、第１実施形態とは異なっている。
【００８７】
即ち、通常メッセージを受信し、ＭＡＣ検証ＯＫであった場合、即ち、Ｓ４００およびＳ４５０のいずれでも肯定判断された場合、Ｓ４６５に進む。
Ｓ４６５では、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeが、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃme以上であるか否かを判断する。ｒ＿Ｃme≧Ｃmeであれば、Ｓ４７５に進み、ｒ＿Ｃme＜Ｃmeであれば、Ｓ３９０に戻る。
【００８８】
Ｓ４７５では、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃmeを、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeで更新（即ち、Ｃme←ｒ＿Ｃme）して、Ｓ３９０に戻る。
【００８９】
なお、更新タイミングを決める更新時間は、通常メッセージの平均的な送信間隔と同程度またはそれ以下であることが望ましい。要するに、メッセージカウント値Ｃmeは、更新時間毎に更新される計時タイマーの計時値であり、換言すれば、メッセージカウント値Ｃmeとしてタイムスタンプを用いていると言うことができる。
【００９０】
［２．４．効果］
以上詳述した第２実施形態によれば、前述した第１実施形態の効果と同様の効果を得ることができる。
【００９１】
［３．第３実施形態］
［３．１．第１実施形態との相違点］
第２実施形態は、基本的な構成は第１実施形態と同様であるため、相違点について説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【００９２】
前述した第１実施形態では、周期メッセージを受信し、ＭＡＣ検証に成功した場合、直ちにインターバルカウント値Ｃinを周期メッセージに示されたインターバルカウント値ｒ＿Ｃinに書き換えている。これに対し、第３実施形態では、周期メッセージに示されたインターバルカウント値ｒ＿Ｃinを一時保管値Ｃin_tmpとして一時的に保管する。その後、一時保管値Ｃin_tmpを用いて通常メッセージでのＭＡＣ検証に成功すると、インターバルカウント値Ｃinを一時保管値Ｃin_tmpに書き換える点で第１実施形態と相違する。
【００９３】
本実施形態において、カウント値保持部１１ｋ，１１ｎは、図１０に示すように、通信カウンタとして、第１実施形態で示した構成に加えて、一時保管値Ｃin_tmpを記憶する領域を備えている。
【００９４】
［３．２．処理］
次に、受信処理部１４２が、図７に示した第１実施形態の受信処理に代えて実行する受信処理について、図１１のフローチャートを用いて説明する。なお、図１１におけるＳ３１０〜Ｓ４００の処理は、図７におけるＳ３１０〜Ｓ４００の処理と同様であるため、説明を一部簡略化している。
【００９５】
受信処理部１４２は、Ｓ３９０にて周期メッセージを受信したと判断すると、Ｓ６１０に進む。
Ｓ６１０では、周期メッセージのＤＡＴＡ領域に示されたインターバルカウント値ｒ＿Ｃinが、カウント値保持部１１に保持された通信用カウンタのインターバルカウント値Ｃinより大きいか否かを判断する。ｒ＿Ｃin＞Ｃinであれば、Ｓ６２０に進み、ｒ＿Ｃin≦Ｃinであれば、Ｓ３１０に戻る。
【００９６】
Ｓ６２０では、受信した周期メッセージのＤＡＴＡ領域に示されたインターバルカウント値ｒ＿Ｃinと鍵保持部１２に保持された共通鍵Ｋとに基づいてＭＡＣを生成し、この生成したＭＡＣと、周期メッセージのＭＡＣ領域に示された値とを比較することでＭＡＣ検証をする。その結果、ＭＡＣ検証ＮＧであればＳ３１０に戻り、ＭＡＣ検証ＯＫであればＳ６３０に進む。
【００９７】
Ｓ６３０では、カウント値保持部１１に保持された通信用カウンタの一時保持値Ｃin_tmpを、周期メッセージのＤＡＴＡ領域に示されたインターバルカウント値ｒ＿Ｃinで更新してＳ３１０に戻る。
【００９８】
受信処理部１４２は、Ｓ４００にて通常メッセージを受信したと判断すると、Ｓ６４０に進む。
Ｓ６４０では、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeが、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃmeより大きいか否かを判断する。但し、このメッセージカウント値Ｃmeは、受信した通常メッセージのＣＡＮＩＤ用のものである。ｒ＿Ｃme＞Ｃmeであれば、Ｓ６５０に進み、ｒ＿Ｃme≦Ｃmeであれば、Ｓ６７０に進む。
【００９９】
Ｓ６５０では、通常メッセージのＤＡＴＡ領域に示されたデータｒ＿ＰＤＵと鍵保持部１２に保持された共通鍵Ｋと、カウント値保持部１１に保持された通信用カウンタのトリップカウント値Ｃtr、インターバルカウント値Ｃinに、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeを連結したカウント値ＣＴrとに基づいてＭＡＣを生成する。更に、この生成したＭＡＣと、通常メッセージのＭＡＣ領域に示された値とを比較することでＭＡＣ検証をする。その結果、ＭＡＣ検証ＮＧであればＳ３１０に戻り、ＭＡＣ検証ＯＫであればＳ６６０に進む。
【０１００】
Ｓ６６０では、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃmeを、通常メッセージに示されたメッセージカウント値ｒ＿Ｃmeで更新して、Ｓ３１０に戻る。このとき、通常メッセージのＤＡＴＡ領域は、データＰＤＵとして制御部１３に供給される。
【０１０１】
Ｓ６７０では、通常メッセージのＤＡＴＡ領域に示されたデータｒ＿ＰＤＵと鍵保持部１２に保持された共通鍵Ｋと、カウント値保持部１１に保持された通信用カウンタのトリップカウント値Ｃtr、一時保持値Ｃin_tmpに、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeを連結したカウント値ＣＴrとに基づいてＭＡＣを生成する。更に、この生成したＭＡＣと、通常メッセージのＭＡＣ領域に示された値とを比較することでＭＡＣ検証をする。その結果、ＭＡＣ検証ＮＧであればＳ３１０に戻り、ＭＡＣ検証ＯＫであればＳ６８０に進む。
【０１０２】
Ｓ６８０では、カウント値保持部１１に保持された通信用カウンタのインターバルカウント値Ｃinを一時保持値Ｃin_tmpで更新する。これと共に、カウント値保持部１１に保持された通信用カウンタのメッセージカウント値Ｃmeを、通常メッセージのＣＮＴ領域に示されたメッセージカウント値ｒ＿Ｃmeで更新して、Ｓ３１０に戻る。
【０１０３】
［３．３．動作］
本実施形態では、上述した受信処理により、周期メッセージを正常に受信する毎に、周期メッセージに示されたインターバルカウント値ｒ＿Ｃinは、一時保持値Ｃin_tmpとしてカウント値保持部１１に保持される。また、通常メッセージを正常に受信した場合、通信メッセージに示されたメッセージカウント値ｒ＿Ｃmeがカウント値保持部１１に保持されたメッセージカウント値Ｃmeより大きければ、即ち、ｒ＿Ｃme＞Ｃmeであれば、通常メッセージの送信元では、インターバルカウント値Ｃinの更新が行われていないものとして、カウント値保持部１１に保持されたインターバルカウント値Ｃinを用いてＭＡＣ検証を実施する。一方、ｒ＿Ｃme≦Ｃmeであれば、通常メッセージの送信元でインターバルカウント値Ｃinの更新が行われたもとして、カウント保持部１１に保持された一時保持値Ｃin_tmpを用いてＭＡＣ検証を実施する。ＭＡＣ検証ＯＫであれば、一時保持値Ｃin_tmpでインターバルカウント値Ｃinを更新する。
【０１０４】
［３．４．効果］
以上詳述した第３実施形態によれば、前述した第１実施形態の効果と同様の効果に加えて、以下の効果を得ることができる。
【０１０５】
本実施形態では、何らかの理由で、インターバルカウント値Ｃinの更新タイミングが、通信メッセージの受信側より送信側の方が遅れたとしても、受信側では、更新前のインターバルカウント値Ｃinが保持されているため、この値を用いて通信メッセージの検証を行うことができる。逆に、通信メッセージの受信側の方が送信側より遅れた場合、通信メッセージの検証が不成功となるが、その後、周期メッセージの受信によって、通信メッセージの検証を正しく実施することができる状態に直ちに復帰することができる。
【０１０６】
［４．第４実施形態］
［４．１．第１実施形態との相違点］
第４実施形態は、基本的な構成は第１実施形態と同様であるため、相違点について説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【０１０７】
前述した第１実施形態では、管理ＥＣＵ１０ｋが、通常ＥＣＵ１０ｎの機能を備えている。換言すれば、通常ＥＣＵの一つが管理ＥＣＵとしても機能するように構成されている。これに対し、第４実施形態では、管理ＥＣＵは通常ＥＣＵとしての機能を備えない点で第１実施形態と相違する。
【０１０８】
［４．２．全体構成］
通信システム１ａは、車両に搭載され、図１２に示すように、複数のバス上の通信路３と、各通信路３に接続される複数のノード１０と、各通信路３間を相互に接続するゲートウェイ１０ｇとを備える。
【０１０９】
このうち、複数のノード１０は、いずれも第１実施形態において説明した通常ＥＣＵ１０ｎと同様に構成されている。つまり、通信システム１ａは、通信路３が複数ある点、管理ＥＣＵ１０ｋの代わりにゲートウェイ１０ｇを備える点以外は、通信システム１と同様に構成されている。
【０１１０】
［４．３．ゲートウェイ］
ゲートウェイ１０ｇは、カウント値保持部１１ｇ、鍵保持部１２ｇ、メッセージ処理部１４ｇ、通信コントローラ１５ｇ、ゲートウェイ処理部１６ｇを備える。
【０１１１】
鍵保持部１２ｇ、通信コントローラ１５ｇは、第１実施形態で説明した鍵保持部１２ｋ、通信コントローラ１５ｋと同様のものである。
ゲートウェイ処理部１６ｇは、各通信路３を流れるＣＡＮフレームに示されたＣＡＮＩＤを参照して、ＣＡＮフレームの中継を行う周知のものである。
【０１１２】
カウント値保持部１１ｇには、図２（ｂ）に示す管理用カウンタのカウント値を保持するエリアが少なくとも用意されている。
メッセージ処理部１４ｇは、同期処理部１４３を備えている。
【０１１３】
即ち、カウント値保持部１１ｇおよびメッセージ処理部１４ｇは、第１実施形態で説明したカウント値保持部１１ｋおよびメッセージ処理部１４ｋから、通常ＥＣＵ１０ｎとしての機能を削除した構成を有している。
【０１１４】
［４．４．効果］
以上詳述した第４実施形態によれば、前述した第１実施形態の効果と同様の効果を得ることができる。
【０１１５】
［５．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は、上述の実施形態に限定されることなく、種々変形して実施することができる。
【０１１６】
（１）上記実施形態では、ＭＡＣを生成する際に、予め用意された共通鍵Ｋを用いているが、管理用カウンタのカウント値（即ち、Ｃtr，Ｃin）を用いて生成される共通鍵Ｋを用いるようにしてもよい。例えば、トリップカウント値Ｃtrが更新される毎に共通鍵Ｋを生成する場合、管理ＥＣＵ１０ｋは、図５のＳ１２０が実行される毎に共通鍵Ｋを生成し、通信用カウンタを持つ各ＥＣＵ１０は、図７のＳ３３０またはＳ３６０が実行される毎に共通鍵Ｋを生成すればよい。また、インターバルカウント値Ｃinが更新される毎に共通鍵Ｋを生成する場合、管理ＥＣＵ１０ｋは、図５のＳ１６０が実行される毎に共通鍵Ｋを生成し、通信用カウンタを持つ各ＥＣＵは、図７のＳ３８０またはＳ４３０が実行される毎に共通鍵Ｋを生成すればよい。
【０１１７】
（２）上記実施形態では、上位カウント値としてトリップカウント値Ｃtrおよびインターバルカウント値Ｃinを用いているが、上位カウント値の全部または一部に、タイムスタンプを用いるように構成してもよい。この場合、タイムスタンプに用いられる計時カウンタが更新されるタイミングである計時タイミングが上位更新条件となる。また、上位カウント値の配信条件である再同期タイミングは、計時タイミングより長い周期となるように設定すればよい。
【０１１８】
（３）上記実施形態では、通常メッセージのＣＮＴ領域に、メッセージカウント値Ｃmeの全体を載せているが、メッセージカウント値Ｃmeの一部、例えば、下位所定桁だけを載せるように構成してもよい。
【０１１９】
（４）上記実施形態では、管理ノード１０ｋのカウント値保持部１１ｋを不揮発性メモリで構成し、通常ＥＣＵ１０ｎのカウント値保持部１１ｎは、必ずしも不揮発性メモリを用いることなく構成しているが、カウント値保持部１１ｎも、不揮発性メモリで構成してもよい。この場合、例えば、電源の瞬断等があったとしても、カウント値保持部１１ｎに記憶されたカウント値が消去されてしまうことがないため、カウント値の再同期を行うことなく通信を継続することができる。
【０１２０】
（５）第３実施形態では、受信側のインターバルカウント値Ｃinの更新が遅れた場合に、通常メッセージを正しく受信できないが、以下のように構成してもよい。即ち、Ｓ６７０にて否定判定された場合に、インターバルカウント値Ｃinの値を一つ進めた次回値ｐ＿Ｃinを用いてＭＡＣ検証を行う。ＭＡＣ検証ＯＫであれば、周期メッセージを受信するまでの間は、次回値ｐ＿Ｃinを用いて通信メッセージのＭＡＣ検証を行うように構成してもよい。
【０１２１】
（６）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【符号の説明】
【０１２２】
１，１ａ…通信システム、３…通信路、１０…ノード（ＥＣＵ）、１０ｋ…管理ＥＣＵ、１０ｎ…通常ＥＣＵ、１０ｇ…ゲートウェイ、１１…カウント値保持部、１２…鍵保持部、１３…制御部、１４…メッセージ処理部、１５…通信コントローラ、１６…ゲートウェイ処理部、１４１…送信処理部、１４２…受信処理部、１４３…同期処理部
【図１】
2019165473.tif 000003
【図２】
2019165473.tif 000004
【図３】
2019165473.tif 000005
【図４】
2019165473.tif 000006
【図５】
2019165473.tif 000007
【図６】
2019165473.tif 000008
【図７】
2019165473.tif 000009
【図８】
2019165473.tif 000010
【図９】
2019165473.tif 000011
【図１０】
2019165473.tif 000012
【図１１】
2019165473.tif 000013
【図１２】
2019165473.tif 000014