説明

半導体集積回路装置

【課題】容易に低コストで処理速度の低下などを招くことなく、第三者によるプログラムの不正コピーや改ざんなどを防止する。
【解決手段】プログラミング言語をコンパイルする際に、任意の法則に沿ってプログラムの命令コードの並べ替えを行い、不揮発性半導体メモリ8に書き込みする。並べ替え部7aは、不揮発性半導体メモリ8に格納されたプログラムの命令コードを順番に読み出し、コンパイル時に並び替えられた命令コードを正常な順番に並び替えてインストラクションバッファ7bに格納する。CPU4は、インストラクションバッファ7bに格納された正規の順番からなる命令コードを順次読み出すことにより、プログラムの実行を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの保護技術に関し、特に、不揮発性半導体メモリに格納された半導体集積回路装置におけるプログラムのコピー、書き換えの防止に適用して有効な技術に関するものである。
【背景技術】
【0002】
近年、電子機器の開発・改善の期間短縮を図るため、制御用のプログラムやデータの書き換えが容易な不揮発性半導体メモリを用いる半導体集積回路装置に対するニーズが高まっている。
【0003】
不揮発性半導体メモリに格納されたプログラムなどの不正な読み出しや不正使用などを防止するために、たとえば、不揮発性半導体メモリを内蔵した半導体集積回路装置では、機密保持のため該不揮発性半導体メモリに格納されたアプリケーションプログラムなどの書き換えなどを禁止するプロテクト機能を有するものがある。
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところが、上記のような半導体集積回路装置におけるプロテクト技術では、次のような問題点があることが本発明者により見い出された。
【0005】
すなわち、不揮発性半導体メモリにプロテクトをかけた状態であっても、半導体集積回路装置に設けられたCPUのワークエリアとして用いられるRAM(Random Access Memory)の内容を読み出し、どのような命令を実行しているかなどを解析することによって、該アプリケーションプログラムの内容が推測されてしまう恐れがある。
【0006】
また、不揮発性半導体メモリを内蔵せず、外部接続される構成の半導体集積回路装置では、不揮発性半導体メモリと半導体集積回路装置とを接続する信号線をモニタすることによってプログラムの解読や解析が容易に行われてしまうという問題がある。
【0007】
本発明の目的は、不揮発性半導体メモリが外部接続された半導体集積回路装置であっても、容易に低コストで処理速度の低下などを招くことなく、第三者によるプログラムの不正コピーや改ざんなどを防止することのできる技術を提供することにある。
【課題を解決するための手段】
【0008】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【0009】
本発明は、不揮発性半導体メモリが外部接続される半導体集積回路装置であって、該不揮発性半導体メモリに格納された任意の法則によって命令コードの順番が並べ替えられたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部を備えたものである。
【0010】
また、本発明の半導体集積回路装置は、任意の法則によって命令コードの順番が並べ替えられたプログラムが格納された不揮発性半導体メモリと、該不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部とを備えたものである。
【0011】
また、本願のその他の発明の概要を簡単に示す。
【0012】
本発明は、前記プログラム並べ替え部が、不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように命令コードを正規の順番に並べ替える並べ替え部と、該並べ替え部が命令コードを並べ替えたプログラムを格納するバッファ部とを備え、中央処理装置は、バッファ部にアクセスしてプログラムを実行することを特徴とする半導体集積回路装置。
【0013】
また、本発明は、識別フラグを格納するフラグ格納部を備え、該フラグ格納部に格納された識別フラグがアクティブの際には、中央処理装置が、バッファ部に格納されているプログラムを実行し、フラグ格納部に格納された識別フラグがインアクティブの際には、不揮発性半導体メモリに格納されているプログラムを実行するものである。
【発明の効果】
【0014】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【0015】
(1)半導体集積回路装置の処理速度の低下を招くことなく、不揮発性半導体メモリに格納されたプログラムの機密性を保持することができる。
【0016】
(2)また、半導体集積回路装置の大型化を防止しながら、不揮発性半導体メモリに格納されたプログラムの機密性を保持することができる。
【発明を実施するための最良の形態】
【0017】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0018】
図1は、本発明の一実施の形態による半導体集積回路装置の一例を示すブロック図、図2は、図1の半導体集積回路装置に設けられたプログラム並べ替え制御部の動作例を説明する説明図である。
【0019】
本実施の形態において、半導体集積回路装置1は、たとえば、シングルチップマイクロコンピュータからなる。半導体集積回路装置1は、図1に示すように、周辺回路2、バスコントローラ3、中央処理装置となるCPU4、RAM5、I/O6、およびプログラム並べ替え制御部7から構成されている。
【0020】
周辺回路2は、A/D変換器、シリアルコミュニケーションインタフェース 、ウォッチドッグタイマ、ならびにタイマパルスユニットなどの各種機能モジュールによって構成されている。
【0021】
A/D変換器は、外部端子から入力されたアナログ信号をデジタル信号に変換する。シリアルコミュニケーションインタフェースは、外部デバイスとのシリアルデータ通信を行うインタフェースである。ウォッチドッグタイマは、半導体集積回路装置1の暴走などの監視を行う。タイマパルスユニットは、PWM(Pulse Width Modulation)波形を出力することのできるタイマである。
【0022】
バスコントローラ3は、半導体集積回路装置1内外のアドレスバスやデータバスの制御を行う。CPU4は、半導体集積回路装置1におけるすべての制御を司る。RAM5は、随時読み出し/書き込みが可能な揮発性メモリであり、入出力データや演算データなどを一時的に格納する。
【0023】
I/O6は、たとえば、入出力バッファからなり、外部接続されるデバイスとのインタフェースとして設けられる。プログラム並べ替え制御部7は、命令コードの並べ替えが行われたプログラムをCPU4が実行できるように正常な状態に該プログラムの命令コードを並べ替える。
【0024】
そして、これら周辺回路2、バスコントローラ3、CPU4、RAM5、I/O6、ならびにプログラム並べ替え制御部7は、内部のバスBを介して相互に接続されている。
【0025】
半導体集積回路装置1には、バスコントローラ3を介して不揮発性半導体メモリ8が外部接続されている。不揮発性半導体メモリ8は、命令コードの並べ替えが行われたプログラムを格納する。
【0026】
また、プログラム並べ替え制御部7は、並べ替え部7aとバッファ部として機能するインストラクションバッファ7bとから構成されている。並べ替え部7aは、不揮発性半導体メモリ8から読み出されたプログラムの命令コードを任意の法則により正規の順番に並べ替えする。インストラクションバッファ7bは、並べ替え部7aが並べ替えしたプログラムの命令コードを格納する。
【0027】
CPU4には、フラグ格納部として機能し、識別フラグを格納するレジスタを有している。レジスタに格納される識別フラグは、不揮発性半導体メモリ8に格納されるプログラムの命令コードが並べ替えられているか否かを示す。
【0028】
次に、本実施の形態におけるプログラム並べ替え制御部7の作用について、図2を用いて説明する。
【0029】
まず、C言語などのプログラミング言語をコンパイラによってコンパイルする際に、任意の法則に沿ってプログラムの命令コードの並べ替えを行う。たとえば、図2の左側に示すように、プログラムの命令コードが正常な場合には、命令1、命令2、命令3〜、最後に各種情報という順番になっていると、コンパイラは、コンパイル時に、図2の中央部に示しように、命令2、各種情報、命令1〜、最後に命令3というように任意の法則によって命令コードを並べ替える。
【0030】
そして、コンパイラによって命令コードの並べ替えが行われたプログラムは、不揮発性半導体メモリ8に書き込みされる。
【0031】
続いて、並べ替え部7aは、不揮発性半導体メモリ8に格納されたプログラムの命令コードを順番に読み出し、コンパイル時に並び替えられた命令コード(図2,中央)を、図2の右側に示すように、正常な順番に並び替えてインストラクションバッファ7bに格納する。
【0032】
CPU4は、前述したレジスタの識別フラグがアクティブになっているか否かを判断し、アクティブの際には、インストラクションバッファ7bに格納された正規の順番からなる命令コードを順次読み出すことにより、プログラムの実行を行う。
【0033】
また、レジスタの識別フラグがインアクティブの際には、不揮発性半導体メモリ8に格納されているプログラムが、コンパイル時に命令コードが並び替えられていないものであるので、インストラクションバッファ7bからではなく、不揮発性半導体メモリ8から読み出したプログラムがCPU4によって実行される。
【0034】
ここで、識別フラグは、レジスタに格納する構成ではなく、たとえば、半導体集積回路装置1に専用の識別信号用ピンを備え、該識別信号用ピンを介して’1’、または’0’の信号を入力し、その信号状態により、アクティブとインアクティブとを識別するようにしてもよい。
【0035】
それにより、本実施の形態によれば、専用のハードウェアによって命令コードの並び替えを行うので、半導体集積回路装置1の処理速度の低下を招くことなく、不揮発性半導体メモリ8に格納されたプログラムの機密性を保持することができる。
【0036】
また、命令コードを並び替えするだけであるので、プログラム実行の際のアルゴリズムを簡単化することができるので、プログラム並べ替え制御部7の回路構成を小型化することができ、半導体集積回路装置1を低コストに製造することができる。
【0037】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0038】
たとえば、前記実施の形態では、プログラム並べ替え制御部7をバスBを介して接続した構成としたが、プログラム並べ替え制御部7は、バスBを介して接続される構成でなくともよく、たとえば、CPU4に設けるようにしてもよい。
【産業上の利用可能性】
【0039】
本発明は、不揮発性半導体メモリに格納されたプログラムなどを第三者による不正コピーや改ざんなどを防止する技術に適している。
【図面の簡単な説明】
【0040】
【図1】本発明の一実施の形態による半導体集積回路装置の一例を示すブロック図である。
【図2】図1の半導体集積回路装置に設けられたプログラム並べ替え制御部の動作例を説明する説明図である。
【符号の説明】
【0041】
1 半導体集積回路装置
2 周辺回路
3 バスコントローラ
4 CPU
5 RAM
6 I/O
7 プログラム並べ替え制御部
7a 並べ替え部
7b インストラクションバッファ
8 不揮発性半導体メモリ
B バス

