IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

2023-114517プログラム更新装置およびプログラム更新方法
<>
  • -プログラム更新装置およびプログラム更新方法 図1
  • -プログラム更新装置およびプログラム更新方法 図2
  • -プログラム更新装置およびプログラム更新方法 図3
  • -プログラム更新装置およびプログラム更新方法 図4
  • -プログラム更新装置およびプログラム更新方法 図5
  • -プログラム更新装置およびプログラム更新方法 図6
  • -プログラム更新装置およびプログラム更新方法 図7
  • -プログラム更新装置およびプログラム更新方法 図8
  • -プログラム更新装置およびプログラム更新方法 図9
  • -プログラム更新装置およびプログラム更新方法 図10
  • -プログラム更新装置およびプログラム更新方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023114517
(43)【公開日】2023-08-18
(54)【発明の名称】プログラム更新装置およびプログラム更新方法
(51)【国際特許分類】
   G06F 8/65 20180101AFI20230810BHJP
   G06F 21/57 20130101ALI20230810BHJP
【FI】
G06F8/65
G06F21/57
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022016849
(22)【出願日】2022-02-07
(71)【出願人】
【識別番号】000237592
【氏名又は名称】株式会社デンソーテン
(74)【代理人】
【識別番号】110001933
【氏名又は名称】弁理士法人 佐野特許事務所
(72)【発明者】
【氏名】土井 一功
(72)【発明者】
【氏名】養畑 裕紀
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA76
5B376CA81
5B376CA82
5B376FA11
5B376GA08
(57)【要約】
【課題】リプロに要する時間を短縮できるプログラム更新技術を提供する。
【解決手段】プログラム更新装置は、処理部と、メモリと、を備える。前記処理部は、プログラムをブロック単位で前記メモリに書き込む書込処理を行うとともに、前記書込処理を行っている間に、先に前記メモリに書き込まれた前記プログラムの改ざんをチェックするチェック処理を開始する。
【選択図】図7
【特許請求の範囲】
【請求項1】
処理部と、メモリと、を備え、
前記処理部は、
プログラムをブロック単位で前記メモリに書き込む書込処理を行うとともに、
前記書込処理を行っている間に、先に前記メモリに書き込まれた前記プログラムの改ざんをチェックするチェック処理を開始する、プログラム更新装置。
【請求項2】
前記書込処理は、暗号化された前記プログラムを復号化して前記メモリに書き込む処理である、請求項1に記載のプログラム更新装置。
【請求項3】
前記ブロックのデータサイズは、前記暗号化の複数の演算単位と等しい、請求項2に記載のプログラム更新装置。
【請求項4】
前記ブロックのデータサイズは、前記暗号化の演算単位と前記チェックの演算単位との最小公倍数と等しい、請求項2に記載のプログラム更新装置。
【請求項5】
前記処理部は、第1演算処理回路と、第2演算処理回路と、を備え、
前記第1演算処理回路は、前記書込処理を行い、
前記第2演算処理回路は、前記チェック処理を行う、請求項1~4のいずれか一項に記載のプログラム更新装置。
【請求項6】
前記第1演算処理回路はCPUであり、前記第2演算処理回路はICUである、請求項5に記載のプログラム更新装置。
【請求項7】
前記第1演算処理回路はCPUの第1プロセッサコアであり、前記第2演算処理回路は前記CPUの第2プロセッサコアである、請求項5に記載のプログラム更新装置。
【請求項8】
プログラムをブロック単位でメモリに書き込む書込工程と、
先に前記メモリに書き込まれた前記プログラムの改ざんをチェックするチェック工程と、を備え、
前記書込工程を行っている間に、前記チェック工程を開始する、プログラム更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムを更新する技術に関する。
【背景技術】
【0002】
従来、車両に搭載されるECU(Electronic Control Unit)が知られている。ECUは、ECU内部のマイクロコンピュータ(以下、「マイコン」と称する場合がある)に格納されているプログラムに従って、制御対象を電子制御する。ECUの制御対象としては、例えば、エンジン、ブレーキ、トランスミッション、パワーステアリング、エアバッグ等がある。
【0003】
ECU内部のマイコンに格納されているプログラムは、機能を追加する場合、事後的に不具合が発見された場合等に更新(リプログラミング)が必要となる。なお、以下では、「リプログラミング」という用語を短縮して「リプロ」と称する場合がある。
【0004】
改ざんされたプログラムが使用されることを防止するために、リプロ時にプログラムの改ざんがチェックされる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2019-3544号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
近年、マイコンの高性能化、プログラムの高機能化に伴い、プログラムのデータサイズが増大している。そのため、リプロ時の改ざんチェックに要する時間も増大している。
【0007】
特許文献1は、複数のECUに係るリプロの効率化を図ることができる技術を開示する。特許文献1で開示される技術は、複数のECUに係るリプロに限定されるものである。つまり、特許文献1は、リプロ全般に対して適用可能な技術を開示していない。
【0008】
本発明は、上記課題に鑑みて、リプロに要する時間を短縮できるプログラム更新技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
例示的な本発明のプログラム更新装置は、処理部と、メモリと、を備える。前記処理部は、プログラムをブロック単位で前記メモリに書き込む書込処理を行うとともに、前記書込処理を行っている間に、先に前記メモリに書き込まれた前記プログラムの改ざんをチェックするチェック処理を開始する。
【発明の効果】
【0010】
例示的な本発明によると、リプロに要する時間を短縮できる。
【図面の簡単な説明】
【0011】
図1】第1実施形態に係るECUの要部構成を示す図
図2】マイコンの動作例を示すフローチャート
図3】マイコンの第1状態を示す図
図4】マイコンの第2状態を示す図
図5】マイコンの第3状態を示す図
図6】マイコンの第4状態を示す図
図7】マイコンの第5状態を示す図
図8】マイコンの第6状態を示す図
図9】第1実施形態に係るECUのリプロに要する時間を示す概念図
図10】第1実施形態に係るECUのリプロに要する時間を示す他の概念図
図11】第2実施形態に係るECUの要部構成を示す図
【発明を実施するための形態】
【0012】
以下、本発明の例示的な実施形態について、図面を参照しながら詳細に説明する。
【0013】
<第1実施形態>
図1は、第1実施形態に係るECU1(以下、「ECU1」と称する)の要部構成を示すブロック図である。
【0014】
ECU1は、マイコン11を備える。マイコン11は、プログラムを更新するプログラム更新装置の例である。マイコン11は、CPU(Central Processing Unit)12と、ROM(Read only memory)13と、RAM(Random access memory)14と、ICU(Intelligent Cryptographic Unit)15と、バス16とを、備える。
【0015】
CPU12は、ROM13に記憶されたプログラム(制御プログラム)を実行することでECU1に割り当てられた機能を実現する。ECU1に割り当てられた機能としては、例えば、エンジンを制御する機能、ブレーキを制御する機能、トランスミッションを制御する機能、パワーステアリングを制御する機能、エアバッグを制御する機能等がある。
【0016】
ROM13は、ROM13内の記憶内容の書き換えが可能な不揮発性メモリであって、例えばフラッシュメモリにて構成される。ROM13は、制御プログラムを不揮発的に記憶する。
【0017】
RAM14は、制御プログラムの実行の際に生じる一時的なデータを記憶する。
【0018】
ICU15は、セキュリティを強化するためのハードウェアモジュールであり、データの暗号処理、乱数発生等の機能を有する。
【0019】
CPU12、ROM13、RAM14、及びICU15は、バス16を通じて双方向通信可能である。
【0020】
次に、制御プログラムの書き換えについて説明する。
【0021】
以下、ROM13に既に記憶されている制御プログラムを「第1制御プログラム」と称し、リプロによってROM13において「第1制御プログラム」から書き換えられた制御プログラムを「第2制御プログラム」と称する場合がある。第1制御プログラムと第2制御プログラムとは互いに異なるプログラムである。第2制御プログラムは、例えば、第1制御プログラムの一部を改訂したものである。
【0022】
制御プログラムの書き換えが実行されるときには、図1に示すように、外部装置の例であるパーソナルコンピュータ2(以下、「パソコン2」と称する)がECU1に接続される。パソコン2とECU1との接続は、有線接続であってもよく、無線接続であってもよい。つまり、ECU1に設けられる通信部の仕様に応じて適切な接続形態が採用されればよい。
【0023】
パソコン2は、PCリプロ用プログラムを格納している。制御プログラムの書き換えが実行されるときには、パソコン2のユーザがパソコン2を操作してPCリプロ用プログラムを起動させる。パソコン2は、PCリプロ用プログラムに従って、リプロ実行コマンドをECU1に送り、その後、暗号化された第2制御プログラムをECU1に送る。なお、パソコン2は、第2制御プログラムを図示せぬセンターから受信してもよい。
【0024】
ROM13は、制御プログラムを書き換えるためのリプログラミングソフトウェアを不揮発的に記憶している。CPU12は、パソコン2から送られてくるリプロ実行コマンドを受け取ると、リプログラミングソフトウェアを実行する。CPU12によるリプログラミングソフトウェアの実行によって、マイコン11は図2に示すフローチャートの動作を行う。
【0025】
ステップS1では、RAM14が、暗号化された第2制御プログラムP2を記憶する。したがって、ステップS1の完了時点において、マイコン11は図3に示す第1状態になる。ステップS1の処理が完了すると、次のステップS2に処理が進められる。
【0026】
ステップS2では、CPU12は、第2制御プログラムP2の1ブロック目P2_1をROM13に書き込む書込処理を行う。
【0027】
詳細には、CPU12は、RAM14に記憶されている暗号化された第2制御プログラムP2に対して復号化処理を行う。このとき、マイコン11は図4に示す第2状態になる。
【0028】
そして、復号化終了分の第2制御プログラムP2のデータサイズがブロックのデータサイズに達したら、CPU12は、ROM13に記憶されている第1制御プログラムの1ブロック目P1_1をROM13から消去する。当該消去処理が完了した時点において、マイコン11は図5に示す第3状態になる。
【0029】
その後、CPU12は、第1制御プログラムの1ブロック目P1_1を消去した領域に復号化された第2制御プログラムP2の1ブロック目P2_1を書き込む。当該書込処理が完了した時点において、マイコン11は図6に示す第4状態になる。
【0030】
ステップS2の処理が完了すると、次のステップS3に処理が進められる。
【0031】
ステップS3では、CPU12が、第2制御プログラムP2の2ブロック目P2_2から順にROM13に書き込む書込処理を行うとともに、ICU15が、ROM13に書き込まれた第2制御プログラムP2の1ブロック目P2_1から順に改ざんのチェックを行う。第2制御プログラムP2の2ブロック目P2_2以降の書き込み手順は、第2制御プログラムP2の2ブロック目P2_1の書き込み手順と同様である。
【0032】
ステップS3処理中の第1時点において、マイコン11は例えば図7に示す第5状態になる。マイコン11の第5状態は、CPU12が復号化された第2制御プログラムP2の2ブロック目P2_2をROM13に書き込む書込処理と、ICU15が、ROM13に書き込まれた復号化された第2制御プログラムP2の1ブロック目P2_1の改ざんをチェックする処理とが並列して実行されている状態である。
【0033】
ステップS3処理中の第2時点において、マイコン11は例えば図8に示す第6状態になる。第2時点は、上述した第1時点より後に到来する時点である。マイコン11の第6状態は、CPU12が復号化された第2制御プログラムP2の3ブロック目P2_3をROM13に書き込む書込処理と、ICU15が、ROM13に書き込まれた復号化された第2制御プログラムP2の2ブロック目P2_2の改ざんをチェック処理とが並列して実行されている状態である。
【0034】
第2制御プログラムP2の全てのブロックについて書込処理及びチェック処理の両方が終了すると、ステップS3が完了し、リプロが完了する。
【0035】
図9は、ECU1のリプロに要する時間を示す概念図である。図9は、第2制御プログラムP2の1~nブロック目それぞれをROM13に書き込むために要する時間WT1~WTnと、第2制御プログラムP2の1~6ブロック目それぞれの改ざんをチェックするのに要する時間CT1~CTnと、を図示している。
【0036】
ECU1は、第2制御プログラムP2の2ブロック目以降の書込処理及びチェック処理を並列して実行するため、参考例のECUのように全ての書込処理が完了してからチェック処理が実行される場合に比べて大幅にリプロに要する時間を短縮することができる。なお、図9では、時間WT1~WTnそれぞれと、時間CT1~CTnそれぞれとが同じ長さになってなるが、時間WT1~WTnそれぞれと、時間CT1~CTnそれぞれとは異なる長さであってもよい。
【0037】
本実施形態では、マイコン11が図2に示すフローチャートの動作を行うので、CPU12及びICU15によって構成される処理部が、第2制御プログラムP2をブロック単位でROM13に書き込む書込処理を行うとともに、当該書込処理を行っている間に、先にROM13に書き込まれた第2制御プログラムP2の改ざんをチェックするチェック処理を開始する。これにより、第2制御プログラムP2の2ブロック目以降の書込処理及びチェック処理が並列して実行されることになる。したがって、マイコン11は、並列処理が行われない場合と比較して、大幅にリプロに要する時間を短縮することができる。
【0038】
また、本実施形態では、CPU12及びICU15によって構成される処理部が、暗号化された第2制御プログラムP2を復号化してROM13に書き込む。これにより、パソコン2は、第2制御プログラムP2を暗号化してECU1に送ることができる。これにより、第2制御プログラムP2の漏洩を抑制することができる。
【0039】
ここで、暗号化及び改ざんチェックの例について説明する。
【0040】
第2制御プログラムP2の暗号化は、例えばAES(Advanced Encryption Standard)―128に則って実行される。AES―128で第2制御プログラムP2を暗号化する場合、第2制御プログラムP2は、128bit単位で分割されて暗号化が繰り返される。つまり、AES―128で第2制御プログラムP2を暗号化する場合は、128bitが暗号化の演算単位となる。暗号化の繰り返し方法としては、例えばCBC(Cipher Block Chaining)を採用することで秘匿性を高めることができる。
【0041】
第2制御プログラムP2の改ざんチェックは、例えばCMAC(Cipher-based Message Authentication Code)に則って実行される。CMACで第2制御プログラムP2の改ざんをチェックする場合、パソコン2は、共通鍵を用いて第2制御プログラムP2から算出した固定長の認証コード(MAC)を算出する。パソコン2で算出されたMACは、マイコン11に送られる。一方、ICU15は、共通鍵を用いて、ROM13に書き込まれた復号化された第2制御プログラムP2から算出した固定長の認証コード(MAC)を算出する。ICU15は、パソコン2で算出されたMACとICU15で算出されたMACとが一致すれば、改ざんが行われていないと判定する。CMACでは、認証コード(MAC)の固定長が改ざんチェックの演算単位となる。
【0042】
復号化された第2制御プログラムP2をCPU12がブロック単位でROM13に書き込む場合のブロックのデータサイズは、例えば暗号化の複数の演算単位(例えば3kbyte)と等しくすればよい。これにより、ROM13での消去及び書込の頻度が少なくなるため、CPU12によるROM13の制御が容易になる。
【0043】
また、復号化された第2制御プログラムP2をCPU12がブロック単位でROM13に書き込む場合のブロックのデータサイズは、例えば暗号化の演算単位と改ざんチェックの演算単位との最小公倍数と等しくしてもよい。これにより、ステップS2の処理時間の最小化を図ることができ、リプロに要する時間をより一層短縮することができる。
【0044】
図10は、ECU1のリプロに要する時間を示す概念図である。ブロックのデータサイズを暗号化の複数の演算単位と等しくする場合と、ブロックのデータサイズを暗号化の演算単位と改ざんチェックの演算単位との最小公倍数と等しくする場合の両方を図示している。なお、ブロックのデータサイズを暗号化の演算単位と改ざんチェックの演算単位との最小公倍数と等しくする場合の方が、ブロックのデータサイズを暗号化の複数の演算単位と等しくする場合に比べてnの値が大きくなる。
【0045】
なお、上述した「等しい」は、CPU12及びICU15の処理において支障が生じない程度の誤差を含んでいてもよい。つまり、「等しい」は、完全に等しいと限定されず、略等しいを含む概念である。
【0046】
<第2実施形態>
図11は、第2実施形態に係るECU1’(以下、「ECU1’」と称する)の要部構成を示すブロック図である。
【0047】
ECU1’は、CPU12がマルチコアプロセッサである点でECU1と相違し、それ以外のハードウェア構成はECU1と同様である。なお、ECU1のCPU12はシングルコアプロセッサである。
【0048】
ECU1’のCPU12は、第1プロセッサコア121と、第2プロセッサコア122と、を備える。ECU1’では、第1プロセッサコア121が第1実施形態において説明した書込処理を行い、第2プロセッサコア122が第1実施形態において説明したチェック処理を行う。なお、本実施形態では、第2プロセッサコア122がチェック処理を行うため、ECU1’にICU15を設けない構成にすることもできる。
【0049】
本実施形態によれば、第1実施形態と同様に、第2制御プログラムP2の2ブロック目以降の書込処理及びチェック処理が並列して実行されることになる。したがって、マイコン11は、並列処理が行われない場合と比較して、大幅にリプロに要する時間を短縮することができる。
【0050】
<留意事項>
本明細書の、発明を実施するための形態に開示される種々の技術的特徴は、その技術的創作の主旨を逸脱しない範囲で種々の変更を加えることが可能である。また、本明細書の、発明を実施するための形態に開示される複数の実施形態および変形例は可能な範囲で組み合わせて実施されてよい。
【0051】
例えば、上述した実施形態では、CPU12又は第1プロセッサコア121が書込処理を行ったが、CPU12、第1プロセッサコア121以外の演算処理回路が書込処理を行ってもよい。
【0052】
また、例えば、上述した実施形態では、ICU15又は第2プロセッサコア122がチェック処理を行ったが、ICU15、第2プロセッサコア122以外の演算処理回路がチェック処理を行ってもよい。
【0053】
互いに異なるハードウェアである2つ演算処理回路の一方が書込処理を行い、他方がチェック処理を行うことによって、書込処理とチェック処理との並列処理が容易になる。
【符号の説明】
【0054】
1 第1実施形態に係るECU
1’ 第2実施形態に係るECU
2 パーソナルコンピュータ
11 マイクロコンピュータ
12 CPU
13 ROM
14 RAM
15 ICU
16 バス
121 第1プロセッサコア
122 第2プロセッサコア
P1_1 第1制御プログラムの1ブロック目
P1_2 第1制御プログラムの2ブロック目
P1_3 第1制御プログラムの3ブロック目
P2 暗号化された第2制御プログラム
P2_1 第2制御プログラムの1ブロック目
P2_2 第2制御プログラムの2ブロック目
P2_3 第2制御プログラムの3ブロック目
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11