説明

暗号演算装置

【課題】異常動作の検出にかかる検算処理を行うことなく、故障利用攻撃に対する耐性を向上させることが可能な暗号演算装置を提供する。
【解決手段】クロック信号に同期してデータの取り込みを行うレジスタに対し、有効符号データと無効符号データとを交互に入力するとともに、当該レジスタに入力されるデータ値の状態を監視し、有効符号データで安定したと判定する毎に当該有効符号データをレジスタが保持するようクロック信号を制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの暗号化/復号化を行う暗号演算装置に関する。
【背景技術】
【0002】
情報の暗号化や署名を行う技術として公開鍵暗号が用いられている。公開鍵暗号は、共通鍵暗号と比較して演算量が多いことが欠点であるが、鍵共有の問題がないため広く利用されており、RSA暗号、Rabin暗号、ElGamal暗号、楕円曲線暗号等様々な方法が提案されている。
【0003】
公開鍵暗号では、暗号化するための鍵と復号化するための鍵とが異なっており、暗号化に用いる鍵は公開され、復号化に用いる鍵は秘密に保持される。例えば、ユーザAがユーザBに秘匿したメッセージを送りたい場合、ユーザAはユーザBの公開鍵を用いてメッセージを暗号化し、暗号化したメッセージをユーザBに送信する。暗号化されたメッセージを受け取ったBは、公開鍵に対応する自分の秘密鍵を用いて暗号化されたメッセージを復号化することができる。
【0004】
また、ユーザAが自分の秘密鍵を用いてメッセージに署名を付けてユーザBに送ることで、メッセージを受け取ったユーザBはユーザAの公開鍵を使って付加された署名を検証することで、通信相手がユーザAであることを認証することもできる。
【0005】
RSA暗号方式では、素数p,qからn=pqを生成し、gcd(e,lcm(p−1,q−1))=1となるようなeを定め、d=e-1mod(lcm(p−1,q−1))を計算し、公開鍵をe,n、秘密鍵をdとする。暗号化メッセージの復号や、メッセージの署名生成等の秘密情報を用いた処理を行う場合、べき乗剰余演算の高速化手法として中国人剰余定理(Chinese Reminder Theorem:CRT)が一般に用いられる。以下、メッセージMに対する署名S=Mdmodnの生成方法を例に、CRTについて説明する。
【0006】
署名作成者は、n=pqの素因数p,qを知っているので、下記式(1)〜(3)の値を予め算出しておくことができる。
【0007】
【数1】

【0008】
署名を施したいメッセージをMとすると、下記式(4)〜(6)の関係式を順次計算することで署名Sは生成される。
【0009】
【数2】

【0010】
上記式(4)〜(6)では、剰余演算の法としてnの約半分の長さであるp,qを用いており、S=Mdmodnをそのまま計算するよりも約3倍の高速処理が可能である。
【0011】
しかし、CRTを用いた実装方法では、故障利用解析と呼ばれる攻撃手法によって秘密情報が暴かれる可能性がある。故障利用解析とは、暗号処理を行っている間に、異常クロックや異常電圧等を意図的に発生させることで動作エラーを引き起こし、エラー結果から内部で用いている秘密情報を推定する攻撃方法である。例として、RSA暗号のCRT利用実装に対する攻撃方法について説明する。
【0012】
異常クロックや異常電圧等の発生により、上記した式(5)でのSpの計算時に誤動作が生じ、間違った値Sp’(≠Sp)に変化したとすると、式(6)で導出されるSも下記式(7)に示したように間違った値S’となる。
【0013】
【数3】

【0014】
ここで、S’とSとの差は、下記式(8)で表され、qの倍数となることが分かる。即ち、n=pqであるので、S’−Sとnの最大公約数を求めることで、qを得ることが可能となる(gcd(S’−S,n)=q)。
【0015】
【数4】

