JP3827050B2 - Icカードと半導体集積回路装置 - Google Patents
Icカードと半導体集積回路装置 Download PDFInfo
- Publication number
- JP3827050B2 JP3827050B2 JP06156199A JP6156199A JP3827050B2 JP 3827050 B2 JP3827050 B2 JP 3827050B2 JP 06156199 A JP06156199 A JP 06156199A JP 6156199 A JP6156199 A JP 6156199A JP 3827050 B2 JP3827050 B2 JP 3827050B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- random number
- data processing
- card
- oscillation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
- Microcomputers (AREA)
- Semiconductor Memories (AREA)
Description
【発明の属する技術分野】
この発明は、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…ウェイト要求回路。
Claims (7)
- データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われるICカードであって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、上記データ処理動作に対して疑似的処理を挿入する手段であり、
上記制御手段は、バス権要求回路とバス権調停回路を用い、乱数により設定されたタイミングにおいてバス権要求回路によりバス使用権を獲得してCPUによるバスサイクルを一時的に中断させるものであることを特徴とするICカード。 - データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われるICカードであって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、上記データ処理動作に対して疑似的処理を挿入する手段であり、
上記制御手段は、ウェイト要求回路を用い、乱数により設定されたタイミングにおいてウェイト要求回路によりCPUによるバスサイクルをその間長くさせるものであることを特徴とするICカード。 - データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われるICカードであって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、データ処理装置の動作クロック信号の周期を変化させるものであり、 上記制御手段は、PLL回路で構成されたクロック生成回路を用い、かかるPLL回路におけるVCOの制御電圧を保持するキャパシタに、スイッチ手段により複数のキャパシタの一方の電極を選択的に接続し、かかる複数のキャパシタの他端に乱数に対応した電圧信号を供給するものであることを特徴とするICカード。 - 請求項1ないし請求項3のいずれかにおいて、
上記乱数を形成する乱数発生回路を更に備え、
かかる乱数発生回路は、非制御発振回路と、その発振出力を受ける第1のシフトレジスタとを含み、
上記第1のシフトレジスタは、シフト動作を行うクロック信号が上記発振出力と非同期とされることを特徴とするICカード。 - 請求項4において、
上記乱数発生回路は、PLL回路と、上記PLL回路のVCO出力を受けるシフトレジスタとを含み、
上記PLL回路は、非制御発振回路の発振出力を基準信号とし、かつ、上記VCOの制御信号を形成するローパスフィルタの容量値が、上記非制御発振出力と、上記VCOの分周出力に基づいて変化されることを特徴とするICカード。 - データ処理装置とかかるデータ処理装置によるセキュリティ情報処理を含むデータ処理手順が書き込まれたROMを含み、外部から動作電圧が供給され、かつ外部入力に応ずる動作が行われる半導体集積回路装置であって、
上記データ処理手順に従うデータ処理動作のタイミングを変化させる制御手段を備え、
上記制御手段は、データ処理装置の動作クロック信号の周期を変化させるものであり、
上記制御手段は、PLL回路で構成されたクロック生成回路を用い、かかるPLL回路におけるVCOの制御電圧を保持するキャパシタに、スイッチ手段により複数のキャパシタの一方の電極を選択的に接続し、かかる複数のキャパシタの他端に乱数に対応した電圧信号を供給するものであることを特徴とする半導体集積回路装置。 - 請求項6において、
上記乱数を形成する乱数発生回路を更に備え、
かかる乱数発生回路は、非制御発振回路と、その発振出力を受ける第1のシフトレジスタとを含み、
上記第1のシフトレジスタは、シフト動作を行うクロック信号が上記発振出力と非同期とされることを特徴とする半導体集積回路装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06156199A JP3827050B2 (ja) | 1999-03-09 | 1999-03-09 | Icカードと半導体集積回路装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06156199A JP3827050B2 (ja) | 1999-03-09 | 1999-03-09 | Icカードと半導体集積回路装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000259799A JP2000259799A (ja) | 2000-09-22 |
JP3827050B2 true JP3827050B2 (ja) | 2006-09-27 |
Family
ID=13174658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP06156199A Expired - Fee Related JP3827050B2 (ja) | 1999-03-09 | 1999-03-09 | Icカードと半導体集積回路装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3827050B2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804782B1 (en) * | 1999-06-11 | 2004-10-12 | General Instrument Corporation | Countermeasure to power attack and timing attack on cryptographic operations |
US6419159B1 (en) * | 1999-06-14 | 2002-07-16 | Microsoft Corporation | Integrated circuit device with power analysis protection circuitry |
FR2796738B1 (fr) * | 1999-07-22 | 2001-09-14 | Schlumberger Systems & Service | Micro-controleur securise contre les attaques en courant |
KR100428786B1 (ko) | 2001-08-30 | 2004-04-30 | 삼성전자주식회사 | 내부 버스 입출력 데이터를 보호할 수 있는 집적 회로 |
FR2833724A1 (fr) * | 2001-12-13 | 2003-06-20 | Canal Plus Technologies | Composant electronique numerique protege contre des analyses de type electrique et/ou electromagnetique, notamment dans le domaine de la carte a puce |
DE10162309A1 (de) * | 2001-12-19 | 2003-07-03 | Philips Intellectual Property | Verfahren und Anordnung zur Erhöhung der Sicherheit von Schaltkreisen gegen unbefugten Zugriff |
JP4357815B2 (ja) * | 2002-09-11 | 2009-11-04 | 株式会社東芝 | 暗号演算回路 |
JP4674440B2 (ja) | 2004-03-04 | 2011-04-20 | ソニー株式会社 | データ処理回路 |
EP2081316A1 (en) | 2006-11-09 | 2009-07-22 | Panasonic Corporation | Cryptographic calculation processing circuit |
US8898211B2 (en) * | 2007-05-10 | 2014-11-25 | Ram International Corporation | Non-deterministic statistical data generator |
JP6323065B2 (ja) * | 2014-02-26 | 2018-05-16 | セイコーエプソン株式会社 | マイクロコンピューター及び電子機器 |
US11227046B2 (en) * | 2019-12-24 | 2022-01-18 | Stmicroelectronics International N.V. | Dynamic randomization of password challenge |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2638869B1 (fr) * | 1988-11-10 | 1990-12-21 | Sgs Thomson Microelectronics | Dispositif de securite contre la detection non autorisee de donnees protegees |
US5404402A (en) * | 1993-12-21 | 1995-04-04 | Gi Corporation | Clock frequency modulation for secure microprocessors |
JP3621497B2 (ja) * | 1996-03-01 | 2005-02-16 | 株式会社東芝 | コンピュータシステム及び同システムにおけるクロック停止信号制御方法 |
FR2745924B1 (fr) * | 1996-03-07 | 1998-12-11 | Bull Cp8 | Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre |
JP3196013B2 (ja) * | 1996-12-12 | 2001-08-06 | 株式会社日立製作所 | 論理集積回路 |
JP3492494B2 (ja) * | 1997-06-09 | 2004-02-03 | 沖電気工業株式会社 | 乱数発生回路 |
JP3530346B2 (ja) * | 1997-06-25 | 2004-05-24 | 株式会社ルネサステクノロジ | 半導体集積回路装置 |
-
1999
- 1999-03-09 JP JP06156199A patent/JP3827050B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000259799A (ja) | 2000-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7376687B2 (en) | Pseudo-random number generator | |
KR100463814B1 (ko) | 개선된집적회로및그의사용방법 | |
JP3827050B2 (ja) | Icカードと半導体集積回路装置 | |
EP2954615B1 (en) | Integrated circuit identification and dependability verification using ring oscillator based physical unclonable function and age detection circuitry | |
US8937496B1 (en) | Clock monitor | |
KR100563885B1 (ko) | 난수 시드 생성 회로 및 이것을 포함한 드라이버, 및 메모리 카드 시스템 | |
US7805650B2 (en) | Semiconductor integrated circuit and debug mode determination method | |
KR101946509B1 (ko) | 클락 지연들을 변동시킴으로써 부채널 공격들로부터 보호하는 시스템 및 방법 | |
CN107346233B (zh) | 大量振荡的生成器 | |
KR20160008532A (ko) | 진성 난수 생성기에 대한 자동 제어 시스템 및 방법 | |
US9536086B2 (en) | Circuit arrangement, a method for forming a circuit arrangement, and method for integrity checking | |
CN101366231A (zh) | 密码运算处理电路 | |
JP4168305B2 (ja) | Icカードとマイクロコンピュータ | |
JP2001237825A (ja) | 電子的安全部品 | |
JP3788881B2 (ja) | Icカードと半導体集積回路装置 | |
JP2005513604A (ja) | コンピューティングシステムの耐障害性とセキュリティを向上させるシステム | |
Gross et al. | CPU to FPGA power covert channel in FPGA-SoCs | |
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 (ja) | 乱数発生回路 | |
JP3701100B2 (ja) | クロック生成回路及びクロック生成方法 | |
EP3843317A1 (en) | Method for detecting perturbations in a logic circuit and logic circuit for implementing this method | |
JP6516097B2 (ja) | 演算装置、icカード、演算方法、及び演算処理プログラム | |
US20250111096A1 (en) | Methods and apparatus to protect against voltage glitch attacks in microcontrollers |
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 |