(57)【特許請求の範囲】
【請求項１】
第１のデータ入力線及びデータ出力線と、
前記第１のデータ入力線から入力されるデータをクロック信号に同期して取り込み、該取り込んだデータを保持して前記第１のデータ出力線へ出力する第１のレジスタと、
第２のデータ入力線及びデータ出力線と、
前記第２のデータ入力線から入力されるデータを前記クロック信号に同期して取り込み、該取り込んだデータを保持して前記第２のデータ出力線へ出力する第２のレジスタと、
前記クロック信号に同期して前記第１のデータ入力線及びデータ出力線上のデータ値を監視し、両データ値が一致したとき所定の制御信号を発生して前記第２のレジスタに保持されるデータの値を反転させる監視回路と
を具備するレジスタ回路。
【請求項２】
前記第２のデータ出力線から出力されるデータを反転して前記第２のデータ入力線へ出力する反転素子をさらに具備し、前記監視回路は前記第１のデータ入力線及びデータ出力線上のデータ値が一致したとき前記制御信号を発生して前記第２のレジスタをライトイネーブル状態にすることにより、前記第２のレジスタに保持されるデータの値を反転させる請求項１記載のレジスタ回路。
【請求項３】
前記監視回路は、前記第１のデータ入力線及びデータ出力線上のデータに対して排他的論理和演算を行い、演算結果を前記制御信号として出力信号線へ出力する演算部と、前記出力信号線に接続され、前記演算結果を電荷として保持するキャパシタと、前記出力信号線に接続され、前記キャパシタを前記第１のデータ入力線及びデータ出力線のデータ遷移に伴う充放電によらず一定周期で充放電させる充放電回路とを具備する請求項１記載のレジスタ回路。
【請求項４】
前記監視回路は、
異なる電源電位を有する第１及び第２の電源線と、
前記第１の電源線と前記第２の電源線との間に挿入され、前記第１のデータ入力線及びデータ出力線上のデータを入力として排他的論理和演算を行い、演算結果を前記制御信号として出力信号線へ出力する複数のＭＯＳトランジスタを含む演算部と、
前記出力信号線と前記第２の電源線との間に挿入され、前記演算部の演算結果を電荷として保持するキャパシタと、
第１レベル及び第２レベルのいずれかの電位が選択的に与えられる第１及び第２の制御信号線と、
前記第１の電源線と前記出力信号線との間に接続され、前記第１の制御信号線の第１レベルの電位により導通状態、前記第１の制御信号線の第２レベルの電位により非導通状態とされる第１のＭＯＳスイッチと、
前記出力信号線と前記演算部との間に接続され、前記第１の制御信号線の第１レベルの電位により非導通状態、前記第１の制御信号線の第２レベルの電位により導通状態とされる第２のＭＯＳスイッチと、
前記キャパシタに対して並列に接続され、前記第２の制御信号線の第１レベルの電位により導通状態、前記第２の制御信号線の第２レベルの電位により非導通状態とされる第３のＭＯＳスイッチと、
前記キャパシタを前記第１のデータ入力線及びデータ出力線上のデータ遷移に伴う充放電によらず一定周期で充放電させるために、前記第１及び第２の制御信号線のそれぞれの電位の前記第１レベルの期間が互いに重複しないように前記第１及び第２の制御信号線の電位を周期的に前記第１レベルと第２レベルとの間で遷移させる制御回路とを具備する請求項１記載のレジスタ回路。
【請求項５】
請求項１乃至４のいずれか１項に記載の少なくとも一つのレジスタ回路と組み合わせ回路を含む暗号演算回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、レジスタ回路及び該レジスタ回路を用いて電力解析攻撃に対して耐性を持たせた暗号演算回路に関する。
【０００２】
【従来の技術】
暗号演算回路に納められている秘密情報を取り出す攻撃の一つとして、電力解析攻撃（ＤＰＡ: Differential Power Analysis）が知られている。ＤＰＡとは、暗号演算回路の演算処理中における消費電力の変動を観測し、その消費電力パターンから演算処理の内容を推測することにより、暗号演算回路に納められている秘密情報を取り出すことをいう。より具体的には、ＤＰＡでは複数の入力データを暗号演算回路に入力して、それぞれの場合の消費電力の変動を示すグラフ（消費電力グラフ）を作成する。入力データに対する消費電力グラフの特徴から、暗号演算回路内部にある秘密情報の推測を行う。推測した秘密情報と消費電力グラフには相関があり、推定した値が正しい場合には大きな相関値が表れ、推定が間違っている場合には相関値は小さなものとなる。この原理より、ＤＰＡを用いて暗号演算回路内部の秘密情報を取り出すことができる。
【０００３】
消費電力グラフと秘密情報とが相関を持つ理由の一つは、ＣＭＯＳ（Complementary Metal-Oxide Semiconductor）の特徴に依存するところが大きい。ＣＭＯＳデバイスを用いて演算回路を製作した場合、ＣＭＯＳデバイスの特性から、信号線の電位が遷移するときに演算回路は大きな電力を消費する。このようなＣＭＯＳデバイスの特性のため、演算回路の内部において電位が遷移する信号線の数が入力データに依存して変動することにより、演算回路の消費電力が変動する。
【０００４】
より具体的には、例えば暗号演算回路内部においてある入力データｍ１を処理するときに電位が遷移する信号線の数と、他の入力データｍ２を処理するときに電位が遷移する信号線の数が異なる場合、入力データｍ１及び入力データｍ２をそれぞれ処理しているときの消費電力グラフＰＧ１及びＰＧ２に差が出る。この消費電力グラフＰＧ１，ＰＧ２の差が暗号演算回路内部に格納されている秘密情報と関係しているような場合、この暗号演算回路に対してＤＰＡを行うことにより、内部にある秘密情報を特定できてしまう。
【０００５】
特開２００１−２６８０７１には、ＤＰＡに対する耐性（耐タンパー性）を持たせるため、暗号演算回路に再コンフィグレーション可能な演算回路を用い、この演算回路を機能的に同一で内部動作が異なる回路に構成させるための複数のコンフィグレーションデータを保持し、これらのコンフィグレーションデータを選択的に演算回路に書き込んで回路構成の更新を行うことにより、消費電力パターンから内部の秘密情報を特定しにくくする技術が開示されている。
【０００６】
しかし、再コンフィグレーションが可能なＦＰＧＡ／ＰＬＤのような演算回路は、一般的にハードウェア規模が大きく、暗号演算回路のコストが高くなってしまう。また、コンフィグレーションデータによって暗号演算回路の回路構成を更新しても、演算回路内部の秘密情報に依存して消費電力パターンが変化することに変わりはない。従って、この暗号演算回路は、消費電力パターンの詳細な解析を重ねることで内部の秘密情報を特定することは不可能ではなく、耐タンパー性という面で必ずしも十分でない。
【０００７】
【発明が解決しようとする課題】
上述したように、入力データによる消費電力の変動が暗号演算回路内部の秘密情報及び入力データに相関があると、消費電力グラフを用いたＤＰＡによって暗号演算回路内部の秘密情報を取り出すことができてしまう。外部から物理的に破壊するなどの攻撃方法の場合、攻撃された痕跡が残るために攻撃を受けたということがすぐに分かるが、ＤＰＡのように消費電力から内部の秘密情報を特定されるような攻撃方法の場合、外見から攻撃を受けたかどうか判断は難しいため、セキュリティ面で大いに問題となる。
【０００８】
暗号演算回路は通常、演算を司る複数の論理素子による組み合わせ回路と、演算結果や状態を保持するレジスタ回路を用いて構成される。ここで、レジスタ回路は組み合わせ回路の演算結果や状態を入力データとして保持するために用いられる。レジスタ回路は、入力データや秘密情報により保持しているデータがローレベルとハイレベルとの間で遷移するときに、より多くの電力が消費される。
【０００９】
従って、暗号演算回路において入力データに関係して内部のレジスタの保持するデータの遷移数に偏りがある場合、演算回路の消費電力グラフにデータの遷移数による影響が表れるため、入力データ毎に消費電力グラフに特徴が現れるような場合には、入力データと秘密情報の依存関係を見つけることができ、ＤＰＡによって秘密情報を外部から求めることができてしまう。
【００１０】
本発明の目的は、内部状態の変化によらず消費電力が一定のレジスタ回路及び該レジスタ回路を用いた暗号演算回路を提供することにある。
【００１１】
【課題を解決するための手段】
上記の課題を解決するため、本発明に係るレジスタ回路は、入力データを保持するための本来のレジスタ、すなわち第１のデータ入力線から入力されるデータをクロック信号に同期して取り込み、該取り込んだデータを保持して第１のデータ出力線へ出力する第１のレジスタとは別に、入力データの保持には寄与しないダミーレジスタとしての第２のレジスタが設けられる。第２のレジスタは、第２のデータ入力線から入力されるデータをクロック信号に同期して取り込み、該取り込んだデータを保持して第２のデータ出力線へ出力する。さらに、クロック信号に同期して第１のデータ入力線及びデータ出力線上のデータ値を監視し、両データ値が一致したとき制御信号を発生する監視回路が設けられ、この制御信号によって第２のレジスタに保持されるデータの値が反転される。
【００１２】
より具体的には、例えば第２のデータ出力線から出力されるデータを反転して第２のデータ入力線へ出力する反転素子が設けられ、第１のデータ入力線及びデータ出力線上のデータ値が一致したとき監視回路から発生される制御信号により第２のレジスタがライトイネーブル状態とされることによって、第２のレジスタに保持されるデータの値が反転素子の出力に基づき反転される。
【００１３】
このように本発明に係るレジスタ回路は、クロック信号に同期して第１及び第２のレジスタの保持しているデータ値のいずれか一方が必ず反転することになるため、内部状態すなわち保持しているデータ値の遷移によらず消費電力が一定となる。従って、このレジスタ回路を暗号演算回路に用いて、組み合わせ回路の演算結果や状態を入力データとして保持する構成とした場合、消費電力の変化が外部で観測されにくくなり、ＤＰＡに対する耐性が向上する。
【００１４】
本発明に係る暗号演算回路は、上述のレジスタ回路と組み合わせ回路を含んで構成される。
【００１５】
他の観点によると、本発明に係る暗号演算回路は、暗号演算に関わる少なくとも一つの第１の論理素子と、暗号演算に関わらない少なくとも一つの第２の論理素子と、第２の論理素子を第１の論理素子に対して相補的に動作させる（例えば第２の論理素子の内部状態を第１の論理素子の内部状態に対して相補的に遷移させる）手段とを具備する。第１及び第２の論理素子は、それぞれの内部状態が遷移するときの消費電力がほぼ同一であることが望ましい。
【００１６】
【発明の実施形態】
以下、図面を参照して本発明の一実施形態を説明する。
図１は、暗号演算回路の一部の構成を示している。データ入力線１から入力されたデータはレジスタ回路２によって保持され、データ出力線３を介して組み合わせ回路４に入力される。組み合わせ回路４の演算結果は、データ出力線５を介してもう一つのレジスタ回路６へ入力される。
【００１７】
データ入力線１上のデータ値が遷移すると、クロック信号に同期して、レジスタ回路２に保持されるデータ値が遷移する。次のクロック信号においてデータ出力線３上のデータ値が遷移し、組み合せ回路４のデータ出力線５を経てレジスタ回路６に保持されるデータの値が遷移する。
【００１８】
このとき、レジスタ回路２及びレジスタ回路６の保持するデータ値の遷移において、入力データと秘密情報に関係して遷移数に偏りがある場合、その偏りの影響を外部から消費電力の変動という形で観測することが可能となる。入力データの値に依存して消費電力に変動がある場合、その消費電力グラフを基に秘密情報を取り出すことが可能となってしまう。
【００１９】
図２には、保持するデータ値の遷移数に秘密情報と入力データの影響がなくなるようにして、消費電力を一定とした本発明の一実施形態に係るレジスタ回路の構成を示す。このレジスタ回路においては、１ビットのデータを保持する主レジスタ（第１のレジスタ）１１に対応して、監視回路１２と１ビットのデータを保持するダミーレジスタ１３（第２のレジスタ）及びＮＯＴ素子１４が設けられている。
【００２０】
主レジスタ１１とダミーレジスタ１３は、例えば同一構成、すなわち内部状態（保持しているデータ値）が遷移するときの消費電力が同一であることが望ましい。本実施形態では、以下のように主レジスタ１１とダミーレジスタ１３を例えばクロック信号ＣＬＫに同期して相補的に動作させることによって、レジスタ回路の消費電力を一定に保持する。
【００２１】
データ入力線２１に入力されたデータは、クロック信号ＣＬＫに同期して主レジスタ１１に取り込まれ、主レジスタ１１によって保持される。主レジスタ１１に保持されているデータは、データ出力線２２へ出力される。
監視回路１２は、主レジスタ１１の入力端子と出力端子にそれぞれ接続されたデータ入力線２１と主レジスタデータ出力線２２上のデータ値を監視することよって、主レジスタ１１が保持しているデータ値の遷移の有無を判定する。すなわち、監視回路１２はデータ入力線２１とデータ出力線２２上のデータ値が一致していれば、主レジスタ１１が保持しているデータ値の遷移はなく、データ入力線２１とデータ出力線２２上のデータ値が不一致であれば、主レジスタ１１が保持しているデータ値が遷移したと判定する。
【００２２】
図３に、監視回路１２の一例を示す。この監視回路１２は、ＸＯＲ（排他的論理和）演算素子３０によって実現される。データ入力線２１上のデータ値Ｉ１とデータ出力線２２上のデータ値Ｉ２が不一致の場合には、ＸＯＲ演算素子３０の出力データ値Ｏは“１”となる。一方、データ値Ｉ１とデータ値Ｉ２が一致している場合には、ＸＯＲ演算素子３０の出力データ値Ｏは“０”となる。このようにしてデータ入力線２１及びデータ出力線２２上のデータ値Ｉ１，Ｉ２の不一致を検出することができる。
【００２３】
監視回路１２の出力端子は、ダミーレジスタ１３のライトイネーブル線２３に接続される。ダミーレジスタ１２のデータ出力線２４はＮＯＴ素子１４の入力端子に接続され、ＮＯＴ素子１４の出力端子はダミーレジスタ１２のデータ入力線２５に接続される。ダミーレジスタ１３では、主レジスタ１１に供給されるのと同一のクロック信号ＣＬＫに同期して、データ入力線２５上のデータ値、すなわちＮＯＴ素子１４の出力データ値を取り込んで保持する。
【００２４】
次に、図２に示したレジスタ回路の動作を説明する。
まず、主レジスタ１１の入力端子に接続されたデータ入力線２１と出力端子に接続されたデータ出力線２２上のデータ値が同じ場合、監視回路１２の出力信号が“０”となる。すなわち、ライトイネーブル線２３上のライトイネーブル信号が活性化される。ライトイネーブル信号が活性化されることによって、ダミーレジスタ１３はクロック信号ＣＬＫの立ち上がりタイミングでデータ入力線２５上のデータ値を取り込む。データ入力線２５上のデータ値は、ダミーレジスタ１３の出力端子に接続されたデータ出力線２４上のデータ値をＮＯＴ素子１４で反転した値であるため、ダミーレジスタ１３が保持するデータ値は反転する。このとき、主レジスタ１１のデータ入力線２１とデータ出力線２２上のデータ値が同じであるため、主レジスタ１１が保持しているデータは変化しない。
【００２５】
次に、主レジスタ１１のデータ入力線２１とデータ出力線２２上のデータ値が異なる場合には、監視回路１２の出力は“１”となる。すなわち、この場合はライトイネーブル線２３上のライトイネーブル信号が活性化されないため、ダミーレジスタ１３は元のデータ値を保持し続ける。一方、主レジスタ１１はクロック信号ＣＬＫの立ち上がりタイミングでデータ入力線２１上のデータ値を取り込むことにより、保持しているデータ値が反転し、データ出力線２２上のデータ値は遷移することとなる。
【００２６】
このように本実施形態のレジスタ回路では、主レジスタ１１に接続されている入力データ線２１とデータ出力線２２上のデータ値を監視回路１２によって監視し、これらのデータ値が一致したとき、クロック信号ＣＬＫに同期してＮＯＴ素子１４の出力データ値をダミーレジスタ１３に取り込むことにより、ダミーレジスタ１３に保持されているデータ値を反転させる。一方、入力データ線２１とデータ出力線２２上のデータ値が不一致のときは、主レジスタ１１が保持しているデータ値がクロック信号ＣＬＫに同期して反転するが、ダミーレジスタ１３の保持しているデータ値は反転せずに元の値を保つ。
【００２７】
このようにクロック信号ＣＬＫの立ち上がり毎に、主レジスタ１１とダミーレジスタ１２の保持しているデータ値のいずれか一方が必ず反転する。従って、本実施形態のレジスタ回路を図１に示したように暗号演算回路に適用した場合、演算中には組合せ回路の演算結果に関わらず、常に演算回路中のレジスタ回路のデータ値の遷移数を一定に保つことが可能となる。
【００２８】
すなわち、図１に示すような暗号演算回路内にある全てのレジスタ回路を図２のように構成することにより、入力データや秘密情報に依存することなく、保持しているデータ値の遷移が起こるレジスタ回路の総数（暗号演算回路内のレジスタ回路群のデータ値の遷移数）を常に一定に保つことが可能となる。この結果、入力データや秘密情報に依存せずに暗号演算回路の消費電力を一定にすることが可能となり、ＤＰＡに対して有効な耐性を有する暗号演算回路を実現することができる。
【００２９】
本実施形態においては、監視回路１２自体の消費電力も一定に保たれることがより望ましい。監視回路１２の消費電力の影響で、暗号演算回路内の内部状態と演算中の消費電力との間に相関が生じる可能性があるためである。以下、監視回路１２を定消費電力化する手法の一例について説明する。
【００３０】
図４は、監視回路１２として有効な図３に示すＸＯＲ演算素子３０の回路例を示している。高電位側の第１の電源線４０と、低電位側の第２の電源線であるグランド５０との間に、第１のＭＯＳスイッチであるｎＭＯＳトランジスタ４１と第２のＭＯＳスイッチであるｐＭＯＳトランジスタ４２を直列に介して論理演算部４５が接続される。
【００３１】
論理演算部４５は、２つのｎＭＯＳトランジスタ４６，４８の直列回路と２つのｐＭＯＳトランジスタ４７，４９の直列回路との並列回路により構成される。トランジスタ４６，４７のドレイン端子は、トランジスタ４２のソース端子に共通に接続される。トランジスタ４６，４７のソース端子は、トランジスタ４８，４９のドレイン端子にそれぞれ接続される。トランジスタ４８，４９のソース端子は、グランド５０に接続される。トランジスタ４６，４７のゲート端子は第１の入力信号線５３に共通に接続され、トランジスタ４８，４９のゲート端子は第２の入力信号線５４に共通に接続される。
【００３２】
論理演算部４５の論理演算結果は出力信号線５５に出力され、出力信号線５５とグランド５０との間に接続されたキャパシタ４４に論理演算結果が電荷として保持される。キャパシタ４４は、素子として形成されるか、出力信号線５５の寄生容量によって実現されるか、あるいは素子としてのキャパシタと寄生容量の合成容量が用いられる。
【００３３】
一方、トランジスタ４１及び４２のゲート端子は、第１の制御信号線である充電制御信号線５１に接続される。出力信号線５５は、トランジスタ４１とトランジスタ４２との接続点に接続される。出力信号線５５とグランド５０との間に、すなわちキャパシタ４４に対して並列に第３のＭＯＳスイッチであるｎＭＯＳトランジスタ４３が接続される。トランジスタ４３のゲート端子は、第２の制御信号線である放電制御信号線５２に接続される。トランジスタ４１，４２，４３、充電制御信号線５１及び放電制御信号線５２は充放電回路を形成し、この充放電回路によってキャパシタ４４の充放電を行う。
【００３４】
タイミング制御回路２６は、暗号演算回路全体を同期させるための同期信号であるクロック信号ＣＬＫに従って、以下に説明するような条件を満たすように充電制御信号線１１及び放電制御信号線１２の電位を制御する。
【００３５】
充電制御信号線５１は、キャパシタ４４を充電するのに必要な時間“Ｈ”レベルであり、かつ論理素子の出力信号線５５をライトイネーブル信号２３として入力とするダミーレジスタ１３のセットアップ時間と、入力信号線５３，５４の演算結果により出力信号線５５の電位が安定する期間を考慮し、クロック信号ＣＬＫの立ち上がりよりも前に“Ｌ”レベルに遷移するように、タイミング制御回路５６により制御される。
【００３６】
放電制御信号線５２は、キャパシタ４４の電荷を放電するのに必要な期間“Ｈ”レベルであり、かつ論理素子の出力信号５５を入力とする図示していないフリップフロップなどの記憶素子のホールド時間を満たした後、“Ｈ”レベルに遷移するように、タイミング制御回路５６により制御される。
【００３７】
さらにタイミング制御回路５６は、上記の充電制御信号線５１の“Ｈ”レベルの期間や“Ｌ”レベルへ遷移のタイミングと放電制御信号線５２の“Ｈ”レベルの期間や“Ｈ”レベルへの遷移のタイミングに加えて、充電制御信号線５１と放電制御信号線５２の“Ｈ”レベルの期間が重ならないように充電制御信号線５１と放電制御信号線５２の制御を行う。
【００３８】
ここで、図４と図２及び図３との対応関係を説明すると、入力信号線５１はデータ入力線２１に、入力信号線５２はデータ出力線２２にそれぞれ相当し、また出力信号線５５はライトイネーブル線２３に相当する。
【００３９】
次に、図５に示すタイムチャートを用いて本実施形態によるＸＯＲ演算素子の動作を説明する。図５は、クロック信号ＣＬＫ、充電制御信号線５１及び放電制御信号線５２の電位φ１，φ２、入力信号線５３，５４の電位Ｉ１，Ｉ２及び出力信号線５５の電位Ｖｏの遷移を表している。入力信号線５１，５２の電位Ｉ１，Ｉ２は、クロック信号ＣＬＫと同期して遷移するものとする。図５において、Ｔ１，Ｔ２，Ｔ３，Ｔ４，…はクロック信号ＣＬＫに従ってＸＯＲ演算素子が周期的に充放電動作を行う単位動作期間を示している。
【００４０】
［期間Ｔ１］まず、図５の期間Ｔ１に示されるように、最初に出力信号線５５に接続されているキャパシタ４４に充電するために、クロック信号ＣＬＫの立ち上がり時刻ｔ０において充電制御信号線５１の電位φ１をハイレベル（“Ｈ”レベル）とする。これによりトランジスタ４１は導通状態となり、電源線４０からトランジスタ４１を介してキャパシタ４４に電流が流れ、キャパシタ４４の充電が行われるため、出力信号線５５の電位Ｖｏは一旦“Ｈ”レベルとなる。
【００４１】
このキャパシタ４４への充電中に、もし充放電回路がキャパシタ４４から論理演算部４５へ電荷が通過させることが可能な状態になっているとすると、入力信号線５３，５４の電位によっては電源線４０とグランド５０との間が短絡する可能性がある。このような電源線４０とグランド５０間の短絡を防ぐため、本実施形態では充放電回路部においてトランジスタ４２を論理演算部４５側に挿入し、キャパシタ４４の充電中には、このトランジスタ４２を非導通状態とすることより、論理演算部４５へキャパシタ４４の電荷が流れないようにしている。
【００４２】
次に、時刻ｔ１においてキャパシタ４４に電荷が充電された後、充電制御信号線５１の電位φ１をローレベル（“Ｌ”レベル）とする。これによってトランジスタ４１は非導通状態となり、電源線４０から電流が流れ込まなくなる。一方、充電制御信号線５１の電位φ１が“Ｌ”レベルとなることによって、トランジスタ４２は導通状態となるから、このトランジスタ４２を介してキャパシタ４４の電荷を論理演算部４５に流すことができる。
【００４３】
論理演算部４５においては、入力信号線５３の電位Ｉ１に応じてｎＭＯＳトランジスタ４６及びｐＭＯＳトランジスタ４７のうち一方が導通状態、他方が非導通状態となる。同様に、入力信号線５４の電位Ｉ２に応じてｎＭＯＳトランジスタ４８及びｐＭＯＳトランジスタ４９のうち一方が導通状態、他方が非導通状態となる。二つのｎＭＯＳトランジスタ４６，４８の両方が導通状態、あるいは二つのｐＭＯＳトランジスタ４７，４９の両方が導通状態のとき、キャパシタ４４の電荷は論理演算部４５を通過してグランド５０に流れることが可能である。それ以外のとき、つまり二つのｎＭＯＳトランジスタ４６，４８のうちの一方が導通状態、他方が非導通状態で、かつ二つのｐＭＯＳトランジスタ４７，４９のうちの一方が導通状態、他方が非導通状態のときは、キャパシタ４４の電荷はグランド２０に流れ込むことはできない。
【００４４】
論理演算部４５が入力信号線５３，５４の電位Ｉ１，Ｉ２に従ってキャパシタ４４の電荷をグランド５０へ流すことが不可能な状態では、キャパシタ４４の電荷は保持されるために、出力信号線５５の電位Ｖｏが“Ｈ”レベルとなる。一方、論理演算部４５がキャパシタ４４の電荷をグランド５０へ流すことが可能な状態では、キャパシタ４４の電荷が論理演算部４５を通過してグランド５０に流れ込むことにより、出力信号線５５の電位Ｖｏは“Ｌ”レベルとなる。この後、クロック信号ＣＬＫが立ち上がった時刻ｔ２における出力信号線５５の電位ＶｏはＸＯＲ演算素子の出力値となる。
【００４５】
具体的に、図５の例では時刻ｔ１における入力信号線５３の電位Ｉ１は“Ｈ”レベル、入力信号線５４の電位Ｉ２は“Ｌ”レベルである。このとき、論理演算部４５においてはｎＭＯＳトランジスタ４６とｐＭＯＳトランジスタ４９が導通状態となり、ｎＭＯＳトランジスタ４８とｐＭＯＳトランジスタ４７は非導通状態である。従って、キャパシタ４４の電荷は論理演算部４５を通過することができないため、キャパシタ４４の電荷は保持され、時刻ｔ２でクロック信号ＣＬＫが立ち上がったときの出力信号線５５の電位Ｖｏは“Ｈ”レベルとなる。すなわち、Ｉ１＝“Ｈ”，Ｉ２＝“Ｌ”のときの論理演算結果はＶｏ＝“Ｈ”ということになり、ＸＯＲ演算素子の動作を満たす。
【００４６】
次に、上述のように時刻ｔ２でクロック信号ＣＬＫが立ち上がった後、時刻ｔ３において放電制御信号線５２の電位φ２が“Ｈ”レベルとされる。これによりｎＭＯＳトランジスタ４３が導通状態となり、キャパシタ４４の電荷はｎＭＯＳトランジスタ４３を通ってグランド５０に放電され、出力信号線５５の電位Ｖｏは“Ｌ”レベルとなる。
【００４７】
［期間Ｔ２］一方、図５の期間Ｔ２に示すように、クロック信号ＣＬＫの立ち下がり時刻でキャパシタ４４に充電が行われた後における入力信号線５３，５４の電位Ｉ１，Ｉ２がＩ１＝“Ｈ”，Ｉ２＝“Ｈ”のときは、ｎＭＯＳトランジスタ４６，４８が共に導通状態（ｐＭＯＳトランジスタ４７，４９は共に非導通状態）であるため、キャパシタ４４の電荷はｎＭＯＳトランジスタ４６，４８を通じてグランド５０に放電され、次にクロック信号ＣＬＫが立ち上がったときの出力信号線５５の電位Ｖｏは“Ｌ”レベルとなる。すなわち、Ｉ１＝“Ｈ”，Ｉ２＝“Ｈ”のときの論理演算結果はＶｏ＝“Ｌ”であり、ＸＯＲ演算素子の動作を満たす。
【００４８】
［期間Ｔ３］同様に、図５の期間Ｔ３に示すようにクロック信号ＣＬＫの立ち下がり時刻でキャパシタ４４に充電が行われた後における入力信号線５３，５４の電位Ｉ１，Ｉ２がＩ１＝“Ｌ”，Ｉ２＝“Ｌ”のときは、ｐＭＯＳトランジスタ４７，４９が共に導通状態（ｎＭＯＳトランジスタ４６，４８は共に非導通状態）であるため、キャパシタ４４の電荷はｐＭＯＳトランジスタ４７，４９を通じてグランド５０に放電され、次にクロック信号ＣＬＫが立ち上がったときの出力信号線５５の電位Ｖｏは、“Ｌ”レベルとなる。すなわち、Ｉ１＝“Ｈ”，Ｉ２＝“Ｈ”のときと同様に、Ｉ１＝“Ｌ”，Ｉ２＝“Ｌ”のときの論理演算結果はＶｏ＝“Ｌ”となり、ＸＯＲ演算素子の動作を満たす。
【００４９】
これらの場合も、次に放電制御信号線５２の電位φ２が“Ｈ”レベルとされ、ｎＭＯＳトランジスタ４３が導通状態となるが、キャパシタ４４の電荷は既に放電されているため、ｎＭＯＳトランジスタ４３が導通状態となっても、グランド５０に新たに放電されることはない。
【００５０】
［期間Ｔ４］次に、図５の期間Ｔ４に示すように、クロック信号ＣＬＫの立ち下がり時刻でキャパシタ１４に充電が行われた後における入力信号線５３，５４の電位Ｉ１，Ｉ２がＩ１＝“Ｌ”，Ｉ２＝“Ｈ”のときは、期間Ｔ１の場合とは逆に、ｎＭＯＳトランジスタ４６とｐＭＯＳトランジスタ４９が非導通状態、ｎＭＯＳトランジスタ４８とｐＭＯＳトランジスタ４７が導通状態となるが、この場合もキャパシタ４４の電荷は論理演算部４５を通過できず、キャパシタ４４の電荷は保持される。従って、次にクロック信号ＣＬＫが立ち上がったときの出力信号線５５の電位Ｖｏは“Ｈ”レベルとなる。すなわち、Ｉ１＝“Ｌ”，Ｉ２＝“Ｈ”のときの論理演算結果はＶｏ＝“Ｈ”となり、ＸＯＲ演算素子の動作を満たす。
【００５１】
次に、放電制御信号線５２の電位φ２が“Ｈ”レベルとされることによって、ｎＭＯＳトランジスタ４３が導通状態となり、キャパシタ４４の電荷はｎＭＯＳトランジスタ４３を通ってグランド５０に放電されるため、出力信号線５５の電位Ｖｏは“Ｌ”レベルとなる。
【００５２】
このようにＩ１＝“Ｈ”，Ｉ２＝“Ｌ”のとき（期間Ｔ１）及びＩ１＝“Ｌ”，Ｉ２＝“Ｈ”のとき（期間Ｔ４）の論理演算結果は、いずれもＶｏ＝“Ｈ”であり、Ｉ１＝“Ｈ”、Ｉ２＝“Ｈ”のとき（期間Ｔ２）及びＩ１＝“Ｌ”、Ｉ２＝“Ｌ”のとき（期間Ｔ３）の論理演算結果はいずれもＶｏ＝“Ｌ”となって、ＸＯＲ演算が可能となる。
【００５３】
以上説明したように、充電制御信号線５１及び放電制御信号線５２によるキャパシタ４４の充放電動作は、クロック信号ＣＬＫに同期して繰り返し行われる。すなわち、本実施形態のＸＯＲ演算素子では、充電制御信号線５１の電位φ１の立ち上がり時刻から放電制御信号線５２の電位φ２の立ち上がり時刻までの各期間（Ｔ１，Ｔ２，Ｔ３，Ｔ４，…）において、入力信号線５３，５４の電位Ｉ１，Ｉ２の遷移状態によらず、すなわちＩ１，Ｉ２によるキャパシタ４４の充放電を含めてキャパシタ４４が常に１回の充電と１回の放電を行うため、常に一定の電力を消費する。
このように図４に示したＸＯＲ演算素子は常に消費電力が一定であるため、図２に示した監視回路１２として有用である。すなわち、この監視回路１２を用いたレジスタ回路を暗号演算回路内の全てのレジスタ回路に適用した場合、暗号演算回路内の全てのレジスタ回路の消費電力が常に一定となり、レジスタ回路による暗号演算回路の消費電力の変動はなくなる。従って、暗号演算回路のＤＰＡに対する耐性向上に大きく寄与できる。
【００５４】
【発明の効果】
以上説明したように、本発明によれば消費電力が一定のレジスタ回路及び演算中に入力データと秘密情報に依存することなく、常にレジスタの保持しているデータ値の遷移による電力消費の偏りを持たず、消費電力一定のレジスタ回路及びＤＰＡに対して耐性を有する暗号演算回路を実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る暗号演算回路の構成を示すブロック図
【図２】本発明の一実施形態に係るレジスタ回路の構成を示すブロック図
【図３】図２における監視回路の一例を示すブロック図
【図４】図２における監視回路を低消費電力化した場合の具体的な構成を示す回路図
【図５】図４に示した監視回路の動作を示すタイミングチャート
【符号の説明】
１…データ入力線
２，６…レジスタ回路
４…組み合わせ回路
３，５…データ出力線
１１…主レジスタ（第１のレジスタ）
１２…監視回路
１３…ダミーレジスタ（第２のレジスタ）
１４…ＮＯＴ素子（反転素子）
２１…第１のデータ入力線
２２…第１のデータ出力線
２３…ライトイネーブル線
２４…第２のデータ出力線
２５…第１のデータ入力線
３０…ＸＯＲ（排他的論理和）演算素子
４０…電源線（第１の電源線）
４１…ｎＭＯＳトランジスタ（第１のＭＯＳスイッチ）
４２…ｐＭＯＳトランジスタ（第２のＭＯＳスイッチ）
４３…ｎＭＯＳトランジスタ（第３のＭＯＳスイッチ）
４４…キャパシタ
４５…論理演算部
４６，４８…ｎＭＯＳトランジスタ
４７，４９…ｐＭＯＳトランジスタ
５０…グランド（第２の電源線）
５１…充電制御信号線（第１の制御信号線）
５２…放電制御信号線（第２の制御信号線）
５３…第１の入力信号線
５４…第２の入力信号線
５５…出力信号線
５６…タイミング制御回路
【図１】
0003708910.tif 000002
【図２】
0003708910.tif 000003
【図３】
0003708910.tif 000004
【図４】
0003708910.tif 000005
【図５】
0003708910.tif 000006