【0016】
従来、上記攻撃手法に対する対策技術として種々の技術が提案されている。例えば、特許文献1には、C=Se’modn(e’はdpの法p−1における逆元)を計算することで、CがMと等しいかを否かを検算し、検算結果が誤っているときには演算結果を出力しないことで、攻撃者が秘密情報を含む情報を入手できないようにする技術が開示されている。
【0017】
【特許文献1】特開2005−165290号公報
【発明の開示】
【発明が解決しようとする課題】
【0018】
しかしながら、特許文献1の技術では、故障利用攻撃に対抗するができるものの、検算処理に係るべき乗剰余演算が余分に必要となるため、その分時間を要するという問題がある。
【0019】
本発明は上記に鑑みてなされたものであって、異常動作の検出にかかる検算処理を行うことなく、故障利用攻撃に対する耐性を向上させることが可能な暗号演算装置を提供することを目的とする。
【課題を解決するための手段】
【0020】
上述した課題を解決し、目的を達成するために、本発明は、データ入力線から入力されるデータをクロック信号に同期して取り込み、当該取り込んだデータを有効符号データとして保持するレジスタと、前記データ入力線に流れるデータ値を監視し、当該データ値が安定する毎にイネーブル信号とディスエーブル信号とを交互に出力する制御回路と、前記イネーブル信号に応じて前記レジスタに保持された有効符号データを出力するとともに、前記ディスエーブル信号に応じて前記有効符号データ以外の無効符号データを出力する選択出力回路と、前記選択出力回路から出力された効符号データを暗号化又は復号化して前記データ入力線に出力するとともに、前記選択出力回路から出力された無効符号データを前記データ入力線に出力する組み合わせ回路と、前記制御回路から出力されるイネーブル信号及びディスエーブル信号に応じて、前記クロック信号を制御するクロックフィルタと、を備え、前記制御回路は、前記データ入力線に有効符号データが入力されたと判定した場合に前記ディスエーブル信号を出力し、前記データ入力線に前記無効符号データが入力されたと判定した場合に前記イネーブル信号を出力することを特徴とする。
【発明の効果】
【0021】
本発明によれば、データ入力線を流れるデータに応じてクロック信号を制御することで、レジスタに入力されるデータが有効符号データである場合にのみ、レジスタに保持させることができる。これにより、クロック信号に対する故障利用解析攻撃を未然に防ぐことが可能となるため、異常動作の検出にかかる検算処理を行うことなく、故障利用攻撃に対する耐性を向上させることができる。
【発明を実施するための最良の形態】
【0022】
以下に添付図面を参照して、暗号演算装置の最良な実施形態を詳細に説明する。
【0023】
[第1の実施形態]
図1は、暗号演算装置10の構成を概略的に示したブロック図である。また、図2は、暗号演算装置10の回路構成を示した図である。以下、暗号演算装置10の構成を図1、2を参照して説明する。
【0024】
暗号演算装置10は、制御回路11と、クロックフィルタ12と、データパス部13と、記憶部14とを備えている。
【0025】
制御回路11は、信号線L32を流れるデータ値の状態を監視し、このデータ値が安定したと判定する毎に、クロックフィルタ12及びデータパス部13に出力するデータ値の状態を遷移させるステートマシン回路である。なお、ここで「安定」とは、信号線L32に流れるデータが遷移途中でないことを意味し、より具体的には、信号線L32に後述する有効符号データ又は無効符号データの導通が確認できたことを意味する。以下、制御回路11について説明する。
【0026】
図2に示したように、制御回路11は、AND型の論理素子であるAND素子111と、C素子112、113、114、115と、を備えている。ここでC素子112、113、114、115は、入力されるデータの値が全て同じ値になるまで出力が変動しないという特性を有した論理素子(MullerのC素子)である。なお、C素子については、例えば、当麻喜弘著、順序回路論、昭晃堂(1976)等に詳細な説明がある。
【0027】
図3−1は、C素子の一例として、2入力1出力型のC素子を模式的に示した図である。また、図3−2は、図3−1で示したC素子の真理値表を示した図である。
【0028】
図3−2に示したように、C素子の入力端に入力されるデータ(入力信号)1、2の値が同じ値となるときのみ、C素子から出力されるデータ(出力信号)がその値に変化するようになっている。なお、「*」で示した箇所は、前回のデータ値から変化しないことを意味している。
【0029】
図2に戻り、AND素子111の入力端は、信号線L11を介して図示しない外部装置と、信号線L12を介してC素子113の出力端とに接続されている。ここで、信号線L11からは、図示しない外部装置から制御回路11のリセットを指示するリセット信号(RST)が入力されるようになっている。また、AND素子111の出力端は、信号線L13を介してC素子112の入力端と、C素子115の入力端と、に夫々接続されている。
【0030】
C素子112の入力端は、信号線L13を介してAND素子111の出力端と、信号線L14を介してC素子114の出力端とに接続されている。また、C素子112の出力端は、信号線L15を介してC素子113の入力端と、C素子115の入力端と、に夫々接続されている。
【0031】
C素子113の入力端は、信号線L14を介してC素子114の出力端と、信号線L15を介してC素子112の出力端とに接続されている。なお、C素子114、C素子112からのデータ値は反転された状態で入力される。また、C素子113の出力端は、信号線L12を介してAND素子111の入力端に接続されている。
【0032】
C素子114の入力端は、信号線L16を介してOR素子1321の出力端と、信号線L17を介してOR素子1322の出力端と、信号線L22を介してクロックフィルタ12(C素子121)の出力端と、に接続されている。また、C素子114の出力端は、信号線L14を介して、C素子112の入力端と、C素子113の入力端と、に夫々接続されている。
【0033】
C素子115の入力端は、信号線L13を介してAND素子111の出力端と、信号線L15を介してC素子112の出力端とに接続されている。なお、C素子112からのデータ値は反転された状態で入力される。また、C素子115の出力端は、信号線L18を介してクロックフィルタ12(C素子121)の入力端と、AND回路134(AND素子1341〜1344)の入力端と、に夫々接続されている。
【0034】
制御回路11は、上述した各論理回路による論理演算により、クロックフィルタ12及びデータパス部13から入力されるデータ値に応じて、イネーブル信号(1)とディスエーブル信号(0)とを交互に出力する。具体的には、リセット信号が「1」のとき、信号線L16、17を介してデータ値「0」、クロックフィルタ12からCLK2信号のネゲート値「0」が入力されると、制御回路11からはイネーブル信号「1」が出力される。また、リセット信号が「1」のとき、信号線L16、17を介してデータ値「1」、クロックフィルタ12からCLK2信号のアサート値「1」が入力されると、制御回路11からはディスエーブル信号「0」が出力される。
【0035】
クロックフィルタ12は、外部から入力されるCLK信号のアサート期間(1)とネゲート期間(0)とのタイミングを、制御回路11(C素子115)から出力されるデータのデータ値に基づいて制御し、この結果をCLK2信号として出力する。なお、クロックフィルタ12に入力されるCLK信号は、図示しない外部のクロック生成装置により生成されているものとする。以下、クロックフィルタ12について説明する。
【0036】
図2に示したように、クロックフィルタ12は、上述したC素子112等と同様の特性を有したC素子121を備えている。このC素子121の入力端は、信号線L18を介してC素子115の出力端と、CLK信号が入力される信号線L21と、が接続されている。また、C素子121の出力端は、信号線L22を介してC素子114の入力端と、レジスタ133の制御入力端と、に夫々接続されている。
【0037】
クロックフィルタ12は、C素子121の論理演算により、制御回路11からのデータ値が「1」で且つCLK信号が「1」の場合にのみ、出力するCLK2信号を「0」から「1」へと遷移させる。また同様に、クロックフィルタ12は、制御回路11からのデータ値が「0」で且つCLK信号が「0」の場合にのみ、出力するCLK2信号を「1」から「0」へと遷移させる。
【0038】
データパス部13は、外部から入力されたデータ(外部データ)に対して、記憶部14に記憶された鍵情報(秘密鍵又は公開鍵)を用いて暗号化又は復号化を施し、その結果を外部へと出力する。なお、データパス部13に入力される外部データは、平文であってもよいし所定の暗号化方式により暗号化された暗号化済データであってもよい。
【0039】
図2に示したように、データパス部13は、セレクタ131と、OR回路132と、レジスタ133と、AND回路134と、組み合わせ回路135と、を備えている。なお、データパス部13内において各回路を接続する接続線は4本単位で接続されており、このうち対となる2本毎の信号線を用いて1ビット分のデータが表されるよう構成されている。
【0040】
セレクタ131は、図示しない外部装置から信号線L31を介して入力される外部データと、信号線L35を介して入力される組み合わせ回路135の出力データと、の何れか一つを選択的に切り替え、信号線L32に出力する。
【0041】
具体的に、セレクタ131は、図示しない外部装置から入力される切り替え信号に応じて、出力対象となるデータを選択的に切り替え、何れか一方のデータを信号線L32へと出力する。なお、本実施形態では、切り替え信号に応じた制御により、暗号化又は復号化対象となる外部データが、後述する有効符号データに符号化された状態で信号線L32へと出力され、レジスタ133に予め保持(ラッチ)されているものとする。
【0042】
OR回路132は、OR型の論理素子(OR素子1321、1322)を有している。OR素子1321、1322の入力端には、4本の信号線L32のうち対となる2本の信号線が夫々接続されている。OR素子1321、1322の出力端は、信号線L16、L17を介してC素子114の入力端に夫々接続されている。
【0043】
レジスタ133は、クロックフィルタ12から入力されるCLK2信号の値がアサート(1)の時、信号線L32を介して入力されるデータ(有効符号データ)を取り込み、当該データをラッチする一時記憶装置である。レジスタ133にラッチされたデータは、信号線L33を介してAND回路134に出力される。
【0044】
AND回路134は、AND型の論理素子(AND素子1341〜1344)を有している。AND素子1341〜1344の各々の入力端には、信号線L33を構成する4本の信号線が1本ずつ接続されているとともに、制御回路11(C素子115)とを繋ぐ信号線L18が夫々接続されている。なお、AND素子1341〜1344のうち、対となるAND素子の各々に、1ビットを表す1対の信号線が1本ずつ接続されているものとする。
【0045】
また、AND素子1341〜1344の各々の出力端は、信号線L341〜L344を介して組み合わせ回路135と接続されている。なお、AND素子1341〜1344から出力されるデータは、対となる2つのAND素子で1ビットを表すよう構成されている。
【0046】
AND素子1341〜1344から出力されるデータは、信号線L341〜L344を介して組み合わせ回路135へと夫々出力される。なお、AND素子1341〜1344のうち、対となる2つのAND素子からの出力で1ビットを表すよう構成されているものとする。本実施形態では、AND回路134から出力されるデータのうち、その値が(0,0)となるもの、即ち、対となる2つのAND素子からの出力が全て「0」となるものを、無効符号データとする。
【0047】
ここで、AND素子1341〜1344から出力されるデータ値は、制御回路11から信号線L18を介して入力されるデータ値により決定される。つまり、制御回路11から出力されるデータ値が「0」のとき、無効符号データが組み合わせ回路135に出力されることになる。なお、制御回路11から出力されるデータ値が「1」であるときには、レジスタ133にラッチされたデータが有効符号データとして組み合わせ回路135に出力される。
【0048】
組み合わせ回路135は、RSA暗号方式等の所定の暗号化/復号化ロジックを実装したハザードフリーの組み合わせ回路である。ハザードフリーの組み合わせ回路とすることで、OR素子1321、1322の出力が「1」であるとき、信号線L32が安定していることが保証される。ここで、図4、5を参照して、「ハザード」について説明する。
【0049】
図4は、ハザードが生じる原理を説明するための回路図である。また、図5は、図4で示した各回路(AND素子G1、OR素子G2、G3)に入力される入力信号I1、I2、I3と、当該各回路から出力される出力信号OG1、OG2、OG3との関係を示したタイミングチャートである。
【0050】
図4において、G1はAND素子、G2はOR素子、G3はOR素子、G4はNOT素子を示している。外部から入力された入力信号I1〜I3は、G1、G2、G4を介し、G3から出力信号OG3として出力されるようになっている。
【0051】
ここで、図5に示したように、入力信号I1が「0」、入力信号I3が「1」のとき、入力信号I2が「1」から「0」に変化する場合を考える。この場合、信号遅延や素子遅延が生じないとすると、OR素子G3の出力信号OG3は「1」のまま変化しない。しかしながら、実際には信号線や論理素子を信号が通過する際に遅延が生じるため、AND素子G1、OR素子G2の出力信号OG1、OG2が変化したときに、OR素子G3の出力信号OG3に影響する場合がある。
【0052】
例えば、配線遅延はなく素子遅延だけが生じていると仮定すると、AND素子G1の出力信号OG1の変化はNOT素子G4があるため、OR素子G2の出力信号OG2の変化よりも若干遅れることになる。そのため、OR素子G3の出力信号OG3は、図5中矢印で示したように「1」→「0」→「1」と瞬間的に変化する。このように配線遅延や素子遅延のため瞬間的に生じる信号値の変化をハザードという。このようなハザードがある組み合わせ回路の場合、その出力が安定しているか否かを出力信号線の値のみで判断することは難しい。そのため、組み合わせ回路135は、このようなハザードが生じない回路、即ち、ハザードフリーな回路により構成する。このように組み合わせ回路135をハザードフリーな回路とすることで、OR素子1321,1322で組み合わせ回路135の出力が安定したことを監視することができる。なお、ハザードフリーな回路の構成方法については、例えば、当麻喜弘著、順序回路論、昭晃堂(1976)等に詳細が説明されている。
【0053】
また、組み合わせ回路135は、記憶部14に記憶された鍵情報(秘密鍵又は公開鍵)に基づき、AND回路134から入力されるレジスタ133にラッチされたデータ(有効符号データ)に対し、暗号化又は復号化のための所定の処理を施す。具体的には、外部データとして平文が入力された場合には、鍵情報(秘密鍵)を用いて暗号化を行う。また、外部データとして暗号化されたデータが入力された場合には、鍵情報(公開鍵)を用いて復号化を行う。
【0054】
ここで、記憶部14は、不揮発性の記憶媒体であって、鍵情報を予め記憶しているものとする。なお、復号化の際に用いる鍵情報は、暗号化済みデータの暗号化に用いられた秘密鍵に対応する公開鍵であるものとする。
【0055】
また、組み合わせ回路135は、所定の演算処理を所定回数繰り返すことで暗号化/復合化を行うブロック暗号化/復合化方式のロジックを実装しているものとする。ブロック暗号化/復合化方式は、各回の演算処理を行った後の演算結果を、有効符号データとしてレジスタ133に一旦格納し、この演算結果を用いて次回の演算処理を行い、その演算結果をレジスタ133に上書き、つまり、演算結果を更新処理しながら暗号化/復合化が実行される。
【0056】
また、組み合わせ回路135は、AND回路134から無効符号データ(0,0)が入力された場合には、当該無効符号データを信号線L35を介してセレクタ131へとそのまま出力する。
【0057】
なお、本実施形態では、無効符号データと、当該無効符号データ以外の有効符号データとが、制御回路11の制御により組み合わせ回路135に交互に入力されるようになっている。これにより、制御回路11は、信号線L32に流れるデータが安定したこと、即ち、信号線L32に無効符号データ又は有効符号データが流れたことを、OR回路132を介して判定することができる。以下、この理由について説明する。
【0058】
まず、無効符号データ(0,0)に対する有効符号データを(0,1)と(1,0)とする。制御回路11(C素子115)から出力されたデータが「0」のとき、AND素子1341〜1344からの出力は全て「0」となり、組み合わせ回路135には無効符号データが入力される。この結果、組み合わせ回路135からは、無効符号データがセレクタ131に出力される。このとき、OR素子1321、1322の出力は、ともに「0」となり、この値のデータがC素子114へと入力される。つまり、制御回路11は、OR回路132から出力されるデータ値に基づいて、無効符号データが信号線L32に入力されたことを確認することができる。
【0059】
次に、制御回路11から出力されるデータが「1」になることで、レジスタ133がラッチしているデータ(有効符号データ)がAND回路134を介して、組み合わせ回路135に入力される。組み合わせ回路135は、信号線L35を介して演算結果をセレクタ131に出力する。このとき、組み合わせ回路135は、ハザードフリーの回路であることから、出力されるデータは(0,0)から(0,1)又は(1,0)に一度だけ遷移する。つまり、レジスタ133に入力されるデータの値を監視するOR回路132の出力値が「1」になったときには、組み合わせ回路135の演算結果がレジスタ133の入力として準備できたことを意味する。
【0060】
このように、無効符号データを入力することで組み合わせ回路135の出力信号を初期化した後、有効符号データを入力するという一連の流れを繰り返すことで、レジスタ133に有効符号データが入力されたか否かを逐次確認することができる。
【0061】
仮に無効符号データを入力しない場合、組み合わせ回路135は常に有効符号データを出力することになるため、レジスタ133に入力される信号の値が正しい値であるか、あるいは遷移途中の値であるかを判断することができない。そのため、暗号化/復号化の演算時に動作エラーが発生したとしても、それを認識することができない。これに対し、本実施形態では上記の構成としたことで、レジスタ133への入力データが安定状態にあることを判定することができるため、演算時における動作エラーの発生を未然に防止することができる。
【0062】
また、暗号演算装置10では、クロックフィルタ12を用いることで、データパス部13の信号線が安定しているときのみ外部からCLK信号が入力されるようになっている。即ち、誤動作の原因となるレジスタ133への入力信号が安定する前にCLK2信号が立ち上がり、本来の計算結果とは違う値をラッチしてしまうということを防ぐことができる。以下、このクロックフィルタ12の動作について説明する。
【0063】
暗号演算装置10を正常に動作させるためには、レジスタ133への入力信号が安定しているときにCLK信号が入力される必要がある。そのため、本暗号演算装置10では、クロックフィルタ12のC素子121を用いることで、データパス部13の信号線が安定しているときのみ、外部から入力されたCLK信号が入力されるよう制御する。
【0064】
具体的には、制御回路11からの出力信号はレジスタ133への入力データが有効符号データ又は無効符号データで安定した毎に遷移することから、これをC素子121への入力信号として利用する。制御回路11の出力信号は、レジスタ133への入力信号が安定していないとき、外部からのCLK信号が「0」から「1」又は「1」から「0」に遷移したとしてもクロックフィルタ12からの出力は遷移しない。つまり、クロックフィルタ12から出力されるCLK2信号は、入力されたCLK信号の周波数に係わらずレジスタ133への入力データが安定したときのみ「0」又は「1」に遷移する。
【0065】
そのため、CLK信号が攻撃者に操作されたとしても制御回路11及びクロックフィルタ12によって、CLK2信号はレジスタ133への入力データが安定したときのみ遷移するようになり、レジスタ133が誤動作を起こすような値をラッチしない回路構成とすることができる。
【0066】
図6は、制御回路11の各論理素子の動作を説明するためのタイミングチャートである。図6において、RSTはリセット信号、A1はAND素子111の出力信号、C1はC素子112の出力信号、C2はC素子121の出力信号、C3はC素子113の出力信号、C4はC素子114の出力信号、C5はC素子115の出力信号、O1はOR回路132の出力信号を示している。また、CLKは外部からC素子121に入力されるCLK信号を示している。
【0067】
まず、時刻t1において暗号演算装置10を初期化するリセット信号の値が「0」とする。レジスタ133への入力信号が無効符号データ(0,0)で安定した時刻t2に、リセット信号が「1」になることでAND素子111の出力データが「1」に遷移する。この遷移に伴い、時刻t3にC素子115の出力データが「1」(イネーブル)となり、レジスタ133が保持するデータがAND回路134を介して組み合わせ回路135に入力される。
【0068】
続いて、OR回路132の出力信号が「1」となることで、制御回路11はレジスタ133への入力信号が有効符号データで安定したことを検知する。さらに、時刻t2からCLK信号が「1」であることで、クロックフィルタ12にあるC素子121の出力データ、即ち、CLK2信号が時刻t3に立ち上がり「1」となる。時刻t4において、C素子114の出力データが「1」になることで、C素子112の出力データは「1」に遷移する。これを受けてC素子113の出力データが「0」に遷移することで、AND素子111の出力データは「0」となり、時刻t5でC素子115の出力データは「0」(ディスエーブル)へと遷移する。これにより、組み合わせ回路135への入力は全て無効符号データ(0,0)となる。
【0069】
この結果、時刻t6において、C素子114の出力データは「0」となり、続いてC素子112の出力データは「0」、C素子113の出力データは「1」となる。C素子113の出力データが「1」になることで、時刻t7でAND素子111の出力が「1」となり、C素子115の出力データが「1」(イネーブル)となる。以降同様の動作が繰り返され、無効符号データと有効符号データとが交互に組み合わせ回路135に流れることになる。
【0070】
以上のように、本実施形態によれば、信号線L32を流れるデータ値に応じてCLK信号を制御することで、レジスタ133に入力されるデータが有効符号データである場合にのみ、当該レジスタ133に保持させることができる。これにより、CLK信号に対する故障利用解析攻撃を未然に防ぐことが可能となるため、異常動作の検出にかかる検算処理を行うことなく、故障利用攻撃に対する耐性を向上させることができる。
【0071】
[第2の実施形態]
上述した第1の実施形態では、CLK信号に対する故障利用解析攻撃を検出することが可能な暗号演算装置10について説明した。本実施形態では、電源電圧が0Vや定格電圧以上の異常電圧が印加された場合の故障利用解析攻撃を検出することが可能な暗号演算装置20について説明する。
【0072】
図7は、暗号演算装置20の回路構成を示した図である。なお、暗号演算装置20の概略構成については図1と同様であるため図示を省略する。また、第1の実施形態と同様の部材についてはその説明を省略する。
【0073】
電源電圧に外乱を加える故障利用解析攻撃としては、電源電圧を0Vにする方法と、定格電圧以上の電圧を印加するという方法とが考えられる。前者の場合、攻撃者は電源電圧を0Vとすることで、レジスタ133がラッチするデータを(0,0)、即ち無効符号データとし暗号演算装置10の誤動作を誘発させる。また、後者の場合、攻撃者は電源電圧に定格以上の電圧を印加することで、レジスタ133がラッチするデータを(1,1)とし暗号演算装置10の誤動作を誘発させる。即ち、これら(0,0)及び(1,1)は、本来ならばレジスタ133にラッチされることのない異常データである。
【0074】
そのため、暗号演算装置20では、信号線L33を流れるデータ値を監視し、有効符号データ以外の異常データがレジスタ133にラッチされたことを検出することが可能な検出回路136を備えている。以下、検出回路136について説明する。
【0075】
図7に示したように、本実施形態の暗号演算装置20では、信号線L33の夫々に信号線L36が接続されており、当該信号線L36を介してレジスタ133にラッチされたデータ値が検出回路136に入力されるようなっている。
【0076】
検出回路136は、XOR型の論理素子(XOR素子1361、1362)を有している。XOR素子1361、1362の入力端には、信号線L33の対となる2本の信号線を流れるデータ値が夫々入力されている。また、異常データの検出は、XOR素子1361、1362から夫々出力されるデータ値に基づいて行われる。
【0077】
具体的には、有効符号データ(0,1)、(1,0)以外の異常データ(0,0)、(1,1)がレジスタ133にラッチされた場合、XOR素子1361(又はXOR素子1362)からはデータ値「0」が出力されることになる。そのため、検出回路136から「0」が出力された場合には、データパス部13(暗号演算装置20)にエラーが発生していると判定することができる。
【0078】
以上のように、本実施形態によれば、電源電圧に外乱を加える故障利用解析攻撃が行われた場合であっても、レジスタ133がラッチしたデータ値に基づいて異常データの検出を行うことができるため、異常動作の検出にかかる検算処理を行うことなく、故障利用攻撃に対する耐性を向上させることができる。
【0079】
なお、本実施形態では、検出回路としてXOR素子を用いた態様を説明したが、これに限らず、他の態様としてもよい。例えば、NOR素子を用いて異常データ(0,0)を検出し、NAND素子を用いて異常データ(1,1)を検出する態様としてもよい。
【0080】
以上、発明の実施の形態について説明したが、本発明はこれに限定されるものではなく、本発明の主旨を逸脱しない範囲での種々の変更、置換、追加などが可能である。
【図面の簡単な説明】
【0081】
【図1】暗号演算装置の構成を示したブロック図である。
【図2】暗号演算装置の回路構成の一例を示した図である。
【図3−1】C素子を模式的に示した図である。
【図3−2】C素子の真理値表を示した図である。
【図4】ハザードが生じる原理を説明するための図である。
【図5】ハザードが生じる原理を説明するための図である。
【図6】制御回路の動作を示したタイミングチャートである。
【図7】暗号演算装置の回路構成の一例を示した図である。
【符号の説明】
【0082】
10 暗号演算装置
11 制御回路
111 AND素子
112 C素子
113 C素子
114 C素子
115 C素子
12 クロックフィルタ
121 C素子
13 データパス部
131 セレクタ
132 OR回路
1321 OR素子
1322 OR素子
133 レジスタ
134 AND回路
1341 AND素子
1342 AND素子
1343 AND素子
1344 AND素子
135 組み合わせ回路
14 記憶部
20 暗号演算装置
136 検出回路
1361 XOR素子
1362 XOR素子

