説明

半導体装置、および半導体装置の開発システム

【課題】本発明は、安価な製造コストで、複数の会社が開発した複数のプログラムを記憶素子に書込んだ状態であても、プログラムの内容が他社(許可されない者)に分からない半導体装置、および半導体装置の開発システムを提供する。
【解決手段】本発明に係る半導体装置10は、プログラムを記憶する記憶部(記憶素子2)と、記憶部に記憶したプログラムを実行することで特定の処理を行なう処理部(IP回路3)と、記憶したプログラムを記憶部から読出し、処理部で実行することが可能な命令を生成する演算部(CPU1)と、プログラムおよび命令を伝送するデータバス4とを備える。処理部は、データバス4を介して処理部に入力する命令に基づいて算術論理演算を行なう制御レジスタC_REGと、処理部に入力する命令を、制御レジスタで処理することが可能な命令に変換する変換回路(A回路32)とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置、および半導体装置の開発システムに関し、特に、プログラムを実行することで特定の処理を行なうIP(Intellectual Property)回路を搭載した半導体装置、および半導体装置の開発システムに関する。
【背景技術】
【0002】
近年、半導体装置は、技術の進歩により、1つのIC(Integrated Circuit)チップ上に搭載する記憶素子の容量が増加している。半導体装置は、記憶素子の容量が増加することで、1つICチップに複数プログラムを書込むことが可能になった。たとえば、半導体装置が、特許文献1に開示してあるような組込み機器用のICチップの場合について説明する。ICチップは、搭載する記憶素子の容量が増えると、複数の会社が開発した複数のプログラムを1つの記憶素子に書込むことが可能となる。
【0003】
そのため、ICチップは、複数の会社が開発した複数のプログラムを記憶素子に書込んだ状態で、複数の会社でプログラム開発の最終開発過程や不良解析などにおいてデバッガなどの処理が行われる。ICチップは、デバッガなどの処理を行なうと、記憶素子に書込んである他社のプログラムを読出し、解析することが可能となる。
【0004】
1つの記憶素子にプログラムを書込んだ会社が互いに協力関係にあれば問題がないが、ライバル関係にあれば、他社にプログラムを読出され、解析されることでアルゴリズムなどの情報が他社に洩れる問題があった。そこで、ICチップは、複数の会社が開発した複数のプログラムを記憶素子に書込んだ状態であっても、他社(許可されない者)にプログラムを読出されない仕組みが開発されている。
【0005】
たとえば、ICチップは、記憶素子に読出することができる領域を制限することができる機能を付加することで、プログラムを書込んだ会社以外の書込んだ領域のプログラムを読出せない仕組みにすることが可能である。
【0006】
また、ICチップは、記憶素子へ書込むプログラム自体(データ)を暗号化することで、プログラムを書込んだ会社以外がプログラムを読出しても内容が分からない仕組みにすることが可能である。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平11−85507号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、記憶素子に読出することができる領域を制限することができる機能をICチップに付加して、各社にプログラムを書込む領域を割当てた場合、書込めるプログラムの容量が制限されプログラム開発の自由度が低下する。また、プログラム容量が割当てた領域を超えた場合、割当てた領域の調整を行う作業が発生し、プログラム容量が割当てた領域を超えない場合、記憶素子にプログラムを書込まない無駄な領域が増える。さらに、汎用品のICチップを設計する段階で、記憶素子に読出することができる領域を制限できる機能を追加する必要があるため、製造コストが高価になる。
【0009】
また、ICチップは、記憶素子へ書込むプログラム自体を暗号化する場合、記憶素子の容量を大きくして、暗号化したプログラムを復号化するために別途演算部を設ける必要があるため、製造コストが高価になる。さらに、ICチップは、暗号化したプログラムを復号化するための処理時間が必要になる。
【0010】
それゆえに、本発明は、上記問題点を解決するためになされたものであり、安価な製造コストで、複数の会社が開発した複数のプログラムを記憶素子に書込んだ状態であっても、プログラムの内容が他社(許可されない者)に分からない半導体装置、および半導体装置の開発システムを提供することを目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明は、プログラムを記憶する記憶部と、記憶部に記憶したプログラムを実行することで特定の処理を行なう処理部と、記憶したプログラムを記憶部から読出し、処理部で実行することが可能な命令を生成する演算部と、記憶部、処理部、および演算部を接続し、プログラムおよび命令を伝送するデータバスとを備える半導体装置である。処理部は、データバスを介して処理部に入力する命令に基づいて算術論理演算を行なう制御レジスタと、処理部に入力する命令を、制御レジスタで処理することが可能な命令に変換する変換回路とを有する。
【発明の効果】
【0012】
本発明に係る半導体装置は、処理部に入力する命令を、制御レジスタで処理することが可能な命令に変換する変換回路を有するので、プログラムを単に解析しても制御レジスタでどのような処理を行なうのか分からない命令として記憶部に書込むことができる。そのため、本発明に係る半導体装置は、安価な製造コストで、複数の会社が開発した複数のプログラムを記憶部に書込んだ状態であっても、プログラムの内容が他社(許可されない者)に分からない構成を提供することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の実施の形態1に係る半導体装置の構成を示すブロック図である。
【図2】本発明の実施の形態1に係る半導体装置のIP回路の構成を示すブロック図である。
【図3】本発明の実施の形態1に係るA回路の設定値を説明するための模式図である。
【図4】本発明の実施の形態1に係るALU回路の制御レジスタの仕様を示す図である。
【図5】A回路を有していない従来のIP回路に伝送されるコマンドの内容を説明する図である。
【図6】A回路を有するIP回路に伝送されるコマンドの内容を説明する図である。
【図7】A社およびB社のA回路を有するIP回路に伝送されるコマンドの内容を説明する図である。
【図8】本発明の実施の形態2に係る半導体装置の構成を示すブロック図である。
【図9】本発明の実施の形態2に係る半導体装置の暗号回路を説明するための模式図である。
【図10】本発明の実施の形態2に係る半導体装置の別の構成の暗号回路を説明するための模式図である。
【図11】図10に示す暗号回路で暗号化した設定値を示す図である。
【図12】暗号回路の動作を説明するための図である。
【図13】本発明の実施の形態2の変形例に係る半導体装置の構成を示すブロック図である。
【図14】本発明の実施の形態2に係る半導体装置のM系列回路を説明するための模式図である。
【図15】本発明の実施の形態2に係る半導体装置のM系列回路の動作を説明するためのタイミングチャートである。
【図16】本発明の実施の形態3に係る半導体装置のIP回路の構成を示すブロック図である。
【図17】本発明の実施の形態3に係るALU回路の制御レジスタの仕様を示す図である。
【図18】本発明の実施の形態3の変形例に係る半導体装置のIP回路の構成を示すブロック図である。
【図19】本発明の実施の形態3の変形例に係るA回路を有するIP回路に伝送されるコマンドの内容を説明する図である。
【図20】本発明の実施の形態4に係る半導体装置のIP回路の構成を示すブロック図である。
【図21】本発明の実施の形態4に係るA回路を有するIP回路に伝送されるコマンドの内容を説明する図である。
【図22】本発明の実施の形態4に係る半導体装置のIP回路の入出力信号を詳しく説明したブロック図である。
【図23】本発明の実施の形態4に係る半導体装置のIP回路の入出力信号のタイミングチャートである。
【図24】コンパイラと半導体装置とを組合わせた半導体装置の開発システムの構成を示すブロック図である。
【図25】本発明の変形例に係るA回路の構成を示すブロック図である。
【図26】本発明の別の変形例に係るA回路の構成を示すブロック図である。
【発明を実施するための形態】
【0014】
以下、本発明に係る実施の形態について図面を参照して説明する。
(実施の形態1)
図1は、本発明の実施の形態1に係る半導体装置の構成を示すブロック図である。図1に示す半導体装置10は、たとえばICカードやICカードリーダなどのように複数の会社が開発したそれぞれのプログラムを1つのICチップに搭載する組込み機器用のICチップである。半導体装置10は、CPU(Central Processing Unit)1、記憶素子2、IP回路3、データバス4を含んでいる。
【0015】
CPU1は、記憶素子2に記憶したプログラムを読出し、読出したプログラムからIP回路3で実行可能なコマンド(命令)を生成する処理などを行なう演算部である。記憶素子2は、CPU1やIP回路3で実行するプログラムやデータなどを記憶する記憶部である。IP回路3は、記憶素子2に記憶したプログラムを実行することで特定の処理(たとえば画像処理など)を行なう処理部である。データバス4は、CPU1、記憶素子2、およびIP回路3を接続し、それぞれの間でプログラムおよび命令を伝送するための伝送経路である。
【0016】
さらに、IP回路3は、ALU(Arithmetic Logic Unit)回路(算術論理回路)31、A回路32を含んでいる。ALU回路31は、四則演算などの特定の処理を行なうための回路である。ALU回路31は、特定の処理を行なうためコマンドがデータバス4を介してCPU1から伝送されてくる。CPU1は、記憶素子2に記憶してある状態でプログラムを暗号化してあっても、コマンドとしてデータバス4を介してALU回路31に伝送するためにプログラムを復号化する。そのため、データバス4を伝送しているコマンドを解析すれば、ALU回路31で実行する特定の処理の内容が洩れる問題があった。
【0017】
IP回路3内にCPUを設け、データバス4に暗号化したプログラムを伝送する構成であれば、ALU回路31で実行する特定の処理の内容が洩れる可能性は低いが、IP回路3の回路規模が大きくなり、製造コストが高価になる。
【0018】
そこで、半導体装置10は、ALU回路31でどのような処理を行なうのか分からないコマンドとして記憶素子2に書込んでおき、IP回路3内に設けたA回路32でALU回路31が特定の処理を実行できるようなコマンドに変換する。つまり、半導体装置10は、IP回路3内に、コマンドを変換するA回路32を設けることで、記憶素子2のプログラムやデータバス4を介してCPU1からALU回路31に伝送されるコマンドを解析しても、ALU回路31で実行する特定の処理の内容が理解できない構成にしてある。
【0019】
具体的に、IP回路3の構成を説明する。図2は、本発明の実施の形態1に係る半導体装置10のIP回路3の構成を示すブロック図である。図2に示すALU回路31は、複数の制御レジスタC_REG0,C_REG1,C_REG2,・・・(複数の制御レジスタを代表して記載する場合、制御レジスタC_REGと記載する)を含んでいる。たとえば、ALU回路31が画像処理を行なう場合、制御レジスタC_REGは、ALU回路31に伝送されるコマンドにより、画像の滑らかさを制御する制御レジスタとする。
【0020】
A回路32は、EXOR回路321、設定値保持部322を有し、ALU回路31に伝送されたコマンドと、設定値(32ビット)との排他的論理和を演算して、制御レジスタC_REGに演算結果を出力している。
【0021】
設定値は、各社で異なる値にしてあり、コマンドに含まれる情報に基づいて最適な値に設定される。図3は、本発明の実施の形態1に係るA回路32の設定値を説明するための模式図である。図3に示す設定値保持部322は、各社で値の異なる設定値を有し、コマンドが入力されるとコマンドに含まれる情報(後述するDECDIN(31:0))に基づいてEXOR回路321に設定値を出力する。
【0022】
次に、半導体装置10の動作を具体的に説明する。まず、図4は、本発明の実施の形態1に係るALU回路31の制御レジスタの仕様を示す図である。図4に示す制御レジスタC_REGの仕様には、演算するレジスタを指定するコマンドALU_OP2_SEL,ALU_OP1_SEL、演算内容を指定するコマンドENZANについて記載してある。コマンドALU_OP2_SELは、“00”のときREG20を指定し、“01”のときREG21を指定し、“10”のときREG22を指定し、“11”のときREG23を指定する。コマンドALU_OP1_SELは、“00”のときREG10を指定し、“01”のときREG11を指定し、“10”のときREG12を指定し、“11”のときREG13を指定する。コマンドENZANは、“000”のとき加算、“001”のとき減算、“010”のとき掛算、“011”のとき割算、“100”のときロード、“101”のときストア、“110”のときムーブを指定する。
【0023】
制御レジスタM_REGの仕様には、ALU回路31を使用するか、使用しないかを指定するコマンドCORE_ENについて記載してある。コマンドCORE_ENは、“0”のときALU回路31を使用しない、“1”のときALU回路31を使用することを指定する。設定値の仕様には、EXOR回路321に出力する設定値を指定するコマンドDECDINについて記載してある。
【0024】
IP回路3に伝送されるコマンドを説明する前に、まずA回路32を有していない場合のコマンドについて説明する。図5は、A回路を有していない従来のIP回路に伝送されるコマンドの内容を説明する図である。図5には、従来のIP回路に伝送される5行分のコマンドが図示されており、当該コマンドの処理内容、制御レジスタC_REGの書込み値、プログラムがそれぞれ図示してある。
【0025】
1行目の処理内容「ALUを使用する」の場合、プログラムは、制御レジスタM_REGにALU回路31を使用する“1”を書込む(WR)内容となるので“M_REG WR 1 ・・・000_00_01”となる。2行目の処理内容「REG10=REG10+REG20」の場合、制御レジスタC_REGの書込み値が“・・・000(加算)_00(REG10)_00(REG20)”で、プログラムは、制御レジスタC_REGに前述の書込み値を書込む(WR)内容となるので“C_REG WR 1 ・・・000_00_00”となる。
【0026】
同様に、3行目の処理内容「REG11=REG11−REG22」の場合、制御レジスタC_REGの書込み値が“・・・001(減算)_01(REG11)_10(REG22)”で、プログラムは、制御レジスタC_REGに前述の書込み値を書込む(WR)内容となるので“C_REG WR 1 ・・・001_01_10”となる。4行目の処理内容「REG13<=REG21」の場合、制御レジスタC_REGの書込み値が“・・・011(ムーブ)_11(REG13)_01(REG21)”で、プログラムは、制御レジスタC_REGに前述の書込み値を書込む(WR)内容となるので“C_REG WR 1 ・・・011_11_01”となる。5行目の処理内容「REG12=REG12+REG21」の場合、制御レジスタC_REGの書込み値が“・・・000(加算)_10(REG12)_01(REG21)”で、プログラムは、制御レジスタC_REGに前述の書込み値を書込む(WR)内容となるので“C_REG WR 1 ・・・000_10_01”となる。
【0027】
図5から分かるように、A回路を有していない従来のIP回路に伝送されるコマンドは、制御レジスタC_REGの書込み値の内容が、そのままプログラムの一部の内容になる。そのため、従来の半導体装置では、IP回路に伝送されるコマンドを含むプログラムを解析することで、制御レジスタC_REGにどのような処理をさせようとしているのかが容易に理解することができた。
【0028】
そこで、半導体装置10は、IP回路3にA回路32を設けて、IP回路32に伝送されるコマンドを含むプログラムを解析しても、制御レジスタC_REGにどのような処理をさせようとしているのかが容易に理解できないようにしてある。具体的に、A回路32が、プログラムの内容にある制御レジスタC_REGに書込む値と、設定値との排他的論理和を演算した値を、制御レジスタC_REGに書込む。
【0029】
図6は、A回路32を有するIP回路3に伝送されるコマンドの内容を説明する図である。図6には、IP回路3に伝送される6行分のコマンドが図示されており、当該コマンドの処理内容、制御レジスタC_REGの書込み値、プログラムがそれぞれ図示してある。
【0030】
1行目の処理内容「ALUを使用する」の場合、プログラムは、制御レジスタM_REGにALU回路31を使用する“1”を書込む(WR)内容となるので“M_REG WR 1 ・・・000_00_01”となる。2行目の処理内容「設定値の書込み」の場合、プログラムは、設定値保持部322に設定値“・・・101_10_11”を書込む(WR)内容となるので“設定値 WR 1 ・・・101_10_11”となる。
【0031】
3行目の処理内容「REG10=REG10+REG20」の場合、制御レジスタC_REGの書込み値が“・・・000(加算)_00(REG10)_00(REG20)”である。しかし、プログラムは、制御レジスタC_REGに前述の書込み値と設置値との排他的論理和を演算した値を書込む(WR)内容となる。具体的に、プログラムは、前述の書込み値“・・・000_00_00”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・101_10_11”を含む“C_REG WR 1 ・・・101_10_11”となる。
【0032】
同様に、4行目の処理内容「REG11=REG11−REG22」の場合、制御レジスタC_REGの書込み値が“・・・001(減算)_01(REG11)_10(REG22)”である。しかし、プログラムは、前述の書込み値“・・・001_01_10”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・100_11_01”を含む“C_REG WR 1 ・・・100_11_01”となる。
【0033】
5行目の処理内容「REG13<=REG21」の場合、制御レジスタC_REGの書込み値が“・・・011(ムーブ)_11(REG13)_01(REG21)”である。しかし、プログラムは、前述の書込み値“・・・011_11_01”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・110_01_10”を含む“C_REG WR 1 ・・・110_01_10”となる。
【0034】
6行目の処理内容「REG12=REG12+REG21」の場合、制御レジスタC_REGの書込み値が“・・・000(加算)_10(REG12)_01(REG21)”である。しかし、プログラムは、前述の書込み値“・・・000_10_01”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・101_00_10”を含む“C_REG WR 1 ・・・101_00_10”となる。
【0035】
図6から分かるように、A回路32を有するIP回路3に伝送されるコマンドは、制御レジスタC_REGの書込み値の内容と、プログラムの内容とが異なる。そのため、半導体装置10では、IP回路3に伝送されるコマンドを含むプログラムを解析しても、制御レジスタC_REGに書込む値が分からないため、制御レジスタC_REGにどのような処理をさせようとしているのかが容易に理解することができない。
【0036】
また、半導体装置10では、A回路32に設定する設置値を各社ごとに変更することで、複数の会社が開発した複数のプログラムを記憶素子2に記憶しても、プログラムの内容が他社(許可されない者)に分からない構成することができる。
【0037】
図7は、A社およびB社のA回路32を有するIP回路3に伝送されるコマンドの内容を説明する図である。図7には、IP回路3に伝送される6行分のコマンドが図示されており、当該コマンドの処理内容、制御レジスタC_REGの書込み値、A社のプログラム内での制御レジスタC_REGの書込み値、B社のプログラム内での制御レジスタC_REGの書込み値がそれぞれ図示してある。
【0038】
A社の設定値の書込みは、“・・・101_10_11”で、B社の設定値の書込みは、“・・・010_01_00”である。
【0039】
処理内容「REG10=REG10+REG20」の場合、制御レジスタC_REGの書込み値が“・・・000(加算)_00(REG10)_00(REG20)”である。A社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・000_00_00”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・101_10_11”となる。B社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・000_00_00”と設置値“・・・010_01_00”との排他的論理和を演算した値“・・・010_01_00”となる。
【0040】
処理内容「REG11=REG11−REG22」の場合、制御レジスタC_REGの書込み値が“・・・001(減算)_01(REG11)_10(REG22)”である。A社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・001_01_10”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・100_11_01”となる。B社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・001_01_10”と設置値“・・・010_01_00”との排他的論理和を演算した値“・・・011_00_10”となる。
【0041】
処理内容「REG13<=REG21」の場合、制御レジスタC_REGの書込み値が“・・・011(ムーブ)_11(REG13)_01(REG21)”である。A社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・011_11_01”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・011_01_10”となる。B社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・011_11_01”と設置値“・・・010_01_00”との排他的論理和を演算した値“・・・100_10_01”となる。
【0042】
処理内容「REG12=REG12+REG21」の場合、制御レジスタC_REGの書込み値が“・・・000(加算)_10(REG12)_01(REG21)”である。A社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・000_10_01”と設置値“・・・101_10_11”との排他的論理和を演算した値“・・・101_00_10”となる。B社のプログラムでの制御レジスタC_REGの書込み値は、前述の書込み値“・・・000_10_01”と設置値“・・・010_01_00”との排他的論理和を演算した値“・・・010_11_01”となる。
【0043】
図7から分かるように、同じ処理内容であっても、A社とB社とで設定値が異なるので、A社のプログラムでの制御レジスタC_REGの書込み値と、B社のプログラムでの制御レジスタC_REGの書込み値とが大きく異なることが分かる。そのため、A社が、B社のプログラムを解析しても制御レジスタC_REGの書込み値が分からないので、制御レジスタC_REGにどのような処理をさせようとしているのかが理解できない。逆に、B社も、A社のプログラムを解析しても制御レジスタC_REGの書込み値が分からないので、制御レジスタC_REGにどのような処理をさせようとしているのかが理解できない。
【0044】
次に、半導体装置10の具体的な動作手順は、以下のようになる。まず、A回路32に設定値(たとえば“・・・101_10_11”とする)を設定値保持部322に書込む。その後、プログラム作成者は、設定値保持部322に書込んだ設定値と、EXOR回路321とを考慮して、制御レジスタC_REGの処理内容を図6に示したプログラムのように作成する。作成したプログラムを、記憶素子2に記憶させる。
【0045】
その後、CPU1は、記憶素子2に記憶したプログラムを実行することで、IP回路3で実行することが可能なコマンドを生成し、該コマンドを含む信号IP_DINをデータバス4を介してIP回路3に入力する。IP回路3は、信号IP_DINが入力されると、図6に示すプログラムの内容(IP回路3で実行するコマンド)をA回路32で制御レジスタC_REGの書込み値に変換する。
【0046】
その後、制御レジスタC_REGは、A回路32で変換された制御レジスタC_REGの書込み値を実行することで、所望の処理を実行することができる。
【0047】
以上のように、本発明の実施の形態1に係る半導体装置10は、IP回路3に入力するコマンドを、制御レジスタC_REGで処理することが可能なコマンドに変換するA回路32を有するので、A回路32の設定値がわからないと、記憶素子2に記憶されているプログラムを読出しても、制御レジスタC_REGにどのような処理をさせようとしているのかが容易に理解することができない。また、A回路32は、IP回路3に入力するコマンド(図6に示すプログラムの内容)と、設置値との排他的論理和を演算することで制御レジスタC_REGの書込み値に変換するので、複雑な演算を処理する必要がなくIP回路3に過度の負荷をかけずに、前述の構成を実現することができる。
【0048】
なお、前述では、プログラムを解析しても、他社に制御レジスタC_REGの処理内容を理解できないようにすることについて記載した。しかし、本発明の実施の形態1に係る半導体装置10は、他社に制御レジスタC_REGの処理内容を理解できないようにすることだけでなく、プログラムの実行制御にも効果がある。具体的に、A回路を有していない従来のIP回路の場合、第三者がコマンドの使用頻度解析や漏洩などの何らかの方法で図4に示したALU回路31の制御レジスタの仕様を理解すれば、IP回路3のALU回路31を使用することができる。しかし、A回路32を有するIP回路3では、特定者(設定値を知る者)のみ、IP回路3のALU回路31を使用することができるので、サイドチャネルアタックなどの不正利用の対策を行なうことができる。
【0049】
なお、サイドチャネルアタックとは、SPA攻撃(Simple Power Analysis attack:単純電力解析攻撃)、DPA攻撃(Differential Power Analysis attack:電力差分解析)、タイミング攻撃のような電力解析である。この電力解析は、毎回異なる入力値を用意して同じコマンドを何万回と演算させ、その演算結果や演算毎の消費電力変動を解析することでIP回路3の内部情報を推定する。近年、測定機器の性能向上と低価格化でサイドチャネルアタックが容易に行える環境になっている。
【0050】
そこで、本発明の実施の形態1に係る半導体装置10のように、A回路32を有するIP回路3では、特定者(設定値を知る者)のみ、IP回路3のALU回路31を使用すること(IP回路3へのコマンド入力)が可能になるので、電力解析のために何万回と同じコマンドを自由に入力することができない。つまり、本発明の実施の形態1に係る半導体装置10に対してサイドチャネルアタックを企図する者は、IP回路3のみを実行させるような不適切なプログラムを用いることができず、半導体装置10全体の全ての処理シーケンスを実行することが必要となり、サイドチャネルアタックを容易に行なうことができない。
【0051】
(実施の形態2)
本発明の実施の形態2に係る半導体装置は、A回路に設定する設定値を秘匿化する構成を備えている。図8は、本発明の実施の形態2に係る半導体装置の構成を示すブロック図である。図8に示す半導体装置11は、たとえばICカードやICカードリーダなどのように複数の会社が開発したそれぞれのプログラムを1つのICチップに搭載する組込み機器用のICチップである。半導体装置11は、CPU1、記憶素子2、IP回路3、データバス4を含んでいる。さらに、IP回路3は、ALU回路31、A回路32、暗号回路33を含んでいる。
【0052】
なお、半導体装置11は、IP回路3に暗号回路33を含んでいる以外、図1に示した半導体装置10の構成と同じであるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。
【0053】
A回路32は、EXOR回路321を有し、ALU回路31に伝送されたコマンドと、設定値(32ビット)との排他的論理和を演算して、制御レジスタC_REGに演算結果を出力している。設定値は、各社で異なる値にしてあり、コマンドに含まれる情報に基づいて最適な値に設定される。
【0054】
しかし、A回路32の設定値が他社に何らかの方法で知られると、記憶素子2に記憶されているプログラムを読出して、制御レジスタC_REGにどのような処理をさせようとしているのかが容易に理解することができる。
【0055】
そこで、半導体装置11では、IP回路3に暗号回路33を有している。図9は、本発明の実施の形態2に係る半導体装置11の暗号回路33を説明するための模式図である。図9に示す暗号回路33は、平文(暗号化されていない文)の設定値(平文)を暗号回路33に入力するとIP回路3に搭載されている秘密情報の鍵で暗号化され、暗号文の設定値(暗号文)を出力する。逆に、暗号回路33は、暗号文の設定値(暗号文)を出力すると鍵で復号化され、平文の設定値(平文)を出力する。
【0056】
半導体装置11は、IP回路3に暗号回路33を有することで、設定値を秘匿化することができる。なお、暗号回路33が、共通鍵暗号方式であるAES(Advanced Encryption Standard)暗号規格で暗号化を行なう場合、128bitの平文を入力し、128bitの鍵を用いて暗号化するので、出力される暗号文は128bitとなる。設定値は、32bitであれば、暗号回路33が出力した暗号文の一部を使用する。たとえば、暗号回路33は、0bit目から31bit目までの32bitの暗号文を使用する場合や、1bit目から32bit目までの32bitの暗号文を使用する場合などがある。
【0057】
前述の暗号回路33では、入力する平文に対して、出力される暗号文は鍵が同じであれば常に同じであるため、使用頻度が増えることで解析される可能性がある。そこで、別の構成の暗号回路33を説明する。図10は、本発明の実施の形態2に係る半導体装置11の別の構成の暗号回路を説明するための模式図である。図10に示す暗号回路33aは、図9に示した暗号回路33と異なり、出力した暗号文を平文とともに入力して暗号化する構成である。そのため、暗号回路33aは、鍵が同じで、同じ平文が入力されても、出力されるたびに暗号文が異なる。図11は、図10に示す暗号回路33aで暗号化した設定値を示す図である。図11に示す設定値は、プログラムの各行で値が異なる。
【0058】
次に、暗号回路33の動作について説明する。図12は、暗号回路33の動作を説明するため図である。プログラムの実行タイミングを示すに図12(a)おいて、暗号回路33は、最初の暗号回路演算期間(プログラムの1行目を実行)で、128bitの平文と128bitの鍵とを演算して図12(b)に示す128bitの設定値を得る。IP回路3は、得た128bitの設定値を4つの32bitの設定値に分け、分けた32bitの設定値を用いて4行分のプログラムを実行する(プログラムの2行目〜5行目を実行)。次の暗号回路演算期間で、128bitの平文と128bitの鍵とを演算して128bitの設定値を得る。IP回路3は、得た128bitの設定値を4つの32bitの設定値に分け、分けた32bitの設定値を用いて次の4行分のプログラムを実行する。以降、暗号回路33およびIP回路3は、同様の処理を繰返す。なお、図12(a)に示すように、暗号回路演算期間は、プログラムを実行することができない待ち時間となる。しかし、IP回路3内にバッファを搭載することで、暗号回路演算期間もプログラムを実行する構成にすることができる。
【0059】
(変形例)
暗号回路33から出力する設定値をプログラムの各行で異なるように構成するために、特性多項式を用いた線形フィードバックシフトレジスタ(LFSR:Lnear Feedback Shift Register)を用いて変形例を示す。
【0060】
図13は、本発明の実施の形態2の変形例に係る半導体装置の構成を示すブロック図である。図13に示す半導体装置11aは、CPU1、記憶素子2、IP回路3、データバス4を含んでいる。さらに、IP回路3は、ALU回路31、A回路32、暗号回路33、M系列回路34を含んでいる。
【0061】
なお、半導体装置11aは、IP回路3にM系列回路34を含んでいる以外、図8に示した半導体装置11の構成と同じであるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。
【0062】
M系列回路34は、特性多項式を用いた線形フィードバックシフトレジスタであり、入力した平文の設定値、または暗号文の設定値を、実行するプログラムの各行で異なる値に変化させて出力する回路である。図14は、本発明の実施の形態2に係る半導体装置11aのM系列回路34を説明するための模式図である。図14に示すM系列回路34は、暗号回路33でIP回路3に搭載されている秘密情報の鍵で暗号化され平文の設定値を入力し、実行するプログラムの各行で異なる値に変化させて出力する。
【0063】
図15は、本発明の実施の形態2に係る半導体装置11aのM系列回路34の動作を説明するためのタイミングチャートである。図15のタイミングチャートに示すように、プログラムは、書込み値を制御レジスタC_REGに書込むクロック信号にあわせて1行ごとに実行される。また、M系列回路34は、レジスタであるため暗号回路のように演算期間を考慮する必要がないので、実行するプログラムの各行にあわせて設置値を出力することができ、プログラムを実行することができない待ち時間を不要にすることができる。
【0064】
(実施の形態3)
IP回路に含まれるA回路の機能をON/OFFすることができる構成について説明する。図16は、本発明の実施の形態3に係る半導体装置のIP回路の構成を示すブロック図である。図16に示すIP回路3は、ALU回路31、A回路32を含んでいる。A回路32は、EXOR回路321、設定値保持部322、切替回路323を有している。なお、IP回路3は、切替回路323を含んでいる以外、図2に示したIP回路3の構成と同じであるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。また、図16に示すIP回路3を含む半導体装置11の構成も、図1に示した半導体装置10の構成と同じであるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。
【0065】
切替回路323は、設定値保持部322で保持した設定値と、IP回路3で実行するコマンドを含む信号IP_DINとの排他的論理和の演算処理を行なうか否かを、信号SECDIN_MODE(ON/OFFbit)の入力により切替える回路である。具体的に、切替回路323は、信号SECDIN_MODEが「OFFbit=“L”」であれば、設定値がEXOR回路321に入力されず、信号IP_DINが直接、制御レジスタC_REGに書込まれる。
【0066】
図17は、本発明の実施の形態3に係るALU回路31の制御レジスタの仕様を示す図である。図17に示すように、制御レジスタM_REGの仕様には、実施の形態1と同様に、ALU回路31を使用するか、使用しないかを指定するコマンドCORE_ENについて記載してある。さらに、制御レジスタM_REGの仕様には、A回路32機能のON/OFF機能なし、A回路32機能のON/OFF機能ありを指定するコマンドSECDIN_MODEについて記載してある。コマンドCORE_ENは、“0”のときALU回路31を使用しない、“1”のときALU回路31を使用するを指定する。コマンドSECDIN_MODEは、“0”のときA回路32機能のON/OFF機能なし、“1”のときA回路32機能のON/OFF機能ありを指定する。
【0067】
IP回路3が、A回路32機能のON/OFF機能ありで、A回路32機能のOFFとONとを切替えることで、プログラム作成・デバックを効果的に行うことができる。つまり、プログラム作成時(プログラム開発初期段階)において、A回路32機能をOFFとすることで、プログラム作成者は、設定値保持部322に書込んだ設定値と、EXOR回路321とを考慮することなく、プログラム作成・デバックを行うことが可能となる。
【0068】
プログラム作成が完了した後に、他社へプログラムを提供するとき(自社からプログラム出す)や、ICチップ全体でプログラム作成・デバッグするとき、A回路32機能をONにすることで、実施の形態1、2で説明したように、他社に制御レジスタC_REGにどのような処理をさせようとしているのかが容易に理解できないようにすることができる。
【0069】
なお、A回路32機能のON/OFF機能なしの場合、プログラム作成者は、プログラム作成・デバックのたび、設定値保持部322に書込んだ設定値と、EXOR回路321とを考慮してプログラムの内容を毎回変換する必要があり、作業の負担が大きい。A回路32機能のON/OFF機能なしの場合、プログラム作成者は、プログラム作成・デバックを十分行った後に、設定値保持部322に書込んだ設定値と、EXOR回路321とを考慮してプログラムの内容を1回変換するだけでよく、作業の負担が小さい。
【0070】
(変形例)
認証した場合に、IP回路に含まれるA回路の機能をON/OFFすることができる構成について説明する。図18は、本発明の実施の形態3の変形例に係る半導体装置のA回路の構成を示すブロック図である。図18に示すIP回路3は、ALU回路31、A回路32、暗号回路33、M系列回路34、暗号回路(認証機能)35とを含んでいる。A回路32は、EXOR回路321、設定値保持部322、切替回路323を有している。なお、IP回路3は、暗号回路(認証機能)35を含んでいる以外、図13に示したIP回路3の構成と同じであるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。
【0071】
暗号回路(認証機能)35は、パスワード入力などで認証を行ない、認証がOKの場合“H”を出力し、認証がNGの場合“L”を出力する。暗号回路(認証機能)35が“H”の場合、制御レジスタC_REGからの読出しが禁止される。なお、制御レジスタC_REGからの読出しを禁止した際は、ポーリングするビットを1つの制御レジスタにまとめることにより、読出せるアドレスを制限しやすくすることができる回路構成を簡単にすることができ、バグの混入を減らすことができる。
【0072】
図19は、本発明の実施の形態3の変形例に係るA回路32を有するIP回路3に伝送されるコマンドの内容を説明する図である。図19には、IP回路3に伝送される7行分のコマンドが図示されており、当該コマンドの処理内容、制御レジスタC_REGの書込み値、プログラムがそれぞれ図示してある。
【0073】
1行目の処理内容「ALUを使用する」の場合、プログラムは、制御レジスタM_REGにALU回路31を使用する“1”を書込む(WR)内容となるので“M_REG WR 1 ・・・000_00_01”となる。2行目の処理内容「M系列の初期値設定」の場合、プログラムは、暗号回路35に鍵と平文とを入力することで設定値の結果「・・・101_10_11」となる。3行目の処理内容「認証」の場合、プログラムは、認証処理を行ない、結果がOKとなる。4行目以降は、図6の3行目以降と同じであるため、詳細な説明を繰返さない。
【0074】
(実施の形態4)
本発明の実施の形態4に係る半導体装置は、A回路に排他的論理和回路を用いるのではなく、暗号回路を用いてよりコマンドを秘匿化する構成を備えている。図20は、本発明の実施の形態4に係る半導体装置のIP回路の構成を示すブロック図である。図20に示すIP回路3は、ALU回路31、A回路32、暗号回路33を含んでいる。A回路32は、EXOR回路321に代えて、暗号回路33の出力を、制御レジスタにC_REGに書込むか否かを切替える演算回路324を有している。なお、IP回路3は、演算回路324を含んでいる以外、図2に示したIP回路3の構成と同じであるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。また、図20に示すIP回路3を含む半導体装置11の構成も、図1に示した半導体装置10の構成と同じであるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。
【0075】
実施の形態1のようにEXOR回路321を用いたA回路32は、入力する信号IP_DINを1bit変化させた場合、制御レジスタC_REGの書込み値が1bit変化するだけである。しかし、暗号回路33を用いたA回路32は、入力する信号IP_DINを1bit変化させた場合でも、制御レジスタC_REGの書込み値が多bit変化する。そのため、暗号回路33を用いたA回路32は、より秘匿性の高いコマンドに変更することができる。
【0076】
図21は、本発明の実施の形態4に係るA回路32を有するIP回路3に伝送されるコマンドの内容を説明する図である。図21には、IP回路3に伝送される6行分のコマンドが図示されており、当該コマンドの処理内容、制御レジスタC_REGの書込み値、暗号文、暗号化されたプログラムがそれぞれ図示してある。
【0077】
1行目の処理内容「ALUを使用する」の場合、プログラムは、制御レジスタM_REGにALU回路31を使用する“1”を書込む(WR)内容となるので“M_REG WR 1 ・・・000_00_01”となる。2行目の処理内容「復号鍵と復号モードにする」の場合、プログラムは、AES設定プログラムを実行する。
【0078】
3行目の処理内容「REG10=REG10+REG20」の場合、暗号回路33は、暗号化されたプログラムの“AES_DWIN WR 1 ・・・101_11_01”から、暗号文“101_11_01”を復号して、制御レジスタC_REGの書込み値“・・・000(加算)_00(REG10)_00(REG20)”とする。
【0079】
同様に、4行目の処理内容「REG11=REG11−REG22」の場合、暗号回路33は、暗号化されたプログラムの“AES_DWIN WR 1 ・・・001_10_00”から、暗号文“001_10_00”を復号して、制御レジスタC_REGの書込み値“・・・001(減算)_01(REG11)_10(REG22)”とする。
【0080】
5行目の処理内容「REG13<=REG21」の場合、暗号回路33は、暗号化されたプログラムの“AES_DWIN WR 1 ・・・100_11_10”から、暗号文“100_11_10”を復号して、制御レジスタC_REGの書込み値“・・・011(ムーブ)_11(REG13)_01(REG21)”とする。
【0081】
6行目の処理内容「REG12=REG12+REG21」の場合、暗号回路33は、暗号化されたプログラムの“AES_DWIN WR 1 ・・・101_00_10”から、暗号文“101_00_10”を復号して、制御レジスタC_REGの書込み値“・・・000(加算)_10(REG12)_01(REG21)”とする。
【0082】
図21から分かるように、暗号回路33を用いたA回路32は、制御レジスタC_REGの書込み値に対して、暗号文が大幅に異なることになるので、コマンドの秘匿性を高めることができる。
【0083】
本発明の実施の形態4に係るIP回路3の動作について説明する。図22は、本発明の実施の形態4に係る半導体装置のIP回路3の入出力信号を詳しく説明したブロック図である。図23は、本発明の実施の形態4に係る半導体装置のIP回路3の入出力信号のタイミングチャートである。なお、暗号回路33は、AES暗号のECB(Electronic CodeBook)を利用する場合について説明する。
【0084】
まず、信号SECDIN_MODEを“L”にして、A回路32の機能を機能なしにしてALU回路31のプログラムを作成する。プログラム作成の完了後、暗号回路33に鍵を入力して、図5に示す2行目から5行目までの制御レジスタC_REGの書込み値を、暗号回路33の入力値として暗号化する。暗号化された制御レジスタC_REGの書込み値を、図21に示す3行目から6行目までの暗号文とし、暗号化されたプログラムとして暗号回路33の入力値として設定する。
【0085】
次に、信号SECDIN_MODEを“H”にして、A回路32の機能を機能ありにし、暗号回路33の鍵を復号鍵に設定する。図21に示す3行目から6行目までの暗号化されたプログラムを、IP回路3に入力する。A回路32は、暗号回路33から出力した信号AES_RDRDYと、ALU回路31から出力した信号ALU_WRRDYとがともに“H”であれば、暗号回路33で復号化した制御レジスタC_REGの書込み値を、制御レジスタC_REGに書込むように、信号ALU_CREG_WR_ENをALU回路31に出力する回路構成を含んでいる。また、A回路32は、信号SECDIN_MODEの信号レベルを反転させ、信号AES_DWIN_SELとして出力するインバータ回路も含んでいる。
【0086】
図23のタイミングチャートに示すように、クロック信号CLKにあわせて、信号AES_DWINに書込み、信号AES_DWINの書込み終了後に暗号回路(AES)33の演算が開始する。暗号回路(AES)33の演算が終了すると、信号AES_RDRDY、信号ALU_WRRDY、および信号ALU_CREG_WR_ENが出力される。なお、信号ALU_WRRDY、および信号ALU_CREG_WR_ENの周期は、クロック信号CLKの周期の略2倍である。
【0087】
また、暗号回路33は、128bit単位で入力となるので、制御レジスタC_REGの書き込み値が128bit単位でない場合、NOP(no operation)等の処理を入れて調整を行なう。
【0088】
実施の形態4に係るIP回路3は、前述したように暗号化した制御レジスタC_REGの書込み値を1度出力した後、暗号化したプログラムを作成する作業が必要になる。この作業をプログラム作成者自身が行なってもよいが、プログラム作成者自身の負担を軽減するために、暗号化した制御レジスタC_REGの書込み値を生成するプログラムであるコンパイラ等を用いてもよい。コンパイラ等を用いることで、プログラム作成者は暗号回路33を考慮することなく、プログラムの作成・デバックを効果的に行うことができる。
【0089】
図24は、コンパイラと半導体装置とを組合わせた半導体装置の開発システムの構成を示すブロック図である。図24に示す半導体装置の開発システム100は、半導体装置11と、コンパイラ20とを含んでいる。半導体装置11は、図8に示す半導体装置11と同じ構成であるため、同じ構成要素について同じ符号を付して詳細な説明を繰返さない。
【0090】
コンパイラ20は、制御レジスタC_REGで処理することが可能なコマンドを含むプログラムを生成し、半導体装置11のデータバス4を介して記憶素子2に書込む。具体的に、コンパイラ20は、制御レジスタC_REGの書込み値を、暗号回路33の入力値として暗号化する変換手段201を有している。変換手段201は、ON/OFFbitの入力により、制御レジスタC_REGの書込み値を暗号化する、暗号化しないを切替えることが可能であり、A回路の機能あり、なしと対応して動作する。
【0091】
次に、半導体装置の開発システム100の動作について説明する。まず、変換手段201に、AES暗号の鍵をセットする。図5に示す2行目から5行目までのプログラムから制御レジスタC_REGの書込み値を抜出す。抜出した制御レジスタC_REGの書込み値をAES暗号で暗号化する。なお、変換手段201は、128bit単位で入力となるので、制御レジスタC_REGの書き込み値が128bit単位でない場合、NOP(no operation)等の処理を入れて調整を行なう。
【0092】
暗号化した制御レジスタC_REGの書込み値を、図5に示す2行目から5行目までのプログラムの制御レジスタC_REGの書込み値と置換える。さらに、図5に示す2行目から5行目までのプログラムのコマンド名も“C_REG”から“AES_DWIN”に置換える。変換手段201で変換したプログラムを、データバス4を介して記憶素子2に書込む。
【0093】
コンパイラ20が変換手段201を有することで、半導体装置(ICチップ)11の提供側は、各社にコンパイラ20を配布する際、会社ごとに異なる鍵と、共用(1種類)のするコンパイラ20とを配布することが可能になる。配布後の鍵はプログラム開発会社が管理する。
【0094】
そのため、半導体装置11の提供側は、コンパイラ20の提供先の会社が多くても、1種類共用のコンパイラ20を配布するだけで済み、数種類のコンパイラ20を製造(作成)する時間を短縮(コスト削減)することができる。また、コンパイラ20のバージョン管理も容易になる。
【0095】
なお、半導体装置11の提供側は、会社ごとに異なる鍵と、共用(1種類)のコンパイラ20とを別々に配布する場合に限定されるものではなく、たとえば、コンパイラ20の提供先の会社が少なければ、コンパイラ20に埋込んで配布してもよい。つまり、半導体装置11の提供側は、会社ごとに異なる鍵と、共用(1種類)のコンパイラ20とで構成した各社専用のコンパイラ20を作成し配布することになる。コンパイラ20に鍵を埋め込むことで、半導体装置11の提供側は、どのように制御レジスタC_REGの書込み値を作成しているのかまで秘匿することができる。また、プログラム作成者は、A回路32の機能を知らなくても、従来どおりプログラムを作成することができる。
【0096】
なお、コンパイラ20は、半導体装置(ICチップ)11を取付けた基板を介して接続されたコンピュータに読込まれ、実行されるソフトウェアである。
【0097】
(変形例)
実施の形態1〜4に係るA回路32は、EXOR回路321、または暗号回路35の出力を切替える演算回路324を含む構成であったが、これに限定されるものではなく、IP回路3に入力するコマンド(制御レジスタC_REGの書込み値)を、制御レジスタC_REGで処理することが可能なコマンド(制御レジスタC_REGの書込み値)に変換する変換回路であれば、いずれの回路構成であってもよい。
【0098】
たとえば、図25は、本発明の変形例に係るA回路32の構成を示すブロック図である。図25に示すA回路32は、入力した信号IP_DINを、複数の制御レジスタC_REGのいずれか1つに出力するセレクタ回路325を有している。そのため、A社には、入力した信号IP_DIN0が制御レジスタC_REG1、入力した信号IP_DIN1が制御レジスタC_REG0、入力した信号IP_DIN2が制御レジスタC_REG2にそれぞれ出力するようにセレクタ回路325を設定する。B社には、入力した信号IP_DIN0が制御レジスタC_REG2、入力した信号IP_DIN1が制御レジスタC_REG0、入力した信号IP_DIN2が制御レジスタC_REG1にそれぞれ出力するようにセレクタ回路325を設定する。これにより、A回路32にセレクタ回路325を用いて、実施の形態1〜4に係るA回路32と同様、A社とB社との間でプログラムの内容を秘匿化することができる。
【0099】
またたとえば、図26は、本発明の別の変形例に係るA回路32の構成を示すブロック図である。図26に示すA回路32は、入力した信号IP_DINの複数のbitの値を演算して、複数の制御レジスタC_REGうちの1つに出力する演算器326を有している。そのため、A社には、入力した信号IP_DIN0〜2が制御レジスタC_REG0、入力した信号IP_DIN3〜5が制御レジスタC_REG1にそれぞれ出力するように演算器326を設定する。B社には、入力した信号IP_DIN1〜2が制御レジスタC_REG0、入力した信号IP_DIN0,4,5が制御レジスタC_REG1にそれぞれ出力するように演算器326を設定する。これにより、A回路32に演算器326を用いて、実施の形態1〜4に係るA回路32と同様、A社とB社との間でプログラムの内容を秘匿化することができる。
【0100】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0101】
2 記憶素子、3 IP回路、31 AUL回路、32 A回路、4 データバス、10,11,11a 半導体装置、20 コンパイラ、33,33a,35 暗号回路、34 M系列回路、100 開発システム、201 変換手段、321 EXOR回路、322 設定値保持部、323 切替回路、324 演算回路、325 セレクタ回路、326 演算器。

