以下、図面を参照し、本発明の実施形態について説明する。なお、以下に示す実施形態では、車両として自動車を例に挙げて説明する。
図1は、本実施形態に係る通信システム及び自動車1001の構成例を示す図である。図1において、自動車1001は、データ保安装置1010と複数のECU(電子制御装置)1020とインフォテイメント(Infotainment)機器1040とTCU(Tele Communication Unit)1050とを備える。ECU1020は、自動車1001に備わる車載コンピュータである。ECU1020は、自動車1001のエンジン制御等の制御機能を有する。ECU1020として、例えば、エンジン制御機能を有するECU、ハンドル制御機能を有するECU、ブレーキ制御機能を有するECUなどがある。データ保安装置1010は、自動車1001に搭載されたECU1020に適用されるデータのセキュリティ(保安)の機能を有する。なお、自動車1001に搭載されたいずれかのECUをデータ保安装置1010として機能させてもよい。
データ保安装置1010と複数のECU1020は、自動車1001に備わるCAN(Controller Area Network)1030に接続される。CAN1030は通信ネットワークである。CANは車両に搭載される通信ネットワークの一つとして知られている。データ保安装置1010は、CAN1030を介して、各ECU1020との間でデータを交換する。ECU1020は、CAN1030を介して、他のECU1020との間でデータを交換する。
なお、車両に搭載される通信ネットワークとして、CAN以外の通信ネットワークを自動車1001に備え、CAN以外の通信ネットワークを介して、データ保安装置1010とECU1020との間のデータの交換、及び、ECU1020同士の間のデータの交換が行われてもよい。例えば、LIN(Local Interconnect Network)を自動車1001に備えてもよい。また、CANとLINとを自動車1001に備えてもよい。また、自動車1001において、LINに接続するECU1020を備えてもよい。また、データ保安装置1010は、CANとLINとに接続されてもよい。また、データ保安装置1010は、CANを介して該CANに接続されるECU1020との間でデータを交換し、また、LINを介して該LINに接続されるECU1020との間でデータを交換してもよい。また、ECU1020同士が、LINを介してデータを交換してもよい。
自動車1001に備わる車載コンピュータシステム1002は、データ保安装置1010と複数のECU1020とがCAN1030に接続されて構成される。本実施形態において、車載コンピュータシステム1002は、自動車1001の車載制御システムとして機能する。
データ保安装置1010は、車載コンピュータシステム1002の内部と外部の間の通信を監視する。データ保安装置1010は、車載コンピュータシステム1002の外部の装置の例として、インフォテイメント機器1040、TCU1050及び診断ポート1060と接続される。ECU1020は、データ保安装置1010を介して、車載コンピュータシステム1002の外部の装置と通信を行う。
なお、CAN1030の構成として、CAN1030が複数のバス(通信線)を備え、該複数のバスをデータ保安装置1010に接続してもよい。この場合、一つのバスに、一つのECU1020又は複数のECU1020が接続される。
自動車1001は診断ポート1060を備える。診断ポート1060として、例えばOBD(On-board Diagnostics)ポートを使用してもよい。診断ポート1060には、自動車1001の外部の装置を接続可能である。診断ポート1060に接続可能な自動車1001の外部の装置として、例えば、図1に示されるメンテナンスツール2100などがある。データ保安装置1010と、診断ポート1060に接続された装置、例えばメンテナンスツール2100とは、診断ポート1060を介して、データを交換する。メンテナンスツール2100は、OBDポートに接続される従来の診断端末の機能を有していてもよい。
自動車1001はインフォテイメント機器1040を備える。インフォテイメント機器1040として、例えば、ナビゲーション機能、位置情報サービス機能、音楽や動画などのマルチメディア再生機能、音声通信機能、データ通信機能、インターネット接続機能などを有するものが挙げられる。インフォテイメント機器1040は、一般に、車載インフォテイメント(In-Vehicle Infotainment:IVI)システムと称されたりする。
自動車1001はTCU1050を備える。TCU1050は通信装置である。TCU1050は通信モジュール1051を備える。通信モジュール1051は、無線通信ネットワークを利用して無線通信を行う。通信モジュール1051は、SIM(Subscriber Identity Module)1052を備える。SIM1052は、無線通信ネットワークを利用するための情報が書き込まれたSIMである。通信モジュール1051は、SIM1052を使用することにより該無線通信ネットワークに接続して無線通信を行うことができる。なお、SIM1052として、eSIM(Embedded Subscriber Identity Module)を使用してもよい。SIM及びeSIMはセキュアエレメント(Secure Element:SE)の例である。SIM及びeSIMは耐タンパー性(Tamper Resistant)を有する。
インフォテイメント機器1040とTCU1050とはデータを交換する。例えば、インフォテイメント機器1040とTCU1050とを通信ケーブルで接続し、インフォテイメント機器1040とTCU1050とは該通信ケーブルを介してデータを送受してもよい。インフォテイメント機器1040とTCU1050との間の通信方式として、例えば、ユニバーサル・シリアル・バス(Universal Serial Bus:USB)を使用してもよい。又は、インフォテイメント機器1040とTCU1050とをCANで接続してもよい。
データ保安装置1010はTCU1050とデータを交換する。例えば、データ保安装置1010とTCU1050とを通信ケーブルで接続し、データ保安装置1010とTCU1050とは該通信ケーブルを介してデータを送受してもよい。例えば、データ保安装置1010とTCU1050とをCANで接続してもよい。又は、データ保安装置1010とTCU1050との間の通信方式として、例えば、USBを使用してもよい。
なお、データ保安装置1010が、インフォテイメント機器1040を介して、TCU1050とデータを交換してもよい。又は、TCU1050を診断ポート1060に接続し、データ保安装置1010が、診断ポート1060を介して、該診断ポート1060に接続されたTCU1050とデータを交換してもよい。又は、データ保安装置1010が、SIM1052を含む通信モジュール1051を備えてもよい。データ保安装置1010がSIM1052を含む通信モジュール1051を備える場合には、自動車1001はTCU1050を備えなくてもよい。
又は、インフォテイメント機器1040が、SIM1052を含む通信モジュール1051を備えてもよい。インフォテイメント機器1040がSIM1052を含む通信モジュール1051を備える場合には、自動車1001はTCU1050を備えなくてもよい。インフォテイメント機器1040がSIM1052を含む通信モジュール1051を備える場合には、データ保安装置1010は、インフォテイメント機器1040に備わる通信モジュール1051とデータを交換してもよい。
データ保安装置1010は、メイン演算器1011とHSM(Hardware Security Module)1012を備える。メイン演算器1011は、データ保安装置1010の機能を実現させるためのコンピュータプログラムを実行する。HSM1012は暗号処理機能等を有する。HSM1012は耐タンパー性を有する。HSM1012はセキュアエレメントの例である。HSM1012は、データを記憶する記憶部1013を備える。メイン演算器1011はHSM1012を使用する。
ECU1020は、メイン演算器1021とSHE(Secure Hardware Extension)1022を備える。メイン演算器1021は、ECU1020の機能を実現させるためのコンピュータプログラムを実行する。SHE1022は暗号処理機能等を有する。SHE1022は耐タンパー性を有する。SHE1022はセキュアエレメントの例である。SHE1022は、データを記憶する記憶部1023を備える。メイン演算器1021はSHE1022を使用する。なお、SHEについては、例えば非特許文献3に記載されている。
なお、本実施形態では、データ保安装置1010にHSMを使用しているが、データ保安装置1010においてHSMの代わりにSHEを使用してもよい。
サーバ装置2000は、通信回線を介して、自動車1001のTCU1050の通信モジュール1051とデータを送受する。サーバ装置2000は、自動車1001のTCU1050の通信モジュール1051が利用する無線通信ネットワークを介して、該通信モジュール1051とデータを送受する。又は、サーバ装置2000は、インターネット等の通信ネットワークと該無線通信ネットワークとを介して、該通信モジュール1051とデータを送受してもよい。また、例えば、サーバ装置2000と通信モジュール1051との間をVPN(Virtual Private Network)回線等の専用回線で接続し、該専用回線でデータを送受してもよい。例えば、SIM1052に対応する無線通信ネットワークによって、VPN回線等の専用回線が提供されてもよい。
サーバ装置2000は、自動車1001のTCU1050と通信を行い、TCU1050を介して、自動車1001のデータ保安装置1010及びインフォテイメント機器1040との間でデータを送受する。
なお、データ保安装置1010がSIM1052を含む通信モジュール1051を備える場合には、サーバ装置2000は、該データ保安装置1010の通信モジュール1051と通信を行ってもよい。また、インフォテイメント機器1040がSIM1052を含む通信モジュール1051を備える場合には、サーバ装置2000は、該インフォテイメント機器1040の通信モジュール1051と通信を行ってもよい。
また、サーバ装置2000と自動車1001とを通信ケーブルで接続してもよい。例えば、サーバ装置2000と自動車1001のデータ保安装置1010とを通信ケーブルで接続するように構成してもよい。又は、サーバ装置2000と自動車1001とは、有線又は無線の通信ネットワークを介して通信を行うように構成してもよい。例えば、サーバ装置2000と自動車1001とを、有線又は無線のLAN(Local Area Network)で接続してもよい。
図2は、本実施形態に係るサーバ装置2000の構成例を示す図である。図2において、サーバ装置2000は、通信部11と、記憶部12と、鍵生成部15と、鍵送受部16と、認証処理部18とを備える。通信部11は、通信回線を介して、他の装置と通信を行う。記憶部12は、データを記憶する。鍵生成部15は、鍵を生成する。鍵送受部16は、自動車1001との間で鍵の送信又は受信を行う。認証処理部18は、自動車1001との間で認証処理を行う。
サーバ装置2000の機能は、該サーバ装置2000が備えるCPU(Central Processing Unit:中央演算処理装置)がコンピュータプログラムを実行することにより実現される。なお、サーバ装置2000として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
図3は、本実施形態に係るインフォテイメント機器1040のハードウェア構成例を示すブロック図である。図3において、インフォテイメント機器1040は、CPU110と、記憶部112と、インタフェース部116と、タッチパネル118と、マイクロフォン(マイク)120と、スピーカ122とを備える。これら各部はデータを交換できるように構成されている。
CPU110はインフォテイメント機器1040の制御を行う。この制御機能は、CPU110がコンピュータプログラムを実行することにより実現される。記憶部112は、CPU110で実行されるコンピュータプログラムや各種のデータを記憶する。記憶部112は、インフォテイメント機器1040の各種の機能を実現させるためのコンピュータプログラムを記憶する。CPU110が該コンピュータプログラムを実行することにより、インフォテイメント機器1040の各種の機能が実現される。
インタフェース部116は、自インフォテイメント機器1040の外部の装置とデータを送受する。インタフェース部116は、TCU1050とデータを送受するインタフェースと、データ保安装置1010とデータを送受するインタフェースとを備える。タッチパネル118は、液晶パネル等の表示画面を備え、表示画面へのデータ表示と、利用者による表示画面へのタッチ操作に応じたデータ入力とを行う。マイク120は音声の入力を行う。スピーカ122は音声の再生を行う。
図4は、本実施形態に係るTCU1050のハードウェア構成例を示すブロック図である。図4において、TCU1050は、CPU210と、記憶部212と、インタフェース部216と、通信モジュール1051とを備える。これら各部はデータを交換できるように構成されている。通信モジュール1051は、SIM1052を備える。
CPU210はTCU1050の制御を行う。この制御機能は、CPU210がコンピュータプログラムを実行することにより実現される。記憶部212は、CPU210で実行されるコンピュータプログラムや各種のデータを記憶する。記憶部212は、TCU1050の各種の機能を実現させるためのコンピュータプログラムを記憶する。CPU210が該コンピュータプログラムを実行することにより、TCU1050の各種の機能が実現される。
インタフェース部216は、自TCU1050の外部の装置とデータを送受する。インタフェース部216は、インフォテイメント機器1040とデータを送受するインタフェースと、データ保安装置1010とデータを送受するインタフェースとを備える。通信モジュール1051及びSIM1052は上述した通りである。
図5は、本実施形態に係る第1演算処理装置500の機能構成例を示す図である。図5において、第1演算処理装置500は、通信部501と、記憶部502と、鍵送受部503と、識別子通知部504とを備える。通信部501は、第1演算処理装置500の外部の装置との間で通信を行う。記憶部502は、データを記憶する。鍵送受部503は、サーバ装置2000との間で鍵の送信又は受信を行う。識別子通知部504は、車両対応識別子の通知を行う。
本実施形態では、自動車1001のインフォテイメント機器1040が第1演算処理装置500の機能を備えてもよい。又は、自動車1001のTCU1050が第1演算処理装置500の機能を備えてもよい。又は、自動車1001のデータ保安装置1010が第1演算処理装置500の機能を備えてもよい。
図6は、本実施形態に係る第2演算処理装置600の機能構成例を示す図である。図6において、第2演算処理装置600は、鍵生成部601と、記憶部602と、鍵送受部603と、認証処理部604とを備える。鍵生成部601は、鍵を生成する。記憶部602は、データを記憶する。鍵送受部603は、サーバ装置2000との間で鍵の送信又は受信を行う。認証処理部604は、サーバ装置2000との間で認証処理を行う。
第2演算処理装置600はセキュアエレメントである。第2演算処理装置600は、耐タンパー性を有する半導体製品であってもよい。例えば、SIM、eSIM、HSM、SHE又はIC(Integrated Circuit)チップを使用して第2演算処理装置600を構成してもよい。
本実施形態では、自動車1001のTCU1050の通信モジュール1051のSIM1052が第2演算処理装置600の機能を備えてもよい。SIM1052はセキュアエレメントである。SIM1052は耐タンパー性を有する。又は、自動車1001のデータ保安装置1010のHSM1012が第2演算処理装置600の機能を備えてもよい。HSM1012はセキュアエレメントである。HSM1012は耐タンパー性を有する。又は、自動車1001のインフォテイメント機器1040にセキュアエレメントであり耐タンパー性を有するICチップを備え、該ICチップが第2演算処理装置600の機能を備えてもよい。
[第1演算処理装置と第2演算処理装置との構成例]
本実施形態に係る第1演算処理装置と第2演算処理装置との構成例を説明する。
(第1演算処理装置と第2演算処理装置との構成例1)
第1演算処理装置と第2演算処理装置との構成例1では、第1演算処理装置500の一例としてインフォテイメント機器1040が第1演算処理装置500の機能を備え、第2演算処理装置600の一例としてTCU1050の通信モジュール1051のSIM1052が第2演算処理装置600の機能を備える。インフォテイメント機器1040のCPU110が第1演算処理装置500の機能を実現させるためのコンピュータプログラムを実行することにより、第1演算処理装置500の機能が実現される。TCU1050の通信モジュール1051のSIM1052が第2演算処理装置600の機能を実現させるためのコンピュータプログラムを実行することにより、第2演算処理装置600の機能が実現される。
第1演算処理装置500(インフォテイメント機器1040)と第2演算処理装置600(SIM1052)との間の通信は、インフォテイメント機器1040のインタフェース部116とTCU1050のインタフェース部216とがデータを送受することにより実現される。第1演算処理装置500(インフォテイメント機器1040)は、本実施形態に係る一例としてTCU1050を介して、サーバ装置2000と通信を行う。
(第1演算処理装置と第2演算処理装置との構成例2)
第1演算処理装置と第2演算処理装置との構成例2では、第1演算処理装置500の一例としてデータ保安装置1010が第1演算処理装置500の機能を備え、第2演算処理装置600の一例としてTCU1050の通信モジュール1051のSIM1052が第2演算処理装置600の機能を備える。データ保安装置1010のメイン演算器1011が第1演算処理装置500の機能を実現させるためのコンピュータプログラムを実行することにより、第1演算処理装置500の機能が実現される。TCU1050の通信モジュール1051のSIM1052が第2演算処理装置600の機能を実現させるためのコンピュータプログラムを実行することにより、第2演算処理装置600の機能が実現される。
第1演算処理装置500(データ保安装置1010)と第2演算処理装置600(SIM1052)との間の通信は、データ保安装置1010のインタフェース部(図示せず)とTCU1050のインタフェース部216とがデータを送受することにより実現される。データ保安装置1010のインタフェース部は、自データ保安装置1010の外部の装置とデータを送受する。データ保安装置1010のインタフェース部は、CAN1030を介してデータを送受するインタフェースと、インフォテイメント機器1040とデータを送受するインタフェースと、TCU1050とデータを送受するインタフェースと、診断ポート1060を介してデータを送受するインタフェースとを備える。メイン演算器1011は、該インタフェース部を介して、データ保安装置1010以外の他の装置とデータの送受を行う。第1演算処理装置500(データ保安装置1010)は、本実施形態に係る一例としてTCU1050を介して、サーバ装置2000と通信を行う。
(第1演算処理装置と第2演算処理装置との構成例3)
第1演算処理装置と第2演算処理装置との構成例3では、第1演算処理装置500の一例としてデータ保安装置1010が第1演算処理装置500の機能を備え、第2演算処理装置600の一例としてデータ保安装置1010のHSM1012が第2演算処理装置600の機能を備える。データ保安装置1010のメイン演算器1011が第1演算処理装置500の機能を実現させるためのコンピュータプログラムを実行することにより、第1演算処理装置500の機能が実現される。データ保安装置1010のHSM1012が第2演算処理装置600の機能を実現させるためのコンピュータプログラムを実行することにより、第2演算処理装置600の機能が実現される。
第1演算処理装置500(データ保安装置1010)と第2演算処理装置600(HSM1012)との間の通信は、メイン演算器1011とHSM1012とがデータを送受することにより実現される。第1演算処理装置500(データ保安装置1010)は、本実施形態に係る一例としてTCU1050を介して、サーバ装置2000と通信を行う。
(第1演算処理装置と第2演算処理装置との構成例4)
図7は、本実施形態に係るインフォテイメント機器1040の他のハードウェア構成例を示すブロック図である。図7において、図3の各部に対応する部分には同一の符号を付している。図7に示すインフォテイメント機器1040は、図3の構成においてさらに通信モジュール1051を備える。通信モジュール1051は、SIM1052を備える。通信モジュール1051は、SIM1052を使用することにより該SIM1052に対応する無線通信ネットワークに接続して無線通信を行うことができる。なお、SIM1052として、eSIMを使用してもよい。SIM及びeSIMはセキュアエレメントの例である。SIM及びeSIMは耐タンパー性を有する。
図7に示すインフォテイメント機器1040は、自己の通信モジュール1051を使用して、自動車1001の外部の装置と通信を行う。例えば、図7に示すインフォテイメント機器1040は、自己の通信モジュール1051を使用して、サーバ装置2000と通信を行ってもよい。
第1演算処理装置と第2演算処理装置との構成例4では、図7に示すインフォテイメント機器1040を適用する。第1演算処理装置500の一例としてインフォテイメント機器1040が第1演算処理装置500の機能を備え、第2演算処理装置600の一例としてインフォテイメント機器1040の通信モジュール1051のSIM1052が第2演算処理装置600の機能を備える。インフォテイメント機器1040のCPU110が第1演算処理装置500の機能を実現させるためのコンピュータプログラムを実行することにより、第1演算処理装置500の機能が実現される。インフォテイメント機器1040の通信モジュール1051のSIM1052が第2演算処理装置600の機能を実現させるためのコンピュータプログラムを実行することにより、第2演算処理装置600の機能が実現される。
第1演算処理装置500(インフォテイメント機器1040)と第2演算処理装置600(インフォテイメント機器1040の通信モジュール1051のSIM1052)との間の通信は、インフォテイメント機器1040のCPU110とインフォテイメント機器1040の通信モジュール1051とがデータを送受することにより実現される。第1演算処理装置500(インフォテイメント機器1040)は、本実施形態に係る一例としてインフォテイメント機器1040の通信モジュール1051を介して、サーバ装置2000と通信を行う。なお、第1演算処理装置500(インフォテイメント機器1040)は、本実施形態に係る一例としてTCU1050を介して、サーバ装置2000と通信を行ってもよい。また、インフォテイメント機器1040がSIM1052を含む通信モジュール1051を備える場合には、自動車1001はTCU1050を備えなくてもよい。
(第1演算処理装置と第2演算処理装置との構成例5)
第1演算処理装置と第2演算処理装置との構成例5では、第1演算処理装置500の一例としてTCU1050が第1演算処理装置500の機能を備え、第2演算処理装置600の一例としてTCU1050の通信モジュール1051のSIM1052が第2演算処理装置600の機能を備える。TCU1050のCPU210が第1演算処理装置500の機能を実現させるためのコンピュータプログラムを実行することにより、第1演算処理装置500の機能が実現される。TCU1050の通信モジュール1051のSIM1052が第2演算処理装置600の機能を実現させるためのコンピュータプログラムを実行することにより、第2演算処理装置600の機能が実現される。
第1演算処理装置500(TCU1050)と第2演算処理装置600(SIM1052)との間の通信は、CPU210と通信モジュール1051とがデータを送受することにより実現される。第1演算処理装置500(TCU1050)は、本実施形態に係る一例として通信モジュール1051により、サーバ装置2000と通信を行う。
[車両対応識別子の構成例]
本実施形態に係る車両対応識別子の構成例を説明する。車両対応識別子は、自動車1001に対応する識別子である。
(車両対応識別子の構成例1)
車両対応識別子の構成例1では、車両対応識別子は、自動車1001の車両識別番号(Vehicle Identification Number:VIN)を使用して構成される。車両対応識別子は、車両識別番号であってもよく、又は、車両識別番号と他の情報とから構成される情報であってもよい。車両識別番号(VIN)については、例えば非特許文献2に記載されている。
(車両対応識別子の構成例2)
車両対応識別子の構成例2では、車両対応識別子は、自動車1001に搭載されるSIM1052に格納されるIMSI(International Mobile Subscriber Identity)又はICCID(Integrated Circuit Card ID)を使用して構成される。車両対応識別子は、IMSIであってもよく、若しくは、IMSIと他の情報とから構成される情報であってもよい。又は、車両対応識別子は、ICCIDであってもよく、若しくは、ICCIDと他の情報とから構成される情報であってもよい。例えば、車両対応識別子は、IMSIとICCIDと車両識別番号とのうち複数を含む情報であってもよい。
(車両対応識別子の構成例3)
車両対応識別子の構成例3では、車両対応識別子は、自動車1001に搭載される機器(車載機器)の識別情報(車載機器識別情報)を使用して構成される。車両対応識別子に使用される車載機器識別情報として、例えば、通信モジュール1051の識別情報、TCU1050の識別情報、インフォテイメント機器1040の識別情報、データ保安装置1010の識別情報などの車載機器の車載機器識別情報を適用できる。また、それら各車載機器の車載機器識別情報のうち一つ又は複数の車載機器識別情報を使用して車両対応識別子を構成してもよい。車両対応識別子は、車載機器識別情報であってもよく、又は、車載機器識別情報と他の情報とから構成される情報であってもよい。例えば、車両対応識別子は、IMSIとICCIDと車両識別番号とのうち一つ又は複数と、車載機器識別情報とを含む情報であってもよい。
[鍵生成方法の例]
本実施形態に係る鍵生成方法の例を説明する。本実施形態では、鍵の例として、MAC鍵K_mac_genとENC鍵K_enc_genとを生成する。MAC鍵K_mac_genは、認証処理に使用される鍵である。ENC鍵K_enc_genは、鍵の送信又は受信における暗号通信に使用される鍵である。本実施形態では、MAC鍵K_mac_genは第1鍵に対応し、ENC鍵K_enc_genは第2鍵に対応する。
本実施形態では、所定の鍵生成関数を使用して共通鍵を生成する。鍵生成関数の例を以下に説明する。
(鍵生成関数の例1)
共通鍵=ダイジェスト(Master_Secret、V_ID、Key_ID(Nk))
但し、Master_Secretはマスタ鍵である。V_IDは車両対応識別子である。Key_ID(Nk)は鍵種別識別子である。Nkは鍵の種別を表す変数である。ダイジェスト(Master_Secret、V_ID、Key_ID(Nk))は、マスタ鍵Master_Secretと車両対応識別子V_IDと鍵種別識別子Key_ID(Nk)とから生成されるダイジェスト値である。ダイジェスト値として、例えば、ハッシュ(hash)関数により算出される値、又は、排他的論理和演算により算出される値などが挙げられる。例えば、共通鍵は、マスタ鍵Master_Secretと車両対応識別子V_IDと鍵種別識別子Key_ID(Nk)とを入力値に使用して算出されるハッシュ関数値である。
鍵種別識別子Key_ID(Nk)の値が異なれば、ダイジェスト値は異なる。鍵種別識別子Key_ID(Nk)の値を変えることによって、同じマスタ鍵Master_Secretと車両対応識別子V_IDとから、異なる共通鍵を生成することができる。例えば、MAC鍵の鍵種別識別子をKey_ID(mac)とし、ENC鍵の鍵種別識別子をKey_ID(enc)とする。この場合、マスタ鍵Master_Secretと、車両対応識別子V_IDと、鍵種別識別子Key_ID(mac),Key_ID(enc)とを使用して、
MAC鍵K_mac_gen=ダイジェスト(Master_Secret、V_ID、Key_ID(mac))、
ENC鍵K_enc_gen=ダイジェスト(Master_Secret、V_ID、Key_ID(enc))、
により、MAC鍵K_mac_genとENC鍵K_enc_genとを異なる鍵として生成することができる。
(鍵生成関数の例2)
鍵生成関数の例2では、共通鍵としてCMAC(Cipher-based Message Authentication Code)を生成する。
共通鍵=CMAC(Master_Secret;V_ID、Key_ID(Nk))
但し、CMAC(A;B)において、鍵AはCMACの生成に使用される鍵であり、データBはCMACの生成対象のデータである。これにより、鍵生成関数の例2では、共通鍵は、鍵Aを使用して生成される「データBのCMAC」である。CMAC(Master_Secret;V_ID、Key_ID(Nk))において、マスタ鍵Master_SecretはCMACの生成に使用される鍵であり、車両対応識別子V_IDと鍵種別識別子Key_ID(Nk)との連結データはCMACの生成対象のデータである。これにより、鍵生成関数の例2では、共通鍵は、マスタ鍵Master_Secretを使用して生成される「車両対応識別子V_IDと鍵種別識別子Key_ID(Nk)との連結データ、のCMAC」である。
鍵生成関数の例2において、鍵種別識別子Key_ID(Nk)の値が異なればCMACは異なる。このため、鍵生成関数の例2においても、鍵生成関数の例1と同様に、鍵種別識別子Key_ID(Nk)の値を変えることによって、同じマスタ鍵Master_Secretと車両対応識別子V_IDとから、異なる共通鍵を生成することができる。
[通信方法の例]
次に本実施形態に係る通信方法の例を説明する。なお、以下の通信方法の例の説明では、車両対応識別子の一例として車両識別番号を使用する。自動車1001の車両対応識別子は、該自動車1001の車両識別番号VINである。
また、サーバ装置2000と第1演算処理装置500との間の通信路として、暗号化通信路を使用してもよい。例えば、サーバ装置2000と第1演算処理装置500は、暗号化通信路の一例として、https(hypertext transfer protocol secure)通信を行ってもよい。また、サーバ装置2000と第1演算処理装置500は、VPN回線等の専用回線を使用して通信を行ってもよい。
<通信方法の例1>
図8を参照して本実施形態に係る通信方法の例1を説明する。図8は、本実施形態に係る通信方法の例1を示すシーケンスチャートである。
図8において、サーバ装置2000は、マスタ鍵Master_Secretを予め記憶部12に格納する。第2演算処理装置600は、マスタ鍵Master_Secretを予め記憶部602に格納する。サーバ装置2000が記憶部12に格納するマスタ鍵Master_Secretと、第2演算処理装置600が記憶部602に格納するマスタ鍵Master_Secretとは、同じである。記憶部12はサーバマスタ鍵記憶部に対応する。記憶部602は車両マスタ鍵記憶部に対応する。
第2演算処理装置600の一例としてのSIM1052には、例えば、SIM1052の製造工場でマスタ鍵Master_SecretがSIM1052に格納される。又は、自動車1001、通信モジュール1051若しくはTCU1050の製造工場などで、マスタ鍵Master_SecretがSIM1052に格納されてもよい。
通信方法の例1は、自動車1001の生産又は保守の段階(生産保守フェーズ)と、自動車1001の一般の走行の段階(市場走行フェーズ)とから構成される。
(生産保守フェーズ)
通信方法の例1の生産保守フェーズを説明する。生産保守フェーズは、自動車製造会社での自動車1001の生産時、又は、自動車整備工場や自動車販売店等での自動車1001の保守時に実施される。
(ステップS1)第1演算処理装置500は、自動車1001の車両識別番号VINを取得する。自動車1001の車両識別番号VINは、予め第1演算処理装置500に格納されてもよく、又は、所定の契機で外部から第1演算処理装置500に車両識別番号VINが通知されてもよい。
例えば、自動車1001のエンジン制御機能を有するECU1020が該自動車1001の車両識別番号VINを格納している場合、該ECU1020の起動後に該ECU1020から第1演算処理装置500に該自動車1001の車両識別番号VINを通知してもよい。
又は、自動車1001の車両識別番号VINは、例えば自動車1001の自動車製造会社や自動車販売店などで管理されている車両識別番号VINが第1演算処理装置500に供給されてもよい。例えば、自動車1001の自動車製造会社が車両識別番号VINのデータベースを備え、該データベースから通信により車両識別番号VINを自動車1001の第1演算処理装置500に通知してもよい。
(ステップS2)第1演算処理装置500の識別子通知部504は、自動車1001の車両識別番号VINを第2演算処理装置600に通知する。
(ステップS3)第2演算処理装置600の鍵生成部601は、記憶部602に格納するマスタ鍵Master_Secretと、第1演算処理装置500から通知された自動車1001の車両識別番号VINと、鍵種別識別子Key_ID(mac),Key_ID(enc)とを使用して、MAC鍵K_mac_genとENC鍵K_enc_genとを生成する。この鍵生成方法には、上述した鍵生成方法の例を適用する。鍵生成関数は、予め、鍵生成部601に設定される。鍵種別識別子Key_ID(mac),Key_ID(enc)は、予め、鍵生成部601に設定される。鍵生成部601は車両鍵生成部に対応する。
鍵生成部601は、鍵生成関数の一例として鍵生成関数の例1「共通鍵=ダイジェスト(Master_Secret、V_ID、Key_ID(Nk))」を使用して、
MAC鍵K_mac_gen=ダイジェスト(Master_Secret、VIN、Key_ID(mac))、
ENC鍵K_enc_gen=ダイジェスト(Master_Secret、VIN、Key_ID(enc))、
により、MAC鍵K_mac_genとENC鍵K_enc_genとを生成する。ここでは、車両対応識別子V_IDは自動車1001の車両識別番号VINである。また、ダイジェスト値は、その一例として、ハッシュ関数により算出される値である。
記憶部602は、MAC鍵K_mac_genとENC鍵K_enc_genとを格納する。通信方法の例1では、記憶部602は車両鍵記憶部に対応する。
なお、第2演算処理装置600は、MAC鍵K_mac_genとENC鍵K_enc_genとを生成した後に、記憶部602からマスタ鍵Master_Secretを削除してもよい。これにより、マスタ鍵Master_Secretが漏洩する可能性を低減することができる。
以上が通信方法の例1の生産保守フェーズの説明である。
(市場走行フェーズ)
通信方法の例1の市場走行フェーズを説明する。市場走行フェーズは、自動車1001の一般の走行の段階において、例えば、自動車1001のエンジン始動時や、自動車1001とサーバ装置2000との通信の開始時などに実施される。
(ステップS11)第1演算処理装置500は、自動車1001の車両識別番号VINとチャレンジ(乱数c)とをサーバ装置2000に送信する。第1演算処理装置500は、乱数cを発生し、該乱数cをチャレンジに使用する。第1演算処理装置500は、該チャレンジ(乱数c)を保持しておく。
(ステップS12)サーバ装置2000の鍵生成部15は、記憶部12に格納するマスタ鍵Master_Secretと、第1演算処理装置500から受信した自動車1001の車両識別番号VINと、鍵種別識別子Key_ID(mac),Key_ID(enc)とを使用して、MAC鍵K_mac_genとENC鍵K_enc_genとを生成する。この鍵生成方法は、上記したステップS3における第2演算処理装置600の鍵生成部601の鍵生成方法と同じである。鍵生成関数は、予め、鍵生成部15に設定される。鍵種別識別子Key_ID(mac),Key_ID(enc)は、予め、鍵生成部15に設定される。鍵生成部15はサーバ鍵生成部に対応する。
記憶部12は、MAC鍵K_mac_genとENC鍵K_enc_genとを自動車1001の車両識別番号VINに対応付けて格納する。記憶部12はサーバ鍵記憶部に対応する。
(ステップS13)サーバ装置2000の認証処理部18は、記憶部12に格納されるMAC鍵K_mac_genと、第1演算処理装置500から受信したチャレンジ(乱数c)とを使用して、レスポンスK_mac_gen(乱数c)を生成する。このレスポンス生成方法は、予め、認証処理部18に設定される。レスポンスK_mac_gen(乱数c)は、本実施形態に係る一例として、MAC鍵K_mac_genで乱数cを暗号化した暗号化データである。
なお、レスポンスK_mac_gen(乱数c)は、本実施形態に係る一例として、CMAC(K_mac_gen;乱数c)、つまり、MAC鍵K_mac_genを使用して生成される「乱数cのCMAC」であってもよい。
(ステップS14)サーバ装置2000の認証処理部18は、レスポンスK_mac_gen(乱数c)とチャレンジ(乱数s)とを自動車1001の第1演算処理装置500に送信する。認証処理部18は、乱数sを発生し、該乱数sをチャレンジに使用する。認証処理部18は、該チャレンジ(乱数s)を保持しておく。
(ステップS15)第1演算処理装置500は、サーバ装置2000に送信したチャレンジ(乱数c)と、サーバ装置2000から受信したレスポンスK_mac_gen(乱数c)及びチャレンジ(乱数s)とを第2演算処理装置600に送信する。
(ステップS16)第2演算処理装置600の認証処理部604は、第1演算処理装置500から受信したレスポンスK_mac_gen(乱数c)の検証を行う。このレスポンス検証方法として、サーバ装置2000の認証処理部18におけるレスポンス生成方法に対応する方法が、予め、認証処理部604に設定される。レスポンスK_mac_gen(乱数c)の検証において、認証処理部604は、第1演算処理装置500から受信したチャレンジ(乱数c)と、記憶部602に格納されるMAC鍵K_mac_genと、を使用する。
例えば、レスポンスK_mac_gen(乱数c)がMAC鍵K_mac_genによる乱数cの暗号化データである場合、認証処理部604は、記憶部602に格納されるMAC鍵K_mac_genを使用して、第1演算処理装置500から受信したチャレンジ(乱数c)を暗号化し、該暗号化により生成した暗号化データとレスポンスK_mac_gen(乱数c)とを比較する。この比較の結果、両者が一致する場合にはレスポンスK_mac_gen(乱数c)の検証が合格であり、両者が不一致の場合にはレスポンスK_mac_gen(乱数c)の検証が不合格である。
なお、レスポンスK_mac_gen(乱数c)がMAC鍵K_mac_genによる乱数cの暗号化データである場合の他の検証方法として、認証処理部604は、記憶部602に格納されるMAC鍵K_mac_genを使用して、第1演算処理装置500から受信したレスポンスK_mac_gen(乱数c)を復号し、該復号の結果と第1演算処理装置500から受信したチャレンジ(乱数c)とを比較してもよい。この比較の結果、両者が一致する場合にはレスポンスK_mac_gen(乱数c)の検証が合格であり、両者が不一致の場合にはレスポンスK_mac_gen(乱数c)の検証が不合格である。
例えば、レスポンスK_mac_gen(乱数c)がCMAC(K_mac_gen;乱数c)である場合、認証処理部604は、記憶部602に格納されるMAC鍵K_mac_genを使用して、第1演算処理装置500から受信したチャレンジ(乱数c)のCMACを生成し、生成したCMACとレスポンスK_mac_gen(乱数c)とを比較する。この比較の結果、両者が一致する場合にはレスポンスK_mac_gen(乱数c)の検証が合格であり、両者が不一致の場合にはレスポンスK_mac_gen(乱数c)の検証が不合格である。
レスポンスK_mac_gen(乱数c)の検証が合格である場合には、ステップS17に進む。一方、レスポンスK_mac_gen(乱数c)の検証が不合格である場合には、図8の処理を終了する。レスポンスK_mac_gen(乱数c)の検証が不合格である場合には、第2演算処理装置600は所定のエラー処理を実行してもよい。
(ステップS17)第2演算処理装置600の認証処理部604は、記憶部602に格納されるMAC鍵K_mac_genと、第1演算処理装置500から受信したチャレンジ(乱数s)とを使用して、レスポンスK_mac_gen(乱数s)を生成する。このレスポンス生成方法は、予め、認証処理部604に設定される。レスポンスK_mac_gen(乱数s)は、本実施形態に係る一例として、MAC鍵K_mac_genで乱数sを暗号化した暗号化データである。
なお、レスポンスK_mac_gen(乱数s)は、本実施形態に係る一例として、CMAC(K_mac_gen;乱数s)、つまり、MAC鍵K_mac_genを使用して生成される「乱数sのCMAC」であってもよい。
(ステップS18)第2演算処理装置600の認証処理部604は、レスポンスK_mac_gen(乱数s)を第1演算処理装置500に送信する。
(ステップS19)第1演算処理装置500は、第2演算処理装置600から受信したレスポンスK_mac_gen(乱数s)をサーバ装置2000に送信する。
(ステップS20)サーバ装置2000の認証処理部18は、自動車1001の第1演算処理装置500から受信したレスポンスK_mac_gen(乱数s)の検証を行う。このレスポンス検証方法として、自動車1001の第2演算処理装置600の認証処理部604におけるレスポンス生成方法に対応する方法が、予め、認証処理部18に設定される。レスポンスK_mac_gen(乱数s)の検証において、認証処理部18は、自動車1001の第1演算処理装置500に送信したチャレンジ(乱数s)と、記憶部12に格納されるMAC鍵K_mac_genと、を使用する。
例えば、レスポンスK_mac_gen(乱数s)がMAC鍵K_mac_genによる乱数sの暗号化データである場合、認証処理部18は、記憶部12に格納されるMAC鍵K_mac_genを使用して、自動車1001の第1演算処理装置500に送信したチャレンジ(乱数s)を暗号化し、該暗号化により生成した暗号化データとレスポンスK_mac_gen(乱数s)とを比較する。この比較の結果、両者が一致する場合にはレスポンスK_mac_gen(乱数s)の検証が合格であり、両者が不一致の場合にはレスポンスK_mac_gen(乱数s)の検証が不合格である。
なお、レスポンスK_mac_gen(乱数s)がMAC鍵K_mac_genによる乱数sの暗号化データである場合の他の検証方法として、認証処理部18は、記憶部12に格納されるMAC鍵K_mac_genを使用して、自動車1001の第1演算処理装置500から受信したレスポンスK_mac_gen(乱数s)を復号し、該復号の結果と第1演算処理装置500に送信したチャレンジ(乱数s)とを比較してもよい。この比較の結果、両者が一致する場合にはレスポンスK_mac_gen(乱数s)の検証が合格であり、両者が不一致の場合にはレスポンスK_mac_gen(乱数s)の検証が不合格である。
例えば、レスポンスK_mac_gen(乱数s)がCMAC(K_mac_gen;乱数s)である場合、認証処理部18は、記憶部12に格納されるMAC鍵K_mac_genを使用して、自動車1001の第1演算処理装置500に送信したチャレンジ(乱数s)のCMACを生成し、生成したCMACとレスポンスK_mac_gen(乱数s)とを比較する。この比較の結果、両者が一致する場合にはレスポンスK_mac_gen(乱数s)の検証が合格であり、両者が不一致の場合にはレスポンスK_mac_gen(乱数s)の検証が不合格である。
レスポンスK_mac_gen(乱数s)の検証が合格である場合には、ステップS21に進む。一方、レスポンスK_mac_gen(乱数s)の検証が不合格である場合には、図8の処理を終了する。レスポンスK_mac_gen(乱数s)の検証が不合格である場合には、サーバ装置2000は所定のエラー処理を実行してもよい。
サーバ装置2000の認証処理部18はサーバ認証処理部に対応する。自動車1001の第2演算処理装置600の認証処理部604は車両認証処理部に対応する。
(ステップS21)サーバ装置2000の鍵送受部16は、セッション鍵K_comを生成する。例えば、鍵送受部16は、乱数を発生し、該乱数に基づいてセッション鍵K_comを生成してもよい。記憶部12は、セッション鍵K_comを自動車1001の車両識別番号VINに対応付けて格納する。セッション鍵K_comは第3鍵に対応する。
(ステップS22)サーバ装置2000の鍵送受部16は、記憶部12に格納されるENC鍵K_enc_genを使用してセッション鍵K_comを暗号化し、暗号化セッション鍵K_enc_gen(K_com)を生成する。鍵送受部16は、暗号化セッション鍵K_enc_gen(K_com)を自動車1001の第1演算処理装置500に送信する。
(ステップS23)第1演算処理装置500は、サーバ装置2000から受信した暗号化セッション鍵K_enc_gen(K_com)を第2演算処理装置600に送信する。
(ステップS24)第2演算処理装置600の鍵送受部603は、第1演算処理装置500から受信した暗号化セッション鍵K_enc_gen(K_com)を、記憶部602に格納されるENC鍵K_enc_genで復号する。この復号の結果としてセッション鍵K_comが取得される。これにより、サーバ装置2000と自動車1001とは同じセッション鍵K_comを保持する。
(ステップS25)第2演算処理装置600の鍵送受部603は、セッション鍵K_comを第1演算処理装置500に送信する。第1演算処理装置500の記憶部502は、第2演算処理装置600から受信したセッション鍵K_comを格納する。
通信方法の例1では、自動車1001の第2演算処理装置600の鍵送受部603は車両鍵送受部に対応する。サーバ装置2000の鍵送受部16はサーバ鍵送受部に対応する。
(ステップS26)サーバ装置2000の通信部11と、自動車1001の第1演算処理装置500の通信部501とは、セッション鍵K_comを使用して暗号通信を行う。この暗号通信では、セッション鍵K_comを使用してデータが暗号化された暗号化データK_com(データ)が、サーバ装置2000の通信部11と、自動車1001の第1演算処理装置500の通信部501との間で送受される。これにより、サーバ装置2000の通信部11と、自動車1001の第1演算処理装置500の通信部501との間で、セッション鍵K_comを使用した暗号通信路が構築される。
サーバ装置2000の通信部11は、サーバ通信部に対応する。自動車1001の第1演算処理装置500の通信部501は、車両通信部に対応する。
なお、自動車1001の第2演算処理装置600の鍵送受部603がセッション鍵K_comを生成してサーバ装置2000に供給してもよい。
以上が通信方法の例1の市場走行フェーズの説明である。
上述した通信方法の例1によれば、サーバ装置2000と自動車1001の第2演算処理装置600とは、MAC鍵K_mac_gen(第1鍵)を使用して認証処理を行い、ENC鍵K_enc_gen(第2鍵)を使用する暗号通信によりセッション鍵K_com(第3鍵)を送受する。これにより、サーバ装置2000と自動車1001の第1演算処理装置500との間の暗号通信に使用されるセッション鍵K_com(第3鍵)の安全性が向上する。このことは、自動車1001が外部のサーバ装置2000と通信を行う際の安全性を向上させる効果を奏する。
また、サーバ装置2000と自動車1001との間の認証処理に使用されるMAC鍵K_mac_gen(第1鍵)は、自動車1001においてセキュアエレメントである第2演算処理装置600で保管される。これにより、サーバ装置2000と自動車1001との間の認証の信頼性を向上させることができる。
<通信方法の例2>
図9を参照して本実施形態に係る通信方法の例2を説明する。図9は、本実施形態に係る通信方法の例2を示すシーケンスチャートである。図9において図8の各ステップに対応する部分には同一の符号を付している。
図9において、サーバ装置2000は、マスタ鍵Master_Secretを予め記憶部12に格納する。第2演算処理装置600は、マスタ鍵Master_Secretを予め記憶部602に格納する。サーバ装置2000が記憶部12に格納するマスタ鍵Master_Secretと、第2演算処理装置600が記憶部602に格納するマスタ鍵Master_Secretとは、同じである。記憶部12はサーバマスタ鍵記憶部に対応する。通信方法の例2では、記憶部602は車両マスタ鍵記憶部及び第2車両鍵記憶部に対応する。
第2演算処理装置600の一例としてのSIM1052には、例えば、SIM1052の製造工場でマスタ鍵Master_SecretがSIM1052に格納される。又は、自動車1001、通信モジュール1051若しくはTCU1050の製造工場などで、マスタ鍵Master_SecretがSIM1052に格納されてもよい。
通信方法の例2は、通信方法の例1と同様に生産保守フェーズと市場走行フェーズとから構成される。
(生産保守フェーズ)
通信方法の例2の生産保守フェーズを説明する。通信方法の例2の生産保守フェーズにおいて、ステップS1、ステップS2及びステップS3が実行される。ステップS1、ステップS2及びステップS3は、通信方法の例1と同じである。次いでステップS4が実行される。
(ステップS4)第2演算処理装置600は、ENC鍵K_enc_genを第1演算処理装置500に送信する。第1演算処理装置500の記憶部502は、第2演算処理装置600から受信したENC鍵K_enc_genを格納する。通信方法の例2では、記憶部502は第1車両鍵記憶部に対応する。
以上が通信方法の例2の生産保守フェーズの説明である。
(市場走行フェーズ)
通信方法の例2の市場走行フェーズを説明する。通信方法の例2の市場走行フェーズにおいて、ステップS11からステップS22までが実行される。ステップS11からステップS22までは、通信方法の例1と同じである。
(ステップS24a)第1演算処理装置500の鍵送受部503は、サーバ装置2000から受信した暗号化セッション鍵K_enc_gen(K_com)を、記憶部502に格納されるENC鍵K_enc_genで復号する。この復号の結果としてセッション鍵K_comが取得される。これにより、サーバ装置2000と自動車1001とは同じセッション鍵K_comを保持する。第1演算処理装置500の記憶部502は、セッション鍵K_comを格納する。
通信方法の例2では、自動車1001の第1演算処理装置500の鍵送受部503は車両鍵送受部に対応する。サーバ装置2000の鍵送受部16はサーバ鍵送受部に対応する。
なお、自動車1001の第1演算処理装置500の鍵送受部503がセッション鍵K_comを生成してサーバ装置2000に供給してもよい。
次いでステップS26が実行される。ステップS26は通信方法の例1と同じである。
以上が通信方法の例2の市場走行フェーズの説明である。
上述した通信方法の例2によれば、サーバ装置2000と自動車1001の第2演算処理装置600とは、MAC鍵K_mac_gen(第1鍵)を使用して認証処理を行う。また、サーバ装置2000と自動車1001の第1演算処理装置500とは、ENC鍵K_enc_gen(第2鍵)を使用する暗号通信によりセッション鍵K_com(第3鍵)を送受する。これにより、サーバ装置2000と自動車1001の第1演算処理装置500との間の暗号通信に使用されるセッション鍵K_com(第3鍵)の安全性が向上する。このことは、自動車1001が外部のサーバ装置2000と通信を行う際の安全性を向上させる効果を奏する。
また、サーバ装置2000と自動車1001との間の認証処理に使用されるMAC鍵K_mac_gen(第1鍵)は、自動車1001においてセキュアエレメントである第2演算処理装置600で保管される。これにより、サーバ装置2000と自動車1001との間の認証の信頼性を向上させることができる。
また、サーバ装置2000と自動車1001との間の暗号通信に使用されるENC鍵K_enc_gen(第2鍵)は、自動車1001において第1演算処理装置500で保管される。セキュアエレメントに限定されない第1演算処理装置500には、比較的処理能力の高いCPUを使用することにより、サーバ装置2000と自動車1001との間の暗号通信の通信速度を向上させることができる。
<通信方法の例3>
図10を参照して本実施形態に係る通信方法の例3を説明する。図10は、本実施形態に係る通信方法の例3を示すシーケンスチャートである。図10において図8の各ステップに対応する部分には同一の符号を付している。
通信方法の例3は、通信方法の例1と同様に生産保守フェーズと市場走行フェーズとから構成される。通信方法の例3では、生産保守フェーズにおいてサーバ装置2000が鍵を生成する。以下、通信方法の例1と異なる点を主に説明する。
サーバ装置2000と第2演算処理装置600とは、通信方法の例1と同様に、同じマスタ鍵Master_Secretを予め格納する。
(生産保守フェーズ)
通信方法の例3の生産保守フェーズを説明する。通信方法の例3の生産保守フェーズにおいて、ステップS1、ステップS2及びステップS3が実行される。ステップS1、ステップS2及びステップS3は、通信方法の例1と同じである。また、ステップS2aが実行される。
(ステップS2a)第1演算処理装置500の識別子通知部504は、自動車1001の車両識別番号VINをサーバ装置2000に送信する。通信方法の例3では、識別子通知部504は車両対応識別子通知部に対応する。
次いでステップS12が実行される。該ステップS12は、通信方法の例1の市場走行フェーズのステップS12と同じである。サーバ装置2000の記憶部12は、MAC鍵K_mac_genとENC鍵K_enc_genとを自動車1001の車両識別番号VINに対応付けて格納する。
以上が通信方法の例3の生産保守フェーズの説明である。
(市場走行フェーズ)
通信方法の例3の市場走行フェーズを説明する。通信方法の例3の市場走行フェーズにおいて、ステップS11及びステップS13からステップS26までが実行される。ステップS11及びステップS13からステップS26までは、通信方法の例1と同じである。
なお、通信方法の例1と同様に、自動車1001の第2演算処理装置600の鍵送受部603がセッション鍵K_comを生成してサーバ装置2000に供給してもよい。
以上が通信方法の例3の市場走行フェーズの説明である。
上述した通信方法の例3によれば、サーバ装置2000と自動車1001の第2演算処理装置600とは、MAC鍵K_mac_gen(第1鍵)を使用して認証処理を行い、ENC鍵K_enc_gen(第2鍵)を使用する暗号通信によりセッション鍵K_com(第3鍵)を送受する。これにより、サーバ装置2000と自動車1001の第1演算処理装置500との間の暗号通信に使用されるセッション鍵K_com(第3鍵)の安全性が向上する。このことは、自動車1001が外部のサーバ装置2000と通信を行う際の安全性を向上させる効果を奏する。
また、通信方法の例3によれば、サーバ装置2000は生産保守フェーズにおいてMAC鍵K_mac_gen(第1鍵)及びENC鍵K_enc_gen(第2鍵)を生成する。これにより、市場走行フェーズにおける処理時間の短縮を図ることができる。
また、サーバ装置2000と自動車1001との間の認証処理に使用されるMAC鍵K_mac_gen(第1鍵)は、自動車1001においてセキュアエレメントである第2演算処理装置600で保管される。これにより、サーバ装置2000と自動車1001との間の認証の信頼性を向上させることができる。
<通信方法の例4>
図11を参照して本実施形態に係る通信方法の例4を説明する。図11は、本実施形態に係る通信方法の例4を示すシーケンスチャートである。図11において図9の各ステップに対応する部分には同一の符号を付している。
通信方法の例4は、通信方法の例2と同様に生産保守フェーズと市場走行フェーズとから構成される。通信方法の例4では、通信方法の例3と同様に、生産保守フェーズにおいてサーバ装置2000が鍵を生成する。以下、通信方法の例2と異なる点を主に説明する。
サーバ装置2000と第2演算処理装置600とは、通信方法の例2と同様に、同じマスタ鍵Master_Secretを予め格納する。
(生産保守フェーズ)
通信方法の例4の生産保守フェーズを説明する。通信方法の例4の生産保守フェーズにおいて、ステップS1、ステップS2、ステップS3及びステップS4が実行される。ステップS1、ステップS2、ステップS3及びステップS4は、通信方法の例2と同じである。また、ステップS2a及びステップS12が実行される。ステップS2a及びステップS12は、通信方法の例3と同じである。サーバ装置2000の記憶部12は、MAC鍵K_mac_genとENC鍵K_enc_genとを自動車1001の車両識別番号VINに対応付けて格納する。
以上が通信方法の例4の生産保守フェーズの説明である。
(市場走行フェーズ)
通信方法の例4の市場走行フェーズを説明する。通信方法の例4の市場走行フェーズにおいて、ステップS11と、ステップS13からステップS22までと、ステップS24aと、ステップS26とが実行される。ステップS11と、ステップS13からステップS22までと、ステップS26とは、通信方法の例1と同じである。ステップS24aは、通信方法の例2と同じである。
なお、通信方法の例2と同様に、自動車1001の第1演算処理装置500の鍵送受部503がセッション鍵K_comを生成してサーバ装置2000に供給してもよい。
以上が通信方法の例4の市場走行フェーズの説明である。
上述した通信方法の例4によれば、サーバ装置2000と自動車1001の第2演算処理装置600とは、MAC鍵K_mac_gen(第1鍵)を使用して認証処理を行う。また、サーバ装置2000と自動車1001の第1演算処理装置500とは、ENC鍵K_enc_gen(第2鍵)を使用する暗号通信によりセッション鍵K_com(第3鍵)を送受する。これにより、サーバ装置2000と自動車1001の第1演算処理装置500との間の暗号通信に使用されるセッション鍵K_com(第3鍵)の安全性が向上する。このことは、自動車1001が外部のサーバ装置2000と通信を行う際の安全性を向上させる効果を奏する。
また、通信方法の例4によれば、サーバ装置2000は生産保守フェーズにおいてMAC鍵K_mac_gen(第1鍵)及びENC鍵K_enc_gen(第2鍵)を生成する。これにより、市場走行フェーズにおける処理時間の短縮を図ることができる。
また、サーバ装置2000と自動車1001との間の認証処理に使用されるMAC鍵K_mac_gen(第1鍵)は、自動車1001においてセキュアエレメントである第2演算処理装置600で保管される。これにより、サーバ装置2000と自動車1001との間の認証の信頼性を向上させることができる。
また、サーバ装置2000と自動車1001との間の暗号通信に使用されるENC鍵K_enc_gen(第2鍵)は、自動車1001において第1演算処理装置500で保管される。セキュアエレメントに限定されない第1演算処理装置500には、比較的処理能力の高いCPUを使用することにより、サーバ装置2000と自動車1001との間の暗号通信の通信速度を向上させることができる。
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
車両対応識別子の一例としてIMSI又はICCIDを使用する場合、例えば車両対応識別子がIMSIである場合には、SIM1052は、IMSIを格納した時点以降であれば任意のタイミングで、MAC鍵K_mac_genとENC鍵K_enc_genとを生成し、生成したMAC鍵K_mac_genとENC鍵K_enc_genとを保持してもよい。例えば、SIM1052の製造時に、該SIM1052にIMSIを書き込んで、該SIM1052がMAC鍵K_mac_genとENC鍵K_enc_genとを生成して保持してもよい。
また、車両対応識別子の一例としてIMSI又はICCIDを使用する場合、例えば車両対応識別子がIMSIである場合には、SIM1052は、自己のIMSIを第1演算処理装置500に通知する。第1演算処理装置500の識別子通知部504は、SIM1052から通知されたIMSIをサーバ装置2000に通知する。
また、車両対応識別子の一例としてIMSI又はICCIDを使用する場合、例えば車両対応識別子がIMSIである場合においてSIM1052が別の自動車1001で再利用されるときには、該SIM1052が保持しているMAC鍵K_mac_genとENC鍵K_enc_genとを、該別の自動車1001で使用してもよい。
なお、上述した実施形態では、第2演算処理装置600がマスタ鍵Master_Secretを保持するが、第2演算処理装置600はマスタ鍵Master_Secretを保持しなくてもよい。第2演算処理装置600は、マスタ鍵Master_Secretを保持せず、外部で生成されたMAC鍵K_mac_genとENC鍵K_enc_genとを保持してもよい。例えば、第2演算処理装置600としてSIM1052を使用する場合、SIM1052の製造工場の鍵生成装置が、サーバ装置2000と同じマスタ鍵Master_Secretを保持する。該鍵生成装置は、該マスタ鍵Master_Secretを使用してMAC鍵K_mac_genとENC鍵K_enc_genとを生成し、生成したMAC鍵K_mac_genとENC鍵K_enc_genとをSIM1052に書き込む。この場合、車両対応識別子には、SIM1052のIMSI又はICCIDを使用してもよい。
なお、第1演算処理装置500がJTAG(Joint Test Action Group)等のデバッグポートを備える場合、該デバッグポートに対してID(識別子)による認証機能を設けてもよい。これにより、第1演算処理装置500に対するメモリダンプやタッピング攻撃などの攻撃によってセッション鍵K_comが漏洩することを抑制することができる。例えば、インフォテイメント機器1040やデータ保安装置1010のデバッグポートに対してIDによる認証機能を設けてもよい。
上述した実施形態では、データ保安装置1010やECU1020にHSMやSHEを使用したが、HSM及びSHE以外の暗号処理チップを使用してもよい。データ保安装置1010に対して、例えば「TPM(Trusted Platform Module)f」と呼ばれる暗号処理チップを使用してもよい。TPMfは耐タンパー性を有する。TPMfはセキュアエレメントの例である。ECU1020に対して、例えば「TPMt」と呼ばれる暗号処理チップを使用してもよい。TPMtは耐タンパー性を有する。TPMtはセキュアエレメントの例である。
上述した実施形態は、例えば、自動車の製造工場や整備工場、販売店等において、自動車1001に適用してもよい。
上述した実施形態では、車両として自動車を例に挙げたが、原動機付自転車や鉄道車両等の自動車以外の他の車両にも適用可能である。
また、上述した各装置の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disc)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。