説明

暗号処理装置

【課題】HD2リークをなくし、DPA対策および検証をレジスタ並びにその出力信号に対してのみ行うことができ、電力解析に対する耐性を向上させることが可能な暗号処理装置を提供する。
【解決手段】演算用データを格納する第1レジスタ103と、演算用データを格納する第2レジスタ104と、非線形変換部としてSbox1073を有し、第2レジスタ104の格納値に対してラウンド演算を行うラウンド演算部107と、第1レジスタ103の格納値に対して逆置換を行い、逆置換した値をSbox1073に出力する逆置換部108と、を有し、Sbox1073は、Sboxテーブル値と逆置換された第1レジスタ103の値との排他的論理和演算した値を入力として非線形変換処理を行い、ラウンド演算部107は、ラウンド演算結果を第2レジスタ104に出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、たとえばICカードに適用される暗号処理装置に関し、さらに詳細には、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関するものである。
【背景技術】
【0002】
ICカードでは、ホストコンピュータとデータのやり取りを行う時、その過程でICカードに格納されている秘密情報が漏れても問題を発生させないために、やり取りするデータには暗号化したデータを用いる。
【0003】
この暗号化の方法の1つとして、DES(Data Encryption Standard)がある。
DESでは、データの暗号化にはICカードの所有者とホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
【0004】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限りは復号化してメッセージを取り出すことは困難である。
また、暗号化・復号化の時に使う鍵は、ICカード内のEEPROM等の不揮発性メモリに格納される。
そして、暗号化・復号化時にはCPUを介さないで直接ICカード内の暗号エンジンに転送されるような制御により、ICカードの所有者やICカードの開発エンジニアすら鍵データを取り出すことが不可能な構成を採ってセキュリティを保持している。
【0005】
しかし、ICカードの消費電流を測定し、それに統計処理を施して鍵を取り出すという攻撃方法(DPA:Differential Power Analysis)が P.Kocher らにより報告された。
【0006】
このDPA攻撃では、異なる1000個程度の平文を用いて暗号化演算を行ってその時の消費電流波形を測定し、その消費電流を統計処理することにより鍵を取り出すことが可能となる。
この論文に記載されている攻撃方法は、次の処理を行う。
<1>Sboxの構成要素(S0〜S7)の1つを選択する(たとえばS0)。
<2>それに対応する6bitの鍵を推定して複数の平文でのDESのシミュレーション(simulation)を行う。
<3>そのシミュレーション結果で、S0 出力のLSBが“0”か“1”に応じて各平文に対応する消費電流波形を2つのグループに分類する。
<4>その差分をとってピーク電流の有無により、推定した鍵の妥当性を判断する。
【0007】
推定した6bit鍵が正しい場合、着目したノードには、一方のグループには“0”のみが、他方のグループには“1”のみが現われ、その差分を取ればピーク電流が流れる。
このとき、着目したノード以外(たとえばS1〜S7)では、そのノードに着目してグループ分けしたわけではないので、平文を変えての十分な数の暗号化演算を行った場合、2つのグループの各ノードにほぼ同数の“0”と“1”が現われる。そして、これらの動作の電流成分に関してはグループ間の差分を採ってもピーク電流は現われない。
このため、ピーク電流の有無は、着目したS0に対応する6bit鍵の妥当性にのみ依存した電流となり、これによりDPA攻撃が可能となる。
【0008】
DPA攻撃に対する対策法としては、たとえば特許文献1,2に開示されている。
【0009】
しかし、Sboxをメモリではなく、ロジック回路で構成する場合、各Sbox の出力値に起因する消費電流の差異はメモリで構成する場合に比べてかなり小さくなり、鍵の取り出しはかなり困難になる。
一方、Sbox の出力は、F関数内で置換(P)処理後に左(Left)データとEXOR演算されてR(Right)レジスタに格納される。この演算結果の格納時には、格納前のデータと格納データが異なるビットにおいて、レジスタ出力の反転が起こり、これによってそれにつながる配線で充放電電流が流れる。この時の変化電流に対してもDPA攻撃は可能となる。
【0010】
図1は、DES演算回路の構成を示す図である。
図2は、Sboxの構成例を示す図である。
【0011】
このDES演算回路10は、図1に示すように、初期置換部[IP(Initial Permutation)]11、スイッチ12L,12R、左レジスタ(Lレジスタという)13、および右レジスタ(Rレジスタ)14を有する。
さらに、DES演算回路10は、第1プリチャージ(Pre Charge)制御部15、第2プリチャージ制御部16、F関数部17、EXOR演算部18、逆置換部(IP-1)19、および暗号文出力部(Crypto)20を有する。
【0012】
F関数部17は、図1に示すように、非線形処理を実行する複数(図1では8)のSボックス(Sbox)S〜Sを有する。前段からのF関数入力値、すなわち、R(n−1)は拡張部(Expand)17−1によって48ビットに拡大され、さらに鍵スケジュール部から入力する鍵(48ビット)KnとEXOR演算部17−2でEXOR演算が実行される。EXOR演算部17−2の出力が6ビットずつ非線形変換処理を実行する複数のSboxS〜Sに入力される。各SboxS〜Sでは、変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
SボックスS〜Sからの出力ビット4×8=32ビットは、置換部(P)17−3に入力されて、ビット位置の入れ替え処理がなされ、F関数出力32ビットを生成して出力する。
【0013】
図2に示すSboxはBDD(Binary Decision Diagram)と呼ばれる構成で、ピラミッド状に配置されたスイッチ回路を、拡張データとラウンド鍵のEXOR信号で選択する。この構成で、DPA攻撃の対象となるリークには3種類ある。
【0014】
1つ目は、ハミングディスタンス1(Hamming Distance1:HD1)と呼ばれるリークである。これは、DESの1ラウンドの演算を1クロックサイクルで実行する場合に発生する。この場合、図1のレジスタ出力部のプリチャージ制御部15,16は、プリチャージ(PC)動作を行わない。
【0015】
図3は、HD1リークの時の、暗号化時の動作タイミングを示す図である。
図3において、ラウンドの切り替わりで、演算結果がレジスタに格納される時、HD1リークは、格納データと格納前のデータが異なる場合に発生し、レジスタ格納値の変化およびそのレジスタにつながる負荷配線の充放電電流に起因する電流が原因である。
図3で、暗号化演算で対象となる演算式は以下の式である。は排他的論理和演算(EXOR演算)を示す。
【0016】
[数1]
R1 R0 =F(R0 ,K1 ) L0 R0 ・・・(1)
R14 R15=F(R15,K16) R16 L16 ・・・(2)
【0017】
2つ目は、ハミング重み(Hamming Weight:HW)と呼ばれるリークである。1ラウンドの演算を、信号線を固定値に設定するプリチャージ相(Pre Charge Phase、休止相)と、演算結果を出力するサイクルであるエバリュエーション相(Evaluation Phase、稼動相)で構成する場合に発生する。
【0018】
図4は、たとえば、プリチャージ相の固定値を“0”とした場合について、暗号化時のタイミングを示す図である。
【0019】
図4において、プリチャージ相では全てのレジスタ配線は“0”に設定されている。そして、エバリュエーション相に遷移した時、レジスタの出力配線で、レジスタ格納値が“1”の場合のみ充電電流が流れる。そして、このラウンドが終了してプリチャージ相に遷移する時、同じビットで今度は放電電流が流れ、これらがリーク電流として攻撃の対象となる。暗号化演算で対象となる演算式は以下の式である。
【0020】
[数2]
R1 =F(R0, K1) L0 ・・・(3)
R14=F(R15,K16) R16 ・・・(4)
【0021】
3つ目は、ハミングディスタンス2(Hamming Distance2:HD2)と呼ばれるリークである。タイミング制御はHWの場合と同じであるが、リークの発生箇所がレジスタとその出力信号線ではなく、F関数の出力およびF関数の先のEXOR回路の出力で発生する。
プリチャージ相では、LレジスタおよびRレジスタの出力配線は固定値、たとえば“0”に設定され、これに伴って、F関数の出力およびその先のEXOR回路の出力も固定値“0”を出力しているものとする。
エバリュエーション相に遷移すると、LレジスタとRレジスタの出力配線は各々のレジスタの格納値“Ln-1”,“Rn-1”に遷移し、この時、レジスタの出力配線では、前述のHWリークが発生する。
【0022】
F関数の出力は演算結果が確定するまでは固定値“0”の状態で、その先のEXOR回路の出力はLレジスタの値“Ln-1”に遷移する。このとき、EXOR演算部の出力で“Ln-1”のHWリークが発生する。そして、F関数の演算遅延時間経過以後、F関数の出力は固定値“0”から演算結果“F(Rn-1,Kn)”に遷移し、この時F関数出力で HW(Hamming Weight)に起因するリーク電流が流れる。
そして、F関数出力の変化によって、その先のEXOR演算部18の出力は“Ln-1”から“F(Rn-1,Kn)Ln-1”すなわち“Rn”に遷移し、この時 “F(Rn-1,Kn)”に相当する Hamming Distance に起因するリーク電流が流れる。
この2つは共に式“F(Rn-1,Kn)”で表わされるリークであり、これはF関数の演算結果であるが、一方で“Ln-1 Rn=Rn-2 Rn”とも表わせ、このリーク電流は2ラウンド間の遷移に相当するため、HD2と称される。暗号化演算で攻撃の対象となるHD2の演算式は以下となる。
【0023】
[数3]
L2 L0 =F(R0, K1) ・・・(5)
R16 R14=F(L16,K16) ・・・(6)
【0024】
これらのリーク電流に対して、DPA攻撃を行えば、鍵が取り出される可能性がある。この攻撃を阻止するために様々な方法が提案されている。対策方法は大きく分けて、以下の2つに分けられる。
第1に相補構成により、相補回路の一方で信号変化が必ず起こる構成である。
第2に乱数マスクにより、信号変化を攪乱する構成である。
【先行技術文献】
【特許文献】
【0025】
【特許文献1】特開2004−347975号公報
【特許文献2】USP6,295,606
【発明の概要】
【発明が解決しようとする課題】
【0026】
しかし、上記第1の相補構成は、相補となる2つの回路の配線負荷容量に差異があると、その差異に起因するリーク電流が流れて依然攻撃の対象となり、相補となる配線容量を揃えるための工夫が必要となる。
第2の乱数マスクは、1st order の攻撃に対しては効果があるが、高次の攻撃に対しては必ずしも完全にリークが抑えられる訳ではなく、高次の攻撃に対してもリーク電流を抑える工夫が必要となる。
【0027】
本発明は、HD2リークをなくし、DPA対策および検証をレジスタ並びにその出力信号に対してのみ行えば良く、電力解析に対する耐性を向上させることが可能な暗号処理装置を提供することにある。
【課題を解決するための手段】
【0028】
本発明の観点の暗号処理装置は、演算用データを格納する第1レジスタと、演算用データを格納する第2レジスタと、非線形変換部としてSboxを有し、上記第2レジスタの格納値に対してラウンド演算を行うラウンド演算部と、上記第1レジスタの格納値に対して逆置換を行い、逆置換した値を上記Sboxに出力する逆置換部と、を有し、上記Sboxは、Sboxテーブル値と上記逆置換された上記第1レジスタの値との排他的論理和演算した値を入力として非線形変換処理を行い、上記ラウンド演算部は、ラウンド演算結果を上記第2レジスタに出力する。
【発明の効果】
【0029】
本発明によれば、HD2リークをなくし、DPA対策および検証をレジスタ並びにその出力信号に対してのみ行えば良く、電力解析に対する耐性を向上させることができる。
【図面の簡単な説明】
【0030】
【図1】DES演算回路の構成を示す図である。
【図2】Sboxの構成例を示す図である。
【図3】HD1リークの時の、暗号化時の動作タイミングを示す図である。
【図4】プリチャージ相の固定値を“0”とした場合について、暗号化時のタイミングを示す図である。
【図5】本発明の実施形態の一比較例として説明する暗号処理装置としてのDES演算回路の構成例を示す図である。
【図6】図5のDES演算回路のSboxの構成例を示す図である。
【図7】図5のDES演算回路の動作を説明するためのタイミングチャートである。
【図8】本発明の第1の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
【図9】図8のDES演算回路のSboxの構成例を示す図である。
【図10】第1の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。
【図11】本発明の第2の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
【図12】図11のDES演算回路のSboxの構成例を示す図である。
【図13】第2の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。
【図14】本発明の構成が適用可能な暗号処理実行デバイスとしてのICモジュールの構成例を示す図である。
【発明を実施するための形態】
【0031】
以下、本発明の実施形態を図面に関連付けて詳細について説明する。
なお、説明は以下の順序で行う。
1.比較例(乱数マスクを施したDES演算回路の構成例)
2.第1の実施形態(DES演算回路の第1の構成例)
3.第2の実施形態(DES演算回路の第2の構成例)
【0032】
<1.比較例>
まず、本発明の実施形態の比較例について説明する。
比較例においては、HD2リークに対する対策として、乱数マスクを施した対策について説明する。
【0033】
図5は、本発明の実施形態の一比較例として説明する暗号処理装置としてのDES演算回路の構成例を示す図である。
図6は、図5のDES演算回路のSboxの構成例を示す図である。
【0034】
このDES演算回路100は、初期置換部[IP(Initial Permutation)部]101、スイッチ102L,102R、第1レジスタとしてのLレジスタ(L Reg.)103、および第2レジスタとしてのRレジスタ(R Reg.)104を有する。
DES演算回路100は、第1プリチャージ制御部(PC_CTL1)105、第2プリチャージ制御部(PC_CTL2)106、ラウンド演算部としてのF関数部107、逆置換部(IP-1)109、および暗号文出力部110を有する。
【0035】
IP置換部101の出力とLスイッチ102Lの端子aとの間に第1乱数演算部としてのEXOR演算部111が配置されている。
IP置換部101の出力とRスイッチ102Rの端子aとの間に第2乱数演算部としてのEXOR演算部112が配置されている。
F関数部107のEXOR演算部1072の鍵Knの供給側に第4乱数演算部としてのEXOR演算部113が配置されている。
逆置換部(IP-1)109の入力側に乱数解除部としてのEXOR演算部115,116が配置されている。
Lレジスタ103の値とF関数部107の出力とのEXOR演算を行うEXOR演算部117が配置されている。
また、Sboxテーブル値と乱数“rSn-1”とのEXOR演算を行うEXOR演算部118が配置されている。
【0036】
次に、図5のDES演算回路の暗号化演算動作について、図7に関連付けて説明する。
図7は、図5のDES演算回路の動作を説明するためのタイミングチャートである。
【0037】
この例では、レジスタのデータは異なる乱数でマスクされる。たとえば、Lレジスタ103のデータは乱数“rLn-1”で、Rレジスタ104のデータは乱数“rRn-1”でマスクされる。
この乱数は、この例ではF関数部107のEXOR演算部1072でラウンド鍵とのEXOR演算後に解除されてSbox1073に入力され、Sboxで別の乱数、たとえば“rSn-1”でマスクされてF関数部107の出力となる。
Sbox1073でのマスクは、BDDの入力信号として、Sboxテーブル値の代わりにSboxテーブル値と乱数値“rSn-1”のEXOR信号を用いることによって行っている。
【0038】
回路動作は、プリチャージ相ではLレジスタ103およびRレジスタ104の出力は固定値、たとえば“0”に固定され、F関数部107の出力も演算結果として“0”を出力しているものとする。
エバリュエーション相に移行して、Lレジスタ103の出力配線は“rLn-1 Ln-1”に、Rレジスタ104の出力配線は“rRn-1 Rn-1”に遷移する。
遷移直後は、F関数部107の出力は“0”のままで、F関数部107の出力側のEXOR演算部117の出力はLレジスタ103の出力値“rLn-1 Ln-1”に遷移する。
F関数の演算遅延時間経過後、F関数部107の出力は“rSn-1 F(Rn-1,Kn)”に遷移する。
これに伴って、EXOR演算部117の出力も“(rLn-1 Ln-1) (rSn-1 F(Rn-1,Kn))=rLn-1 rSn-1 Rn”に遷移する。
そして、次のラウンドのRレジスタの攪乱値を“rRn=rLn-1 rSn-1”とすると、Rレジスタの更新値“rR Rn”を生成する。
このときのEXOR演算部117の出力でのHD(Hamming Distance)は“rSn-1 F(Rn-1,Kn)”である。
F関数部107の出力のHWリークおよびEXOR演算部117の出力のHDリークは共にHD2リークであるが、共に乱数“rSn-1”でマスクされているため、1次のDPA攻撃では鍵の取り出しは困難である。ただし、高次のDPA攻撃を用いれば、鍵の取り出しに成功する可能性がある。
【0039】
以上、乱数マスクを施したDES演算回路を比較例として説明した。
次に、本実施形態に係るDES演算回路の好適な構成例について説明する。
【0040】
本実施形態の暗号処理装置は、HD2リーク源となるF関数の演算結果を信号配線に出力しない構成を採用することによって、HD2リークをなくし、DPA対策および検証をレジスタおよびその出力信号に対してのみ行えばよい構成が実現されている。
具体的には、本実施形態の暗号処理装置は、Sboxの回路設計に当たって、Sboxのテーブル値の代わりに、以下の値を用いる。
第1に、暗号化時にはSboxのテーブル値とLレジスタの値のEXOR値を用いる。
第2に、復号化時にはSboxのテーブル値とRレジスタの値のEXOR値を用いる。
換言すれば、F関数部の出力値とレジスタ値とのEXOR演算をF関数内に取り込む。
そして、F関数部の出力は、Lレジスタの値とEXOR演算すること無くそのままRレジスタの入力に供給する。
なお、以下に説明する第1および第2の実施形態とも、1ラウンド(Round)の演算サイクルはプリチャージ相(Pre-Charge Phase:休止相)とエバリュエーション相(Evaluation Phase:稼動相)により構成される。
また、DES暗号は16ラウンド(Round)の演算で形成される。
【0041】
<2.第1の実施形態>
図8は、本発明の第1の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
図9は、図8のDES演算回路のSboxの構成例を示す図である。
なお、図8においては、理解を容易にするために、図5の構成と同一構成部分は同一符号をもって表している。
【0042】
本DES演算回路100Aは、初期置換部[IP(Initial Permutation)部]101、スイッチ102L,102R、第1レジスタとしてのLレジスタ(L Reg.)103、および第2レジスタとしてのRレジスタ(R Reg.)104を有する。
DES演算回路100Aは、第1プリチャージ制御部(PC_CTL1)105、第2プリチャージ制御部(PC_CTL2)106、ラウンド演算部としてのF関数部107、逆P置換部108、逆置換部(IP-1)109、および暗号文出力部110を有する。
【0043】
このような特徴を有する図8のDES演算回路100Aの構成および機能ついて具体的に説明する。
【0044】
IP置換部101は、メッセージを形成する平文に対してIP置換処理を施し、処理後のデータをスイッチ102L、102Rを介してLレジスタ103およびRレジスタ104に出力する。
【0045】
スイッチ102Lの作動接点aはIP置換部101の出力に接続され、作動接点bは第2プリチャージ制御部106の出力および逆置換部109に接続され、固定接点cがLレジスタ103の入力に接続されている。
スイッチ102Rの作動接点aはIP置換部101の出力に接続され、作動接点bはF関数部107の出力および逆置換部109に接続され、固定接点cはRレジスタ104の入力に接続されている。
【0046】
Lレジスタ103は、制御クロックの立ち上がりのタイミングで、スイッチ102Lを介して入力した、たとえば32ビットのデータをラッチ(格納)する。
【0047】
Rレジスタ104は、制御クロックの立ち上がりのタイミングで、スイッチ102Rを介して入力した、たとえば32ビットのデータをラッチ(格納)する。
【0048】
第1プリチャージ制御部105は、Lレジスタ103にラッチされたデータの出力を制御信号によって制御する。
第1プリチャージ制御部105は、プリチャージ相時には、Lレジスタ103の出力信号線を全てローレベルに設定する。
第1プリチャージ制御部105は、エバリュエーション相時には、Lレジスタ103の格納データLn−1を逆P置換部108に出力する。
【0049】
第2プリチャージ制御部106は、Rレジスタ104にラッチされたデータの出力を制御信号によって制御する。
第2プリチャージ制御部106は、プリチャージ相時には、Rレジスタ104の出力信号線を全てローレベルに設定する。
第2プリチャージ制御部106は、エバリュエーション相時には、Rレジスタ104の格納データRn−1をF関数部107に出力する。
【0050】
F関数部107は、第2プリチャージ制御部106によるRレジスタ104の格納データに対して、鍵Knを用いたF関数の演算を行う。
【0051】
F関数部107の構成を図8および図9に関連付けて説明する。
【0052】
F関数部107は、図8に示すように、拡張部1071、EXOR演算部1072、Sbox1073、およびP置換部1074を有する。
【0053】
拡張部1071は、第2プリチャージ制御部106による32ビットデータに対する拡張処理(ビット拡張処理)を行い、32ビットから48ビットに拡張処理後のデータをEXOR演算部1072に供給する。
【0054】
EXOR演算部1072は、拡張部1071の出力データとラウンド鍵(拡張ビットと同じビット数)KnとのEXOR(排他的論理和)演算を行い、演算結果をSbox1073に出力する。
【0055】
Sbox1073は、EXOR演算部1072の演算結果に対して、逆P置換部108によるデータを用いて非線形変換処理を行う。
Sbox1073は、たとえば変換テーブルを適用した48ビットから32ビットへの非線形処理を実行する。
Sbox1073は、非線形処理を実行する複数(図8では8)のSボックス(Sbox)S〜Sを有する。各SボックスS〜Sでは、変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
SボックスS〜Sからの出力ビット4×8=32ビットは、置換部1074に入力される。
【0056】
図9は、サブSboxS0について示している。
図9の構成はBDD(Binary Decision Diagram)と呼ばれる構成で、スイッチ回路10731がピラミッド状に配置されている。
各スイッチ回路10731の入力が仕様で定義されているテーブルに基づいて結線され、これを4個並べることによりサブSboxS0が構成される。
本実施形態のSbox1073は、テーブル値と逆P置換部108によるデータとのEXOR演算を行う複数のEXOR演算器を含むEXOR演算器群10732を有する。
【0057】
置換部1074は、Sbox107の出力データのビット位置の入れ替え処理を行い、その結果を32ビットのデータとして出力する。
【0058】
このように、本第1の実施形態においては、F関数部107で暗号化時にはSbox1073のテーブル値とLレジスタ103の値のEXOR値を用いる。
すなわち、本第1の実施形態においては、F関数部107の出力値とレジスタ値とのEXOR演算をF関数内に取り込んでいる。
そして、本実施形態においては、F関数部107の出力は、Lレジスタ103の値とEXOR演算すること無くそのままRレジスタ104の入力に供給する。
【0059】
逆置換部109では、データの逆置換変換(IP-1)を実行し、暗号文出力部110を介して暗号文として出力する。
【0060】
次に、第1の実施形態に係るDES演算回路の暗号化演算動作について、図10に関連付けて説明する。
図10は、第1の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。
【0061】
本第1の実施形態では、Sbox1073の出力とLレジスタ103の値のEXOR演算回路(図1)が削除され、Lレジスタ103の値はF関数部107のP置換の逆置換(P-1 置換)をされてSbox1073に入力されるだけになる。
そして、Sbox1073の出力はP置換された後、そのままRレジスタ104の入力に供給される。
Sbox1073は、BDD構成の場合について図示しているが、前述した比較例として説明した乱数マスク対策において乱数を入力していた信号入力の代わりに、P-1 置換を行ったLレジスタの値が入力される構成になっている。
【0062】
すなわち、Sbox1073の各ビットのBDDでは、本来Sboxのテーブル値が入力される信号入力に、Sboxのテーブル値とそのSboxビットに対応するLレジスタ103の値とのEXORされた信号が入力されている。
すなわち、BDD入力の段階で、入力値は既にLレジスタ103の値とEXORされた値になっている。
これらの入力は、拡張データとラウンド鍵のEXOR信号によって順次選択されていって最終的なSbox1073の出力を得るが、BDDの入力は全て対応するLレジスタ103の値とEXOR演算された値である。
このため、最終的に選択された出力も対応するLレジスタ103の値とEXOR演算された値となっている。
したがって、この出力値はP置換された後、そのラウンドの演算結果としてRレジスタ104に供給される。
この過程で、HD2リークの対象となる“F(Rn-1,Kn)”はどこにも現れない。
【0063】
動作タイミングは、前述したように、各ラウンドがプリチャージ相とエバリュエーション相で構成されているものとして説明する。
【0064】
プリチャージ相のクロックCLKの立ち上がりでレジスタ値が更新されるが、レジスタの出力配線はローレベルに制御され、これにより、Sbox1073の出力もローレベルとなる。
エバリュエーション相でLレジスタ103の値は出力線を経由してSbox1073に供給され、Sbox1073のテーブル値とEXORされてBDD構成のSbox1073に入力される。
同時に、Rレジスタ104の値はF関数部107に入力され、拡張関数および鍵とのEXOR演算の遅延後にSboxの選択信号として供給される。
この回路遅延により、Sbox1073の選択信号が供給されるまでに、BDD構成のSboxの入力は確定している。
そして、Sbox1073の出力は、ローレベルから、Sbox1073の選択信号によって選択された信号、すなわち、“F(Rn-1,Kn) Ln-1”に遷移し、図1の回路のSboxの出力値である“F(Rn-1,Kn)”は信号線上に現れない。
そして、この値はそのままRレジスタ104に入力に供給されるため、演算回路の信号パスのどこにもHD2攻撃の対象となる“F(Rn-1,Kn)”は現れず、HD2攻撃は不可能となる。
【0065】
代わりに、同じタイミングでRレジスタの格納値“Rn”が現れ、これはHWの攻撃の対象となるリークである。
しかし、DPA対策として、レジスタ格納値に対するHW対策は必須であり、たとえば前述の乱数攪乱対策を採ってレジスタ格納値を攪乱すれば、本実施形態の構成のF関数部の出力も乱数攪乱された値となり、同じ対策が作用してHWリークを抑えられる。
【0066】
以上説明したように、本第1の実施形態によれば、HD2リークが発生しないため、HD2攻撃で鍵が取り出される可能性はなくなる。
そして、HD2に対する対策を考慮する必要はなくなる。
【0067】
<3.第2の実施形態>
次に、本発明の第2の実施形態について説明する。
図11は、本発明の第2の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
図12は、図11のDES演算回路のSboxの構成例を示す図である。
なお、図11および図12においては、理解を容易にするために、図8および図9と同一構成、機能部分は同一符号をもって表している。
【0068】
本第2の実施形態に係るDES演算回路100Bが、図8および図9に示す第1の実施形態に係るDES演算回路100Aと異なる点は、レジスタ格納値が乱数攪乱されている点にある。
DES演算回路100BとDES演算回路100Aの回路構成における具体的な差異は次の通りである。
【0069】
IP置換部101の出力とLスイッチ102Lの端子aとの間に第1乱数演算部としてのEXOR演算部111が配置されている。
IP置換部101の出力とRスイッチ102Rの端子aとの間に第2乱数演算部としてのEXOR演算部112が配置されている。
F関数部107のEXOR演算部1072の鍵Knの供給側に第4乱数演算部としてのEXOR演算部113が配置されている。
Sbox1073の逆P置換部108の出力データの供給側に逆P置換部108の出力とデータP-1(rSn-1)とのEXOR演算を行う第3乱数演算部としてのEXOR演算部114が配置されている。
逆置換部(IP-1)109の入力側に乱数解除部としてのEXOR演算部115,116が配置されている。
【0070】
次に、第2の実施形態に係るDES演算回路の暗号化演算動作について、図13に関連付けて説明する。
図13は、第2の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。
【0071】
入力平文はIP置換部101においてIP置換後、左(Left)データと右(Right)データに分けられ、EXOR演算部111,112で各々乱数“rL0”,“rR0”とEXOR演算後にLレジスタ103,Rレジスタ104に取り込まれる。
以後、nラウンドにおいて、Lレジスタ103とRレジスタ104に格納されている値に関する乱数成分を各々“rLn-1”と“rRn-1”と表わすことにする。
すなわち、Rレジスタ104の格納値は“rRn-1 Rn-1”、Lレジスタ103の格納値は“rLn-1 Ln-1”となる。
【0072】
そして、この例では、ラウンド鍵がRレジスタ104の乱数“rRn-1”と同じ乱数でEXOR演算部113において、EXORされてF関数に供給されるものとする。
これにより、F関数部107に入力されたRレジスタ104の値“rRn-1 Rn-1”は、ラウンド鍵とのEXOR演算で乱数“rRn-1”を解除されてSbox1073に入力される。
Sbox1073で新たな乱数“rSn-1”で攪乱される制御がなされるとした場合、次のようになる。
Lレジスタ103の値“rLn-1 Ln-1”はP-1 置換された後P-1 置換された乱数“P-1(rSn-1)”とEXOR演算部114でEXORされてSbox1073に供給され、Sbox1073のテーブル値とEXOR演算後にBDDの入力に供給される。
この時、BDDの入力値は、Sbox1073のテーブル値と“P-1(rSn-1 rLn-1 Ln-1)”のEORした値となる。
【0073】
拡張データとラウンド鍵のEXOR結果によって選択されたSbox1073の出力は“rSn-1 rLn-1 F(Rn-1,Kn) Ln-1=rRn Rn”となって、新たな乱数“rRn(=rSn-1 rLn-1)”で攪乱された状態でRレジスタ104に供給される。
この過程で、HD2攻撃の対象となる、乱数攪乱されたF関数出力値“rSn-1 F(Rn-1,Kn)”はどこにも現れない。
【0074】
なお、第2乱数演算部としてのEXOR演算部112と第4乱数演算部としてのEXOR演算部113は、最初のラウンドのみ同じ乱数を用いた排他的論理和演算を行う。
続くラウンド以降では、第4乱数演算部としてのEXOR演算部113の乱数は更新されるが、第2乱数演算部としてのEXOR演算部112の乱数値は変化しない。
【0075】
以上説明したように、本実施形態によれば、HD2リークが発生しないため、HD2攻撃で鍵が取り出される可能性はなくなる。
また、HD2に対する対策を考慮する必要はなくなる。
そして、DPA耐性が向上する。
【0076】
ここで、上述の暗号処理を実行するデバイスとしてのICモジュール200の構成例を図14に関連付けて説明する。
上述の処理は、たとえばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図14に示すICモジュール200は、これら様々な機器に構成することが可能である。
【0077】
図14において、CPU(Central Processing Unit)201は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。
メモリ202は、CPU201が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)を含む。
また、メモリ202は、CPU201の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。
また、メモリ202は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【0078】
暗号処理部203は、たとえば上述したDESアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置である。
すなわち、暗号処理部203には、第1および第2の実施形態に係るDES演算回路が適用される。
【0079】
送受信部204は、外部とのデータ通信を実行するデータ通信処理部であり、たとえばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【0080】
なお、暗号処理部203において適用される各種の制御信号、たとえば前述したスイッチの切り替え制御信号は、クロック生成回路205からのクロック信号をトリガにして動作するタイミング発生回路206において生成する。そして、生成した信号を暗号処理部203に供給することが可能である。
【0081】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。
【符号の説明】
【0082】
100A,100B・・・DES演算回路、101・・・初期置換部[IP(Initial Permutation)部]、102L,102R・・・スイッチ、103・・・Lレジスタ、104・・・Rレジスタ、105・・・第1プリチャージ制御部(PC_CTL1)、106・・・第2プリチャージ制御部(PC_CTL2)、107・・・F関数部、108・・・逆P置換部、109・・・逆置換部(IP-1)、110・・・暗号文出力部。

