(57)【要約】【課題】マイクロコンピュータに内蔵された不揮発性メモリにプログラムの書き込みを行う際に、プログラム漏洩の危険性を低減する。【解決手段】ＭＣＵ１は、ＣＰＵ１２、暗号鍵ＣＡを入力する入力端子１５、暗号化されたプログラムＥＡＰ２を入力する入力端子１６を有する。不揮発性メモリ１４には、暗号鍵ＣＢが予め格納されている。復号化部１３は、暗号化されたプログラムＥＡＰ２を、入力端子１５から入力した暗号鍵ＣＡ及び不揮発性メモリ１４に予め格納された暗号鍵ＣＢを用いて復号する。ＣＰＵ１２は、復号化部１３によって復号されたプログラムＡＰを不揮発性メモリ１４に格納する。【選択図】図１
2007179317.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の第１の記憶部に格納されたプログラムを読み出して実行する中央処理装置を備えるマイクロコンピュータであって、
第１の鍵データを入力する第１の入力端子と、
前記第１の鍵データと異なる第２の鍵データが予め格納された第２の記憶部と、
暗号化された前記プログラムを入力する第２の入力端子と、
暗号化された前記プログラムを、前記第１の鍵データ及び前記第２の鍵データを用いて復号する復号化部とをさらに備え、
前記中央処理装置は、前記復号化部によって復号された前記プログラムを前記第１の記憶部に格納する処理を行うマイクロコンピュータ。
【請求項２】
前記第１の鍵データ及び前記第２の鍵データはそれぞれ、データの暗号化及び復号化に共通して使用される暗号鍵であり、
前記第２の入力端子に入力されるプログラムは、前記第１の鍵データ及び前記第２の鍵データの両方を用いて暗号化されている請求項１に記載のマイクロコンピュータ。
【請求項３】
前記第２の記憶部は不揮発性である請求項１に記載のマイクロコンピュータ。
【請求項４】
前記第２の記憶部は、前記第２の鍵データを前記マイクロコンピュータの外部への読み出しが不可能な状態で格納する請求項１に記載のマイクロコンピュータ。
【請求項５】
前記復号化部によって復号された前記プログラムを圧縮してシグネチャデータを生成するデータ圧縮部をさらに備える請求項１に記載のマイクロコンピュータ。
【請求項６】
前記データ圧縮部によって生成されたシグネチャデータと、外部から入力されたシグネチャデータとの一致判定を行うシグネチャ比較部をさらに備える請求項５に記載のマイクロコンピュータ。
【請求項７】
前記シグネチャデータは、前記プログラムから生成されたハッシュ値である請求項５又は６に記載のマイクロコンピュータ。
【請求項８】
前記第１の鍵データは前記プログラムに固有の暗号鍵である請求項１に記載のマイクロコンピュータ。
【請求項９】
前記復号化部は、前記第１の鍵データ及び前記第２の鍵データを用いてトリプルＤＥＳによる復号化を行う請求項１に記載のマイクロコンピュータ。
【請求項１０】
マイクロコンピュータが内蔵する不揮発性の第１の記憶部に対するプログラムの書込み方法であって、
第１の鍵データを、前記マイクロコンピュータに入力し、
暗号化されたプログラムを、前記マイクロコンピュータに入力し、
前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第２の記憶部に予め格納され、前記第１の鍵データとは異なる第２の鍵データとを用いて、暗号化された前記プログラムを復号化し、
復号した前記プログラムを前記第１の記憶部に格納する、プログラムの書込み方法。
【請求項１１】
前記第１の鍵データ及び前記第２の鍵データはそれぞれ、データの暗号化及び復号化に共通して使用される暗号鍵であり、
前記第２の入力端子に入力されるプログラムは、前記第１の鍵データ及び前記第２の鍵データの両方を用いて暗号化されている請求項１０に記載のプログラムの書込み方法。
【請求項１２】
復号された前記プログラムを圧縮して第１のシグネチャデータを生成し、
前記暗号化されたプログラムを暗号化する前のデータを前記第１のシグネチャデータと同一の規則で圧縮することにより予め生成された第２のシグネチャデータと、前記第１のシグネチャデータとを比較する、請求項１０に記載のプログラムの書込み方法。
【請求項１３】
前記第１及び第２のシグネチャデータは、前記プログラムから生成されたハッシュ値である請求項１２に記載のプログラムの書込み方法。
【請求項１４】
前記第２の記憶部に対する前記マイクロコンピュータの外部からのアクセスが禁止されており、
前記書込み方法は、前記マイクロコンピュータにより実行される請求項１０に記載のプログラムの書込み方法。
【請求項１５】
第１の鍵データを入力する第１の入力端子と、
前記第１の鍵データと異なる第２の鍵データが予め格納された第１の記憶部と、
プログラムを入力する第２の入力端子と、
前記プログラムを、前記第１の鍵データ及び前記第２の鍵データを用いて暗号化する暗号化部とを備える暗号化装置。
【請求項１６】
前記プログラムを圧縮してシグネチャデータを生成するデータ圧縮部をさらに備える請求項１５に記載の暗号化装置。
【請求項１７】
マイクロコンピュータが内蔵する不揮発性の第１の記憶部にプログラムの書き込みを行う書込み処理システムであって、
前記プログラムを暗号化する暗号化装置と、前記暗号化装置によって暗号化されたプログラムを復号するマイクロコンピュータを備え、
前記暗号化装置は、
第１の鍵データを入力する第１の入力端子と、
前記第１の鍵データと異なる第２の鍵データが予め格納された第２の記憶部と
プログラムを入力する第２の入力端子と、
前記第１の鍵データ及び前記第２の鍵データを用いて、前記プログラムを暗号化する暗号化部とを備え、
前記マイクロコンピュータは、
第３の鍵データを入力する第３の入力端子と、
前記第３の鍵データと異なる第４の鍵データが予め格納され、前記マイクロコンピュータ外部からの前記第４の鍵データの読み出しが禁止された第３の記憶部と、
前記暗号化部によって暗号化された前記プログラムを入力する第４の入力端子と、
暗号化された前記プログラムを、前記第３の鍵データ及び前記第４の鍵データを用いて復号する復号化部と、
前記復号化部によって復号された前記プログラムを前記第１の記憶部に格納する処理を実行する中央処理装置とを備える、書込み処理システム。
【請求項１８】
前記第１の鍵データと前記第３の鍵データは同一であり、前記第２の鍵データと前記第４の復号鍵データは同一である請求項１７に記載の書込み処理システム。
【請求項１９】
マイクロコンピュータが内蔵する不揮発性の第１の記憶部に対するプログラム書込みの処理の制御を、前記マイクロコンピュータが有する中央処理装置に実行させるためのコンピュータプログラムであって、前記書込み処理は、
第１の鍵データを、前記マイクロコンピュータに入力する処理と、
暗号化されたプログラムを、前記マイクロコンピュータに入力する処理と、
前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第２の記憶部に予め格納され、前記第１の鍵データとは異なる第２の鍵データとを用いて、暗号化された前記プログラムを復号化する処理と、
復号した前記プログラムを前記第１の記憶部に格納する処理とを含むコンピュータプログラム。
【請求項２０】
前記第１の鍵データ及び前記第２の鍵データはそれぞれ、データの暗号化及び復号化に共通して使用される暗号鍵であり、
前記第２の入力端子に入力されるプログラムは、前記第１の鍵データ及び前記第２の鍵データの両方を用いて暗号化されている請求項１９に記載のコンピュータプログラム。
【請求項２１】
前記書込み処理は、さらに、
復号された前記プログラムを圧縮して第１のシグネチャデータを生成し、
前記暗号化されたプログラムを暗号化する前のデータを前記第１のシグネチャデータと同一の規則で圧縮することにより予め生成された第２のシグネチャデータと、前記第１のシグネチャデータとを比較する処理を含む請求項１９に記載のコンピュータプログラム。
【請求項２２】
前記第１及び第２のシグネチャデータは、前記プログラムから生成されたハッシュ値である請求項２１に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、チップ製造後にプログラムの書き込みを行うことが可能な不揮発性メモリを内蔵したマイクロコンピュータ、及びマイクロコンピュータに内蔵された不揮発性メモリに対するプログラムの書込み方法に関する。
【背景技術】
【０００２】
ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等の周辺装置を内蔵し、１チップ化されたマイクロコンピュータは、マイクロコントローラユニット（ＭＣＵ：Micro Controller Unit）と呼ばれている。ＭＣＵに内蔵されたＲＯＭ（Read Only Memory）領域には、電子機器等の制御対象装置に応じたプログラム（以下、顧客プログラムと呼ぶ）が書き込まれ、ＭＣＵは主にこれらの制御対象装置に組み込まれて使用される。
【０００３】
従来は、ＭＣＵの製造段階において、チップ製造に使うマスクによって顧客プログラムの書き込みを行う、いわゆるマスクＲＯＭ製品が多く使われてきた。しかし近年は、ＭＣＵパッケージの製造後に顧客プログラムの書き込みが可能な不揮発性メモリを内蔵したＭＣＵが多く利用されるようになっている。
【０００４】
このような不揮発性メモリ内蔵ＭＣＵでは、製品としてパッケージ化が完了した後に、ＬＳＩテスタやフラッシュメモリライタ等の書込み装置を使用し、内蔵された不揮発性メモリに対して顧客プログラムの書き込みを行う。これにより、プログラム完成からプログラムのＭＵＣ搭載までの期間が大幅に短縮できる。さらに、不揮発性メモリとして、データの書き換えが可能なフラッシュメモリを用いている場合は、一度書き込んだ顧客プログラムの書き換えることができるため、製品出荷後のバグ修正などに柔軟に対応することができる。
【０００５】
不揮発性メモリ内蔵ＭＣＵによって、ＭＣＵへの顧客プログラムの書込みをどこでも容易に行うことができる。その反面、顧客プログラムの書き込みの際の機密管理の重要性が高まっている。
【０００６】
例えば、ＭＣＵメーカが顧客から顧客プログラムを受け取り、この顧客プログラムをＭＣＵに内蔵された不揮発性メモリに書き込んで出荷する場合には、顧客から預かった顧客プログラムが第三者に漏洩することを防止する必要がある。このような場合に従来行われているセキュリティ対策の例を、図７を用いて説明する。
【０００７】
図７おいて、符号７１は、顧客が管理する環境（以下、顧客環境と呼ぶ）を示しており、符号７２は、顧客プログラムの書き込みを実行するＭＣＵメーカ等の環境（以下、書込み環境と呼ぶ）を示している。まず、顧客は顧客環境７１において、暗号化装置９１を用いて顧客プログラムの暗号化を行う。暗号化装置９１は、入力された暗号鍵ＣＡを用いて顧客プログラムＡＰを暗号化し、暗号化された顧客プログラムＥＡＰ１を出力する。なお、暗号鍵ＣＡは、データの暗号化及び復号化に共通して使用される共通鍵暗号方式の暗号鍵とする。
【０００８】
暗号鍵ＣＡは、経路３１を経由して顧客環境７１から書込み環境７２に転送される。また、暗号化された顧客プログラムＥＡＰ１は経路３２を経由して書込み環境７２に転送される。経路３１及び３２は、通信網のほか、宅配便等のいわゆるオフライン経路であってもよく、要するに所定の信頼性が担保されていればよい。例えば、経路３１がインターネットであれば、顧客とＭＣＵメーカは、予め取り決めた暗号方式に従って暗号鍵ＣＡの鍵交換を行うこととすればよい。
【０００９】
書込み環境７２に転送された暗号化された顧客プログラムＥＡＰ１は、復号化装置９２によって復号される。復号化装置９２は、暗号鍵ＣＡと暗号化された顧客プログラムＥＡＰ１とを入力して、復号後の顧客プログラムＡＰを出力する。復号された顧客プログラムＡＰは、ＬＳＩテスタやフラッシュメモリライタ等の書込み装置（不図示）によって不揮発性メモリを搭載したＭＣＵ８０に入力され、中央処理装置（ＣＰＵ：Central Processing Unit）８１によって不揮発性メモリ８２に書き込まれる。
【００１０】
より具体的に述べると、顧客プログラムＡＰの書きこみ処理は、ＣＰＵ８１が、不揮発性メモリ８２への顧客プログラム書込み手順が記述された書込み実行プログラムを、ＭＣＵ８１が備えるファームウェアＲＯＭ（不図示）から読み出して実行することにより実現される。
【００１１】
図７に示した構成で顧客プログラムの書き込みを行うことにより、顧客プログラムの搬送時に顧客プログラムが第三者に漏洩することは防止できる。しかしながら、書込み環境７２において、暗号化されていない状態の顧客プログラムＡＰが存在することになるため、書込み環境７２から顧客プログラムが第三者に漏洩する可能性があるという問題がある。
【００１２】
なお、特許文献１には、暗号化されたアプリケーションプログラムとこれを復号するための暗号鍵を入力し、外部から入力された暗号鍵によってアプリケーションプログラムを復号するマイクロコンピュータが開示されている。また、アプリケーションプログラムを復号するための暗号鍵は、マイクロコンピュータに格納された公開鍵方式の秘密鍵に対応する公開鍵によって暗号化された状態でマイクロコンピュータに入力される。
【特許文献１】特開平１１−２８２６６７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述したように、マイクロコンピュータに内蔵された不揮発性メモリにプログラムの書き込みを行う際に、プログラム漏洩の危険性が高いという課題がある。
【課題を解決するための手段】
【００１４】
本発明にかかるマイクロコンピュータは、不揮発性の第１の記憶部に格納されたプログラムを読み出して実行する中央処理装置を備える。さらに、当該マイクロコンピュータは、第１の鍵データを入力する第１の入力端子と、前記第１の鍵データと異なる第２の鍵データが予め格納された第２の記憶部と、暗号化された前記プログラムを入力する第２の入力端子と、暗号化された前記プログラムを、前記第１の鍵データ及び前記第２の鍵データを用いて復号する復号化部とをさらに備える。さらにまた、前記中央処理装置は、前記復号化部によって復号された前記プログラムを前記第１の記憶部に格納する処理を行うものである。
【００１５】
このような構成により、マイクロコンピュータに内蔵された不揮発性の記憶部に格納される顧客プログラムは、第１の鍵及び第２の鍵の２つの暗号鍵によって暗号化された状態でマイクロコンピュータに入力される。これにより、暗号化されていない状態のプログラムを書き込み環境に置く必要がなくなるため、顧客プログラムが第三者に漏洩する危険性を低減できる。
【００１６】
また、顧客プログラムの復号に必要な暗号鍵の１つである第２の鍵が、予めマイクロコンピュータに格納されている。これにより、暗号化されたプログラムと合わせてマイクロコンピュータに入力される暗号鍵（第１の鍵）のみでは顧客プログラムを復号することができない。このため、暗号鍵の漏洩によって顧客プログラムが第三者に漏洩してしまう危険性をさらに低減することができる。
【００１７】
一方、本発明にかかるプログラムの書込み方法は、マイクロコンピュータが内蔵する不揮発性の第１の記憶部に対するプログラムの書込み方法である。具他的には、まず、第１の鍵データを、前記マイクロコンピュータに入力する。次に、暗号化されたプログラムを、前記マイクロコンピュータに入力する。さらに、前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第２の記憶部に予め格納され、前記第１の鍵データとは異なる第２の鍵データを用いて、暗号化された前記プログラムを復号化する。最後に、復号した前記プログラムを前記第１の記憶部に格納するものである。
【００１８】
さらに、本発明にかかるコンピュータプログラムは、マイクロコンピュータが内蔵する不揮発性の第１の記憶部に対するプログラム書込み処理を、前記マイクロコンピュータが有するＣＰＵに実行させるためのコンピュータプログラムである。ここで、前記書込み処理は、第１の鍵データを前記マイクロコンピュータに入力する処理と、暗号化されたプログラムを前記マイクロコンピュータに入力する処理と、前記マイクロコンピュータに入力された前記第1の鍵データと、前記マイクロコンピュータが有する第２の記憶部に予め格納され、前記第１の鍵データとは異なる第２の鍵データを用いて、暗号化された前記プログラムを復号化する処理と、復号した前記プログラムを前記第１の記憶部に格納する処理とを含む。
【発明の効果】
【００１９】
本発明により、マイクロコンピュータに内蔵された不揮発性メモリにプログラムの書き込みを行う際に、プログラム漏洩の危険性を低減することができる。
【発明を実施するための最良の形態】
【００２０】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２１】
発明の実施の形態１．
本実施の形態にかかるプログラム書込み処理システム１の構成を図１に示す。プログラム書込み処理システム１は、顧客環境７１に置かれた暗号化装置２０と、書き込み環境に置かれたＭＣＵ１０とを備えている。
【００２２】
暗号化装置２０は、暗号鍵ＣＡ及び暗号鍵ＣＢの２つの鍵を用いて入力された顧客プログラムＡＰを暗号化する暗号化部２１を有する。また、暗号化装置２０は、暗号鍵ＣＢを格納する不揮発性メモリ２２を有する。ここで、暗号鍵ＣＡ及び暗号鍵ＣＢはともに、データの暗号化及び復号化に共通して使用される共通鍵暗号方式の暗号鍵である。
【００２３】
暗号化部２１は、入力端子２３を介して外部から入力された暗号鍵ＣＡ及び不揮発性メモリ２２から読み出した暗号鍵ＣＢを用いて、入力端子２４を介して外部から入力した顧客プログラムＡＰの暗号化を行い、暗号化された顧客プログラムＥＡＰ２を出力する。２つの共通鍵暗号方式の暗号鍵ＣＡ及びＣＢを用いる暗号化アルゴリズムには、様々なアルゴリズムが適用可能である。例えば、トリプルＤＥＳ（Data Encryption Standard）アルゴリズムを用いる場合は、暗号鍵ＣＡによる１ｓｔ ＤＥＳ暗号化、暗号鍵ＣＢによる２ｎｄ ＤＥＳ復号化、及び暗号鍵ＣＡによる３ｒｄ ＤＥＳ暗号化を行うこととすればよい。また、ＤＥＳに限らずＡＥＳ（Advanced Encryption Standard）等の他のブロック暗号化アルゴリズムや、ＲＣ４等のストリーム暗号化アルゴリズムを適用しても良い。
【００２４】
不揮発性メモリ２２は、暗号鍵ＣＢを暗号化装置２０の外部から読み出せない状態で保持する。具体的には、暗号化装置２０の使用に先立って暗号鍵ＣＢを不揮発性メモリ２２に書き込んだ後は、暗号化装置２０の外部から不揮発性メモリ２２に対するアクセスを許可しないこととすればよい。
【００２５】
暗号鍵ＣＡ及び暗号化装置２０によって暗号化された顧客プログラムＥＡＰ２は、経路３１及び経路３２を経由して、顧客環境７１から書込み環境７２に転送される。上述したように、経路３１及び３２は、通信網のほか、宅配便等のいわゆるオフライン経路であってもよく、要するに所定の信頼性が担保されていればよい。
【００２６】
ＭＣＵ１０は、入力端子１５を介して暗号鍵ＣＡを入力し、入力端子１６を介して暗号化された顧客プログラムＥＡＰ２を入力する。入力端子１５及び１６は、物理的に別個の端子であっても良いし、共通の端子であっても良い。
【００２７】
ＭＣＵ１０に入力された暗号鍵ＣＡ及び暗号化された顧客プログラムＥＡＰ２は、復号化部１１に入力される。復号化部１１は、暗号鍵ＣＡ及び不揮発性メモリ１４から読み出した暗号鍵ＣＢを用いて、暗号化された顧客プログラムＥＡＰ２を復号する。復号化部１１に適用する復号アルゴリズムは、２つの共通鍵暗号方式の暗号鍵ＣＡ及びＣＢを用いる様々なアルゴリズムが適用可能である。例えば、上述した暗号化部２１と同様に、トリプルＤＥＳ（Data Encryption Standard）、ＡＥＳ、ＲＣ４等の暗号化アルゴリズムを適用することができる。
【００２８】
中央処理装置（ＣＰＵ）１２は、不揮発性メモリ１４に格納された顧客プログラム１４を読み出して実行する。さらに、中央処理装置（ＣＰＵ）１２は、復号化部１１によって復号された顧客プログラムＡＰを不揮発性メモリ１４に書き込む処理を制御する。具体的には、ＣＰＵ１２は、復号化部１１が出力する復号されたデータを蓄積するための一次保存領域を備えており、ブロック暗号化アルゴリズムであれば暗号化ブロック単位、ストリーム暗号化アルゴリズムであれば１ビット単位で復号化部１１から出力されるデータを一時的に保存する。さらに、ＣＰＵ１２は、一時保存したデータを不揮発性メモリ１４に対する書込み単位に整列し、不揮発性メモリ１４への書き込みを行う。
【００２９】
比較部１３は、ＣＰＵ１２によって不揮発性メモリ１４に書き込まれたデータを読み出し、ＣＰＵ１２に一時保存されているデータと比較する。比較部１３は、データ比較結果が一致である場合は書込み正常と判定し、不一致である場合は書き込み不良と判定する。これにより、ＣＰＵ１２による顧客プログラムＡＰの不揮発性メモリ１４への書き込みが正常に行われたか否かを検証することができる。
【００３０】
なお、比較部１３でのデータ比較結果が不一致であり、書込み不良と判定した場合は、判定結果をＣＰＵ１２に通知することとし、通知を受けたＣＰＵ１２は、書込み不良となった不揮発性メモリ１４の領域のデータを消去して、再度書き込みを行うことが望ましい。
【００３１】
不揮発性メモリ１４には、予め暗号鍵ＣＢが格納されている。ここで、暗号鍵ＣＢは、ＭＣＵ１０の外部に読み出すことが不可能な状態で保持されている。具体的には、例えば、ＭＣＵ１０の使用に先立って暗号鍵ＣＢを不揮発性メモリ１４に書き込んだ後は、復号化部１１以外からの不揮発性メモリ２２の暗号鍵ＣＢが格納された領域に対するアクセスを許可しないこととすればよい。
【００３２】
ここで、暗号鍵ＣＢの書込み処理手順を図２のフローチャートを用いて説明する。ステップＳ１０１では、不揮発性メモリ１４の特定領域に暗号鍵ＣＢの書き込みを行う。ステップＳ１０２では、不揮発性メモリ１４に書き込んだ暗号鍵ＣＢを読み出して、元の暗号鍵ＣＢとの間でデータ比較を行うことにより、書き込み正しく行われたか否かを検証する。暗号鍵ＣＢの書き込みが正しく行われていた場合は、暗号鍵ＣＢが書き込まれた不揮発性メモリ１４の領域をＭＣＵ１０の外部からの読み出しを不可能に設定する（ステップＳ１０３及びＳ１０４）。
【００３３】
一方、暗号鍵ＣＢの書き込みが正しく行われていないと判定した場合は、暗号鍵ＣＢが書き込まれた不揮発性メモリ１４の領域のデータを消去する（ステップＳ１０３及びＳ１０５）。なお、ステップＳ１０５においてデータ消去を行った後は、再度ステップＳ１０１以降の処理を実行し、暗号鍵ＣＢの不揮発性メモリ１４への書き込みを完了することとすれば良い。
【００３４】
なお、上述した顧客プログラムＡＰを不揮発性メモリ１４に書き込む処理だけでなく、復号化部１１及び比較部１３が行う処理も、ＣＰＵ１２によってファームウェア・プログラムを実行することにより、具体的に実現可能である。図３にＭＣＵ１０のより具体的な構成を示す。ＭＣＵ１０は、ＣＰＵ１２、ＲＯＭ４２、ＲＡＭ４４、不揮発性メモリ１４等が１つのＩＣパッケージに集積され、１チップ化されたマイクロコンピュータである。
【００３５】
ＣＰＵ１２は、ＲＯＭ４２に格納された書込み実行プログラム４２１や、不揮発性メモリ１４に格納された顧客プログラムＡＰを読み込んで命令を実行する。ＲＯＭ４２は、書込み実行プログラム４２１等のファームウェア・プログラムを格納するメモリである。
【００３６】
Ｉ／Ｏポート４３は、ＭＣＵ１０の入出力端子であり、上述した入力端子１５及び１６がこれに相当する。
【００３７】
ＲＡＭ４４は揮発性の記憶領域であり、ＣＰＵ１２の作業領域として使用される。ＲＡＭ４４は、例えば、Ｉ／Ｏポート４３を介して入力された暗号鍵ＣＡ及び暗号化された顧客プログラムＥＡＰ２の保存領域、復号した顧客プログラムＡＰの一時保存領域等として使用される。
【００３８】
暗号回路４５は、ＣＰＵ１２の制御にしたがって、不揮発性メモリ１４から暗号鍵ＣＢを読み込み、ＲＡＭ４４から暗号鍵ＣＡ及び暗号化された顧客プログラムＥＡＰ２を読み込んで、ＥＡＰ２の復号を行う。つまり、暗号回路４５は、上述した復号化部１１による復号処理を担う。なお、復号化部１１による復号処理は、復号処理手順を記述した復号処理プログラムをＲＯＭ４２に格納しておき、当該プログラムをＣＰＵ１２で実行することによっても実現可能である。このとき、復号処理プログラムは、書込み実行プログラム４２１とは別のプログラムモジュールとし、書込み実行プログラム４２１から復号処理プログラムを読み出すこととすればよい。また、復号処理プログラムは、書込み実行プログラム４２１と一体の１つのプログラムとして構成してもよい。
【００３９】
書込み実行プログラム４２１は、上述した復号化部１１、ＣＰＵ１２及び比較部１３の機能を実行するプログラムである。ＣＰＵ１２が書込み実行プログラム４２１を実行し、ＲＡＭ４４、Ｉ／Ｏポート４３、暗号回路４５、不揮発性メモリ１４等と協調して動作することにより、上述した復号化部１１、ＣＰＵ１２及び比較部１３の機能が実現される。
【００４０】
書込み実行プログラム４２１に基づくＭＣＵ１０の動作フローを図４に示す。ステップＳ２０１では、暗号鍵ＣＡをＩ／Ｏポート４３を介して入力し、ＲＡＭ４４に格納する。ステップＳ２０２では、暗号化された顧客プログラムＥＡＰ２を／Ｏポート４３を介して入力し、ＲＡＭ４４に格納する。
【００４１】
ステップＳ２０３では、ステップＳ２０１でＲＡＭ４４に格納された暗号鍵ＣＡと、予め不揮発性メモリ１４に格納されている暗号鍵ＣＢとを読み出す。さらに、これら２つの暗号鍵を用いて、プログラムＥＡＰ２を復号する。ここで、プログラムＥＡＰ２の復号処理は、ＲＡＭ４４に格納されたプログラムＥＡＰ２を暗号処理単位で読み出して実行する。
【００４２】
ステップＳ２０４では、暗号回路４５で復号したデータをＲＡＭ４４に一時的に保存する。ステップＳ２０５では、ＲＡＭ４４に一時保存された復号後のデータを、不揮発性メモリ１４の書込み単位で読み出し、不揮発性メモリ１４に書き込みを行う。
【００４３】
ステップＳ２０６では、不揮発性メモリ１４に書き込んだ顧客プログラムＡＰの正常性を検証する。具体的には、不揮発性メモリ１４に書き込んだデータを読み出して、ステップＳ２０４でＲＡＭ４４に一時保存したデータと比較することにより、正常に書き込みが行われたか否かを検証する。正常に書き込まれていた場合はステップＳ２０３に戻り、次のデータの復号、書込み、検証を行う（ステップＳ２０７）。
【００４４】
暗号された顧客プログラムＥＡＰ２の全データの復号、書込み、検証が終了した場合は、当該書込み処理フローを終了する（ステップＳ２０８）。一方、ステップＳ２０６の検証において、不揮発性メモリ１４に対する書込み不良を判定した場合には、書込み不良となった領域のデータを消去する（ステップＳ２０９）。なお、書込み不良となった領域を消去した後は、消去したデータの書き込みを再度行うことが望ましい。
【００４５】
なお、上述したステップＳ２０１乃至Ｓ２０３の処理は、復号化部１１に対応する。また、ステップＳ２０６、Ｓ２０７及びＳ２０９の処理は、比較部１３の処理に対応する。
【００４６】
また、書込み実行プログラム４２１の格納場所は、ＲＯＭ４２に限らず、不揮発性メモリ１４を含む様々な種類の記憶媒体に格納することが可能であり、また、通信媒体を介して伝達することが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、バッテリバックアップ付きＲＡＭメモリカートリッジ等を含む。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等を含み、インターネットも含まれる。
【００４７】
上述したように、本実施の形態にかかるプログラム書込み処理システム１では、暗号鍵ＣＡ及びＣＢによって暗号化された顧客プログラムＥＡＰ２をＭＣＵ１０に入力し、ＭＣＵ１０の内部で復号処理を行って、不揮発性メモリ１４に顧客プログラムＡＰを書き込む。このため、暗号化されていない状態の顧客プログラムＡＰが書込み環境７２に存在することがないため、書込み環境７２から顧客プログラムＡＰが第三者に漏洩することを防止できる。
【００４８】
本実施の形態にかかるプログラム書込み処理システム１では、２つの共通鍵暗号方式の暗号鍵ＣＡ及びＣＢを用いて顧客プログラムＡＰの暗号化を行っている。共通鍵暗号方式による復号化処理の演算量は、公開鍵暗号方式による復号化処理の演算量より小さいことが知られている。共通鍵暗号方式による復号化処理が単純なビット置換演算、排他的論理和演算によって行われるのに対し、公開鍵暗号方式による復号処理は膨大なべき乗演算、割り算演算を必要とするためである。したがって、共通鍵暗号方式による復号化を行うＭＣＵ１０は、公開鍵暗号方式による復号処理行うものに比べて演算量が小さくてすむ。このため、ＭＣＵ１０は、公開鍵暗号方式による復号処理の実行に必要とされるような高性能の暗号回路を必要とせず、処理能力の低い暗号回路を適用することができ、低コスト化や回路規模の抑制が可能となる。また、暗号鍵ＣＡ及びＣＢを用いた復号処理をＭＣＵ１０に内蔵されたＣＰＵで実行する場合には、公開鍵暗号方式の復号処理に比べて演算能力の比較的低いＣＰＵ（例えば１度の処理で８ビットデータしか扱うことができない８ビットＣＰＵ）によって実現可能である。
【００４９】
また、２つの共通鍵暗号方式の暗号鍵ＣＡ及びＣＢを用いて顧客プログラムＡＰの暗号化を行っていることから以下に述べる利点がある。比較のため、１つ暗号鍵ＣＢのみで顧客プログラムＡＰを暗号化し、暗号化されたプログラムを顧客環境７１と書込み環境７２の間で転送する場合を考える。このとき何らかの理由で暗号化された顧客プログラムが第三者に渡り、この第三者が暗号化装置を入手すると、顧客プログラムＡＰの復号が可能となってしまうという問題がある。共通鍵方式であるＤＥＳ等の暗号化アルゴリズムでは、暗号鍵ＣＢによる暗号化を行う暗号化装置に、暗号化された顧客プログラムを入力すると、複合化された顧客プログラムが出力されるためである。
【００５０】
これに対して本実施の形態のプログラム書込み処理システム１であれば、暗号化された顧客プログラムＥＡＰ２及び暗号化装置２０を第三者が入手したとしても、さらに暗号鍵ＣＡが第三者の手に渡らない限り、復号された顧客プログラムＡＰを得ることはできない。このため、顧客プログラムＡＰが第三者に漏洩することを防止することができる。なお、この場合は、暗号化装置２０及びＭＣＵ１０に入力される暗号鍵ＣＡは、顧客ごと又は顧客プログラムごとに異なるものに設定することが望ましい。暗号鍵ＣＡと暗号鍵ＣＢの組合せを、顧客ごと又は顧客プログラムごとに異ならせることによって、顧客プログラムＡＰが第三者に漏洩することを効果的に防止することができる。
【００５１】
また、本実施の形態にかかる暗号化装置２０及びＭＣＵ１０では、暗号鍵ＣＢをこれらの装置の外部に読み出すことができない。このため、何らかの理由で、暗号化された顧客プログラムＥＡＰ２と暗号鍵ＣＡが第三者に漏洩した場合でも、第三者は、暗号化された顧客プログラムＥＡＰ２を復号して、顧客プログラムＡＰを得ることはできない。
【００５２】
発明の実施の形態２．
本実施の形態にかかるプログラム書込み処理システム２の構成を図５に示す。プログラム書込み処理システム２は、顧客環境７１に置かれた暗号化装置６０と、書き込み環境７２に置かれたＭＣＵ５０とを備えている。
【００５３】
暗号化装置６０は、データ圧縮部５２を有する点が、発明の実施の形態１の暗号化装置２０と異なる。なお、暗号化装置６０のその他の構成は、暗号化装置２０と同一であるため、同一の符号を付して、詳細な説明を省略する。
【００５４】
データ圧縮部５２は、顧客プログラムＡＰを不可逆に圧縮し、シグネチャデータＳＤ１を生成する。なお、シグネチャデータＳＤ１は、元の顧客プログラムが同じ場合には同じ値が得られ、元の顧客プログラムが異なれば異なる値が得られるよう生成する必要がある。このため、例えば、所定のハッシュ関数を用いて、顧客プログラムＡＰからハッシュ値を演算し、得られたハッシュ値をシグネチャデータＳＤ１とすればよい。シグネチャデータＳＤ１は、顧客プログラムＡＰ全体からハッシュ値を演算しても良いし、顧客プログラムＡＰに含まれる一部のデータからハッシュ値を演算して生成しても良い。
【００５５】
暗号化装置６０が生成したシグネチャデータＳＤ１は、経路３３を介して書込み環境７２に送られる。なお、経路３３は、通信網でも良く、宅配便等のオフライン経路であってもよい。また、経路３３は、経路３１又は３２と同一の経路であっても構わない。
【００５６】
ＭＣＵ５０は、データ圧縮部５１及び比較部５３を有する点が、発明の実施の形態１のＭＣＵ１０と異なる。なお、ＭＣＵ５０のその他の構成は、ＭＣＵ１０と同一であるため、同一の符号を付して、詳細な説明を省略する。
【００５７】
データ圧縮回路５１は、データ圧縮部５２と同様の手順で、復号化部１１が復号化した顧客プログラムＡＰからシグネチャデータＳＤ２を生成する。具体的には、例えば、データ圧縮部５２の同一のハッシュ関数を用いて、不揮発性メモリ１４に格納された顧客プログラムＡＰに対するハッシュ値を演算しして、シグネチャデータＳＤ２とすればよい。
【００５８】
比較部５３は、入力端子５４を介して入力されたシグネチャデータＳＤ１と、データ圧縮部５１が生成したシグネチャデータＳＤ２を比較し、両者が一致するか否かの判定を行う。当該判定によって、暗号鍵ＣＡと顧客プログラムＡＰの組み合わせの整合性を検証することができる。つまり、シグネチャデータの一致は、暗号鍵ＣＡによって正しく復号を行えたこと、言い換えると、暗号化された顧客プログラムＥＡＰ２とこれを復号するための暗号鍵ＣＡの組み合わせが正しいことを意味する。逆に、シグネチャデータの不一致は、暗号鍵ＣＡによって正しく復号されていないこと、言い換えると、暗号化された顧客プログラムＥＡＰ２とこれを復号するための暗号鍵ＣＡの組み合わせが正しくないことを意味する。
【００５９】
発明の実施の形態１のＭＣＵ１０では、暗号化された顧客プログラムＥＡＰ２と暗号鍵ＣＡをＭＣＵ１０に入力し、ＭＣＵ１０の内部で顧客プログラムＡＰを得るための復号処理を行う。ここで、暗号化された顧客プログラムＥＡＰ２と暗号鍵ＣＡの組み合わせが誤った組み合わせでＭＣＵ１０に入力されると、復号後に得られるデータは元の顧客プログラムＡＰと異なるデータになり、誤ったデータが不揮発性メモリ１４に書き込まれてしまう。
【００６０】
仮に暗号鍵ＣＡの選択を誤っており、誤ったデータを書き込んだ場合でも、比較部１３による判定では異常を検出することはできない。つまり、暗号化された顧客プログラムＥＡＰ２と暗号鍵ＣＡの組み合わせの確かさを検証することはできない。また、書き込み環境７２には、元の顧客プログラムＡＰは存在しない。このため、ＭＣＵ１０が置かれた書き込み環境７２では、暗号化された顧客プログラムＥＡＰ２と暗号鍵ＣＡの組み合わせの正しさを担保することが困難である。
【００６１】
これに対して、本実施の形態のＭＣＵ５０では、比較部５３でのシグネチャデータの比較により、正しい暗号鍵ＣＡを用いて復号処理が正常に行われているか否かを検証することができる。ＭＣＵ５０は、復号処理が正しく行われたことを比較部５３によって検証でき、書き込み処理が正常に行われたことを比較部１３によって検証できるため、顧客プログラムＡＰを不揮発性メモリ１４に書き込む際の信頼性をさらに向上することができる。
【００６２】
データ圧縮部５１及び比較部５３によるシグネチャデータの比較手順を図６のフローチャートを用いて説明する。ステップＳ３０１では、データ圧縮部５１が、ＣＰＵ１２によって不揮発性メモリ１４に書き込まれた顧客プログラムＡＰからシグネチャデータＳＤ２を生成し、比較部５３に出力する。
【００６３】
ステップＳ３０２では、顧客環境７１から送られてきたシグネチャデータＳＤ１が入力端子５４を介して比較部５３に入力される。ステップＳ３０３では、比較部５３において、シグネチャデータＳＤ２をシグネチャデータＳＤ１と比較する。
【００６４】
ステップＳ３０３での比較の結果、シグネチャデータＳＤ１及びＳＤ２が一致する場合は、暗号化された顧客プログラムＥＡＰ２と暗号鍵ＣＡの組み合わせが正しく、復号処理が正しく行われたものとして検証を終了する（ステップＳ３０４）。一方、シグネチャデータＳＤ１及びＳＤ２が一致しない場合は、暗号化された顧客プログラムＥＡＰ２と暗号鍵ＣＡの組み合わせが誤っており、復号処理が正しく行われていないと判断して検証を終了する（ステップＳ３０４）。なお、復号処理が正しく行われていないと判断した場合には、顧客プログラムＡＰの不揮発性メモリ１４への書き込みを停止し、書き込み済みのデータを消去することが望ましい。誤った書き込みを停止し、誤ったデータを破棄するためである。
【００６５】
なお、ＭＣＵ５０も上述した図３の具体的構成によって実現できる。つまり、データ圧縮部５１及び比較部５３の処理を図２の書き込み実行プログラム４２１と同様のファームウェア・プログラムに記述し、これをＣＰＵ１２で実行することにより、本実施の形態のＭＣＵ５０として動作可能である。また、データ圧縮部５１及び比較部５３は、ＣＰＵ１２とは別の専用の処理回路として設けても良い。
【００６６】
その他の実施の形態．
発明の実施の形態２のＭＣＵ５０は、比較部５３を備えており、ＭＣＵ５０の内部でシグネチャデータの比較を行うこととした。しかしながら、データ圧縮部５１で生成したシグネチャデータＳＤ２をＭＣＵ外部に出力し、ＭＣＵの外部で、シグネチャデータＳＤ１とＳＤ２の比較を行うこととしても良い。
【００６７】
また、発明の実施の形態２のＭＣＵ５０において、比較部１３を省略し、比較部５３でのシグネチャデータの比較によって、プログラム書き込みの正常性の検証をあわせて行うこととしても良い。
【００６８】
また、発明の実施の形態２において、シグネチャデータＳＤ１及びＳＤ２を顧客プログラムＡＰと暗号鍵ＣＡを合わせたデータから生成することとしても良い。
【００６９】
発明の実施の形態１及び２の比較部１３では、不揮発性メモリ１４から読み出した顧客プログラムＡＰを暗号鍵ＣＡ及びＣＢで再び暗号化したものと、入力端子１６から入力された暗号化された顧客プログラムＥＡＰ２の比較によって、書き込みの正常性を検証しても良い。また、不揮発性メモリ１４から読み出した顧客プログラムＡＰを暗号鍵ＣＡ及びＣＢで暗号化してＭＣＵ１０又は５０の外部に出力し、ＭＣＵの外部で暗号化された顧客プログラムＥＡＰ２と比較して、書き込みの正常性を検証しても良い。
【００７０】
上述した実施の形態１及び２のＭＣＵ１０及び５０は、暗号鍵ＣＢを顧客プログラムＡＰと同じ不揮発性メモリ１４に格納することとした。しかしながら、暗号鍵ＣＢの格納場所は、ＭＣＵ１０及び５０の外部からアクセスできない不揮発性の記憶領域であればよく、その格納場所は不揮発性メモリ１４に限定されない。
【００７１】
発明の実施の形態１及び２に示した暗号化装置２０及び６０は、汎用的なコンピュータ・システムによって構成することもできる。このとき、必ずしも、暗号鍵ＣＢを暗号化装置２０の外部から読み出せない状態で保持する必要はない。しかしながら、暗号化装置２０及び６０は、ＭＣＵ１０又は５０に書込みためのプログラムを暗号化する専用装置として構成し、暗号鍵ＣＢを暗号化装置２０の外部から読み出せない状態で保持することが望ましい。暗号鍵ＣＢの管理が容易となるためである。
【００７２】
発明の実施の形態１及び２に示したプログラム書込み処理システム１及び２は、データの暗号化用の鍵と復号化用の鍵が共通である共通鍵暗号方式の暗号鍵ＣＡ及びＣＢを用いることとした。しかしながら、暗号化用の鍵と復号化用の鍵が異なっている公開鍵暗号方式などの非対称鍵暗号方式を用いても良い。具体的には以下のように構成すれば良い。まず、非対称鍵暗号方式の鍵ペアを２組に用意する。ここで、一方の鍵ペアは暗号鍵ＣＡ１及び暗号鍵ＣＡ２、他方の鍵ペアは暗号鍵ＣＢ１及びＣＢ２とし、暗号鍵ＣＡ１で暗号化されたデータは暗号鍵ＣＡ２でのみ復号可能であり、暗号鍵ＣＢ１で暗号化されたデータは暗号鍵ＣＢ２でのみ復号可能であるとする。このような鍵ペアを用意し、暗号化装置２０及び６０における顧客プログラムＡＰの暗号化に用いる２つの暗号鍵ＣＡ及びＣＢ２を、それぞれ暗号鍵ＣＡ１及びＣＢ１に置き換える。他方、ＭＣＵ１０及び５０における暗号化された顧客プログラムＥＡＰの復号に用いる２つの暗号鍵ＣＡ及びＣＢを、それぞれ暗号鍵ＣＡ２及びＣＢ２に置き換える。これにより、非対称鍵暗号方式の暗号鍵を用いることができる。
【００７３】
本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００７４】
【図１】本発明にかかるプログラム書込み処理システムの構成図である。
【図２】本発明のマイクロコントローラユニットに対する暗号鍵の格納処理を示すフローチャートである。
【図３】本発明にかかるマイクロコントローラユニットの構成図である。
【図４】本発明にかかるマイクロコントローラユニットの処理を示すフローチャートである。
【図５】本発明にかかるプログラム書込み処理システムの構成図である。
【図６】本発明にかかるシグネチャデータの比較処理を示すフローチャートである。
【図７】従来のプログラム書込み処理を説明する図である。
【符号の説明】
【００７５】
１、２  プログラム書込み処理システム
１０、５０  マイクロコントローラユニット（ＭＣＵ）
１１  復号化部
１２  中央処理装置（ＣＰＵ）
１３  比較部
１４  不揮発性メモリ
１５、１６  入力端子
２０、６０  暗号化装置
２１  暗号化部
２２  不揮発性メモリ
２３、２４  入力端子
３１、３２、３３  経路
４２  ＲＯＭ
４３  Ｉ／Ｏポート
４４  ＲＡＭ
４５  暗号回路
４２１  書き込み実行プログラム
５１  データ圧縮部
５２  データ圧縮部
５３  比較部
５４  入力端子
７１  顧客環境
７２  書込み環境
ＣＡ、ＣＢ  暗号鍵
ＡＰ  顧客プログラム
ＥＡＰ２  暗号化された顧客プログラム
ＳＤ１、ＳＤ２  シグネチャデータ
【図１】
2007179317.tif 000003
【図２】
2007179317.tif 000004
【図３】
2007179317.tif 000005
【図４】
2007179317.tif 000006
【図５】
2007179317.tif 000007
【図６】
2007179317.tif 000008
【図７】
2007179317.tif 000009