JP5229315B2 - 共通鍵暗号機能を搭載した暗号化装置及び組込装置 - Google Patents

共通鍵暗号機能を搭載した暗号化装置及び組込装置 Download PDF

Info

Publication number
JP5229315B2
JP5229315B2 JP2010505044A JP2010505044A JP5229315B2 JP 5229315 B2 JP5229315 B2 JP 5229315B2 JP 2010505044 A JP2010505044 A JP 2010505044A JP 2010505044 A JP2010505044 A JP 2010505044A JP 5229315 B2 JP5229315 B2 JP 5229315B2
Authority
JP
Japan
Prior art keywords
mask
bit
value
multiplication
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010505044A
Other languages
English (en)
Other versions
JPWO2009122464A1 (ja
Inventor
孝一 伊藤
壮一 岡田
正彦 武仲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2009122464A1 publication Critical patent/JPWO2009122464A1/ja
Application granted granted Critical
Publication of JP5229315B2 publication Critical patent/JP5229315B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Description

本発明は、暗号の分野に属するもので、電力解析攻撃と呼ばれる解読法を防ぐための対策技術に関する。
暗号方式は、公開鍵暗号方式と共通鍵暗号方式に大別される。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。
暗号の分野における技術の一つに、解読技術とよばれるものがある。解読技術とは秘密鍵等の秘密情報を暗号文等、入手可能な情報から推定する技術のことであり、様々な手法が存在する。その中で最近注目されている技術に、電力解析攻撃(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を用いた解読法については、下記非特許文献1などの文献にて述べられている。また、共通鍵暗号方式において、現在標準として利用されているDES(Data Encryption Standards)に対するSPA, DPAを用いた解読法については、下記非特許文献2で述べられている。DESの他に、次世代で標準として利用されると思われる共通鍵暗号方式であるRijndaelについても、下記非特許文献3などの文献でDPAを用いた解読の可能性が指摘されている。
PAを用いた解読技術は特に有効な方法として注目されており、様々な解読法が研究されている。また、解読技術のみならずPAによる解読を防ぐための対策技術も発展しており、解読技術と同様に重要な技術として注目されている。
共通鍵暗号処理の一般的な構成を図1に示す。一般的に、共通鍵暗号処理はラウンド処理と拡大鍵生成の2つの処理から構成される。拡大鍵生成は、入力された秘密鍵から複数の拡大鍵と呼ばれるデータを複数(以下拡大鍵0, 拡大鍵1,…, 拡大鍵Nと表記)生成し、ラウンド処理に対して出力する。これらの拡大鍵及び平文をラウンド処理に入力することで、暗号化のための変換を行い、暗号文を出力する。
代表的な共通鍵暗号のアルゴリズムとして、AES(Advanced Encryption Standards)が知られており、下記非特許文献4として公開されている。
AESの構成を図2に示す。
AESは128-bitを暗号化単位とするアルゴリズムである。すなわち128-bitの平文から128-bitの暗号文を生成する。秘密鍵は128,192,256-bitの3種類から選択することができる。拡大鍵処理を実行することで、秘密鍵からN+1個の128-bit拡大鍵を生成する。AESのラウンド処理は, RoundKey, Subbyte, ShiftRow, MixColumnの4種類から構成され、これらのうち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の処理を図3に、Subbyteの処理を図4に、MixColumnの処理を図5に、ShiftRowの処理を図6に示す。
<DPAによる秘密鍵解読手法>
以下では、DPAによる秘密鍵解読手法について説明を行う。DPAは、図1のラウンド処理に関する消費電力を測定することで、秘密鍵を解読する手法である。以下では、DPAを用いて解読を行うことができる共通鍵暗号の処理構成について、AESに限定せずに説明を行う。一般的な共通鍵暗号では、拡大鍵XOR処理(図7)、線形変換処理(図8)、非線形変換処理(図3)の3つを組み合わせてラウンド処理を構成し、ラウンド処理を複数回繰り返すことで構成される。図7に示す通り、拡大鍵XOR処理は入力データXに対して、拡大鍵Kの排他的論理和(XOR)の演算結果Zを出力する処理である。図8は線形変換処理であり、入力データXに対して、Z=L(X)を満たすZを出力する処理である。このとき、Lは任意のX,Yに関して、
Figure 0005229315
が成立する。具体的には、図6のShiftRowのようなビット置換処理や、図5のMixColumnのような行列演算などがこれに該当する。図9は非線形変換処理であり、入力データ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を用いた解読法を示す。
最も簡単な例として、図7と図9を組み合わせた図10の処理に対してDPAを用いることで、拡大鍵Kを解読できることを示す。なお、図10は、AESにおけるRoundKey(図3)とSubbyte(図4)をあわせた構造と等価である。
図10の構成においてwjの入出力に関係するビットのみを取り出した構成を図11に示す。図11において、mjは平文などの既知の値、kjは未知の値、wjは既知のSboxテーブルであると仮定する。この仮定の下で、DPAにより拡大鍵kjを推定できることを示す。
DPAは、電力消費データの測定と、電力差分データを用いた拡大鍵の解析という2段階から構成される。電力消費データの測定において、ある平文を与えたときに暗号プロセッサが消費する電力消費データは、オシロスコープ等を用いれば、図12に示すような電力消費曲線として測定される。平文の値を様々に変えながらこのような測定を繰り返し、十分な回数の測定データが得られた時点で測定を終了する。この一連の測定で得られた電力消費曲線の集合を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である場合、図13Aに示すようなスパイクが現われる。もしこの仮定が誤り、すなわちk’j 1kjである場合、図13Bに示すようにスパイクが現れない平坦な曲線となる。よって、仮定したk’jから図13Aのような電力差分曲線が得られれば、拡大鍵kjを解読できたことになる。このようなkjの解読を各jについて行えば、最終的に図10における拡大鍵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’j 1kjの場合(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の平均ハミングウェイトに差が生じない。
一般的に、消費電力はデータ値のハミングウェイトに比例すると考えられており、このことが正しいことを示した実験結果が下記非特許文献5などの文献にて示されている。
従って、k’j=kjである場合、(4)式が満たされることで消費電力の差が電力差分曲線上のスパイクという形になって現れるが、(5)式の場合はスパイクが現れず、平坦な曲線となる。
以上では、最も簡単な図10の構造に対するDPAに関して述べたが、このような手法は、間に図9の線形変換を挿入しても成立することが判明している。
図14は、図10を一般化した構造であり、鍵XOR処理の前後に2つの線形変換処理L1, L2を入れた処理構造である。例えば、L1は入力をそのまま出力する関数、L2をビット転置置換関数、wjをSC2000のB関数と呼ばれるSboxにすることで、図14はSC2000と等価な構造を表す。なお、SC2000の仕様については、下記非特許文献6を参照のこと。L2はビット置換関数であるので、図14の処理について、wjの入出力に関係するビットのみを取りだした構造を考えることで、図11と同一の処理に変換でき、前述と同様のDPAを用いることで、拡大鍵Kを解読することができる。
以上の手法では、非線形処理中のSbox出力に注目してDPAを適用しているが、そのほかにも、入力mjと鍵kjとのXOR直後の値(鍵XOR処理の出力値)やSboxへの入力値xjの値に注目してDPAを適用する手法が知られている(下記非特許文献7)。
上記を整理すると、次の条件を満たす場合にDPAにより秘密鍵Kが推定される。(これらのDPA攻撃条件については、下記特許文献1にも記載されている。)

DPA-1. 入力Mが既知かつ制御可能、鍵Kは未知で固定、Sbox wjの変換が既知の場合、図15のAの部分(Sbox wjの出力)の電力消費曲線を測定することでDPA可能。

DPA-2. 入力Mが既知かつ制御可能、鍵Kは未知で固定の場合、図15のBの部分(鍵XOR処理の出力の書き出し)の電力消費曲線を測定することでDPA可能。

DPA-3. 入力Mが既知かつ制御可能、鍵Kは未知で固定の場合、図15のCの部分(Sbox wjを索引するための入力値のロード)の電力消費曲線を測定することでDPA可能。
<SPAによる秘密鍵解読手法>
以下では、SPAによる秘密鍵解読手法について説明を行う。この攻撃は、
Figure 0005229315

といった乗算処理の消費電力を観察する。ただし、◎は乗算をあらわす記号であり、AES処理では、後に説明する合成体の計算(図23)において、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の場合、後に述べる合成体の計算(図23)を用いたSubbyte処理を用いる暗号処理装置に対してのみこの攻撃法が可能であり、そうでない暗号処理装置に対してはこの攻撃は不可能である。
図16は、ゼロ乗算SPAによる攻撃可能な暗号処理の回路構成を表している。
図16において、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は図17の回路構成に対しても可能である。
図17において、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対策法としては、暗号処理に対策を施し消費電力をランダム化する手法が存在する。この手法を用いた対策法として、以下の2つの従来例が知られており、下記に従来例1、従来例2として示す。また、DPA対策なしのAES回路に対して、Subbyte回路の縮小を実現する方法を、以下の従来例3に示す。従来例1,2は、Subbyteの回路を乗算処理ではなくテーブル演算で実行するため、ゼロ乗算SPAに対して安全であるので、DPA対策を行うことでそのままPA対策となることに注意されたい。
従来例1
消費電力をランダム化する手法の代表的なものとして、masking method と呼ばれている手法が知られている(下記非特許文献8、以下「従来例1」と呼ぶ)。DPA対策なしの暗号処理において計算されるデータをMとすると、従来例1に記載されているDPA対策は、データMを計算する代わりに、M’=M○Rで表されるデータM’,Rを計算することで暗号処理を行う方法である。ただしRは乱数であり、暗号処理を実行する度に発生させる値である。この方法により、暗号処理のデータをランダムな値でマスクされる。よって、データがランダム化されることで消費電力もランダム化されるため、PAに安全な処理を実現することができる。以下の説明では、RのようにPA対策なしのデータに対してXORされる値をマスク値と呼ぶ。
図18のDPA対策を行っていないAES回路に対して、従来例1によるDPA対策を適用したAES回路を図19に示す。この回路においては、図18で計算しているデータMiの代わりに、乱数Riに対してMi’ = Mi ○ Riを満たすMi’とRiの2つのランダムなデータを計算する。暗号化処理ごとに計算されるデータ値がランダムであるため、DPAに対して安全な処理を実現することができる。ただし、データをMi’とRiの両方について計算しなくてはならないため、回路規模が増大する。(図18のおよそ2倍)。図18ではAESのSubbyte処理を、固定データによる静的な変換テーブルS[x] を用いたテーブル参照処理(0£x£255)によって行う。Subbyte処理で用いられる変換テーブルS[x]は、Sboxと呼ばれる。これに対して、図19で用いられるSboxのテーブルデータS’[x]は、乱数Rin, Routに応じてS’[x] = S[x○Rin]○Routに従ったS’[x]を、x=0,1,...,255それぞれに対して動的に更新する必要がある。この更新処理は256 cycleを必要するため、図19の回路を図18と比較すると、処理速度が遅いという欠点を有する。
従来例1の課題
課題1.DPA対策無しの回路と比較して、回路規模が大きい。
課題2.DPA対策無しの回路と比較して、処理速度が遅い。
従来例2
従来例1の課題2を解消するための方法が下記特許文献1に公開されている(以下本書では「従来例2」と記す)。従来例1ではマスクする値をランダムに生成していたのに対し、従来例2は事前計算された複数の固定値の中から一つを乱数によって選択した値によりマスクする。この選択されたマスク値をRiと表記する。従来例2では、従来例1と同様に、M’i=Mi○Riを満たすデータM’i,Riを計算するが、Riは事前計算された値であるため、M’i,Riの両方を計算する必要はなく、M’iのみを計算すれば良い。乱数が事前計算された値であるため、従来例1と異なりSboxのテーブルデータを動的に更新する必要はなく、事前計算された静的なデータを複数用意すれば良いので、従来例1より高速な処理を実現することができる。従来例2のDPA対策方法を用いることで、図18に示したDPA対策無しのAES暗号処理は、以下の図20に示すような暗号処理に置き換えられる。
図20について説明する。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演算の信号が伝達するのは1つだけである。q個のSboxの電力特性はそれぞれ異なるため、乱数によりこれらのうちの一つを選択することで、消費電力がランダム化され、PAに安全な処理を実現することができる。従来例1と異なり、Sboxテーブルは事前計算データを用いることができるため、従来例1より高速な処理を実現できる。しかし、図20の構成は、図16に示した対策無しのq倍のSbox回路を必要とする。AESにおける一般的にSboxの回路は非常に大きいため、このq個のSboxの回路規模がAES全体の回路規模を増大させるという欠点がある。よって、従来例2は、従来例1と同様、以下の問題がある。
従来例2の課題
課題1.DPA対策無しの回路と比較して、回路規模が大きい。

従来例3
AESのSboxの回路規模を小さくする方法として、合成体(Composite Field)を用いた方法が知られている。(下記非特許文献9、以下「従来例3」と呼ぶ)この方法は、SPA,DPA対策を用いないAES回路に適用できる方法として知られている。
この方法を説明する前提として、AESのSbox回路の一般的な構成について説明する。図21は、下記非特許文献4の"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β)と表されるガロア体は、2進体 (binary field)と呼ばれ、γ個の整数値β1,…, βγを用いてGF( (…((2β1)β2) …)βγ )と表されるガロア体は合成体(composite field)と呼ばれる。ガロア体とはデータ表現形式の一種であり、このデータ表現形式で表されるデータを元(element)と呼ぶ。2進体の元はβ-bitの任意のデータであり、合成体の元は(β1×… ×βγ)-bitの任意のデータである。GF(2β)の元はβ-bitのデータ形式のみであるが、GF( (…((2β1)β2) …)βγ )の元は、β1-bit、β1×β2-bit、…、(β1×… ×βγ)-bitのようにγ種類のビット長のデータ形式に対応しており、ビット長が小さいデータ形式ほど小さな回路規模による演算処理が可能である。2進体、合成体それぞれの元に関して、乗算◎、XOR演算○、及び多項式f(x)による剰余演算mod (f(x))が定義されている。
逆元(inverse element)とは、任意の8-bit値xに対してI(x)=x-1 mod (x8+x4+x3+x+1)を満たす8-bit値yのことであり、x◎y=1 mod (x8+x4+x3+x+1)を満たす。Affine変換と逆元については、下記非特許文献4の"5.1.1 SubBytes() Transformation"も参照されたい。
A(x)は暗号化のときのみ、A-1(x)は復号のときのみ用いられ、I(x)は暗号化と復号の両方で用いられる共通の回路である。A(x),A-1(x)は簡単な論理演算による8-bit入出力演算を行う回路であり、回路規模が小さいことが知られている。これに対し、I(x)はテーブルを用いた8-bit入出力演算を行う回路であり、回路規模が大きいことで知られている。つまり、図21の構成は、暗号化と復号の両方で用いられる共通の回路であるI(x)の回路規模が大きいため、I(x)の回路規模削減が課題となる。このI(x)の回路規模を削減するための方法として、合成体(Composite Field)を用いた逆元の計算法が、下記非特許文献10に提案されている。テーブルを用いた一般的な逆元計算回路を図22に、合成体を用いた逆元計算回路を図23に示す。
図22に示す通り、一般的な逆元計算回路は、テーブルを用いることで8-bit入力データを8-bit出力データに変換する処理を行うが、この処理を回路実装した場合、8-bit入出力であるため非常に回路規模が大きい。テーブル演算を行う回路において、m-bit入力データをn-bit出力データに変換する場合、その回路規模はm´n´2mに比例することが知られており(図22)、回路規模を小さくするためには入出力のビット長であるm,nの両方を小さくすることが重要な課題となる。この課題を解決したのが、図23に示す合成体を用いた逆元演算回路であり、この回路ではm=4, n=4のテーブルを用いる。図22に示すm=n=8のテーブルと、図23に示すm=n=4のテーブルの大きさを比較すると、(4´4´24)/(8´8´28)=(28)/(214)=1/64であり、つまり図23のテーブルは図22のテーブルの1/64の大きさとなるため、回路規模を削減可能である。
図23の処理内容について説明する。図23は、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と呼ばれる行列演算であり、詳細は下記非特許文献11を参照されたい。最初にδ変換により、TからUを計算した後、U16とU17を計算する。なお、U17は=U16とUを乗算することで計算する。この演算の結果、8ビット値のU17のうち、最上位4-bitは’0000’となることが知られている。つまり、U17は8ビットではなく4ビットで表現される値である。また、U17の逆元であるU-17も同様に4ビットで表現される値である。つまり、U17からU-17を計算するテーブル回路は、図22の方法では8ビット入出力であるのに対し、4ビット入出力に削減することができる。このテーブルによってU-17を計算した後、U-1=U-17´U16によりU-1を計算する。最後にT-1-1(U-1)により、T-1を計算する。
図23の回路は、テーブルのビット長を削減した代わりに、16乗回路、乗算回路が追加されているが、これらの回路規模は図22の8-bit入出力テーブルと比べて非常に小さいことが知られているため、図23に示す逆元計算回路は図22の逆元計算回路より小さい回路規模を実現することができる。ただし、従来例3はPA対策を行っていないため、以下の課題3に示す問題がある。
従来例3の課題
課題3.SPA,DPAに対して安全な処理を実現することができない。

なお、GF(28)の元とGF(((22)2)2)の元を用いた乗算◎は以下の種類が知られている。乗算◎、及びXOR演算○に関しては(law-1), (law-2), (law-3), (law-4) に示される法則が成立する。

・GF(28)の乗算: 以下の1種類のみ定義される。
- c=a◎bで定義される8-bit´8-bit乗算のみ定義される。a,b,cは全て8-bit値。

・ GF(((22)2)2)の乗算: 以下の3種類が定義される。
- 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乗算の計算結果は2つの4-bit´4-bit乗算aH◎b, aL◎bの演算結果をビット結合することで得られることを意味している。
GF(28),GF(((22)2)2)以外の一般的なガロア体について、(law-1)(law-2)(law-3)は、任意の2進体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に対する安全性、回路規模、及び処理速度の3点について比較を行っている。安全性に関しては「安全」である方が優れている。回路規模に関しては「小」である方が優れている。処理速度に関しては、「高速」である方が優れている。
<従来の課題と解決手段について>
ここでは、つの特徴全てについて優れた効果を発揮する本発明の手段を示
す。この手段を説明するために、従来例2と従来例3の単純な組み合わせを示したうえで、本発明による解決手段を示す。最初に、従来例2と3の単純な組み合わせの一つを図24に示す。
図24は従来例2と従来例3の組み合わせによる回路を示している。従来例2の問題は、図20に示したq個のSboxの回路規模が大きいことである。よって図24は、これらのSbox回路を図23に示した合成体の回路に置き換えることで、従来例2の欠点であるSbox回路の削減を目標としており、図23の逆元計算回路のテーブル索引処理について、図20に示す、乱数に応じたテーブル選択技術を導入している。
図24の入力データは、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)が成立する関数である。
図24において、このXとX16の乗算を行う乗算器に対し、ゼロ乗算SPAを用いることで、256通りの鍵Kの候補をq通りに絞ることが可能である。qの値は、理論上は無限に大きくすることが可能であるが、大きくしすぎた場合回路規模が大きくなるため、現実的にはq=4程度の値が用いられる。つまり、256通りの鍵Kの値を4通りに絞り込むことができるため、図24の回路はゼロ乗算SPAに対して脆弱である。以下では、その攻撃法について説明を行う。
最初に攻撃の前提を説明する。Mは攻撃者にKnownな値、Kは攻撃者にUnknownな値、rは攻撃者にUnknownな値、q個の固定値のセットp0, p1, …, pq-1は攻撃者にKnownな値であると仮定する。この前提をもとに、図24の回路に対するゼロ乗算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は、図24におけるXとX16の乗算を行う乗算器のみならず、X16と4-bitテーブルI’r[x]の出力を乗算する乗算器に対しても同様に可能である。
以上から、図24に示した回路は、マスク値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に対して安全性であるための条件を図式化した結果を図25に示す。
図25において、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)と呼ぶ。
図25に示すように、ゼロ乗算SPAに対して安全な乗算処理は、c=a◎bで表される乗算処理の2つの入力a,bともに乱数値マスク化データを入力する処理である。もし、乗算に対する2つの入力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で表される乗算処理の2つの入力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" 特開2002−366029号公報
上記のように、従来例を単純に組み合わせた場合、前述した課題1、課題2、課題3を全て解決したSPA,DPA対策つきAES暗号装置を実現することができない。よって、これらの問題を全て解決することが、本発明の課題である。
本発明は、共通鍵暗号を行う暗号プロセッサにするPA対策を行うための実装技術である。本技術を用いることで、代表的な共通鍵アルゴリズムであるAESをはじめとした暗号処理の秘密鍵の解読を困難にし、スマートカード等の組み込み機器の安全性を高めることができる。
本発明の第1の態様は、非線型変換を2進体又は合成体における乗算処理で演算する共通鍵ブロック暗号化装置を前提とする。
まず、非線型変換以外の演算処理を、固定値によるマスク(以下「固定値マスク」)をエクスクルーシブオア演算(以下「XOR」)して得た固定値マスク化入力データにより実行する演算器を有する。
次に、非線型変換における乗算処理において、全ての入力データに固定値マスクをXORして固定値マスク化入力データに変換し、更に乱数値によるマスク(以下「乱数値マスク」)をXORして乱数値マスク化入力データに変換するXOR演算回路と、そのXOR演算回路から出力された乱数値マスク化入力データに基づいて乗算処理を実行する乗算器と、その乗算器から出力される乱数値マスク化出力データを固定値マスク化出力データ再変換して出力する乱数値マスク−固定値マスク変換回路を有する。
上記本発明の第1の態様をベースとして、本発明の第2の態様は、以下の構成を有する。
即ち、本発明の第1の態様における乗算処理は、非線形変換における乗算処理の入力データを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を演算する演算回路又はこれと等価な演算回路によって構成される。
上記本発明の第1の態様をベースとして、本発明の第3の態様は、以下の構成を有する。
即ち、本発明の第1の態様における乗算処理は、非線形変換における乗算処理の入力データを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を演算する演算回路又はこれと等価な演算回路によって構成される。
上記本発明の第1の態様をベースとして、本発明の第4の態様は、以下の構成を有する。
即ち、本発明の第1の態様における乗算処理は、βγ=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’H 2
J3=((X○R’)○(Y○R’L)○R’L)◎R’L
J0=J1○(J2||(0000)2)○J3○fr
を演算して出力J0=X◎Y○frを演算する演算回路又はこれと等価な演算回路によって構成される。
上記本発明の第1の態様をベースとして、本発明の第5の態様は、以下の構成を有する。
即ち、本発明の第1の態様における乗算処理は、βγ=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を演算する演算回路又はこれと等価な演算回路によって構成される。
上述の本発明の第2又は第3の態様の乗算処理の演算回路を用いて、2進体もしくは合成体におけるU16◎Uの乗算を実行するように構成することができる。
また、上述の本発明の第2、第4又は第5の態様の乗算処理の演算回路を用いて、2進体もしくは合成体におけるU-17◎U16の乗算を実行するように構成することができる。
本発明の第6の態様は、4ビットのcr,8ビットのgr,4ビットのdr,及び8ビットのfrをそれぞれ乱数rによって選択される固定値マスクとし、8ビットのR、R’を乱数値マスクとして、8ビットの入力データU○grから8ビットの出力データU-1○frを、βγ=2を満たす合成体GF((…(2β1)…)βγ)において演算する共通鍵ブロック暗号化装置を前提として、以下の構成を有する。
まず、乱数値マスクをXORさせて実行するU16◎U計算により、入力データU○grから4ビット値U17○crを計算すると共に、それぞれ8ビットのU16○R’及びR’を計算するmaskedU16◎U計算回路を有する。
次に、そのmaskedU16◎U計算回路から出力されるU17○crから4ビットのU-17○drを計算する、乱数rによって選択された4ビット対4ビット変換テーブル回路を有する。
そして、4ビット対4ビット変換テーブル回路から出力されるU-17○drとmaskedU16◎U計算回路から出力されるU16○R’及びR’をそれぞれ入力し、出力データU-1○frを計算するmaskedU-17◎U16計算回路を有する。
上記本発明の第6の態様をベースとして、本発明の第7の態様は、以下の構成を有する。
即ち、maskedU16◎U計算回路は、固定値マスクgr,、入力データU○gr、及び乱数値マスクRを入力して、U○R=(U○gr)○R○gr、U16○R16=(U○R)16、及びR16の3つのデータを計算する演算回路群と、
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計算回路に入力させる。
上記本発明の第6の態様をベースとして、本発明の第8の態様は、以下の構成を有する。
即ち、maskedU16◎U計算回路は、固定値マスクgr,入力データU○gr、及び乱数値マスクRを入力して、U○R=(U○gr)○R○gr及びU16○R=(U○R)16○R○R16の2つのデータを計算する演算回路群と、
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計算回路に入力させる。
上記本発明の第6の態様をベースとして、本発明の第9の態様は、以下の構成を有する。
即ち、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の2つのデータを計算する演算回路群と、
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として出力する。
上記本発明の第6の態様をベースとして、本発明の第10の態様は、以下の構成を有する。
即ち、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の5つのデータを計算する演算回路群と、
J1=(U16○(dr||dr)○R’)◎(U-17○dr○R’H)
J2=(U-17○dr○R’H)◎(dr○R’H)○(dr○R’H2
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として出力する。
上記本発明の第6の態様をベースとして、本発明の第11の態様は、以下の構成を有する。
即ち、maskedU-17◎U16計算回路は、4ビット対4ビット変換テーブル回路から出力されるU-17○dr、固定値マスクdrとfr、maskedU16◎U計算回路から出力されるU16○R’,R’、及びR’の上位4ビットであるR’H,、R’の下位4ビットであるR’L、を入力して、U16 HとU16 Lをそれぞれ8ビット値U16の上位4ビットと下位4ビットとして、U16 H○R’L=(U16○R’の上位4ビット)○R’L○R’H、U-17○R’L=(U-17○dr)○R’L○dr、U16 L○R’L=(U16○R’の下位4ビット)の3つのデータを計算する演算回路群と、
J1=(U16 H○R’L)◎(U-17○R’L)
J2=((U16 H○R’L)○(U-17○R’L)○R’L)◎R’L
J3=(U16 L○R’L)◎(U-17○R’L)
J4=((U16 L○R’L)○(U-17○R’L)○R’L)◎R’L
J0=((J1○J2)||(J3○J4))○fr
の演算又はこれと等価な演算を実行する演算回路群とから構成され、J0をU-1○frとして出力する。
上述の本発明の第1、第2、第3、第6、又は第7、8の何れかの態様において、非線型変換における乗算処理は、GF(28)で表される2進体において実行されるように構成することができる。このとき、2進体GF(28)は、例えば多項式x8+x4+x3+x+1の剰余で表される。
また、上述の第1〜第11の何れかの態様において、非線型変換における乗算処理は、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の剰余で表される。
本発明は、上述の第1乃至第11の何れかの態様による暗号化装置を組み込んだ組込装置として実施することもできる。
共通鍵暗号処理の一般的な構成を表す図である。 一般的に知られているAES暗号アルゴリズムの構成である。 一般的に知られているAESにおけるRoundKey処理である。 一般的に知られているAESにおけるSubbyte処理である。 一般的に知られている AESにおけるMixColumn処理である。 一般的に知られている AESにおけるShiftRow処理である。 DPA対策無しの一般的な共通鍵暗号における拡大鍵XOR処理である。 DPA対策無しの一般的な共通鍵暗号における線形変換処理である。 DPA対策無しの一般的な共通鍵暗号における非線形変換処理である。 図7と図9を組み合わせた処理である。 図10の処理についてwjの入出力に関係するビットを取り出した図である。 スマートカードの消費電力の例である。 電力差分曲線を作成し、スパイクが出現した例である。 電力差分曲線を作成し、スパイクが出現しなかった例である。 図7と図8と図9と組み合わせた構成である。 DPAにより秘密鍵解読を行うための、消費電力測定箇所に関する条件である。 ゼロ乗算SPAによる攻撃可能な暗号回路の第一の構成を表す図である。 ゼロ乗算SPAによる攻撃可能な暗号回路の第二の構成を表す図である。 一般的なDPA対策なしのAES回路を表す図である。 図18のDPA対策なしAES回路に対し、従来例1のDPA対策を適用した回路である。 図18のDPA対策なしAES回路に対し、従来例2のDPA対策を適用した回路である。 一般的なAESのSbox回路の構成を表す図である。 テーブルを用いた一般的な逆元計算回路を表す図である。 従来例3に記されている、合成体を用いた逆元計算回路である。 従来例2と従来例3の単純な組み合わせによる逆元計算回路である。 ゼロ乗算SPAに安全な処理を実現するための、乗算器に対する入力データの条件であり、本発明の基本アイデアを導出するための着眼点を表した図である。 本発明の基本アイデアによる乗算回路を表す図である。 本発明による乗算回路の第一の構成図である。(基本原理-1) 本発明による乗算回路の第二の構成図である。(基本原理-2) 本発明による乗算回路の第三の構成図である。(基本原理-3) 本発明による乗算回路の第四の構成図である。(基本原理-4) 本発明の技術を用いた逆元計算処理のフレームワークを表す図である。 masked U16×U計算に基本原理-1を用いる場合の第1の実施形態である。 masked U16×U計算に基本原理-2を用いる場合の実施形態第2の実施形態である。 masked U-17×U16計算に基本原理-1を用いる場合の第3の実施形態である。 masked U-17×U16計算に基本原理-3を用いる場合の第4の実施形態である。 図36は、masked U-17×U16計算に基本原理-4を用いる場合の第5の実施形態である。
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
本発明の基本原理
本発明は、「背景技術」において指摘した課題1,2,3を全て解決したAES暗号処理装置を実現する。そのために、以下の(条件-1), (条件-2), (条件-3), (条件-4)を満たした処理を行う。

(条件-1) AESのSubbyte処理以外について、従来例2による処理を行う。
(条件-2) AESのSubbyte処理は、合成体による逆元演算をSPA,DPAに安全な方法で実行。
(条件-3) (条件-2)の合成体演算におけるテーブル処理は、従来例2による処理を行う。
(条件-4) (条件-2)の合成体演算における乗算には、常に乱数値マスク化データを入力。

(条件-1)を導入することで、AESのSubbyte処理以外について、課題1、課題2、課題3を同時に解決する。なぜなら、従来例2の唯一の問題であった課題1は、Subbyte回路に関してのみの課題であるため、Subbyte処理に従来例2を用いなければこれらの課題は全て解決される。後は、AESのSubbyte処理に関して課題1,2,3を解決できるならば、AES処理全体として全ての課題を解決できる。
(条件-2)を導入することで、AESのSubbyte処理に関して、課題1を解決する。Subbyte処理において回路規模が大きい逆元演算を、図23に示すような従来例3の合成体による処理に置き換えることで、回路規模の削減を実現する。ただし、従来例3の合成体の演算をそのまま用いた場合、SPA, DPAに対して安全ではないため、課題3が未解決である。また、SPA,DPA対策を行う場合についても、課題2をクリアする必要がある。
(条件-3)は、図23に示す合成体を用いた逆元演算のうち、テーブル演算については、従来例2によるテーブル演算を行う。つまり、q個の事前計算テーブルを準備し、そのうちの一つを乱数により選択する方法を用いる。q個の事前計算テーブルを必要とするため、課題1に示される問題の発生が危惧されるが、8ビット入出力テーブルによる逆元演算ではなく、合成体による4ビット入出力テーブル演算であるので、個々のテーブルの回路規模を8ビット入出力テーブルの1/64に抑えることができるため、課題1の問題は発生しない。よって、 図23におけるテーブル演算に関しては課題1,2,3全てを解決できる。もし、このテーブル演算処理を従来例1の方法で実行する場合、乱数に応じてテーブルを更新する必要がある。4ビットテーブルの更新は16cycleを必要とする。一般的にテーブル演算は1cycleで実行されるため、このテーブル更新によるペナルティは処理速度を大きく低下させ、課題2に示される問題が発生する。
(条件-4)は、図23に示す合成体を用いた逆元演算のうち、乗算に関するSPA,DPA対策法の方針である。前述の(ZSPA-sec)で述べたように、乗算処理に入力するデータは、全て乱数値マスク化データとすることで、ゼロ乗算SPA対策となる。また乱数値マスク化データを用いることで、乗算に関するDPA対策法も同時に実行できる。よって、課題3を解決する。また乱この乗算処理は1cycleで実行することができ、乱数に応じてテーブルを更新する処理のような処理速度に関するペナルティを発生しないため、課題2を解決する。
本発明は、以上の(条件-1)〜(条件-4)を全て満たしたAES処理を実行する。これらの条件を全て満たすための基本方針は、合成体の逆元演算における乗算処理のみに対して、乱数値マスクを用いたマスク処理を実行し、それ以外の処理については固定値マスクを用いたマスク処理を実行することである。これを実現するための基本アイデアを以下で述べる。
<課題を解決するための基本アイデア>
乗算処理のみ乱数値マスク化データによる処理を行い、それ以外を固定値マスク化データによる処理を行うための、本発明の基本アイデアを図26に示す。
従来例の場合、図26の上段に示すように、乗算器の片方、もしくは両方の入力が固定値マスク化データである。これに対し、本発明では、図26下段に示すように、固定値マスク化データに対して、乱数値マスクを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’)の乗算を行う、つまり乗算器の2つの入力ともに乱数値マスク化データであるので、本発明の方式はSPA,DPAに対して安全な処理を実現する。ただし、この乗算の結果出力されるデータも乱数値マスク化データである。(条件-1)に示すように、本発明はSubbyte処理以外は従来例2による処理、つまり固定値マスク値化データによる処理を行う必要がある。よって、乱数値マスク化データ同士を乗算した結果、出力される乱数値マスク化データを固定値マスク化データに変換する必要がある。この処理は、図26の乱数値マスク-固定値マスク変換処理回路によって実行される。
図26は本発明における乗算処理のアイデアを抽象的に表現したものであり、具体的な演算方法は様々な方法が考えられる。合成体を用いた逆元演算処理においては、U17=U16◎UとU-1=U-17◎U16の2種類が実行されるが、本発明の乗算処理がこれらの2種類のいずれかを実行するかによって、R,Sの与え方、及び乱数値マスク-固定値マスク変換処理の計算方法が異なる。これら2種類の両方、もしくはいずれかの乗算処理に適用可能な本発明の乗算方式、以下の(基本原理-1)、(基本原理-2)、(基本原理-3)、(基本原理-4)に示す。
以下の(基本原理-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の両方の乗算に適用可能な方法である。(図27)
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乗算4回、
-U-1=U-17◎U16の場合:8-bit´4-bit乗算4回(もしくは4-bit´4-bit乗算8回)。

基本原理-1は(law-1)〜(law-3)に基づいているため、任意の2進体と合成体の演算に適用可能である。
[基本原理-2]
基本原理-1によるPA対策を用いた場合、PA対策なしにおける1回の乗算が4回の乗算に置き換えられる。この乗算回数の増加は、PA対策に伴うオーバヘッドとなる。よって、この置き換え後の乗算回数を減らすことが、PA対策に伴うオーバヘッドを減少させることになる。このオーバヘッドの減少を行うために、基本原理-1におけるS’に関して、S’=R’による特殊化を行ったものが(基本原理-2)である。この特殊化を行うことで、演算処理が簡略化されるため、PA対策なしにおける1回の乗算が2回の乗算に置き換えられる。
ただし、S’=R’による特殊化は、S’とR’のデータビット長が等しい場合のみ可能である。よって、PA対策なしにおける乗算の2つの入力データのビット長が等しい場合のみ(基本原理-2)を適用できる。つまり、U17=U16◎Uに示される8-bit´8-bit乗算のみに対して適用可能な方法であり(図28)、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回

基本原理-2は(law-1)〜(law-3)に基づいているため、任意の2進体と合成体の演算に適用可能である。
[基本原理-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’とすることが不可能である。よって、ビット長が異なる場合、2つの乱数値マスクを同一とさせることは不可能であるが、部分的に一致させることは可能である。つまり、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乗算に適用可能な方式を以下に示す(図29)。

J1 = (X○R’)◎(Y○R’L )
J2 = (Y○R’H) ◎R’H○ R’H 2
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’L 2)
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’L 2)

である。ただし、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乗算2回、4-bit´4-bit乗算1回、4-bit´4-bit自乗算1回。

さらに、8-bit´4-bit乗算1回は4-bit´4-bit乗算2回に相当すること、4-bit´4-bit自乗算1回は4-bit´4-bit乗算1回よりコストが安い演算(つまり、4-bit´4-bit乗算では1回未満のコスト)ことを考慮すると、基本原理-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の場合4回の8-bit´4-bit乗算を必要とするのに対して、基本原理-3を用いることでφ回の8-bit´4-bit乗算(2.5<φ<3)まで減少させることに成功した。8-bit´4-bit乗算の性質を利用することで、この乗算回数をさらに減少させることができる方法が基本原理-4である。(law-4)より、8-bit´4-bit乗算は2つの4-bit´4-bit乗算に分解できる。基本原理-4では、これら個々の4-bit´4-bit乗算に入力される2つのデータに対し、(基本原理-2)と同様に、同一の乱数値のXORを行う(図30)。

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’L 2 ○ XH◎R’L ○ Y◎R’L ○ R’L 2 = 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’L 2 ○ XL◎R’L ○ Y◎R’L ○ R’L 2 = 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乗算2回と等価)。