【特許請求の範囲】
【請求項1】
演算用データを格納する第1レジスタと、
演算用データを格納する第2レジスタと、
非線形変換部としてSboxを有し、上記第2レジスタの格納値に対してラウンド演算を行うラウンド演算部と、
上記第1レジスタの格納値に対して逆置換を行い、逆置換した値を上記Sboxに出力する逆置換部と、を有し、
上記Sboxは、
Sboxテーブル値と上記逆置換された上記第1レジスタの値との排他的論理和演算した値を入力として非線形変換処理を行い、
上記ラウンド演算部は、
ラウンド演算結果を上記第2レジスタに出力する
暗号処理装置。
【請求項2】
上記ラウンド演算部は、
上記第2レジスタの格納値データのビットを拡張する拡張部と、
上記拡張部の拡張データと鍵との排他的論理和演算を行い、当該演算結果を上記Sboxに供給する排他的論理和演算部と、
上記Sboxの非線形変換結果のビット位置の入れ替え処理を行う置換部と、を含む
請求項1記載の暗号処理装置。
【請求項3】
上記第1レジスタに入力平文を乱数攪乱した値を格納する第1乱数演算部と、
上記第2レジスタに入力平文を乱数攪乱した値を格納する第2乱数演算部と、
上記逆置換部の出力を乱数攪乱して上記Sboxに供給する第3乱数演算部と、
上記鍵を乱数攪乱して上記ラウンド演算部の上記排他的論理和演算部に供給する第4乱数演算部と、を有する
請求項2記載の暗号処理装置。
【請求項4】
上記第1および第2乱数演算部は、
入力平文と乱数との排他的論理和演算を行い、
上記第3乱数演算部は、
上記逆置換部の出力と乱数との排他的論理和演算を行い、
上記第4乱数演算部は、
上記鍵と乱数との排他的論理和演算を行う
請求項3記載の暗号処理装置。
【請求項5】
上記第2乱数演算部と上記第4乱数演算部は、
最初のラウンドのみ同じ乱数を用いた排他的論理和演算を行う
請求項4記載の暗号処理装置。
【請求項6】
出力する演算結果と乱数との排他的論理和演算を行って乱数を解除する乱数解除部を有する
請求項4または5記載の暗号処理装置。
【請求項7】
1ラウンドはプリチャージ相とエバリュエーション相により形成される
請求項1から6のいずれか一に記載の暗号処理装置。
【請求項8】
前記暗号処理装置は、DES(Data Encryption Standard)アルゴリズムに従った暗号処理演算を実行する
請求項1から7のいずれか一に記載の暗号処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2011−2790(P2011−2790A)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2009−148044(P2009−148044)
【出願日】平成21年6月22日(2009.6.22)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】