(57)【要約】【課題】第三者によるプログラムの解析を困難とするマイクロコンピュータのプログラム保護方法を提供する。【解決手段】メモリ２に格納されたプログラムの少なくとも一つの領域を暗号化し、その復号化に必要なキーと共にメモリ２に格納し、暗号化された領域がアクセスされた際には、前記キーを用いて復号化回路５で復号化し、復号化されたプログラムデータをＣＰＵ１に出力するようにする。【選択図】　　　図１
2004023351.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの少なくとも一つの領域を暗号化し、その復号化に必要なキーと共にメモリに格納し、前記暗号化された領域がアクセスされた際には、前記キーを用いて復号化することを特徴とするマイクロコンピュータのプログラム保護方法。
【請求項２】
前記キーは、暗号化されたキーであることを特徴とする請求項１に記載のマイクロコンピュータのプログラム保護方法。
【請求項３】
プログラム領域を、マイクロコンピュータシステムの初期化に必要な第一のプログラム領域とそれ以外の第二のプログラム領域に分割し、該第二のプログラム領域のみを暗号化し、初期化処理が終了して前記第二のプログラム領域に制御が移行するまでの間に復号化キーを取得することを特徴とする請求項１又は２のいずれか１項に記載のマイクロコンピュータのプログラム保護方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、マイクロコンピュータシステムにおいて、メモリに格納されたプログラムの物理的な解析を困難にすることにより、保護する方法に関する。
【０００２】
【従来の技術】
従来のマイクロコンピュータシステムにおいては、暗号化されていないプログラムの内容を第三者が解析できないようにするために、プログラムの内容がチップの端子を介して出力されないようにしていたが、探針法（顕微鏡下で微細な電極を配線に当てて信号を観測する操作）等の物理的な解析手段に対する考慮が欠けていたため、データ出力端子に電極を取り付け、何らかの方法でメモリにアドレスを与えることができれば、プログラムの内容を抽出される危険性があった。
【０００３】
しかしながら、ＩＣカードなどの金銭や個人のプライバシーに関する情報が蓄積されるセキュリティ向けのマイクロコンピュータシステムにおいては、第三者によりプログラムの解析が行われると、データの改ざんなどの不正行為が行われる可能性があり、プログラムの保護は不可欠のものとなる。
【０００４】
この発明は、上記従来の課題を解決して、第三者によるプログラムの解析を困難とするマイクロコンピュータのプログラム保護方法を提供することを目的とする。
【０００５】
【課題を解決するための手段】
その為に、この発明のマイクロコンピュータのプログラム保護方法においては、プログラムの少なくとも一つの領域を暗号化し、その復号化に必要なキーと共にメモリに格納し、前記暗号化された領域がアクセスされた際には、前記キーを用いて復号化するようにしている。
【０００６】
【発明の実施の形態】
以下、この発明の実施の形態について図面を参照しながら説明する。尚、図中、各構成成分の大きさ、形状及び配置関係は、この発明が理解出来る程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は、単なる例示にすぎない。
【０００７】
［第１の実施の形態］
図１は、この発明の第１の実施の形態を示すマイクロコンピュータシステムのブロック図であり、このシステムは、プログラムを実行する主体であるＣＰＵ１、キー（復号鍵）となるデータと、そのキーによって復号可能となる暗号化されたプログラムを保持するメモリ２、システムリセット後などの適切なタイミングでメモリ２からキーデータを読み出す制御を行う制御回路３、メモリ２から読み出されたキーデータを保持するレジスタ４、レジスタ４に格納されたキーデータを用いてメモリ２から出力されるデータを復号化処理して復号化データをＣＰＵ１に出力する復号化回路５、及びデータバス６を含んでいる。
【０００８】
メモリ２は、ＣＰＵ１から出力されるアドレス信号及び制御信号に基づいて、キーデータ或いはアドレス値で示されるプログラムデータをデータバス６に出力する。
【０００９】
暗号化及び復号化方法としては、様々なものが適用できる。回路として実現が容易な一例としては、プログラムデータとキーデータとのビット毎の排他的論理和をとることにより暗号化する方法があり、復号化も同様に実現できる。
【００１０】
このほかにも、例えば、（ａ）プログラムデータの特定のビットと他のビットを入れ替える方法、（ｂ）プログラムデータの特定のビットを反転する方法、（ｃ）プログラムデータのビットパタンを右方向或いは左方向に回転させる方法（最上位ビットは最下位ビットと隣接しているものと見なす）、（ｄ）上述の方法を複数組み合わせる方法、等が考えられる。
【００１１】
以下、このマイクロコンピュータシステムのシステムリセット後の動作を説明する。
【００１２】
（１）制御回路３は、メモリ２に対してキーデータ読み出しを要求し、この間ＣＰＵ１はウエイト状態（プログラムの実行待ち状態）となる。
（２）メモリ２からデータバス６にキーデータが出力され、レジスタ４は、データバス６上のデータを保持する。
（３）制御回路３は、ＣＰＵ１のウエイト状態を解除し、ＣＰＵ１はプログラムの実行可能状態となる。
（４）ＣＰＵ１が命令をフェッチするたびに復号化回路５は、レジスタ４に格納されたキーデータとデータバス６上のデータの間で復号化演算を行い、復号化されたデータをＣＰＵ１に出力する。
【００１３】
このように、第１の実施の形態によれば、メモリ２のデータ出力端子に現れるのは暗号化されたプログラムデータであり、たとえ第三者が探針によりメモリの出力端子からデータを抽出しようとしても、プログラムの内容を知ることは出来ないので、従来のシステムと比較してプログラムの機密性を向上させることが出来る。
【００１４】
［第２の実施の形態］
図２は、この発明の第２の実施の形態を示すマイクロコンピュータシステムのブロック図であり、第１の実施の形態と構成上の異なる点は、メモリ２に格納する暗号化領域を１〜Ｎの複数の領域に分割し、各領域に対応したキーデータ１〜Ｎを備えている点、及び暗号化された各領域からデータを読み出す際に、それぞれに対応したキーデータ１〜Ｎを格納する為のレジスタ４−１〜４−Ｎを設け、更にアドレスデコーダ７を用いてアドレスを解読することにより読み出された領域に対応するレジスタ４を選択することが出来るようにマルチプレクサ８を含んだ構成となっている点である。
【００１５】
暗号化・復号化処理の方法については、第１の実施の形態と同様の方法を用いることが出来る。
【００１６】
以下、このマイクロコンピュータシステムのシステムリセット後の動作を説明する。
【００１７】
（１）制御回路３は、メモリ２に対してキーデータ読み出しを要求し、この間ＣＰＵ１はウエイト状態（プログラムの実行待ち状態）となる。
（２）メモリ２からデータバス６にキーデータが出力され、レジスタ４は、暗号化されたプログラムの各領域に対応したデータバス６上のキーデータをそれぞれのレジスタに保持する。
（３）制御回路３は、ＣＰＵ１のウエイト状態を解除し、ＣＰＵ１はプログラムの実行可能状態となる。
（４）ＣＰＵ１が命令をフェッチするたびに、アドレスデコーダ７とマルチプレクサ８によって、レジスタ４−１〜４−Ｎのうち、アドレス値により指定されたプログラム領域に対応するレジスタが選択され復号化回路にキーデータが出力される。
（５）復号化回路５は、キーデータとデータバス６上のデータの間で復号化演算を行い、復号化されたデータをＣＰＵ１に出力する。
【００１８】
このように、第２の実施の形態によれば、プログラム領域を複数の領域に分割し、それぞれの領域を別々のキーで暗号化・復号化処理することで、各プログラム領域に関する知識が無い限り、全プログラム領域の復元は困難となる。何故なら、キーデータは、各領域毎に異なっているため、たとえ１ヶ所の領域のプログラムが解読されたとしても、その解読キーを用いて他の領域を解読することができないからである。これにより、プログラムの機密性をより高めることが可能となる。
【００１９】
尚、本発明は前述の各実施の形態に限定されるものではなく、本発明の趣旨に基づいて種々変形させることが可能である。
【００２０】
（１）キーデータ自体を保護するために、キーデータを暗号化してメモリに保存する。この場合、キーデータを復号化するキー及び復号化方法は組み合わせ回路として構成することで実現する。通常、第三者がＬＳＩ上の組み合わせ回路中の復号回路を特定し、さらに復号化方法を解析するのは、メモリブロックの探針よりも困難であると考えられる。この結果、プログラムの機密性は更に向上する。尚、キーデータの暗号化・復号化には、プログラム本体のものと同じアルゴリズムを用いることもできる。
【００２１】
（２）第１の実施の形態では、プログラム領域の全領域を暗号化の対象としたが、一部の領域をあえて暗号化しない方法も可能である。例えば、割り込みベクトル領域や、システムリセットの直後にＣＰＵが実行するごく小さなプログラム領域等は、通常分岐命令や制御命令が置かれることが多く、これらの領域に格納されたプログラムは、仮に解読されたとしても、プログラムの本体が暗号化されていれば、本質的な影響は小さいと考えられるからである。逆に、このようにすることで、推測されやすい、或いは推測されてもかまわないと考えられる領域はあえて暗号化の対象から除外することで、プログラムが暗号化されているか否かの判断自体を困難なものとすることが出来、プログラムの機密性を更に向上させる効果がある。
【００２２】
【発明の効果】
以上詳細に説明したように、本発明によれば、プログラムの少なくとも一つの領域を暗号化し、その復号化に必要なキーと共にメモリに格納し、暗号化された領域がアクセスされた際には、前記キーを用いて復号化するようにしたので、従来のシステムと比較してプログラムの機密性を向上させることが出来る。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態を示すマイクロコンピュータシステムのブロック図である。
【図２】本発明の第２の実施の形態を示すマイクロコンピュータシステムのブロック図である。
【符号の説明】
１　　　　　　　　　　　　　　　　ＣＰＵ
２　　　　　　　　　　　　　　　　メモリ
３　　　　　　　　　　　　　　　　制御回路
４、４−１〜４−Ｎ　　　　　　　　レジスタ
５　　　　　　　　　　　　　　　　復号化回路
６　　　　　　　　　　　　　　　　データバス
７　　　　　　　　　　　　　　　　アドレスデコーダ
８　　　　　　　　　　　　　　　　マルチプレクサ
【図１】
2004023351.tif 000003
【図２】
2004023351.tif 000004