JP7511492B2 - 自動車用電子制御装置 - Google Patents
自動車用電子制御装置 Download PDFInfo
- Publication number
- JP7511492B2 JP7511492B2 JP2021002146A JP2021002146A JP7511492B2 JP 7511492 B2 JP7511492 B2 JP 7511492B2 JP 2021002146 A JP2021002146 A JP 2021002146A JP 2021002146 A JP2021002146 A JP 2021002146A JP 7511492 B2 JP7511492 B2 JP 7511492B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- secure
- host
- volatile memory
- core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 7
- 238000012546 transfer Methods 0.000 description 27
- 238000004364 calculation method Methods 0.000 description 22
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Description
本発明は自動車用電子制御装置に関し、とくに電子鍵の管理に関する。
車両には多種多様な機能を実現するために多くの自動車用電子制御装置(Electronic Control Unit、以下ECUと略称する場合がある)が搭載されている。これらのECUにはマイクロプロセッサが搭載されており、車両の制御対象(例えば、エンジンの噴射および点火)を制御する。
近年、コネクテッドの世代の新しいサービスを効率的に提供するために、車載ECUの統廃合が進められている。車載ECUの統廃合を行うにあたり、機能性の最適な再配置が必要となっている。
その課題を解決する技術として、1つのECUに対して複数のシステムを搭載するため仮想化技術であるハイパーバイザプラットフォームの開発が進められている(特許文献1)。ハイパーバイザプラットフォームは、車載ECUの機能配置において、ソフトウェアの移植性を高めている技術である。
ハイパーバイザプラットフォームでは、1つのECUで複数のアプリケーションソフトウェアを実行することを目的としている。その応用によって、OEMによって作成されたアプリケーションソフトウェア、ECUサプライヤのアプリケーションソフトウェア、または、ECUサプライヤ以外のアプリケーションソフトウェア、等が実行可能である。
アプリケーションソフトウェアの機能向上のために、ソフトウェアの更新が発生することがある。このソフトウェア更新は従来ディーラーでのみ実施していたが、無線通信を利用したソフトウェア更新技術であるOTA(Over the Air)も開発されている。
一方で、作成したアプリケーションソフトウェアが無線にて送付されることから、第3者による盗聴および改ざんなどのサイバーアタックから車両システムを守る必要がある。そのような、サイバーセキュリティの観点から、ソフトウェア更新データを暗号化したり、受領したデータが改ざんされていないかの検証をしたりすることが有益である。データの暗号化や改ざん検知には、アルゴリズムに沿った鍵(電子鍵)が必要となる。
しかしながら、従来の技術では、複数の異なる鍵を管理するのが困難であるという課題があった。
複数のアプリケーションソフトウェアの責任分担がそれぞれ異なる場合、それらのアプリケーションソフトウェア間で同一の鍵を用いることは好ましくない。
マイクロプロセッサにはHSM(Hardware Security Module)が搭載されており、その内部でECUの鍵の管理を行うことができるが、その登録できる鍵のスロット数には限りがあるので、多くのシステムが搭載される場合においては、鍵の登録スロットが不足する事態が起こり得る。
また、多数の鍵の登録スロットを持つマイクロプロセッサであっても、そのようなマイクロプロセッサは高価になることや、利用の際にどのスロットをどのアプリケーションソフトウェアが利用しているかの管理を行う必要が出てくる。
本発明は、上記課題を解決するためになされたものであり、複数の異なる鍵をより容易に管理できる自動車用電子制御装置を提供することを目的とする。
本発明に係る自動車用電子制御装置の一例は、
マイクロプロセッサを備える自動車用電子制御装置であって、
前記マイクロプロセッサは、ホスト側コアと、セキュアコアと、ホスト側記憶領域と、セキュア記憶領域とを備え、
前記ホスト側コアおよび前記セキュアコアは、前記ホスト側記憶領域にアクセス可能であり、
前記セキュアコアは、前記セキュア記憶領域にアクセス可能であり、
前記ホスト側コアは、前記セキュア記憶領域にアクセス可能ではなく、
前記ホスト側記憶領域は、ホスト側揮発性メモリおよびホスト側不揮発性メモリを備え、
前記セキュア記憶領域は、セキュア揮発性メモリおよびセキュア不揮発性メモリを備え、
前記ホスト側不揮発性メモリには、ホスト用プログラムおよび鍵が格納され、
前記セキュア不揮発性メモリには、セキュアプログラムが格納され、
前記ホスト用プログラムを実行する前記ホスト側コアは、前記ホスト側不揮発性メモリから前記鍵を取得するとともに、前記セキュアプログラムを実行する前記セキュアコアに前記鍵を受け渡し、
前記セキュアプログラムを実行する前記セキュアコアは、受け取った前記鍵を前記セキュア揮発性メモリに格納するとともに、格納された前記鍵を演算に利用する、
ことを特徴とする。
マイクロプロセッサを備える自動車用電子制御装置であって、
前記マイクロプロセッサは、ホスト側コアと、セキュアコアと、ホスト側記憶領域と、セキュア記憶領域とを備え、
前記ホスト側コアおよび前記セキュアコアは、前記ホスト側記憶領域にアクセス可能であり、
前記セキュアコアは、前記セキュア記憶領域にアクセス可能であり、
前記ホスト側コアは、前記セキュア記憶領域にアクセス可能ではなく、
前記ホスト側記憶領域は、ホスト側揮発性メモリおよびホスト側不揮発性メモリを備え、
前記セキュア記憶領域は、セキュア揮発性メモリおよびセキュア不揮発性メモリを備え、
前記ホスト側不揮発性メモリには、ホスト用プログラムおよび鍵が格納され、
前記セキュア不揮発性メモリには、セキュアプログラムが格納され、
前記ホスト用プログラムを実行する前記ホスト側コアは、前記ホスト側不揮発性メモリから前記鍵を取得するとともに、前記セキュアプログラムを実行する前記セキュアコアに前記鍵を受け渡し、
前記セキュアプログラムを実行する前記セキュアコアは、受け取った前記鍵を前記セキュア揮発性メモリに格納するとともに、格納された前記鍵を演算に利用する、
ことを特徴とする。
本発明に係る自動車用電子制御装置は、複数の異なる鍵をより容易に管理することができる。
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図1は、本発明の実施形態1に係るECU(自動車用電子制御装置)の内部構成について示す図である。ECUはマイクロプロセッサ300を備える。マイクロプロセッサ300は、演算手段として複数のコアを備える。コアは、n個(ただしn≧1)のホスト側コア1、2、…、nと、少なくとも1つ(図1の例では1つ)のセキュアコア0とを含む。
図1は、本発明の実施形態1に係るECU(自動車用電子制御装置)の内部構成について示す図である。ECUはマイクロプロセッサ300を備える。マイクロプロセッサ300は、演算手段として複数のコアを備える。コアは、n個(ただしn≧1)のホスト側コア1、2、…、nと、少なくとも1つ(図1の例では1つ)のセキュアコア0とを含む。
[実施形態1]
ホスト側コアとは、たとえば一般的なアプリケーションプログラム(ホスト用プログラム)を実行するコアであり、セキュアコア(セキュリティ専用コアであってもよい)は、たとえばセキュリティプログラムを実行して、鍵(電子鍵)を利用したセキュリティ用の演算を行うコアである。これらのコアが各プログラムを実行することにより、マイクロプロセッサ300は本明細書に記載される機能を実現する。
ホスト側コアとは、たとえば一般的なアプリケーションプログラム(ホスト用プログラム)を実行するコアであり、セキュアコア(セキュリティ専用コアであってもよい)は、たとえばセキュリティプログラムを実行して、鍵(電子鍵)を利用したセキュリティ用の演算を行うコアである。これらのコアが各プログラムを実行することにより、マイクロプロセッサ300は本明細書に記載される機能を実現する。
マイクロプロセッサ300は、記憶手段として、ホスト側記憶領域およびセキュア記憶領域を備える。ホスト側記憶領域は、各ホスト側コア専用のローカルRAM11、12、…、1n(ホスト側揮発性メモリ)を含み、セキュア記憶領域は、セキュアコア専用のセキュアRAM10(セキュア揮発性メモリ)を含む。これらのRAMは、対応するコアからしかアクセスできないようになっている。
すべてのコアは、データバス100およびペリフェラルバス110と接続されている。また、これらのバスとは切り離された形で、セキュアコア0のみが接続されるセキュアコア専用のデータバス200と、セキュアコア専用のペリフェラルバス210とが設けられる。
ホスト側記憶領域は、ホスト側コア1~nが実行するプログラム(ホスト用プログラム)が格納されているコードフラッシュ101(ホスト側不揮発性メモリ)と、ホスト用プログラムで使用するデータを格納するデータフラッシュ102(ホスト側不揮発性メモリ)と、ホスト側コア1~nおよびセキュアコア0からアクセスが可能な共有RAM103(ホスト側揮発性メモリ)とを含む。
ペリフェラルバス110には、ホスト側コア1~nおよびセキュアコア0が利用するタイマ111と、割込みコントローラ112と、MPU113(Memory Protection Unit)とが接続されている。MPU113はメモリプロテクション機能を有する。たとえば、各メモリのアドレスまたはアドレス領域ごとに、各コアのアクセス制限を設定する。アクセス制限は、読み出し許可または禁止、書き込み許可または禁止、実行許可または禁止、等の制限を含む。各コアのアクセス制限は、コアごとに固定されている必要はなく、たとえば各コアが実行中のプログラムに応じて設定されてもよい。
このように、マイクロプロセッサ300は、コードフラッシュ101、データフラッシュ102および共有RAM103において、各ホスト側コア1~nがアクセス可能な領域を制御する。この制御により、コアごとに、またはプログラムごとにアクセス制限が実現され、セキュリティが向上する。
セキュア記憶領域は、セキュアコア0が実行するプログラム(セキュアプログラム)が格納されているセキュアコードフラッシュ201(セキュア不揮発性メモリ)と、セキュアプログラムで使用するデータを格納するセキュアデータフラッシュ202(セキュア不揮発性メモリ)とを含む。セキュアコードフラッシュ201およびセキュアデータフラッシュ202はデータバス200に接続される。セキュアデータフラッシュ202には、セキュアプログラムで使用する鍵を表す情報を格納することができる。
セキュアコア0専用のペリフェラルバス210には、HWA211(Hardware Accelerator)が接続されていてもよい。HWA211は、鍵を利用した暗号演算アルゴリズムの一部を実行する際に、ハードウェア実装の演算機を利用することにより高速に演算結果を得ることができる。
セキュアコードフラッシュ201、セキュアデータフラッシュ202およびHWA211には、セキュアコア0以外のコア(すなわちホスト側コア1~n)からはアクセスができない構成となっている。すなわち、セキュアコア0は、セキュア記憶領域にアクセス可能であるが、ホスト側コア1~nは、セキュア記憶領域にアクセス可能ではない。なお、ホスト側記憶領域については、ホスト側コア1~nおよびセキュアコア0いずれもアクセス可能である。
図2は、図1のECUの記憶領域の構成を示す図であり、たとえばECU400内部に複数のアプリケーションソフトウェアを格納するハイパーバイザプラットフォームの構成を示す。
ECU400の内部には、図1に示すマイクロプロセッサ300が搭載されている。コードフラッシュ101には、BSW1010(Basic Software)(ホスト用プログラム)と、m個(ただしm≧1)のアプリケーションソフトウェア1011~101m(ホスト用プログラム)とが格納されている。
また、セキュアコア0専用のセキュアコードフラッシュ201には、HSMファームウェア2010(セキュアプログラム)が格納されている。
このHSMファームウェア2010は、セキュアコア0によって実行される。一方で、アプリケーションソフトウェア1011~101mは、ホスト側コア1~nによって実行される。アプリケーションソフトウェアとホスト側コアは1対1対応するわけではなく、1つのアプリケーションソフトウェアを複数のホスト側コアが実行することもでき、1つのホスト側コアが複数のアプリケーションソフトウェアを実行することもできる。
セキュアコア0専用のセキュアRAM10には、鍵を表すデータを格納することができる。とくに、セキュアRAM10に格納される鍵は、AUTOSARの規格R19-11のSpecification of Secure Hardware Extensionsに規定されるRAM_KEYの形式とすることができる。このようにすると、規格に沿った処理が可能である。以下、セキュアRAM10に格納される鍵をRAM_KEYと呼ぶ場合がある。
上述のように、セキュアRAM10にはホスト側コア1~nによるアクセスが禁止されているので、セキュアRAM10内のRAM_KEYが格納される領域に対しても、ホスト側コア1~nによるアクセスは禁止される。このため、RAM_KEYに対するセキュリティが向上する。
本実施形態をより具体的に以下に説明する。以下の説明では、セキュアコア0専用のメモリをセキュア領域メモリ、それ以外のメモリをホスト領域メモリと呼び分けを行う。
実施形態1では、ソフトウェア更新における動作について記載する。本実施形態では、鍵はアプリケーションソフトウェアの更新処理に利用される。
図3は、ソフトウェア更新装置からデータを転送する際の構成を示す図である。ソフトウェア更新装置からデータを転送することにより、たとえばアプリケーションソフトウェアの更新を行う。実施形態1では簡単のために、アプリケーションソフトウェア1011の1つのみを表示しているが、更新対象となるアプリケーションソフトウェアを限定するものではなく、同様の方法にて他のアプリケーションソフトウェアの更新を行うことができる。
図3は、ソフトウェア更新装置からデータを転送する際の構成を示す図である。ソフトウェア更新装置からデータを転送することにより、たとえばアプリケーションソフトウェアの更新を行う。実施形態1では簡単のために、アプリケーションソフトウェア1011の1つのみを表示しているが、更新対象となるアプリケーションソフトウェアを限定するものではなく、同様の方法にて他のアプリケーションソフトウェアの更新を行うことができる。
ECU400とデータ転送元500が通信路600で接続されている。データ転送元500は、ソフトウェア更新専用のツールまたは設備であることもあるし、車載ネットワーク上の中継ECUであることもある。通信路600は、例えばCANやイーサネット(登録商標)などがあげられる。
アプリケーションソフトウェア1011は、コードフラッシュ101に格納される。アプリケーションソフトウェア1011の一部には、マイクロプロセッサ300の機能によって、アクセス保護領域1011xが設定されている。アクセス保護領域1011xは、BSW1010および特定のアプリケーションソフトウェア1011のみ読出しアクセスをすることができ、すなわち他のアプリケーションソフトウェアからは読出しアクセスができないように設定される。
アクセス保護領域1011xには、アプリケーションソフトウェア1011用の鍵が格納される。鍵は少なくとも1つであればよいが、本実施形態では、AES鍵1011aおよびMAC鍵1011bを含む。これらの鍵はアクセス制限が行われている不揮発性メモリ領域に配置されてもよく、そのようにするとセキュリティが向上する。AES鍵1011aは、アプリケーションソフトウェアの暗号化および復号に利用される鍵の例であり、本実施形態では共通鍵暗号方式で利用される鍵である。MAC鍵1011bは、アプリケーションソフトウェアの改ざん検知検証に利用される鍵の例であり、本実施形態では共通鍵暗号方式で利用される鍵である。このように、複数種類の鍵を利用することにより、セキュリティを向上させることができる。
データ転送元500の内部にはデータ510が準備されている。データ510は暗号化されたデータであり、アプリケーションソフトウェア1011を更新するための、新アプリケーションソフトウェア1011’を含む。この暗号化には、既にコードフラッシュ101に格納されているアプリケーションソフトウェア1011に対応するAES鍵1011aが使用される。
新アプリケーションソフトウェア1011’内部において、アクセス保護領域1011xに対応する領域には、AES鍵1011a’およびMAC鍵1011b’が含まれる。
図4は、暗号化されたデータの復号およびデータの改ざん検知を行うフローを示す図である。
以下の説明において、簡便のため、動作主体をソフトウェアとして表記する場合があるが、その場合には、実際の動作主体は当該ソフトウェアを実行するコアであると解釈することができる。たとえば、BSW1010がなんらかの処理を行うと表記されている場合には、その処理はBSW1010を実行するホスト側コア1~nのいずれかによって実行され、HSMファームウェア2010がなんらかの処理を行うと表記されている場合には、その処理はHSMファームウェア2010を実行するセキュアコア0によって実行される。
まず、データ転送元500は、ステップS10として、ECU400に対して、ソフトウェア更新要求を発行する。これは、たとえばISO14229-1で規定されるUDS診断通信(Unified Diagnostic Service)のサービス10に相当する。
BSW1010は、ステップS11として、ソフトウェア更新要求を受け付けられるかどうかのチェックを行う。受け付けられる場合には要求受領OKを、受け付けられない場合は要求受領NGを、データ転送元500に返答する。要求受領OKが返答された場合には後続の処理が実行され、要求受領NGが返答された場合には図4の処理は終了する。
データ転送元500は、ステップS20として、ECU400に対して、セキュリティアクセス要求を実施する。これはたとえばUDS診断通信のサービス27に相当する。
BSW1010は、ステップS21として、セキュリティアクセス用の鍵スロットを指定した上で、セキュア領域メモリのHSMファームウェア2010に対して演算要求を行う。
HSMファームウェア2010は、ステップS22として、指定された鍵スロットに対応する鍵(本実施形態ではAES鍵1011aとする)をセキュアデータフラッシュ202から取得する。また、ステップS23として、AES鍵1011aに所定の暗号演算を施し、その演算結果をホスト側のBSW1010に返答する。
BSW1010は、ステップS24として、セキュリティアクセスの可否判断を行う。たとえば、データ転送元500から受信したデータと、HSMファームウェア2010から受信した演算結果とが一致するか否かを判定する。一致する場合には、データ転送元500にセキュリティアクセスを許可すると判定し、データ転送元500に許可通知を返答する。この場合には後続の処理が実行される。一致しない場合には、データ転送元500にセキュリティアクセスを許可しないと判定し、データ転送元500に不許可通知を返答する。この場合には図4の処理は終了する。
データ転送元500は、ステップS30として、ECU400に対して、データ転送情報通知を行う。これはたとえばUDS診断通信のサービス34に相当する。このデータ転送情報通知には、転送データの開始アドレス情報、転送データサイズ情報、暗号化アルゴリズムを特定する情報、圧縮アルゴリズムを特定する情報、等が含まれる。
BSW1010は、ステップS31として、受領した情報(たとえばステップS10のソフトウェア更新要求)をもとに、どのアプリケーションソフトウェアがターゲットになっているかを判断し、さらに、アクセス要求がそのアプリケーションソフトウェアに対応する記憶領域に対応しているか否かを判断する。
アクセス要求がそのアプリケーションソフトウェアに対応する記憶領域に対応している場合には、BSW1010は、コードフラッシュ101からAES鍵1011aを取得するとともに、HSMファームウェア2010にAES鍵1011aを受け渡し、RAM_KEYにAES鍵1011aを登録する(たとえば所定アドレスに格納する)ための要求を行う。この場合には、さらに後続の処理が実行される。一方、アクセス要求がそのアプリケーションソフトウェアに対応する記憶領域に対応していない場合には、図4の処理は終了する。
HSMファームウェア2010は、ステップS32として、受け取った鍵(AES鍵1011a)に関する情報を入手し、AES鍵1011aをセキュアRAM10に格納してRAM_KEYに登録する。登録が成功したあとで、HSMファームウェア2010は登録完了通知をBSW1010に返答する。BSW1010は、HSMファームウェア2010からの登録完了通知を受けたら、データ転送元500に対して返答を行う。
データ転送元500は、ステップS40として、ECU400に対して、データ510の転送を行う。このステップS40はデータ510のすべてが転送されるまで繰り返し実行される。これはたとえばUDS診断通信のサービス36に相当する。
BSW1010は、ステップS41として、受領したデータを共有RAM103に格納したのちに、HSMファームウェア2010に対してRAM_KEY(この例ではAES鍵1011a)を指定して復号要求を行う。
HSMファームウェアは、ステップS42として、RAM_KEY(この例ではAES鍵1011a)を利用し、復号対象データとを取得し、復号演算を行い、復号データを共有RAM103に格納したのちに、BSW1010に対して復号完了通知を返答する。
BSW1010は、ステップS43として、復号データを共有RAMから取得し、コードフラッシュ101に対して書込みを実施する。
ステップS40の繰り返しによりすべてのデータが転送されたら、データ転送元500は、ステップS50として、ECU400に対して、データ転送完了通知を行う。これはたとえばUDS診断通信のサービス37に相当する。
BSW1010は、ステップS51として、完了処理を実施したのちに、データ転送元500に対して、返答を行う。
データ転送元500は、ステップS60として、ECU400に対して、整合性チェック要求を行う。これはたとえばUDS診断通信のサービス31を利用して構成されることが多い。
BSW1010は、ステップS61として、ステップS31と同様に、コードフラッシュ101からMAC鍵1011bを取得するとともに、HSMファームウェア2010にMAC鍵1011bを受け渡し、RAM_KEYにMAC鍵1011bを登録するための要求を行う。
HSMファームウェア2010は、ステップS62として、受け取った鍵(MAC鍵1011b)に関する情報を入手し、MAC鍵1011bをセキュアRAM10に格納してRAM_KEYに登録する。登録が成功したあとで、HSMファームウェア2010は登録完了通知をBSW1010に返答する。
BSW1010は、HSMファームウェア2010に対して、RAM_KEY(この例ではMAC鍵1011b)と、検証対象の領域を特定する情報とを指定して、MAC演算要求を行う。
HSMファームウェア2010は、ステップS63として、ステップS42と同様に、RAM_KEY(この例ではMAC鍵1011b)と、MAC演算対象データとを取得する。そして、RAM_KEYを利用してMAC演算を行い、MAC演算値を共有RAM103に格納したのちに、BSW1010に対して演算完了通知を返答する。MAC演算対象データは、たとえば新アプリケーションソフトウェア1011’の全体である。
BSW1010は、HSMファームウェア2010からの演算完了通知を受けたら、受信したMAC演算値を用いて整合性チェックを行い、データ転送元500に対してその整合性チェック結果の返答を行う。整合性チェックを行うためのデータ(たとえばMAC演算値を検証するためのチェックサム)は、新アプリケーションソフトウェア1011’に含まれていてもよい。
このように、実施形態1によれば、アプリケーションソフトウェアの更新処理において、鍵をRAM_KEYに登録して利用するので、複数の異なる鍵をより容易に管理することができる。
たとえば、複数のアプリケーションソフトウェアが存在するハイパーバイザプラットフォームにおいても、どのアプリケーションソフトウェアからでも同一の方法にて鍵を取り扱うことができる。
また、セキュアデータフラッシュ202で管理しなければならない鍵の数を減らすことができ、どのアプリケーションソフトウェア用のどの鍵が、どのスロットを占有しているか、等の管理対象データを削減することができる。
実施形態1において、以下のような変更を施すことができる。
ステップS21において、BSW1010は同期型の要求をHSMファームウェア2010に行っている図となっているが、非同期型の要求にて実施してもよい。たとえば、BSW1010は、ステップS21とステップS24との間に、図4の処理に関係しない他の処理を実行してもよい。
ステップS21において、BSW1010は同期型の要求をHSMファームウェア2010に行っている図となっているが、非同期型の要求にて実施してもよい。たとえば、BSW1010は、ステップS21とステップS24との間に、図4の処理に関係しない他の処理を実行してもよい。
また、コードフラッシュ101にデータを書き込むためには事前に当該領域のデータ消去を実施する必要がある場合があるが、消去のタイミングは任意である。たとえば、ステップS32の整合性チェックのタイミングで消去してもよいし、ステップS43のタイミングで消去してもよい。
ステップS32以降において、HSMファームウェア2010がRAM_KEYを取得する場合には、コードフラッシュ101から読み出すように指定しても良いし、共有RAM103に一旦格納したのちに読み出すように指定してもよい。
ステップS43において、コードフラッシュ101に対して書込みを実施する例を示したが、この書込みの対象はコードフラッシュ101に制限されるものではない。例えば、ダブルバンク方式などの別のコードフラッシュ領域に書き込んでもよいし、マイクロプロセッサの外部に接続されるコードフラッシュに書き込んでもよい。
ステップS61、S62、S63において、正当性チェックとして共通鍵暗号方式によるMACによる改ざん検知を利用しているが、別の方式による検証も可能である。例えば、鍵はRFC8017に例示されるような非対称鍵暗号方式で利用される鍵であってもよく、様々な暗号方式を利用することが可能である。なお、共通鍵についてはアクセス保護領域1011xに配置する必要があるが、非対称鍵の公開鍵についてはアクセス保護領域1011xに配置する必要はない。
[実施形態2]
実施形態2では、アプリケーションソフトウェアの起動に関する構成方法を説明する。本実施形態では、鍵はアプリケーションソフトウェアの起動処理に利用される。なお、実施形態1と共通する部分については説明を省略する場合がある。
図5は、ECU起動時におけるアプリケーションソフトウェアの改ざん検知を行い起動するアプリケーションを決定するフローを示す図である。
実施形態2では、アプリケーションソフトウェアの起動に関する構成方法を説明する。本実施形態では、鍵はアプリケーションソフトウェアの起動処理に利用される。なお、実施形態1と共通する部分については説明を省略する場合がある。
図5は、ECU起動時におけるアプリケーションソフトウェアの改ざん検知を行い起動するアプリケーションを決定するフローを示す図である。
ECU400への電源供給が開始されると、マイクロプロセッサ300内部のHSMファームウェア2010が最初に起動する。
HSMファームウェア2010は、ステップS100として、セキュアデータフラッシュ202に格納されている鍵(たとえばBOOT_KEYと呼ばれるもの)と、予め設定されたブート領域のデータの読出しを行い、これらに基づいてMAC演算を実施する。
MAC演算の結果、ブート領域の改ざんがないことが保証されたら、ステップS101として、HSMファームウェア2010はブートプログラムを含むBSW1010の起動を行う。この機能はセキュアブートと呼ばれ、例としてMAC値による保証を示したが、非対称鍵を用いた方法も利用することができる。
BSW1010は、ステップS102として、各アプリケーションソフトウェアの検証と、アプリケーションの起動処理を実施する。以下、アプリケーションソフトウェア1011~101mのそれぞれについてステップS103~S107がループして実行される。以下では、処理中のアプリケーションソフトウェアを「アプリケーションソフトウェアx」と表記する。
まず、BSW1010は、ステップS103として、コードフラッシュ101からMAC鍵1011bを取得するとともに、HSMファームウェア2010にMAC鍵1011bを受け渡し、アプリケーションソフトウェアxに対応するMAC鍵を、RAM_KEYに登録するための要求を行う。
HSMファームウェア2010は、ステップS104として、受け取った鍵(MAC鍵1011b)に関する情報を入手し、MAC鍵1011bをセキュアRAM10に格納してRAM_KEYに登録する。登録が成功したあとで、HSMファームウェア2010は登録完了通知をBSW1010に返答する。
次に、BSW1010は、HSMファームウェア2010に対し、RAM_KEY(MAC鍵1011b)を利用したMAC演算要求を行う。
HSMファームウェア2010は、ステップS105として、RAM_KEYと、MAC演算対象データを取得し、RAM_KEYを利用してMAC演算を行い、MAC演算値を共有RAM103に格納したのちに、BSW1010に対して演算完了通知を返答する。
BSW1010は、ステップS106として、アプリケーションソフトウェアxの整合性をチェックする。整合性のチェックは、たとえば図4のステップS63と同様に行われる。整合している場合には、アプリケーションソフトウェアxの起動許可情報を共有RAM103に格納する。
その後、RAM_KEYの消去を行うために、BSW1010は、HSMファームウェア2010に対して、無効な鍵情報(例えば、すべて0となる鍵など)を、RAM_KEYに登録するための要求を実施する。
HSMファームウェア2010は、ステップS107として、指定された鍵情報をRAM_KEYに登録し、BSW1010に対して完了通知を返答する。
このように、HSMファームウェア2010は、鍵を演算に利用した後(その鍵を複数回の演算に利用する場合には、すべての演算が終了した後)に、その鍵を無効とする情報をセキュアRAM10に格納してRAM_KEYに登録する。鍵を無効とすることにより、その鍵の不正利用が抑制される。
上述のように、ステップS103~S107は、対象となるすべてのアプリケーションに対して行われる。
BSW1010は、ステップS108として、起動許可情報を共有RAM103より読取り、その起動許可情報に従ってアプリケーションソフトウェアを起動する。
ステップS108において、複数のアプリケーションソフトウェアを関連付けて起動許可判定を行ってもよい。たとえば、第1のアプリケーションソフトウェアについて、第2のアプリケーションソフトウェア(複数可)が起動していないと期待する動作が行われない場合には、第1および第2のアプリケーションソフトウェアすべての起動が許可されている場合に限り第1のアプリケーションソフトウェアを起動し、第1および第2のアプリケーションソフトウェアのうちいずれか1つでも起動が許可されていない場合には第1のアプリケーションソフトウェアを起動しない。
このように、実施形態2によれば、アプリケーションソフトウェアの起動において、鍵をRAM_KEYに登録して利用するので、複数の異なる鍵をより容易に管理することができる。
たとえば、それぞれ異なる鍵を用いる複数のアプリケーションソフトウェアが存在するハイパーバイザプラットフォームにおいて、不正なアプリケーションソフトウェアの起動を防止することができる。
実施形態1または2において、以下のような変更を施すことができる。
アプリケーションソフトウェアに搭載する鍵に関連して、アプリケーションソフトウェアのバージョン管理を行ってもよい。たとえば、各アプリケーションソフトウェアにバージョン番号を付与し、とくにアプリケーションソフトウェア1011と新アプリケーションソフトウェア1011’とにそれぞれ異なるバージョン番号を付与してもよい。たとえば、バージョン番号を表す情報が、鍵に含まれていてもよい。
アプリケーションソフトウェアに搭載する鍵に関連して、アプリケーションソフトウェアのバージョン管理を行ってもよい。たとえば、各アプリケーションソフトウェアにバージョン番号を付与し、とくにアプリケーションソフトウェア1011と新アプリケーションソフトウェア1011’とにそれぞれ異なるバージョン番号を付与してもよい。たとえば、バージョン番号を表す情報が、鍵に含まれていてもよい。
このような構成によれば、特定の順序でソフトウェア更新を行う必要がある場合に、バージョン番号に基づいて順序が正しく実現されているか否かを判定することができるので、人為的なミスによるアプリケーションソフトウェアの取り違えを防止することができる。アプリケーションソフトウェアの取り違えが発生した場合には、復号の鍵が異なるので、最終的な検証結果がNGとなる。これにより、不整合が発生するような順序でのアプリケーションソフトウェアの更新や、古いアプリケーションソフトウェアへの更新を防ぐことができる。
ランタイムに発行された鍵を、RAM_KEYに登録して暗号演算を行ってもよい。たとえば、新アプリケーションソフトウェア1011’のAES鍵1011a’およびMAC鍵1011b’を事前に準備するのではなく、ステップS10(図4)の更新要求の後に鍵(アプリケーションソフトウェア1011のAES鍵1011aであってもよいし、1回の処理のために新たに生成される鍵であってもよい)を共有するようにしてもよい。
このような構成によれば、DH/ECDHに代表される鍵交換アルゴリズムによりランタイムで作成した鍵を利用して、共有された鍵をAES鍵として利用することができる。
ステップS105において、正当性チェックとして共通鍵暗号方式によるMACによる改ざん検知を利用しているが、別の方式による検証も可能である。例えば、鍵はRFC8017に例示されるような非対称鍵暗号方式で利用される鍵であってもよく、様々な暗号方式を利用することが可能である。なお、共通鍵についてはアクセス保護領域1011xに配置する必要があるが、非対称鍵の公開鍵についてはアクセス保護領域1011xに配置する必要はない。
0…セキュアコア
1~n…ホスト側コア
10…セキュアRAM(セキュア揮発性メモリ)
11~1n ローカルRAM(ホスト側揮発性メモリ)
100…データバス
101…コードフラッシュ(ホスト側不揮発性メモリ)
102…データフラッシュ(ホスト側不揮発性メモリ)
103…共有RAM(ホスト側揮発性メモリ)
110…ペリフェラルバス
111…タイマ
112…割込みコントローラ
113…MPU
200…データバス
201…セキュアコードフラッシュ(セキュア不揮発性メモリ)
202…セキュアデータフラッシュ(セキュア不揮発性メモリ)
210…ペリフェラルバス
211…HWA
300…マイクロプロセッサ
400…ECU(自動車用電子制御装置)
500…データ転送元
510…データ
600…通信路
1010…BSW(ホスト用プログラム)
1011~101m…アプリケーションソフトウェア(ホスト用プログラム)
1011’…新アプリケーションソフトウェア(ホスト用プログラム)
1011a,1011a’…AES鍵(鍵)
1011b,1011b’…MAC鍵(鍵)
1011x…アクセス保護領域
2010…HSMファームウェア(セキュアプログラム)
1~n…ホスト側コア
10…セキュアRAM(セキュア揮発性メモリ)
11~1n ローカルRAM(ホスト側揮発性メモリ)
100…データバス
101…コードフラッシュ(ホスト側不揮発性メモリ)
102…データフラッシュ(ホスト側不揮発性メモリ)
103…共有RAM(ホスト側揮発性メモリ)
110…ペリフェラルバス
111…タイマ
112…割込みコントローラ
113…MPU
200…データバス
201…セキュアコードフラッシュ(セキュア不揮発性メモリ)
202…セキュアデータフラッシュ(セキュア不揮発性メモリ)
210…ペリフェラルバス
211…HWA
300…マイクロプロセッサ
400…ECU(自動車用電子制御装置)
500…データ転送元
510…データ
600…通信路
1010…BSW(ホスト用プログラム)
1011~101m…アプリケーションソフトウェア(ホスト用プログラム)
1011’…新アプリケーションソフトウェア(ホスト用プログラム)
1011a,1011a’…AES鍵(鍵)
1011b,1011b’…MAC鍵(鍵)
1011x…アクセス保護領域
2010…HSMファームウェア(セキュアプログラム)
Claims (11)
- マイクロプロセッサを備える自動車用電子制御装置であって、
前記マイクロプロセッサは、ホスト側コアと、セキュアコアと、ホスト側記憶領域と、セキュア記憶領域とを備え、
前記ホスト側コアおよび前記セキュアコアは、前記ホスト側記憶領域にアクセス可能であり、
前記セキュアコアは、前記セキュア記憶領域にアクセス可能であり、
前記ホスト側コアは、前記セキュア記憶領域にアクセス可能ではなく、
前記ホスト側記憶領域は、ホスト側揮発性メモリおよびホスト側不揮発性メモリを備え、
前記セキュア記憶領域は、セキュア揮発性メモリおよびセキュア不揮発性メモリを備え、
前記ホスト側不揮発性メモリには、ホスト用プログラムおよび鍵が格納され、
前記セキュア不揮発性メモリには、セキュアプログラムが格納され、
前記ホスト用プログラムを実行する前記ホスト側コアは、前記ホスト側不揮発性メモリから前記鍵を取得するとともに、前記セキュアプログラムを実行する前記セキュアコアに前記鍵を受け渡し、
前記セキュアプログラムを実行する前記セキュアコアは、受け取った前記鍵を前記セキュア揮発性メモリに格納するとともに、前記鍵を用いて処理するデータを前記ホスト側記憶領域から取得し、前記セキュア揮発性メモリに格納された前記鍵を用いて前記データを処理することにより、前記セキュアコアが前記鍵を前記ホスト側コアから受け取る前からあらかじめ保持している鍵を用いることなく前記データを処理する、
ことを特徴とする自動車用電子制御装置。 - 請求項1において、
前記ホスト側コアは複数であり、
前記マイクロプロセッサは、前記ホスト側揮発性メモリおよび前記ホスト側不揮発性メモリにおいて、各前記ホスト側コアがアクセス可能な領域を制御する、
ことを特徴とする自動車用電子制御装置。 - 請求項1において、前記鍵は、アクセス制限が行われている不揮発性メモリ領域に配置されることを特徴とする自動車用電子制御装置。
- 請求項1において、前記鍵は非対称鍵暗号方式で利用される公開鍵であることを特徴とする自動車用電子制御装置。
- 請求項1において、前記鍵は、アクセス制限が行われている不揮発性メモリ領域に配置され、共通鍵暗号方式で利用される鍵であることを特徴とする自動車用電子制御装置。
- 請求項1において、前記鍵は、前記ホスト用プログラムの暗号化に利用される鍵であることを特徴とする自動車用電子制御装置。
- 請求項1において、前記鍵は、前記ホスト用プログラムの改ざん検知検証に利用される鍵であることを特徴とする自動車用電子制御装置。
- 請求項1において、前記セキュアプログラムを実行する前記セキュアコアは、前記鍵を演算に利用した後に、前記鍵を無効とする情報を前記セキュア揮発性メモリに格納することを特徴とする自動車用電子制御装置。
- 請求項1において、前記鍵は前記ホスト用プログラムの更新処理に利用されることを特徴とする自動車用電子制御装置。
- 請求項1において、前記鍵は前記ホスト用プログラムの起動処理に利用されることを特徴とする自動車用電子制御装置。
- 請求項1において、前記セキュア揮発性メモリに格納される前記鍵は、RAM_KEYの形式であることを特徴とする自動車用電子制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021002146A JP7511492B2 (ja) | 2021-01-08 | 自動車用電子制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021002146A JP7511492B2 (ja) | 2021-01-08 | 自動車用電子制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022107288A JP2022107288A (ja) | 2022-07-21 |
JP7511492B2 true JP7511492B2 (ja) | 2024-07-05 |
Family
ID=
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005227995A (ja) | 2004-02-12 | 2005-08-25 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
JP2010108125A (ja) | 2008-10-29 | 2010-05-13 | Shinji Kurimoto | 情報処理システム、情報処理装置、情報処理方法、および情報処理プログラム |
JP2017130908A (ja) | 2016-01-18 | 2017-07-27 | Kddi株式会社 | 車載コンピュータシステム、車両、鍵生成装置、管理方法、鍵生成方法、及びコンピュータプログラム |
JP2018106628A (ja) | 2016-12-28 | 2018-07-05 | ルネサスエレクトロニクス株式会社 | 半導体装置、セキュリティ処理実行装置、及びセキュリティ処理実行方法 |
JP2019061538A (ja) | 2017-09-27 | 2019-04-18 | 大日本印刷株式会社 | コンピュータプログラム、デバイス及び抑制方法 |
WO2020090418A1 (ja) | 2018-10-31 | 2020-05-07 | 日立オートモティブシステムズ株式会社 | 電子制御装置、電子制御装置のリプログラミング方法 |
JP2020159344A (ja) | 2019-03-28 | 2020-10-01 | 株式会社デンソーテン | 制御装置および制御方法 |
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005227995A (ja) | 2004-02-12 | 2005-08-25 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
JP2010108125A (ja) | 2008-10-29 | 2010-05-13 | Shinji Kurimoto | 情報処理システム、情報処理装置、情報処理方法、および情報処理プログラム |
JP2017130908A (ja) | 2016-01-18 | 2017-07-27 | Kddi株式会社 | 車載コンピュータシステム、車両、鍵生成装置、管理方法、鍵生成方法、及びコンピュータプログラム |
JP2018106628A (ja) | 2016-12-28 | 2018-07-05 | ルネサスエレクトロニクス株式会社 | 半導体装置、セキュリティ処理実行装置、及びセキュリティ処理実行方法 |
JP2019061538A (ja) | 2017-09-27 | 2019-04-18 | 大日本印刷株式会社 | コンピュータプログラム、デバイス及び抑制方法 |
WO2020090418A1 (ja) | 2018-10-31 | 2020-05-07 | 日立オートモティブシステムズ株式会社 | 電子制御装置、電子制御装置のリプログラミング方法 |
JP2020159344A (ja) | 2019-03-28 | 2020-10-01 | 株式会社デンソーテン | 制御装置および制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7774619B2 (en) | Secure code execution using external memory | |
EP1594030B1 (en) | Program update method and server | |
EP1805571B1 (en) | Verifying binding of an initial trusted device to a secured processing system | |
US6539480B1 (en) | Secure transfer of trust in a computing system | |
CN109800050B (zh) | 一种虚拟机的内存管理方法、装置、相关设备及系统 | |
CN102165457B (zh) | 票券授权的安全安装和引导 | |
US20110289294A1 (en) | Information processing apparatus | |
US20130151836A1 (en) | Semiconductor device including encryption section, semiconductor device including external interface, and content reproduction method | |
CN102063591B (zh) | 基于可信平台的平台配置寄存器参考值的更新方法 | |
CN102105883A (zh) | 电子装置以及电子装置的软件或固件更新的方法 | |
CN103677891A (zh) | 用于选择性软件回退的方法 | |
JPH10171648A (ja) | アプリケーションを認証する装置 | |
KR20090109589A (ko) | 프로세서 내에서의 보호된 리소스들로의 억세스에 대한 안전한 보호 방법 | |
WO2016167926A1 (en) | Secure software authentication and verification | |
CN107832589B (zh) | 软件版权保护方法及其系统 | |
CN111201553B (zh) | 一种安全元件及相关设备 | |
US10282549B2 (en) | Modifying service operating system of baseboard management controller | |
JP6930884B2 (ja) | Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラム | |
JP7511492B2 (ja) | 自動車用電子制御装置 | |
CN113515414B (zh) | 数据处理系统和非暂态机器可读介质 | |
JP2022107288A (ja) | 自動車用電子制御装置 | |
US11418505B2 (en) | Information processing apparatus, system and method | |
JP2021057043A (ja) | トラストアンカコンピューティング装置を備える処理システムおよび対応する方法 | |
US20200012823A1 (en) | Secure storage system | |
JP7508571B2 (ja) | 車両の安全始動方法、安全始動装置、電子制御ユニット及び記憶媒体 |