説明

マイクロコンピュータ、マイクロコンピュータに対するプログラム書込み方法、及び書込み処理システム

【課題】マイクロコンピュータに内蔵された不揮発性メモリにプログラムの書き込みを行う際に、プログラム漏洩の危険性を低減する。
【解決手段】MCU1は、CPU12、暗号鍵CAを入力する入力端子15、暗号化されたプログラムEAP2を入力する入力端子16を有する。不揮発性メモリ14には、暗号鍵CBが予め格納されている。復号化部13は、暗号化されたプログラムEAP2を、入力端子15から入力した暗号鍵CA及び不揮発性メモリ14に予め格納された暗号鍵CBを用いて復号する。CPU12は、復号化部13によって復号されたプログラムAPを不揮発性メモリ14に格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、チップ製造後にプログラムの書き込みを行うことが可能な不揮発性メモリを内蔵したマイクロコンピュータ、及びマイクロコンピュータに内蔵された不揮発性メモリに対するプログラムの書込み方法に関する。
【背景技術】
【0002】
ROM(Read Only Memory)、RAM(Random Access Memory)等の周辺装置を内蔵し、1チップ化されたマイクロコンピュータは、マイクロコントローラユニット(MCU:Micro Controller Unit)と呼ばれている。MCUに内蔵されたROM(Read Only Memory)領域には、電子機器等の制御対象装置に応じたプログラム(以下、顧客プログラムと呼ぶ)が書き込まれ、MCUは主にこれらの制御対象装置に組み込まれて使用される。
【0003】
従来は、MCUの製造段階において、チップ製造に使うマスクによって顧客プログラムの書き込みを行う、いわゆるマスクROM製品が多く使われてきた。しかし近年は、MCUパッケージの製造後に顧客プログラムの書き込みが可能な不揮発性メモリを内蔵したMCUが多く利用されるようになっている。
【0004】
このような不揮発性メモリ内蔵MCUでは、製品としてパッケージ化が完了した後に、LSIテスタやフラッシュメモリライタ等の書込み装置を使用し、内蔵された不揮発性メモリに対して顧客プログラムの書き込みを行う。これにより、プログラム完成からプログラムのMUC搭載までの期間が大幅に短縮できる。さらに、不揮発性メモリとして、データの書き換えが可能なフラッシュメモリを用いている場合は、一度書き込んだ顧客プログラムの書き換えることができるため、製品出荷後のバグ修正などに柔軟に対応することができる。
【0005】
不揮発性メモリ内蔵MCUによって、MCUへの顧客プログラムの書込みをどこでも容易に行うことができる。その反面、顧客プログラムの書き込みの際の機密管理の重要性が高まっている。
【0006】
例えば、MCUメーカが顧客から顧客プログラムを受け取り、この顧客プログラムをMCUに内蔵された不揮発性メモリに書き込んで出荷する場合には、顧客から預かった顧客プログラムが第三者に漏洩することを防止する必要がある。このような場合に従来行われているセキュリティ対策の例を、図7を用いて説明する。
【0007】
図7おいて、符号71は、顧客が管理する環境(以下、顧客環境と呼ぶ)を示しており、符号72は、顧客プログラムの書き込みを実行するMCUメーカ等の環境(以下、書込み環境と呼ぶ)を示している。まず、顧客は顧客環境71において、暗号化装置91を用いて顧客プログラムの暗号化を行う。暗号化装置91は、入力された暗号鍵CAを用いて顧客プログラムAPを暗号化し、暗号化された顧客プログラムEAP1を出力する。なお、暗号鍵CAは、データの暗号化及び復号化に共通して使用される共通鍵暗号方式の暗号鍵とする。
【0008】
暗号鍵CAは、経路31を経由して顧客環境71から書込み環境72に転送される。また、暗号化された顧客プログラムEAP1は経路32を経由して書込み環境72に転送される。経路31及び32は、通信網のほか、宅配便等のいわゆるオフライン経路であってもよく、要するに所定の信頼性が担保されていればよい。例えば、経路31がインターネットであれば、顧客とMCUメーカは、予め取り決めた暗号方式に従って暗号鍵CAの鍵交換を行うこととすればよい。
【0009】
書込み環境72に転送された暗号化された顧客プログラムEAP1は、復号化装置92によって復号される。復号化装置92は、暗号鍵CAと暗号化された顧客プログラムEAP1とを入力して、復号後の顧客プログラムAPを出力する。復号された顧客プログラムAPは、LSIテスタやフラッシュメモリライタ等の書込み装置(不図示)によって不揮発性メモリを搭載したMCU80に入力され、中央処理装置(CPU:Central Processing Unit)81によって不揮発性メモリ82に書き込まれる。
【0010】
より具体的に述べると、顧客プログラムAPの書きこみ処理は、CPU81が、不揮発性メモリ82への顧客プログラム書込み手順が記述された書込み実行プログラムを、MCU81が備えるファームウェアROM(不図示)から読み出して実行することにより実現される。
【0011】
図7に示した構成で顧客プログラムの書き込みを行うことにより、顧客プログラムの搬送時に顧客プログラムが第三者に漏洩することは防止できる。しかしながら、書込み環境72において、暗号化されていない状態の顧客プログラムAPが存在することになるため、書込み環境72から顧客プログラムが第三者に漏洩する可能性があるという問題がある。
【0012】
なお、特許文献1には、暗号化されたアプリケーションプログラムとこれを復号するための暗号鍵を入力し、外部から入力された暗号鍵によってアプリケーションプログラムを復号するマイクロコンピュータが開示されている。また、アプリケーションプログラムを復号するための暗号鍵は、マイクロコンピュータに格納された公開鍵方式の秘密鍵に対応する公開鍵によって暗号化された状態でマイクロコンピュータに入力される。
【特許文献1】特開平11−282667号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
上述したように、マイクロコンピュータに内蔵された不揮発性メモリにプログラムの書き込みを行う際に、プログラム漏洩の危険性が高いという課題がある。
【課題を解決するための手段】
【0014】
本発明にかかるマイクロコンピュータは、不揮発性の第1の記憶部に格納されたプログラムを読み出して実行する中央処理装置を備える。さらに、当該マイクロコンピュータは、第1の鍵データを入力する第1の入力端子と、前記第1の鍵データと異なる第2の鍵データが予め格納された第2の記憶部と、暗号化された前記プログラムを入力する第2の入力端子と、暗号化された前記プログラムを、前記第1の鍵データ及び前記第2の鍵データを用いて復号する復号化部とをさらに備える。さらにまた、前記中央処理装置は、前記復号化部によって復号された前記プログラムを前記第1の記憶部に格納する処理を行うものである。
【0015】
このような構成により、マイクロコンピュータに内蔵された不揮発性の記憶部に格納される顧客プログラムは、第1の鍵及び第2の鍵の2つの暗号鍵によって暗号化された状態でマイクロコンピュータに入力される。これにより、暗号化されていない状態のプログラムを書き込み環境に置く必要がなくなるため、顧客プログラムが第三者に漏洩する危険性を低減できる。
【0016】
また、顧客プログラムの復号に必要な暗号鍵の1つである第2の鍵が、予めマイクロコンピュータに格納されている。これにより、暗号化されたプログラムと合わせてマイクロコンピュータに入力される暗号鍵(第1の鍵)のみでは顧客プログラムを復号することができない。このため、暗号鍵の漏洩によって顧客プログラムが第三者に漏洩してしまう危険性をさらに低減することができる。
【0017】
一方、本発明にかかるプログラムの書込み方法は、マイクロコンピュータが内蔵する不揮発性の第1の記憶部に対するプログラムの書込み方法である。具他的には、まず、第1の鍵データを、前記マイクロコンピュータに入力する。次に、暗号化されたプログラムを、前記マイクロコンピュータに入力する。さらに、前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第2の記憶部に予め格納され、前記第1の鍵データとは異なる第2の鍵データを用いて、暗号化された前記プログラムを復号化する。最後に、復号した前記プログラムを前記第1の記憶部に格納するものである。
【0018】
さらに、本発明にかかるコンピュータプログラムは、マイクロコンピュータが内蔵する不揮発性の第1の記憶部に対するプログラム書込み処理を、前記マイクロコンピュータが有するCPUに実行させるためのコンピュータプログラムである。ここで、前記書込み処理は、第1の鍵データを前記マイクロコンピュータに入力する処理と、暗号化されたプログラムを前記マイクロコンピュータに入力する処理と、前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第2の記憶部に予め格納され、前記第1の鍵データとは異なる第2の鍵データを用いて、暗号化された前記プログラムを復号化する処理と、復号した前記プログラムを前記第1の記憶部に格納する処理とを含む。
【発明の効果】
【0019】
本発明により、マイクロコンピュータに内蔵された不揮発性メモリにプログラムの書き込みを行う際に、プログラム漏洩の危険性を低減することができる。
【発明を実施するための最良の形態】
【0020】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0021】
発明の実施の形態1.
本実施の形態にかかるプログラム書込み処理システム1の構成を図1に示す。プログラム書込み処理システム1は、顧客環境71に置かれた暗号化装置20と、書き込み環境に置かれたMCU10とを備えている。
【0022】
暗号化装置20は、暗号鍵CA及び暗号鍵CBの2つの鍵を用いて入力された顧客プログラムAPを暗号化する暗号化部21を有する。また、暗号化装置20は、暗号鍵CBを格納する不揮発性メモリ22を有する。ここで、暗号鍵CA及び暗号鍵CBはともに、データの暗号化及び復号化に共通して使用される共通鍵暗号方式の暗号鍵である。
【0023】
暗号化部21は、入力端子23を介して外部から入力された暗号鍵CA及び不揮発性メモリ22から読み出した暗号鍵CBを用いて、入力端子24を介して外部から入力した顧客プログラムAPの暗号化を行い、暗号化された顧客プログラムEAP2を出力する。2つの共通鍵暗号方式の暗号鍵CA及びCBを用いる暗号化アルゴリズムには、様々なアルゴリズムが適用可能である。例えば、トリプルDES(Data Encryption Standard)アルゴリズムを用いる場合は、暗号鍵CAによる1st DES暗号化、暗号鍵CBによる2nd DES復号化、及び暗号鍵CAによる3rd DES暗号化を行うこととすればよい。また、DESに限らずAES(Advanced Encryption Standard)等の他のブロック暗号化アルゴリズムや、RC4等のストリーム暗号化アルゴリズムを適用しても良い。
【0024】
不揮発性メモリ22は、暗号鍵CBを暗号化装置20の外部から読み出せない状態で保持する。具体的には、暗号化装置20の使用に先立って暗号鍵CBを不揮発性メモリ22に書き込んだ後は、暗号化装置20の外部から不揮発性メモリ22に対するアクセスを許可しないこととすればよい。
【0025】
暗号鍵CA及び暗号化装置20によって暗号化された顧客プログラムEAP2は、経路31及び経路32を経由して、顧客環境71から書込み環境72に転送される。上述したように、経路31及び32は、通信網のほか、宅配便等のいわゆるオフライン経路であってもよく、要するに所定の信頼性が担保されていればよい。
【0026】
MCU10は、入力端子15を介して暗号鍵CAを入力し、入力端子16を介して暗号化された顧客プログラムEAP2を入力する。入力端子15及び16は、物理的に別個の端子であっても良いし、共通の端子であっても良い。
【0027】
MCU10に入力された暗号鍵CA及び暗号化された顧客プログラムEAP2は、復号化部11に入力される。復号化部11は、暗号鍵CA及び不揮発性メモリ14から読み出した暗号鍵CBを用いて、暗号化された顧客プログラムEAP2を復号する。復号化部11に適用する復号アルゴリズムは、2つの共通鍵暗号方式の暗号鍵CA及びCBを用いる様々なアルゴリズムが適用可能である。例えば、上述した暗号化部21と同様に、トリプルDES(Data Encryption Standard)、AES、RC4等の暗号化アルゴリズムを適用することができる。
【0028】
中央処理装置(CPU)12は、不揮発性メモリ14に格納された顧客プログラム14を読み出して実行する。さらに、中央処理装置(CPU)12は、復号化部11によって復号された顧客プログラムAPを不揮発性メモリ14に書き込む処理を制御する。具体的には、CPU12は、復号化部11が出力する復号されたデータを蓄積するための一次保存領域を備えており、ブロック暗号化アルゴリズムであれば暗号化ブロック単位、ストリーム暗号化アルゴリズムであれば1ビット単位で復号化部11から出力されるデータを一時的に保存する。さらに、CPU12は、一時保存したデータを不揮発性メモリ14に対する書込み単位に整列し、不揮発性メモリ14への書き込みを行う。
【0029】
比較部13は、CPU12によって不揮発性メモリ14に書き込まれたデータを読み出し、CPU12に一時保存されているデータと比較する。比較部13は、データ比較結果が一致である場合は書込み正常と判定し、不一致である場合は書き込み不良と判定する。これにより、CPU12による顧客プログラムAPの不揮発性メモリ14への書き込みが正常に行われたか否かを検証することができる。
【0030】
なお、比較部13でのデータ比較結果が不一致であり、書込み不良と判定した場合は、判定結果をCPU12に通知することとし、通知を受けたCPU12は、書込み不良となった不揮発性メモリ14の領域のデータを消去して、再度書き込みを行うことが望ましい。
【0031】
不揮発性メモリ14には、予め暗号鍵CBが格納されている。ここで、暗号鍵CBは、MCU10の外部に読み出すことが不可能な状態で保持されている。具体的には、例えば、MCU10の使用に先立って暗号鍵CBを不揮発性メモリ14に書き込んだ後は、復号化部11以外からの不揮発性メモリ22の暗号鍵CBが格納された領域に対するアクセスを許可しないこととすればよい。
【0032】
ここで、暗号鍵CBの書込み処理手順を図2のフローチャートを用いて説明する。ステップS101では、不揮発性メモリ14の特定領域に暗号鍵CBの書き込みを行う。ステップS102では、不揮発性メモリ14に書き込んだ暗号鍵CBを読み出して、元の暗号鍵CBとの間でデータ比較を行うことにより、書き込み正しく行われたか否かを検証する。暗号鍵CBの書き込みが正しく行われていた場合は、暗号鍵CBが書き込まれた不揮発性メモリ14の領域をMCU10の外部からの読み出しを不可能に設定する(ステップS103及びS104)。
【0033】
一方、暗号鍵CBの書き込みが正しく行われていないと判定した場合は、暗号鍵CBが書き込まれた不揮発性メモリ14の領域のデータを消去する(ステップS103及びS105)。なお、ステップS105においてデータ消去を行った後は、再度ステップS101以降の処理を実行し、暗号鍵CBの不揮発性メモリ14への書き込みを完了することとすれば良い。
【0034】
なお、上述した顧客プログラムAPを不揮発性メモリ14に書き込む処理だけでなく、復号化部11及び比較部13が行う処理も、CPU12によってファームウェア・プログラムを実行することにより、具体的に実現可能である。図3にMCU10のより具体的な構成を示す。MCU10は、CPU12、ROM42、RAM44、不揮発性メモリ14等が1つのICパッケージに集積され、1チップ化されたマイクロコンピュータである。
【0035】
CPU12は、ROM42に格納された書込み実行プログラム421や、不揮発性メモリ14に格納された顧客プログラムAPを読み込んで命令を実行する。ROM42は、書込み実行プログラム421等のファームウェア・プログラムを格納するメモリである。
【0036】
I/Oポート43は、MCU10の入出力端子であり、上述した入力端子15及び16がこれに相当する。
【0037】
RAM44は揮発性の記憶領域であり、CPU12の作業領域として使用される。RAM44は、例えば、I/Oポート43を介して入力された暗号鍵CA及び暗号化された顧客プログラムEAP2の保存領域、復号した顧客プログラムAPの一時保存領域等として使用される。
【0038】
暗号回路45は、CPU12の制御にしたがって、不揮発性メモリ14から暗号鍵CBを読み込み、RAM44から暗号鍵CA及び暗号化された顧客プログラムEAP2を読み込んで、EAP2の復号を行う。つまり、暗号回路45は、上述した復号化部11による復号処理を担う。なお、復号化部11による復号処理は、復号処理手順を記述した復号処理プログラムをROM42に格納しておき、当該プログラムをCPU12で実行することによっても実現可能である。このとき、復号処理プログラムは、書込み実行プログラム421とは別のプログラムモジュールとし、書込み実行プログラム421から復号処理プログラムを読み出すこととすればよい。また、復号処理プログラムは、書込み実行プログラム421と一体の1つのプログラムとして構成してもよい。
【0039】
書込み実行プログラム421は、上述した復号化部11、CPU12及び比較部13の機能を実行するプログラムである。CPU12が書込み実行プログラム421を実行し、RAM44、I/Oポート43、暗号回路45、不揮発性メモリ14等と協調して動作することにより、上述した復号化部11、CPU12及び比較部13の機能が実現される。
【0040】
書込み実行プログラム421に基づくMCU10の動作フローを図4に示す。ステップS201では、暗号鍵CAをI/Oポート43を介して入力し、RAM44に格納する。ステップS202では、暗号化された顧客プログラムEAP2を/Oポート43を介して入力し、RAM44に格納する。
【0041】
ステップS203では、ステップS201でRAM44に格納された暗号鍵CAと、予め不揮発性メモリ14に格納されている暗号鍵CBとを読み出す。さらに、これら2つの暗号鍵を用いて、プログラムEAP2を復号する。ここで、プログラムEAP2の復号処理は、RAM44に格納されたプログラムEAP2を暗号処理単位で読み出して実行する。
【0042】
ステップS204では、暗号回路45で復号したデータをRAM44に一時的に保存する。ステップS205では、RAM44に一時保存された復号後のデータを、不揮発性メモリ14の書込み単位で読み出し、不揮発性メモリ14に書き込みを行う。
【0043】
ステップS206では、不揮発性メモリ14に書き込んだ顧客プログラムAPの正常性を検証する。具体的には、不揮発性メモリ14に書き込んだデータを読み出して、ステップS204でRAM44に一時保存したデータと比較することにより、正常に書き込みが行われたか否かを検証する。正常に書き込まれていた場合はステップS203に戻り、次のデータの復号、書込み、検証を行う(ステップS207)。
【0044】
暗号された顧客プログラムEAP2の全データの復号、書込み、検証が終了した場合は、当該書込み処理フローを終了する(ステップS208)。一方、ステップS206の検証において、不揮発性メモリ14に対する書込み不良を判定した場合には、書込み不良となった領域のデータを消去する(ステップS209)。なお、書込み不良となった領域を消去した後は、消去したデータの書き込みを再度行うことが望ましい。
【0045】
なお、上述したステップS201乃至S203の処理は、復号化部11に対応する。また、ステップS206、S207及びS209の処理は、比較部13の処理に対応する。
【0046】
また、書込み実行プログラム421の格納場所は、ROM42に限らず、不揮発性メモリ14を含む様々な種類の記憶媒体に格納することが可能であり、また、通信媒体を介して伝達することが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD−ROM、DVD、バッテリバックアップ付きRAMメモリカートリッジ等を含む。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等を含み、インターネットも含まれる。
【0047】
上述したように、本実施の形態にかかるプログラム書込み処理システム1では、暗号鍵CA及びCBによって暗号化された顧客プログラムEAP2をMCU10に入力し、MCU10の内部で復号処理を行って、不揮発性メモリ14に顧客プログラムAPを書き込む。このため、暗号化されていない状態の顧客プログラムAPが書込み環境72に存在することがないため、書込み環境72から顧客プログラムAPが第三者に漏洩することを防止できる。
【0048】
本実施の形態にかかるプログラム書込み処理システム1では、2つの共通鍵暗号方式の暗号鍵CA及びCBを用いて顧客プログラムAPの暗号化を行っている。共通鍵暗号方式による復号化処理の演算量は、公開鍵暗号方式による復号化処理の演算量より小さいことが知られている。共通鍵暗号方式による復号化処理が単純なビット置換演算、排他的論理和演算によって行われるのに対し、公開鍵暗号方式による復号処理は膨大なべき乗演算、割り算演算を必要とするためである。したがって、共通鍵暗号方式による復号化を行うMCU10は、公開鍵暗号方式による復号処理行うものに比べて演算量が小さくてすむ。このため、MCU10は、公開鍵暗号方式による復号処理の実行に必要とされるような高性能の暗号回路を必要とせず、処理能力の低い暗号回路を適用することができ、低コスト化や回路規模の抑制が可能となる。また、暗号鍵CA及びCBを用いた復号処理をMCU10に内蔵されたCPUで実行する場合には、公開鍵暗号方式の復号処理に比べて演算能力の比較的低いCPU(例えば1度の処理で8ビットデータしか扱うことができない8ビットCPU)によって実現可能である。
【0049】
また、2つの共通鍵暗号方式の暗号鍵CA及びCBを用いて顧客プログラムAPの暗号化を行っていることから以下に述べる利点がある。比較のため、1つ暗号鍵CBのみで顧客プログラムAPを暗号化し、暗号化されたプログラムを顧客環境71と書込み環境72の間で転送する場合を考える。このとき何らかの理由で暗号化された顧客プログラムが第三者に渡り、この第三者が暗号化装置を入手すると、顧客プログラムAPの復号が可能となってしまうという問題がある。共通鍵方式であるDES等の暗号化アルゴリズムでは、暗号鍵CBによる暗号化を行う暗号化装置に、暗号化された顧客プログラムを入力すると、複合化された顧客プログラムが出力されるためである。
【0050】
これに対して本実施の形態のプログラム書込み処理システム1であれば、暗号化された顧客プログラムEAP2及び暗号化装置20を第三者が入手したとしても、さらに暗号鍵CAが第三者の手に渡らない限り、復号された顧客プログラムAPを得ることはできない。このため、顧客プログラムAPが第三者に漏洩することを防止することができる。なお、この場合は、暗号化装置20及びMCU10に入力される暗号鍵CAは、顧客ごと又は顧客プログラムごとに異なるものに設定することが望ましい。暗号鍵CAと暗号鍵CBの組合せを、顧客ごと又は顧客プログラムごとに異ならせることによって、顧客プログラムAPが第三者に漏洩することを効果的に防止することができる。
【0051】
また、本実施の形態にかかる暗号化装置20及びMCU10では、暗号鍵CBをこれらの装置の外部に読み出すことができない。このため、何らかの理由で、暗号化された顧客プログラムEAP2と暗号鍵CAが第三者に漏洩した場合でも、第三者は、暗号化された顧客プログラムEAP2を復号して、顧客プログラムAPを得ることはできない。
【0052】
発明の実施の形態2.
本実施の形態にかかるプログラム書込み処理システム2の構成を図5に示す。プログラム書込み処理システム2は、顧客環境71に置かれた暗号化装置60と、書き込み環境72に置かれたMCU50とを備えている。
【0053】
暗号化装置60は、データ圧縮部52を有する点が、発明の実施の形態1の暗号化装置20と異なる。なお、暗号化装置60のその他の構成は、暗号化装置20と同一であるため、同一の符号を付して、詳細な説明を省略する。
【0054】
データ圧縮部52は、顧客プログラムAPを不可逆に圧縮し、シグネチャデータSD1を生成する。なお、シグネチャデータSD1は、元の顧客プログラムが同じ場合には同じ値が得られ、元の顧客プログラムが異なれば異なる値が得られるよう生成する必要がある。このため、例えば、所定のハッシュ関数を用いて、顧客プログラムAPからハッシュ値を演算し、得られたハッシュ値をシグネチャデータSD1とすればよい。シグネチャデータSD1は、顧客プログラムAP全体からハッシュ値を演算しても良いし、顧客プログラムAPに含まれる一部のデータからハッシュ値を演算して生成しても良い。
【0055】
暗号化装置60が生成したシグネチャデータSD1は、経路33を介して書込み環境72に送られる。なお、経路33は、通信網でも良く、宅配便等のオフライン経路であってもよい。また、経路33は、経路31又は32と同一の経路であっても構わない。
【0056】
MCU50は、データ圧縮部51及び比較部53を有する点が、発明の実施の形態1のMCU10と異なる。なお、MCU50のその他の構成は、MCU10と同一であるため、同一の符号を付して、詳細な説明を省略する。
【0057】
データ圧縮回路51は、データ圧縮部52と同様の手順で、復号化部11が復号化した顧客プログラムAPからシグネチャデータSD2を生成する。具体的には、例えば、データ圧縮部52の同一のハッシュ関数を用いて、不揮発性メモリ14に格納された顧客プログラムAPに対するハッシュ値を演算しして、シグネチャデータSD2とすればよい。
【0058】
比較部53は、入力端子54を介して入力されたシグネチャデータSD1と、データ圧縮部51が生成したシグネチャデータSD2を比較し、両者が一致するか否かの判定を行う。当該判定によって、暗号鍵CAと顧客プログラムAPの組み合わせの整合性を検証することができる。つまり、シグネチャデータの一致は、暗号鍵CAによって正しく復号を行えたこと、言い換えると、暗号化された顧客プログラムEAP2とこれを復号するための暗号鍵CAの組み合わせが正しいことを意味する。逆に、シグネチャデータの不一致は、暗号鍵CAによって正しく復号されていないこと、言い換えると、暗号化された顧客プログラムEAP2とこれを復号するための暗号鍵CAの組み合わせが正しくないことを意味する。
【0059】
発明の実施の形態1のMCU10では、暗号化された顧客プログラムEAP2と暗号鍵CAをMCU10に入力し、MCU10の内部で顧客プログラムAPを得るための復号処理を行う。ここで、暗号化された顧客プログラムEAP2と暗号鍵CAの組み合わせが誤った組み合わせでMCU10に入力されると、復号後に得られるデータは元の顧客プログラムAPと異なるデータになり、誤ったデータが不揮発性メモリ14に書き込まれてしまう。
【0060】
仮に暗号鍵CAの選択を誤っており、誤ったデータを書き込んだ場合でも、比較部13による判定では異常を検出することはできない。つまり、暗号化された顧客プログラムEAP2と暗号鍵CAの組み合わせの確かさを検証することはできない。また、書き込み環境72には、元の顧客プログラムAPは存在しない。このため、MCU10が置かれた書き込み環境72では、暗号化された顧客プログラムEAP2と暗号鍵CAの組み合わせの正しさを担保することが困難である。
【0061】
これに対して、本実施の形態のMCU50では、比較部53でのシグネチャデータの比較により、正しい暗号鍵CAを用いて復号処理が正常に行われているか否かを検証することができる。MCU50は、復号処理が正しく行われたことを比較部53によって検証でき、書き込み処理が正常に行われたことを比較部13によって検証できるため、顧客プログラムAPを不揮発性メモリ14に書き込む際の信頼性をさらに向上することができる。
【0062】
データ圧縮部51及び比較部53によるシグネチャデータの比較手順を図6のフローチャートを用いて説明する。ステップS301では、データ圧縮部51が、CPU12によって不揮発性メモリ14に書き込まれた顧客プログラムAPからシグネチャデータSD2を生成し、比較部53に出力する。
【0063】
ステップS302では、顧客環境71から送られてきたシグネチャデータSD1が入力端子54を介して比較部53に入力される。ステップS303では、比較部53において、シグネチャデータSD2をシグネチャデータSD1と比較する。
【0064】
ステップS303での比較の結果、シグネチャデータSD1及びSD2が一致する場合は、暗号化された顧客プログラムEAP2と暗号鍵CAの組み合わせが正しく、復号処理が正しく行われたものとして検証を終了する(ステップS304)。一方、シグネチャデータSD1及びSD2が一致しない場合は、暗号化された顧客プログラムEAP2と暗号鍵CAの組み合わせが誤っており、復号処理が正しく行われていないと判断して検証を終了する(ステップS304)。なお、復号処理が正しく行われていないと判断した場合には、顧客プログラムAPの不揮発性メモリ14への書き込みを停止し、書き込み済みのデータを消去することが望ましい。誤った書き込みを停止し、誤ったデータを破棄するためである。
【0065】
なお、MCU50も上述した図3の具体的構成によって実現できる。つまり、データ圧縮部51及び比較部53の処理を図2の書き込み実行プログラム421と同様のファームウェア・プログラムに記述し、これをCPU12で実行することにより、本実施の形態のMCU50として動作可能である。また、データ圧縮部51及び比較部53は、CPU12とは別の専用の処理回路として設けても良い。
【0066】
その他の実施の形態.
発明の実施の形態2のMCU50は、比較部53を備えており、MCU50の内部でシグネチャデータの比較を行うこととした。しかしながら、データ圧縮部51で生成したシグネチャデータSD2をMCU外部に出力し、MCUの外部で、シグネチャデータSD1とSD2の比較を行うこととしても良い。
【0067】
また、発明の実施の形態2のMCU50において、比較部13を省略し、比較部53でのシグネチャデータの比較によって、プログラム書き込みの正常性の検証をあわせて行うこととしても良い。
【0068】
また、発明の実施の形態2において、シグネチャデータSD1及びSD2を顧客プログラムAPと暗号鍵CAを合わせたデータから生成することとしても良い。
【0069】
発明の実施の形態1及び2の比較部13では、不揮発性メモリ14から読み出した顧客プログラムAPを暗号鍵CA及びCBで再び暗号化したものと、入力端子16から入力された暗号化された顧客プログラムEAP2の比較によって、書き込みの正常性を検証しても良い。また、不揮発性メモリ14から読み出した顧客プログラムAPを暗号鍵CA及びCBで暗号化してMCU10又は50の外部に出力し、MCUの外部で暗号化された顧客プログラムEAP2と比較して、書き込みの正常性を検証しても良い。
【0070】
上述した実施の形態1及び2のMCU10及び50は、暗号鍵CBを顧客プログラムAPと同じ不揮発性メモリ14に格納することとした。しかしながら、暗号鍵CBの格納場所は、MCU10及び50の外部からアクセスできない不揮発性の記憶領域であればよく、その格納場所は不揮発性メモリ14に限定されない。
【0071】
発明の実施の形態1及び2に示した暗号化装置20及び60は、汎用的なコンピュータ・システムによって構成することもできる。このとき、必ずしも、暗号鍵CBを暗号化装置20の外部から読み出せない状態で保持する必要はない。しかしながら、暗号化装置20及び60は、MCU10又は50に書込みためのプログラムを暗号化する専用装置として構成し、暗号鍵CBを暗号化装置20の外部から読み出せない状態で保持することが望ましい。暗号鍵CBの管理が容易となるためである。
【0072】
発明の実施の形態1及び2に示したプログラム書込み処理システム1及び2は、データの暗号化用の鍵と復号化用の鍵が共通である共通鍵暗号方式の暗号鍵CA及びCBを用いることとした。しかしながら、暗号化用の鍵と復号化用の鍵が異なっている公開鍵暗号方式などの非対称鍵暗号方式を用いても良い。具体的には以下のように構成すれば良い。まず、非対称鍵暗号方式の鍵ペアを2組に用意する。ここで、一方の鍵ペアは暗号鍵CA1及び暗号鍵CA2、他方の鍵ペアは暗号鍵CB1及びCB2とし、暗号鍵CA1で暗号化されたデータは暗号鍵CA2でのみ復号可能であり、暗号鍵CB1で暗号化されたデータは暗号鍵CB2でのみ復号可能であるとする。このような鍵ペアを用意し、暗号化装置20及び60における顧客プログラムAPの暗号化に用いる2つの暗号鍵CA及びCB2を、それぞれ暗号鍵CA1及びCB1に置き換える。他方、MCU10及び50における暗号化された顧客プログラムEAPの復号に用いる2つの暗号鍵CA及びCBを、それぞれ暗号鍵CA2及びCB2に置き換える。これにより、非対称鍵暗号方式の暗号鍵を用いることができる。
【0073】
本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【0074】
【図1】本発明にかかるプログラム書込み処理システムの構成図である。
【図2】本発明のマイクロコントローラユニットに対する暗号鍵の格納処理を示すフローチャートである。
【図3】本発明にかかるマイクロコントローラユニットの構成図である。
【図4】本発明にかかるマイクロコントローラユニットの処理を示すフローチャートである。
【図5】本発明にかかるプログラム書込み処理システムの構成図である。
【図6】本発明にかかるシグネチャデータの比較処理を示すフローチャートである。
【図7】従来のプログラム書込み処理を説明する図である。
【符号の説明】
【0075】
1、2 プログラム書込み処理システム
10、50 マイクロコントローラユニット(MCU)
11 復号化部
12 中央処理装置(CPU)
13 比較部
14 不揮発性メモリ
15、16 入力端子
20、60 暗号化装置
21 暗号化部
22 不揮発性メモリ
23、24 入力端子
31、32、33 経路
42 ROM
43 I/Oポート
44 RAM
45 暗号回路
421 書き込み実行プログラム
51 データ圧縮部
52 データ圧縮部
53 比較部
54 入力端子
71 顧客環境
72 書込み環境
CA、CB 暗号鍵
AP 顧客プログラム
EAP2 暗号化された顧客プログラム
SD1、SD2 シグネチャデータ

