(57)【特許請求の範囲】
【請求項１】
○をXOR演算処理、◎を乗算処理とし、
４ビットのcr,８ビットのgr,４ビットのdr,及び８ビットのfrをそれぞれ乱数ｒによって選択される固定値マスクとし、８ビットのR、R’を乱数値マスクとして、８ビットの入力データU○grから８ビットの出力データU-1○frを、βγ=2を満たす合成体GF((…(2β1)…)βγ)において演算する共通鍵ブロック暗号化装置であって、
乱数値マスクをXORさせて実行するU16◎U計算により、前記入力データU○grから4ビット値U17○crを計算すると共に、それぞれ８ビットのU16○R’及びR’を計算するmaskedU16◎U計算回路と、
該maskedU16◎U計算回路から出力される前記U17○crから４ビットのU-17○drを計算する、乱数rによって選択された4ビット対4ビット変換テーブル回路と、
前記4ビット対4ビット変換テーブル回路から出力されるU-17○drと前記maskedU16◎U計算回路から出力されるU16○R’及びR’をそれぞれ入力し、前記出力データU-1○frを計算するmaskedU-17◎U16計算回路と、
を含むことを特徴とする暗号化装置。
【請求項２】
○をXOR演算処理、◎を乗算処理とし、
４ビットのcr,８ビットのgr,４ビットのdr,及び８ビットのfrをそれぞれ乱数ｒによって選択される固定値マスクとし、８ビットのR、R’を乱数値マスクとして、８ビットの入力データU○grから８ビットの出力データU-1○frを、βγ=2を満たす合成体GF((…(2β1)…)βγ)において演算する共通鍵ブロック暗号化装置が行う共通鍵ブロック暗号化方法であって、
前記共通鍵ブロック暗号化装置が備えているmaskedU16◎U計算回路が、乱数値マスクをXORさせて実行するU16◎U計算により、前記入力データU○grから4ビット値U17○crを計算すると共に、それぞれ８ビットのU16○R’及びR’を計算するmaskedU16◎U計算ステップと、
前記共通鍵ブロック暗号化装置が備えている、乱数rによって選択された4ビット対4ビット変換テーブル回路が、該maskedU16◎U計算ステップの出力である前記U17○crから４ビットのU-17○drを計算する4ビット対4ビット変換テーブルステップと、
前記共通鍵ブロック暗号化装置が備えているmaskedU-17◎U16計算回路が、前記4ビット対4ビット変換テーブルステップの出力であるU-17○drと前記maskedU16◎U計算ステップの出力であるU16○R’及びR’をそれぞれ入力し、前記出力データU-1○frを計算するmaskedU-17◎U16計算ステップと、
を行うことを特徴とする暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号の分野に属するもので、電力解析攻撃と呼ばれる解読法を防ぐための対策技術に関する。
【背景技術】
【０００２】
暗号方式は、公開鍵暗号方式と共通鍵暗号方式に大別される。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。
【０００３】
暗号の分野における技術の一つに、解読技術とよばれるものがある。解読技術とは秘密鍵等の秘密情報を暗号文等、入手可能な情報から推定する技術のことであり、様々な手法が存在する。その中で最近注目されている技術に、電力解析攻撃(Power Analysis, 以下PA)と呼ばれる手法がある。PAとは、1998年にPaul Kocherによって考案された手法で、スマートカード等の組み込み機器に搭載された暗号プロセッサに様々な入力データを与えた時の電力消費データを収集・解析することで、暗号プロセッサ内部の鍵情報を推定する手法である。PAを用いることで、公開鍵暗号、秘密鍵暗号共に暗号プロセッサから秘密鍵を推定できることが知られている。
【０００４】
PAには、単純電力解析(Single Power Analysis, 以下SPA), 電力差分攻撃(Differential Power Analysis, 以下DPA)の2種類が存在する。SPAは暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行う方式、DPAは多数の電力消費データの差分を解析することで秘密鍵の推定を行う方式で、一般にDPAの方が強力であるといわれている。SPA、DPAを用いた解読技術としては代表的なものとして次のような論文が発表されている。RSAなどの公開鍵暗号に対するDPAを用いた解読法については、下記非特許文献１などの文献にて述べられている。また、共通鍵暗号方式において、現在標準として利用されているDES(Data Encryption Standards)に対するSPA, DPAを用いた解読法については、下記非特許文献２で述べられている。DESの他に、次世代で標準として利用されると思われる共通鍵暗号方式であるRijndaelについても、下記非特許文献３などの文献でDPAを用いた解読の可能性が指摘されている。
【０００５】
PAを用いた解読技術は特に有効な方法として注目されており、様々な解読法が研究されている。また、解読技術のみならずPAによる解読を防ぐための対策技術も発展しており、解読技術と同様に重要な技術として注目されている。
【０００６】
共通鍵暗号処理の一般的な構成を図１に示す。一般的に、共通鍵暗号処理はラウンド処理と拡大鍵生成の２つの処理から構成される。拡大鍵生成は、入力された秘密鍵から複数の拡大鍵と呼ばれるデータを複数（以下拡大鍵0, 拡大鍵1,…, 拡大鍵Nと表記）生成し、ラウンド処理に対して出力する。これらの拡大鍵及び平文をラウンド処理に入力することで、暗号化のための変換を行い、暗号文を出力する。
【０００７】
代表的な共通鍵暗号のアルゴリズムとして、AES(Advanced Encryption Standards)が知られており、下記非特許文献４として公開されている。
【０００８】
AESの構成を図２に示す。
AESは128-bitを暗号化単位とするアルゴリズムである。すなわち128-bitの平文から128-bitの暗号文を生成する。秘密鍵は128,192,256-bitの３種類から選択することができる。拡大鍵処理を実行することで、秘密鍵からN+1個の128-bit拡大鍵を生成する。AESのラウンド処理は, RoundKey, Subbyte, ShiftRow, MixColumnの４種類から構成され、これらのうちRoundKeyにおいて拡大鍵が使用される。ラウンド処理に平文を入力することで、RoundKey, Subbyte, ShiftRow, MixColumnの順番の処理をN-1回繰り返す。次に、RoundKey, Subbyte, ShiftRow, RoundKeyの処理を実行し暗号文を出力する。この繰り返し回数Nは秘密鍵のビット長によって異なり、128-bitの場合N=10, 192-bitの場合N=12, 256-bitの場合N=14である。RoundKeyの処理を図３に、Subbyteの処理を図４に、MixColumnの処理を図５に、ShiftRowの処理を図６に示す。
【０００９】
＜DPAによる秘密鍵解読手法＞
以下では、DPAによる秘密鍵解読手法について説明を行う。DPAは、図１のラウンド処理に関する消費電力を測定することで、秘密鍵を解読する手法である。以下では、DPAを用いて解読を行うことができる共通鍵暗号の処理構成について、AESに限定せずに説明を行う。一般的な共通鍵暗号では、拡大鍵XOR処理(図７)、線形変換処理(図８)、非線形変換処理(図3)の3つを組み合わせてラウンド処理を構成し、ラウンド処理を複数回繰り返すことで構成される。図７に示す通り、拡大鍵XOR処理は入力データXに対して、拡大鍵Kの排他的論理和(XOR)の演算結果Zを出力する処理である。図８は線形変換処理であり、入力データXに対して、Z=L(X)を満たすZを出力する処理である。このとき、Lは任意のX,Yに関して、
【数１】
0005500277.tif 000002
が成立する。具体的には、図６のShiftRowのようなビット置換処理や、図５のMixColumnのような行列演算などがこれに該当する。図９は非線形変換処理であり、入力データXに対してZ=W(X)を満たすZを出力する。このとき、Wは任意のX,Yに関して、W(X○Y) =W(X)○W(Y)が成立しない(非線形)。具体的には、Sboxと呼ばれる非線型変換テーブル索引で実現する場合が多く、入力XをX=x0x1…xu-1とu個に分割し、Sbox wjを用いてzj=wj(xj)で表されるzjを計算、再びZ=z0z1...zu-1と結合してZを出力する。
【００１０】
次に、上記処理を組み合わせた共通鍵暗号に対する、DPAを用いた解読法を示す。
最も簡単な例として、図７と図９を組み合わせた図１０の処理に対してDPAを用いることで、拡大鍵Kを解読できることを示す。なお、図１０は、AESにおけるRoundKey（図３）とSubbyte（図４）をあわせた構造と等価である。
【００１１】
図１０の構成においてwjの入出力に関係するビットのみを取り出した構成を図１１に示す。図１１において、mjは平文などの既知の値、kjは未知の値、wjは既知のSboxテーブルであると仮定する。この仮定の下で、DPAにより拡大鍵kjを推定できることを示す。
【００１２】
DPAは、電力消費データの測定と、電力差分データを用いた拡大鍵の解析という２段階から構成される。電力消費データの測定において、ある平文を与えたときに暗号プロセッサが消費する電力消費データは、オシロスコープ等を用いれば、図１２に示すような電力消費曲線として測定される。平文の値を様々に変えながらこのような測定を繰り返し、十分な回数の測定データが得られた時点で測定を終了する。この一連の測定で得られた電力消費曲線の集合をGとする。
【００１３】
次に、電力消費曲線を用いた拡大鍵の解析について説明を行う。暗号処理内部で用いられている拡大鍵kjについて、kj=k’jであるという仮定を立てる。mj, wjが既知のため、このk’jの仮定に基づき、集合Gは以下のG0(k’j), G1(k’j)に示す2種類の集合に分類できる。
【００１４】
G0(k’j) = { G| zj = wj(mj○k’j)のe番目のビット値=0  }   (1)
G1(k’j) = { G| zj = wj(mj○k’j)のe番目のビット値=1  }   (2)
そして、以下に示す電力差分曲線DG(k’j)を作成する。
DG(k’i) = (集合G1に属する電力消費曲線の平均)
- (集合G0に属する電力消費曲線の平均)   (3)
【００１５】
もしこの仮定が正しい、すなわちk’j=kjである場合、図１３Aに示すようなスパイクが現われる。もしこの仮定が誤り、すなわちk’j1kjである場合、図１３Bに示すようにスパイクが現れない平坦な曲線となる。よって、仮定したk’jから図１３Aのような電力差分曲線が得られれば、拡大鍵kjを解読できたことになる。このようなkjの解読を各jについて行えば、最終的に図１０における拡大鍵Kを解読することができる。この解読を、拡大鍵0,拡大鍵1,…, 拡大鍵Nについて繰り返すことで、秘密鍵を解読することができる。なおAESの場合、アルゴリズムの性質上、拡大鍵の先頭の値がそのまま秘密鍵の値であるため、秘密鍵が128-bitならば拡大鍵0を、秘密鍵が192-bitもしくは256-bitならば拡大鍵0と拡大鍵1を解読すれば、秘密鍵全体を解読することができる。
【００１６】
次に、k’j=kjである場合、電力差分曲線DG(k’j)にスパイクが現れる理由について説明する。k’j=kjの場合、(1)式及び(2)式に従いG0(k’j), G1(k’j)の分類を行うことで、zjに関して(4)式が成立する。
【００１７】
(G1に属するzjの平均ハミングウェイト)
- (G0に属するzjの平均ハミングウェイト) = 1   (4)
【００１８】
一方、k’j1kjの場合(4)式は成立せず、ランダムな分類を行うことになるので(5)式が成立する。
【００１９】
(G1に属するzjの平均ハミングウェイト)
- (G0に属するzjの平均ハミングウェイト) = 0   (5)
【００２０】
ただし、ハミングウェイトとは、ある値をビット値で表現したときにビット値=’1’となる個数のことであり、例えばビット値(1101)2のハミングウェイトは3である。
【００２１】
よって、(4)式が成立する場合はG1(k’j)とG0(k’j)の間でのロード値zjの平均ハミングウェイトに差が生じるが、(5)式が成立する場合はG1(k’j)とG0(k’j)の間でのロード値zjの平均ハミングウェイトに差が生じない。
【００２２】
一般的に、消費電力はデータ値のハミングウェイトに比例すると考えられており、このことが正しいことを示した実験結果が下記非特許文献５などの文献にて示されている。
【００２３】
従って、k’j=kjである場合、(4)式が満たされることで消費電力の差が電力差分曲線上のスパイクという形になって現れるが、(5)式の場合はスパイクが現れず、平坦な曲線となる。
【００２４】
以上では、最も簡単な図１０の構造に対するDPAに関して述べたが、このような手法は、間に図９の線形変換を挿入しても成立することが判明している。
【００２５】
図１４は、図１０を一般化した構造であり、鍵XOR処理の前後に2つの線形変換処理L1, L2を入れた処理構造である。例えば、L1は入力をそのまま出力する関数、L2をビット転置置換関数、wjをSC2000のB関数と呼ばれるSboxにすることで、図１４はSC2000と等価な構造を表す。なお、SC2000の仕様については、下記非特許文献６を参照のこと。L2はビット置換関数であるので、図１４の処理について、wjの入出力に関係するビットのみを取りだした構造を考えることで、図１１と同一の処理に変換でき、前述と同様のDPAを用いることで、拡大鍵Kを解読することができる。
【００２６】
以上の手法では、非線形処理中のSbox出力に注目してDPAを適用しているが、そのほかにも、入力mjと鍵kjとのXOR直後の値(鍵XOR処理の出力値)やSboxへの入力値xjの値に注目してDPAを適用する手法が知られている(下記非特許文献７)。
【００２７】
上記を整理すると、次の条件を満たす場合にDPAにより秘密鍵Kが推定される。(これらのDPA攻撃条件については、下記特許文献１にも記載されている。)
【００２８】
DPA-1.  入力Mが既知かつ制御可能、鍵Kは未知で固定、Sbox wjの変換が既知の場合、図１５のAの部分(Sbox wjの出力)の電力消費曲線を測定することでDPA可能。
【００２９】
DPA-2.  入力Mが既知かつ制御可能、鍵Kは未知で固定の場合、図１５のBの部分(鍵XOR処理の出力の書き出し)の電力消費曲線を測定することでDPA可能。
【００３０】
DPA-3.  入力Mが既知かつ制御可能、鍵Kは未知で固定の場合、図１５のCの部分(Sbox wjを索引するための入力値のロード)の電力消費曲線を測定することでDPA可能。
【００３１】
＜SPAによる秘密鍵解読手法＞
以下では、SPAによる秘密鍵解読手法について説明を行う。この攻撃は、
【数２】
0005500277.tif 000003
といった乗算処理の消費電力を観察する。ただし、◎は乗算をあらわす記号であり、AES処理では、後に説明する合成体の計算（図２３）において、a,b,cがGF(28)やGF(((22)2)2)の元である場合の乗算処理が行われる。入力データであるaもしくはbに’0’が入力された場合、0との乗算、つまり0=0◎bもしくは0=a◎0の演算が行われる(以下、ゼロ乗算と呼ぶ)。ゼロ乗算の消費電力波形と、a,b共に非ゼロの場合の乗算（以下、非ゼロ乗算と呼ぶ）の電力波形と比較した場合、前者は非常に特殊な波形となることが知られている。つまり、乗算処理におけるゼロ乗算と非ゼロ乗算の区別は、SPAにより観察できる。この性質を利用することで、秘密鍵を解読することができる。この攻撃をゼロ乗算SPAと呼ぶ。ゼロ乗算SPAは、その性質上乗算処理を用いる暗号処理装置に対してのみ実施可能な攻撃法である。AESの場合、後に述べる合成体の計算（図２３）を用いたSubbyte処理を用いる暗号処理装置に対してのみこの攻撃法が可能であり、そうでない暗号処理装置に対してはこの攻撃は不可能である。
【００３２】
図１６は、ゼロ乗算SPAによる攻撃可能な暗号処理の回路構成を表している。
図１６において、Mは平文など攻撃者にKnownな値、Kは鍵などの攻撃者にUnknownな値である。X=M○KのXOR演算を行った後、データYとの乗算処理Z=X◎Yを行う。Yの値は攻撃者にUnknowな値である。攻撃者はこの処理に対してSPAによる観察を行い、Mの値を変化させながらX◎Yの演算におけるゼロ乗算の発生の有無を観察する。もし、ゼロ乗算が観察された場合、X=0である。つまり、M○K=0であることが分かるので、K=MつまりUnknownなKがMと一致することが分かり、Kの解読に成功する。この攻撃を成功させるためには、Yの値は0以外なら何でも良い任意の値である。
【００３３】
ゼロ乗算SPAは図１７の回路構成に対しても可能である。
図１７において、Mは平文など攻撃者にKnownな値、Kは鍵などの攻撃者にUnknownな値である。αは任意の変換関数であり、攻撃者がゼロに関する逆変換α-1(0)を(つまり、α(z)=0を満たすzを)演算可能であれば、線型・非線型いずれの変換でも良い。V=M○KのXOR演算、X=α(V)の演算を行った後、データYとの乗算処理Z=X◎Yを行う。Yの値は攻撃者にUnknowな値である。攻撃者はこの処理に対してSPAによる観察を行い、Mの値を変化させながらX◎Yの演算におけるゼロ乗算の発生の有無を観察する。もし、ゼロ乗算が観察された場合、X=0である。つまり、α(M○K)=0であるので、M○K=zであることが分かる。つまりK=M○zが分かるので、Kの解読に成功する。
【００３４】
＜従来技術＞
従来のDPA対策法としては、暗号処理に対策を施し消費電力をランダム化する手法が存在する。この手法を用いた対策法として、以下の２つの従来例が知られており、下記に従来例１、従来例２として示す。また、DPA対策なしのAES回路に対して、Subbyte回路の縮小を実現する方法を、以下の従来例３に示す。従来例1,2は、Subbyteの回路を乗算処理ではなくテーブル演算で実行するため、ゼロ乗算SPAに対して安全であるので、DPA対策を行うことでそのままPA対策となることに注意されたい。
【００３５】
従来例１
消費電力をランダム化する手法の代表的なものとして、masking method と呼ばれている手法が知られている（下記非特許文献８、以下「従来例１」と呼ぶ）。DPA対策なしの暗号処理において計算されるデータをMとすると、従来例１に記載されているDPA対策は、データMを計算する代わりに、M’=M○Rで表されるデータM’,Rを計算することで暗号処理を行う方法である。ただしRは乱数であり、暗号処理を実行する度に発生させる値である。この方法により、暗号処理のデータをランダムな値でマスクされる。よって、データがランダム化されることで消費電力もランダム化されるため、PAに安全な処理を実現することができる。以下の説明では、RのようにPA対策なしのデータに対してXORされる値をマスク値と呼ぶ。
【００３６】
図１８のDPA対策を行っていないAES回路に対して、従来例1によるDPA対策を適用したAES回路を図１９に示す。この回路においては、図１８で計算しているデータMiの代わりに、乱数Riに対してMi’ = Mi○ Riを満たすMi’とRiの２つのランダムなデータを計算する。暗号化処理ごとに計算されるデータ値がランダムであるため、DPAに対して安全な処理を実現することができる。ただし、データをMi’とRiの両方について計算しなくてはならないため、回路規模が増大する。（図１８のおよそ２倍）。図１８ではAESのSubbyte処理を、固定データによる静的な変換テーブルS[x] を用いたテーブル参照処理(0£x£255)によって行う。Subbyte処理で用いられる変換テーブルS[x]は、Sboxと呼ばれる。これに対して、図１９で用いられるSboxのテーブルデータS’[x]は、乱数Rin, Routに応じてS’[x] = S[x○Rin]○Routに従ったS’[x]を、x=0,1,...,255それぞれに対して動的に更新する必要がある。この更新処理は256 cycleを必要するため、図１９の回路を図１８と比較すると、処理速度が遅いという欠点を有する。
【００３７】
従来例１の課題
課題１．DPA対策無しの回路と比較して、回路規模が大きい。
課題２．DPA対策無しの回路と比較して、処理速度が遅い。
従来例２
従来例１の課題２を解消するための方法が下記特許文献１に公開されている（以下本書では「従来例２」と記す）。従来例１ではマスクする値をランダムに生成していたのに対し、従来例２は事前計算された複数の固定値の中から一つを乱数によって選択した値によりマスクする。この選択されたマスク値をRiと表記する。従来例２では、従来例１と同様に、M’i=Mi○Riを満たすデータM’i,Riを計算するが、Riは事前計算された値であるため、M’i,Riの両方を計算する必要はなく、M’iのみを計算すれば良い。乱数が事前計算された値であるため、従来例１と異なりSboxのテーブルデータを動的に更新する必要はなく、事前計算された静的なデータを複数用意すれば良いので、従来例１より高速な処理を実現することができる。従来例２のDPA対策方法を用いることで、図１８に示したDPA対策無しのAES暗号処理は、以下の図２０に示すような暗号処理に置き換えられる。
【００３８】
図２０について説明する。q-1 MUXはセレクタを表し、q個の入力データの中から一つを乱数によって選択する。q-1 DEMUXはデマルチプレクサを表し、入力されたデータをq個の出力先の中から一つを乱数によって選択する。
【００３９】
入力データM’iに対して、拡大鍵KiによるXOR処理、及びSboxを用いたSubbyte処理、ShiftRow, MixColumn処理が実行され、データM’i+1が出力される。これらの一連の処理においては、乱数r(0£r£q-1)によって、q数の固定値のうち一つが選択され、この値によるマスク処理が行われる。例えば、q個の固定値をch(h=0,1,..,q-1)と表記した場合、乱数rによって選択される固定値をcrと表記する。DPA対策無しの処理における入力データをMiと表記すると、M’iは乱数rによって選択された固定値frに対して、M’i=Mi○frを満たす。つまり、Mi’はfrでXORされているので、Miのマスク値はfrである。
【００４０】
拡大鍵Kiに対しては、乱数rにより選択された固定値erによりマスクされた後、M’iに対してXORされる。Mi’のマスク値はfr, 拡大鍵Kiのマスク値はerなので、Sboxに入力されるデータのマスク値は、これらのマスク値同士のXORで表されるので、fr○erとなる。ここで任意のh=0,1,…,q-1に対してch=fh○ehと表記すると、Sboxに入力されるデータのマスク値はcrとなる。
【００４１】
次に、Sbox回路による非線形変換処理が行われる。この処理は、乱数によりq個のSboxから一つを乱数によって選択することで行う。このSboxは、入力データがcrによりマスクされ、出力データがdrによりマスクされるような処理を行う。この処理を実現するための、マスクつきSbox をS’h[x]と表し、対策無しのSboxをS[x]と表した場合、S’h[x]=S[x○ch]○dhの関係が満たされるようにS’h[x]は設計される (h=0,1,…,q-1)。Sbox回路の入力にq-1 DEMUXが、出力にq-1 MUX回路があるため、q個のSboxのうち拡大鍵XOR演算の信号が伝達するのは１つだけである。q個のSboxの電力特性はそれぞれ異なるため、乱数によりこれらのうちの一つを選択することで、消費電力がランダム化され、PAに安全な処理を実現することができる。従来例1と異なり、Sboxテーブルは事前計算データを用いることができるため、従来例１より高速な処理を実現できる。しかし、図２０の構成は、図１６に示した対策無しのq倍のSbox回路を必要とする。AESにおける一般的にSboxの回路は非常に大きいため、このq個のSboxの回路規模がAES全体の回路規模を増大させるという欠点がある。よって、従来例2は、従来例１と同様、以下の問題がある。
【００４２】
従来例２の課題
課題１．DPA対策無しの回路と比較して、回路規模が大きい。
従来例３
AESのSboxの回路規模を小さくする方法として、合成体(Composite Field)を用いた方法が知られている。（下記非特許文献９、以下「従来例３」と呼ぶ）この方法は、SPA,DPA対策を用いないAES回路に適用できる方法として知られている。
【００４３】
この方法を説明する前提として、AESのSbox回路の一般的な構成について説明する。図２１は、下記非特許文献４の"5.1.1 SubBytes() Transformation"に記されているAESのSbox回路の構成を示している。Sbox回路は暗号化・復号それぞれに示しており、GF(28)の多項式x8+x4+x3+x+1の剰余値に関する逆元関数I(x)、Affine変換A(x)、及びAffine変換の逆関数であるAffine逆変換A-1(x)から構成される。ただし、GF()はガロア体(Galois Field)を現す記号である。特に、整数値βを用いてGF(2β)と表されるガロア体は、２進体 (binary field)と呼ばれ、γ個の整数値β1,…, βγを用いてGF( (…((2β1)β2) …)βγ )と表されるガロア体は合成体(composite field)と呼ばれる。ガロア体とはデータ表現形式の一種であり、このデータ表現形式で表されるデータを元(element)と呼ぶ。２進体の元はβ-bitの任意のデータであり、合成体の元は(β1×… ×βγ)-bitの任意のデータである。GF(2β)の元はβ-bitのデータ形式のみであるが、GF( (…((2β1)β2) …)βγ )の元は、β1-bit、β1×β2-bit、…、(β1×… ×βγ)-bitのようにγ種類のビット長のデータ形式に対応しており、ビット長が小さいデータ形式ほど小さな回路規模による演算処理が可能である。２進体、合成体それぞれの元に関して、乗算◎、XOR演算○、及び多項式f(x)による剰余演算mod (f(x))が定義されている。
【００４４】
逆元(inverse element)とは、任意の8-bit値xに対してI(x)=x-1mod (x8+x4+x3+x+1)を満たす8-bit値yのことであり、x◎y=1 mod (x8+x4+x3+x+1)を満たす。Affine変換と逆元については、下記非特許文献４の"5.1.1 SubBytes() Transformation"も参照されたい。
【００４５】
A(x)は暗号化のときのみ、A-1(x)は復号のときのみ用いられ、I(x)は暗号化と復号の両方で用いられる共通の回路である。A(x),A-1(x)は簡単な論理演算による8-bit入出力演算を行う回路であり、回路規模が小さいことが知られている。これに対し、I(x)はテーブルを用いた8-bit入出力演算を行う回路であり、回路規模が大きいことで知られている。つまり、図２１の構成は、暗号化と復号の両方で用いられる共通の回路であるI(x)の回路規模が大きいため、I(x)の回路規模削減が課題となる。このI(x)の回路規模を削減するための方法として、合成体(Composite Field)を用いた逆元の計算法が、下記非特許文献１０に提案されている。テーブルを用いた一般的な逆元計算回路を図２２に、合成体を用いた逆元計算回路を図２３に示す。
【００４６】
図２２に示す通り、一般的な逆元計算回路は、テーブルを用いることで8-bit入力データを8-bit出力データに変換する処理を行うが、この処理を回路実装した場合、8-bit入出力であるため非常に回路規模が大きい。テーブル演算を行う回路において、m-bit入力データをn-bit出力データに変換する場合、その回路規模はm´n´2mに比例することが知られており（図２２）、回路規模を小さくするためには入出力のビット長であるm,nの両方を小さくすることが重要な課題となる。この課題を解決したのが、図２３に示す合成体を用いた逆元演算回路であり、この回路ではm=4, n=4のテーブルを用いる。図２２に示すm=n=8のテーブルと、図２３に示すm=n=4のテーブルの大きさを比較すると、(4´4´24)/(8´8´28)=(28)/(214)=1/64であり、つまり図２３のテーブルは図２２のテーブルの1/64の大きさとなるため、回路規模を削減可能である。
【００４７】
図２３の処理内容について説明する。図２３は、GF(28)の元Tに対して、その逆元T-1を計算する。このT-1を4-bit入出力テーブルで計算するために、GF(((22)2)2)の元Uを利用する。ただし、合成体GF(((22)2)2)の元Uは多項式GF((24)2)=x2+x+(1100)2, GF((22)2)=x2+x+(10)2, GF(22)=x2+x+1の剰余である。TもUも8-bitデータであり、TとUはδ変換と呼ばれる変換により、U=δ(T), U=δ-1(T)により計算される。δ,δ-1変換はisomorphism functionと呼ばれる行列演算であり、詳細は下記非特許文献１１を参照されたい。最初にδ変換により、TからUを計算した後、U16とU17を計算する。なお、U17は=U16とUを乗算することで計算する。この演算の結果、8ビット値のU17のうち、最上位4-bitは’0000’となることが知られている。つまり、U17は8ビットではなく4ビットで表現される値である。また、U17の逆元であるU-17も同様に4ビットで表現される値である。つまり、U17からU-17を計算するテーブル回路は、図２２の方法では8ビット入出力であるのに対し、4ビット入出力に削減することができる。このテーブルによってU-17を計算した後、U-1=U-17´U16によりU-1を計算する。最後にT-1 =δ-1(U-1)により、T-1を計算する。
【００４８】
図２３の回路は、テーブルのビット長を削減した代わりに、１６乗回路、乗算回路が追加されているが、これらの回路規模は図２２の8-bit入出力テーブルと比べて非常に小さいことが知られているため、図２３に示す逆元計算回路は図２２の逆元計算回路より小さい回路規模を実現することができる。ただし、従来例３はPA対策を行っていないため、以下の課題３に示す問題がある。
【００４９】
従来例３の課題
課題３．SPA,DPAに対して安全な処理を実現することができない。
なお、GF(28)の元とGF(((22)2)2)の元を用いた乗算◎は以下の種類が知られている。乗算◎、及びXOR演算○に関しては(law-1), (law-2), (law-3), (law-4) に示される法則が成立する。
【００５０】
・GF(28)の乗算:  以下の１種類のみ定義される。
- c=a◎bで定義される8-bit´8-bit乗算のみ定義される。a,b,cは全て8-bit値。
・ GF(((22)2)2)の乗算: 以下の３種類が定義される。
- c=a◎bで定義される8-bit´8-bit乗算。a,b,cは全て8-bit値。
- c=a◎bで定義される8-bit´4-bit乗算。a,cは8-bit値、bは4-bit値。
- c=a◎bで定義される4-bit´4-bit乗算。a,b,cは全て4-bit値。
【００５１】
(law-1)  a◎b = b◎a
ただし、a,bは8-bitもしくは4-bitデータであり、GF(28)もしくはGF(((22)2)2)の元。
(law-2)  a◎(b○c) = a◎b○a◎c
ただし、a,b,cは8-bitもしくは4-bitデータであり、GF(28)もしくはGF(((22)2)2)の元。
(law-3)  a○a=0
ただし、aは8-bitもしくは4-bitデータであり、GF(28)もしくはGF(((22)2)2)の元。
(law-4)  a◎b = aH◎b || aL◎b
ただし、aは8-bitデータ、aHはaの上位4-bit, aLはaの下位4-bit、bは4-bitデータである。||はビット結合(concatenation)を表す記号であり、例えばビット値(1110)2は(1110)2=(11)2 || (10)2と表記される。また、a, aH, aLの関係はa=aH||aLと表記される。a, aH, aL, bはGF(((22)2)2)の元である。
【００５２】
(law-1)(law-2)は, 整数における乗算´、加算+について成立する交換則a´b=b´aと、結合則a´ (b+c)=a´b+a´cに対応する法則であり、GF(28), GF(((22)2)2)の両方に成立する。(law-3)はXOR演算の定義0○0=0, 1○1=0より明らかであり、GF(28), GF(((22)2)2)の両方に成立する。(law-4)はGF(((22)2)2)のみ成立する特殊な法則である。GF(((22)2)2)における8-bit´4-bit乗算の計算結果は２つの4-bit´4-bit乗算aH◎b, aL◎bの演算結果をビット結合することで得られることを意味している。
【００５３】
GF(28),GF(((22)2)2)以外の一般的なガロア体について、(law-1)(law-2)(law-3)は、任意の２進体GF(2β)及び任意の合成体GF( (…(2β1)…)βγ)について成立する。(law-4)は、合成体GF( (…(2β1)…)βγ)が、βγ=2を満たす場合に成立する。つまり、aが (β1×… ×βγ-1×2)-bitであり、aH, aL, bが(β1×… ×βγ-1)-bitの場合に、a◎bの結果は(law-4)に従う。
【００５４】
以上で述べた従来例１，２，３について、それぞれの特徴に関する比較を表１にまとめる。表１においては、PAに対する安全性、回路規模、及び処理速度の３点について比較を行っている。安全性に関しては「安全」である方が優れている。回路規模に関しては「小」である方が優れている。処理速度に関しては、「高速」である方が優れている。表１から、従来例１，２，３はこれら３点全てについて優れた特徴を持つ方式ではないことが分かる。
【００５５】
＜従来の課題と解決手段について＞
ここでは、表１に示す３つの特徴全てについて優れた効果を発揮する本発明の手段を示す。この手段を説明するために、従来例２と従来例３の単純な組み合わせを示したうえで、本発明による解決手段を示す。最初に、従来例２と３の単純な組み合わせの一つを図２４に示す。
【００５６】
図２４は従来例２と従来例３の組み合わせによる回路を示している。従来例２の問題は、図２０に示したq個のSboxの回路規模が大きいことである。よって図２４は、これらのSbox回路を図２３に示した合成体の回路に置き換えることで、従来例２の欠点であるSbox回路の削減を目標としており、図２３の逆元計算回路のテーブル索引処理について、図２０に示す、乱数に応じたテーブル選択技術を導入している。
【００５７】
図２４の入力データは、M○K○prである。これは、平文Mと拡大鍵KをXORされた値に対して、さらに乱数rにより選択された固定値pr(0£r£q-1)によりマスクされた値である。
【００５８】
この値に対してδ変換を行った値はX=δ(M○K○pr)=δ(M○K)○δ(pr)である。つまり、Xはマスク値δ(pr)によりマスクされている。なお、δ,δ-1変換は線型変換であるため、任意のa,bに対しδ(a○b)=δ(a)○δ(b), δ-1(a○b)=δ-1(a) ○δ-1(b)が成立する関数である。
【００５９】
図２４において、このXとX16の乗算を行う乗算器に対し、ゼロ乗算SPAを用いることで、256通りの鍵Kの候補をq通りに絞ることが可能である。qの値は、理論上は無限に大きくすることが可能であるが、大きくしすぎた場合回路規模が大きくなるため、現実的にはq=4程度の値が用いられる。つまり、256通りの鍵Kの値を4通りに絞り込むことができるため、図２４の回路はゼロ乗算SPAに対して脆弱である。以下では、その攻撃法について説明を行う。
【００６０】
最初に攻撃の前提を説明する。Mは攻撃者にKnownな値、Kは攻撃者にUnknownな値、rは攻撃者にUnknownな値、q個の固定値のセットp0, p1, …, pq-1は攻撃者にKnownな値であると仮定する。この前提をもとに、図２４の回路に対するゼロ乗算SPAの方法について説明する。
【００６１】
ゼロ乗算SPAにより消費電力を観察される対象の乗算器は、X=0によるゼロ乗算が発生した場合、SPAにより観察できる。このSPAはX=0を意味するので、δ(M○K)○δ(pr)=0、つまりδ(M○K)=δ(pr)であることが攻撃者に分かる。両辺にδ-1変換を行うことで、M○K=prを得る。よって、攻撃者はK=M○prであることが分かる。つまり、r=0,1,..,q-1のいずれかに対しK= M○prであることが攻撃者にわかるので、Kの値をq通りに絞り込むことができる。このようなゼロ乗算SPAは、図２４におけるXとX16の乗算を行う乗算器のみならず、X16と4-bitテーブルI’r[x]の出力を乗算する乗算器に対しても同様に可能である。
【００６２】
以上から、図２４に示した回路は、マスク値prによるデータのランダム化を行っているにも関わらず、ゼロ乗算SPAに対して脆弱である。この理由は、prがq個の8-bit固定値の中から一つを乱数によってセレクトされた値(以下、固定値マスク, fixed mask valueと呼ぶ)であるためであり、その結果、256通りのKの値をq通りに絞ることができる。固定値マスクprの代わりに、つまり任意の8-bit乱数値Rをマスク値(以下、乱数値マスク, random mask valueと呼ぶ)として用いる場合、例えゼロ乗算がSPAによって観察されたとしても攻撃者はKの値の候補を絞ることができない。なぜなら、攻撃者がゼロ乗算観察によって得る情報は、K= M○prの代わりにK=M○Rであるが、このときRは任意の8-bit乱数値であり攻撃者にUnknownな値であるので、Kの値の候補の数は256通りより減ることはないからである。
【００６３】
以上より、合成体計算を用いたAES処理において、乗算器に対して、固定値マスクによりマスクされたデータを入力した場合、ゼロ乗算SPAに対して脆弱であり、乱数値マスクによりマスクされたデータを入力した場合、ゼロ乗算SPAに対して安全であるとの結論が得られる。このような、乗算処理に関してゼロ乗算SPAに対して安全性であるための条件を図式化した結果を図２５に示す。
【００６４】
図２５において、X,Yはマスクされていないデータであり、DPA, SPA対策なしのAES処理において計算されるデータである。pr, qsは、乱数r,sによってセレクトされた固定値マスクを表す。R,Sは、乱数値マスクを表す。X○R, Y○Sのように、DPA,SPA対策無しの処理において計算されるデータX,Yに対して、R,Sのような乱数値マスクをXORする処理を乱数値マスク化(random value masking)と呼び、その結果XORされたデータX○R, Y○Sを乱数値マスク化データ(random value masked data)と呼ぶ。同様に、X○pr, Y○qsのように、DPA,SPA対策無しの処理において計算されるデータX,Yに対して、pr,qsのような固定値マスクをXORする処理を固定値マスク化(fixed value masking)と呼び、その結果XORされたデータX○pr, Y○qsを固定値マスク化データ(fixed value masked data)と呼ぶ。
【００６５】
図２５に示すように、ゼロ乗算SPAに対して安全な乗算処理は、c=a◎bで表される乗算処理の２つの入力a,bともに乱数値マスク化データを入力する処理である。もし、乗算に対する２つの入力a,bのうち、片方もしくは両方に乱数値マスク化データではない値が入力される場合、ゼロ乗算SPAに対して脆弱となる。例えば、c=(X○pr)◎(Y○qs)のようにa,bともに固定値マスク化データ、c=(X○pr)◎(Y○S)のようにbのみ乱数値マスク化データ、c=(X○R)◎Yのようにaのみ乱数値マスク化データの場合は、いずれの場合についてもゼロ乗算SPAに対して脆弱である。以上により、ゼロ乗算SPAに対して安全な処理を実現するための条件は、以下の(ZSPA-sec)により表される。
【００６６】
(ZSPA-sec) ゼロ乗算SPAに対して安全な乗算処理は、c=a◎bで表される乗算処理の２つの入力a,bともに乱数値マスク化データを入力する演算である。
【００６７】
下記文献群は、この明細書にて引用する公知例である。
【先行技術文献】
【特許文献】
【００６８】
【特許文献１】特開２００２−３６６０２９号公報
【非特許文献】
【００６９】
【非特許文献１】Thomas S.Messerges, Ezzy A.Dabbish and Robert H.Sloan ”Power Analysis Attacks of Modular Exponentitiation in Smartcards”, Cryptographic Hardware and Embedded Systems(CHES’99), Springer-Verlag, pp.144-157
【非特許文献２】Paul Kocher, Joshua Jaffe, and Benjamin Jun, “Differential Power Analysis,” in proceedings of Advances in Cryptology-CRYPTO’99, Springer-Verlag, 1999, pp. 388-397
【非特許文献３】S. Chari, C. Jutla, J.R. Rao, P. Rohatgi, “An Cautionary Note Regarding Evaluation of AES Candidates on Smart-Cards,” Second Advanced Encryption Standard Candidate Conference, March 1999
【非特許文献４】米NIST(National Institute of Standards and Technology), 標準FIPS197 (Federal Information Processing Standards Publication)http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
【非特許文献５】T. S. Messerge, Ezzy A. Dabbish and Robert H.Sloan ,“Investigations of Power Attacks on Smartcards”. Proceedings of USENIX Workshop on Smartcard Technology, Mar 1999.
【非特許文献６】Takeshi Shimoyama, Hitoshi Yanami, Kazuhiro Yokoyama, Masahiko Takenaka, Kouichi Itoh, Jun Yajima, Naoya Torii, Hidema Tanaka "The Block Cipher SC2000", Fast Software Encryption (FSE 2001), pp.312-327, LNCS vol.2355
【非特許文献７】M.Akkar, RBevan, P.Dischamp, and D. Moyart, "Power Analysis, What Is Now Possible... ", Asiacrypt 2000)
【非特許文献８】Thomas S. Messerges, “Securing the AES Finalists Against Power Analysis Attacks,” in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, April 2000.
【非特許文献９】Akashi Satoh, Sumio Morioka, Kohji Takano and Seiji Munetoh: "A Compact Rijndael Hardware Architecture with S-Box Optimization", ASIACRYPT2001, LNCS Vol.2248, pp.239-254, Dec 2001.
【非特許文献１０】Akashi Satoh, Sumio Morioka, Kohji Takano and Seiji Munetoh: "A Compact Rijndael Hardware Architecture with S-Box Optimization", ASIACRYPT2001, LNCS Vol.2248, pp.239-254, Dec 2001.
【非特許文献１１】"A Compact Rijndael Hardware Architecture with S-Box Optimization"
【発明の開示】
【発明が解決しようとする課題】
【００７０】
上記のように、従来例を単純に組み合わせた場合、前述した課題１、課題２、課題３を全て解決したSPA,DPA対策つきAES暗号装置を実現することができない。よって、これらの問題を全て解決することが、本発明の課題である。
【課題を解決するための手段】
【００７１】
本発明の第１の態様は、非線型変換を２進体又は合成体における乗算処理で演算する共通鍵ブロック暗号化装置を前提とする。
【００７２】
まず、非線型変換以外の演算処理を、固定値によるマスク（以下「固定値マスク」）をエクスクルーシブオア演算（以下「XOR」）して得た固定値マスク化入力データにより実行する演算器を有する。
【００７３】
次に、非線型変換における乗算処理において、全ての入力データに固定値マスクをXORして固定値マスク化入力データに変換し、更に乱数値によるマスク（以下「乱数値マスク」）をXORして乱数値マスク化入力データに変換するXOR演算回路と、そのXOR演算回路から出力された乱数値マスク化入力データに基づいて乗算処理を実行する乗算器と、その乗算器から出力される乱数値マスク化出力データを固定値マスク化出力データ再変換して出力する乱数値マスク−固定値マスク変換回路を有する。
【００７４】
上記本発明の第１の態様をベースとして、本発明の第２の態様は、以下の構成を有する。
【００７５】
即ち、本発明の第１の態様における乗算処理は、非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR,S、固定値マスクをfr、○をXOR演算回路、◎を乗算器とし、R’=R○pr,S’=S○qrのように固定値マスクに乱数をXORした乱数値マスクをR’,S’として、
J1=(X○R’)◎(Y○S’)
J2=S’◎(X○R’)
J3=R’◎(Y○S’)
J4=R’◎S’
J0=J1○J2○J3○J4○fr
を演算して出力J0=X◎Y○frを演算する演算回路又はこれと等価な演算回路によって構成される。
【００７６】
上記本発明の第１の態様をベースとして、本発明の第３の態様は、以下の構成を有する。
【００７７】
即ち、本発明の第１の態様における乗算処理は、非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR、固定値マスクをfr、○をXOR演算回路、◎を乗算器とし、R’=R○prのように固定値マスクに乱数をXORした乱数値マスクをR’として、
J1=(X○R’)◎(Y○R’)
J2=R’◎((X○R’)○(Y○R’)○R’)
J0=J1○J2○fr
を演算して出力J0=X◎Y○frを演算する演算回路又はこれと等価な演算回路によって構成される。
【００７８】
上記本発明の第１の態様をベースとして、本発明の第４の態様は、以下の構成を有する。
【００７９】
即ち、本発明の第１の態様における乗算処理は、βγ=2を満たす合成体GF((…(2β1)…)βγ)における演算であり、その乗算処理は、非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR,S、固定値マスクをfr、○をXOR演算回路、◎を乗算器とし、R’=R○pr,S’=S○qrのように固定値マスクに乱数をXORした乱数値マスクをR’,S’とし、R’H及びR’LをそれぞれR’を上位及び下位に半分ずつ分割した場合のビット値とし、J2||(0000)2をJ2の下位側にそれと同じビット数のゼロビット列を結合する演算として、
J1=(X○R’)◎(Y○R’L)
J2=(Y○R’H)◎R’H○R’H2
J3=((X○R’)○(Y○R’L)○R’L)◎R’L
J0=J1○(J2||(0000)2)○J3○fr
を演算して出力J0=X◎Y○frを演算する演算回路又はこれと等価な演算回路によって構成される。
【００８０】
上記本発明の第１の態様をベースとして、本発明の第５の態様は、以下の構成を有する。
【００８１】
即ち、本発明の第１の態様における乗算処理は、βγ=2を満たす合成体GF((…(2β1)…)βγ)における演算であり、その乗算処理は、非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR,S、固定値マスクをfr、○をXOR演算回路、◎を乗算器とし、R’=R○pr,S’=S○qrのように固定値マスクに乱数をXORした乱数値マスクをR’,S’とし、R’H及びR’LをそれぞれR’を上位及び下位に半分ずつ分割した場合のビット値とし、X’H及びX’LをそれぞれX’を上位及び下位に半分ずつ分割した場合のビット値として、
J1=(XH○R’L)◎(Y○R’L)
J2=((XH○R’L)○(Y○R’L)○R’L)◎R’L
J3=(XL○R’L)◎(Y○R’L)
J4=((XL○R’L)○(Y○R’L)○R’L)◎R’L
J0=((J1○J2)||(J3○J4))○fr
を演算して出力J0=X◎Y○frを演算する演算回路又はこれと等価な演算回路によって構成される。
【００８２】
上述の本発明の第２又は第３の態様の乗算処理の演算回路を用いて、２進体もしくは合成体におけるU16◎Uの乗算を実行するように構成することができる。
【００８３】
また、上述の本発明の第２、第４又は第５の態様の乗算処理の演算回路を用いて、２進体もしくは合成体におけるU-17◎U16の乗算を実行するように構成することができる。
【００８４】
本発明の第６の態様は、４ビットのcr,８ビットのgr,４ビットのdr,及び８ビットのfrをそれぞれ乱数ｒによって選択される固定値マスクとし、８ビットのR、R’を乱数値マスクとして、８ビットの入力データU○grから８ビットの出力データU-1○frを、βγ=2を満たす合成体GF((…(2β1)…)βγ)において演算する共通鍵ブロック暗号化装置を前提として、以下の構成を有する。
【００８５】
まず、乱数値マスクをXORさせて実行するU16◎U計算により、入力データU○grから4ビット値U17○crを計算すると共に、それぞれ８ビットのU16○R’及びR’を計算するmaskedU16◎U計算回路を有する。
【００８６】
次に、そのmaskedU16◎U計算回路から出力されるU17○crから４ビットのU-17○drを計算する、乱数rによって選択された4ビット対4ビット変換テーブル回路を有する。
【００８７】
そして、4ビット対4ビット変換テーブル回路から出力されるU-17○drとmaskedU16◎U計算回路から出力されるU16○R’及びR’をそれぞれ入力し、出力データU-1○frを計算するmaskedU-17◎U16計算回路を有する。
【００８８】
上記本発明の第６の態様をベースとして、本発明の第７の態様は、以下の構成を有する。
【００８９】
即ち、maskedU16◎U計算回路は、固定値マスクgr,、入力データU○gr、及び乱数値マスクRを入力して、U○R=(U○gr)○R○gr、U16○R16=(U○R)16、及びR16の３つのデータを計算する演算回路群と、
J1=(U○R)◎(U16○R16)
J2=R16◎(U○R)
J3=R◎(U16○R16)
J4=R◎R16
J0=J1○J2○J3○J4○cr
の演算又はこれと等価な演算を実行する演算回路群とから構成され、J0をU17○crとして4ビット対4ビット変換テーブル回路へ入力させ、U16○R16及びR16をU16○R’及びR’としてmaskedU-17◎U16計算回路に入力させる。
【００９０】
上記本発明の第６の態様をベースとして、本発明の第８の態様は、以下の構成を有する。
【００９１】
即ち、maskedU16◎U計算回路は、固定値マスクgr,入力データU○gr、及び乱数値マスクRを入力して、U○R=(U○gr)○R○gr及びU16○R=(U○R)16○R○R16の２つのデータを計算する演算回路群と、
J1=(U○R)◎(U16○R)
J2=R◎((U○R)○(U16○R)○R)
J0=J1○J2○cr
の演算又はこれと等価な演算を実行する演算回路群とから構成され、J0をU17○crとして4ビット対4ビット変換テーブル回路へ入力させ、U16○R及びRをU16○R’及びR’としてmaskedU-17◎U16計算回路に入力させる。
【００９２】
上記本発明の第６の態様をベースとして、本発明の第９の態様は、以下の構成を有する。
【００９３】
即ち、maskedU-17◎U16計算回路は、4ビット対4ビット変換テーブル回路から出力されるU-17○dr、固定値マスクdrとfr、maskedU16◎U計算回路から出力されるU16○R’,R’、及び内部で発生させた乱数Sを入力して、U-17○S○dr=(U-17○dr)○S、及びS○drの２つのデータを計算する演算回路群と、
J1=(U-17○S○dr)◎(U16○R’)
J2=R’◎(U-17○S○dr)
J3=(S○dr)◎(U16○R’)
J4=(S○dr)◎R’
J0=J1○J2○J3○J4○fr
の演算又はこれと等価な演算を実行する演算回路群とから構成され、J0をU-1○frとして出力する。
【００９４】
上記本発明の第６の態様をベースとして、本発明の第１０の態様は、以下の構成を有する。
【００９５】
即ち、maskedU-17◎U16計算回路は、4ビット対4ビット変換テーブル回路から出力されるU-17○dr、固定値マスクdrとfr、maskedU16◎U計算回路から出力されるU16○R’,R’、及びR’の上位4ビットであるR’H、R’の下位4ビットであるR’Lを入力して、U16○(dr||dr)○R’,U-17○dr○R’L,dr○R’,U-17○dr○R’H,dr○R’Hの５つのデータを計算する演算回路群と、
J1=(U16○(dr||dr)○R’)◎(U-17○dr○R’H)
J2=(U-17○dr○R’H)◎(dr○R’H)○（dr○R’H）2
J3=((U16○(dr||dr)○R’)○(U-17○dr○R’L)○(dr○R’L))◎(dr○R’L)
J0=J1○(J2||(0000)2)○J3○fr
の演算又はこれと等価な演算を実行する演算回路群とから構成され、J0をU-1○frとして出力する。
【００９６】
上記本発明の第６の態様をベースとして、本発明の第１１の態様は、以下の構成を有する。
【００９７】
即ち、maskedU-17◎U16計算回路は、4ビット対4ビット変換テーブル回路から出力されるU-17○dr、固定値マスクdrとfr、maskedU16◎U計算回路から出力されるU16○R’,R’、及びR’の上位4ビットであるR’H,、R’の下位4ビットであるR’L、を入力して、U16HとU16Lをそれぞれ8ビット値U16の上位4ビットと下位4ビットとして、U16H○R’L=(U16○R’の上位4ビット)○R’L○R’H、U-17○R’L=(U-17○dr)○R’L○dr、U16L○R’L=(U16○R’の下位4ビット)の３つのデータを計算する演算回路群と、
J1=(U16H○R’L)◎(U-17○R’L)
J2=((U16H○R’L)○(U-17○R’L)○R’L)◎R’L
J3=(U16L○R’L)◎(U-17○R’L)
J4=((U16L○R’L)○(U-17○R’L)○R’L)◎R’L
J0=((J1○J2)||(J3○J4))○fr
の演算又はこれと等価な演算を実行する演算回路群とから構成され、J0をU-1○frとして出力する。
【００９８】
上述の本発明の第１、第２、第３、第６、又は第７、８の何れかの態様において、非線型変換における乗算処理は、GF(28)で表される２進体において実行されるように構成することができる。このとき、２進体GF(28)は、例えば多項式x8+x4+x3+x+1の剰余で表される。
【００９９】
また、上述の第１〜第１１の何れかの態様において、非線型変換における乗算処理は、GF(((22)2)2)で表される合成体において実行されるように構成することができる。このとき、合成体GF(((22)2)2)は、例えば多項式GF((24)2)=x2+x+(1100)2,GF((22)2)=x2+x+(10)2,GF(22)=x2+x+1の剰余で表される。
【０１００】
本発明は、上述の第１乃至第１１の何れかの態様による暗号化装置を組み込んだ組込装置として実施することもできる。
【発明の効果】
【０１０１】
本発明は、共通鍵暗号を行う暗号プロセッサにするPA対策を行うための実装技術である。本技術を用いることで、代表的な共通鍵アルゴリズムであるAESをはじめとした暗号処理の秘密鍵の解読を困難にし、スマートカード等の組み込み機器の安全性を高めることができる。
【図面の簡単な説明】
【０１０２】
【図１】共通鍵暗号処理の一般的な構成を表す図である。
【図２】一般的に知られているAES暗号アルゴリズムの構成である。
【図３】一般的に知られているAESにおけるRoundKey処理である。
【図４】一般的に知られているAESにおけるSubbyte処理である。
【図５】一般的に知られている AESにおけるMixColumn処理である。
【図６】一般的に知られている AESにおけるShiftRow処理である。
【図７】DPA対策無しの一般的な共通鍵暗号における拡大鍵XOR処理である。
【図８】DPA対策無しの一般的な共通鍵暗号における線形変換処理である。
【図９】DPA対策無しの一般的な共通鍵暗号における非線形変換処理である。
【図１０】図７と図９を組み合わせた処理である。
【図１１】図１０の処理についてwjの入出力に関係するビットを取り出した図である。
【図１２】スマートカードの消費電力の例である。
【図１３Ａ】電力差分曲線を作成し、スパイクが出現した例である。
【図１３Ｂ】電力差分曲線を作成し、スパイクが出現しなかった例である。
【図１４】図７と図８と図９と組み合わせた構成である。
【図１５】DPAにより秘密鍵解読を行うための、消費電力測定箇所に関する条件である。
【図１６】ゼロ乗算SPAによる攻撃可能な暗号回路の第一の構成を表す図である。
【図１７】ゼロ乗算SPAによる攻撃可能な暗号回路の第二の構成を表す図である。
【図１８】一般的なDPA対策なしのAES回路を表す図である。
【図１９】図１８のDPA対策なしAES回路に対し、従来例１のDPA対策を適用した回路である。
【図２０】図１８のDPA対策なしAES回路に対し、従来例２のDPA対策を適用した回路である。
【図２１】一般的なAESのSbox回路の構成を表す図である。
【図２２】テーブルを用いた一般的な逆元計算回路を表す図である。
【図２３】従来例３に記されている、合成体を用いた逆元計算回路である。
【図２４】従来例２と従来例３の単純な組み合わせによる逆元計算回路である。
【図２５】ゼロ乗算SPAに安全な処理を実現するための、乗算器に対する入力データの条件であり、本発明の基本アイデアを導出するための着眼点を表した図である。
【図２６】本発明の基本アイデアによる乗算回路を表す図である。
【図２７】本発明による乗算回路の第一の構成図である。(基本原理-1)
【図２８】本発明による乗算回路の第二の構成図である。(基本原理-2)
【図２９】本発明による乗算回路の第三の構成図である。(基本原理-3)
【図３０】本発明による乗算回路の第四の構成図である。(基本原理-4)
【図３１】本発明の技術を用いた逆元計算処理のフレームワークを表す図である。
【図３２】masked U16×U計算に基本原理-1を用いる場合の第１の実施形態である。
【図３３】masked U16×U計算に基本原理-2を用いる場合の実施形態第２の実施形態である。
【図３４】masked U-17×U16計算に基本原理-1を用いる場合の第３の実施形態である。
【図３５】masked U-17×U16計算に基本原理-3を用いる場合の第４の実施形態である。
【図３６】図３６は、masked U-17×U16計算に基本原理-4を用いる場合の第５の実施形態である。
【発明を実施するための形態】
【０１０３】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
【０１０４】
本発明の基本原理
本発明は、「背景技術」において指摘した課題１，２，３を全て解決したAES暗号処理装置を実現する。そのために、以下の(条件-1), (条件-2), (条件-3), (条件-4)を満たした処理を行う。
【０１０５】
(条件-1) AESのSubbyte処理以外について、従来例2による処理を行う。
(条件-2) AESのSubbyte処理は、合成体による逆元演算をSPA,DPAに安全な方法で実行。
(条件-3) (条件-2)の合成体演算におけるテーブル処理は、従来例２による処理を行う。
(条件-4) (条件-2)の合成体演算における乗算には、常に乱数値マスク化データを入力。
【０１０６】
(条件-1)を導入することで、AESのSubbyte処理以外について、課題1、課題２、課題３を同時に解決する。なぜなら、従来例２の唯一の問題であった課題1は、Subbyte回路に関してのみの課題であるため、Subbyte処理に従来例2を用いなければこれらの課題は全て解決される。後は、AESのSubbyte処理に関して課題１，２，３を解決できるならば、AES処理全体として全ての課題を解決できる。
【０１０７】
(条件-2)を導入することで、AESのSubbyte処理に関して、課題1を解決する。Subbyte処理において回路規模が大きい逆元演算を、図２３に示すような従来例３の合成体による処理に置き換えることで、回路規模の削減を実現する。ただし、従来例３の合成体の演算をそのまま用いた場合、SPA, DPAに対して安全ではないため、課題３が未解決である。また、SPA,DPA対策を行う場合についても、課題２をクリアする必要がある。
【０１０８】
(条件-3)は、図２３に示す合成体を用いた逆元演算のうち、テーブル演算については、従来例２によるテーブル演算を行う。つまり、q個の事前計算テーブルを準備し、そのうちの一つを乱数により選択する方法を用いる。ｑ個の事前計算テーブルを必要とするため、課題１に示される問題の発生が危惧されるが、８ビット入出力テーブルによる逆元演算ではなく、合成体による４ビット入出力テーブル演算であるので、個々のテーブルの回路規模を８ビット入出力テーブルの1/64に抑えることができるため、課題１の問題は発生しない。よって、 図２３におけるテーブル演算に関しては課題１，２，３全てを解決できる。もし、このテーブル演算処理を従来例１の方法で実行する場合、乱数に応じてテーブルを更新する必要がある。４ビットテーブルの更新は16cycleを必要とする。一般的にテーブル演算は1cycleで実行されるため、このテーブル更新によるペナルティは処理速度を大きく低下させ、課題２に示される問題が発生する。
【０１０９】
(条件-4)は、図２３に示す合成体を用いた逆元演算のうち、乗算に関するSPA,DPA対策法の方針である。前述の(ZSPA-sec)で述べたように、乗算処理に入力するデータは、全て乱数値マスク化データとすることで、ゼロ乗算SPA対策となる。また乱数値マスク化データを用いることで、乗算に関するDPA対策法も同時に実行できる。よって、課題３を解決する。また乱この乗算処理は1cycleで実行することができ、乱数に応じてテーブルを更新する処理のような処理速度に関するペナルティを発生しないため、課題２を解決する。
【０１１０】
本発明は、以上の(条件-1)〜(条件-4)を全て満たしたAES処理を実行する。これらの条件を全て満たすための基本方針は、合成体の逆元演算における乗算処理のみに対して、乱数値マスクを用いたマスク処理を実行し、それ以外の処理については固定値マスクを用いたマスク処理を実行することである。これを実現するための基本アイデアを以下で述べる。
【０１１１】
＜課題を解決するための基本アイデア＞
乗算処理のみ乱数値マスク化データによる処理を行い、それ以外を固定値マスク化データによる処理を行うための、本発明の基本アイデアを図２６に示す。
【０１１２】
従来例の場合、図２６の上段に示すように、乗算器の片方、もしくは両方の入力が固定値マスク化データである。これに対し、本発明では、図２６下段に示すように、固定値マスク化データに対して、乱数値マスクをXORすることで、固定値マスク化データを乱数値マスク化データに変換する。つまり、固定値マスクprによりマスク化されたデータX○pr は固定値マスク化データであるが、このデータに対してさらに乱数RをXORするとX○R○prとなる。Rが任意の8-bit値をとり得る乱数値ならば、R’=R○prで表されるR’も同様に任意の8-bit値をとり得る乱数値であるので、X○R○pr =X○R’は乱数値マスク化データとなる。
【０１１３】
固定値マスクqrによりマスク化されたデータY○qrに対しても同様に乱数SをXORすることで、 Y○S○qr =Y○S’は乱数値マスク化データとなる。これらの乱数値マスク化データに対して、(X○R’)◎(Y○S’)の乗算を行う、つまり乗算器の２つの入力ともに乱数値マスク化データであるので、本発明の方式はSPA,DPAに対して安全な処理を実現する。ただし、この乗算の結果出力されるデータも乱数値マスク化データである。(条件-1)に示すように、本発明はSubbyte処理以外は従来例２による処理、つまり固定値マスク値化データによる処理を行う必要がある。よって、乱数値マスク化データ同士を乗算した結果、出力される乱数値マスク化データを固定値マスク化データに変換する必要がある。この処理は、図２６の乱数値マスク-固定値マスク変換処理回路によって実行される。
【０１１４】
図２６は本発明における乗算処理のアイデアを抽象的に表現したものであり、具体的な演算方法は様々な方法が考えられる。合成体を用いた逆元演算処理においては、U17=U16◎UとU-1=U-17◎U16の２種類が実行されるが、本発明の乗算処理がこれらの２種類のいずれかを実行するかによって、R,Sの与え方、及び乱数値マスク-固定値マスク変換処理の計算方法が異なる。これら２種類の両方、もしくはいずれかの乗算処理に適用可能な本発明の乗算方式、以下の(基本原理-1)、(基本原理-2)、(基本原理-3)、(基本原理-4)に示す。(基本原理-1)、(基本原理-2)、(基本原理-3)、(基本原理-4)の技術が適用可能な乗算の種類（U17=U16◎U及びU-1=U-17◎U16）の対応表を表2に示す。
【０１１５】
以下の(基本原理-1)〜(基本原理-4)の説明においては、PA対策無しの通常のAES処理で計算されるデータをX,Y、乱数値マスクをR,S、固定値マスクをfrと記述する。R’=R○pr,S’=S○qrのように、固定値マスクに乱数をXORした乱数値マスクをR’,S’と表記している。
【０１１６】
[基本原理-1]
U17=U16◎UとU-1=U-17◎U16の両方の乗算に適用可能な方法である。(図２７)
J1 =  (X○R’)◎(Y○S’)
J2 =  S’ ◎(X○R’) 
J3 =  R’ ◎(Y○S’)
J4 =  R’ ◎S’
ただし、U17=U16◎UならX,Y,R’,S’は8-bit、U-1=U-17◎U16ならX,R’は8-bit, Y,S’は4-bitである。
【０１１７】
J1,J2,J3,J4を計算し、J0 = J1○J2○J3○J4○frによりJ0=X◎Y○frを得る。基本原理-1によりX◎Y○frを計算する回路を、記号としてMaskedMul_1(X○R’, Y○S’,R’,S’,fr)により表現する。また、(law-1)〜(law-3)を考慮すると、
J1 =  X◎Y○ X◎S’ ○ Y◎R’○ R’◎S’
J2 =  S’ ◎X○ S’ ◎ R’ 
J3 =  R’ ◎Y○ R’ ◎S’
J4 =  R’ ◎S’
であるので、J0 = J1○J2○J3○J4○fr= X◎Y○frを確認できる。
【０１１８】
J1〜J4の乗算処理への入力データは全て乱数値マスク化データであるため、SPA,DPAに対して安全な処理を実現できる。この処理に必要となる乗算の回数は以下の通り。
【０１１９】
-U17=U16◎Uの場合:8-bit´8-bit乗算４回、
-U-1=U-17◎U16の場合:8-bit´4-bit乗算４回（もしくは4-bit´4-bit乗算8回）。
【０１２０】
基本原理-1は(law-1)〜(law-3)に基づいているため、任意の２進体と合成体の演算に適用可能である。
【０１２１】
[基本原理-2]
基本原理-1によるPA対策を用いた場合、PA対策なしにおける1回の乗算が4回の乗算に置き換えられる。この乗算回数の増加は、PA対策に伴うオーバヘッドとなる。よって、この置き換え後の乗算回数を減らすことが、PA対策に伴うオーバヘッドを減少させることになる。このオーバヘッドの減少を行うために、基本原理-1におけるS’に関して、S’=R’による特殊化を行ったものが(基本原理-2)である。この特殊化を行うことで、演算処理が簡略化されるため、PA対策なしにおける１回の乗算が２回の乗算に置き換えられる。
【０１２２】
ただし、S’=R’による特殊化は、S’とR’のデータビット長が等しい場合のみ可能である。よって、PA対策なしにおける乗算の２つの入力データのビット長が等しい場合のみ(基本原理-2)を適用できる。つまり、U17=U16◎Uに示される8-bit´8-bit乗算のみに対して適用可能な方法であり(図２８)、U-1=U-17◎U16に示される8-bit´4-bit乗算には適用できない。
【０１２３】
J1 =  (X○R’)◎(Y○R’)
J2 =  R’ ◎( (X○R’) ○(Y○R’) ○R’) 
ただし、X,Y,R’は8-bitである。J1,J2を計算し、J0 = J1○J2○frによりJ0=X◎Y○frを得る。基本原理-2によりX◎Y○frを計算する回路を、記号としてMaskedMul_2(X○R’,Y○R’,R’,fr)により表現する。また (law-1)〜(law-3)を考慮すると、
J1 =  X◎Y ○ X◎R’ ○ Y◎R’ ○ R’2
J2 =  X ◎R’ ○ Y’ ◎ R’ ○R’2
であるので、J0 = J1○J2○fr= X◎Y○frを確認できる。
【０１２４】
J1,J2の乗算処理への入力データは全て乱数値マスク化データであるため、SPA,DPAに対して安全な処理を実現できる。この処理に必要となる乗算の回数は以下の通り。
- U17=U16◎Uの場合:8-bit´8-bit乗算２回
基本原理-2は(law-1)〜(law-3)に基づいているため、任意の２進体と合成体の演算に適用可能である。
【０１２５】
[基本原理-3]
基本原理-2を用いることで、本発明1よりPA対策に伴う乗算回数のオーバヘッドを減少させることができるが、その技術を適用可能となるのはU17=U16◎Uに示される8-bit´8-bit乗算のみであり、U-1=U-17◎U16に示される8-bit´4-bit乗算には適用できなかった。この問題を改善するために、U-1=U-17◎U16に示す8-bit´4-bit乗算には適用可能であり、かつ基本原理-1より乗算回数のオーバヘッドを低減させる方法が以下に示す基本原理-3である。
【０１２６】
基本原理-2の基本的な考え方は、Xの乱数値マスクR’とYの乱数値マスクS’について、S’=R’による共通化を行うことで計算を簡略化することであった。この考え方はX,Yのビット長が等しい場合のみに可能であるが、ビット長が異なる場合はS’=R’とすることが不可能である。よって、ビット長が異なる場合、２つの乱数値マスクを同一とさせることは不可能であるが、部分的に一致させることは可能である。つまり、R’を8-bit, S’を4-bitとした場合、R’=R’H||R’Lのように、R’を上位4-bit値R’Hと下位4-bit値R’Lに分けた場合、S’=R’Lとすることで、乱数値マスクを部分的に一致させることができる。この考え方を用いることで、基本原理-1より乗算回数のオーバヘッドを低減し、U-1=U-17◎U16に示される8-bit´4-bit乗算に適用可能な方式を以下に示す(図２９)。
【０１２７】
J1 = (X○R’)◎(Y○R’L )
J2 = (Y○R’H) ◎R’H ○ R’H2
J3 = ((X○R’ ) ○ (Y○R’L) ○R’L) ◎ R’L
ただし、X,R’は8-bit, Y, R’H, R’Lは4-bitであり、R’=R’H||R’Lである。J1,J2,J3を計算し、J0 = J1○(J2 || (0000)2 )○J3○frによりJ0=X◎Y○frを得る。基本原理-3によりX◎Y○frを計算する回路を、記号としてMaskedMul_3(X○R’,Y○R’H,Y○R’L,R’H,R’L,fr)により表現する。また、(law-1)〜(law-4)を考慮すると、
【０１２８】
J1= (XH ○ R’H) ◎ (Y○R’L) || (XL○R’L) ◎ (Y○R’L)
= (XH ◎ Y ○ XH◎R’L ○ Y◎R’H ○ R’ H◎R’L) || (XL ◎ Y ○ XL◎R’L○ Y◎R’L○ R’ H◎R’L2) 
J2 || (0000)2  = (Y ◎R’H) || (0000)2 
J3= (XH ○ R’H) ◎R’L || (XL○R’L○Y○R’L○ R’L) ◎R’L
= (XH◎R’L ○ R’ H◎R’L) || (XL◎ R’L○ YL◎R’L ○ R’L2)
である。ただし、XH, XLはX=XH||XLを満たす4-bit値である。よって、J0 = J1○(J2 || (0000)2 )○J3○fr = ( (XH◎Y) || (XL◎Y) ) ○ frであるが、(law-4)より、X◎Y= ( (XH◎Y) || (XL ◎ Y) )を考慮すると、J0 = J1○(J2 || (0000)2 )○J3○fr =X◎Y○frを導出できる。
【０１２９】
J1,J2,J3の乗算処理への入力データは全て乱数値マスク化データであるため、SPA,DPAに対して安全な処理を実現できる。この処理に必要となる乗算の回数は以下の通りである。
-U17=U16◎Uの場合:8-bit´4-bit乗算２回、4-bit´4-bit乗算１回、4-bit´4-bit自乗算1回。
【０１３０】
さらに、8-bit´4-bit乗算1回は4-bit´4-bit乗算２回に相当すること、4-bit´4-bit自乗算1回は4-bit´4-bit乗算１回よりコストが安い演算(つまり、4-bit´4-bit乗算では１回未満のコスト)ことを考慮すると、基本原理-3に必要な乗算回数は以下のようにも表現できる。 
-U17=U16◎Uの場合:8-bit´4-bit乗算φ回 （2.5<φ<3）
基本原理-3は(law-1)〜(law-4)に基づいているため、βγ=2を満たす合成体GF((…(2β1)…)βγ)の演算に対して適用可能である。
【０１３１】
[基本原理-4]
U-1=U-17◎U16に示される8-bit´4-bit乗算に関して、基本原理-1の場合４回の8-bit´4-bit乗算を必要とするのに対して、基本原理-3を用いることでφ回の8-bit´4-bit乗算(2.5<φ<3)まで減少させることに成功した。8-bit´4-bit乗算の性質を利用することで、この乗算回数をさらに減少させることができる方法が基本原理-4である。(law-4)より、8-bit´4-bit乗算は２つの4-bit´4-bit乗算に分解できる。基本原理-4では、これら個々の4-bit´4-bit乗算に入力される２つのデータに対し、(基本原理-2)と同様に、同一の乱数値のXORを行う(図３０)。
【０１３２】
J1 = (XH○ R’L) ◎(Y○R’L) 
J2 = ( (XH○R’L)○ (Y○R’L) ○ R’L) ◎R’L
J3= (XL○ R’L) ◎(Y○R’L)
J4= ( (XL○R’L) ○ (Y○R’L) ○ R’L) ◎ R’L
ただし、Xは8-bit、XH, XL, Y, R’Lは4-bitであり、X=XH||XLである。J1,J2,J3,J4を計算し、J0 = ( (J1○J2) || (J3○J4) ) ○frによりJ0=X◎Y○frを得る。 (law-1)〜(law-4)を考慮すると、
【０１３３】
J1○J2=(XH ○ R’L) ◎ (Y○R’L) ○(XH○R’L○Y○R’L○ R’L) ◎R’L
= XH◎Y ○ XH◎R’L ○ Y◎R’L ○ R’L2○ XH◎R’L ○ Y◎R’L ○ R’L2 = XH◎Y
J3○J4=(XL ○ R’L) ◎ (Y○R’L) ○(XL○R’L○Y○R’L○ R’L) ◎R’L
= XL◎Y ○ XL◎R’L ○ Y◎R’L ○ R’L2○ XL◎R’L ○ Y◎R’L ○ R’L2 = XL◎Y
である。基本原理-4によりX◎Y○frを計算する回路を、記号としてMaskedMul_4(XH○R’L,XL○R’L,Y○R’L, R’L,fr)により表現する。(law-4)から、X◎Y= ( (XH◎Y) || (XL ◎ Y) )であるので、J0 = ( (J1○J2) || (J3○J4) ) ○fr =X◎Y ○ frを確認できる。
【０１３４】
J1,J2,J3,J4の乗算処理への入力データは全て乱数値マスク化データであるため、SPA,DPAに対して安全な処理を実現できる。この処理に必要となる乗算の回数は以下の通りである。 
-U17=U16◎Uの場合: 4-bit´4-bit乗算4回(8-bit´4-bit乗算２回と等価)。
基本原理-4は(law-1)〜(law-4)に基づいているため、βγ=2を満たす合成体GF((…(2β1)…)βγ)の演算に対して適用可能である。
【０１３５】
本発明の各実施形態の構成
基本原理-1, 基本原理-2, 基本原理-3, 基本原理-4に記した本発明の技術を、図２３に示した従来例3に示した逆元演算に適用した実施形態を以下に示す。以下の実施形態の説明では、図３１に示すように、逆元演算の処理のコア部分、つまり合成体の計算部分に対して本発明を用いた場合の実施形態を示す。本発明の実施形態において説明する逆元演算では、共通して以下のI〜IVのステップを実行する。
【０１３６】
ｉ．逆元演算回路はGF(28)の元T○prを入力することで、GF(28)の元T-1○qrを計算し出力する回路である。ただし、pr,qrは乱数ｒによって選択される固定値マスクを表す。
【０１３７】
ｉｉ．入力されたGF(28)の元T○grにδ変換を行い、δ(T○pr)=δ(T)○δ(pr)=U○grを計算する。ただし、grは乱数ｒによって選択される固定値マスクであり、gr=δ(pr)を満たす。
【０１３８】
ｉｉｉ．U○grに対して、乗算とテーブル演算を組み合わせた演算を行うことで、U○grから、U-1○frを計算する。ただし、frは乱数ｒによって選択される固定値マスクを表す。
【０１３９】
ｉｖ．U-1○frに対して、δ-1変換を行うことでδ-1(U-1○fr)=δ-1(U-1)○δ-1(fr)=T-1○qrを計算する。ただし、qrとfrの間には、δ-1(fr)= qrの関係式が成立する。
【０１４０】
以下では、上記のｉ〜ｉｖステップのうち、ｉｉｉに記した逆元演算のステップに関して、基本原理-1, 基本原理-2, 基本原理-3, 基本原理-4に記した本発明の技術を適用することで、SPA,DPA対策を実現する実施形態について説明する。
【０１４１】
ｉｉｉの計算を実行するためのフレームワークを図３１に示す。
図３１の計算は、「masked U16◎U計算」、「masked U-17◎U16計算」２つの乗算処理から構成される。これらは、データのマスク処理を実行しながら乗算処理を行う回路であり、それぞれ以下の機能を有する。
【０１４２】
・masked U16◎U計算
この回路の基本機能は、U○grを入力することで、U17○crを計算し出力することである。ただし、cr,grは乱数ｒによって選択される固定値マスクであり、crは4-bit, grは8-bitである。この固定値マスクcr, grはこの回路に対する入力として与える。この回路内部で乱数値マスク化されたデータによる乗算を実行するために、乱数Rを入力として与える。また、U16○R’, R’で表される２つのデータを出力し、masked U-17◎U16計算への入力として与える。R’として出力される値は、この回路の実施形態によって異なり、基本原理-1の乗算回路を用いた[第１の実施形態]の場合R’=R16であり、基本原理-2の乗算回路を用いた[第２の実施形態]の場合R’=Rである。[第１の実施形態][第２の実施形態]の詳細については、後に述べる。
【０１４３】
・masked U-17◎U16計算
この回路の基本機能は、U-17○dr及びU16○R’、乱数R’を入力することで、U-1○frを計算し出力することである。ただし、dr,frは乱数ｒによって選択される固定値マスクであり、drは4-bit, frは8-bitである。この固定値マスクdr, frはこの回路に対する入力として与える。
【０１４４】
図３１は、入力データU○grから出力データU-1○frを計算する処理である。この計算処理全体の流れを説明する。
【０１４５】
masked U16◎U計算により、8-bit値U○grから4-bit値U17○crを計算する。このU17○crに対し、乱数rによって選択された4-bita4-bit変換テーブルI’r[x]を用いてU-17○drを計算する。GF(((22)2)2)の元における4-bita4-bit逆元変換テーブルをI[x]=x-1と表した場合、I’h[x]はh-0,1,..,q-1全てに関して、I’h[x]=I[x○ch] ○dhで与えられる変換を行うテーブルである。U17○crに対しI’r[x]による変換を行うことで、I’[U17○cr] = I[(U17○cr)○cr]○dr = I[U17]○dr = (U17)-1○dr = U-17○drを計算することができる。このデータは、masked U-17◎U16計算に対する２つの入力データの１番目の入力となる。
【０１４６】
masked U-17◎U16計算に対する２番目の入力データとして、U16○R’の計算を行う。後に述べる[第１の実施形態]の場合、U16○R’は、masked U16◎U計算の過程において計算される(U○R)16=U16○R16のデータを用いるため、R’=R16となる。後に述べる[第２の実施形態]の場合、masked U16◎U計算の過程において計算されるU16○Rの値を用いるため、R’=Rとなる。
【０１４７】
なお、(U○R)16=U16○R16が成立する理由は、16乗演算は２乗演算を４回繰り返す演算であり、かつ１回の２乗演算の結果は(law-3)を考慮すると(U○R)2=U2○2U◎R○R2=U2○R2、つまり整数kに対してUk○Rkの形式を満たすからであり、よって、16乗の場合U16○R16となる。
【０１４８】
以上により、U-17○drとU16○R’の計算を行った後、これらの値をmasked U-17◎U16計算に対する２つの入力データとして与えることで、U-1○frを得る。
【０１４９】
上記における、「masked U16◎U計算」、「masked U-17◎U16計算」に対して、基本原理-1、基本原理-2、基本原理-3、基本原理-4に記した、本発明の回路を用いることで、SPA,DPAに対して安全な処理を実現することができる。以下では、「masked U16◎U計算」、「masked U-17◎U16計算」に対して、基本原理-1、基本原理-2、基本原理-3、基本原理-4を適用した結果の実施形態を示す。
【０１５０】
図３２は、基本原理-1の乗算回路を用いてmasked U16◎Uを計算する本発明の第１の実施形態の構成図である。入力データgr, U○gr, Rから、U○R= (U○gr) ○R○gr、U16○R16= (U○R)16、R16の３つのデータを計算する。その後、基本原理-1のMaskMul_1回路を用いて、U17○cr= MaskMul_1(U○R, U16○R16, R, R16, cr)によりU17○crを計算する。この計算過程で発生したU16○R16とR16を、それぞれU16○R’, R’として出力する。
【０１５１】
図３３は、基本原理-2の乗算回路を用いてmasked U16◎Uを計算する第２の実施形態の構成図である。入力データgr, U○gr, Rから、U○R= (U○gr) ○R○gr、U16○R= (U○R)16○R○R16の２つのデータを計算する。その後、基本原理-2のMaskMul_2回路を用いて、U17○cr=MaskMul_2(U○R, U16○R, R, cr)によりU17○crを計算する。この計算過程で発生したU16○RとRを、それぞれU16○R’, R’として出力する。
【０１５２】
図３４は、基本原理-1の乗算回路を用いてmasked U-17◎U16を計算する本発明の第３の実施形態の構成図である。入力データU-17○dr, dr, U16○R’, R’,fr及び内部で発生させた乱数Sから、U-17○S○dr= (U-17○dr)○S、S○drの２つのデータを計算する。その後、基本原理-1のMaskMul_1回路を用いて、U-1○fr=MaskMul_1(U-17○S○dr, U16○R, S○dr, R’, fr)によりU-1○frを計算する。
【０１５３】
図３５は、基本原理-3の乗算回路を用いてmasked U-17◎U16を計算する本発明の第４の実施形態の構成図である。入力データU-17○dr, dr, U16○R’ , R’、及び8-bit乱数R’の上位4-bitであるR’H, 下位4-bitであるR’Lを用いて、U16○(dr||dr) ○R’, U-17○dr○R’L, dr○RL’, U-17○dr○R’H, dr○R’Hの５つのデータを計算する。その後、基本原理-3のMaskMul_3回路を用いて、U-1○fr=MaskMul_3(U16○(dr||dr)○R’, U-17○dr○R’H, U-17○dr○R’L, dr○R’H, dr○R’L, fr)によりU-1○frを計算する。
【０１５４】
図３６は、基本原理-4の乗算回路を用いてmasked U-17◎U16を計算する本発明の第５の実施形態の構成図である。入力データU-17○dr, dr, U16○R’ r, fr, R’、及び8-bit乱数R’の上位4-bitであるR’H, 下位4-bitであるR’L、を用いて、U16H○R’L=(U16○R’の上位4-bit) ○R’L○R’H、U-17○R’L= (U-17○dr) ○R’L○dr、U16L○R’L=(U16○R’の下位4-bit)の３つのデータを計算する。ただし、U16HとU16Lは、それぞれ8-bit値U16の上位4-bitと下位4-bitを表す。その後、基本原理-4のMaskMul_4回路を用いて、U-1○fr=MaskMul_4(U16H○R’L, U16L○R’L, U-17○R’L, R’L, fr)によりU-1○frを計算する。
【０１５５】
本発明の各実施形態の効果
本発明の技術を用いたAES暗号処理装置は、「本発明の基本原理」に記した(条件-1), (条件-2), (条件-3), (条件-4)を満たすので、従来例１，２，３が解決できなかった課題１，２，３を全て解決できる。つまり、従来例では不可能であった、小さな回路規模（課題１の解決）、高速な処理速度（課題２の解決）、SPA,DPAに安全な処理（課題3の解決）の３点を全て満たしたAES暗号処理装置を実現することができる。従来例１，２，３と本発明の比較を表３に示す。
【０１５６】
また、本発明の技術を用いることで、AESのみならず、合成体を用いた乗算処理を行う共通鍵暗号全般に対して、課題１，２，３を解決した暗号処理装置を実現することができる。例えば、128-bit共通鍵ブロック暗号アルゴリズムであるCLEFIA(http://www.sony.co.jp/Products/clefia/technical/data/clefia-spec-1.0.pdf) に対しても、本発明を適用できる。
【０１５７】
本発明の技術を実現するための基本的な乗算回路は、基本原理-1、基本原理-2、基本原理-3、基本原理-4の４種類であり、それぞれの回路に必要となる8-bit´4-bit乗算の回数を表４に示す。
【０１５８】
本発明の乗算回路は、「masked U16◎U計算」「masked U-17◎U16計算」の２つの計算に対し、[第１の実施形態]〜[第５の実施形態]のうちのどの実施形態を適用するかに応じて、必要となる8-bit´4-bit乗算の乗算回数が変化する。この乗算回数は、実施形態のベースとなる基本原理-1〜基本原理-4それぞれに必要となる乗算回数の合計で評価される。評価結果を表５に示す。
【０１５９】
表５の評価においては、16乗の演算回数が含まれていないが、これは、GF(((22)2)2)の16乗演算は、非常に小さな回路規模で実現できる特殊な演算であるからである。具体的には、Xに対する16乗演算結果X16はXの上位4-bit XH, 下位4-bit XLを用いて、X16=XH|| (XL○XH)のように4-bitXOR演算のみで演算可能であり、これは乗算回路の回路規模と比較して非常に小さいため無視できる大きさである。
【図１】
0005500277.tif 000004
【図２】
0005500277.tif 000005
【図３】
0005500277.tif 000006
【図４】
0005500277.tif 000007
【図５】
0005500277.tif 000008
【図６】
0005500277.tif 000009
【図７】
0005500277.tif 000010
【図８】
0005500277.tif 000011
【図９】
0005500277.tif 000012
【図１０】
0005500277.tif 000013
【図１１】
0005500277.tif 000014
【図１２】
0005500277.tif 000015
【図１３Ａ】
0005500277.tif 000016
【図１３Ｂ】
0005500277.tif 000017
【図１４】
0005500277.tif 000018
【図１５】
0005500277.tif 000019
【図１６】
0005500277.tif 000020
【図１７】
0005500277.tif 000021
【図１８】
0005500277.tif 000022
【図１９】
0005500277.tif 000023
【図２０】
0005500277.tif 000024
【図２１】
0005500277.tif 000025
【図２２】
0005500277.tif 000026
【図２３】
0005500277.tif 000027
【図２４】
0005500277.tif 000028
【図２５】
0005500277.tif 000029
【図２６】
0005500277.tif 000030
【図２７】
0005500277.tif 000031
【図２８】
0005500277.tif 000032
【図２９】
0005500277.tif 000033
【図３０】
0005500277.tif 000034
【図３１】
0005500277.tif 000035
【図３２】
0005500277.tif 000036
【図３３】
0005500277.tif 000037
【図３４】
0005500277.tif 000038
【図３５】
0005500277.tif 000039
【図３６】
0005500277.tif 000040