特許第6190404号(P6190404)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許6190404受信ノード、メッセージ受信方法およびコンピュータプログラム
<>
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000002
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000003
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000004
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000005
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000006
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000007
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000008
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000009
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000010
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000011
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000012
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000013
  • 特許6190404-受信ノード、メッセージ受信方法およびコンピュータプログラム 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6190404
(24)【登録日】2017年8月10日
(45)【発行日】2017年8月30日
(54)【発明の名称】受信ノード、メッセージ受信方法およびコンピュータプログラム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20170821BHJP
   G09C 1/00 20060101ALI20170821BHJP
   B60R 16/023 20060101ALI20170821BHJP
   H04L 12/28 20060101ALI20170821BHJP
   H04L 12/40 20060101ALI20170821BHJP
【FI】
   H04L9/00 675A
   G09C1/00 640D
   B60R16/023 P
   H04L12/28 100A
   H04L12/40 Z
【請求項の数】5
【全頁数】23
(21)【出願番号】特願2015-33103(P2015-33103)
(22)【出願日】2015年2月23日
(65)【公開番号】特開2016-12912(P2016-12912A)
(43)【公開日】2016年1月21日
【審査請求日】2017年2月17日
(31)【優先権主張番号】特願2014-116917(P2014-116917)
(32)【優先日】2014年6月5日
(33)【優先権主張国】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100064908
【弁理士】
【氏名又は名称】志賀 正武
(74)【代理人】
【識別番号】100146835
【弁理士】
【氏名又は名称】佐伯 義文
(72)【発明者】
【氏名】竹森 敬祐
【審査官】 中里 裕正
(56)【参考文献】
【文献】 特開2005−167942(JP,A)
【文献】 国際公開第2013/128317(WO,A1)
【文献】 特表2011−521548(JP,A)
【文献】 特開2010−011400(JP,A)
【文献】 特開2016−012917(JP,A)
【文献】 竹森敬祐 他,セキュアブート+認証による車載制御システムの保護,電子情報通信学会技術研究報告,2014年 9月12日,第114巻 第225号,p.47-52
【文献】 DAVIES, D. W. and PRICE, W. L.,ネットワーク・セキュリティ,1985年12月 5日,p.114-116, 126-128
【文献】 Lin, C.-W. and Sangiovanni-Vincentelli, A.,Cyber-Security for the Controller Area Network (CAN) Communication Protocol, 2012 International Conference on Cyber Security,2012年,p.1-7
【文献】 Nilsson, D.K., Larson, U.E. and Jonsson, E.,Efficient In-Vehicle Delayed Data Authentication Based on Compound Message Authentication Codes,IEEE 68th Vehicular Technology Conference, 2008,2008年,p.1-5
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
B60R 16/023
G09C 1/00
H04L 12/28
H04L 12/40
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおける前記受信ノードであり、
前記メッセージの受信毎に前記送信ノードで使用されるカウント値と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する受信カウンタ部と、
前記受信したメッセージ中のデータ部から取得した受信データと前記保持されている受信カウンタ値とを使用してメッセージ認証コードを生成し、該生成したメッセージ認証コードと前記受信したメッセージから取得したメッセージ認証コードとが一致するかを検査するメッセージ認証コード検査部と、を備え
前記メッセージ認証コード検査部は、前記受信カウンタ値のビット列のうち所定の抽出ビット数分の上位抽出ビットのみを前記メッセージ認証コードの生成に使用し、前記生成したメッセージ認証コードのうち、前記受信カウンタ値のビット列のうち該上位抽出ビット以外の所定の下位ビットの値で特定される一部分のビット列のみを、前記受信したメッセージから取得したメッセージ認証コードとの一致の検査の対象にする、
受信ノード。
【請求項2】
前記メッセージ認証コード検査部は、前記検査の結果が不一致である場合に、前記生成したメッセージ認証コードのうち、前記受信カウンタ値に前記カウント値だけ増加させた値における前記下位ビットの値で特定される一部分のビット列のみを前記一致の再検査の対象にする、
請求項に記載の受信ノード。
【請求項3】
前記受信カウンタ部は、前記再検査の結果が一致である前記下位ビットの値を、自己が保持する受信カウンタ値の前記下位ビットの値にする、
請求項に記載の受信ノード。
【請求項4】
メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおける前記受信ノードのメッセージ受信方法であり、
前記受信ノードが、前記メッセージの受信毎に前記送信ノードで使用されるカウント値と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する受信カウンタステップと、
前記受信ノードが、前記受信したメッセージ中のデータ部から取得した受信データと前記保持されている受信カウンタ値とを使用してメッセージ認証コードを生成し、該生成したメッセージ認証コードと前記受信したメッセージから取得したメッセージ認証コードとが一致するかを検査するメッセージ認証コード検査ステップと、を含み、
前記メッセージ認証コード検査ステップは、前記受信カウンタ値のビット列のうち所定の抽出ビット数分の上位抽出ビットのみを前記メッセージ認証コードの生成に使用し、前記生成したメッセージ認証コードのうち、前記受信カウンタ値のビット列のうち該上位抽出ビット以外の所定の下位ビットの値で特定される一部分のビット列のみを、前記受信したメッセージから取得したメッセージ認証コードとの一致の検査の対象にする、
メッセージ受信方法。
【請求項5】
メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおける前記受信ノードのコンピュータに、
前記メッセージの受信毎に前記送信ノードで使用されるカウント値と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する受信カウンタステップと、
前記受信したメッセージ中のデータ部から取得した受信データと前記保持されている受信カウンタ値とを使用してメッセージ認証コードを生成し、該生成したメッセージ認証コードと前記受信したメッセージから取得したメッセージ認証コードとが一致するかを検査するメッセージ認証コード検査ステップと、を実行させるためのコンピュータプログラムであり、
前記メッセージ認証コード検査ステップは、前記受信カウンタ値のビット列のうち所定の抽出ビット数分の上位抽出ビットのみを前記メッセージ認証コードの生成に使用し、前記生成したメッセージ認証コードのうち、前記受信カウンタ値のビット列のうち該上位抽出ビット以外の所定の下位ビットの値で特定される一部分のビット列のみを、前記受信したメッセージから取得したメッセージ認証コードとの一致の検査の対象にする、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、受信ノード、メッセージ受信方法およびコンピュータプログラムに関する。
【背景技術】
【0002】
従来、車両に搭載される通信ネットワークの一つとして知られているCAN(Controller Area Network)が、車両内の各種ECU(Electronic Control Unit)間の通信に用いられている。そのCANにおいてメッセージの認証を可能にする技術として、例えば非特許文献1,2、特許文献1に記載の技術が知られている。
【0003】
非特許文献1に記載の従来技術では、CANに接続された偽のECUからなりすましメッセージを発信する攻撃に対して、本物のECUが、自己のIDが付与されたなりすましメッセージを検知すると、自己のIDを付与した異常を知らせるメッセージを発信することで、受信側ECUに対して異常を報知している。
【0004】
非特許文献2に記載の従来技術では、CANフレーム中の誤り訂正(Cyclic Redundancy Check:CRC)フィールドに格納する情報をMAC(Message Authentication Code)に変更している。この従来技術では、送信側は、N番目からN+3番目までの4つのCANフレーム中のデータフィールドのデータ(64×4=256ビット)から64ビットのMACを生成し、該MACを16ビットずつに4分割して、N+4番目からN+7番目までの4つのCANフレーム中のCRCフィールド(16ビット)にそれぞれ格納して各CANフレームを送信する。受信側では、N+4番目からN+7番目までのCANフレーム中のCRCフィールドからMACを取得し、N番目からN+3番目までのCANフレーム中のデータフィールドから生成されるMACと一致するか否かによってN番目からN+3番目までのCANフレームが正当であるか否かを判断する。これにより、CRCフィールドから得られるMACと、データフィールドから算出されるMACとが異なる場合には、N番目からN+3番目までのCANフレームのいずれかが不正であると判断できる。
【0005】
特許文献1に記載の技術では、各ECUにおいてCANIDごとにメッセージが送信された回数をカウントする。そして、メインメッセージを送信した送信ノードは、メインメッセージのデータフィールドおよびCANIDと、CANIDに対応するカウンタ値とから生成したMACを含むMACメッセージを送信する。メインメッセージを受信した受信ノードは、メインメッセージに含まれるデータフィールドおよびCANIDと、CANIDに対応するカウンタ値とからMACを生成して、受信したMACメッセージに含まれるMACと一致するかを判断する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】国際公開第2013/065689号
【非特許文献】
【0007】
【非特許文献1】畑正人、田邉正人、吉岡克成、大石和臣、松本勉、“不正送信阻止:CANではそれが可能である”、情報処理学会、コンピュータセキュリティシンポジウム(CSS2011)、pp.624-629、2011年10月.
【非特許文献2】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
【非特許文献3】RFC 2104 HMAC: Keyed-Hashing for Message Authentication、[2014年5月26日検索]、インターネット<URL:http://www.rfc-editor.org/rfc/rfc2104.txt>
【非特許文献4】RFC 2104 HMAC:メッセージ認証のための鍵付ハッシング、[2014年5月26日検索]、インターネット<URL:http://www.ipa.go.jp/security/rfc/RFC2104JA.html>
【非特許文献5】竹森敬祐、川端秀明、窪田歩、“ARM+SIM/UIMによるセキュアブート”、電子情報通信学会、暗号と情報セキュリティシンポジウム(SCIS2014)、1B1-2、2014年1月.
【非特許文献6】Trusted Computing Group、[2015年2月18日検索]、インターネット<URL:http://www.trustedcomputinggroup.org/>
【非特許文献7】“CAN通信におけるデータ送信の仕組みとは?”、[2015年2月18日検索]、インターネット<URL:http://monoist.atmarkit.co.jp/mn/articles/0807/09/news140.html>
【非特許文献8】AUTOSAR、“Specification of Module Secure Onboard Communication AUTOSAR Release 4.2.1”、[2015年2月18日検索]、インターネット<URL:http://www.autosar.org/fileadmin/files/releases/4-2/software-architecture/communication-stack/standard/AUTOSAR_SWS_SecureOnboardCommunication.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、上述した非特許文献1に記載の従来技術では、通信を監視する本物のECUが取り外された場合に異常を報知できない。また、非特許文献2に記載の従来技術では、N番目からN+3番目までのCANフレームの正当性を確認するためには、N+4番目からN+7番目までのCANフレームを受信するまで待たなければならないので、該正当性の確認に時間がかかる。このため、特にリアルタイム制御が求められる場合には適していない。また、特許文献1に記載の従来技術では、メインメッセージとは別にMACメッセージを送信するので通信量が2倍以上になる。さらに、メインメッセージの認証を行うためには、MACメッセージを受信するまで待たなければならないので、該認証に時間がかかる。このため、CANの通信帯域の圧迫と即時性の低下という問題がある。
【0009】
本発明は、このような事情を考慮してなされたものであり、メッセージを送信する送信ノードと該メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおけるメッセージ検査性能を向上させることができる、受信ノード、メッセージ受信方法およびコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【0010】
(1)本発明の一態様は、メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおける前記受信ノードであり、前記メッセージの受信毎に前記送信ノードで使用されるカウント値と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する受信カウンタ部と、前記受信したメッセージ中のデータ部から取得した受信データと前記保持されている受信カウンタ値とを使用してメッセージ認証コードを生成し、該生成したメッセージ認証コードと前記受信したメッセージから取得したメッセージ認証コードとが一致するかを検査するメッセージ認証コード検査部と、を備え、前記メッセージ認証コード検査部は、前記受信カウンタ値のビット列のうち所定の抽出ビット数分の上位抽出ビットのみを前記メッセージ認証コードの生成に使用し、前記生成したメッセージ認証コードのうち、前記受信カウンタ値のビット列のうち該上位抽出ビット以外の所定の下位ビットの値で特定される一部分のビット列のみを、前記受信したメッセージから取得したメッセージ認証コードとの一致の検査の対象にする、受信ノードである。
(2)本発明の一態様は、上記(1)の受信ノードにおいて、前記メッセージ認証コード検査部は、前記検査の結果が不一致である場合に、前記生成したメッセージ認証コードのうち、前記受信カウンタ値に前記カウント値だけ増加させた値における前記下位ビットの値で特定される一部分のビット列のみを前記一致の再検査の対象にする、受信ノードである。
(3)本発明の一態様は、上記(2)の受信ノードにおいて、前記受信カウンタ部は、前記再検査の結果が一致である前記下位ビットの値を、自己が保持する受信カウンタ値の前記下位ビットの値にする、受信ノードである。
(4)本発明の一態様は、メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおける前記受信ノードのメッセージ受信方法であり、前記受信ノードが、前記メッセージの受信毎に前記送信ノードで使用されるカウント値と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する受信カウンタステップと、前記受信ノードが、前記受信したメッセージ中のデータ部から取得した受信データと前記保持されている受信カウンタ値とを使用してメッセージ認証コードを生成し、該生成したメッセージ認証コードと前記受信したメッセージから取得したメッセージ認証コードとが一致するかを検査するメッセージ認証コード検査ステップと、を含み、前記メッセージ認証コード検査ステップは、前記受信カウンタ値のビット列のうち所定の抽出ビット数分の上位抽出ビットのみを前記メッセージ認証コードの生成に使用し、前記生成したメッセージ認証コードのうち、前記受信カウンタ値のビット列のうち該上位抽出ビット以外の所定の下位ビットの値で特定される一部分のビット列のみを、前記受信したメッセージから取得したメッセージ認証コードとの一致の検査の対象にする、メッセージ受信方法である。
(5)本発明の一態様は、メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおける前記受信ノードのコンピュータに、前記メッセージの受信毎に前記送信ノードで使用されるカウント値と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する受信カウンタステップと、前記受信したメッセージ中のデータ部から取得した受信データと前記保持されている受信カウンタ値とを使用してメッセージ認証コードを生成し、該生成したメッセージ認証コードと前記受信したメッセージから取得したメッセージ認証コードとが一致するかを検査するメッセージ認証コード検査ステップと、を実行させるためのコンピュータプログラムであり、前記メッセージ認証コード検査ステップは、前記受信カウンタ値のビット列のうち所定の抽出ビット数分の上位抽出ビットのみを前記メッセージ認証コードの生成に使用し、前記生成したメッセージ認証コードのうち、前記受信カウンタ値のビット列のうち該上位抽出ビット以外の所定の下位ビットの値で特定される一部分のビット列のみを、前記受信したメッセージから取得したメッセージ認証コードとの一致の検査の対象にする、コンピュータプログラムである。
【発明の効果】
【0015】
本発明によれば、メッセージを送信する送信ノードと該メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおけるメッセージ検査性能を向上させることができるという効果が得られる。
【図面の簡単な説明】
【0016】
図1】本発明の第1実施形態に係る通信ネットワークシステム1の構成を示すブロック図である。
図2】本発明の第1実施形態に係るMCU_2(ノード)の構成を示すブロック図である。
図3】本発明の第1実施形態に係るデータフレームの構成を示す図である。
図4】本発明の第1実施形態に係る送信処理の手順を示す図である。
図5】本発明の第1実施形態に係る受信処理の手順を示す図である。
図6】本発明の第1実施形態に係る受信処理の手順を示す図である。
図7】本発明の第2実施形態に係る通信ネットワークシステム1の構成を示すブロック図である。
図8】本発明の第2実施形態に係るブート処理のシーケンスチャートである。
図9】本発明の第2実施形態に係る暗号処理のシーケンスチャートである。
図10】本発明の第2実施形態に係るMAC生成処理およびMAC検査処理を説明するためのシーケンスチャートである。
図11】CANの標準フォーマットのデータフレームを示す構成図である。
図12】CANの拡張フォーマットのデータフレームを示す構成図である。
図13】本発明の一実施形態に係るメッセージ作成方法を示す説明図である。
【発明を実施するための形態】
【0017】
以下、図面を参照し、本発明の実施形態について説明する。
【0018】
[第1実施形態]
本実施形態では、本発明に係る通信ネットワークシステムの一態様として、車両に搭載される通信ネットワークシステムとしてのCANを例に挙げて説明する。図1は、本発明の第1実施形態に係る通信ネットワークシステム1の構成を示すブロック図である。図1において、通信ネットワークシステム1は、複数のMCU(Micro Computing Unit)_2を有する。MCU_2は、CPU(Central Processing Unit:中央演算処理装置)及びメモリ等から構成されるものであって、コンピュータの一種である。MCU_2は、自己のCPUがコンピュータプログラムを実行することにより、該コンピュータプログラムに該当する機能を実現する。各MCU_2は、車両内の機器を制御する電子制御ユニット(ECU)として利用される。
【0019】
MCU_2はCANの通信バス3に接続されている。本実施形態では、説明の便宜上、通信ネットワークシステム1は3台のMCU_2を有するものとし、該3台のMCU_2が通信バス3に接続されている。通信バス3は、各MCU_2の間で交換されるメッセージを伝送する。各MCU_2は、通信バス3を介して、相互にメッセージを送受する。CANでは、所定のフレーム形式でメッセージの伝送が行われる。MCU_2は、CANにおけるノード(通信装置)として機能する。本実施形態では、MCU_2は、メッセージを送信する送信ノードの機能と該メッセージを受信する受信ノードの機能とを有する。図1中に示されるように、3台の各MCU_2には、CANにおける識別子(ID)として、ID1、ID2、ID3がそれぞれ付与されている。
【0020】
図2は、本発明の第1実施形態に係るMCU_2(ノード)の構成を示すブロック図である。図2において、MCU_2は、送信部111と受信部112とフレーム受信処理部113とMAC(メッセージ認証コード)生成部114とカウンタ部115とMAC(メッセージ認証コード)検査部116と秘密情報記憶部117を備える。
【0021】
送信部111は、所定のフレーム形式のメッセージを通信バス3に送信する。受信部112は、該所定のフレーム形式のメッセージを通信バス3から受信する。図3は、本発明の第1実施形態に係るデータフレームの構成を示す図である。図3のデータフレームにおいて、各フィールド中に示されるカッコ内の数字は、当該フィールドに格納される情報のビット数を示している。図3に示されるデータフレームの構成は、CANにおける標準フォーマットのデータフレームの構成に対して、一部変更している。本実施形態では、データフレーム中のCRCフィールド(CRC部)に格納する情報をメッセージ認証コード(MAC)に変更する。該データフレームにおいてCRC部以外の部分は、CANにおける標準フォーマットから変更なしである。以下、図3に示される本実施形態に係るデータフレームのことをCANフレームと称する。
【0022】
説明を図2に戻す。
送信部111には、CANフレームに格納する送信データ等のデータが入力される。送信部111は、該入力されたデータをCANフレーム中の該当部分に格納したCANフレームを、通信バス3へ送信する。送信データは、図3中のデータフィールド(Data Field:データ部)に格納される。フレーム受信処理部113は、受信部112により通信バス3から受信されたCANフレームについての受信処理を行う。MAC生成部114は、CANフレーム中のデータ部に格納される送信データ等に基づいてMACを生成する。
【0023】
カウンタ部115は、送信カウンタ部としての機能と、受信カウンタ部としての機能とを有する。カウンタ部115は、送信カウンタ部の機能として、送信部111によるCANフレームの送信毎に所定のカウント値だけ増加させる送信カウンタ値を保持する。本実施形態では、該カウント値は1とする。したがって、カウンタ部115は、送信部111によるCANフレームの送信毎に1だけ増加させる送信カウンタ値を保持する。この送信カウンタ値は、自己のMCU_2(ノード)がCANフレームを送信する毎に1ずつ増やされる。
【0024】
カウンタ部115は、受信カウンタ部の機能として、受信部112によるCANフレームの受信毎に送信カウンタ部と同じ所定のカウント値だけ増加させる受信カウンタ値を保持する。本実施形態では、該カウント値は1となる。したがって、カウンタ部115は、受信部112によるCANフレームの受信毎に1だけ増加させる受信カウンタ値を保持する。この受信カウンタ値は、CANフレーム中のID毎に設けられる。該IDは、CANフレームを送信したMCU_2(ノード)に付与されているIDであり、図3中のIDフィールド(ID部)に格納される。
【0025】
本実施形態では、3台のMCU_2(IDがそれぞれ、ID1、ID2、ID3である)が存在するので、図2に示されるように、カウンタ部115は該3台の各MCU_2(各IDであるID1、ID2、ID3)に対応する3つのカウンタ値(ID1カウンタ値、ID2カウンタ値、ID3カウンタ値)を保持する。カウンタ部115において、自己のMCU_2のIDに対応するカウンタ値が送信カウンタ値であり、他のMCU_2のIDに対応するカウンタ値が受信カウンタ値である。例えば、ID1のMCU_2においては、ID1カウンタ値が送信カウンタ値であり、ID2カウンタ値がID2に対応する受信カウンタ値であり、ID3カウンタ値がID3に対応する受信カウンタ値である。
【0026】
MAC検査部116は、受信部112により通信バス3から受信されたCANフレームから取得されたMACについての検査を行う。秘密情報記憶部117は、各MCU_2において同じ秘密情報を記憶する。この秘密情報は、MCU_2の製造時などに、安全に、MCU_2に設定される。
【0027】
次に、本実施形態に係るMCU_2(ノード)の動作を説明する。
【0028】
[送信ノードの動作]
はじめに図4を参照して、MCU_2の送信ノードとしての動作を説明する。図4は、本発明の第1実施形態に係る送信処理の手順を示す図である。図4の送信処理は、送信部111から送信されるCANフレームを作成する際に開始される。
【0029】
(ステップS111)MAC生成部114は、カウンタ部115から送信カウンタ値を取得する。MAC生成部114は、該取得した送信カウンタ値のビット列(ビット数がLである)から、所定の抽出ビット数分(L−nビット分)の上位ビットのみを上位抽出ビット(ビット数が「L−n」である)として取得する。
【0030】
(ステップS112)MAC生成部114は、CANフレーム中のデータ部に格納される送信データと、ステップS111で取得した上位抽出ビットと、秘密情報記憶部117に記憶されている秘密情報とを使用して、MACを生成する。MACとして、例えば、ハッシュ(Hash)値を算出する。ハッシュ値の算出方法として、例えば、SHA-256が挙げられる。なお、ハッシュ値の算出方法については、例えば非特許文献3,4に記載されている。
【0031】
(ステップS113)MAC生成部114は、ステップS112で生成したMACのビット列(MAC値)から、CANフレーム中のCRC部に格納するビット列(15ビット)を抽出する。この抽出されるビット列は、ステップS111で取得した送信カウンタ値のビット列(ビット数がLである)のうち上位抽出ビット以外の所定の下位ビット(ビット数がnである)の値で特定される。図4に示される例では、該下位ビット(ビット数がnである)の値は「3」である。これにより、MAC値のビット列中において、該値「3」で特定される一部分(15ビット分)を抽出する。
【0032】
本実施形態においてCANフレーム中のCRC部は15ビットであるので、該CRC部に格納する情報として、MAC値のビット列から該値「3」で特定される15ビット分を抽出している。このため、MAC値のビット列に対して15ビットずつの区間を定め、どの区間の15ビットをCANフレーム中のCRC部に格納するのかを、送信カウンタ値の下位ビット(ビット数がnである)の値で特定している。なお、図4の例では、MAC値の総ビット数に応じたK個の区間(1区間は15ビット)が定められている。
【0033】
送信部111は、CANフレームに対して、送信データ(ステップS112でMAC生成に使用されたもの)をデータ部に格納し、ステップS113でMAC値のビット列中から抽出された15ビットのビット列をCRC部に格納する。送信部111は、該CANフレームを通信バス3へ送信する。カウンタ部115は、該CANフレームの送信により送信カウンタ値を1だけ増加させて保持する。
【0034】
以上が送信ノードの動作の説明である。
【0035】
[受信ノードの動作]
次に図5図6を参照して、MCU_2の受信ノードとしての動作を説明する。図5図6は、本発明の第1実施形態に係る受信処理の手順を示す図である。図5の受信処理は、受信部112によりCANフレームを受信した際に開始される。
【0036】
(ステップS121)MAC検査部116は、受信部112により受信したCANフレーム中のID部に格納されているIDに対応する受信カウンタ値を、カウンタ部115から取得する。MAC検査部116は、該取得した受信カウンタ値のビット列(ビット数がLである)から、所定の抽出ビット数分(L−nビット分)の上位ビットのみを上位抽出ビット(ビット数が「L−n」である)として取得する。この上位抽出ビットの取得方法は、上述したMAC生成部114の処理(ステップS111)と同じである。
【0037】
(ステップS122)MAC検査部116は、受信部112により受信したCANフレーム中のデータ部から取得した受信データと、ステップS121で取得した上位抽出ビットと、秘密情報記憶部117に記憶されている秘密情報とを使用して、MACを生成する。このMACの値(算出MAC値)は、上述したMAC生成部114と同じ算出方法(例えば、SHA-256によるハッシュ値の算出)で算出される。
【0038】
(ステップS123)MAC検査部116は、ステップS122で生成したMACのビット列(算出MAC値)から、検査の対象にする検査対象ビット列(15ビット)を抽出する。この検査対象ビット列の抽出方法は、上述したMAC生成部114での、CANフレーム中のCRC部に格納するビット列(15ビット)の抽出方法(ステップS113)と同様である。つまり、該検査対象ビット列は、算出MAC値のビット列のうち、ステップS121で取得した受信カウンタ値のビット列(ビット数がLである)のうち上位抽出ビット以外の所定の下位ビット(ビット数がnである)の値で特定される一部分(15ビット分)である。図5に示される例では、該下位ビット(ビット数がnである)の値は「3」である。これにより、算出MAC値のビット列中において、該値「3」で特定される一部分(15ビット分)を抽出する。
【0039】
本実施形態では、CANフレーム中のCRC部(15ビット)に格納されている情報と、算出MAC値のビット列から抽出された検査対象ビット列(15ビット)との一致を検査する。このため、上述した送信処理と同様に、算出MAC値のビット列に対して15ビットずつの区間を定め、どの区間の15ビットを検査対象ビット列とするのかを、受信カウンタ値の下位ビット(ビット数がnである)の値で特定している。なお、図5の例では、算出MAC値の総ビット数に応じたK個の区間(1区間は15ビット)が定められている。
【0040】
MAC検査部116は、受信部112により受信したCANフレーム中のCRC部から取得したMAC値(受信MAC値(15ビット))と、算出MAC値のビット列から抽出された検査対象ビット列(15ビット)とが一致するか否かを判定する。
【0041】
該判定の結果、受信MAC値と検査対象ビット列とが一致である場合には、MAC検査部116は、フレーム受信処理部113に対して、検査合格を通知する。これにより、フレーム受信処理部113は、受信部112により受信したCANフレームに対して、正常に受信したCANフレームに対する所定の受信処理を行う。また、MAC検査部116は、カウンタ部115に対して、検査合格を通知する。これにより、カウンタ部115は、該当する受信カウンタ値を1だけ増加させて保持する。このカウント対象の受信カウンタ値は、受信部112により受信したCANフレーム中のID部に格納されているIDに対応する受信カウンタ値である。
【0042】
一方、該判定の結果、受信MAC値と検査対象ビット列とが不一致である場合には、MAC検査部116は、図6に示される再検査処理を行う。以下、図6を参照して該再検査処理を説明する。
【0043】
(ステップS131)MAC検査部116は、ステップS122で生成した算出MAC値のビット列から、再検査の対象にする再検査対象ビット列(15ビット)を抽出する。この再検査対象ビット列の抽出処理は、上述した検査対象ビット列の抽出処理と同様であるが、ステップS121で取得した受信カウンタ値を増加させた値(増加受信カウンタ値)を使用する。具体的には、まず、ステップS121で取得した受信カウンタ値に1を加える。そして、算出MAC値のビット列のうち、該受信カウンタ値に1を加算した値である増加受信カウンタ値のビット列における下位ビット(ビット数がnである)の値で特定される一部分(15ビット分)を、再検査対象ビット列として抽出する。
【0044】
MAC検査部116は、該抽出した再検査対象ビット列と受信MAC値との一致を判定する。この判定の結果が不一致である場合には、現在の増加受信カウンタ値に対してさらに1を加算した値を新たな増加受信カウンタ値とする。そして、算出MAC値のビット列のうち、該新たな増加受信カウンタ値のビット列における下位ビット(ビット数がnである)の値で特定される一部分(15ビット分)を、新たな再検査対象ビット列として抽出する。そして、該抽出された新たな再検査対象ビット列と受信MAC値との一致を判定する。この再検査は、判定の結果が一致となるまで繰り返される。但し、算出MAC値のビット列の端の区間(下位ビットの値「K−1」で特定される区間)までで当該再検査は終了とする。この理由は、下位ビットの値が桁上げされて、算出MAC値の生成に使用される上位抽出ビットの値が変わるからである。
【0045】
したがって、算出MAC値のビット列のうち、下位ビットの値「K−1」で特定される区間まで検査を行っても、受信MAC値と一致とならない場合には、下位ビットの値の桁上げ後の上位抽出ビットを使用して算出MAC値を再計算し、該再計算した新たな算出MAC値を使用して、上述した再検査と同様に、受信MAC値との一致の判定を行う。
【0046】
(ステップS132)MAC検査部116は、ステップS131の再検査の結果、再検査対象ビット列と受信MAC値とが一致した場合に、カウンタ部115に対して、当該再検査対象ビット列に係る下位ビットの値を通知してカウンタ同期を指示する。カウンタ部115は、該カウンタ同期の指示により、該当する受信カウンタ値の下位ビット(ビット数がnである)の値を、通知された下位ビットの値に変更する。このカウンタ同期対象の受信カウンタ値は、受信部112により受信したCANフレーム中のID部に格納されているIDに対応する受信カウンタ値である。これにより、当該IDに対応する送信ノードの送信カウンタ値と、本受信ノードの当該IDに対応する受信カウンタ値との同期が取られることになる。
【0047】
図6に示される例では、ステップS121で取得した受信カウンタ値における下位ビット(ビット数がnである)の値は「3」である。この値「3」で特定された検査対象ビット列では受信MAC値と不一致であった。このため、ステップS121で取得した受信カウンタ値に1を加算した増加受信カウンタ値のビット列における下位ビット(ビット数がnである)の値「4」で特定される部分を再検査対象ビット列として、受信MAC値との一致を判定する。図6の例では、該値「4」で特定された再検査対象ビット列でも、受信MAC値と不一致であった。このため、現在の増加受信カウンタ値に1を加算した新たな増加受信カウンタ値のビット列における下位ビット(ビット数がnである)の値「5」で特定される部分を再検査対象ビット列として、受信MAC値との一致を判定する。図6の例では、該値「5」で特定された再検査対象ビット列では、受信MAC値と一致であった。これにより、カウンタ部115において該当する受信カウンタ値の下位ビット(ビット数がnである)の値が「3」から「5」に変更される。
【0048】
MAC検査部116は、所定回数だけ再検査を繰り返しても、再検査対象ビット列と受信MAC値とが不一致である場合には、フレーム受信処理部113に対して、検査不合格を通知する。これにより、フレーム受信処理部113は、受信部112により受信したCANフレームを破棄する。これは、通信エラー、又はなりすましメッセージを発信する攻撃が発生したと考えられるからである。なお、検査不合格の場合、MAC検査部116は、カウンタ部115に対して、検査合格を通知しない。これにより、カウンタ部115は、受信部112により受信したCANフレーム中のID部に格納されているIDに対応する受信カウンタ値に対して、受信カウンタ値の増加を行わない。
【0049】
なお、受信ノードは、同一IDのCANフレームにおいて、同じMAC値を有するCANフレームを2回以上連続して受信した場合には、リプレイ攻撃が発生したと判断する。この場合、当該IDのCANフレームについては、受信処理を行わないようにする対処が挙げられる。
【0050】
以上が受信ノードの動作の説明である。
【0051】
本実施形態によれば、送信ノードから送信されるCANフレームには、当該CANフレームのデータ部に格納される送信データを使用して生成されたMACがCRC部に格納される。そして、受信ノードでは、受信したCANフレームのデータ部から取得した受信データを使用して生成したMACと、当該CANフレームのCRC部から取得したMACとを使用して、当該CANフレームの検査を行う。これにより、送信ノードから、送信データのCANフレームとは別にMACのCANフレームを送信する必要がないので、MACのCANフレームによりCANの通信帯域が圧迫される問題を解消できる。さらに、送信データとMACを同じCANフレームで受信できるので、検査の即時性を実現できる。
【0052】
さらに、送信ノードと受信ノードで共通の秘密情報を使用してMACが生成されるので、該秘密情報を有さない送信ノードが生成したMACではCANフレームの検査が不合格となる。これにより、CANフレームの検査に対する信頼性が向上する。
【0053】
また、生成されたMACのビット列のうち、送信カウンタ値の下位ビットで特定される区間をCANフレームに格納することにより、送信されるCANフレーム毎に格納されているMAC値が異なる。これにより、同じCANフレームを繰り返し送信するリプレイ攻撃を容易に検出できる。また、送信ノードではCANフレーム中のデータ部の送信データを使用してMACを生成するので、受信ノードで送信データの改竄を検出できる。
【0054】
また、本実施形態では、MACの生成にはカウンタ値の上位抽出ビットを使用し、カウンタ値の上位抽出ビット以外の下位ビットによって、該MACのどの部分をCRC部に格納するのかを決める。このため、MACの再検査において、該下位ビットの桁上げが発生するまでは、MACの再計算を行う必要がなく、同じMACの中から再検査対象ビット列を変えながら再検査を繰り返し行うことができる。これにより、検査時の演算量を低減でき、検査時間の短縮に寄与できる。
【0055】
また、本実施形態によれば、CANの既存のフレーム形式に対する変更が少ないという効果も得られる。
【0056】
なお、本実施形態では、生成されたMACのうち一部分のみをCANフレーム中のCRC部に格納することから、MAC同士の衝突が発生する可能性がある。例えば、ハッシュ値の衝突は「1/2」の15乗(=1/32768)で発生する可能性がある。しかしながら、もしハッシュ値の衝突が発生しても、さらに次のハッシュ値の衝突が発生する確率はまた1/32768であるため、連続してハッシュ値の衝突が発生する確率は非常に小さくなる。例えば、同じ送信データを有する複数のCANフレーム(各CANフレームのMACは異なる)を連続して送信すれば、該複数のCANフレームのいずれかではMAC(ハッシュ値)の衝突が発生せず、正常に受信できると考えられるので、ハッシュ値の衝突による通信品質への影響は少ないと考えられる。
【0057】
また、上述した実施形態では、CANフレーム中のCRC部にMACを格納したが、データ部に格納するようにしてもよい。例えば、データ部の先頭部分又は最後方部分に格納することが挙げられる。但し、最後方部分に格納する方が、データ部の既存の使用方法に対する影響が少ないと考えられる。また、データ部のサイズは64ビットであるので、CRC部(15ビット)に比して、生成されたMACのうちCANフレームに格納する部分を多くできる。但し、生成されたMACのうちCANフレームに格納する部分を多くすると、その分だけ、送信データのサイズが小さくなるので、データ部に格納するMACのサイズは、MACの衝突による影響が許容される程度に小さく抑えることが好ましい。なお、データ部にMACを格納する場合には、CRC部にはCRCを格納することにより、CRC機能を活用できる。
【0058】
[第2実施形態]
第2実施形態は、上述した第1実施形態において、MCU_2が秘密情報を安全に保持するための構成例である。図7は、本発明の第2実施形態に係る通信ネットワークシステム1の構成を示すブロック図である。図7に示される通信ネットワークシステム1は車両に搭載される。図7に示される通信ネットワークシステム1において、CANの通信バス3には、複数のMCU_2−a,2−bが接続されている。第2実施形態においても、上述した第1実施形態と同様に、説明の便宜上、3台のMCU_2−a,2−bが通信バス3に接続されているとする。図7中に示されるように、3台の各MCU_2−a,2−bには、CANにおける識別子(ID)として、MCU_2−aにはID1が付与され、各MCU_2−bにはID2、ID3がそれぞれ付与されている。
【0059】
MCU_2−aは、通信バス3に接続されるMCU_2−bを認証する処理においてマスタとして動作する。以下、MCU_2−aのことを「マスタMCU_2−a」と称する。また、MCU_2−bのことを「エンドMCU_2−b」と称する。また、MCU_2−a,2−bを特に区別しないときは「MCU_2」と称する。
【0060】
次に、図7を参照して、マスタMCU_2−aとエンドMCU_2−bの構成を説明する。マスタMCU_2−aとエンドMCU_2−bとは同様の構成であるので、以下、MCU_2として、マスタMCU_2−aとエンドMCU_2−bの構成を説明する。
【0061】
MCU_2は、CPU_10と、フラッシュメモリ(flash memory)11と、RAM(ランダムアクセスメモリ)_12と、ブートローダ(boot loader)13と、セキュアエレメント(secure element)14を有する。セキュアエレメント14は、セキュアRAM_21と、セキュアROM(Read Only Memory:リードオンリメモリ)_22と、検証部23と、暗号処理部24を有する。
【0062】
CPU_10は、コンピュータプログラムを実行することにより、車両内の機器を制御するECUとしての機能およびCANにおけるノードとして機能を実現する。フラッシュメモリ11は、CPU_10で実行されるコンピュータプログラムと該コンピュータプログラムについての署名とを記憶する。RAM_12はデータを記憶する。RAM_12は、CPU_10がコンピュータプログラムを実行する際の実行領域となる。
【0063】
ブートローダ13は、MCU_2の電源投入によりブート処理を行う。ブートローダ13は、該ブート処理の内容を変更できないようにROM化されている。
【0064】
セキュアエレメント14は、セキュアエレメント14内部で保持されるデータに対してセキュアエレメント14外部からアクセスできない安全な要素として構成される。セキュアRAM_21は、セキュアエレメント14内部で保持されるデータの一時記憶領域である。セキュアRAM_21に対してセキュアエレメント14外部からはアクセスできないように構成される。セキュアROM_22は、セキュアエレメント14内部で使用される鍵を記憶する。セキュアROM_22に対してセキュアエレメント14外部からはアクセスできないように構成される。セキュアROM_22には、MCU_2の製造時などに、予め安全に鍵が書き込まれる。
【0065】
検証部23は、ブートローダ13によるブート処理におけるプログラム正当性検証処理を、セキュアROM_22に保持される署名検証鍵を使用して行う。検証部23は、該プログラム正当性検証処理において、セキュアRAM_21を一時記憶領域として使用する。
【0066】
暗号処理部24は、自己のMCU_2と他のMCU_2との間で交換される情報についての暗号処理を、セキュアROM_22に保持される暗号鍵を使用して行う。該暗号処理は、暗号化処理または復号化処理である。暗号処理部24は、該暗号処理において、セキュアRAM_21を一時記憶領域として使用する。
【0067】
次に、図8を参照して、本実施形態に係るブート処理を説明する。図8は、本実施形態に係るブート処理のシーケンスチャートである。MCU_2の電源投入により図8の処理が開始される。
【0068】
(ステップS1)ブートローダ13が、フラッシュメモリ11からコンピュータプログラムと署名とを読み込む。次いで、ブートローダ13が、該読み込んだコンピュータプログラムのハッシュ(hash)値を算出する。
【0069】
(ステップS2)ブートローダ13が、該算出したハッシュ値と、フラッシュメモリ11から読み込んだ署名とをセキュアエレメント14へ送信する。
【0070】
(ステップS3)セキュアエレメント14において検証部23が、セキュアROM_22に保持される署名検証鍵を使用して、ブートローダ13から受信した署名に含まれる値とブートローダ13から受信したハッシュ値との一致を検証する。この検証処理では、セキュアRAM_21が、検証処理におけるデータの一時記憶領域として使用される。該検証が成功した場合には、セキュアエレメント14はブートローダ13へ検証成功を通知する。
【0071】
(ステップS4)ブートローダ13は、セキュアエレメント14から検証成功の通知を受信した場合に、ステップS1でフラッシュメモリ11から読み込んだコンピュータプログラムをRAM_12へロードする。これにより、CPU_10はRAM_12にロードされたコンピュータプログラムを実行することができる。
【0072】
一方、ブートローダ13は、セキュアエレメント14からの検証成功の通知がない場合には(例えば、ステップS2の送信後から所定時間が経過してもセキュアエレメント14から検証成功の通知を受信しなかったり、セキュアエレメント14から検証失敗の通知を受信したりした場合)、ステップS1でフラッシュメモリ11から読み込んだコンピュータプログラムをRAM_12へロードしない。この場合、ブートローダ13がMCU_2の起動を停止する。
【0073】
上述した本実施形態に係るブート処理によれば、セキュアエレメント14による署名検証によって、CPU_10で実行されるコンピュータプログラムの正当性検証が安全に行われる。これにより、CPU_10の実行領域であるRAM_12には正しいコンピュータプログラムがロードされ、該RAM_12にロードされたコンピュータプログラムをCPU_10が実行することにより、MCU_2が正常に起動する。よって、本実施形態に係る通信ネットワークシステム1では、MCU_2の個々において、MCU_2の起動時に当該MCU_2のコンピュータプログラム(例えば、オペレーティングシステム(Operating System:OS)など)の正当性を検証するセキュアブート(Secure Boot)が実現される。なお、セキュアブートについては、例えば非特許文献5に記載されている。
【0074】
次に、図9を参照して、本実施形態に係る暗号処理を説明する。図9は、本実施形態に係る暗号処理のシーケンスチャートである。所定の契機により図9の処理が開始される。ここでは、秘密の情報である乱数を、マスタMCU_2−aからエンドMCU_2−bへ安全に通知する場面を例に挙げて説明する。なお、マスタMCU_2−aとエンドMCU_2−bとの間のデータの送受は通信バス3を介して行われる。
【0075】
(ステップS11)マスタMCU_2−aが、自己のRAM_12に保持される初期乱数をチャレンジとしてエンドMCU_2−bへ送信する。また、マスタMCU_2−aは、該エンドMCU_2−bへチャレンジとして送信した初期乱数を、自己のセキュアエレメント14へ渡す。
【0076】
(ステップS12)エンドMCU_2−bは、マスタMCU_2−aから受信したチャレンジである初期乱数を、自己のセキュアエレメント14に渡す。エンドMCU_2−bの暗号処理部24は、該渡された初期乱数を、自己のセキュアROM_22に保持される秘密鍵Ksを使用して暗号化する。この暗号化処理では、エンドMCU_2−bのセキュアRAM_21が、暗号化処理におけるデータの一時記憶領域として使用される。次いで、エンドMCU_2−bは、暗号化された初期乱数である暗号化データKs(初期乱数)をレスポンスとしてマスタMCU_2−aへ送信する。
【0077】
(ステップS13)マスタMCU_2−aは、エンドMCU_2−bから受信したレスポンスである暗号化データKs(初期乱数)を、自己のセキュアエレメント14に渡す。マスタMCU_2−aの暗号処理部24は、該渡された暗号化データKs(初期乱数)を、自己のセキュアROM_22に保持される該当エンドMCU_2−bの公開鍵Kpを使用して復号化する。次いで、マスタMCU_2−aの暗号処理部24は、該復号化により得られた復号化データと、ステップS11でチャレンジとしてエンドMCU_2−bへ送信された初期乱数との一致を検証する。それら復号化処理および検証処理では、マスタMCU_2−aのセキュアRAM_21が、復号化処理および検証処理におけるデータの一時記憶領域として使用される。該検証の成功により、当該エンドMCU_2−bの認証が成功したと判断できる。
【0078】
該検証が成功した場合には、マスタMCU_2−aの暗号処理部24は、秘密の情報である乱数を生成し、生成した乱数を、自己のセキュアROM_22に保持される該当エンドMCU_2−bの公開鍵Kpを使用して暗号化する。それら乱数生成処理および暗号化処理では、マスタMCU_2−aのセキュアRAM_21が、乱数生成処理および暗号化処理におけるデータの一時記憶領域として使用される。次いで、マスタMCU_2−aは、暗号化された秘密の情報(乱数)である暗号化データKp(乱数)をエンドMCU_2−bへ送信する。
【0079】
エンドMCU_2−bは、マスタMCU_2−aから受信した暗号化データKp(乱数)を、自己のセキュアエレメント14に渡す。エンドMCU_2−bの暗号処理部24は、該渡された暗号化データKp(乱数)を、自己のセキュアROM_22に保持される秘密鍵Ksを使用して復号化する。この復号化処理では、エンドMCU_2−bのセキュアRAM_21が、復号化処理におけるデータの一時記憶領域として使用される。該復号化処理によって暗号化データKp(乱数)から、秘密の情報である乱数が取得される。該取得された乱数は、エンドMCU_2−bのセキュアRAM_21で安全に保持される。
【0080】
上述した本実施形態に係る暗号処理によれば、セキュアエレメント14による暗号処理によって、MCU_2間(上述した例ではマスタMCU_2−aとエンドMCU_2−bの間)で交換される情報の暗号処理(暗号化処理、復号化処理)が安全に行われる。これにより、MCU_2間で交換される情報の安全性が保たれる。
【0081】
さらに、当該暗号処理に基づいたチャレンジ・レスポンスによって、マスタMCU_2−aがエンドMCU_2−bの確かな認証を行うことができる。そして、マスタMCU_2−aから認証済みのエンドMCU_2−bに対して、当該暗号処理に基づいて秘密の情報を安全に送信することができる。この秘密の情報は、上述した第1実施形態における秘密情報として利用できる。上述した例では、マスタMCU_2−aからエンドMCU_2−bに対して、安全に、秘密の情報である乱数が伝達される。
【0082】
次に、図10を参照して、本実施形態に係るMAC生成処理およびMAC検査処理を説明する。図10は、本実施形態に係るMAC生成処理およびMAC検査処理を説明するためのシーケンスチャートである。上述した図9に係る暗号処理によって、マスタMCU_2−aから認証済みのエンドMCU_2−bに対して、秘密の情報である乱数が安全に送信されている。マスタMCU_2−a及びエンドMCU_2−bは、該秘密の情報である乱数をセキュアRAM_21に格納する。このセキュアRAM_21は、上述した第1実施形態における秘密情報記憶部117として、該乱数(秘密情報)を安全に保持する。
【0083】
図10において、送信側MCU_2は送信ノードとして動作する。送信側MCU_2はマスタMCU_2−aであってもよく、又は、エンドMCU_2−bであってもよい。受信側MCU_2は受信ノードとして動作する。受信側MCU_2はマスタMCU_2−aであってもよく、又は、エンドMCU_2−bであってもよい。送信側MCU_2は、RAM_12に送信カウンタ値および送信データを保持している。受信側MCU_2は、RAM_12に受信カウンタ値を保持している。図10の処理は、送信側MCU_2から送信されるCANフレームを作成する際に開始される。
【0084】
(ステップS21)送信側MCU_2は、RAM_12からセキュアRAM_21へ、送信データおよび送信カウンタ値を渡す。送信側MCU_2のセキュアエレメント14は、セキュアRAM_21に保持される、乱数(秘密情報)と送信データと送信カウンタ値を使用して、MACの生成を行う。このMACの生成方法は、上述した第1実施形態と同様である。但し、該MACの生成は、セキュアRAM_21において安全に行われる。このMACの生成の結果としてMAC値のビット列中から抽出された15ビットのビット列(CRC部用抽出MACビット列)は、セキュアRAM_21からRAM_12へ渡される。
【0085】
(ステップS22)送信側MCU_2は、CANフレームに対して、ステップS21でRAM_12からセキュアRAM_21へ渡した送信データをデータ部に格納し、ステップS21でセキュアRAM_21からRAM_12へ渡されたCRC部用抽出MACビット列をCRC部に格納する。送信側MCU_2は、該CANフレームを通信バス3へ送信する。このCANフレームは、通信バス3を介して受信側MCU_2で受信される。
【0086】
(ステップS23)受信側MCU_2は、通信バス3から受信したCANフレームをRAM_12に保持する。受信側MCU_2は、RAM_12に保持されるCANフレーム中のデータ部から取得した受信データとCRC部から取得した受信MAC値とをセキュアRAM_21へ渡す。さらに、受信側MCU_2は、RAM_12に保持されるCANフレーム中のID部に格納されているIDに対応する受信カウンタ値を、RAM_12からセキュアRAM_21へ渡す。
【0087】
次いで、受信側MCU_2のセキュアエレメント14は、セキュアRAM_21に保持される、乱数(秘密情報)と受信データと受信カウンタ値を使用して、MACの生成を行う。このMACの生成方法は、上述した第1実施形態と同様である。但し、該MACの生成は、セキュアRAM_21において安全に行われる。このMACの生成の結果として算出MAC値のビット列中から15ビットの検査対象ビット列が抽出される。次いで、受信側MCU_2のセキュアエレメント14は、セキュアRAM_21に保持される受信MAC値と検査対象ビット列との一致を判定する。この判定の結果が不一致である場合には、上述した第1実施形態と同様に再検査が行われる。
【0088】
上述したように本実施形態によれば、セキュアRAM_21に安全に保持される乱数(秘密情報)を使用してMACの生成および検査が行われる。これにより、CANフレームの検査に対する信頼性が向上する。
【0089】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【0090】
例えば、上述した実施形態では、1台のMCU_2が送信ノードの機能と受信ノードの機能とを有したが、1台のMCU_2が送信ノードの機能のみを有してもよく、又は、1台のMCU_2が受信ノードの機能のみを有してもよい。
【0091】
また、一つのMCU_2が一つの半導体装置として構成されてもよい。一つのMCU_2が一つの半導体集積回路としてワンチップ化されることにより、安全性がさらに向上する。
【0092】
また、セキュアエレメントとして、例えば、無線通信に使用されるeSIM(Embedded Subscriber Identity Module)又はSIM(Subscriber Identity Module)を使用してもよい。eSIMおよびSIMは、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。又は、セキュアエレメントとして、耐タンパー性(Tamper Resistant)のある暗号処理チップを使用してもよい。耐タンパー性のある暗号処理チップとして、例えば、TPM(Trusted Platform Module)と呼ばれる暗号処理チップが知られている。TPMについては、例えば非特許文献6に記載されている。
【0093】
また、上述した実施形態は、車両として、例えば、自動車、原動機付自転車、鉄道車両等に適用可能である。
【0094】
また、上述した実施形態では、本発明に係る通信ネットワークシステムの一態様として、車両に搭載される通信ネットワークシステムを例に挙げて説明したが、本発明に係る通信ネットワークシステムは様々な分野に適用可能である。例えば、家電製品を制御するコンピュータとしてMCU_2を適用し、宅内の各家電製品のMCU_2を宅内ネットワークで接続するように構成してもよい。また、スマートメーターとしてMCU_2を適用し、各スマートメーターのMCU_2を通信ネットワークで接続するように構成してもよい。
【0095】
[メッセージ作成方法の実施形態]
本発明の一実施形態に係るメッセージ作成方法を説明する。本実施形態では、メッセージの例として、CANのデータフレームを挙げて説明する。図11はCANの標準フォーマットのデータフレームを示す構成図である。図12はCANの拡張フォーマットのデータフレームを示す構成図である。CANのデータフレームについては、例えば非特許文献7に記載される。図11及び図12のデータフレームにおいて、各フィールド中に示されるカッコ内の数字は、当該フィールドに格納される情報のビット数を示している。
【0096】
本実施形態では、データフレーム中のデータ部(Data Field:データフィールド)に、MACを格納する。図11の標準フォーマット及び図12の拡張フォーマットにおいて、データ部には最大8バイトのデータを格納できる。MACは、データ部内の所定の場所に格納される。例えば、データ部の先頭部分又は最後方部分に格納することが挙げられる。但し、最後方部分に格納する方が、データ部の既存の使用方法に対する影響が少ないと考えられる。
【0097】
次に図13を参照して、本実施形態に係るデータフレーム作成方法を説明する。図13は、本発明の一実施形態に係るメッセージ作成方法を示す説明図である。図13では、データ部に格納するMACのデータ長の例として4バイトとする。したがって、データ部に格納できる送信データのデータ長は最大4バイトである。このため、送信データのデータ長が4バイト超である場合には、送信データを分割し、分割された送信データ毎にMACを生成し、分割された送信データとMACとの組の各々を別々にデータフレームのデータ部に格納する。
【0098】
ここでは、図13に示されるように、送信データは8バイトであるとする。送信データは図2に示される送信部111とMAC生成部114との両方に入力される。送信データが送信部111及びMAC生成部114に入力されると、図13の処理が開始される。
【0099】
(ステップS201)送信部111は、入力された8バイトの送信データを、4バイトずつの第1送信データと第2送信データとに分割する。例えば、入力された8バイトの送信データのうち、上位4バイトを第1送信データとし、下位4バイトを第2送信データとする。MAC生成部114は、送信部111と同じ方法で、入力された8バイトの送信データを、4バイトずつの第1送信データと第2送信データとに分割する。
【0100】
(ステップS202)MAC生成部114は、4バイトの第1送信データを使用して、4バイトの第1MACを生成する。この第1MACの生成方法は、上述した図4に示される第1実施形態のMAC生成方法と同じである。但し、図4のステップS112においてMACの計算に使用される送信データは第1送信データである。また、図4のステップS113において、ステップS112で第1送信データを使用して算出されたMACのビット列から抽出されるビット列(抽出値)は4バイトである。この4バイトの抽出値が第1MACである。
【0101】
(ステップS203)送信部111は、第1データフレームのデータ部に、第1送信データと第1MACとを格納する。送信部111は、第1データフレームを通信バス3へ送信する。カウンタ部115は、該第1データフレームの送信により送信カウンタ値を1だけ増加させて保持する。
【0102】
(ステップS204)MAC生成部114は、4バイトの第2送信データを使用して、4バイトの第2MACを生成する。この第2MACの生成方法は、上述した図4に示される第1実施形態のMAC生成方法と同じである。但し、図4のステップS112においてMACの計算に使用される送信データと上位抽出ビットとに関して、送信データは第2送信データであり、上位抽出ビットの取得元の送信カウンタ値は上記ステップS203の第1データフレームの送信により1だけ増加された送信カウンタ値である。また、図4のステップS113において、ステップS112で第2送信データを使用して算出されたMACのビット列から抽出されるビット列(抽出値)は4バイトである。この4バイトの抽出値が第2MACである。
【0103】
(ステップS205)送信部111は、第2データフレームのデータ部に、第2送信データと第2MACとを格納する。送信部111は、第2データフレームを通信バス3へ送信する。カウンタ部115は、該第2データフレームの送信により送信カウンタ値を1だけ増加させて保持する。
【0104】
上述したデータフレーム作成方法によれば、MACのデータ長を所定の長さ(例えば4バイト)に保ちつつ、データフレームのデータ部に送信データとMACとを格納することができる。これにより、メッセージを送信する送信ノードと該メッセージを受信する受信ノードが接続される通信ネットワークシステムにおけるメッセージ検査性能を向上させることができるという効果が得られる。
【0105】
なお、入力された一の送信データから分割された第1送信データと第2送信データとの各々が別々に格納された第1データフレームと第2データフレームとに同じラベルを付けることにより、受信ノードに対して、同じラベルが付された第1データフレームと第2データフレームとの各データ部内の送信データから一の送信データが構成されることを通知してもよい。
【0106】
また、上述したデータフレーム作成方法では、送信部111とMAC生成部114との両方が各々、入力された送信データを第1送信データと第2送信データとに分割したが、送信部111が、入力された送信データを第1送信データと第2送信データとに分割し、第1送信データと第2送信データとをMAC生成部114へ供給してもよい。
【0107】
また、上述したデータフレーム作成方法では、データフレームに格納するMACの生成方法として、上述した図4に示される第1実施形態のMAC生成方法を使用したがこれに限定されず、他のMAC生成方法を使用してもよい。例えば、非特許文献8に記載されるMAC生成方法を使用してもよい。
【0108】
また、データフレームに格納するMACのデータ長は、送信ノードと受信ノードとの組毎に決めてもよい。この場合、送信ノードと受信ノードとの組毎に、データフレームに格納するMACのデータ長が設定される。
【0109】
例えば、図1に示される通信ネットワークシステム1が自動車に搭載され、MCU_2が自動車内の機器を制御する電子制御ユニット(ECU)として利用されるとする。自動車内の機器を制御するための情報はデータフレームを使用してECU(MCU_2)間で送受される。該情報の送受のECU(MCU_2)の組毎に、データフレームに格納するMACのデータ長を決める。例えば、ECU(MCU_2)が有する制御機能の重要度に応じて、当該ECU(MCU_2)と通信相手のECU(MCU_2)との間で交換するデータフレームに格納するMACのデータ長を決める。例えば、該重要度が高いほどにMACのデータ長を長くする。なお、ECU(MCU_2)が有する制御機能の重要度が低い場合、当該ECU(MCU_2)と通信相手のECU(MCU_2)との間で交換するデータフレームにはMACを格納しないようにしてもよい。
【0110】
又は、ECU(MCU_2)の組毎に、データフレームを使用して送受する送信データの最大データ長に応じて、データフレームに格納するMACのデータ長を決めてもよい。例えば、最大データ長の送信データをデータ部に格納した場合のデータ部の空きサイズの範囲内で、データフレームに格納するMACのデータ長を決める。この場合、データ部には最大データ長の送信データとMACとが格納できるので、送信データを分割して別々のデータフレームで送信する必要がない。
【0111】
[MACの例]
MACとして、例えば、ハッシュ(Hash)値を算出することが挙げられる。ハッシュ値の算出方法として、例えば、SHA-256が挙げられる。又は、MACとして、例えば、Code MAC(CMAC)を算出することが挙げられる。CMACは共通鍵暗号ベースのMACである。
【0112】
また、上述したMCU_2の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行するようにしてもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disk)等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。
【0113】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータ内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0114】
1…通信ネットワークシステム、2,2−a,2−b…MCU、3…通信バス、10…CPU、11…フラッシュメモリ、12…RAM、13…ブートローダ、14…セキュアエレメント、21…セキュアRAM、22…セキュアROM、23…検証部、24…暗号処理部、111…送信部、112…受信部、113…フレーム受信処理部、114…MAC(メッセージ認証コード)生成部、115…カウンタ部、116…MAC(メッセージ認証コード)検査部、117…秘密情報記憶部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13