(57)【要約】      （修正有）【課題】ＥＣＵ等の車載コンピュータに備わる暗号処理チップに応じた暗号処理手順を実行することによって、車載制御システムにおけるデータの安全性を向上させること。【解決手段】鍵管理ＥＣＵ１０のＣＰＵ１１は、ＳＨＥ（Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  Ｅｘｔｅｎｓｉｏｎ）−Ａ１３によって鍵交換鍵を使用して、ＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録するための鍵登録メッセージを生成させ、該鍵登録メッセージを被認証ＥＣＵ２０へ送信する。被認証ＥＣＵ２０のＣＰＵ２１は、該鍵登録メッセージによってＳＨＥ−Ｂ２３にＭＡＣ鍵を登録する。【選択図】図４
2018023162.tif 000002
【特許請求の範囲】
【請求項１】
車両に備わる車載コンピュータシステムにおいて、
第１の演算処理装置と第１のＳＨＥ（Secure Hardware Extension）と第１の記憶部とを備える第１の車載コンピュータと、
第２の演算処理装置と第２のＳＨＥと第２の記憶部とを備える第２の車載コンピュータと、を備え、
前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、
前記第１のＳＨＥには、メッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が設定されてあり、
前記第１の演算処理装置は、
前記第１のＳＨＥによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記第２のＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させ、
前記第１のＳＨＥによって前記ＭＥＫ鍵を使用して、前記第２のＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記第２のＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、
前記第２の演算処理装置は、該鍵登録メッセージによって前記第２のＳＨＥに鍵交換鍵を登録し、
前記第１の演算処理装置は、前記第１のＳＨＥによって前記鍵交換鍵を使用して、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、
前記第２の演算処理装置は、該鍵登録メッセージによって前記第２のＳＨＥにＭＡＣ鍵を登録する、
車載コンピュータシステム。
【請求項２】
前記第２の記憶部は、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを不揮発性メモリに格納し、
前記第２の演算処理装置は、前記不揮発性メモリに格納されている鍵登録メッセージによって前記第２のＳＨＥにＭＡＣ鍵を登録し、
前記第１の車載コンピュータと前記第２の車載コンピュータとは、前記不揮発性メモリに格納されている鍵登録メッセージによって前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵に登録されたＭＡＣ鍵に基づいて正当性の認証処理を実行する、
請求項１に記載の車載コンピュータシステム。
【請求項３】
車両に備わる車載コンピュータシステムにおいて、
第１の演算処理装置とＨＳＭ（Hardware Security Module）と第１の記憶部とを備える第１の車載コンピュータと、
第２の演算処理装置とＳＨＥ（Secure Hardware Extension）と第２の記憶部とを備える第２の車載コンピュータと、を備え、
前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、
前記ＨＳＭには、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が格納されてあり、
前記第１の演算処理装置は、
前記ＨＳＭによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記ＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させ、
前記ＨＳＭによって前記ＭＥＫ鍵を使用して、前記ＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記ＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、
前記第２の演算処理装置は、該鍵登録メッセージによって前記ＳＨＥに鍵交換鍵を登録し、
前記第１の演算処理装置は、前記ＨＳＭによって前記鍵交換鍵を使用して、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、
前記第２の演算処理装置は、該鍵登録メッセージによって前記ＳＨＥにＭＡＣ鍵を登録する、
車載コンピュータシステム。
【請求項４】
前記第２の記憶部は、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを不揮発性メモリに格納し、
前記第２の演算処理装置は、前記不揮発性メモリに格納されている鍵登録メッセージによって前記ＳＨＥにＭＡＣ鍵を登録し、
前記第１の車載コンピュータと前記第２の車載コンピュータとは、前記不揮発性メモリに格納されている鍵登録メッセージによって前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵に登録されたＭＡＣ鍵に基づいて正当性の認証処理を実行する、
請求項３に記載の車載コンピュータシステム。
【請求項５】
請求項１から４のいずれか１項に記載の車載コンピュータシステムを備える車両。
【請求項６】
車両に備わる車載コンピュータシステムが、
第１の演算処理装置と第１のＳＨＥ（Secure Hardware Extension）と第１の記憶部とを備える第１の車載コンピュータと、
第２の演算処理装置と第２のＳＨＥと第２の記憶部とを備える第２の車載コンピュータと、を備え、
前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、
前記第１のＳＨＥには、メッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が設定されてあり、
前記第１の演算処理装置が、前記第１のＳＨＥによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記第２のＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、
前記第１の演算処理装置が、前記第１のＳＨＥによって前記ＭＥＫ鍵を使用して、前記第２のＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記第２のＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
前記第２の演算処理装置が、該鍵登録メッセージによって前記第２のＳＨＥに鍵交換鍵を登録するステップと、
前記第１の演算処理装置が、前記第１のＳＨＥによって前記鍵交換鍵を使用して、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
前記第２の演算処理装置が、該鍵登録メッセージによって前記第２のＳＨＥにＭＡＣ鍵を登録するステップと、
を含む管理方法。
【請求項７】
車両に備わる車載コンピュータシステムが、
第１の演算処理装置とＨＳＭ（Hardware Security Module）と第１の記憶部とを備える第１の車載コンピュータと、
第２の演算処理装置とＳＨＥ（Secure Hardware Extension）と第２の記憶部とを備える第２の車載コンピュータと、を備え、
前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、
前記ＨＳＭには、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が格納されてあり、
前記第１の演算処理装置が、前記ＨＳＭによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記ＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、
前記第１の演算処理装置が、前記ＨＳＭによって前記ＭＥＫ鍵を使用して、前記ＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記ＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
前記第２の演算処理装置が、該鍵登録メッセージによって前記ＳＨＥに鍵交換鍵を登録するステップと、
前記第１の演算処理装置が、前記ＨＳＭによって前記鍵交換鍵を使用して、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
前記第２の演算処理装置が、該鍵登録メッセージによって前記ＳＨＥにＭＡＣ鍵を登録するステップと、
を含む管理方法。
【請求項８】
車両に備わる車載コンピュータシステムが、
第１の演算処理装置と第１のＳＨＥ（Secure Hardware Extension）と第１の記憶部とを備える第１の車載コンピュータと、
第２の演算処理装置と第２のＳＨＥと第２の記憶部とを備える第２の車載コンピュータと、を備え、
前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、
前記第１のＳＨＥには、メッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が設定されてある前記車載コンピュータシステムの前記第１の演算処理装置としてのコンピュータに、
前記第１のＳＨＥによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記第２のＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、
前記第１のＳＨＥによって前記ＭＥＫ鍵を使用して、前記第２のＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記第２のＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
前記第１のＳＨＥによって前記鍵交換鍵を使用して、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
を実行させるためのコンピュータプログラム。
【請求項９】
車両に備わる車載コンピュータシステムが、
第１の演算処理装置とＨＳＭ（Hardware Security Module）と第１の記憶部とを備える第１の車載コンピュータと、
第２の演算処理装置とＳＨＥ（Secure Hardware Extension）と第２の記憶部とを備える第２の車載コンピュータと、を備え、
前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、
前記ＨＳＭには、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が格納されてある前記車載コンピュータシステムの前記第１の演算処理装置としてのコンピュータに、
前記ＨＳＭによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記ＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、
前記ＨＳＭによって前記ＭＥＫ鍵を使用して、前記ＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記ＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
前記ＨＳＭによって前記鍵交換鍵を使用して、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載コンピュータシステム、車両、管理方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来、自動車は、ＥＣＵ（Electronic Control Unit：電子制御装置）を有し、ＥＣＵによってエンジン制御等の機能を実現する。ＥＣＵは、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。複数のＥＣＵをＣＡＮ（Controller Area Network）に接続して構成される車載制御システムについてのセキュリティ技術が例えば非特許文献１に記載されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】竹森敬祐、“セキュアエレメントを基点とした車載制御システムの保護  −要素技術の整理と考察−”、電子情報通信学会、信学技報、vol. 114、no. 508、pp. 73-78、2015年3月
【非特許文献２】STMicroelectronics，“AN4240 Application Note”，Sep. 2013.，インターネット＜ＵＲＬ：http://www.st.com/web/en/resource/technical/document/application_note/DM00075575.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＥＣＵは暗号処理チップを備え、暗号処理チップが暗号処理を実行することによって、車載制御システムにおけるデータの安全性の向上を図っている。しかしながら、ＥＣＵに備わる暗号処理チップの種類によっては、データの安全性が十分に保てない可能性があった。
【０００５】
本発明は、このような事情を考慮してなされたものであり、ＥＣＵ等の車載コンピュータに備わる暗号処理チップに応じた暗号処理手順を実行することによって、車載制御システムにおけるデータの安全性を向上させることができる、車載コンピュータシステム、車両、管理方法、及びコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００６】
（１）本発明の一態様は、車両に備わる車載コンピュータシステムにおいて、第１の演算処理装置と第１のＳＨＥ（Secure Hardware Extension）と第１の記憶部とを備える第１の車載コンピュータと、第２の演算処理装置と第２のＳＨＥと第２の記憶部とを備える第２の車載コンピュータと、を備え、前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、前記第１のＳＨＥには、メッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が設定されてあり、前記第１の演算処理装置は、前記第１のＳＨＥによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記第２のＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させ、前記第１のＳＨＥによって前記ＭＥＫ鍵を使用して、前記第２のＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記第２のＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、前記第２の演算処理装置は、該鍵登録メッセージによって前記第２のＳＨＥに鍵交換鍵を登録し、前記第１の演算処理装置は、前記第１のＳＨＥによって前記鍵交換鍵を使用して、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、前記第２の演算処理装置は、該鍵登録メッセージによって前記第２のＳＨＥにＭＡＣ鍵を登録する、車載コンピュータシステムである。
（２）本発明の一態様は、上記（１）の車載コンピュータシステムにおいて、前記第２の記憶部は、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを不揮発性メモリに格納し、前記第２の演算処理装置は、前記不揮発性メモリに格納されている鍵登録メッセージによって前記第２のＳＨＥにＭＡＣ鍵を登録し、前記第１の車載コンピュータと前記第２の車載コンピュータとは、前記不揮発性メモリに格納されている鍵登録メッセージによって前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵に登録されたＭＡＣ鍵に基づいて正当性の認証処理を実行する、車載コンピュータシステムである。
【０００７】
（３）本発明の一態様は、車両に備わる車載コンピュータシステムにおいて、第１の演算処理装置とＨＳＭ（Hardware Security Module）と第１の記憶部とを備える第１の車載コンピュータと、第２の演算処理装置とＳＨＥ（Secure Hardware Extension）と第２の記憶部とを備える第２の車載コンピュータと、を備え、前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、前記ＨＳＭには、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が格納されてあり、前記第１の演算処理装置は、前記ＨＳＭによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記ＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させ、前記ＨＳＭによって前記ＭＥＫ鍵を使用して、前記ＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記ＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、前記第２の演算処理装置は、該鍵登録メッセージによって前記ＳＨＥに鍵交換鍵を登録し、前記第１の演算処理装置は、前記ＨＳＭによって前記鍵交換鍵を使用して、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信し、前記第２の演算処理装置は、該鍵登録メッセージによって前記ＳＨＥにＭＡＣ鍵を登録する、車載コンピュータシステムである。
（４）本発明の一態様は、上記（３）の車載コンピュータシステムにおいて、前記第２の記憶部は、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを不揮発性メモリに格納し、前記第２の演算処理装置は、前記不揮発性メモリに格納されている鍵登録メッセージによって前記ＳＨＥにＭＡＣ鍵を登録し、前記第１の車載コンピュータと前記第２の車載コンピュータとは、前記不揮発性メモリに格納されている鍵登録メッセージによって前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵に登録されたＭＡＣ鍵に基づいて正当性の認証処理を実行する、車載コンピュータシステムである。
【０００８】
（５）本発明の一態様は、上記（１）から（４）のいずれかの車載コンピュータシステムを備える車両である。
【０００９】
（６）本発明の一態様は、車両に備わる車載コンピュータシステムが、第１の演算処理装置と第１のＳＨＥ（Secure Hardware Extension）と第１の記憶部とを備える第１の車載コンピュータと、第２の演算処理装置と第２のＳＨＥと第２の記憶部とを備える第２の車載コンピュータと、を備え、前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、前記第１のＳＨＥには、メッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が設定されてあり、前記第１の演算処理装置が、前記第１のＳＨＥによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記第２のＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、前記第１の演算処理装置が、前記第１のＳＨＥによって前記ＭＥＫ鍵を使用して、前記第２のＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記第２のＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、前記第２の演算処理装置が、該鍵登録メッセージによって前記第２のＳＨＥに鍵交換鍵を登録するステップと、前記第１の演算処理装置が、前記第１のＳＨＥによって前記鍵交換鍵を使用して、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、前記第２の演算処理装置が、該鍵登録メッセージによって前記第２のＳＨＥにＭＡＣ鍵を登録するステップと、を含む管理方法である。
【００１０】
（７）本発明の一態様は、車両に備わる車載コンピュータシステムが、第１の演算処理装置とＨＳＭ（Hardware Security Module）と第１の記憶部とを備える第１の車載コンピュータと、第２の演算処理装置とＳＨＥ（Secure Hardware Extension）と第２の記憶部とを備える第２の車載コンピュータと、を備え、前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、前記ＨＳＭには、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が格納されてあり、前記第１の演算処理装置が、前記ＨＳＭによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記ＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、前記第１の演算処理装置が、前記ＨＳＭによって前記ＭＥＫ鍵を使用して、前記ＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記ＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、前記第２の演算処理装置が、該鍵登録メッセージによって前記ＳＨＥに鍵交換鍵を登録するステップと、前記第１の演算処理装置が、前記ＨＳＭによって前記鍵交換鍵を使用して、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、前記第２の演算処理装置が、該鍵登録メッセージによって前記ＳＨＥにＭＡＣ鍵を登録するステップと、を含む管理方法である。
【００１１】
（８）本発明の一態様は、車両に備わる車載コンピュータシステムが、第１の演算処理装置と第１のＳＨＥ（Secure Hardware Extension）と第１の記憶部とを備える第１の車載コンピュータと、第２の演算処理装置と第２のＳＨＥと第２の記憶部とを備える第２の車載コンピュータと、を備え、前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、前記第１のＳＨＥには、メッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が設定されてある前記車載コンピュータシステムの前記第１の演算処理装置としてのコンピュータに、前記第１のＳＨＥによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記第２のＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、前記第１のＳＨＥによって前記ＭＥＫ鍵を使用して、前記第２のＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記第２のＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、前記第１のＳＨＥによって前記鍵交換鍵を使用して、前記第２のＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、を実行させるためのコンピュータプログラムである。
【００１２】
（９）本発明の一態様は、車両に備わる車載コンピュータシステムが、第１の演算処理装置とＨＳＭ（Hardware Security Module）と第１の記憶部とを備える第１の車載コンピュータと、第２の演算処理装置とＳＨＥ（Secure Hardware Extension）と第２の記憶部とを備える第２の車載コンピュータと、を備え、前記第１の車載コンピュータと前記第２の車載コンピュータとは前記車両に備わる通信ネットワークに接続され、前記ＨＳＭには、メッセージ認証コードの生成に前記第２の車載コンピュータの識別子と共に使用されるマスター鍵が格納されてある前記車載コンピュータシステムの前記第１の演算処理装置としてのコンピュータに、前記ＨＳＭによって、前記第２の車載コンピュータの識別子と前記マスター鍵とを使用して前記ＳＨＥのＭＥＫ鍵であるメッセージ認証コードを生成させるステップと、
前記ＨＳＭによって前記ＭＥＫ鍵を使用して、前記ＳＨＥの暗号化処理及び復号処理に使用可能な一のＫＥＹ＿Ｎ鍵、又は、前記ＳＨＥのメッセージ認証コードの生成処理及び検証処理に使用可能な一のＫＥＹ＿Ｎ鍵に鍵交換鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、前記ＨＳＭによって前記鍵交換鍵を使用して、前記ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する鍵登録メッセージを生成させ、該鍵登録メッセージを前記第２の車載コンピュータへ送信するステップと、を実行させるためのコンピュータプログラムである。
【発明の効果】
【００１３】
本発明によれば、ＥＣＵ等の車載コンピュータに備わる暗号処理チップに応じた暗号処理手順を実行することによって、車載制御システムにおけるデータの安全性を向上させることができるという効果が得られる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。
【図２】第１実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。
【図３】第１実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。
【図４】第１実施形態に係るＭＡＣ鍵配信方法を示すシーケンスチャートである。
【図５】第１実施形態に係るＭＡＣ鍵配信方法を示すシーケンスチャートである。
【図６】第２実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。
【図７】第２実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。
【図８】第２実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。
【図９】第２実施形態に係るＭＡＣ鍵配信方法を示すシーケンスチャートである。
【図１０】第２実施形態に係るＭＡＣ鍵配信方法を示すシーケンスチャートである。
【図１１】第３実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。
【図１２】第３実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。
【図１３】第３実施形態に係る鍵交換鍵配信処理を説明する。
【図１４】第４実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。
【図１５】第４実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。
【図１６】第４実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。
【図１７】第４実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。
【図１８】第５実施形態に係る鍵生成装置１００の構成例を示す図である。
【図１９】第５実施形態に係る鍵生成方法の一例を示すシーケンスチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照し、本発明の実施形態について説明する。なお、以下に示す実施形態では、車両として自動車を例に挙げて説明する。
【００１６】
［第１実施形態］
図１は、本実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。図１において、自動車１に備わる車載コンピュータシステムは、第１のＥＣＵ（電子制御装置）１０と複数の第２のＥＣＵ２０とがＣＡＮ３０に接続されて構成される。この車載コンピュータシステムは、自動車１の車載制御システムに適用できる。
【００１７】
第１のＥＣＵ１０及び第２のＥＣＵ２０は、自動車１に備わる車載コンピュータである。第１のＥＣＵ１０は、自動車１に搭載されたＥＣＵのうち、鍵管理機能を有するＥＣＵである。以下、第１のＥＣＵ１０のことを鍵管理ＥＣＵ１０と称する場合がある。
【００１８】
第２のＥＣＵ２０は、自動車１に搭載されたＥＣＵのうち、エンジン制御等の機能を有するＥＣＵである。第２のＥＣＵ２０として、例えば、エンジン制御機能を有するＥＣＵ、ハンドル制御機能を有するＥＣＵ、ブレーキ制御機能を有するＥＣＵなどがある。第２のＥＣＵ２０は、第１のＥＣＵ１０によって正当性が認証されるＥＣＵである。以下、第２のＥＣＵ２０のことを被認証ＥＣＵ２０と称する場合がある。
【００１９】
ＣＡＮ３０は通信ネットワークである。ＣＡＮは車両に搭載される通信ネットワークの一つとして知られている。第１のＥＣＵ１０は、ＣＡＮ３０を介して、各第２のＥＣＵ２０との間でデータを交換する。第２のＥＣＵ２０は、ＣＡＮ３０を介して、他の第２のＥＣＵ２０との間でデータを交換する。
【００２０】
なお、車両に搭載される通信ネットワークとして、ＣＡＮ以外の通信ネットワークを自動車１に備え、ＣＡＮ以外の通信ネットワークを介して、第１のＥＣＵ１０と第２のＥＣＵ２０との間のデータの交換、及び、第２のＥＣＵ２０同士の間のデータの交換が行われてもよい。例えば、ＬＩＮ（Local Interconnect Network）を自動車１に備えてもよい。
また、ＣＡＮとＬＩＮとを自動車１に備えてもよい。また、自動車１において、ＬＩＮに接続する第２のＥＣＵ２０を備えてもよい。また、第１のＥＣＵ１０は、ＣＡＮとＬＩＮとに接続されてもよい。また、第１のＥＣＵ１０は、ＣＡＮを介して該ＣＡＮに接続される第２のＥＣＵ２０との間でデータを交換し、また、ＬＩＮを介して該ＬＩＮに接続される第２のＥＣＵ２０との間でデータを交換してもよい。また、第２のＥＣＵ２０同士が、ＬＩＮを介してデータを交換してもよい。
【００２１】
第１のＥＣＵ１０は、ＣＰＵ（Central Processing Unit：中央演算処理装置）１１と記憶部１２とＳＨＥ（Secure Hardware Extension）１３とを備える。ＣＰＵ１１は、第１のＥＣＵ１０の機能を実現させるためのコンピュータプログラムを実行する。記憶部１２は、ＣＰＵ１１で実行されるコンピュータプログラムや各種のデータを記憶する。ＳＨＥ１３は暗号処理機能を有する。ＳＨＥ１３は耐タンパー性（Tamper Resistant）を有する。ＳＨＥ１３はセキュアエレメント（Secure Element：SE）の例である。セキュアエレメントは耐タンパー性を有する。以下、ＳＨＥ１３のことをＳＨＥ−Ａ１３と称する場合がある。
【００２２】
第２のＥＣＵ２０は、ＣＰＵ２１と記憶部２２とＳＨＥ２３とを備える。ＣＰＵ２１は、第２のＥＣＵ２０の機能を実現させるためのコンピュータプログラムを実行する。記憶部２２は、ＣＰＵ２１で実行されるコンピュータプログラムや各種のデータを記憶する。
ＳＨＥ２３は暗号処理機能を有する。ＳＨＥ２３は耐タンパー性を有する。ＳＨＥ２３はセキュアエレメントの例である。以下、ＳＨＥ２３のことをＳＨＥ−Ｂ２３と称する場合がある。
【００２３】
以下の説明において、ＳＨＥ１３とＳＨＥ２３とを特に区別しないときは単にＳＨＥと称する。
【００２４】
［ＳＨＥの説明］
本実施形態では、第１のＥＣＵ１０及び第２のＥＣＵ２０は、暗号処理チップの一例であるＳＨＥを備える。以下、ＳＨＥについて説明する。ＳＨＥは暗号処理機能を有する。
ＳＨＥの暗号処理機能の一つとして暗号化及び復号がある。ＳＨＥの暗号処理機能の一つとしてＭＡＣ（Message Authentication Code：メッセージ認証コード）の生成及び検証がある。ＳＨＥが扱うＭＡＣとしてＣＭＡＣ（Cipher-based Message Authentication Code）がある。
【００２５】
（ＳＨＥの鍵の構成）
ＳＨＥでは、複数の種類の鍵を使用することができる。ＳＨＥの鍵には、MASTER_ECU_KEY（MEK）鍵、BOOT_MAC_KEY（BMK）鍵、BOOT_MAC（BM）鍵、KEY_N鍵（但し、Ｎは１から１０までのいずれかの整数）、及び、RAM_KEY鍵がある。以下にＳＨＥの鍵について説明する。
【００２６】
（１）MASTER_ECU_KEY（MEK）鍵
ＭＥＫ鍵は、ＭＥＫ鍵、ＢＭＫ鍵、ＢＭ鍵、及び、ＫＥＹ＿Ｎ鍵の更新に使用される鍵である。ＭＥＫ鍵は、暗号化処理及び復号処理、並びに、ＭＡＣの生成処理及び検証処理には使用できない。ＭＥＫ鍵の書き換え回数には制限がある。
【００２７】
（２）BOOT_MAC_KEY（BMK）鍵
ＢＭＫ鍵は、セキュアブートにおけるＣＭＡＣの算出に使用される鍵である。ＢＭＫ鍵は、ＢＭＫ鍵及びＢＭ鍵の更新に使用できる。ＢＭＫ鍵は、暗号化処理及び復号処理、並びに、ＭＡＣの生成処理及び検証処理には使用できない。ＢＭＫ鍵の書き換え回数には制限がある。
【００２８】
（３）BOOT_MAC（BM）鍵
ＢＭ鍵は、セキュアブートにおけるＣＭＡＣの期待値である。ＢＭ鍵は、暗号化処理及び復号処理、並びに、ＭＡＣの生成処理及び検証処理には使用できない。ＢＭ鍵の書き換え回数には制限がある。
【００２９】
（４）ＫＥＹ＿Ｎ鍵（但し、Ｎは１から１０までのいずれかの整数）
ＫＥＹ＿Ｎ鍵として、ＫＥＹ＿１〜１０の１０個がある。各ＫＥＹ＿Ｎ鍵は、暗号化処理及び復号処理に使用可能なモード０と、ＭＡＣの生成処理及び検証処理に使用可能なモード１とのうちいずれか一方のモードで使用できる。各ＫＥＹ＿Ｎ鍵は、自己の鍵のみの更新に使用できる。例えば、ＫＥＹ＿１鍵を使用すれば、ＫＥＹ＿１鍵を更新できる。各ＫＥＹ＿Ｎ鍵の書き換え回数には制限がある。
【００３０】
（５）ＲＡＭ＿ＫＥＹ鍵
ＲＡＭ＿ＫＥＹ鍵は、コマンドCMD_LOAD_PLAIN_KEYによって、平文で登録できる鍵である。また、ＲＡＭ＿ＫＥＹ鍵は、コマンドCMD_LOAD_KEYによって、値Ｍ１，Ｍ２及びＭ３を使用して登録することもできる。但し、コマンドCMD_LOAD_KEYによってＲＡＭ＿ＫＥＹ鍵を登録する場合には、後述する値Ｍ２にカウンタ値Counterを含まない。このため、リプレイ攻撃に対する脆弱性がある。ＲＡＭ＿ＫＥＹ鍵の更新には、ＫＥＹ＿Ｎ鍵を使用できる。ＲＡＭ＿ＫＥＹ鍵の書き換え回数には制限がない。
【００３１】
（ＳＨＥの鍵の更新方法）
（１）コマンドCMD_LOAD_KEY
コマンドCMD_LOAD_KEYによって、ＭＥＫ鍵、ＢＭＫ鍵、ＢＭ鍵、ＫＥＹ＿Ｎ鍵、及び、ＲＡＭ＿ＫＥＹ鍵を更新できる。コマンドCMD_LOAD_KEYでは、次の式（１）で示される値Ｍ１，Ｍ２及びＭ３を生成し、鍵の更新を行う。
【００３２】
【数１】
2018023162.tif 000003
【００３３】
但し、「Ａ||Ｂ」はＡとＢとの連結を示す。
【００３４】
（２）コマンドCMD_LOAD_PLAIN_KEY
コマンドCMD_LOAD_PLAIN_KEYによって、ＲＡＭ＿ＫＥＹ鍵を平文で登録できる。コマンドCMD_LOAD_PLAIN_KEYによって平文で登録できる鍵は、ＲＡＭ＿ＫＥＹ鍵のみである。
【００３５】
以上がＳＨＥについての説明である。
【００３６】
［ＳＨＥに対する鍵の割り当て］
本実施形態では、ＳＨＥに対して、以下に示すように、初期鍵、鍵交換鍵、及び、ＭＡＣ鍵を割り当てる。
【００３７】
（１）初期鍵：ＫＥＹ＿１鍵
初期鍵は、第１のＥＣＵ１０が第２のＥＣＵ２０の正当性を認証する処理で使用される。第２のＥＣＵ２０において、予め、例えば第２のＥＣＵ２０の製造時などに、自己の初期鍵がＳＨＥ２３のＫＥＹ＿１鍵に設定される。ＫＥＹ＿１鍵は、ＭＡＣの生成処理及び検証処理に使用可能な鍵である。
【００３８】
（２）鍵交換鍵：ＫＥＹ＿２鍵（モード０（暗号化処理及び復号処理）に使用）、ＫＥＹ＿３鍵（モード１（ＭＡＣの生成処理及び検証処理）に使用）
鍵交換鍵は、第１のＥＣＵ１０が第２のＥＣＵ２０へＭＡＣ鍵を配信する処理で使用される。鍵交換鍵は、第１のＥＣＵ１０によって生成されて第２のＥＣＵ２０へ配信される。鍵交換鍵は、自動車１内で共通の値が使用される。
【００３９】
（３）ＭＡＣ鍵：ＲＡＭ＿ＫＥＹ鍵
ＭＡＣ鍵は、ＭＡＣの生成処理及び検証処理で使用される。ＭＡＣ鍵は、第１のＥＣＵ１０によって生成されて鍵交換鍵で暗号化されてから、正当性が認証済みである第２のＥＣＵ２０へ配信される。
【００４０】
［ＳＨＥにおける鍵の初期値］
ＳＨＥにおいて、ＳＨＥに固有の各鍵の初期値は０である。このままでは、ＳＨＥに対して不正に鍵が設定される可能性がある。このため、本実施形態では、第２のＥＣＵ２０のＳＨＥ２３に対して、次の式（２）で示される値のうち、値ＫMASTER_ECU_KEYをＭＥＫ鍵に初期設定し、値ＫBOOT_MAC_KEYをＢＭＫ鍵に初期設定し、値ＫＫＥＹ＜Ｎ＞をＫＥＹ＿Ｎ鍵に初期設定する。これにより、第２のＥＣＵ２０のＳＨＥ２３に対して、不正に鍵が設定されることを防止する。なお、第１のＥＣＵ１０のＳＨＥ１３に対しても、第２のＥＣＵ２０と同様に、鍵の初期設定を行ってもよい。
【００４１】
【数２】
2018023162.tif 000004
【００４２】
但し、ＭＳはマスター鍵（MASTER_SECRET：MS）である。マスター鍵ＭＳは、初期鍵の生成に使用される。ＩＤａは、第２のＥＣＵ２０の識別子である。ＣMASTER_ECU_KEYはＭＥＫ鍵を表す文字列である。ＣBOOT_MAC_KEYはＢＭＫ鍵を表す文字列である。ＣＫＥＹ＿ＮはＫＥＹ＿Ｎ鍵を表す文字列である。各文字列ＣMASTER_ECU_KEY、ＣBOOT_MAC_KEY、及びＣＫＥＹ＿Ｎを含めることによって、鍵の種類を識別することができる。なお、上記の式（２）において、具体的にはダイジェストとしてＣＭＡＣを使用する。
【００４３】
次に、図２から図５を参照して、本実施形態に係るＥＣＵ認証処理、鍵交換鍵配信処理、及び、ＭＡＣ鍵配信処理を説明する。
【００４４】
［ＥＣＵ認証処理］
図２を参照して本実施形態に係るＥＣＵ認証処理を説明する。図２は、本実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。鍵管理ＥＣＵ１０のＳＨＥ−Ａ１３のＫＥＹ＿１０鍵には、予め、例えば鍵管理ＥＣＵ１０の製造時などに、マスター鍵ＭＳが設定される。被認証ＥＣＵ２０の初期鍵は、次の式（３）により算出される。
【００４５】
【数３】
2018023162.tif 000005
【００４６】
具体的にはダイジェストとしてＣＭＡＣを使用する。これにより、被認証ＥＣＵ２０の初期鍵は、次の式（４）により算出される。
【００４７】
【数４】
2018023162.tif 000006
【００４８】
但し、ＥＣＵ＿ＩＤは被認証ＥＣＵ２０の識別子である。上記の式（４）のＣＭＡＣの算出には、マスター鍵ＭＳが使用される。
【００４９】
本実施形態では、鍵管理ＥＣＵ１０は、被認証ＥＣＵ２０の初期鍵を共有する処理を実行し、共有された初期鍵に基づいてチャレンジ・アンド・レスポンス方式により被認証ＥＣＵ２０の正当性を検証する。
【００５０】
（ステップＳ１０１）被認証ＥＣＵ２０において、ＣＰＵ２１は、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを鍵管理ＥＣＵ１０へ送信する。
【００５１】
（ステップＳ１０２）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと文字列ＣＫＥＹ＿１とを使用して、コマンドCMD_GENERATE_MAC（ＥＣＵ＿ＩＤ||ＣＫＥＹ＿１）をＳＨＥ−Ａ１３へ入力する。
【００５２】
（ステップＳ１０３）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_GENERATE_MAC（ＥＣＵ＿ＩＤ||ＣＫＥＹ＿１）に応じて、ＣＭＡＣを生成する。このＣＭＡＣの生成では、ＳＨＥ−Ａ１３は、ＫＥＹ＿１０鍵に設定されているマスター鍵ＭＳを使用して、上記の式（４）によりＣＭＡＣを算出する。この算出されるＣＭＡＣは、被認証ＥＣＵ２０の初期鍵であって被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿１鍵に設定されている値と同じ値である。ＳＨＥ−Ａ１３は、生成したＣＭＡＣをＣＰＵ１１へ出力する。
【００５３】
（ステップＳ１０４）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取ったＣＭＡＣを使用して、コマンドCMD_LOAD_PLAIN_KEY（ＣＭＡＣ）をＳＨＥ−Ａ１３へ入力する。
【００５４】
（ステップＳ１０５）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_LOAD_PLAIN_KEY（ＣＭＡＣ）に応じて、該コマンドCMD_LOAD_PLAIN_KEY（ＣＭＡＣ）に含まれるＣＭＡＣをＲＡＭ＿ＫＥＹ鍵に登録する。これにより、ＳＨＥ−Ａ１３のＲＡＭ＿ＫＥＹ鍵に、被認証ＥＣＵ２０の初期鍵が登録されたことになる。
ＳＨＥ−Ａ１３は、ＲＡＭ＿ＫＥＹ鍵の登録完了「ＯＫ」をＣＰＵ１１へ応答する。
【００５５】
（ステップＳ１０６）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、コマンドCMD_RNDをＳＨＥ−Ａ１３へ入力する。
【００５６】
（ステップＳ１０７）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_RNDに応じて、乱数ｒａｎｄを生成する。ＳＨＥ−Ａ１３は、生成した乱数ｒａｎｄをＣＰＵ１１へ出力する。
【００５７】
（ステップＳ１０８）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取った乱数ｒａｎｄを被認証ＥＣＵ２０へ送信する。
【００５８】
（ステップＳ１０９）被認証ＥＣＵ２０において、ＣＰＵ２１は、鍵管理ＥＣＵ１０から受信した乱数ｒａｎｄを使用して、コマンドCMD_GENERATE_MAC（ｒａｎｄ）をＳＨＥ−Ｂ２３へ入力する。
【００５９】
（ステップＳ１１０）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_GENERATE_MAC（ｒａｎｄ）に応じて、ＣＭＡＣを生成する。このＣＭＡＣの生成では、ＳＨＥ−Ｂ２３は、ＫＥＹ＿１鍵に設定されている初期鍵を使用して、該コマンドCMD_GENERATE_MAC（ｒａｎｄ）に含まれる乱数ｒａｎｄについてＣＭＡＣを算出する。ＳＨＥ−Ｂ２３は、生成したＣＭＡＣをＣＰＵ２１へ出力する。
【００６０】
（ステップＳ１１１）被認証ＥＣＵ２０において、ＣＰＵ２１は、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとＳＨＥ−Ｂ２３から受け取ったＣＭＡＣとを鍵管理ＥＣＵ１０へ送信する。
【００６１】
（ステップＳ１１２）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０へ送信した乱数ｒａｎｄと、被認証ＥＣＵ２０から受信したＣＭＡＣとを使用して、コマンドCMD_VERIFY_MAC（ｒａｎｄ，ＣＭＡＣ）をＳＨＥ−Ａ１３へ入力する。
【００６２】
（ステップＳ１１３）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_VERIFY_MAC（ｒａｎｄ，ＣＭＡＣ）に応じて、該コマンドCMD_VERIFY_MAC（ｒａｎｄ，ＣＭＡＣ）に含まれるＣＭＡＣを検証する。このＣＭＡＣの検証では、ＳＨＥ−Ａ１３は、ＲＡＭ＿ＫＥＹ鍵に登録されている値つまり被認証ＥＣＵ２０の初期鍵を使用する。ＳＨＥ−Ａ１３は、ＣＭＡＣの検証結果「合格（ＯＫ）又は不合格（ＮＧ）」をＣＰＵ１１へ出力する。ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取ったＣＭＡＣの検証結果が合格（ＯＫ）である場合には被認証ＥＣＵ２０の正当性の認証が合格であると判断し、一方、ＳＨＥ−Ａ１３から受け取ったＣＭＡＣの検証結果が不合格（ＮＧ）である場合には被認証ＥＣＵ２０の正当性の認証が不合格であると判断する。
【００６３】
［鍵交換鍵配信処理］
図３を参照して本実施形態に係る鍵交換鍵配信処理を説明する。図３は、本実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。本実施形態では、２個の鍵交換鍵を使用する。一方の第１の鍵交換鍵は暗号化処理及び復号処理に使用される。もう一方の第２の鍵交換鍵はＭＡＣの生成処理及び検証処理に使用される。第１の鍵交換鍵と第２の鍵交換鍵とは異なる値であることが好ましい。鍵管理ＥＣＵ１０は、第１の鍵交換鍵と第２の鍵交換鍵とを被認証ＥＣＵ２０へ配信する。被認証ＥＣＵ２０において、第１の鍵交換鍵はＳＨＥ−Ｂ２３のＫＥＹ＿２鍵に設定され、第２の鍵交換鍵はＳＨＥ−Ｂ２３のＫＥＹ＿３鍵に設定される。
【００６４】
以下、図３を参照して第１の鍵交換鍵を配信する場合を例に挙げて説明する。第２の鍵交換鍵を配信する場合も、第１の鍵交換鍵を配信する場合と同様である。
【００６５】
（ステップＳ１２１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、鍵交換鍵の配信先の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと文字列ＣMASTER_ECU_KEYとを使用して、コマンドCMD_GENERATE_MAC（ＥＣＵ＿ＩＤ||ＣMASTER_ECU_KEY）をＳＨＥ−Ａ１３へ入力する。
【００６６】
（ステップＳ１２２）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_GENERATE_MAC（ＥＣＵ＿ＩＤ||ＣMASTER_ECU_KEY）に応じて、ＣＭＡＣを生成する。このＣＭＡＣの生成では、ＳＨＥ−Ａ１３は、ＫＥＹ＿１０鍵に設定されているマスター鍵ＭＳを使用して、上記の式（４）と同様にＣＭＡＣを算出する。この算出されるＣＭＡＣは、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＭＥＫ鍵に設定されている値と同じ値である。ＳＨＥ−Ａ１３は、生成したＣＭＡＣをＣＰＵ１１へ出力する。
【００６７】
（ステップＳ１２３）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取ったＣＭＡＣを使用して、コマンドCMD_LOAD_PLAIN_KEY（ＣＭＡＣ）をＳＨＥ−Ａ１３へ入力する。
【００６８】
（ステップＳ１２４）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_LOAD_PLAIN_KEY（ＣＭＡＣ）に応じて、該コマンドCMD_LOAD_PLAIN_KEY（ＣＭＡＣ）に含まれるＣＭＡＣをＲＡＭ＿ＫＥＹ鍵に登録する。これにより、ＳＨＥ−Ａ１３のＲＡＭ＿ＫＥＹ鍵に、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＭＥＫ鍵が登録されたことになる。ＳＨＥ−Ａ１３は、ＲＡＭ＿ＫＥＹ鍵の登録完了「ＯＫ」をＣＰＵ１１へ応答する。
【００６９】
（ステップＳ１２５）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、コマンドCMD_RNDをＳＨＥ−Ａ１３へ入力する。
【００７０】
（ステップＳ１２６）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_RNDに応じて、乱数ｒａｎｄを生成する。ＳＨＥ−Ａ１３は、生成した乱数ｒａｎｄをＣＰＵ１１へ出力する。この乱数ｒａｎｄは、第１の鍵交換鍵つまり被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿２鍵に使用される。
【００７１】
（ステップＳ１２７）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、ＣＰＵ１１がＳＨＥ−Ａ１３から受け取った乱数ｒａｎｄつまり第１の鍵交換鍵を、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿２鍵に登録するための各値である。ＣＰＵ１１は、値Ｍ２を生成する際には、コマンド「CMD_ENC_CBC with RAM_KEY」によってＳＨＥ−Ａ１３に暗号化処理を実行させる。値Ｍ２には、ＣＰＵ１１がＳＨＥ−Ａ１３から受け取った乱数ｒａｎｄつまり第１の鍵交換鍵を含める。ＣＰＵ１１は、値Ｍ３を生成する際には、コマンド「CMD_GENERATE_MAC with RAM_KEY」によってＳＨＥ−Ａ１３にＣＭＡＣを生成させる。ＣＰＵ１１は、生成した値Ｍ１，Ｍ２及びＭ３を被認証ＥＣＵ２０へ送信する。
【００７２】
（ステップＳ１２８）被認証ＥＣＵ２０において、ＣＰＵ２１は、鍵管理ＥＣＵ１０から受信した値Ｍ１，Ｍ２及びＭ３を使用して、コマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）をＳＨＥ−Ｂ２３へ入力する。
【００７３】
（ステップＳ１２９）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）に応じて、該コマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）に含まれる乱数ｒａｎｄつまり第１の鍵交換鍵をＫＥＹ＿２鍵に登録する。ＳＨＥ−Ｂ２３は、ＫＥＹ＿２鍵の登録完了「ＯＫ」をＣＰＵ１１へ応答する。
【００７４】
（ステップＳ１３０）被認証ＥＣＵ２０において、ＣＰＵ２１は、第１の鍵交換鍵の登録完了「ＯＫ」を鍵管理ＥＣＵ１０へ送信する。
【００７５】
（ステップＳ１３１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０へ送信した乱数ｒａｎｄつまり第１の鍵交換鍵を使用して、コマンドCMD_ENC_CBC（ｒａｎｄ）をＳＨＥ−Ａ１３へ入力する。
【００７６】
（ステップＳ１３２）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_ENC_CBC（ｒａｎｄ）に応じて、該コマンドCMD_ENC_CBC（ｒａｎｄ）に含まれる乱数ｒａｎｄつまり第１の鍵交換鍵をＫＥＹ＿９鍵で暗号化する。ＫＥＹ＿９鍵には、予め、暗号化処理及び復号処理に使用可能なモード０として値が設定される。
ＳＨＥ−Ａ１３は、暗号化された第１の鍵交換鍵をＣＰＵ１１へ出力する。ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取った暗号化された第１の鍵交換鍵を記憶部１２に格納する。
【００７７】
なお、初回の第１の鍵交換鍵の配信時には、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３の鍵登録に必要となるＭＥＫ鍵又は予め設定されるＫＥＹ＿２鍵は、被認証ＥＣＵ２０毎に異なる。このため、鍵管理ＥＣＵ１０は、被認証ＥＣＵ２０毎に、鍵登録メッセージ（値Ｍ１，Ｍ２及びＭ３）を個別に作成する必要がある。一方、二回目以降の第１の鍵交換鍵の更新時には、各被認証ＥＣＵ２０の第１の鍵交換鍵（ＳＨＥ−Ｂ２３のＫＥＹ＿２鍵の値）は同一になっている。このため、二回目以降の第１の鍵交換鍵の更新では、第１の鍵交換鍵を使用して鍵登録メッセージを作成することが可能であり、被認証ＥＣＵ２０毎に個別に鍵登録メッセージを作成する必要はない。この点についても、第２の鍵交換鍵を配信する場合に同様に適用できる。
【００７８】
［ＭＡＣ鍵配信処理］
図４及び図５を参照して本実施形態に係るＭＡＣ鍵配信処理を説明する。図４及び図５は、本実施形態に係るＭＡＣ鍵配信方法を示すシーケンスチャートである。自動車１の車載制御システムにおいて、ＭＡＣ鍵には、「高速な処理速度」と「頻繁な書き換えに対する耐性」との二つの要求がある。ＳＨＥのＫＥＹ＿Ｎ鍵には、書き換え回数に制限がある。このため、本実施形態では、ＳＨＥのＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵を登録する。ＭＡＣ鍵にＲＡＭ＿ＫＥＹ鍵を使用することにより、暗号化及び復号、並びに、ＭＡＣの生成及び検証を高速に行うことができる。ＫＥＹ＿Ｎ鍵とＲＡＭ＿ＫＥＹ鍵とを各々ＭＡＣ鍵に使用した場合の処理速度の比較を以下に示す。ＫＥＹ＿Ｎ鍵とＲＡＭ＿ＫＥＹ鍵の両者共に同じベンチマークテストを実施した結果である。
ＫＥＹ＿Ｎ鍵をＭＡＣ鍵に使用した場合のＭＡＣ生成処理時間：４２．８マイクロ秒
ＲＡＭ＿ＫＥＹ鍵をＭＡＣ鍵に使用した場合のＭＡＣ生成処理時間：１９．１マイクロ秒
【００７９】
なお、コマンドCMD_LOAD_KEYによってＲＡＭ＿ＫＥＹ鍵を登録する場合には、鍵登録メッセージ内の値Ｍ２にカウンタ値Counterを含まないので、リプレイ攻撃に対する脆弱性がある。このため、本実施形態では、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３が鍵管理ＥＣＵ１０の正当性を認証するように構成する。具体的には、ＳＨＥ−Ｂ２３が乱数を発生し、この乱数を鍵管理ＥＣＵ１０へ送り、鍵管理ＥＣＵ１０が該乱数のＣＭＡＣを生成してＳＨＥ−Ｂ２３へ送り、ＳＨＥ−Ｂ２３が該ＣＭＡＣを検証する。
【００８０】
被認証ＥＣＵ２０のＳＨＥ−Ｂ２３には、ＫＥＹ＿２鍵に第１の鍵交換鍵（暗号化処理及び復号処理に使用される）が登録されており、ＫＥＹ＿３鍵に第２の鍵交換鍵（ＭＡＣの生成処理及び検証処理に使用される）が登録されている。鍵管理ＥＣＵ１０の記憶部１２は、第１の鍵交換鍵を鍵管理ＥＣＵ１０のＳＨＥ−Ａ１３のＫＥＹ＿９鍵で暗号化したデータ（暗号化第１の鍵交換鍵）と、第２の鍵交換鍵を鍵管理ＥＣＵ１０のＳＨＥ−Ａ１３のＫＥＹ＿９鍵で暗号化したデータ（暗号化第２の鍵交換鍵）と、を不揮発性メモリに格納している。
【００８１】
なお、第１の鍵交換鍵は被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿２鍵と同じ値であり、第１の鍵交換鍵ＫＥＹ＿２と称する。第２の鍵交換鍵は被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿３鍵と同じ値であり、第２の鍵交換鍵ＫＥＹ＿３と称する。
【００８２】
図４を参照して本実施形態に係るＭＡＣ鍵配信処理の第１段階を説明する。図４に示すＭＡＣ鍵配信処理の第１段階は、例えば自動車１のエンジンが停止された後、所定期間以上経過してから、エンジンが始動された時に開始される。例えば、ある一日において初めてエンジンが始動された時に、ＭＡＣ鍵配信処理の第１段階が開始される。
【００８３】
（ステップＳ１４１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０に対して乱数の要求を行う。
【００８４】
（ステップＳ１４２）被認証ＥＣＵ２０において、ＣＰＵ２１は、鍵管理ＥＣＵ１０からの要求に応じて、コマンドCMD_RNDをＳＨＥ−Ｂ２３へ入力する。
【００８５】
（ステップＳ１４３）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_RNDに応じて、乱数１を生成する。ＳＨＥ−Ｂ２３は、生成した乱数１をＣＰＵ２１へ出力する。
【００８６】
（ステップＳ１４４）被認証ＥＣＵ２０において、ＣＰＵ２１は、ＳＨＥ−Ｂ２３から受け取った乱数１と、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとを鍵管理ＥＣＵ１０へ送信する。
【００８７】
なお、被認証ＥＣＵ２０から自発的に、ＳＨＥ−Ｂ２３で発生した乱数１と、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとを鍵管理ＥＣＵ１０へ送ってもよい。
【００８８】
（ステップＳ１４５）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、コマンドCMD_RNDをＳＨＥ−Ａ１３へ入力する。
【００８９】
（ステップＳ１４６）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_RNDに応じて、乱数２を生成する。ＳＨＥ−Ａ１３は、生成した乱数２をＣＰＵ１１へ出力する。この乱数２は、ＭＡＣ鍵に使用される。ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取った乱数２つまりＭＡＣ鍵を使用して、コマンドCMD_ENC_CBC（乱数２）をＳＨＥ−Ａ１３へ入力する。ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_ENC_CBC（乱数２）に応じて、該コマンドCMD_ENC_CBC（乱数２）に含まれる乱数２つまりＭＡＣ鍵をＫＥＹ＿９鍵で暗号化する。ＳＨＥ−Ａ１３は、暗号化されたＭＡＣ鍵をＣＰＵ１１へ出力する。ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取った暗号化されたＭＡＣ鍵を記憶部１２に格納する。
【００９０】
（ステップＳ１４７）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、記憶部１２に格納されている暗号化第２の鍵交換鍵を復号するために、該暗号化第２の鍵交換鍵を使用してコマンドCMD_DEC_CBC（暗号化第２の鍵交換鍵）をＳＨＥ−Ａ１３へ入力する。
【００９１】
（ステップＳ１４８）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_DEC_CBC（暗号化第２の鍵交換鍵）に応じて、該コマンドCMD_DEC_CBC（暗号化第２の鍵交換鍵）に含まれる暗号化第２の鍵交換鍵をＫＥＹ＿９鍵で復号する。ＫＥＹ＿９鍵は、暗号化第１の鍵交換鍵及び暗号化第２の鍵交換鍵の暗号化に使用された鍵である。ＳＨＥ−Ａ１３は、暗号化第２の鍵交換鍵の復号の結果である第２の鍵交換鍵ＫＥＹ＿３をＣＰＵ１１へ出力する。
【００９２】
（ステップＳ１４９）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取った第２の鍵交換鍵ＫＥＹ＿３を使用して、コマンドCMD_LOAD_PLAIN_KEY（ＫＥＹ＿３）をＳＨＥ−Ａ１３へ入力する。
【００９３】
（ステップＳ１５０）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_LOAD_PLAIN_KEY（ＫＥＹ＿３）に応じて、該コマンドCMD_LOAD_PLAIN_KEY（ＫＥＹ＿３）に含まれる第２の鍵交換鍵ＫＥＹ＿３をＲＡＭ＿ＫＥＹ鍵に登録する。ＳＨＥ−Ａ１３は、ＲＡＭ＿ＫＥＹ鍵の登録完了「ＯＫ」をＣＰＵ１１へ応答する。
【００９４】
（ステップＳ１５１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、ＣＰＵ１１がＳＨＥ−Ａ１３から受け取った乱数２つまりＭＡＣ鍵を、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵に登録するための各値である。ＣＰＵ１１は、値Ｍ２を生成する際には、コマンド「CMD_ENC_CBC with RAM_KEY」によってＳＨＥ−Ａ１３に暗号化処理を実行させる。値Ｍ２には、ＣＰＵ１１がＳＨＥ−Ａ１３から受け取った乱数２つまりＭＡＣ鍵を含める。ＣＰＵ１１は、値Ｍ３を生成する際には、コマンド「CMD_GENERATE_MAC with RAM_KEY」によってＳＨＥ−Ａ１３にＣＭＡＣを生成させる。また、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した乱数１を使用して、コマンドCMD_GENERATE_MAC（乱数１）をＳＨＥ−Ａ１３へ入力する。
【００９５】
（ステップＳ１５２）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_GENERATE_MAC（乱数１）に応じて、ＣＭＡＣを生成する。このＣＭＡＣの生成では、ＳＨＥ−Ａ１３は、ＲＡＭ＿ＫＥＹ鍵つまり第２の鍵交換鍵ＫＥＹ＿３を使用して乱数１のＣＭＡＣを生成する。ＳＨＥ−Ａ１３は、生成した乱数１のＣＭＡＣをＣＰＵ１１へ出力する。
【００９６】
（ステップＳ１５３）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、生成した値Ｍ１，Ｍ２及びＭ３と、ＳＨＥ−Ａ１３から受け取った乱数１のＣＭＡＣを被認証ＥＣＵ２０へ送信する。
【００９７】
（ステップＳ１５４）被認証ＥＣＵ２０において、ＣＰＵ２１は、鍵管理ＥＣＵ１０から受信したＣＭＡＣを検証するために、コマンドCMD_VERIFY_MACをＳＨＥ−Ａ１３へ入力する。
【００９８】
（ステップＳ１５５）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_VERIFY_MACに応じて、該コマンドCMD_VERIFY_MACに含まれるＣＭＡＣを検証する。このＣＭＡＣの検証では、ＳＨＥ−Ｂ２３は、自己が生成した乱数１と、ＫＥＹ＿３鍵つまり第２の鍵交換鍵ＫＥＹ＿３とを使用する。ＳＨＥ−Ｂ２３は、ＣＭＡＣの検証結果「合格（ＯＫ）又は不合格（ＮＧ）」をＣＰＵ２１へ出力する。ＣＰＵ２１は、ＳＨＥ−Ｂ２３から受け取ったＣＭＡＣの検証結果が合格（ＯＫ）である場合には鍵管理ＥＣＵ１０の正当性の認証が合格であると判断し、一方、ＳＨＥ−Ｂ２３から受け取ったＣＭＡＣの検証結果が不合格（ＮＧ）である場合には鍵管理ＥＣＵ１０の正当性の認証が不合格であると判断する。鍵管理ＥＣＵ１０の正当性の認証が合格である場合にはステップＳ１５６に進む。一方、鍵管理ＥＣＵ１０の正当性の認証が不合格である場合には図４の処理を終了する。
【００９９】
（ステップＳ１５６）被認証ＥＣＵ２０において、ＣＰＵ２１は、鍵管理ＥＣＵ１０から受信した値Ｍ１，Ｍ２及びＭ３を使用して、コマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）をＳＨＥ−Ｂ２３へ入力する。
【０１００】
（ステップＳ１５７）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）に応じて、該コマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）に含まれる乱数２つまりＭＡＣ鍵をＲＡＭ＿ＫＥＹ鍵に登録する。
ＳＨＥ−Ｂ２３は、ＲＡＭ＿ＫＥＹ鍵の登録完了「ＯＫ」をＣＰＵ２１へ応答する。
【０１０１】
次に図５を参照して本実施形態に係るＭＡＣ鍵配信処理の第２段階を説明する。ＭＡＣ鍵配信処理の第２段階は、上述した図４に示すＭＡＣ鍵配信処理の第１段階によって被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵が登録された後に実施される。被認証ＥＣＵ２０は、ＭＡＣ鍵配信処理の第１段階のステップＳ１５３において鍵管理ＥＣＵ１０から受信した値Ｍ１，Ｍ２及びＭ３を、記憶部２２の不揮発性メモリに格納している。図５に示すＭＡＣ鍵配信処理の第２段階は、例えば自動車１の走行の際に駐車等によりエンジンが停止された後、所定期間内にエンジンが再始動された時に開始される。
【０１０２】
（ステップＳ１７１）被認証ＥＣＵ２０において、ＣＰＵ２１は、記憶部２２の不揮発性メモリに格納されている値Ｍ１，Ｍ２及びＭ３を使用して、コマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）をＳＨＥ−Ｂ２３へ入力する。
【０１０３】
（ステップＳ１７２）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）に応じて、該コマンドCMD_LOAD_KEY（Ｍ１，Ｍ２，Ｍ３）に含まれる乱数２つまりＭＡＣ鍵をＲＡＭ＿ＫＥＹ鍵に登録する。
ＳＨＥ−Ｂ２３は、ＲＡＭ＿ＫＥＹ鍵の登録完了「ＯＫ」をＣＰＵ２１へ応答する。
【０１０４】
（ステップＳ１７３）被認証ＥＣＵ２０において、ＣＰＵ２１は、コマンドCMD_RNDをＳＨＥ−Ｂ２３へ入力する。
【０１０５】
（ステップＳ１７４）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_RNDに応じて、乱数１を生成する。ＳＨＥ−Ｂ２３は、生成した乱数１をＣＰＵ２１へ出力する。
【０１０６】
（ステップＳ１７５）被認証ＥＣＵ２０において、ＣＰＵ２１は、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと乱数１とを使用して、コマンドCMD_GENERATE_MAC（ＥＣＵ＿ＩＤ，乱数１）をＳＨＥ−Ｂ２３へ入力する。
【０１０７】
（ステップＳ１７６）被認証ＥＣＵ２０において、ＳＨＥ−Ｂ２３は、ＣＰＵ２１から入力されたコマンドCMD_GENERATE_MAC（ＥＣＵ＿ＩＤ，乱数１）に応じて、ＣＭＡＣを生成する。このＣＭＡＣの生成では、ＳＨＥ−Ｂ２３は、ＲＡＭ＿ＫＥＹ鍵つまりＭＡＣ鍵を使用して、ＥＣＵ＿ＩＤ及び乱数１についてのＣＭＡＣを生成する。例えば、ＥＣＵ＿ＩＤと乱数１との連結データについてのＣＭＡＣを生成する。ＳＨＥ−Ｂ２３は、生成したＣＭＡＣをＣＰＵ２１へ出力する。
【０１０８】
（ステップＳ１７７）被認証ＥＣＵ２０において、ＣＰＵ２１は、ＳＨＥ−Ｂ２３から受け取った乱数１と、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと、ＳＨＥ−Ｂ２３から受け取ったＣＭＡＣとを鍵管理ＥＣＵ１０へ送信する。
【０１０９】
（ステップＳ１７８）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、記憶部１２に格納されている暗号化されたＭＡＣ鍵を復号するために、該暗号化されたＭＡＣ鍵を使用してコマンドCMD_DEC_CBC（暗号化されたＭＡＣ鍵）をＳＨＥ−Ａ１３へ入力する。ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_DEC_CBC（暗号化されたＭＡＣ鍵）に応じて、該コマンドCMD_DEC_CBC（暗号化されたＭＡＣ鍵）に含まれる暗号化されたＭＡＣ鍵をＫＥＹ＿９鍵で復号する。ＫＥＹ＿９鍵は、暗号化されたＭＡＣ鍵の暗号化に使用された鍵である。ＳＨＥ−Ａ１３は、暗号化されたＭＡＣ鍵の復号の結果であるＭＡＣ鍵をＣＰＵ１１へ出力する。ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取ったＭＡＣ鍵を使用して、コマンドCMD_LOAD_PLAIN_KEY（ＭＡＣ鍵）をＳＨＥ−Ａ１３へ入力する。ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_LOAD_PLAIN_KEY（ＭＡＣ鍵）に応じて、該コマンドCMD_LOAD_PLAIN_KEY（ＭＡＣ鍵）に含まれるＭＡＣ鍵をＲＡＭ＿ＫＥＹ鍵に登録する。ＳＨＥ−Ａ１３は、ＲＡＭ＿ＫＥＹ鍵の登録完了「ＯＫ」をＣＰＵ１１へ応答する。ＣＰＵ１１は、被認証ＥＣＵ２０から受信した乱数１と被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとＣＭＡＣとを使用して、コマンドCMD_VERIFY_MAC（ＣＭＡＣ）をＳＨＥ−Ａ１３へ入力する。
【０１１０】
（ステップＳ１７９）鍵管理ＥＣＵ１０において、ＳＨＥ−Ａ１３は、ＣＰＵ１１から入力されたコマンドCMD_VERIFY_MAC（ＣＭＡＣ）に応じて、該コマンドCMD_VERIFY_MAC（ＣＭＡＣ）に含まれるＣＭＡＣを検証する。このＣＭＡＣの検証では、ＳＨＥ−Ａ１３は、該コマンドCMD_VERIFY_MAC（ＣＭＡＣ）に含まれる乱数１及び被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと、ＲＡＭ＿ＫＥＹ鍵に登録されているＭＡＣ鍵と、を使用する。
【０１１１】
ＳＨＥ−Ａ１３は、ＣＭＡＣの検証結果「合格（ＯＫ）又は不合格（ＮＧ）」をＣＰＵ１１へ出力する。ＣＰＵ１１は、ＳＨＥ−Ａ１３から受け取ったＣＭＡＣの検証結果が合格（ＯＫ）である場合には被認証ＥＣＵ２０の正当性の認証が合格であると判断し、一方、ＳＨＥ−Ａ１３から受け取ったＣＭＡＣの検証結果が不合格（ＮＧ）である場合には被認証ＥＣＵ２０の正当性の認証が不合格であると判断する。被認証ＥＣＵ２０の正当性の認証が合格である場合にはステップＳ１８０に進む。一方、被認証ＥＣＵ２０の正当性の認証が不合格である場合には図５の処理を終了する。被認証ＥＣＵ２０の正当性の認証が不合格である場合には図４に示すＭＡＣ鍵配信処理の第１段階を行ってもよい。
【０１１２】
次いでステップＳ１８０からＳ１８６までが実行される。ステップＳ１８０からＳ１８６までは、図４に示すステップＳ１５１からＳ１５７までと同じである。但し、ステップＳ１８０で生成する値Ｍ１，Ｍ２及びＭ３は、新しいＭＡＣ鍵を、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵に登録するための各値である。新しいＭＡＣ鍵には、図４に示すステップＳ１４５からＳ１４６と同様にしてＳＨＥ−Ａ１３で発生させた新しい乱数２を使用してもよい。
【０１１３】
上述した図５に示すＭＡＣ鍵配信処理の第２段階によって、新しいＭＡＣ鍵への更新が行われる。
【０１１４】
なお、上述した図５のステップＳ１８０では、乱数１のＣＭＡＣを生成するが、ステップＳ１７９においてＣＭＡＣの検証結果が合格（ＯＫ）である場合には、ＣＭＡＣの検証の合格を示す文字列、例えば「ＯＫ」と被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとについてのＣＭＡＣを生成してもよい。例えば、文字列「ＯＫ」と被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとの連結データについてのＣＭＡＣを生成する。
【０１１５】
さらに、上述した図５のステップＳ１８０では、新しいＭＡＣ鍵への更新を行うが、ステップＳ１７９においてＣＭＡＣの検証結果が合格（ＯＫ）である場合には、新しいＭＡＣ鍵への更新を実施しないでＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵に現在登録されているＭＡＣ鍵を使用してもよい。これにより、鍵管理ＥＣＵ１０から被認証ＥＣＵ２０へ値Ｍ１，Ｍ２及びＭ３を送る必要がなくなるので、処理の高速化が可能である。
【０１１６】
また、本実施形態において、値Ｍ１の算出には鍵を使用しない。このため、鍵管理ＥＣＵ１０は、値Ｍ２及びＭ３のみを被認証ＥＣＵ２０へ送信し、値Ｍ１については被認証ＥＣＵ２０へ送信しないようにしてもよい。この場合、被認証ＥＣＵ２０は、自己が算出した値Ｍ１と、鍵管理ＥＣＵ１０から受信した値Ｍ２及びＭ３とを組み合わせて使用する。
これにより、鍵管理ＥＣＵ１０から被認証ＥＣＵ２０へ値Ｍ１を送る必要がなくなるので、処理の高速化が可能である。
【０１１７】
［第２実施形態］
図６は、本実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。図６において、図１の各部に対応する部分には同一の符号を付け、その説明を省略する。以下、第１実施形態と異なる部分を主に説明する。第１実施形態に係る第１のＥＣＵ１０では暗号処理チップとしてＳＨＥを使用したが、第２実施形態に係る第１のＥＣＵ１０では暗号処理チップとして「Evita-medium」と呼ばれるＨＳＭ（Hardware Security Module）を使用する。
【０１１８】
図６において、第１のＥＣＵ１０は、ＣＰＵ１１と記憶部１２とＨＳＭ１４とを備える。ＨＳＭ１４は、「Evita-medium」と呼ばれるＨＳＭである。ＨＳＭ１４は暗号処理機能を有する。ＨＳＭ１４は耐タンパー性を有する。ＨＳＭ１４はセキュアエレメントの例である。第２のＥＣＵ２０は、ＣＰＵ２１と記憶部２２とＳＨＥ２３とを備える。
【０１１９】
次に、図７から図１０を参照して、本実施形態に係るＥＣＵ認証処理、鍵交換鍵配信処理、及び、ＭＡＣ鍵配信処理を説明する。
【０１２０】
［ＥＣＵ認証処理］
図７を参照して本実施形態に係るＥＣＵ認証処理を説明する。図７は、本実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。鍵管理ＥＣＵ１０のＨＳＭ１４には、予め、例えば鍵管理ＥＣＵ１０の製造時などに、マスター鍵ＭＳが設定される。
【０１２１】
（ステップＳ２０１）被認証ＥＣＵ２０において、ＣＰＵ２１は、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを鍵管理ＥＣＵ１０へ送信する。
【０１２２】
（ステップＳ２０２）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤをＨＳＭ１４へ入力する。
【０１２３】
（ステップＳ２０３）鍵管理ＥＣＵ１０において、ＨＳＭ１４は、ＣＰＵ１１から入力された被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと、自己が保持するマスター鍵ＭＳとを使用して、被認証ＥＣＵ２０の初期鍵を生成する。この初期鍵の生成では、上記の式（４）によりＣＭＡＣを算出する。この算出されるＣＭＡＣは、被認証ＥＣＵ２０の初期鍵であって被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿１鍵に設定されている値と同じ値である。被認証ＥＣＵ２０の初期鍵のことを初期鍵ＫＥＹ＿１と称する。ＨＳＭ１４は、算出したＣＭＡＣつまり初期鍵ＫＥＹ＿１を自己のメモリに格納する。また、ＨＳＭ１４は、乱数ｒａｎｄを生成する。ＨＳＭ１４は、生成した乱数ｒａｎｄをＣＰＵ１１へ出力する。
ＨＳＭ１４は、生成した乱数ｒａｎｄを自己のメモリに格納する。
【０１２４】
（ステップＳ２０４）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＨＳＭ１４から受け取った乱数ｒａｎｄを被認証ＥＣＵ２０へ送信する。
【０１２５】
次いでステップＳ２０５からＳ２０７までが実行される。ステップＳ２０５からＳ２０７までは、図２に示すステップＳ１０９からＳ１１１までと同じである。
【０１２６】
（ステップＳ２０８）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとＣＭＡＣとをＨＳＭ１４へ入力する。
【０１２７】
（ステップＳ２０９）鍵管理ＥＣＵ１０において、ＨＳＭ１４は、ＣＰＵ１１から入力されたＣＭＡＣの検証を行う。このＣＭＡＣの検証では、ＨＳＭ１４は、自己のメモリに格納されている初期鍵ＫＥＹ＿１を使用して、自己のメモリに格納されている乱数ｒａｎｄについてＣＭＡＣを算出する。次いで、ＨＳＭ１４は、該算出したＣＭＡＣと、ＣＰＵ１１から入力されたＣＭＡＣとを比較する。この比較の結果、両者が一致する場合にはＣＭＡＣの検証が合格であり、一方、両者が不一致である場合にはＣＭＡＣの検証が不合格である。ＨＳＭ１４は、該ＣＭＡＣの検証結果「合格（ＯＫ）又は不合格（ＮＧ）」をＣＰＵ１１へ出力する。ＣＰＵ１１は、ＨＳＭ１４から受け取ったＣＭＡＣの検証結果が合格（ＯＫ）である場合には被認証ＥＣＵ２０の正当性の認証が合格であると判断し、一方、ＨＳＭ１４から受け取ったＣＭＡＣの検証結果が不合格（ＮＧ）である場合には被認証ＥＣＵ２０の正当性の認証が不合格であると判断する。
【０１２８】
［鍵交換鍵配信処理］
図８を参照して本実施形態に係る鍵交換鍵配信処理を説明する。図８は、本実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。本実施形態では、第１実施形態と同様に、第１の鍵交換鍵（暗号化処理及び復号処理に使用される鍵）と第２の鍵交換鍵（ＭＡＣの生成処理及び検証処理に使用される鍵）とを使用する。
【０１２９】
以下、図８を参照して第１の鍵交換鍵を配信する場合を例に挙げて説明する。第２の鍵交換鍵を配信する場合も、第１の鍵交換鍵を配信する場合と同様である。
【０１３０】
（ステップＳ２１１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、鍵交換鍵の配信先の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを使用して、鍵交換鍵作成依頼（ＥＣＵ＿ＩＤ）をＨＳＭ１４へ入力する。
【０１３１】
（ステップＳ２１２）鍵管理ＥＣＵ１０において、ＨＳＭ１４は、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、第１の鍵交換鍵を被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿２鍵に登録するための各値である。ＨＳＭ１４は、マスター鍵ＭＳからＭＥＫ鍵を生成する。ＨＳＭ１４は、乱数を生成し、生成した乱数を第１の鍵交換鍵に使用する。なお、ＨＳＭ１４は、マスター鍵ＭＳから第１の鍵交換鍵を生成してもよい。
ＨＳＭ１４は、第１の鍵交換鍵を自己のメモリに格納する。ＨＳＭ１４は、生成した値Ｍ１，Ｍ２及びＭ３をＣＰＵ１１へ出力する。
【０１３２】
（ステップＳ２１３）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＨＳＭ１４から受け取った値Ｍ１，Ｍ２及びＭ３を被認証ＥＣＵ２０へ送信する。
【０１３３】
次いでステップＳ２１４からＳ２１６までが実行される。ステップＳ２１４からＳ２１６までは、図３に示すステップＳ１２８からＳ１３０までと同じである。
【０１３４】
なお、２回目以降の鍵交換鍵の配信では、登録済みの第１の鍵交換鍵を使用して、鍵登録メッセージ（値Ｍ１，Ｍ２及びＭ３）を生成することにより、該鍵登録メッセージ（値Ｍ１，Ｍ２及びＭ３）を各被認証ＥＣＵ２０に対して共通に使用できる。例えば、該鍵登録メッセージ（値Ｍ１，Ｍ２及びＭ３）をブロードキャストすることが可能である。この点についても、第２の鍵交換鍵を配信する場合に同様に適用できる。
【０１３５】
［ＭＡＣ鍵配信処理］
図９及び図１０を参照して本実施形態に係るＭＡＣ鍵配信処理を説明する。図９及び図１０は、本実施形態に係るＭＡＣ鍵配信方法を示すシーケンスチャートである。被認証ＥＣＵ２０のＳＨＥ−Ｂ２３には、ＫＥＹ＿２鍵に第１の鍵交換鍵（暗号化処理及び復号処理に使用される）が登録されており、ＫＥＹ＿３鍵に第２の鍵交換鍵（ＭＡＣの生成処理及び検証処理に使用される）が登録されている。鍵管理ＥＣＵ１０のＨＳＭ１４は、第１の鍵交換鍵をと第２の鍵交換鍵とを自己のメモリに格納している。
【０１３６】
なお、第１の鍵交換鍵は被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿２鍵と同じ値であり、第１の鍵交換鍵ＫＥＹ＿２と称する。第２の鍵交換鍵は被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＫＥＹ＿３鍵と同じ値であり、第２の鍵交換鍵ＫＥＹ＿３と称する。
【０１３７】
図９を参照して本実施形態に係るＭＡＣ鍵配信処理の第１段階を説明する。図９に示すＭＡＣ鍵配信処理の第１段階は、例えば自動車１のエンジンが停止された後、所定期間以上経過してから、エンジンが始動された時に開始される。例えば、ある一日において初めてエンジンが始動された時に、ＭＡＣ鍵配信処理の第１段階が開始される。
【０１３８】
ステップＳ２３１からＳ２３４までが実行される。ステップＳ２３１からＳ２３４までは、図４に示すステップＳ１４１からＳ１４４までと同じである。
【０１３９】
（ステップＳ２３５）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した乱数１をＨＳＭ１４へ入力する。
【０１４０】
（ステップＳ２３６）鍵管理ＥＣＵ１０において、ＨＳＭ１４は、乱数を生成し、生成した乱数をＭＡＣ鍵に使用する。ＨＳＭ１４は、ＭＡＣ鍵を自己のメモリに格納する。ＨＳＭ１４は、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、ＭＡＣ鍵を被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵に登録するための各値である。ＨＳＭ１４は、自己のメモリに格納されている第１の鍵交換鍵ＫＥＹ＿２を使用して、値Ｍ１，Ｍ２及びＭ３を生成する。ＨＳＭ１４は、ＣＰＵ１１から入力された乱数１についてＣＭＡＣを生成する。このＣＭＡＣの生成では、ＨＳＭ１４は、自己のメモリに格納されている第２の鍵交換鍵ＫＥＹ＿３を使用して乱数１のＣＭＡＣを生成する。ＨＳＭ１４は、生成した値Ｍ１，Ｍ２及びＭ３と、ＣＭＡＣとをＣＰＵ１１へ出力する。
【０１４１】
（ステップＳ２３７）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＨＳＭ１４から受け取った値Ｍ１，Ｍ２及びＭ３とＣＭＡＣとを被認証ＥＣＵ２０へ送信する。
【０１４２】
次いでステップＳ２３８からＳ２４１までが実行される。ステップＳ２３８からＳ２４１までは、図４に示すステップＳ１５４からＳ１５７までと同じである。
【０１４３】
（ステップＳ２４２）被認証ＥＣＵ２０において、ＣＰＵ２１は、ＭＡＣ鍵の登録完了「ＯＫ」を鍵管理ＥＣＵ１０へ送信する。
【０１４４】
次に図１０を参照して本実施形態に係るＭＡＣ鍵配信処理の第２段階を説明する。ＭＡＣ鍵配信処理の第２段階は、上述した図９に示すＭＡＣ鍵配信処理の第１段階によって被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵にＭＡＣ鍵が登録された後に実施される。被認証ＥＣＵ２０は、ＭＡＣ鍵配信処理の第１段階のステップＳ２３７において鍵管理ＥＣＵ１０から受信した値Ｍ１，Ｍ２及びＭ３を、記憶部２２の不揮発性メモリに格納している。図１０に示すＭＡＣ鍵配信処理の第２段階は、例えば自動車１の走行の際に駐車等によりエンジンが停止された後、所定期間内にエンジンが再始動された時に開始される。
【０１４５】
ステップＳ２６１からＳ２６７までが実行される。ステップＳ２６１からＳ２６７までは、図５に示すステップＳ１７１からＳ１７７までと同じである。
【０１４６】
（ステップＳ２６８）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した乱数１と被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとＣＭＡＣとをＨＳＭ１４へ入力する。
【０１４７】
（ステップＳ２６９）鍵管理ＥＣＵ１０において、ＨＳＭ１４は、ＣＰＵ１１から入力されたＣＭＡＣを検証する。このＣＭＡＣの検証では、ＨＳＭ１４は、自己のメモリに格納されているＭＡＣ鍵を使用する。
【０１４８】
ＨＳＭ１４は、ＣＭＡＣの検証結果「合格（ＯＫ）又は不合格（ＮＧ）」をＣＰＵ１１へ出力する。ＣＰＵ１１は、ＨＳＭ１４から受け取ったＣＭＡＣの検証結果が合格（ＯＫ）である場合には被認証ＥＣＵ２０の正当性の認証が合格であると判断し、一方、ＨＳＭ１４から受け取ったＣＭＡＣの検証結果が不合格（ＮＧ）である場合には被認証ＥＣＵ２０の正当性の認証が不合格であると判断する。被認証ＥＣＵ２０の正当性の認証が合格である場合には以降の処理を実行する。一方、被認証ＥＣＵ２０の正当性の認証が不合格である場合には図１０の処理を終了する。被認証ＥＣＵ２０の正当性の認証が不合格である場合には図９に示すＭＡＣ鍵配信処理の第１段階を行ってもよい。
【０１４９】
ＨＳＭ１４は、ＣＰＵ１１から入力された乱数１についてＣＭＡＣを生成する。このＣＭＡＣの生成では、ＨＳＭ１４は、自己のメモリに格納されている第２の鍵交換鍵ＫＥＹ＿３を使用して乱数１のＣＭＡＣを生成する。
【０１５０】
ＨＳＭ１４は、新しいＭＡＣ鍵を生成し、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、新しいＭＡＣ鍵を、被認証ＥＣＵ２０のＳＨＥ−Ｂ２３のＲＡＭ＿ＫＥＹ鍵に登録するための各値である。新しいＭＡＣ鍵には、新たに乱数を生成し、生成した乱数を新しいＭＡＣ鍵に使用する。なお、被認証ＥＣＵ２０のＭＡＣ鍵を新しいＭＡＣ鍵に更新しない場合には、新しいＭＡＣ鍵の生成と値Ｍ１，Ｍ２及びＭ３の生成とを行わない。
【０１５１】
ＨＳＭ１４は、生成したＣＭＡＣと値Ｍ１，Ｍ２及びＭ３とをＣＰＵ１１へ出力する。
【０１５２】
（ステップＳ２７０）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＨＳＭ１４から受け取った値Ｍ１，Ｍ２及びＭ３とＣＭＡＣとを被認証ＥＣＵ２０へ送信する。
【０１５３】
次いでステップＳ２７１からＳ２７５までが実行される。ステップＳ２７１からＳ２７５までは、図９に示すステップＳ２３８からＳ２４２までと同じである。
【０１５４】
上述した図１０に示すＭＡＣ鍵配信処理の第２段階によって、新しいＭＡＣ鍵への更新が行われる。
【０１５５】
［第３実施形態］
図１１は、本実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。図１１において、図１の各部に対応する部分には同一の符号を付け、その説明を省略する。以下、第１実施形態と異なる部分を主に説明する。
【０１５６】
第３実施形態では、自動車１は通信モジュール４０を備える。通信モジュール４０は、無線通信ネットワークを利用して無線通信を行う。通信モジュール４０は、ＳＩＭ（Subscriber Identity Module）４１を備える。ＳＩＭ４１は、無線通信ネットワークを利用するための情報が書き込まれたＳＩＭである。通信モジュール４０は、ＳＩＭ４１を使用することにより該無線通信ネットワークに接続して無線通信を行うことができる。
【０１５７】
なお、ＳＩＭ４１として、ｅＳＩＭ（Embedded Subscriber Identity Module）を使用してもよい。ＳＩＭ及びｅＳＩＭは耐タンパー性を有する。ＳＩＭ及びｅＳＩＭはセキュアエレメントの例である。ＳＩＭ及びｅＳＩＭは、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。
【０１５８】
通信モジュール４０は第１のＥＣＵ１０に接続される。第１のＥＣＵ１０は、通信モジュール４０とデータを交換する。
【０１５９】
なお、図１１の構成では第１のＥＣＵ１０と通信モジュール４０とを直接接続することにより第１のＥＣＵ１０と通信モジュール４０の間でデータを交換するが、これに限定されない。例えば、通信モジュール４０を自動車１に備わるインフォテイメント機器等の他の装置に接続したり又は該他の装置に備えたりし、第１のＥＣＵ１０が、該他の装置例えばインフォテイメント機器を介して、通信モジュール４０とデータを交換してもよい。又は、自動車１の診断ポート、例えばＯＢＤ（On-board Diagnostics）ポートと呼ばれる診断ポートに接続される自動車１の外部の装置に通信モジュール４０を備え、第１のＥＣＵ１０が、該診断ポートを介して、該診断ポートに接続された該外部の装置の通信モジュール４０とデータを交換してもよい。又は、第１のＥＣＵ１０が、ＳＩＭ４１を含む通信モジュール４０を備えてもよい。
【０１６０】
また、本実施形態では、通信モジュール４０に備わるＳＩＭ４１を使用するが、ＳＩＭの代わりに、耐タンパー性を有するＩＣ（Integrated Circuit）チップを使用してもよい。例えば、ＩＣカードに組み込まれたＩＣチップを使用してもよい。又は、自動車１の診断ポートに接続される自動車１の外部のメインテナンスツールに備わる制御モジュールに搭載されたＩＣチップを使用してもよい。
【０１６１】
図１１において、第１のＥＣＵ１０は、ＣＰＵ１１と記憶部１２とＳＨＥ１３とを備える。第２のＥＣＵ２０は、ＣＰＵ２１と記憶部２２とＳＨＥ２３とを備える。
【０１６２】
次に、本実施形態に係るＥＣＵ認証処理、鍵交換鍵配信処理、及び、ＭＡＣ鍵配信処理を説明する。
【０１６３】
［ＥＣＵ認証処理］
図１２を参照して本実施形態に係るＥＣＵ認証処理を説明する。図１２は、本実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。通信モジュール４０のＳＩＭ４１には、予め、例えばＳＩＭ４１の製造時などに、マスター鍵ＭＳが設定される。ＳＩＭ４１は、比較的堅牢な耐タンパー性を有するので、マスター鍵ＭＳの安全性は高い。
【０１６４】
鍵管理ＥＣＵ１０は、通信モジュール４０を介してＳＩＭ４１とデータを交換する。鍵管理ＥＣＵ１０とＳＩＭ４１との間では正当性の認証が行われる。鍵管理ＥＣＵ１０とＳＩＭ４１との間の正当性の認証が合格した場合には、鍵管理ＥＣＵ１０とＳＩＭ４１との間のデータの交換が安全に行われる。一方、鍵管理ＥＣＵ１０とＳＩＭ４１との間の正当性の認証が不合格になった場合には、鍵管理ＥＣＵ１０とＳＩＭ４１との間のデータの交換は制限される。
【０１６５】
（ステップＳ３０１）被認証ＥＣＵ２０において、ＣＰＵ２１は、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを鍵管理ＥＣＵ１０へ送信する。
【０１６６】
（ステップＳ３０２）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤをＳＩＭ４１へ送信する。
【０１６７】
（ステップＳ３０３）ＳＩＭ４１は、鍵管理ＥＣＵ１０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと、自己が保持するマスター鍵ＭＳとを使用して、被認証ＥＣＵ２０の初期鍵を生成する。この初期鍵の生成では、上記の式（４）によりＣＭＡＣを算出する。この算出されるＣＭＡＣは、被認証ＥＣＵ２０の初期鍵であって被認証ＥＣＵ２０のＳＨＥ２３のＫＥＹ＿１鍵に設定されている値と同じ値である。被認証ＥＣＵ２０の初期鍵のことを初期鍵ＫＥＹ＿１と称する。ＳＩＭ４１は、算出したＣＭＡＣつまり初期鍵ＫＥＹ＿１を自己のメモリに格納する。また、ＳＩＭ４１は、乱数ｒａｎｄを生成する。ＳＩＭ４１は、生成した乱数ｒａｎｄを鍵管理ＥＣＵ１０へ送信する。ＳＩＭ４１は、生成した乱数ｒａｎｄを自己のメモリに格納する。
【０１６８】
（ステップＳ３０４）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＩＭ４１から受信した乱数ｒａｎｄを被認証ＥＣＵ２０へ送信する。
【０１６９】
次いでステップＳ３０５からＳ３０７までが実行される。ステップＳ３０５からＳ３０７までは、図２に示すステップＳ１０９からＳ１１１までと同じである。
【０１７０】
（ステップＳ３０８）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとＣＭＡＣとをＳＩＭ４１へ送信する。
【０１７１】
（ステップＳ３０９）ＳＩＭ４１は、鍵管理ＥＣＵ１０から受信したＣＭＡＣの検証を行う。このＣＭＡＣの検証では、ＳＩＭ４１は、自己のメモリに格納されている初期鍵ＫＥＹ＿１を使用して、自己のメモリに格納されている乱数ｒａｎｄについてＣＭＡＣを算出する。次いで、ＳＩＭ４１は、該算出したＣＭＡＣと、鍵管理ＥＣＵ１０から受信したＣＭＡＣとを比較する。この比較の結果、両者が一致する場合にはＣＭＡＣの検証が合格であり、一方、両者が不一致である場合にはＣＭＡＣの検証が不合格である。ＳＩＭ４１は、該ＣＭＡＣの検証結果「合格（ＯＫ）又は不合格（ＮＧ）」を鍵管理ＥＣＵ１０へ送信する。鍵管理ＥＣＵ１０のＣＰＵ１１は、ＳＩＭ４１から受信したＣＭＡＣの検証結果が合格（ＯＫ）である場合には被認証ＥＣＵ２０の正当性の認証が合格であると判断し、一方、ＨＳＭ１４から受け取ったＣＭＡＣの検証結果が不合格（ＮＧ）である場合には被認証ＥＣＵ２０の正当性の認証が不合格であると判断する。
【０１７２】
［鍵交換鍵配信処理］
図１３を参照して本実施形態に係る鍵交換鍵配信処理を説明する。図１３は、本実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。本実施形態では、第１実施形態と同様に、第１の鍵交換鍵（暗号化処理及び復号処理に使用される鍵）と第２の鍵交換鍵（ＭＡＣの生成処理及び検証処理に使用される鍵）とを使用する。
【０１７３】
以下、図１３を参照して第１の鍵交換鍵を配信する場合を例に挙げて説明する。第２の鍵交換鍵を配信する場合も、第１の鍵交換鍵を配信する場合と同様である。
【０１７４】
（ステップＳ３１１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、鍵交換鍵の配信先の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを使用して、鍵交換鍵作成依頼（ＥＣＵ＿ＩＤ）をＳＩＭ４１へ送信する。
【０１７５】
（ステップＳ３１２）ＳＩＭ４１は、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、第１の鍵交換鍵を被認証ＥＣＵ２０のＳＨＥ２３のＫＥＹ＿２鍵に登録するための各値である。ＳＩＭ４１は、マスター鍵ＭＳからＭＥＫ鍵を生成する。ＳＩＭ４１は、乱数を生成し、生成した乱数を第１の鍵交換鍵に使用する。なお、ＳＩＭ４１は、マスター鍵ＭＳから第１の鍵交換鍵を生成してもよい。ＳＩＭ４１は、第１の鍵交換鍵を自己のメモリに格納する。ＳＩＭ４１は、生成した値Ｍ１，Ｍ２及びＭ３を鍵管理ＥＣＵ１０へ送信する。
【０１７６】
（ステップＳ３１３）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＩＭ４１から受信した値Ｍ１，Ｍ２及びＭ３を被認証ＥＣＵ２０へ送信する。ＣＰＵ１１は、ＳＩＭ４１から受信した値Ｍ１，Ｍ２及びＭ３を使用して、ＳＨＥ１３により、第１の鍵交換鍵をＳＨＥ１３のＫＥＹ＿９鍵で暗号化したデータ（暗号化第１の鍵交換鍵）を生成させる。ＣＰＵ１１は、ＳＨＥ１３によって生成された暗号化第１の鍵交換鍵を記憶部１２に格納する。
【０１７７】
次いでステップＳ３１４からＳ３１６までが実行される。ステップＳ３１４からＳ３１６までは、図３に示すステップＳ１２８からＳ１３０までと同じである。
【０１７８】
なお、２回目以降の第１の鍵交換鍵の配信には、図３に示される第１実施形態の鍵交換鍵配信処理を適用できる。これは、２回目以降の第１の鍵交換鍵の配信では、鍵管理ＥＣＵ１０は、図１３に示される本実施形態の鍵交換鍵配信処理により初回の第１の鍵交換鍵の配信で設定された第１の鍵交換鍵を使用して、値Ｍ１，Ｍ２及びＭ３を生成できるからである。この点についても、第２の鍵交換鍵を配信する場合に同様に適用できる。
【０１７９】
［ＭＡＣ鍵配信処理］
第３実施形態のＭＡＣ鍵の配信には、図４及び図５に示される第１実施形態のＭＡＣ鍵配信処理を適用できる。
【０１８０】
［第４実施形態］
図１４は、本実施形態に係る自動車１に備わる車載コンピュータシステムの構成例を示す図である。図１１において、図６の各部に対応する部分には同一の符号を付け、その説明を省略する。以下、第２実施形態と異なる部分を主に説明する。
【０１８１】
第４実施形態では、自動車１は通信モジュール４０を備える。通信モジュール４０は、無線通信ネットワークを利用して無線通信を行う。通信モジュール４０は、ＳＩＭ４１を備える。ＳＩＭ４１は、無線通信ネットワークを利用するための情報が書き込まれたＳＩＭである。通信モジュール４０は、ＳＩＭ４１を使用することにより該無線通信ネットワークに接続して無線通信を行うことができる。
【０１８２】
なお、ＳＩＭ４１として、ｅＳＩＭを使用してもよい。ＳＩＭ及びｅＳＩＭは耐タンパー性を有する。ＳＩＭ及びｅＳＩＭはセキュアエレメントの例である。ＳＩＭ及びｅＳＩＭは、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。
【０１８３】
通信モジュール４０は第１のＥＣＵ１０に接続される。第１のＥＣＵ１０は、通信モジュール４０とデータを交換する。
【０１８４】
なお、図１４の構成では第１のＥＣＵ１０と通信モジュール４０とを直接接続することにより第１のＥＣＵ１０と通信モジュール４０の間でデータを交換するが、これに限定されない。例えば、通信モジュール４０を自動車１に備わるインフォテイメント機器等の他の装置に接続したり又は該他の装置に備えたりし、第１のＥＣＵ１０が、該他の装置例えばインフォテイメント機器を介して、通信モジュール４０とデータを交換してもよい。又は、自動車１の診断ポート、例えばＯＢＤポートと呼ばれる診断ポートに接続される自動車１の外部の装置に通信モジュール４０を備え、第１のＥＣＵ１０が、該診断ポートを介して、該診断ポートに接続された該外部の装置の通信モジュール４０とデータを交換してもよい。又は、第１のＥＣＵ１０が、ＳＩＭ４１を含む通信モジュール４０を備えてもよい。
【０１８５】
また、本実施形態では、通信モジュール４０に備わるＳＩＭ４１を使用するが、ＳＩＭの代わりに、耐タンパー性を有するＩＣチップを使用してもよい。例えば、ＩＣカードに組み込まれたＩＣチップを使用してもよい。又は、自動車１の診断ポートに接続される自動車１の外部のメインテナンスツールに備わる制御モジュールに搭載されたＩＣチップを使用してもよい。
【０１８６】
図１４において、第１のＥＣＵ１０は、ＣＰＵ１１と記憶部１２とＨＳＭ１４とを備える。第２のＥＣＵ２０は、ＣＰＵ２１と記憶部２２とＳＨＥ２３とを備える。
【０１８７】
次に、本実施形態に係るＥＣＵ認証処理、鍵交換鍵配信処理、及び、ＭＡＣ鍵配信処理を説明する。
【０１８８】
［ＥＣＵ認証処理］
図１５を参照して本実施形態に係るＥＣＵ認証処理を説明する。図１５は、本実施形態に係るＥＣＵ認証方法を示すシーケンスチャートである。通信モジュール４０のＳＩＭ４１には、予め、例えばＳＩＭ４１の製造時などに、マスター鍵ＭＳが設定される。ＳＩＭ４１は、比較的堅牢な耐タンパー性を有するので、マスター鍵ＭＳの安全性は高い。
【０１８９】
鍵管理ＥＣＵ１０は、通信モジュール４０を介してＳＩＭ４１とデータを交換する。鍵管理ＥＣＵ１０とＳＩＭ４１との間では正当性の認証が行われる。鍵管理ＥＣＵ１０とＳＩＭ４１との間の正当性の認証が合格した場合には、鍵管理ＥＣＵ１０とＳＩＭ４１との間のデータの交換が安全に行われる。一方、鍵管理ＥＣＵ１０とＳＩＭ４１との間の正当性の認証が不合格になった場合には、鍵管理ＥＣＵ１０とＳＩＭ４１との間のデータの交換は制限される。
【０１９０】
（ステップＳ４０１）被認証ＥＣＵ２０において、ＣＰＵ２１は、自己の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを鍵管理ＥＣＵ１０へ送信する。
【０１９１】
（ステップＳ４０２）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤをＳＩＭ４１へ送信する。
【０１９２】
（ステップＳ４０３）ＳＩＭ４１は、鍵管理ＥＣＵ１０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤと、自己が保持するマスター鍵ＭＳとを使用して、被認証ＥＣＵ２０の初期鍵を生成する。この初期鍵の生成では、上記の式（４）によりＣＭＡＣを算出する。この算出されるＣＭＡＣは、被認証ＥＣＵ２０の初期鍵であって被認証ＥＣＵ２０のＳＨＥ２３のＫＥＹ＿１鍵に設定されている値と同じ値である。被認証ＥＣＵ２０の初期鍵のことを初期鍵ＫＥＹ＿１と称する。ＳＩＭ４１は、算出したＣＭＡＣつまり初期鍵ＫＥＹ＿１を自己のメモリに格納する。また、ＳＩＭ４１は、乱数ｒａｎｄを生成する。ＳＩＭ４１は、生成した乱数ｒａｎｄを鍵管理ＥＣＵ１０へ送信する。ＳＩＭ４１は、生成した乱数ｒａｎｄを自己のメモリに格納する。
【０１９３】
（ステップＳ４０４）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＩＭ４１から受信した乱数ｒａｎｄを被認証ＥＣＵ２０へ送信する。
【０１９４】
次いでステップＳ４０５からＳ４０７までが実行される。ステップＳ４０５からＳ４０７までは、図７に示すステップＳ２０５からＳ２０７までと同じである。
【０１９５】
（ステップＳ４０８）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、被認証ＥＣＵ２０から受信した被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとＣＭＡＣとをＳＩＭ４１へ送信する。
【０１９６】
（ステップＳ４０９）ＳＩＭ４１は、鍵管理ＥＣＵ１０から受信したＣＭＡＣの検証を行う。このＣＭＡＣの検証では、ＳＩＭ４１は、自己のメモリに格納されている初期鍵ＫＥＹ＿１を使用して、自己のメモリに格納されている乱数ｒａｎｄについてＣＭＡＣを算出する。次いで、ＳＩＭ４１は、該算出したＣＭＡＣと、鍵管理ＥＣＵ１０から受信したＣＭＡＣとを比較する。この比較の結果、両者が一致する場合にはＣＭＡＣの検証が合格であり、一方、両者が不一致である場合にはＣＭＡＣの検証が不合格である。ＳＩＭ４１は、該ＣＭＡＣの検証結果「合格（ＯＫ）又は不合格（ＮＧ）」を鍵管理ＥＣＵ１０へ送信する。鍵管理ＥＣＵ１０のＣＰＵ１１は、ＳＩＭ４１から受信したＣＭＡＣの検証結果が合格（ＯＫ）である場合には被認証ＥＣＵ２０の正当性の認証が合格であると判断し、一方、ＨＳＭ１４から受け取ったＣＭＡＣの検証結果が不合格（ＮＧ）である場合には被認証ＥＣＵ２０の正当性の認証が不合格であると判断する。
【０１９７】
［鍵交換鍵配信処理］
図１６、図１７を参照して本実施形態に係る鍵交換鍵配信処理を説明する。図１６、図１７は、本実施形態に係る鍵交換鍵配信方法を示すシーケンスチャートである。本実施形態では、第２実施形態と同様に、第１の鍵交換鍵（暗号化処理及び復号処理に使用される鍵）と第２の鍵交換鍵（ＭＡＣの生成処理及び検証処理に使用される鍵）とを使用する。
【０１９８】
以下、図１６、図１７を参照して第１の鍵交換鍵を配信する場合を例に挙げて説明する。第２の鍵交換鍵を配信する場合も、第１の鍵交換鍵を配信する場合と同様である。初めに図１６を参照して初回の第１の鍵交換鍵の配信について説明する。
【０１９９】
（ステップＳ４１１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、鍵交換鍵の配信先の被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを使用して、鍵交換鍵作成依頼（ＥＣＵ＿ＩＤ）をＳＩＭ４１へ送信する。
【０２００】
（ステップＳ４１２）ＳＩＭ４１は、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、第１の鍵交換鍵を被認証ＥＣＵ２０のＳＨＥ２３のＫＥＹ＿２鍵に登録するための各値である。ＳＩＭ４１は、マスター鍵ＭＳからＭＥＫ鍵を生成する。ＳＩＭ４１は、乱数を生成し、生成した乱数を第１の鍵交換鍵に使用する。なお、ＳＩＭ４１は、マスター鍵ＭＳから第１の鍵交換鍵を生成してもよい。ＳＩＭ４１は、第１の鍵交換鍵を自己のメモリに格納する。ＳＩＭ４１は、生成した値Ｍ１，Ｍ２及びＭ３を鍵管理ＥＣＵ１０へ送信する。
【０２０１】
（ステップＳ４１３）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＳＩＭ４１から受信した値Ｍ１，Ｍ２及びＭ３を被認証ＥＣＵ２０へ送信する。ＣＰＵ１１は、ＳＩＭ４１から受信した値Ｍ１，Ｍ２及びＭ３を使用して、ＨＳＭ１４に、第１の鍵交換鍵を取得させる。ＨＳＭ１４は、第１の鍵交換鍵を自己のメモリに格納する。
【０２０２】
次いでステップＳ４１４からＳ４１６までが実行される。ステップＳ４１４からＳ４１６までは、図８に示すステップＳ２１４からＳ２１６までと同じである。
【０２０３】
なお、２回目以降の第１の鍵交換鍵の配信には、図１７に示される鍵交換鍵配信処理を適用できる。これは、２回目以降の第１の鍵交換鍵の配信では、鍵管理ＥＣＵ１０は、図１６に示される本実施形態の鍵交換鍵配信処理により初回の第１の鍵交換鍵の配信で設定された第１の鍵交換鍵を使用して、値Ｍ１，Ｍ２及びＭ３を生成できるからである。この点についても、第２の鍵交換鍵を配信する場合に同様に適用できる。図１７を参照して２回目以降の第１の鍵交換鍵の配信について説明する。
【０２０４】
（ステップＳ４２１）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、鍵交換鍵作成依頼をＨＳＭ１４へ入力する。
【０２０５】
（ステップＳ４２２）鍵管理ＥＣＵ１０において、ＨＳＭ１４は、値Ｍ１，Ｍ２及びＭ３を生成する。この値Ｍ１，Ｍ２及びＭ３は、新しい第１の鍵交換鍵を被認証ＥＣＵ２０のＳＨＥ２３のＫＥＹ＿２鍵に登録するための各値である。ＨＳＭ１４は、乱数を生成し、生成した乱数を新しい第１の鍵交換鍵に使用する。ＨＳＭ１４は、新しい第１の鍵交換鍵を自己のメモリに格納する。ＨＳＭ１４は、生成した値Ｍ１，Ｍ２及びＭ３をＣＰＵ１１へ出力する。
【０２０６】
（ステップＳ４２３）鍵管理ＥＣＵ１０において、ＣＰＵ１１は、ＨＳＭ１４から受け取った値Ｍ１，Ｍ２及びＭ３を被認証ＥＣＵ２０へ送信する。
【０２０７】
次いでステップＳ４２４からＳ４２６までが実行される。ステップＳ４２４からＳ４２６までは、図８に示すステップＳ２１４からＳ２１６までと同じである。
【０２０８】
［ＭＡＣ鍵配信処理］
第４実施形態のＭＡＣ鍵の配信には、図９及び図１０に示される第２実施形態のＭＡＣ鍵配信処理を適用できる。
【０２０９】
上述した各実施形態によれば、第１のＥＣＵ１０及び第２のＥＣＵ２０に備わる暗号処理チップ（ＳＨＥ又はＨＳＭ）に応じた暗号処理手順を実行することができる。これにより、自動車１の車載制御システムにおけるデータの安全性を向上させることができるという効果が得られる。
【０２１０】
［鍵の管理方法］
鍵の管理方法の例について説明する。
【０２１１】
（鍵の管理単位）
（１）初期鍵
（１−ａ）ＥＣＵ単位
ＥＣＵ毎に異なる初期鍵を持つ場合、もしある初期鍵が漏洩したときの影響は小さい。
一方、個々のＥＣＵの初期鍵を鍵管理ＥＣＵ１０と共有することになるので、鍵の管理コストは大きくなる。
（１−ｂ）全ＥＣＵ共通
全ＥＣＵで共通の初期鍵を持つ場合、もし初期鍵が漏洩したときの影響は大きい。一方、鍵の管理コストは小さい。
【０２１２】
（２）鍵交換鍵
（２−ａ）ＥＣＵ単位
ＥＣＵ毎に異なる鍵交換鍵を持つ場合、ＥＣＵ毎に個別の鍵交換鍵を使用してＭＡＣ鍵を配信することになるので、ＭＡＣ鍵の配信に要する時間は長くなる。一方、もし鍵交換鍵が漏洩したときの影響は小さい。
（２−ｂ）全ＥＣＵ共通
全ＥＣＵで共通の鍵交換鍵を持つ場合、一つの自動車内では同じ鍵交換鍵を使用して全ＥＣＵに共通にＭＡＣ鍵を配信できるので、ＭＡＣ鍵の配信に要する時間は短くできる。
一方、もし鍵交換鍵が漏洩したときの影響は大きい。
（２−ｃ）自動車単位
自動車毎に異なる鍵交換鍵を持つ場合、一つの自動車内では同じ鍵交換鍵を使用して全ＥＣＵに共通にＭＡＣ鍵を配信できるので、ＭＡＣ鍵の配信に要する時間は短くできる。
また、もし鍵交換鍵が漏洩したときの影響は、一自動車の範囲に留まるので小さい。
【０２１３】
（３）ＭＡＣ鍵
（３−ａ）全ＥＣＵ共通
全ＥＣＵで共通のＭＡＣ鍵を持つ場合、もしＭＡＣ鍵が漏洩したときの影響は大きい。
（３−ｂ）自動車単位
自動車毎に異なるＭＡＣ鍵を持つ場合、もしＭＡＣ鍵が漏洩したときの影響は、一自動車の範囲に留まるので小さい。
【０２１４】
（初期鍵の生成方法）
初期鍵はＥＣＵの正当性の認証に使用される。このため、初期鍵が漏洩したときの影響を考慮すると、ＥＣＵ単位で初期鍵を管理できるように、ＥＣＵ毎に異なる初期鍵を持つことが好ましい。この場合、鍵管理ＥＣＵ１０と各被認証ＥＣＵ２０との初期鍵の共有方法が課題である。以下、その課題を解決するための初期鍵生成方法の例を説明する。
【０２１５】
マスター鍵（MASTER_SECRET：MS）を使用した初期鍵の生成方法について説明する。
初期鍵は、マスター鍵ＭＳと被認証ＥＣＵの識別子ＥＣＵ＿ＩＤとを使用して次式により算出される。
初期鍵 ＝ ダイジェスト（ＭＳ，ＥＣＵ＿ＩＤ）
ダイジェストは例えばＣＭＡＣである。又は、ダイジェストは例えば排他的論理和である。この初期鍵は、ＥＣＵ毎に異なる値になる。また、マスター鍵ＭＳが鍵管理ＥＣＵ１０やＳＩＭ４１で安全に保管されることにより、初期鍵の漏洩を防ぐことができる。例えば鍵管理ＥＣＵ１０がマスター鍵ＭＳを安全に保管することにより、鍵管理ＥＣＵ１０は、被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤを取得して該被認証ＥＣＵ２０の初期鍵を生成し、該生成した初期鍵を該被認証ＥＣＵ２０と安全に共有できる。
【０２１６】
初期鍵書込み装置は、ＥＣＵベンダに設けられる。初期鍵書込み装置は、マスター鍵ＭＳを備え、該マスター鍵ＭＳと、入力された被認証ＥＣＵ２０の識別子ＥＣＵ＿ＩＤとを使用して該被認証ＥＣＵ２０の初期鍵を生成し、生成した初期鍵を該被認証ＥＣＵ２０へ書き込む。初期鍵書込み装置において、マスター鍵ＭＳは安全に保管される。
【０２１７】
マスター鍵書込み装置は、マスター鍵ＭＳが設定される鍵管理ＥＣＵ１０のＥＣＵベンダ、マスター鍵ＭＳが設定されるＳＩＭ４１のＳＩＭベンダ、及び、マスター鍵ＭＳが設定されるＩＣチップを備えるＩＣカード等のベンダに設けられる。マスター鍵書込み装置は、マスター鍵ＭＳを生成し、生成したマスター鍵ＭＳを被書込み装置へ書き込む。マスター鍵書込み装置において、マスター鍵ＭＳの生成及び保管は安全に行われる。
【０２１８】
マスター鍵ＭＳは、例えば次式により算出される。
ＭＳ ＝ Ａ  ｘｏｒ  Ｂ  ｘｏｒ  Ｃ
但し、「Ａ  ｘｏｒ  Ｂ」は値Ａと値Ｂの排他的論理和である。
マスター鍵書込み装置において、各値Ａ，Ｂ，Ｃが別々に入力されることをマスター鍵ＭＳの生成条件に含める。例えば、マスター鍵書込み装置は、正当性認証済みの異なるユーザＩＤよって各値Ａ，Ｂ，Ｃが別々に入力された場合にのみ、マスター鍵ＭＳを生成する。これにより、マスター鍵ＭＳの漏洩を抑制することができる。なお、マスター鍵ＭＳの算出式は、上記の排他的論理和演算に限定されない。マスター鍵ＭＳの算出式としては、複数の値、例えば値Ａ，Ｂ及びＣが全て得られた場合にのみ生成できる算出式であればよい。
【０２１９】
また、ＥＣＵベンダは、ＥＣＵメーカからＥＣＵの識別子ＥＣＵ＿ＩＤのリストを取得し、各識別子ＥＣＵ＿ＩＤに対応する初期鍵のリストを生成し、生成した初期鍵のリストをＥＣＵメーカへ提供してもよい。
【０２２０】
また、上述した初期鍵生成方法の例では、もし初期鍵が漏洩すると、漏洩した初期鍵を不正にＥＣＵに設定することによって被認証ＥＣＵ２０のなりすましが可能である。このため、自動車１に搭載された後に一度認証された被認証ＥＣＵ２０の初期鍵は該被認証ＥＣＵ２０から消去するようにしてもよい。これにより、例えば第２のＥＣＵ２０の交換によって自動車１から取り外された第２のＥＣＵ２０から初期鍵が漏洩することを防止できる。また、被認証ＥＣＵ２０の認証実績を管理する管理サーバを設け、管理サーバによって被認証ＥＣＵ２０の認証状況を把握できるようにしてもよい。
【０２２１】
［第５実施形態］
図１８は、本実施形態に係る鍵生成装置１００の構成例を示す図である。図１８において、鍵生成装置１００は、入力部１０１とダイジェスト算出部１０２と出力部１０３とマスター鍵記憶部１０４とを備える。入力部１０１は、鍵の生成に使用される情報を入力する。マスター鍵記憶部１０４は、鍵の生成に使用されるマスター鍵を記憶する。ダイジェスト算出部１０２は、入力部１０１により入力された情報と、マスター鍵記憶部１０４に記憶されているマスター鍵とを使用して、ダイジェストを算出する。出力部１０３は、ダイジェスト算出部１０２により算出されたダイジェスト（鍵）を出力する。
【０２２２】
本実施形態では、鍵生成装置１００は、次式により鍵を算出する。
鍵＝ダイジェスト（マスター鍵、ＥＣＵ識別子、Ｎ＿ｋｅｙ）
但し、マスター鍵は、マスター鍵記憶部１０４に格納されているマスター鍵である。ＥＣＵ識別子は、鍵を格納する先のＥＣＵの識別子である。Ｎ＿ｋｅｙは、鍵の種類を表す変数である。ダイジェストとして、例えば、ハッシュ（hash）関数により算出される値、排他的論理和演算により算出される値、又は、ＣＭＡＣなどが挙げられる。
【０２２３】
次に図１９を参照して本実施形態に係る鍵生成方法を説明する。図１９は、本実施形態に係る鍵生成方法の一例を示すシーケンスチャートである。図１９には、第２のＥＣＵ２０のＳＨＥ２３に対して、初期設定する鍵（初期鍵）を生成する手順の一例が示されている。ここでは、第２のＥＣＵ２０のＳＨＥ２３に対して、上記の式（２）で示される値のうち、値ＫMASTER_ECU_KEYをＭＥＫ鍵に初期設定し、値ＫBOOT_MAC_KEYをＢＭＫ鍵に初期設定し、値ＫＫＥＹ＜Ｎ＞をＫＥＹ＿Ｎ鍵に初期設定する。鍵生成装置１００のマスター鍵記憶部１０４は、マスター鍵ＭＳを予め格納している。
【０２２４】
図１９の鍵生成方法の手順は、例えば、自動車の製造工場において、自動車の製造工程で自動車１に搭載された第２のＥＣＵ２０に適用してもよい。ここでは、一例として、鍵生成装置１００は、有線又は無線により自動車１と通信を行い、該自動車１に搭載された第２のＥＣＵ２０とデータを送受する。
【０２２５】
（ステップＳ１０００）鍵生成装置１００の入力部１０１は、変数Ｎ＿ｋｅｙの指定を受け付ける。この例では、ＭＥＫ鍵を表す変数Ｎ＿ｋｅｙは文字列ＣMASTER_ECU_KEYである。また、ＢＭＫ鍵を表す変数Ｎ＿ｋｅｙは文字列ＣBOOT_MAC_KEYである。また、ＫＥＹ＿Ｎ鍵を表す変数Ｎ＿ｋｅｙは文字列ＣＫＥＹ＿Ｎである。変数Ｎ＿ｋｅｙの指定は一つでもよく、又は複数でもよい。鍵生成装置１００は、指定された変数Ｎ＿ｋｅｙについての鍵を生成する。なお、鍵生成装置１００に対して、生成する鍵の種類の変数Ｎ＿ｋｅｙを予め指定しておいてもよい。
【０２２６】
（ステップＳ１００１）鍵生成装置１００の入力部１０１は、初期鍵を格納する先の第２のＥＣＵ２０のＥＣＵ識別子ＥＣＵＩＤを取得する。なお、鍵生成装置１００に対して、初期鍵を格納する先の第２のＥＣＵ２０のＥＣＵ識別子ＥＣＵＩＤを予め設定しておいてもよい。
【０２２７】
（ステップＳ１００２）鍵生成装置１００のダイジェスト算出部１０２は、マスター鍵記憶部１０４に格納されているマスター鍵ＭＳと、初期鍵を格納する先の第２のＥＣＵ２０のＥＣＵ識別子ＥＣＵＩＤと、指定された変数Ｎ＿ｋｅｙとを使用して、「ダイジェスト（ＭＳ、ＥＣＵＩＤ、Ｎ＿ｋｅｙ）」を算出する。
【０２２８】
（ステップＳ１００３）鍵生成装置１００の出力部１０３は、ダイジェスト算出部１０２が算出した「ダイジェスト（ＭＳ、ＥＣＵＩＤ、Ｎ＿ｋｅｙ）」を、当該変数Ｎ＿ｋｅｙが表す種類の初期鍵として出力する。第２のＥＣＵ２０は、その出力された初期鍵を受信する。
【０２２９】
（ステップＳ１００４）第２のＥＣＵ２０は、鍵生成装置１００から受信した初期鍵を、ＳＨＥ２３の該当する種類の鍵としてＳＨＥ２３に格納する。
【０２３０】
なお、第１のＥＣＵ１０のＳＨＥ１３に対しても、上述した第２のＥＣＵ２０と同様に、初期鍵の生成及び設定を行ってもよい。
【０２３１】
第５実施形態によれば、変数Ｎ＿ｋｅｙを変えることによって、同じマスター鍵とＥＣＵ識別子から複数の種類の鍵を柔軟に生成することができる。
【０２３２】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０２３３】
上述した実施形態では、車両として自動車を例に挙げたが、原動機付自転車や鉄道車両等の自動車以外の他の車両にも適用可能である。
【０２３４】
また、上述した各装置の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disc）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【０２３５】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。
さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【０２３６】
１…自動車、１０…第１のＥＣＵ（鍵管理ＥＣＵ）、１１，２１…ＣＰＵ、１２，２２…記憶部、１３，２３…ＳＨＥ、１４…ＨＳＭ、２０…第２のＥＣＵ（被認証ＥＣＵ）、３０…ＣＡＮ、４０…通信モジュール、４１…ＳＩＭ、１００…鍵生成装置、１０１…入力部、１０２…ダイジェスト算出部、１０３…出力部、１０４…マスター鍵記憶部
【図１】
2018023162.tif 000007
【図２】
2018023162.tif 000008
【図３】
2018023162.tif 000009
【図４】
2018023162.tif 000010
【図５】
2018023162.tif 000011
【図６】
2018023162.tif 000012
【図７】
2018023162.tif 000013
【図８】
2018023162.tif 000014
【図９】
2018023162.tif 000015
【図１０】
2018023162.tif 000016
【図１１】
2018023162.tif 000017
【図１２】
2018023162.tif 000018
【図１３】
2018023162.tif 000019
【図１４】
2018023162.tif 000020
【図１５】
2018023162.tif 000021
【図１６】
2018023162.tif 000022
【図１７】
2018023162.tif 000023
【図１８】
2018023162.tif 000024
【図１９】
2018023162.tif 000025