JP4909018B2 - 共通鍵暗号のための暗号化装置 - Google Patents

共通鍵暗号のための暗号化装置 Download PDF

Info

Publication number
JP4909018B2
JP4909018B2 JP2006310716A JP2006310716A JP4909018B2 JP 4909018 B2 JP4909018 B2 JP 4909018B2 JP 2006310716 A JP2006310716 A JP 2006310716A JP 2006310716 A JP2006310716 A JP 2006310716A JP 4909018 B2 JP4909018 B2 JP 4909018B2
Authority
JP
Japan
Prior art keywords
output
input
data
unit
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.)
Expired - Fee Related
Application number
JP2006310716A
Other languages
English (en)
Other versions
JP2008131108A (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
Priority to JP2006310716A priority Critical patent/JP4909018B2/ja
Priority to EP07120575.1A priority patent/EP1924023A3/en
Priority to US11/941,663 priority patent/US8218762B2/en
Publication of JP2008131108A publication Critical patent/JP2008131108A/ja
Application granted granted Critical
Publication of JP4909018B2 publication Critical patent/JP4909018B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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
    • 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/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

本発明は、共通鍵暗号処理に係り、電力解析攻撃と呼ばれる方法による解読を防止する対策を施した暗号化装置に関する。
暗号方式は、公開鍵暗号方式と共通鍵暗号方式に大別される。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対して、共通鍵暗号方式とは、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。
暗号の分野における技術の1つに、解読技術と呼ばれるものがある。解読技術とは、秘密鍵等の秘密情報を暗号文等の入手可能な情報から推定する技術のことであり、様々な方法が存在する。その中で最近注目されている技術に、電力解析攻撃と呼ばれる方法がある。
電力解析攻撃とは、1998年にPaul Kocherによって考案された方法で、スマートカード等の組み込み機器に搭載された暗号プロセッサに様々な入力データを与えたときの電力消費データを収集・解析することで、暗号プロセッサ内部の鍵情報を推定する方法である。電力解析攻撃を用いることで、公開鍵暗号、秘密鍵暗号共に暗号プロセッサから秘密鍵を推定できることが知られている。
電力解析攻撃には、単純電力解析(Single Power Analysis,以下ではSPAと記す)および電力差分攻撃(Differential Power Analysis,以下ではDPAと記す)の2種類が存在する。
SPAは、暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行う方式であり、DPAは、多数の電力消費データの差分を解析することで秘密鍵の推定を行う方式である。一般に、DPAの方がSPAより強力であるといわれている。
SPAまたはDPAを用いた代表的な解読技術としては、次のような論文が発表されている。RSA等の公開鍵暗号に対するDPAを用いた解読法については、下記の非特許文献1にて述べられている。また、共通鍵暗号方式において、現在標準として利用されているDES(Data Encryption Standards )に対するSPAおよびDPAを用いた解読法については、非特許文献2にて述べられている。DESの他に、次世代で標準として利用されると思われる共通鍵暗号方式であるRijndaelについても、非特許文献3にてDPAを用いた解読の可能性が指摘されている。
以上から、電力解析攻撃の中でもDPAを用いた解読技術は特に有効な方法として注目されており、様々な解読法が研究されている。また、解読技術のみならずDPAによる解読を防ぐための対策技術も発展しており、解読技術と同様に重要な技術として注目されている。
図15は、共通鍵暗号処理の一般的な構成を示している。一般的に、共通鍵暗号処理は拡大鍵生成1501とラウンド処理1502の2つの処理から構成される。拡大鍵生成1501では、入力された秘密鍵から複数の拡大鍵と呼ばれるデータ(拡大鍵0,拡大鍵1
,...,拡大鍵N)が生成され、ラウンド処理1502に対して出力される。これらの拡大鍵と平文をラウンド処理1502に入力することで、暗号化のための変換が行われ、暗号文が出力される。
代表的な共通鍵暗号のアルゴリズムとして、AES(Advanced Encryption Standards )が知られており、米国のNIST(National Institute of Standards and Technology)の標準FIPS197(Federal Information Processing Standards Publication 197)として公開されている(例えば、下記の非特許文献4を参照)。
図16は、AESの構成を示している。AESは、128ビットを暗号化の単位とするアルゴリズムである。すなわち、128ビットの平文から128ビットの暗号文を生成する。秘密鍵は、128ビット、192ビット、または256ビットの3種類から選択することができる。
まず、拡大鍵生成1601を実行することで、秘密鍵からN+1個の128ビット拡大鍵が生成される。AESのラウンド処理1602は、RoundKey(ラウンドキー)1611、Subbyte(サブバイト)1612、ShiftRow(シフトロウ)1613、およびMixColumn(ミクスコラム)1614の4種類の処理から構成され、これらのうち、RoundKey1611において拡大鍵が使用される。ラウンド処理1602に平文が入力されると、RoundKey1611、Subbyte1612、ShiftRow1613、およびMixColumn1614の処理が、この順序でN−1回繰り返される。
次に、RoundKey1615、Subbyte1616、ShiftRow1617、およびRoundKey1618の処理が実行され、暗号文が出力される。繰り返し回数Nは、秘密鍵のビット長によって異なり、128ビットの場合はN=10、192ビットの場合はN=12、256ビットの場合はN=14である。
RoundKey処理では、図17に示すように、128ビットの入力データと128ビットの拡大鍵の排他的論理和(XOR)が計算され、出力データとして出力される。Subbyte処理では、図18に示すように、16個の同じ非線形変換テーブル(Sbox)1801−1〜1801−16により、128ビットの入力データが128ビットの出力データに変換される。
ShiftRow処理では、図19に示すように、16個の8ビットデータxj (j=0,1,...,15)からなる入力データXが、次式により、16個の8ビットデータyi (i=0,1,...,15)からなる出力データYに変換される。

i =xj ,j=13i−4(mod 16) (1)

(1)式において、(mod 16)は、16を法とする剰余演算を表している。
MixColumn処理では、図20に示すように、16個の8ビットデータxj (j=0,1,...,15)からなる入力データから、16個の8ビットデータyj からなる出力データが生成される。このとき、4個の乗算器2001−1〜2001−4を用いて次式のような乗算が実行される。
(2)式は、図20のMixcolumn処理に含まれる4つの乗算器2001−1〜2001−4のそれぞれが演算する計算処理を表している。
次に、DPAによる秘密鍵解読方法について説明する。DPAは、図15のラウンド処理1502に関する消費電力を測定することで、秘密鍵を解読する方法である。以下では、DPAを用いて解読を行うことができる共通鍵暗号処理の構成について、AESに限定せずに説明を行う。
一般的な共通鍵暗号処理では、図21の拡大鍵XOR処理、図22の線形変換処理、図23の非線形変換処理の3つを組み合わせてラウンド処理を構成し、ラウンド処理が複数回繰り返し実行される。
拡大鍵XOR処理は、図21に示すように、入力データXと拡大鍵KのXORの演算結果Zを出力する処理である。線形変換処理は、図22に示すように、入力データXに対して、Z=L(X)を満たすZを出力する処理である。XOR演算を
と記すことにすると、Lは、任意のXおよびYに関して次式を満たすような線形変換を表している。
具体的には、図19のShiftRow処理のようなビット置換処理や、図20のMixColumn処理のような行列演算等がLに該当する。
非線形変換処理は、図23に示すように、入力データXに対してZ=W(X)を満たすZを出力する処理である。このとき、Wは、任意のXおよびYに関して次式を満たさない非線形変換を表している。
具体的には、Sboxと呼ばれる非線型変換テーブル索引でWを実現する場合が多い。この場合、入力データXをX=x0 x1 ...xu-1 のようにu個に分割し、Sboxを表すwj (j=0,1,...,u−1)を用いてzj =wj (xj )で表されるzj を計算し、再びZ=z0 1 ...zu-1 のように結合して、得られたデータZを出力する。
次に、上記処理を組み合わせた共通鍵暗号処理に対する、DPAを用いた解読法につい
て説明する。ここでは、最も簡単な例として、図21と図23の処理を組み合わせた図24のような処理に対して、DPAを用いることで拡大鍵Kを解読できることを示す。なお、図24の処理は、AESにおけるRoundKey処理(図17)とSubbyte処理(図18)を組み合わせた処理と等価である。
図24の構成において、wj の入出力に関係するビットのみを取り出した構成を図25に示す。図25において、mj は平文等の既知の値、kj は未知の値、wj は既知のSboxを表すものと仮定する。この仮定の下で、DPAにより拡大鍵kj を推定できることを示す。
DPAは、電力消費データの測定と、電力差分データを用いた拡大鍵の解析という2段階から構成される。電力消費データの測定において、ある平文を与えたときに暗号プロセッサが消費する電力消費データは、オシロスコープ等を用いれば、図26示すような電力消費曲線として測定される。平文の値を様々に変えながらこのような測定を繰り返し、十分な回数の測定データが得られた時点で測定を終了する。この一連の測定で得られた電力消費曲線の集合をGとする。
次に、電力消費曲線を用いた拡大鍵の解析について説明する。まず、暗号処理内部で用いられている拡大鍵kj について、kj =k’j であるという仮定を立てる。mj とwj は既知のため、このk’j の仮定に基づき、集合Gは、以下のG0 (k’ j )およびG1
(k’ j )の2種類の集合に分類できる。
そして、以下に示す電力差分曲線DG(k’ j )を作成する。

DG(k’ j )=(集合G1 に属する電力消費曲線の平均)
−(集合G0 に属する電力消費曲線の平均) (7)

もしこの仮定が正しい、すなわち、k’j =kj であるとすると、電力差分曲線DG(k’ j )には、図27に示すようなスパイクが現われる。もしこの仮定が誤り、すなわちk’j ≠kj であるとすると、図28に示すように、DG(k’ j )はスパイクが現れない平坦な曲線となる。よって、仮定したk’j から図27のような電力差分曲線が得られれば、拡大鍵kj を解読できたことになる。
このようなkj の解読を各jについて行えば、最終的に、図24における拡大鍵Kを解読することができる。この解読を、拡大鍵0,拡大鍵1,...,拡大鍵Nについて繰り返すことで、秘密鍵を解読することができる。なお、AESの場合、アルゴリズムの性質上、拡大鍵の先頭の値がそのまま秘密鍵の値であるため、秘密鍵が128ビットならば拡大鍵0を、秘密鍵が192ビットもしくは256ビットならば拡大鍵0と拡大鍵1を解読すれば、秘密鍵全体を解読することができる。
次に、k’j =kj のときに電力差分曲線DG(k’ j )にスパイクが現れる理由について説明する。k’j =kj の場合、(5)式および(6)式に従ってG0 (k’ j )およびG1 (k’ j )の分類を行うことで、zj に関して次式が成立する。

(G1 に属するzj の平均ハミングウェイト)
−(G0 に属するzj の平均ハミングウェイト)=1 (8)
一方、k’j ≠kj の場合、(8)式は成立せず、ランダムな分類を行うことになるので、次式が成立する。

(G1 に属するzj の平均ハミングウェイト)
−(G0 に属するzj の平均ハミングウェイト)=0 (9)

ここで、ハミングウェイトとは、ある値をビット列で表現したときに、そのビット列に含まれるビット値‘1’の個数のことであり、例えば、ビット値(1101)2 のハミングウェイトは3である。
(8)式が成立する場合は、G1 (k’ j )とG0 (k’ j )の間でのロード値zj の平均ハミングウェイトに差が生じるが、(9)式が成立する場合は、G1 (k’ j )とG0 (k’ j )の間でのロード値zj の平均ハミングウェイトに差が生じない。
一般的に、消費電力はデータ値のハミングウェイトに比例すると考えられており、このことが正しいことを示した実験結果が、下記の非特許文献5にて示されている。したがって、k’j =kj である場合、(8)式が満たされることで消費電力の差が電力差分曲線上のスパイクという形になって現れるが、(9)式の場合はスパイクが現れず、平坦な曲線となる。
以上では、最も簡単な図24の構成に対するDPAについて述べたが、このような解読法は、図22のような線形変換を挿入しても有効であることが判明している。
図29は、図24を一般化した構成を示しており、拡大鍵XOR処理の前後に2つの線形変換処理L1 およびL2 が挿入されている。例えば、入力をそのまま出力する関数をL1 とし、ビット転置置換関数をL2 とし、SC2000のB関数と呼ばれるSboxをwj とすると、図29はSC2000と等価な構成を表している。
なお、SC2000の仕様については、下記の非特許文献6に示されている。L2 はビット置換関数であるので、図29の処理は、wj の入出力に関係するビットのみを取り出した構成を考えることで、図25と同一の処理に変換できる。したがって、前述と同様のDPAを用いることで、拡大鍵Kを解読することができる。
以上の方法では、非線形処理中のSbox出力に注目してDPAを適用しているが、その他にも、入力mj と鍵kj のXOR演算直後の値(拡大鍵XOR処理の出力値)やSboxへの入力値xj の値に注目してDPAを適用する方法が知られている(例えば、下記の非特許文献7を参照)。
以上の記述を整理すると、次の条件を満たす場合にDPAにより秘密鍵Kが推定される。
DPA−1:入力Mが既知かつ制御可能、鍵Kが未知で固定、Sboxのwj の変換が既知の場合、図30のAの部分(Sboxのwj の出力)の電力消費曲線を測定することで、秘密鍵Kを推定可能である。
DPA−2:入力Mが既知かつ制御可能、鍵Kが未知で固定の場合、図30のBの部分(拡大鍵XOR処理の出力値の書き出し)の電力消費曲線を測定することで、秘密鍵Kを推定可能である。
DPA−3:入力Mが既知かつ制御可能、鍵Kが未知で固定の場合、図15のCの部分(Sboxのwj を索引するための入力値のロード)の電力消費曲線を測定することで、秘密鍵Kを推定可能である。
これらのDPA攻撃条件については、下記の特許文献1にも記載されている。
DPAを行うための消費電力測定法としては、2種類の方法が知られている。1つは、図31に示すように、スマートカード3101の表面に抵抗3102を接続し、オシロスコープ3103により、抵抗3102の両端の電圧を測定する方法である。もう1つは、図32に示すように、スマートカード3101の表面に、オシロスコープ3103に接続された電磁波プローブ3201を設置し、スマートカード3101から漏洩する電磁波を測定することで、消費電力を測定する方法である。
図31の方法は、カード表面に抵抗を取り付けるだけでよいため、攻撃者の手間が少ないというメリットがある。ただし、カード全体の消費電力を測定するため、暗号処理とは関係のない消費電力も測定されてしまうというデメリットがある。
図32の方法は、カードの消費電力を部分的に測定することができるため、測定精度が高いというメリットがある。例えば、スマートカード3101がCPU(中央処理装置)、RAM(random access memory)、ROM(read only memory)、演算器、および暗号プロセッサから構成される場合、電磁波プローブ3201を暗号プロセッサの近くに設置することで、CPU、RAM、ROM、および演算器の消費電力成分を低く抑えながら、暗号処理に関する消費電力を重点的に測定することができる。電磁波の強度は、電流発生源からの距離の2乗に反比例するため、電磁波プローブ3201を電流発生源に近づけるほど電磁波が強くなるためである。
電磁波プローブ3201を設置する場所を慎重に選択することで、例えば、図15における拡大鍵生成1501の消費電力を測定することなく、ラウンド処理1502のみの消費電力を測定することも可能であり、非常に精度の高いDPAを実行することができる。デメリットは、電磁波プローブ3201の最適な設置場所を発見するために、電力測定実験を何回も繰り返すため、時間的なコストが大きいという点である。
次に、図33から図35までを参照しながら、従来のDPA対策法について説明する。DPA対策法としては、スマートカード内にノイズ発生器を置く等の、電力消費量の測定精度を落とす方法と、暗号処理に対策を施し消費電力をランダム化する方法が存在する。前者は容易に実施可能であるが、例えば、図32に示した電力測定法を用いることで解読が可能になるため、根本的な対策とはならない。これに対して、後者は、実施は容易でないが根本的な対策となる。
消費電力をランダム化する方法の代表的なものとして、マスク法(以下では、「従来例1」と記す)と呼ばれる方法が知られている(例えば、下記の非特許文献8を参照)。DPA対策なしの暗号処理において計算されるデータをMとすると、従来例1のDPA対策法では、データMを計算する代わりに、次式で表されるデータM’およびRを計算することで、暗号処理が行われる。
ただし、Rは乱数であり、暗号処理を実行する度に発生させる値である。この方法によれば、暗号処理のデータMにランダムな値RをXOR演算することで、データMがマスク
される。データがランダム化されることで消費電力もランダム化されるため、DPAに対して安全な処理を実現することができる。以下では、Rのように、DPA対策なしのデータに対してXOR演算される値を、マスク値と呼ぶ。
この方法では、乱数Rの値に応じて、ラウンド処理の各段階でM’およびRの2つのデータに対する演算をそれぞれ実行する必要があるため、データMを直接計算する場合と比較して、処理時間が2倍以上になるという問題がある。
問題1:暗号処理の計算を2重化して行う必要があるため、処理時間が2倍以上となる。
この問題を解消するための方法が、上述した特許文献1に開示されている(以下では、「従来例2」と記す)。従来例1ではマスク値をランダムに生成しているのに対して、従来例2では、事前に計算された複数の固定値の中から、乱数によって1つを選択し、その値をマスク値として用いる。選択されたマスク値をRx と表記すると、従来例2では、次式を満たすデータM’ x およびRx が計算される。
x は事前に計算された値であるため、M’ x およびRx の両方を計算する必要はなく、M’ x のみを計算すればよい。したがって、従来例2は、従来例1のように計算を2重化する必要はなく、高速な処理を実現することができる。
従来例2のDPA対策法を用いることで、図24に示したDPA対策なしの暗号処理は、図33に示すような暗号処理に置き換えられる。図33は、図24の処理を、AESにおけるRoundKey処理とSubbyte処理の組み合わせとみなした場合の構成を示している。
図33において、セレクタ3301−jおよび3306−j(j=0,1,...,15)(q−1 MUX)は、q個の入力データの中から乱数jに応じて1つを選択し、出力する。デマルチプレクサ3304−j(j=0,1,...,15)(q−1 DEMUX)は、q個の出力先の中から乱数jに応じて選択した出力先に、入力されたデータを出力する。
XOR演算器3302−jは、8ビットごとに分割された拡大鍵K0 〜K15のうちKj と、セレクタ3301−jにより定数c0 〜cq-1 から選択された値のXORを計算することで、Kj をマスクする。XOR演算器3303−jは、マスクされた拡大鍵と入力データのXORを計算する。
次に、XOR演算器3303−jの演算結果に対して、Sbox回路3305−jによる非線形変換処理が行われる。この処理では、乱数jに応じてq個のSbox(S’0 [x]〜S’q-1 [x])の中から1つが選択され、そのSboxを用いて入力データが変換される。この選択に使用される乱数jは、拡大鍵Kj のマスク値の選択に使用された乱数jと同じである。
S’0 [x]〜S’q-1 [x]は、それぞれ異なる定数d0 〜dq-1 でマスクされている。すなわち、DPA対策なしのSboxをS[x]とすると、S’i [x](i=0,1,...,q−1)は、次式のように表される。
Sbox回路3305−jの入力側にデマルチプレクサ3304−jがあり、出力側にセレクタ3306−jがあるため、q個のSboxのうち拡大鍵XOR演算の信号が伝達するのは1つだけである。q個のSboxの論理はそれぞれ異なるため、電力特性もそれぞれ異なる。このため、乱数によりこれらのうちの1つを選択することで、消費電力がランダム化され、DPAに対して安全な処理を実現することができる。
また、この方法は、図15におけるラウンド処理1502に関する消費電力を直接的にランダム化するため、図31および図32に示した電力測定法の両方に対して安全な処理を実現することができる。ただし、図33の構成は、DPA対策なしのq倍のSboxを必要とする。一般的に、Sboxの回路面積は非常に大きいため、図33のDPA対策法には次のような問題がある。
問題2:DPA対策なしのq倍のSboxを必要とするため、回路面積が大きくなる。
この問題を解消する方法として、下記の特許文献2に記されたDPA対策法が知られている(以下では、「従来例3」と記す)。この方法は、図15における拡大鍵生成1501の消費電力をランダム化する方法である。このメカニズムを説明するために、DPA対策なしのAESにおける拡大鍵生成について説明する。
AESにおける拡大鍵生成では、ラウンド処理と同様にSubbyte処理が実行されるが、この場合は、図34に示すように、32ビット単位によるSubbyte処理が実行される。従来例3では、図34のSubbyte処理の消費電力をランダム化するために、図35に示すような回路を用いる。
図35の回路は、4つのSbox(S0 〜S3 )と、乱数に応じて入力データXの経路を選択する経路選択回路3501および3502から構成される。経路選択回路3501には、乱数とともに、32ビットデータXが4つの8ビットデータx0 〜x3 に分割されて入力される。経路選択回路3501への入力時には、データがx0 ,x1 ,x2 ,x3 の順番に並んでいるが、出力時にはこの順番が乱数に応じてランダムに並べ替えられる。図35の例では、最上位ビットから見て、x1 ,x3 ,x0 ,x2 の順番に並べ替えられる。
データの順序が入れ替えられた後は、これらのデータに対してそれぞれS0 〜S3 で表されるSbox処理が行われる。これらのSboxは、論理的にはDPA対策なしのSboxと同じであるが、物理的に異なる形態で実装されるため、消費電力特性はそれぞれ異なる。例えば、S0 は論理回路で実装され、S1 はSRAM(Static Random Access Memory )で実装され、S2 はMask ROMで実装され、S3 はFLASH ROMで実装される。
つまり、データxj (j=0,1,2,3)を処理するSboxがS0 〜S3 の中からランダムに選択されることで、消費電力がランダムに変化するため、DPAに対する安全性を向上させることができる。Sboxによる計算が終わった後は、経路選択回路3502によるデータ順序の入れ替えを行い、Sboxへの入力時にランダム化されたデータの順序を元に戻す。
この構成のメリットは、図34のDPA対策なしの構成と比較してSboxの個数が増えないため、回路面積の利用効率に優れていることである。図33に示した従来例2の方
法では、q個のSboxのうちの1つしか暗号処理に使用されないのに対して、従来例3の方法では、経路選択回路の作用により、すべてのSboxが暗号処理に使用されることになる。したがって、従来例3は従来例2が有している問題2を解決することができる。
特開2002−366029号公報 特表2005−527853号公報 Thomas S. Messerges, Ezzy A. Dabbish and Robert H. Sloan, "Power Analysis Attacks of Modular Exponentiation in Smartcards," Cryptographic Hardware and Embedded Systems (CHES’99), Springer-Verlag, pp. 144-157, 1999. Paul Kocher, Joshua Jaffe, and Benjamin Jun, "Differential Power Analysis," in proceedings of Advances in Cryptology-CRYPTO’99, Springer-Verlag, pp. 388-397, 1999. 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, February 1999. "Federal Information Processing Standards Publication 197"、[online]、[平成18年10月2日検索]、インターネット<URL: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf> T. S. Messerges, Ezzy A. Dabbish and Robert H. Sloan, "Investigations of Power Attacks on Smartcards," Proceedings of USENIX Workshop on Smartcard Technology, May 1999. Takeshi Shimoyama, Hitoshi Yanami, Kazuhiro Yokoyama, Masahiko Takenaka, Kouichi Itoh, Jun Yajima, Naoya Torii and Hidema Tanaka, "The Block Cipher SC2000," Fast Software Encryption (FSE 2001), pp. 312-327, LNCS vol. 2355, 2002. M. Akkar, R. Bevan, P. Dischamp and D. Moyart, "Power Analysis, What Is Now Possible...," ASIACRYPT 2000, pp. 489-502, 2000. Thomas S. Messerges, "Securing the AES Finalists Against Power Analysis Attacks," in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, pp. 150-164, 2001.
上述した従来例3のDPA対策法は、以下で述べる2つの新たな問題を有している。最初の問題は、次の通りである。
問題3:従来例3は、拡大鍵生成の消費電力のみをランダム化する方法であるため、DPAに対する安全性が低い。すなわち、図31に示した方法により、スマートカード全体の消費電力を測定するDPAを防ぐことはできるが、図32に示した方法により、スマートカードの一部の回路の消費電力を測定するDPAに対しては、安全ではない。
前述した通り、DPAは、図15におけるラウンド処理1502の消費電力を測定することで、秘密鍵の解読を行う方法である。これに対して、従来例3は、拡大鍵生成1501の消費電力をランダム化できるが、ラウンド処理1502の消費電力をランダム化することはできない。
したがって、スマートカード全体の消費電力を測定するDPAに対しては安全である。しかし、スマートカードの一部の回路の消費電力を測定するDPAの場合、ラウンド処理1502の消費電力のみを測定することが可能であるため、安全ではない。
従来例3は、さらに次のような問題を有する。
問題4:従来例3の経路選択回路は、セレクタ回路やデマルチプレクサ回路の他に、入
力された乱数から選択信号を生成する回路を必要とするため、回路規模が大きくなる。
この問題を説明するために、従来例3の経路選択回路の構成例を図36に示す。図36は、上述した特許文献2の図11に示された構成を示している。この構成は、選択信号生成回路3601および経路選択回路3602、3603からなる。選択信号生成回路3601は、乱数デコーダ3611およびインバータ回路3612を含み、経路選択回路3602は、セレクタ(4−1 MUX)3621−1〜3621−4を含み、経路選択回路3603は、4入力1出力のセレクタ3622−1〜3622−4を含む。
不図示の乱数発生回路により9ビットの乱数が生成され、この乱数が乱数デコーダ3611に入力されると、乱数デコーダ3611から8ビットの信号が出力される。この8ビット信号は、経路選択回路3602に選択信号として入力される。経路選択回路3602のセレクタ3621−1〜3621−4のそれぞれに対して、2ビットの選択信号が割り当てられ、各セレクタ3621−j(j=0,1,2,3)は、この選択信号に応じて入力信号x0 〜x3 の中から1つを選択し、出力する。
図36の例では、セレクタ3621−1、3621−2、3621−3、および3621−4が、それぞれx1 、x3 、x0 、およびx2 を選択する。この選択動作は、4つのセレクタの間で出力信号が重複しないように行われる。なぜなら、出力信号が重複して、例えば、セレクタ3621−1、3621−2、3621−3、および3621−4が、それぞれx0 、x3 、x0 、およびx2 を選択した場合、x1 に関するSbox処理が実行されないため、正常な暗号化結果を得ることができないからである。
例えば、図36の4つのセレクタのうち、セレクタ3621−1によって入力信号x1 が選択されているが、その他のセレクタ3621−2〜3621−4が入力信号x1 を選択することはない。
乱数に応じてランダムな選択信号を生成しながら、x0 〜x3 に関する重複を避けることができるのは、乱数デコーダ3611が果たす機能によるものである。さらに、乱数デコーダ3611は、ランダムな選択信号に関する統計的な偏りを防ぐ役割も果たす。すなわち、xj を処理するSboxが、S0 〜S3 の中からそれぞれ等しい確率1/4で選択されるようにすることで、統計的な偏りが抑えられ、DPAに対して安全な処理が実現される。
1 、x3 、x0 、およびx2 に対してそれぞれS1 、S2 、S3 、およびS4 によるSbox処理が行われた結果、信号z1 、z3 、z0 、およびz2 が生成され、経路選択回路3603に入力される。
インバータ回路3612は、乱数デコーダ3611から出力された8ビット信号を反転し、得られた信号を選択信号として経路選択回路3603に出力する。この選択信号は、経路選択回路3602によってランダムに順序が入れ替えられた信号を元の順序に戻すための選択信号である。すなわち、信号z1 、z3 、z0 、z2 をz0 、z1 、z2 、z3 の順番に戻すような選択信号が生成される。
インバータ回路3612により生成された8ビットの選択信号は、経路選択回路3603のセレクタ3622−1〜3622−4に2ビットずつ入力される。これにより、セレクタ3622−1、3622−2、3622−3、および3622−4は、それぞれz0 、z1 、z2 、およびz3 を選択する。
図36の構成を用いることで、Sboxの個数を増やさずに消費電力をランダム化する
ことができる。一方で、DPAに対して安全な処理を実現するために、乱数を直接経路選択回路3602および3603に入力することができず、乱数デコーダ3611とインバータ回路3612からなる選択信号生成回路3601を必要とする。その結果、上述した問題4が生じる。
問題1によれば、従来例1は処理時間が2倍となること、問題2によれば、従来例2はSboxがq倍必要であること、問題3によれば、従来例3はラウンド処理の消費電力をランダム化できないため、図32に示したDPAに対して弱いこと、問題4によれば、従来例3は選択信号生成回路を必要とする、ということが明らかになった。そこで、以下では、これらの問題を同時に解消する方法について考察する。
図37は、32ビットデータを対象として、従来例2と従来例3を単純に組み合わせた暗号化回路の構成を示している。この暗号化回路は、XOR演算器3701−0〜3701−3、3702−0〜3702−3、セレクタ3703−0〜3703−3、選択信号生成回路3704、経路選択回路3705、3706、および4つのSbox(S0 〜S3 )を備える。選択信号生成回路3704は、インバータ回路3711および乱数デコーダ3712を含む。
XOR演算器3701−j、3702−jおよびセレクタ3703−j(j=0,1,2,3)の動作は、図33のXOR演算器3302−j、3303−jおよびセレクタ3301−jの動作と同様であり、選択信号生成回路3704、経路選択回路3705、3706、およびS0 〜S3 の動作は、図36の選択信号生成回路3601、経路選択回路3602、3603、およびS0 〜S3 の動作と同様である。
この暗号化回路には、32ビットデータMが4つの8ビットデータm0 〜m3 に分割されて入力され、8ビットの拡大鍵K0 〜K3 と乱数r0 〜r3 、rも入力される。xj はmj とKj のXORを表し、DPA対策なしのSboxをSとすると、Sj [x]=S[x]である。また、crjは、定数c0 〜c3 の中から乱数rj により選択されたマスク値を表している。
この構成では、問題3を解決するために、AESのラウンド処理におけるRoundKey処理とSubbyte処理に対してそれぞれ消費電力のランダム化を行っている。RoundKey処理に対する消費電力のランダム化は、従来例2の方法を用いており、Subbyte処理に対する消費電力のランダム化は、従来例3の方法を用いている。AESのSubbyte処理に対して従来例3の方法を用いることで、問題2も解決される。
ただし、この構成には、マスク法のデータ処理条件を満たさないという問題がある。図33に示した従来例2の説明で既に述べた通り、マスク法のデータ処理条件は、計算されるデータT’が、乱数によって選択されるマスク値Rx を用いて、次式で表されることである。
このRx がTおよびT’に依存せず、乱数によってのみ決定される値であれば、すべてのAES暗号処理が終了した後に、次式により簡単にT’を元の値Tに戻すことができる。
x がTおよびT’に依存する場合は、RをT’に応じて動的に計算する必要がある。この計算を実行するには計算の2重化が必要となるため、従来例2が本来解消するはずであった問題1を解決することができない。
図37の構成がマスク法のデータ処理条件を満たさない理由は、RoundKey処理においては、乱数で選択した定数によるマスク処理を行っているにもかかわらず、Subbyte処理では、マスクされていないSboxを用いているためである。例えば、入力データの最上位8ビットm0 に対してRoundKey処理が行われることで、
が出力される。ただし、
である。
この後、乱数rに応じてデータ順序を入れ替える経路選択回路3705を経由して、データ
に対してS2 によるSbox処理が行われ、
が出力される。その後、経路選択回路3706により、
は再び最上位8ビットの位置に戻され、データが出力される。このとき、
は、マスク法のデータ処理条件を満たさない。なぜなら、
において、
であるが、Sは非線形変換関数であるため、
の関係は満たされず、Rx =S[cr0]が成立しないからである。つまり、Rx は乱数r0 のみによって決定される値ではなく、データ値x0 の影響を受けて変化する値であるということになる。
この問題を解決するための構成を図38に示す。図38は、従来例3をAESのラウンド処理におけるSubbyte処理に対して適用した構成を示している。RoundKey処理は、DPA対策なしの場合と同じ処理である。
図37の構成とは異なり、RoundKey処理においてcrjによるマスクが付かないため、入力データm0 〜m3 に対してそれぞれ出力データS[x0 ]〜S[x3 ]が得られる。したがって、
におけるRx=0の場合と等価な処理を実現できる。
ただし、この構成の場合、Subbyte処理の消費電力をランダム化することはできるが、RoundKey処理の消費電力をランダム化することはできない。すなわち、図30のCおよびAで示されるSboxの入力および出力の消費電力をランダム化することはできるが、Bで示されるXOR演算の出力の消費電力をランダム化することはできない。したがって、DPA−2として述べたような脆弱性があるため、DPAに対する安全性を実現することができない。
このように、従来例2および従来例3をAESのラウンド処理に単純に適用しただけでは、上記問題1〜問題4をすべて解決したDPA対策を実現することができない。
本発明の課題は、共通鍵暗号処理において、DPAのような電力解析攻撃に対する対策を施し、問題1〜問題4をできる限り解決可能な暗号化装置を提供することである。
図1は、本発明の暗号化装置の原理図である。図1の暗号化装置は、乱数発生手段101、第1の経路選択手段102−1、第2の経路選択手段102−2、第3の経路選択手段102−3、拡大鍵演算手段103、および非線形変換手段104を備え、共通鍵暗号の暗号処理を行う。
乱数発生手段101は、乱数を発生する。第1の経路選択手段102−1は、乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替えて出力する。拡大鍵演算手段103は、第1の経路選択手段102−1から出力される複数の拡大鍵マスク値と、拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成する。
第2の経路選択手段102−2は、乱数の値に応じて第1の経路選択手段102−1とは逆の並べ替えを行うことで、排他的論理和のデータ列を並べ替えて出力する。非線形変換手段104は、第2の経路選択手段102−2から出力されるデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力する。第3の経路選択手段102−3は、乱数の値に応じて第1の経路選択手段102−1と同じ並べ替えを行うことで、非線形変換手段104から出力されるデータ列を並べ替えて出力する。
第2の経路選択手段102−2が第1の経路選択手段102−1とは逆の並べ替えを行うため、非線形変換手段104に入力されるデータ列においては、第1の経路選択手段102−1に入力された複数の拡大鍵マスク値の順序が保存されている。したがって、これらの拡大鍵マスク値の影響をあらかじめ考慮に入れた、マスク付き非線形変換テーブルを非線形変換手段104に設定しておくことが可能になる。
このとき、(13)式のRx がTおよびT’に依存せず、乱数によってのみ決定される値になるように、マスク付き非線形変換テーブルを調整すれば、マスク法のデータ処理条件が満たされ、問題1を解決することができる。
このようなマスク付き非線形変換テーブルを用いた場合、非線形変換手段104から出力されるデータ列は、第2の経路選択手段102−2から出力されるデータ列と上記複数の拡大鍵マスク値の排他的論理和を、マスクなしの非線形変換テーブルにより変換した結果と、上記複数の非線形変換マスク値との排他的論理和を表すデータ列になる。
また、第3の経路選択手段102−2が第1の経路選択手段102−1と同じ並べ替え、すなわち、第2の経路選択手段102−1とは逆の並べ替えを行うため、第3の経路選択手段102−2から出力されるデータ列においては、拡大鍵演算手段103に入力された入力データ列の順序が保存されている。このため、図33に示したような大規模なSbox回路を用いる必要がなく、問題2を解決することができる。
また、拡大鍵演算手段103の出力と非線形変換手段104の出力が共にマスク値によりマスクされているため、問題3を解決することができる。さらに、第1の経路選択手段102−1、第2の経路選択手段102−2、および第3の経路選択手段102−3は、乱数発生手段101からの乱数により直接制御されるため、選択信号生成回路が不要となり、問題4を解決することができる。
乱数発生手段101は、例えば、後述する図9の乱数発生器901に対応し、第1の経路選択手段102−1、第2の経路選択手段102−2、および第3の経路選択手段102−3は、例えば、後述する図2の経路選択回路203、204、および205にそれぞれ対応する。拡大鍵演算手段103は、例えば、XOR演算器201および202に対応し、非線形変換手段104は、例えば、4つのマスク付きSbox(S’0 〜S’3 )に対応する。
本発明によれば、代表的な共通鍵暗号アルゴリズムであるAESを始めとした暗号処理における秘密鍵の解読が困難になり、スマートカード等の組み込み機器の安全性を高めることができる。
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図2は、AESのラウンド処理におけるRoundKey処理およびSubbyte処
理に対して、本発明のDPA対策を適用した暗号化回路の構成例を示している。この暗号化回路は、XOR演算器201、202、経路選択回路203、204、205、および4つのマスク付きSbox(S’0 〜S’3 )を備える。
S’0 〜S’3 は、従来例1と同様に、DPA対策なしのSbox(S)、それぞれ異なる定数cj 、dj (j=0,1,2,3)に対して、次式を満たす。
(15)式より、次式が成り立つ。
それぞれ異なる定数cj 、dj をマスク値として用いることで、4個のマスク付きSboxの論理をそれぞれ異ならせることができ、消費電力のランダム化が実現される。
経路選択回路203は、RoundKey処理の消費電力をランダム化するために用いられ、経路選択回路204および経路選択回路205は、Subbyte処理におけるSbox処理の消費電力をランダム化するために用いられる。3つの経路選択回路203〜205にはそれぞれ同一の乱数が入力され、入力された乱数がそのまま選択信号として用いられる。この乱数は、4ビットもしくは6ビットであるが、乱数のビット長は構成によって異なる。
次に、図2の暗号化回路の動作について説明する。この暗号化回路には、32ビットデータMおよび32ビットの拡大鍵Kが入力される。32ビットデータMを4つの8ビットデータm0 〜m3 で表し、拡大鍵Kを4つの8ビット拡大鍵K0 〜K3 で表すと、xj はmj とKj のXORを表している。
まず、経路選択回路203に乱数と4つの8ビットマスク値c0 〜c3 が入力されると、乱数に応じてマスク値の順序がランダムに入れ替えられる。図2の例では、c0 ,c1 ,c2 ,c3 がc2 ,c0 ,c3 ,c1 の順番に並べ替えられて、XOR演算器201に出力される。XOR演算器201は、これらのマスク値と拡大鍵KのXORをXOR演算器202に出力し、XOR演算器202は、XOR演算器201の出力とデータMのXORを出力する。
次に、XOR演算器202の出力データに対して、経路選択回路204によりデータ順序の入れ替えが行われる。経路選択回路204は、入力された乱数に応じてデータの順序をランダムに入れ替え、S’0 〜S’3 に出力する。ただし、S’0 〜S’3 には、それぞれマスク値c0 〜c3 によりマスクされたデータが入力される。図2の例では、XOR演算器202の出力データ

の順番に並べ替えられて、S’0 ,S’1 ,S’2 ,S’3 にそれぞれ入力される。
この順番が保証されるのは、経路選択回路204が経路選択回路203の逆変換を実行する回路になっているためである。経路選択回路204がこのような変換を行うことで、経路選択回路203により入れ替えられたマスク値c0 〜c3 に関するデータ順序が、Sboxへのデータ入力時にはc0 ,c1 ,c2 ,c3 の順序に戻ることになる。
次に、S’0 ,S’1 ,S’2 ,S’3 によるSbox処理の結果、それぞれマスク値d0 ,d1 ,d2 ,d3 によりマスクされたデータが出力される。図2の例では、S’0 ,S’1 ,S’2 ,S’3 から、それぞれデータ
が出力される。
これらのデータに対して、経路選択回路205を用いた順序のランダム化を行うことで、x0 〜x3 に関するデータ順序が本来の順序であるx0 ,x1 ,x2 ,x3 の順序に戻され、代わりにこれらのデータに付加されるマスク値の順序がランダム化される。図2の例では、経路選択回路205から、並べ替えられたデータ
が出力される。
これらの一連の処理は、マスク法のデータ処理条件を満たすため、上記問題1を解決することができる。また、必要なSboxの個数がDPA対策なしの場合と同じ4個でよく、従来例1のようにq倍のSboxが必要ではないため、問題2を解決することができる。また、ラウンド処理におけるRoundKey処理とSubbyte処理の両方の消費電力がランダム化されるため、問題3を解決することができる。さらに、乱数を直接経路選択回路203〜205に入力することができ、選択信号生成回路を用いる必要がないため、問題4を解決することができる。
以上により、図2に示した暗号化回路の構成は、従来の問題1〜問題4をすべて解決することができる。なお、問題4を解決するための経路選択回路203〜205の構成としては、複数の構成が考えられる。そこで、それぞれの構成について、図3から図8までを参照しながら説明する。
図3は、図2の経路選択回路204および205の第1の構成を示している。経路選択回路301および302は、経路選択回路204および205にそれぞれ対応している。なお、経路選択回路203は、経路選択回路205と同じ構成である。経路選択回路301は、2入力2出力の切替回路(2−2 MUX)311〜314から構成され、経路選択回路302は、2入力2出力の切替回路321〜324から構成される。
切替回路311〜314および321〜324は、図4に示すように、2つの8ビット入力部I0 およびI1 と、2つの8ビット出力部O0 およびO1 を有し、選択信号rに応じて、2種類のスイッチングを行う。
1つはr=0の場合であり、O0 =I0 ,O1 =I1 のスイッチングを行う。もう1つはr=1の場合であり、O0 =I1 ,O1 =I0 のスイッチングを行う。すなわち、選択信号rが0か1かに応じて、入力データをそのまま出力するか、交差させてから出力するかを選択する。このような切替回路を用いて経路選択回路301および302を構成することで、外部から入力された乱数をそのまま選択信号として用いることができる。
図4の切替回路を用いた経路選択回路301および302の動作について説明する。経路選択回路301には、4つの8ビットデータx0 ,x1 ,x2 ,x3 が入力され、経路選択回路302からは、4つの8ビットデータz0 ,z1 ,z2 ,z3 が出力される。
経路選択回路301は、図3に示す通り、切替回路311および312を並列に並べた1段目の回路と、切替回路313および314を並列に並べた2段目の回路からなる。入力データは最上位からx0 ,x1 ,x2 ,x3 の順に並んでおり、x0 およびx1 はそれぞれ切替回路311のI0 およびI1 に入力され、x2 およびx3 はそれぞれ切替回路312のI0 およびI1 に入力される。
切替回路311のO0 およびO1 は、それぞれ切替回路313のI0 および切替回路314のI0 に接続され、切替回路312のO0 およびO1 は、それぞれ切替回路313のI1 および切替回路314のI1 に接続されている。出力データは、最上位から切替回路313のO0 、O1 および切替回路314のO0 、O1 の順に出力される。
経路選択回路302の構成についても、経路選択回路301と同様である。経路選択回路302の出力データは、最上位からz0 ,z1 ,z2 ,z3 の順に並んでおり、z0 およびz1 はそれぞれ切替回路323のO0 およびO1 から出力され、z2 およびz3 はそれぞれ切替回路324のO0 およびO1 から出力される。
経路選択回路301および302に対しては、外部から4つの1ビット乱数r0 ,r1 ,r2 ,r3 が入力され、それぞれの切替回路に対して乱数が1ビットずつ選択信号として入力される。ただし、経路選択回路302に対しては、経路選択回路301に入力される乱数が、1段目と2段目の間で逆転して入力される。
したがって、切替回路311、312、313、および314には、それぞれ乱数r0 ,r1 ,r2 ,r3 が入力され、切替回路321、322、323、および324には、それぞれ乱数r1 ,r3 ,r0 ,r2 が入力される。
経路選択回路301は、乱数r0 〜r3 に応じてデータx0 〜x3 の順序をランダム化し、S’0 〜S’3 に出力する。S’0 〜S’3 は、ランダム化されたデータの非線形変換処理を行い、経路選択回路302は、乱数r0 〜r3 に応じて変換後のデータの順序をランダム化される前の状態に戻す。
このとき、経路選択回路301に入力された各データxj の出力先は、乱数r0 〜r3 の中の2ビットの値に応じて、S’0 〜S’3 の中からランダムに選択される。
例えば、x0 については、まず、乱数r0 の値に応じて切替回路311のO0 またはO1 から出力される。O0 から出力された場合、x0 はS’0 およびS’1 に接続されている切替回路313に入力され、さらに乱数r1 の値に応じてS’0 またはS’1 に出力される。x0 が切替回路311のO1 から出力された場合、x0 はS’2 およびS’3 に接続されている切替回路314に入力され、さらに乱数r3 の値に応じてS’2 またはS’3 に出力される。
つまり、最初の1ビット乱数r0 によって、x0 の出力先がS’0 〜S’3 の左半分(S’0 およびS’1 )もしくは右半分(S’2 およびS’3 )からランダムに選択され、次の1ビット乱数r1 によって、さらに左半分(S’0 またはS’2 )もしくは右半分(S’1 またはS’3 )からランダムに選択される。
Sbox処理が完了した後は、経路選択回路301とは、1段目と2段目が逆転した構
成の経路選択回路302による変換を行うことで、データがランダム化される前の順序に戻され、z0 〜z3 が出力される。
図3の構成を用いることで、4つの出力先S’0 〜S’3 を2ビットの乱数に応じて選択することができるため、乱数に偏りがない限り、x0 の出力先がS’0 〜S’3 の中から均等に選択され、DPAに対して高い安全性を実現できる。
また、図36に示した従来例3の構成では、4つの切替回路が同じデータを選択することがないように、入力された乱数から選択信号生成回路を介して選択信号を生成する必要があるのに対して、図3の構成では、2入力2出力の切替回路を用いているため、いかなる選択信号に対しても切替回路の出力データが重複することがない。したがって、乱数から選択信号を生成するための回路が不要となる。
さらに、図3の構成は、図36と比較すると、経路選択回路の面積を2/3に削減することができる。図36の経路選択回路3602および3603は、4個のセレクタ(4−1 MUX)から構成されており、各セレクタは、図5に示すように、3個の2入力マルチプレクサ回路(2−1 MUX)から構成される。これに対して、図3の経路選択回路301および302は、4個の切替回路(2−2 MUX)から構成されており、各切替回路は、図6に示すように、2個の2入力マルチプレクサ回路から構成される。
したがって、図36の経路選択回路3602および3603を構成するには、12個の2入力マルチプレクサ回路が必要となるのに対して、図3の経路選択回路301および302を構成するには、8個の2入力マルチプレクサ回路で済むことになる。
以上のように、2入力2出力の切替回路を基本単位として経路選択回路を構成することで、入力データがS’0 〜S’3 に対して均等に配分されるため、DPAに対して安全な暗号処理を実現することができ、かつ、選択信号生成回路が不要になるため、問題4を解決することができる。
ところで、図3の経路選択回路301および302は、4ビットの乱数r0 〜r3 に応じてデータ順序のランダム化を行うため、24 =16通りの並べ替えを行うことができる。この数は、4つのデータの並べ替えの総当りパターン数である4!=1×2×3×4=24通りより少ない。並べ替えの総数が多いほど消費電力がランダムに変化するパターンが多くなるので、変化パターンの予測が困難になり、より一層安全性を高めることができる。そこで、乱数に応じて24通りの全パターンの並べ替えを行うことが望ましい。
図7は、24通りの並べ替えを行うことが可能な、図2の経路選択回路204および205の第2の構成を示している。経路選択回路701および702は、経路選択回路204および205にそれぞれ対応している。なお、経路選択回路203は、経路選択回路205と同じ構成である。経路選択回路701は、2入力2出力の切替回路(2−2 MUX)711〜716から構成され、経路選択回路702は、2入力2出力の切替回路721〜726から構成される。切替回路711〜716および721〜726の動作は、図4と同様である。
経路選択回路701には、4つの8ビットデータx0 ,x1 ,x2 ,x3 が入力され、経路選択回路702からは、4つの8ビットデータz0 ,z1 ,z2 ,z3 が出力される。
経路選択回路701は、図7に示す通り、切替回路711および712を並列に並べた1段目の回路と、切替回路713および714を並列に並べた2段目の回路と、切替回路
715および716を並列に並べた3段目の回路からなる。入力データは最上位からx0 ,x1 ,x2 ,x3 の順に並んでおり、x0 およびx1 はそれぞれ切替回路711のI0 およびI1 に入力され、x2 およびx3 はそれぞれ切替回路712のI0 およびI1 に入力される。
切替回路711のO0 およびO1 は、それぞれ切替回路713のI0 および切替回路714のI0 に接続され、切替回路712のO0 およびO1 は、それぞれ切替回路713のI1 および切替回路714のI1 に接続されている。切替回路713のO0 およびO1 は、それぞれ切替回路716のI1 および切替回路715のI0 に接続され、切替回路714のO0 およびO1 は、それぞれ切替回路715のI1 および切替回路716のI0 に接続されている。出力データは、最上位から切替回路715のO0 、O1 および切替回路716のO0 、O1 の順に出力される。
経路選択回路702は、切替回路721および722を並列に並べた1段目の回路と、切替回路723および724を並列に並べた2段目の回路と、切替回路725および726を並列に並べた3段目の回路からなる。S’0 およびS’1 から出力されたデータは、それぞれ切替回路721のI0 およびI1 に入力され、S’2 およびS’3 から出力されたデータは、それぞれ切替回路722のI0 およびI1 に入力される。
切替回路721のO0 およびO1 は、それぞれ切替回路723のI1 および切替回路724のI0 に接続され、切替回路722のO0 およびO1 は、それぞれ切替回路724のI1 および切替回路723のI0 に接続されている。切替回路723のO0 およびO1 は、それぞれ切替回路725のI0 および切替回路726のI0 に接続され、切替回路724のO0 およびO1 は、それぞれ切替回路725のI1 および切替回路726のI1 に接続されている。
出力データは、最上位からz0 ,z1 ,z2 ,z3 の順に並んでおり、z0 およびz1 はそれぞれ切替回路725のO0 およびO1 から出力され、z2 およびz3 はそれぞれ切替回路726のO0 およびO1 から出力される。
経路選択回路701および702に対しては、外部から4つの1ビット乱数r0 ,r1 ,r2 ,r3 ,r4 ,r5 が入力され、それぞれの切替回路に対して乱数が1ビットずつ選択信号として入力される。ただし、経路選択回路702に対しては、経路選択回路701に入力される乱数が、1段目と3段目の間で逆転して入力される。
したがって、切替回路711、712、713、714、715、および716には、それぞれ乱数r0 ,r1 ,r2 ,r3 ,r4 ,r5 が入力され、切替回路721、722、723、724、725、および726には、それぞれ乱数r2 ,r5 ,r1 ,r4 ,r0 ,r3 が入力される。
経路選択回路701は、乱数r0 〜r5 に応じてデータx0 〜x3 の順序をランダム化し、S’0 〜S’3 に出力する。S’0 〜S’3 は、ランダム化されたデータの非線形変換処理を行い、経路選択回路702は、乱数r0 〜r5 に応じて変換後のデータの順序をランダム化される前の状態に戻す。
この過程において、乱数r0 〜r5 と、経路選択回路701の出力データ順序の対応関係を、図8に示す。例えば、r0 |r1 |r2 |r3 |r4 |r5 =000000の場合、データx0 ,x1 ,x2 ,x3 が並べ替えられた結果、S’0 ,S’1 ,S’2 ,S’3 に対してそれぞれx2 ,x1 ,x3 ,x0 が出力される。
図8の対応関係より、xj はS’0 〜S’3 に対してそれぞれ確率1/4で出力されるため、乱数に対して均等な分布が得られ、DPAに対して安全な処理を実現することができる。また、データx0 〜x3 の並べ替えのパターンは24通り存在するため、図3に示した構成よりさらに高い安全性を実現することができる。
回路規模については、図36の従来例3と図7の構成を比較した場合、図7の構成では選択信号生成回路が不要になる。ただし、図3の構成とは異なり、経路選択回路701および702の回路規模は、従来例3と同一である。図36の経路選択回路3602および3603には4個のセレクタが含まれており、図7の経路選択回路701および702には6個の切替回路が含まれている。ここで、セレクタと切替回路の回路規模の比率は、図5と図6より3:2であることから、経路選択回路全体の比率は、4×3:6×2=12:12となり、両者の回路規模は同一であるとの結論が導かれる。
次に、図9から図13までを参照しながら、図2の暗号化回路を利用したAESのラウンド処理回路について説明する。
図9は、このようなラウンド処理回路の構成例を示している。このラウンド処理回路は、乱数発生器901、分割回路902〜905、結合回路906、XOR演算器907、909、910、921、923、924、930、931、935、経路選択回路908、911、912、914、915、918、922、925、927、929、933、934、Sbox回路913、926、ShiftRow回路916、919、928、932、およびMixColumn回路917、920を備え、128ビットの平文Mと、N+1個の128ビット拡大鍵EKi (i=0,1,..,N)を入力として、128ビットの暗号文Eを出力する。
AESのラウンド処理は、アルゴリズム的には128ビット単位の処理を実行するが、実装上では128ビットをbビットごとに分割して処理することにより、必要な回路面積を削減した形態が一般的に用いられる。b=32,64,128がよく用いられる値である。
このようなビット分割は、分割回路902〜905により行われ、これらの回路により、128ビットの平文Mと128ビットの拡大鍵EKi がbビット単位に分割された上で、ラウンド処理が実行される。そして、ラウンド処理が完了した後は、結合回路906により、データが128ビットに戻され、暗号文Eとして出力される。
このラウンド処理においては、それぞれ異なる定数マスク値FMinh 、FMi,h 、ch 、dh (i=0,1,...,N,h=0,1,...,q−1)と、次式で表されるマスクされたSbox(S’h )と、複数の経路選択回路を用いた処理が行われる。
Nは、ラウンド処理における繰り返し回数、qは、定数マスク値およびSboxの個数を表す。Sbox回路913および926は、それぞれq個のSbox(S’0 〜S’q-1 )から構成される。b=32の場合q=4、b=64の場合q=8、b=128の場合q=16である。また、マスク値は、次式の条件を満たすものとする。
b=32の場合、経路選択回路908、911、912、914、915、918、922、925、927、929、933、および934は、図3または図7に示した構成により実現できる。この場合、経路選択回路912および925の構成は、図3の経路選択回路301または図7の経路選択回路702と同じであり、経路選択回路914および927の構成は、図3の経路選択回路302または図7の経路選択回路702と同じである。なお、経路選択回路908、911、915、918、922、929、933、および934の構成は、経路選択回路914と同じである。
b=64,128の場合、図3または図7に示した構成を複数組み合わせた構成が必要となる。この場合の構成については、後述することにする。
以下では、図9のラウンド処理回路の動作について説明する。乱数発生器901は、4×(b/32)ビットもしくは6×(b/32)ビットの乱数を生成し、すべての経路選択回路908、911、912、914、915、918、922、925、927、929、933、および934に出力する。経路選択回路908、911、915、918、922、929、933、および934は、この乱数を選択信号として用いて、ランダムなマスク値を生成する。
分割回路902は、入力された平文Mをbビット単位で分割し、XOR演算器907に出力する。経路選択回路908は、乱数に応じてマスク値FMin0 〜FMinq-1 の順序をランダム化し、XOR演算器907に出力する。XOR演算器907は、分割回路902の出力と経路選択回路908の出力のXORを出力することで、FMin0 〜FMinq-1 によるマスク処理を行う。
次に、RoundKey処理が行われる。この処理では、分割回路903は、拡大鍵EKi をbビット単位で分割し、XOR演算器909に出力する。経路選択回路911は、乱数に応じてマスク値FMi,0 〜FMi,q-1 の順序をランダム化し、XOR演算器909に出力する。XOR演算器909は、分割回路903の出力と経路選択回路911の出力のXORを出力することで、FMi,0 〜FMi,q-1 によるマスク処理を行う。そして、XOR演算器910は、XOR演算器907の出力とXOR演算器909の出力のXORを出力する。
得られたRoundKey処理の結果に対して、次に、Subbyte処理が行われる。この処理では、経路選択回路912は、乱数に応じてデータの順序をランダム化し、Sbox回路913に出力する。S’0 〜S’q-1 は、マスクされたSbox処理により得られたデータを出力し、経路選択回路914は、乱数に応じてそのデータの順序を入れ替えて出力する。
得られたSubbyte処理の結果に対して、ShiftRow回路919がShiftRow処理を行い、さらに、MixColumn回路920がMixColumn処理を行って、得られたデータをXOR演算器921に出力する。
経路選択回路915は、乱数に応じてマスク値d0 〜dq-1 の順序をランダム化し、ShiftRow回路916に出力する。この出力に対して、ShiftRow回路916がShiftRow処理を行い、さらに、MixColumn回路917がMixColumn処理を行って、得られたデータをXOR演算器921に出力する。経路選択回路918は、乱数に応じてマスク値FMin0 〜FMinq-1 の順序をランダム化し、XOR演算器921に出力する。
3入力のXOR演算器921は、MixColumn回路917の出力、MixColumn回路920の出力、および経路選択回路918の出力のXORを出力する。このX
OR演算が必要な理由は、Sbox回路913におけるマスク値の制約によるものである。つまり、S’0 〜S’q-1 の入力に対するマスク値は、定数c0 〜cq-1 の順序をランダム化した値であり、出力に対するマスク値は、定数d0 〜dq-1 の順序をランダム化した値である、という制約である。
MixColumn回路917の出力は、S’0 〜S’q-1 の出力に対するマスクを一時的に無効化し、経路選択回路918の出力は、新しいマスク値を与える機能を果たす。したがって、XOR演算器921の出力に対するマスク値は、FMin0 〜FMinq-1 の順序をランダム化した値である。
XOR演算器921の出力は、不図示の切替回路により、XOR演算器910の入力にフィードバックされ、XOR演算器910の出力においては、マスク値が
の順序をランダム化した値となる。(18)式より、これはc0 〜cq-1 の順序をランダム化した値と等しいことになる。また、(18)式は、XOR演算器921からXOR演算器910へのフィードバック後のマスク値のみならず、XOR演算器907からXOR演算器910に出力されたデータのマスク値(i=0)も同様に、c0 〜cq-1 の順序をランダム化した値と等しくなることを示している。
こうして、RoundKey、Subbyte、ShiftRow、およびMixColumnからなる一連のループ処理が、i=0〜N−2についてN−1回繰り返された後、最終処理としてRoundKey、Subbyte、ShiftRow、およびRoundKeyの順に処理が行われる。
最初のRoundKey処理では、分割回路904は、拡大鍵EKN-1 をbビット単位で分割し、XOR演算器923に出力する。経路選択回路922は、乱数に応じてマスク値FMN-1,0 〜FMN-1,q-1 の順序をランダム化し、XOR演算器923に出力する。XOR演算器923は、分割回路904の出力と経路選択回路922の出力のXORを出力することで、FMN-1,0 〜FMN-1,q-1 によるマスク処理を行う。そして、XOR演算器924は、i=N−2のループにおけるXOR演算器921の出力と、XOR演算器923の出力のXORを出力する。
得られたRoundKey処理の結果に対して、次に、Subbyte処理が行われる。この処理では、経路選択回路925は、乱数に応じてデータの順序をランダム化し、Sbox回路926に出力する。S’0 〜S’q-1 は、マスクされたSbox処理により得られたデータを出力し、経路選択回路927は、乱数に応じてそのデータの順序を入れ替えて出力する。
得られたSubbyte処理の結果に対して、ShiftRow回路928がShiftRow処理を行い、得られたデータをXOR演算器931に出力する。
次のRoundKey処理では、分割回路905は、拡大鍵EKN をbビット単位で分割し、XOR演算器930に出力する。経路選択回路929は、乱数に応じてマスク値FMN,0 〜FMN,q-1 の順序をランダム化し、XOR演算器930に出力する。XOR演算器930は、分割回路905の出力と経路選択回路929の出力のXORを出力することで、FMN,0 〜FMN,q-1 によるマスク処理を行う。そして、XOR演算器931は、ShiftRow回路928の出力とXOR演算器930の出力のXORを出力する。
経路選択回路933は、乱数に応じてマスク値d0 〜dq-1 の順序をランダム化し、S
hiftRow回路932に出力する。この出力に対して、ShiftRow回路932がShiftRow処理を行って、得られたデータをXOR演算器935に出力する。経路選択回路934は、乱数に応じてマスク値FMN,0 〜FMN,q-1 の順序をランダム化し、XOR演算器935に出力する。
3入力のXOR演算器935は、XOR演算器931の出力、ShiftRow回路932の出力、および経路選択回路934の出力のXORを出力する。ShiftRow回路932の出力は、S’0 〜S’q-1 の出力に対するマスクを無効化するために用いられ、経路選択回路934の出力は、経路選択回路929によるマスクを無効化するために用いられる。XOR演算器935によりこれらのマスクが無効化されることで、データに対するマスクが解除され、DPA対策なしの場合と同じ処理結果が得られる。
結合回路906は、bビット単位で得られた128/b個の処理結果を結合して、128ビットの暗号文Eを出力する。
以上が図9のラウンド処理回路の基本的な動作であるが、経路選択回路の具体的な構成は、処理単位であるビット数bの値によって異なる。b=32の場合は、上述したように、図3または図7に示した構成を用いることができる。b=64またはb=128の場合は、例えば、図10に示すような構成を用いることができる。
図10は、b=32の場合の経路選択回路をP個並列に並べた構成を示している。この場合、P=b/32であり、32ビット経路選択回路1001−1〜1001−Pは、bビットのデータを乱数に応じてランダムに並べ替えることができる。必要な乱数のビット長は、図3の32ビット経路選択回路を用いた場合は4×(b/32)ビットとなり、図7の32ビット経路選択回路を用いた場合は6×(b/32)ビットとなる。
図10の構成において消費電力がランダム化されるパターンの数は、32ビット経路選択回路として図3の回路を用いた場合は16(b/32)通りである。すなわち、b=64の場合、162 =256通りとなり、b=128の場合、164 =65536通りとなる。このパターン数は、2入力2出力の切替回路を追加することでさらに増加させることができ、より一層安全性を高めることができる。
例えば、b=64,128の場合は、図11および12に示すように、切替回路を1個追加することでパターン数が2倍となる。ただし、切替回路用の選択信号として、乱数を1ビット余分に入力する必要がある。
b=64の経路選択回路は、図11に示すように、2入力2出力の切替回路1101と32ビット経路選択回路1102−1および1102−2からなる。切替回路1101は、2つの32ビット入力部I0 およびI1 と、2つの32ビット出力部O0 およびO1 を有し、1ビットの乱数が0の場合、O0 =I0 ,O1 =I1 のスイッチングを行い、その乱数が1の場合、O0 =I1 ,O1 =I0 のスイッチングを行う。O0 およびO1 からの出力データは、それぞれ経路選択回路1102−1および1102−2に出力される。これにより、パターン数は、256×2=512通りとなる。
b=128の経路選択回路は、図12に示すように、2入力2出力の切替回路1201と32ビット経路選択回路1102−1〜1102−4からなる。切替回路1201は、2つの64ビット入力部I0 およびI1 と、2つの64ビット出力部O0 およびO1 を有し、1ビットの乱数が0の場合、O0 =I0 ,O1 =I1 のスイッチングを行い、その乱数が1の場合、O0 =I1 ,O1 =I0 のスイッチングを行う。
0 からの出力データは、経路選択回路1202−1および1202−2に出力され、
1 からの出力データは、経路選択回路1202−3および1202−4に出力される。これにより、パターン数は、65536×2=131072通りとなる。
さらに、b=128の場合は、図13に示すように、切替回路を4個追加することでパターン数が16倍となる。ただし、切替回路用の選択信号として、乱数を4ビット余分に入力する必要がある。
図13の経路選択回路は、2入力2出力の切替回路1301−1〜1301−4と、32ビット経路選択回路1302−1〜1302−4からなる。切替回路1301−1〜1301−4の動作は、図11の切替回路1101と同様である。1段目に並列に並んだ切替回路1301−1および1301−2は、128ビットの入力データを受け取り、2段目に並列に並んだ切替回路1301−3および1301−4は、128ビットのデータを経路選択回路1302−1〜1302−4に出力する。
入力データは最上位から切替回路1301−1のI0 、I1 および切替回路1301−2のI0 、I1 の順に並んでいる。切替回路1301−1のO0 およびO1 は、それぞれ切替回路1301−3のI0 および切替回路1301−4のI0 に接続され、切替回路1301−2のO0 およびO1 は、それぞれ切替回路1301−3のI1 および切替回路1301−4のI1 に接続されている。出力データは、最上位から切替回路1301−3のO0 、O1 および切替回路1301−4のO0 、O1 の順に出力される。
切替回路1301−3のO0 およびO1 からの出力データは、それぞれ経路選択回路1302−1および1302−2に出力され、切替回路1301−4のO0 およびO1 からの出力データは、それぞれ経路選択回路1302−3および1302−4に出力される。これにより、パターン数は、65536×16=1048576通りとなる。
以上がAESのラウンド処理回路に関する説明であるが、本発明の技術はAESに限定されずに、その他の共通鍵ブロック暗号アルゴリズムに応用可能である。対象となる共通鍵ブロック暗号アルゴリズムは、DPA対策なしの場合に、図24または図29に示したような構成を有し、かつ、すべての非線形変換テーブルw0 〜wu-1 が同一の非線形変換を行うようなアルゴリズムである。
この条件に該当するアルゴリズムとしては、AESの他に、SC2000が挙げられる。なぜなら、SC2000の暗号処理の最初の部分において、I関数とB関数が連続する構成が、図29の構成においてすべての非線形変換テーブルw0 〜wu-1 が同一である場合と等価な構成であるからである。
図14は、前述した従来例1〜3と、図3、7、および10〜13に示した本発明の構成の効果を比較した結果を示している。図3、7、および10〜13に示した経路選択回路を用いることで、従来例1〜3が解決することができなかった問題1〜4のすべてを解決することができる。
(付記1)共通鍵暗号の暗号処理を行う暗号化装置であって、
乱数を発生する乱数発生手段と、
前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替えて出力する第1の経路選択手段と、
前記第1の経路選択手段から出力される複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成する拡大鍵演算手段と、
前記乱数の値に応じて前記第1の経路選択手段とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替えて出力する第2の経路選択手段と、
前記第2の経路選択手段から出力されるデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力する非線形変換手段と、
前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、前記非線形変換手段から出力されるデータ列を並べ替えて出力する第3の経路選択手段と
を備えることを特徴とする暗号化装置。
(付記2)前記非線形変換手段から出力されるデータ列は、前記第2の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表すことを特徴とする付記1記載の暗号化装置。
(付記3)前記複数の拡大鍵マスク値はそれぞれ異なる値であり、前記複数の非線形変換マスク値はそれぞれ異なる値であることを特徴とする付記2記載の暗号化装置。
(付記4)前記第1の経路選択手段、第2の経路選択手段、および第3の経路選択手段の各々は複数の切替手段を含み、各切替手段は、第1および第2の入力部と第1および第2の出力部を有し、前記乱数の値に応じて、該第1の入力部に入力されたデータを該第1の出力部から出力し、該第2の入力部に入力されたデータを該第2の出力部から出力する第1の切替動作と、該第1の入力部に入力されたデータを該第2の出力部から出力し、該第2の入力部に入力されたデータを該第1の出力部から出力する第2の切替動作の一方を行うことを特徴とする付記1、2、または3記載の暗号化装置。
(付記5)前記乱数は4個の値からなり、前記複数の切替手段は、該乱数の4個の値のそれぞれに応じて動作する第1、第2、第3、および第4の切替手段からなり、該第1の切替手段の第1および第2の出力部は、該第3の切替手段の第1の入力部および該第4の切替手段の第1の入力部にそれぞれ接続され、該第2の切替手段の第1および第2の出力部は、該第3の切替手段の第2の入力部および該第4の切替手段の第2の入力部にそれぞれ接続され、該第1の切替手段の第1および第2の入力部と該第2の切替手段の第1および第2の入力部に4個のデータがそれぞれ入力され、該第3の切替手段の第1および第2の出力部と該第4の切替手段の第1および第2の出力部から4個のデータがそれぞれ出力されることを特徴とする付記4記載の暗号化装置。
(付記6)前記乱数は6個の値からなり、
前記第1および第3の経路選択手段に含まれる複数の切替手段は、前記乱数の6個の値のそれぞれに応じて動作する第1、第2、第3、第4、第5、および第6の切替手段からなり、該第1の切替手段の第1および第2の出力部は、該第3の切替手段の第1の入力部および該第4の切替手段の第1の入力部にそれぞれ接続され、該第2の切替手段の第1および第2の出力部は、該第3の切替手段の第2の入力部および該第4の切替手段の第2の入力部にそれぞれ接続され、該第3の切替手段の第1および第2の出力部は、該第6の切替手段の第2の入力部および該第5の切替手段の第1の入力部にそれぞれ接続され、該第4の切替手段の第1および第2の出力部は、該第5の切替手段の第2の入力部および該第6の切替手段の第1の入力部にそれぞれ接続され、該第1の切替手段の第1および第2の入力部と該第2の切替手段の第1および第2の入力部に4個のデータがそれぞれ入力され、該第5の切替手段の第1および第2の出力部と該第6の切替手段の第1および第2の出力部から4個のデータがそれぞれ出力され、
前記第2の経路選択手段に含まれる複数の切替手段は、前記乱数の6個の値のそれぞれに応じて動作する第7、第8、第9、第10、第11、および第12の切替手段からなり、該第7の切替手段の第1および第2の出力部は、該第9の切替手段の第2の入力部および該第10の切替手段の第1の入力部にそれぞれ接続され、該第8の切替手段の第1および第2の出力部は、該第10の切替手段の第2の入力部および該第9の切替手段の第1の入力部にそれぞれ接続され、該第9の切替手段の第1および第2の出力部は、該第11の切替手段の第1の入力部および該第12の切替手段の第1の入力部にそれぞれ接続され、該第10の切替手段の第1および第2の出力部は、該第11の切替手段の第2の入力部および該第12の切替手段の第2の入力部にそれぞれ接続され、該第7の切替手段の第1および第2の入力部と該第8の切替手段の第1および第2の入力部に4個のデータがそれぞ
れ入力され、該第11の切替手段の第1および第2の出力部と該第12の切替手段の第1および第2の出力部から4個のデータがそれぞれ出力されることを特徴とする付記4記載の暗号化装置。
(付記7)前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、平文をマスクするための複数の平文マスク値からなるデータ列を並べ替えて出力する第4の経路選択手段と、
前記第4の経路選択手段から出力される複数の平文マスク値と、前記平文を表すデータ列との排他的論理和を生成し、前記入力データ列として前記拡大鍵演算手段に出力する平文演算手段と、
前記第3の経路選択手段から出力されるデータ列に対して、シフトロウ処理およびミクスコラム処理を行う第1の処理手段と、
前記第1の処理手段の処理結果と、該第1の処理手段の処理結果に対するマスクを解除するためのデータ列と、複数の新たなマスク値との排他的論理和を生成するマスク演算手段とをさらに備え、
前記非線形変換手段から出力されるデータ列は、前記第2の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値と前記複数の平文マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表し、前記マスク演算手段から出力される排他的論理和のデータ列が前記入力データ列として前記拡大鍵演算手段にフィードバックされ、0番目からN−2番目までのN−1個の拡大鍵のそれぞれについて、前記第1の経路選択手段、拡大鍵演算手段、第2の経路選択手段、非線形変換手段、第3の経路選択手段、第1の処理手段、およびマスク演算手段によるループ処理が繰り返されることを特徴とする付記1記載の暗号化装置。(付記8)前記複数の拡大鍵マスク値はそれぞれ異なる値であり、前記複数の平文マスク値はそれぞれ異なる値であり、前記複数の非線形変換マスク値はそれぞれ異なる値であることを特徴とする付記7記載の暗号化装置。
(付記9)前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、前記複数の平文マスク値からなるデータ列を並べ替え、得られたデータ列を前記複数の新たなマスク値として、前記マスク演算手段に出力する第5の経路選択手段をさらに備えることを特徴とする付記7または8記載の暗号化装置。
(付記10)前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、前記複数の非線形変換マスク値からなるデータ列を並べ替えて出力する第6の経路選択手段と、
前記第6の経路選択手段から出力されるデータ列に対して、シフトロウ処理およびミクスコラム処理を行い、得られた処理結果を前記マスクを解除するためのデータ列として、前記マスク演算手段に出力する第2の処理手段とをさらに備えることを特徴とする付記7、8、または9記載の暗号化装置。
(付記11)前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、N−1番目の拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列を並べ替えて出力する第7の経路選択手段と、
前記第7の経路選択手段から出力される複数の拡大鍵マスク値と、前記N−1番目の拡大鍵を表すデータ列と、前記N−2番目の拡大鍵を用いたループ処理において前記マスク演算手段から出力される排他的論理和のデータ列との排他的論理和を生成する第1の演算手段と、
前記乱数の値に応じて前記第1の経路選択手段とは逆の並べ替えを行うことで、前記第1の演算手段から出力される排他的論理和のデータ列を並べ替えて出力する第8の経路選択手段と、
前記第8の経路選択手段から出力されるデータ列の非線形変換を行って、前記複数の非線形変換マスク値によりマスクされたデータ列を出力する後段の非線形変換手段と、
前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、前記後段の非線形変換手段から出力されるデータ列を並べ替えて出力する第9の経路選択手段と、
前記第9の経路選択手段から出力されるデータ列に対してシフトロウ処理を行う第3の処理手段と、
前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、N番目の拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列を並べ替えて出力する第10の経路選択手段と、
前記第10の経路選択手段から出力される複数の拡大鍵マスク値と、前記N番目の拡大鍵を表すデータ列と、前記第3の処理手段の処理結果との排他的論理和を生成する第2の演算手段と、
前記第2の演算手段から出力される排他的論理和のデータ列と、前記第3の処理手段の処理結果に対するマスクを解除するためのデータ列と、前記N番目の拡大鍵に対するマスクを解除するためのデータ列との排他的論理和を生成し、暗号文として出力する第3の演算手段とをさらに備え、
前記後段の非線形変換手段から出力されるデータ列は、前記第8の経路選択手段から出力されるデータ列と、前記N−1番目の拡大鍵をマスクするための複数の拡大鍵マスク値と、前記複数の平文マスク値の排他的論理和を前記マスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表すことを特徴とする付記7、8、9、または10記載の暗号化装置。
(付記12)前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、前記N番目の拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列を並べ替え、得られたデータ列を前記N番目の拡大鍵に対するマスクを解除するためのデータ列として、前記第3の演算手段に出力する第11の経路選択手段をさらに備えることを特徴とする付記11記載の暗号化装置。
(付記13)前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、前記複数の非線形変換マスク値からなるデータ列を並べ替えて出力する第12の経路選択手段と、
前記第12の経路選択手段から出力されるデータ列に対してシフトロウ処理を行い、得られた処理結果を前記第3の処理手段の処理結果に対するマスクを解除するためのデータ列として、前記第3の演算手段に出力する第4の処理手段とをさらに備えることを特徴とする付記11または12記載の暗号化装置。
(付記14)前記第1の経路選択手段、第2の経路選択手段、第3の経路選択手段、第4の経路選択手段、第7の経路選択手段、第8の経路選択手段、第9の経路選択手段、および第10の経路選択手段の各々は1つ以上の単位データ列経路選択手段を含み、該単位データ列経路選択手段は複数の切替手段を含み、各切替手段は、第1および第2の入力部と第1および第2の出力部を有し、前記乱数の値に応じて、該第1の入力部に入力されたデータを該第1の出力部から出力し、該第2の入力部に入力されたデータを該第2の出力部から出力する第1の切替動作と、該第1の入力部に入力されたデータを該第2の出力部から出力し、該第2の入力部に入力されたデータを該第1の出力部から出力する第2の切替動作の一方を行うことを特徴とする付記11記載の暗号化装置。
(付記15)前記1つ以上の単位データ列経路選択手段のそれぞれに対して、前記乱数を構成する複数の値のうち異なる4個の値が入力され、前記複数の切替手段は、該乱数の4個の値のそれぞれに応じて動作する第1、第2、第3、および第4の切替手段からなり、該第1の切替手段の第1および第2の出力部は、該第3の切替手段の第1の入力部および該第4の切替手段の第1の入力部にそれぞれ接続され、該第2の切替手段の第1および第2の出力部は、該第3の切替手段の第2の入力部および該第4の切替手段の第2の入力部にそれぞれ接続され、該第1の切替手段の第1および第2の入力部と該第2の切替手段の第1および第2の入力部に4個のデータがそれぞれ入力され、該第3の切替手段の第1および第2の出力部と該第4の切替手段の第1および第2の出力部から4個のデータがそれぞれ出力されることを特徴とする付記14記載の暗号化装置。
(付記16)前記1つ以上の単位データ列経路選択手段のそれぞれに対して、前記乱数を構成する複数の値のうち異なる6個の値が入力され、
前記第1、第3、第4、第7、第9、および第10の経路選択手段に含まれる複数の切替手段は、前記乱数の6個の値のそれぞれに応じて動作する第1、第2、第3、第4、第5、および第6の切替手段からなり、該第1の切替手段の第1および第2の出力部は、該第3の切替手段の第1の入力部および該第4の切替手段の第1の入力部にそれぞれ接続され、該第2の切替手段の第1および第2の出力部は、該第3の切替手段の第2の入力部および該第4の切替手段の第2の入力部にそれぞれ接続され、該第3の切替手段の第1および第2の出力部は、該第6の切替手段の第2の入力部および該第5の切替手段の第1の入力部にそれぞれ接続され、該第4の切替手段の第1および第2の出力部は、該第5の切替手段の第2の入力部および該第6の切替手段の第1の入力部にそれぞれ接続され、該第1の切替手段の第1および第2の入力部と該第2の切替手段の第1および第2の入力部に4個のデータがそれぞれ入力され、該第5の切替手段の第1および第2の出力部と該第6の切替手段の第1および第2の出力部から4個のデータがそれぞれ出力され、
前記第2および第8の経路選択手段に含まれる複数の切替手段は、前記乱数の6個の値のそれぞれに応じて動作する第7、第8、第9、第10、第11、および第12の切替手段からなり、該第7の切替手段の第1および第2の出力部は、該第9の切替手段の第2の入力部および該第10の切替手段の第1の入力部にそれぞれ接続され、該第8の切替手段の第1および第2の出力部は、該第10の切替手段の第2の入力部および該第9の切替手段の第1の入力部にそれぞれ接続され、該第9の切替手段の第1および第2の出力部は、該第11の切替手段の第1の入力部および該第12の切替手段の第1の入力部にそれぞれ接続され、該第10の切替手段の第1および第2の出力部は、該第11の切替手段の第2の入力部および該第12の切替手段の第2の入力部にそれぞれ接続され、該第7の切替手段の第1および第2の入力部と該第8の切替手段の第1および第2の入力部に4個のデータがそれぞれ入力され、該第11の切替手段の第1および第2の出力部と該第12の切替手段の第1および第2の出力部から4個のデータがそれぞれ出力されることを特徴とする付記14記載の暗号化装置。
(付記17)前記第1の経路選択手段、第2の経路選択手段、第3の経路選択手段、第4の経路選択手段、第7の経路選択手段、第8の経路選択手段、第9の経路選択手段、および第10の経路選択手段の各々は、複数の単位データ列経路選択手段と、該複数の単位データ列経路選択手段に入力されるデータ列を、1つ以上の単位データ列からなる2つの部分に分割し、前記乱数を構成する複数の値のうちの1つに応じて該2つの部分の順序を入れ替えて、該複数の単位データ列経路選択手段に出力する切替手段とからなることを特徴とする付記14、15、または16記載の暗号化装置。
(付記18)前記第1の経路選択手段、第2の経路選択手段、第3の経路選択手段、第4の経路選択手段、第7の経路選択手段、第8の経路選択手段、第9の経路選択手段、および第10の経路選択手段の各々は、4つの単位データ列経路選択手段と、該4つの単位データ列経路選択手段に入力されるデータ列を4つの単位データ列に分割し、前記乱数を構成する複数の値のうちの一部に応じて該4つの単位データ列の順序を入れ替えて、該4つの単位データ列経路選択手段に出力する切替手段とからなることを特徴とする付記14、15、または16記載の暗号化装置。
(付記19)共通鍵暗号の暗号処理を行う暗号化方法であって、
乱数を発生し、
前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替え、
並べ替えられた複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成し、
前記乱数の値に応じて前記複数の拡大鍵マスク値とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替え、
並べ替えられたデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を生成し、
前記乱数の値に応じて前記複数の拡大鍵マスク値と同じ並べ替えを行うことで、前記マ
スクされたデータ列を並べ替える
ことを特徴とする暗号化方法。
本発明の暗号化装置の原理図である。 本発明の暗号化回路の構成図である。 経路選択回路の第一の構成を表す図である。 切り替え回路を表す図である。 セレクタの構成図である。 切替回路の構成図である。 経路選択回路の第2の構成を示す図である。 経路選択回路の第2の構成の出力データ順序を示す図である。 本発明のAESラウンド処理回路の構成図である。 経路選択回路の第3の構成を示す図である。 経路選択回路の第4の構成を示す図である。 経路選択回路の第5の構成を示す図である。 経路選択回路の第6の構成を示す図である。 本発明の効果を示す図である。 共通鍵暗号処理の一般的な構成を示す図である。 AESの構成を示す図である。 AESにおけるRoundKey処理を示す図である。 AESにおけるSubbyte処理を示す図である。 AESにおけるShiftRow処理を示す図である。 AESにおけるMixColumn処理を示す図である。 拡大鍵XOR処理を示す図である。 線形変換処理を示す図である。 非線形変換処理を示す図である。 拡大鍵XOR処理と非線形変換処理を組み合わせた処理を示す図である。 j に関する処理を示す図である。 電力消費曲線を示す図である。 第1の電力差分曲線を示す図である。 第2の電力差分曲線を示す図である。 拡大鍵XOR処理と線形変換処理と非線形変換処理を組み合わせた処理を示す図である。 電力測定の測定箇所を示す図である。 第1の電力測定法を示す図である。 第2の電力測定法を示す図である。 マスク値をランダムに選択する構成を示す図である。 拡大鍵生成におけるSubbyte処理を示す図である。 Subbyte処理の消費電力をランダム化する方法を示す図である。 従来の経路選択回路を示す図である。 第1の仮想的な暗号化回路の構成図である。 第2の仮想的な暗号化回路の構成図である。
符号の説明
101 乱数発生手段
102−1 第1の経路選択手段
102−2 第2の経路選択手段
102−3 第3の経路選択手段
103 拡大鍵演算手段
104 非線形変換手段
201、202、907、909、910、921、923、924、930、931、935、3302−0、3302−15、3303−0、3303−15、3701−0、3701−1、3701−2、3701−3、3702−0、3702−1、3702−2、3702−3 XOR演算器
203、204、205、301、302、701、702、908、911、912、914、915、918、922、925、927、929、933、934、1001−1、1001−2、1001−P、1102−1、1102−2、1202−1、1202−2、1202−3、1202−4、1302−1、1302−2、1302−3、1302−4、3501、3502、3602、3603、3705、3706 経路選択回路
311、312、313、314、321、322、323、324、711、712、713、714、715、716、721、722、723、724、725、726、1101、1201、1301−1、1301−2、1301−3、1301−4 切替回路
901 乱数発生器
902、903、904、905 分割回路
906 結合回路
913、926、3305−0、3305−15 Sbox回路
916、919、928、932 ShiftRow回路
917、920 MixColumn回路
1501、1601 拡大鍵生成
1502、1602 ラウンド処理
1611 RoundKey
1612 Subbyte
1613 ShiftRow
1614 MixColumn
1801−1、1801−2、1801−16、S、S0 、S1 、S2 、S3 、S’0 、S’1 、S’2 、S’3 、S’q-1 、w0 、w1 、wu-1 、wj Sbox
2001−1、2001−4
3101 スマートカード
3102 抵抗
3103 オシロスコープ
3201 電磁波プローブ
3301−0、3301−15、3306−0、3306−15、3621−1、3621−2、3621−3、3621−4、3622−1、3622−2、3622−3、3622−4、3703−0、3703−1、3703−2、3703−3 セレクタ
3304−0、3304−15 デマルチプレクサ
3601、3704 選択信号生成回路
3611、3712 乱数デコーダ
3612、3711 インバータ回路

Claims (5)

  1. 共通鍵暗号の暗号処理を行う暗号化装置であって、
    乱数を発生する乱数発生手段と、
    前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替えて出力する第1の経路選択手段と、
    前記第1の経路選択手段から出力される複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成する拡大鍵演算手段と、
    前記乱数の値に応じて前記第1の経路選択手段とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替えて出力する第2の経路選択手段と、
    前記第2の経路選択手段から出力されるデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力する非線形変換手段と、
    前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、前記非線形変換手段から出力されるデータ列を並べ替えて出力する第3の経路選択手段と
    を備えることを特徴とする暗号化装置。
  2. 前記非線形変換手段から出力されるデータ列は、前記第2の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表すことを特徴とする請求項1記載の暗号化装置。
  3. 前記第1の経路選択手段、第2の経路選択手段、および第3の経路選択手段の各々は複数の切替手段を含み、各切替手段は、第1および第2の入力部と第1および第2の出力部を有し、前記乱数の値に応じて、該第1の入力部に入力されたデータを該第1の出力部から出力し、該第2の入力部に入力されたデータを該第2の出力部から出力する第1の切替動作と、該第1の入力部に入力されたデータを該第2の出力部から出力し、該第2の入力部に入力されたデータを該第1の出力部から出力する第2の切替動作の一方を行うことを特徴とする請求項1または2記載の暗号化装置。
  4. 前記乱数の値に応じて前記第1の経路選択手段と同じ並べ替えを行うことで、平文をマスクするための複数の平文マスク値からなるデータ列を並べ替えて出力する第4の経路選択手段と、
    前記第4の経路選択手段から出力される複数の平文マスク値と、前記平文を表すデータ列との排他的論理和を生成し、前記入力データ列として前記拡大鍵演算手段に出力する平文演算手段と、
    前記第3の経路選択手段から出力されるデータ列に対して、シフトロウ処理およびミクスコラム処理を行う第1の処理手段と、
    前記第1の処理手段の処理結果と、該第1の処理手段の処理結果に対するマスクを解除するためのデータ列と、複数の新たなマスク値との排他的論理和を生成するマスク演算手段とをさらに備え、
    前記非線形変換手段から出力されるデータ列は、前記第2の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値と前記複数の平文マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表し、前記マスク演算手段から出力される排他的論理和のデータ列が前記入力データ列として前記拡大鍵演算手段にフィードバックされ、0番目からN−2番目までのN−1個の拡大鍵のそれぞれについて、前記第1の経路選択手段、拡大鍵演算手段、第2の経路選択手段、非線形変換手段、第3の経路選択手段、第1の処理手段、およびマスク演算手段によるループ処理が繰り返されることを特徴とする請求項1記載の暗号化装置。
  5. 共通鍵暗号の暗号処理を行う暗号化装置によって実行される暗号化方法であって、
    乱数発生手段が、乱数を発生し、
    第1の経路選択手段が、前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替え、
    拡大鍵演算手段が、並べ替えられた複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成し、
    第2の経路選択手段が、前記乱数の値に応じて前記複数の拡大鍵マスク値とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替え、
    非線形変換手段が、並べ替えられたデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を生成し、
    第3の経路選択手段が、前記乱数の値に応じて前記複数の拡大鍵マスク値と同じ並べ替えを行うことで、前記マスクされたデータ列を並べ替える
    ことを特徴とする暗号化方法。
JP2006310716A 2006-11-16 2006-11-16 共通鍵暗号のための暗号化装置 Expired - Fee Related JP4909018B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006310716A JP4909018B2 (ja) 2006-11-16 2006-11-16 共通鍵暗号のための暗号化装置
EP07120575.1A EP1924023A3 (en) 2006-11-16 2007-11-13 Encrypting apparatus for symmetric key cipher
US11/941,663 US8218762B2 (en) 2006-11-16 2007-11-16 Encrypting apparatus for common key cipher

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006310716A JP4909018B2 (ja) 2006-11-16 2006-11-16 共通鍵暗号のための暗号化装置

Publications (2)

Publication Number Publication Date
JP2008131108A JP2008131108A (ja) 2008-06-05
JP4909018B2 true JP4909018B2 (ja) 2012-04-04

Family

ID=39135170

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006310716A Expired - Fee Related JP4909018B2 (ja) 2006-11-16 2006-11-16 共通鍵暗号のための暗号化装置

Country Status (3)

Country Link
US (1) US8218762B2 (ja)
EP (1) EP1924023A3 (ja)
JP (1) JP4909018B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090245510A1 (en) * 2008-03-25 2009-10-01 Mathieu Ciet Block cipher with security intrinsic aspects
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
JP5202350B2 (ja) * 2009-01-16 2013-06-05 三菱電機株式会社 暗号処理装置及び暗号処理方法及び暗号処理プログラム
KR101715027B1 (ko) * 2009-03-10 2017-03-22 이르데토 비.브이. 입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템
JP5060570B2 (ja) * 2010-02-23 2012-10-31 株式会社東芝 暗号化装置および復号装置
US8707053B2 (en) * 2011-02-09 2014-04-22 Apple Inc. Performing boolean logic operations using arithmetic operations by code obfuscation
WO2012131926A1 (ja) * 2011-03-29 2012-10-04 富士通株式会社 暗号処理装置、認証方法およびプログラム
JP5481455B2 (ja) * 2011-09-27 2014-04-23 株式会社東芝 暗号処理装置
FR2995111B1 (fr) * 2012-09-04 2015-07-24 Morpho Protection contre canaux auxiliaires
CN103684748B (zh) * 2012-09-26 2017-02-08 上海复旦微电子集团股份有限公司 对称式加解密方法、对称式加解密系统
JP6089668B2 (ja) * 2012-12-13 2017-03-08 日本電気株式会社 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム
US9118441B2 (en) 2013-01-25 2015-08-25 Freescale Semiconductor, Inc. Layout-optimized random mask distribution system and method
CN104601321B (zh) * 2013-10-31 2017-09-29 上海复旦微电子集团股份有限公司 密钥扩展方法和装置
US20150222421A1 (en) * 2014-02-03 2015-08-06 Qualcomm Incorporated Countermeasures against side-channel attacks on cryptographic algorithms
US9425961B2 (en) * 2014-03-24 2016-08-23 Stmicroelectronics S.R.L. Method for performing an encryption of an AES type, and corresponding system and computer program product
US9654111B1 (en) * 2014-11-12 2017-05-16 Maxim Integrated Products, Inc. Systems and methods for protecting data using reconfigurable logic paths
US10210350B2 (en) * 2015-08-10 2019-02-19 Samsung Electronics Co., Ltd. Electronic device against side channel attacks
US10027640B2 (en) * 2015-09-22 2018-07-17 Qualcomm Incorporated Secure data re-encryption
JP6187624B1 (ja) * 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
JP6222285B1 (ja) * 2016-06-01 2017-11-01 富士電機株式会社 データ処理装置、データ処理方法及びプログラム
US11023632B2 (en) 2016-06-29 2021-06-01 Bar-Iian University Pseudo-asynchronous digital circuit design
US10521530B2 (en) 2016-07-28 2019-12-31 Bar-Ilan University Data-dependent delay circuits
CN106788974B (zh) * 2016-12-22 2020-04-28 深圳国微技术有限公司 掩码s盒、分组密钥计算单元、装置及对应的构造方法
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
WO2019167050A1 (en) 2018-02-28 2019-09-06 Bar-Ilan University Information redistribution to reduce side channel leakage
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US11328042B2 (en) 2019-12-10 2022-05-10 Winkk, Inc. Automated transparent login without saved credentials or passwords
US11936787B2 (en) 2019-12-10 2024-03-19 Winkk, Inc. User identification proofing using a combination of user responses to system turing tests using biometric methods
US11928193B2 (en) 2019-12-10 2024-03-12 Winkk, Inc. Multi-factor authentication using behavior and machine learning
US11574045B2 (en) 2019-12-10 2023-02-07 Winkk, Inc. Automated ID proofing using a random multitude of real-time behavioral biometric samplings
US11553337B2 (en) 2019-12-10 2023-01-10 Winkk, Inc. Method and apparatus for encryption key exchange with enhanced security through opti-encryption channel
US11843943B2 (en) 2021-06-04 2023-12-12 Winkk, Inc. Dynamic key exchange for moving target
US11824999B2 (en) * 2021-08-13 2023-11-21 Winkk, Inc. Chosen-plaintext secure cryptosystem and authentication

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3600454B2 (ja) * 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
US6295606B1 (en) * 1999-07-26 2001-09-25 Motorola, Inc. Method and apparatus for preventing information leakage attacks on a microelectronic assembly
JP3942073B2 (ja) * 2000-07-13 2007-07-11 富士通株式会社 拡大鍵生成装置、拡大鍵生成プログラムおよび記録媒体
US6956951B2 (en) * 2000-07-13 2005-10-18 Fujitsu Limited Extended key preparing apparatus, extended key preparing method, recording medium and computer program
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
EP1510028A4 (en) 2002-05-23 2008-01-23 Atmel Corp CRYPTOGRAPHIC MOTOR OF TECHNICAL EQUIPMENT BASED ON ADVANCED ENCRYPTION STANDARD (AES)
CN1826753B (zh) * 2003-09-05 2010-12-08 意大利电信股份公司 保密密钥控制的可逆电路和相应的数据处理方法
JP2005134477A (ja) * 2003-10-28 2005-05-26 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
ATE372619T1 (de) * 2005-05-10 2007-09-15 Research In Motion Ltd Schlüsselmaskierung für kryptographische prozesse
JP4783104B2 (ja) * 2005-09-29 2011-09-28 株式会社東芝 暗号化/復号装置
JP2007189659A (ja) * 2005-12-15 2007-07-26 Toshiba Corp 暗号化装置、暗号化方法及び暗号化プログラム
JP4614135B2 (ja) * 2006-01-16 2011-01-19 株式会社石垣 ポンプゲート

Also Published As

Publication number Publication date
US8218762B2 (en) 2012-07-10
US20090003598A1 (en) 2009-01-01
EP1924023A2 (en) 2008-05-21
EP1924023A3 (en) 2014-12-17
JP2008131108A (ja) 2008-06-05

Similar Documents

Publication Publication Date Title
JP4909018B2 (ja) 共通鍵暗号のための暗号化装置
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP4596686B2 (ja) Dpaに対して安全な暗号化
EP1820295B1 (en) Substitution boxes
Moradi et al. Pushing the limits: A very compact and a threshold implementation of AES
US7567668B2 (en) Calculating unit and method for performing an arithmetic operation with encrypted operands
Schneider et al. Arithmetic Addition over Boolean Masking: Towards First-and Second-Order Resistance in Hardware
JP5364840B2 (ja) 暗号化装置
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
Abdulgadir et al. Side-channel resistant implementations of three finalists of the nist lightweight cryptography standardization process: Elephant, tinyjambu, and xoodyak
Rao et al. FPGA implementation of combined AES-128
Ha et al. Differential power analysis on block cipher ARIA
JP2008151829A (ja) 暗号演算装置
Saqib et al. A compact and efficient FPGA implementation of the DES algorithm
Yang et al. A new block cipher based on chaotic map and group theory
Yli-Mäyry et al. Chosen-input side-channel analysis on unrolled light-weight cryptographic hardware
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JPWO2008117804A1 (ja) ストリーム暗号向け擬似乱数生成装置とプログラムと方法
Kang et al. Secure hardware implementation of ARIA based on adaptive random masking technique
Ou et al. Enhanced correlation power analysis by biasing power traces
Wang et al. Improved method to increase AES system speed
AU2007100156A4 (en) Substitution Boxes
Anashin et al. Security and Implementation Properties of ABC v. 2
Khan et al. Pipelining in Embedded Cryptosystems-A Throughput Optimization Approach
Sengar et al. FPGA Implementations of the Hummingbird Cryptographic Algorithm

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20111125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111128

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: 20120110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120113

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

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees