(57)【特許請求の範囲】
【請求項１】
データの入出力が可能な複数の記憶回路と、
あらかじめ定められたセキュリティレベル数の、かつ、入力されたセキュリティ信号の示す各セキュリティレベルに対応した一時記憶回路を備える多重化ラッチ回路と、
所定のセキュリティレベルに対応する前記複数の記憶回路のうちの所定の記憶回路への入出力を制御する制御信号、及び、前記所定のセキュリティレベルに対応する前記多重ラッチ化回路への前記セキュリティ信号を発生するＣＰＵを備え、
前記所定のセキュリティレベルに対応する前記一時記憶回路のみを前記所定の記憶回路とのデータの入出力を可能とすることを特徴とする半導体集積回路。
【請求項２】
前記多重ラッチ化回路は、データの読み出し要求があった場合に前記複数の記憶回路のうち前記セキュリティレベルに対応する一時記憶回路に記憶されたデータを出力する出力回路を備えたことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記多重ラッチ化回路は、新たにデータが前記セキュリティレベルに対応する一時記憶回路に記憶された際に、当該データと、前記所定のセキュリティレベルに対応する一時記憶回路に記憶されているデータとを比較し、比較したデータが不一致である場合に不一致信号を出力する１または複数の比較回路と、
前記比較回路から出力された不一致信号を計数し、計数結果が所定数に達した
場合に動作停止信号を出力する１または複数のカウンタ回路とを備えたことを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
前記比較回路は、比較される前記データが記憶される一時記憶回路ごとに比較するデータのビットを変更することを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
前記多重ラッチ化回路は、前記一時記憶回路に記憶されるデータと同一のデータを当該一時記憶回路が対応するセキュリティレベルよりも低位のセキュリティレベルに対応する一時記憶回路に記憶することを特徴とする請求項１〜４のいずれか１つに記載の半導体集積回路。
【請求項６】
前記多重ラッチ化回路は、書き込みされたデータのうちの一部のデータを前記一時記憶回路に記憶することを特徴とする請求項１〜５のいずれか一つに記載の半導体集積回路。
【請求項７】
前記一時記憶回路は、ラッチ回路により構成されることを特徴とする請求項１〜６のいずれか一つに記載の半導体集積回路。
【請求項８】
前記複数の記憶回路は、１または複数のＲＡＭまたはＦＲＡＭにより構成されることを特徴とする請求項１〜６のいずれか一つに記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データを保護するセキュリティ機能を有した半導体集積回路に関するものである。
【０００２】
【従来の技術】
近年、クレジットカードや銀行カード等のプラスティックカードに、マイクロコンピュータおよび不揮発性メモリを内蔵し、電子マネー等の利用を可能にしたＩＣカードの需要が高まりつつある。図１２は、ＩＣカード等の形態をとる従来の半導体集積回路の概略構成を示すブロック図である。通常、ＩＣカードは、慣用されているプラスティックカードとの共用を図るために、磁気ストライプやエンボス領域を設けており、その大きさおよび厚みを、クレジットカードや銀行カードと同じにしている。
【０００３】
よって、ＩＣカードとして機能するために、内蔵したＣＰＵ（ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）との入出力を達成する接続端子は、上記した磁気ストライプおよびエンボス領域以外の領域に配置されている。この接続端子は、ＩＳＯ（国際化標準化機構）において８個の外部端子として規格化されているが、そのうち２個は予備端子であるため、残り６端子が機能を規定されている。
【０００４】
図１２に示す半導体集積回路（ＩＣカード）１００において、接続端子Ｃ１は、カード内の回路への動作電圧供給端子であり、接続端子Ｃ２は、メモリへのデータ書き込み電圧供給端子である。また、接続端子Ｃ３は、双方向のシリアルデータ入出力端子であり、接続端子Ｃ４は、ＣＰＵ１０２への動作クロック供給端子である。そして、接続端子Ｃ５は、ＣＰＵ１０２へのリセット信号供給端子であり、接続端子Ｃ６は、グランド端子である。
【０００５】
通信インターフェース１０１は、ＣＰＵ１０２において利用できるように、接続端子Ｃ３から入力されるシリアルデータをパラレルデータに変換する。ＩＣカード１００は、通常、その製造段階において、電子マネー利用端末等（アプリケーション提供者端末）での利用を可能にするためのアプリケーションプログラムをＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０３に格納しており、ＣＰＵ１０２は、このアプリケーションプログラムに従って動作する。
【０００６】
また、ＣＰＵ１０２は、その動作時に種々の演算結果等を格納するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０４を備えている。不揮発性メモリ（たとえば、ＥＥ−ＰＲＯＭ、Ｆｌａｓｈメモリ等）１０５には、ＩＣカード１００の不正使用防止用の情報や所有者の個人情報、またはアプリケーションに依存した情報等の機密データが格納されており、コントロールバスおよびアドレスバスを介してＣＰＵ１０２からアクセスできる。不揮発性メモリ１０５に格納されたデータの外部端末（アプリケーション提供者端末）との入出力は、ＣＰＵデータバス、ＣＰＵ１０２および通信インターフェース１０１を介して行われる。なお、図１２において、通信インターフェイス１０１、ＣＰＵ１０２、不揮発性メモリ１０５は、説明上、ＩＣカード１００上にそれぞれに該当する３個のＩＣチップが搭載されているように示したが、通信インターフェイス１０１、ＣＰＵ１０２、不揮発性メモリ１０５をまとめて１チップ化したものであってもよい。
【０００７】
以上のように、不揮発性メモリ１０５に格納された機密データは、アプリケーション提供者端末以外による不当なアクセスから保護されなければならない。よって、通常、ＩＣカード１００を利用する際、すなわち、ＩＣカード１００が外部との通信を行う際に、ＩＣカード１００とアプリケーション提供者端末との双方において、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）等の暗号化アルゴリズムによる相互認証が行われる。
【０００８】
このようなＩＣカード１００は、１枚のカードを１つの機能、すなわち特定のアプリケーションプログラムによる動作に限定され、カードの枚数の増加を招くことが懸念されていた。こうした事態を改善するため、不揮発性メモリに複数のアプリケーションプログラムを登録して、１枚のＩＣカードで各種の機能を併せ持つことを可能にしたマルチアプリケーション型のＩＣカードが提案されている。
【０００９】
マルチアプリケーション型のＩＣカードとは、具体的には、バンキングカード、クレジットカード、プリペイドカードなどの機能を１枚のカードにまとめたものである。特に、マルチアプリケーション型のＩＣカードは、アプリケーションプログラムを、ＩＣカードの製造時のみではなく、カード発行時に登録することができる。
【００１０】
よって、ＲＯＭ１０３には、コントロールバス、アドレスバス、ＣＰＵデータバス等のバス制御や通信インターフェース１０１との通信制御等の基本的な動作を行うためのシステムプログラムのみが格納され、各種アプリケーションプログラムは、不揮発性メモリ１０５に格納される。ＩＣカード１００がアプリケーションを利用するための端末に装填された際には、ＣＰＵ１０２は、不揮発性メモリ１０５内の対応するアプリケーションプログラムを直接実行するか、または、不揮発性メモリ１０５から対応するアプリケーションプログラムをＲＡＭ１０４に読み込み、読み込んだアプリケーションプログラムを実行することにより所定の動作を実現する。
【００１１】
【発明が解決しようとする課題】
しかしながら、このようなマルチアプリケーション型のＩＣカードは、多種多様なアプリケーションプログラムを登録して実行できることを特徴とする反面、例えば他の登録されたアプリケーションプログラムにおいて利用するデータを不正に読み出したり改ざんしたりすることを目的とする不正プログラムを、悪意をもってＩＣカードに読み込ませて実行させることが可能となっていた。
【００１２】
以下に不正プログラムによる動作の例を説明する。図１３は、従来の半導体集積回路においてレジスタ制御を行うプログラムを示す説明図である。このプログラムは、特に、ＲＯＭ１０３に格納されたシステムプログラムにおいてレジスタ制御を行う命令から構成されている。図１３に示すように、通常、ＣＰＵ１０２は、内部に演算処理用のレジスタをいくつか備えており、そのレジスタを介して、ＲＡＭ１０４や不揮発性メモリ１０５に格納されるデータの処理を行う。
【００１３】
図１３に示すＰｒｏｇｒａｍ１では、まず、ＭＯＶ命令により、レジスタの１つであるＡｃｃ（アキュムレータ）に値“ｘｘ”を書き込む。つぎに、同じくＭＯＶ命令によって、Ａｃｃに格納された値、すなわち“ｘｘ”を、ｒｅｇ１（レジスタ）に書き込む。
【００１４】
このように、ＲＯＭ１０３に格納されたプログラムは、直接改ざんすることはできないが、マルチアプリケーション型のＩＣカードにおいては、アプリケーションプログラムをＲＡＭ１０４に読み込み、そのＲＡＭ１０４上において実行することができるので、図１３に示したようなＲＯＭ１０３上のプログラムを、容易にＲＡＭ１０４上に複製することができる場合がある。
【００１５】
図１４は、従来の半導体集積回路において実行される不正プログラムの例を示す説明図である。このプログラムは、図１３に示したレジスタ制御を行うプログラムを複製し、複製したプログラムにデータの書き込みを確認するための命令を付加した構成となっている。図１４に示すＰｒｏｇｒａｍ２では、まず、ＭＯＶ命令により、Ａｃｃに、本来ならば値“ｘｘ”が書き込まれているところを、改ざんを目的として値“ｙｙ”を書き込む。
【００１６】
つぎに、同じくＭＯＶ命令によって、Ａｃｃに格納された値、すなわち“ｙｙ”を、ｒｅｇ１に書き込む。そして、再びＭＯＶ命令によって、ｒｅｇ１に格納された値をＡｃｃに読み込み、このＡｃｃを参照することで、改ざん結果を確認することができる。
【００１７】
ところで、Ｐｒｏｇｒａｍ２のプログラムを動作させた際に、ＲＯＭ１０３のシステムプログラムまたは不揮発性メモリ１０５に登録されたアプリケーションプログラムにおいて、ｒｅｇ１に対して書き込みプロテクトが施されている場合には、図１４のライン（２）の命令は、正しく実行されない。図１５は、従来の半導体集積回路において不正プログラムを実行させた場合の動作を示す説明図であり、上述した書き込みプロテクトの施されたｒｅｇ１（レジスタ）に対して、図１４に示すＰｒｏｇｒａｍ２を実行させた場合の動作を示す。
【００１８】
図１５のライン（１）において、まず、値“ｙｙ”をＡｃｃに書き込む（Ａｃｃ（ｙｙ））。つぎに、ライン（２）において、Ａｃｃに格納された値、すなわち“ｙｙ”を、ｒｅｇ１に書き込むための命令を実行する。ところが、ｒｅｇ１は、書き込みプロテクトが施されており、実際には、ｒｅｇ１のデータは変更されずに、値“ｘｘ”を示したままである。
【００１９】
つづくライン（３）において、ｒｅｇ１に格納されたデータをＡｃｃに読み込み、改ざん結果を確認する。ここで、不正プログラムを実行させた不正者は、ｒｅｇ１に値“ｙｙ”が書き込まれていないことに気付き、ｒｅｇ１に書き込みプロテクトが施されていることを知り得る。
【００２０】
書き込みプロテクトの施されているデータは、一般に機密データであり、不正者は、ｒｅｇ１のデータが機密データであることを知ることができる。これにより、不正者は、改ざんを目的としたプログラムが意図どおりに動かない場合の原因究明をすることにより、機密データを改ざんする不正プログラムを作成・改良するためのヒントを得ることができ、より重大な不正を招く可能性が生じる。
【００２１】
本発明は、上記に鑑みてなされたものであって、データの改ざんを防止するとともに、データを改ざんする不正プログラムが作成・改良されるためのヒントの取得を困難にするセキュリティ機能を有した半導体集積回路を提供することを目的とする。
【００２２】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するために、請求項１の発明にかかる半導体集積回路にあっては、書き込みデータを記憶する複数の記憶回路を備え、前記データを当該データの書き込み／読み出しに関するセキュリティレベルに対応して前記複数の記憶回路のうちの所定の記憶回路に記憶するとともに、前記セキュリティレベルのうち所定のセキュリティレベルに対応する記憶回路のみを前記データを利用する所定回路と接続するレジスタを有することを特徴とする。
【００２３】
この請求項１の発明によれば、所定のセキュリティレベルのデータのみを当該データを利用する所定回路へ出力することができ、それ以外のセキュリティレベルのデータは書き込み処理をおこなっても前記所定回路へ出力しないようにすることができる。
【００２４】
また、請求項２の発明にかかる半導体集積回路にあっては、請求項１の発明において、前記レジスタは、データの読み出し要求があった場合に前記複数の記憶回路のうち前記セキュリティレベルに対応する記憶回路に記憶されたデータを出力する出力回路を備えたことを特徴とする。
【００２５】
この請求項２の発明によれば、セキュリティレベルに対応した記憶回路に記憶されたデータを出力することにより、操作者に対して所定回路へのデータの書き込みがなされたように見せかけることができる。
【００２６】
また、請求項３の発明にかかる半導体集積回路にあっては、請求項１または２の発明において、前記レジスタは、新たにデータが前記セキュリティレベルに対応する記憶回路に記憶された際に、当該データと、前記所定のセキュリティレベルに対応する記憶回路に記憶されているデータとを比較し、比較したデータが不一致である場合に不一致信号を出力する１または複数の比較回路と、前記比較回路から出力された不一致信号を計数し、計数結果が所定数に達した場合に動作停止信号を出力する１または複数のカウンタ回路と、を備えたことを特徴とする。
【００２７】
この請求項３の発明によれば、データの不一致が所定回数に達すると動作停止信号が出力されることにより、動作停止機能を実現することができる。
【００２８】
また、請求項４の発明にかかる半導体集積回路にあっては、請求項３の発明において、前記比較回路は、比較されるデータが記憶される記憶回路ごとに比較するデータのビットを変更することを特徴とする。
【００２９】
この請求項４の発明によれば、比較するデータのビットを記憶回路ごとに変更し、変更したビットのみを比較するので、すべてのビットについて比較する必要がなく、請求項３の発明よりさらに高速でデータの比較ができる。
【００３０】
また、請求項５の発明にかかる半導体集積回路にあっては、請求項１〜４のいずれか一つの発明において、前記レジスタは、前記記憶回路に記憶されるデータと同一のデータを当該記憶回路が対応するセキュリティレベルよりも低位のセキュリティレベルに対応する記憶回路に記憶することを特徴とする。
【００３１】
この請求項５の発明によれば、所定のセキュリティレベルに対応する記憶回路に記憶されるデータと同一のデータをそれ以外の記憶回路に記憶することにより、実際に所定回路において使用する書き込みデータについて、操作者に対して正しくデータの書き込みがなされたように見せかけることができる。
【００３２】
また、請求項６の発明にかかる半導体集積回路にあっては、請求項１〜５のいずれか一つの発明において、前記レジスタは、書き込みされたデータのうちの一部のデータを前記記憶回路に記憶することを特徴とする。
【００３３】
この請求項６の発明によれば、所定回路に書き込むデータの一部のみをレジスタの所定の記憶回路に記憶するので、当該記憶回路の容量を小さくできるとともに、レジスタにおけるデータの書き込み／読み出し処理を高速でおこなうことができる。
【００３４】
また、請求項７の発明にかかる半導体集積回路にあっては、請求項１〜６のいずれか一つの発明において、前記記憶回路は、ラッチ回路により構成されることを特徴とする。
【００３５】
この請求項７の発明によれば、記憶回路をラッチ回路によって実現するので、データの書き込み／読み出しを高速でおこなうことができる。
【００３６】
また、請求項８の発明にかかる半導体集積回路にあっては、請求項１〜６のいずれか一つの発明において、前記複数の記憶回路は、１または複数のＲＡＭまたはＦＲＡＭにより構成されることを特徴とする。
【００３７】
この請求項８の発明によれば、記憶回路をＲＡＭまたはＦＲＡＭによって実現するので、レジスタを小型化することができる。
【００３８】
【発明の実施の形態】
以下に、本発明にかかる半導体集積回路の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００３９】
（実施の形態１）
図１は、実施の形態１にかかる半導体集積回路の概略構成を示すブロック図である。図１は、特にＩＣカードの形態をとる半導体集積回路１０を示している。図１において、半導体集積回路１０（ＩＣカード）は、６つの接続端子Ｃ１〜Ｃ６と、通信インターフェース１１と、ＣＰＵ１２と、不揮発性メモリ１５と、多重化ラッチ回路１６と、を備える。
【００４０】
接続端子Ｃ１〜Ｃ６および通信インターフェース１１については、前述した図１２において説明したとおりであるので、ここでは、それらの説明を省略する。ＩＣカード１０が、図１２に示したＩＣカード１００と異なる点は、多重化ラッチ回路１６（レジスタ）を新たに設けたことである。ＣＰＵ１２は、不揮発性メモリ（ＥＥ−ＰＲＯＭ、Ｆｌａｓｈメモリ、ＦＲＡＭ等を含む）１５内のアプリケーションプログラムを直接実行するか、不揮発性メモリ１５からアプリケーションプログラムを一旦ＲＡＭ１４に読み込んで、読み込んだアプリケーションプログラムを実行することにより動作を実現する。但し、ＣＰＵ１２と不揮発性メモリ１５とのデータの入出力は、ＲＯＭ１３に格納されたシステムプログラムによって、多重化ラッチ回路１６を経由して行われる。
【００４１】
多重化ラッチ回路１６は、あらかじめ定められたセキュリティレベル数の、且つ各セキュリティレベルに対応した一時記憶回路（ラッチ、図示は省略する）を備えている。この一時記憶回路は、多重化ラッチ回路１６に入力されたセキュリティ信号の示すセキュリティレベルに対応して、それぞれ活性化される。例えば、セキュリティレベル３の示すセキュリティ信号が多重化ラッチ回路１６に入力された場合には、セキュリティレベル３に対応する一時記憶回路が活性化する。
【００４２】
例えば、ＣＰＵ１２詳しくはアプリケーションプログラムから、データの書き込み命令が発せられると、その書き込み命令は、コントロールバス３を介し、書き込み信号として多重化ラッチ回路１６に入力される。この際、ＣＰＵ１２は、書き込み対象となるデータをＣＰＵデータバス４上に出力する。
【００４３】
また、上記書き込み信号は、コントロールバス２を介して不揮発性メモリ１５にも入力される。さらに、書き込み先のアドレスを示すアドレス信号が、アドレスバス１を介して不揮発性メモリ１５に入力される。
【００４４】
ここで、ＣＰＵ１２は、多重化ラッチ回路１６に対して、書き込み信号の他に、動作中のアプリケーションプログラムが使用するレジスタに対して定められたセキュリティレベルのセキュリティ信号を入力する。
【００４５】
そして、多重化ラッチ回路１６は、入力したセキュリティ信号の示すセキュリティレベルに対応する一時記憶回路を活性化させ、活性化した一時記憶回路に、ＣＰＵデータバス４上のデータを入力して記憶する。
【００４６】
一方、ＣＰＵ１２詳しくはアプリケーションプログラムから、データの読み出し命令が発せられると、その読み出し命令は、コントロールバス３を介し、読み出し信号として多重化ラッチ回路１６に入力される。
【００４７】
また、この読み出し信号は、コントロールバス２を介して不揮発性メモリ１５にも入力される。さらに、読み出し元のアドレスを示すアドレス信号が、アドレスバス１を介して不揮発性メモリ１５に入力される。
【００４８】
ここで、ＣＰＵ１２は、多重化ラッチ回路１６に対して、読み出し信号の他に、上記セキュリティ信号を、コントロールバス３を介して入力する。そして、多重化ラッチ回路１６は、入力したセキュリティ信号の示すセキュリティレベルに対応する一時記憶回路を活性化させ、活性化した一時記憶回路から、ＣＰＵデータバス４上にデータを出力する。
【００４９】
以上に説明した書き込み／読み出し命令に対して、最高位のセキュリィティレベルに対応する一時記憶回路においてのみ、不揮発性メモリ１５等の内部回路（所定回路）とのデータ入出力を可能としている。以下に、セキュリィティ信号が最高位のセキュリィティレベルを示す場合のデータの書き込み／読み出し動作について説明する。
【００５０】
まず、データの書き込み動作において、ＣＰＵ１２は、書き込み命令を示す書き込み信号を、コントロールバス２を介して不揮発性メモリ１５と、コントロールバス３を介して多重化ラッチ回路１６に入力する。また同時に、ＣＰＵ１２は、データの書き込み先を示すアドレス信号を、不揮発性メモリ１５にアドレスバス１を介して入力し、書き込み対象となるデータをＣＰＵデータバス４上に出力する。多重化ラッチ回路１６においては、ＣＰＵデータバス４上のデータを最高位のセキュリティレベルに対応する一時記憶回路に入力して一時的に記憶する。
【００５１】
最高位のセキュリティレベルに対応する一時記憶回路は、メモリデータバス５に接続されており、一時記憶回路に一旦記憶されたデータは、メモリデータバス５上に出力される。不揮発性メモリ１５においては、メモリデータバス５上のデータを取り込み、取り込んだデータを、上記アドレス信号の示す記憶領域に転送して記憶する。
【００５２】
一方、データの読み出し動作において、ＣＰＵ１２は、読み出し命令を示す読み出し信号を、コントロールバス２を介して不揮発性メモリ１５と、コントロールバス３を介して多重化ラッチ回路１６に入力する。また同時に、ＣＰＵ１２は、データの読み出し元を示すアドレス信号を、不揮発性メモリ１５にアドレスバス１を介して入力する。不揮発性メモリ１５においては、上記アドレス信号の示す記憶領域からデータを取り出し、取り出したデータをメモリデータバス５に出力する。
【００５３】
ＣＰＵ１２は、ＣＰＵデータバス４と最高位のセキュリティレベルに対応する一時記憶回路とを介して、メモリデータバス５上のデータを読み出す。
【００５４】
つぎに、多重化ラッチ回路１６の回路構成について説明する。図２は、実施の形態１にかかる多重化ラッチ回路の回路構成を示す回路図である。図２において、ＷＲＳ信号およびＲＤＳ信号は、上述した書き込み信号および読み出し信号に相当する。また、図２に示す多重化ラッチ回路１６は、セキュリティレベル１および２の２つのレベルにそれぞれ対応した一時記憶回路を備えており、ＳＥＣＵ１信号およびＳＥＣＵ２信号が、セキュリティレベル１および２にそれぞれ対応するセキュリティ信号である。
【００５５】
前述した一時記憶回路は、ＣＰＵデータバス４上のデータを入力するラッチ回路（記憶回路）と、そのラッチ回路に記憶されたデータを読み出し、読み出したデータをＣＰＵデータバス４上に出力するデータバスドライバ（出力回路）とから構成される。図２においては、セキュリティレベル１に対応するラッチ回路２１の入力と、セキュリティレベル２に対応するラッチ回路２３の入力とがＣＰＵデータバス４上に接続されており、データＤ０〜Ｄ７を入力する。
【００５６】
また、セキュリティレベル１に対応するデータバスドライバ２２の出力と、セキュリティレベル２に対応するデータバスドライバ２４の出力とがＣＰＵデータバス４上に接続されており、それぞれラッチ回路２１および２３に記憶されたデータを、データＤ０〜Ｄ７としてＣＰＵデータバス４上に出力する。なお、ラッチ回路２１および２３と、データバスドライバ２２および２４は、それぞれイネーブル端子に“Ｌ”レベルの信号を入力することで活性化される。
【００５７】
また、多重化ラッチ回路１６は、４つのＮＡＮＤゲート２５〜２８を備えている。ＮＡＮＤゲート２５は、その出力をラッチ回路２１のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ１信号を入力し、他方の入力端子からＷＲＳ信号を入力する。よって、ＮＡＮＤゲート２５は、ＳＥＣＵ１信号およびＷＲＳ信号がともに“Ｈ”レベルを示す場合に限り、ＡＰＷ信号として、“Ｌ”レベルを示す信号を出力し、ラッチ回路２１を活性化、すなわちＣＰＵデータバス４上のデータＤ０〜Ｄ７をラッチして記憶させることができる。
【００５８】
ＮＡＮＤゲート２６は、その出力をデータバスドライバ２２のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ１信号を入力し、他方の入力端子からＲＤＳ信号を入力する。よって、ＮＡＮＤゲート２６は、ＳＥＣＵ１信号およびＲＤＳ信号がともに“Ｈ”レベルを示す場合に限り、ＡＰＲＤ信号として、“Ｌ”レベルを示す信号を出力し、データバスドライバ２２を活性化、すなわちＣＰＵデータバス４上に、ラッチ回路２１に記憶されたデータを出力させることができる。
【００５９】
ＮＡＮＤゲート２７は、その出力をラッチ回路２３のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ２信号を入力し、他方の入力端子からＷＲＳ信号を入力する。よって、ＮＡＮＤゲート２７は、ＳＥＣＵ２信号およびＷＲＳ信号がともに“Ｈ”レベルを示す場合に限り、ＥＦＷ信号として、“Ｌ”レベルを示す信号を出力し、ラッチ回路２３を活性化、すなわちＣＰＵデータバス４上のデータＤ０〜Ｄ７をラッチして記憶させることができる。
【００６０】
ＮＡＮＤゲート２８は、その出力をデータバスドライバ２４のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ２信号を入力し、他方の入力端子からＲＤＳ信号を入力する。よって、ＮＡＮＤゲート２８は、ＳＥＣＵ２信号およびＲＤＳ信号がともに“Ｈ”レベルを示す場合に限り、ＥＦＲＤ信号として、“Ｌ”レベルを示す信号を出力し、データバスドライバ２４を活性化、すなわちＣＰＵデータバス４上に、ラッチ回路２３に記憶されたデータを出力させることができる。
【００６１】
さらに、最高位のセキュリティレベルであるセキュリティレベル２に対応するラッチ回路２３の出力Ｑ０〜Ｑ７およびデータバスドライバ２４の入力は、不揮発性メモリ１５等の内部回路へ接続されている。よって、ラッチ回路２３に記憶されたデータは、データＭＤ０〜ＭＤ７として、内部回路へ出力することができる。
【００６２】
従って、多重化ラッチ回路１６は、最高位のセキュリティレベルを示すセキュリティレベル信号が“Ｈ”レベルとして入力された場合に限り、最高位のセキュリティレベルに対応したラッチ回路２３またはデータバスドライバ２４を介して、ＣＰＵデータバス４との接続を果たし、かつ内部回路へのアクセスを可能にする。
【００６３】
図３は、実施の形態１にかかるラッチ回路およびデータバスドライバの回路構成を示す回路図である。図３において、ラッチ回路２１は、データＤ０〜Ｄ７の各対応するビットをデータ入力端子Ｄに入力してラッチするＤラッチＡＬ０〜ＡＬ７を備えている。ラッチ回路２１の各Ｄラッチは、ラッチイーブル端子ＣにＡＰＷ信号を入力し、ラッチイーブル反転端子ＣＸにインバータＡＴ１を介してＡＰＷ信号の反転信号を入力しており、ＡＰＷ信号が“Ｈ”レベルを示す場合に、各データ入力端子Ｄに入力されるビットデータをラッチする。また、ラッチ回路２１の各Ｄラッチは、データ出力端子Ｑをデータバスドライバ２２に接続している。
【００６４】
つぎに、データバスドライバ２２は、ラッチ回路２１のＤラッチＡＬ０〜ＡＬ７の各データ出力端子Ｑから、ラッチされたビットデータを読み取り、読み取ったビットデータをＣＰＵデータバス４上に出力するトランスファゲートＡＳ０〜ＡＳ７を備えている。
【００６５】
トランスファゲートＡＳ０〜ＡＳ７の一方の接点端子は、それぞれラッチ回路２１のＤラッチＡＬ０〜ＡＬ７のデータ出力端子Ｑに対応して、ＤラッチＡＬ７のデータ出力端子ＱとトランスファゲートＡＳ７の一方の接点端子、ＤラッチＡＬ６のデータ出力端子ＱとトランスファゲートＡＳ６の一方の接点端子、．．．ＤラッチＡＬ０のデータ出力端子ＱとトランスファゲートＡＳ０の一方の接点端子、のように接続されている。
【００６６】
また、トランスファゲートＡＳ０〜ＡＳ７の他方の接点端子は、それぞれＣＰＵデータバス４に接続されたデータバスＤＢ０〜ＤＢ７に対応して、トランスファゲートＡＳ７の他方の接点端子とデータバスＤＢ７、トランスファゲートＡＳ６の他方の接点端子とデータバスＤＢ６、．．．トランスファゲートＡＳ０の他方の接点端子とデータバスＤＢ０、のように接続されている。
【００６７】
また、各トランスファゲートは、一方の制御端子にＡＰＲＤ信号を入力し、他方の制御端子にインバータＡＴ２を介してＡＰＲＤ信号の反転信号を入力している。よって、ＡＰＲＤ信号が“Ｈ”レベルを示す場合に、各トランスファゲートはＯＮ状態となり、ＤラッチＡＬ０〜ＡＬ７にラッチされたデータは、データバスＤＢ０〜ＤＢ７上に出力される。例えば、ＤラッチＡＬ７の出力が“Ｈ”レベルを示す場合は、データバスＤＢ７上に“Ｈ”レベルの信号が出力される。
【００６８】
よって、ラッチ回路２１は、セキュリティレベル１に対する書き込み信号であるＡＰＷ信号が“Ｈ”レベルを示した場合に、各ＤラッチによってＣＰＵデータバス４上のデータＤ０〜Ｄ７をラッチし、データバスドライバ２２は、セキュリティレベル１に対する読み出し信号であるＡＰＲＤ信号が“Ｈ”レベルを示した場合に、各ＤラッチにおいてラッチされたデータをＣＰＵデータバス４上にデータＤ０〜Ｄ７として出力する。従って、ＣＰＵ１２は、セキュリティレベル１に設定したアドレスへのアクセスに対しては、多重化ラッチ回路１６内のみに対するデータ入出力を行い、内部回路へはアクセスしない。
【００６９】
一方、セキュリティレベル２に対応するラッチ回路２３もまた、ラッチ回路２１と同様な構成であり、ＤラッチＥＬ０〜ＥＬ７およびインバータＥＴ１を備えている。ラッチ回路２３においては、各ＤラッチにＥＦＷ信号を入力し、ＥＦＷ信号が“Ｈ”レベルを示す場合に、各データ入力端子Ｄに入力されるビットデータをラッチする。
【００７０】
データバスドライバ２４もまた、データバスドライバ２２と同様な構成であり、トランスファゲートＥＳ０〜ＥＳ７およびインバータＥＴ２を備えている。データバスドライバ２４においては、各トランスファゲートに、ＥＦＲＤ信号を入力し、ＥＦＲＤ信号が“Ｈ”レベルを示す場合に、各ＤラッチにラッチされたデータをデータバスＤＢ０〜ＤＢ７上に出力する。
【００７１】
ここで、ラッチ回路２３の各Ｄラッチの出力端子とデータバスドライバ２４の各トランスファゲートの一方の入力端子は、メモリデータバス５に接続されている。よって、例えば、ＤラッチＥＬ７の出力は、データＭＤ７として内部回路へ送出することができ、また、トランスファゲートＥＳ７を介して、ＣＰＵデータバス４上に出力することができる。
【００７２】
よって、ラッチ回路２３は、最高位のセキュリティレベル２に対する書き込み信号であるＥＦＷ信号が“Ｈ”レベルを示した場合に、各ＤラッチによってＣＰＵデータバス４上のデータＤ０〜Ｄ７をラッチし、同時に、ラッチしたデータＤ０〜Ｄ７を内部回路へデータＭＤ０〜ＭＤ７として出力する。
【００７３】
また、データバスドライバ２４は、最高位のセキュリティレベル２に対する読み出し信号であるＥＦＲＤ信号が“Ｈ”レベルを示した場合に、各ＤラッチにおいてラッチされたデータをＣＰＵデータバス４上にデータＤ０〜Ｄ７として出力する。従って、ＣＰＵ１２は、セキュリティレベル２に設定したアドレスへのアクセスに対しては、多重化ラッチ回路１６とのデータ入出力とともに、内部回路へのアクセスを可能にする。
【００７４】
なお、図３においては、ラッチ回路２１およびラッチ回路２３の各ＤラッチをリセットするためのＲＥＳＥＴ信号を示しており、このＲＥＳＥＴ信号は、コントロールバス３を介してＣＰＵ１２から出力される。
【００７５】
図４は、実施の形態１にかかる半導体集積回路において不正プログラムを実行させた場合の動作を示す説明図であり、前述した図１４に示すレジスタ制御の不正プログラムを実行させた場合の結果を示している。まず、図４のライン（１）において、Ａｃｃに値“ｙｙ”を書き込む。つぎに、ライン（２）において、Ａｃｃに格納された値、すなわち“ｙｙ”を、ｒｅｇ１に書き込むための命令を実行する。
【００７６】
ここで、正常のプログラムであればｒｅｇ１に対して、最高位のセキュリティレベルを示すセキュリティ信号が多重化ラッチ回路１６に入力されるところ、図１４に示したような不正プログラムにおいては、常に最低位のセキュリティレベルで動作するものであるため、最低のセキュリティレベルを示すセキュリティ信号が出力され、最高位のセキュリティレベルを示すセキュリティ信号は出力されない。
【００７７】
よって、図４のライン（２）に示す命令は、多重化ラッチ回路１６の最低位のセキュリティレベルに対応するラッチ回路に入力され、内部回路へはアクセスしない。この段階で、内部回路に格納されている機密データの保護が達成される。しかしながら、ライン（３）において、ｒｅｇ１のデータのＡｃｃへの読み出しは、多重化ラッチ回路１６内のラッチ回路が対象となるので、Ａｃｃには、ライン（２）において書き込まれた値“ｙｙ”が読み込まれる。これにより、不正者は、実行した不正プログラムによってデータの改ざんが行われたことを確認するので、ｒｅｇ１に対して、書き込みプロテクト等のセキュリティが施されていることを知り得ない。
【００７８】
また、仮に不正者が、不正プログラムの結果を反映されないことに気付いたとしても、改ざん対象となるレジスタのデータは、一見して不正プログラムによって書き換えられている様に見えるため、問題点を特定することができず、半導体集積回路に悪影響を与えようとする試みは困難になる。
【００７９】
なお、実施の形態１においては、セキュリティレベル数を２つとしたが、それ以上でも良く、その場合にはラッチ回路とデータバスドライバからなる一時記憶回路を各セキュリティレベルに対応させて備える必要がある。
【００８０】
以上に説明したように実施の形態１にかかる半導体集積回路によれば、多重化ラッチ回路１６によって、ＣＰＵ１２からの書き込み命令およびセキュリティレベル信号に応じて、ＣＰＵ１２からデータを入力して記憶するラッチ回路と、ＣＰＵ１２からの読み出し命令および前記セキュリティレベル信号に応じて、ラッチ回路２１および２３に記憶されたデータを前記ＣＰＵ１２に出力するデータバスドライバ２２および２４とからなる、所定のセキュリティレベル数の組を、設けて、最高位のセキュリティレベルに対応するラッチ回路２３に記憶されたデータのみを内部回路（所定回路）へ出力するので、ＣＰＵ１２において実行されるアプリケーションプログラムが、最高位のセキュリティレベルを示すセキュリティ信号を出力しない限り、内部回路にアクセスすることができず、多重化ラッチ回路１６内のラッチ回路２１のみの使用によるデータ入出力が行われて、セキュリティ信号の出力命令を含まない不正プログラムから、内部回路内の機密データを保護することができる。
【００８１】
また、不正者に対して、表面上、不正プログラムによる改ざんが達成したように見せかけることができるため、不正者による新たな不正プログラムによる対応を困難にしている。
【００８２】
（実施の形態２）
つぎに、実施の形態２にかかる半導体集積回路について説明する。実施の形態２にかかる半導体集積回路は、実施の形態１にかかる半導体集積回路の多重化ラッチ回路において、その回路構成が異なる。よって、ここでは、多重化ラッチ回路について説明する。
【００８３】
図５は、実施の形態２にかかる半導体集積回路の多重化ラッチ回路の回路構成を示す回路図である。図５において、多重化ラッチ回路３０は、特に、実施の形態１において示した多重化ラッチ回路１６に、さらに、比較回路３１およびカウンタ３２を付加している。その他のラッチ回路２１および２３、データバスドライバ２２および２４、ＮＡＮＤゲート２５〜２８の構成と動作は、実施の形態１において説明したとおりであるので、ここではその説明を省略する。
【００８４】
図５において、比較回路３１は、最低位のセキュリティレベルに対応するラッチ回路２１の出力と、最高位のセキュリティレベルに対応するラッチ回路２３の出力においてメモリデータバス５に接続されており、ラッチ回路２１に記憶されたデータとメモリデータバス５上のデータとの比較を行う。
【００８５】
ここで、ＩＣカード等の形態をとる半導体集積回路を使用する際、アプリケーション提供者端末から認証コードの入力が求められ、使用者は、半導体集積回路を装填した端末に付属した入力装置を介して、その認証コードを入力することが一般的に行われている。この際、実施の形態２にかかる半導体集積回路上で実行されるアプリケーションプログラムは、例えば最低位のセキュリティレベル１を示すセキュリティ信号と、書き込み信号（ＷＲＳ信号）と、使用者によって入力された認証コードを示すデータＤ０〜Ｄ７とを多重化ラッチ回路３０に入力する。この際、認証コードを示すデータＤ０〜Ｄ７は、多重化ラッチ回路３０のセキュリティレベル１に対応するラッチ回路２１に入力される。
【００８６】
一方、上記したアプリケーションプログラムは、データバスドライバ２４を活性化し、あらかじめラッチ回路２３に記憶されていた正しい認識コードを示すデータを出力する。
【００８７】
そして、比較回路３１は、ラッチ回路２１の出力、すなわち使用者によって入力された認証コードを示すデータと、すなわち正しい認証コードを示すデータとの比較を行い、データの不一致を示す場合に、不一致信号を出力する。ここで、不一致信号は、カウンタ３２に入力される。
【００８８】
カウンタ３２においては、このようにして発生した不一致信号の発生回数を計数する。そして、カウンタ３２において計数された回数が所定回数に達した際に、動作停止信号をＣＰＵ１２に向けて出力する。ＣＰＵ１２において、この動作停止信号を受け取った際には、書き換えが失敗したことを知らせないような動作停止機能を実行する。
【００８９】
つぎに、ＣＰＵ１２において、アプリケーションプログラムとして実施の形態１に示したような不正プログラムが実行される場合の多重化ラッチ回路３０の動作を説明する。ここでは、上記不正プログラムが、内部回路においてあらかじめ最高位のセキュリティレベルに設定された機密データに対して、データの改ざんを行う場合を考える。
【００９０】
まず、不正プログラムにおいて、あらたなデータによる上記機密データの書き換え命令が発せされる。ここで、正常のプログラムであれば、最高位のセキュリティレベルを示すセキュリティ信号が多重化ラッチ回路３０に入力されるところ、不正プログラムにおいては、常に最低位のセキュリティレベルで動作するものであるため、最低のセキュリティレベルを示すセキュリティ信号が出力され、最高位のセキュリティレベルを示すセキュリティ信号は出力されない。
【００９１】
よって、不正プログラムからＣＰＵデータバス４上に出力される新たなデータは、多重化ラッチ回路３０に入力される書き込み信号によって、最低位のセキュリティレベルに対応するラッチ回路２１に記憶される。
【００９２】
上記新たなデータの記憶が完了後、ＣＰＵ１２は、最低位のセキュリティレベル信号（ＳＥＣＵ１）と最高位のセキュリティレベル信号（ＳＥＣＵＥ２）を多重化ラッチ回路３０に入力する。これにより、ラッチ回路２１に記憶された新たなデータおよびラッチ回路２３に記憶された機密データが比較回路３１に入力される。
【００９３】
この場合、カウンタ３２において計数される数は、不正プログラムにおいて、前述したような機密データへの不正なアクセスが生じた回数に相当する。
【００９４】
なお、以上に説明した実施の形態２の説明において、比較回路３１は、データのすべてに対する比較を行っても良いし、データを構成するデータビットの一部のみに対する比較を行っても良い。特に、設定されたセキュリティレベル数を、３つ以上とした場合には、最高位以外のセキュリティレベル毎に、メモリデータバス上のデータと比較するデータビットの数を変化させることができる。
【００９５】
図６は、実施の形態２にかかる比較回路の動作を示す説明図であり、４つのセキュリティレベルが設定されている場合のデータの比較例を示している。図６（ａ）は、すべてのセキュリティレベル１〜４に対応するラッチ回路の相互間において、すべてのデータビットに対する比較を行うことを示している。なお、セキュリティレベル１が最低位のセキュリティレベルを示し、セキュリティレベル４が最高位のセキュリティレベルを示す。
【００９６】
また、図６（ｂ）は、セキュリティレベル２に対応するラッチ回路が比較対象のラッチ回路として選択された場合に、最高位のセキュリティレベル４のラッチ回路のデータのすべてのデータビットと、セキュリティレベル２に対応するラッチ回路のデータのすべてのデータビットとの比較を行うことを示している。
【００９７】
また、図６（ｃ）は、すべてのセキュリティレベル１〜４に対応するラッチ回路の相互間において、データ上のデータビット０、１、４、５、７に対する比較を行うことを示している。
【００９８】
また、図６（ｄ）は、ラッチ回路のデータにおいて、データビット０に対しては、すべてのセキュリティレベル１〜４に対応するラッチ回路の相互間において比較を行い、データビット２に対しては、セキュリティレベル１とセキュリィティレベル４にそれぞれ対応するラッチ回路の相互間において比較を行う。また、データビット３および６に対しては、セキュリティレベル２〜４にそれぞれ対応するラッチ回路の相互間において比較を行い、データビット５に対しては、セキュリティレベル２とセキュリィティレベル４にそれぞれ対応するラッチ回路の相互間において比較を行い、データビット７に対しては、セキュリティレベル２とセキュリィティレベル３にそれぞれ対応するラッチ回路の相互間において比較を行うことを示している。
【００９９】
以上に説明したように実施の形態２にかかる半導体集積回路によれば、実施の形態１にかかる半導体集積回路の多重化ラッチ回路１６において、さらに、最高位以外のセキュリティレベルに対応するラッチ回路２１のデータと、最高位のセキュリティレベルに対応するラッチ回路２１のデータとを比較し、不一致を示す場合に不一致信号を出力する比較回路３１と、その不一致信号の発生回数を所定数カウントした場合にエラー信号を出力するカウンタ３２と、備えているので、実施の形態１にかかる半導体集積回路による効果に加えて、半導体集積回路の不正使用を防止し、内部回路において使用される機密データの改ざんを防止することができる。
【０１００】
（実施の形態３）
つぎに、実施の形態３にかかる半導体集積回路について説明する。実施の形態３にかかる半導体集積回路は、実施の形態２にかかる半導体集積回路の多重化ラッチ回路において、その回路構成が異なる。よって、ここでは、多重化ラッチ回路について説明する。
【０１０１】
図７は、実施の形態３にかかる半導体集積回路の多重化ラッチ回路４０の回路構成を示す回路図である。図７において、多重化ラッチ回路４０は、特に、実施の形態２において示した多重化ラッチ回路３０に、さらに比較回路およびカウンタを付加し、各カウンタの出力をＯＲゲートに入力して、そのＯＲゲートの出力を動作停止信号としている。ラッチ回路２１および２３、データバスドライバ２２および２４、ＮＡＮＤゲート２５〜２８の構成と動作は、実施の形態１において説明したとおりであるので、ここではその説明を省略する。
【０１０２】
図７において、比較回路４１および比較回路４２は、ラッチ回路２１の出力と、ラッチ回路２３の出力とに接続されており、ラッチ回路２１に記憶されたデータとラッチ回路２３に記憶されたデータとの比較を行う。
【０１０３】
そして、比較回路４１および比較回路４２は、比較したデータが不一致を示す場合に、それぞれ“Ｈ”レベルを示す不一致信号を出力する。比較回路４１から出力された不一致信号は、カウンタ４３に入力され、比較回路４２において出力された不一致信号は、カウンタ４４に入力される。
【０１０４】
カウンタ４３においては、比較回路４１から入力される不一致信号の発生回数を計数し、計数結果が所定回数に達した際に、“Ｈ”レベルを示す信号をＯＲゲート４５の一方の入力端子に入力する。また、カウンタ４４においても同様に比較回路４２から入力される不一致信号の発生回数を計数し、計数結果が所定回数に達した際に、“Ｈ”レベルを示す信号をＯＲゲート４５の他方の入力端子に入力する。ＯＲゲート４５は、カウンタ４３および４４のいずれかにおいて計数結果が所定回数に達した場合に、“Ｈ”レベルを示す信号を、前述した動作停止信号をＣＰＵ１２に入力する。
【０１０５】
ここで、比較回路４１および４２においては、比較対象となるデータビットの数や構成が互いに異なることを特徴とする。例えば、比較回路４１においては、８ビットのデータ中、上位４ビットに対する比較を行い、比較回路４２においては、８ビットのデータ中、下位４ビットに対する比較を行うことができる。
【０１０６】
なお、実施の形態３の説明において、特に、設定されたセキュリティレベル数を、３つ以上とした場合には、最高位以外のセキュリティレベル毎に、メモリデータバス５上のデータと比較するデータビットの数を変化させることができる。
【０１０７】
図８は、実施の形態３にかかる比較回路の動作を示す説明図であり、３つのセキュリティレベルが設定されている場合のデータの比較例を示している。図８（ａ）は、比較回路４１において比較対象となるセキュリティレベルとデータビットの例を示しており、セキュリティレベル１（最低位）、セキュリティレベル２、セキュリティレベル３（最高位）にそれぞれ対応するラッチ回路の相互間において、データのデータビット０、１、２に対する比較を行うことを示している。
【０１０８】
また、図８（ｂ）は、比較回路４２において比較対象となるセキュリティレベルとデータビットの例を示しており、データビット３および４に対しては、セキュリティレベル２とセキュリィティレベル３にそれぞれ対応するラッチ回路の相互間において比較を行い、データビット５および６に対しては、セキュリティレベル１〜３にそれぞれ対応するラッチ回路の相互間において比較を行い、データビット７に対しては、セキュリティレベル１とセキュリィティレベル３にそれぞれ対応するラッチ回路の相互間において比較を行うことを示している。
【０１０９】
以上に説明したように実施の形態３にかかる半導体集積回路によれば、実施の形態１にかかる半導体集積回路の多重化ラッチ回路１６において、さらに、最低位のセキュリティレベル１に対応するラッチ回路２１のデータと、最高位のセキュリティレベル２に対応するラッチ回路２３のデータとを比較し、不一致を示す場合に不一致信号を出力する複数の比較回路４１および４２と、各比較回路に対応し、不一致信号の発生回数を所定数カウントした場合に動作停止信号を出力するカウンタ４３および４４と、を備えており、比較回路４１および４２において、互いに比較対象とするデータビットの数または構成が異なるので、実施の形態１にかかる半導体集積回路による効果に加えて、半導体集積回路の不正使用を防止し、内部回路において使用される機密データの改ざん防止をより一層高めることができる。
【０１１０】
（実施の形態４）
つぎに、実施の形態４にかかる半導体集積回路について説明する。実施の形態４にかかる半導体集積回路は、実施の形態１にかかる半導体集積回路の多重化ラッチ回路において、その回路構成が異なる。よって、ここでは、多重化ラッチ回路について説明する。
【０１１１】
図９は、実施の形態４にかかる半導体集積回路の多重化ラッチ回路の回路構成を示す回路図である。図９において、多重化ラッチ回路５０は、実施の形態１において示した多重化ラッチ回路１６にＯＲゲート５１を付加している。その他のラッチ回路２１および２３、データバスドライバ２２および２４、ＮＡＮＤゲート２５〜２８の構成と動作は、実施の形態１において説明したとおりであるので、ここではその説明を省略する。
【０１１２】
図９において、ＯＲゲート５１は、一方の入力端子に、セキュリティレベル１を示すセキュリティ信号であるＳＥＣＵ１信号を入力し、他方の入力端子に、セキュリティレベル２を示すセキュリティ信号であるＳＥＣＵ２信号を入力しており、出力端子をＮＡＮＤゲート２５の一方の入力端子に接続している。なお、ＮＡＮＤゲート２５の他方の入力端子は、書き込み信号であるＷＲＳ信号を入力する。
【０１１３】
このＯＲゲート５１の存在により、多重化ラッチ回路５０に対するデータの読み出し命令と、セキュリティレベル１に対応するラッチ回路２１に対するデータの書き込み命令については、実施の形態１において示した図２の動作と同じであるが、セキュリティレベル２に対応するラッチ回路２３に対するデータの書き込み命令については動作が異なる。
【０１１４】
多重化ラッチ回路５０に“Ｈ”レベルを示す書き込み信号（ＷＲＳ信号）が入力された場合、ＮＡＮＤゲート２５の一方の入力端子には“Ｈ”レベルの信号が入力され、且つ他方の入力端子に入力される信号レベルが“Ｈ”レベルを示す場合に限り、ＮＡＮＤゲート２５の出力は“Ｌ”レベルを示して、ラッチ回路２１が活性化される。
【０１１５】
ＯＲゲート５１は、ＳＥＣＵ１信号またはＳＥＣＵ２信号のいずれかが“Ｈ”レベルを示す場合に、“Ｈ”レベルの信号を出力する。すなわち、セキュリティレベル１に対応するラッチ回路２１は、セキュリティレベル１を示すＳＥＣＵ１信号が“Ｈ”レベルを示す場合だけでなく、セキュリティレベル２を示すＳＥＣＵ２信号が“Ｈ”レベルを示す場合にも、活性化されてラッチ動作を行う。
【０１１６】
よって、高位のセキュリティレベルに対応するラッチ回路に記憶されるデータが、低位のセキュリティレベルに対応するラッチ回路にも記憶される。これにより、高位のセキュリティレベルに対する書き込みが行われたデータを、低位のセキュリティレベルに対する読み出し動作において読み出すことができ、不正者が、この半導体集積回路において実行されるレジスタ制御の流れを解析して不正プログラムを作成しようとする場合、その解析を困難にすることが可能になる。
【０１１７】
なお、実施の形態４においては、セキュリティレベル数を２つとしたが、それ以上でも良く、その場合にはラッチ回路とデータバスドライバからなる一時記憶回路を各セキュリティレベルに対応させて備える必要がある。特に、この場合、或るセキュリティレベルに対応するラッチ回路に対して書き込み信号が入力され、データの記憶を行う際に、そのセキュリティレベルより低位のセキュリティレベルに対応するラッチ回路においても、同じデータが記憶されるように、上記したようなＯＲゲートを追加する。これにより、最高位のセキュリティレベルに対応するラッチ回路に対してデータの書き込み命令が発せられた場合でけでなく、どのセキュリティレベルに対応するラッチ回路に対しても、より低位のセキュリティレベルに対応するラッチ回路が存在する場合には、その低位のセキュリティレベルに対応するラッチ回路に、同じデータを記憶させることができる。
【０１１８】
また、実施の形態４においては、実施の形態２または３において説明した比較回路を付加して動作させることもできる。
【０１１９】
以上に説明したように実施の形態４にかかる半導体集積回路によれば、実施の形態１にかかる半導体集積回路の多重化ラッチ回路１６において、さらに、高位のセキュリティレベルに対する書き込み動作の際に、より低位のセキュリティレベルに対応するラッチ回路に対しても、同じデータを記憶させているので、実施の形態１にかかる半導体集積回路による効果に加えて、この半導体集積回路を解析することによる不正プログラムの作成をより困難にし、内部回路において使用される機密データの改ざんを防止することができる。
【０１２０】
（実施の形態５）
つぎに、実施の形態５にかかる半導体集積回路について説明する。実施の形態５にかかる半導体集積回路は、実施の形態１にかかる半導体集積回路の多重化ラッチ回路において、その回路構成が異なる。よって、ここでは、多重化ラッチ回路について説明する。
【０１２１】
図１０は、実施の形態５にかかる半導体集積回路の多重化ラッチ回路６０の回路構成を示す回路図である。図１０において、多重化ラッチ回路６０は、ＣＰＵデータバス４上のデータＤ４〜Ｄ７を入力するラッチ回路６１と、ラッチ回路６１に記憶されたデータを読み出し、読み出したデータをＣＰＵデータバス４上にデータＤ４〜Ｄ７として出力するデータバスドライバ６２と、ＣＰＵデータバス４上のデータＤ０〜Ｄ３を入力し、セキュリティレベル１に対応するラッチ回路６３と、ラッチ回路６３に記憶されたデータを読み出し、読み出したデータをＣＰＵデータバス４上にデータＤ０〜Ｄ３として出力し、セキュリティレベル１に対応するデータバスドライバ６２と、ＣＰＵデータバス４上のデータＤ０〜Ｄ３を入力し、セキュリティレベル２に対応するラッチ回路６５と、ラッチ回路６５に記憶されたデータを読み出し、読み出したデータをＣＰＵデータバス４上にデータＤ０〜Ｄ３として出力し、セキュリティレベル２に対応するデータバスドライバ６６と、を備える。
【０１２２】
なお、ラッチ回路６１、６３および６５と、データバスドライバ６２、６４および６６は、それぞれイネーブル端子に“Ｌ”レベルの信号を入力することで活性化される。
【０１２３】
また、多重化ラッチ回路６０は、４つのＮＡＮＤゲート６７〜７０を備えている。ＮＡＮＤゲート６７は、その出力をラッチ回路６３のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ１信号を入力し、他方の入力端子からＷＲＳ信号を入力する。よって、ＮＡＮＤゲート６７は、ＳＥＣＵ１信号およびＷＲＳ信号がともに“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、ラッチ回路６３を活性化、すなわちＣＰＵデータバス４上のデータＤ０〜Ｄ３をラッチして記憶させることができる。
【０１２４】
ＮＡＮＤゲート６８は、その出力をデータバスドライバ６４のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ１信号を入力し、他方の入力端子からＲＤＳ信号を入力する。よって、ＮＡＮＤゲート６８は、ＳＥＣＵ１信号およびＲＤＳ信号がともに“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、データバスドライバ６４を活性化、すなわちＣＰＵデータバス４上に、ラッチ回路６３に記憶されたデータをデータＤ０〜Ｄ３として出力させることができる。
【０１２５】
ＮＡＮＤゲート６９は、その出力をラッチ回路６５のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ２信号を入力し、他方の入力端子からＷＲＳ信号を入力する。よって、ＮＡＮＤゲート６９は、ＳＥＣＵ２信号およびＷＲＳ信号がともに“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、ラッチ回路６５を活性化、すなわちＣＰＵデータバス４上のデータＤ０〜Ｄ３をラッチして記憶させることができる。
【０１２６】
ＮＡＮＤゲート７０は、その出力をデータバスドライバ６６のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ２信号を入力し、他方の入力端子からＲＤＳ信号を入力する。よって、ＮＡＮＤゲート６６は、ＳＥＣＵ２信号およびＲＤＳ信号がともに“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、データバスドライバ６６を活性化、すなわちＣＰＵデータバス４上に、ラッチ回路６５に記憶されたデータをデータＤ０〜Ｄ３として出力させることができる。
【０１２７】
さらに、最高位のセキュリティレベルであるセキュリティレベル２に対応するラッチ回路６５の出力およびデータバスドライバ６６の入力は、データＭＤ０〜ＭＤ３に対応して接続されている。よって、ラッチ回路６５に記憶されたデータは、データＭＤ０〜ＭＤ３として、内部回路へ出力することかできる。
【０１２８】
従って、多重化ラッチ回路６０は、最高位のセキュリティレベルを示すセキュリティレベル信号が“Ｈ”レベルとして入力された場合に限り、最高位のセキュリティレベルに対応したラッチ回路またはデータバスドライバを介して、ＣＰＵデータバス４との接続を果たし、かつ内部回路へのアクセスを可能にする。
【０１２９】
さらに、多重化ラッチ回路６０は、２つのインバータ７１および７２を備えている。インバータ７１は、その出力をラッチ回路６１のイネーブル端子に接続しており、入力端子からＷＲＳ信号を入力する。よって、インバータ７１は、ＷＲＳ信号が“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、ラッチ回路６１を活性化、すなわちＣＰＵデータバス４上のデータＤ４〜Ｄ７をラッチして記憶させることができる。
【０１３０】
インバータ７２は、その出力をデータバスドライバ６２のイネーブル端子に接続しており、入力端子からＲＤＳ信号を入力する。よって、インバータ７２は、ＲＤＳ信号が“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、データバスドライバ６２を活性化、すなわちＣＰＵデータバス４上に、ラッチ回路６１に記憶されたデータをデータＤ４〜Ｄ７として出力させることができる。
【０１３１】
以上のように、各セキュリティレベルに対応して備えられるラッチ回路およびデータバスドライバにおいて、データの一部のビットを割り当て、残りのビットに対するデータの入出力を１つのラッチ回路とデータバスドライバとの組によって行っているので、ラッチ回路に必要なラッチ数を減少させ、回路規模の増大を防ぐことができる。なお、各セキュリティレベルに対応して備えられるラッチ回路およびデータバスドライバに対して割り当てられるビットは、ＣＰＵデータバス４上において連続したビットでもよいし、飛び飛びでもよく、その割り当て数も設計上適宜選択可能である。
【０１３２】
なお、実施の形態５においては、セキュリティレベル数を２つとしたが、それ以上でも良く、その場合にもラッチ回路とデータバスドライバからなる一時記憶回路を各セキュリティレベルに対応させて備える必要がある。
【０１３３】
また、実施の形態５においては、実施の形態２または３において説明した比較回路を付加して動作させることもでき、実施の形態４において説明したＯＲゲートを付加して動作させることもできる。
【０１３４】
以上に説明したように実施の形態５にかかる半導体集積回路によれば、多重化ラッチ回路６０によって、ＣＰＵデータバス４上の一部のデータに対してＣＰＵ１２と内部回路とを中継する第１のラッチ回路６１および第１のデータバスドライバ６２と、ＣＰＵ１２からの書き込み命令およびセキュリティレベル信号に応じて、ＣＰＵ１２からＣＰＵデータバス４上の他部のデータを入力して記憶する第２のラッチ回路６３および６５と、ＣＰＵ１２からの読み出し命令および前記セキュリティレベル信号に応じて、ラッチ回路６３および６５に記憶されたデータをＣＰＵ１２に出力する第２のデータバスドライバ６４および６６とからなる、所定のセキュリティレベル数の組を、設けて、最高位のセキュリティレベルに対応する第２のラッチ回路６３および６５に記憶されたデータのみを内部回路に出力するので、実施の形態１にかかる半導体集積回路による効果に加えて、ラッチ回路に必要なラッチ数を減少させ、回路規模の増大を防ぐことができる。
【０１３５】
（実施の形態６）
つぎに、実施の形態６にかかる半導体集積回路について説明する。実施の形態６にかかる半導体集積回路は、実施の形態１にかかる半導体集積回路の多重化ラッチ回路において、その回路構成が異なる。よって、ここでは、多重化ラッチ回路について説明する。
【０１３６】
図１１は、実施の形態６にかかる半導体集積回路の多重化回路８０の回路構成を示す回路図である。図１１において、多重化回路８０は、ＣＰＵデータバス４上のデータＤ０〜Ｄ７を入力するラッチ回路８１と、ラッチ回路８１に記憶されたデータを読み出し、読み出したデータをＣＰＵデータバス４上にデータを出力するデータバスドライバ８２と、を備えている。なお、ラッチ回路８１およびデータバスドライバ８２は、それぞれイネーブル端子に“Ｌ”レベルの信号を入力することで活性化される。
【０１３７】
図１１においては、上述したセキュリティレベル数を４つにした多重化回路８０を示しており、セキュリティレベル１〜４を示すセキュリティ信号は、それぞれＳＥＣＵ１信号、ＳＥＣＵ２信号、ＳＥＣＵ３信号およびＳＥＣＵ４信号に対応する。よって、この例では、ＳＥＣＵ４信号が最高位のセキュリティレベルを示す信号である。
【０１３８】
また、多重化回路８０は、２つのＮＡＮＤゲート８３および８４を備えている。ＮＡＮＤゲート８３は、その出力をラッチ回路８１のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ４信号を入力し、他方の入力端子からＷＲＳ信号を入力する。よって、ＮＡＮＤゲート８３は、ＳＥＣＵ４信号およびＷＲＳ信号がともに“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、ラッチ回路８１を活性化、すなわちＣＰＵデータバス４上のデータＤ０〜Ｄ７をラッチして記憶させることができる。
【０１３９】
ＮＡＮＤゲート８４は、その出力をデータバスドライバ８２のイネーブル端子に接続しており、一方の入力端子からＳＥＣＵ４信号を入力し、他方の入力端子からＲＤＳ信号を入力する。よって、ＮＡＮＤゲート８４は、ＳＥＣＵ４信号およびＲＤＳ信号がともに“Ｈ”レベルを示す場合に限り、“Ｌ”レベルを示す信号を出力し、データバスドライバ８２を活性化、すなわちＣＰＵデータバス４上に、ラッチ回路８１に記憶されたデータを出力させることができる。
【０１４０】
さらに、ラッチ回路８１の出力Ｑ０〜Ｑ７およびデータバスドライバ８２の入力は、内部回路に接続されている。よって、ラッチ回路８１に記憶されたデータは、データＭＤ０〜ＭＤ７として、内部回路に出力することかできる。
【０１４１】
また、多重化回路８０は、ＣＰＵデータバスに接続され、ＷＲＳ信号とＲＤＳ信号を入力するＲＡＭ８５と、エンコーダ８６とを備えている。エンコーダ８６は、ＳＥＣＵ１信号、ＳＥＣＵ２信号およびＳＥＣＵ３信号を入力し、これらセキュリティ信号に基づいてＲＡＭ８５上のアドレスを示すＡ０信号およびＡ１信号と、ＲＡＭ８５に対するイネーブル信号を示すＥＮ信号とをＲＡＭ８５に入力する。
【０１４２】
ＲＡＭ８５は、実施の形態１〜５において説明した最高位以外のセキュリティレベルに対応するラッチ回路およびデータバスドライバに相当する。例えば、ＷＲＳ信号およびＳＥＣＵ１信号が“Ｈ”レベルを示す場合、すなわちＣＰＵ１２からセキュリティレベル１に対する書き込み命令が発せられた場合には、まず、エンコーダ８６は、ＳＥＣＵ１信号に対応するアドレス値をＡ０信号およびＡ１信号としてＲＡＭ８５に入力する。この際、“Ｈ”レベルを示すＥＮ信号も同時にＲＡＭ８５に入力する。ＲＡＭ８５においては、入力されたＡ０信号およびＡ１信号からＲＡＭ８５内の記憶領域を特定し、“Ｈ”レベルを示すＷＲＳ信号の入力によって、ＣＰＵデータバス４上のデータを特定した記憶領域に記憶する。
【０１４３】
一方、ＲＤＳ信号およびＳＥＣＵ１信号が“Ｈ”レベルを示す場合、すなわちＣＰＵ１２からセキュリティレベル１に対する読み出し命令が発せられた場合には、エンコーダ８６は、ＳＥＣＵ１信号に対応するアドレス値をＡ０信号およびＡ１信号としてＲＡＭ８５に入力する。この際、“Ｈ”レベルを示すＥＮ信号も同時にＲＡＭ８５に入力する。ＲＡＭ８５においては、入力されたＡ０信号およびＡ１信号からＲＡＭ８５内の記憶領域を特定し、“Ｈ”レベルを示すＲＤＳ信号の入力によって、特定した記憶領域に記憶されているデータをＣＰＵデータバス４上に出力する。
【０１４４】
このように、最高位以外のセキュリティレベルを示すセキュリティ信号であるＳＥＣＵ１信号、ＳＥＣＵ２信号およびＳＥＣＵ３信号が発せられた場合は、ＣＰＵ１２は、内部回路にアクセスできず、ＲＡＭ８５内の記憶領域に対してのみのデータ入出力を行う。
【０１４５】
従って、多重化回路８０は、最高位のセキュリティレベルを示すセキュリティレベル信号が“Ｈ”レベルとして入力された場合に限り、最高位のセキュリティレベルに対応したラッチ回路またはデータバスドライバを介して、ＣＰＵデータバス４との接続を果たし、内部回路へのアクセスを可能にする。
【０１４６】
なお、上述した最高位のセキュリティレベルに対応するラッチ回路８１およびデータバスドライバ８２は、ＲＡＭ８５およびエンコーダ８６に含めて構成することもできる。また、ＲＡＭ８５は、揮発性メモリに限らず、不揮発性メモリ、例えばＦＲＡＭでもよい。
【０１４７】
また、実施の形態６においては、セキュリティレベル数を４つとしたが、それ以上でも以下でも良いが、最高位以外のセキュリティレベルに対応する構成をＲＡＭ上において実現しているので、比較的多数のセキュリティレベル数に対しても、ラッチ回路およびデータバスドライバを使用する場合に比較して、回路規模の増大を最小限に抑えることができる。
【０１４８】
以上に説明したように実施の形態６にかかる半導体集積回路によれば、多重化ラッチ回路８０によって、ＣＰＵ１２からの書き込み命令および最高位のセキュリティレベル信号に応じて、ＣＰＵ１２からＣＰＵデータバス４上のデータを入力して記憶するラッチ回路８１と、ＣＰＵ１２からの読み出し命令および前記セキュリティレベル信号に応じて、ラッチ回路８１に記憶されたデータをＣＰＵ１２に出力するデータバスドライバ８２とからなる組と、最高位以外のセキュリティレベル信号に応じてアドレス信号を出力するエンコーダ８６と、ＣＰＵ１２からの書き込み／読み出し命令とエンコーダ８６からのアドレス信号に応じて、ＣＰＵ１２に対してデータを入出力するＲＡＭ８５と、を備え、ＣＰＵ１２は、最高位のセキュリティレベルを示すセキュリティ信号に対してのみ、内部回路へのアクセスを行うことができるので、実施の形態１にかかる半導体集積回路による効果に加えて、比較的多数のセキュリティレベル数に対しても、ラッチ回路およびデータバスドライバを使用する場合に比較して、回路規模の増大を最小限に抑えることができる。特に、セキュリティレベル数が多い場合に有効となる。
【０１４９】
なお、実施の形態１〜６において、ＣＰＵデータバスまたはメモリデータバスに出力されるデータを８ビットとしたが、特に、そのビット数は問わない。
【０１５０】
【発明の効果】
以上、説明したとおり、請求項１の発明によれば、所定のセキュリティレベルのデータのみを当該データを利用する所定回路へ出力することができ、それ以外のセキュリティレベルのデータは書き込み処理をおこなっても前記所定回路へ出力させないようにすることができるので、所定回路において利用するデータの改ざんを防止するとともに、当該データを改ざんする不正プログラムが作成・改良されるためのヒントの取得を困難にするセキュリティ機能を有した半導体集積回路を提供することができるという効果を奏する。
【０１５１】
また、請求項２の発明によれば、セキュリティレベルに対応した記憶回路に記憶されたデータを出力することにより、操作者に対して所定回路へのデータの書き込みがなされたように見せかけることができ、請求項１の発明よりも不正使用者による不正プログラムによる対応をさらに困難にし、より確実にデータの改ざんを防止することが可能な半導体集積回路を提供することができるという効果を奏する。
【０１５２】
また、請求項３の発明によれば、データの不一致が所定回数に達すると動作停止信号が出力されることにより、不正書き込みを所定回数以上行えないようにすることができるので、請求項１または２の発明よりもデータを改ざんする不正プログラムが作成・改良されるためのヒントの取得を困難にし、より確実にデータの改ざんを防止することが可能な半導体集積回路を提供することができるという効果を奏する。
【０１５３】
また、請求項４の発明によれば、比較するデータのビットを記憶回路ごとに変更し、変更したビットのみを比較するので、すべてのビットについて比較する必要がなく、請求項３の発明よりさらに高速でデータの比較ができ、より効率的にデータの改ざんを防止することが可能な半導体集積回路を提供することができるという効果を奏する。
【０１５４】
また、請求項５の発明によれば、所定のセキュリティレベルに対応する記憶回路に記憶されるデータと同一のデータをそれ以外の記憶回路に記憶することにより、実際に所定回路において使用する書き込みデータについて、操作者に対して正しくデータの書き込みがなされたように見せかけることができるので、請求項１〜４の発明よりもデータを改ざんする不正プログラムが作成・改良されるためのヒントの取得を困難にし、より確実にデータの改ざんを防止することが可能な半導体集積回路を提供することができるという効果を奏する。
【０１５５】
また、請求項６の発明によれば、所定回路に書き込むデータの一部のみをレジスタの所定の記憶回路に記憶するので、当該記憶回路の容量を小さくできるとともに、レジスタにおけるデータの書き込み／読み出し処理を高速でおこなうことができ、より効率的にデータの改ざんを防止することが可能な半導体集積回路を提供することができるという効果を奏する。
【０１５６】
また、請求項７の発明によれば、記憶回路をラッチ回路によって実現するので、データの書き込み／読み出しを高速でおこなうことができ、より効率的にデータの改ざんを防止することが可能な半導体集積回路を提供することができるという効果を奏する。
【０１５７】
また、請求項８の発明によれば、記憶回路をＲＡＭまたはＦＲＡＭによって実現するので、レジスタを小型化することができ、より効率的にデータの改ざんを防止することが可能な半導体集積回路を提供することができるという効果を奏する。
【図面の簡単な説明】
【図１】実施の形態１にかかる半導体集積回路の概略構成を示すブロック図である。
【図２】実施の形態１にかかる多重化ラッチ回路の回路構成を示す回路図である。
【図３】実施の形態１にかかるラッチ回路およびデータバスドライバの回路構成を示す回路図である。
【図４】実施の形態１にかかる半導体集積回路において不正プログラムを実行させた場合の動作を示す説明図である。
【図５】実施の形態２にかかる半導体集積回路の多重化ラッチ回路の回路構成を示す回路図である。
【図６】実施の形態２にかかる比較回路の動作を示す説明図である。
【図７】実施の形態３にかかる半導体集積回路の多重化ラッチ回路の回路構成を示す回路図である。
【図８】実施の形態３にかかる比較回路の動作を示す説明図である。
【図９】実施の形態４にかかる半導体集積回路の多重化ラッチ回路の回路構成を示す回路図である。
【図１０】実施の形態５にかかる半導体集積回路の多重化ラッチ回路の回路構成を示す回路図である。
【図１１】実施の形態６にかかる半導体集積回路の多重化回路の回路構成を示す回路図である。
【図１２】従来における半導体集積回路の概略構成を示すブロック図である。
【図１３】従来における半導体集積回路においてレジスタ制御を行うプログラムを示す説明図である。
【図１４】従来における半導体集積回路において実行される不正プログラムの例を示す説明図である。
【図１５】従来における半導体集積回路において不正プログラムを実行させた場合の動作を示す説明図である。
【符号の説明】
１  アドレスバス
２，３  コントロールバス
４  ＣＰＵデータバス
１０，１００  半導体集積回路
１１，１０１  通信インターフェース
１２，１０２  ＣＰＵ
１３，１０３  ＲＯＭ
１４，８５，１０４  ＲＡＭ
１５，１０５  不揮発性メモリ
１６，３０，４０，５０，６０  多重化ラッチ回路
２１，２３，６１，６３，６５，８１  ラッチ回路
２２，２４，６２，６４，６６，８２  データバスドライバ
２５〜２８，６７〜７０，８３，８４  ＮＡＮＤゲート
３１，４１，４２  比較回路
３２，４３，４４  カウンタ
４５，４６，５１  ＯＲゲート
７１，７２  インバータ
８０  多重化回路
８６  エンコーダ
【図１】
0003743173.tif 000002
【図２】
0003743173.tif 000003
【図３】
0003743173.tif 000004
【図４】
0003743173.tif 000005
【図５】
0003743173.tif 000006
【図６】
0003743173.tif 000007
【図７】
0003743173.tif 000008
【図８】
0003743173.tif 000009
【図９】
0003743173.tif 000010
【図１０】
0003743173.tif 000011
【図１１】
0003743173.tif 000012
【図１２】
0003743173.tif 000013
【図１３】
0003743173.tif 000014
【図１４】
0003743173.tif 000015
【図１５】
0003743173.tif 000016