(57)【特許請求の範囲】
【請求項１】
外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データの入出力動作が行われるＩＣカードであって、
複数ビットからなる乱数を発生させる乱数発生回路と、
異なる容量値にされた複数の容量素子、上記複数の容量素子に対してチャージアップ電流及びディスチャージ電流を流す複数のスイッチ素子とを含み、
上記複数からなるスイッチ素子を上記乱数の各ビットに対応させてスイッチ制御することにより、上記リードライト装置との間でのデータの入出力動作に伴う内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を備えてなることを特徴とするＩＣカード。
【請求項２】
請求項１において、
上記偽電流発生回路は、上記リードライト装置から供給されるクロック信号に対応して、上記不規則性の電流値にされた電流を発生させるものであることを特徴とするＩＣカード。
【請求項３】
請求項２において、
上記乱数発生回路は、暗号用演算処理にも用いられるものであることを特徴とするＩＣカード。
【請求項４】
請求項３において、
上記乱数発生回路は、発振回路と、その発振出力を受ける第１のシフトレジスタとを備え、
上記第１のシフトレジスタは、シフト動作を行うクロック信号が上記発振出力と非同期とされることを特徴とするＩＣカード。
【請求項５】
請求項３において、
上記乱数発生回路は、ＰＬＬ回路と、ＰＬＬ回路のＶＣＯ出力を受けるシフトレジスタとを備え、
上記ＰＬＬ回路は、発振回路の発振出力を基準信号とし、かつ、上記ＶＣＯの制御信号を形成するローパスフィルタの容量値が、上記発振出力と、上記ＶＣＯの分周出力に基づいて変化されることを特徴とするＩＣカード。
【請求項６】
請求項３ないし請求項５のいずれかにおいて、
上記乱数発生回路は、乱数の生成速度が可変とされるものであることを特徴とするＩＣカード。
【請求項７】
請求項４又は請求項５において、
上記発振回路は、リングオシレータからなり、
上記リングオシレータを構成する各インバータ回路の出力には、時定数回路を構成する第１の抵抗と、上記第１の抵抗とスイッチを介して並列接続される第２の抵抗とを含み、上記スイッチを非定期的にオン状態／オフ状態に切り替えてなることを特徴とするＩＣカード。
【請求項８】
請求項４ないし請求項７のいずれかにおいて、
更に多入力の排他的論理和回路からなる出力調整回路と第２のシフトレジスタとを備え、
上記第１のシフトレジスタの出力信号は、上記出力調整回路に供給され、
上記出力調整回路の出力信号が上記第２のシフトレジスタに供給されて上記乱数が生成されることを特徴とするＩＣカード。
【請求項９】
外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われるＩＣカードであって、
複数ビットからなる乱数を発生させる乱数発生回路と、
異なる容量値にされた複数の容量素子、上記複数の容量素子に対してチャージアップ電流及びディスチャージ電流を流す複数のスイッチ素子とを含み、
上記複数からなるスイッチ素子を上記乱数の各ビットに対応させてスイッチ制御することにより、上記リードライト装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路と、
上記データ処理手順に対して不規則的に無効サイクルを挿入する手段とを備えてなることを特徴とするＩＣカード。
【請求項１０】
請求項９において、
上記データ処理手順に対して不規則的に無効サイクルを挿入する手段は、上記乱数により設定されたタイマーからの割り込み処理により実施されることを特徴とするＩＣカード。
【請求項１１】
請求項９において、
上記データ処理手順に対して不規則的に無効サイクルを挿入する手段は、上記乱数により設定されたタイミング信号によりデータ処理装置で行われる命令の強制変更により実施されることを特徴とするＩＣカード。
【請求項１２】
外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われるＩＣカードであって、
複数ビットからなる乱数を発生させる乱数発生回路と、
異なる容量値にされた複数の容量素子、上記複数の容量素子に対してチャージアップ電流及びディスチャージ電流を流す複数のスイッチ素子とを含み、
上記複数からなるスイッチ素子を上記乱数の各ビットに対応させてスイッチ制御することにより、上記リードライト装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路と、
上記データ処理手順のタイミングを不規則的に変化させる手段とを備えてなることを特徴とするＩＣカード。
【請求項１３】
請求項１２において、
上記データ処理手順のタイミングを不規則的に変化させる手段は、データ処理装置の動作クロック信号の周期を不規則的に変化させるものであることを特徴とするＩＣカード。
【請求項１４】
データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われる半導体集積回路装置であって、
複数ビットからなる乱数を発生させる乱数発生回路と、
異なる容量値にされた複数の容量素子、上記複数の容量素子に対してチャージアップ電流及びディスチャージ電流を流す複数のスイッチ素子とを含み、
上記複数からなるスイッチ素子を上記乱数の各ビットに対応させてスイッチ制御することにより、外部装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を備えてなることを特徴とする半導体集積回路装置。
【請求項１５】
請求項１４において、
上記偽電流発生回路は、外部装置から供給されるクロック信号に対応して、上記不規則性の電流値にされた電流を発生させるものであることを特徴とする半導体集積回路装置。
【請求項１６】
請求項１５において、
更に上記データ処理手順に対して無効サイクルを挿入する手段とを備えてなることを特徴とする半導体集積回路装置。
【請求項１７】
請求項１６において、
上記データ処理手順に対して無効サイクルを挿入する手段は、上記乱数により設定されたタイマーからの割り込み処理により実施されることを特徴とする半導体集積回路装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＩＣカードと半導体集積回路装置に関し、特にＩＣカードとプログラム内蔵の１チップマイクロコンピュータのような半導体集積回路装置における機密保護技術に利用して有効な技術に関するものである。
【０００２】
【従来の技術】
ＩＣカードは、主に勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ＩＣカードは、電源を持っていないためリーダライタに差し込まれると、電源の供給を受けて動作可能となる。このように動作可能になると、リーダライタからコマンドを受け、かかるコマンドに従ってリーダライタとの間でデータの転送を行う。ＩＣカードに関しては、オーム社出版電子情報通信学会編水沢順一著「ＩＣカード」などがある。
【０００３】
ＩＣカードは、プログラムや重要な情報がＩＣカード用チップの中に密閉されているため、重要な情報を格納したり、カードの中で暗号処理を行うために使われている。ＩＣカードでの暗号処理の解読の難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ＩＣカードが暗号処理を行っている時の消費電流を観測して解析することにより、容易に暗号処理の内容や暗号鍵が推定されることの可能性が示唆されている。このことについては、John Wiley & sons 社 W.Rankl & W. Effing著「 Smart Card Handbook 」 の8.5.1.1 Passtve protective mechantsms( 263ページ) にこのような危険性が記載されている。
【０００４】
【発明が解決しようとする課題】
ＩＣカード用チップを構成しているＣＭＯＳ回路は、出力状態が１から０あるいは０から１に変わった時に電流を消費する。特に、データバス２０３のバスは、大きな電気容量を持つため、バスの値が１から０あるいは０から１に変わると、大きな電流を消費する。そのため、消費電流を観測すれば、ＩＣカード用チップの中で何が動作しているか分かる可能性を示唆している。
【０００５】
例えば、１６ビットのプリチャージバスにデータを転送する場合を考える。プリチャージバスは、データ転送の前にすべてのバスの値を“０”にそろえるバスである。このバスに、値は違うが“１”のビットの数が同じデータ、例えば、“１”のビットの数が２である１６進数で“８８”と“１１”、を転送した場合、電流波形はほぼ同じ波形になると予測される。この理由は、“０”から“１”へ変化したビットの数が同じであるため、同じように電流を消費し、同じ電流波形になるからである。もし、“１”のビットの数が１つ異なるデータ、例えば、“１”のビットの数が３である“８９”や“１９”を転送した場合、“１”のビットの数が２のデータとは消費電流が異なる。これは、３ビット分バスの値が“０”から“１”に変わったため、その分の電流が消費される。そのため、先の２ビットが変化したデータに比べて消費電流が１ビット分大きくなる。一般に、“１”のビットの数が多いほど電流波形は高くなるという規則性がある。この規則性から転送されているデータを推定することができると思われる。
【０００６】
そこで、本願発明者等においては、上記ＩＣカード及びＩＣカード等に搭載される１チップマイクロコンピュータ等のような内蔵のプログラムにより一定のデータ処理動作を行う半導体集積回路装置に対して上記のような消費電流の観測による暗号処理の内容や暗号鍵の解読をより確実に防止することができる機密保護技術の開発に至った。
【０００７】
この発明の目的は、機密保護の強化を実現したＩＣカードと半導体集積回路装置を提供することにある。この発明の前記ならびにそのほかの目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【０００８】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記の通りである。すなわち、外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データの入出力動作が行われるＩＣカードにおいて、上記リードライト装置との間でのデータの入出力動作に伴う内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を設ける。
【０００９】
本願において開示される発明のうち他の代表的なものの概要を簡単に説明すれば、下記の通りである。すなわち、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われる半導体集積回路装置において、外部装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を内蔵させる。
【００１０】
【発明の実施の形態】
図１には、この発明が適用されるＩＣカードの一実施例の外観図が示されている。ＩＣカードは、プラスチックケースからなるカード１０１と、かかるカード１０１の内部に搭載された点線で示されたような1 チップのマイクロコンピュータ等からなるＩＣカード用チップ１０２とを持つものである。上記ＩＣカードは、さらに上記ＩＣカード用チップ１０２の外部端子に接続されている複数の接点（電極）１０３を持つ。複数の接点１０３は、後で図２によって説明するような電源端子ＶＣＣ、電源基準電位端子ＶＳＳ、リセット入力端子ＲＥＳバー、クロック端子ＣＬＫ、データ端子Ｉ／Ｏ−１／ＩＲＱバー、Ｉ／Ｏ−２／ＩＲＱバーとされる。ＩＣカードは、かかる接点１０３を通して図示しないリーダーライタのよをて外部結合装置から電源供給を受け、また外部結合装置との間でのデータの通信を行う。
【００１１】
図２には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の一実施例の概略ブロック図が示されている。同図の各回路ブロックは、公知のＣＭＯＳ集積回路の製造技術により、特に制限されないが、単結晶シリコンのような１個の半導体基板上において形成される。
【００１２】
この発明に係るＩＣカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、クロック生成回路２０５、中央処理装置（以下単にＣＰＵという場合がある）２０１、ＲＯＭ(Read Only Memory)２０６やＲＡＭ(Random Access Memory)２０７、ＥＥＰＲＯＭ(Electrical Erasable Programmable Read Only Memory）２０８などの記憶装置、乱数発生回路（ＲＮＧ）２０９、入出力ポート（Ｉ／Ｏポート）２０２などと、本発明によって追加された偽電流発生回路２１０からなる。
【００１３】
クロック生成回路２０５は、図示しないリーダライタ（外部結合装置）から図１の接点１０３を介して供給される外部クロックＣＬＫを受け、かかる外部クロック信号に同期したシステムクロック信号を形成し、それをチップ内部に供給する回路である。ＣＰＵ２０１は、論理演算や算術演算などを行う装置であり、記憶装置２０６、２０７、２０８は、プログラムやデータを格納する装置である。Ｉ／Ｏ（入出力）ポート２０２は、リーダライタと通信を行う装置である。データバス２０４とアドレスバス２０３は、各装置を相互に接続するバスである。
【００１４】
上記記憶装置２０６，２０７，２０８のうち、ＲＯＭ２０６は、記憶内容が不揮発的に固定されているメモリであり、主にプログラムを格納するメモリである。揮発性メモリ（以下、ＲＡＭという）２０７は自由に記憶情報の書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消えてなくなる。ＩＣカードがリーダライタから抜かれると電源の供給が中断されるため、ＲＡＭ２０７の内容は、保持されなくなる。
【００１５】
上記不揮発性メモリ（以下、ＥＥＰＲＯＭという）２０８は、内容の書き換えが可能な不揮発性メモリであり、その中に一旦書き込まれた情報は、電源の供給が停止されてもその内部に保持される。このＥＥＰＲＯＭは、書き換える必要があり、かつＩＣカードがリーダライタから抜かれても保持すべきデータを格納するために使われる。例えば、ＩＣカードがプリペイドカードとして使用されるような場合、のプリペイドの度数などは、使用するたびに書き換えられる。この場合の度数などは、リーダライタか抜かれてもＩＣカード内で記憶保持する必要があるため、ＥＥＰＲＯＭ２０８で保持される。乱数発生回路路２０９は、暗号処理などで使用する乱数を発生する。
【００１６】
ＣＰＵ２０１は、いわゆるマイクロプロセッサと同様な構成にされる。すなわち、その詳細を図示しないけれども、その内部に命令レジスタ、命令レジスタに書込まれた命令をデコードし、各種のマイクロ命令ないしは制御信号を形成するマイクロ命令ＲＯＭ、演算回路、汎用レジスタ（ＲＧ６等）、内部バスＢＵＳに結合するバスドライバ、バスレシーバなどの入出力回路を持つ。ＣＰＵ２０１は、ＲＯＭ２０６などに格納されている命令を読み出し、その命令に対応する動作を行う。ＣＰＵ２０１は、Ｉ／Ｏポート２０２を介して入力される外部データの取り込み、リードオンリメモリＲＯＭからの命令や命令実行のために必要となる固定データのようなデータの読み出し、ＲＡＭやＥＥＰＲＯＭに対するデータの書き込みと読み出し動作制御等を行う。
【００１７】
上記ＣＰＵ２０１は、クロック生成回路２０５から発生されるシステムクロック信号を受けそのシステムクロック信号によって決められる動作タイミング、周期をもって動作される。ＣＰＵ２０１は、その内部の主要部が、ＣＭＯＳ回路、すなわちＰチャンネル型ＭＯＳＦＥＴとＮチャンネル型ＭＯＳＦＥＴとからなる回路から構成される。特に制限されないが、ＣＰＵ２０１は、ＣＭＯＳスタティックフリップフロップのようなスタティック動作可能なＣＭＯＳスタテック回路と、信号出力ノードへの電荷のプリチャージと信号出力ノードへの信号出力とをシステムクロック信号に同期して行うようなＣＭＯＳダイナミック回路とを含む。
【００１８】
図３には、前記図２に示したＩＣカード用チップの等価回路図が示されている。電源電圧ＶＣＣと回路の接地電位との間に流れる電流Ｉは、バスライン、ＣＰＵ、ＲＯＭ、揮発性メモリ、不揮発性メモリ、ＲＮＧ及び偽電流発生回路の各回路ブロックに流れる電流ＩBUS 、ＩCPU 、ＩMEM1、ＩMEM2、ＩRNG 、ＩDUM の総和（ＩBUS ＋ＩCPU ＋ＩMEM1＋ＩMEM2＋ＩRNG ＋ＩDUM ）である。上記ＲＮＧの電流ＩRNG と偽電流信号ＩDUM は、同じ内部状態及び同じ動作でも毎回異なるものとされる。
【００１９】
前記の暗号アルゴリズムの解読は、上記ＩＣカード内を流れる電流の総和の変化を統計的に解析することを基本とすると推定される。そこで、この実施例では、かかる解析を実質上不可能にさせるための１つの技術として、かかる電流の変化に偽電流発生回路の電流ＩDUM を加える構成を採る。この場合、電流ＩDUM は、上記各内部回路動作と無関係で、かつ不規則性の電流値にされる。言い換えるならば、上記内部回路において同じ状態及び同じ動作でも毎回異なるよう、統計的な観点での非再現性を持つようにされる。
【００２０】
図４には、この発明を説明するための電流波形図が示されている。信号電流Ｉ１は、前記データ処理に伴って発生する電流の総和を表している。図３の例においては、Ｉ１＝ＩBUS ＋ＩCPU ＋ＩMEM1＋ＩMEM2＋ＩRNG と表すことができる。これに対して、電流Ｉ２は、偽電流であり、その電流値が変化（Ｖariable)される。この変化の意味は、前記のように内部回路動作に無関係で、不規則性を持つようにされる。つまり、前記のような非再現性を持つ電流波形を持つようにされる。
【００２１】
上記のような偽電流をＩＣカードに内蔵した場合、あるいはＩＣカード等に搭載される１チップのマイクロコンピュータのような半導体集積回路装置に内蔵させた場合、電源端子で観測される電流は、前記電流Ｉ１＋Ｉ２とされる。このため、上記回路電流Ｉ１＋Ｉ２には、上記偽電流Ｉ２が含まれるために、前記のような統計的な手法による暗号処理の内容や暗号鍵の推定を阻止することができるものである。
【００２２】
図５には、偽電流発生回路の一実施例の概略構成図が示されている。この実施例では、発振回路の出力信号をその発振周波数とは非同期のタイミングジェネータ出力をクロックとしてレジスタに取り込むことにより乱数を発生させる。上記レジスタは、シフトレジスタであり、クロックのタイミングにおいて入力された発振出力が入力部のロジックスレッショルド電圧よりも高いか低いかにより２値信号に変換して２進情報からなる乱数を発生させる。
【００２３】
上記乱数は、セレクタの入力データとされる。セレクタは、クロックにより乱数の各ビットに対応されたスイッチをオン状態／オフ状態として、キャパシタＣ１〜Ｃ４にチャージアップ電流を流す。キャパシタＣ１ないしＣ４は、特に制限されないが、その容量値が別々にされる。上記のように４つのキャパシタの容量値を別々にすることにより、１つもチャージアップしない組み合わせを含んで、チャージアップのみで１６通り、チャージアップとディスチャージを含むと８１通りもの電流値を作り出すことができる。このような組み合わせが、乱数によって不規則的に発生できるために、簡単な構成によって上記偽電流を発生させることができる。
【００２４】
上記セレクタは、クロックに同期して偽電流を発生させるものである。ＣＰＵ等はクロックに同期して一連のデータ処理を行うものであるので、前記の各回路ブロックに流れる電流ＩBUS 、ＩCPU 、ＩMEM1、ＩMEM2、ＩRNG 等もクロックに同期して発生される。そのため、偽電流ＩDUM をクロックに同期して発生させることにより、効率よくしかも効果的に前記統計的な手法による電流変化の観測による暗号処理の内容や暗号鍵の推定を実質的に不可能にすることができる。
【００２５】
図６には、偽電流発生回路の一実施例の具体的回路図が示されている。この実施例では、クロックドインバータ回路を縦列接続し、初段回路には発振回路出力を供給する。この発振回路出力とは非同期のタイミングジェネレータ出力により、上記クロックドインバータ回路の動作を制御する。上記縦列接続のクロックドインバータ回路の各段の出力信号は、駆動回路を構成するクロックドインバータ回路の入力に供給される。駆動回路を構成する各クロックドインバータ回路は、前記のような偽電流によってチャージアップされる容量（キャパシタ）が設けられる。上記駆動回路を構成する各クロックドインバータ回路は、上記タイミングジェネレータ出力がインバータ回路によって反転されて供給される。
【００２６】
上記縦列接続のインバータ回路は、特に制限されないが、その駆動能力が別々に設定される。これにより、発振回路出力を入力とする縦列接続の各インバータ回路は、上記タイミングジェネレータ出力が一方のレベル（例えばハイレベル）のときに動作状態にされて、それに供給される信号がそれぞれの遅延時間に対応した遅延時間により伝達される。そして、上記タイミングジェネレータ出力が他方のレベル（例えばロウレベル）のときに、出力ハイインピーダンス状態にされる。したがって、上記タイミングジェネレータ出力が他方のレベル（例えばロウレベル）に変化したときの各段の出力信号が上記駆動回路の入力信号として保持される。
【００２７】
上記タイミングジェネレータ出力が一方のレベルにあるとき、駆動回路を構成する各インバータ回路は出力がハイインピーダンス状態にされる。したがって、各容量はそれ以前の電荷の状態が保持されている。上記タイミングジェネレータ出力が他方のレベルに変化すると、上記のように各段の出力信号が上記駆動回路の入力信号として保持されており、駆動回路の動作状態によって、入力信号のレベルが上記駆動回路のロジックスレッショルド電圧に対して高いときにはロウレベルの出力信号を形成し、低いときにはハイレベルの出力信号を形成する。
【００２８】
上記入力信号のレベルが上記駆動回路のロジックスレッショルド電圧に対して高いときにはロウレベルの出力信号を形成するが、そのときの容量に電荷が蓄積されていたならディスチャージされ、容量に電荷が存在しないなら電流が流れない。逆に、上記入力信号のレベルが上記駆動回路のロジックスレッショルド電圧に対して低いときにはハイレベルの出力信号を形成するが、そのときの容量に電荷が蓄積されていたならその差分に対応したチャージアップ電流が流れ、電荷が存在しないなら電源電圧ＶＣＣまでのチャージアップ電流が流れる。このように、縦列接続のクロックドインバータ回路の遅延時間が異なることによる各段の信号レベルが一種の乱数であることに加えて、その以前の容量に保持された電荷の状態により、前記のようにチャージアップ電流又はディスチャージ電流が異なるようにされる。つまり、上記容量に保持されていた電荷そのものが乱数としての要素を持つ。
【００２９】
したがって、発振出力とそれをサンプリングするタイミングジェネレータ出力とが非同期であることによる直列接続のインバータ回路の各段での信号レベルと、それ以前に容量に保持されていた電荷量との組み合わせにより電流値としてみた場合に膨大な組み合わせの偽電流を形成することでき、同一状態と条件で何回かの１チップマイクロコンピータをアクセスしても、不規則性あるいは再現性の無い偽電流を発生させることができる。この場合、電源電圧ＶＣＣ側から供給される電流と、接地電位に流れる電流とが上記容量の蓄積電荷の有無に対応して異なるものとされるから、電流解析をいっそう複雑にすることができる。そして、上記クロックに同期して偽電流を発生させているので、電流解析による暗号鍵の解読等を前記同様に効果的に阻止することができる。
【００３０】
図７には、偽電流発生回路の他の一実施例の概略構成図が示されている。この実施例では、発振回路の出力信号をカウンタで計数し、その計数出力を発振周波数とは非同期のタイミングジェネレータ出力でサンプリングし、レジスタにデータとして転送させる。レジスタの各段には、前記と同様な容量Ｃ１〜Ｃ６等を接続する。この構成でも、上記カウンタの計数出力のサンプリングによって乱数を発生させるとともに、上記各容量Ｃ１〜Ｃ６が保持している電荷の状態と上記乱数に対応したハイレベル出力とロウレベル出力との組み合わせによって、前記同様に膨大な組み合わせからなる偽電流をクロックに同期して発生させることができる。
【００３１】
図８には、図２に示した乱数発生回路ＲＮＧモジュールにおけるインターフェイス部の一実施例のブロック図が示されている。１チップマイクロコンピュータを構成するデータバスには、乱数生成ビットを保持するフリップフロップ（フラグ）が設けられる。また、乱数発生回路で形成された乱数は、乱数格納レジスタに保持され、上記データバスからの読み出しが可能にされる。また、乱数生成回路の動作状態は、フリップフロップに設定され、それを上記データバスから読み出すことができるようにされる。
【００３２】
上記ＲＮＧモジュールで生成された乱数を、上記乱数格納レジスタを介してＣＰＵが受け取り、前記のような暗号信号処理に用いる。ＣＰＵは、乱数生成ビットをセットすることにより、乱数生成回路を動作状態にしたり停止状態にさせるとができる。このような乱数生成回路の動作状態は、ＣＰＵによるステータスビットの読み出しにより判定することができるようにされる。
【００３３】
図９には、ＣＰＵによる乱数入手動作を説明するための一実施例のフローチャート図が示されている。ステップ（１）では、「乱数生成ビット」をセットする。このような「乱数生成ビット」のセット（例えば論理１）により、乱数生成回路が動作を開始する。
【００３４】
ステップ（２）では、「ステータスビット」が乱数生成完了状態かいなかを判定する。つまり、乱数生成回路は、乱数を生成して乱数格納レジスタに格納すると、上記「ステータスビット」をセットする。もしも、「ステータスビット」がセットされない場合（例えば論理０）なら、ステップ（２）の判定に戻り、上記「ステータスビット」がセット（例えば論理１）にされるまで待つ。
【００３５】
ステップ（３）では、乱数格納レジスタに有効な乱数が格納されているので、ＣＰＵは乱数格納レジスタを指定してそれを読み出す。
【００３６】
ステップ（４）では、「ステータスビット」を「乱数生成中」に状態遷移とする。つまり、前記のように「ステータスビット」を論理０にリセットさせる。
【００３７】
ステップ（５）では、上記乱数格納レジスタから読み出した乱数が希望するデータ長であるか判定し、もしも希望するデータ長では無い場合には、前記ステップ（２）に戻り、上記動作を繰り返す。上記乱数格納レジスタから読み出した乱数が希望するデータ長であるときには、ステップ（６）に移行して上記「乱数生成ビット」をリセットして乱数生成動作を終了させる。
【００３８】
図１０には、乱数発生回路ＲＮＧモジュールの一実施例の全体構成図が示されている。発振回路１の出力は、入力データとしてシフトレジスタ８０５に入力される。このシフトレジスタ８０５のシフトクロックは、上記発振回路１とは別の発振回路２の発振出力を計数するカウンタ１で形成される。つまり、シフトレジスタ８０５のシフトクロックは、発振回路２の発振信号をカウンタ１により分周することにより形成される。
【００３９】
上記シフトレジスタ８０５の各段から出力される複数ビットの信号は、発振回路出力調整回路を通して補正され、乱数格納レジスタ（シフトレジスタ）８０８の入力データとして出力される。この乱数格納レジスタ８０８のシフト動作に用いられるレジスタ用クロック８１２は、前記カウンタ１の計数出力を受けるカウンタ２により更に分周されて形成される。このカウンタ２の出力信号は、カウンタ３に供給されて前記ステータスビット用生成信号８１３が形成され、ステータスビット８１０がフリップフロップ等に格納される。
【００４０】
乱数生成ビットが格納されるフリップフロップの出力信号は、制御信号として上記発振回路１、２及びカウンタ１、２、３に動作制御信号として供給される。この制御信号が例えばハイレベルのような活性レベルにされると、上記発振回路１、２及びカウンタ１、２、３が動作状態にされて発振動作及び計数動作が有効とされる。上記制御信号が例えばロウレベルのような非活性レベルにされると、上記発振回路１、２及びカウンタ１、２、３は非動作状態、つまり発振回路１と２は発振動作を停止し、カウンタ１、２、３は計数動作を停止する。
【００４１】
上記発振回路１と２は、互いに発振周波数が異なりようにされ、かつ、後述するように発振周波数が意図的に変動するようにされる。更に、シフトレジスタ８０５のシフトクロックに対して乱数格納レジスタ８０８のシフトクロックはカウンタ２により分周されたものを用いるようにして、乱数生成動作毎に乱数格納レジスタに格納されるビットパターンが不規則性を持つようにされる。
【００４２】
図１１には、図１０の発振回路１、２の一実施例のブロック図が示されている。この実施例では、ＰＬＬ（フェーズ・ロックド・ループ）回路により発振回路が構成される。本来ＰＬＬ回路は、所定の基準周波数に位相ロックするよう安定した周波数信号を形成するために用いられるものである。これに対して、この実施例では、ＰＬＬ回路の位相制御動作により発振出力を不安定にするするように用いる。
【００４３】
基準信号は、比較用発振回路で形成される。この発振回路は、水晶発振回路のような高安定の発振回路ではなく、リングオシレータ等のような非安定の発振回路が用いられる。この比較用発振回路の発振信号と、電圧制御発振回路の発振出力が分周された分周出力とを位相比較器で比較し、その位相差（周波数差）に対応した検出信号ＵＰ又はＤＯＷＮをローパスフィルタに供給して制御電圧を形成し、上記電圧制御発振回路の発振周波数を制御する。これにより、電圧制御型発振回路の発振周波数を上記比較用発振回路の発振周波数に対して、上記分周回路の分周比の対応した逓倍した周波数で発振させる。
【００４４】
この実施例では、上記位相検出信号ＵＰ又はＤＯＷＮを平滑するローパスフィルタに設けられる容量に対し、それぞれ容量を介して比較用発振出力、電圧制御型発振回路の分周出力及び発振回路の出力を伝えて、制御電圧を変動させる。これらの回路及び容量は、単数及び複数用いることが可能である。上記比較用発振出力、電圧制御型発振回路の分周出力とはＰＬＬにより同期化されるように制御されるが、その周波数が異なるために制御電圧にゆらぎを与えることができる。これに対して、これらとは非同期で不安定発振回路で形成された発振出力を加えることにより、電圧制御型発振回路の供給される制御電圧は、不規則に変化して電圧制御型発振回路を制御する。
【００４５】
つまり、ＰＬＬ回路が本来の帰還ループで形成された制御電圧の他、これらとは非同期で、かつ不安定発振回路で形成された発振信号によるノイズ成分が加算されることになるために、極めて複雑な発振制御動作を行うこととなって、周波数が時間の経過とともに変動し、しかも一定の規則性を持たない発振回路出力を形成することができる。これにより、乱数発生回路に適したランダム周波数変動発振回路を構成することができる。
【００４６】
図１２には、上記図１１に設けられる不安定発振回路の一実施例の回路図が示されている。この発振回路は、基本的にはリングオシレータにより構成される。つまり、ＣＭＯＳインバータ回路の出力に抵抗と容量（キャパシタ）とからなる信号遅延要素を奇数個、同図では５個をリング状態に接続して発振回路を構成する。この実施例では、このようなリングオレータは、それぞれの回路素子の特性が温度依存性や電源依存性を持つものであるので、非安定の発振動作を行うものと見做すことができる。
【００４７】
この実施例では、上記のような素子特性の温度依存性や電源依存性による比較的小さな変動に加えて、上記遅延手段としての抵抗をスイッチを介して選択的に並列接続される抵抗を設けることによって可変抵抗回路を構成する。上記スイッチを前記のような比較用発振回路の出力、及び分周回路の出力と、自身の発振出力によりスイッチ制御することにより、上記遅延要素を可変にするものである。つまり、スイッチとしてのＭＯＳＦＥＴがオン状態のときには、抵抗値が小さくされて遅延時間が短くなって発振周波数を高くするように作用し、スイッチとしてのＭＯＳＦＥＴがオフ状態のときには、抵抗値が大きくなって遅延時間が長くなって発振周波数を低くするように作用する。
【００４８】
上記のように３つの可変遅延回路のそれぞれの遅延時間が、非同期でしかもそれぞれの遅延時間の変化量が異なるようにすることにより、発振回路の発振出力の比較的大きな変動幅を持って複雑に変動するものとなる。このような発振回路を前記図１０の発振回路１及び２、あるいは発振回路１又は２のいずれか一方に適用することにより、不規則性を持った乱数を発生させることができる。
【００４９】
図１３には、上記図１１に設けられる不安定発振回路の他の一実施例の回路図が示されている。この発振回路は、基本的にはリングオシレータにより構成される。つまり、ＣＭＯＳインバータ回路の出力に抵抗と容量（キャパシタ）とからなる信号遅延要素を奇数個、同図では５個をリング状態に接続して発振回路を構成する。そして、そのうちの１つの遅延手段としての抵抗をスイッチを介して選択的に並列接続される抵抗を設けることによって可変抵抗回路を構成する。上記スイッチを前記のような自身の発振出力によりスイッチ制御することにより、不安定な発振動作を行わせることができる。同図の発振回路は、それ自身の発振出力を利用して不安定な発振出力を得るものであるので、前記図１０の実施例における比較用発振回路として用いるようにするものであってもよい。
【００５０】
図１４には、図１０の発振回路１、２の他の一実施例のブロック図が示されている。この実施例でも、ＰＬＬ（フェーズ・ロックド・ループ）回路により発振回路が構成される。この実施例では、ＰＬＬ回路のローパスフィルタの時定数を極端に小さくすることにより、位相比較出力ＵＰとＤＯＷＮに対応して大きく変化する制御電圧を形成する。これにより、電圧制御型発振回路が発振周波数が大きく変化して出力信号の周波数に大きな揺らぎを発生させることができる。
【００５１】
図１５には、図１０の出力調整回路の一実施例の構成図が示されている。図１０のレジスタ８０５においては、シフトレジスタの素子プロセスのバラツキによって論理しきい値電圧がハイレベル側又はロウレベル側にシフトしてしまう結果、前記のように発振回路１の発振出力と、それと非同期の発振回路２の発振出力に基づいて形成されたクロックを用いたとしても、特定のビットパターンの発生頻度が高くなってしまう場合が考えられる。
【００５２】
発振回路出力調整回路は、かかる特定のビットパターンが発生した場合の調整を行うよう作用する。この実施例では、多入力ＥＯＲ（排他的論理和）回路が用いられる。多入力ＥＯＲ回路は、複数ビットからなる入力信号のうち、論理１の数が奇数個ならば論理１に、それ以外なら論理０のような出力信号を形成する。これにより、特定のビットパターンの頻度が高くなっても、上記のような論理処理によって、不規則データに変換することができる。
【００５３】
出力調整回路は、上記のような多入力ＥＯＲの他に、全ビット０又は全ビット１のような単純なビットパターンを検出して、それを変更するようにするものであれば何であっても良い。例えば、生成されたビットパターンに１つ前に発生されたビットパターンを加算又は減算させたり、その加算又は減算に当たり、桁をシフトさせたり、反転させたりすることにより、複雑なビットパターンの発生を行うようにするものであってもよい。
【００５４】
図１６には、この発明に係る乱数発生回路の他の一実施例のブロック図が示されている。この実施例では、互いに非同期で発振動作を行う２つの発振回路２７０１と２７０２を用い、一方の発振回路２７０１の発振出力を２値変換動作を行うフリップフロップ２７０３の入力端子ＩＮに供給する。他方の発振回路２７０２で形成された発振出力は、分周回路２７０５、２７０６及び２７０７によりそれぞれ順次に分周して、３通りの分周信号が形成される。上記発振出力と、上記各分周出力と合わせて４通りのクロックを形成し、セレクタ２７０８を介して１つの選択して上記フリップフロップ２７０３のクロック端子ＣＫに供給する。
【００５５】
フリップフロップ２７０３は、上記クロック端子ＣＫに供給されたクロックの立ち上がりエッジ又は立ち下がりエッジにより、入力端子ＩＮに入力された発振出力をハイレベル／ロウレベルを判定して、出力端子ＯＵＴから論理１又は論理０の２値信号を出力させ、それを乱数格納レジスタに格納させる。クロック端子ＣＫに供給されるクロックの周期が上記のように変化するために、乱数生成速度の変更が可能になる。このような乱数速度の変更は、主として前記暗号用演算回路に設けられた機能であり、ユーザーが上記乱数速度を指定できるようにするものであるが、このような乱数発生回路を流用する場合、前記統計的な手法による電流変化の観測を実質的に無効にして暗号処理の内容や暗号鍵の推定を不能にするためにも有益である。
【００５６】
特に制限されないが、上記セレクタ２７０８を乱数格納レジスタ２７０４に格納された１つ前の乱数を用いて、いずれか１を選択するようにする。これにより、上記発振回路２７０１と２７０２とを単純に非同期で発振させる場合に比べて、フリップフロップ２７０３で発生させるビットパターンを種々に設定することができ、再現性の無い乱数を発生させるようにしてもよい。
【００５７】
図１７には、この発明に係る乱数発生回路の他の一実施例のブロック図が示されている。この実施例では、図１６に示したような分周回路とセレクタに代えて、カウンタ２７４５と設定レジスタ２７４６及びカンウタ／設定レジスタの比較器２７４７を用いて、フリップフロップ２７４３のクロック端子ＣＫに入力されるクロックの周波数（周期）を変化させるものである。比較器２７４７は、設定レジスタ２７４６に設定された設定値とカウンタ２８４５の計数値を比較し、両者が一致したならクロックパルスを発生させる。つまり、設定レジスタ２７４６に設定された設定値に対応して、発振回路２７４２の発振出力を分周させたパルスを形成することができる。
【００５８】
この場合でも、設定レジスタ２７４６に供給される設定値を単純に乱数を発生させる速度制御に用いるものの他、前記のように乱数格納レジスタに発生された１つ前の乱数を設定することにより、乱数発生速度そのものをランダムにすることもできる。
【００５９】
図１８には、この発明に係る半導体集積回路装置の一実施例の要部ブロック図が示されている。この実施例では、偽電流生成部２８０５には互いに異なる２つの周波数信号を用いて、シフトレジスタ等により乱数を発生する乱数発生回路が含まれ、かつ、かかる乱数に従って前記のような不規則性の電流、あるいは何回かの同じ状態及び条件での信号処理動作に対して再現性の無い電流を発生させる偽電流発生回路が設けられる。
【００６０】
この実施例では、上記２つの周波数信号のうち、データとしての周波数信号を形成する発振回路２８０４は、発振回路制御回路によりその発振状態と発振停止状態とに制御される。ＣＰＵ２８０１は、バスライン２８０２を介して発振回路制御回路２８０６に発振状態か発振停止状態かのコマンドを入力する。ＣＰＵ２８０１が発振状態を指示するコマンドを発振回路制御回路に入力した場合、発振回路制御回路２８０６は、上記コマンドに対応して発振回路２８０４を発振状態にする。発振回路２８０４が発振状態にされると、前記のような乱数が生成されて半導体集積回路装置の電源端子には前記のような乱数に従った偽電流が含まれるようになる。
【００６１】
上記ＣＰＵ２８０１が発振停止状態を指示するコマンドを発振回路制御回路に入力した場合、発振回路制御回路２８０６は、上記コマンドに対応して発振回路２８０４を発振停止状態にする。発振回路２８０４が発振停止状態にされると、前記のような乱数の発生が停止される。これにより、半導体集積回路装置の電源端子には前記のような偽電流が除去される。あるいは、一定の乱数に従った一定の電流が流れるだけとなり、実質的に偽電流が除去されたと等価になる。上記ＣＰＵは、そのソフトウェアの中に上記発振回路２８０４の動作状態と停止状態とに適宜に切り替える。したがって、多数回にわたるマイクロコンピュータの動作を統計的に解析する場合においては、上記偽電流を生成しない場合も上記偽電流が生成された場合とのが組み合わされることによって、相対的にみると偽電流を生成したと等価となるものである。
【００６２】
図１９には、この発明に係る半導体集積回路装置の他の一実施例の要部ブロック図が示されている。この実施例では、前記同様に発振回路制御回路がＣＰＵからのコマンドによって、乱数生成器内部発振回路の動作状態と停止状態とが指示される。乱数生成器内部発振回路は、それが動作状態にされると発振信号を乱数生成レジスタに供給して偽信号ジェネレータ制御回路の動作時間を指示する乱数を発生させる。
【００６３】
上記偽電流生成部では、上記乱数生成器内部発振回路で形成された周波数信号と、タイミングジェネレータからのクロック信号により発生された乱数により電流値が指定される偽電流を生成する。この偽電流の発生時間は、上記乱数生成レジスタで指定されるものであるので、乱数に対応した偽電流が含まれる時間と、それが含まれない時間割合が時間の経過とともに変化するものとなる。したがって、多数回にわたるマイクロコンピュータの動作を統計的に解析する場合において、上記偽電流を生成しない場合も上記偽電流が生成された場合との時間割合が複雑に組み合わされることによって、相対的にみると偽電流を変化幅をいっそう広くできるものとなる。
【００６４】
図２０には、この発明に係る半導体集積回路装置の他の一実施例の要部ブロック図が示されている。一般に１チップマイクロコンピュータには、スリープ（ＳＬＥＥＰ）モードが設けられる。このスリープモードでは、内部回路の動作が停止状態にされて、前記のようなマイクロコンピュータの動作の統計的な解析が行われることはない。このようなスリープモードあるいは低消費電力モードでは、偽電流生成部の動作を停止状態にして、低消費電力化を図るようにするものである。つまり、ＳＬＥＥＰ信号がハイレベルのスリープモードになると、発振回路と偽電流生成部の動作を停止させて消費電流を削減する。
【００６５】
図２１には、この発明に係る半導体集積回路装置の更に他の一実施例の要部ブロック図が示されている。この実施例では、プログラムでのデータ参照領域の判定回路が付加される。図２１では、上記データ参照領域の例として、記憶装置１、記憶装置２及びレジスタ１とレジスタ２の４通りが用意されている。記憶装置１と２は、例えばＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ等の各記憶エリアのことであり、レジスタ１と２は、例えばＩ／Ｏポートや特定のレジスタのことである。
【００６６】
上記各データ参照エリアに一対一に対応して、偽電流生成部が設けられる。つまり、記憶装置１用タイミングジェネレータ３２０６に対しては、偽電流生成部３２０７が設けられ、記憶装置２用タイミングジェネレータ３２０８に対しては、偽電流生成部３２０９が設けられ、レジスタ１用タイミングジェネレータ３２１０に対しては、偽電流生成部３２１１が設けられ、レジスタ２用タイミングジェネレータ３２１２に対しては、偽電流生成部３２１３が設けられる。
【００６７】
領域判定回路３２０４は、ＣＰＵ３２０１が出力するアドレス情報等をバスライン３２０３を介して取り込む。割り込み制御回路３２０２は、割り込み動作によって動作領域判定回路３２０４の動作を有効／無効とする。動作領域判定回路が有効とされたなら、バスライン上のアドレスを監視して、記憶装置１、２又はレジスタ１、２のいずれかに該当するアドレスが指定されなら、それぞれに対応した偽電流生成回部を動作させる。
【００６８】
例えば、記憶装置１がＲＡＭで、記憶装置２がＥＥＰＲＯＭに割り当てられ、レジスタ１がＩ／Ｏポート１に、レジスタ２がＩ／Ｏポートに割り当てられた場合、ＣＰＵ３２０１がＲＡＭをアクセスしているときには、記憶装置１用タイミングジェネータ３２０６で形成されたクロックと、発振回路３２０５で形成された発振出力とを用いて乱数を発生させて、偽電流生成部３２０７により偽電流を発生させる。ＣＰＵ３２０１がＥＥＰＲＯＭをアクセスしているときには、記憶装置２用タイミングジェネータ３２０８で形成されたクロックと、上記発振回路３２０５で形成された発振出力とを用いて乱数を発生させて、偽電流生成部３２０９により偽電流を発生させる。
【００６９】
同様にＣＰＵ３２０１がＩ／Ｏポート１を用いてデータの入出力を行うときには、レジスタ１用タイミングジェネータ３２１０で形成されたクロックと、発振回路３２０５で形成された発振出力とを用いて乱数を発生させて、偽電流生成部３２１１により偽電流を発生させる。ＣＰＵ３２０１がＩ／Ｏポート２を用いてデータの入出力を行うときには、レジスタ２用タイミングジェネータ３２１２で形成されたクロックと、発振回路３２０５で形成された発振出力をとを用いて乱数を発生させて、偽電流生成部３２１３により偽電流を発生させる。
【００７０】
以上のように、ＣＰＵ３２０１がアクセスしているアドレス空間毎に偽電流生成部そのものが切り替えられるので、偽電流生成部そのものが前記のように不規則電流を形成していることに加え、偽電流生成部そのものも切り替えることによって、不規則電流の組み合わせをいっそう複雑にすることができる。
【００７１】
図２２には、この発明に係る半導体集積回路装置の更に他の一実施例の要部ブロック図が示されている。この実施例では、ＣＰＵが発生するアドレス及びＣＰＵが授受するデータを前記乱数の代わりに利用する。つまり、ＣＰＵが形成するアドレスに対応して偽電流値が異なるようにされる。偽電流ジェネレータ制御回路は、ＣＰＵ等からのコマンドによって前記のように動作が有効／無効にされる。偽電流ジェネレータ入力生成回路は、偽電流ジェネレータ制御回路から動作が有効にされると、バスライン上のアドレス信号を取り込む、それを乱数と見做してタイミングジェネータのクロックに同期して偽電流を形成する。このとき、同じアドレスでも、タイミングジェネレータでのタイミングとの関係で電流波形として見た場合には、異なる偽電流と同等の効果を発揮させることができる。
【００７２】
ＩＣカード用チップ等のような１チップマイクロコンピュータにおいては、外部のクロックに同期して、ある決まった一定のタイミングでプログラムを実行する。また、通常のプログラムを実行する場合、毎回、命令の実行サイクル数は固定しており、その結果電流波形も固定している。
【００７３】
前記の統計的な電流解析による暗号処理の内容や暗号鍵を推定する手法は、上記のような１チップマイクロコンピュータの動作の特徴を利用するものである。つまり、ＩＣカードへの入力データを変化させて、毎回、同じ動作をさせた場合、特定のタイミングではいつも同じ命令を実行している。したがって、入力データに依存した消費電流波形の特徴がある場合、その電流波形を同じ時間軸上で比較することによって、その特徴を検出することが比較的簡単にできると考えられる。さらに、暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形の依存性がある場合、このデータ依存性を統計処理によって累積させることにより顕在化させ、セキュリティ情報を不正入手されてしまうことになる。
【００７４】
本願発明者においては、機密保護の強化を実現したＩＣカードと半導体集積回路装置の実現のために、前記のような偽電流を発生させることに代え、あるいはそれと共にランダムな信号を発生する装置を利用して、暗号処理の手順あるいはタイミングを変更することを考えた。このようにすることにより、毎回、暗号処理の手順やタイミングが変わるので、時間軸でみた場合の消費電流波形が変化する。特定の暗号処理を行うタイミングが変化することになり、電流波形を上記のように時間軸上で比較することによってデータ依存性の解析を困難に、言い換えると実質的に不可能にすることができる。
【００７５】
図２３には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の一実施例の概略ブロック図が示されている。同図の各回路ブロックは、前記図２と同様に公知の半導体集積回路の製造技術により、特に制限されないが、単結晶シリコンのような１個の半導体基板上において形成される。
【００７６】
この発明に係るＩＣカード用チップ４０１の構成は、前記同様に中央処理装置（ＣＰＵ）４１３、ＲＯＭ(Read Only Memory)４１０やＲＡＭ(Random Access Memory)４１１、ＥＥＰＲＯＭ(Electrical Erasable Programmable Read Only Memory）４１２などの記憶装置、入出力ポート（Ｉ／Ｏポート）４１４などと、本発明によって追加された乱数発生器４０２及びタイミング生成回路４０６からなる。
【００７７】
前記図２のように、タイミング生成回路４０６には、図示しないが外部端子から供給されるクロック信号を受け、ＣＰＵ４１３等の内部回路の動作に必要なクロック信号を形成するクロック生成回路が含まれる。また、前記暗号用演算回路（ＲＮＧモジュール）を搭載した場合、それに必要な乱数を上記乱数発生器４０２で形成したものを併用するものであってもよい。例えば、乱数発生器４０２は、前記図６〜図１４等のうち乱数生成に関連する部分のものを用いることができる。
【００７８】
この実施例では、乱数発生器４０２は、乱数つまりランダムな信号を発生させる。タイミング生成回路４０６は、大まかに説明すると上記発生された乱数によりインターバルを可変にするタイマを構成して、ＣＰＵの割り込み処理をランダムに挿入することによってタイミングを変更する。インターバル生成回路４０３は、上記乱数を受け取り保持している。アンダーフロー判定回路４０５は、カウンタ４０７の出力が零のときにはセレクタ４０８をインターバル生成回路４０３側に接続し、上記乱数がカウンタ４０７の初期値としてセット（ロード）する。カウンタ４０７に上記乱数に対応した初期値がセットされると、アンダーフロー判定回路４０５がそれを検出してセレクタ４０８をデクリメンタ４０４側に切り替える。これにより、カウンタ出力がデクリメンタ４０４に入力されて、−１の演算動作が行われて、上記セレクタ４０８を通してカウンタ４０７に入力されることにより、−１ずつのダウンカウント動作が行われる。
【００７９】
アンダーフロー判定回路４０５は、上記ダウンカウント動作によってカウンタ４０７の出力が零になったことを検出すると、ＣＰＵ４１３に対して割り込み要求信号４０９を発生させるとともに、セレクタ４０８を切り替えてカウンタ４０７にインターバル生成回路４０３に入力された乱数を初期値としてリロードする。このリロードされた初期値によりカウンタ４０７の出力が零でなくなるため、アンダーフロー判定回路４０５はセレクタ４０８をデクリメンタ４０４に切り替えて再び前記のようなダウンカウント動作を行う。
【００８０】
以上のような動作の繰り返しにより、ＣＰＵ４１３には、タイミング生成回路４０６からランダムなタイミングでの割り込み要求４０９が入力されて、その都度本来のデータ処理が中断されて、上記割り込み要求に対応した別のデータ処理が行われる。この割り込みによるデータ処理は、前記のように電流波形を上記のように時間軸上で変化させることを目的とするので、本来のデータ処理動作には悪影響を与えない適当なデータ処理、例えばＲＡＭ４１１、ＥＥＰＲＯＭ等の読み出し動作等が行われる。
【００８１】
図２４には、この発明に係るＩＣカード用チップの動作の一例を説明するためのタイミング図が示されている。乱数発生器で形成された乱数５０１（乱数Ａ）が初期値５０２としてカウンタにロードされて、前記のようにダウンカウント動作が行われてカウント値が−１ずつの計数動作に対応して小さくなる。同図には、このようなダウン計数動作によるカウント値５０４の変化を右下がりの直線により表している。
【００８２】
上記のようなダウン計数動作中では、ＩＣカード用チップでは、暗号処理５０７等の本来のデータ処理を行っている。上記カウント値５０４が零になると、割り込み要求５０５が発生されるので、上記暗号処理５０７が中断されて、それに代わって割り込み処理５０８が実行される。この割り込み要求と同時に乱数発生器では乱数５０１が上記とは異なる乱数Ｂを形成しており、初期値５０３としてカウンタにロードされて、前記のようにダウンカウント動作が行われる。上記一定の割り込み動作が終了すると、上記中断された暗号処理５０７が再び実行される。そして、上記カウント値５０４が零になると、再び割り込み要求が発生される。
【００８３】
上記のような割り込み要求がなされるインターバル５０６が、前記乱数発生器で形成された乱数５０１によってランダムに、言い換えるならば、不規則あるいは再現性が無いように変化するものとなる。このようにＩＣカード用チップの本来のデータ処理とは無関係な割り込み処理がランダムに挿入されることによって、毎回、暗号処理の手順やタイミングが変わり時間軸でみた場合の消費電流波形が変化することになる。これにより、特定の暗号処理を行うタイミングが変化することになり、電流波形を上記のように時間軸上で比較することによってデータ依存性の解析を実質的に不可能にすることができる。
【００８４】
図２５には、この発明に係るＩＣカード用チップの動作の一例を説明するための波形図が示されている。同図（Ａ）には、この発明の理解を容易にするために、通常のＩＣカード用チップでの動作波形が比較のために示され、同図（Ｂ）に、この発明に係るＩＣカード用チップの波形図が示さている。
【００８５】
同図（Ａ）では、１回目（１st tracing) と２回目の電源電流Ｉ１とＩ２は、バスＢｕｓに対して同じ信号が伝えられて、同じ回路が動作するので同様な波形（Ｉ１＝Ｉ２）になるものである。このようにある決まった一定のタイミングでプログラムを実行し、毎回、命令の実行サイクル数は固定しており、その結果電流波形も上記のように同一になるものである。
【００８６】
同図（Ｂ）に示すように、ランダムな割り込み処理が挿入された場合には、１回目と２回目とで仮に同じ、暗号処理等を行った場合でも、その都度割り込みによるダミールーチン（dummy routine)が実行されるタイミングが異なり、それに対応して１回目の電流Ｉ１と２回目の電流Ｉ２とでは、その電流波形が異なる（Ｉ１≠Ｉ２）ものとなってしまう。この結果、本願発明に係るＩＣカード等では暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性など存在しなくなり、前記のように電流波形の解析による暗号鍵の解読等を徒労にしてしまうことができる。
【００８７】
図２６には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の他の一実施例の概略ブロック図が示されている。この実施例では、乱数発生器４０２に代えて乱数設定レジスタ４１５が設けられる。乱数設定レジスタ４１５には、ＣＰＵ４１３による乱数発生プログラムにより発生された乱数がロードされる。ＣＰＵ４１３は、特に制限されないが、割り込み要求に対応してＲＯＭ４１０に内蔵された乱数発生プログラムを実行して、掛け算や加算等の乱数発生処理を行って生成された乱数を乱数設定レジスタ４１５にロードする処理を行う。
【００８８】
タイミング生成回路４０６において、インターバル生成回路４０３に上記生成された乱数をロードさせることにより、前記同様にランダムなインターバルでの割り込み要求が発生され、その都度上記プログラムによって乱数を形成し、本来のデータ処理に戻るようにするものである。このため、ＩＣカードをリーダライタに接続した場合、それを受けてＣＰＵ４１３はまず乱数生成プログラムを実行するようにすればよい。この構成では、ソフトウェア的に乱数を発生させるので、回路の簡素化を図ることができる。
【００８９】
図２７には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の他の一実施例の概略ブロック図が示されている。この実施例では、乱数発生器４０２に代えて発振器４１６が設けられる。この発振器４１６は、素子の温度変化や電源電圧の変化に対応して素子特性が変化することを利用したリングオシレータや、自己の発振信号により時定数が変化させられる前記図１２や図１３のようなリングオシレータあるいは図１１、図１４のようにＰＬＬ回路を利用して不安定な発振動作を行うようにした発振回路を用いるとよい。
【００９０】
この実施例では、上記の発振器４１６の発振周波数の変動に対応してカウンタのクロック周期が変化し、同じ計数値でもアンダーフロー判定回路４０５がオールゼロを判定する周期（インターバル）が異なるようになって、前記同様にランダムな割り込み要求が行われるようになる。
【００９１】
この実施例では、監視用レジスタ４１７が付加されている。これにより、ランダムなタイミング挿入が正常に機能しているかどうかをＣＰＵ４１３のプログラムから監視できる。割り込み要求４０９によって、監視用レジスタ４１７の中のフリップフロップＦ／Ｆがセットされる。監視用レジスタ４１７は、データバスを介してＣＰＵ４１３からリードすることができる。以上に説明した監視手段は、ＩＣカード用チップ（１チップマイクロコンピュータ）に対する物理的な破壊を用いた不正情報入手に対抗するプログラムを作成するのが容易になるという点で重要な意味を持つものである。
【００９２】
図２８には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に他の一実施例の概略ブロック図が示されている。この実施例では、乱数発生器４０２とタイミング生成回路４０６とで形成されたランダムな信号を利用して、ＣＰＵ４１３に１以上の命令からなる疑似的処理を挿入し、タイミングを変更するものである。
【００９３】
タイミング生成回路４０６は、乱数発生器４０２を利用してランダムな命令挿入タイミングを供給する。ＣＰＵ４１３は、アドレスバスとデータバスを介して、ＲＯＭ４１０からの命令をフェッチし、その命令を実行する。フェッチした命令は、命令レジスタ４０１４から命令変更回路４００４を経由して、命令デコーダ４００８に送られる。命令デコーダ４００８からの信号を受けて、制御回路４００９は、演算器４０１３やその他の回路を制御して、命令の実行を制御する。
【００９４】
通常は、命令レジスタ４０１４からの命令は、命令変更回路４００４において、変更されることなく、命令デコーダ４００８に送られる。しかし、命令挿入タイミングが要求されていると、命令変更回路４００４は命令をノーオペレーション命令（ＮＯＰ命令）に変更する。さらにこの時、この図には示していないがプログラムカウンタ４０１２の更新停止信号を出力する。この更新停止信号は、命令実行に伴うプログラムカウンタ４０１２の更新を停止することを指示する。これは、上記命令変更回路４００４によって挿入されるＮＯＰ命令によって、プログラムカウンタ４０１２の変更が余分に行われないようにするためである。
【００９５】
図２９には、図２８のＩＣカード用チップの動作の一例を説明するためのタイミング図である。同図には、命令挿入タイミングが要求されていない通常動作の場合のタイミング図が示されている。ＣＰＵは、アドレスバスとデータバスを介して、ＲＯＭからの命令をフェッチしてその命令を実行する。つまり、フェッチした命令は、命令レジスタから命令変更回路を経由して、命令デコーダに送られて命令実行がなされる。つまり、ＲＯＭからの命令フェッチからその実行までがＡ−Ｂ−Ｃ−Ｄ−Ｅ−Ｆのように順次に行われる。
【００９６】
図３０には、図２８のＩＣカード用チップの動作の他の一例を説明するためのタイミング図である。同図には、命令挿入タイミングが要求された場合のタイミング図が示されている。つまり、命令Ｂの命令実行を行うときに命令挿入タイミング１４０７が発生すると、このとき命令Ｂが変更を受けてＮＯＰ命令１４０６が実行される。ＮＯＰ命令１４０６の実行時には、再び命令Ｂのフェッチサイクル１４０２が行なわれる。このように図３０では、命令挿入タイミング１４０７によって通常の暗号処理に悪影響を及ぼさない命令挿入が行われて、タイミングが変更されるものである。
【００９７】
図３１には、図２８のＩＣカード用チップの更に他の動作の一例を説明するためのタイミング図である。同図には、命令挿入タイミングが要求されていない通常動作の場合のタイミング図が示されている。ＣＰＵは、アドレスバスとデータバスを介して、ＲＯＭからの命令をフェッチしてその命令を実行する。つまり、フェッチした命令は、命令レジスタから命令変更回路を経由して、命令デコーダに送られて命令実行がなされる。つまり、ＲＯＭからの命令フェッチからその実行までがＡ−Ｂ−Ｃ−Ｄ−Ｅ−Ｆのように順次に行われる。このタイミング図は、次に説明する図３２との比較のためものものである。
【００９８】
図３２には、図２８のＩＣカード用チップの動作の更に他の一例を説明するためのタイミング図である。通常は前記図３１のように命令実行を行うＩＣカード用チップにおいて、命令挿入タイミングの要求によって次のような命令実行が変更される。例えば、フェッチされたデータバス上の命令Ｂが、命令レジスタ１７０５に設定されたときに命令挿入タイミング１７０８の要求があった場合、このとき命令Ｂが変更を受けて、ＮＯＰ命令でなく、現在のプログラムカウンタへの分岐命令ＢＲＡＢとする点が異なる。
【００９９】
上記のように現在のプログラムカウンタへの分岐命令ＢＲＡＢを実行するようにした場合には、ＮＯＰ命令を実行した場合のようにプログラムカウンタの変更を停止する必要がない。なぜなら、挿入した命令ＢＲＡＢは、現在のＰＣへの分岐命令なので、この命令を実行することによってプログラムカウンタの値は、正しく更新されるからである。上記命令ＢＲＡＢの実行時には、再び命令Ｂのフェッチサイクル１７０２が行なわれる。
【０１００】
上記命令の変更がランダムに行われることの結果、前記図２５（Ｂ）に示すように１回目と２回目とで仮に同じ、暗号処理等を行った場合でも、その都度命令変更が実行されるタイミングが異なり、それに対応して１回目の電流Ｉ１と２回目の電流Ｉ２とでは、その電流波形が異なる（Ｉ１≠Ｉ２）ものとすることができる。この結果、前記同様に本願発明に係るＩＣカード等では暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性など存在しなくなり、前記のように電流波形の解析による暗号鍵の解読等を徒労にしてしまうことができる。
【０１０１】
この出願に係る発明思想では、時間軸でみた場合の消費電流波形を不規則に、いわば再現性が無いように変化させることである。このような時間軸での消費電流を変化させる手段として、前記のように無効サイクルを挿入することに代え、あるいはそれとともにクロック自体の周波数にランダムな揺らぎを与えることによっても同様に時間軸でみた場合の消費電流を変化させることができる。
【０１０２】
ＩＣカード用チップ等の１チップのマイクロコンピュータでは、外部のクロックに同期して、ある決まった一定のタイミングでプログラムを実行する。また、通常のプログラムを実行する場合、毎回、命令の実行サイクル数は固定しており、その結果電流波形も固定するものである。そこで、外部のクロックとの関係で内部クロックの位相を時間軸でみた場合に変化させるようにすれば、特定の暗号処理を行うタイミングが微妙に変化することになり、電流波形を上記のように時間軸上で比較することによってデータ依存性の解析を実質的に不可能にすることができる。
【０１０３】
図３３には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に他の一実施例の概略ブロック図が示されている。この発明に係るＩＣカード用チップの構成は、前記同様にＣＰＵ４１３、ＲＯＭ４１０やＲＡＭ４１１、ＥＥＰＲＯＭ４１２などの記憶装置、入出力ポート（Ｉ／Ｏポート）４１４などと、本発明によって追加された乱数発生回路４０２、制御レジスタ４２１及びクロック生成回路４１８からなる。
【０１０４】
上記クロック生成回路４１８は、１チップマイクロコンピュータ外部から供給される外部クロックＣＬＫを入力として、その周波数を変動させて、マイクロコンピュータの内部クロック４２０を形成する。上記クロック生成回路４１８において周波数を変動させるか否かは、周波数ジッタイネーブル信号４２２によって制御可能である。この周波数ジッタイネーブル信号４２２は、ＣＰＵ４１３によって制御レジスタ４２１に設定することによってプログラムから制御できる。本発明のランダムタイミングのＯＮ／ＯＦＦを制御可能にする方法は、本実施例に限らず本発明のすべてに応用可能である。例えば、ＩＣカードがリーダライタと通信を行なう際に、同期を取る必要がある場合などの時に、本発明のランダムタイミング機能をＯＦＦさせることが可能となる。
【０１０５】
クロック生成回路４１８は、乱数発生回路４０２で形成された乱数を用いて、上記内部クロック信号４２０の周波数を変動させるものである。このために、乱数発生回路４０２が必要になるが、前記暗号用演算回路（ＲＮＧモジュール）を搭載した場合、それに必要な乱数を上記乱数発生器４０２で形成したものを併用するものであってもよい。例えば、乱数発生器４０２は、前記図６〜図１４等のうち乱数生成に関連する部分のものを用いることができる。
【０１０６】
図３４には、図３３のＩＣカード用チップ（半導体集積回路装置）に搭載されるクロック生成回路の一実施例のブロック図が示されている。この実施例では位相比較器４１１０、ローパスフィルタ４１１１、ＶＣＯ（電圧制御型発振回路）４１１２及び分周回路４１１３からなるつＰＬＬ回路が利用される。上記ＶＣＯ４１１２の制御電圧を保持するキャパシタＣ０に対して、周波数ジックイネーブル信号によりスイッチ制御されるＭＯＳＦＥＴＱを介してキャパシタＣ１〜Ｃｎを接続する。これらのキャパシタＣ１〜Ｃｎの他端には、前記乱数発生回路で形成された乱数が入力される。
【０１０７】
上記キャパシタＣ１〜Ｃｎは、乱数に対応したロウレベル又はハイレベルの信号が入力されるので、それぞれに対応して上記キャパシタＣ０との間で電荷分散を生じしめて制御電圧を変化させる。これにより、ＶＣＯで形成される発振信号の周波数が変化して、それを分周して形成されたクロック信号の周期が変動することとなる。このように、ランダムに動作クロックの周期を変動させることにより、暗号処理等での電流波形を上記のように時間軸上で比較することによる解析を実質的に不可能にすることができる。上記周波数ジッタイネーブルは、周波数を変動させるか否かを制御する信号であり、それがロウレベルにされると上記ＭＯＳＦＥＴＱがオフ状態となって、上記のような乱数による制御電圧に変動を生じさせなくできる。
【０１０８】
図３５には、図３３のＩＣカード用チップ（半導体集積回路装置）に搭載されるクロック生成回路の他の一実施例のブロック図が示されている。この実施例では、それぞれ分周比が異なる分周回路４１１４、４１１５及び４１１６と、切り替え同期回路４１１７と、クロック切り替え回路４１１８及びセレクタ４１１９が用いられる。クロック切り替え回路４１１８は、クロック分周イネーブル信号により動作状態にされ、乱数に従ってセレクタ４１１９を制御して上記３つの分周出力のうち１つを選択して出力させる。
【０１０９】
切り替え同期回路４１１７は、上記分周比が１／２、１／４及び１／８のように異なる場合、その切り替えに際して現在出力中の波形を監視し、その終了タイミングを検出してクロック切り替え回路にセクレタ４１１９の切り替えを指示する。これにより、マイクロコンピュータクロックが連続性をもって、言い換えるならば、ハザードなどのノイズを発生させることなくその周期の切り替えが行われる。このように、ランダムに動作クロックの分周比を可変にすることにより、データ処理のタイミングを変更することより、暗号処理等での電流波形を上記のように時間軸上で比較することによる解析を実質的に不可能にすることができる。上記クロック分周イネーブルは、周波数を分周比により変動させるか否かを制御する信号であり、選択的に乱数による分周比の切り替えを停止させることができる。
【０１１０】
図３６には、図３３のＩＣカード用チップ（半導体集積回路装置）に搭載されるクロック生成回路の更に他の一実施例のブロック図が示されている。この実施例では、クロック遅延量生成回路４１０２と切り替え同期回路４１２１及びクロック遅延量切り替え回路４１２２が用いられる。クロック遅延量切り替え回路４１２２は、クロック遅延イネーブル信号により動作状態にされ、乱数に従ってクロック遅延量生成回路を制御して外部から供給されるクロック信号ＣＬＫの遅延量を変化させて出力させる。
【０１１１】
クロック遅延量生成回路は、インバータ回路ＩＶとその出力に設けられた抵抗Ｒ１とキャパシタＣからなる遅延回路のうち、上記抵抗Ｒ１に抵抗Ｒ２がスイッチＭＯＳＦＥＴＱを介して選択的に並列接続される。このような可変遅延回路が複数段直列接続され、各段のスイッチが前記乱数に対応したスイッチ制御信号Ｓ１〜Ｓ３でスイッチ制御される。切り替え同期回路４１２１は、入力クロック信号ＣＬＫを監視し、その変化タイミングを検出してクロック遅延量切り替え回路４１２２に乱数に対応したスイッチ制御信号Ｓ１〜Ｓ３の変化を指示する。これにより、入力されたクロック信号ＣＬＫに対してマイクロコンピュータクロックは同じ周波数であるが、その遅延量、つまりマイクロコンピュータクロックの位相が乱数に対応して変化させられる。
【０１１２】
図３７には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に他の一実施例の概略ブロック図が示されている。この発明に係るＩＣカード用チップの構成は、前記同様にＣＰＵ４１３、ＲＯＭ４１０やＲＡＭ４１１、ＥＥＰＲＯＭ４１２などの記憶装置、入出力ポート（Ｉ／Ｏポート）４１４などと、本発明によって追加された乱数発生回路４０２、タイミング生成回路４０６とバス権要求回路４１９、バス権調停回路４２０が用いられる。なお、ＣＰＵ４１３以外にＤＭＡＣ（直接メモリアクセス制御回路）等のようにバスマスタとなるような周辺回路が存在するものでは、バス権要求回路４１９、バス権調停回路４２０が存在するので、それをそのまま利用できる。
【０１１３】
この実施例ではＣＰＵ４１３にバス権を開放させることにより、データ処理のタイミングを変更するものである。タイミング生成回路４０６は、乱数発生器４０２からの乱数を受けてバス権要求回路４１９にバスサイクル挿入タイミングを指示する。このタイミングにおいて、バス権要求回路４１９は、バス権調停回路４２０に対してバス権要求信号を出力する。バス権調停回路４２０は、バスサイクルの切れ目において、バス権ＣＰＵ許可信号をネゲートし、バス権許可信号をアサートする。ＣＰＵ４１３は、上記バス権ＣＰＵ許可信号のネゲートによりバス権を放棄し、アドレスバスやリード信号の出力を止める。
【０１１４】
上記バス権要求回路は、バス権許可信号を受けてアドレスバスやリード信号を出力しメモリをアクセスする。このようなバスサイクル挿入タイミングがアサートされた場合、メモリアクセスサイクルを本来の暗号処理と無関係に挿入することが可能となり、前記同様に本願発明に係るＩＣカード等では暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性など存在しなくなり、前記のように電流波形の解析による暗号鍵の解読等を徒労にしてしまうことができる。
【０１１５】
図３８には、図３７のＩＣカード用チップの動作の一例を説明するためのタイミング図が示されている。バス権要求信号２５０２がアサートされると、バス権ＣＰＵ許可信号２５０４がネゲートされバス権許可信号２５０６がアサートされる。バス権ＣＰＵ許可信号２５０４のネゲートを受けて、ＣＰＵバスサイクルは中断され、バス権要求回路のバスサイクル２５１１が行われる。上記のバス権要求信号がアサートされるタイミングが、前記のように乱数に対応してランダムに変化することとなり、そのインターバルが不規則となる。このため、前記同様に暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性をなくして前記のように電流波形の解析による暗号鍵の解読等を実質的に不可能にすることができる。
【０１１６】
図３９には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に他の一実施例の概略ブロック図が示されている。この発明に係るＩＣカード用チップの構成は、前記同様にＣＰＵ４１３、ＲＯＭ４１０やＲＡＭ４１１、ＥＥＰＲＯＭ４１２などの記憶装置、入出力ポート（Ｉ／Ｏポート）４１４などと、本発明によって追加された乱数発生回路４０２、タイミング生成回路４０６とウェイト要求回路４２１用いられる。
【０１１７】
この実施例ではＣＰＵ４１３のバスサイクルにランダムにウェイトサイクルを挿入させることにより、データ処理のタイミングを変更するものである。タイミング生成回路４０６は、乱数発生器４０２からの乱数を受けてウェイト要求回路４２１にウェイト要求信号の挿入タイミングを指示する。このタイミングにおいて、ウェイト要求回路４２１は、ＣＰＵ４１３に対してバスサイクルに対するウェイト要求信号をアサートする。ＣＰＵ４１３は、ウェイト要求信号アサートされた場合、通常のバスサイクルより長いバスサイクルを行う。
【０１１８】
上記のウェイト要求信号がアサートされるタイミングが、前記のように乱数に対応してランダムに変化することとなり、そのインターバルが不規則となる。このため、前記同様に暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性をなくして前記のように電流波形の解析による暗号鍵の解読等を実質的に不可能にすることができる。
【０１１９】
図４０には、図３９のＩＣカード用チップの動作の一例を説明するためのタイミング図が示されている。タイミング生成回路４０６よりランダムに発生されるウェイト挿入タイミング信号を受けると、ウェイト要求回路４２１はＣＰＵ４１３に対してウェイト要求信号をアサートする。ＣＰＵ４１３は、ウェイト要求信号がアサートされると、そのバスサイクルを通常のバスサイクル２７０４や２７０５より長いバスサイクル２７０６を実行する。
【０１２０】
上記ウェイト挿入タイミング信号が前記のように乱数発生器４０２で形成された乱数に対応してランダムに発生し、そのインターバルが不規則となる。このため、前記同様に暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形に格別な依存性がなくなってしまう結果、前記のように電流波形の解析による暗号鍵の解読等を実質的に不可能にすることができる。
【０１２１】
図４１には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に一実施例の概略ブロック図が示されている。この発明に係るＩＣカード用チップの構成は、前記図２３に示したように乱数発生器４０２で発生された乱数によりインターバルを可変にするタイマを構成して、ＣＰＵ４１３の割り込み処理をランダムに挿入することによってタイミングを変更する。これに加えて、偽電流発生回路４２２も搭載し、上記乱数発生器４０２で発生され乱数により偽電流を流すようにするものである。
【０１２２】
つまり、前記図２等を代表とする実施例のように偽電流を発生させるものと、前記図２３の実施例のように割り込みにより暗号処理の手順やタイミングを変化させるものとを組み合わせることにより、暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形の依存性をなくし、前記のように電流波形の解析による暗号鍵の解読等をいっそう困難にすることができるものとなる。
【０１２３】
図４２には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に一実施例の概略ブロック図が示されている。この発明に係るＩＣカード用チップの構成は、前記図２８に示したように乱数発生器４０２で発生された乱数によりインターバルを可変にするタイマを構成して、ＣＰＵ４１３の実行する命令が変更を受けてＮＯＰ命令や現在のプログラムカウンタへの分岐命令に差し替えて実行する。このように通常の暗号処理に悪影響を及ぼさない命令挿入が行われて、タイミングが変更されるものである。これに加えて、偽電流発生回路４２２も搭載し、上記乱数発生器４０２で発生され乱数により偽電流を流すようにするものである。
【０１２４】
つまり、前記図２等を代表とする実施例のように偽電流を発生させるものと、前記図２８の実施例のように割り込みにより暗号処理の命令を変化させるものとを組み合わせることにより、暗号鍵などのセキュリティ情報や暗号処理のアルゴリズム上のデータに対する消費電流波形の依存性をなくし、前記のように電流波形の解析による暗号鍵の解読等をいっそう困難にすることができるものとなる。
【０１２５】
上記のように内部回路動作に無関係で不規則性を持つ偽電流を発生させ、その再現性を損なうようにしたものと、データ処理の手順の時間軸上での動作をランダムに変化させて消費電流波形を変化させるものとは、前記図４１及び図４２の他に、前記実施例の中から適宜に選択して組み合わせるものとすればよい。
【０１２６】
図４３には、この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に他の動作の一例を説明するためのタイミング図が示されている。乱数発生器で形成された乱数５１１（乱数Ａ）が初期値５１２としてカウンタにロードされて、ダウンカウント動作が行われてカウント値が−１ずつの計数動作に対応して小さくなる。同図には、このようなダウン計数動作によるカウント値５１４の変化を右下がりの直線により表わしている。
【０１２７】
同図のようなダウン計数動作中では、ＩＣカード用チップは、処理Ａ５１８、処理Ｂ５１９、処理Ｃ５２０等の並列的に実行可能な複数のデータ処理を、時分割的に行っている。上記カウント値５１４が零になると、上記実行中の処理Ａ５１８が中断されて、代わってタスクスケジュール処理が実行される。このタスクスケジュール処理と同時に乱数発生器では乱数５１１が上記とは異なる乱数Ｂを形成しており、初期値５１３としてカウンタにロードされて、前記のようにダウンカウント動作が行われる。上記一定の処理の後、上記タスクスケジュール処理は動作を終了し、異なる処理Ｂ５１９について、実行が再開される。そして、上記カウント値５１４が零になると、再びタスクスケジュール処理が動作される。
【０１２８】
上記のような処理を実行するインターバル５１６が、前記乱数発生器で形成された乱数５１１によって不規則に変化するものとなる。このようにｌＣカード用チップにおいて行うべき処理を複数の処理に分割し、夫々の実行の順序やタイミングが変わり、時間軸で見た場合の消費電流波形が変化することになる。これにより特定の暗号処理を含む処理を行うタイミングが変化することになり、電流波形を上記のように時間軸上で比較することによつてデータ依存性の解析を困難にすることが出来る。この場合には、前記のような疑似的処理に代えて並列処理のインターバルの切り替えを利用できるからデータ処理を効率よく行うことができる。
【０１２９】
上記の実施例から得られる作用効果は、下記の通りである。すなわち、
（１）  外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データの入出力動作が行われるＩＣカードにおいて、上記リードライト装置との間でのデータの入出力動作に伴う内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を設けることにより、同一状態と条件で何回かのアクセスしても、不規則性あるいは再現性の無い偽電流が含まれるために電流の統計的な解析による不正な暗号鍵等の解析を不可能にできるから、ＩＣカードの機密保護の強化を実現することができるという効果が得られる。
【０１３０】
（２）  上記偽電流発生回路を上記リードライト装置から供給されるクロック信号に対応して、上記不規則性の電流値にされた電流を発生させることにより、効率的でしかも効果的に偽電流を発生させることができるという効果が得られる。
【０１３１】
（３）  乱数発生回路を設け、上記不規則性の電流値を上記乱数発生回路により形成された複数ビットからなる乱数により設定することにより、不規則性あるいは再現性の無い偽電流を形成することができるという効果が得られる。
【０１３２】
（４）  上記乱数発生回路を暗号用演算処理動作にも併用することにより、回路の簡素化を図ることができるという効果が得られる。
【０１３３】
（５）  上記乱数発生回路は、非制御発振回路とその発振出力を受ける第１のシフトレジスタとを用い、上記第１のシフトレジスタのシフト動作を行うクロック信号を上記発振出力と非同期とすることにより、簡単な構成で乱数を発生させることができるという効果が得られる。
【０１３４】
（６）  上記乱数発生回路は、ＰＬＬ回路とＰＬＬ回路のＶＣＯ出力を受けるシフトレジスタとを用い、上記ＰＬＬ回路の基準周波数信号を非制御発振回路の発振出力とし、かつ、上記ＶＣＯの制御信号を形成するローパスフィルタの容量値を上記非制御発振出力と上記ＶＣＯの分周出力に基づいて変化されることより、周波数変動の大きな周波数信号をシフトレジスタに入力してクロックによりサンプリングすることにより効果的に乱数を発生させることができるという効果が得られる。
【０１３５】
（７）  上記乱数発生回路における乱数の生成速度を可変とすることにより、効果的に乱数を発生させることができるとともに、暗号用演算動作でのユーザーの要求に柔軟に適用できるという効果が得られる。
【０１３６】
（８）  上記非制御発振回路をリングオシレータとし、各インバータ回路の出力に設けられる時定数回路を第１の抵抗と、上記第１の抵抗とスイッチを介して並列接続される第２の抵抗とし、上記スイッチを非定期的にオン状態／オフ状態に切り替えるようにすることにより、大きな周波数変動幅でその変化をランダムに行わせることができるから、効果的に乱数を発生させることができるという効果が得られる。
【０１３７】
（９）  多入力の排他的論理和回路からなる出力調整回路を設け、上記第１のシフトレジスタの出力信号を上記出力調整回路を介して第２のシフトレジスタに供給して乱数を生成することにより、より確実に乱数を効果的に発生させることができるという効果が得られる。
【０１３８】
（１０）  ＲＯＭ及びそれに書き込まれたプログラムに従ってデータ処理動作を行う中央処理回路を含み、上記不規則性の電流値を上記プログラム含まれる乱数を発生させる演算処理により形成された複数ビットからなる乱数により設定することにより、回路の簡素化を図ることができるという効果が得られる。
【０１３９】
（１１）  上記偽電流発生回路を異なる容量値にされた複数の容量素子、上記複数の容量素子に対してチャージアップ電流を流す複数のスイッチ素子とで構成し、上記複数からなるスイッチ素子を上記乱数の各ビットに対応させてスイッチ制御して上記不規則性の電流値の電流を発生させることにより、低消費電力でクロック等のタイミングに同期した偽電流を発生させることができるという効果が得られる。
【０１４０】
（１２）  データ処理装置の動作しているプログラムの領域、又はプログラムで参照するデータの領域に対応して偽電流を生成するタイミングを決めるタイミングジェネレータと、上記プログラムの領域、又はプログラムで参照するデータの領域にそれぞれ対応して偽電流を生成する複数個の電流生成部を設けることにより、より複雑な組み合わせでの偽電流を発生させることができるという効果が得られる。
【０１４１】
（１３）  外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われるＩＣカードにおいて、上記リードライト装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路と、上記データ処理手順に対して不規則的に無効サイクルを挿入する手段と設けることにより、電流そのものと時間軸上での電流を変化させられるから、極めて複雑な組み合わせでの偽電流を発生させることができ、ＩＣカードの機密保護のいっそうの強化を実現することができるという効果が得られる。
【０１４２】
（１４）  更に乱数発生回路を設け、上記不規則性の電流値を上記乱数発生回路により形成された複数ビットからなる乱数により設定し、上記データ処理手順に対して不規則的に無効サイクルを挿入する手段に上記乱数により設定されたタイマーからの割り込み処理を用いることにより、回路の共通化による簡素化が実現できるという効果が得られる。
【０１４３】
（１５）  更に乱数発生回路を設け、上記不規則性の電流値は、上記乱数発生回路により形成された複数ビットからなる乱数により設定し、上記データ処理手順に対して不規則的に無効サイクルを挿入する手段に上記乱数により設定されたタイミング信号によりデータ処理装置で行われる命令の強制変更を用いることにより、回路の共通化による簡素化が実現できるという効果が得られる。
【０１４４】
（１６）  外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われるＩＣカードにおいて、上記リードライト装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路と、上記データ処理手順のタイミングを不規則的に変化させる手段とを設けることにより、電流そのものと時間軸上での電流を変化させられるから、極めて複雑な組み合わせでの偽電流を発生させることができ、ＩＣカードの機密保護のいっそうの強化を実現することができるという効果が得られる。
【０１４５】
（１７）  上記データ処理手順のタイミングを不規則的に変化させる手段として、データ処理装置の動作クロック信号の周期を不規則的に変化させることにより、簡単な構成により極めて複雑な組み合わせでの再現性のない消費電流の電流波形を実現できるという効果が得られる。
【０１４６】
（１３）  データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われる半導体集積回路装置において、外部装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を設けることにより、同一状態と条件で何回かのアクセスしても、不規則性あるいは再現性の無い偽電流が含まれるために電流の統計的な解析による不正な暗号鍵等の解析を不可能にできるから、半導体集積回路装置の機密保護の強化を実現することができるという効果が得られる。
【０１４７】
（１９）  上記偽電流発生回路を外部装置から供給れるクロック信号に対応して、上記不規則性の電流値にされた電流を発生させることにより、効率的でしかも効果的に偽電流を発生させることができるという効果が得られる。
【０１４８】
（２０）  上記半導体集積回路装置に乱数発生回路を設け、上記不規則性の電流値を上記乱数発生回路により形成された複数ビットからなる乱数により設定することにより、不規則性あるいは再現性の無い偽電流を形成することができるという効果が得られる。
【０１４９】
（２１）  上記半導体集積回路装置に更に上記データ処理手順に対して不規則的に無効サイクルを挿入する手段を設けることにより、電流そのものと時間軸上での電流を変化させられるから、極めて複雑な組み合わせでの偽電流を発生させることができ、半導体集積回路装置の機密保護のいっそうの強化を実現することができるという効果が得られる。
【０１５０】
（２２）  上記データ処理手順に対して不規則的に無効サイクルを挿入する手段として、上記乱数により設定されたタイマーからの割り込み処理により実施することにより、簡単な構成でしかも安定的に半導体集積回路装置の機密保護のいっそうの強化を実現することができるという効果が得られる。
【０１５１】
以上本発明者よりなされた発明を実施例に基づき具体的に説明したが、本願発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、ＩＣカードには、１つの半導体集積回路装置を搭載するもの他、複数の半導体集積回路装置が搭載されるものであってもよい。この場合、偽電流発生回路はいずれか１つの半導体集積回路装置に搭載されればよい。偽電流発生のための乱数発生回路は、前記非同期の発振信号を用いるものの他、例えばランダムノイズを増幅した信号をクロックによりサンプリングするもの等何であってもよい。
【０１５２】
半導体集積回路装置は、データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含んで記データ処理手順に従ってデータの入出力動作が行われるものであれば何であってもよい。例えば、前記のようなＩＣカード用チップの他に、ゲーム用等の１チップマイクロコンピュータ等のように機密保護の必要な各種半導体集積回路装置に広く適用できるものである。この発明は、機密保護を必要とする各種ＩＣカード及び半導体集積回路装置に広く利用できる。
【０１５３】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。すなわち、外部端子がリードライト装置と電気的に接続されることによって動作電圧が供給され、かつ、データの入出力動作が行われるＩＣカードにおいて、上記リードライト装置との間でのデータの入出力動作に伴う内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を設けることにより、同一状態と条件で何回かのアクセスしても、不規則性あるいは再現性の無い偽電流が含まれるために電流の統計的な解析による不正な暗号鍵等の解析を不可能にできるから、ＩＣカードの機密保護の強化を実現することができる。
【０１５４】
データ処理装置とかかるデータ処理装置によるデータ処理手順が書き込まれたＲＯＭを含み、上記データ処理手順に従ってデータの入出力動作が行われる半導体集積回路装置において、外部装置との間でのデータの入出力動作に伴う上記データ処理装置及びＲＯＭを含む内部回路動作と無関係で、かつ不規則性の電流値にされた電流を発生して上記動作電圧が供給される電源端子に流す偽電流発生回路を内蔵させることにより、同一状態と条件で何回かのアクセスしても、不規則性あるいは再現性の無い偽電流が含まれるために電流の統計的な解析による不正な暗号鍵等の解析を不可能にできるから、半導体集積回路装置の機密保護の強化を実現することができる。
【図面の簡単な説明】
【図１】この発明が適用されるＩＣカードの一実施例を示す外観図である。
【図２】この発明に係るＩＣカードに搭載されるＩＣカード用チップの一実施例を示す概略ブロック図である。
【図３】図２に示したＩＣカード用チップの等価回路図である。
【図４】この発明を説明するための電流波形図である。
【図５】この発明に係る偽電流発生回路の一実施例を示す概略構成図である。
【図６】この発明に係る偽電流発生回路の一実施例を示す具体的回路図である。
【図７】この発明に係る偽電流発生回路の他の一実施例を示す概略構成図である。
【図８】図２の暗号演算回路のインターフェイス部の一実施例を示すブロック図である。
【図９】ＣＰＵによる乱数入手動作を説明するための一実施例のフローチャート図である。
【図１０】図２の暗号演算回路の一実施例を示す全体構成図である。
【図１１】図１０の発振回路１、２の一実施例を示すブロック図である。
【図１２】図１１に設けられる不安定発振回路の一実施例を示す回路図である。
【図１３】図１１に設けられる不安定発振回路の他の一実施例を示す回路図である。
【図１４】図１０の発振回路１、２の他の一実施例を示すブロック図である。
【図１５】図１０の出力調整回路の一実施例を示す構成図である。
【図１６】この発明に係る乱数発生回路の他の一実施例を示すブロック図である。
【図１７】この発明に係る乱数発生回路の他の一実施例を示すブロック図である。
【図１８】この発明に係る半導体集積回路装置の一実施例を示す要部ブロック図である。
【図１９】この発明に係る半導体集積回路装置の他の一実施例を示す要部ブロック図である。
【図２０】この発明に係る半導体集積回路装置の他の一実施例を示す要部ブロック図である。
【図２１】この発明に係る半導体集積回路装置の更に他の一実施例を示す要部ブロック図である。
【図２２】この発明に係る半導体集積回路装置の更に他の一実施例を示す要部ブロック図である。
【図２３】この発明に係るＩＣカードに搭載されるＩＣカード用チップの一実施例を示す概略ブロック図である。
【図２４】この発明に係るＩＣカード用チップの動作の一例を説明するためのタイミング図である。
【図２５】この発明に係るＩＣカード用チップの動作の一例を説明するための波形図である。
【図２６】この発明に係るＩＣカードに搭載されるＩＣカード用チップの他の一実施例を示す概略ブロック図である。
【図２７】この発明に係るＩＣカードに搭載されるＩＣカード用チップの他の一実施例を示す概略ブロック図である。
【図２８】この発明に係るＩＣカードに搭載されるＩＣカード用チップの更に他の一実施例を示す概略ブロック図である。
【図２９】図２８のＩＣカード用チップの動作の一例を説明するためのタイミング図である。
【図３０】図２８のＩＣカード用チップの動作の一例を説明するためのタイミング図である。
【図３１】図２８のＩＣカード用チップの動作の更に他の一例を説明するためのタイミング図である。
【図３２】図２８のＩＣカード用チップの動作の更に他の一例を説明するためのタイミング図である。
【図３３】この発明に係るＩＣカードに搭載されるＩＣカード用チップの更に他の一実施例を示す概略ブロック図である。
【図３４】図３３のＩＣカード用チップに搭載されるクロック生成回路の一実施例を示すブロック図である。
【図３５】図３３のＩＣカード用チップに搭載されるクロック生成回路の他の一実施例を示すブロック図である。
【図３６】図３３のＩＣカード用チップに搭載されるクロック生成回路の更に他の一実施例を示すブロック図である。
【図３７】この発明に係るＩＣカードに搭載されるＩＣカード用チップの更に他の一実施例を示す概略ブロック図である。
【図３８】図３７のＩＣカード用チップの動作の一例を説明するためのタイミング図である。
【図３９】この発明に係るＩＣカードに搭載されるＩＣカード用チップの更に他の一実施例を示す概略ブロック図である。
【図４０】図３９のＩＣカード用チップの動作の一例を説明するためのタイミング図である。
【図４１】この発明に係るＩＣカードに搭載されるＩＣカード用チップの更に一実施例を示す概略ブロック図である。
【図４２】この発明に係るＩＣカードに搭載されるＩＣカード用チップの更に一実施例を示す概略ブロック図である。
【図４３】この発明に係るＩＣカードに搭載されるＩＣカード用チップ（半導体集積回路装置）の更に他の動作の一例を説明するためのタイミング図である。
【符号の説明】
２０１…中央処理装置（ＣＰＵ）、２０２…Ｉ／Ｏポート、２０３…アドレスバス、２０４…データバス、２０５…クロック生成回路、２０６…ＲＯＭ、２０７…ＲＡＭ、２０８…ＥＥＰＲＯＭ、２０９…暗号用演算回路、２１０…偽電流発生回路、
４０１…ＩＣカード用チップ、４０２…乱数発生回路、４０３…インターバル生成回路、４０４…デクリメンタ、４０５…アンダーフロー判定回路、４０６…タイミング生成回路、４０７…カウンタ（レジスタ）、４０８…セレクタ、４０９…割り込み要求、４１０…ＲＯＭ、４１１…ＲＡＭ、４１２…ＥＥＰＲＯＭ、４１３…ＣＰＵ、４１４…Ｉ／Ｏ、４１５…乱数設定レジスタ、４１６…発振器、４００４…命令変更回路、４００８…命令デコーダ、４００９…制御回路、４０１１…加算器、４０１２…プログラムカウンタ、４０１３…演算器、４０１４…命令レジスタ、４１８…クロック生成回路、４１９…バス権要求回路、４２０…バス権調停回路、４２１…制御レジスタ、４２１…ウェイト要求回路。
【図１】
0003788881.tif 000002
【図２】
0003788881.tif 000003
【図３】
0003788881.tif 000004
【図４】
0003788881.tif 000005
【図５】
0003788881.tif 000006
【図６】
0003788881.tif 000007
【図７】
0003788881.tif 000008
【図８】
0003788881.tif 000009
【図９】
0003788881.tif 000010
【図１０】
0003788881.tif 000011
【図１１】
0003788881.tif 000012
【図１２】
0003788881.tif 000013
【図１３】
0003788881.tif 000014
【図１４】
0003788881.tif 000015
【図１５】
0003788881.tif 000016
【図１６】
0003788881.tif 000017
【図１７】
0003788881.tif 000018
【図１８】
0003788881.tif 000019
【図１９】
0003788881.tif 000020
【図２０】
0003788881.tif 000021
【図２１】
0003788881.tif 000022
【図２２】
0003788881.tif 000023
【図２３】
0003788881.tif 000024
【図２４】
0003788881.tif 000025
【図２５】
0003788881.tif 000026
【図２６】
0003788881.tif 000027
【図２７】
0003788881.tif 000028
【図２８】
0003788881.tif 000029
【図２９】
0003788881.tif 000030
【図３０】
0003788881.tif 000031
【図３１】
0003788881.tif 000032
【図３２】
0003788881.tif 000033
【図３３】
0003788881.tif 000034
【図３４】
0003788881.tif 000035
【図３５】
0003788881.tif 000036
【図３６】
0003788881.tif 000037
【図３７】
0003788881.tif 000038
【図３８】
0003788881.tif 000039
【図３９】
0003788881.tif 000040
【図４０】
0003788881.tif 000041
【図４１】
0003788881.tif 000042
【図４２】
0003788881.tif 000043
【図４３】
0003788881.tif 000044