【特許請求の範囲】
【請求項1】
プログラムを記憶する記憶部と、
前記記憶部に記憶した前記プログラムを実行することで特定の処理を行なう処理部と、
記憶した前記プログラムを前記記憶部から読出し、前記処理部で実行することが可能な命令を生成する演算部と、
前記記憶部、前記処理部、および前記演算部を接続し、前記プログラムおよび前記命令を伝送するデータバスと、
を備え、
前記処理部は、
前記データバスを介して前記処理部に入力する前記命令に基づいて算術論理演算を行なう制御レジスタと、
前記処理部に入力する前記命令を、前記制御レジスタで処理することが可能な前記命令に変換する変換回路とを有する半導体装置。
【請求項2】
前記変換回路は、前記処理部に入力する前記命令と、設定値とを入力して演算することで、前記処理部に入力する前記命令を、前記制御レジスタで処理することが可能な前記命令に変換する排他的論理和回路である、請求項1に記載の半導体装置。
【請求項3】
前記処理部は、前記排他的論理和回路に入力する前記設定値を暗号化する暗号回路をさらに有する、請求項2に記載の半導体装置。
【請求項4】
前記暗号回路は、前記処理部に記憶してある鍵情報を用いて、前記設定値を暗号化する、請求項3に記載の半導体装置。
【請求項5】
前記暗号回路は、暗号化した前記設定値と、前記処理部に記憶してある鍵情報とを入力して演算することで、次に前記排他的論理和回路に入力する前記設定値を暗号化する、請求項4に記載の半導体装置。
【請求項6】
前記処理部は、特性多項式を用いた線形フィードバックシフトレジスタを用いて、前記暗号回路で暗号化した前記設定値を、前記排他的論理和回路に入力するタイミングで変更する変更回路をさらに有する、請求項4に記載の半導体装置。
【請求項7】
前記変換回路は、前記制御レジスタで処理することが可能な前記命令に変換する処理を行なう、行わないを切替える切替手段を有する、請求項1〜6のいずれか1項に記載の半導体装置。
【請求項8】
前記切替手段は、所定の方法で認証された場合に限り、前記制御レジスタで処理することが可能な前記命令に変換する処理を行なう、行わないを切替えることができる、請求項7に記載の半導体装置。
【請求項9】
前記変換回路は、鍵情報を用いて暗号化した前記命令を、前記鍵情報に対応した復号鍵を用いて復号化することで、前記処理部に入力する前記命令を、前記制御レジスタで処理することが可能な前記命令に変換する暗号回路である、請求項1に記載の半導体装置。
【請求項10】
前記変換回路は、前記処理部に入力される前記命令を構成するビット順を、設定値に基づいて入替えることで、前記処理部に入力する前記命令を、前記制御レジスタで処理することが可能な前記命令に変換するセレクタ回路である、請求項1に記載の半導体装置。
【請求項11】
前記変換回路は、前記処理部に入力される前記命令を構成するビットを複数のグループに分け、分けた前記グループごとに所定の演算を行なうことで、前記処理部に入力する前記命令を、前記制御レジスタで処理することが可能な前記命令に変換する演算器である、請求項1に記載の半導体装置。
【請求項12】
請求項1〜請求項11のいずれか1項に記載の半導体装置と、
前記制御レジスタで処理することが可能な前記命令を含む前記プログラムを生成し、前記半導体装置の前記データバスを介して前記記憶部に書込むコンパイラと
を備える半導体装置の開発システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate


【公開番号】特開2013−29998(P2013−29998A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−165690(P2011−165690)
【出願日】平成23年7月28日(2011.7.28)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】