JP3827050B2 - IC card and semiconductor integrated circuit device - Google Patents
IC card and semiconductor integrated circuit device Download PDFInfo
- Publication number
- JP3827050B2 JP3827050B2 JP06156199A JP6156199A JP3827050B2 JP 3827050 B2 JP3827050 B2 JP 3827050B2 JP 06156199 A JP06156199 A JP 06156199A JP 6156199 A JP6156199 A JP 6156199A JP 3827050 B2 JP3827050 B2 JP 3827050B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- random number
- data processing
- card
- oscillation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
- Microcomputers (AREA)
- Semiconductor Memories (AREA)
Description
【0001】
【発明の属する技術分野】
この発明は、ICカードと半導体集積回路装置に関し、特にICカード及びプログラム内蔵の1チップマイクロコンピュータのような半導体集積回路装置における機密保護技術に利用して有効な技術に関するものである。
【0002】
【従来の技術】
ICカードは、主に勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ICカードは、電源を持っていないためリーダライタに差し込まれると、電源の供給を受けて動作可能となる。このように動作可能になると、リーダライタからコマンドを受け、かかるコマンドに従ってリーダライタとの間でデータの転送を行う。ICカードに関しては、オーム社出版電子情報通信学会編水沢順一著「ICカード」などがある。
【0003】
ICカードは、プログラムや重要な情報がICカード用チップの中に密閉されているため、重要な情報を格納したり、カードの中で暗号処理を行うために使われている。ICカードでの暗号処理の解読の難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ICカードが暗号処理を行っている時の消費電流を観測して解析することにより、容易に暗号処理の内容や暗号鍵が推定されることの可能性が示唆されている。このことについては、John Wiley & sons 社 W.Rankl & W. Effing著「 Smart Card Handbook 」 の8.5.1.1 Passtve protective mechantsms( 263ページ) にこのような危険性が記載されている。
【0004】
【発明が解決しようとする課題】
ICカード用チップを構成しているCMOS回路は、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、データバス203のバスは、大きな電気容量を持つため、バスの値が1から0あるいは0から1に変わると、大きな電流を消費する。そのため、消費電流を観測すれば、ICカード用チップの中で何が動作しているか分かる可能性を示唆している。
【0005】
例えば、16ビットのプリチャージバスにデータを転送する場合を考える。プリチャージバスは、データ転送の前にすべてのバスの値を“0”にそろえるバスである。このバスに、値は違うが“1”のビットの数が同じデータ、例えば、“1”のビットの数が2である16進数で“88”と“11”、を転送した場合、電流波形はほぼ同じ波形になると予測される。この理由は、“0”から“1”へ変化したビットの数が同じであるため、同じように電流を消費し、同じ電流波形になるからである。もし、“1”のビットの数が1つ異なるデータ、例えば、“1”のビットの数が3である“89”や“19”を転送した場合、“1”のビットの数が2のデータとは消費電流が異なる。これは、3ビット分バスの値が“0”から“1”に変わったため、その分の電流が消費される。そのため、先の2ビットが変化したデータに比べて消費電流が1ビット分大きくなる。一般に、“1”のビットの数が多いほど電流波形は高くなるという規則性がある。この規則性から転送されているデータを推定することができると思われる。
【0006】
そこで、本願発明者等においては、上記ICカード及びICカード等に搭載される1チップマイクロコンピュータ等のような内蔵のプログラムにより一定のデータ処理動作を行う半導体集積回路装置に対して上記のような消費電流の観測による暗号処理の内容や暗号鍵の解読をより確実に防止することができる機密保護技術の開発に至った。
【0007】
この発明の目的は、機密保護の強化を実現したICカードと半導体集積回路装置を提供することにある。この発明の前記ならびにそのほかの目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【0008】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記の通りである。すなわち、データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部端子がリードライト装置のような外部装置と電気的に接続されることによって動作電圧が供給され、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたROMを含み、上記データ処理手順に従うデータ処理動作が行われるICカード又は半導体集積回路装置において、上記データ処理手順に従う適当なデータ処理動作のタイミングを変化させる手段を設ける。
【0009】
【発明の実施の形態】
図1には、この発明が適用されるICカードの一実施例の外観図が示されている。ICカードは、プラスチックケースからなるカード101と、かかるカード101の内部に搭載された点線で示されたような1 チップのマイクロコンピュータ等からなるICカード用チップ102とを持つものである。上記ICカードは、さらに上記ICカード用チップ102の外部端子に接続されている複数の接点(電極)103を持つ。複数の接点103は、後で図2によって説明するような電源端子VCC、電源基準電位端子VSS、リセット入力端子RESバー、クロック端子CLK、データ端子I/O−1/IRQバー、I/O−2/IRQバーとされる。ICカードは、かかる接点103を通して図示しないリーダーライタのよをて外部結合装置から電源供給を受け、また外部結合装置との間でのデータの通信を行う。
【0010】
図2には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の一実施例の概略ブロック図が示されている。同図の各回路ブロックは、公知のCMOS集積回路の製造技術により、特に制限されないが、単結晶シリコンのような1個の半導体基板上において形成される。
【0011】
この発明に係るICカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、クロック生成回路205、中央処理装置(以下単にCPUという場合がある)201、ROM(Read Only Memory)206やRAM(Random Access Memory)207、EEPROM(Electrical Erasable Programmable Read Only Memory)208などの記憶装置、乱数発生回路(RNG)209、入出力ポート(I/Oポート)202などと、本発明によって追加された偽電流発生回路210からなる。
【0012】
クロック生成回路205は、図示しないリーダライタ(外部結合装置)から図1の接点103を介して供給される外部クロックCLKを受け、かかる外部クロック信号に同期したシステムクロック信号を形成し、それをチップ内部に供給する回路である。CPU201は、論理演算や算術演算などを行う装置であり、記憶装置206、207、208は、プログラムやデータを格納する装置である。I/O(入出力)ポート202は、リーダライタと通信を行う装置である。データバス204とアドレスバス203は、各装置を相互に接続するバスである。
【0013】
上記記憶装置206,207,208のうち、ROM206は、記憶内容が不揮発的に固定されているメモリであり、主にプログラムを格納するメモリである。揮発性メモリ(以下、RAMという)207は自由に記憶情報の書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消えてなくなる。ICカードがリーダライタから抜かれると電源の供給が中断されるため、RAM207の内容は、保持されなくなる。
【0014】
上記不揮発性メモリ(以下、EEPROMという)208は、内容の書き換えが可能な不揮発性メモリであり、その中に一旦書き込まれた情報は、電源の供給が停止されてもその内部に保持される。このEEPROMは、書き換える必要があり、かつICカードがリーダライタから抜かれても保持すべきデータを格納するために使われる。例えば、ICカードがプリペイドカードとして使用されるような場合、のプリペイドの度数などは、使用するたびに書き換えられる。この場合の度数などは、リーダライタか抜かれてもICカード内で記憶保持する必要があるため、EEPROM208で保持される。乱数発生回路路209は、暗号処理などで使用する乱数を発生する。
【0015】
CPU201は、いわゆるマイクロプロセッサと同様な構成にされる。すなわち、その詳細を図示しないけれども、その内部に命令レジスタ、命令レジスタに書込まれた命令をデコードし、各種のマイクロ命令ないしは制御信号を形成するマイクロ命令ROM、演算回路、汎用レジスタ(RG6等)、内部バスBUSに結合するバスドライバ、バスレシーバなどの入出力回路を持つ。CPU201は、ROM206などに格納されている命令を読み出し、その命令に対応する動作を行う。CPU201は、I/Oポート202を介して入力される外部データの取り込み、リードオンリメモリROMからの命令や命令実行のために必要となる固定データのようなデータの読み出し、RAMやEEPROMに対するデータの書き込みと読み出し動作制御等を行う。
【0016】
上記CPU201は、クロック生成回路205から発生されるシステムクロック信号を受けそのシステムクロック信号によって決められる動作タイミング、周期をもって動作される。CPU201は、その内部の主要部が、CMOS回路、すなわちPチャンネル型MOSFETとNチャンネル型MOSFETとからなる回路から構成される。特に制限されないが、CPU201は、CMOSスタティックフリップフロップのようなスタティック動作可能なCMOSスタテック回路と、信号出力ノードへの電荷のプリチャージと信号出力ノードへの信号出力とをシステムクロック信号に同期して行うようなCMOSダイナミック回路とを含む。
【0017】
図3には、前記図2に示したICカード用チップの等価回路図が示されている。電源電圧VCCと回路の接地電位との間に流れる電流Iは、バスライン、CPU、ROM、揮発性メモリ、不揮発性メモリ、RNG及び偽電流発生回路の各回路ブロックに流れる電流IBUS 、ICPU 、IMEM1、IMEM2、IRNG 、IDUM の総和(IBUS +ICPU +IMEM1+IMEM2+IRNG +IDUM )である。上記RNGの電流IRNG と偽電流信号IDUM は、同じ内部状態及び同じ動作でも毎回異なるものとされる。
【0018】
前記の暗号アルゴリズムの解読は、上記ICカード内を流れる電流の総和の変化を統計的に解析することを基本とすると推定される。そこで、この実施例では、かかる解析を実質上不可能にさせるための1つの技術として、かかる電流の変化に偽電流発生回路の電流IDUM を加える構成を採る。この場合、電流IDUM は、上記各内部回路動作と無関係で、かつ不規則性の電流値にされる。言い換えるならば、上記内部回路において同じ状態及び同じ動作でも毎回異なるよう、統計的な観点での非再現性を持つようにされる。
【0019】
図4には、この発明を説明するための電流波形図が示されている。信号電流I1は、前記データ処理に伴って発生する電流の総和を表している。図3の例においては、I1=IBUS +ICPU +IMEM1+IMEM2+IRNG と表すことができる。これに対して、電流I2は、偽電流であり、その電流値が変化(Variable)される。この変化の意味は、前記のように内部回路動作に無関係で、不規則性を持つようにされる。つまり、前記のような非再現性を持つ電流波形を持つようにされる。
【0020】
上記のような偽電流をICカードに内蔵した場合、あるいはICカード等に搭載される1チップのマイクロコンピュータのような半導体集積回路装置に内蔵させた場合、電源端子で観測される電流は、前記電流I1+I2とされる。このため、上記回路電流I1+I2には、上記偽電流I2が含まれるために、前記のような統計的な手法による暗号処理の内容や暗号鍵の推定を阻止することができるものである。
【0021】
図5には、偽電流発生回路の一実施例の概略構成図が示されている。この実施例では、発振回路の出力信号をその発振周波数とは非同期のタイミングジェネータ出力をクロックとしてレジスタに取り込むことにより乱数を発生させる。上記レジスタは、シフトレジスタであり、クロックのタイミングにおいて入力された発振出力が入力部のロジックスレッショルド電圧よりも高いか低いかにより2値信号に変換して2進情報からなる乱数を発生させる。
【0022】
上記乱数は、セレクタの入力データとされる。セレクタは、クロックにより乱数の各ビットに対応されたスイッチをオン状態/オフ状態として、キャパシタC1〜C4にチャージアップ電流を流す。キャパシタC1ないしC4は、特に制限されないが、その容量値が別々にされる。上記のように4つのキャパシタの容量値を別々にすることにより、1つもチャージアップしない組み合わせを含んで、チャージアップのみでは16通り、チャージアップとディスチャージとを含むものでは81通りもの電流値を作り出すことができる。このような組み合わせが、乱数によって不規則的に発生できるために、簡単な構成によって上記偽電流を発生させることができる。
【0023】
上記セレクタは、クロックに同期して偽電流を発生させるものである。CPU等はクロックに同期して一連のデータ処理を行うものであるので、前記の各回路ブロックに流れる電流IBUS 、ICPU 、IMEM1、IMEM2、IRNG 等もクロックに同期して発生される。そのため、偽電流IDUM をクロックに同期して発生させることにより、効率よくしかも効果的に前記統計的な手法による電流変化の観測による暗号処理の内容や暗号鍵の推定を実質的に不可能にすることができる。
【0024】
図6には、偽電流発生回路の一実施例の具体的回路図が示されている。この実施例では、クロックドインバータ回路を縦列接続し、初段回路には発振回路出力を供給する。この発振回路出力とは非同期のタイミングジェネレータ出力により、上記クロックドインバータ回路の動作を制御する。上記縦列接続のクロックドインバータ回路の各段の出力信号は、駆動回路を構成するクロックドインバータ回路の入力に供給される。駆動回路を構成する各クロックドインバータ回路は、前記のような偽電流によってチャージアップされる容量(キャパシタ)が設けられる。上記駆動回路を構成する各クロックドインバータ回路は、上記タイミングジェネレータ出力がインバータ回路によって反転されて供給される。
【0025】
上記縦列接続のインバータ回路は、特に制限されないが、その駆動能力が別々に設定される。これにより、発振回路出力を入力とする縦列接続の各インバータ回路は、上記タイミングジェネレータ出力が一方のレベル(例えばハイレベル)のときに動作状態にされて、それに供給される信号がそれぞれの遅延時間に対応した遅延時間により伝達される。そして、上記タイミングジェネレータ出力が他方のレベル(例えばロウレベル)のときに、出力ハイインピーダンス状態にされる。したがって、上記タイミングジェネレータ出力が他方のレベル(例えばロウレベル)に変化したときの各段の出力信号が上記駆動回路の入力信号として保持される。
【0026】
上記タイミングジェネレータ出力が一方のレベルにあるとき、駆動回路を構成する各インバータ回路は出力がハイインピーダンス状態にされる。したがって、各容量はそれ以前の電荷の状態が保持されている。上記タイミングジェネレータ出力が他方のレベルに変化すると、上記のように各段の出力信号が上記駆動回路の入力信号として保持されており、駆動回路の動作状態によって、入力信号のレベルが上記駆動回路のロジックスレッショルド電圧に対して高いときにはロウレベルの出力信号を形成し、低いときにはハイレベルの出力信号を形成する。
【0027】
上記入力信号のレベルが上記駆動回路のロジックスレッショルド電圧に対して高いときにはロウレベルの出力信号を形成するが、そのときの容量に電荷が蓄積されていたならディスチャージされ、容量に電荷が存在しないなら電流が流れない。逆に、上記入力信号のレベルが上記駆動回路のロジックスレッショルド電圧に対して低いときにはハイレベルの出力信号を形成するが、そのときの容量に電荷が蓄積されていたならその差分に対応したチャージアップ電流が流れ、電荷が存在しないなら電源電圧VCCまでのチャージアップ電流が流れる。このように、縦列接続のクロックドインバータ回路の遅延時間が異なることによる各段の信号レベルが一種の乱数であることに加えて、その以前の容量に保持された電荷の状態により、前記のようにチャージアップ電流又はディスチャージ電流が異なるようにされる。つまり、上記容量に保持されていた電荷そのものが乱数としての要素を持つ。
【0028】
したがって、発振出力とそれをサンプリングするタイミングジェネレータ出力とが非同期であることによる直列接続のインバータ回路の各段での信号レベルと、それ以前に容量に保持されていた電荷量との組み合わせにより電流値としてみた場合に膨大な組み合わせの偽電流を形成することでき、同一状態と条件で何回かの1チップマイクロコンピータをアクセスしても、不規則性あるいは再現性の無い偽電流を発生させることができる。この場合、電源電圧VCC側から供給される電流と、接地電位に流れる電流とが上記容量の蓄積電荷の有無に対応して異なるものとされるから、電流解析をいっそう複雑にすることができる。そして、上記クロックに同期して偽電流を発生させているので、電流解析による暗号鍵の解読等を前記同様に効果的に阻止することができる。
【0029】
図7には、偽電流発生回路の他の一実施例の概略構成図が示されている。この実施例では、発振回路の出力信号をカウンタで計数し、その計数出力を発振周波数とは非同期のタイミングジェネレータ出力でサンプリングし、レジスタにデータとして転送させる。レジスタの各段には、前記と同様な容量C1〜C6等を接続する。この構成でも、上記カウンタの計数出力のサンプリングによって乱数を発生させるとともに、上記各容量C1〜C6が保持している電荷の状態と上記乱数に対応したハイレベル出力とロウレベル出力との組み合わせによって、前記同様に膨大な組み合わせからなる偽電流をクロックに同期して発生させることができる。
【0030】
図8には、図2に示した乱数発生回路RNGモジュールにおけるインターフェイス部の一実施例のブロック図が示されている。1チップマイクロコンピュータを構成するデータバスには、乱数生成ビットを保持するフリップフロップ(フラグ)が設けられる。また、乱数発生回路で形成された乱数は、乱数格納レジスタに保持され、上記データバスからの読み出しが可能にされる。また、乱数生成回路の動作状態は、フリップフロップに設定され、それを上記データバスから読み出すけことができるようにされる。
【0031】
上記RNGモジュールで生成された乱数を、上記乱数格納レジスタを介してCPUが受け取り、前記のような暗号信号処理に用いる。CPUは、乱数生成ビットをセットすることにより、乱数生成回路を動作状態にしたり停止状態にさせるとができる。このような乱数生成回路の動作状態は、CPUによるステータスビットの読み出しにより判定することができるようにされる。
【0032】
図9には、CPUによる乱数入手動作を説明するための一実施例のフローチャート図が示されている。ステップ(1)では、「乱数生成ビット」をセットする。このような「乱数生成ビット」のセット(例えば論理1)により、乱数生成回路が動作を開始する。
【0033】
ステップ(2)では、「ステータスビット」が乱数生成完了状態かいなかを判定する。つまり、乱数生成回路は、乱数を生成して乱数格納レジスタに格納すると、上記「ステータスビット」をセットする。もしも、「ステータスビット」がセットされない場合(例えば論理0)なら、ステップ(2)の判定に戻り、上記「ステータスビット」がセット(例えば論理1)にされるまで待つ。
【0034】
ステップ(3)では、乱数格納レジスタに有効な乱数が格納されているので、CPUは乱数格納レジスタを指定してそれを読み出す。
【0035】
ステップ(4)では、「ステータスビット」を「乱数生成中」に状態遷移とする。つまり、前記のように「ステータスビット」を論理0にリセットさせる。
【0036】
ステップ(5)では、上記乱数格納レジスタから読み出した乱数が希望するデータ長であるか判定し、もしも希望するデータ長では無い場合には、前記ステップ(2)に戻り、上記動作を繰り返す。上記乱数格納レジスタから読み出した乱数が希望するデータ長であるときには、ステップ(6)に移行して上記「乱数生成ビット」をリセットして乱数生成動作を終了させる。
【0037】
図10には、乱数発生回路RNGモジュールの一実施例の全体構成図が示されている。発振回路1の出力は、入力データとしてシフトレジスタ805に入力される。このシフトレジスタ805のシフトクロックは、上記発振回路1とは別の発振回路2の発振出力を計数するカウンタ1で形成される。つまり、シフトレジスタ805のシフトクロックは、発振回路2の発振信号をカウンタ1により分周することにより形成される。
【0038】
上記シフトレジスタ805の各段から出力される複数ビットの信号は、発振回路出力調整回路を通して補正され、乱数格納レジスタ(シフトレジスタ)808の入力データとして出力される。この乱数格納レジスタ808のシフト動作に用いられるレジスタ用クロック812は、前記カウンタ1の計数出力を受けるカウンタ2により更に分周されて形成される。このカウンタ2の出力信号は、カウンタ3に供給されて前記ステータスビット用生成信号813が形成され、ステータスビット810がフリップフロップ等に格納される。
【0039】
乱数生成ビットが格納されるフリップフロップの出力信号は、制御信号として上記発振回路1、2及びカウンタ1、2、3に動作制御信号として供給される。この制御信号が例えばハイレベルのような活性レベルにされると、上記発振回路1、2及びカウンタ1、2、3が動作状態にされて発振動作及び計数動作が有効とされる。上記制御信号が例えばロウレベルのような非活性レベルにされると、上記発振回路1、2及びカウンタ1、2、3は非動作状態、つまり発振回路1と2は発振動作を停止し、カウンタ1、2、3は計数動作を停止する。
【0040】
上記発振回路1と2は、互いに発振周波数が異なりようにされ、かつ、後述するように発振周波数が意図的に変動するようにされる。更に、シフトレジスタ805のシフトクロックに対して乱数格納レジスタ808のシフトクロックはカウンタ2により分周されたものを用いるようにして、乱数生成動作毎に乱数格納レジスタに格納されるビットパターンが不規則性を持つようにされる。
【0041】
図11には、図10の発振回路1、2の一実施例のブロック図が示されている。この実施例では、PLL(フェーズ・ロックド・ループ)回路により発振回路が構成される。本来PLL回路は、所定の基準周波数に位相ロックするよう安定した周波数信号を形成するために用いられるものである。これに対して、この実施例では、PLL回路の位相制御動作により発振出力を不安定にするするように用いる。
【0042】
基準信号は、比較用発振回路で形成される。この発振回路は、水晶発振回路のような高安定の発振回路ではなく、リングオシレータ等のような非安定の発振回路が用いられる。この比較用発振回路の発振信号と、電圧制御発振回路の発振出力が分周された分周出力とを位相比較器で比較し、その位相差(周波数差)に対応した検出信号UP又はDOWNをローパスフィルタに供給して制御電圧を形成し、上記電圧制御発振回路の発振周波数を制御する。これにより、電圧制御型発振回路の発振周波数を上記比較用発振回路の発振周波数に対して、上記分周回路の分周比の対応した逓倍した周波数で発振させる。
【0043】
この実施例では、上記位相検出信号UP又はDOWNを平滑するローパスフィルタに設けられる容量に対し、それぞれ容量を介して比較用発振出力、電圧制御型発振回路の分周出力及び発振回路の出力を伝えて、制御電圧を変動させる。これらの回路及び容量は、単数及び複数用いることが可能である。上記比較用発振出力、電圧制御型発振回路の分周出力とはPLLにより同期化されるように制御されるが、その周波数が異なるために制御電圧にゆらぎを与えることができる。これに対して、これらとは非同期で不安定発振回路で形成された発振出力を加えることにより、電圧制御型発振回路の供給される制御電圧は、不規則に変化して電圧制御型発振回路を制御する。
【0044】
つまり、PLL回路が本来の帰還ループで形成された制御電圧の他、これらとは非同期で、かつ不安定発振回路で形成された発振信号によるノイズ成分が加算されることになるために、極めて複雑な発振制御動作を行うこととなって、周波数が時間の経過とともに変動し、しかも一定の規則性を持たない発振回路出力を形成することができる。これにより、乱数発生回路に適したランダム周波数変動発振回路を構成することができる。
【0045】
図12には、上記図11に設けられる不安定発振回路の一実施例の回路図が示されている。この発振回路は、基本的にはリングオシレータにより構成される。つまり、CMOSインバータ回路の出力に抵抗と容量(キャパシタ)とからなる信号遅延要素を奇数個、同図では5個をリング状態に接続して発振回路を構成する。この実施例では、このようなリングオレータは、それぞれの回路素子の特性が温度依存性や電源依存性を持つものであるので、非安定の発振動作を行うものと見做すことができる。
【0046】
この実施例では、上記のような素子特性の温度依存性や電源依存性による比較的小さな変動に加えて、上記遅延手段としての抵抗をスイッチを介して選択的に並列接続される抵抗を設けることによって可変抵抗回路を構成する。上記スイッチを前記のような比較用発振回路の出力、及び分周回路の出力と、自身の発振出力によりスイッチ制御することにより、上記遅延要素を可変にするものである。つまり、スイッチとしてのMOSFETがオン状態のときには、抵抗値が小さくされて遅延時間が短くなって発振周波数を高くするように作用し、スイッチとしてのMOSFETがオフ状態のときには、抵抗値が大きくなって遅延時間が長くなって発振周波数を低くするように作用する。
【0047】
上記のように3つの可変遅延回路のそれぞれの遅延時間が、非同期でしかもそれぞれの遅延時間の変化量が異なるようにすることにより、発振回路の発振出力の比較的大きな変動幅を持って複雑に変動するものとなる。このような発振回路を前記図10の発振回路1及び2、あるいは発振回路1又は2のいずれか一方に適用することにより、不規則性を持った乱数を発生させることができる。
【0048】
図13には、上記図11に設けられる不安定発振回路の他の一実施例の回路図が示されている。この発振回路は、基本的にはリングオシレータにより構成される。つまり、CMOSインバータ回路の出力に抵抗と容量(キャパシタ)とからなる信号遅延要素を奇数個、同図では5個をリング状態に接続して発振回路を構成する。そして、そのうちの1つの遅延手段としての抵抗をスイッチを介して選択的に並列接続される抵抗を設けることによって可変抵抗回路を構成する。上記スイッチを前記のような自身の発振出力によりスイッチ制御することにより、不安定な発振動作を行わせることができる。同図の発振回路は、それ自身の発振出力を利用して不安定な発振出力を得るものであるので、前記図10の実施例における比較用発振回路として用いるようにするものであってもよい。
【0049】
図14には、図10の発振回路1、2の他の一実施例のブロック図が示されている。この実施例でも、PLL(フェーズ・ロックド・ループ)回路により発振回路が構成される。この実施例では、PLL回路のローパスフィフルタの時定数を極端に小さくすることにより、位相比較出力UPとDOWNに対応して大きく変化する制御電圧を形成する。これにより、電圧制御型発振回路が発振周波数が大きく変化して出力信号の周波数に大きな揺らぎを発生させることができる。
【0050】
図15には、図10の出力調整回路の一実施例の構成図が示されている。図10のレジスタ805においては、シフトレジスタの素子プロセスのバラツキによって論理しきい値電圧がハイレベル側又はロウレベル側にシフトしてしまう結果、前記のように発振回路1の発振出力と、それと非同期の発振回路2の発振出力に基づいて形成されたクロックを用いたとしても、特定のビットパターンの発生頻度が高くなってしまう場合が考えられる。
【0051】
発振回路出力調整回路は、かかる特定のビットパターンが発生した場合の調整を行うよう作用する。この実施例では、多入力EOR(排他的論理和)回路が用いられる。多入力EOR回路は、複数ビットからなる入力信号のうち、論理1の数が奇数個ならば論理1に、それ以外なら論理0のような出力信号を形成する。これにより、特定のビットパターンの頻度が高くなっても、上記のような論理処理によって、不規則データに変換することができる。
【0052】
出力調整回路は、上記のような多入力EORの他に、全ビット0又は全ビット1のような単純なビットパターンを検出して、それを変更するようにするものであれば何であっても良い。例えば、生成されたビットパターンに1つ前に発生されたビットパターンを加算又は減算させたり、その加算又は減算に当たり、桁をシフトさせたり、反転させたりすることにより、複雑なビットパターンの発生を行うようにするものであってもよい。
【0053】
図16には、この発明に係る乱数発生回路の他の一実施例のブロック図が示されている。この実施例では、互いに非同期で発振動作を行う2つの発振回路2701と2702を用い、一方の発振回路2701の発振出力を2値変換動作を行うフリップフロップ2703の入力端子INに供給する。他方の発振回路2702で形成された発振出力は、分周回路2705、2706及び2707によりそれぞれ順次に分周して、3通りの分周信号が形成される。上記発振出力と、上記各分周出力と合わせて4通りのクロックを形成し、セレクタ2708を介して1つの選択して上記フリップフロップ2703のクロック端子CKに供給する。
【0054】
フリップフロップ2703は、上記クロック端子CKに供給されたクロックの立ち上がりエッジ又は立ち下がりエッジにより、入力端子INに入力された発振出力をハイレベル/ロウレベルを判定して、出力端子OUTから論理1又は論理0の2値信号を出力させ、それを乱数格納レジスタに格納させる。クロック端子CKに供給されるクロックの周期が上記のように変化するために、乱数生成速度の変更が可能になる。このような乱数速度の変更は、主として前記暗号用演算回路に設けられた機能であり、ユーザーが上記乱数速度を指定できるようにするものであるが、このような乱数発生回路を流用する場合、前記統計的な手法による電流変化の観測を実質的に無効にして暗号処理の内容や暗号鍵の推定を不能にするためにも有益である。
【0055】
特に制限されないが、上記セレクタ2708を乱数格納レジスタ2704に格納された1つ前の乱数を用いて、いずれか1を選択するようにする。これにより、上記発振回路2701と2702とを単純に非同期で発振させる場合に比べて、フリップフロップ2703で発生させるビットパターンを種々に設定することができ、再現性の無い乱数を発生させるようにしてもよい。
【0056】
図17には、この発明に係る乱数発生回路の他の一実施例のブロック図が示されている。この実施例では、図16に示したような分周回路とセレクタに代えて、カウンタ2745と設定レジスタ2746及びカウンタ/設定レジスタの比較器2747を用いて、フリップフロップ2743のクロック端子CKに入力されるクロックの周波数(周期)を変化させるものである。比較器2747は、設定レジスタ2746に設定された設定値とカウンタ2845の計数値を比較し、両者が一致したならクロックパルスを発生させる。つまり、設定レジスタ2746に設定された設定値に対応して、発振回路2742の発振出力を分周させたパルスを形成することができる。
【0057】
この場合でも、設定レジスタ2746に供給される設定値を単純に乱数を発生させる速度制御に用いるものの他、前記のように乱数格納レジスタに発生された1つ前の乱数を設定することにより、乱数発生速度そのものをランダムにすることもできる。
【0058】
図18には、この発明に係る半導体集積回路装置の一実施例の要部ブロック図が示されている。この実施例では、偽電流生成部2805には互いに異なる2つの周波数信号を用いて、シフトレジスタ等により乱数を発生する乱数発生回路が含まれ、かつ、かかる乱数に従って前記のような不規則性の電流、あるいは何回かの同じ状態及び条件での信号処理動作に対して再現性の無い電流を発生させる偽電流発生回路が設けられる。
【0059】
この実施例では、上記2つの周波数信号のうち、データとしての周波数信号を形成する発振回路2804は、発振回路制御回路によりその発振状態と発振停止状態とに制御される。CPU2801は、バスライン2802を介して発振回路制御回路2806に発振状態か発振停止状態かのコマンドを入力する。CPU2801が発振状態を指示するコマンドを発振回路制御回路に入力した場合、発振回路制御回路2806は、上記コマンドに対応して発振回路2804を発振状態にする。発振回路2804が発振状態にされると、前記のような乱数が生成されて半導体集積回路装置の電源端子には前記のような乱数に従った偽電流が含まれるようになる。
【0060】
上記CPU2801が発振停止状態を指示するコマンドを発振回路制御回路に入力した場合、発振回路制御回路2806は、上記コマンドに対応して発振回路2804を発振停止状態にする。発振回路2804が発振停止状態にされると、前記のような乱数の発生が停止される。これにより、半導体集積回路装置の電源端子には前記のような偽電流が除去される。あるいは、一定の乱数に従った一定の電流が流れるだけとなり、実質的に偽電流が除去されたと等価になる。上記CPUは、そのソフトウェアの中に上記発振回路2804の動作状態と停止状態とに適宜に切り替える。したがって、多数回にわたるマイクロコンピュータの動作を統計的に解析する場合においては、上記偽電流を生成しない場合も上記偽電流が生成された場合とのが組み合わされることによって、相対的にみると偽電流を生成したと等価となるものである。
【0061】
図19には、この発明に係る半導体集積回路装置の他の一実施例の要部ブロック図が示されている。この実施例では、前記同様に発振回路制御回路がCPUからのコマンドによって、乱数生成器内部発振回路の動作状態と停止状態とが指示される。乱数生成器内部発振回路は、それが動作状態にされると発振信号を乱数生成レジスタに供給して偽信号ジェネレータ制御回路の動作時間を指示する乱数を発生させる。
【0062】
上記偽電流生成部では、上記乱数生成器内部発振回路で形成された周波数信号と、タイミングジェネレータからのクロック信号により発生された乱数により電流値が指定される偽電流を生成する。この偽電流の発生時間は、上記乱数生成レジスタで指定されるものであるので、乱数に対応した偽電流が含まれる時間と、それが含まれない時間割合が時間の経過とともに変化するものとなる。したがって、多数回にわたるマイクロコンピュータの動作を統計的に解析する場合において、上記偽電流を生成しない場合も上記偽電流が生成された場合との時間割合が複雑に組み合わされることによって、相対的にみると偽電流を変化幅をいっそう広くできるものとなる。
【0063】
図20には、この発明に係る半導体集積回路装置の他の一実施例の要部ブロック図が示されている。一般に1チップマイクロコンピュータには、スリープ(SLEEP)モードが設けられる。このスリープモードでは、内部回路の動作が停止状態にされて、前記のようなマイクロコンピュータの動作の統計的な解析が行われることはない。このようなスリープモードSLEEPあるいは低消費電力モードでは、偽電流生成部の動作を停止状態にして、低消費電力化を図るようにするものである。つまり、SLEEP信号がハイレベルのスリープモードになると、発振回路と偽電流生成部の動作を停止させて消費電流を削減する。
【0064】
図21には、この発明に係る半導体集積回路装置の更に他の一実施例の要部ブロック図が示されている。この実施例では、プログラムでのデータ参照領域の判定回路が付加される。図21では、上記データ参照領域の例として、記憶装置1、記憶装置2及びレジスタ1とレジスタ2の4通りが用意されている。記憶装置1と2は、例えばROM、RAM、EEPROM等の各記憶エリアのことであり、レジスタ1と2は、例えばI/Oポートや特定のレジスタのことである。
【0065】
上記各データ参照エリアに一対一に対応して、偽電流生成部が設けられる。つまり、記憶装置1用タイミングジェネレータ3206に対しては、偽電流生成部3207が設けられ、記憶装置2用タイミングジェネレータ3208に対しては、偽電流生成部3209が設けられ、レジスタ1用タイミングジェネレータ3210に対しては、偽電流生成部3211が設けられ、レジスタ2用タイミングジェネレータ3212に対しては、偽電流生成部3213が設けられる。
【0066】
領域判定回路3204は、CPU3201が出力するアドレス情報等をバスライン3203を介して取り込む。割り込み制御回路3202は、割り込み動作によって動作領域判定回路3204の動作を有効/無効とする。動作領域判定回路が有効とされたなら、バスライン上のアドレスを監視して、記憶装置1、2又はレジスタ1、2のいずれかに該当するアドレスが指定されなら、それぞれに対応した偽電流生成回部を動作させる。
【0067】
例えば、記憶装置1がRAMで、記憶装置2がEEPROMに割り当てられ、レジスタ1がI/Oポート1に、レジスタ2がI/Oポートに割り当てられた場合、CPU3201がRAMをアクセスしているときには、記憶装置1用タイミングジェネータ3206で形成されたクロックと、発振回路3205で形成された発振出力をとを用いて乱数を発生させて、偽電流生成部3207により偽電流を発生させる。CPU3201がEEPROMをアクセスしているときには、記憶装置2用タイミングジェネータ3208で形成されたクロックと、上記発振回路3205で形成された発振出力とを用いて乱数を発生させて、偽電流生成部3209により偽電流を発生させる。
【0068】
同様にCPU3201がI/Oポート1を用いてデータの入出力を行うときには、レジスタ1用タイミングジェネータ3210で形成されたクロックと、発振回路3205で形成された発振出力とを用いて乱数を発生させて、偽電流生成部3211により偽電流を発生させる。CPU3201がI/Oポート2を用いてデータの入出力を行うときには、レジスタ2用タイミングジェネータ3212で形成されたクロックと、発振回路3205で形成された発振出力をとを用いて乱数を発生させて、偽電流生成部3213により偽電流を発生させる。
【0069】
以上のように、CPU3201がアクセスしているアドレス空間毎に偽電流生成部そのものが切り替えられるので、偽電流生成部そのものが前記のように不規則電流を形成していることに加え、偽電流生成部そのものも切り替えることによって、不規則電流の組み合わせをいっそう複雑にすることができる。
【0070】
図22には、この発明に係る半導体集積回路装置の更に他の一実施例の要部ブロック図が示されている。この実施例では、CPUが発生するアドレス及びCPUが授受するデータを前記乱数の代わりに利用する。つまり、CPUが形成するアドレスに対応して偽電流値が異なるようにされる。偽電流ジェネレータ制御回路は、CPU等からのコマンドによって前記のように動作が有効/無効にされる。偽電流ジェネレータ入力生成回路は、偽電流ジェネレータ制御回路から動作が有効にされると、バスライン上のアドレス信号を取り込む、それを乱数と見做してタイミングジェネータのクロックに同期して偽電流を形成する。このとき、同じアドレスでも、タイミングジェネレータでのタイミングとの関係で電流波形として見た場合には、異なる偽電流と同等の効果を発揮させることができる。
【0071】
ICカード用チップ等のような1チップマイクロコンピュータにおいては、外部のクロックに同期して、ある決まった一定のタイミングでプログラムを実行する。また、通常のプログラムを実行する場合、毎回、命令の実行サイクル数は固定しており、その結果電流波形も固定している。
【0072】
前記の統計的な電流解析による暗号処理の内容や暗号鍵を推定する手法は、上記のような1チップマイクロコンピュータの動作の特徴を利用するものである。つまり、ICカードへの入力データを変化させて、毎回、同じ動作をさせた場合、特定のタイミングではいつも同じ命令を実行している。したがって、入力データに依存した消費電流波形の特徴がある場合、その電流波形を同じ時間軸上で比較することによって、その特徴を検出することが比較的簡単にできると考えられる。さらに、暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形の依存性がある場合、このデータ依存性を統計処理によって累積させることにより顕在化させ、セキュリティ情報を不正入手されてしまうことになる。
【0073】
本願発明者においては、機密保護の強化を実現したICカードと半導体集積回路装置の実現のために、前記のような偽電流を発生させることに代え、あるいはそれと共にランダムな信号を発生する装置を利用して、暗号処理の手順あるいはタイミングを変更することを考えた。このようにすることにより、毎回、暗号処理の手順やタイミングが変わるので、時間軸でみた場合の消費電流波形が変化する。特定の暗号処理を行うタイミングが変化することになり、電流波形を上記のように時間軸上で比較することによってデータ依存性の解析を困難に、言い換えると実質的に不可能にすることができる。
【0074】
図23には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の一実施例の概略ブロック図が示されている。同図の各回路ブロックは、前記図2と同様に公知の半導体集積回路の製造技術により、特に制限されないが、単結晶シリコンのような1個の半導体基板上において形成される。
【0075】
この発明に係るICカード用チップ401の構成は、前記同様に中央処理装置(CPU)413、ROM(Read Only Memory)410やRAM(Random Access Memory)411、EEPROM(Electrical Erasable Programmable Read Only Memory)412などの記憶装置、入出力ポート(I/Oポート)414などと、本発明によって追加された乱数発生器402及びタイミング生成回路406からなる。
【0076】
前記図2のように、タイミング生成回路406には、図示しないが外部端子から供給されるクロック信号を受け、CPU413等の内部回路の動作に必要なクロック信号を形成するクロック生成回路が含まれる。また、前記暗号用演算回路(RNGモジュール)を搭載した場合、それに必要な乱数を上記乱数発生器402で形成したものを併用するものであってもよい。例えば、乱数発生器402は、前記図6〜図14等のうち乱数生成に関連する部分のものを用いることができる。
【0077】
この実施例では、乱数発生器402は、乱数つまりランダムな信号を発生させる。タイミング生成回路406は、大まかに説明すると上記発生された乱数によりインターバルを可変にするタイマを構成して、CPUの割り込み処理をランダムに挿入することによってタイミングを変更する。インターバル生成回路403は、上記乱数を受け取り保持している。アンダーフロー判定回路405は、カウンタ407の出力が零のときにはセレクタ408をインターバル生成回路403側に接続し、上記乱数がカウンタ407の初期値としてセット(ロード)する。カウンタ407に上記乱数に対応した初期値がセットされると、アンダーフロー判定回路405がそれを検出してセレクタ408をデクリメンタ404側に切り替える。これにより、カウンタ出力がデクリメンタ404に入力されて、−1の演算動作が行われて、上記セレクタ408を通してカウンタ407に入力されることにより、−1ずつのダウンカウント動作が行われる。
【0078】
アンダーフロー判定回路405は、上記ダウンカウント動作によってカウンタ407の出力が零になったことを検出すると、CPU413に対して割り込み要求信号409を発生させるとともに、セレクタ408を切り替えてカウンタ407にインターバル生成回路403に入力された乱数を初期値としてリロードする。このリロードされた初期値によりカウンタ407の出力が零でなくなるため、アンダーフロー判定回路405はセレクタ408をデクリメンタ404に切り替えて再び前記のようなダウンカウント動作を行う。
【0079】
以上のような動作の繰り返しにより、CPU413には、タイミング生成回路406からランダムなタイミングでの割り込み要求409が入力されて、その都度本来のデータ処理が中断されて、上記割り込み要求に対応した別のデータ処理が行われる。この割り込みによるデータ処理は、前記のように電流波形を上記のように時間軸上で変化させることを目的とするので、本来のデータ処理動作には悪影響を与えない適当なデータ処理、例えばRAM411、EEPROM等の読み出し動作等が行われる。
【0080】
図24には、この発明に係るICカード用チップの動作の一例を説明するためのタイミング図が示されている。乱数発生器で形成された乱数501(乱数A)が初期値502としてカウンタにロードされて、前記のようにダウンカウント動作が行われてカウント値が−1ずつの計数動作に対応して小さくなる。同図には、このようなダウン計数動作によるカウント値504の変化を右下がりの直線により表している。
【0081】
上記のようなダウン計数動作中では、ICカード用チップでは、暗号処理507等の本来のデータ処理を行っている。上記カウント値504が零になると、割り込み要求505が発生されるので、上記暗号処理507が中断されて、それに代わって割り込み処理508が実行される。この割り込み要求と同時に乱数発生器では乱数501が上記とは異なる乱数Bを形成しており、初期値503としてカウンタにロードされて、前記のようにダウンカウント動作が行われる。上記一定の割り込み動作が終了すると、上記中断された暗号処理507が再び実行される。そして、上記カウント値504が零になると、再び割り込み要求が発生される。
【0082】
上記のような割り込み要求がなされるインターバル506が、前記乱数発生器で形成された乱数501によってランダムに、言い換えるならば、不規則あるいは再現性が無いように変化するものとなる。このようにICカード用チップの本来のデータ処理とは無関係な割り込み処理がランダムに挿入されることによって、毎回、暗号処理の手順やタイミングが変わり時間軸でみた場合の消費電流波形が変化することになる。これにより、特定の暗号処理を行うタイミングが変化することになり、電流波形を上記のように時間軸上で比較することによってデータ依存性の解析を実質的に不可能にすることができる。
【0083】
図25には、この発明に係るICカード用チップの動作の一例を説明するための波形図が示されている。同図(A)には、この発明の理解を容易にするために、通常のICカード用チップでの動作波形が比較のために示され、同図(B)に、この発明に係るICカード用チップの波形図が示さている。
【0084】
同図(A)では、1回目(1st tracing) と2回目の電源電流I1とI2は、バスBusに対して同じ信号が伝えられて、同じ回路が動作するので同様な波形(I1=I2)になるものである。このようにある決まった一定のタイミングでプログラムを実行し、毎回、命令の実行サイクル数は固定しており、その結果電流波形も上記のように同一になるものである。
【0085】
同図(B)に示すように、ランダムな割り込み処理が挿入された場合には、1回目と2回目とで仮に同じ、暗号処理等を行った場合でも、その都度割り込みによるダミールーチン(dummy routine)が実行されるタイミングが異なり、それに対応して1回目の電流I1と2回目の電流I2とでは、その電流波形が異なる(I1≠I2)ものとなってしまう。この結果、本願発明に係るICカード等では暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性など存在しなくなり、前記のように電流波形の解析による暗号鍵の解読等を徒労にしてしまうことができる。
【0086】
図26には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の他の一実施例の概略ブロック図が示されている。この実施例では、乱数発生器402に代えて乱数設定レジスタ415が設けられる。乱数設定レジスタ415には、CPU413による乱数発生プログラムにより発生された乱数がロードされる。CPU413は、特に制限されないが、割り込み要求に対応してROM410に内蔵された乱数発生プログラムを実行して、掛け算や加算等の乱数発生処理を行って生成された乱数を乱数設定レジスタ415にロードする処理を行う。
【0087】
タイミング生成回路406において、インターバル生成回路403に上記生成された乱数をロードさせることにより、前記同様にランダムなインターバルでの割り込み要求が発生され、その都度上記プログラムによって乱数を形成し、本来のデータ処理に戻るようにするものである。このため、ICカードをリーダライタに接続した場合、それを受けてCPU413はまず乱数生成プログラムを実行するようにすればよい。この構成では、ソフトウェア的に乱数を発生させるので、回路の簡素化を図ることができる。
【0088】
図27には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の他の一実施例の概略ブロック図が示されている。この実施例では、乱数発生器402に代えて発振器416が設けられる。この発振器416は、素子の温度変化や電源電圧の変化に対応して素子特性が変化することを利用したリングオシレータや、自己の発振信号により時定数が変化させられる前記図12や図13のようなリングオシレータあるいは図11、図14のようにPLL回路を利用して不安定な発振動作を行うようにした発振回路を用いるとよい。
【0089】
この実施例では、上記の発振器416の発振周波数の変動に対応してカウンタのクロック周期が変化し、同じ計数値でもアンダーフロー判定回路405がオールゼロを判定する周期(インターバル)が異なるようになって、前記同様にランダムな割り込み要求が行われるようになる。
【0090】
この実施例では、監視用レジスタ417が付加されている。これにより、ランダムなタイミング挿入が正常に機能しているかどうかをCPU413のプログラムから監視できる。割り込み要求409によって、監視用レジスタ417の中のフリップフロップF/Fがセットされる。監視用レジスタ417は、データバスを介してCPU413からリードすることができる。以上に説明した監視手段は、ICカード用チップ(1チップマイクロコンピュータ)に対する物理的な破壊を用いた不正情報入手に対抗するプログラムを作成するのが容易になるという点で重要な意味を持つものである。
【0091】
図28には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に他の一実施例の概略ブロック図が示されている。この実施例では、乱数発生器402とタイミング生成回路406とで形成されたランダムな信号を利用して、CPU413に以上の命令からなる擬似的処理を挿入し、タイミングを変更するものである。
【0092】
タイミング生成回路406は、乱数発生器402を利用してランダムな命令挿入タイミングを供給する。CPU413は、アドレスバスとデータバスを介して、ROM410からの命令をフェッチし、その命令を実行する。フェッチした命令は、命令レジスタ4014から命令変更回路4004を経由して、命令デコーダ4008に送られる。命令デコーダ4008からの信号を受けて、制御回路4009は、演算器4013やその他の回路を制御して、命令の実行を制御する。
【0093】
通常は、命令レジスタ4014からの命令は、命令変更回路4004において、変更されることなく、命令デコーダ4008に送られる。しかし、命令挿入タイミングが要求されていると、命令変更回路4004は命令をノーオペレーション命令(NOP命令)に変更する。さらにこの時、この図には示していないがプログラムカウンタ4012の更新停止信号を出力する。この更新停止信号は、命令実行に伴うプログラムカウンタ4012の更新を停止することを指示する。これは、上記命令変更回路4004によって挿入されるNOP命令によって、プログラムカウンタ4012の変更が余分に行われないようにするためである。
【0094】
図29には、図28のICカード用チップの動作の一例を説明するためのタイミング図である。同図には、命令挿入タイミングが要求されていない通常動作の場合のタイミング図が示されている。CPUは、アドレスバスとデータバスを介して、ROMからの命令をフェッチしてその命令を実行する。つまり、フェッチした命令は、命令レジスタから命令変更回路を経由して、命令デコーダに送られて命令実行がなされる。つまり、ROMからの命令フェッチからその実行までがA−B−C−D−E−Fのように順次に行われる。
【0095】
図30には、図28のICカード用チップの動作の他の一例を説明するためのタイミング図である。同図には、命令挿入タイミングが要求された場合のタイミング図が示されている。つまり、命令Bの命令実行を行うときに命令挿入タイミング1407が発生すると、このとき命令Bが変更を受けてNOP命令1406が実行される。NOP命令1406の実行時には、再び命令Bのフェッチサイクル1402が行なわれる。このように図30では、命令挿入タイミング1407によって通常の暗号処理に悪影響を及ぼさない命令挿入が行われて、タイミングが変更されるものである。
【0096】
図31には、図28のICカード用チップの更に他の動作の一例を説明するためのタイミング図である。同図には、命令挿入タイミングが要求されていない通常動作の場合のタイミング図が示されている。CPUは、アドレスバスとデータバスを介して、ROMからの命令をフェッチしてその命令を実行する。つまり、フェッチした命令は、命令レジスタから命令変更回路を経由して、命令デコーダに送られて命令実行がなされる。つまり、ROMからの命令フェッチからその実行までがA−B−C−D−E−Fのように順次に行われる。このタイミング図は、次に説明する図32との比較のためものものである。
【0097】
図32には、図28のICカード用チップの動作の更に他の一例を説明するためのタイミング図である。通常は前記図31のように命令実行を行うICカード用チップにおいて、命令挿入タイミングの要求によって次のような命令実行が変更される。例えば、フェッチされたデータバス上の命令Bが、命令レジスタ1705に設定されたときに命令挿入タイミング1708の要求があった場合、このとき命令Bが変更を受けて、NOP命令でなく、現在のプログラムカウンタへの分岐命令BRABとする点が異なる。
【0098】
上記のように現在のプログラムカウンタへの分岐命令BRABを実行するようにした場合には、MOP命令を実行した場合のようにプログラムカウンタの変更を停止する必要がない。なぜなら、挿入した命令BRABは、現在のPCへの分岐命令なので、この命令を実行することによってプログラムカウンタの値は、正しく更新されるからである。上記命令BRABの実行時には、再び命令Bのフェッチサイクル1702が行なわれる。
【0099】
上記命令の変更がランダムに行われることの結果、前記図25(B)に示すように1回目と2回目とで仮に同じ、暗号処理等を行った場合でも、その都度命令変更が実行されるタイミングが異なり、それに対応して1回目の電流I1と2回目の電流I2とでは、その電流波形が異なる(I1≠I2)ものとすることができる。この結果、前記同様に本願発明に係るICカード等では暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性など存在しなくなり、前記のように電流波形の解析による暗号鍵の解読等を徒労にしてしまうことができる。
【0100】
この出願に係る発明思想では、時間軸でみた場合の消費電流波形を不規則に、いわば再現性が無いように変化させることである。このような時間軸での消費電流を変化させる手段として、前記のように疑似的処理を挿入することに代え、あるいはそれとともにクロック自体の周波数にランダムな揺らぎを与えることによっても同様に時間軸でみた場合の消費電流を変化させることができる。
【0101】
ICカード用チップ等の1チップのマイクロコンピュータでは、外部のクロックに同期して、ある決まった一定のタイミングでプログラムを実行する。また、通常のプログラムを実行する場合、毎回、命令の実行サイクル数は固定しており、その結果電流波形も固定するものである。そこで、外部のクロックとの関係で内部クロックの位相を時間軸でみた場合に変化させるようにすれば、特定の暗号処理を行うタイミングが微妙に変化することになり、電流波形を上記のように時間軸上で比較することによってデータ依存性の解析を実質的に不可能にすることができる。
【0102】
図33には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に他の一実施例の概略ブロック図が示されている。この発明に係るICカード用チップの構成は、前記同様にCPU413、ROM410やRAM411、EEPROM412などの記憶装置、入出力ポート(I/Oポート)414などと、本発明によって追加された乱数発生回路402、制御レジスタ421及びクロック生成回路418からなる。
【0103】
上記クロック生成回路418は、1チップマイクロコンピュータ外部から供給される外部クロックCLKを入力として、その周波数を変動させて、マイクロコンピュータの内部クロック420を形成する。上記クロック生成回路418において周波数を変動させるか否かは、周波数ジッタイネーブル信号422によって制御可能である。この周波数ジッタイネーブル信号422は、CPU413によって制御レジスタ421に設定することによってプログラムから制御できる。本発明のランダムタイミングのON/OFFを制御可能にする方法は、本実施例に限らず本発明のすべてに応用可能である。例えば、ICカードがリーダライタと通信を行なう際に、同期を取る必要がある場合などの時に、本発明のランダムタイミング機能をOFFさせることが可能となる。
【0104】
クロック生成回路418は、乱数発生回路402で形成された乱数を用いて、上記内部クロック信号420の周波数を変動させるものである。このために、乱数発生回路402が必要になるが、前記暗号用演算回路(RNGモジュール)を搭載した場合、それに必要な乱数を上記乱数発生器402で形成したものを併用するものであってもよい。例えば、乱数発生器402は、前記図6〜図14等のうち乱数生成に関連する部分のものを用いることができる。
【0105】
図34には、図33のICカード用チップ(半導体集積回路装置)に搭載されるクロック生成回路の一実施例のブロック図が示されている。この実施例では位相比較き4110、ローパスフィルタ4111、VCO(電圧制御型発振回路)4112及び分周回路4113からなるつPLL回路が利用される。上記VCO4112の制御電圧を保持するキャパシタC0に対して、周波数ジックイネーブル信号によりスイッチ制御されるMOSFETQを介してキャパシタC1〜Cnを接続する。これらのキャパシタC1〜Cnの他端には、前記乱数発生回路で形成された乱数が入力される。
【0106】
上記キャパシタC1〜Cnは、乱数に対応したロウレベル又はハイレベルの信号が入力されるので、それぞれに対応して上記キャパシタC0との間で電荷分散を生じしめて制御電圧を変化させる。これにより、VCOで形成される発振信号の周波数が変化して、それを分周して形成されたクロック信号の周期が変動することとなる。このように、ランダムに動作クロックの周期を変動させることにより、暗号処理等での電流波形を上記のように時間軸上で比較することによる解析を実質的に不可能にすることができる。上記周波数ジッタイネーブルは、周波数を変動させるか否かを制御する信号であり、それがロウレベルにされると上記MOSFETQがオフ状態となって、上記のような乱数による制御電圧に変動を生じさせなくできる。
【0107】
図35には、図33のICカード用チップ(半導体集積回路装置)に搭載されるクロック生成回路の他の一実施例のブロック図が示されている。この実施例では、それぞれ分周比が異なる分周回路4114、4115及び4116と、切り替え同期回路4117と、クロック切り替え回路4118及びセレクタ4119が用いられる。クロック切り替え回路4118は、クロック分周イネーブル信号により動作状態にされ、乱数に従ってセレクタ4119を制御して上記3つの分周出力のうち1つを選択して出力させる。
【0108】
切り替え同期回路4117は、上記分周比が1/2、1/4及び1/8のように異なる場合、その切り替えに際して現在出力中の波形を監視し、その終了タイミングを検出してクロック切り替え回路にセクレタ4119の切り替えを指示する。これにより、マイクロコンピュータクロックが連続性をもって、言い換えるならば、ハザードなどのノイズを発生させることなくその周期の切り替えが行われる。このように、ランダムに動作クロックの分周比を可変にすることにより、データ処理のタイミングを変更することより、暗号処理等での電流波形を上記のように時間軸上で比較することによる解析を実質的に不可能にすることができる。上記クロック分周イネーブルは、周波数を分周比により変動させるか否かを制御する信号であり、選択的に乱数による分周比の切り替えを停止させることができる。
【0109】
図36には、図33のICカード用チップ(半導体集積回路装置)に搭載されるクロック生成回路の更に他の一実施例のブロック図が示されている。この実施例では、クロック遅延量生成回路4102と切り替え同期回路4121及びクロック遅延量切り替え回路4122が用いられる。クロック遅延量切り替え回路4122は、クロック遅延イネーブル信号により動作状態にされ、乱数に従ってクロック遅延量生成回路を制御して外部から供給されるクロック信号CLKの遅延量を変化させて出力させる。
【0110】
クロック遅延量生成回路は、インバータ回路IVとその出力に設けられた抵抗R1とキャパシタCからなる遅延回路のうち、上記抵抗R1に抵抗R2がスイッチMOSFETQを介して選択的に並列接続される。このような可変遅延回路が複数段直列接続され、各段のスイッチが前記乱数に対応したスイッチ制御信号S1〜S3でスイッチ制御される。切り替え同期回路4121は、入力クロック信号CLKを監視し、その変化タイミングを検出してクロック遅延量切り替え回路4122に乱数に対応したスイッチ制御信号S1〜S3の変化を指示する。これにより、入力されたクロック信号CLKに対してマイクロコンピュータクロックは同じ周波数であるが、その遅延量、つまりマイクロコンピュータクロックの位相が乱数に対応して変化させられる。
【0111】
図37には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に他の一実施例の概略ブロック図が示されている。この発明に係るICカード用チップの構成は、前記同様にCPU413、ROM410やRAM411、EEPROM412などの記憶装置、入出力ポート(I/Oポート)414などと、本発明によって追加された乱数発生回路402、タイミング生成回路406とバス権要求回路419、バス権調停回路420が用いられる。なお、CPU413以外にDMAC(直接メモリアクセス制御回路)等のようにバスマスタとなるような周辺回路が存在するものでは、バス権要求回路419、バス権調停回路420が存在するので、それをそのまま利用できる。
【0112】
この実施例ではCPU413にバス権を開放させることにより、データ処理のタイミングを変更するものである。タイミング生成回路406は、乱数発生器402からの乱数を受けてバス権要求回路419にバスサイクル挿入タイミングを指示する。このタイミングにおいて、バス権要求回路419は、バス権調停回路420に対してバス権要求信号を出力する。バス権調停回路420は、バスサイクルの切れ目において、バス権CPU許可信号をネゲートし、バス権許可信号をアサートする。CPU413は、上記バス権CPU許可信号のネゲートによりバス権を放棄し、アドレスバスやリード信号の出力を止める。
【0113】
上記バス権要求回路は、バス権許可信号を受けてアドレスバスやリード信号を出力しメモリをアクセスする。このようなバスサイクル挿入タイミングがアサートされた場合、メモリアクセスサイクルを本来の暗号処理と無関係に挿入することが可能となり、前記同様に本願発明に係るICカード等では暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性など存在しなくなり、前記のように電流波形の解析による暗号鍵の解読等を徒労にしてしまうことができる。
【0114】
図38には、図37のICカード用チップの動作の一例を説明するためのタイミング図が示されている。バス権要求信号2502がアサートされると、バス権CPU許可信号2504がネゲートされバス権許可信号2506がアサートされる。バス権CPU許可信号2504のネゲートを受けて、CPUバスサイクルは中断され、バス権要求回路のバスサイクル2511が行われる。上記のバス権要求信号がアサートされるタイミングが、前記のように乱数に対応してランダムに変化することとなり、そのインターバルが不規則となる。このため、前記同様に暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性をなくして前記のように電流波形の解析による暗号鍵の解読等を実質的に不可能にすることができる。
【0115】
図39には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に他の一実施例の概略ブロック図が示されている。この発明に係るICカード用チップの構成は、前記同様にCPU413、ROM410やRAM411、EEPROM412などの記憶装置、入出力ポート(I/Oポート)414などと、本発明によって追加された乱数発生回路402、タイミング生成回路406とウェイト要求回路421用いられる。
【0116】
この実施例ではCPU413のバスサイクルにランダムにウェイトサイクルを挿入させることにより、データ処理のタイミングを変更するものである。タイミング生成回路406は、乱数発生器402からの乱数を受けてウェイト要求回路421にウェイト要求信号の挿入タイミングを指示する。このタイミングにおいて、ウェイト要求回路421は、CPU413に対してバスサイクルに対するウェイト要求信号をアサートする。CPU413は、ウェイト要求信号アサートされた場合、通常のバスサイクルより長いバスサイクルを行う。
【0117】
上記のウェイト要求信号がアサートされるタイミングが、前記のように乱数に対応してランダムに変化することとなり、そのインターバルが不規則となる。このため、前記同様に暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性をなくして前記のように電流波形の解析による暗号鍵の解読等を実質的に不可能にすることができる。
【0118】
図40には、図39のICカード用チップの動作の一例を説明するためのタイミング図が示されている。タイミング生成回路406よりランダムに発生されるウェイト挿入タイミング信号を受けると、ウェイト要求回路421はCPU413に対してウェイト要求信号をアサートする。CPU413は、ウェイト要求信号がアサートされると、そのバスサイクルを通常のバスサイクル2704や2705より長いバスサイクル2706を実行する。
【0119】
上記ウェイト挿入タイミング信号が前記のように乱数発生器402で形成された乱数に対応してランダムに発生し、そのインターバルが不規則となる。このため、前記同様に暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性がなくなってしまう結果、前記のように電流波形の解析による暗号鍵の解読等を実質的に不可能にすることができる。
【0120】
図41には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に一実施例の概略ブロック図が示されている。この発明に係るICカード用チップの構成は、前記図23に示したように乱数発生器402で発生された乱数によりインターバルを可変にするタイマを構成して、CPU413の割り込み処理をランダムに挿入することによってタイミングを変更する。これに加えて、偽電流発生回路422も搭載し、上記乱数発生器402で発生され乱数により偽電流を流すようにするものである。
【0121】
つまり、前記図2等を代表とする実施例のように偽電流を発生させるものと、前記図23の実施例のように割り込みにより暗号処理の手順やタイミングを変化させるものとを組み合わせることにより、暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形の依存性をなくし、前記のように電流波形の解析による暗号鍵の解読等をいっそう困難にすることができるものとなる。
【0122】
図42には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に一実施例の概略ブロック図が示されている。この発明に係るICカード用チップの構成は、前記図28に示したように乱数発生器402で発生された乱数によりインターバルを可変にするタイマを構成して、CPU413の実行する命令が変更を受けてNOP命令や現在のプログラムカウンタへの分岐命令に差し替えて実行する。このように通常の暗号処理に悪影響を及ぼさない命令挿入が行われて、タイミングが変更されるものである。これに加えて、偽電流発生回路422も搭載し、上記乱数発生器402で発生され乱数により偽電流を流すようにするものである。
【0123】
つまり、前記図2等を代表とする実施例のように偽電流を発生させるものと、前記図28の実施例のように割り込みにより暗号処理の命令を変化させるものとを組み合わせることにより、暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形の依存性をなくし、前記のように電流波形の解析による暗号鍵の解読等をいっそう困難にすることができるものとなる。
【0124】
上記のように内部回路動作に無関係で不規則性を持つ偽電流を発生させ、その再現性を損なうようにしたものと、データ処理の手順の時間軸上での動作をランダムに変化させて消費電流波形を変化させるものとは、前記図41及び図42の他に、前記実施例の中から適宜に選択して組み合わせるものとすればよい。
【0125】
図43には、この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に他の動作の一例を説明するためのタイミング図が示されている。乱数発生器で形成された乱数511(乱数A)が初期値512としてカウンタにロードされて、ダウンカウント動作が行われてカウント値が−1ずつの計数動作に対応して小さくなる。同図には、このようなダウン計数動作によるカウント値514の変化を右下がりの直線により表わしている。
【0126】
同図のようなダウン計数動作中では、ICカード用チップは、処理A518、処理B519、処理C520等の並列的に実行可能な複数のデータ処理を、時分割的に行っている。上記カウント値514が零になると、上記実行中の処理A518が中断されて、代わってタスクスケジュール処理が実行される。このタスクスケジュール処理と同時に乱数発生器では乱数511が上記とは異なる乱数Bを形成しており、初期値513としてカウンタにロードされて、前記のようにダウンカウント動作が行われる。上記一定の処理の後、上記タスクスケジュール処理は動作を終了し、異なる処理B519について、実行が再開される。そして、上記カウント値514が零になると、再びタスクスケジュール処理が動作される。
【0127】
上記のような処理を実行するインターバル516が、前記乱数発生器で形成された乱数511によって不規則に変化するものとなる。このようにlCカード用チップにおいて行うべき処理を複数の処理に分割し、夫々の実行の順序やタイミングが変わり、時間軸で見た場合の消費電流波形が変化することになる。これにより特定の暗号処理を含む処理を行うタイミングが変化することになり、電流波形を上記のように時間軸上で比較することによつてデータ依存性の解析を困難にすることが出来る。この場合には、前記のような疑似的処理に代えて並列処理のインターバルが切り替えを利用できるからデータ処理を効率よく行うことができる。
【0128】
上記の実施例から得られる作用効果は、下記の通りである。すなわち、
(1) データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部端子がリードライト装置のような外部装置と電気的に接続されることによって動作電圧が供給され、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたROMを含み、上記データ処理手順に従うデータ処理動作が行われるICカード又は半導体集積回路装置において、上記データ処理手順に従う適当なデータ処理動作のタイミングを変化させる手段を設けることにより、毎回、暗号処理の手順やタイミングが変わり時間軸でみた場合の消費電流波形が変化するため、電流波形を上記のように時間軸上で比較するというデータ依存性の解析を実質的に不可能にして機密保護の強化を図ることができるという効果が得られる。
【0129】
(2) 上記データ処理手順のタイミングを不規則的に変化させる手段として、上記データ処理手順に対して不規則的に疑似的処理を挿入することにより、簡単な構成で上記機密保護を実現できるという効果が得られる。
【0130】
(3) 上記データ処理手順に対して不規則的に疑似的処理を挿入する手段として、乱数により設定されたタイマーからの割り込み処理を用いることにより、簡単な構成で効果的に上記機密保護を実現できるという効果が得られる。
【0131】
(4) 上記割り込み処理による割り込み動作が行われていることを監視するレジスタを設けることにより、CPUのプログラムによって上記割り込み処理機能が正常に動作しているか否かの判定ができ上記機密保護機能の信頼性を高くすることができるという効果が得られる。
【0132】
(5) 上記データ処理手順に対して不規則的に疑似的処理を挿入する手段として、非安定の発振回路で形成された発振周波数の変動に対応した一定の計数出力からの割り込み処理を用いることにより、簡単な構成で効果的に機密保護が実現できるという効果が得られる。
【0133】
(6) 上記データ処理手順に対して不規則的に疑似的処理を挿入する手段として、乱数により設定されたタイミングにおいて他の命令を挿入することにより、簡単な構成で効果的な機密保護が実現できるという効果が得られる。
【0134】
(7) 上記他の命令としては、ノーオペレーション命令を用いつつ、かかる命令のときにプログラムカウンタの更新を停止することにより、本来の命令によるデータ処理に影響を与えることなく、上記データ処理手順を不規則に変化させることができるという効果が得られる。
【0135】
(8) 上記他の命令として、現在のプログラムカウンタへの分岐命令を用いることにより、プログラムカウンタの動作を考慮するけことく、簡単に本来の命令によるデータ処理に影響を与えることなく、上記データ処理手順を不規則に変化させることができるという効果が得られる。
【0136】
(9) 上記データ処理手順に対して不規則的に疑似的処理を挿入する手段として、バス権要求回路とバス権調停回路を用い、乱数により設定されたタイミングにおいてバス権要求回路によりバス使用権を獲得してCPUによるバスサイクルを一時的に中断させることにより、効果的な機密保護が実現できるという効果が得られる。
【0137】
(10) 上記データ処理手順に対して不規則的に疑似的処理を挿入する手段として、ウェイト要求回路を用い、乱数により設定されたタイミングにおいてウェイト要求回路によりCPUによるバスサイクルをその間長くさせることにより、簡単な構成で効果的な機密保護が実現できるという効果が得られる。
【0138】
(11) 上記データ処理手順のタイミングを不規則的に変化させる手段として、データ処理装置の動作クロック信号の周期を不規則的に変化させることにより、簡単な構成で上記機密保護を実現できるという効果が得られる。
【0139】
(12) 上記動作クロック信号の周期を不規則的に変化させる手段として、PLL回路で構成されたクロック生成回路を用い、かかるPLL回路におけるVCOの制御電圧を保持するキャパシタに、スイッチ手段により複数のキャパシタの一方の電極を選択的に接続し、かかる複数のキャパシタの他端に乱数に対応した電圧信号を供給することにより、広い範囲でのランダムなクロック信号の変化を行わせることができるから機密保護のいっそうの強化を図ることができるという効果が得られる。
【0140】
(13) 上記動作クロック信号の周期を不規則的に変化させる手段として、外部端から供給されるクロック信号を受ける複数の分周回路により形成された複数通りの分周出力のうち、乱数により指定される1つの分周出力をセレクタを介して選択的に出力させることにより、簡単な構成で比較的広い範囲でのランダムなクロック信号の変化を行わせることができるから機密保護の強化を図ることができるという効果が得られる。
【0141】
(14) 上記動作クロック信号の周期を不規則的に変化させる手段として、外部端から供給されるクロック信号を受ける可変遅延回路の遅延量を乱数により制御するものとすることにより、簡単な構成で比較的広い範囲でのランダムなクロック信号の変化を行わせることができるから機密保護の強化を図ることができるという効果が得られる。
【0142】
(15) 上記乱数を形成する乱数発生回路として、非制御発振回路と、その発振出力を受ける第1のシフトレジスタとを用い、上記第1のシフトレジスタのシフト動作を行うクロック信号が上記発振出力と非同期とすることにより、簡単に乱数を発生させることができるという効果が得られる。
【0143】
(16) 上記乱数発生回路として、PLL回路のVCO出力を受けるシフトレジスタを用い、上記PLL回路を非制御発振回路の発振出力を基準信号とするものとし、かつ、上記VCOの制御信号を形成するローパスフィルタの容量値を上記非制御発振出力と、上記VCOの分周出力に基づいて変化させることにより、周波数変動を大きくしかも不規則的に行うようにすることができるから乱数を効果的に発生させることができるという効果が得られる。
【0144】
(17) 上記データ処理動作のタイミングを変化させる手段として、並列的に実行可能な複数のデータ処理を乱数に従って切り替えることにより行うことにより、上記の機密保護を行うとともにデータ処理の効率化を図ることができるという効果が得られる。
【0145】
(18) 外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたROMを含み、上記データ処理手順に従ってデータの入出力動作が行われる半導体集積回路装置において、上記データ処理手順のタイミングを不規則的に変化させる手段を設けることより、毎回、暗号処理の手順やタイミングが変わり時間軸でみた場合の消費電流波形が変化するため、電流波形を上記のように時間軸上で比較するというデータ依存性の解析を実質的に不可能にして半導体集積回路装置の機密保護の強化を図ることができるという効果が得られる。
【0146】
(19) 上記データ処理手順のタイミングを不規則的に変化させる手段として、上記データ処理手順に対して不規則的に疑似的処理を挿入することにより、簡単な構成で上記半導体集積回路装置の機密保護を実現できるという効果が得られる。
【0147】
(20) 上記データ処理手順に対して不規則的に疑似的処理を挿入する手段として、乱数により設定されたタイマーからの割り込み処理を用いることにより、簡単な構成で効果的に上記半導体集積回路装置の機密保護を実現できるという効果が得られる。
【0148】
(21) 上記割り込み処理による割り込み動作が行われていることを監視するレジ1タを設けることにより、CPUのプログラムによって上記割り込み処理機能が正常に動作しているか否かの判定ができ上記半導体集積回路装置の機密保護機能の信頼性を高くすることができるという効果が得られる。
【0149】
(22) 上記データ処理手順のタイミングを不規則的に変化させる手段として、データ処理装置の動作クロック信号の周期を不規則的に変化させることにより、簡単な構成で上記半導体集積回路装置の機密保護を実現できるという効果が得られる。
【0150】
(23) 上記動作クロック信号の周期を不規則的に変化させる手段として、PLL回路で構成されたクロック生成回路を用い、かかるPLL回路におけるVCOの制御電圧を保持するキャパシタに、スイッチ手段により複数のキャパシタの一方の電極を選択的に接続し、かかる複数のキャパシタの他端に乱数に対応した電圧信号を供給することにより、広い範囲でのランダムなクロック信号の変化を行わせることができるから半導体集積回路装置の機密保護のいっそうの強化を図ることができるという効果が得られる。
【0151】
(24) 上記動作クロック信号の周期を不規則的に変化させる手段として、外部端から供給されるクロック信号を受ける複数の分周回路により形成された複数通りの分周出力のうち、乱数により指定される1つの分周出力をセレクタを介して選択的に出力させることにより、簡単な構成で比較的広い範囲でのランダムなクロック信号の変化を行わせることができるから半導体集積回路装置の機密保護の強化を図ることができるという効果が得られる。
【0152】
(25) 上記動作クロック信号の周期を不規則的に変化させる手段として、外部端から供給されるクロック信号を受ける可変遅延回路の遅延量を乱数により制御するものとすることにより、簡単な構成で比較的広い範囲でのランダムなクロック信号の変化を行わせることができるから半導体集積回路装置の機密保護の強化を図ることができるという効果が得られる。
【0153】
(26) 上記乱数を形成する乱数発生回路として、非制御発振回路と、その発振出力を受ける第1のシフトレジスタとを用い、上記第1のシフトレジスタのシフト動作を行うクロック信号が上記発振出力と非同期とすることにより、半導体集積回路装置において簡単に乱数を発生させることができるという効果が得られる。
【0154】
(27) 上記データ処理動作のタイミングを変化させる手段として、並列的に実行可能な複数のデータ処理を乱数に従って切り替えることにより行うことにより、半導体集積回路装置の機密保護を行うとともにデータ処理の効率化を図ることができるという効果が得られる。
【0155】
以上本発明者よりなされた発明を実施例に基づき具体的に説明したが、本願発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、ICカードには、1つの半導体集積回路装置を搭載するもの他、複数の半導体集積回路装置が搭載されるものであってもよい。この場合、偽電流発生回路はいずれか1つの半導体集積回路装置に搭載されればよい。偽電流発生のための乱数発生回路は、前記非同期の発振信号を用いるものの他、例えばランダムノイズを増幅した信号をクロックによりサンプリングするもの等何であってもよい。
【0156】
半導体集積回路装置は、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたROMを含んで上記データ処理手順に従ってデータの入出力動作が行われるものであれば何であってもよい。例えば、前記のようなICカード用チップの他に、ゲーム用等の1チップマイクロコンピュータ等のように機密保護の必要な各種半導体集積回路装置に広く適用できるものである。この発明は、機密保護を必要とする各種ICカード及び半導体集積回路装置に広く利用できる。
【0157】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。すなわち、データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部端子がリードライト装置のような外部装置と電気的に接続されることによって動作電圧が供給され、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたROMを含み、上記データ処理手順に従うデータ処理動作が行われるICカード又は半導体集積回路装置において、上記データ処理手順に従う適当なデータ処理動作のタイミングを変化させる手段を設けることにより、毎回、暗号処理の手順やタイミングが変わり時間軸でみた場合の消費電流波形が変化するため、電流波形を上記のように時間軸上で比較するというデータ依存性の解析を実質的に不可能にして機密保護の強化を図ることができる。
【図面の簡単な説明】
【図1】この発明が適用されるICカードの一実施例を示す外観図である。
【図2】この発明に係るICカードに搭載されるICカード用チップの一実施例を示す概略ブロック図である。
【図3】図2に示したICカード用チップの等価回路図である。
【図4】この発明を説明するための電流波形図である。
【図5】この発明に係る偽電流発生回路の一実施例を示す概略構成図である。
【図6】この発明に係る偽電流発生回路の一実施例を示す具体的回路図である。
【図7】この発明に係る偽電流発生回路の他の一実施例を示す概略構成図である。
【図8】図2の暗号演算回路のインターフェイス部の一実施例を示すブロック図である。
【図9】CPUによる乱数入手動作を説明するための一実施例のフローチャート図である。
【図10】図2の暗号演算回路の一実施例を示す全体構成図である。
【図11】図10の発振回路1、2の一実施例を示すブロック図である。
【図12】図11に設けられる不安定発振回路の一実施例を示す回路図である。
【図13】図11に設けられる不安定発振回路の他の一実施例を示す回路図である。
【図14】図10の発振回路1、2の他の一実施例を示すブロック図である。
【図15】図10の出力調整回路の一実施例を示す構成図である。
【図16】この発明に係る乱数発生回路の他の一実施例を示すブロック図である。
【図17】この発明に係る乱数発生回路の他の一実施例を示すブロック図である。
【図18】この発明に係る半導体集積回路装置の一実施例を示す要部ブロック図である。
【図19】この発明に係る半導体集積回路装置の他の一実施例を示す要部ブロック図である。
【図20】この発明に係る半導体集積回路装置の他の一実施例を示す要部ブロック図である。
【図21】この発明に係る半導体集積回路装置の更に他の一実施例を示す要部ブロック図である。
【図22】この発明に係る半導体集積回路装置の更に他の一実施例を示す要部ブロック図である。
【図23】この発明に係るICカードに搭載されるICカード用チップの一実施例を示す概略ブロック図である。
【図24】この発明に係るICカード用チップの動作の一例を説明するためのタイミング図である。
【図25】この発明に係るICカード用チップの動作の一例を説明するための波形図である。
【図26】この発明に係るICカードに搭載されるICカード用チップの他の一実施例を示す概略ブロック図である。
【図27】この発明に係るICカードに搭載されるICカード用チップの他の一実施例を示す概略ブロック図である。
【図28】この発明に係るICカードに搭載されるICカード用チップの更に他の一実施例を示す概略ブロック図である。
【図29】図28のICカード用チップの動作の一例を説明するためのタイミング図である。
【図30】図28のICカード用チップの動作の一例を説明するためのタイミング図である。
【図31】図28のICカード用チップの動作の更に他の一例を説明するためのタイミング図である。
【図32】図28のICカード用チップの動作の更に他の一例を説明するためのタイミング図である。
【図33】この発明に係るICカードに搭載されるICカード用チップの更に他の一実施例を示す概略ブロック図である。
【図34】図33のICカード用チップに搭載されるクロック生成回路の一実施例を示すブロック図である。
【図35】図33のICカード用チップに搭載されるクロック生成回路の他の一実施例を示すブロック図である。
【図36】図33のICカード用チップに搭載されるクロック生成回路の更に他の一実施例を示すブロック図である。
【図37】この発明に係るICカードに搭載されるICカード用チップの更に他の一実施例を示す概略ブロック図である。
【図38】図37のICカード用チップの動作の一例を説明するためのタイミング図である。
【図39】この発明に係るICカードに搭載されるICカード用チップの更に他の一実施例を示す概略ブロック図である。
【図40】図39のICカード用チップの動作の一例を説明するためのタイミング図である。
【図41】この発明に係るICカードに搭載されるICカード用チップの更に一実施例を示す概略ブロック図である。
【図42】この発明に係るICカードに搭載されるICカード用チップの更に一実施例を示す概略ブロック図である。
【図43】この発明に係るICカードに搭載されるICカード用チップ(半導体集積回路装置)の更に他の動作の一例を説明するためのタイミング図である。
【符号の説明】
201…中央処理装置(CPU)、202…I/Oポート、203…アドレスバス、204…データバス、205…クロック生成回路、206…ROM、207…RAM、208…EEPROM、209…暗号用演算回路、210…偽電流発生回路、
401…ICカード用チップ、402…乱数発生回路、403…インターバル生成回路、404…デクリメンタ、405…アンダーフロー判定回路、406…タイミング生成回路、407…カウンタ(レジスタ)、408…セレクタ、409…割り込み要求、410…ROM、411…RAM、412…EEPROM、413…CPU、414…I/O、415…乱数設定レジスタ、416…発振器、4004…命令変更回路、4008…命令デコーダ、4009…制御回路、4011…加算器、4012…プログラムカウンタ、4013…演算器、4014…命令レジスタ、418…クロック生成回路、419…バス権要求回路、420…バス権調停回路、421…制御レジスタ、421…ウェイト要求回路。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an IC card and a semiconductor integrated circuit device, and more particularly to a technology effective for use in security protection technology in a semiconductor integrated circuit device such as an IC card and a one-chip microcomputer with a built-in program.
[0002]
[Prior art]
An IC card is an apparatus mainly used for holding information that cannot be rewritten without permission, encrypting data using an encryption key that is secret information, and decrypting ciphertext. Since the IC card does not have a power source, when it is inserted into a reader / writer, the IC card can be operated by receiving power. When the operation becomes possible, a command is received from the reader / writer, and data is transferred to / from the reader / writer according to the command. As for the IC card, there is “IC Card” written by Junichi Mizusawa, edited by Ohmu Publishing Electronic Information Communication Society.
[0003]
The IC card is used for storing important information and performing cryptographic processing in the card because programs and important information are sealed in an IC card chip. It was considered that the difficulty of decrypting the encryption processing with the IC card was the same as the difficulty of decrypting the encryption algorithm. However, it has been suggested that the contents of encryption processing and the encryption key may be easily estimated by observing and analyzing the current consumption when the IC card performs encryption processing. This danger is described in 8.5.1.1 Passtve protective mechantsms (page 263) in "Smart Card Handbook" by John Wiley & sons W. Rankl & W. Effing.
[0004]
[Problems to be solved by the invention]
The CMOS circuit constituting the IC card chip consumes current when the output state changes from 1 to 0 or from 0 to 1. In particular, since the bus of the
[0005]
For example, consider a case where data is transferred to a 16-bit precharge bus. The precharge bus is a bus that aligns all bus values to “0” before data transfer. When data having the same number of “1” bits, for example, “88” and “11” are transferred to this bus as hexadecimal numbers having “1” bits of 2, the current waveform Are expected to have approximately the same waveform. This is because, since the number of bits changed from “0” to “1” is the same, the current is consumed in the same manner and the same current waveform is obtained. If data having a different number of “1” bits, for example, “89” or “19” in which the number of “1” bits is 3, the number of “1” bits is 2. Current consumption is different from data. This is because the bus value for three bits has changed from “0” to “1”, and that much current is consumed. Therefore, the current consumption is increased by 1 bit compared to the data in which the previous 2 bits have changed. In general, there is a regularity that the current waveform becomes higher as the number of “1” bits is larger. It seems that the transferred data can be estimated from this regularity.
[0006]
In view of this, the inventors of the present application described above for a semiconductor integrated circuit device that performs a certain data processing operation by a built-in program such as the above-described IC card and a one-chip microcomputer mounted on the IC card. It has led to the development of security technology that can more reliably prevent the contents of cryptographic processing and the decryption of cryptographic keys by observing current consumption.
[0007]
SUMMARY OF THE INVENTION An object of the present invention is to provide an IC card and a semiconductor integrated circuit device that realize enhanced security. The above and other objects and novel features of the present invention will be apparent from the description of this specification and the accompanying drawings.
[0008]
[Means for Solving the Problems]
The outline of a typical invention among the inventions disclosed in the present application will be briefly described as follows. That is, it includes a data processing device and a ROM in which data processing procedures including security information processing by the data processing device are written, and the operating voltage is reduced when the external terminal is electrically connected to an external device such as a read / write device. In an IC card or a semiconductor integrated circuit device including a data processing device and a ROM in which a data processing procedure by the data processing device is written and in which a data processing operation according to the data processing procedure is performed, Means for changing the timing of the data processing operation is provided.
[0009]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 shows an external view of an embodiment of an IC card to which the present invention is applied. The IC card has a
[0010]
FIG. 2 is a schematic block diagram showing an embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. Each circuit block in the figure is formed on a single semiconductor substrate such as single crystal silicon, although it is not particularly limited by a known CMOS integrated circuit manufacturing technique.
[0011]
The configuration of the IC card chip according to the present invention is basically the same as that of a microcomputer. The configuration includes a
[0012]
The
[0013]
Of the
[0014]
The nonvolatile memory (hereinafter referred to as EEPROM) 208 is a rewritable nonvolatile memory, and information once written therein is retained therein even when power supply is stopped. This EEPROM needs to be rewritten and is used to store data that should be retained even if the IC card is removed from the reader / writer. For example, when an IC card is used as a prepaid card, the prepaid frequency is rewritten every time it is used. The frequency in this case is held in the
[0015]
The
[0016]
The
[0017]
FIG. 3 is an equivalent circuit diagram of the IC card chip shown in FIG. The current I flowing between the power supply voltage VCC and the circuit ground potential is the current I flowing through each circuit block of the bus line, CPU, ROM, volatile memory, nonvolatile memory, RNG, and pseudo current generating circuit. BUS , I CPU , I MEM1 , I MEM2 , I RNG , I DUM Sum of (I BUS + I CPU + I MEM1 + I MEM2 + I RNG + I DUM ). RNG current I RNG And false current signal I DUM Are different every time even in the same internal state and the same operation.
[0018]
The decryption of the encryption algorithm is presumed to be based on statistical analysis of the change in the sum of currents flowing in the IC card. Therefore, in this embodiment, as one technique for making such analysis substantially impossible, the current I of the false current generation circuit is detected by the change in the current. DUM The structure which adds is taken. In this case, the current I DUM Is an irregular current value independent of the operation of each internal circuit. In other words, the internal circuit has non-reproducibility from a statistical point of view so that the same state and the same operation are different each time.
[0019]
FIG. 4 shows a current waveform diagram for explaining the present invention. The signal current I1 represents the total sum of currents generated with the data processing. In the example of FIG. 3, I1 = I BUS + I CPU + I MEM1 + I MEM2 + I RNG It can be expressed as. On the other hand, the current I2 is a pseudo current, and the current value is changed. As described above, the meaning of this change is not related to the internal circuit operation and has irregularity. That is, a current waveform having non-reproducibility as described above is provided.
[0020]
When the pseudo current as described above is built in an IC card, or when built in a semiconductor integrated circuit device such as a one-chip microcomputer mounted on an IC card or the like, the current observed at the power supply terminal is The current is I1 + I2. For this reason, since the circuit current I1 + I2 includes the pseudo current I2, the contents of encryption processing and the estimation of the encryption key by the statistical method as described above can be prevented.
[0021]
FIG. 5 shows a schematic configuration diagram of an embodiment of the pseudo current generating circuit. In this embodiment, a random number is generated by fetching an output signal of an oscillation circuit into a register using a timing generator output asynchronous with the oscillation frequency as a clock. The register is a shift register, and generates a random number composed of binary information by converting it into a binary signal depending on whether the oscillation output input at the timing of the clock is higher or lower than the logic threshold voltage of the input unit.
[0022]
The random number is used as input data for the selector. The selector turns on / off a switch corresponding to each bit of the random number by a clock, and causes a charge-up current to flow through the capacitors C1 to C4. The capacitors C1 to C4 are not particularly limited, but their capacitance values are set separately. By making the capacitance values of the four capacitors different as described above, 16 types of current values are generated including only combinations of no charge-up, and 81 types of charge-up and discharge are included. be able to. Since such a combination can be generated irregularly by random numbers, the pseudo current can be generated with a simple configuration.
[0023]
The selector generates a pseudo current in synchronization with a clock. Since the CPU or the like performs a series of data processing in synchronization with the clock, the current I flowing through each circuit block is BUS , I CPU , I MEM1 , I MEM2 , I RNG Etc. are also generated in synchronization with the clock. Therefore, pseudo current I DUM Is generated in synchronization with the clock, it is possible to effectively and effectively make it impossible to estimate the contents of encryption processing and the encryption key by observing the current change by the statistical method.
[0024]
FIG. 6 shows a specific circuit diagram of an embodiment of the pseudo current generating circuit. In this embodiment, clocked inverter circuits are connected in cascade, and an oscillation circuit output is supplied to the first stage circuit. The operation of the clocked inverter circuit is controlled by a timing generator output asynchronous with the output of the oscillation circuit. The output signal of each stage of the cascaded clocked inverter circuit is supplied to the input of the clocked inverter circuit constituting the drive circuit. Each clocked inverter circuit constituting the drive circuit is provided with a capacitor (capacitor) charged up by the pseudo current as described above. Each clocked inverter circuit constituting the drive circuit is supplied with the output of the timing generator inverted by the inverter circuit.
[0025]
The inverter circuit connected in cascade is not particularly limited, but its driving capability is set separately. As a result, each cascade-connected inverter circuit that receives the oscillation circuit output is put into an operating state when the timing generator output is at one level (for example, high level), and the signal supplied to each inverter circuit is delayed. It is transmitted with a delay time corresponding to. When the output of the timing generator is at the other level (for example, low level), the output high impedance state is set. Therefore, the output signal of each stage when the timing generator output changes to the other level (for example, low level) is held as the input signal of the drive circuit.
[0026]
When the timing generator output is at one level, the output of each inverter circuit constituting the drive circuit is brought into a high impedance state. Therefore, each capacitor retains the previous charge state. When the timing generator output changes to the other level, the output signal of each stage is held as the input signal of the drive circuit as described above, and the level of the input signal depends on the operation state of the drive circuit. When the voltage is higher than the logic threshold voltage, a low level output signal is formed, and when it is low, a high level output signal is formed.
[0027]
When the level of the input signal is higher than the logic threshold voltage of the drive circuit, a low level output signal is formed, but if the charge is accumulated in the capacitor at that time, it is discharged, and if there is no charge in the capacitor, the current is Does not flow. Conversely, when the level of the input signal is lower than the logic threshold voltage of the drive circuit, a high-level output signal is formed. If charge is accumulated in the capacitor at that time, charge-up corresponding to the difference is made. If a current flows and there is no charge, a charge-up current up to the power supply voltage VCC flows. As described above, in addition to the fact that the signal level of each stage due to the difference in delay time of the clocked inverter circuits connected in series is a kind of random number, the state of the charge held in the previous capacitor is as described above. The charge-up current or discharge current is made different. That is, the charge itself held in the capacitor has an element as a random number.
[0028]
Therefore, the current value depends on the combination of the signal level at each stage of the inverter circuit connected in series due to the asynchronous output of the oscillation output and the timing generator output that samples it, and the amount of charge previously held in the capacitor. As a result, a huge number of pseudo-currents can be formed, and even if one-chip microcomputer is accessed several times under the same conditions and conditions, pseudo-currents with irregularity or reproducibility can be generated. it can. In this case, since the current supplied from the power supply voltage VCC side and the current flowing to the ground potential are different depending on the presence or absence of the accumulated charge in the capacitor, the current analysis can be further complicated. Since the pseudo current is generated in synchronization with the clock, the decryption of the encryption key by the current analysis can be effectively prevented in the same manner as described above.
[0029]
FIG. 7 shows a schematic configuration diagram of another embodiment of the pseudo current generating circuit. In this embodiment, the output signal of the oscillation circuit is counted by a counter, and the counted output is sampled by a timing generator output asynchronous with the oscillation frequency and transferred to a register as data. Capacitors C1 to C6 similar to the above are connected to each stage of the register. Also in this configuration, the random number is generated by sampling the count output of the counter, and the combination of the state of the charge held by the capacitors C1 to C6 and the high level output and the low level output corresponding to the random number Similarly, a pseudo current consisting of a huge number of combinations can be generated in synchronization with the clock.
[0030]
FIG. 8 is a block diagram showing an embodiment of the interface unit in the random number generation circuit RNG module shown in FIG. A data bus constituting the one-chip microcomputer is provided with a flip-flop (flag) that holds random number generation bits. The random number generated by the random number generation circuit is held in a random number storage register and can be read from the data bus. The operation state of the random number generation circuit is set in the flip-flop so that it can be read from the data bus.
[0031]
The CPU receives the random number generated by the RNG module via the random number storage register and uses it for the encryption signal processing as described above. The CPU can set the random number generation bit to put the random number generation circuit into an operating state or a stop state. Such an operation state of the random number generation circuit can be determined by reading a status bit by the CPU.
[0032]
FIG. 9 shows a flowchart of one embodiment for explaining the random number obtaining operation by the CPU. In step (1), a “random number generation bit” is set. With such a set of “random number generation bits” (for example, logic 1), the random number generation circuit starts operation.
[0033]
In step (2), it is determined whether the “status bit” is in a random number generation complete state. That is, when the random number generation circuit generates a random number and stores it in the random number storage register, it sets the “status bit”. If the “status bit” is not set (eg, logic 0), the process returns to the determination of step (2) and waits until the “status bit” is set (eg, logic 1).
[0034]
In step (3), since a valid random number is stored in the random number storage register, the CPU designates and reads the random number storage register.
[0035]
In step (4), the “status bit” is set to the state transition to “random number generating”. That is, the “status bit” is reset to
[0036]
In step (5), it is determined whether the random number read from the random number storage register has a desired data length. If the random number is not the desired data length, the process returns to step (2) and the above operation is repeated. When the random number read from the random number storage register has a desired data length, the process proceeds to step (6) to reset the “random number generation bit” and terminate the random number generation operation.
[0037]
FIG. 10 shows an overall configuration diagram of an embodiment of the random number generation circuit RNG module. The output of the
[0038]
The multi-bit signal output from each stage of the shift register 805 is corrected through an oscillation circuit output adjustment circuit and output as input data to a random number storage register (shift register) 808. The register clock 812 used for the shift operation of the random number storage register 808 is further divided by the
[0039]
The output signal of the flip-flop storing the random number generation bit is supplied as an operation control signal to the
[0040]
The
[0041]
FIG. 11 is a block diagram showing an embodiment of the
[0042]
The reference signal is formed by a comparison oscillation circuit. This oscillation circuit is not a highly stable oscillation circuit such as a crystal oscillation circuit but an unstable oscillation circuit such as a ring oscillator. The oscillation signal of the comparison oscillation circuit and the divided output obtained by dividing the oscillation output of the voltage controlled oscillation circuit are compared by a phase comparator, and a detection signal UP or DOWN corresponding to the phase difference (frequency difference) is obtained. A control voltage is generated by supplying the low-pass filter, and the oscillation frequency of the voltage controlled oscillation circuit is controlled. As a result, the oscillation frequency of the voltage controlled oscillation circuit is oscillated at a frequency obtained by multiplying the oscillation frequency of the comparison oscillation circuit by a frequency corresponding to the frequency division ratio of the frequency divider circuit.
[0043]
In this embodiment, the oscillation output for comparison, the frequency-divided output of the voltage-controlled oscillation circuit, and the output of the oscillation circuit are transmitted to the capacitors provided in the low-pass filter for smoothing the phase detection signal UP or DOWN, respectively. The control voltage is varied. One or more of these circuits and capacitors can be used. The comparison oscillation output and the frequency-divided output of the voltage control type oscillation circuit are controlled so as to be synchronized by the PLL, but the control voltage can be fluctuated because the frequency is different. On the other hand, the control voltage supplied to the voltage controlled oscillation circuit changes irregularly by adding the oscillation output formed by the unstable oscillation circuit that is asynchronous with these, and the voltage controlled oscillation circuit is changed. Control.
[0044]
In other words, in addition to the control voltage formed by the PLL circuit in the original feedback loop, the noise component due to the oscillation signal formed by the unstable oscillation circuit is added to the control voltage, which is asynchronous with them. Oscillation control operation is performed, so that it is possible to form an oscillation circuit output whose frequency varies with time and does not have a certain regularity. Thereby, a random frequency fluctuation oscillation circuit suitable for the random number generation circuit can be configured.
[0045]
FIG. 12 shows a circuit diagram of an embodiment of the unstable oscillation circuit provided in FIG. This oscillation circuit is basically composed of a ring oscillator. In other words, an odd number of signal delay elements composed of resistors and capacitors (capacitors) are connected to the output of the CMOS inverter circuit, and five in the figure are connected in a ring state to constitute an oscillation circuit. In this embodiment, such a ring oscillator can be regarded as performing an unstable oscillation operation because the characteristics of each circuit element have temperature dependency and power supply dependency.
[0046]
In this embodiment, in addition to the relatively small fluctuations due to the temperature dependence and power supply dependence of the element characteristics as described above, the resistance as the delay means is provided with a resistance that is selectively connected in parallel via a switch. The variable resistance circuit is configured by. The delay element is made variable by controlling the switch by the output of the comparison oscillation circuit, the output of the frequency dividing circuit, and the oscillation output of the switch. In other words, when the MOSFET as a switch is in an on state, the resistance value is reduced and the delay time is shortened to increase the oscillation frequency. When the MOSFET as a switch is in an off state, the resistance value is increased. The delay time becomes longer and the oscillation frequency is lowered.
[0047]
As described above, the delay time of each of the three variable delay circuits is asynchronous, and the amount of change in each delay time is different, so that the oscillation output of the oscillation circuit is complicated with a relatively large fluctuation range. It will fluctuate. By applying such an oscillating circuit to the
[0048]
FIG. 13 shows a circuit diagram of another embodiment of the unstable oscillation circuit provided in FIG. This oscillation circuit is basically composed of a ring oscillator. In other words, an odd number of signal delay elements composed of resistors and capacitors (capacitors) are connected to the output of the CMOS inverter circuit, and five in the figure are connected in a ring state to constitute an oscillation circuit. Then, a variable resistance circuit is configured by providing a resistor as one of the delay means, which is selectively connected in parallel via a switch. An unstable oscillating operation can be performed by controlling the switch by the oscillation output as described above. Since the oscillation circuit shown in the figure obtains an unstable oscillation output by using its own oscillation output, it may be used as a comparative oscillation circuit in the embodiment shown in FIG. .
[0049]
FIG. 14 is a block diagram showing another embodiment of the
[0050]
FIG. 15 shows a block diagram of an embodiment of the output adjustment circuit of FIG. In the register 805 of FIG. 10, as a result of the logic threshold voltage shifting to the high level side or the low level side due to variations in the element process of the shift register, the oscillation output of the
[0051]
The oscillation circuit output adjustment circuit operates to perform adjustment when such a specific bit pattern is generated. In this embodiment, a multi-input EOR (exclusive OR) circuit is used. The multi-input EOR circuit forms an output signal such as a
[0052]
The output adjustment circuit can detect any simple bit pattern such as all-
[0053]
FIG. 16 is a block diagram showing another embodiment of the random number generation circuit according to the present invention. In this embodiment, two
[0054]
The flip-
[0055]
Although not particularly limited, the
[0056]
FIG. 17 is a block diagram showing another embodiment of the random number generation circuit according to the present invention. In this embodiment, a
[0057]
Even in this case, the set value supplied to the
[0058]
FIG. 18 is a principal block diagram showing an embodiment of a semiconductor integrated circuit device according to the present invention. In this embodiment, the
[0059]
In this embodiment, an
[0060]
When the
[0061]
FIG. 19 is a block diagram showing the principal part of another embodiment of the semiconductor integrated circuit device according to the present invention. In this embodiment, as described above, the oscillation circuit control circuit instructs the operation state and the stop state of the random number generator internal oscillation circuit by a command from the CPU. When the random number generator internal oscillation circuit is activated, it supplies an oscillation signal to the random number generation register to generate a random number indicating the operation time of the false signal generator control circuit.
[0062]
The pseudo current generator generates a pseudo current having a current value specified by a frequency signal formed by the random number generator internal oscillation circuit and a random number generated by a clock signal from the timing generator. Since the generation time of the pseudo current is specified by the random number generation register, the time when the pseudo current corresponding to the random number is included and the time ratio where the pseudo current is not included change with the passage of time. . Therefore, when statistically analyzing the operation of the microcomputer many times, the time ratio between the case where the pseudo current is not generated and the case where the pseudo current is generated is relatively compared with each other. The pseudo-current can be further widened.
[0063]
FIG. 20 is a block diagram showing the principal part of another embodiment of the semiconductor integrated circuit device according to the present invention. Generally, a one-chip microcomputer is provided with a sleep (SLEEP) mode. In this sleep mode, the operation of the internal circuit is stopped and the statistical analysis of the operation of the microcomputer as described above is not performed. In such a sleep mode SLEEP or low power consumption mode, the operation of the pseudo current generator is stopped to reduce power consumption. That is, when the SLEEP signal enters the high-level sleep mode, the operations of the oscillation circuit and the pseudo current generator are stopped to reduce current consumption.
[0064]
FIG. 21 is a block diagram showing the principal part of still another embodiment of the semiconductor integrated circuit device according to the present invention. In this embodiment, a determination circuit for a data reference area in a program is added. In FIG. 21, four examples of the
[0065]
A pseudo current generator is provided corresponding to each data reference area on a one-to-one basis. That is, a
[0066]
The
[0067]
For example, when the
[0068]
Similarly, when the
[0069]
As described above, since the pseudo current generation unit itself is switched for each address space accessed by the
[0070]
FIG. 22 is a block diagram showing the principal part of still another embodiment of the semiconductor integrated circuit device according to the present invention. In this embodiment, an address generated by the CPU and data exchanged by the CPU are used instead of the random number. That is, the pseudo current value is made different according to the address formed by the CPU. The operation of the pseudo current generator control circuit is enabled / disabled as described above by a command from the CPU or the like. When the operation is enabled from the pseudo current generator control circuit, the pseudo current generator input generation circuit takes in the address signal on the bus line, regards it as a random number, and synchronizes it with the timing generator clock. Form. At this time, even when the address is the same, when viewed as a current waveform in relation to the timing of the timing generator, the same effect as a different pseudo current can be exhibited.
[0071]
In a one-chip microcomputer such as an IC card chip, a program is executed at a certain fixed timing in synchronization with an external clock. In addition, when executing a normal program, the number of instruction execution cycles is fixed each time, and as a result, the current waveform is also fixed.
[0072]
The method of estimating the contents of encryption processing and the encryption key by the statistical current analysis uses the above-described operation characteristics of the one-chip microcomputer. That is, when the same operation is performed every time the input data to the IC card is changed, the same command is always executed at a specific timing. Therefore, when there is a feature of the consumption current waveform depending on the input data, it is considered that the feature can be detected relatively easily by comparing the current waveform on the same time axis. Furthermore, if there is a dependency of the consumption current waveform on security information such as encryption keys or data on the algorithm of encryption processing, this data dependency is made obvious by accumulating it through statistical processing, and security information is illegally obtained. Will end up.
[0073]
In the present inventor, in order to realize an IC card and a semiconductor integrated circuit device that realizes enhanced security, an apparatus that generates a random signal instead of or in addition to the generation of the false current as described above. I thought about changing the procedure or timing of cryptographic processing. By doing so, the procedure and timing of the encryption process change every time, so that the current consumption waveform as seen on the time axis changes. The timing for performing specific cryptographic processing will change, and by comparing the current waveforms on the time axis as described above, analysis of data dependency can be made difficult, in other words, virtually impossible. .
[0074]
FIG. 23 is a schematic block diagram showing one embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. Each circuit block shown in the figure is formed on a single semiconductor substrate such as single crystal silicon, although it is not particularly limited by a known semiconductor integrated circuit manufacturing technique as in FIG.
[0075]
As described above, the
[0076]
As shown in FIG. 2, the
[0077]
In this embodiment, the
[0078]
When the
[0079]
By repeating the operation as described above, the interrupt
[0080]
FIG. 24 is a timing chart for explaining an example of the operation of the IC card chip according to the present invention. The random number 501 (random number A) formed by the random number generator is loaded into the counter as the
[0081]
During the down-counting operation as described above, the IC card chip performs original data processing such as
[0082]
The
[0083]
FIG. 25 is a waveform diagram for explaining an example of the operation of the IC card chip according to the present invention. In order to facilitate understanding of the present invention, FIG. 1A shows an operation waveform in a normal IC card chip for comparison, and FIG. 2B shows an IC card according to the present invention. A waveform diagram of the chip is shown.
[0084]
In FIG. 9A, the same current (I1 = I2) is generated in the first (1st tracing) and second power supply currents I1 and I2 because the same signal is transmitted to the bus Bus and the same circuit operates. It will be. In this way, the program is executed at a certain fixed timing, and the number of instruction execution cycles is fixed each time. As a result, the current waveforms are the same as described above.
[0085]
As shown in FIG. 5B, when a random interrupt process is inserted, even if the same encryption process is performed in the first time and the second time, a dummy routine (dummy routine) caused by an interrupt is performed each time. ) Are executed at different timings, and the current waveform of the first current I1 is different from that of the second current I2 (I1 ≠ I2). As a result, in the IC card or the like according to the present invention, there is no particular dependency on the consumption current waveform for the security information such as the encryption key and the data on the algorithm of the encryption process. Deciphering can be made hard.
[0086]
FIG. 26 is a schematic block diagram showing another embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. In this embodiment, a random
[0087]
In the
[0088]
FIG. 27 is a schematic block diagram showing another embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. In this embodiment, an
[0089]
In this embodiment, the clock cycle of the counter changes corresponding to the fluctuation of the oscillation frequency of the
[0090]
In this embodiment, a
[0091]
FIG. 28 is a schematic block diagram showing still another embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. In this embodiment, using a random signal formed by the
[0092]
The
[0093]
Normally, the instruction from the
[0094]
FIG. 29 is a timing chart for explaining an example of the operation of the IC card chip of FIG. This figure shows a timing chart in the case of a normal operation where no instruction insertion timing is required. The CPU fetches an instruction from the ROM via the address bus and the data bus and executes the instruction. That is, the fetched instruction is sent from the instruction register to the instruction decoder via the instruction change circuit to execute the instruction. That is, the process from instruction fetch from the ROM to its execution is sequentially performed as A-B-C-D-E-F.
[0095]
FIG. 30 is a timing chart for explaining another example of the operation of the IC card chip of FIG. This figure shows a timing chart when instruction insertion timing is requested. That is, if
[0096]
FIG. 31 is a timing chart for explaining an example of still another operation of the IC card chip of FIG. This figure shows a timing chart in the case of a normal operation where no instruction insertion timing is required. The CPU fetches an instruction from the ROM via the address bus and the data bus and executes the instruction. That is, the fetched instruction is sent from the instruction register to the instruction decoder via the instruction change circuit to execute the instruction. That is, the process from instruction fetch from the ROM to its execution is sequentially performed as A-B-C-D-E-F. This timing diagram is for comparison with FIG. 32 described next.
[0097]
FIG. 32 is a timing chart for explaining still another example of the operation of the IC card chip of FIG. Normally, in the IC card chip that executes instructions as shown in FIG. 31, the following instruction execution is changed according to the request for instruction insertion timing. For example, when the instruction B on the fetched data bus is set in the
[0098]
When the branch instruction BRAB to the current program counter is executed as described above, it is not necessary to stop changing the program counter unlike when the MOP instruction is executed. This is because the inserted instruction BRAB is a branch instruction to the current PC, and the value of the program counter is correctly updated by executing this instruction. When the instruction BRAB is executed, the instruction B fetch
[0099]
As a result of the random change of the command, even if the same encryption processing is performed in the first time and the second time as shown in FIG. 25B, the command change is executed each time. The timing is different, and correspondingly, the current waveform of the first current I1 and the second current I2 can be different (I1 ≠ I2). As a result, in the IC card or the like according to the present invention as described above, there is no particular dependency on the consumption current waveform for the security information such as the encryption key or the data on the algorithm of the encryption process, and the current waveform analysis is performed as described above. This makes it difficult to decrypt the encryption key.
[0100]
The idea of the invention according to this application is to change the consumption current waveform when viewed on the time axis irregularly, in other words, without reproducibility. As a means for changing the current consumption on the time axis, instead of inserting the pseudo process as described above, or by giving a random fluctuation to the frequency of the clock itself in the same way, It is possible to change the current consumption when viewed.
[0101]
In a one-chip microcomputer such as an IC card chip, a program is executed at a certain fixed timing in synchronization with an external clock. In addition, when executing a normal program, the number of instruction execution cycles is fixed each time, and as a result, the current waveform is also fixed. Therefore, if the phase of the internal clock is changed when viewed on the time axis in relation to the external clock, the timing for performing specific encryption processing will change slightly, and the current waveform will be changed as described above. By comparing on the time axis, data dependency analysis can be made virtually impossible.
[0102]
FIG. 33 is a schematic block diagram showing still another embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. The IC card chip according to the present invention comprises a
[0103]
The
[0104]
The
[0105]
FIG. 34 is a block diagram showing an embodiment of a clock generation circuit mounted on the IC card chip (semiconductor integrated circuit device) shown in FIG. In this embodiment, a PLL circuit including a
[0106]
Since the low-level or high-level signal corresponding to the random number is input to the capacitors C1 to Cn, charge dispersion occurs between the capacitors C0 and the capacitor C0 and the control voltage is changed. As a result, the frequency of the oscillation signal formed by the VCO changes, and the period of the clock signal formed by dividing the frequency changes. As described above, by randomly changing the cycle of the operation clock, it is possible to make the analysis by comparing the current waveform in the cryptographic processing or the like on the time axis as described above substantially impossible. The frequency jitter enable is a signal for controlling whether or not the frequency is changed. When the frequency jitter enable is set to a low level, the MOSFET Q is turned off so that the control voltage by the random number as described above does not change. it can.
[0107]
FIG. 35 is a block diagram showing another embodiment of the clock generation circuit mounted on the IC card chip (semiconductor integrated circuit device) shown in FIG. In this embodiment,
[0108]
When the division ratio is different such as 1/2, 1/4, and 1/8, the switching
[0109]
FIG. 36 is a block diagram showing still another embodiment of the clock generation circuit mounted on the IC card chip (semiconductor integrated circuit device) shown in FIG. In this embodiment, a clock delay amount generation circuit 4102, a switching
[0110]
In the clock delay amount generation circuit, the resistor R2 is selectively connected in parallel to the resistor R1 through the switch MOSFETQ among the delay circuit including the inverter circuit IV and the resistor R1 and the capacitor C provided at its output. Such variable delay circuits are connected in series in a plurality of stages, and switches at each stage are switch-controlled by switch control signals S1 to S3 corresponding to the random numbers. The switching
[0111]
FIG. 37 is a schematic block diagram showing still another embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. The IC card chip according to the present invention comprises a
[0112]
In this embodiment, the
[0113]
The bus right request circuit receives the bus right grant signal and outputs an address bus and a read signal to access the memory. When such bus cycle insertion timing is asserted, it becomes possible to insert a memory access cycle regardless of the original encryption processing. Similarly to the above, in the IC card or the like according to the present invention, security information such as an encryption key or encryption There is no particular dependency on the consumption current waveform with respect to the data in the processing algorithm, and the decryption of the encryption key by analyzing the current waveform can be made difficult as described above.
[0114]
FIG. 38 is a timing chart for explaining an example of the operation of the IC card chip of FIG. When the bus
[0115]
FIG. 39 is a schematic block diagram showing still another embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. The IC card chip according to the present invention comprises a
[0116]
In this embodiment, the data processing timing is changed by inserting wait cycles randomly into the bus cycle of the
[0117]
As described above, the timing at which the wait request signal is asserted changes randomly corresponding to the random number, and the interval becomes irregular. For this reason, as described above, there is no particular dependency on the current consumption waveform for security information such as an encryption key or data on the algorithm for encryption processing, and the decryption of the encryption key by the analysis of the current waveform is substantially performed as described above. Can be impossible.
[0118]
FIG. 40 is a timing chart for explaining an example of the operation of the IC card chip of FIG. When receiving a wait insertion timing signal generated randomly from the
[0119]
The wait insertion timing signal is randomly generated corresponding to the random number generated by the
[0120]
FIG. 41 is a schematic block diagram showing a further embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. The configuration of the IC card chip according to the present invention comprises a timer that makes the interval variable by the random number generated by the
[0121]
That is, by combining the one that generates a false current as in the embodiment typified by FIG. 2 and the like and the one that changes the procedure and timing of encryption processing by interruption as in the embodiment in FIG. The dependency of the consumption current waveform on the security information such as the encryption key and the data on the algorithm of the encryption processing is eliminated, and it becomes possible to make the decryption of the encryption key by analyzing the current waveform as described above more difficult.
[0122]
FIG. 42 is a schematic block diagram showing a further embodiment of an IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. The configuration of the IC card chip according to the present invention comprises a timer that makes the interval variable by the random number generated by the
[0123]
That is, by combining the one that generates a false current as in the embodiment typified by FIG. 2 and the like and the one that changes the instruction of encryption processing by interruption as in the embodiment in FIG. Thus, the dependency of the consumption current waveform on the security information and the data on the algorithm of the encryption process is eliminated, and the decryption of the encryption key by the analysis of the current waveform as described above can be made more difficult.
[0124]
As described above, pseudo-currents with irregularities that are not related to internal circuit operation are generated and the reproducibility is impaired, and the operation on the time axis of the data processing procedure is randomly changed and consumed. What changes the current waveform may be selected and combined as appropriate from the above embodiments in addition to FIG. 41 and FIG.
[0125]
FIG. 43 is a timing chart for explaining an example of still another operation of the IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention. A random number 511 (random number A) formed by the random number generator is loaded into the counter as an
[0126]
During the down-counting operation as shown in the figure, the IC card chip performs a plurality of data processes that can be executed in parallel, such as
[0127]
The
[0128]
The effects obtained from the above embodiment are as follows. That is,
(1) An operating voltage including a data processing device and a ROM in which data processing procedures including security information processing by the data processing device are written, and an external terminal is electrically connected to an external device such as a read / write device. In an IC card or a semiconductor integrated circuit device in which a data processing operation is performed according to the data processing procedure, including a data processing device and a ROM in which the data processing procedure by the data processing device is written. By providing a means for changing the timing of the data processing operation, the current consumption waveform changes on the time axis as described above because the procedure and timing of encryption processing changes each time and the current consumption waveform changes on the time axis. Improve security by making data dependency analysis of comparison virtually impossible The effect that it can be obtained.
[0129]
(2) As a means for irregularly changing the timing of the data processing procedure, the security can be realized with a simple configuration by randomly inserting a pseudo process into the data processing procedure. An effect is obtained.
[0130]
(3) By using interrupt processing from a timer set by a random number as means for irregularly inserting pseudo processing into the above data processing procedure, the above security can be effectively achieved with a simple configuration. The effect that it can be obtained.
[0131]
(4) By providing a register for monitoring whether an interrupt operation by the interrupt process is being performed, it is possible to determine whether or not the interrupt process function is operating normally by a CPU program. The effect that reliability can be made high is acquired.
[0132]
(5) As a means for irregularly inserting pseudo processing into the above data processing procedure, interrupt processing from a constant count output corresponding to fluctuations in oscillation frequency formed by an unstable oscillation circuit is used. As a result, it is possible to effectively achieve confidentiality protection with a simple configuration.
[0133]
(6) As a means for irregularly inserting pseudo-processing into the above data processing procedure, effective security can be achieved with a simple configuration by inserting another instruction at a timing set by a random number. The effect that it can be obtained.
[0134]
(7) As the other instruction, while using a no-operation instruction, by stopping the update of the program counter at the time of the instruction, the data processing procedure can be performed without affecting the data processing by the original instruction. The effect that it can be changed irregularly is obtained.
[0135]
(8) By using a branch instruction to the current program counter as the other instruction, the above data can be easily taken into consideration without affecting the data processing by the original instruction without considering the operation of the program counter. The effect that the processing procedure can be changed irregularly is obtained.
[0136]
(9) A bus right request circuit and a bus right arbitration circuit are used as means for irregularly inserting pseudo processing into the data processing procedure, and the bus right request circuit uses the bus right request circuit at a timing set by a random number. By obtaining the above and temporarily interrupting the bus cycle by the CPU, an effect of realizing effective security can be obtained.
[0137]
(10) By using a wait request circuit as means for irregularly inserting pseudo-processing into the above data processing procedure, the bus request cycle by the wait request circuit is lengthened by the wait request circuit at a timing set by a random number. Thus, it is possible to achieve effective security with a simple configuration.
[0138]
(11) As a means for irregularly changing the timing of the data processing procedure, the security can be realized with a simple configuration by irregularly changing the cycle of the operation clock signal of the data processing apparatus. Is obtained.
[0139]
(12) As a means for irregularly changing the period of the operation clock signal, a clock generation circuit composed of a PLL circuit is used, and a capacitor that holds the control voltage of the VCO in the PLL circuit is connected to a plurality of switches by a switching means. By selectively connecting one electrode of a capacitor and supplying a voltage signal corresponding to a random number to the other end of the plurality of capacitors, a random clock signal can be changed over a wide range. The effect of further strengthening the protection can be obtained.
[0140]
(13) As means for irregularly changing the period of the operation clock signal, specified by a random number from among a plurality of divided outputs formed by a plurality of divider circuits receiving a clock signal supplied from an external end By selectively outputting one frequency-divided output through a selector, it is possible to change a random clock signal in a relatively wide range with a simple configuration, thereby enhancing security. The effect of being able to be obtained.
[0141]
(14) As means for irregularly changing the period of the operation clock signal, the delay amount of the variable delay circuit receiving the clock signal supplied from the external end is controlled by a random number, so that the configuration can be simplified. Since the random clock signal can be changed in a relatively wide range, the effect of enhancing the security can be obtained.
[0142]
(15) Using a non-controlled oscillation circuit and a first shift register receiving the oscillation output as a random number generation circuit for forming the random number, a clock signal for performing a shift operation of the first shift register is the oscillation output As a result, the random number can be easily generated.
[0143]
(16) As the random number generation circuit, a shift register that receives the VCO output of the PLL circuit is used. The PLL circuit uses the oscillation output of the non-controlled oscillation circuit as a reference signal, and forms the control signal for the VCO. By changing the capacitance value of the low-pass filter based on the non-controlled oscillation output and the frequency-divided output of the VCO, frequency fluctuations can be made large and irregular, and random numbers can be generated effectively. The effect that it can be made is acquired.
[0144]
(17) As means for changing the timing of the data processing operation, by switching a plurality of data processing that can be executed in parallel according to a random number, the above-described security is achieved and the efficiency of the data processing is improved. The effect of being able to be obtained.
[0145]
(18) A data processing procedure including a ROM to which an operating voltage is supplied by electrically connecting an external terminal to a read / write device, and in which a data processing procedure by the data processing device and the data processing device is written. In the semiconductor integrated circuit device in which data input / output operations are performed according to the above, the provision of means for irregularly changing the timing of the data processing procedure, the procedure and timing of the encryption processing changes every time when viewed on the time axis. Since the consumption current waveform changes, it is possible to substantially enhance the security of the semiconductor integrated circuit device by making it impossible to analyze the data dependency of comparing the current waveform on the time axis as described above. An effect is obtained.
[0146]
(19) As a means for irregularly changing the timing of the data processing procedure, the pseudo-processing is irregularly inserted into the data processing procedure, so that the confidentiality of the semiconductor integrated circuit device can be simplified. The effect that protection is realizable is acquired.
[0147]
(20) By using interrupt processing from a timer set by a random number as means for irregularly inserting pseudo processing into the data processing procedure, the semiconductor integrated circuit device can be effectively configured with a simple configuration. The effect that the confidentiality protection can be realized.
[0148]
(21) By providing a
[0149]
(22) As means for irregularly changing the timing of the data processing procedure, the period of the operation clock signal of the data processing apparatus is irregularly changed, whereby the security of the semiconductor integrated circuit device can be protected with a simple configuration. The effect that can be realized is obtained.
[0150]
(23) As a means for irregularly changing the period of the operation clock signal, a clock generation circuit configured by a PLL circuit is used, and a capacitor that holds the control voltage of the VCO in the PLL circuit is connected to a plurality of switches by a switching means. By selectively connecting one electrode of a capacitor and supplying a voltage signal corresponding to a random number to the other end of the plurality of capacitors, a random clock signal can be changed over a wide range. There is an effect that the security of the integrated circuit device can be further enhanced.
[0151]
(24) As a means for irregularly changing the cycle of the operation clock signal, specified by a random number among a plurality of frequency division outputs formed by a plurality of frequency divider circuits receiving a clock signal supplied from an external end By selectively outputting one frequency-divided output via a selector, random clock signals can be changed in a relatively wide range with a simple configuration, so that the security of the semiconductor integrated circuit device can be protected. The effect that the reinforcement | strengthening can be aimed at is acquired.
[0152]
(25) As means for irregularly changing the period of the operation clock signal, the delay amount of the variable delay circuit that receives the clock signal supplied from the external end is controlled by a random number. Since the random clock signal can be changed in a relatively wide range, it is possible to enhance the security of the semiconductor integrated circuit device.
[0153]
(26) As a random number generation circuit for forming the random number, a non-controlled oscillation circuit and a first shift register that receives the oscillation output are used, and a clock signal for performing a shift operation of the first shift register is the oscillation output. As a result, it is possible to easily generate random numbers in the semiconductor integrated circuit device.
[0154]
(27) As means for changing the timing of the data processing operation, by switching a plurality of data processing that can be executed in parallel according to a random number, the semiconductor integrated circuit device is protected and the data processing efficiency is improved. The effect that it can aim at is acquired.
[0155]
The invention made by the inventor has been specifically described based on the embodiments. However, the invention of the present application is not limited to the embodiments, and various modifications can be made without departing from the scope of the invention. Nor. For example, the IC card may be one in which a plurality of semiconductor integrated circuit devices are mounted in addition to one in which one semiconductor integrated circuit device is mounted. In this case, the pseudo current generation circuit may be mounted on any one of the semiconductor integrated circuit devices. The random number generation circuit for generating the pseudo current may be anything other than the one that uses the asynchronous oscillation signal, such as one that samples a signal obtained by amplifying random noise using a clock.
[0156]
The semiconductor integrated circuit device may be anything as long as the data input / output operation is performed according to the data processing procedure including the data processing device and the ROM in which the data processing procedure by the data processing device is written. For example, in addition to the IC card chip as described above, it can be widely applied to various semiconductor integrated circuit devices that require security protection such as a one-chip microcomputer for games and the like. The present invention can be widely used in various IC cards and semiconductor integrated circuit devices that require security protection.
[0157]
【The invention's effect】
The effects obtained by the representative ones of the inventions disclosed in the present application will be briefly described as follows. That is, it includes a data processing device and a ROM in which data processing procedures including security information processing by the data processing device are written, and the operating voltage is reduced when the external terminal is electrically connected to an external device such as a read / write device. In an IC card or a semiconductor integrated circuit device including a data processing device and a ROM in which a data processing procedure by the data processing device is written and in which a data processing operation according to the data processing procedure is performed, By providing a means to change the timing of data processing operation, the current waveform is compared on the time axis as described above because the procedure and timing of encryption processing changes each time and the current consumption waveform changes on the time axis. Enhance data security by making it virtually impossible to analyze data dependencies It is possible to achieve.
[Brief description of the drawings]
FIG. 1 is an external view showing an embodiment of an IC card to which the present invention is applied.
FIG. 2 is a schematic block diagram showing an embodiment of an IC card chip mounted on an IC card according to the present invention.
3 is an equivalent circuit diagram of the IC card chip shown in FIG. 2. FIG.
FIG. 4 is a current waveform diagram for explaining the present invention.
FIG. 5 is a schematic configuration diagram showing one embodiment of a pseudo current generating circuit according to the present invention.
FIG. 6 is a specific circuit diagram showing one embodiment of a pseudo current generating circuit according to the present invention.
FIG. 7 is a schematic configuration diagram showing another embodiment of the pseudo current generating circuit according to the present invention.
8 is a block diagram showing an example of an interface unit of the cryptographic operation circuit of FIG. 2;
FIG. 9 is a flowchart of one embodiment for explaining a random number obtaining operation by a CPU.
10 is an overall configuration diagram showing an example of the cryptographic operation circuit of FIG. 2; FIG.
11 is a block diagram showing an embodiment of the
12 is a circuit diagram showing an embodiment of an unstable oscillation circuit provided in FIG. 11. FIG.
13 is a circuit diagram showing another embodiment of the unstable oscillation circuit provided in FIG. 11. FIG.
14 is a block diagram showing another embodiment of the
15 is a block diagram showing an embodiment of the output adjustment circuit of FIG.
FIG. 16 is a block diagram showing another embodiment of the random number generation circuit according to the present invention.
FIG. 17 is a block diagram showing another embodiment of a random number generation circuit according to the present invention.
FIG. 18 is a block diagram of relevant parts showing one embodiment of a semiconductor integrated circuit device according to the present invention;
FIG. 19 is a block diagram of relevant parts showing another embodiment of a semiconductor integrated circuit device according to the present invention;
FIG. 20 is a block diagram of relevant parts showing another embodiment of a semiconductor integrated circuit device according to the present invention;
FIG. 21 is a block diagram of relevant parts showing still another embodiment of the semiconductor integrated circuit device according to the present invention;
FIG. 22 is a block diagram of relevant parts showing still another embodiment of the semiconductor integrated circuit device according to the present invention;
FIG. 23 is a schematic block diagram showing an embodiment of an IC card chip mounted on an IC card according to the present invention.
FIG. 24 is a timing chart for explaining an example of the operation of the IC card chip according to the present invention;
FIG. 25 is a waveform diagram for explaining an example of the operation of the IC card chip according to the present invention.
FIG. 26 is a schematic block diagram showing another embodiment of an IC card chip mounted on an IC card according to the present invention.
FIG. 27 is a schematic block diagram showing another embodiment of an IC card chip mounted on an IC card according to the present invention.
FIG. 28 is a schematic block diagram showing still another embodiment of an IC card chip mounted on an IC card according to the present invention.
29 is a timing chart for explaining an example of the operation of the IC card chip of FIG. 28. FIG.
30 is a timing chart for explaining an example of the operation of the IC card chip of FIG. 28. FIG.
FIG. 31 is a timing chart for explaining still another example of the operation of the IC card chip of FIG.
32 is a timing chart for explaining yet another example of the operation of the IC card chip of FIG. 28. FIG.
FIG. 33 is a schematic block diagram showing still another embodiment of an IC card chip mounted on an IC card according to the present invention.
34 is a block diagram showing an embodiment of a clock generation circuit mounted on the IC card chip of FIG. 33. FIG.
35 is a block diagram showing another embodiment of the clock generation circuit mounted on the IC card chip of FIG. 33. FIG.
36 is a block diagram showing still another embodiment of the clock generation circuit mounted on the IC card chip of FIG. 33. FIG.
FIG. 37 is a schematic block diagram showing still another embodiment of an IC card chip mounted on an IC card according to the present invention.
FIG. 38 is a timing chart for explaining an example of the operation of the IC card chip of FIG. 37;
FIG. 39 is a schematic block diagram showing still another embodiment of an IC card chip mounted on an IC card according to the present invention.
40 is a timing chart for explaining an example of the operation of the IC card chip of FIG. 39. FIG.
FIG. 41 is a schematic block diagram showing a further embodiment of an IC card chip mounted on an IC card according to the present invention.
FIG. 42 is a schematic block diagram showing a further embodiment of an IC card chip mounted on an IC card according to the present invention.
FIG. 43 is a timing chart for explaining an example of still another operation of the IC card chip (semiconductor integrated circuit device) mounted on the IC card according to the present invention;
[Explanation of symbols]
DESCRIPTION OF
401: IC card chip, 402: random number generation circuit, 403 ... interval generation circuit, 404 ... decrementer, 405 ... underflow determination circuit, 406 ... timing generation circuit, 407 ... counter (register), 408 ... selector, 409 ... interrupt 410, ROM, 411, RAM, 412, EEPROM, 413, CPU, 414, I / O, 415, random number setting register, 416, oscillator, 4004, instruction change circuit, 4008, instruction decoder, 4009, control circuit, 4011: Adder, 4012 ... Program counter, 4013 ... Operation unit, 4014 ... Instruction register, 418 ... Clock generation circuit, 419 ... Bus right request circuit, 420 ... Bus right arbitration circuit, 421 ... Control register, 421 ... Wait request circuit .
Claims (7)
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、上記データ処理動作に対して疑似的処理を挿入する手段であり、
上記制御手段は、バス権要求回路とバス権調停回路を用い、乱数により設定されたタイミングにおいてバス権要求回路によりバス使用権を獲得してCPUによるバスサイクルを一時的に中断させるものであることを特徴とするICカード。An IC card including a data processing device and a ROM in which data processing procedures including security information processing by the data processing device are written, an operation voltage is supplied from the outside, and an operation according to an external input is performed,
Control means for changing the timing of the data processing operation according to the data processing procedure,
The control means is means for inserting a pseudo process into the data processing operation,
The control means uses a bus right request circuit and a bus right arbitration circuit, acquires the bus use right by the bus right request circuit at a timing set by a random number, and temporarily interrupts the bus cycle by the CPU. IC card characterized by
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、上記データ処理動作に対して疑似的処理を挿入する手段であり、
上記制御手段は、ウェイト要求回路を用い、乱数により設定されたタイミングにおいてウェイト要求回路によりCPUによるバスサイクルをその間長くさせるものであることを特徴とするICカード。An IC card including a data processing device and a ROM in which data processing procedures including security information processing by the data processing device are written, an operation voltage is supplied from the outside, and an operation according to an external input is performed,
Control means for changing the timing of the data processing operation according to the data processing procedure,
The control means is means for inserting a pseudo process into the data processing operation,
An IC card characterized in that the control means uses a wait request circuit and causes the wait request circuit to lengthen a bus cycle by the wait request circuit at a timing set by a random number.
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、データ処理装置の動作クロック信号の周期を変化させるものであり、 上記制御手段は、PLL回路で構成されたクロック生成回路を用い、かかるPLL回路におけるVCOの制御電圧を保持するキャパシタに、スイッチ手段により複数のキャパシタの一方の電極を選択的に接続し、かかる複数のキャパシタの他端に乱数に対応した電圧信号を供給するものであることを特徴とするICカード。An IC card including a data processing device and a ROM in which data processing procedures including security information processing by the data processing device are written, an operation voltage is supplied from the outside, and an operation according to an external input is performed,
Control means for changing the timing of the data processing operation according to the data processing procedure,
The control means changes a cycle of an operation clock signal of the data processing apparatus, and the control means uses a clock generation circuit constituted by a PLL circuit, and a capacitor that holds the control voltage of the VCO in the PLL circuit. In addition, an IC card is characterized in that one electrode of a plurality of capacitors is selectively connected by a switch means, and a voltage signal corresponding to a random number is supplied to the other end of the plurality of capacitors.
上記乱数を形成する乱数発生回路を更に備え、
かかる乱数発生回路は、非制御発振回路と、その発振出力を受ける第1のシフトレジスタとを含み、
上記第1のシフトレジスタは、シフト動作を行うクロック信号が上記発振出力と非同期とされることを特徴とするICカード。In any one of Claims 1 thru | or 3 ,
A random number generating circuit for forming the random number;
The random number generation circuit includes a non-controlled oscillation circuit and a first shift register that receives the oscillation output,
The IC card, wherein the first shift register is configured such that a clock signal for performing a shift operation is asynchronous with the oscillation output.
上記乱数発生回路は、PLL回路と、上記PLL回路のVCO出力を受けるシフトレジスタとを含み、
上記PLL回路は、非制御発振回路の発振出力を基準信号とし、かつ、上記VCOの制御信号を形成するローパスフィルタの容量値が、上記非制御発振出力と、上記VCOの分周出力に基づいて変化されることを特徴とするICカード。In claim 4 ,
The random number generation circuit includes a PLL circuit and a shift register that receives a VCO output of the PLL circuit,
The PLL circuit uses the oscillation output of the non-controlled oscillation circuit as a reference signal, and the capacitance value of the low-pass filter forming the control signal of the VCO is based on the non-controlled oscillation output and the divided output of the VCO. An IC card characterized by being changed.
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、データ処理装置の動作クロック信号の周期を変化させるものであり、
上記制御手段は、PLL回路で構成されたクロック生成回路を用い、かかるPLL回路におけるVCOの制御電圧を保持するキャパシタに、スイッチ手段により複数のキャパシタの一方の電極を選択的に接続し、かかる複数のキャパシタの他端に乱数に対応した電圧信号を供給するものであることを特徴とする半導体集積回路装置。A semiconductor integrated circuit device including a data processing device and a ROM in which a data processing procedure including security information processing by the data processing device is written, an operation voltage is supplied from the outside, and an operation according to an external input is performed,
Control means for changing the timing of the data processing operation according to the data processing procedure,
The control means changes the cycle of the operation clock signal of the data processing device,
The control means uses a clock generation circuit composed of a PLL circuit, and selectively connects one electrode of the plurality of capacitors to the capacitor holding the control voltage of the VCO in the PLL circuit by the switch means. A semiconductor integrated circuit device, wherein a voltage signal corresponding to a random number is supplied to the other end of the capacitor.
上記乱数を形成する乱数発生回路を更に備え、
かかる乱数発生回路は、非制御発振回路と、その発振出力を受ける第1のシフトレジスタとを含み、
上記第1のシフトレジスタは、シフト動作を行うクロック信号が上記発振出力と非同期とされることを特徴とする半導体集積回路装置。In claim 6 ,
A random number generating circuit for forming the random number;
The random number generation circuit includes a non-controlled oscillation circuit and a first shift register that receives the oscillation output,
In the semiconductor integrated circuit device, the clock signal for performing the shift operation is asynchronous with the oscillation output.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06156199A JP3827050B2 (en) | 1999-03-09 | 1999-03-09 | IC card and semiconductor integrated circuit device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06156199A JP3827050B2 (en) | 1999-03-09 | 1999-03-09 | IC card and semiconductor integrated circuit device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000259799A JP2000259799A (en) | 2000-09-22 |
JP3827050B2 true JP3827050B2 (en) | 2006-09-27 |
Family
ID=13174658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP06156199A Expired - Fee Related JP3827050B2 (en) | 1999-03-09 | 1999-03-09 | IC card and semiconductor integrated circuit device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3827050B2 (en) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804782B1 (en) * | 1999-06-11 | 2004-10-12 | General Instrument Corporation | Countermeasure to power attack and timing attack on cryptographic operations |
US6419159B1 (en) * | 1999-06-14 | 2002-07-16 | Microsoft Corporation | Integrated circuit device with power analysis protection circuitry |
FR2796738B1 (en) * | 1999-07-22 | 2001-09-14 | Schlumberger Systems & Service | SECURE MICRO-CONTROLLER AGAINST CURRENT ATTACKS |
KR100428786B1 (en) | 2001-08-30 | 2004-04-30 | 삼성전자주식회사 | Integrated circuit capable of protecting input/output data over internal bus |
FR2833724A1 (en) * | 2001-12-13 | 2003-06-20 | Canal Plus Technologies | DIGITAL ELECTRONIC COMPONENT PROTECTED AGAINST ELECTRICAL AND / OR ELECTROMAGNETIC ANALYZES, ESPECIALLY IN THE FIELD OF CHIP CARDS |
DE10162309A1 (en) * | 2001-12-19 | 2003-07-03 | Philips Intellectual Property | Method and arrangement for increasing the security of circuits against unauthorized access |
JP4357815B2 (en) * | 2002-09-11 | 2009-11-04 | 株式会社東芝 | Cryptographic operation circuit |
JP4674440B2 (en) | 2004-03-04 | 2011-04-20 | ソニー株式会社 | Data processing circuit |
CN101366231A (en) | 2006-11-09 | 2009-02-11 | 松下电器产业株式会社 | Cryptographic calculation processing circuit |
US8898211B2 (en) * | 2007-05-10 | 2014-11-25 | Ram International Corporation | Non-deterministic statistical data generator |
JP6323065B2 (en) * | 2014-02-26 | 2018-05-16 | セイコーエプソン株式会社 | Microcomputer and electronic equipment |
US11227046B2 (en) * | 2019-12-24 | 2022-01-18 | Stmicroelectronics International N.V. | Dynamic randomization of password challenge |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2638869B1 (en) * | 1988-11-10 | 1990-12-21 | Sgs Thomson Microelectronics | SECURITY DEVICE AGAINST UNAUTHORIZED DETECTION OF PROTECTED DATA |
US5404402A (en) * | 1993-12-21 | 1995-04-04 | Gi Corporation | Clock frequency modulation for secure microprocessors |
JP3621497B2 (en) * | 1996-03-01 | 2005-02-16 | 株式会社東芝 | Computer system and clock stop signal control method in the same system |
FR2745924B1 (en) * | 1996-03-07 | 1998-12-11 | Bull Cp8 | IMPROVED INTEGRATED CIRCUIT AND METHOD FOR USING SUCH AN INTEGRATED CIRCUIT |
JP3196013B2 (en) * | 1996-12-12 | 2001-08-06 | 株式会社日立製作所 | Logic integrated circuit |
JP3492494B2 (en) * | 1997-06-09 | 2004-02-03 | 沖電気工業株式会社 | Random number generator |
JP3530346B2 (en) * | 1997-06-25 | 2004-05-24 | 株式会社ルネサステクノロジ | Semiconductor integrated circuit device |
-
1999
- 1999-03-09 JP JP06156199A patent/JP3827050B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000259799A (en) | 2000-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100463814B1 (en) | Improved integrated circuits and how to use them | |
JP3827050B2 (en) | IC card and semiconductor integrated circuit device | |
EP2954615B1 (en) | Integrated circuit identification and dependability verification using ring oscillator based physical unclonable function and age detection circuitry | |
US20040193664A1 (en) | Pseudo-random number generator | |
US8937496B1 (en) | Clock monitor | |
KR100563885B1 (en) | Random number's seed generating circuit, driver including the same, and memory card system | |
KR101946509B1 (en) | System and method for protection from side-channel attacks by varying clock delays | |
US7805650B2 (en) | Semiconductor integrated circuit and debug mode determination method | |
CN107346233B (en) | Generator of a large number of oscillations | |
KR20160008532A (en) | Automatic control system and method for a true random number generator | |
US20190266359A1 (en) | Security system and terminal chip | |
US6256746B1 (en) | System and method for multi-input wake up in a microcontroller using a single clock | |
KR100578459B1 (en) | Unpredictable microprocessor or microcomputer | |
US9536086B2 (en) | Circuit arrangement, a method for forming a circuit arrangement, and method for integrity checking | |
JP4168305B2 (en) | IC card and microcomputer | |
JP2001237825A (en) | Electronic safety component | |
JP3788881B2 (en) | IC card and semiconductor integrated circuit device | |
JP2005513604A (en) | A system that improves the fault tolerance and security of computing systems | |
US9201630B2 (en) | Random number generation using startup variances | |
US9780949B2 (en) | Data processing device and method for protecting a data processing device against tampering | |
US11550685B2 (en) | Mode controller and integrated circuit chip including the same | |
JP3492494B2 (en) | Random number generator | |
JP3701100B2 (en) | Clock generation circuit and clock generation method | |
EP3843317A1 (en) | Method for detecting perturbations in a logic circuit and logic circuit for implementing this method | |
Gross et al. | CPU to FPGA Power Covert Channel in FPGA-SoCs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050315 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050804 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050930 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060324 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060420 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060612 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060628 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060628 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100714 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110714 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110714 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110714 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120714 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120714 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130714 Year of fee payment: 7 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |