JP4596686B2 - Dpaに対して安全な暗号化 - Google Patents
Dpaに対して安全な暗号化 Download PDFInfo
- Publication number
- JP4596686B2 JP4596686B2 JP2001178407A JP2001178407A JP4596686B2 JP 4596686 B2 JP4596686 B2 JP 4596686B2 JP 2001178407 A JP2001178407 A JP 2001178407A JP 2001178407 A JP2001178407 A JP 2001178407A JP 4596686 B2 JP4596686 B2 JP 4596686B2
- Authority
- JP
- Japan
- Prior art keywords
- fixed
- random number
- input
- encryption
- exclusive
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Description
【発明の属する技術分野】
本発明は、情報の暗号化の分野に関し、特に電力解析攻撃と呼ばれる暗号解読法に対する暗号のセキュリティ(安全)のための技術に関する。
【0002】
【発明の背景】
暗号方式には一般的に公開鍵暗号方式と共通鍵暗号方式が含まれる。いわゆる共通鍵暗号方式は、暗号化と復号で同一の秘密鍵(キー)を用いる。この秘密鍵を送信機側のユーザと受信機側のユーザの間で共有しその他の者に対して秘密にすることによって、暗号文が安全に送信できる。図1はスマートカードにおける共通秘密鍵を用いた暗号化の例を示している。図1において、スマートカードは、周知の形態で入力の平文(プレインテキスト)をその内部の暗号化処理部において共通秘密鍵を用いて暗号化して出力の暗号文を供給する。
【0003】
暗号解読は、秘密鍵を含めた秘密情報を、暗号文等入手可能な情報から推定する。暗号解読の1つである電力解析攻撃が、Paul Kocher, Joshua Jaffe, and Benjamin Jun,“Differential Power Analysis”in proceedings of Advances in Cryptology−CRYPTO’99, Springer-Verlag, 1999, pp. 388−397に記載されている。この電力解析攻撃は、スマートカード等に搭載された暗号化プロセッサに様々な入力データを与えた時の電力消費データを収集および解析して、暗号プロセッサ内部の鍵情報を推定する。これは、公開鍵暗号と秘密鍵暗号の双方に適用できる。
【0004】
電力解析攻撃には、単純電力解析(以下、SPAという)(Single Power Analysis)および電力差分攻撃(以下、DPAという)(Differential Power Analysis)が含まれる。SPAは暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行う。DPAは相異なる多数の電力消費データの差分を解析することによって秘密鍵の推定を行い、一般的にはDPAの方が強力である。
【0005】
例えばRSA等の公開鍵暗号に対するDPAが、例えば、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に記載されている。共通鍵暗号方式の現在の標準のDES(Data Encryption Standards)に対するSPAおよびDPAが、Paul Kocher, Joshua Jaffe, and Benjamin Jun,”Differential Power Analysis,”in proceedings of Advances in Cryptology−CRYPTO’99, Springer-Verlag, 1999, pp. 388−397 に記載されている。共通鍵暗号方式の次世代標準となりうるラインデール(Rijndael)法に対するDPAが、例えば、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, March1999に記載されている。
【0006】
このように、電力解析攻撃の中でもDPAは特に有効な方法として注目されており、様々なDPA暗号解読法が研究されている。一方、DPA暗号解読を防止するための技術も開発されている。
【0007】
DPAを適用可能な共通鍵暗号の通常の典型的な構成を説明する。図2、3および4は、典型的な共通鍵暗号で用いられる処理(operations)である鍵XOR(排他的論理和)、線形変換および非線形変換をそれぞれ示している。
【0008】
図2において、鍵XORは入力データXiの鍵情報Kiとの排他的論理和(XOR)の出力Ziを供給する。(但し、演算XORは図面および式では、○と+を合成したシンボルで示されている。)図3において、線形変換Lは入力データXiに対する線形変換された出力Zi=L(Xi)を供給する。ここで、任意のxおよびyについてL(xXORy)=L(x)XORL(y)である。線形変換には、ビット転置(permutation)および行列演算等がある。図4において、非線形変換Wは、入力データXiを非線形変換して出力Zi=W(Xi)を供給する。ここで、任意のxおよびyについてW(xXORy)≠W(x)XORW(y)である。非線形変換は、典型的には非線型変換テーブルSboxをしばしば用い、入力XをX={xu−1,...,x1,x0}(uは自然数)とu個に分割し、Sboxであるwi(i=0〜u)を用いてzi=wi(xi)を演算し、Z=(zu−1...z1z0)として結合して出力Zを生成する。
【0009】
典型的な共通鍵暗号では、これらの鍵XOR演算、線形変換および非線形変換の3つを適当に組み合わせて各ラウンド関数を構成し、そのようなラウンド関数を順に複数回(ラウンド)繰り返す。
【0010】
DPAによる暗号解読技術を説明する。DPAは、電力消費データの測定の段階と、その電力消費データの差分に基づく鍵の解析の段階とを含んでいる。電力消費データの測定において、相異なる複数の符号のシーケンスを含んだ入力平文をスマートカード等の暗号化器にシリアルに供給して、その暗号化プロセッサによってその入力平文に応答して消費される電力消費の時間変化を例えばオシロスコープ等を用いて測定して、電力消費曲線を得る。図7(A)はそのような電力消費曲線を例示している。相異なる入力平文に対してその測定を行って統計的に充分な数の電力消費曲線を収集する。その測定で得られた複数の電力消費曲線の集合(セット)をGとする。
【0011】
次に電力消費曲線を用いた鍵の解析を説明する。図5は、従属接続の形の鍵XOR演算(図2)と非線形変換(図4)の組合せである暗号化の例を示している。この暗号化に対するDPAを説明する。図6は、図5における任意の非線形変換要素wiに関係する構成要素を取り出したものである。図6において、任意の入力平文における既知の数ビット値をmiとし、未知の鍵Kにおける要素値をki(K={ku−1,...,k1,k0}の中の1つの要素)とし、既知のSboxテーブルにおける変換関数をwiとし、出力をzi(=wi(miXORki))とする。DPAのために、プロセッサ内部で用いられている鍵の要素値を任意のki’であると仮定する。既知のmiおよびwiとその仮定されたki’とからzi’=wi(miXORki’)を演算して、仮定されたki’に対する集合G(ki’)を次の部分集合G0(ki’)およびG1(ki’)に分ける。
【0012】
【数1】
【数2】
ここで、eは、自然数であり、e番目のLSBを表している。
【0013】
次いで、仮定されたki’に対する次の電力消費曲線の差分DG(ki’)を作成する。
【数3】
【0014】
図7(A)はG1に属する電力消費曲線の平均電力消費曲線を例示している。図7(B)はG0に属する電力消費曲線の平均電力消費曲線を例示している。仮定された鍵の要素値が真の鍵の要素値と等しく、即ちki’=kiである場合には、図7(A)と(B)の差を表す図7(C)に例示された差分電力消費曲線中にスパイクが現われる。仮定された鍵の要素値が真の鍵の要素値と等しくなく、即ちki’≠kiである場合には、図7(A)と(B)の差を表す図7(D)に例示された差分電力消費曲線は概ね平坦な曲線となる。従って、仮定したki’に基づいて生成されたスパイクを有する差分電力消費曲線から、鍵kiが推定できる。全てのiに対するkiについて差分電力消費曲線を生成することによって、最終的に鍵Kを解読または確定(determine)することができる。
【0015】
次に、ki’=kiである場合に、電力差分曲線DG(ki’)にスパイクが現れることを説明する。ki’=kiである場合、集合G(ki’)を式(1)および式(2)に従って部分集合G0(ki’)およびG1(ki’)に分けると、仮定したzi’=wi(miXORki’)とこれに対応するプロセッサ内における実際のzi=wi(miXORki)とが全てのmiに対して一致するので、ziのハミング・ウェイトHW(Hamming weight)に関して次の式(4)が得られる。ハミング・ウェイトとは或る値をビット値で表現したときのビット値=1の個数である。例えば2進4ビット値(1101)2のハミングウェイトHWは3である。
【数4】
【0016】
一方、ki’≠kiの場合は、仮定されたzi’=wi(miXORki’)とそれに対応するプロセッサ内における実際のそれぞれのzi=wi(miXORki)とが無関係なので、仮定されたzi’に対する式(1)および式(2)に従って全てのmiに対する集合G(ki’)を部分集合G0(ki’)およびG1(ki’)に分けても、実際のそれぞれのzi(即ちzi’と仮定された実際のzi)に対しては2つの部分集合にランダムに分けたことになるので、次の式(5)が成立する。
【数5】
【0017】
式(4)が成立する場合はG0(ki’)とG1(ki’)の間でのロード値ziの平均ハミング・ウェイトに大きな差が生じるが、式(5)が成立する場合はG0(ki’)とG1(k’)の間でのロード値ziの平均ハミングウェイトに大きな差が生じない。
【0018】
zi=wi(xi)で示される変換wiは、暗号化器内のROMやRAMなどのメモリ上から変換テーブルSboxの出力値ziがロード命令によって読み込まれることによって行われる。ロード命令が実行されるとき、ロード値のハミングウェイトに比例した電力が消費されるものと考えられている。その考えの妥当性を示す実験結果が、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に記載されている。
【0019】
従って、ki’=kiである場合、式(4)が満たされることで消費電力の差が電力差分曲線上のスパイクという形になって現れるが、式(5)の場合はスパイクが現れず、概ね平坦な曲線となる。DPAは、図4に図3の線形変換Lを挿入した暗号化器にも適用できることが判明している。
【0020】
図8は、図4の暗号化器の前後に2つの線形変換を追加した構成を有する暗号化器を示している。L1およびL2をビット転置関数とし、wiをDESのSboxとすると、図8の構成はDESのF関数と等価になる。DESの仕様については、FIPS 46,“Data encryption standard”Federal Information Processing Standards Publication 46, U.S. Department of Commerce/ National Bureau of Standards, National Technical Information Service, Springfield, Virginia,1977を参照されたい。図8の処理も、図6と同様の処理に変換でき、同様にDPAを適用して鍵Kを推定できる。
【0021】
以上の手法では、非線形変換中のSbox出力に注目してDPAを適用している。さらに、入力miと鍵kiのXORの値(鍵XOR演算の出力)やSboxへの入力値xiに対してDPAを適用する手法もある。また、或るプロセッサにおいては、隣接ビットモデルによって次の式(6)で表される電力消費がロード値のビットの関数で表現でき、それによってより有効な解析が可能になる場合がM. Akkar, R. Bevan, P. Dischamp, and D. Moyart,“Power Analysis, What Is Now Possible...”Asiacrypt 2000において報告されている。
【数6】
【0022】
これらの手法によれば、次の場合にDPAによって秘密鍵Kが解読される。図9は、図5の暗号化器における電力消費曲線の測定対象点A、BおよびCを示している。
【0023】
1.入力Mが既知かつ攻撃者が自由に選択可能即ち制御可能であり、鍵Kが未知の固定値であり、Sboxのwiの変換が既知の場合。この場合、図9の測定対象点Aの所定タイミングにおける(Sboxwiの出力の)電力消費曲線が測定される。
【0024】
2.入力Mが既知かつ制御可能であり、鍵Kが未知の固定値である場合。この場合、図9の測定対象点Bの所定タイミングにおける(鍵XOR演算の出力の)電力消費曲線が測定される。
【0025】
3.入力Mが既知かつ制御可能であり、鍵Kが未知の固定値である場合。この場合、図9の測定対象点Cの所定タイミングにおける(Sboxのwiをインデックスするためのロード入力の)電力消費曲線が測定される。
【0026】
従来のDPA対策
従来のDPA対策法としては、例えばスマートカード内にノイズ発生器を置くことによって電力消費量の測定精度を落とす手法と、暗号アルゴリズムに対策を施す手法が存在する。その測定精度を落とす手法は容易に行えるが、測定回数を増加するなどの方法で解析が可能になるので根本的な対策とはならない。それに対して、暗号アルゴリズムへの対策は、容易でないが根本的な対策となりうる。暗号アルゴリズムに対策を施す手法の代表的なものとして、マスキング法と呼ばれているThomas S. Messerges,“Securing the AES Finalists Against Power Analysis Attacks,”in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, April 2000が知られている。マスキング法とは、入力値Mそのものを用いて暗号化の各処理を行う代わりに、乱数RをマスクとしてM’=MXORRで表される値M’を用いて暗号化を行う方法である。乱数Rは暗号化の各処理ごとに発生させるので、ここでは“乱数マスク値法”と呼ぶ。
【0027】
次に、乱数マスク値法について説明する。図10は、乱数マスク値法による処理の概要図を示している。この処理は、図示のような上側の暗号化処理部と下側のマスク値生成部と乱数発生とで構成される。
【0028】
図2、3および4に示されている通常の鍵XOR関数、線形関数および非線形関数が用いられる通常の暗号化処理を図10の暗号化処理に変更する場合は、それらは図10の暗号化において図11、12および13に示されているような乱数マスク値法による鍵XOR関数、線形関数および非線形関数に置換される。
【0029】
乱数マスク値法では、暗号化における通常の中間データXiを計算する代わりに排他的論理和Xi=Xi’XORRiを満たすXi’および乱数Riが計算される。暗号化処理部においてXi’が計算され、マスク値生成処理部においてRiが計算される。図2と図11、図3と図12、および図4と図13に示されている処理(operation)におけるXi、Xi’、Zi、Zi’、RiおよびROiに関して、次の式(7)が成立する。
【数7】
【0030】
図2では入力値Xiと鍵Kiに対してZi=XiXORKiが演算されるのに対して、図11では暗号化処理内部で乱数発生器によって乱数RKiを発生させた後、入力値Xi’と鍵Kiに対してZi’=Xi’XORKiXORRKiが演算される。また、マスク値生成においてRiとRKiからROi=RiXORRKiが演算される。
【0031】
図3ではZi=L(Xi)の線形変換が行われるのに対して、図12の暗号化処理ではZi’=L(Xi’)の変換が行われ、マスク値生成ではROi=L(Ri)の変換が行われる。
【0032】
図4ではw1、w2、・・・、wu−1で表されるu個のSboxを用いた非線型変換が行われるのに対して、図13(A)の暗号化処理では、図のNewSboxを用いた処理によってRAM領域上にwi’1、wi’2、・・・、wi’u−1で表される新しいSboxが作成されて、これを用いて非線型変換が行われる。また、図13(A)のマスク値生成ではそのNewSboxを用いた処理が行われ、Riと内部で生成された乱数ROiからw’1、w’2、・・・、w’u−1が生成され、w’1、w’2、・・・、w’u−1とROiが出力される。図13(B)はNewSboxの詳細構成を示している。NewSboxは、内部の乱数発生器を用いてROiを生成し、また、Ri=riu−1・・・ri1ri0と、ROi=roiu−1・・・roi1roi0と、図13(B)内で用いられるSbox、w1、w2、・・・、wu−1とから、wi’j(x)=w(xXORrij)XORroijを満たすwi’jをj=0、1、・・・、u−1について作成し、そしてそのROiとwi’jを出力する。
【0033】
次に、乱数マスク値法の安全性について簡単に説明する。乱数マスク値法においては、図10および後で説明する図19中の各ラウンド(段)における図13(A)および(B)のSboxのwi’が乱数に従って変化するので、DPAにおいてSboxの内容を知ることができない。即ち、前述の条件1におけるSboxが既知であるという条件が成立しないので、図8の測定対象点Aの所定のタイミングにおいて測定された電力消費曲線を式(1)および(2)に従ってG0とG1に分けることができない。従って、乱数値マスク法を用いた暗号処理装置はDPAに対して安全である。同様に、前述の条件2および3における鍵XOR関数の出力における測定対象点BおよびSboxへの入力における測定対象点Cについても、測定毎に変化する乱数要素が加算されるので、鍵Kが固定であるという条件が成立しないので、DPAに対して安全である。
【0034】
次に、乱数マスク値法を用いた暗号化の例として、ラインデール法を説明する。図14は、DPA対策のない通常のN段ラインデール処理の全体的構成を示している。N段ラインデール処理の各段は、XOR演算、サブバイト処理Subbyte(Substitute Byte)、シフト処理Shift、およびミクストコラム処理Mixedcolumnを含んでいる。但し、最後の段は、別のXOR演算を含んでおり、ミクストコラム処理を含んでいない。図14において、Nは、秘密鍵Ksecのビット数によって決定され、Ksecが128ビットの場合はN=10とし、192ビットの場合はN=12とし、および256ビットの場合はN=14とする。Kiは拡大鍵(sub-key)と呼ばれる鍵である。図15は、ラインデール法の128/192/256ビット秘密鍵KsecからN+1個の128ビット拡大鍵K0、K1、・・・、KNを生成する拡大鍵生成器を示している。秘密鍵から拡大鍵を生成する方法は、http://www.nist.gov/aes/に示されているRijndaelの仕様書に記載されている。
【0035】
図16はサブバイト処理Subbyteを示しており、この処理は、8ビット−8ビット変換SboxであるSを用いて、128ビット−128ビット非線形変換を行う。図17はシフト処理Shiftを示しており、この処理は、バイト単位の並べ替えを行う処理である。図18はミクストコラム処理Mixedcolumnを示しており、この処理は、行列を用いた体GF(28)上の演算を行う。
【0036】
図19は、図14の通常のN段ラインデール法に対して、乱数マスク値法を適用したN段ラインデール法を示している。図19のN段ラインデール法は、図示のような上側のN段の暗号化処理部と下側のN段のマスク値生成部と乱数発生とで構成される。Kiはラインデール法の第i段の拡大鍵を表す。RKiはそれぞれの拡大鍵に対するランダムなマスク値を表す。サブバイト処理Subbyteは、図16に示されているような形態で16個のSbox:Si,0 、Si, 1 、・・・、Si,15を用いて128ビット−128ビット非線形変換を行う。Si,0 、Si,1 、・・・、Si,15は第i段の新しいSbox“NewSbox”によって生成されたSboxである。図20は、NewSboxを示しており、入力値Riniから、内部で発生した乱数Routiに従って相異なる16個のSbox、Si,0 (x)、Si,1 (x)、・・・、Si,15(x)を生成し、乱数Routiを供給する。Shift処理およびMixedcolumn処理は、通常のラインデール法の処理と同様に、図17および図18に示す線形変換である。
【0037】
図19の処理のフローをステップ[1101]〜[1109]およびステップ[1201]〜[1209]で示す。
[1101] i=0とセットする。
[1102] 乱数マスク値Rinを生成し、平文に対してRinとのXOR演算を行う(XORする)。
[1103] 平文に対してKiXORKiとのXOR演算を行う。マスク処理にマスク値RKiを入力して16個のSbox、Si,j(x)(j=0、1、・・・、15)を生成する。
[1104] ステップ[1103]で生成したSi,j(x)を用いたSubbyte処理を行う。
[1105] Shift処理およびMixedcolumn処理を行う。
[1106] i:= i+1 とする。
[1107] i < N−1である場合はステップ[1103]に戻る。それ以外は次のステップに進む。
[1108] KN−1とのXOR処理を行い、RKN−1をマスク値処理部に供給して16個のSbox、 SN−1,j(x)(j=0,1,・・・,15)を生成する。
[1109] SN−1,j(x)によるSubbyte処理、Shift処理、およびKNとのXOR演算を行う。
[1110] ステップ[1109]の演算出力に対して、マスク値生成の出力結果RoutとのXOR演算を行い、その結果の暗号文を出力として供給する。
【0038】
マスク値生成処理のフロー:
[1201] i=0、Mask=Rinとセットする。但し、Rinは[1102]で生成された乱数マスク値である。
[1202] 暗号化処理部より受け取ったRKiから、MaskXORRKiを演算して、新しいMaskを生成する。
[1203] ステップ[1202]で生成した新しいMaskをNewSboxに入力することによって、16個のSbox、Si,j(x)(j=0,1,・・・,15)と乱数Routiを得て、Routiを新しいMaskとする。Si,j(x)は暗号化処理部の第i段のSubbyteにおいて用いられる。[1204] MaskをShift処理およびMixedcolumn処理に供給し、その処理からの出力を新しいMaskとする。
[1205] i:=i+1とセットする。i < N−1である場合はステップ[1202]に戻る。
[1206] 暗号化処理部から入力されたRKN−1からMaskXORRKN−1を演算して、その演算結果を新しいMaskとする。
[1207] RinN−1をNewSboxに供給することによって、16個のSbox、 SN−1,j(x)(j=0,1,・・・,15)と乱数RoutN−1を得て、RoutN−1を新しいMaskとする。SN−1,j(x)は暗号化処理部の第N−1段のSubbyteにおいて用いられる。
[1208] MaskをShift処理に供給し、その処理結果を新しいMaskとする。
[1209] 暗号化処理部より入力されたRKNから、MaskXORRKNを演算し、それを出力して処理を終了する。
【0039】
【発明が解決しようとする課題】
乱数マスク値法はDPAに対する安全性(セキュリティ)が高いことが知られているが、乱数マスク値法を採用した暗号化は、その暗号化の速度が通常の暗号化と比べて数分の1と低く、非常に大きいRAM領域を必要とするという欠点がある。
【0040】
暗号化の速度が低い理由は、例えば暗号化処理におけるXOR演算では、通常の実装では2つの中間値xおよびyからz=xXORyを演算するのに対して、乱数マスク値法ではx’=xXORrx、y’=yXORryを満たす中間値x’、y’からz’=x’XORy’を演算する他に、z’に関する新しいマスク値の生成処理rz=rxXORryを演算する必要があるからである。さらに、非線変換において、通常Sboxという非線形変換テーブルをROMに保持するのに対して、乱数マスク値法では、新しいマスク値から非線形変換テーブルを毎回生成しなければならないので大量の計算が要求される。
【0041】
大きいRAM領域を必要とする理由は、その非線形変換において、通常はその非線形変換テーブルをROMに保持するのに対して、乱数マスク値法では暗号化のたびに新しいSboxをRAMに格納するからである。例えば8ビット−8ビットの変換を行うSboxを用いるラインデール法において、DPA対策として乱数マスク値法を実装するには最低28=256バイト分のRAM領域が必要である。しかし、例えばST16(STマイクロエレクトロン社製)等の低コストのスマートカード用チップはRAM領域が128バイト程度しか持っていないので、乱数マスク値法を実装することは実際上不可能である。
【0042】
乱数マスク値法の実装のために、マスク値を共有すること、および或る暗号化から次の暗号化までの間にマスク値を生成することなどによって、見かけの処理速度の向上および必要なRAM領域の削減等が考えられているが、最初に乱数値でマスクするので全体的な処理速度の向上および大幅な必要RAM領域の削減は不可能である。
【0043】
発明者は、暗号化において、乱数値を用いてマスクするのではなくて、固定値を用いてマスクすることによって処理速度の向上と必要なRAM領域の削減を実現すると有利であると認識した。ここで、この固定値を用いてマスクを行う方法を、固定マスク値法と呼ぶ。
【0044】
本発明の1つの目的は、共通鍵暗号を行う暗号プロセッサに対する効率的な暗号解読防止を実現することである。本発明の別の目的は、秘密鍵の推定を困難にし、暗号プロセッサの安全性を高めることである。
【0045】
【発明の概要】
本発明の1つの特徴(側面)によれば、暗号化装置は、排他的論理和手段と、非線形変換手段を有する暗号化装置と、乱数iを発生する乱数発生手段と、2個の固定値と、その乱数iに従ってその2個の固定値の中の1つを選択する第1の選択器と、2組のマスクされた固定テーブルと、その乱数iに従ってその2組の固定テーブルの中の1組を選択する第2の選択器と、を具えている。その排他的論理和手段は、その選択された固定値と鍵の排他的論理和とその排他的論理和手段の入力の排他的論理和をとる。その非線形変換手段はその選択された1組の固定テーブルに従って入力を非線形変換する。マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(i=0または1、j=0,1,・・・,15)としたとき、c0,jXORc1,j=(10101010)2または(01010101)2であり、ここで、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値である。
【0046】
本発明の別の特徴によれば、暗号化装置は、排他的論理和手段と、非線形変換手段と、乱数iを発生する乱数発生手段と、2組のマスクされた固定テーブルと、その乱数iに従ってその2組の固定テーブルの中の1組を選択する選択器と、を具えている。その非線形変換手段は、その選択された1組の固定テーブルに従って入力を非線形変換する。マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(i=0または1、j=0,1,・・・,15)としたとき、c0,jXORc1,j=(10101010)2または(01010101)2であり、ここで、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値である。
【0047】
本発明の別の特徴によれば、暗号化装置は、乱数iを発生する乱数発生手段と、複数の暗号化段と、2組のマスクされた固定テーブルと、その乱数iに従ってその2組の固定テーブルの中の1組を選択する選択器と、を具えている。その複数の暗号化段の各々は、入力を非線形変換する非線形変換手段と、第1の入力と第2の入力の排他的論理和をとる排他的論理和手段とを含んでいる。その排他的論理和手段の第2の入力はその非線形変換手段の出力に結合されている。その非線形変換手段は、2個の固定値と、その乱数iに従ってその2個の固定値の中の1つを選択する選択器と、その選択された固定値と鍵の排他的論理和と入力の排他的論理和をとる別の排他的論理和手段と、その選択された1組の固定テーブルに従って入力を非線形変換する複数の非線形変換手段と、その複数の非線形変換手段の中の1つを選択する選択器と、を有する。マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(i=0または1、j=0,1,・・・,15)としたとき、c0,jXORc1,j=(10101010)2または(01010101)2であり、ここで、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値である。
【0048】
本発明のさらに別の特徴によれば、暗号化装置は、排他的論理和手段と、非線形変換手段と、乱数を発生する乱数発生手段と、q個(qは3以上の整数)の固定値と、その乱数に従ってそのq個の固定値の中の1つを選択する第1の選択器と、q組のマスクされた固定テーブルと、その乱数に従ってそのq組の固定テーブルの中の1組を選択する第2の選択器と、を具えている。その排他的論理和手段は、その選択された固定値と鍵の排他的論理和とその排他的論理和手段の入力の排他的論理和をとる。その非線形変換手段は、その選択された1組の固定テーブルに従って入力を非線形変換する。
【0049】
本発明のさらに別の特徴によれば、暗号化装置は、排他的論理和手段と、非線形変換手段と、乱数を発生する乱数発生手段と、q組(qは3以上の整数)のマスクされた固定テーブルと、その乱数に従ってそのq組の固定テーブルの中の1組を選択する選択器と、
を具えている。その非線形変換手段は、その選択された1組の固定テーブルに従って入力を非線形変換する。
【0050】
本発明のさらに別の特徴によれば、暗号化装置は、乱数を発生する乱数発生手段と、複数の暗号化段と、q組(qは3以上の整数)のマスクされた固定テーブルと、その乱数に従ってそのq組の固定テーブルの中の1組を選択する選択器と、具えている。その複数の暗号化段の各々は、入力を非線形変換する非線形変換手段と、第1の入力と第2の入力の排他的論理和をとる排他的論理和手段と、を含んでいる。その排他的論理和手段の第2の入力はその非線形変換手段の出力に結合されている。その非線形変換手段は、q個の固定値と、その乱数に従ってそのq個の固定値の中の1つを選択する選択器と、その選択された固定値と鍵の排他的論理和と入力の排他的論理和をとる別の排他的論理和手段と、その選択された1組の固定テーブルに従って入力を非線形変換する複数の非線形変換手段と、その複数の非線形変換手段の中の1つを選択する選択器と、を有する。
【0051】
本発明によれば、共通鍵暗号を行う暗号プロセッサに対する効率的なDPA対策を実現でき、DPAを用いた秘密鍵の解読(analyze)を困難にし、暗号プロセッサの安全性を高めることができる。
【0052】
実施形態においては、通常は乱数値で入力や鍵をマスクする乱数マスク値法に対して、本発明の固定マスク値法に従って、複数個の固定値を用意し、それを乱数によって切換えることによって、乱数マスク値法と同様の効果を得る。固定マスク値法では、マスク値が特定の固定値に限定されるので、新しいマスク値を予め求めておくことによって処理速度を高くできる。また、予め固定マスク値の集合(セット)を用意し、それぞれの固定マスク値に対応した非線形変換テーブルをROMに用意することによって、小さいRAM領域を有するプラットフォーム上でも実装が可能になる。例えばST16等の低コストのスマートカード用のLSIチップでも6Kバイト程度の大きなROM領域を備えているので、固定値マスク法は低コストのスマートカードに適している。
【0053】
【発明の好ましい実施形態】
次に、本発明の実施形態を説明する。実施形態において、暗号化における全てまたは一部の諸要素および諸処理は、集積回路等によってハードウェアの形態で実装してもよいし、またはプロセッサによって実行されるプログラムの形態で実装してもよい。
【0054】
図21は本発明による第1のタイプの暗号化装置100の概略的構成を示している。図22および23は、暗号化装置100の鍵XOR演算および非線形変換の構成をそれぞれ示している。線形変換は図2に示されているものを用いればよい。
【0055】
図21において、暗号化装置100は、乱数R(R=0,1,・・・,q−1)を発生する乱数発生器103と、その乱数に従って固定マスク値FM0,Rの中の1つを選択して供給する切換部または選択器104と、入力の平文と選択された固定マスク値FM0,Rとの排他的論理和を演算する(XORする)(Xin’=平文XORFM0,R)排他的論理和106と、入力Xin’を受取り乱数Rに従って入力Xin’を暗号化して出力Xout’を生成する暗号化処理部101と、その乱数に従って固定マスク値FMN+1,Rの中の1つを選択して供給する切換部105と、その出力Xout’と選択された固定マスク値FMN+1,Rとの排他的論理和を演算して(XORして)暗号文(Xout’XORFMN+1,R)を生成する排他的論理和107と、を含んでいる。ここで、qは暗号化処理部101で使用される固定マスク値のセットの数を表し、Nはラウンド数を表す。
【0056】
暗号化装置100は、さらに、作業メモリ用のRAM162と、固定マスク値と、固定非線形変換テーブルSboxと、線形変換関数L等を格納するROM164と、ROM等のプログラム・メモリ160に格納されているプログラムに従ってこれらの諸処理要素103〜107を制御するプロセッサ150とを含んでいる。代替構成として、プロセッサ150は、諸処理要素103〜107に対応する機能を実装したメモリ160中のプログラムを実行することによって諸処理要素103〜107を実現してもよい。この場合、図21はフロー図として見ることができる。
【0057】
暗号化処理部101において、図22の鍵XOR、図2の線形変換および図23の非線形変換の組み合わせによって規定されるラウンド関数が繰返し実行され、または縦続接続されたそのような複数のラウンド関数回路によってそのラウンド関数が実行される。
【0058】
図22の鍵XORは、切換部109によって乱数Rに従って選択された固定マスク値FMi,Rと鍵KiとをXORして或る値を供給し、その値と入力Xi’とをXORして出力Zi’を供給する。図23の非線形変換は、切換部111〜119によって乱数Rに従ってSboxの要素wij,R’(j=0,・・・,u−1)を選択し、その選択された要素wij,R’を用いて非線形変換する。
【0059】
乱数マスク値法において示した式(7)の関係を用いると、図22の鍵XORにおいて図11のRiとROiに対応して次の式(8)が得られる。
【数8】
【0060】
図23の非線形変換において用いられる図13(B)のNewSboxのriとroiに対応して次の式(9)が得られる。
【数9】
【0061】
図24は本発明による第2のタイプの暗号化装置200の概略的構成を示している。図25および26はその鍵XORおよび非線形変換の構成をそれぞれ示している。線形変換はいずれの暗号化処理部においても図2に示されているものを用いればよい。
【0062】
図24において、暗号化装置200は、乱数Rを発生する乱数発生器203と、その乱数に従って固定マスク値FM0,Rの中の1つを選択して供給する切換部204と、入力の平文と切換部204によって選択された固定マスク値FM0,RとをXORする(Xin’=平文XORFM0,R)XOR(排他的論理和)206と、入力Xin’を受取りその入力Xin’を暗号化して出力Xout’を生成する複数の暗号化処理部208〜209と、入力Xin’を受取り乱数Rに従って互いに並列に結合された暗号化処理部208〜209の中の1つを選択してその選択された暗号化処理部に入力Xin’を供給する切換部211と、同じ乱数Rに従って暗号化処理部208〜209の中の同じ1つを選択してその選択された暗号化処理部からの出力Xout’を供給する切換器213と、その乱数に従って固定マスク値FMN+1,Rの中の1つを選択して供給する切換部205と、その出力Xout’と選択された固定マスク値FMN+1,RとをXORして暗号文(=Xout’XORFMN+1,R)を生成するXOR207と、を含んでいる。ここで、qは使用される固定マスク値のセット数を表し、Nはラウンド数を表す。図24において、2つの切換部211および213のうちの一方だけで選択してもよく、その他方の切換部を省いてもよい。
【0063】
暗号化装置200は、さらに、作業メモリ用のRAM262と、固定マスク値、固定非線形変換テーブルSboxと、線形変換関数L等を格納するROM264と、ROM等のプログラム・メモリ260に格納されているプログラムに従ってこれらの諸処理要素203〜211を制御するプロセッサ250とを含んでいる。代替構成として、プロセッサ250は、諸処理要素203〜211に対応する機能を実装したメモリ260中のプログラムを実行することによって諸処理要素203〜211を実現してもよい。この場合、図24はフロー図として見ることができる。
【0064】
暗号化処理部208〜209は、固定マスク値FMi,jおよびSboxのセットwii,jが異なること以外は構成が共に同じである。各暗号化処理部208〜209において、図25の鍵XOR演算、図2の線形変換処理および図26の非線形変換の組み合わせによって規定されるラウンド関数が繰返し実行され、または縦続に結合されたそのような複数のラウンド関数回路によってそのラウンド関数が実行される。
【0065】
図25の鍵XORは、暗号化処理部208〜209の各々に固有の固定マスク値FMi,Rと鍵KiをXORして或る値を供給し、その値と入力Xi’とをXORして出力Zi’を供給する。図26の非線形変換は、その暗号化処理部に固有のSboxのセットwij,R’(j=0,・・・,u−1)を用いて非線形変換する。ここで、乱数マスク値法における式(7)の関係を用いると、図25の鍵XORにおいて図11のRiとROiに対応してROi=RiXORFMi,Rが得られ、図26の非線形変換において図13(B)のriとroiに対応してwij,R’(xi’)=wi(riXORxi’)XORroiが得られる。
【0066】
本発明による上述の固定マスク値法は、低コストのスマートカードに実装するのに適した方法と考えられる。ここでは、次のような問題点を検討することによってより好ましい実装形態を実現する。
【0067】
(A)DPA対策としての有効性の問題
乱数マスク値法はDPAに対して安全であることが知られているが、固定マスク値法はDPAに対してどの程度安全であるかが不明であり、実装法および固定マスク値の条件しだいではDPAに対して弱い可能性がある。
【0068】
(B)ROM領域が膨大になる可能性の問題
固定マスク値法は、非線形変換テーブルをROMに用意することで、乱数マスク値法より必要なRAM領域を小さく抑えることができるという利点がある。しかし、用意されるマスク固定値の数に応じて使用ROM量が決まる。安全性を確保するために必要なROMの容量が膨大になる可能性がある。
【0069】
(A)の問題に関連して、本発明を適用する或る暗号化では、或る条件の固定マスク値を使用すればその数qが2でも充分に安全であることが分かっている。本発明による暗号化法としてラインデール法を適用した場合の安全性を後で説明する。同様に(B)の問題に関連して、相異なる固定マスク値の数qを2程度にして、同じラウンドやラウンド毎のSboxを共通にすることで、Sboxのデータ量を、本発明が適用されない通常の実装の約2〜数倍に抑えて、使用ROM量を小さく抑える。実施形態において暗号化法としてラインデール法を適用した場合の使用ROM量について後で述べる。
【0070】
図27は、図21の第1のタイプの暗号化装置100の一例を示しており、ラインデール(Rijndael)暗号化法に固定マスク値法を適用した暗号化装置300を示している。但し、図27において、図21におけるプロセッサ150、メモリ160、162および164は簡単化のために省略されている。図27において、暗号化装置300は、乱数h(h=0,1,・・・,q−1)を発生する乱数発生器303と、その乱数hに従って固定マスク値FMinhの中の1つを選択して供給する選択器305と、入力の平文と選択された固定マスク値FMinhとをXORするXOR302と、入力Xin’を受取って乱数hに従って入力Xin’を暗号化して出力Xout’を生成する複数段の暗号化処理段310(各段iは0≦i≦N−2)と、第N−2段の暗号化処理段310の出力Xout’を入力Xin’として受取り乱数Rに従ってその入力を暗号化して暗号文Xout’を生成する第N−1段の暗号化処理段311と、を含んでいる。
【0071】
複数段の暗号化処理段310の各段iは、乱数hに従って選択された固定マスク値FMi,hを供給する選択器329と、鍵Kiと固定マスク値FMi,hをXORして出力を供給するXOR331、その出力の値と入力Xi’とをXORするXOR333と、その乱数hに従ってSboxである固定値Si,j,h(j=0,1,・・・,15)の中の1つを選択して供給する切換器または選択器339と、その選択されたSi,j,hに従ってXOR333からの出力をサブバイトするSubbyte334、Subbyte334の出力をシフトするShift335と、Shift335の出力をミクストコラムするMixedColumn336とを含んでいる。
【0072】
第N−1段の暗号化処理段311は、第i段の暗号化処理段310と同様の切換器329および339と、XOR331および333と、Subbyte334と、Shift335とを有し、MixedColumnは有せず、切換器379によって選択された固定マスク値FMN,hとKNとをXOR371によってXORしてマスクされた鍵KN,hを生成し、KN,hとShift335の出力とをXOR373によってXORし、切換器399によって選択された固定マスク値FMouthとXOR373の出力とをXOR383によってXORして暗号文を生成する。
【0073】
ここで、FMi,h、FMinh、およびFMouthは、固定マスク値である。Si,j,hは、固定のSboxである。これらの固定マスク値およびSbox値は予め求められる。従って、固定マスク値法では通常の乱数マスク値法における逐次計算が不要なので、処理が高速化される。さらに、予め求めた固定マスク値およびSboxの変換テーブルを、例えば図21のRAM162および図24のRAM262のようなRAMにではなくて、図21のROM164および図24のROM264のようなROMに格納することによって、実装に必要なRAM領域を大幅に節約できる。このような必要なRAM量の節約は、ほんの128バイトのRAM領域しか持っていない低コストのスマートカードへの実装に有利である。
【0074】
図27の暗号化装置300に入力平文が供給されると、内部の乱数発生器303によって0≦h≦q−1を満たす乱数hが生成される。その生成された乱数hに従って、図27に示す全ての切換器305、329、339、379および399において、q個の入力値の中からh番目のものが選択されて供給される。図28は図27におけるSubbyte334の構成を例示している。Shift335は図16に例示されているものを、 Mixedcolumn336は図17に例示されているものを用いる。図28のSubbyteにおいて用いられるSbox Si,j,hは、図16に示されている通常のラインデール法のSubbyteのSboxであるSを用いて次の式(10)で表される。
【数10】
【0075】
式(10)におけるai,j,hおよびbi,j,hは、式(9)のrii,jおよびroii,jにそれぞれ対応し、それぞれi番目のラウンドのSubbyteの入力および出力のマスク値に対応する。ai,j,hは、入力マスク値なので、そのSubbyteより前のマスク値および処理等によって一意的に決まる。一方、bi,j,hは任意に設定可能である。
【0076】
図27の暗号化装置300処理のフローをステップ[1301]〜[1314]に示す。ステップ[1303]〜[1309]は図28の第i段における処理である。ステップ[1310]〜[1314]は図27の第N−1段における処理である。
[1301] i=0とセットする。
[1302] 入力平文を受け取り、次いで乱数発生器303によって乱数h(0≦h≦q−1)が発生される。この乱数hは後のステップで使用される。
[1303] 入力平文に対して、固定マスク値の集合{FMin0,・・・,FMinq− 1}の中からFMinhを切換器305によって選択した後、XOR302によって入力平文とFMinhをXORする。XOR302の出力を中間データXとする。
[1304] 固定マスク値の集合{FMi,0,・・・,FMi,q− 1}の中からFMi,hを切換器329によって選択して、拡大鍵Ki、中間データXおよびFMi,hに対してXXORKiXORFMi,hを演算し、その演算結果を新しい中間データXとする。
[1305] Subbyte334において、中間データXに対して、切換器339によって乱数hに従って選択された非線形変換テーブルSi,j,h(x)に従ってサブバイト処理する。その演算結果を新しい中間データXとする。
[1306] Shift335において中間データXをシフトする。そのシフトされたデータを新しい中間データXとする。
[1307] Mixedcolumn336において中間データXをミクストコラム処理する。その処理結果を新しい中間データXとする。
[1308] i:=i+1とセットする。
[1309] i < N−1の場合は[1303]に戻る。それ以外は次のステップに進む。
[1310] 乱数hに従って固定マスク値の集合{FMN−1,0,・・・,FMN−1,q− 1}の中からFMN−1,hを切換器329によって選択して、拡大鍵KN−1、中間データXおよびFMN−1,hに対して、XXORKN−1XORFMN−1 , hを演算する。その演算結果を新しい中間データXとする。
[1311] 切換器339によって選択された非線形変換テーブルSN−1 , j,h(x)に従ってサブバイト処理を行う。その処理結果を新しい中間データXとする。
[1312] Shift335において中間データXをシフトする。そのシフトされたデータを新しい中間データXとする。
[1313] 乱数hに従って固定マスク値の集合{FMN,0,・・・,FMN,q− 1}の中から切換器379によってFMN,hを選択して、その中間データX、拡大鍵KNおよびFMN,hに対して、XXORKNXORFMN , hを演算する。その演算結果を新しい中間データXとする。
[1314] 乱数hに従って固定マスク値の集合{FMout0,・・・,FMoutq− 1}の中からFMouthを切換器399によって選択して、中間データXとFMouthをXORし、その演算結果を出力暗号文Xout’として供給する。
【0077】
図29は、ラインデール法に固定マスク値法を適用した別の暗号化装置400を例示している。但し、図29において、図21におけるプロセッサ150、メモリ160、162および164は簡単化のために省略されている。図29の構成は、その各ラウンド関数における各Subbyte334に結合された切換器339に供給されるSboxが互いに同じである以外は、図27と同じであり、同じ構成要素については再び説明はしない。図30は図29におけるSubbyte334の構成を例示している。マスク値FMi,hは、任意のh=0,1,・・・,q−1について次の式(11)を満たす。
【数11】
【0078】
ここで、Chおよび Dhは、16バイトの定数であり、1バイト定数ch,jおよびdh,j(j=0,1,・・・,15)をそれぞれ用いて、次の式(12)のように記述される。
【数12】
【0079】
図29の暗号化装置400において、サブバイト処理Subbyte334は、切換器339によって選択された16個のSbox、S0,h、 S1,h、・・・、S15,hを用いて、図30に示す非線形変換処理を行う。16個のSj,hはDPA対策なしの通常のラインデール法におけるSであり、および式(12)におけるch,j、dh,jを用いて、Sj,h(x)=S(xXORch , j)XORdh,jと表される。
【0080】
図29の暗号化装置400の処理フローにおいては、図27の暗号化装置400の処理フローにおけるステップ[1305]および[1311]において、切換器339によって乱数hに従って16個のSbox、S0, h、S1, h、・・・、S15 , hの中から選択された非線形変換テーブルSj,hに従ってサブバイト処理する。
【0081】
図27の暗号化装置300ではSubbyte334のテーブルが各ラウンドで異なるのに対して、図29の暗号化装置400では全てのラウンドで共通のテーブルが使用される。これが可能な理由を説明する。まず、通常のラインデール処理におけるSubbyte(図16)への入力値をXと表す。これに対し、図30のSubbyte処理の入力値はXXORChと表すことができる。これは、マスク値の間に式(11)の関係が成立するからである。Chは段数iとは関係ない定数なので、式(10)におけるSi,j,h(x)=S(xXORai,j,h)XORbi,j,hに対して、ai,j,hを段番号iに関係ない定数に設定できる。また、bi,j,hは、任意の定数なので、iに関係ない定数に設定できる。よって、図30に示すようにSj,h(x)=S(xXORch,j)XORdh,jで表される段数iに無関係なSboxを用いたサブバイト処理が可能となる。従って、図29の暗号化装置400で用いられるSboxに必要な使用ROM量は、図27の暗号化装置300の場合の1/Nとすることができる。
【0082】
さらに、図29の暗号化装置400において、定数値ChおよびDhに関する条件式(12)に、次の式(13)に示す条件を加えることによって、使用するSboxのセット数(種類の数)を相異なる16セットからほんの1セットに減らすことができる。
【数13】
【0083】
即ち、図29の暗号化装置400で用いられるSboxに必要な使用ROM量は、図27の暗号化装置300の場合の1/16とすることができる。以上から、式(13)を満たす図29の暗号化装置400を用いることによって、Sboxに必要なROM領域を図27の暗号化装置300を用いた場合の1/(16N)とすることができる。
【0084】
また、図29の暗号化装置400では入力側および出力側においてFMinhおよびFMouthをそれぞれXORしているが、この処理は安全性に寄与しないことが判明しているので、省略できる。さらに、マスク済みの鍵KiXORFMi,hの値を用いることによって、鍵Kiと固定マスク値FMi , hとのXOR演算を省略できる。これらの省略によって、切換器による処理が少し増加するだけなので、DPA対策のないラインデール法の場合とほぼ同じ計算量で固定マスク値法を適用したラインデール法が実現できる。
【0085】
図31は、図24の第2のタイプの暗号化装置200の一例を示しており、ラインデール法に固定マスク値法を適用した別の暗号化装置500を例示している。但し、図31において、図24におけるプロセッサ250、メモリ260、262および264は簡単化のために省略されている。図31において、暗号化装置500は、乱数hを発生する乱数発生器503と、乱数hに従って切換えを行う切換器502および504と、切換器502および504によって乱数hに従って選択される互いに並列に結合された第0〜第q−1のq個の暗号処理部511〜513と、を含んでいる。
【0086】
暗号処理部511〜513の各々は、入力Xin’を受け取って出力Xout’を生成する複数段の暗号化処理段530(段iは0≦i≦N−2)と、前段の出力を入力として受取りその入力を暗号化して出力Xout’を生成する第N−1段の暗号化処理段と531、を含んでいる。第0段〜第N−2段の暗号化処理段530は、固定マスク値、XOR523、それぞれのSubbyte525、Shift526およびMixedcolumn527を有し、それぞれの固定マスク値および固定Sboxに従って暗号化を行う。第0段の暗号化処理段530の前にはXOR521が結合されている。第N−1段の暗号化処理段531は、固定マスク値、XOR523、528および529、Subbyte525およびShift526を有し、それぞれの固定マスク値および固定Sboxに従って暗号化を行う。図31では、鍵KiとFMj,hとがXORされたKiXORFMj,hの値が直接供給されるように示されているが、図29の場合と同様に鍵KiとFMj,hとがXORによってXORされてXOR523〜553の入力に供給されるようにしてもよい。図31においては、図29の場合と同様にFMinhとFMouthとを省略できる。
【0087】
図31の暗号化装置500においても、図29の暗号化装置400の場合と同様に全てのラウンドで同じSboxを使用しており、式(13)の条件を満たすようにすれば、図29の暗号化装置400の場合と同様のROMの削減が可能となる。暗号化装置500の計算量は、暗号化装置400の場合より切換器が少ないだけ有利であり、DPA対策のないラインデール法とほぼ同じ計算量となる。但し、図31の暗号化装置500は、図29の暗号化装置400の場合よりもシフトおよびミクストコラム処理の数が増えるので、暗号化装置500の方が回路のサイズが大きくなる。なお、暗号化装置500には2つの選択器502および504が存在するが、左右の切換器502および504のうち一方だけで切換えてもよい。そのような場合、他方の選択器は省略できる。
【0088】
図29および図31の暗号処理装置においては同じ処理が異なる構成で行われるだけなので、安全性は共に同じである。
【0089】
次に、固定マスク値法の安全性について説明する。図27の暗号化装置では、固定マスクの数qが充分大きい場合は、乱数マスク値法と実質的に同じ動作になるので、同様に高い安全性を有する。乱数マスク値法におけるほんの1ラウンドに簡略化された暗号関数について安全性が証明できるので、各ラウンドに同じSboxを使用する図29および31の暗号化装置400および500についても同様に安全性が証明できる。
【0090】
次に、qが小さい場合の固定マスク値法の安全性を説明する。q=1では安全でないことが分かっている。次に小さいq=2の場合の安全性を評価する。図29および31の暗号化装置400および500において、q=2とし、式(13)に従ってSubbyteにおいて1セット(種類)だけのSboxを用い、かつFMinhおよびFMouthを省略した最も単純な場合においても、c0,j、c1,j、・・・、cq−2,jに関して次の式(14)または式(15)の条件を設定し、d0,j、d1,j、・・・、dq−2,jに関して次の式(16)の条件に設定することによって、DPAに対する安全性を高めることができる。
【0091】
q=2、Sboxのセット(種類)の数が1、全てのj=0、1、・・・、15について
【数14】
q≧2、Sboxのセットの数が1、全てのj=0、1、・・・、15について
【数15】
q≧2、Sbox数が1、全てのj=0、1、・・・、15について
【数16】
ここで、( )2は2進法の値を表す。
【0092】
DPAは、図9の測定対象点Aにおける所定タイミングで行われる場合と、測定対象点BおよびCにおける所定タイミングで行われる場合とがある。図29および31の暗号化装置400および500が安全であることを説明する。ビット(x,e)はxの第e桁のビット値を表す。
【0093】
攻撃者は、鍵の推定のために以下の(i)および(ii)の処理を行う。
(i)DPAを用いて、チェックする仮の鍵(可能な鍵)の数を限定する。
(ii)(i)で限定された数の仮の鍵について、プロセッサ内部で用いられている真の鍵と値が一致するかどうかをチェックすることによって鍵を推定する。1つの仮の鍵すなわち1つのパターンの鍵をチェックするための計算の量を1単位(サイクル)とする。
【0094】
上述の鍵の値のチェックは、暗号プロセッサの平文と暗号文の関係を調べることによって実現できる。即ち、暗号化プロセッサにより平文を暗号化した場合と、ソフトウェアなどの別の手段によって、そのチェックされる仮の鍵の値を用いてその平文を暗号化した場合とを比較する。平文と暗号文の関係が両方の暗号化で一致した場合は、その仮の鍵の値が暗号プロセッサ内部で用いられていると判定する。両者が一致しない場合はその仮の鍵は用いられていないと判定する。
【0095】
DPAを用いて128ビットの鍵を推定するのに必要な計算量の例を示す。例えば、DPAを行っても128ビット鍵に関する有益な情報を得られなかった場合は、128ビット鍵の全ての可能なパターンをチェックする必要があるので、必要な計算量は2128単位である。例えば、DPAによって128ビット鍵の最下位ビット(LSB)が0であることが分かった場合は、その鍵の残りの127上位ビット(MSBs)の全ての可能なパターンをチェックすればよいので、必要な計算量は2127単位である。
【0096】
次に、Sboxの出力のDPAに対する安全性について、図9の測定対象点AにおけるDPAを図29および31の暗号化装置400および500に対して適用した場合について説明する。図29および31の第0段のSubbyteにおいて、それぞれのSboxの出力値がロードされるタイミングにおいてDPAを適用すると、鍵Kiは28(16− F )=2128−8Fに比例した計算量で解読できることが分かっている。ここで、F=f0+f1+・・・+f15である。fjは、次のように定義される。j(j = 0,1,・・・,15)番目のSboxの出力マスク値をd0,j、 d1,j、・・・、dq−1,jとしたときに、
【数17】
【0097】
よって、j=0,1,・・・,15の全てについてfj=0の場合に、暗号化装置はDPAに対して最も安全である。そのためには、全てのj=0,1,・・・,15について、WDj=(11111111)2でなければならない。このとき、DPAを用いて鍵を求めるのに必要な計算量は最大の2128となる。
【0098】
次に、鍵XORの出力(図9の測定対象点B)またはSboxへの入力(図9の測定対象点C)におけるDPAに対する安全性を説明する。図9の測定対象点BおよびCにおける所定タイミングにおけるDPAに対する安全性は、暗号プロセッサでRAMへのロードが行われた時の測定電圧とロード値との関係がどのようなモデルを用いて近似できるかによって異なる。まず、任意モデルの場合のDPAを考え、その後で式(6)で表される隣接ビット・モデルの場合のDPAを考える。
【0099】
任意モデルの場合について、図9の測定対象点BおよびCにおける所定タイミングにおけるDPAを、式(13)によってサブバイト処理で用いられるSboxの数を1つ(1セット)だけとした図29および31の暗号化装置400および500に対して適用した場合について説明する。第0段のSubbyte処理において、それぞれの鍵XORの出力値がロードされるタイミングにおいてDPAを適用すれば、鍵Kiは2128−(15/16)Hに比例した計算量で解読できることが分かっている。ここで、H=h0+h1+・・・+h15である。hjは次のように定義される。j(j = 0,1,・・・,15)番目のSboxの入力マスク値をc0, j、c1,j、・・・、cq−1,jとしたときに、
【数18】
【0100】
即ち、j=0,1,・・・,15についてhj=0の場合がDPAに対して最も安全である。そのためには、全てのj=0,1,・・・,15についてWCj=(11111111)2でなければならない。このとき、DPAを用いて鍵を求めるのに必要な計算量は最大の2128になる。
【0101】
次に、隣接ビット・モデルの場合について、q=2かつ式(13)によりサブバイト処理で用いるSboxのセット(種類)の数を1に限定し、式(6)で表される隣接ビット・モデルを適用した場合について説明する。隣接ビット・モデルは、低コストのスマートカードにおける電圧を近似するのに適したモデルとして知られており、このモデルが適用できる場合は、上述の任意モデルでは解読できない鍵情報を解読できる。図29および31の暗号化装置400および500における第0段のSubbyte処理において、それぞれのSboxの入力値がロードされるタイミング(図9の測定対象点Cにおける所定タイミング)にDPAを適用することによって、鍵Kiを2128−(15/16)Hに比例した計算量で解読できる。ここで、H = h0+1+・・・+h15 である。hjは、次のように定義される。j番目のSboxの入力マスク値をc0,jおよび c1,jとしたときに、
【数19】
ここで、wcj,e=0または1である。jはSboxの序数(番号)を表す。eはビット位置を表す。
【0102】
Sboxの数は1なので、条件式(14)がc0,jXORc1,j=(01010101)2または(10101010)2である場合は、Hは最小値64となり、DPAを用いて鍵を求めるのに必要な計算量は最大でも268である。
【0103】
以上のように、c0 ,j、c1,j、・・・、cq−1,jに関して条件式(14)または式(15)を満たし、かつd0 ,j、d1,j、・・・、dq−1,jについて式(16)の条件を満たすことによって、本発明による固定マスク値法を適用した暗号化装置に対してDPAを用いて128ビットのラインデール法の秘密鍵を求める場合、表1および表2に示すように2128または268に比例した計算量が必要となる。但し、DPAに対する計算量についての安全性の閾値は264である。なお、計算量268は鍵の全てのビット・パターンを計算する場合の計算量2128と比較すると小さいが、そのような鍵は実際の制限された時間内で解読することは実際上不可能である。従って、本発明による固定マスク値法を適用した暗号プロセッサに対してDPAを用いた場合も秘密鍵の解読は実際上不可能である。
【0104】
【表1】
【0105】
【表2】
【0106】
従って、固定マスク値法の安全性は次の通りである。
1.2以上のqについて、固定マスク値法は、Sbox出力値のロードに対するDPAに対して、式(16)の条件を満たせば、鍵の推定に計算量2128が必要なので、安全である。この計算量は鍵の全ての可能なパターンをチェックする場合の計算量と同じである。
【0107】
2.2以上のqについて、式(13)の条件を満たす場合、固定マスク値法は、Sbox入力値ロードに対するDPAに対して、隣接ビット・モデルでない任意のモデルについて式(15)の条件を満たせば、鍵の推定に計算量2128が必要なので、安全である。
【0108】
3.q=2について、式(13)の条件を満たす場合、固定マスク値法は、Sbox入力値ロードに対するDPAに対して、隣接ビットモデルについて条件式(14)のc0,jXORc1,j=(01010101)2または(10101010)2を満たせば、鍵の推定に計算量268が必要なので、有限時間内での推定は実際上不可能であり、従って安全である。
【0109】
4.q≧3について、必要なROM容量は増加するが、固定マスク値法は、q=2と同じ解析方法が適用できないため、上述の2の場合と同様に式(15)の条件を満たせば、隣接ビット・モデルと任意モデルの双方とも鍵の推定に計算量2128が必要なので、安全である。
【0110】
5.上述の3の場合において、条件式(14)はSboxのセットの数を1つに限定している(q=2なので出力値の数は2個)が、Sboxのセットの数を相異なるn個とするとROM容量はn倍となるが、計算量は28(n−1)×n16倍必要となる。
【0111】
本発明による固定マスク値法は、上述のラインデール法のようなSPN型の暗号以外に、DESのようなフェイステル(Feistel)型の暗号にも適用できる。図32(A)は通常のDESによる暗号化の構成を示している。図32(B)は図32(A)におけるF関数のより詳細な構成を示している。図32(B)において、F関数は、線形変換EおよびPと、非線形変換テーブルS1〜S8を有する非線形変換S1〜S8とを有する。
【0112】
図33(A)は、図21の第1のタイプの暗号化装置100の一例を示しており、図29の暗号化装置400に類似した形態で固定マスク値法を図32のDESによる暗号化に適用した暗号化装置700を示している。図33(B)は図33(A)におけるF関数のより詳細な構成を示している。但し、図33(A)において、図21におけるプロセッサ150、メモリ160、162および164は簡単化のために省略されている。
【0113】
暗号化装置700は、乱数hを発生する乱数発生器701と、その乱数h従って固定マスク値FMinhの中の1つを選択して供給する選択器702と、入力平文と選択された固定マスク値FMinhとをXORするXOR712と、入力を受取って乱数hおよび拡大鍵Kiに従って入力を暗号化して出力を生成する複数(例えば16段)のF関数暗号化処理段710〜720と、その乱数h従って固定マスク値FMouthの中の1つを選択して供給する選択器704と、F関数暗号化処理段720の出力と選択された固定マスク値FMouthとをXORして暗号文を生成するXOR714と、を含んでいる。F関数暗号化処理段710〜720の各々は、前段のXOR出力を受け取って図33(B)に示されたF関数を実行し、その出力と前段の出力をXOR(722〜723)によってXORして出力を供給する。
【0114】
図33(B)のF関数は、乱数hに従って選択された固定マスク値FMi,hを供給する選択器759と、拡大鍵Kiと固定マスク値FMi,hをXORして出力を供給するXOR762、その出力の値と線形変換Eによって線形変換された入力Xi’とをXORするXOR763と、その乱数hに従ってサブバイト処理SubbyteSi,h中の1つを選択してXOR763の出力を供給する選択器752および756と、非線形テーブルSboxSi,hに従ってサブバイト処理するSubbyteSi,hと、その乱数hに従ってサブバイト処理Si,h中の1つを選択してその出力を供給する選択器754および757と、選択器754および757の出力を線形変換して出力Zi’を供給する線形変換Pとを含んでいる。
【0115】
図21におけるプロセッサ150は、メモリ160に格納されているプログラムに従って図33の暗号化装置700の諸処理要素701〜763等を制御する。代替構成として、プロセッサ150は、諸処理要素701〜763等に対応する機能を実装したメモリ160中のプログラムを実行することによって諸処理要素701〜763等を実現してもよい。この場合、図33はフロー図として見ることができる。
【0116】
図34(A)は、図24の第2のタイプの暗号化装置200の一例を示しており、図31の暗号化装置500に類似した形態で固定マスク値法を図32のDESによる暗号化に適用した暗号化装置800を示している。図34(B)は図34(A)におけるF関数のより詳細な構成を示している。但し、図34(A)において、図24におけるプロセッサ250、メモリ260、262および264は簡単化のために省略されている。
【0117】
図34(A)において、暗号化装置800は、乱数hを発生する乱数発生器801と、乱数hに従って切換えを行う切換器802および804と、切換器802および804によって乱数hに従って選択される複数の暗号処理部820〜830と、を含んでいる。
【0118】
図24におけるプロセッサ250は、メモリ260に格納されているプログラムに従って図34の暗号化装置800の諸処理要素801〜862等を制御する。代替構成として、プロセッサ150は、諸処理要素801〜862等に対応する機能を実装したメモリ160中のプログラムを実行することによって諸処理要素801〜862等を実現してもよい。この場合、図34はフロー図として見ることができる。
【0119】
暗号処理部820〜830の各々は、入力を受け取って出力を生成する複数段(例えば16段)のF関数暗号化処理段840〜850を含んでいる。F関数暗号化処理段840〜850の各々は、前段のXOR出力を受け取ってKiXORFMi,hに従って図34(B)に示されたF関数を実行し、そのF関数の出力と前段の出力をXOR(822〜823)によってXORして出力を供給する。
【0120】
図34(B)のF関数は、拡大鍵Kiと固定マスク値FMi,hのXOR値と線形変換Eによって線形変換された入力Xi’とをXORするXOR862と、非線形テーブルSboxSi,hによるサブバイト処理SubbyteSi,h(i=1,2,・・・,8)と、サブバイト処理Si,hの出力を線形変換して出力Zi’を供給する線形変換Pとを含んでいる。
【0121】
図33および34において、ラインデール法の場合と同様に入力マスクFMinは省略できるが、ラインデール法と同様な手法ではFMoutは省略できない。図35は、フェイステル型暗号化装置における複数の段の間のマスクの影響の伝播を示している。図35において太線はマスクされている経路を示している。FMoutが省略できない理由は、図35に示されているように、フェイステル型の暗号では或る段でマスクされたデータ(A)が、次段(B)だけでなくそれ以降の段(C)へも影響するからである。
【0122】
従って、フェイステル型暗号では、前段のマスク値を次段で完全にキャンセルできない。図36は、フェイステル型暗号化装置におけるマスク発生からマスク値キャンセルまでの経路を示している。図36において、太線はマスクされている経路を示している。フェイステル型暗号ではマスクを行ってからマスク値をキャンセルするまでには図36に示されているように4段以上必要であり、4段以上にわたってマスク値をキャンセルできる。このマスク値キャンセルの手法は、SPN型暗号化におけるように非線形変換の出力マスクが任意選択可能であることを利用するのでなくて、図36に示されているように前段からのマスクと等しい出力マスクを生成して、フェイステル型暗号化におけるXORによってキャンセルするものである。
【0123】
この方法を用いれば暗号化処理最後のマスクFMoutが不要になる。この手法をDES等の4ラウンド以上の暗号に適用する場合は、4ラウンドでキャンセルするような固定マスク値の構成を繰り返してもよいし、または全ラウンドの最後でキャンセルするような固定マスク値を用いてもよい。
【0124】
上述の実施形態においては、全てのラウンドに対して固定マスク値法を適用する場合について説明した。しかし、DPAが可能となる条件で述べたように、DPAが成功するためには入力値が既知でかつ攻撃者がその値を制御可能でなければならない。従って、暗号化処理の最初の数ラウンドに対して固定値マスク法を適用すれば、その後のラウンドはその入力が未知でかつ制御不可能なのでDPA対策は不要となる。それによって暗号化対策に必要な処理を削減できる。
【0125】
表3は、ラインデール法の実装における固定マスク値法を用いた暗号化の結果と、DPA対策なしの通常の暗号化、および従来の乱数マスク値法を用いた暗号化との比較を示している。表3において、Sは対策なしの場合の処理時間を表し、Rは対策なしの場合の必要なRAM量を表し、Mは対策なしの場合の必要なROM量を表す。但し、R≪Mである。安全性は攻撃者が鍵を推定するのに必要なチェックすべき可能な鍵の数で表される。
【表3】
【0126】
表4は、DESの実装における固定マスク値法を用いた暗号化の結果と、DPA対策なしの通常の暗号化、および従来の乱数マスク値法を用いた暗号化との比較を示している。
【表4】
【0127】
表3および表4より、乱数マスク値法では処理時間が長く大きいRAM量を必要とするのに対して、固定マスク値法では、2〜3倍のROM量を必要とするが大きいRAM領域を必要とせずに、対策なしの場合とほぼ同じ程度の処理時間で充分な安全性が確保できる。
【0128】
上述の実施形態では主にラインデール法およびDESについて説明したが、固定マスク値法は、ラインデール法以外のSPN型暗号化、DES以外のフェイステル型暗号化、およびそれを組合せた型の暗号にも適用でき同様の有効性を示す。
【0129】
以上説明した実施形態は典型例として挙げたに過ぎず、その変形およびバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理および請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。
【0130】
(付記1) 排他的論理和手段および非線形変換手段を有する暗号化装置であって、
乱数を発生する乱数発生器手段と、
q個の固定値(ここでqは整数である)と、
前記乱数に従って前記q個の固定値の中の1つを選択する第1の選択器と、
を具え、
前記排他的論理和手段は、前記選択された固定値と鍵の排他的論理和と前記排他的論理和手段の入力の排他的論理和をとるものである、
暗号化装置。
(付記2) さらに、q組(セット)のマスクされた固定テーブルと、
前記乱数に従って前記q組の固定テーブルの中の1組を選択する第2の選択器と、を具え、
前記非線形変換手段は前記選択された1組の固定テーブルに従って入力を非線形変換するものである、付記1に記載の暗号化装置。
(付記3) 前記第1の排他的論理和手段および前記非線形変換手段を有する暗号化部と、前記暗号化装置への入力と前記乱数に従って選択された或る固定値の排他的論理和をとる第2の排他的論理和手段と、前記乱数に従って選択された或る固定値と前記暗号化部の出力の排他的論理和をとる第3の排他的論理和手段とを具える、付記1に記載の暗号化装置。
(付記4) 排他的論理和手段および非線形変換手段を有する暗号化装置であって、
乱数を発生する乱数発生器手段と、
q組のマスクされた固定テーブル(ここでqは整数である)と、
前記乱数に従って前記q組の固定テーブルの中の1組を選択する選択器と、
を具え、
前記非線形変換手段は、前記選択された1組の固定テーブルに従って入力を非線形変換するものである、
暗号化装置。
(付記5) 複数の暗号化段を具え、
この複数の暗号化段の各々は、その段の、前記排他的論理和手段と、前記固定テーブルと、前記選択器と、を有するものであり、
前記複数の暗号化段のそれぞれの前記固定テーブルは同じものである、付記4に記載の暗号化装置。
(付記6) マスクされる前の固定テーブルをS[x]とし、マスクされたj番目のテーブルをSj[xXORci,j]XORdi,j(j=0,1,・・・,15)としたときに、(c0,jXORc1,j)∨(c1,jXORc2,j)∨・・・∨(cq−2,jXORcq−2,j)=(11111111)2である、付記4に記載の暗号化装置。
(付記7) テーブルの組の数q=2とする場合に、マスクされる前の固定テーブルをS[x]とし、マスクされたj番目のテーブルをSj[xXORci,j]XORdi,j(j=0,1,・・・,15)としたときに、c0,jXORc1,j=(10101010)2または(01010101)2である、付記4に記載の暗号化装置。
(付記8) マスクされる前の固定テーブルをS[x]とし、マスクされたj番目のテーブルをSj[xXORci,j]XORdi,j(j=0,1,・・・,15)としたときに、(d0,jXORd1,j)∨(d1,jXORd2,j)∨・・・∨(dq−2,jXORdq−2,j)=(11111111)2である、付記4に記載の暗号化装置。
(付記9) 前記非線形変換手段はサブバイト手段であり、
さらに、入力をシフトする手段と、入力をミクストコラムする手段とを具える、付記4に記載の暗号化装置。
(付記10) 乱数を発生する乱数発生器手段と、
並列に結合された複数の暗号化部と、
前記乱数に従って前記複数の暗号化部の中の1つを選択する選択器と、
を具え、
前記複数の暗号化部の各々は、排他的論理和手段および非線形変換手段を含むものである、
暗号化装置。
(付記11) 前記選択された暗号化部の前記排他的論理和手段は、固定値と鍵の排他的論理和と前記排他的論理和手段の入力の排他的論理和をとるものである、付記10に記載の暗号化装置。
(付記12) 前記非線形変換手段は、固定テーブルに従って前記非線形変換手段の入力を非線形変換するものである、付記10に記載の暗号化装置。
(付記13) 前記複数の暗号化部の各々は、その暗号化部への入力と固定値の排他的論理和をとる第2の排他的論理和手段と、入力と固定値の排他的論理和をその暗号化部の出力として生成する第3の排他的論理和手段と、を具えるものである、付記10に記載の暗号化装置。
(付記14) 前記選択された暗号化部の前記非線形変換手段は、固定テーブルに従って前記非線形変換手段の入力を非線形変換するものである、付記10に記載の暗号化装置。
(付記15) 前記複数の暗号化部の各々は複数の暗号化段を含んでおり、
前記複数の暗号化段の各々は、その段の、鍵と固定値の排他的論理和と入力の排他的論理和をとる排他的論理和手段と、固定テーブルに従って入力を非線形変換する非線形変換手段とを含むものである、付記10に記載の暗号化装置。
(付記16) 乱数を発生する乱数発生器手段と複数の暗号化段とを具えた暗号化装置であって、
前記複数の暗号化段の各々は、入力を非線形変換する非線形変換手段と、第1の入力と第2の入力の排他的論理和をとる排他的論理和手段と、を含み、
前記排他的論理和手段の第2の入力は前記非線形変換手段の出力に結合されており、
前記非線形変換手段は、q個の固定値(ここでqは整数である)と、前記乱数に従って前記q個の固定値の中の1つを選択する選択器と、前記選択された固定値と鍵の排他的論理和と入力の排他的論理和をとる別の排他的論理和手段と、を有するものである、
暗号化装置。
(付記17) 前記非線形変換手段は、さらに、前記非線形変換手段の内部に、固定テーブルに従って入力を非線形変換する複数の非線形変換手段と、前記複数の非線形変換手段の中の1つを選択する選択器とを有するものである、付記16に記載の暗号化装置。
(付記18) 前記複数の暗号化段のそれぞれの前記非線形変換手段の固定テーブルは同じである、付記17に記載の暗号化装置。
(付記19) 前記複数の暗号化段における連続する複数の段においてマスクをキャンセルする、付記16に記載の暗号化装置。
(付記20) 前記複数の暗号化段において前記複数の暗号化段の数より少ない数の暗号化段においてマスクが行われる、付記16に記載の暗号化装置。
(付記21) 乱数を発生する乱数発生器手段と複数の暗号化段とを具えた暗号化装置であって、
前記複数の暗号化段の各々は、入力を非線形変換する非線形変換手段と、第1の入力と第2の入力の排他的論理和をとる排他的論理和手段と、を含み、
前記排他的論理和手段の第2の入力は前記非線形変換手段の出力に結合されており、
前記非線形変換手段は、内部に、前記乱数に従って、固定テーブルに従って入力を非線形変換する非線形変換手段を有するものである、
暗号化装置。
(付記22) 乱数を発生する乱数発生器手段と、
並列に結合された複数の暗号化部と、
前記乱数に従って前記複数の暗号化部の中の1つを選択する選択器と、
を具え、
前記複数の暗号化部の各々は複数の暗号化段を有し、
前記複数の暗号化段の各々は、入力を非線形変換する非線形変換手段と、第1の入力と第2の入力の排他的論理和をとる排他的論理和手段と、を含み、
前記排他的論理和手段の第2の入力は前記非線形変換手段の出力に結合されているものである、
暗号化装置。
(付記23) 前記非線形変換手段は、固定値と鍵の排他的論理和と入力の排他的論理和をとる別の排他的論理和手段と、前記非線形変換手段の内部に、固定テーブルに従って入力を非線形変換する非線形変換手段と、を有するものである、付記22に記載の暗号化装置。
(付記24) マスクされる前の固定テーブルをSj[x]とし、マスクされたj番目のテーブルをSj’[xXORci,j]XORdi,j(j=0,1,・・・,7)としたときに、(d0,jXORd1,j)∨(d1,jXORd2,j)∨・・・∨(dq−2,jXORdq−2,j)=(1111)2である、付記22に記載の暗号化装置。
(付記25) 暗号化装置において用いるための記憶媒体に格納されたプログラムであって、
乱数に従ってq個の固定値の中の1つを選択するステップ(ここでqは整数である)と、
前記選択された固定値と鍵の排他的論理和と入力値の排他的論理和をとるステップと、
前記乱数に従ってq組のマスクされた固定テーブルの中の1組を選択するステップと、
前記選択された1組の固定テーブルに従って入力値を非線形変換するステップと、
を実行させる、プログラム。
(付記26) 暗号化装置において用いるための記憶媒体に格納されたプログラムであって、
乱数に従って複数の暗号化手順の中の1つを選択するステップと、
前記選択された暗号化手順に従って、入力値を暗号化して出力するステップと、
を実行させ、
前記暗号化するステップは、
固定値と鍵の排他的論理和と入力値の排他的論理和をとるステップと、
1組の固定テーブルに従って入力値を非線形変換するステップと、を含むものである、
プログラム。
(付記27) 暗号化装置において用いるための記憶媒体に格納されたプログラムであって、
入力値を非線形変換して出力を供給するステップと、
第1の入力値と前記出力である第2の入力値の排他的論理和をとるステップと、
を実行させ、
前記非線形変換するステップは、
乱数に従ってq個の固定値の中の1つを選択するステップ(ここでqは整数である)と、
前記選択された固定値と鍵の排他的論理和と入力値の排他的論理和をとるステップと、
前記乱数に関連付けられた固定テーブルに従って入力値を非線形変換するステップと、を含むものである、
プログラム。
(付記28) 暗号化装置において用いるための記憶媒体に格納されたプログラムであって、
乱数に従って複数の暗号化手順の中の1つを選択するステップと、
前記選択された暗号化手順に従って、入力値を暗号化して出力を供給するステップと、
を実行させ、
前記暗号化するステップは、
入力値を非線形変換して出力を供給するステップと、
第1の入力値と前記出力である第2の入力値の排他的論理和をとるステップと、を含むものである、
プログラム。
【0131】
【発明の効果】
本発明は、上述の特徴によって、共通鍵暗号を行う暗号プロセッサに対する効率的な暗号解読防止を実現でき、秘密鍵の推定を困難にし、暗号プロセッサの安全性を高めることができるという効果を奏する。
【図面の簡単な説明】
【図1】図1は、図1はスマートカードにおける共通秘密鍵を用いた暗号化の例を示している。
【図2】図2は、典型的な共通鍵暗号で用いられる鍵XORを示している。
【図3】図3は、典型的な共通鍵暗号で用いられる線形変換を示している。
【図4】図4は、典型的な共通鍵暗号で用いられる非線形変換を示している。
【図5】図5は、縦続接続の形の鍵XOR演算(図2)と非線形変換(図4)の組合せである暗号化の例を示している。
【図6】図6は、図5における任意の非線形変換要素wiに関係する構成要素を示している。
【図7】図7(A)および(B)は、暗号化プロセッサがその入力平文に応答して消費する電力消費の時間変化を表す電力消費曲線を示している。図7(C)はスパイクを有する電力消費曲線の差分を示している。図7(D)はスパイクのない電力消費曲線の差分を示している。
【図8】図8は、図4の暗号化器の前後に2つの線形変換を追加した構成を有する暗号化器を示している。
【図9】 図9は、図5の暗号化器における電力消費曲線の測定対象点A、BおよびCを示している。
【図10】図10は、乱数マスク値法による処理の概要図を示している。
【図11】図11は、乱数マスク値法による鍵XORを示している。
【図12】図12は、乱数マスク値法による線形関数を示している。
【図13】図13は、乱数マスク値法による非線形関数を示している。
【図14】図14は、DPA対策のない通常のN段ラインデール処理の全体的構成を示している。
【図15】図15は、ラインデール法の秘密鍵Ksecから拡大鍵K0、K1、・・・、KNを生成する拡大鍵生成器を示している。
【図16】図16は、サブバイト処理Subbyteの構成を示している。
【図17】図17は、シフトShiftの構成を示している。
【図18】図18は、ミクストコラム処理Mixedcolumnの構成を示している。
【図19】図19は、図14の通常のN段ラインデール法に対して、乱数マスク値法を適用したN段ラインデール法を示している。
【図20】図20は、図19の16個のSboxで使用されるNewSboxを示している。
【図21】図21は、本発明による第1のタイプの暗号化装置の概略的構成を示している。
【図22】図22は、図21における鍵XORの構成を示している。
【図23】図23は、図21における非線形変換の構成を示している。
【図24】図24は、本発明による第2のタイプの暗号化装置の概略的構成を示している。
【図25】図25は、図24における鍵XORの構成を示している。
【図26】図26は、図24における非線形変換の構成を示している。
【図27】図27は、図21の第1のタイプの暗号化装置の一例を示している。
【図28】図28は、図27におけるSubbyteの構成を示している。
【図29】図29は、図21の第1のタイプの暗号化装置の別の例を示している。
【図30】図30は、図29におけるSubbyteの構成を示している。
【図31】図31は、図24の第2のタイプの暗号化装置の一例を示している。
【図32】図32は、通常のDESの構成を示している。
【図33】図33は、図29の固定マスク値法をフェイステル型のDESに適用した構成を示している。
【図34】図34は、図31の固定マスク値法をフェイステル型のDESに適用した構成を示している。
【図35】図35は、フェイステル型暗号化装置における暗号における段の間のマスクの伝播を示している。
【図36】図36は、フェイステル型暗号化装置におけるマスク発生からマスク値キャンセルまでの経路を示している。
【符号の説明】
100 暗号化措置
101 暗号化処理部
103 乱数発生器
104、105 切換器
106、107 論理XOR
200 暗号化装置
203 乱数発生器
208〜209 暗号化処理部
204、205 論理XOR
211、213 切換器
300 暗号化装置
310 第i段の処理
311 第N−1段の処理
303 乱数発生器
305、329、339、379、399 切換器
302、331、333、371、373、383 OXR(排他的論理和)
334 Subbyte
335 Shift
336 Mixedcolumn
Claims (9)
- 排他的論理和手段と、
非線形変換手段を有する暗号化装置と、
乱数iを発生する乱数発生手段と、
2個の固定値と、
前記乱数iに従って前記2個の固定値の中の1つを選択する第1の選択器と、
2組のマスクされた固定テーブルと、
前記乱数iに従って前記2組の固定テーブルの中の1組を選択する第2の選択器と、
を具え、
前記排他的論理和手段は、前記選択された固定値と鍵の排他的論理和と前記排他的論理和手段の入力の排他的論理和をとり、
前記非線形変換手段は前記選択された1組の固定テーブルに従って入力を非線形変換し、
マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(i=0または1、j=0,1,・・・,15)としたとき、c0,jXORc1,j=(10101010)2または(01010101)2であり、ここで、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値であること、
を特徴とする、暗号化装置。 - 排他的論理和手段と、
非線形変換手段と、
乱数iを発生する乱数発生手段と、
2組のマスクされた固定テーブルと、
前記乱数iに従って前記2組の固定テーブルの中の1組を選択する選択器と、
を具え、
前記非線形変換手段は前記選択された1組の固定テーブルに従って入力を非線形変換し、
マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(i=0または1、j=0,1,・・・,15)としたとき、c0,jXORc1,j=(10101010)2または(01010101)2であり、ここで、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値であること、
を特徴とする、暗号化装置。 - 乱数iを発生する乱数発生手段と、
複数の暗号化段と、
2組のマスクされた固定テーブルと、
前記乱数iに従って前記2組の固定テーブルの中の1組を選択する選択器と、
を具え、
前記複数の暗号化段の各々は、入力を非線形変換する非線形変換手段と、第1の入力と第2の入力の排他的論理和をとる排他的論理和手段と、を含み、
前記排他的論理和手段の第2の入力は前記非線形変換手段の出力に結合されており、
前記非線形変換手段は、2個の固定値と、前記乱数iに従って前記2個の固定値の中の1つを選択する選択器と、前記選択された固定値と鍵の排他的論理和と入力の排他的論理和をとる別の排他的論理和手段と、前記選択された1組の固定テーブルに従って入力を非線形変換する複数の非線形変換手段と、前記複数の非線形変換手段の中の1つを選択する選択器と、を有するものであり、
マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(i=0または1、j=0,1,・・・,15)としたとき、c0,jXORc1,j=(10101010)2または(01010101)2であり、ここで、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値であること、
を特徴とする、暗号化装置。 - 排他的論理和手段と、
非線形変換手段と、
乱数を発生する乱数発生手段と、
q個(qは3以上の整数)の固定値と、
前記乱数に従って前記q個の固定値の中の1つを選択する第1の選択器と、
q組のマスクされた固定テーブルと、
前記乱数に従って前記q組の固定テーブルの中の1組を選択する第2の選択器と、
を具え、
前記排他的論理和手段は、前記選択された固定値と鍵の排他的論理和と前記排他的論理和手段の入力の排他的論理和をとり、
前記非線形変換手段は、前記選択された1組の固定テーブルに従って入力を非線形変換するものであること、
を特徴とする、暗号化装置。 - マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(j=0,1,・・・,15)としたとき、(c0,jXORc1,j)∨(c1,jXORc2,j)∨・・・∨(cq−2,jXORcq−2,j)=(11111111)2、および(d0,jXORd1,j)∨(d1,jXORd2,j)∨・・・∨(dq−2,jXORdq−2,j)=(11111111)2であり、ここで、iは前記乱数i=0、1、...、q−1であり、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値であることを特徴とする、請求項4に記載の暗号化装置。
- 排他的論理和手段と、
非線形変換手段と、
乱数を発生する乱数発生手段と、
q組(qは3以上の整数)のマスクされた固定テーブルと、
前記乱数に従って前記q組の固定テーブルの中の1組を選択する選択器と、
を具え、
前記非線形変換手段は、前記選択された1組の固定テーブルに従って入力を非線形変換するものであること、
を特徴とする、暗号化装置。 - マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(j=0,1,・・・,15)としたとき、(c0,jXORc1,j)∨(c1,jXORc2,j)∨・・・∨(cq−2,jXORcq−2,j)=(11111111)2、および(d0,jXORd1,j)∨(d1,jXORd2,j)∨・・・∨(dq−2,jXORdq−2,j)=(11111111)2であり、ここで、iは前記乱数i=0、1、...、q−1であり、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値であること、
を特徴とする、請求項6に記載の暗号化装置。 - 乱数を発生する乱数発生手段と、
複数の暗号化段と、
q組(qは3以上の整数)のマスクされた固定テーブルと、
前記乱数に従って前記q組の固定テーブルの中の1組を選択する選択器と、
を具え、
前記複数の暗号化段の各々は、入力を非線形変換する非線形変換手段と、第1の入力と第2の入力の排他的論理和をとる排他的論理和手段と、を含み、
前記排他的論理和手段の第2の入力は前記非線形変換手段の出力に結合されており、
前記非線形変換手段は、q個の固定値と、前記乱数に従って前記q個の固定値の中の1つを選択する選択器と、前記選択された固定値と鍵の排他的論理和と入力の排他的論理和をとる別の排他的論理和手段と、前記選択された1組の固定テーブルに従って入力を非線形変換する複数の非線形変換手段と、前記複数の非線形変換手段の中の1つを選択する選択器と、を有するものであること、
を特徴とする、暗号化装置。 - マスクされる前の固定テーブルをS[x]とし、マスクされたi番目の固定テーブルをj番目のバイトについてSj,i [x]=S[xXORci,j]XORdi,j(j=0,1,・・・,15)としたとき、(c0,jXORc1,j)∨(c1,jXORc2,j)∨・・・∨(cq−2,jXORcq−2,j)=(11111111)2、および(d0,jXORd1,j)∨(d1,jXORd2,j)∨・・・∨(dq−2,jXORdq−2,j)=(11111111)2であり、ここで、iは前記乱数i=0、1、...、q−1であり、c i,j はi番目の入力マスク値のj番目のバイト値であり、d i,j はi番目の出力マスク値のj番目のバイト値であること、
を特徴とする、請求項8に記載の暗号化装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001178407A JP4596686B2 (ja) | 2001-06-13 | 2001-06-13 | Dpaに対して安全な暗号化 |
US10/028,265 US7386130B2 (en) | 2001-06-13 | 2001-12-28 | Encryption secured against DPA |
DE60222052T DE60222052T2 (de) | 2001-06-13 | 2002-01-25 | Verschlüsselung gesichert gegen Angriffe durch die Analyse der Leistungsaufnahme (DPA) |
EP07000759A EP1772985A1 (en) | 2001-06-13 | 2002-01-25 | Encryption secured against Differential Power Analysis (DPA) |
EP02001146A EP1267514B1 (en) | 2001-06-13 | 2002-01-25 | Encryption secured against Differential Power Analysis (DPA) |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001178407A JP4596686B2 (ja) | 2001-06-13 | 2001-06-13 | Dpaに対して安全な暗号化 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002366029A JP2002366029A (ja) | 2002-12-20 |
JP4596686B2 true JP4596686B2 (ja) | 2010-12-08 |
Family
ID=19019110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001178407A Expired - Fee Related JP4596686B2 (ja) | 2001-06-13 | 2001-06-13 | Dpaに対して安全な暗号化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7386130B2 (ja) |
EP (2) | EP1267514B1 (ja) |
JP (1) | JP4596686B2 (ja) |
DE (1) | DE60222052T2 (ja) |
Families Citing this family (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7599491B2 (en) * | 1999-01-11 | 2009-10-06 | Certicom Corp. | Method for strengthening the implementation of ECDSA against power analysis |
US7092523B2 (en) * | 1999-01-11 | 2006-08-15 | Certicom Corp. | Method and apparatus for minimizing differential power attacks on processors |
US9323955B2 (en) * | 2000-12-21 | 2016-04-26 | Gemalto Sa | Method for protecting a logic or mathematical operator installed in an electronic module with a microprocessor as well as the associated embedded electronic module and the system |
US8582774B2 (en) * | 2002-03-07 | 2013-11-12 | Gemalto Sa | Method for making safe an electronic cryptography assembly with a secret key |
JP4515716B2 (ja) * | 2002-04-03 | 2010-08-04 | パナソニック株式会社 | 拡大鍵生成装置、暗号化装置および暗号化システム |
JP4357815B2 (ja) | 2002-09-11 | 2009-11-04 | 株式会社東芝 | 暗号演算回路 |
FR2844896A1 (fr) * | 2002-09-19 | 2004-03-26 | St Microelectronics Sa | Alimentation d'un circuit de traitement asynchrone de donnees |
US7190791B2 (en) * | 2002-11-20 | 2007-03-13 | Stephen Laurence Boren | Method of encryption using multi-key process to create a variable-length key |
JP2004212828A (ja) * | 2003-01-08 | 2004-07-29 | Sony Corp | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
EP1457858A1 (fr) * | 2003-03-14 | 2004-09-15 | SCHLUMBERGER Systèmes | Procédé de sécurisation d'un ensemble électronique à cryptoprocesseur |
JP3927151B2 (ja) * | 2003-05-30 | 2007-06-06 | 株式会社東芝 | 記憶装置 |
DE10341096A1 (de) * | 2003-09-05 | 2005-03-31 | Giesecke & Devrient Gmbh | Übergang zwischen maskierten Repräsentationen eines Wertes bei kryptographischen Berechnungen |
JP3998616B2 (ja) * | 2003-09-10 | 2007-10-31 | 株式会社東芝 | 暗号化/復号モジュール |
WO2005027403A1 (ja) * | 2003-09-11 | 2005-03-24 | Renesas Technology Corp. | 情報処理装置 |
JP4611643B2 (ja) * | 2004-01-16 | 2011-01-12 | 三菱電機株式会社 | 個別鍵生成装置 |
KR101061906B1 (ko) * | 2004-02-19 | 2011-09-02 | 삼성전자주식회사 | 전력분석공격에 안전한 기본 연산 장치 및 방법 |
KR100594265B1 (ko) | 2004-03-16 | 2006-06-30 | 삼성전자주식회사 | 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법. |
WO2005107138A1 (fr) * | 2004-03-29 | 2005-11-10 | Stmicroelectronics Sa | Processeur d'execution d'un algorithme de type aes |
US7899190B2 (en) | 2004-04-16 | 2011-03-01 | Research In Motion Limited | Security countermeasures for power analysis attacks |
EP1596278A1 (fr) * | 2004-05-11 | 2005-11-16 | Axalto SA | Procédé de protection d'un ensemble cryptographique par masquage homographique |
US7848514B2 (en) * | 2004-05-24 | 2010-12-07 | Research In Motion Limited | Table masking for resistance to power analysis attacks |
EP1601132B1 (en) * | 2004-05-24 | 2006-11-15 | Research In Motion Limited | Table Masking for Resistance to Power Analysis Attacks |
JP4589327B2 (ja) * | 2004-07-07 | 2010-12-01 | 三菱電機株式会社 | 電子素子及びデータ処理方法 |
KR20060081847A (ko) * | 2005-01-10 | 2006-07-13 | 삼성전자주식회사 | 비밀키를 보호하는 스마트 카드 및 그것의 방법 |
US8467535B2 (en) * | 2005-01-18 | 2013-06-18 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
EP2395424B1 (en) | 2005-01-18 | 2013-07-31 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
GB2443358A (en) * | 2005-01-27 | 2008-04-30 | Samsung Electronics Co Ltd | Cryptographic logic circuits and method of performing logic operations |
KR100725169B1 (ko) * | 2005-01-27 | 2007-06-04 | 삼성전자주식회사 | 전력 분석 공격에 안전한 논리 연산 장치 및 방법 |
EP1860630B1 (en) | 2005-03-16 | 2018-12-26 | Mitsubishi Electric Corporation | Data converting apparatus and data converting method |
JP4823904B2 (ja) * | 2005-03-31 | 2011-11-24 | パナソニック株式会社 | データ暗号化装置及びデータ暗号化方法 |
JPWO2006118101A1 (ja) * | 2005-04-27 | 2008-12-18 | 松下電器産業株式会社 | 機密情報処理用ホスト機器および機密情報処理方法 |
EP1876577A1 (en) | 2005-04-28 | 2008-01-09 | Matsushita Electric Industrial Co., Ltd. | Program converter, encrypting device, and encrypting method |
JP4887668B2 (ja) * | 2005-06-09 | 2012-02-29 | ソニー株式会社 | 暗号化復号処理回路および暗号化復号システム |
WO2007000702A2 (en) | 2005-06-29 | 2007-01-04 | Koninklijke Philips Electronics N.V. | Arrangement for and method of protecting a data processing device against a cryptographic attack or analysis |
JP4586163B2 (ja) * | 2005-09-09 | 2010-11-24 | 国立大学法人岩手大学 | 暗号化システム |
JP4783104B2 (ja) * | 2005-09-29 | 2011-09-28 | 株式会社東芝 | 暗号化/復号装置 |
FR2893796B1 (fr) | 2005-11-21 | 2008-01-04 | Atmel Corp | Procede de protection par chiffrement |
JP2007189659A (ja) * | 2005-12-15 | 2007-07-26 | Toshiba Corp | 暗号化装置、暗号化方法及び暗号化プログラム |
DE602006020010D1 (de) * | 2005-12-19 | 2011-03-24 | St Microelectronics Sa | Schutz der Ausführung eines DES-Algorithmus |
JP2007192893A (ja) * | 2006-01-17 | 2007-08-02 | Sony Corp | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP4986206B2 (ja) * | 2006-02-22 | 2012-07-25 | 株式会社日立製作所 | 暗号処理方法及び暗号処理装置 |
EP1833190B1 (en) * | 2006-03-07 | 2010-08-04 | Research In Motion Limited | Table splitting for cryptographic processes |
US8379841B2 (en) | 2006-03-23 | 2013-02-19 | Exegy Incorporated | Method and system for high throughput blockwise independent encryption/decryption |
EP1840732A1 (en) * | 2006-03-31 | 2007-10-03 | Axalto SA | Protection against side channel attacks |
FR2903508B1 (fr) * | 2006-07-10 | 2008-10-17 | Sagem Defense Securite | Protection d'un programme interprete par une machine virtuelle |
JP4882598B2 (ja) * | 2006-07-28 | 2012-02-22 | ソニー株式会社 | 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム |
JP5023624B2 (ja) * | 2006-09-01 | 2012-09-12 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP4909018B2 (ja) * | 2006-11-16 | 2012-04-04 | 富士通株式会社 | 共通鍵暗号のための暗号化装置 |
US9411976B2 (en) * | 2006-12-01 | 2016-08-09 | Maidsafe Foundation | Communication system and method |
US8422668B1 (en) * | 2006-12-15 | 2013-04-16 | Spansion Llc | Table lookup operation on masked data |
US7949130B2 (en) | 2006-12-28 | 2011-05-24 | Intel Corporation | Architecture and instruction set for implementing advanced encryption standard (AES) |
US7970129B2 (en) * | 2007-04-19 | 2011-06-28 | Spansion Llc | Selection of a lookup table with data masked with a combination of an additive and multiplicative mask |
JP4936996B2 (ja) | 2007-05-24 | 2012-05-23 | 株式会社東芝 | 非線形データ変換器、暗号化装置、および復号装置 |
WO2009029842A1 (en) | 2007-08-31 | 2009-03-05 | Exegy Incorporated | Method and apparatus for hardware-accelerated encryption/decryption |
US8503678B2 (en) * | 2007-09-28 | 2013-08-06 | Intel Corporation | Suppressing power supply noise using data scrambling in double data rate memory systems |
US7945050B2 (en) * | 2007-09-28 | 2011-05-17 | Intel Corporation | Suppressing power supply noise using data scrambling in double data rate memory systems |
US8553877B2 (en) * | 2007-10-01 | 2013-10-08 | Blackberry Limited | Substitution table masking for cryptographic processes |
KR101011264B1 (ko) * | 2008-01-18 | 2011-01-27 | 고려대학교 산학협력단 | 아리아 마스킹 방법 및 이를 이용한 아리아 암호 장치 및방법 |
JP5229315B2 (ja) * | 2008-03-31 | 2013-07-03 | 富士通株式会社 | 共通鍵暗号機能を搭載した暗号化装置及び組込装置 |
JP5268609B2 (ja) * | 2008-12-09 | 2013-08-21 | 株式会社東芝 | 暗号処理装置及び演算方法 |
JP5202350B2 (ja) * | 2009-01-16 | 2013-06-05 | 三菱電機株式会社 | 暗号処理装置及び暗号処理方法及び暗号処理プログラム |
FR2941343B1 (fr) * | 2009-01-20 | 2011-04-08 | Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst | Circuit de cryptographie, protege notamment contre les attaques par observation de fuites d'information par leur chiffrement. |
JP4837058B2 (ja) | 2009-03-10 | 2011-12-14 | 株式会社東芝 | 演算装置及びプログラム |
EP2406916A1 (en) | 2009-03-10 | 2012-01-18 | Irdeto Corporate B.V. | White-box cryptographic system with input dependent encodings |
JP2010245881A (ja) * | 2009-04-07 | 2010-10-28 | Toshiba Corp | 暗号処理装置 |
US8615078B2 (en) * | 2009-08-21 | 2013-12-24 | Electronics And Telecommunications Research Institute | Method and apparatus for processing F-function in seed encryption system |
JP2011169977A (ja) * | 2010-02-16 | 2011-09-01 | Renesas Electronics Corp | 暗号処理装置 |
US8619985B2 (en) | 2010-04-27 | 2013-12-31 | Research In Motion Limited | Table splitting for cryptographic processes |
DE102010028375A1 (de) * | 2010-04-29 | 2011-11-03 | Robert Bosch Gmbh | Schutz vor kryptoanalytischen Seitenkanalattacken |
DE102010029735A1 (de) * | 2010-06-07 | 2011-12-08 | Robert Bosch Gmbh | Verfahren zum Generieren eines Bitvektors |
JP5060606B2 (ja) * | 2010-09-17 | 2012-10-31 | 株式会社東芝 | 暗号化装置 |
US20120079462A1 (en) * | 2010-09-24 | 2012-03-29 | SoftKrypt LLC | Systems and methods of source software code obfuscation |
KR20120070873A (ko) * | 2010-12-22 | 2012-07-02 | 한국전자통신연구원 | 부채널 방지 마스킹 덧셈 연산 장치 |
FR2977953A1 (fr) * | 2011-07-13 | 2013-01-18 | St Microelectronics Rousset | Protection d'un calcul d'exponentiation modulaire par addition d'une quantite aleatoire |
MY178555A (en) * | 2011-08-19 | 2020-10-16 | Mimos Berhad | Method and system for providing a secured internet protocol based communication |
US8525545B1 (en) | 2011-08-26 | 2013-09-03 | Lockheed Martin Corporation | Power isolation during sensitive operations |
US8624624B1 (en) | 2011-08-26 | 2014-01-07 | Lockheed Martin Corporation | Power isolation during sensitive operations |
JP5481455B2 (ja) * | 2011-09-27 | 2014-04-23 | 株式会社東芝 | 暗号処理装置 |
US8745376B2 (en) | 2011-10-14 | 2014-06-03 | Certicom Corp. | Verifying implicit certificates and digital signatures |
JP5711681B2 (ja) * | 2012-03-06 | 2015-05-07 | 株式会社東芝 | 暗号処理装置 |
FR2995111B1 (fr) * | 2012-09-04 | 2015-07-24 | Morpho | Protection contre canaux auxiliaires |
CN103001762B (zh) * | 2012-11-25 | 2015-08-19 | 宁波大学 | 一种密码器件上防御零值功耗攻击的方法 |
DE102012025416A1 (de) * | 2012-12-21 | 2014-06-26 | Giesecke & Devrient Gmbh | Verfahren zum Betreiben eines portablen Datenträgers sowie ein solcher portabler Datenträger |
JP5500277B2 (ja) * | 2013-01-28 | 2014-05-21 | 富士通株式会社 | 共通鍵暗号機能を搭載した暗号化装置及び組込装置 |
US9959429B2 (en) * | 2013-03-15 | 2018-05-01 | Cryptography Research, Inc. | Asymmetrically masked multiplication |
US10015152B2 (en) * | 2014-04-02 | 2018-07-03 | International Business Machines Corporation | Securing data in a dispersed storage network |
CN103905462B (zh) * | 2014-04-16 | 2017-05-17 | 深圳国微技术有限公司 | 可抵御差分功耗分析攻击的加密处理装置及方法 |
US9871651B2 (en) | 2014-06-16 | 2018-01-16 | Cisco Technology, Inc. | Differential power analysis countermeasures |
US9654111B1 (en) * | 2014-11-12 | 2017-05-16 | Maxim Integrated Products, Inc. | Systems and methods for protecting data using reconfigurable logic paths |
US9792246B2 (en) | 2014-12-27 | 2017-10-17 | Intel Corporation | Lower-power scrambling with improved signal integrity |
CN106161005B (zh) * | 2015-03-31 | 2019-05-07 | 北京南瑞智芯微电子科技有限公司 | 一种分组加密算法防攻击的掩码方法和装置 |
DE102015115649A1 (de) | 2015-09-16 | 2017-03-16 | Claas Tractor Sas | Landwirtschaftliches Arbeitsfahrzeug |
FR3048096A1 (fr) * | 2016-02-22 | 2017-08-25 | Eshard | Procede de protection d'un circuit contre une analyse par canaux auxiliaires |
EP3208789B1 (en) | 2016-02-22 | 2020-08-05 | Eshard | Method of protecting a circuit against a side-channel analysis |
EP3264396B1 (en) * | 2016-06-28 | 2022-01-26 | Eshard | A method for protecting a substitution operation using a substitution table against a side-channel analysis |
CN107547190A (zh) | 2016-06-28 | 2018-01-05 | 埃沙尔公司 | 用于保护使用替换表的替换运算免受侧信道分析的方法 |
EP3264311B1 (en) | 2016-06-28 | 2021-01-13 | Eshard | A protection method and device against a side-channel analysis |
EP3264397B1 (en) * | 2016-06-28 | 2020-09-16 | Eshard | A protection method and device against a side-channel analysis |
US10243937B2 (en) * | 2016-07-08 | 2019-03-26 | Nxp B.V. | Equality check implemented with secret sharing |
US10256973B2 (en) * | 2016-09-30 | 2019-04-09 | Intel Corporation | Linear masking circuits for side-channel immunization of advanced encryption standard hardware |
FI20165911L (fi) * | 2016-11-30 | 2018-05-31 | Sam Widlund | Menetelmä ja järjestelmä tiedon salaukseen |
US11507699B2 (en) * | 2019-09-27 | 2022-11-22 | Intel Corporation | Processor with private pipeline |
KR20210108787A (ko) | 2020-02-26 | 2021-09-03 | 삼성전자주식회사 | 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기 |
JP7314108B2 (ja) * | 2020-08-27 | 2023-07-25 | 株式会社東芝 | 暗号処理装置、暗号処理方法およびプログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000066585A (ja) * | 1998-08-20 | 2000-03-03 | Toshiba Corp | 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452358A (en) * | 1994-02-08 | 1995-09-19 | Apple Computer, Inc. | Method and apparatus for improving the security of an electronic codebook encryption scheme utilizing a data dependent encryption function |
GB2288519A (en) * | 1994-04-05 | 1995-10-18 | Ibm | Data encryption |
US5870470A (en) | 1996-02-20 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for encrypting long blocks using a short-block encryption procedure |
ATE370490T1 (de) * | 1998-06-03 | 2007-09-15 | Cryptography Res Inc | Ausgewogene kryptographische rechenmethode und apparat zur schlupfminimierung in smartcards und anderen kryptosystemen |
CA2333095C (en) * | 1998-06-03 | 2005-05-10 | Cryptography Research, Inc. | Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems |
US6275586B1 (en) * | 1998-09-10 | 2001-08-14 | Igt | Cryptographically secure pseudo random number generator |
FR2784831B1 (fr) | 1998-10-16 | 2000-12-15 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
FR2784829B1 (fr) | 1998-10-16 | 2000-12-29 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
FR2785477B1 (fr) | 1998-10-29 | 2000-12-29 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
JP2000165375A (ja) * | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
FR2789535B1 (fr) | 1999-02-04 | 2001-09-28 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique |
FR2789776B1 (fr) | 1999-02-17 | 2001-04-06 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
FR2790890B1 (fr) * | 1999-03-08 | 2001-04-27 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
JP2000305453A (ja) | 1999-04-21 | 2000-11-02 | Nec Corp | 暗号化装置,復号装置,および暗号化・復号装置 |
US6295606B1 (en) * | 1999-07-26 | 2001-09-25 | Motorola, Inc. | Method and apparatus for preventing information leakage attacks on a microelectronic assembly |
DE19936529C1 (de) | 1999-08-03 | 2001-02-01 | Orga Kartensysteme Gmbh | Verfahren zur Verschlüsselung von Daten mit Hilfe einer Standard-Verschlüsselung in einem mikroprozessorgestützten, tragbaren Datenträger |
US6873706B1 (en) * | 1999-09-29 | 2005-03-29 | Hitachi, Ltd. | Processing apparatus, program, or system of secret information |
CA2298990A1 (en) * | 2000-02-18 | 2001-08-18 | Cloakware Corporation | Method and system for resistance to power analysis |
FR2809893B1 (fr) * | 2000-06-02 | 2002-11-15 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique sur courbe elliptique |
US7000111B1 (en) * | 2000-11-07 | 2006-02-14 | Ericsson Inc. | Method for masking secret multiplicands |
-
2001
- 2001-06-13 JP JP2001178407A patent/JP4596686B2/ja not_active Expired - Fee Related
- 2001-12-28 US US10/028,265 patent/US7386130B2/en not_active Expired - Fee Related
-
2002
- 2002-01-25 EP EP02001146A patent/EP1267514B1/en not_active Expired - Lifetime
- 2002-01-25 DE DE60222052T patent/DE60222052T2/de not_active Expired - Lifetime
- 2002-01-25 EP EP07000759A patent/EP1772985A1/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000066585A (ja) * | 1998-08-20 | 2000-03-03 | Toshiba Corp | 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体 |
Also Published As
Publication number | Publication date |
---|---|
EP1772985A1 (en) | 2007-04-11 |
EP1267514A9 (en) | 2003-05-21 |
DE60222052T2 (de) | 2008-05-21 |
EP1267514B1 (en) | 2007-08-29 |
DE60222052D1 (de) | 2007-10-11 |
EP1267514A3 (en) | 2003-11-05 |
US20030048903A1 (en) | 2003-03-13 |
EP1267514A2 (en) | 2002-12-18 |
JP2002366029A (ja) | 2002-12-20 |
US7386130B2 (en) | 2008-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4596686B2 (ja) | Dpaに対して安全な暗号化 | |
JP5229315B2 (ja) | 共通鍵暗号機能を搭載した暗号化装置及び組込装置 | |
Trichina | Combinational logic design for AES subbyte transformation on masked data | |
US8218762B2 (en) | Encrypting apparatus for common key cipher | |
US8290148B2 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
Coron et al. | A new algorithm for switching from arithmetic to boolean masking | |
Cheng et al. | Puffin: A novel compact block cipher targeted to embedded digital systems | |
US8396210B2 (en) | Cryptographic processing apparatus and cryptographic processing method, and computer program | |
Yegireddi et al. | A survey on conventional encryption algorithms of Cryptography | |
JPH08505275A (ja) | 暗号ストリームを発生させるための装置及び方法 | |
Jaffe | A first-order DPA attack against AES in counter mode with unknown initial counter | |
WO2008026622A1 (en) | Encryption device, encryption method, and computer program | |
JP2013511057A (ja) | カスタマイズされたマスキングによって保護される低複雑度の電子回路 | |
KR100737171B1 (ko) | 아리아에 대한 전력분석공격에 대응하는 저메모리형 마스킹방법 | |
Mella et al. | On the homomorphic computation of symmetric cryptographic primitives | |
JP2005134478A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
RU2141729C1 (ru) | Способ криптографического преобразования блоков двоичных данных | |
Ha et al. | Differential power analysis on block cipher ARIA | |
Ledda et al. | Enhancing IDEA algorithm using circular shift and middle square method | |
Golić | DeKaRT: A new paradigm for key-dependent reversible circuits | |
Saqib et al. | A compact and efficient FPGA implementation of the DES algorithm | |
JPH0736672A (ja) | 乱数発生器、及びそれを用いた通信システム及びその方法 | |
JP5500277B2 (ja) | 共通鍵暗号機能を搭載した暗号化装置及び組込装置 | |
JP2005529365A (ja) | Aesミックスカラム変換 | |
Benhadjyoussef et al. | The research of correlation power analysis on a aes implementations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100406 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100607 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100629 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100830 |
|
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: 20100921 |
|
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: 20100921 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131001 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |