(57)【要約】【課題】外部ＲＯＭのプログラムコードを保護することができるコントロールシステムを提供すること。【解決手段】プログラムコードを格納する外部ＲＯＭ８００と外部ＲＯＭ８００からプログラムコードを読み出し処理するマイクロコントローラ７００とを備え、外部ＲＯＭ８００に暗号化したプログラムコードを格納し、マイクロコントローラ７００は暗号化されたプログラムコードを解読して用いる。また、マイクロコントローラ７００は、外部ＲＯＭ８００のプログラムコードを読み出す時に暗号化されたアドレス信号を用い、外部ＲＯＭ８００はマイクロコントローラからの暗号化されたアドレスに従い、プログラムコードを変更して格納する。【選択図】図４
2004054885.tif 000002
【特許請求の範囲】
【請求項１】
プログラムコードを格納する外部ＲＯＭと、該外部ＲＯＭから前記プログラムコードを読み出して処理するマイクロコントローラとを備えるコントロールシステムにおいて、
前記マイクロコントローラが、
前記プログラムコードの位置情報を保有しアドレス信号を出力するプログラムカウンタと、
前記アドレス信号を受信して暗号化し、前記外部ＲＯＭへ前記暗号化されたアドレス信号を出力するアドレス暗号化部と、
前記外部ＲＯＭからの前記プログラムコードの受信に応じて、前記アドレス暗号化部から暗号化情報を受信して前記プログラムコードの多重暗号を解読し、元のプログラムコードに変換する多重暗号分析部と、
該多重暗号分析部から内部インタフェースとバスを介して伝送された前記元のプログラムコードを格納し、前記元のプログラムコードをパッチしてプログラミングを実行する命令語レジスタとを備え、
前記外部ＲＯＭが、
前記多重暗号により暗号化されたプログラムコードを前記暗号化されたアドレスの位置に格納し、前記アドレス暗号化部の暗号化されたアドレス信号を受信して、対応する前記多重暗号化されたプログラムコードを、前記多重暗号分析部に伝送する機能を有することを特徴とする外部ＲＯＭのプログラムコードを保護するコントロールシステム。
【請求項２】
前記多重暗号化されたプログラムコードが、前記アドレス暗号化部の暗号化されたアドレス情報を参照することにより、各々のアドレスごと、かつビット別に再配列され格納されていることを特徴とする請求項１に記載のコントロールシステム。
【請求項３】
前記多重暗号化されたプログラムコードが、前記アドレス暗号化部の暗号化されたアドレス情報を参照することにより、一定間隔のアドレスごと、かつビット別に配列順を同一にして格納されていることを特徴とする請求項１に記載のコントロールシステム。
【請求項４】
プログラムコードを格納する外部ＲＯＭと、該外部ＲＯＭから前記プログラムコードを読み出して処理するマイクロコントローラとを備えるコントロールシステムにおいて、
前記マイクロコントローラが、
前記プログラムコードの位置情報を保有し前記外部ＲＯＭへアドレス信号を出力するプログラムカウンタと、
前記外部ＲＯＭからの前記外部プログラムコードの受信に応じて、前記プログラムカウンタのアドレス情報を受信して多重暗号化された前記プログラムコードを解読し、元のプログラムコードに変換する多重暗号分析部と、
該多重暗号分析部から内部インタフェースとバスを介して伝送された前記元のプログラムコードを格納し、前記元のプログラムコードをパッチしてプログラミングを実行する命令語レジスタとを備え、
前記ＲＯＭが、
前記多重暗号により暗号化されたプログラムコードを前記アドレスの位置に格納し、前記プログラムカウンタからのアドレスの受信に応じて、対応する前記多重暗号化されたプログラムコードを、前記多重暗号分析部に伝送する機能を有することを特徴とする外部ＲＯＭのプログラムコードを保護するコントロールシステム。
【請求項５】
前記多重暗号化された外部プログラムコードが、前記プログラムカウンタのアドレス情報を参照することにより、各々のアドレスごと、かつビット別に再配列されて格納されていることを特徴とする請求項４に記載のコントロールシステム。
【請求項６】
前記多重暗号化された外部プログラムコードが、前記プログラムカウンタのアドレス情報を参照することにより、アドレスの一定の間隔ごと、かつビット別に配列順を同一にして格納されていることを特徴とする請求項４に記載のコントロールシステム。
【請求項７】
プログラムコードを格納する外部ＲＯＭと、該外部ＲＯＭから前記プログラムコードを読出して処理するマイクロコントローラを備えるコントロールシステムにおいて、
前記マイクロコントローラが、
前記プログラムコードの位置情報を保有しアドレス信号を出力するプログラムカウンタと、
受信した前記アドレス信号を暗号化し、前記外部ＲＯＭへ前記暗号化されたアドレス信号を出力するアドレス暗号化部と、
前記外部ＲＯＭからのプログラムコードの受信に応じて、前記プログラムコードの暗号を解読して元のプログラムコードに変換する暗号分析部と、
該暗号分析部から内部インタフェースとバスを介して伝送された前記元のプログラムコードを格納し、前記元のプログラムコードをパッチしてプログラミングを実行する命令語レジスタとを備え、
前記外部ＲＯＭが、
前記暗号により暗号化されたプログラムコードを前記暗号化されたアドレスの位置に格納し、前記アドレス暗号化部からの暗号化されたアドレス信号の受信に応じて、対応する前記暗号化されたプログラムコードを、前記暗号分析部に伝送する機能を有することを特徴とする外部ＲＯＭのプログラムコードを保護するコントロールシステム。
【請求項８】
前記暗号化されたプログラムコードが、全てのアドレスに対して同一で、ビット別に再配列され格納されていることを特徴とする請求項７に記載のコントロールシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は外部ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ：読み取り専用メモリ）のプログラムコードを保護することができるコントロールシステムに関し、特に外部ＲＯＭのプログラムコードを暗号化して格納するとともに、アドレス信号を暗号化して外部ＲＯＭのプログラムコードを保護するコントロールシステムに関する。
【０００２】
【従来の技術】
外部にプログラムのメモリが必要なシステム構成においては、プログラムコードが外部に漏洩しないようにするための保護が必要である。
【０００３】
図１は、従来の外部ＲＯＭのプログラムコードを保護するためのコントロールシステムの構成を示すブロック図である。図１に示した従来のシステムは、プログラムと暗号化されたプログラムコードとが格納されている外部ＲＯＭ２００と、外部ＲＯＭ２００に格納されているプログラムを読み出し、このプログラムを利用してシステムを制御するマイクロコントローラ１００とを含んで構成されている。
【０００４】
また、マイクロコントローラ１００は、暗号化情報の処理機能を有しており、外部ＲＯＭ２００から伝送される暗号化されたプログラムコードを分析し、マイクロコントローラ１００で用いることができる元のプログラムコードに変換する暗号分析部１１０、暗号分析部１１０から伝送されたプロクラムコードを内部コードバス（Ｉｎｔｅｒｎａｌ　Ｃｏｄｅ　Ｂｕｓ）に伝送する外部ＲＯＭインタフェース１２０、内部コードバスから伝送されるプログラムコードを格納する命令語レジスタ（Ｉｎｓｔｒｕｃｔｉｏｎ　Ｒｅｇｉｓｔｅｒ）１３０、及び外部ＲＯＭ２００から読み出すプログラムコードの位置情報を含むアドレス信号（Ａｄｄ［１５：０］）を出力するプログラムカウンタ１４０を備えている。
【０００５】
例えば、外部ＲＯＭ２００とマイクロコントローラ１００のデータ伝送単位が８ビットであり、暗号化キーが２−０−５−３−７−６−１−４であれば、８ビット単位で外部ＲＯＭ２００に格納されているプログラムコードは、Ｄ２、Ｄ０、Ｄ５、Ｄ３、Ｄ７、Ｄ６、Ｄ１、Ｄ４の順に再配列、すなわち暗号化されて格納される。
【０００６】
したがって、プログラム　カウンタ１４０から伝えられ、アドレスに格納されているプログラムコードを、外部ＲＯＭ２００からマイクロコントローラ１００に伝送する場合、プログラムコードは、Ｄ２、Ｄ０、Ｄ５、Ｄ３、Ｄ７、Ｄ６、Ｄ１、Ｄ４の順に伝送される。そのため、外部では、暗号化キーが分からない場合、プログラムコードを分析してもプログラムコードを読み取ることができない。
【０００７】
このように、暗号化されたプログラムコードが伝送されると、暗号分析部１１０は、ビット再整列ロジックを利用して、暗号分析部１１０の入力ポート（ＰＩ０〜ＰＩ７）に入力された暗号化されて再配列されたプログラムコード（データ）を元のプログラムコードに再配列し、、出力ポート（ＰＯ０〜ＰＯ７）に出力する。
【０００８】
具体的に説明すると、ポートＰＩ７に入力されたデータＤ２をＰＯ２ポートに、ポートＰＩ６に入力されたデータＤ０をＰＯ０ポートに、ポートＰＩ５に入力されたデータＤ５をＰＯ５ポートに、ポートＰＩ４に入力されたデータＤ３をＰＯ３ポートに、ポートＰＩ３に入力されたデータＤ７をＰＯ７ポートに、ポートＰＩ２に入力されたデータＤ６をＰＯ６ポートに、ポートＰＩ１に入力されたデータＤ１をＰＯ１ポートに、ポートＰＩ０に入力されたデータＤ４をＰＯ４ポートに出力する。
【０００９】
すなわち、暗号分析部１１０は、暗号化キーにより配列された順（ここでは、Ｄ２、Ｄ０、Ｄ５、Ｄ３、Ｄ７、Ｄ６、Ｄ１、Ｄ４）に、外部ＲＯＭ２００に格納されているプログラムコードを受信し、元の順（Ｄ７、Ｄ６、Ｄ５、Ｄ４、Ｄ３、Ｄ１、Ｄ０）に再配列した後、そのプログラムコードを出力する。
【００１０】
上記のように暗号分析部１１０から出力されたプログラムコードは、外部ＲＯＭインタフェース１２０を経て内部コードバスを介し、命令語レジスタ１３０に格納される。命令語レジスタ１３０は、このプログラムコードをパッチしてプログラミングを実行する。
【００１１】
しかし、次のように内蔵された暗号化キーの一つが分かると、外部ＲＯＭ２００のソースプログラムがそのまま洩れることがある。
【００１２】
一般に、マイクロコントローラはリセット後、プログラムカウンタ１４０の値が‘００００ｈ’となる。一方、外部ＲＯＭ２００の００００ｈ番地には、外部ＲＯＭ２００が外部命令に対応してプログラムコードを提供するために、そのコード位置への移動を実行するためのジャンプ命令が入っている。
【００１３】
インテル８０５１シリーズの命令語を例に挙げると、命令語は‘ＬＪＭＰ　１０００ｈ’であり、この命令語は１０００ｈ番地にジャンプしてプログラムを実行する命令である。
【００１４】
ＬＪＭＰ　１０００ｈを、外部ＲＯＭ２００に書き込むための１６進数コードに変換すると、命令語のうちＬＪＭＰは０２ｈに、１０００ｈの１０は１０ｈに、１０００ｈの００は００ｈに変換される。そして、変換された１６進数コードは、各々外部ＲＯＭ２００の００００ｈ番地には０２ｈ、０００１ｈ番地には１０ｈ、０００２ｈ番地には００ｈが書き込まれる。
【００１５】
したがって、００００ｈ番地の値は０２ｈであることが分かっているので、暗号化キーが察知される可能性が非常に高い。一つの暗号化キーが分かると、伝送されるプログラムコードを分析することができ、プログラムが外部に洩れる恐れがあるという問題点がある。
【００１６】
【発明が解決しようとする課題】
本発明は上記のような問題点を解決するためになされたものであり、アドレス暗号化キーと多重暗号化キーとを用いて外部ＲＯＭのデータ漏洩を防止することができるコントロールシステムを提供することを目的としている。
【００１７】
【課題を解決するための手段】
本発明に係る外部ＲＯＭのプログラムコードを保護するコントロールシステムは、プログラムコードを格納する外部ＲＯＭと、該外部ＲＯＭから前記プログラムコードを読み出して処理するマイクロコントローラを備えるコントロールシステムにおいて、前記マイクロコントローラが、前記プログラムコードの位置情報を保有しアドレス信号を出力するプログラムカウンタと、受信した前記アドレス信号を暗号化し、前記外部ＲＯＭへ前記暗号化されたアドレス信号を出力するアドレス暗号化部と、前記外部ＲＯＭからの前記プログラムコードの受信に応じて、前記アドレス暗号化部から暗号化情報を受信して前記プログラムコードの多重暗号を解読し、元のプログラムコードに変換する多重暗号分析部と、該多重暗号分析部から内部インタフェースとバスを介して伝送された前記元のプログラムコードを格納し、前記元のプログラムコードをパッチしてプログラミングを実行する命令語レジスタとを備え、前記外部ＲＯＭが、前記多重暗号により暗号化されたプログラムコードを前記暗号化されたアドレスの位置に格納し、前記アドレス暗号化部の暗号化されたアドレス信号を受信して、対応する前記多重暗号化されたプログラムコードを、前記多重暗号分析部に伝送することを特徴としている。
【００１８】
【発明の実施の形態】
図２は本発明の実施の形態に係る多重暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するコントロールシステムの構成を示すブロック図である。
【００１９】
図２に示したように、多重暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するシステムは、暗号化されたプログラムコードが格納されている外部ＲＯＭ４００と、外部ＲＯＭ４００に格納されているプログラムを読み出し、このプログラムを利用してシステムを制御するマイクロコントローラ３００とを備えている。
【００２０】
そして、マイクロコントローラ３００は、多重暗号分析部３１０と、外部ＲＯＭインタフェース（内部インターフェース）３２０と、命令語レジスタ３３０と、プログラムカウンタ３４０とを含んで構成されている。
【００２１】
ここで、多重暗号分析部３１０は、暗号化情報の処理機能を有しており、外部ＲＯＭ４００から伝送される暗号化されたプログラムコードを分析して、マイクロコントローラ３００で用いることができる元のプログラムコードに変換する機能を有している。また、外部ＲＯＭインタフェース３２０は、多重暗号分析部３１０から受信したプロクラムコードを内部コードバスに伝送する。命令語レジスタ３３０は、内部コードバスを介して受信したプログラムコードを格納する。また、プログラムカウンタ３４０は、外部ＲＯＭ４００から読み出したプログラムコードの位置情報を有しており、アドレス　信号（Ａｄｄ［１５：０］）を出力する。
【００２２】
このような構成を有するコントロールシステムは、多重暗号化キーを用いることにより外部ＲＯＭ４００のプログラムコードを保護する機能を有するものである。次に、暗号化キーの数が８個として、その保護作用を説明する。
【００２３】
暗号化キーは、プログラムカウンタ３４０から伝送されるアドレス（Ａｄｄ［１５：０］）のうち、例えば、下位３ビット（Ａｄｄ［２：０］）を利用して、８（＝２３）個の暗号化キーとして生成される。すなわち、定められたビット内でアドレスが下位３ビットごとに反復される場合には、同一の暗号化キーが適用される。
【００２４】
表１に、このような暗号化テーブルを示す。表１に示した暗号化キーは、任意に定められたものであり、相互にはまったく関係がない。
【００２５】
【表１】
2004054885.tif 000003
【００２６】
外部ＲＯＭ４００には、表１の暗号化キーにより再配列されたプログラムコードが格納されている。すなわち、外部ＲＯＭ４００におけるプログラムコードの格納位置のアドレスのうち、下位３ビット（Ａｄｄ［２：０］）が表１の値と一致した場合、プログラムコードをそれに応じた暗号化キーの順に再配列して格納する。
【００２７】
例えば、プログラムコードは、表１に示した暗号化キーにより、外部ＲＯＭ４００の００００ｈ番地にはＤ７、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ０の順に、０００１ｈ番地にはＤ１、Ｄ０、Ｄ２、Ｄ６、Ｄ４、Ｄ５、Ｄ３、Ｄ７の順に、０００２ｈ番地にはＤ４、Ｄ１、Ｄ７、Ｄ３、Ｄ０、Ｄ５、Ｄ６、Ｄ２の順に再配列されて格納されている。
【００２８】
多重暗号分析部３１０は、入力ポート（ＰＩ０〜ＰＩ７）を介して外部ＲＯＭ４００から暗号化されたプログラムコードを受信し、プログラムカウンタ３４０における暗号化に用いられたアドレスＡｄｄ［２：０］（暗号化情報）を参照して、暗号化されたプログラムコードを分析し、元のプログラムコードに変換する。多重暗号分析部３１０は、変換によって得られた元のプログラムコードを出力ポート（ＰＯ０〜ＰＯ７）に出力する。
【００２９】
さらに具体的に説明すると、アドレス００００ｈから、データがＤ７、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ０の順に多重暗号化分析部３１０に伝送される。そして、ポートＰＩ７に伝送されたデータＤ７はＰＯ７ポートに、ポートＰＩ６に伝送されたデータＤ１はＰＯ１ポートに、ポートＰＩ５に伝送されたデータＤ２はＰＯ２ポートに、ポートＰＩ４に伝送されたデータＤ３はＰＯ３ポートに、ポートＰＩ３に伝送されたデータＤ４はＰＯ４ポートに、ポートＰＩ２に伝送されたデータＤ５はＰＯ５ポートに、ポートＰＩ１に伝送されたデータＤ６はＰＯ６ポートに、ポートＰＩ０に伝送されたデータＤ０はＰＯ０ポートに出力される。
【００３０】
また、アドレス０００１ｈから、データがＤ１、Ｄ０、Ｄ２、Ｄ６、Ｄ４、Ｄ５、Ｄ３、Ｄ７の順に多重暗号化分析部３１０に伝送される。そして、ポートＰＩ７に伝送されたデータＤ１はＰＯ１ポートに、ポートＰＩ６に伝送されたデータＤ０はＰＯ０ポートに、ポートＰＩ５に伝送されたデータＤ２はＰＯ２ポートに、ポートＰＩ４に伝送されたデータＤ６はＰＯ６ポートに、ポートＰＩ３に伝送されたデータＤ４はＰＯ４ポートに、ポートＰＩ２に伝送されたデータＤ５はＰＯ５ポートに、ポートＰＩ１に伝送されたデータＤ３はＰＯ３ポートに、ポートＰＩ０に伝送されたデータＤ７はＰＯ７ポートに出力される。
【００３１】
すなわち、プログラムカウンタ３４０から出力されるアドレス信号に従い、このアドレス信号に対応するプログラムコードが伝送されると、多重暗号分析部３１０は、プログラムコードの暗号化に用いられたアドレス情報を利用してプログラムコードを分析し、元のプログラムコードの配列に再配列して外部ＲＯＭインタフェース３２０に伝送する。
【００３２】
このように、多重暗号分析部３１０から出力されたプログラムコードは、外部ＲＯＭインタフェース３２０を経て内部コードバスを介し、命令語レジスタ３３０に格納される。命令語レジスタ３３０は、これらのプログラムコードをパッチしてプログラミングを実行する。すなわち、アドレスが下位３ビットごとに反復されることを利用し、対応する暗号化キーを用いてプログラムコードを解読する。
【００３３】
ここでは、アドレスの下位３ビットだけを暗号化キーに適用する例を示したが、暗号化キーには、アドレスのビットのうちの全てのビットを適用することができる。全てのアドレスに対して、それに対応するプログラムコードの配列をビット別に変更することができるので、プログラムの大きさが暗号化キーの最大個数となり得る。
【００３４】
上述のように、多重暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するシステムでは、例え部外者が暗号化キーの一つを知り得たとしても、残りの暗号化キーが分からなければ、元のプログラムソースコードを知ることができない。
【００３５】
図３は、別の実施の形態に係る外部ＲＯＭのプログラムコードを保護するコントロールシステムの構成を示すブロック図である。図３に示したシステムは、アドレス暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するシステムであり、プログラムコードのアドレス自体をそのまま送り出さずに、暗号化キーを用いてアドレスのビット順を変更して出力するように構成されている。
【００３６】
図３に示したように、アドレス暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するシステムは、プログラムコードを暗号化して格納する外部ＲＯＭ６００と、外部ＲＯＭ６００に格納されているプログラムを読み出し、このプログラムを利用してシステムを制御するマイクロコントローラ５００とを備えている。
【００３７】
そして、マイクロコントローラ５００は、暗号分析部５１０、外部ＲＯＭインタフェース５２０、命令語レジスタ５３０、プログラムカウンタ５４０及びアドレス暗号化部５５０を備えている。
【００３８】
暗号分析部５１０は、暗号化情報の処理機能を有しており、外部ＲＯＭ６００から伝送される暗号化されたプログラムコードを分析して、マイクロコントローラ５００で用いることができる元のプログラムコードに変換する。また、外部ＲＯＭインタフェース（内部インターフェース）５２０は、暗号分析部５１０から受信したプログラムコードを内部コードバスに伝送する。
【００３９】
命令語レジスタ５３０は、上記の内部コードバスから伝送されたプログラムコードを格納する。
【００４０】
プログラムカウンタ５４０は、外部ＲＯＭ６００から読み出したプログラムコードの位置情報を保有しており、アドレス信号（Ａｄｄ［１５：０］）を出力する。アドレス暗号化部５５０は、このアドレス信号（Ａｄｄ［１５：０］）を暗号化して、暗号化されたアドレス信号（Ａｄｄ　ｅｎｃ［１５：０］）を出力する。
【００４１】
上記の構成において、アドレス暗号化部５５０は、プログラムカウンタ５４０から１２３４ｈ番地のアドレス信号を受信すると、例えば暗号化キーが１２−１３−１４−１５−９−８−１１−１０−５−４−７−６−１−０−３−２の場合、１２３４ｈ番地を８８Ｃ１ｈ番地に変換して出力する。
【００４２】
このように暗号化されたアドレス信号が外部ＲＯＭ６００に伝送されると、外部ＲＯＭ６００は８８Ｃ１ｈ番地のプログラムコードをマイクロコントローラ５００に伝送する。
【００４３】
この時、外部ＲＯＭ６００にプログラムコードが書き込まれると、外部ＲＯＭ６００は、アドレス暗号化部５５０の暗号化キーに合うようにアドレスを再配列して、そのアドレスを書き込む。そのため、暗号化されたアドレスが伝送されても、マイクロコントローラ５００には、元のアドレスであるプログラムコードを伝送することができるようになっている。
【００４４】
さらに、この時に伝送されるプログラムコードの配列も、一つの暗号化キーにより既に再配列されて伝送されるデータである。したがって、暗号分析部５１０は、図１に示したように、プログラムコードを再配列して、元のプログラムコードを出力するので、命令語レジスタ５３０ではプログラミングが実行されることになる。
【００４５】
ここで、例えプログラムコードのうちの暗号化キー一つが外部に洩れたとしても、アドレスによるプログラミングの流れ（順序）が分からなければ、分析したプログラムソースコードは何の意味も持たない。
【００４６】
また、実施の形態に係るコントロールシステムは、多重暗号化キーとアドレス暗号化キーとを用いる各々のシステムに限定されるものではない。さらに別の実施の形態として、図２に示した多重暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するシステムと、図３に示したアドレス暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するシステムとを併用してもよい。すなわち、多重暗号化キーにより外部ＲＯＭに書き込むプログラムコードのビット配列を変更し、アドレス暗号化キーによりプログラムコードを格納する位置を変更して書き込むことにより、プログラムのコードと流れを二重に保護することができるシステムを実現することも可能である。
【００４７】
図４は、上記のさらに別の実施の形態に係る多重暗号化キーとアドレス暗号化キーとを併用する外部ＲＯＭのプログラムコードを保護するコントロールシステムを示すブロック図である。図４に示したシステムは、プログラムコードを暗号化するとともに、暗号化されたプログラムコード応じてプログラムが格納されている外部ＲＯＭ８００と、外部ＲＯＭ８００に格納されているプログラムを読み出し、このプログラムを利用してシステムを制御するマイクロコントローラ７００とを備えている。
【００４８】
また、マイクロコントローラ７００は、暗号化情報を保有し外部ＲＯＭ８００から伝送される暗号化されたプログラムコードを分析し、マイクロコントローラ７００で用いることができる元のプログラムコードに変換する多重暗号分析部７１０、多重暗号分析部７１０から伝送されたプロクラムコードを内部コードバスに伝送する外部ＲＯＭインタフェース（内部インターフェース）７２０、内部コードバスから伝送されるプログラムコードを格納する命令語レジスタ７３０、及び外部ＲＯＭ８００から読み出したプログラムコードの位置情報を保有しアドレス信号（Ａｄｄ［１５：０］）を出力するプログラムカウンタ７４０を備えている。
【００４９】
さらに、マイクロコントローラ７００は、プログラムカウンタ７４０から伝送されるアドレス信号（Ａｄｄ［１５：０］）を暗号化し、暗号化されたアドレス信号（Ａｄｄ　ｅｎｃ［１５：０］）を出力するアドレス暗号化部７５０をさらに備えている。
【００５０】
そして、アドレス暗号化部７５０は、プログラムカウンタ７４０から１２３４ｈ〜１２３６ｈ番地のアドレス信号を受信すると、例えば、暗号化キーが１２−１３−１４−１５−９−８−１１−１０−５−４−７−６−１−０−３−２の場合、１２３４ｈ番地を８８Ｃ１ｈ番地に、１２３５ｈ番地を８８Ｃ５ｈ番地に、１２３６ｈ番地を８８Ｃ９ｈ番地に変換して出力する。
【００５１】
このように暗号化されたアドレスが外部ＲＯＭ８００に送信されると、外部ＲＯＭ８００は、８８Ｃ１ｈと８８Ｃ５、及び８８Ｃ９ｈ番地のプログラムコードをマイクロコントローラ７００に伝送することになる。
【００５２】
ここで、外部ＲＯＭ８００にプログラムコードを書き込む時に、アドレス暗号化部７５０の暗号化キーに合うようにアドレスを再配列する。それによって、暗号化されたアドレスが伝送されても、元のアドレスに対応するプログラムコードがマイクロコントローラ７００に伝送される。
【００５３】
すなわち、このとき伝送される８８Ｃ１ｈと８８Ｃ５ｈ及び８８Ｃ９ｈ番地のプログラムコードは、マイクロコントローラ７００で本来用いられる１２３４ｈ〜１２３６ｈ番地のプログラムコードと同一のものである。したがって、マイクロコントローラ７００では、そのプログラムコードをそのまま用いることができる。
【００５４】
一方、上記のように伝送された８Ｃ１ｈと８８Ｃ５ｈ及び８８Ｃ９ｈ番地のプログラムコードは、既に多重暗号化キーにより再配列されているものである。そのため、多重暗号分析部７１０では、アドレス暗号化部７５０を参照してプログラムコードを元のプログラムコードに再配列して出力することにより、マイクロコントローラ７００では、元のプログラムコードに対応するプログラムのプログラミングが行われる。
【００５５】
すなわち、多重暗号化分析部７１０に伝送されるプログラムコードは、プログラムコードのビット配列が多重暗号化キーにより再配置されていると共に、伝送されるアドレスもアドレス暗号化部７５０のアドレス暗号化キーにより再配列されている。したがって、アドレス暗号化部７５０を参照して、プログラムコードを元のプログラムコードに再配列することができる。
【００５６】
このように多重暗号化キーとアドレス暗号化キーを併用すると、外部ＲＯＭのプログラムコードの漏洩は勿論のこと、プログラムの流れも分らなくなるので、外部へのプログラムの漏洩をより確実に防止することができる。
【００５７】
【発明の効果】
上述のように、本発明に係るコントロールシステムによれば、多重暗号化キーとアドレス暗号化キーのうちの少なくとも一つを用いることにより、外部ＲＯＭに格納されているプログラムコードの漏洩を防止することができるので、外部ＲＯＭを用いるシステムを保護することができるという優れた効果が得られる。
【図面の簡単な説明】
【図１】従来の外部ＲＯＭのプログラムコードを保護するコントロールシステムの構成を示すブロック図である。
【図２】本発明の実施の形態に係る多重暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するコントロールシステムの構成を示すブロック図である。
【図３】本発明の別の実施の形態に係るアドレス暗号化キーを用いて外部ＲＯＭのプログラムコードを保護するコントロールシステムの構成を示すブロック図である。
【図４】本発明のさらに別の実施の形態に係る多重暗号化キーとアドレス暗号化キーとを用いて、外部ＲＯＭのプログラムコードを保護するコントロールシステムの構成を示すブロック図である。
【図１】
2004054885.tif 000004
【図２】
2004054885.tif 000005
【図３】
2004054885.tif 000006
【図４】
2004054885.tif 000007