基本原理-4は(law-1)〜(law-4)に基づいているため、βγ=2を満たす合成体GF((…(2β1)…)βγ)の演算に対して適用可能である。
本発明の各実施形態の構成
基本原理-1, 基本原理-2, 基本原理-3, 基本原理-4に記した本発明の技術を、図23に示した従来例3に示した逆元演算に適用した実施形態を以下に示す。以下の実施形態の説明では、図31に示すように、逆元演算の処理のコア部分、つまり合成体の計算部分に対して本発明を用いた場合の実施形態を示す。本発明の実施形態において説明する逆元演算では、共通して以下のI〜IVのステップを実行する。

i.逆元演算回路はGF(28)の元T○prを入力することで、GF(28)の元T-1○qrを計算し出力する回路である。ただし、pr,qrは乱数rによって選択される固定値マスクを表す。

ii.入力されたGF(28)の元T○grにδ変換を行い、δ(T○pr)=δ(T)○δ(pr)=U○grを計算する。ただし、grは乱数rによって選択される固定値マスクであり、gr=δ(pr)を満たす。

iii.U○grに対して、乗算とテーブル演算を組み合わせた演算を行うことで、U○grから、U-1○frを計算する。ただし、frは乱数rによって選択される固定値マスクを表す。

iv.U-1○frに対して、δ-1変換を行うことでδ-1(U-1○fr)=δ-1(U-1)○δ-1(fr)=T-1○qrを計算する。ただし、qrとfrの間には、δ-1(fr)= qrの関係式が成立する。
以下では、上記のi〜ivのステップのうち、iiiに記した逆元演算のステップに関して、基本原理-1, 基本原理-2, 基本原理-3, 基本原理-4に記した本発明の技術を適用することで、SPA,DPA対策を実現する実施形態について説明する。
iiiの計算を実行するためのフレームワークを図31に示す。
図31の計算は、「masked U16◎U計算」、「masked U-17◎U16計算」2つの乗算処理から構成される。これらは、データのマスク処理を実行しながら乗算処理を行う回路であり、それぞれ以下の機能を有する。
masked U 16 ◎U計算
この回路の基本機能は、U○grを入力することで、U17○crを計算し出力することである。ただし、cr,grは乱数rによって選択される固定値マスクであり、crは4-bit, grは8-bitである。この固定値マスクcr, grはこの回路に対する入力として与える。この回路内部で乱数値マスク化されたデータによる乗算を実行するために、乱数Rを入力として与える。また、U16○R’, R’で表される2つのデータを出力し、masked U-17◎U16計算への入力として与える。R’として出力される値は、この回路の実施形態によって異なり、基本原理-1の乗算回路を用いた[第1の実施形態]の場合R’=R16であり、基本原理-2の乗算回路を用いた[第2の実施形態]の場合R’=Rである。[第1の実施形態][第2の実施形態]の詳細については、後に述べる。
masked U -17 ◎U 16 計算
この回路の基本機能は、U-17○dr及びU16○R’、乱数R’を入力することで、U-1○frを計算し出力することである。ただし、dr,frは乱数rによって選択される固定値マスクであり、drは4-bit, frは8-bitである。この固定値マスクdr, frはこの回路に対する入力として与える。
図31は、入力データ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計算に対する2つの入力データの1番目の入力となる。
masked U-17◎U16計算に対する2番目の入力データとして、U16○R’の計算を行う。後に述べる[第1の実施形態]の場合、U16○R’は、masked U16◎U計算の過程において計算される(U○R)16=U16○R16のデータを用いるため、R’=R16となる。後に述べる[第2の実施形態]の場合、masked U16◎U計算の過程において計算されるU16○Rの値を用いるため、R’=Rとなる。
なお、(U○R)16=U16○R16が成立する理由は、16乗演算は2乗演算を4回繰り返す演算であり、かつ1回の2乗演算の結果は(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計算に対する2つの入力データとして与えることで、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を適用した結果の実施形態を示す。
図32は、基本原理-1の乗算回路を用いてmasked U16◎Uを計算する本発明の第1の実施形態の構成図である。入力データgr, U○gr, Rから、U○R= (U○gr) ○R○gr、U16○R16= (U○R)16、R16の3つのデータを計算する。その後、基本原理-1のMaskMul_1回路を用いて、U17○cr= MaskMul_1(U○R, U16○R16, R, R16, cr)によりU17○crを計算する。この計算過程で発生したU16○R16とR16を、それぞれU16○R’, R’として出力する。
図33は、基本原理-2の乗算回路を用いてmasked U16◎Uを計算する第2の実施形態の構成図である。入力データgr, U○gr, Rから、U○R= (U○gr) ○R○gr、U16○R= (U○R)16○R○R16の2つのデータを計算する。その後、基本原理-2のMaskMul_2回路を用いて、U17○cr=MaskMul_2(U○R, U16○R, R, cr)によりU17○crを計算する。この計算過程で発生したU16○RとRを、それぞれU16○R’, R’として出力する。
図34は、基本原理-1の乗算回路を用いてmasked U-17◎U16を計算する本発明の第3の実施形態の構成図である。入力データU-17○dr, dr, U16○R’, R’,fr及び内部で発生させた乱数Sから、U-17○S○dr= (U-17○dr)○S、S○drの2つのデータを計算する。その後、基本原理-1のMaskMul_1回路を用いて、U-1○fr=MaskMul_1(U-17○S○dr, U16○R, S○dr, R’, fr)によりU-1○frを計算する。
図35は、基本原理-3の乗算回路を用いてmasked U-17◎U16を計算する本発明の第4の実施形態の構成図である。入力データ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の5つのデータを計算する。その後、基本原理-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を計算する。
図36は、基本原理-4の乗算回路を用いてmasked U-17◎U16を計算する本発明の第5の実施形態の構成図である。入力データU-17○dr, dr, U16○R’ r, fr, R’、及び8-bit乱数R’の上位4-bitであるR’H, 下位4-bitであるR’L、を用いて、U16 H○R’L=(U16○R’の上位4-bit) ○R’L○R’H、U-17○R’L= (U-17○dr) ○R’L○dr、U16 L○R’L=(U16○R’の下位4-bit)の3つのデータを計算する。ただし、U16 HとU16 Lは、それぞれ8-bit値U16の上位4-bitと下位4-bitを表す。その後、基本原理-4のMaskMul_4回路を用いて、U-1○fr=MaskMul_4(U16 H○R’L, U16 L○R’L, U-17○R’L, R’L, fr)によりU-1○frを計算する。
本発明の各実施形態の効果
本発明の技術を用いたAES暗号処理装置は、「本発明の基本原理」に記した(条件-1),(条件-2),(条件-3),(条件-4)を満たすので、従来例1,2,3が解決できなかった課題1,2,3を全て解決できる。つまり、従来例では不可能であった、小さな回路規模(課題1の解決)、高速な処理速度(課題2の解決)、SPA,DPAに安全な処理(課題3の解決)の3点を全て満たしたAES暗号処理装置を実現することができる。
また、本発明の技術を用いることで、AESのみならず、合成体を用いた乗算処理を行う共通鍵暗号全般に対して、課題1,2,3を解決した暗号処理装置を実現することができる。例えば、128-bit共通鍵ブロック暗号アルゴリズムであるCLEFIA(http://www.sony.co.jp/Products/clefia/technical/data/clefia-spec-1.0.pdf) に対しても、本発明を適用できる。
本発明の技術を実現するための基本的な乗算回路は、基本原理-1、基本原理-2、基本原理-3、基本原理-4の4種類である。
本発明の乗算回路は、「masked U16◎U計算」「masked U-17◎U16計算」の2つの計算に対し、[第1の実施形態]〜[第5の実施形態]のうちのどの実施形態を適用するかに応じて、必要となる8-bit´4-bit乗算の乗算回数が変化する。この乗算回数は、実施形態のベースとなる基本原理-1〜基本原理-4それぞれに必要となる乗算回数の合計で評価される。評価結果を表5に示す。
表5の評価においては、16乗の演算回数が含まれていないが、これは、GF(((22)2)2)の16乗演算は、非常に小さな回路規模で実現できる特殊な演算であるからである。具体的には、Xに対する16乗演算結果X16はXの上位4-bit XH, 下位4-bit XLを用いて、X16=XH || (XL○XH)のように4-bitXOR演算のみで演算可能であり、これは乗算回路の回路規模と比較して非常に小さいため無視できる大きさである。

Claims (5)

  1. 非線型変換を2進体又は合成体における乗算処理で演算する共通鍵ブロック暗号化装置であって、
    前記非線型変換以外の演算処理を、固定値によるマスク(以下「固定値マスク」)をエクスクルーシブオア演算(以下「XOR」)して得た固定値マスク化入力データにより実行する演算器と、
    前記非線型変換における乗算処理において、
    全ての入力データに固定値マスクをXORして固定値マスク化入力データに変換し、更に乱数値によるマスク(以下「乱数値マスク」)をXORして乱数値マスク化入力データに変換するXOR演算回路と、
    該XOR演算回路から出力された乱数値マスク化入力データに基づいて前記乗算処理を実行する乗算器と、
    該乗算器から出力される乱数値マスク化出力データを固定値マスク化出力データ再変換して出力する乱数値マスク−固定値マスク変換回路と、
    を含むことを特徴とする暗号化装置。
  2. 前記乗算処理は、
    前記非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR,S、固定値マスクをfr、○をXOR演算処理、◎を乗算処理とし、R’=R○pr,S’=S○qrのように固定値マスクp r 、q r に乱数値マスクを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を演算する演算回路又はこれと等価な演算回路によって構成される、
    ことを特徴とする請求項1に記載の暗号化装置。
  3. 前記乗算処理は、
    前記非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR、固定値マスクをfr、○をXOR演算処理、◎を乗算処理とし、R’=R○prのように固定値マスクp r に乱数値マスクをXORした結果の乱数値マスクをR’として、
    J1=(X○R’)◎(Y○R’)
    J2=R’◎((X○R’)○(Y○R’)○R’)
    J0=J1○J2○fr
    を演算して出力J0=X◎Y○frを演算する演算回路又はこれと等価な演算回路によって構成される、
    ことを特徴とする請求項1に記載の暗号化装置。
  4. 前記乗算処理は、βγ=2を満たす合成体GF((…(2β1)…)βγ)における演算であり、
    前記乗算処理は、
    前記非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR,S、固定値マスクをfr、○をXOR演算処理、◎を乗算処理とし、R’=R○pr,S’=S○qrのように固定値マスクp r 、q r に乱数値マスクを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’H 2
    J3=((X○R’)○(Y○R’L)○R’L)◎R’L
    J0=J1○(J2||(0000)2)○J3○fr
    を演算して出力J0=X◎Y○frを演算する演算回路又はこれと等価な演算回路によって構成される、
    ことを特徴とする請求項1に記載の暗号化装置。
  5. 前記乗算処理は、βγ=2を満たす合成体GF((…(2β1)…)βγ)における演算であり、
    前記乗算処理は、
    前記非線形変換における乗算処理の入力データをX,Y、乱数値マスクをR,S、固定値マスクをfr、○をXOR演算処理、◎を乗算処理とし、R’=R○pr,S’=S○qrのように固定値マスクp r 、q r に乱数値マスクを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を演算する演算回路又はこれと等価な演算回路によって構成される、
    ことを特徴とする請求項1に記載の暗号化装置。
JP2010505044A 2008-03-31 2008-03-31 共通鍵暗号機能を搭載した暗号化装置及び組込装置 Active JP5229315B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/000837 WO2009122464A1 (ja) 2008-03-31 2008-03-31 共通鍵暗号機能を搭載した暗号化装置及び組込装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013013329A Division JP5500277B2 (ja) 2013-01-28 2013-01-28 共通鍵暗号機能を搭載した暗号化装置及び組込装置

Publications (2)

Publication Number Publication Date
JPWO2009122464A1 JPWO2009122464A1 (ja) 2011-07-28
JP5229315B2 true JP5229315B2 (ja) 2013-07-03

Family

ID=41134886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010505044A Active JP5229315B2 (ja) 2008-03-31 2008-03-31 共通鍵暗号機能を搭載した暗号化装置及び組込装置

Country Status (4)

Country Link
US (1) US8369516B2 (ja)
EP (1) EP2273472B1 (ja)
JP (1) JP5229315B2 (ja)
WO (1) WO2009122464A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5060570B2 (ja) * 2010-02-23 2012-10-31 株式会社東芝 暗号化装置および復号装置
JP5556955B2 (ja) * 2011-03-29 2014-07-23 富士通株式会社 暗号処理装置、認証方法およびプログラム
GB2494731B (en) 2011-09-06 2013-11-20 Nds Ltd Preventing data extraction by sidechannel attack
JP5818768B2 (ja) * 2012-10-18 2015-11-18 日本電信電話株式会社 マスク生成装置、情報処理装置、及びその方法、プログラム
US10142099B2 (en) * 2013-01-11 2018-11-27 Qualcomm Incorporated Method and apparatus for a computable, large, variable and secure substitution box
US20150227472A1 (en) * 2014-02-10 2015-08-13 Kabushiki Kaisha Toshiba Memory system, controller, and method
US9875377B2 (en) * 2014-03-31 2018-01-23 Stmicroelectronics S.R.L. Encryption device of a substitution-box type, and corresponding encryption method and computer program product
US9800406B2 (en) * 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
KR102376506B1 (ko) * 2014-10-20 2022-03-18 삼성전자주식회사 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법
US20160269175A1 (en) * 2015-03-09 2016-09-15 Qualcomm Incorporated Cryptographic cipher with finite subfield lookup tables for use in masked operations
US10210350B2 (en) * 2015-08-10 2019-02-19 Samsung Electronics Co., Ltd. Electronic device against side channel attacks
US9853813B2 (en) 2016-03-17 2017-12-26 Crater Dog Technologies, LLC Method for securing a private key
CN106452725B (zh) * 2016-06-14 2019-05-31 东南大学 一种基于寄存器掩码的面向aes算法的抗功耗攻击方法
CN107547193A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 使替换运算免受侧信道分析的方法
CN109033847B (zh) * 2018-06-11 2021-06-18 安徽工程大学 Aes加密运算单元、aes加密电路及其加密方法
CN109033893B (zh) * 2018-06-11 2021-06-18 安徽工程大学 基于合成矩阵的aes加密单元、aes加密电路及其加密方法
CN109033894B (zh) * 2018-06-11 2021-06-22 安徽工程大学 普通轮变换运算单元、普通轮变换电路及其aes加密电路
CN109818732B (zh) * 2019-03-12 2021-05-11 南京航空航天大学 一种动态路径s盒及可防御功耗攻击的aes加密电路
CN110059492B (zh) * 2019-04-01 2023-01-31 南京航空航天大学 一种基于双路互补结构的可检错aes加密电路
US11838403B2 (en) * 2019-04-12 2023-12-05 Board Of Regents, The University Of Texas System Method and apparatus for an ultra low power VLSI implementation of the 128-bit AES algorithm using a novel approach to the shiftrow transformation
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366029A (ja) * 2001-06-13 2002-12-20 Fujitsu Ltd Dpaに対して安全な暗号化
JP2005266810A (ja) * 2004-03-16 2005-09-29 Samsung Electronics Co Ltd マスキング方法が適用されたデータ暗号処理装置、aes暗号システム及びaes暗号方法
JP2006003905A (ja) * 2004-06-19 2006-01-05 Samsung Electronics Co Ltd 情報漏れ攻撃を防止するためのガロア体上の乗算方法及び装置、逆変換装置、そしてaesバイト置換演算装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL94449A (en) * 1990-05-20 1994-06-24 Fortress U & T 2000 Ltd Method and apparatus for exponentiation over gf(2")
JP4859370B2 (ja) * 2005-01-19 2012-01-25 三菱電機株式会社 電子素子
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366029A (ja) * 2001-06-13 2002-12-20 Fujitsu Ltd Dpaに対して安全な暗号化
JP2005266810A (ja) * 2004-03-16 2005-09-29 Samsung Electronics Co Ltd マスキング方法が適用されたデータ暗号処理装置、aes暗号システム及びaes暗号方法
JP2006003905A (ja) * 2004-06-19 2006-01-05 Samsung Electronics Co Ltd 情報漏れ攻撃を防止するためのガロア体上の乗算方法及び装置、逆変換装置、そしてaesバイト置換演算装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6012060244; Trichina, E.: 'Combinational Logic Design for AES SubByte Transformation on Masked Data' Cryptology ePrint Archive Report 2003/236, 200311, The Internet *
JPN6012060246; 森岡澄夫 他: '合成体を用いたAES S-Box回路に対するDPA攻撃' コンピュータセキュリティシンポジウム2004 , 20041020, p.679-684 *
JPN6012060247; 川畑伸幸 他: 'AESにおける合成体Subbytes向けパワーマスキング乗算回路の設計' 電子情報通信学会技術研究報告 第107巻 第335号, 20071114 *

Also Published As

Publication number Publication date
EP2273472A1 (en) 2011-01-12
US8369516B2 (en) 2013-02-05
EP2273472B1 (en) 2016-02-17
WO2009122464A1 (ja) 2009-10-08
EP2273472A4 (en) 2011-06-29
JPWO2009122464A1 (ja) 2011-07-28
US20110013769A1 (en) 2011-01-20

Similar Documents

Publication Publication Date Title
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP4596686B2 (ja) Dpaに対して安全な暗号化
CN106788974B (zh) 掩码s盒、分组密钥计算单元、装置及对应的构造方法
JP4909018B2 (ja) 共通鍵暗号のための暗号化装置
KR101026439B1 (ko) Seed 암호화에서 차분 전력 분석 공격을 방어하기 위한 마스킹 방법
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
Jaffe A first-order DPA attack against AES in counter mode with unknown initial counter
TW201044334A (en) Encryption device, encryption method, and computer program
WO2011101994A1 (ja) 暗号化装置
US20170366339A1 (en) Method of encryption with dynamic diffusion and confusion layers
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
KR101506499B1 (ko) 마스킹이 적용된 seed를 이용한 암호화 방법
Ara et al. Dynamic key dependent S-Box for symmetric encryption for IoT devices
KR100991713B1 (ko) 마스킹을 이용한 aes 역원 연산 장치 및 방법과 이를 이용한 aes 암호 시스템
Noura et al. Tresc: Towards redesigning existing symmetric ciphers
JP2012143011A (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
Mohan et al. Revised aes and its modes of operation
Ha et al. Differential power analysis on block cipher ARIA
JP2002510058A (ja) 2進データ・ブロックの暗号変換のための方法
Yang et al. A new block cipher based on chaotic map and group theory
Silva-Garcia et al. The triple-DES-96 cryptographic system
Bai et al. Securing SMS4 cipher against differential power analysis and its VLSI implementation
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
Cook et al. Elastic aes

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130304

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5229315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150