【特許請求の範囲】
【請求項1】
不揮発性半導体メモリが外部接続される半導体集積回路装置であって、
前記不揮発性半導体メモリに格納された任意の法則によって命令コードの順番が並べ替えられたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部を備えたことを特徴とする半導体集積回路装置。
【請求項2】
請求項1記載の半導体集積回路装置において、
前記プログラム並べ替え部は、
前記不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように前記命令コードを正規の順番に並べ替える並べ替え部と、
前記並べ替え部が命令コードを並べ替えたプログラムを格納するバッファ部とを備え、
前記中央処理装置は、前記バッファ部にアクセスしてプログラムを実行することを特徴とする半導体集積回路装置。
【請求項3】
任意の法則によって命令コードの順番が並べ替えられたプログラムが格納された不揮発性半導体メモリと、
前記不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように並べ替えするプログラム並べ替え制御部とを備えたことを特徴とする半導体集積回路装置。
【請求項4】
請求項3記載の半導体集積回路装置において、
前記プログラム並べ替え部は、
前記不揮発性半導体メモリに格納されたプログラムを読み出し、中央処理装置がプログラムを実行できるように前記命令コードを正規の順番に並べ替える並べ替え部と、
前記並べ替え部が命令コードを並べ替えたプログラムを格納するバッファ部とを備え、
前記中央処理装置は、前記バッファ部にアクセスしてプログラムを実行することを特徴とする半導体集積回路装置。
【請求項5】
請求項1〜4のいずれか1項に記載の半導体集積回路装置において、
識別フラグを格納するフラグ格納部を備え、
前記フラグ格納部に格納された識別フラグがアクティブの際には、
前記中央処理装置が、前記バッファ部に格納されているプログラムを実行し、
前記フラグ格納部に格納された識別フラグがインアクティブの際には、
前記不揮発性半導体メモリに格納されているプログラムを実行することを特徴とする半導体集積回路装置。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2008−21127(P2008−21127A)
【公開日】平成20年1月31日(2008.1.31)
【国際特許分類】
【出願番号】特願2006−192378(P2006−192378)
【出願日】平成18年7月13日(2006.7.13)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】