JP3827050B2 - IC card and semiconductor integrated circuit device - Google Patents

IC card and semiconductor integrated circuit device Download PDF

Info

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
Application number
JP06156199A
Other languages
Japanese (ja)
Other versions
JP2000259799A (en
Inventor
弘 渡瀬
信孝 長崎
卓 塚元
聡 平
雅聡 ▲高▼橋
邦彦 中田
千晶 寺内
優 大木
正博 神永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP06156199A priority Critical patent/JP3827050B2/en
Publication of JP2000259799A publication Critical patent/JP2000259799A/en
Application granted granted Critical
Publication of JP3827050B2 publication Critical patent/JP3827050B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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 data bus 203 has a large electric capacity, when the bus value changes from 1 to 0 or from 0 to 1, a large current is consumed. Therefore, the observation of current consumption suggests the possibility of knowing what is operating in the IC card chip.
[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 card 101 made of a plastic case and an IC card chip 102 made of a one-chip microcomputer or the like as shown by a dotted line mounted inside the card 101. The IC card further has a plurality of contacts (electrodes) 103 connected to the external terminals of the IC card chip 102. The plurality of contacts 103 include a power supply terminal VCC, a power supply reference potential terminal VSS, a reset input terminal RES bar, a clock terminal CLK, a data terminal I / O-1 / IRQ bar, and an I / O-, as will be described later with reference to FIG. 2 / IRQ bar. The IC card is supplied with power from the external coupling device through a reader / writer (not shown) through the contact 103, and performs data communication with the external coupling device.
[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 clock generation circuit 205, a central processing unit (hereinafter sometimes simply referred to as a CPU) 201, a ROM (Read Only Memory) 206, a RAM (Random Access Memory) 207, an EEPROM (Electrical Erasable Programmable Read Only Memory) 208, and the like. Storage device, a random number generation circuit (RNG) 209, an input / output port (I / O port) 202, and the like, and a false current generation circuit 210 added according to the present invention.
[0012]
The clock generation circuit 205 receives an external clock CLK supplied from a reader / writer (external coupling device) (not shown) via the contact 103 in FIG. 1, forms a system clock signal synchronized with the external clock signal, and generates it as a chip. This is a circuit to be supplied inside. The CPU 201 is a device that performs logical operations and arithmetic operations, and the storage devices 206, 207, and 208 are devices that store programs and data. The I / O (input / output) port 202 is a device that communicates with the reader / writer. The data bus 204 and the address bus 203 are buses that connect the devices to each other.
[0013]
Of the storage devices 206, 207, and 208, the ROM 206 is a memory in which stored contents are fixed in a nonvolatile manner, and is a memory that mainly stores programs. A volatile memory (hereinafter referred to as a RAM) 207 is a memory in which stored information can be freely rewritten. However, when power supply is interrupted, the stored contents are not erased. Since the supply of power is interrupted when the IC card is removed from the reader / writer, the contents of the RAM 207 are not retained.
[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 EEPROM 208 because it must be stored and held in the IC card even if it is removed from the reader / writer. The random number generation circuit 209 generates a random number used for encryption processing or the like.
[0015]
The CPU 201 has the same configuration as a so-called microprocessor. That is, although not shown in detail, an instruction register therein, an instruction written in the instruction register, a micro instruction ROM for decoding various micro instructions or control signals, an arithmetic circuit, a general purpose register (RG6, etc.) And an input / output circuit such as a bus driver and a bus receiver coupled to the internal bus BUS. The CPU 201 reads an instruction stored in the ROM 206 or the like and performs an operation corresponding to the instruction. The CPU 201 captures external data input via the I / O port 202, reads out data such as instructions from the read-only memory ROM and fixed data necessary for instruction execution, and reads data from the RAM and EEPROM. Write and read operations are controlled.
[0016]
The CPU 201 receives a system clock signal generated from the clock generation circuit 205 and operates with an operation timing and a period determined by the system clock signal. The CPU 201 is mainly composed of a CMOS circuit, that is, a circuit composed of a P-channel MOSFET and an N-channel MOSFET. Although not particularly limited, the CPU 201 synchronizes the CMOS static circuit capable of static operation such as a CMOS static flip-flop, the charge precharge to the signal output node, and the signal output to the signal output node in synchronization with the system clock signal. And a CMOS dynamic circuit.
[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 logic 0 as described above.
[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 oscillation circuit 1 is input to the shift register 805 as input data. The shift clock of the shift register 805 is formed by a counter 1 that counts the oscillation output of an oscillation circuit 2 different from the oscillation circuit 1. That is, the shift clock of the shift register 805 is formed by dividing the oscillation signal of the oscillation circuit 2 by the counter 1.
[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 counter 2 that receives the count output of the counter 1. The output signal of the counter 2 is supplied to the counter 3 to form the status bit generation signal 813, and the status bit 810 is stored in a flip-flop or the like.
[0039]
The output signal of the flip-flop storing the random number generation bit is supplied as an operation control signal to the oscillation circuits 1 and 2 and the counters 1, 2 and 3 as a control signal. When this control signal is set to an active level such as a high level, for example, the oscillation circuits 1 and 2 and the counters 1, 2, and 3 are brought into an operation state, and the oscillation operation and the counting operation are validated. When the control signal is set to an inactive level such as a low level, the oscillation circuits 1 and 2 and the counters 1, 2 and 3 are in an inoperative state, that is, the oscillation circuits 1 and 2 stop the oscillation operation, and the counter 1 2, 3 stop the counting operation.
[0040]
The oscillation circuits 1 and 2 have different oscillation frequencies from each other, and the oscillation frequencies are intentionally changed as described later. Further, the shift clock of the random number storage register 808 is divided by the counter 2 with respect to the shift clock of the shift register 805, and the bit pattern stored in the random number storage register is irregular for each random number generation operation. To have sex.
[0041]
FIG. 11 is a block diagram showing an embodiment of the oscillation circuits 1 and 2 shown in FIG. In this embodiment, an oscillation circuit is constituted by a PLL (phase locked loop) circuit. Originally, the PLL circuit is used to form a stable frequency signal so as to be phase-locked to a predetermined reference frequency. In contrast, in this embodiment, the oscillation output is used to be unstable by the phase control operation of the PLL circuit.
[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 oscillating circuits 1 and 2 of FIG. 10 or either the oscillating circuit 1 or 2, random numbers having irregularity can be generated.
[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 oscillation circuits 1 and 2 shown in FIG. Also in this embodiment, an oscillation circuit is constituted by a PLL (phase locked loop) circuit. In this embodiment, the time constant of the low-pass filter of the PLL circuit is made extremely small to form a control voltage that varies greatly corresponding to the phase comparison outputs UP and DOWN. As a result, the voltage controlled oscillation circuit can greatly change the oscillation frequency and generate a large fluctuation in the frequency of the output signal.
[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 oscillation circuit 1 and the asynchronous output thereof are synchronized as described above. Even when a clock formed based on the oscillation output of the oscillation circuit 2 is used, there may be a case where the occurrence frequency of a specific bit pattern is increased.
[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 logic 1 if the number of logic 1s is an odd number among input signals composed of a plurality of bits, and a logic 0 otherwise. Thereby, even if the frequency of a specific bit pattern becomes high, it can be converted into irregular data by the logical processing as described above.
[0052]
The output adjustment circuit can detect any simple bit pattern such as all-bit 0 or all-bit 1 in addition to the multi-input EOR as described above, and can change it. good. For example, by adding or subtracting the bit pattern generated immediately before the generated bit pattern, or by shifting or inverting the digit in the addition or subtraction, the generation of a complicated bit pattern can be generated. It may be what you do.
[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 oscillation circuits 2701 and 2702 that perform an oscillation operation asynchronously with each other are used, and the oscillation output of one oscillation circuit 2701 is supplied to the input terminal IN of a flip-flop 2703 that performs a binary conversion operation. The oscillation output formed by the other oscillation circuit 2702 is sequentially divided by frequency dividing circuits 2705, 2706, and 2707, respectively, so that three frequency division signals are formed. Four types of clocks are formed by combining the oscillation output and each of the frequency-divided outputs, and one is selected via the selector 2708 and supplied to the clock terminal CK of the flip-flop 2703.
[0054]
The flip-flop 2703 determines the high level / low level of the oscillation output input to the input terminal IN based on the rising edge or falling edge of the clock supplied to the clock terminal CK, and outputs the logic 1 or logic from the output terminal OUT. A binary signal of 0 is output and stored in a random number storage register. Since the cycle of the clock supplied to the clock terminal CK changes as described above, the random number generation speed can be changed. Such a change in the random number speed is a function mainly provided in the cryptographic operation circuit, and allows the user to specify the random number speed, but when using such a random number generation circuit, It is also useful for making it impossible to estimate the contents of encryption processing and the encryption key by substantially invalidating the observation of the current change by the statistical method.
[0055]
Although not particularly limited, the selector 2708 selects any one using the previous random number stored in the random number storage register 2704. As a result, the bit pattern generated by the flip-flop 2703 can be set variously compared with the case where the oscillation circuits 2701 and 2702 are simply oscillated asynchronously, and random numbers having no reproducibility can be generated. Also good.
[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 counter 2745, a setting register 2746, and a counter / setting register comparator 2747 are used in place of the frequency dividing circuit and the selector as shown in FIG. 16, and are input to the clock terminal CK of the flip-flop 2743. The frequency (period) of the clock to be changed is changed. The comparator 2747 compares the set value set in the setting register 2746 with the count value of the counter 2845, and generates a clock pulse if they match. That is, a pulse obtained by dividing the oscillation output of the oscillation circuit 2742 can be formed in accordance with the set value set in the setting register 2746.
[0057]
Even in this case, the set value supplied to the setting register 2746 is used for speed control that simply generates a random number, and by setting the previous random number generated in the random number storage register as described above, a random number is set. The generation rate itself can be random.
[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 pseudo-current generation unit 2805 includes a random number generation circuit that generates a random number using a shift register or the like using two different frequency signals, and the irregularity as described above is generated according to the random number. A pseudo current generation circuit is provided that generates a current or a non-reproducible current for a signal processing operation in the same state and conditions several times.
[0059]
In this embodiment, an oscillation circuit 2804 that forms a frequency signal as data out of the two frequency signals is controlled to be in an oscillation state and an oscillation stop state by an oscillation circuit control circuit. The CPU 2801 inputs a command indicating an oscillation state or an oscillation stop state to the oscillation circuit control circuit 2806 via the bus line 2802. When the CPU 2801 inputs a command for instructing the oscillation state to the oscillation circuit control circuit, the oscillation circuit control circuit 2806 sets the oscillation circuit 2804 in the oscillation state in response to the command. When the oscillation circuit 2804 is brought into an oscillation state, a random number as described above is generated, and a pseudo current according to the random number as described above is included in the power supply terminal of the semiconductor integrated circuit device.
[0060]
When the CPU 2801 inputs a command instructing the oscillation stop state to the oscillation circuit control circuit, the oscillation circuit control circuit 2806 puts the oscillation circuit 2804 into the oscillation stop state in response to the command. When the oscillation circuit 2804 is brought into an oscillation stop state, the generation of random numbers as described above is stopped. Thereby, the pseudo current as described above is removed from the power supply terminal of the semiconductor integrated circuit device. Alternatively, only a constant current according to a constant random number flows, which is substantially equivalent to the removal of the pseudo current. The CPU appropriately switches between the operating state and the stopped state of the oscillation circuit 2804 in the software. Therefore, when statistically analyzing the operation of the microcomputer over a large number of times, the pseudo-current is compared with the case where the pseudo-current is not generated and the case where the pseudo-current is generated. Is equivalent to generating
[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 storage device 1, the storage device 2, and the register 1 and the register 2 are prepared as examples of the data reference area. The storage devices 1 and 2 are storage areas such as ROM, RAM, and EEPROM, for example, and the registers 1 and 2 are I / O ports and specific registers, for example.
[0065]
A pseudo current generator is provided corresponding to each data reference area on a one-to-one basis. That is, a pseudo-current generator 3207 is provided for the storage device 1 timing generator 3206, and a pseudo-current generator 3209 is provided for the storage device 2 timing generator 3208, and the register 1 timing generator 3210. Is provided with a pseudo-current generation unit 3211, and the register 2 timing generator 3212 is provided with a pseudo-current generation unit 3213.
[0066]
The area determination circuit 3204 takes in address information and the like output from the CPU 3201 via the bus line 3203. The interrupt control circuit 3202 enables / disables the operation of the operation area determination circuit 3204 by an interrupt operation. If the operation area determination circuit is validated, the address on the bus line is monitored, and if an address corresponding to one of the storage devices 1 and 2 or the registers 1 and 2 is designated, a pseudo current generation corresponding to each is generated. Operate the turning part.
[0067]
For example, when the storage device 1 is RAM, the storage device 2 is assigned to the EEPROM, the register 1 is assigned to the I / O port 1, and the register 2 is assigned to the I / O port, the CPU 3201 is accessing the RAM Then, a random number is generated using the clock formed by the timing generator 3206 for the storage device 1 and the oscillation output formed by the oscillation circuit 3205, and a pseudo current is generated by the pseudo current generator 3207. When the CPU 3201 is accessing the EEPROM, a random number is generated using the clock formed by the timing generator 3208 for the storage device 2 and the oscillation output formed by the oscillation circuit 3205, thereby generating a pseudo current generator 3209. Generates a false current.
[0068]
Similarly, when the CPU 3201 inputs / outputs data using the I / O port 1, it generates a random number using the clock formed by the register 1 timing generator 3210 and the oscillation output formed by the oscillation circuit 3205. Thus, a pseudo current is generated by the pseudo current generator 3211. When the CPU 3201 inputs / outputs data using the I / O port 2, a random number is generated using the clock formed by the register 2 timing generator 3212 and the oscillation output formed by the oscillation circuit 3205. Thus, the pseudo current generator 3213 generates a pseudo current.
[0069]
As described above, since the pseudo current generation unit itself is switched for each address space accessed by the CPU 3201, the pseudo current generation unit itself forms an irregular current as described above, and generates a pseudo current. By switching the parts themselves, the combination of irregular currents can be further complicated.
[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 IC card chip 401 according to the present invention has a central processing unit (CPU) 413, a ROM (Read Only Memory) 410, a RAM (Random Access Memory) 411, and an EEPROM (Electrical Erasable Programmable Read Only Memory) 412. And the like, a random number generator 402 and a timing generation circuit 406 added by the present invention, and a storage device such as an input / output port (I / O port) 414.
[0076]
As shown in FIG. 2, the timing generation circuit 406 includes a clock generation circuit that receives a clock signal supplied from an external terminal (not shown) and generates a clock signal necessary for the operation of an internal circuit such as the CPU 413. In addition, when the cryptographic operation circuit (RNG module) is mounted, a random number necessary for the cryptographic circuit formed by the random number generator 402 may be used in combination. For example, the random number generator 402 may be a part related to random number generation in FIGS.
[0077]
In this embodiment, the random number generator 402 generates a random number, that is, a random signal. Roughly described, the timing generation circuit 406 configures a timer that makes the interval variable by the generated random number, and changes the timing by inserting CPU interrupt processing at random. The interval generation circuit 403 receives and holds the random number. The underflow determination circuit 405 connects the selector 408 to the interval generation circuit 403 side when the output of the counter 407 is zero, and sets (loads) the random number as the initial value of the counter 407. When an initial value corresponding to the random number is set in the counter 407, the underflow determination circuit 405 detects it and switches the selector 408 to the decrementer 404 side. As a result, the counter output is input to the decrementer 404, the calculation operation of −1 is performed, and the counter output is input to the counter 407 through the selector 408, whereby the count down operation of −1 is performed.
[0078]
When the underflow determination circuit 405 detects that the output of the counter 407 has become zero by the down-counting operation, the underflow determination circuit 405 generates an interrupt request signal 409 to the CPU 413 and switches the selector 408 to the counter 407 to generate an interval. The random number input in 403 is reloaded as an initial value. Since the output of the counter 407 is not zero by the reloaded initial value, the underflow determination circuit 405 switches the selector 408 to the decrementer 404 and performs the down-counting operation again as described above.
[0079]
By repeating the operation as described above, the interrupt request 409 at random timing is input from the timing generation circuit 406 to the CPU 413, and the original data processing is interrupted each time, and another interrupt request corresponding to the interrupt request is generated. Data processing is performed. Since the data processing by this interruption is intended to change the current waveform on the time axis as described above, appropriate data processing that does not adversely affect the original data processing operation, such as the RAM 411, Reading operation of an EEPROM or the like is performed.
[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 initial value 502, the down-counting operation is performed as described above, and the count value becomes smaller corresponding to the counting operation of -1. . In the figure, a change in the count value 504 due to such a down-counting operation is represented by a straight line descending to the right.
[0081]
During the down-counting operation as described above, the IC card chip performs original data processing such as encryption processing 507. When the count value 504 becomes zero, an interrupt request 505 is generated. Therefore, the encryption process 507 is interrupted and an interrupt process 508 is executed instead. At the same time as this interrupt request, the random number generator 501 forms a random number B different from the above in the random number generator, is loaded into the counter as the initial value 503, and the down-counting operation is performed as described above. When the certain interrupt operation is finished, the interrupted encryption process 507 is executed again. When the count value 504 becomes zero, an interrupt request is generated again.
[0082]
The interval 506 at which the interrupt request as described above is made changes randomly by the random number 501 formed by the random number generator, in other words, irregularly or without reproducibility. As described above, the interrupt processing unrelated to the original data processing of the IC card chip is randomly inserted, so that the procedure and timing of the encryption processing changes every time, and the current consumption waveform changes on the time axis. become. As a result, the timing for performing the specific encryption process changes, and the data dependence analysis can be made substantially impossible by comparing the current waveforms on the time axis as described above.
[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 number setting register 415 is provided instead of the random number generator 402. The random number setting register 415 is loaded with a random number generated by a random number generation program by the CPU 413. Although not particularly limited, the CPU 413 executes a random number generation program built in the ROM 410 in response to an interrupt request, and loads a random number generated by performing random number generation processing such as multiplication and addition into the random number setting register 415. Process.
[0087]
In the timing generation circuit 406, by causing the interval generation circuit 403 to load the generated random number, an interrupt request at a random interval is generated in the same manner as described above, and each time a random number is formed by the program, the original data processing To return to. Therefore, when the IC card is connected to the reader / writer, the CPU 413 may first execute the random number generation program in response to the connection. In this configuration, since random numbers are generated in software, the circuit can be simplified.
[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 oscillator 416 is provided in place of the random number generator 402. The oscillator 416 is a ring oscillator that utilizes changes in device characteristics in response to changes in the temperature of the device and changes in power supply voltage, and the time constant is changed as shown in FIGS. 12 and 13 by its own oscillation signal. A ring oscillator or an oscillation circuit that performs an unstable oscillation operation using a PLL circuit as shown in FIGS. 11 and 14 may be used.
[0089]
In this embodiment, the clock cycle of the counter changes corresponding to the fluctuation of the oscillation frequency of the oscillator 416, and the cycle (interval) in which the underflow determination circuit 405 determines all zeros is different even with the same count value. In the same manner as described above, a random interrupt request is made.
[0090]
In this embodiment, a monitoring register 417 is added. Thereby, it can be monitored from the program of the CPU 413 whether or not random timing insertion is functioning normally. In response to the interrupt request 409, the flip-flop F / F in the monitoring register 417 is set. The monitoring register 417 can be read from the CPU 413 via the data bus. The monitoring means described above has an important meaning in that it is easy to create a program against illegal information acquisition using physical destruction of an IC card chip (one-chip microcomputer). It is.
[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 random number generator 402 and the timing generation circuit 406, a pseudo process consisting of the above instructions is inserted into the CPU 413 to change the timing.
[0092]
The timing generation circuit 406 uses the random number generator 402 to supply random instruction insertion timing. The CPU 413 fetches an instruction from the ROM 410 via the address bus and the data bus, and executes the instruction. The fetched instruction is sent from the instruction register 4014 to the instruction decoder 4008 via the instruction change circuit 4004. In response to the signal from the instruction decoder 4008, the control circuit 4009 controls the arithmetic unit 4013 and other circuits to control the execution of the instruction.
[0093]
Normally, the instruction from the instruction register 4014 is sent to the instruction decoder 4008 without being changed in the instruction change circuit 4004. However, when the instruction insertion timing is requested, the instruction change circuit 4004 changes the instruction to a no-operation instruction (NOP instruction). Further, at this time, although not shown in this drawing, an update stop signal of the program counter 4012 is outputted. This update stop signal instructs to stop the update of the program counter 4012 accompanying instruction execution. This is to prevent the program counter 4012 from being excessively changed by the NOP instruction inserted by the instruction change circuit 4004.
[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 instruction insertion timing 1407 occurs when executing instruction B, instruction B is changed at this time and NOP instruction 1406 is executed. When the NOP instruction 1406 is executed, the instruction B fetch cycle 1402 is performed again. In this way, in FIG. 30, the instruction insertion timing 1407 is used to insert an instruction that does not adversely affect normal cryptographic processing, and the timing is changed.
[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 instruction register 1705 and the instruction insertion timing 1708 is requested, the instruction B is changed at this time, and is not a NOP instruction, The difference is that a branch instruction BRAB to the program counter is used.
[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 cycle 1702 is performed again.
[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 CPU 413, a storage device such as a ROM 410, a RAM 411, and an EEPROM 412, an input / output port (I / O port) 414, and the like, and a random number generation circuit 402 added according to the present invention. , A control register 421 and a clock generation circuit 418.
[0103]
The clock generation circuit 418 receives an external clock CLK supplied from the outside of the one-chip microcomputer and changes its frequency to form an internal clock 420 of the microcomputer. Whether or not the clock generation circuit 418 changes the frequency can be controlled by a frequency jitter enable signal 422. The frequency jitter enable signal 422 can be controlled from a program by setting it in the control register 421 by the CPU 413. The method for enabling ON / OFF control of random timing according to the present invention is not limited to this embodiment, and can be applied to all of the present invention. For example, the random timing function of the present invention can be turned off when synchronization is necessary when the IC card communicates with the reader / writer.
[0104]
The clock generation circuit 418 changes the frequency of the internal clock signal 420 using the random number formed by the random number generation circuit 402. For this reason, the random number generation circuit 402 is required. However, when the cryptographic operation circuit (RNG module) is mounted, the random number required by the random number generator 402 may be used together. Good. For example, the random number generator 402 may be a part related to random number generation in FIGS.
[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 phase comparator 4110, a low-pass filter 4111, a VCO (voltage controlled oscillation circuit) 4112, and a frequency divider 4113 is used. Capacitors C1 to Cn are connected to a capacitor C0 that holds the control voltage of the VCO 4112 through a MOSFET Q that is switch-controlled by a frequency Zic enable signal. Random numbers formed by the random number generation circuit are input to the other ends of these capacitors C1 to Cn.
[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, frequency dividing circuits 4114, 4115 and 4116 having different frequency dividing ratios, a switching synchronization circuit 4117, a clock switching circuit 4118 and a selector 4119 are used. The clock switching circuit 4118 is activated by a clock frequency division enable signal and controls the selector 4119 according to a random number to select one of the three frequency division outputs for output.
[0108]
When the division ratio is different such as 1/2, 1/4, and 1/8, the switching synchronization circuit 4117 monitors the waveform that is currently being output at the time of switching, detects the end timing, and detects the clock switching circuit. Is instructed to switch the secretor 4119. As a result, the microcomputer clock has continuity, in other words, the cycle is switched without generating noise such as a hazard. Thus, by changing the timing of data processing by changing the division ratio of the operation clock at random, analysis by comparing the current waveform in encryption processing etc. on the time axis as described above Can be made virtually impossible. The clock frequency division enable is a signal for controlling whether or not the frequency is changed according to the frequency division ratio, and can selectively stop the frequency division ratio switching by a random number.
[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 synchronization circuit 4121 and a clock delay amount switching circuit 4122 are used. The clock delay amount switching circuit 4122 is activated by a clock delay enable signal, and controls the clock delay amount generation circuit according to a random number to change and output the delay amount of the clock signal CLK supplied from the outside.
[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 synchronization circuit 4121 monitors the input clock signal CLK, detects its change timing, and instructs the clock delay amount switching circuit 4122 to change the switch control signals S1 to S3 corresponding to the random numbers. Thereby, although the microcomputer clock has the same frequency as the input clock signal CLK, the delay amount, that is, the phase of the microcomputer clock is changed corresponding to the random number.
[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 CPU 413, a storage device such as a ROM 410, a RAM 411, and an EEPROM 412, an input / output port (I / O port) 414, and the like, and a random number generation circuit 402 added according to the present invention. The timing generation circuit 406, the bus right request circuit 419, and the bus right arbitration circuit 420 are used. In addition to the CPU 413, if there is a peripheral circuit that becomes a bus master, such as a DMAC (direct memory access control circuit), the bus right request circuit 419 and the bus right arbitration circuit 420 exist. it can.
[0112]
In this embodiment, the CPU 413 releases the bus right to change the data processing timing. The timing generation circuit 406 receives the random number from the random number generator 402 and instructs the bus right request circuit 419 about the bus cycle insertion timing. At this timing, the bus right request circuit 419 outputs a bus right request signal to the bus right arbitration circuit 420. The bus right arbitration circuit 420 negates the bus right CPU permission signal and asserts the bus right permission signal at the break of the bus cycle. The CPU 413 abandons the bus right by negating the bus right CPU permission signal, and stops outputting the address bus and the read signal.
[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 right request signal 2502 is asserted, the bus right CPU permission signal 2504 is negated and the bus right permission signal 2506 is asserted. In response to the negation of the bus right CPU permission signal 2504, the CPU bus cycle is interrupted and the bus right request circuit bus cycle 2511 is performed. As described above, the timing at which the bus right request signal is asserted changes randomly according 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.
[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 CPU 413, a storage device such as a ROM 410, a RAM 411, and an EEPROM 412, an input / output port (I / O port) 414, and the like, and a random number generation circuit 402 added according to the present invention. The timing generation circuit 406 and the wait request circuit 421 are used.
[0116]
In this embodiment, the data processing timing is changed by inserting wait cycles randomly into the bus cycle of the CPU 413. The timing generation circuit 406 receives the random number from the random number generator 402 and instructs the wait request circuit 421 to insert the wait request signal. At this timing, the wait request circuit 421 asserts a wait request signal for the bus cycle to the CPU 413. When the wait request signal is asserted, the CPU 413 performs a bus cycle longer than a normal bus cycle.
[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 timing generation circuit 406, the wait request circuit 421 asserts a wait request signal to the CPU 413. When the wait request signal is asserted, the CPU 413 executes the bus cycle 2706 longer than the normal bus cycles 2704 and 2705.
[0119]
The wait insertion timing signal is randomly generated corresponding to the random number generated by the random number generator 402 as described above, and the interval becomes irregular. Therefore, as described above, the current consumption waveform for the security information such as the encryption key and the data on the algorithm of the encryption process is not particularly dependent. As a result, the decryption of the encryption key by the analysis of the current waveform is performed as described above. It can be made virtually impossible.
[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 random number generator 402 as shown in FIG. 23 and inserts the interrupt processing of the CPU 413 at random. To change the timing. In addition to this, a pseudo-current generation circuit 422 is also mounted so that a pseudo-current is generated by a random number generated by the random number generator 402.
[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 random number generator 402 as shown in FIG. 28, and the instruction executed by the CPU 413 is changed. The program is replaced with a NOP instruction or a branch instruction to the current program counter and executed. In this way, instruction insertion that does not adversely affect normal cryptographic processing is performed, and the timing is changed. In addition to this, a pseudo-current generation circuit 422 is also mounted so that a pseudo-current is generated by a random number generated by the random number generator 402.
[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 initial value 512, a down-count operation is performed, and the count value is decreased corresponding to a count operation of -1. In the figure, the change in the count value 514 due to such a down-counting operation is represented by a straight line descending to the right.
[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 process A 518, process B 519, and process C 520, in a time-sharing manner. When the count value 514 becomes zero, the process A518 being executed is interrupted and a task schedule process is executed instead. Simultaneously with this task scheduling process, the random number generator 511 forms a random number B different from the above in the random number generator, is loaded into the counter as the initial value 513, and the down-counting operation is performed as described above. After the certain process, the task schedule process ends and the execution of the different process B519 is resumed. Then, when the count value 514 becomes zero, the task schedule process is operated again.
[0127]
The interval 516 for executing the above processing changes irregularly by the random number 511 formed by the random number generator. In this way, the process to be performed in the IC card chip is divided into a plurality of processes, the execution order and timing of each change, and the consumption current waveform when viewed on the time axis changes. As a result, the timing for performing a process including a specific encryption process changes, and the data dependency can be made difficult to analyze by comparing the current waveforms on the time axis as described above. In this case, the data processing can be efficiently performed because the parallel processing interval can be used instead of the pseudo processing as described above.
[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 register 1 for monitoring that 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. There is an effect that the reliability of the security protection function of the circuit device can be increased.
[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 oscillation circuits 1 and 2 of FIG.
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 oscillation circuits 1 and 2 of FIG.
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 SYMBOLS 201 ... Central processing unit (CPU), 202 ... I / O port, 203 ... Address bus, 204 ... Data bus, 205 ... Clock generation circuit, 206 ... ROM, 207 ... RAM, 208 ... EEPROM, 209 ... Operation circuit for encryption 210 ... False current generation circuit,
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)

データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われるICカードであって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、上記データ処理動作に対して疑似的処理を挿入する手段であり、
上記制御手段は、バス権要求回路とバス権調停回路を用い、乱数により設定されたタイミングにおいてバス権要求回路によりバス使用権を獲得して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
データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われるICカードであって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、上記データ処理動作に対して疑似的処理を挿入する手段であり、
上記制御手段は、ウェイト要求回路を用い、乱数により設定されたタイミングにおいてウェイト要求回路により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.
データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われるICカードであって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、データ処理装置の動作クロック信号の周期を変化させるものであり、 上記制御手段は、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.
データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われる半導体集積回路装置であって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、データ処理装置の動作クロック信号の周期を変化させるものであり、
上記制御手段は、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.
JP06156199A 1999-03-09 1999-03-09 IC card and semiconductor integrated circuit device Expired - Fee Related JP3827050B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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