【特許請求の範囲】
【請求項1】
データ入力線から入力されるデータをクロック信号に同期して取り込み、当該取り込んだデータを有効符号データとして保持するレジスタと、
前記データ入力線に流れるデータ値を監視し、当該データ値が安定する毎にイネーブル信号とディスエーブル信号とを交互に出力する制御回路と、
前記イネーブル信号に応じて前記レジスタに保持された有効符号データを出力するとともに、前記ディスエーブル信号に応じて前記有効符号データ以外の無効符号データを出力する選択出力回路と、
前記選択出力回路から出力された有効符号データを暗号化又は復号化して前記データ入力線に出力するとともに、前記選択出力回路から出力された無効符号データを前記データ入力線に出力する組み合わせ回路と、
前記制御回路から出力されるイネーブル信号及びディスエーブル信号に応じて、前記クロック信号を制御するクロックフィルタと、
を備え、
前記制御回路は、前記データ入力線に有効符号データが入力されたと判定した場合に前記ディスエーブル信号を出力し、前記データ入力線に前記無効符号データが入力されたと判定した場合に前記イネーブル信号を出力することを特徴とする暗号演算装置。
【請求項2】
前記クロックフィルタは、外部から入力される外部クロック信号のアサート期間とネゲート期間とを前記イネーブル信号及びディスエーブル信号に応じて制御し、前記クロック信号とすることを特徴とする請求項1に記載の暗号演算装置。
【請求項3】
前記クロックフィルタは、前記外部クロック信号がアサート期間で且つ前記イネーブル信号が出力された場合にのみ前記クロック信号をアサート期間へと遷移させ、前記外部クロック信号がネゲート期間で且つ前記ディスエーブル信号が出力された場合にのみ前記クロック信号をネゲート期間へと遷移させることを特徴とする請求項2に記載の暗号演算装置。
【請求項4】
前記クロックフィルタは、入力される全てのデータ値が一致するまで出力するデータ値を変えない論理素子を有することを特徴とする請求項1〜3の何れか一項に記載の暗号演算装置。
【請求項5】
前記制御回路は、前記レジスタに前記有効符号データが保持されたと判定した場合に、前記ディスエーブル信号を出力することを特徴とする請求項1に記載の暗号演算装置。
【請求項6】
前記レジスタに入力されるデータ値の論理和を演算するOR回路を更に備え、
前記制御回路は、前記OR回路の演算結果に基づいて、前記データ入力線に流れるデータ値を監視することを特徴とする請求項1又は5に記載の暗号演算装置。
【請求項7】
前記制御回路は、前記OR回路の演算結果と、前記クロックフィルタから出力されるクロック信号のデータ値とが一致する毎に、そのデータ値を反転したデータ値を前記イネーブル信号又はディスエーブル信号として出力することを特徴とする請求項6に記載の暗号演算装置。
【請求項8】
前記制御回路は、入力される全てのデータ値が一致するまで出力するデータ値を変えない論理素子を有することを特徴とする請求項6又は7に記載の暗号演算装置。
【請求項9】
前記レジスタから出力されるデータ値を論理演算し、この演算結果に基づいて当該レジスタに前記無効符号データが保持されたことを検出する検出回路を更に備えたことを特徴とする請求項1に記載の暗号演算装置。
【請求項10】
前記データ入力線は、複数の信号線を有し、
前記複数の信号線のうち、対となる二つの信号線毎に1ビットのデータを表すよう符号化されたデータが流れることを特徴とする請求項1に記載の暗号演算装置。
【請求項11】
前記組み合わせ回路は、ハザードフリー回路であることを特徴とする請求項1に記載の暗号演算装置。

【図1】
image rotate

【図2】
image rotate

【図3−1】
image rotate

【図3−2】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate