(57)【要約】  本発明は、セキュア領域のリプログラミングの柔軟性を高めることができるようにする。セキュア領域２は、セキュア制御部２０を動作させるセキュア制御コード２１０及びセキュア制御データ２２０と、セキュア制御コード及びセキュア制御データを更新するセキュア書込ソフトウェア２１１と、を格納し、セキュア制御コード及びセキュア制御データは、セキュアコード記憶部２１及びセキュアデータ記憶部２２内の動作面に格納されたセキュア制御コード２１０Ａと、メインコード記憶部及びメインデータ記憶部内の非動作面に格納されたセキュア制御コード２１０Ｂと、を有し、セキュア制御部は、セキュア制御情報２１０Ａによってセキュア書込ソフトウェアを動作させて、外部からメイン領域を介して受信した更新情報によってセキュア制御情報２１０Ｂを更新する。
2020090418.tif 000002
【特許請求の範囲】
【請求項１】
移動体に搭載される電子制御装置であって、
複数のＣＰＵと、
複数のメモリと、を備え、
複数のＣＰＵのうちの一のＣＰＵと、複数のメモリのうちの一のメモリとによってメイン領域が構成され、
複数のＣＰＵのうちの他のＣＰＵと、複数のメモリのうちの他のメモリとによってセキュア領域が構成され、
前記他のメモリは、前記他のＣＰＵを動作させるセキュア制御情報と、当該セキュア制御情報を更新するセキュア書込ソフトウェアと、を格納し、
前記セキュア制御情報は、前記他のメモリ内の一の領域に格納された第一セキュア制御情報と、前記他のメモリ内の他の領域に格納された第二セキュア制御情報と、を有し、
前記他のＣＰＵは、前記第一セキュア制御情報によって前記セキュア書込ソフトウェアを動作させて、外部から前記メイン領域を介して受信した更新情報によって前記第二セキュア制御情報を更新する電子制御装置。
【請求項２】
前記他のメモリは、前記更新情報が第一鍵を使用して暗号化された暗号更新情報を復号する第一復号鍵機能を格納し、
前記他のＣＰＵは、前記第一セキュア制御情報によって前記セキュア書込ソフトウェアを動作させて、外部から前記メイン領域を介して受信した前記暗号更新情報を前記第一復号鍵を使用して復号化し、当該暗号更新情報を復号化した更新情報によって前記第二セキュア制御情報を更新する、請求項１に記載の電子制御装置。
【請求項３】
前記他のメモリは、前記更新情報が第二鍵を使用して改竄防止された改竄防止付き更新情報を検証する検証鍵を格納し、
前記他のＣＰＵは、外部から前記メイン領域を介して受信した前記改竄防止付き更新情報を、前記検証鍵を使用して検証する、請求項２に記載の電子制御装置。
【請求項４】
前記他のメモリは、当該メイン領域を制御するメイン制御部と、当該メイン制御部を動作させるメイン制御部情報と、を格納し、
前記他のＣＰＵは、前記第一セキュア制御情報によって前記セキュア書込ソフトウェアを動作させて、外部から受信した更新情報によって前記メイン制御情報を更新する、請求項１に記載の電子制御装置。
【請求項５】
前記他のメモリは、前記第一セキュア制御情報及び前記第二セキュア制御情報のうち、動作に使用するセキュア制御情報を選択する動作情報選択情報を格納し、
前記他のＣＰＵは、前記第二セキュア制御情報を更新する場合、前記動作情報選択情報を更新する、請求項１に記載の電子制御装置。
【請求項６】
前記セキュア書込ソフトウェアは、前記第一セキュア制御情報よりもコード量が少ない、
請求項５に記載の電子制御装置。
【請求項７】
前記一のメモリは、外部から受信した前記更新情報を格納する共有メモリを有し、
前記他のＣＰＵは、前記共有メモリから前記更新情報を受信する、請求項１に記載の電子制御装置。
【請求項８】
前記他のメモリは、前記更新情報が第三鍵を使用して暗号化された暗号更新情報を復号する第三復号鍵を格納し、
前記他のＣＰＵは、前記暗号更新情報を外部から受信し、当該受信した暗号更新情報を前記第三復号鍵を使用して復号化し、当該暗号更新情報を復号化した更新情報を前記他のメモリに転送する、請求項１に記載の電子制御装置。
【請求項９】
複数のＣＰＵと、
複数のメモリと、を備え、
複数のＣＰＵのうちの一のＣＰＵと、複数のメモリのうちの一のメモリとによってメイン領域が構成され、
複数のＣＰＵのうちの他のＣＰＵと、複数のメモリのうちの他のメモリとによってセキュア領域が構成され、
移動体に搭載される電子制御装置のリプログラミング方法であって、
前記一のＣＰＵは、更新情報が第一鍵を使用して暗号化された暗号更新情報を外部から受信し、当該受信した暗号更新情報に第一復号鍵を使用して復号化し、前記暗号更新情報を復号化した更新情報を前記セキュア領域に転送し、
前記他のＣＰＵは、前記他のメモリ内の一の領域に格納された第一セキュア制御情報によってセキュア書込ソフトウェアを動作させて、前記メイン領域から受信した更新情報によって前記他のメモリ内の他の領域に格納された第二セキュア制御情報を更新する電子制御装置のリプログラミング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置、電子制御装置のリプログラミング方法に関する。
【背景技術】
【０００２】
近年、安全運転支援及び自動運転技術の進展によって、車両がサーバまたはクラウドのような車外システムと繋がるようになっている。車内外の通信セキュリティを確保するために、車載装置（電子制御装置）には、セキュリティモジュールが搭載されている。【０００３】
特許文献１には、車搭載装置に更新データを適用する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−５８５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
車載装置の制御コードは、セキュリティを確保するために、適宜更新される必要がある。車載装置に搭載されるＨＳＭ（Hardware Security Module）のようなセキュア領域のセキュア制御コードも、暗号アルゴリズムの脆弱性が発覚した場合、暗号化方法を変更する場合、または機能をアップデートする場合、更新できることが望ましい。【０００６】
一方、セキュア領域のセキュア制御コードは、自由に書換え可能であると、セキュア領域の信頼性が損なわれてしまうため、メイン領域の書込ソフトから直接書き換えることが禁止されている。このようにメイン領域からの書き換えが禁止された車載装置は、セキュア制御コードを書き換えることができないという課題がある。しかし、セキュア制御コードを更新する方法は、特許文献１には開示されていない。【０００７】
本発明は、上記課題を解決するためのものであり、その目的は、セキュア領域のリプログラミングの柔軟性を高めることができる技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に従う電子制御装置は、移動体に搭載される電子制御装置であって、複数のＣＰＵと、複数のメモリと、を備え、複数のＣＰＵのうちの一のＣＰＵと、複数のメモリのうちの一のメモリとによってメイン領域が構成され、複数のＣＰＵのうちの他のＣＰＵと、複数のメモリのうちの他のメモリとによってセキュア領域が構成され、前記他のメモリは、前記他のＣＰＵを動作させるセキュア制御情報と、該セキュア制御情報を更新するセキュア書込ソフトウェアと、を格納し、前記セキュア制御情報は、前記他のメモリ内の一の領域に格納された第一セキュア制御情報と、前記他のメモリ内の他の領域に格納された第二セキュア制御情報と、を有し、前記他のＣＰＵは、前記第一セキュア制御情報によって前記セキュア書込ソフトウェアを動作させて、外部から前記メイン領域を介して受信した更新情報によって前記第二セキュア制御情報を更新する。
【発明の効果】
【０００９】
本発明によれば、セキュリティのリプログラミングの柔軟性を高めることができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る車両情報システムを示すブロック図。
【図２】第１実施形態に係るＥＣＵを示すブロック図。
【図３】第１実施形態に係るリプログラミングデータの構成図。
【図４】第１実施形態に係るリプログラミング処理を示すフローチャート。
【図５】第１実施形態に係るセキュアブート処理を示すフローチャート。
【図６】第２実施形態に係るリプログラミング処理を示すフローチャート。
【図７】第３実施形態に係るリプログラミング処理を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して幾つかの実施形態について説明する。本実施形態は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については、同一の参照符号が付されている。
【００１２】
本実施形態では、電子制御装置（Electronic Control Unit。以下、ＥＣＵ）のリプログラミング（以下、リプロまたは更新とも呼ぶ）処理を実行する車両情報システムの一例を説明する。
＜第１実施形態＞
【００１３】
図１は、第１実施形態に係る車両情報システムの構成例を示すブロック図である。
【００１４】
車両情報システムは、相互に通信可能な、「移動体」の一例としての車両９００と、リプロ装置８００を有する。リプロ装置８００は、診断機８００Ａと、車載リプロマスター８００Ｂ１と、通信装置８００Ｂ２と、ＯＴＡサーバ８００Ｂ３とから構成されている。
車両９００は、リプロ対象となるＥＣＵ９０１と、車載リプロマスター８００Ｂ１と、通信装置８００Ｂ２とを有する。
【００１５】
なお、車両情報システムに含まれる各構成要素は、図１で示していない経路によって接続されてよい。さらに、車両情報システム内のある構成要素は、他の構成要素を含んでよい。車載リプロマスター８００Ｂ１は、通信装置８００Ｂ２を含んでよい。
【００１６】
以降、診断機８００Ａ、車載リプロマスター８００Ｂ１、通信装置８００Ｂ２、及びＯＴＡサーバ８００Ｂ３を区別する必要がない場合、これらを単にリプロ装置８００と記述する。
【００１７】
車両９００は、リプロ対象となる車載装置のＥＣＵ９０１を備える自動車である。車両９００は、車載リプロマスター８００Ｂ１と、通信装置８００Ｂ２との少なくとも何れか一方を含んでよい。車両９００は、車載機器である複数のＥＣＵを備え、各ＥＣＵは、車内のネットワークで接続されている。
【００１８】
リプロ装置８００は、ＥＣＵ９０１をリプロする装置である。リプロ装置８００は、診断機８００Ａ、車載リプロマスター８００Ｂ１、通信装置８００Ｂ２、及びＯＴＡサーバ８００Ｂ３を例に説明する。
【００１９】
診断機８００Ａは、ＥＣＵ９０１のリプロデータをＥＣＵ９０１に書き込むための装置である。診断機８００Ａは、ＯＢＤ−ＩＩポートを通して、車内ネットワークに接続されている。診断機８００Ａは、ＣＡＮ（Control Area Network）、ＣＡＮ  ＦＤ、Ｅｔｈｅｒｎｅｔ（登録商標、以下同じ）、またはＦｌｅｘＲａｙ（登録商標、以下同じ）を介して、ＥＣＵ９０１の診断及びリプロに関するコマンド及びデータを受信する。診断機８００ＡとＥＣＵ９０１との間には、図示しないゲートウェイが介在してよい。さらに、診断機８００Ａは、ＯＴＡサーバ８００Ｂ３と通信してよい。さらに、診断機８００Ａは、車載リプロマスター８００Ｂ１を経由して、コマンド及びデータを受信してよい。
【００２０】
車載リプロマスター８００Ｂ１は、ＥＣＵ９０１にリプロデータを書き込むための車載装置である。車載リプロマスター８００Ｂ１は、ＣＡＮ、ＣＡＮ  ＦＤ、Ｅｔｈｅｒｎｅｔ、ＦｌｅｘＲａｙのような車内ネットワークに接続されており、ＥＣＵ９０１の診断及びリプロに関するコマンド及びデータを送受信する。車載リプロマスター８００Ｂ１とＥＣＵ９０１との間には、図示しないゲートウェイが介在してよいし、車載リプロマスター８００Ｂ１は、ゲートウェイと同一の装置でよい。さらに、車載リプロマスター８００Ｂ１は、リプロ対象、すなわちＥＣＵ９０１と同一の装置でよい。
【００２１】
さらに、車載リプロマスター８００Ｂ１は、リプロデータ及びコマンドを受信するために、通信装置８００Ｂ２を介してＯＴＡサーバ８００Ｂ３と通信してよい。車載リプロマスター８００Ｂ１は、通信装置８００Ｂ２と同一の装置でよい。
【００２２】
通信装置８００Ｂ２は、車両９００が車外と通信するための装置である。通信装置８００Ｂ２は、無線通信、または有線ＬＡＮ、インターネット、若しくは専用回線を用いた有線通信によって、車外と通信する。無線通信は、ＬＴＥ（Long Term Evolution）、３Ｇ（3rd Generation）、ＷｉＭＡＸ（Worldwide Interoperability for Microwave Access）、無線ＬＡＮ（Local Area Network）、またはＷＡＮ（Wide Area Network）、Ｃ２Ｘ、Ｖ２Ｘでよい。通信装置８００Ｂ２は、車載リプロマスター８００Ｂ１がＥＣＵ９０１に書き込むためのリプロデータ及びコマンドを、ＯＴＡサーバ８００Ｂ３から取得する。
【００２３】
通信装置８００Ｂ２は、ＣＡＮ、ＣＡＮ  ＦＤ、Ｅｔｈｅｒｎｅｔ、ＦｌｅｘＲａｙのような車内ネットワークに接続され、車載リプロマスター８００Ｂ１に対してコマンド及びデータを送受信する。通信装置８００Ｂ２は、車載リプロマスター８００Ｂ１と同一の装置でよい。さらに、通信装置８００Ｂ２と車載リプロマスター８００Ｂ１との間には、図示しないゲートウェイが介在してよいし、通信装置８００Ｂ２は、ゲートウェイと同一の装置でよい。さらに、通信装置８００Ｂ２は、リプロ対象、すなわちＥＣＵ９０１と同一の装置でよい。
【００２４】
ＯＴＡサーバ８００Ｂ３は、ネットワークを通じて車両９００と通信するサーバである。なお、ＯＴＡサーバ８００Ｂ３は、診断機８００Ａと通信してよい。
【００２５】
ＯＴＡサーバ８００Ｂ３は、ＥＣＵ９０１のリプロデータを配信する。リプロデータは、ＯＴＡサーバ８００Ｂ３若しくは図示していない他の構成要素によって暗号化及び改竄検知処コード付与が施される。ＯＴＡサーバ８００Ｂ３から配信されたリプロデータは、ＥＣＵ９０１によって復号化される。ＯＴＡサーバ８００Ｂ３は、更新プログラム以外の配信機能を備えたサービスサーバでよい。ＯＴＡサーバ８００Ｂ３は、地図情報を配信するサーバ、或いは一般に鍵管理、及びインシデント管理を実行するサーバでよい。
【００２６】
さらに、ＯＴＡサーバ８００Ｂ３は、リプロデータの登録の指示を外部から受ける機能を備えてよい。外部からの指示は、ネットワーク経由でよいし、画面の操作でよい。
【００２７】
リプロ装置８００は、診断機８００Ａ、車載リプロマスター８００Ｂ１、通信装置８００Ｂ２、及びＯＴＡサーバ８００Ｂ３が有する機能またはその組み合わせから成り、ＥＣＵ９０１のリプロデータを配信する。図示した構成は一例であり、リプロデータは、図に繋がりを示していない経路によって配信されてよい。
【００２８】
図２は、第１実施形態に係るＥＣＵの構成例を示すブロック図である。
【００２９】
ＥＣＵ９０１は、互いにバス線で結線された、通信部１９と、「一のＣＰＵ」の一例としてのメイン制御部１０と、「一のメモリ」の一例としてのメインコード記憶部１１と、「一のメモリ」の一例としてのメインデータ記憶部１２とを備える。さらに、バス線は、後述するセキュア制御部２０からアクセスすることができる。後述するセキュア領域に対し、これらの構成要素が所属する領域及び結線を、便宜的にメイン領域１と呼称する。
【００３０】
通信部１９は、ＥＣＵ９０１が車両９００の他の構成要素と通信するための構成要素である。通信部１９は、ＣＡＮ、ＣＡＮ  ＦＤ、Ｅｔｈｅｒｎｅｔ、またはＦｌｅｘＲａｙによって通信するためのモジュールである。ＥＣＵ９０１は、用途及び通信方式に応じて複数の通信部１９を含んでよい。さらに、通信部１９は、他の通信を実施するモジュールと共用でよい。なお、通信部１９は、無線通信する場合、アンテナ及び変復調回路を含んでよい。通信部１９は、有線通信する場合、コネクタ及び変復調回路を含んでよい。
【００３１】
さらに、ＥＣＵ９０１は、互いにバス線で結線された、「他のＣＰＵ」の一例としてのセキュア制御部２０と、「他のメモリ」の一例としてのセキュアコード記憶部２１と、「他のメモリ」の一例としてのセキュアデータ記憶部２２とを備える。セキュア制御部２０、セキュアコード記憶部２１、及びセキュアデータ記憶部２２が所属する領域及び結線を、便宜的にセキュア領域２と呼称する。前記メイン領域１は、ＥＣＵ９０１において、セキュア領域２を除く部分である。
【００３２】
メイン領域１のバス線と、セキュア領域２のバス線とは、セキュリティ確保の理由から、直接接続されていない。両領域１，２間のコマンド及びデータの転送は、セキュア制御部２０を介して行われる。
【００３３】
メイン制御部１０は、プロセッサ（ＣＰＵ、ＭＰＵ、またはＤＳＰ）を有しており、メインコード記憶部１１に格納されたプログラムを実行する。
【００３４】
メインコード記憶部１１は、メイン制御部１０が実行するプログラムを格納する。メインコード記憶部１１は、フラッシュメモリ、ＥＥＰＲＯＭ、ＳＳＤ、ＦＲＡＭ（登録商標、以下同じ）、または磁気ディスクのような不揮発性の記憶装置でよい。メインコード記憶部１１は、複数の記憶装置から構成されてよく、各プログラムは、複数の記憶装置に分散して格納されてよい。
【００３５】
メインデータ記憶部１２は、メイン制御部１０がプログラムを実行するときに使用されるデータを格納する。メインデータ記憶部１２は、フラッシュメモリ、ＥＥＰＲＯＭ、ＳＳＤ、ＦＲＡＭ、または磁気ディスクのような不揮発性の記憶装置でよい。データ記憶部１１は、複数の記憶装置から構成されてよく、各データは、複数の記憶装置に分散して格納されてよい。
【００３６】
メインコード記憶部１１及びメインデータ記憶部１２は、不揮発性の記憶素子であるＲＯＭと、揮発性の記憶素子であるＲＡＭとを有するメモリでよい。ＲＯＭは、不変のプログラムを格納する。ＲＡＭは、ＤＲＡＭ（Dynamic Random Access Memory）のような高速かつ揮発性の記憶素子であり、メイン制御部１０が実行するプログラムと、プログラムの実行時に使用されるデータとを一時的に格納する。
【００３７】
なお、メインコード記憶部１１及びメインデータ記憶部１２は、その一部または全部を互いの構成要素として有してよい。デバイスとして明確な区別が無くても、メインコード記憶部１１は、コードを記憶している部分を示し、メインデータ記憶部１２は、データを記憶している部分を示すものとする。
【００３８】
メインコード記憶部１１は、「メイン制御情報」の一例としてのメイン制御コード１１０と、メイン書込ソフトウェア（以下、メイン書込ソフト）１１１とを備える。メイン制御コード１１０は、メイン制御部１０が実行するプログラムであり、ＥＣＵ９０１の車載装置としての機能を実現させるためのプログラムである。メイン制御コード１１０は、複数でよく、図２においては、メイン制御コード１１０Ａと、メイン制御コード１１０Ｂとの２つを図示している。以降の説明では、メイン制御コード１１０Ａと、メイン制御コード１１０Ｂとは、更新前後の新旧プログラムの関係とする。
【００３９】
メイン書込ソフト１１１は、メイン制御部１０に実行されるプログラムであり、メイン制御コード１１０を書き換える（リプロする）ためのプログラムである。メイン書込ソフト１１１は、ＥＣＵ９０１が受け取った新しいプログラム（リプロデータ）を、新たなメイン制御コード１１０としてメインコード記憶部１１に書き込む。
【００４０】
メイン書込ソフト１１１は、後述するシーケンスによって、通信部１９及びセキュア制御部２０と連携し、後述するセキュアコード記憶部２１の「セキュア制御情報」の一例としてのセキュア制御コード２１０をセキュアにリプロするトリガを与えて、シーケンスをコントロールする。
【００４１】
なお、メイン書込ソフト１１１、または後述するセキュア書込ソフト２１１は、メイン制御コード１１０Ａまたはメイン制御コード１１０Ｂのうち、メイン制御部１０が動作に用いていない何れか一方を書換えの対象とする。メイン制御部１０がメイン制御コード１１０Ａを動作に用いている場合、メイン書込ソフト１１１は、メイン制御コード１１０Ｂを書き換える。一方、メイン制御部１０がメイン制御コード１１０Ｂを動作に用いている場合、メイン書込ソフト１１１は、メイン制御コード１１０Ａを書き換える。
【００４２】
さらに、メイン制御部１０がメイン制御コード１１０Ａとメイン制御コード１１０Ｂとの何れも動作に使用していない場合、メイン制御コード１１０Ａとメイン制御コード１１０Ｂとの何れかを書き換えてよいし、両方を書き換えてよい。これらリプロ処理は、メイン制御コード１１０が１つのみの場合にも当て嵌る。この場合、メイン制御部１０は、メイン書込ソフト１１１を動作に用い、メイン制御コード１１０を動作に用いない状態でメイン制御コード１１０を書き換える。
【００４３】
メインデータ記憶部１２は、「メイン制御情報」の一例としてのメイン制御データ１２０と、「共有メモリ」の一例としてのリプロデータ格納部１２１とを備える。メイン制御データ１２０は、メイン制御部１０に実行されるメイン制御コード１１０が処理に使用するデータであり、ＥＣＵ９０１の車載装置としての機能を実現させるためのデータである。メイン制御データ１２０は、用途に応じて複数でよい。
【００４４】
リプロデータ格納部１２１は、メイン書込ソフト１１１が通信装置１９から受信したリプロデータを格納するための領域である。格納されるリプロデータには、セキュア制御コード２１０、メイン制御コード１１０、またはそれらの両方の新たな制御プログラムが含まれている。リプロデータの内容は、図３で後述する。リプロデータは、暗号化、改竄検知コード付与、及び署名付与が成されていることがあり、後述のシーケンスで復号及び検証される。
【００４５】
セキュア制御部２０は、ＨＳＭ、ＳＨＥ、ＴＰＭ、その他セキュアマイコン、またはセキュアコアと呼ばれるプロセッサ（ＣＰＵ、ＭＰＵ、またはＤＳＰ）から構成される。セキュア制御部２０は、セキュアコード記憶部２１に格納されたプログラムを実行する。セキュア制御部２０には、耐タンパ性を有してよい。なお、セキュア制御部２０の例として示したＨＳＭ，ＳＨＥ、またはＴＰＭは、後述のセキュアコード記憶部２１、及びセキュアデータ記憶部２２を包含してよい。
【００４６】
セキュアコード記憶部２１は、セキュア制御部２０が実行するプログラムを格納する。セキュアコード記憶部２１は、フラッシュメモリ、ＥＥＰＲＯＭ、ＳＳＤ、ＦＲＡＭ、または磁気ディスクのような不揮発性の記憶装置でよい。セキュアコード記憶部２１は、耐タンパ性を有してよい。セキュアコード記憶部２１は、複数の記憶装置から構成されてよく、各プログラムは、複数の記憶装置に分散して格納されてよい。
【００４７】
セキュアデータ記憶部２２は、セキュア制御部２０がプログラムを実行するときに使用されるデータを格納する。セキュアデータ記憶部２２は、フラッシュメモリ、ＥＥＰＲＯＭ、ＳＳＤ、ＦＲＡＭ、または磁気ディスクのような不揮発性の記憶装置でよい。セキュアデータ記憶部２２は、耐タンパ性を有してよい。
【００４８】
セキュアコード記憶部２１及びセキュアデータ記憶部２２は、不揮発性の記憶素子であるＲＯＭと、揮発性の記憶素子であるＲＡＭとを有するメモリでよい。ＲＯＭは、不変のプログラムを格納する。ＲＡＭは、ＤＲＡＭ（Dynamic Random Access Memory）のような高速かつ揮発性の記憶素子であり、セキュア制御部２０が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００４９】
さらに、セキュアコード記憶部２１及びセキュアデータ記憶部２２は、その一部または全部を互いの構成要素として有してよい。デバイスとして明確な区別が無くても、セキュアコード記憶部２１は、セキュア領域２においてコードを記憶している部分を示し、セキュアデータ記憶部２２は、セキュア領域２においてデータを記憶している部分を示すものとする。
【００５０】
セキュアコード記憶部２１は、セキュア制御コード２１０と、セキュア書込ソフト（以下、セキュア書込ソフト）２１１とを備える。セキュア制御コード２１０は、セキュア制御部２０で実行されるプログラムであり、ＥＣＵ９０１の車載装置としてのセキュリティ機能を実現させるためのプログラムである。セキュア制御コード２１０は、複数でよく、図２においては、「第一セキュア制御情報」の一例としてのセキュア制御コード２１０Ａと、「第二セキュア制御情報」の一例としての制御コード２１０Ｂとの２つを図示している。以降の説明では、セキュア制御コード２１０Ａと、セキュア制御コード２１０Ｂとは、更新前後の新旧プログラムの関係とする。
【００５１】
セキュア書込ソフト２１１は、セキュア制御部２０に実行されるプログラムであり、セキュア制御コード２１０を書き換える（リプロする）ためのプログラムである。セキュア書込ソフト２１１は、ＥＣＵ９０１が受け取った新しいプログラム（リプロデータ）を、新たなセキュア制御コード２１０としてセキュアコード記憶部２１に書き込む。
【００５２】
セキュア書込ソフト２１１は、後述するシーケンスによって、メイン制御部１０及びメイン書込ソフト１１１と連携し、セキュアコード記憶部２１のセキュア制御コード２１０をセキュアにリプロする。このとき、セキュア書込ソフト２２１は、リプロデータの復号、改竄検知コード検証、及び署名検証するときに、後述するメイン領域用鍵２２５及びセキュア領域用鍵２２６を使用する。
【００５３】
なお、セキュア書込ソフト２１１は、セキュア制御コード２１０Ａまたはセキュア制御コード２１０Ｂのうち、セキュア制御部２０が動作に使用していない何れか一方を書換えの対象とする。セキュア制御部２０がセキュア制御コード２１０Ａを動作に使用している場合、セキュア書込ソフト２１１は、セキュア制御コード２１０Ｂを書き換える。一方、セキュア制御部２０がセキュア制御コード２１０Ｂを動作に使用している場合、セキュア書込ソフト２１１は、セキュア制御コード２１０Ａを書き換える。
【００５４】
さらに、セキュア制御部２０がセキュア制御コード２１０Ａとセキュア制御コード２１０Ｂとの何れも動作に使用していない場合、セキュア制御コード２１０Ａとセキュア制御コード２１０Ｂとの何れかを書き換えてよいし、両方を書き換えてよい。これらリプロ処理は、セキュア制御コード２１０が１つのみの場合にも当て嵌る。この場合、セキュア制御部２０は、セキュア書込ソフト２１１を動作に使用し、セキュア制御コード２１０を動作に使用しない状態でセキュア制御コード２１０を書き換える。
【００５５】
セキュアデータ記憶部２２は、セキュア制御データ２２０と、メイン領域用鍵２２５と、セキュア領域用鍵２２６と、動作コード選択情報２２９とを備える。セキュア制御データ２２０は、「セキュア制御情報」の一例である。メイン領域用鍵２２５は、「第三復号鍵」の一例である。セキュア領域用鍵２２６は、「第一復号鍵」及び「検証鍵」の一例である。動作コード選択情報２２９は、「動作情報選択情報」の一例である。セキュアデータ記憶部２２は、メインデータ記憶部１２と同様に、リプロデータ格納部を備えてもよい。
【００５６】
セキュア制御データ２２０は、セキュア制御部２０に実行されるセキュア制御コード２１０が処理に使用するデータであり、ＥＣＵ９０１の車載装置としてのセキュリティ機能を実現させるためのデータである。セキュア制御データ２２０は、用途に応じて複数でよい。
【００５７】
メイン領域用鍵２２５は、セキュア制御部２０に実行されるセキュア書込ソフト２１１が、リプロデータ格納部１２１に格納されたリプロデータを復号または改竄検知するための鍵である。メイン領域用鍵２２５は、ＡＥＳのような対称暗号の鍵でも、ＲＳＡまたは楕円曲線暗号のような非対称暗号の鍵でもよい。メイン領域用鍵２２５は、復号と改竄検知との両方を実行する場合、それぞれで使用する互いに異なる鍵を複数有してよい。さらに、改竄検知を非対称鍵の署名によって実行する場合、メイン書込ソフト１１１が検証処理を実行してよい。
【００５８】
セキュア領域用鍵２２６は、セキュア制御部２０に実行されるセキュア書込ソフト２１１が、リプロデータ格納部１２１に格納されたリプロデータを復号または改竄検知するための鍵である。セキュア領域用鍵２２６は、リプロデータのうち、特にセキュア制御コード２１０に関する部分を復号または改竄検知するために使用される。セキュア領域用鍵２２６は、ＡＥＳのような対称暗号の鍵でも、ＲＳＡ、楕円曲線暗号のような非対称暗号の鍵でもよい。復号と改竄検知との両方を実行する場合、それぞれで使用する互いに異なる鍵を複数有してよい。なお、セキュア領域用鍵２２６と、メイン領域用鍵２２５との区別が特にない構成でもよい。
【００５９】
動作コード選択情報２２９は、メイン制御部コード１１０及びセキュア制御コード２１０が複数ある場合に、メイン制御部１０またはセキュア制御部２０が、起動後に読み込んで実行するコードを選択するための情報である。動作コード選択情報２２９は、後述するリプロシーケンスによって、新旧プログラムの入れ替えを決定付けるときに書き換わる、フラグ及びデータでよい。さらに、動作コード選択情報２２９は、メイン制御コード１１０と、セキュア制御コード２１０とで、それぞれ別個の選択情報を示すように、複数の情報を含んでよい。さらに、動作コード選択情報２２９は、コードが書き換え途中か否かのような情報によって置き換えられてよい。
【００６０】
図３は、第１実施形態に係るリプログラミングデータの構成図である。
【００６１】
リプロデータは、リプロデータ格納部１２１に格納される。リプロデータは、一例として、メイン制御コード用リプロデータ６０１と、署名６０２と、セキュア制御コード用リプロデータ６０３と、改竄検知コード６０４とを含む。
【００６２】
メイン制御コード用リプロデータ６０１は、メイン制御コード１１０の新しいプログラムを含む。メイン制御コード用リプロデータ６０１は、メイン領域用鍵２２５に属する鍵で復号される暗号化データでよい。メイン制御コード用リプロデータ６０１の暗号方式は、対称鍵でも、非対称鍵でもよい。メイン制御コード用リプロデータ６０１は、用途によっては、暗号化されなくてよい。
【００６３】
署名６０２は、リプロデータを改竄検知するための情報である。署名６０２は、メイン制御コード用リプロデータ６０１、セキュア制御コード用リプロデータ６０３及び改竄検知コード６０４を検証対象とした電子書名でよい。メイン書込ソフト１１１またはセキュア書込ソフト２１１は、メイン領域用鍵２２５に属する鍵によって、署名６０２を検証し、リプロデータが改竄されていないことを確認することができる。
【００６４】
セキュア制御コード用リプロデータ６０３は、セキュア制御コード２１０の新しいプログラムを含む。セキュア制御コード用リプロデータ６０３は、セキュア領域用鍵２２６に属する鍵で復号される暗号化データでよい。セキュア制御コード用リプロデータ６０３の暗号方式は、対称鍵でも、非対称鍵でもよい。
【００６５】
改竄検知コード６０４は、セキュア制御コード用リプロデータ６０３を改竄検知するための情報である。改竄検知コード６０４は、セキュア制御コード用リプロデータ６０３を検証対象としたＭＡＣ（Message Authentication Code）でよい。セキュア書込ソフト２１１は、セキュア領域用鍵２２６に属する鍵によって、改竄検知コード６０４を検証し、セキュア制御コード用リプロデータ６０３が改竄されていなことを確認することができる。
【００６６】
リプロデータは、図３で示した構成要素の一部を欠いてよく、メイン制御コード用リプロデータ６０１と、セキュア制御コード用リプロデータ６０３との何れか一方を欠いてよい。
【００６７】
さらに、署名６０２の検証範囲は、例示したものに限定するものではない。署名６０２の検証範囲は、メイン制御コード用リプロデータ６０１のみ、セキュア制御コード用リプロデータ６０３のみ、または、セキュア制御コード用リプロデータ６０３及び改竄検知コード６０４のみでもよい。
【００６８】
さらに、署名６０２の検証アルゴリズムは、改竄検知が可能な方法であれば、非対称鍵によるものでなくてよく、改竄検知コード６０４の例で示したように、対象鍵を使用したＭＡＣでもよい。さらに、署名６０２は、改竄検知コード６０４の検証範囲にメイン制御コード用リプロデータ６０１を含めた場合、省略してよい。
【００６９】
さらに、改竄検知コード６０４の検証アルゴリズムは、改竄検知が可能な方法であれば、対称鍵によるものでなくてよく、署名６０２の例で示したように、非対象鍵を使用した電子署名でもよい。
【００７０】
以下、図４を参照しながら車両情報システムの処理の一例を説明する。
【００７１】
図４は、第１実施形態に係るリプログラミング処理を示すフローチャートである。
【００７２】
リプロ装置８００（診断機８００Ａ、車載リプロマスター８００Ｂ１、通信装置８００Ｂ２、ＯＴＡセンタ８００Ｂ３）と、ＥＣＵ９０１の構成要素とが、コマンド及びデータを転送することによって、セキュア制御コード２１０をセキュアにリプロする。以下、リプロ装置８００は、診断機８００Ａ、車載リプロマスター８００Ｂ１、通信装置８００Ｂ２、及びＯＴＡセンタ８００Ｂ３のうちの何れかまたはその組み合わせであり、各機器が必要に応じてＥＣＵ９０１までの通信経路を中継するものとする。さらに、ＥＣＵ９０１と外部との通信は、必要に応じて通信部１９が中継するものとする。
【００７３】
以下、メインコード記憶部１１のプログラムが実行主体となる記述をした場合、メイン制御部１０によって当該プログラムが実行されるものとする。さらに、セキュアコード記憶部２１のプログラムが実行主体となる記述をした場合、セキュア制御部２０によって当該プログラムが実行されるものとする。
【００７４】
さらに、以下の図中の矢印は、概念的なコマンド及びデータの流れを示したものであって、通信方向及び指示方向を限定するものではない。矢印で図示されていない処理指示及びデータの流れがあってよい。
【００７５】
図示したシーケンスは、リプロ装置８００が、リプロデータを所持した状態から開始する。
【００７６】
まず、リプロ装置８００は、リプロ開始をメイン書込ソフト１１１に通知する（Ｓ１０１）。続いて、メイン書込ソフト１１１は、リプロ装置８００からリプロデータを受信する（Ｓ１０２）。受信したリプロデータは、改竄検知のために、リプロデータ格納部１２１に格納される（Ｓ１０３）。ここで、署名６０２が非対称鍵による署名の場合、メイン書込ソフト１１１は、セキュア書込ソフト２１１から、メイン領域用鍵２２５に属する公開鍵を受け取って、署名６０２を検証してよい。
【００７７】
続いて、メイン書込ソフト１１１は、リプロ開始をセキュア書込ソフト２１１に通知する（Ｓ１０４）。リプロ開始の通知を受けたセキュア書込ソフト２１１は、リプロデータ格納部１２１に格納されたリプロデータの改竄検知コード６０４を、セキュア領域用鍵２２６に属する鍵によって検証する（Ｓ１０５）。ここで、メイン領域用鍵に属する鍵を使用して、署名６０２を検証してよい。さらに、改竄検知の検証が失敗した場合、所定のリトライを行った後、メイン書込ソフト１１１に異常を通知し、以降のリプロ処理を中止してよい。
【００７８】
続いて、セキュア書込ソフト２１１は、リプロデータをリプロデータ格納部１２１から取得し（Ｓ１０６）、セキュア領域用鍵２２６に属する復号用の鍵を使用して復号処理を実行する（Ｓ１０７）。そして、セキュア書込ソフト２１１は、復号化されたリプロデータをセキュアコード記憶部２１の所定の箇所に書き込むことによって、セキュア制御コード２１０を更新する（Ｓ１０８）。Ｓ１０６からＳ１０８の処理は、セキュア領域２がこれらの処理のために確保できるワークメモリ領域の容量に応じて、繰り返し実行してもよい。なお、Ｓ１０８において、セキュア制御部２０が動作に使用していないセキュア制御コード２１０を書き換えることは、図２で説明した通りである。
【００７９】
続いて、セキュア書込ソフト２１１は、Ｓ１０８の書き込みが正常に実行されたか否かを検証し、検証結果が正しい場合、動作コード選択情報２２９を、書き込んだ新しいプログラムを選択することを示す情報に書き換える（Ｓ１０９）。検証は、対象領域から計算した改竄検知コードと、改竄検知コード６０４とを比較してよいし、改竄検知コード６０４が電子署名の場合、その検証でよい。検証は、他の誤り検知符号または誤り訂正符号の計算に基づいて判断してよい。さらに、Ｓ１０８の書き込みが失敗した場合、所定のリトライを実行した後、メイン書込ソフト１１１に異常を通知し、以降のリプロ処理を継続しなくてよい。さらに、検証または動作コードの切り替えは、メイン書込ソフト１１１に所定の通知を行った後に、メイン書込ソフト１１１からの指示を受けたことをトリガに判断または実行してよい。
【００８０】
続いて、セキュア書込ソフト２１１は、セキュアコード記憶部２１のリプロが正常に終了したことを、メイン書込ソフト１１１に通知する（Ｓ１１０）。
【００８１】
完了通知を受けたメイン書込ソフト１１１は、リプロデータ格納部１２１に格納されていたリプロデータを削除する（Ｓ１１１）。リプロデータの削除は、後述のＳ１１２の後に、リプロ装置８００からの指示を受けたことをトリガに判断または実行してよい。
【００８２】
続いて、メイン書込ソフト１１１は、リプロが正常に終了したことを、リプロ装置８００に通知する（Ｓ１１２）。なお、一連の処理中にメイン書込ソフト１１１が何らかの異常を検知した場合、リプロ装置８００に異常を通知し、以降のリプロ処理を中止してよい。
【００８３】
この構成によれば、セキュア書込ソフト２１１がデータ認証及び復号処理を実行し、セキュア制御コード２１０を書き換えるように制御することによって、セキュリティの強度を保ちつつリプログラミングの柔軟性を高めることができる。
【００８４】
図５は、第１実施形態に係るセキュアブート処理を示すフローチャートである。セキュアブート処理は、図４のシーケンスで示したリプロ処理の結果として、ＥＣＵ９０１が新しいプログラムで起動するときに実行される。
【００８５】
ＥＣＵ９０１が起動すると（Ｓ４０１）、セキュア制御部２０は、セキュアブート処理を開始する（Ｓ４０２）。セキュア制御部２０は、ブートコード（図示なし）によって、自己が動作に使用するセキュア制御コード２１０の自己検証を実行する（Ｓ４０３）。検証方法は、対称鍵方式によるＭＡＣの検証、または非対称鍵方式による署名の検証でよい。Ｓ４０３の自己検証のときに異常を検知した場合、セキュア制御部２０は、所定のエラー処理を実行してよい。エラー処理では、ログを保存して、セキュアブート処理を中止する。続いて、セキュア制御部２０は、正しいことが検証された動作コードを選択し、処理主体を選択したセキュア制御コード２１０に移す（Ｓ４０４）。
【００８６】
続いて、セキュア制御コード２１０は、メイン制御部１０の動作コードであるメイン制御コード１１０を検証し（Ｓ４０５）、検証結果が正常か否かを判定する（Ｓ４０６）。Ｓ４０６の判定結果が真の場合（Ｓ４０６：ＹＥＳ）、動作許可をメイン制御部１０のブートコード（図示なし）に与える（Ｓ４０８）。Ｓ４０６の判定結果が偽の場合（Ｓ４０６：ＮＯ）、所定のエラー処理を実行する（Ｓ４０７）。Ｓ４０７のエラー処理では、ログを保存し、セキュアブート処理を中止してよい。
【００８７】
動作許可を得たメイン制御部１０は、ブートコード（図示なし）によってブート処理を開始する（Ｓ４０９）。ここで、動作コードの選択が必要な場合、セキュア制御部２０に動作コード選択情報２２９を問い合わせ（Ｓ４１０）、セキュア制御コード２１０は、動作コード選択情報２２９をメイン制御部１０に提示する（Ｓ４１１）。続いて、メイン制御部１０は、Ｓ４１０で取得した動作コード選択情報２２９に応じて、処理主体を所定のメイン制御コード１１０に移す（Ｓ４１２）。
【００８８】
この構成によれば、セキュアに管理及び更新される動作コード選択情報２２９を使用して、メイン制御部１０は、正しい制御コードで動作することが可能となる。
【００８９】
なお、本実施形態において説明したステップが、実施されている最中に、何らかのエラーが発生した場合、そのエラーが車両情報システムの各構成要素の制御部に通知されてよい。
【００９０】
また、メイン書込ソフト１１１、セキュア書込ソフト２１１、メイン制御コード１１０、及びセキュア制御コード２１０に含まれる各プログラムは、必要に応じて、実行中の処理を示す情報を表示装置に表示してよい。これら各プログラムは、特に一連の処理の完了や、分岐処理の発生を示す情報を表示装置に表示することが望ましい。さらに、分岐処理における判定を、入力装置を介してユーザが実行してよい。
【００９１】
さらに、本実施形態において、各ステップ間の情報のやり取りを省略していることがある。しかし、実際には、コマンドに対するレスポンスのペアを成していることがある。さらに、各ステップ間の情報のやり取りを一組の双方向矢印で示している場合でも、このやり取りにおいて複数のコマンド及びレスポンスを含んでよい。さらに、エンティティ間でデータを送受信する内容を記述している場合でも、実際の通信は、一方のエンティティがクライアント役、他方のエンティティがサーバ役となることがある。この場合、実際の通信は、コマンド及びレスポンスを通じて実施され、その結果として前述のデータを送信してよい。
＜第２実施形態＞
【００９２】
第２実施形態に係るリプログラミング処理について説明する。尚、第２実施形態に係るリプログラミング処理は、第１実施形態に係るリプログラミング処理とは、リプロデータの送受信の構成が異なるだけであり、その他の構成は、第１実施形態に係るリプログラミング処理と同様である。したがって、第１実施形態との相違点を中心に述べる。
【００９３】
図６は、第２実施形態に係るリプログラミング処理を示すフローチャートである。
【００９４】
図６では、図４のＳ１０６に変わり、メイン書込ソフト１１１からセキュア書込ソフト２１１にリプロデータを送付する。この実施形態は、セキュア領域２にデータ受信用のワークメモリを十分確保できる場合に有効な方法であり、セキュア書込ソフト２１１がメインデータ記憶部１２を直接参照できない場合でも、実現可能な方式である。
【００９５】
具体的には、メイン書込ソフト１１１は、Ｓ１０４でリプロ開始をセキュア書込ソフト２１１に通知した後（Ｓ１０４）、リプロデータをリプロデータ格納部１２１から取得し、セキュア書込ソフト２１１に送信する（Ｓ２０１）。セキュア書込ソフト２１１は、受信したリプロデータをセキュアデータ記憶部２２のような適当なワークメモリ（図示なし）に保持する（Ｓ２０２）。Ｓ２０１及びＳ２０２は、構成要素間の通信帯域に応じて、所定量ずつ繰り返し行われてもよい。
【００９６】
セキュア書込ソフト２１１は、Ｓ２０２で受信したリプロデータに対して、Ｓ１０５で改竄検知を実行し、Ｓ１０７以降、図４で示したフローと同様の処理を実行する。
【００９７】
この構成によれば、セキュア領域２に十分なワークメモリを確保できる場合に、セキュア書込ソフト２１１がメインデータ記憶部１２を直接参照できない場合でも、セキュア書込ソフト２１１によってデータ認証及び復号処理を実行することができる。即ち、セキュア制御コード２１０を書き換えるように制御することによって、セキュリティの強度を保ちつつリプログラミングの柔軟性を高めることができる。
＜第３実施形態＞
【００９８】
第３実施形態に係るリプログラミング処理について説明する。尚、第３実施形態に係るリプログラミング処理は、第１実施形態に係るリプログラミング処理とは、リプロデ対象の構成が異なるだけであり、その他の構成は、第１実施形態に係るリプログラミング処理と同様である。したがって、第１実施形態との相違点を中心に述べる。
【００９９】
図７は、第３実施形態に係るリプログラミング処理を示すフローチャートである。
【０１００】
図７では、図４のＳ１０４〜Ｓ１１１の前または後に（前の場合の例を図示）、メイン領域１のメインコード記憶部１１をセキュア書込ソフト２１１から書き換える方法を示す。図６の処理では、メイン書込ソフト１１１は、リプロ処理をセキュア書込ソフト２１１に委譲するため、リプロ処理に関するセキュリティ判定を全てセキュア領域２で実施することによって、よりセキュアなリプロが可能となる。
【０１０１】
メイン書込ソフト１１１は、Ｓ１０３の後、リプロ開始の要求を、セキュア書込ソフト２１１に対して実行する（Ｓ３０１）。なお、リプロ開始要求のＳ３０１と、リプロ開始通知のＳ１０４とは、両方の意味を含む一つのコマンドでよい。
【０１０２】
リプロ開始の要求を受けたセキュア書込ソフト２１１は、リプロデータ格納部１２１に格納されたリプロデータの署名６０２を、メイン領域用鍵２２６に属する鍵によって検証する（Ｓ３０２）。セキュア書込ソフト２１１は、改竄検知の検証が失敗した場合、所定のリトライを行った後、メイン書込ソフト１１１に異常を通知し、以降のリプロ処理を中止してもよい。
【０１０３】
続いて、セキュア書込ソフト２１１は、リプロデータをリプロデータ格納部１２１から取得し（Ｓ３０３）、メイン領域用鍵２２５に属する復号用の鍵を使用して復号処理を実行し（Ｓ３０４）、メインコード記憶部１１の所定の箇所に書き込むことによってメイン制御コード１１０を更新する（Ｓ３０５）。Ｓ３０３からＳ３０５の処理は、セキュア領域２がこれら処理のために確保できるワークメモリ領域の容量に応じて、所定量ずつ繰り返し実行してよい。なお、Ｓ３０５において、メイン制御部１０が動作に使用していないメイン制御コード１１０を書き換えることは、図２で説明した通りである。
【０１０４】
続いて、セキュア書込ソフト２１１は、Ｓ３０５での書き込みが正常に実行されたか否かを検証し、検証結果が正しければ、動作コード選択情報２２９を、書き込んだ新しいプログラムを選択することを示す情報に書き換える（Ｓ３０６）。検証は、署名６０２から抽出したハッシュ値と、対象領域から計算したハッシュ値とを比較してよいし、署名６０２がＭＡＣの場合、その検証でよい。さらに、他の誤り検知符号または誤り訂正符号の計算に基づいて判断してよい。さらに、書き込みが失敗した場合、所定のリトライを行った後、メイン書込ソフト１１１に異常を通知し、以降のリプロ処理を中止してもよい。さらに、検証または動作コードの切り替えは、メイン書込ソフト１１１に所定の通知を行った後に、メイン書込ソフト１１１からの指示を受けたことをトリガに判断または実行してよい。
【０１０５】
続いて、セキュア書込ソフト２１１は、メインコード記憶部１１のリプロが正常に終了したことを、メイン書込ソフト１１１に通知する（Ｓ３０７）。
【０１０６】
ここで、Ｓ３０６の動作コード切り替えと、Ｓ１０９の動作コード切り替えとは、メインコード記憶部１１と、セキュアコード記憶部２１との両方の書き換え処理が完了した後に、一纏めのステップとして実行されてよい。そのとき、Ｓ３０７及びＳ１１０の完了通知は、両方の意味を含む一つの通知でよい。
【０１０７】
図７では、Ｓ３０１〜Ｓ３０７は、Ｓ１０４〜Ｓ１１０の前に実行した。しかし、Ｓ３０１〜Ｓ３０７は、Ｓ１０４〜Ｓ１１０の後に実行してよい。さらに、Ｓ１０４〜Ｓ１１０の処理を省略し、メインコード記憶部１１のリプロのみを実行してよい。
【０１０８】
図７に示した処理におけるＳ１０７、Ｓ３０３では、図６で示した例のように、メイン書込ソフト１１１がセキュア書込ソフト２１１にリプロデータを送信してよい。
【０１０９】
この構成によれば、セキュア書込ソフト２１１がデータ認証及び復号処理を実行し、メイン制御コード１１０、セキュア制御コード２１０、またはそれらの両方を書き換えるように制御することができる。この結果、セキュリティの強度を保ちつつリプログラミングの柔軟性を高めることができる。
【０１１０】
なお、本発明は上記した各実施形態に限定されるものではなく、様々な変形例が含まれる。上記した各実施形態は本発明を分かりやすく説明するために詳細に説明されたものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。さらに、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、さらに、ある実施形態の構成に他の実施形態の構成を加えることも可能である。さらに、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１１】
例えば、セキュア書込ソフト２１１は、セキュア制御コード２１０Ａよりもコード量が少なくてよい。この構成によれば、容量が少ない場合でも、セキュア制御コード２１０Ａに書込みすることができる。
【０１１２】
さらに、上記の各構成、機能、処理部、処理手段は、それらの一部または全部を、集積回路で設計することによって、ハードウェアで実現してよい。さらに、上記の各構成、機能は、プロセッサがそれぞれの機能を実現するプログラムを解釈及び実行することによって、ソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、及びファイルのような情報は、メモリ、ハードディスク、若しくはＳＳＤの記録装置、または、ＩＣカード、ＳＤカード、若しくはＤＶＤのような記録媒体に格納されてよい。
【０１１３】
さらに、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には、殆ど全ての構成が相互に接続されてよい。
【符号の説明】
【０１１４】
１…メイン領域、２…セキュア領域、１０…メイン制御部、１１…メインコード記憶部、１２…メインデータ記憶部、２０…セキュア制御部、２１…セキュアコード記憶部、２２…セキュアデータ記憶部、１１０Ａ…メイン制御コード、１１０Ｂ…メイン制御コード、１２１…リプロデータ格納部、２１０Ａ…セキュア制御コード、２１０Ｂ…セキュア制御コード、２１１…セキュア書込ソフト、２２５…メイン領域用鍵、２２６…セキュア領域用鍵、２２９…動作コード選択情報、９０１…ＥＣＵ
【図１】
2020090418.tif 000003
【図２】
2020090418.tif 000004
【図３】
2020090418.tif 000005
【図４】
2020090418.tif 000006
【図５】
2020090418.tif 000007
【図６】
2020090418.tif 000008
【図７】
2020090418.tif 000009
【国際調査報告】
2020090418.tif 000010
2020090418.tif 000011
2020090418.tif 000012
2020090418.tif 000013