(57)【要約】【課題】送信ノードから通信ネットワークを介してメッセージを受信する受信ノードのメッセージ検査性能を向上させること。【解決手段】送信ノードから通信ネットワークを介してメッセージを受信する受信ノードが、自己が生成したメッセージ認証コードと送信ノードからの受信メッセージから取得したメッセージ認証コードとの一致を、メッセージ認証コードの複数に区分けされた区間を対象に検査し、検査対象の区間の第１の検査の結果が不一致である場合には検査対象の区間を変えて区間の一致を再検査するＭＡＣ検査部１１６を備え、ＭＡＣ検査部１１６は、受信メッセージに対する再検査の結果が一致である場合に、受信メッセージに対する第１の検査又は再検査の複数の結果に基づいて、受信メッセージの検査の合否を判定する。【選択図】図２
2016122932.tif 000002
【特許請求の範囲】
【請求項１】
送信ノードから通信ネットワークを介してメッセージを受信する受信ノードであり、
自己が生成したメッセージ認証コードと前記送信ノードからの受信メッセージから取得したメッセージ認証コードとの一致を、メッセージ認証コードの複数に区分けされた区間を対象に検査し、検査対象の区間の第１の検査の結果が不一致である場合には検査対象の区間を変えて区間の一致を再検査するメッセージ認証コード検査部を備え、
前記メッセージ認証コード検査部は、受信メッセージに対する再検査の結果が一致である場合に、受信メッセージに対する第１の検査又は再検査の複数の結果に基づいて、受信メッセージの検査の合否を判定する、
受信ノード。
【請求項２】
前記メッセージ認証コード検査部は、受信メッセージに対する再検査の結果が一致である場合において、受信メッセージに対する第１の検査又は再検査のいずれかの結果が一致であることが連続するときに受信メッセージの検査の合格を通知する、
請求項１に記載の受信ノード。
【請求項３】
前記メッセージ認証コード検査部は、受信メッセージに対する再検査の結果が一致である場合において、受信メッセージに対する第１の検査又は再検査の複数の結果が一致であるときに受信メッセージの検査の合格を通知する、
請求項１に記載の受信ノード。
【請求項４】
前記メッセージ認証コード検査部は、
受信メッセージの検査の結果の保留がない場合において、受信メッセージに対する第１の検査の結果が一致であるときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査の結果が不一致であって再検査の結果が一致であるときには受信メッセージの検査の結果を保留し、
受信メッセージの検査の結果の保留がある場合において、受信メッセージに対する第１の検査又は再検査の少なくともいずれかの結果が一致であることが連続するときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査及び再検査の両方の結果が不一致であるときには受信メッセージの検査の不合格を通知する、
請求項１に記載の受信ノード。
【請求項５】
前記メッセージ認証コード検査部は、
受信メッセージの検査の結果の保留がない場合において、受信メッセージに対する第１の検査の結果が一致であるときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査の結果が不一致であって再検査の結果が一致であるときには受信メッセージの検査の結果を保留し、
受信メッセージの検査の結果の保留がある場合において、受信メッセージに対する第１の検査又は再検査の複数の結果が一致であるときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査及び再検査の両方の結果が不一致であるときには受信メッセージの検査の不合格を通知する、
請求項１に記載の受信ノード。
【請求項６】
前記送信ノードからの受信メッセージは、メッセージ認証コードの複数に区分けされた区間のうち、前記送信ノードがメッセージの送信毎に所定のカウント値だけ増加させる送信カウンタ値に基づいて特定される区間のみを格納し、
前記受信ノードは、
前記送信ノードからのメッセージの受信毎に前記カウント値だけ増加させる受信カウンタ値を保持する受信カウンタ部を備え、
前記メッセージ認証コード検査部は、第１の検査において、前記送信ノードからの受信メッセージから取得したメッセージ認証コードの区間と、自己が生成したメッセージ認証コードの複数に区分けされた区間のうち前記受信カウンタ値に基づいて特定される区間と、の一致を検査する、
請求項１から５のいずれか１項に記載の受信ノード。
【請求項７】
前記受信カウンタ部は、前記再検査の結果が一致である区間に基づいて、自己が保持する受信カウンタ値を更新する、
請求項６に記載の受信ノード。
【請求項８】
前記送信ノードが保持する秘密情報と同じ秘密情報を記憶する秘密情報記憶部を備え、
前記送信ノードから送信されるメッセージに格納されるメッセージ認証コードの区間の元のメッセージ認証コードは、該送信されるメッセージ中のデータ部に格納される送信データと前記送信カウンタ値と前記秘密情報とに基づいて生成され、
前記メッセージ認証コード検査部は、前記送信ノードからの受信メッセージ中のデータ部から取得した受信データと前記受信カウンタ値と前記秘密情報とに基づいてメッセージ認証コードを生成する、
請求項６又は７のいずれか１項に記載の受信ノード。
【請求項９】
送信ノードから通信ネットワークを介してメッセージを受信する受信ノードのメッセージ検査方法であり、
前記受信ノードが、自己が生成したメッセージ認証コードと前記送信ノードからの受信メッセージから取得したメッセージ認証コードとの一致を、メッセージ認証コードの複数に区分けされた区間を対象に検査し、検査対象の区間の第１の検査の結果が不一致である場合には検査対象の区間を変えて区間の一致を再検査するメッセージ認証コード検査ステップを含み、
前記メッセージ認証コード検査ステップは、受信メッセージに対する再検査の結果が一致である場合に、受信メッセージに対する第１の検査又は再検査の複数の結果に基づいて、受信メッセージの検査の合否を判定する、
メッセージ検査方法。
【請求項１０】
送信ノードから通信ネットワークを介してメッセージを受信する受信ノードのコンピュータに、
前記受信ノードが生成したメッセージ認証コードと前記送信ノードからの受信メッセージから取得したメッセージ認証コードとの一致を、メッセージ認証コードの複数に区分けされた区間を対象に検査し、検査対象の区間の第１の検査の結果が不一致である場合には検査対象の区間を変えて区間の一致を再検査するメッセージ認証コード検査ステップ、を実行させるためのコンピュータプログラムであり、
前記メッセージ認証コード検査ステップは、受信メッセージに対する再検査の結果が一致である場合に、受信メッセージに対する第１の検査又は再検査の複数の結果に基づいて、受信メッセージの検査の合否を判定する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信ノード、メッセージ検査方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来、自動車等の車両に搭載される通信ネットワークの一つとして知られているＣＡＮ（Controller Area Network）が、車両内の各種ＥＣＵ（Electronic Control Unit）間の通信に用いられる。そのＣＡＮにおいてメッセージの認証を可能にする技術として、例えば非特許文献１，２、特許文献１に記載の技術が知られている。
【０００３】
非特許文献１に記載の従来技術では、ＣＡＮに接続された偽のＥＣＵからなりすましメッセージを発信する攻撃に対して、本物のＥＣＵが、自己のＩＤが付与されたなりすましメッセージを検知すると、自己のＩＤを付与した異常を知らせるメッセージを発信することで、受信側ＥＣＵに対して異常を報知している。
【０００４】
非特許文献２に記載の従来技術では、ＣＡＮフレーム中の誤り訂正（Cyclic Redundancy Check：CRC）フィールドに格納する情報をＭＡＣ（Message Authentication Code）に変更している。この従来技術では、送信側は、Ｎ番目からＮ＋３番目までの４つのＣＡＮフレーム中のデータフィールドのデータ（６４×４＝２５６ビット）から６４ビットのＭＡＣを生成し、該ＭＡＣを１６ビットずつに４分割して、Ｎ＋４番目からＮ＋７番目までの４つのＣＡＮフレーム中のＣＲＣフィールド（１６ビット）にそれぞれ格納して各ＣＡＮフレームを送信する。受信側では、Ｎ＋４番目からＮ＋７番目までのＣＡＮフレーム中のＣＲＣフィールドからＭＡＣを取得し、Ｎ番目からＮ＋３番目までのＣＡＮフレーム中のデータフィールドから生成されるＭＡＣと一致するか否かによってＮ番目からＮ＋３番目までのＣＡＮフレームが正当であるか否かを判断する。これにより、ＣＲＣフィールドから得られるＭＡＣと、データフィールドから算出されるＭＡＣとが異なる場合には、Ｎ番目からＮ＋３番目までのＣＡＮフレームのいずれかが不正であると判断できる。
【０００５】
特許文献１に記載の技術では、各ＥＣＵにおいてＣＡＮＩＤごとにメッセージが送信された回数をカウントする。そして、メインメッセージを送信した送信ノードは、メインメッセージのデータフィールドおよびＣＡＮＩＤと、ＣＡＮＩＤに対応するカウンタ値とから生成したＭＡＣを含むＭＡＣメッセージを送信する。メインメッセージを受信した受信ノードは、メインメッセージに含まれるデータフィールドおよびＣＡＮＩＤと、ＣＡＮＩＤに対応するカウンタ値とからＭＡＣを生成して、受信したＭＡＣメッセージに含まれるＭＡＣと一致するかを判断する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１３／０６５６８９号
【非特許文献】
【０００７】
【非特許文献１】畑正人、田邉正人、吉岡克成、大石和臣、松本勉、“不正送信阻止：CANではそれが可能である”、情報処理学会、コンピュータセキュリティシンポジウム（CSS2011）、pp.624-629、2011年10月．
【非特許文献２】AKIRA YOSHIOKA ET AL.: “Kosei Shomei Kino o Motsu Shanai Tsushin Protocol no Teian” SYMPOSIUM ON MULTIMEDIA, DISTRIBUTED, COOPERATIVE AND MOBILE SYSTEMS (DICOM02008) RONBUNSHU vol. 2008, no. 1, 02 July 2008, pages 1270 - 1275
【非特許文献３】RFC 2104 HMAC: Keyed-Hashing for Message Authentication、［２０１４年１２月１９日検索］、インターネット＜ＵＲＬ：http://www.rfc-editor.org/rfc/rfc2104.txt＞
【非特許文献４】RFC 2104 HMAC：メッセージ認証のための鍵付ハッシング、［２０１４年１２月１９日検索］、インターネット＜ＵＲＬ：http://www.ipa.go.jp/security/rfc/RFC2104JA.html＞
【非特許文献５】“Interpreting the CAN data for a 2010 Toyota Camry”、［２０１４年１２月１９日検索］、インターネット＜ＵＲＬ：http://tucrrc.utulsa.edu/ToyotaCAN.html＞
【非特許文献６】竹森敬祐、川端秀明、窪田歩、“ARM＋SIM/UIMによるセキュアブート”、電子情報通信学会、暗号と情報セキュリティシンポジウム（SCIS2014）、1B1-2、2014年1月．
【非特許文献７】Trusted Computing Group、［２０１４年１２月１９日検索］、インターネット＜ＵＲＬ：http://www.trustedcomputinggroup.org/＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上述した非特許文献１に記載の従来技術では、通信を監視する本物のＥＣＵが取り外された場合に異常を報知できない。また、非特許文献２に記載の従来技術では、Ｎ番目からＮ＋３番目までのＣＡＮフレームの正当性を確認するためには、Ｎ＋４番目からＮ＋７番目までのＣＡＮフレームを受信するまで待たなければならないので、ＣＡＮフレームの正当性の確認に毎回時間がかかる。また、特許文献１に記載の従来技術では、メインメッセージとは別にＭＡＣメッセージを送信するので通信量が２倍以上になる。さらに、メインメッセージの認証を行うためには、ＭＡＣメッセージを受信するまで待たなければならないので、メインメッセージの認証に毎回時間がかかる。
【０００９】
本発明は、このような事情を考慮してなされたものであり、送信ノードから通信ネットワークを介してメッセージを受信する受信ノードのメッセージ検査性能を向上させることができる、受信ノード、メッセージ検査方法、及びコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【００１０】
（１）本発明の一態様は、送信ノードから通信ネットワークを介してメッセージを受信する受信ノードであり、自己が生成したメッセージ認証コードと前記送信ノードからの受信メッセージから取得したメッセージ認証コードとの一致を、メッセージ認証コードの複数に区分けされた区間を対象に検査し、検査対象の区間の第１の検査の結果が不一致である場合には検査対象の区間を変えて区間の一致を再検査するメッセージ認証コード検査部を備え、前記メッセージ認証コード検査部は、受信メッセージに対する再検査の結果が一致である場合に、受信メッセージに対する第１の検査又は再検査の複数の結果に基づいて、受信メッセージの検査の合否を判定する、受信ノードである。
（２）本発明の一態様は、上記（１）の受信ノードにおいて、前記メッセージ認証コード検査部は、受信メッセージに対する再検査の結果が一致である場合において、受信メッセージに対する第１の検査又は再検査のいずれかの結果が一致であることが連続するときに受信メッセージの検査の合格を通知する、受信ノードである。
（３）本発明の一態様は、上記（１）の受信ノードにおいて、前記メッセージ認証コード検査部は、受信メッセージに対する再検査の結果が一致である場合において、受信メッセージに対する第１の検査又は再検査の複数の結果が一致であるときに受信メッセージの検査の合格を通知する、受信ノードである。
（４）本発明の一態様は、上記（１）の受信ノードにおいて、前記メッセージ認証コード検査部は、受信メッセージの検査の結果の保留がない場合において、受信メッセージに対する第１の検査の結果が一致であるときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査の結果が不一致であって再検査の結果が一致であるときには受信メッセージの検査の結果を保留し、受信メッセージの検査の結果の保留がある場合において、受信メッセージに対する第１の検査又は再検査の少なくともいずれかの結果が一致であることが連続するときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査及び再検査の両方の結果が不一致であるときには受信メッセージの検査の不合格を通知する、受信ノードである。
（５）本発明の一態様は、上記（１）の受信ノードにおいて、前記メッセージ認証コード検査部は、受信メッセージの検査の結果の保留がない場合において、受信メッセージに対する第１の検査の結果が一致であるときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査の結果が不一致であって再検査の結果が一致であるときには受信メッセージの検査の結果を保留し、受信メッセージの検査の結果の保留がある場合において、受信メッセージに対する第１の検査又は再検査の複数の結果が一致であるときには受信メッセージの検査の合格を通知し、受信メッセージに対する第１の検査及び再検査の両方の結果が不一致であるときには受信メッセージの検査の不合格を通知する、受信ノードである。
（６）本発明の一態様は、上記（１）から（５）のいずれかの受信ノードにおいて、前記送信ノードからの受信メッセージは、メッセージ認証コードの複数に区分けされた区間のうち、前記送信ノードがメッセージの送信毎に所定のカウント値だけ増加させる送信カウンタ値に基づいて特定される区間のみを格納し、前記受信ノードは、前記送信ノードからのメッセージの受信毎に前記カウント値だけ増加させる受信カウンタ値を保持する受信カウンタ部を備え、前記メッセージ認証コード検査部は、第１の検査において、前記送信ノードからの受信メッセージから取得したメッセージ認証コードの区間と、自己が生成したメッセージ認証コードの複数に区分けされた区間のうち前記受信カウンタ値に基づいて特定される区間と、の一致を検査する、受信ノードである。
（７）本発明の一態様は、上記（６）の受信ノードにおいて、前記受信カウンタ部は、前記再検査の結果が一致である区間に基づいて、自己が保持する受信カウンタ値を更新する、受信ノードである。
（８）本発明の一態様は、上記（６）又は（７）のいずれかの受信ノードにおいて、前記送信ノードが保持する秘密情報と同じ秘密情報を記憶する秘密情報記憶部を備え、前記送信ノードから送信されるメッセージに格納されるメッセージ認証コードの区間の元のメッセージ認証コードは、該送信されるメッセージ中のデータ部に格納される送信データと前記送信カウンタ値と前記秘密情報とに基づいて生成され、前記メッセージ認証コード検査部は、前記送信ノードからの受信メッセージ中のデータ部から取得した受信データと前記受信カウンタ値と前記秘密情報とに基づいてメッセージ認証コードを生成する、受信ノードである。
【００１１】
（９）本発明の一態様は、送信ノードから通信ネットワークを介してメッセージを受信する受信ノードのメッセージ検査方法であり、前記受信ノードが、自己が生成したメッセージ認証コードと前記送信ノードからの受信メッセージから取得したメッセージ認証コードとの一致を、メッセージ認証コードの複数に区分けされた区間を対象に検査し、検査対象の区間の第１の検査の結果が不一致である場合には検査対象の区間を変えて区間の一致を再検査するメッセージ認証コード検査ステップを含み、前記メッセージ認証コード検査ステップは、受信メッセージに対する再検査の結果が一致である場合に、受信メッセージに対する第１の検査又は再検査の複数の結果に基づいて、受信メッセージの検査の合否を判定する、メッセージ検査方法である。
【００１２】
（１０）本発明の一態様は、送信ノードから通信ネットワークを介してメッセージを受信する受信ノードのコンピュータに、前記受信ノードが生成したメッセージ認証コードと前記送信ノードからの受信メッセージから取得したメッセージ認証コードとの一致を、メッセージ認証コードの複数に区分けされた区間を対象に検査し、検査対象の区間の第１の検査の結果が不一致である場合には検査対象の区間を変えて区間の一致を再検査するメッセージ認証コード検査ステップ、を実行させるためのコンピュータプログラムであり、前記メッセージ認証コード検査ステップは、受信メッセージに対する再検査の結果が一致である場合に、受信メッセージに対する第１の検査又は再検査の複数の結果に基づいて、受信メッセージの検査の合否を判定する、コンピュータプログラムである。
【発明の効果】
【００１３】
本発明によれば、送信ノードから通信ネットワークを介してメッセージを受信する受信ノードのメッセージ検査性能を向上させることができるという効果が得られる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態に係る通信ネットワークシステム１を示す構成図である。
【図２】本発明の第１実施形態に係るＭＣＵ＿２（ノード）を示す構成図である。
【図３】本発明の第１実施形態に係るデータフレームを示す構成図である。
【図４】本発明の第１実施形態に係るＭＡＣ生成処理を示す説明図である。
【図５】本発明の第１実施形態に係るメッセージ検査方法を示すフローチャートである。
【図６】本発明の第１実施形態に係るメッセージ検査方法を示すフローチャートである。
【図７】本発明の第１実施形態に係るＭＡＣ検査処理（第１の検査）を示す説明図である。
【図８】本発明の第１実施形態に係る再検査処理を示す説明図である。
【図９】本発明の第２実施形態に係る通信ネットワークシステム１を示す構成図である。
【図１０】本発明の第２実施形態に係るブート処理のシーケンスチャートである。
【図１１】本発明の第２実施形態に係る暗号処理のシーケンスチャートである。
【図１２】本発明の第２実施形態に係るＭＡＣ生成処理および検査処理（ＭＡＣ検査処理（第１の検査）、再検査処理）を説明するためのシーケンスチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照し、本発明の実施形態について説明する。
【００１６】
［第１実施形態］
本実施形態では、本発明に係る通信ネットワークシステムの一態様として、車両に搭載される通信ネットワークシステムとしてのＣＡＮを例に挙げて説明する。図１は、本発明の第１実施形態に係る通信ネットワークシステム１を示す構成図である。図１において、通信ネットワークシステム１は、複数のＭＣＵ（Micro Computing Unit）＿２を有する。ＭＣＵ＿２は、ＣＰＵ（Central Processing Unit：中央演算処理装置）及びメモリ等から構成されるものであって、コンピュータの一種である。ＭＣＵ＿２は、自己のＣＰＵがコンピュータプログラムを実行することにより、該コンピュータプログラムに該当する機能を実現する。各ＭＣＵ＿２は、車両内の機器を制御する電子制御ユニット（ＥＣＵ）として利用される。
【００１７】
ＭＣＵ＿２はＣＡＮの通信バス３に接続される。本実施形態では、説明の便宜上、通信ネットワークシステム１は３台のＭＣＵ＿２を有するものとし、該３台のＭＣＵ＿２が通信バス３に接続される。通信バス３は、各ＭＣＵ＿２の間で交換されるメッセージを伝送する。各ＭＣＵ＿２は、通信バス３を介して、相互にメッセージを送受する。ＣＡＮでは、所定のフレーム形式でメッセージの伝送が行われる。ＭＣＵ＿２は、ＣＡＮにおけるノード（通信装置）として機能する。本実施形態では、ＭＣＵ＿２は、メッセージを送信する送信ノードの機能とメッセージを受信する受信ノードの機能とを有する。図１中に示されるように、３台の各ＭＣＵ＿２には、ＣＡＮにおける識別子（ＩＤ）として、ＩＤ１、ＩＤ２、ＩＤ３がそれぞれ付与されている。
【００１８】
図２は、本発明の第１実施形態に係るＭＣＵ＿２（ノード）を示す構成図である。図２において、ＭＣＵ＿２は、送信部１１１と受信部１１２とフレーム受信処理部１１３とＭＡＣ（メッセージ認証コード）生成部１１４とカウンタ部１１５とＭＡＣ（メッセージ認証コード）検査部１１６と秘密情報記憶部１１７とを備える。
【００１９】
送信部１１１は、所定のフレーム形式のメッセージを通信バス３に送信する。受信部１１２は、該所定のフレーム形式のメッセージを通信バス３から受信する。図３は、本発明の第１実施形態に係るデータフレームを示す構成図である。図３のデータフレームにおいて、各フィールド中に示されるカッコ内の数字は、当該フィールドに格納される情報のビット数を示している。図３に示されるデータフレームの構成は、ＣＡＮにおける標準フォーマットのデータフレームの構成に対して、一部限定している。本実施形態では、データフレーム中のデータフィールド（Data Field：データ部）に、メッセージ認証コード（ＭＡＣ）を格納する。ＭＡＣは、データ部内の所定の場所に格納される。図３の例では、ＭＡＣは、データ部内の最後の部分に格納される。図３の例では、ＭＡＣのデータ長は１６ビットである。このため、データ部に格納されるＭＡＣ以外のデータのデータ長の最大値は４８ビットである。図３に示されるデータフレームにおいてデータ部にＭＡＣを格納する点以外は、ＣＡＮにおける標準フォーマットと同じである。以下、図３に示される本実施形態に係るデータフレームのことをＣＡＮフレームと称する。
【００２０】
説明を図２に戻す。
送信部１１１には、ＣＡＮフレームに格納する送信データ等のデータが入力される。送信部１１１は、該入力されたデータをＣＡＮフレーム中の該当部分に格納したＣＡＮフレームを、通信バス３へ送信する。送信データは、図３中のデータフィールド（Data Field：データ部）に格納される。フレーム受信処理部１１３は、受信部１１２により通信バス３から受信されたＣＡＮフレームについての受信処理を実行する。ＭＡＣ生成部１１４は、ＣＡＮフレーム中のデータ部に格納される送信データ等に基づいてＭＡＣを生成する。
【００２１】
カウンタ部１１５は、送信カウンタ部としての機能と、受信カウンタ部としての機能とを有する。カウンタ部１１５は、送信カウンタ部の機能として、送信部１１１によるＣＡＮフレームの送信毎に所定のカウント値だけ増加させる送信カウンタ値を保持する。本実施形態では、該カウント値は１とする。したがって、カウンタ部１１５は、送信部１１１によるＣＡＮフレームの送信毎に１だけ増加させる送信カウンタ値を保持する。この送信カウンタ値は、自己のＭＣＵ＿２（ノード）がＣＡＮフレームを送信する毎に１ずつ増やされる。
【００２２】
カウンタ部１１５は、受信カウンタ部の機能として、受信部１１２によるＣＡＮフレームの受信毎に送信カウンタ部と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する。本実施形態では、該カウント値は１となる。したがって、カウンタ部１１５は、受信部１１２によるＣＡＮフレームの受信毎に１だけ増加させる受信カウンタ値を保持する。この受信カウンタ値は、ＣＡＮフレーム中のＩＤ毎に設けられる。該ＩＤは、ＣＡＮフレームを送信したＭＣＵ＿２（ノード）に付与されているＩＤであり、図３中のＩＤフィールド（ＩＤ部）に格納される。
【００２３】
本実施形態では、３台のＭＣＵ＿２（ＩＤがそれぞれ、ＩＤ１、ＩＤ２、ＩＤ３である）が存在する。このため、図２に示されるように、カウンタ部１１５は、該３台の各ＭＣＵ＿２（各ＩＤであるＩＤ１、ＩＤ２、ＩＤ３）に対応する３つのカウンタ値（ＩＤ１カウンタ値、ＩＤ２カウンタ値、ＩＤ３カウンタ値）を保持する。カウンタ部１１５において、自己のＭＣＵ＿２のＩＤに対応するカウンタ値が送信カウンタ値であり、他のＭＣＵ＿２のＩＤに対応するカウンタ値が受信カウンタ値である。例えば、ＩＤ１のＭＣＵ＿２においては、ＩＤ１カウンタ値が送信カウンタ値であり、ＩＤ２カウンタ値がＩＤ２に対応する受信カウンタ値であり、ＩＤ３カウンタ値がＩＤ３に対応する受信カウンタ値である。
【００２４】
ＭＡＣ検査部１１６は、受信部１１２により通信バス３から受信されたＣＡＮフレームから取得されたＭＡＣについての検査を行う。秘密情報記憶部１１７は、各ＭＣＵ＿２において同じ秘密情報を記憶する。この秘密情報は、ＭＣＵ＿２の製造時などに、安全に、ＭＣＵ＿２に設定される。
【００２５】
次に、本実施形態に係るＭＣＵ＿２（ノード）の動作を説明する。
【００２６】
［送信ノードの動作］
はじめに図４を参照して、ＭＣＵ＿２の送信ノードとしての動作を説明する。図４は、本発明の第１実施形態に係るＭＡＣ生成処理を示す説明図である。図４のＭＡＣ生成処理は、送信部１１１から送信されるＣＡＮフレームを作成する際に開始される。
【００２７】
（ステップＳ１１１）ＭＡＣ生成部１１４は、カウンタ部１１５から送信カウンタ値を取得する。ＭＡＣ生成部１１４は、該取得した送信カウンタ値のビット列（ビット数がＬである）から、所定の抽出ビット数分（Ｌ−ｎビット分）の上位ビットのみを上位抽出ビット（ビット数が「Ｌ−ｎ」である）として取得する。
【００２８】
（ステップＳ１１２）ＭＡＣ生成部１１４は、ＣＡＮフレーム中のデータ部に格納される送信データと、ステップＳ１１１で取得した上位抽出ビットと、秘密情報記憶部１１７に記憶される秘密情報とを使用して、ＭＡＣを生成する。ＭＡＣの生成方法の例１，２を以下に示す。
【００２９】
（ＭＡＣの生成方法の例１）
ＭＡＣとして、ハッシュ（Hash）値を算出する。ハッシュ値の算出方法として、例えば、SHA-256が挙げられる。なお、ハッシュ値の算出方法については、例えば非特許文献３，４に記載されている。
【００３０】
（ＭＡＣの生成方法の例２）
ＭＡＣとして、Code MAC（CMAC）を算出する。ＣＭＡＣは共通鍵暗号ベースのＭＡＣである。
【００３１】
（ステップＳ１１３）ＭＡＣ生成部１１４は、ステップＳ１１２で生成したＭＡＣのビット列（ＭＡＣ値）から、ＣＡＮフレーム中のデータ部に格納するビット列（１６ビット）を抽出する。例えば、ステップＳ１１２で生成したＭＡＣ値が１２８ビット長であり、その１２８ビット長のＭＡＣ値から１６ビット長のビット列を抽出する。抽出されるビット列は、ステップＳ１１１で取得した送信カウンタ値のビット列（ビット数がＬである）のうち上位抽出ビット以外の所定の下位ビット（ビット数がｎである）の値で特定される。図４に示される例では、該下位ビット（ビット数がｎである）の値は「３」である。これにより、ＭＡＣ値のビット列中において、該値「３」で特定される一部分（１６ビット分）を抽出する。
【００３２】
本実施形態では、ＣＡＮフレーム中のデータ部に格納する情報として、ＭＡＣ値のビット列から該値「３」で特定される１６ビット分を抽出する。このため、ＭＡＣ値のビット列に対して１６ビットずつの区間を定め、どの区間の１６ビットをＣＡＮフレーム中のデータ部に格納するのかを、送信カウンタ値の下位ビット（ビット数がｎである）の値で特定する。なお、図４の例では、ＭＡＣ値の総ビット数に応じたＫ個の区間（１区間は１６ビット）が定められる。
【００３３】
送信部１１１は、ＣＡＮフレームに対して、送信データ（ステップＳ１１２でＭＡＣ生成に使用されたもの）と、ステップＳ１１３でＭＡＣ値のビット列中から抽出された１６ビットのビット列とをデータ部に格納する。送信部１１１は、該ＣＡＮフレームを通信バス３へ送信する。カウンタ部１１５は、該ＣＡＮフレームの送信により送信カウンタ値を１だけ増加させて保持する。
【００３４】
以上が送信ノードの動作の説明である。
【００３５】
［受信ノードの動作］
次に図５、図６、図７、図８を参照して、ＭＣＵ＿２の受信ノードとしての動作を説明する。図５及び図６は、本発明の第１実施形態に係るメッセージ検査方法を示すフローチャートである。図７は、本発明の第１実施形態に係るＭＡＣ検査処理（第１の検査）を示す説明図である。図８は、本発明の第１実施形態に係る再検査処理を示す説明図である。以下、図５及び図６のフローチャートの手順に沿って説明する。図５及び図６の処理は、受信部１１２によりＣＡＮフレームを受信した際に開始される。
【００３６】
（ステップＳ２０１）ＭＡＣ検査部１１６は、受信部１１２により受信したＣＡＮフレーム（以下、受信フレームと称する）のＩＤ部に格納されているＩＤ（以下、受信ＩＤと称する）に対応する保留フラグがオンであるかを確認する。保留フラグは、送信ノードのＩＤ毎に設けられる。本実施形態では、送信ノードに対応するＭＣＵ＿２のＩＤ毎に、保留フラグがある。例えば、ＩＤ１のＭＣＵ＿２のＭＡＣ検査部１１６は、送信ノードとしてのＩＤ２のＭＣＵ＿２に対応するＩＤ２の保留フラグと、送信ノードとしてのＩＤ３のＭＣＵ＿２に対応するＩＤ３の保留フラグと、を備える。
【００３７】
あるＩＤの保留フラグは、当該ＩＤを持つ受信フレームの検査の結果の保留の有無を示す。あるＩＤの保留フラグがオンである場合、当該ＩＤを持つ受信フレームの検査の結果の保留があることを示す。あるＩＤの保留フラグがオフである場合、当該ＩＤを持つ受信フレームの検査の結果の保留がないことを示す。例えば、ＩＤ２の保留フラグがオンである場合、ＩＤ２を持つ受信フレームの検査の結果の保留があることを示す。ＩＤ２の保留フラグがオフである場合、ＩＤ２を持つ受信フレームの検査の結果の保留がないことを示す。
【００３８】
ステップＳ２０１の確認の結果、受信フレームの受信ＩＤの保留フラグがオンである場合には図６のステップＳ２１１に進み、該保留フラグがオフである場合にはステップＳ２０２に進む。
【００３９】
（ステップＳ２０２）ＭＡＣ検査部１１６は、ＭＡＣ検査処理（第１の検査）を実行する。
【００４０】
ここで、図７を参照して、本実施形態に係るＭＡＣ検査処理（第１の検査）を説明する。
【００４１】
（ステップＳ１２１）ＭＡＣ検査部１１６は、受信フレームの受信ＩＤに対応する受信カウンタ値を、カウンタ部１１５から取得する。ＭＡＣ検査部１１６は、該取得した受信カウンタ値のビット列（ビット数がＬである）から、所定の抽出ビット数分（Ｌ−ｎビット分）の上位ビットのみを上位抽出ビット（ビット数が「Ｌ−ｎ」である）として取得する。この上位抽出ビットの取得方法は、上述したＭＡＣ生成部１１４の処理（ステップＳ１１１）と同じである。
【００４２】
（ステップＳ１２２）ＭＡＣ検査部１１６は、受信フレーム中のデータ部から受信データを取得する。受信データは、受信フレームのデータ部に格納されるデータのうち、ＭＡＣ以外のデータである。ＭＡＣ検査部１１６は、受信データと、ステップＳ１２１で取得した上位抽出ビットと、秘密情報記憶部１１７に記憶される秘密情報とを使用して、ＭＡＣを生成する。このＭＡＣの値（算出ＭＡＣ値）は、上述したＭＡＣ生成部１１４と同じ算出方法（ステップＳ１１２と同じ算出方法）で算出される。
【００４３】
（ステップＳ１２３）ＭＡＣ検査部１１６は、ステップＳ１２２で生成したＭＡＣのビット列（算出ＭＡＣ値）から、検査の対象にする検査対象ビット列（１６ビット）を抽出する。この検査対象ビット列の抽出方法は、上述したＭＡＣ生成部１１４での、ＣＡＮフレーム中のデータ部に格納するビット列（１６ビット）の抽出方法（ステップＳ１１３）と同様である。つまり、該検査対象ビット列は、算出ＭＡＣ値のビット列のうち、ステップＳ１２１で取得した受信カウンタ値のビット列（ビット数がＬである）のうち上位抽出ビット以外の所定の下位ビット（ビット数がｎである）の値で特定される一部分（１６ビット分）である。図７に示される例では、該下位ビット（ビット数がｎである）の値は「３」である。これにより、算出ＭＡＣ値のビット列中において、該値「３」で特定される一部分（１６ビット分）を抽出する。
【００４４】
本実施形態では、ＣＡＮフレーム中のデータ部に格納されているＭＡＣ（１６ビット）と、算出ＭＡＣ値のビット列から抽出された検査対象ビット列（１６ビット）との一致を検査する。このため、上述したＭＡＣ生成処理と同様に、算出ＭＡＣ値のビット列に対して１６ビットずつの区間を定め、どの区間の１６ビットを検査対象ビット列とするのかを、受信カウンタ値の下位ビット（ビット数がｎである）の値で特定している。なお、図７の例では、算出ＭＡＣ値の総ビット数に応じたＫ個の区間（１区間は１６ビット）が定められる。
【００４５】
ＭＡＣ検査部１１６は、受信フレーム中のデータ部から取得したＭＡＣ値（受信ＭＡＣ値（１６ビット））と、算出ＭＡＣ値のビット列から抽出された検査対象ビット列（１６ビット）とが一致するか否かを判定する。
【００４６】
以上がＭＡＣ検査処理（第１の検査）の説明である。
【００４７】
説明を図５に戻す。
（ステップＳ２０３）ＭＡＣ検査部１１６は、ステップＳ２０２のＭＡＣ検査処理（第１の検査）の結果、受信ＭＡＣ値と検査対象ビット列とが一致である場合には、受信フレームの検査が合格であると判定する。この後、ステップＳ２０４へ進む。一方、ＭＡＣ検査部１１６は、ステップＳ２０２のＭＡＣ検査処理（第１の検査）の結果、受信ＭＡＣ値と検査対象ビット列とが不一致である場合には、ステップＳ２０５へ進む。
【００４８】
（ステップＳ２０４）ＭＡＣ検査部１１６は、フレーム受信処理部１１３に対して、受信フレームの検査の合格を通知する。これにより、フレーム受信処理部１１３は、受信フレームに対して、正常に受信したＣＡＮフレームに対する所定の受信処理を実行する。また、ＭＡＣ検査部１１６は、カウンタ部１１５に対して、受信フレームの検査の合格を通知する。これにより、カウンタ部１１５は、該当する受信カウンタ値を１だけ増加させて保持する。このカウント対象の受信カウンタ値は、受信フレームの受信ＩＤに対応する受信カウンタ値である。ステップＳ２０４の後、図５及び図６の処理を終了する。
【００４９】
（ステップＳ２０５）ＭＡＣ検査部１１６は、再検査処理を実行する。
【００５０】
ここで、図８を参照して、本実施形態に係る再検査処理を説明する。
【００５１】
（ステップＳ１３１）ＭＡＣ検査部１１６は、受信フレームについてのＭＡＣ検査処理（第１の検査）のステップＳ１２２で生成した算出ＭＡＣ値のビット列から、再検査の対象にする再検査対象ビット列（１６ビット）を抽出する。この再検査対象ビット列の抽出処理は、上述した検査対象ビット列の抽出処理と同様であるが、受信フレームについてのＭＡＣ検査処理（第１の検査）のステップＳ１２１で取得した受信カウンタ値を増加させた値（増加受信カウンタ値）を使用する。具体的には、まず、ステップＳ１２１で取得した受信カウンタ値に１を加える。そして、算出ＭＡＣ値のビット列のうち、該受信カウンタ値に１を加算した値である増加受信カウンタ値のビット列における下位ビット（ビット数がｎである）の値で特定される一部分（１６ビット分）を、再検査対象ビット列として抽出する。
【００５２】
ＭＡＣ検査部１１６は、該抽出した再検査対象ビット列と受信ＭＡＣ値との一致を判定する。この判定の結果が不一致である場合には、現在の増加受信カウンタ値に対してさらに１を加算した値を新たな増加受信カウンタ値とする。そして、算出ＭＡＣ値のビット列のうち、該新たな増加受信カウンタ値のビット列における下位ビット（ビット数がｎである）の値で特定される一部分（１６ビット分）を、新たな再検査対象ビット列として抽出する。そして、該抽出された新たな再検査対象ビット列と受信ＭＡＣ値との一致を判定する。この再検査は、判定の結果が一致となるまで繰り返される。但し、算出ＭＡＣ値のビット列の端の区間（下位ビットの値「Ｋ−１」で特定される区間）までで当該再検査は終了とする。この理由は、下位ビットの値が桁上げされて、算出ＭＡＣ値の生成に使用される上位抽出ビットの値が変わるからである。
【００５３】
なお、算出ＭＡＣ値のビット列のうち、下位ビットの値「Ｋ−１」で特定される区間まで検査を行っても、受信ＭＡＣ値と一致とならない場合には、下位ビットの値の桁上げ後の上位抽出ビットを使用して算出ＭＡＣ値を再計算し、該再計算した新たな算出ＭＡＣ値を使用して、上述した再検査と同様に、受信ＭＡＣ値との一致の判定を繰り返し行ってもよい。この場合、ＭＡＣ検査部１１６は、所定回数だけ再検査を繰り返しても、再検査対象ビット列と受信ＭＡＣ値とが不一致である場合には、再検査処理を終了する。該所定回数として、例えば、１２８ビット長の元のＭＡＣの８個に区分けされた各１６ビット長の区間に対して、区間数分の８回としたり、又は、区間数分の倍の１６回としたりすることが挙げられる。
【００５４】
（ステップＳ１３２）ＭＡＣ検査部１１６は、ステップＳ１３１の再検査の結果、再検査対象ビット列と受信ＭＡＣ値とが一致した場合に、カウンタ部１１５に対して、当該再検査対象ビット列に係る下位ビットの値を通知してカウンタ同期を指示する。カウンタ部１１５は、該カウンタ同期の指示により、該当する受信カウンタ値の下位ビット（ビット数がｎである）の値を、通知された下位ビットの値に変更する。このカウンタ同期対象の受信カウンタ値は、受信フレームの受信ＩＤに対応する受信カウンタ値である。これにより、当該ＩＤに対応する送信ノードの送信カウンタ値と、本受信ノードの当該ＩＤに対応する受信カウンタ値との同期が取られることになる。
【００５５】
図８に示される例では、ステップＳ１２１で取得した受信カウンタ値における下位ビット（ビット数がｎである）の値は「３」である。この値「３」で特定された検査対象ビット列では受信ＭＡＣ値と不一致であった。このため、ステップＳ１２１で取得した受信カウンタ値に１を加算した増加受信カウンタ値のビット列における下位ビット（ビット数がｎである）の値「４」で特定される部分を再検査対象ビット列として、受信ＭＡＣ値との一致を判定する。図８の例では、該値「４」で特定された再検査対象ビット列でも、受信ＭＡＣ値と不一致であった。このため、現在の増加受信カウンタ値に１を加算した新たな増加受信カウンタ値のビット列における下位ビット（ビット数がｎである）の値「５」で特定される部分を再検査対象ビット列として、受信ＭＡＣ値との一致を判定する。図８の例では、該値「５」で特定された再検査対象ビット列では、受信ＭＡＣ値と一致であった。これにより、カウンタ部１１５において該当する受信カウンタ値の下位ビット（ビット数がｎである）の値が「３」から「５」に変更される。
【００５６】
以上が再検査処理の説明である。
【００５７】
説明を図５に戻す。
（ステップＳ２０６）ＭＡＣ検査部１１６は、ステップＳ２０５の再検査処理の結果、再検査対象ビット列と受信ＭＡＣ値とが一致した場合には、ステップＳ２０８へ進む。一方、ＭＡＣ検査部１１６は、ステップＳ２０５の再検査処理の結果、再検査対象ビット列と受信ＭＡＣ値とが不一致のまま再検査処理を終了した場合には、ステップＳ２０７へ進む。
【００５８】
（ステップＳ２０７）ＭＡＣ検査部１１６は、フレーム受信処理部１１３に対して、受信フレームの検査の不合格を通知する。これにより、フレーム受信処理部１１３は、受信フレームを破棄する。これは、通信エラーや、なりすましメッセージを発信する攻撃が発生したと考えられるからである。なお、受信フレームの検査が不合格である場合、ＭＡＣ検査部１１６は、カウンタ部１１５に対して、受信フレームの検査の合格を通知しない。これにより、カウンタ部１１５は、受信フレームの受信ＩＤに対応する受信カウンタ値に対して、受信カウンタ値の増加を行わない。ステップＳ２０７の後、図５及び図６の処理を終了する。
【００５９】
（ステップＳ２０８）ＭＡＣ検査部１１６は、受信フレームの受信ＩＤの連続合格個数を１にして記録する。
【００６０】
（ステップＳ２０９）ＭＡＣ検査部１１６は、受信フレームの受信ＩＤの保留フラグをオンにする。ステップＳ２０９の後、図５及び図６の処理を終了する。
【００６１】
上記ステップＳ２０１の確認の結果、受信フレームの受信ＩＤの保留フラグがオンである場合には、図６のステップＳ２１１〜Ｓ２１９の処理が実行される。
【００６２】
（ステップＳ２１１）ＭＡＣ検査部１１６は、ＭＡＣ検査処理（第１の検査）を実行する。このＭＡＣ検査処理（第１の検査）は、図７を参照して上述したＭＡＣ検査処理（第１の検査）と同じである。
【００６３】
（ステップＳ２１２）ＭＡＣ検査部１１６は、ステップＳ２１１のＭＡＣ検査処理（第１の検査）の結果、受信ＭＡＣ値と検査対象ビット列とが一致である場合には、ステップＳ２１６へ進む。一方、ＭＡＣ検査部１１６は、ステップＳ２１１のＭＡＣ検査処理（第１の検査）の結果、受信ＭＡＣ値と検査対象ビット列とが不一致である場合には、ステップＳ２１３へ進む。
【００６４】
（ステップＳ２１３）ＭＡＣ検査部１１６は、再検査処理を実行する。この再検査処理は、図８を参照して上述した再検査処理と同じである。
【００６５】
（ステップＳ２１４）ＭＡＣ検査部１１６は、ステップＳ２１３の再検査処理の結果、再検査対象ビット列と受信ＭＡＣ値とが一致した場合には、ステップＳ２１６へ進む。一方、ＭＡＣ検査部１１６は、ステップＳ２１３の再検査処理の結果、再検査対象ビット列と受信ＭＡＣ値とが不一致のまま再検査処理を終了した場合には、ステップＳ２１５へ進む。
【００６６】
（ステップＳ２１５）ＭＡＣ検査部１１６は、フレーム受信処理部１１３に対して、受信フレームの検査の不合格を通知する。この後、ステップＳ２１９へ進む。ＭＡＣ検査部１１６から受信フレームの検査の不合格が通知されたフレーム受信処理部１１３は、受信フレームを破棄する。これは、通信エラーや、なりすましメッセージを発信する攻撃が発生したと考えられるからである。なお、受信フレームの検査が不合格である場合、ＭＡＣ検査部１１６は、カウンタ部１１５に対して、受信フレームの検査の合格を通知しない。これにより、カウンタ部１１５は、受信フレームの受信ＩＤに対応する受信カウンタ値に対して、受信カウンタ値の増加を行わない。
【００６７】
（ステップＳ２１６）ＭＡＣ検査部１１６は、受信フレームの受信ＩＤの連続合格個数に関して、現在記録される連続合格個数に１を加算して記録を更新する。
【００６８】
（ステップＳ２１７）ＭＡＣ検査部１１６は、受信フレームの受信ＩＤの連続合格個数に関して、現在記録される連続合格個数が所定値Ｎであるかを確認する。但し、Ｎは２以上の整数である。所定値Ｎは予めＭＡＣ検査部１１６に保持される。現在記録される連続合格個数が所定値Ｎであることは、受信フレームの受信ＩＤについての第１の検査又は再検査のいずれかの結果が一致であることがＮ回連続したことを示す。
【００６９】
例えば、Ｎが２である場合を説明する。まず、受信フレームの受信ＩＤの保留フラグがオフであって当該ＩＤを持つ受信フレームの検査の結果の保留がない状態において、ステップＳ２０２でのＭＡＣ検査処理（第１の検査）の結果が不一致であってステップＳ２０５の再検査処理の結果が一致したことにより、受信フレームの受信ＩＤの連続合格個数に１が記録され、当該ＩＤの保留フラグがオンになり、当該ＩＤを持つ受信フレームの検査の結果の保留がある状態となる。次に同じＩＤのＣＡＮフレームが受信された時に、受信フレームの受信ＩＤの保留フラグがオンであって当該ＩＤを持つ受信フレームの検査の結果の保留がある状態において、ステップＳ２１１でのＭＡＣ検査処理（第１の検査）又はステップＳ２１３での再検査処理のいずれかの結果が一致したことにより、受信フレームの受信ＩＤの連続合格個数の現在の記録値「１」に１が加算されて「２」が記録される。これにより、ステップＳ２１７において、受信フレームの受信ＩＤの連続合格個数の現在の記録値「２」がＮであることが確認される。この例では、受信フレームの検査の結果の保留がない状態において実行された再検査処理の結果が一致であり、次の同じＩＤのＣＡＮフレームが受信された時に受信フレームの検査の結果の保留がある状態において実行されたＭＡＣ検査処理（第１の検査）又は再検査処理のいずれかの結果が一致であることにより、受信フレームの受信ＩＤについての第１の検査又は再検査のいずれかの結果が一致であることが２回連続したとなる。
【００７０】
ステップＳ２１７の確認の結果、連続合格個数が所定値Ｎである場合にはステップＳ２１８に進み、そうではない場合には図５及び図６の処理を終了する。
【００７１】
（ステップＳ２１８）ＭＡＣ検査部１１６は、フレーム受信処理部１１３に対して、受信フレームの検査の合格を通知する。これにより、フレーム受信処理部１１３は、受信フレームに対して、正常に受信したＣＡＮフレームに対する所定の受信処理を実行する。このとき、ＭＡＣ検査部１１６から受信フレームの検査の合格が通知されたＩＤを持つ受信フレームであって受信フレームの検査の結果が保留された受信フレームの全てに対して、正常に受信したＣＡＮフレームに対する所定の受信処理を実行してもよい。又は、ＭＡＣ検査部１１６から受信フレームの検査の合格が通知されたＩＤを持つ最新の受信フレームのみに対して、正常に受信したＣＡＮフレームに対する所定の受信処理を実行してもよい。
【００７２】
また、ＭＡＣ検査部１１６は、カウンタ部１１５に対して、受信フレームの検査の合格を通知する。これにより、カウンタ部１１５は、該当する受信カウンタ値を１だけ増加させて保持する。このカウント対象の受信カウンタ値は、受信フレームの受信ＩＤに対応する受信カウンタ値である。
【００７３】
（ステップＳ２１９）ＭＡＣ検査部１１６は、受信フレームの受信ＩＤの保留フラグをオフにする。ステップＳ２１９の後、図５及び図６の処理を終了する。
【００７４】
なお、受信ノードは、同一ＩＤのＣＡＮフレームにおいて、同じＭＡＣ値を有するＣＡＮフレームを２回以上連続して受信した場合には、リプレイ攻撃が発生したと判断してもよい。この場合、当該ＩＤのＣＡＮフレームについては、メッセージ検査処理を行わないようにする対処が挙げられる。
【００７５】
以上が受信ノードの動作の説明である。
【００７６】
本実施形態によれば、送信ノードから送信されるＣＡＮフレームには、当該ＣＡＮフレームのデータ部に格納される送信データを使用して生成されたＭＡＣがデータ部に格納される。そして、受信ノードでは、受信したＣＡＮフレームのデータ部から取得した受信データを使用して生成したＭＡＣと、当該ＣＡＮフレームのデータ部から取得したＭＡＣとを使用して、当該ＣＡＮフレームの検査を行う。これにより、送信ノードから、送信データのＣＡＮフレームとは別にＭＡＣのＣＡＮフレームを送信する必要がないので、ＭＡＣのＣＡＮフレームによりＣＡＮの通信帯域が圧迫される問題を解消できる。
【００７７】
また、受信フレームの検査の結果の保留がない場合において、受信フレームのＭＡＣ検査処理（第１の検査）の結果が一致となった場合には、当該受信フレームの検査の合格を通知するので、当該受信フレームに対する検査の即時性を実現できる。
【００７８】
一方、受信フレームの検査の結果の保留がない場合において、受信フレームのＭＡＣ検査処理（第１の検査）の結果が不一致であって再検査の結果が一致であるときには受信フレームの検査の結果を保留する。そして、受信フレームの検査の結果の保留がある場合において、受信フレームに対するＭＡＣ検査処理（第１の検査）又は再検査の少なくともいずれかの結果が一致であることが連続するときに受信フレームの検査の合格を通知し、受信フレームに対するＭＡＣ検査処理（第１の検査）及び再検査の両方の結果が不一致であるときには受信フレームの検査の不合格を通知する。これにより、受信フレームに対する検査の信頼性を向上させることができる。
【００７９】
本実施形態では、例えば１２８ビット長の元のＭＡＣの一部（１６ビット）のみの一致を検査するので、１２８ビット長の元のＭＡＣの一致を検査する場合に比して検査の精度が低下する。例えば、１２８ビット長の元のＭＡＣの８個に区分けされた各１６ビット長の区間の中に、偶然に一致する複数の区間が発生する可能性がある。このため、再検査によって一致した結果が必ずしも正しいとは言えない。しかし、本実施形態によれば、受信フレームに対する再検査の結果が一致である場合において、受信フレームに対するＭＡＣ検査処理（第１の検査）又は再検査のいずれかの結果が一致であることが連続するときに受信フレームの検査の合格を通知する。これにより、上述のように偶然の一致によって検査を合格としてしまう確率を下げることができるので、受信フレームに対する検査の信頼性を向上させることができる。
【００８０】
上述したステップＳ２１７で使用される所定値Ｎは、ＣＡＮフレームに対する即時の判断の必要性などに応じて決定してもよい。また、該所定値Ｎは、ＩＤ毎に設けてもよい。例えば、ＩＤ２のＭＣＵ＿２が送信するＣＡＮフレームのデータ部に格納される送信データは、受信するＭＣＵ＿２にとって即時に判断する必要性が高いとする。この場合、ＩＤ２の所定値Ｎは比較的小さい値にすることが挙げられる。例えば、ＩＤ３のＭＣＵ＿２が送信するＣＡＮフレームのデータ部に格納される送信データは、受信するＭＣＵ＿２にとって即時に判断する必要性よりも信頼性の方が高いとする。この場合、ＩＤ３の所定値Ｎは比較的大きい値にすることが挙げられる。
【００８１】
なお、受信フレームに対する再検査の結果が一致である場合において、受信フレームに対するＭＡＣ検査処理（第１の検査）又は再検査の複数の結果が一致であるときに受信フレームの検査の合格を通知するようにしてもよい。例えば、同じＩＤを有するＰ個の受信フレームのうち、Ｑ個の受信フレームに対するＭＡＣ検査処理（第１の検査）又は再検査の複数の結果が一致であるときに受信フレームの検査の合格を通知する。但し、「２≦Ｑ≦Ｐ」である。これにより、上述のように偶然の一致によって検査を合格としてしまう確率を下げることができるので、受信フレームに対する検査の信頼性を向上させることができる。Ｑ及びＰの値は、上述した所定値Ｎと同様に、ＣＡＮフレームに対する即時の判断の必要性などに応じて決定してもよい。また、Ｑ及びＰの値はＩＤ毎に設けてもよい。Ｑ及びＰの値は予め決定されてＭＡＣ検査部１１６に保持される。
【００８２】
また、受信フレームの検査の結果の保留がある場合において、受信フレームに対するＭＡＣ検査処理（第１の検査）又は再検査の複数の結果が一致であるときには受信フレームの検査の合格を通知し、受信フレームに対するＭＡＣ検査処理（第１の検査）及び再検査の両方の結果が不一致であるときには受信フレームの検査の不合格を通知するようにしてもよい。これにより、受信フレームに対する検査の信頼性を向上させることができる。
【００８３】
また、送信ノードと受信ノードとで同じ秘密情報を使用してＭＡＣが生成されるので、該秘密情報を有さない送信ノードが生成したＭＡＣではＣＡＮフレームの検査が不合格となる。これにより、ＣＡＮフレームの検査に対する信頼性が向上する。
【００８４】
また、生成されたＭＡＣのビット列のうち、送信カウンタ値の下位ビットで特定される区間をＣＡＮフレームに格納することにより、送信されるＣＡＮフレーム毎に格納されているＭＡＣ値が異なる。これにより、同じＣＡＮフレームを繰り返し送信するリプレイ攻撃を容易に検出できる。また、送信ノードではＣＡＮフレーム中のデータ部の送信データを使用してＭＡＣを生成するので、受信ノードで送信データの改竄を検出できる。
【００８５】
また、本実施形態では、ＭＡＣの生成にはカウンタ値の上位抽出ビットを使用し、カウンタ値の上位抽出ビット以外の下位ビットによって、該ＭＡＣのどの部分をデータ部に格納するのかを決める。このため、ＭＡＣの再検査において、該下位ビットの桁上げが発生するまでは、ＭＡＣの再計算を行う必要がなく、同じＭＡＣの中から再検査対象ビット列を変えながら再検査を繰り返し行うことができる。これにより、検査時の演算量を低減でき、検査時間の短縮に寄与できる。
【００８６】
また、本実施形態によれば、ＣＡＮの既存のフレーム形式に対する変更が少ないという効果も得られる。
【００８７】
なお、ＣＡＮフレームのデータ部に格納するＭＡＣのデータ長は、データ部の空きの状況に応じて決定してもよい。例えば非特許文献５には、ある車種のＣＡＮフレームのデータ部に格納される送信データのデータ長（Data Length）の観測値の例が示される。この例によれば、多くのＣＡＮフレームは、データ部に格納可能な６４ビットの全てを送信データに利用している。この場合、データ部に格納するＭＡＣが例えば８ビット長でも１６ビット長でもデータ部にＭＡＣを格納することによって、１個のＣＡＮフレームで送信していた送信データを分割して２個のＣＡＮフレームで送信することになる。該送信データを分割して２個のＣＡＮフレームで送信するのであれば、３２ビット長のＭＡＣをデータ部に格納しても、２個のＣＡＮフレームで送信可能である。他方、送信データが４８ビット長である場合もあるので、４８ビット長の送信データを１個のＣＡＮフレームで送信することを勘案すると、データ部に格納するＭＡＣのデータ長は、１６ビット長であることも好ましい。
【００８８】
また、上述した実施形態では、ＣＡＮフレーム中のデータ部（データフィールド）にＭＡＣを格納したが、他のフィールドに格納するようにしてもよい。例えば、ＣＲＣ部に格納することが挙げられる。
【００８９】
［第２実施形態］
図９は、本発明の第２実施形態に係る通信ネットワークシステム１を示す構成図である。図９に示される通信ネットワークシステム１は車両に搭載される。図９に示される通信ネットワークシステム１において、ＣＡＮの通信バス３には、複数のＭＣＵ＿２−ａ，２−ｂが接続されている。第２実施形態においても、上述した第１実施形態と同様に、説明の便宜上、３台のＭＣＵ＿２−ａ，２−ｂが通信バス３に接続されているとする。図９中に示されるように、３台の各ＭＣＵ＿２−ａ，２−ｂには、ＣＡＮにおける識別子（ＩＤ）として、ＭＣＵ＿２−ａにはＩＤ１が付与され、各ＭＣＵ＿２−ｂにはＩＤ２、ＩＤ３がそれぞれ付与されている。また、本実施形態においても、上述の図３に示される構成のＣＡＮフレームを使用する。
【００９０】
ＭＣＵ＿２−ａは、通信バス３に接続されるＭＣＵ＿２−ｂを認証する処理においてマスタとして動作する。以下、ＭＣＵ＿２−ａのことを「マスタＭＣＵ＿２−ａ」と称する。また、ＭＣＵ＿２−ｂのことを「エンドＭＣＵ＿２−ｂ」と称する。また、ＭＣＵ＿２−ａ，２−ｂを特に区別しないときは「ＭＣＵ＿２」と称する。
【００９１】
次に、図９を参照して、マスタＭＣＵ＿２−ａとエンドＭＣＵ＿２−ｂの構成を説明する。マスタＭＣＵ＿２−ａとエンドＭＣＵ＿２−ｂとは同様の構成であるので、以下、ＭＣＵ＿２として、マスタＭＣＵ＿２−ａとエンドＭＣＵ＿２−ｂの構成を説明する。
【００９２】
ＭＣＵ＿２は、ＣＰＵ＿１０と、フラッシュメモリ（flash memory）１１と、ＲＡＭ（ランダムアクセスメモリ）＿１２と、ブートローダ（boot loader）１３と、セキュアエレメント（secure element）１４を有する。セキュアエレメント１４は、セキュアＲＡＭ＿２１と、セキュアＲＯＭ（Read Only Memory：リードオンリメモリ）＿２２と、検証部２３と、暗号処理部２４を有する。
【００９３】
ＣＰＵ＿１０は、コンピュータプログラムを実行することにより、車両内の機器を制御するＥＣＵとしての機能およびＣＡＮにおけるノードとしての機能を実現する。フラッシュメモリ１１は、ＣＰＵ＿１０で実行されるコンピュータプログラムと該コンピュータプログラムについての署名とを記憶する。ＲＡＭ＿１２はデータを記憶する。ＲＡＭ＿１２は、ＣＰＵ＿１０がコンピュータプログラムを実行する際の実行領域となる。
【００９４】
ブートローダ１３は、ＭＣＵ＿２の電源投入によりブート処理を行う。ブートローダ１３は、該ブート処理の内容を変更できないようにＲＯＭ化されている。
【００９５】
セキュアエレメント１４は、セキュアエレメント１４内部で保持されるデータに対してセキュアエレメント１４外部からアクセスできない安全な要素として構成される。セキュアＲＡＭ＿２１は、セキュアエレメント１４内部で保持されるデータの一時記憶領域である。セキュアＲＡＭ＿２１に対してセキュアエレメント１４外部からはアクセスできないように構成される。セキュアＲＯＭ＿２２は、セキュアエレメント１４内部で使用される鍵を記憶する。セキュアＲＯＭ＿２２に対してセキュアエレメント１４外部からはアクセスできないように構成される。セキュアＲＯＭ＿２２には、ＭＣＵ＿２の製造時などに、予め安全に鍵が書き込まれる。
【００９６】
検証部２３は、ブートローダ１３によるブート処理におけるプログラム正当性検証処理を、セキュアＲＯＭ＿２２に保持される署名検証鍵を使用して行う。検証部２３は、該プログラム正当性検証処理において、セキュアＲＡＭ＿２１を一時記憶領域として使用する。
【００９７】
暗号処理部２４は、自己のＭＣＵ＿２と他のＭＣＵ＿２との間で交換される情報についての暗号処理を、セキュアＲＯＭ＿２２に保持される暗号鍵を使用して行う。該暗号処理は、暗号化処理または復号化処理である。暗号処理部２４は、該暗号処理において、セキュアＲＡＭ＿２１を一時記憶領域として使用する。
【００９８】
次に、図１０を参照して、本実施形態に係るブート処理を説明する。図１０は、本実施形態に係るブート処理のシーケンスチャートである。ＭＣＵ＿２の電源投入により図１０の処理が開始される。
【００９９】
（ステップＳ１）ブートローダ１３が、フラッシュメモリ１１からコンピュータプログラムと署名とを読み込む。次いで、ブートローダ１３が、該読み込んだコンピュータプログラムのハッシュ（hash）値を算出する。
【０１００】
（ステップＳ２）ブートローダ１３が、該算出したハッシュ値と、フラッシュメモリ１１から読み込んだ署名とをセキュアエレメント１４へ送信する。
【０１０１】
（ステップＳ３）セキュアエレメント１４において検証部２３が、セキュアＲＯＭ＿２２に保持される署名検証鍵を使用して、ブートローダ１３から受信した署名に含まれる値とブートローダ１３から受信したハッシュ値との一致を検証する。この検証処理では、セキュアＲＡＭ＿２１が、検証処理におけるデータの一時記憶領域として使用される。該検証が成功した場合には、セキュアエレメント１４はブートローダ１３へ検証成功を通知する。
【０１０２】
（ステップＳ４）ブートローダ１３は、セキュアエレメント１４から検証成功の通知を受信した場合に、ステップＳ１でフラッシュメモリ１１から読み込んだコンピュータプログラムをＲＡＭ＿１２へロードする。これにより、ＣＰＵ＿１０はＲＡＭ＿１２にロードされたコンピュータプログラムを実行することができる。
【０１０３】
一方、ブートローダ１３は、セキュアエレメント１４からの検証成功の通知がない場合には（例えば、ステップＳ２の送信後から所定時間が経過してもセキュアエレメント１４から検証成功の通知を受信しなかったり、セキュアエレメント１４から検証失敗の通知を受信したりした場合）、ステップＳ１でフラッシュメモリ１１から読み込んだコンピュータプログラムをＲＡＭ＿１２へロードしない。この場合、ブートローダ１３がＭＣＵ＿２の起動を停止する。
【０１０４】
上述した本実施形態に係るブート処理によれば、セキュアエレメント１４による署名検証によって、ＣＰＵ＿１０で実行されるコンピュータプログラムの正当性検証が安全に行われる。これにより、ＣＰＵ＿１０の実行領域であるＲＡＭ＿１２には正しいコンピュータプログラムがロードされ、該ＲＡＭ＿１２にロードされたコンピュータプログラムをＣＰＵ＿１０が実行することにより、ＭＣＵ＿２が正常に起動する。よって、本実施形態に係る通信ネットワークシステム１では、ＭＣＵ＿２の個々において、ＭＣＵ＿２の起動時に当該ＭＣＵ＿２のコンピュータプログラム（例えば、オペレーティングシステム（Operating System：ＯＳ）など）の正当性を検証するセキュアブート（Secure Boot）が実現される。なお、セキュアブートについては、例えば非特許文献６に記載されている。
【０１０５】
次に、図１１を参照して、本実施形態に係る暗号処理を説明する。図１１は、本実施形態に係る暗号処理のシーケンスチャートである。所定の契機により図１１の処理が開始される。ここでは、秘密の情報である乱数を、マスタＭＣＵ＿２−ａからエンドＭＣＵ＿２−ｂへ安全に通知する場面を例に挙げて説明する。なお、マスタＭＣＵ＿２−ａとエンドＭＣＵ＿２−ｂとの間のデータの送受は通信バス３を介して行われる。
【０１０６】
（ステップＳ１１）マスタＭＣＵ＿２−ａが、自己のＲＡＭ＿１２に保持される初期乱数をチャレンジとしてエンドＭＣＵ＿２−ｂへ送信する。また、マスタＭＣＵ＿２−ａは、該エンドＭＣＵ＿２−ｂへチャレンジとして送信した初期乱数を、自己のセキュアエレメント１４へ渡す。
【０１０７】
（ステップＳ１２）エンドＭＣＵ＿２−ｂは、マスタＭＣＵ＿２−ａから受信したチャレンジである初期乱数を、自己のセキュアエレメント１４に渡す。エンドＭＣＵ＿２−ｂの暗号処理部２４は、該渡された初期乱数を、自己のセキュアＲＯＭ＿２２に保持される秘密鍵Ｋｓを使用して暗号化する。この暗号化処理では、エンドＭＣＵ＿２−ｂのセキュアＲＡＭ＿２１が、暗号化処理におけるデータの一時記憶領域として使用される。次いで、エンドＭＣＵ＿２−ｂは、暗号化された初期乱数である暗号化データＫｓ（初期乱数）をレスポンスとしてマスタＭＣＵ＿２−ａへ送信する。
【０１０８】
（ステップＳ１３）マスタＭＣＵ＿２−ａは、エンドＭＣＵ＿２−ｂから受信したレスポンスである暗号化データＫｓ（初期乱数）を、自己のセキュアエレメント１４に渡す。マスタＭＣＵ＿２−ａの暗号処理部２４は、該渡された暗号化データＫｓ（初期乱数）を、自己のセキュアＲＯＭ＿２２に保持される該当エンドＭＣＵ＿２−ｂの公開鍵Ｋｐを使用して復号化する。次いで、マスタＭＣＵ＿２−ａの暗号処理部２４は、該復号化により得られた復号化データと、ステップＳ１１でチャレンジとしてエンドＭＣＵ＿２−ｂへ送信された初期乱数との一致を検証する。それら復号化処理および検証処理では、マスタＭＣＵ＿２−ａのセキュアＲＡＭ＿２１が、復号化処理および検証処理におけるデータの一時記憶領域として使用される。該検証の成功により、当該エンドＭＣＵ＿２−ｂの認証が成功したと判断できる。
【０１０９】
該検証が成功した場合には、マスタＭＣＵ＿２−ａの暗号処理部２４は、秘密の情報である乱数を生成し、生成した乱数を、自己のセキュアＲＯＭ＿２２に保持される該当エンドＭＣＵ＿２−ｂの公開鍵Ｋｐを使用して暗号化する。それら乱数生成処理および暗号化処理では、マスタＭＣＵ＿２−ａのセキュアＲＡＭ＿２１が、乱数生成処理および暗号化処理におけるデータの一時記憶領域として使用される。次いで、マスタＭＣＵ＿２−ａは、暗号化された秘密の情報（乱数）である暗号化データＫｐ（乱数）をエンドＭＣＵ＿２−ｂへ送信する。
【０１１０】
エンドＭＣＵ＿２−ｂは、マスタＭＣＵ＿２−ａから受信した暗号化データＫｐ（乱数）を、自己のセキュアエレメント１４に渡す。エンドＭＣＵ＿２−ｂの暗号処理部２４は、該渡された暗号化データＫｐ（乱数）を、自己のセキュアＲＯＭ＿２２に保持される秘密鍵Ｋｓを使用して復号化する。この復号化処理では、エンドＭＣＵ＿２−ｂのセキュアＲＡＭ＿２１が、復号化処理におけるデータの一時記憶領域として使用される。該復号化処理によって暗号化データＫｐ（乱数）から、秘密の情報である乱数が取得される。該取得された乱数は、エンドＭＣＵ＿２−ｂのセキュアＲＡＭ＿２１で安全に保持される。
【０１１１】
上述した本実施形態に係る暗号処理によれば、セキュアエレメント１４による暗号処理によって、ＭＣＵ＿２間（上述した例ではマスタＭＣＵ＿２−ａとエンドＭＣＵ＿２−ｂの間）で交換される情報の暗号処理（暗号化処理、復号化処理）が安全に行われる。これにより、ＭＣＵ＿２間で交換される情報の安全性が保たれる。
【０１１２】
さらに、当該暗号処理に基づいたチャレンジ・レスポンスによって、マスタＭＣＵ＿２−ａがエンドＭＣＵ＿２−ｂの確かな認証を行うことができる。そして、マスタＭＣＵ＿２−ａから認証済みのエンドＭＣＵ＿２−ｂに対して、当該暗号処理に基づいて秘密の情報を安全に送信することができる。この秘密の情報は、上述した第１実施形態における秘密情報として利用できる。上述した例では、マスタＭＣＵ＿２−ａからエンドＭＣＵ＿２−ｂに対して、安全に、秘密の情報である乱数が伝達される。
【０１１３】
次に、図１２を参照して、本実施形態に係るＭＡＣ生成処理および検査処理（ＭＡＣ検査処理（第１の検査）、再検査処理）を説明する。図１２は、本実施形態に係るＭＡＣ生成処理および検査処理（ＭＡＣ検査処理（第１の検査）、再検査処理）を説明するためのシーケンスチャートである。上述した図１１に係る暗号処理によって、マスタＭＣＵ＿２−ａから認証済みのエンドＭＣＵ＿２−ｂに対して、秘密の情報である乱数が安全に送信されている。マスタＭＣＵ＿２−ａ及びエンドＭＣＵ＿２−ｂは、該秘密の情報である乱数をセキュアＲＡＭ＿２１に格納する。このセキュアＲＡＭ＿２１は、上述した第１実施形態における秘密情報記憶部１１７として、該乱数（秘密情報）を安全に保持する。
【０１１４】
図１２において、送信側ＭＣＵ＿２は送信ノードとして動作する。送信側ＭＣＵ＿２はマスタＭＣＵ＿２−ａであってもよく、又は、エンドＭＣＵ＿２−ｂであってもよい。受信側ＭＣＵ＿２は受信ノードとして動作する。受信側ＭＣＵ＿２はマスタＭＣＵ＿２−ａであってもよく、又は、エンドＭＣＵ＿２−ｂであってもよい。送信側ＭＣＵ＿２は、ＲＡＭ＿１２に送信カウンタ値および送信データを保持している。受信側ＭＣＵ＿２は、ＲＡＭ＿１２に受信カウンタ値を保持している。図１２の処理は、送信側ＭＣＵ＿２から送信されるＣＡＮフレームを作成する際に開始される。
【０１１５】
（ステップＳ２１）送信側ＭＣＵ＿２は、ＲＡＭ＿１２からセキュアＲＡＭ＿２１へ、送信データおよび送信カウンタ値を渡す。送信側ＭＣＵ＿２のセキュアエレメント１４は、セキュアＲＡＭ＿２１に保持される、乱数（秘密情報）と送信データと送信カウンタ値を使用して、ＭＡＣの生成を行う。このＭＡＣの生成方法は、上述した第１実施形態と同様である。但し、該ＭＡＣの生成は、セキュアＲＡＭ＿２１において安全に行われる。このＭＡＣの生成の結果としてＭＡＣ値のビット列中から抽出された１６ビットのビット列（データ部用抽出ＭＡＣビット列）は、セキュアＲＡＭ＿２１からＲＡＭ＿１２へ渡される。
【０１１６】
（ステップＳ２２）送信側ＭＣＵ＿２は、ＣＡＮフレームに対して、ステップＳ２１でＲＡＭ＿１２からセキュアＲＡＭ＿２１へ渡した送信データと、ステップＳ２１でセキュアＲＡＭ＿２１からＲＡＭ＿１２へ渡されたデータ部用抽出ＭＡＣビット列と、をデータ部に格納する。送信側ＭＣＵ＿２は、該ＣＡＮフレームを通信バス３へ送信する。このＣＡＮフレームは、通信バス３を介して受信側ＭＣＵ＿２で受信される。
【０１１７】
（ステップＳ２３）受信側ＭＣＵ＿２は、通信バス３から受信したＣＡＮフレームをＲＡＭ＿１２に保持する。受信側ＭＣＵ＿２は、ＲＡＭ＿１２に保持されるＣＡＮフレーム中のデータ部から取得した受信データとデータ部から取得した受信ＭＡＣ値とをセキュアＲＡＭ＿２１へ渡す。さらに、受信側ＭＣＵ＿２は、ＲＡＭ＿１２に保持されるＣＡＮフレーム中のＩＤ部に格納されているＩＤに対応する受信カウンタ値を、ＲＡＭ＿１２からセキュアＲＡＭ＿２１へ渡す。
【０１１８】
次いで、受信側ＭＣＵ＿２のセキュアエレメント１４は、セキュアＲＡＭ＿２１に保持される、乱数（秘密情報）と受信データと受信カウンタ値を使用して、ＭＡＣの生成を行う。このＭＡＣの生成方法は、上述した第１実施形態と同様である。但し、該ＭＡＣの生成は、セキュアＲＡＭ＿２１において安全に行われる。このＭＡＣの生成の結果として算出ＭＡＣ値のビット列中から１６ビットの検査対象ビット列が抽出される。次いで、受信側ＭＣＵ＿２のセキュアエレメント１４は、セキュアＲＡＭ＿２１に保持される受信ＭＡＣ値と検査対象ビット列との一致を判定する。この判定の結果が不一致である場合には、上述した第１実施形態と同様に再検査が行われる。
【０１１９】
上述したように本実施形態によれば、セキュアＲＡＭ＿２１に安全に保持される乱数（秘密情報）を使用してＭＡＣの生成および検査が行われる。これにより、ＣＡＮフレームの検査に対する信頼性が向上する。
【０１２０】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０１２１】
例えば、上述した実施形態では、１台のＭＣＵ＿２が送信ノードの機能と受信ノードの機能とを有したが、１台のＭＣＵ＿２が送信ノードの機能のみを有してもよく、又は、１台のＭＣＵ＿２が受信ノードの機能のみを有してもよい。
【０１２２】
また、一つのＭＣＵ＿２が一つの半導体装置として構成されてもよい。一つのＭＣＵ＿２が一つの半導体集積回路としてワンチップ化されることにより、安全性がさらに向上する。
【０１２３】
また、セキュアエレメントとして、例えば、無線通信に使用されるｅＳＩＭ（Embedded Subscriber Identity Module）又はＳＩＭ（Subscriber Identity Module）を使用してもよい。ｅＳＩＭおよびＳＩＭは、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。又は、セキュアエレメントとして、例えば、ＴＰＭ（Trusted Platform Module）と呼ばれる耐タンパー性（Tamper Resistant）のある暗号処理チップを使用してもよい。ＴＰＭについては、例えば非特許文献７に記載されている。
【０１２４】
また、上述した実施形態は、車両として、例えば、自動車、原動機付自転車、鉄道車両等に適用可能である。
【０１２５】
また、上述した実施形態では、本発明に係る通信ネットワークシステムの一態様として、車両に搭載される通信ネットワークシステムを例に挙げて説明したが、本発明に係る通信ネットワークシステムは様々な分野に適用可能である。例えば、家電製品を制御するコンピュータとしてＭＣＵ＿２を適用し、宅内の各家電製品のＭＣＵ＿２を宅内ネットワークで接続するように構成してもよい。また、スマートメーターとしてＭＣＵ＿２を適用し、各スマートメーターのＭＣＵ＿２を通信ネットワークで接続するように構成してもよい。
【０１２６】
また、上述したＭＣＵ＿２の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行するようにしてもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disk）等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。
【０１２７】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータ内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【０１２８】
１…通信ネットワークシステム、２，２−ａ，２−ｂ…ＭＣＵ、３…通信バス、１０…ＣＰＵ、１１…フラッシュメモリ、１２…ＲＡＭ、１３…ブートローダ、１４…セキュアエレメント、２１…セキュアＲＡＭ、２２…セキュアＲＯＭ、２３…検証部、２４…暗号処理部、１１１…送信部、１１２…受信部、１１３…フレーム受信処理部、１１４…ＭＡＣ（メッセージ認証コード）生成部、１１５…カウンタ部、１１６…ＭＡＣ（メッセージ認証コード）検査部、１１７…秘密情報記憶部
【図１】
2016122932.tif 000003
【図２】
2016122932.tif 000004
【図３】
2016122932.tif 000005
【図４】
2016122932.tif 000006
【図５】
2016122932.tif 000007
【図６】
2016122932.tif 000008
【図７】
2016122932.tif 000009
【図８】
2016122932.tif 000010
【図９】
2016122932.tif 000011
【図１０】
2016122932.tif 000012
【図１１】
2016122932.tif 000013
【図１２】
2016122932.tif 000014