説明

電子制御装置

【課題】中央演算処理部の外部に設けられた外部記憶素子に記憶されたデータの不正読み出しを防止可能な電子制御装置を提供する。
【解決手段】中央演算処理部と、中央演算処理部の内部に設けられた内部記憶素子と、中央演算処理部の外部に設けられ、暗号化されたデータを記憶する外部記憶素子と、外部記憶素子から暗号化されたデータを読み出して内部記憶素子に記憶する読出部と、外部装置から、暗号化されたデータを復号するための復号コードを取得する復号コード取得部と、取得した復号コードに基づいて、内部記憶素子に記憶された暗号化されたデータを復号し、復号したデータを内部記憶素子に格納する復号部と、を備えることを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイコン等を含む中央演算処理部の外部に設けられた外部記憶素子からデータを読み込む電子制御装置に関する。
【背景技術】
【0002】
電子制御装置(ECUともいう)は、ワンチップマイコン等の中央演算処理部がその内部のメモリに記憶されたプログラムを実行して、所定の機能を実現している。しかし、ECUの改良や機能追加によるプログラムのバージョンアップが行われると、メモリの内容を書き換える必要がある。この場合、中央演算処理部の内部のメモリの空き容量の制約により、改良プログラムを全て書き込めない問題が生ずる。
【0003】
そこで、中央演算処理部の外部に、プログラム/データを格納した外部記憶素子を設け、中央演算処理部がプログラム/データを読み込んで、所定の処理を行うECUも開発されている。しかし、この構成のECUでは、外部記憶素子が基板に直接はんだ付けされているか、基板にはんだ付けされたソケットに装着されているかによらず、当該素子を取り外して、当該素子に対してREAD信号を送信することで、当該素子に保存されているプログラム/データが解読される危険性がある。
【0004】
このため、外部記憶素子に記憶されている内容を暗号化してセキュリティを高める技術が開示されている。例えば、暗号処理エンジン、セキュリティ鍵情報、CPU、RAM、ROM、EEPROMを備えたTRM(Tamper Resistant Module:耐タンパモジュール)のセキュリティ鍵情報を用いて、CPUやTRMの外部に接続されたフラッシュメモリ(外部記憶素子)に暗号化したデータを記憶する情報処理装置が考案されている(特許文献1参照)。
【0005】
また、メモリカードに、プリペイドカードに対し所定の情報処理を行うプログラムを暗号化して記憶し、この暗号化されたプログラムを復号化するために必要なキーデータを別のカードに記憶し、装置本体のROMに、暗号化プログラムを復号化するプログラムを記憶し、本体の初期化処理が実行された後、カードからキーデータが読み取られ、このキーデータを用いてROMに記録されている復号化プログラムを実行し、メモリカードに記録されている暗号化されたプログラムの復号化処理を行うカード処理装置が考案されている(特許文献2参照)。
【0006】
また、不正読出しを防止するフラッシュメモリ内蔵のマイコンは既に発売されている(非特許文献1参照)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−070408号公報
【特許文献2】特開平08−161558号公報
【非特許文献】
【0008】
【非特許文献1】Micron社のメモリ製品のセキュリティ技術に関するWebページ(http://www.numonyx.com/jp/MemoryProducts/securityfeatures/Pages/KryptoSecurity.aspx)。
【発明の概要】
【発明が解決しようとする課題】
【0009】
特許文献1では、復号に必要なセキュリティ鍵情報と外部記憶素子とが、同一の装置内にあるので、TRMと外部記憶素子との間の制御信号等を解析することで、暗号化のロジックを解読される虞がある。
【0010】
また、特許文献2では、キーデータを記憶したカードは、カード処理装置とは別構成となっているが、カードを紛失すると復号できない。カードが本体と一緒に盗まれた場合には、上述のようにカードと本体との間の信号解析から暗号化のロジックを解読される虞がある。
【0011】
また、非特許文献1のマイコンは、他の汎用マイコンとは異なって構造が複雑であるため、コストを上昇させるという問題も生ずる。さらに、マイコン内部のフラッシュメモリの容量の制約の問題は残る。
【0012】
また、データ読み出し時にパスワードを要求し、不正読み出しを防止する素子もあるが、特に車載用の電子制御装置のような「組み込みシステム」では、パスワードを入力するための操作入力部を備えていないものが多く、全ての電子制御装置で使用できるわけではない。また、回路構成も複雑となり、コスト上昇の要因となる。
【0013】
上記問題点を背景として、本発明の課題は、中央演算処理部の外部に設けられた外部記憶素子に記憶されたデータの不正読み出しを防止可能な電子制御装置を提供することにある。
【課題を解決するための手段および発明の効果】
【0014】
上記課題を解決するための電子制御装置は、中央演算処理部と、中央演算処理部の内部に設けられた内部記憶素子と、中央演算処理部の外部に設けられ、暗号化されたデータを記憶する外部記憶素子と、外部記憶素子から暗号化されたデータを読み出して内部記憶素子に記憶する読出部と、外部装置から、暗号化されたデータを復号するための復号コードを取得する復号コード取得部と、取得した復号コードに基づいて、内部記憶素子に記憶された暗号化されたデータを復号し、復号したデータを内部記憶素子に格納する復号部と、を備えることを特徴とする。
【0015】
上記構成によって、電子制御装置の外部から復号コードを取得する構成であるため、同一装置内に復号コードを記憶する構成に比べてセキュリティは高くなる。また、中央演算処理部に復号コードとデータを読み込んで復号を行うため、復号時に中央演算処理部と外部との信号の遣り取りはなく、信号解析を行っても暗号化のロジックを解読されることはない。さらに、キーデータを記憶したカードを用いる構成ではないので、カードの紛失、あるいは盗難という問題も発生しない。さらに特殊な部品や回路を必要としないので、コストは上昇しない。
【0016】
また、本発明の電子制御装置は、外部装置との通信を行う通信部を備え、復号コード取得部は、通信部を介して受信する受信データのうち、予め定められた受信データを復号コードとして取得する。
【0017】
上記構成によって、外部装置から受信したデータの少なくとも一部を復号用のデータとして使用できるので、復号専用のデータを送信してもらう必要がなく、他の車載装置のハードウェアやソフトウェア変更を行う必要もない。また、特に車両においては、車載装置が数多く搭載され、通信データ量も膨大なものとなるので、その中から復号コードを特定することは、容易なことではないので、暗号化されたデータを解読される虞も低くなる。
【0018】
また、本発明の電子制御装置における復号コード取得部は、受信データのうち、値の変動の頻度が小さい受信データを復号コードとして取得する。
【0019】
受信データには、常に値が変動しているものや、予め定められた条件が成立しているときのみ値が変わる(すなわち、値の変動の頻度が小さい)ものなど、様々なものがある。上記構成によって、値の変動の頻度が小さい受信データを復号コードとして使用すれば、復号専用のデータを必要とすることはない。仮に、通信データから復号コードを探すとき、通常は通信データのうち固定値が復号コードではないかと推定するので、復号コードを見つけ出すことを困難にすることもできる。
【0020】
また、本発明の電子制御装置は、復号部における復号結果が正しいか否かを判定する復号結果判定部を備える。
【0021】
上記構成によって、正常に復号できたかどうかが分かるだけではなく、中央演算処理部の動作異常も防止することができる。
【0022】
また、本発明の電子制御装置における復号結果判定部は、復号されたデータの内部記憶素子における予め定められた1つ以上の位置の値が予め定められた値であるか否かによって復号結果が正しいか否かを判定する。
【0023】
データ全体を調べると時間がかかり、電子制御装置の動作にも影響を及ぼすこともあるが、上記構成によって、比較的短時間で復号結果が正しいか否かを判定することができる。
【図面の簡単な説明】
【0024】
【図1】電子制御装置の全体構成を示すブロック図。
【図2】DRAMの記憶内容の一例を示す図。
【図3】外部記憶素子の記憶内容の一例を示す図。
【図4】復号処理を説明するフロー図。
【図5】通信データの構成の一例を示す図。
【図6】復号が正常に行われたかの判定方法を説明する図。
【図7】復号処理の別例を説明するフロー図。
【発明を実施するための形態】
【0025】
以下、本発明の電子制御装置について、図面を用いて説明する。図1に、電子制御装置(以下、「ECU」という)1の全体構成を示す。ECU1は、例えば車両に搭載され、中央演算処理部11と、中央演算処理部11に接続された外部記憶素子16,通信I/F(インターフェース)17,信号入出力回路を含むI/O18を含んで構成される。
【0026】
中央演算処理部11は、周知のSiP(System in Package)として構成され、内部にはマイコン12、DRAM13、SRAM14、MASK ROM15を含んでいる。なお、マイコン12が本発明の読出部,復号部,復号結果判定部に相当する。また、DRAM13、SRAM14が本発明の内部記憶素子に相当する。
【0027】
DRAM13は、周知のダイナミックRAMで、図2に、DRAM13の記憶内容の一例を示す。DRAM13は、外部記憶素子16からの個々のプログラム/データの転送状況を示すデータ転送状況格納領域13a(例えばフラグエリアとして構成)、復号コード格納領域13b、外部記憶素子16から転送した暗号化データを格納する暗号化データ格納領域13c、暗号化データを復号した復号データを格納する復号データ格納領域13d、各プログラムの作業領域であるワークエリア13eを含んでいる。なお、本発明では、プログラム、データの両方を含めたものを「データ」と総称している。
【0028】
図1に戻り、SRAM14は、周知のスタティックRAMで、ECU1に外部から電源が供給されていないときでも、リチウム電池等で記憶されたデータのバックアップを行う。SRAM14には、ECU1の動作に必要で、かつ外部電源切断時でもその内容の保持が必要なデータを格納する。
【0029】
また、SRAM14に、データ転送状況格納領域、復号コード格納領域、暗号化データ格納領域、復号データ格納領域を設ける構成としてもよいし、暗号化データおよび復号データのうち、バックアップが必要なものをSRAM14に格納するようにしてもよい。
【0030】
MASK ROM15は暗号化データを復号するための復号プログラムの他に、ECU1の動作に必要な最小限のプログラムを記憶している。なお、MASK ROM15は、読み出し専用記憶媒体である。
【0031】
外部記憶素子16は、例えばフラッシュメモリのような電気的に書き換え可能な記憶媒体により構成され、ECU1の動作に必要なプログラム/データを記憶している。外部記憶素子16は、中央演算処理部11とは別部品として、例えばECU1の基板上に実装される。図3に、外部記憶素子16の記憶内容の一例を示す。図3のように、外部記憶素子16には、プログラム(A〜D)、データ(J〜M)が記憶され、データ情報16aには、各プログラム/データに関する情報(例えば、名称,データ長,配置アドレス,暗号化されているか否か)が記憶されている。
【0032】
図3の例では、プログラム(A〜D)のうち、プログラムA、C、Dは暗号化され、プログラムBは暗号化されていない。また、データ(J〜M)のうち、データJ、L、Mは暗号化され、データKは暗号化されていない。このように、暗号化されていないプログラム/データを含めて記憶してもよいし、全てのプログラム/データを暗号化して記憶してもよい。また、図3のように、暗号化データおよび非暗号化データが混在していてもよいし、暗号化データおよび非暗号化データそれぞれのデータ専用の記憶領域を設定してもよい。
【0033】
図1に戻り、通信I/F17は、例えば車内LAN31を介して他の車載機器とのデータ通信を行う、周知のLANインターフェース回路として構成される。なお、通信I/F(インターフェース)17が本発明の復号コード取得部,通信部に相当する。
【0034】
I/O18は、例えば、ECU1に接続されたセンサ群21からの信号(センサ検出信号)を、中央演算処理部11で処理可能な状態にするための増幅あるいは波形整形等を行ったり、中央演算処理部11からの制御信号に基づいて、ECU1に接続されたアクチュエータ群22に対して駆動信号を生成し出力する。
【0035】
上述の構成により、ECU1は、センサ群21からのセンサ検出信号を取得して、中央演算処理部11で所定の演算を行い、その演算結果に基づいて、アクチュエータ群22に対する制御指令を出力し、アクチュエータ群22の駆動制御を行う。例えば、センサ群21で車両のドアの開閉状態を検出し、ドアのうちの少なくともいずれかが開状態となったときに、アクチュエータ群22に含まれるルームランプ等の車内照明装置を点灯させる。
【0036】
図4を用いて、マイコン12が実行する復号処理について説明する。本処理は、MASK ROM15に記憶された復号プログラムに含まれている。例えば、電源投入時(ECU1をバッテリに接続したとき)に実行される。まず、DRAM13およびSRAM14の初期化を行う(S11)。例えば、DRAM13およびSRAM14の全領域あるいは予め定められた領域の記憶内容をクリアする。また、このとき、アクチュエータ群22を予め定められた初期状態とするように制御指令を送る。
【0037】
次に、外部記憶素子16から、DRAM13またはSRAM14に、プログラム/データを転送する(S12)。暗号化されたプログラム/データ(図3のプログラムA、C、DとデータJ、L、M)は、暗号化データ格納領域13cに、暗号化されていないプログラム/データ(図3のプログラムBとデータK)は、復号データ格納領域13dに格納される。格納後に、データ転送状況格納領域13aの各プログラム/データに該等するフラグの状態を「転送済」とする。また、このとき、外部記憶素子16のデータ情報16aの内容も転送される。
【0038】
外部記憶素子16に記憶されたプログラム/データを全て転送しないようにしてもよい。つまり、ECU1の当面の動作に必要なプログラム/データのみを転送し、使用頻度の少ない機能や処理に関するプログラム/データは、必要に応じて転送する。こうすることで、復号処理に要する時間を短縮できる。この場合、本処理実行時に転送するプログラムについての情報は、バックアップが可能なSRAM14に記憶することが望ましい。
【0039】
次に、ECU1の外部(すなわち、外部装置)との通信手段を確立する(S13)。例えば、車内LAN31を介して、他の車載機器からの通信データを正常時に受信できたときに、通信手段が確立したと見なす。通信データは、例えば、図5のように、送信元の車載機器を識別する送信元ID、あて先の車載機器を指定するあて先ID、送信元IDとは別に有し車載機器を識別するための固有ID(これらをヘッダ情報ともいう)、データ(データ1〜データn)を含んで構成される。
【0040】
次に、車内LAN31を介して、他の車載機器からのデータを受信する。受信したデータ(「受信データ」という)はDRAM13のワークエリア13eに一時保存される。そして、受信データから復号コードを取得して(S14)、DRAM13の復号コード格納領域13bに格納する(S15)。
【0041】
復号コードは以下のうちのいずれかを用いる。なお、原則として、受信データのあて先IDがECU1を示すものではないときには、ワークエリア13eの受信データは消去されるか次の受信データにより上書きされる。また、受信データのあて先IDがECU1を示すものであるときには、DRAM13あるいはSRAM14の所定領域に格納され、その受信データの内容に応じた処理を行う。
・所定の送信元ID、あるいは送信元IDに所定の演算を行ったものを復号コードとする。
・固有ID、あるいは固有IDに所定の演算を行ったものを復号コードとする。
【0042】
・データ1〜nのうち、予め定められた位置にあるもの(例えば、3番目のデータであるデータ3)。
例えば車両のドアの開閉状態を示すデータのような、状態すなわちデータ値の変化の頻度が比較的少ないものがある。このデータを復号コードとして用いることができる。例えば、ドアの開閉状態のデータで全てのドアが閉状態のときのデータ値を復号コードとして用いる。本処理の実行中にいずれかのドアが開状態であっても、復号コード受信のリトライ中に全ドアが閉状態(待機状態)となる確率が高いので、ドア状態の他にも待機状態である割合が高い(すなわち、データ値が変化しにくい)データは、復号コードに適している。また、送信元IDや固定IDに比べて、復号コードを解読される可能性も低くなる。
【0043】
また、受信データのあて先IDがECU1を示すものではないものから復号コードを取得してもよい。こうすることで、どのデータから復号コードを取得しているかをより分かり難くすることができる。
【0044】
どの受信データから、どのようにして復号コードを取得するかは、例えばSRAM14あるいはMASK ROM15に予め記憶されている。
【0045】
次に、DRAM13の(SRAM14でもよい)暗号化データ格納領域13cに転送された暗号化プログラム/データを、上述の復号コードを用いて復号する(S16)。なお、暗号化アルゴリズムは、周知のDES、MD4、AES等のうちのいずれを用いてもよい。また、復号したものは、データ情報16aに基づいて、復号データ格納領域13dの所定位置(アドレス)に格納する。
【0046】
復号が終了した暗号化プログラム/データは、直ちに消去してもよいし、次の初期化時(ステップS11)まで保持してもよいし、暗号化データ格納領域13cの容量に制限があるときには随時消去してもよい。
【0047】
次に、復号が正常に行われたか否かを判定する。復号データ格納領域13dに格納されたプログラムは、上述のように所定のアドレスに格納されている。すなわち、各プログラムの先頭アドレスは、外部記憶素子16に記憶されたプログラムがバージョンアップされても、常に同じとなるように構成されている。
【0048】
そこで、プログラムの開始アドレスから○○番目のデータが予め定められた値であるときに、復号が正常に行われたと判定することができる。図6に、その一例を示す。図6の例では、復号データ格納領域13dのアドレス1000H(16進)に文字Aを表すデータが、アドレス1800Hに文字Bを表すデータが、アドレス2000Hに文字Cを表すデータが、それぞれ格納されている。これらのデータは、ダミーのテーブルデータ、あるいは文字コード定義データとしてソースプログラム上にアドレスを指定して記述されている。
【0049】
図6の例では、復号判定用のデータは3個であるが、3個より多くても少なくてもよい。また、復号判定用のデータを複数有し、そのデータをアドレス順に並べると、所定の意味を表す単語となるようにしてもよい。
【0050】
復号が正常に行われたと判定したとき(S17:YES)、復号データ格納領域13dに格納されたプログラムのうち、本処理を終了し、予め指定されたプログラム(例えば、メイン周回処理)を実行する(S18)。
【0051】
一方、復号が正常に行われないとき(S17:NO)、ステップS16へ戻り、再度復号を行う。あるいは、ステップS14へ戻り、新たな受信データから復号コードを取得して復号を行う。
【0052】
図7を用いて、復号プログラム実行終了後の、復号データ格納領域13dに格納されたプログラムを実行しているときに、暗号化されたプログラム/データを転送して復号する処理について説明する。なお、本処理は、例えばMASK ROM15に記憶され、予め定められたタイミング、あるいは、個々のプログラム終了時(次のプログラムを実行する前)に実行される。
【0053】
まず、現在実行しているプログラムの次に実行されるプログラム/データを先読みする(S31)。これは、例えば、現在実行中のアドレス(マイコン11のプログラムカウンタから取得可能)より先を対象として、復号データ格納領域13dで、次に呼び出されるプログラム/データのアドレスあるいはジャンプ先のアドレスを探すものである。
【0054】
次に、復号データ格納領域13dにおいて、上述のアドレスにプログラム/データが存在するか否か、すなわち、復号されたプログラム/データがあるか否かを調べる(S32)。
【0055】
上述のアドレスにプログラム/データが存在するとき(S33:YES)、本処理を終了し、そのプログラムの実行タイミングが到来したときに、該プログラムを実行する(S40)。一方、上述のアドレスにプログラム/データが存在しないとき(S33:NO)、外部記憶素子16から該当するプログラム/データをDRAM13(あるいはSRAM14)に転送する(S34)。このとき、プログラム/データが暗号化されているときには暗号化データ格納領域13cに記憶し、暗号化されていないときには復号データ格納領域13dに記憶する。
【0056】
プログラム/データが暗号化されているとき(S35:YES)、復号コード格納領域13bに記憶されている復号コードを読み出す(S36)。図4のステップS14のように、車内LAN31を介して、新たに受信データから復号コードを取得してもよい。
【0057】
一方、プログラム/データが暗号化されていないとき(S35:NO)、本処理を終了し、そのプログラムの実行タイミングが到来したときに、該プログラムを実行する(S40)。
【0058】
次に、図4のステップS16と同様に、暗号化プログラム/データを、復号コードを用いて復号する(S37)。そして、正常に復号されたとき(S38:YES)、本処理を終了し、復号したプログラムの実行タイミングが到来したときに、該プログラムを実行する(S39)。
【0059】
一方、正常に復号されないとき(S38:NO)、ステップS37(あるいはステップS36)へ戻り、再度復号を行う。また、車内LAN31を介して、新たに受信データから復号コードを取得してもよい。
【0060】
予め定められたタイミングで、既に復号されている暗号化プログラム/データの復号を行ってもよい。例えば、該当するプログラム/データを実行中であるか否かを判定し、実行中でないときに復号を行う。これにより、正しく復号できなかったときや、ノイズ等による復号プログラムの意図しない書き換えが行われたとき、ECU1の動作に対する影響を最小限に抑えることができる。また、復号データも、予め定められたタイミングで再取得してもよい。
【0061】
以上、本発明の実施の形態を説明したが、これらはあくまで例示にすぎず、本発明はこれらに限定されるものではなく、特許請求の範囲の趣旨を逸脱しない限りにおいて、当業者の知識に基づく種々の変更が可能である。
【符号の説明】
【0062】
1 ECU
11 中央演算処理部
12 マイコン(読出部,復号部,復号結果判定部)
13 DRAM(内部記憶素子)
14 SRAM(内部記憶素子)
15 MASK ROM
16 外部記憶素子
17 通信I/F(復号コード取得部,通信部)

【特許請求の範囲】
【請求項1】
中央演算処理部と、
前記中央演算処理部の内部に設けられた内部記憶素子と、
前記中央演算処理部の外部に設けられ、暗号化されたデータを記憶する外部記憶素子と、
前記外部記憶素子から前記暗号化されたデータを読み出して前記内部記憶素子に記憶する読出部と、
外部装置から、前記暗号化されたデータを復号するための復号コードを取得する復号コード取得部と、
取得した前記復号コードに基づいて、前記内部記憶素子に記憶された前記暗号化されたデータを復号し、復号したデータを前記内部記憶素子に格納する復号部と、
を備えることを特徴とする電子制御装置。
【請求項2】
前記外部装置との通信を行う通信部を備え、
前記復号コード取得部は、前記通信部を介して受信する受信データのうち、予め定められた受信データを前記復号コードとして取得する請求項1に記載の電子制御装置。
【請求項3】
前記復号コード取得部は、前記受信データのうち、値の変動の頻度が小さい受信データを前記復号コードとして取得する請求項2に記載の電子制御装置。
【請求項4】
前記復号部における復号結果が正しいか否かを判定する復号結果判定部を備える請求項1ないし請求項3のいずれか1項に記載の電子制御装置。
【請求項5】
前記復号結果判定部は、復号されたデータの前記内部記憶素子における予め定められた1つ以上の位置の値が予め定められた値であるか否かによって前記復号結果が正しいか否かを判定する請求項4に記載の電子制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−70216(P2012−70216A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願番号】特願2010−213228(P2010−213228)
【出願日】平成22年9月24日(2010.9.24)
【出願人】(000004260)株式会社デンソー (27,639)
【Fターム(参考)】