【特許請求の範囲】
【請求項1】
不揮発性の第1の記憶部に格納されたプログラムを読み出して実行する中央処理装置を備えるマイクロコンピュータであって、
第1の鍵データを入力する第1の入力端子と、
前記第1の鍵データと異なる第2の鍵データが予め格納された第2の記憶部と、
暗号化された前記プログラムを入力する第2の入力端子と、
暗号化された前記プログラムを、前記第1の鍵データ及び前記第2の鍵データを用いて復号する復号化部とをさらに備え、
前記中央処理装置は、前記復号化部によって復号された前記プログラムを前記第1の記憶部に格納する処理を行うマイクロコンピュータ。
【請求項2】
前記第1の鍵データ及び前記第2の鍵データはそれぞれ、データの暗号化及び復号化に共通して使用される暗号鍵であり、
前記第2の入力端子に入力されるプログラムは、前記第1の鍵データ及び前記第2の鍵データの両方を用いて暗号化されている請求項1に記載のマイクロコンピュータ。
【請求項3】
前記第2の記憶部は不揮発性である請求項1に記載のマイクロコンピュータ。
【請求項4】
前記第2の記憶部は、前記第2の鍵データを前記マイクロコンピュータの外部への読み出しが不可能な状態で格納する請求項1に記載のマイクロコンピュータ。
【請求項5】
前記復号化部によって復号された前記プログラムを圧縮してシグネチャデータを生成するデータ圧縮部をさらに備える請求項1に記載のマイクロコンピュータ。
【請求項6】
前記データ圧縮部によって生成されたシグネチャデータと、外部から入力されたシグネチャデータとの一致判定を行うシグネチャ比較部をさらに備える請求項5に記載のマイクロコンピュータ。
【請求項7】
前記シグネチャデータは、前記プログラムから生成されたハッシュ値である請求項5又は6に記載のマイクロコンピュータ。
【請求項8】
前記第1の鍵データは前記プログラムに固有の暗号鍵である請求項1に記載のマイクロコンピュータ。
【請求項9】
前記復号化部は、前記第1の鍵データ及び前記第2の鍵データを用いてトリプルDESによる復号化を行う請求項1に記載のマイクロコンピュータ。
【請求項10】
マイクロコンピュータが内蔵する不揮発性の第1の記憶部に対するプログラムの書込み方法であって、
第1の鍵データを、前記マイクロコンピュータに入力し、
暗号化されたプログラムを、前記マイクロコンピュータに入力し、
前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第2の記憶部に予め格納され、前記第1の鍵データとは異なる第2の鍵データとを用いて、暗号化された前記プログラムを復号化し、
復号した前記プログラムを前記第1の記憶部に格納する、プログラムの書込み方法。
【請求項11】
前記第1の鍵データ及び前記第2の鍵データはそれぞれ、データの暗号化及び復号化に共通して使用される暗号鍵であり、
前記第2の入力端子に入力されるプログラムは、前記第1の鍵データ及び前記第2の鍵データの両方を用いて暗号化されている請求項10に記載のプログラムの書込み方法。
【請求項12】
復号された前記プログラムを圧縮して第1のシグネチャデータを生成し、
前記暗号化されたプログラムを暗号化する前のデータを前記第1のシグネチャデータと同一の規則で圧縮することにより予め生成された第2のシグネチャデータと、前記第1のシグネチャデータとを比較する、請求項10に記載のプログラムの書込み方法。
【請求項13】
前記第1及び第2のシグネチャデータは、前記プログラムから生成されたハッシュ値である請求項12に記載のプログラムの書込み方法。
【請求項14】
前記第2の記憶部に対する前記マイクロコンピュータの外部からのアクセスが禁止されており、
前記書込み方法は、前記マイクロコンピュータにより実行される請求項10に記載のプログラムの書込み方法。
【請求項15】
第1の鍵データを入力する第1の入力端子と、
前記第1の鍵データと異なる第2の鍵データが予め格納された第1の記憶部と、
プログラムを入力する第2の入力端子と、
前記プログラムを、前記第1の鍵データ及び前記第2の鍵データを用いて暗号化する暗号化部とを備える暗号化装置。
【請求項16】
前記プログラムを圧縮してシグネチャデータを生成するデータ圧縮部をさらに備える請求項15に記載の暗号化装置。
【請求項17】
マイクロコンピュータが内蔵する不揮発性の第1の記憶部にプログラムの書き込みを行う書込み処理システムであって、
前記プログラムを暗号化する暗号化装置と、前記暗号化装置によって暗号化されたプログラムを復号するマイクロコンピュータを備え、
前記暗号化装置は、
第1の鍵データを入力する第1の入力端子と、
前記第1の鍵データと異なる第2の鍵データが予め格納された第2の記憶部と
プログラムを入力する第2の入力端子と、
前記第1の鍵データ及び前記第2の鍵データを用いて、前記プログラムを暗号化する暗号化部とを備え、
前記マイクロコンピュータは、
第3の鍵データを入力する第3の入力端子と、
前記第3の鍵データと異なる第4の鍵データが予め格納され、前記マイクロコンピュータ外部からの前記第4の鍵データの読み出しが禁止された第3の記憶部と、
前記暗号化部によって暗号化された前記プログラムを入力する第4の入力端子と、
暗号化された前記プログラムを、前記第3の鍵データ及び前記第4の鍵データを用いて復号する復号化部と、
前記復号化部によって復号された前記プログラムを前記第1の記憶部に格納する処理を実行する中央処理装置とを備える、書込み処理システム。
【請求項18】
前記第1の鍵データと前記第3の鍵データは同一であり、前記第2の鍵データと前記第4の復号鍵データは同一である請求項17に記載の書込み処理システム。
【請求項19】
マイクロコンピュータが内蔵する不揮発性の第1の記憶部に対するプログラム書込みの処理の制御を、前記マイクロコンピュータが有する中央処理装置に実行させるためのコンピュータプログラムであって、前記書込み処理は、
第1の鍵データを、前記マイクロコンピュータに入力する処理と、
暗号化されたプログラムを、前記マイクロコンピュータに入力する処理と、
前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第2の記憶部に予め格納され、前記第1の鍵データとは異なる第2の鍵データとを用いて、暗号化された前記プログラムを復号化する処理と、
復号した前記プログラムを前記第1の記憶部に格納する処理とを含むコンピュータプログラム。
【請求項20】
前記第1の鍵データ及び前記第2の鍵データはそれぞれ、データの暗号化及び復号化に共通して使用される暗号鍵であり、
前記第2の入力端子に入力されるプログラムは、前記第1の鍵データ及び前記第2の鍵データの両方を用いて暗号化されている請求項19に記載のコンピュータプログラム。
【請求項21】
前記書込み処理は、さらに、
復号された前記プログラムを圧縮して第1のシグネチャデータを生成し、
前記暗号化されたプログラムを暗号化する前のデータを前記第1のシグネチャデータと同一の規則で圧縮することにより予め生成された第2のシグネチャデータと、前記第1のシグネチャデータとを比較する処理を含む請求項19に記載のコンピュータプログラム。
【請求項22】
前記第1及び第2のシグネチャデータは、前記プログラムから生成されたハッシュ値である請求項21に記載のコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−179317(P2007−179317A)
【公開日】平成19年7月12日(2007.7.12)
【国際特許分類】
【出願番号】特願2005−377164(P2005−377164)
【出願日】平成17年12月28日(2005.12.28)
【出願人】(302062931)NECエレクトロニクス株式会社 (8,021)
【Fターム(参考)】