説明

暗号処理装置

【課題】セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えることが可能な暗号処理装置を提供する。
【解決手段】複数の演算ブロックを含み、暗号演算を電源電圧レベルと基準電位レベル間でデータを遷移させ、演算によるデータの遷移を休止相と稼動相の2相で行う演算回路100と、電源電圧と基準電圧の中間の電圧を生成する電圧生成部200と、休止相では演算ブロック間の信号バスを上記電圧生成部に接続し、稼動相では信号バスを演算ブロックの出力に接続する出力制御部105,106,109,111,114とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理装置に関し、さらに詳細には、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関するものである。
【背景技術】
【0002】
ICカードや携帯電話に搭載された電子マネー機能は、決裁処理時にホストコンピュータとデータをセキュアにやり取りするために、暗号エンジンを搭載し、データを暗号化して通信している。
【0003】
具体的には、電子マネー端末とホストコンピュータが同じ鍵を共有し、一方でデータを暗号化した値を、ネットワークを介して他方に送り、他方では暗号化されたデータを受け取った後、同じ鍵で復号化してデータを取得する。
ネットワーク上のデータを悪意の第三者に取得されても、鍵が分からない限りは送付データを取得することができず、これによりデータを安全にやり取りできる。
【0004】
しかし、ICカードや携帯電話に搭載された暗号エンジンを含むLSIに対して、その消費電流を統計処理して鍵を取り出す「DPA(Differential Power Analysis:電力差分解析)攻撃」と呼ばれる攻撃方法があり、脅威となっている。
【0005】
DPA攻撃の脅威は、攻撃に際して電流測定用の抵抗を外部電源の電源端とLSIの電源端または外部電源のGND端とLSIのGND端の間に挿入して行うことができる点にある。
そして、DPA攻撃においては、LSIの電源端またはGND端が動作電流によって若干変動するだけで、それ以外は通常のCPUからの命令の処理と同じであるため、演算回路は攻撃されていることを検知する術がない。
【0006】
DPA攻撃には、複数のメッセージに対して暗号化処理を行ってその消費電流波形を取得し、鍵を推定して消費電流波形を統計処理することによって鍵の取り出しを行う攻撃方法である。
【0007】
このDPA攻撃に対処するための方法としては、鍵に起因する回路動作による電流発生を抑えたり、消費電流の統計処理を困難にする方法を盛り込むことが一般的に行われる。
このDPA対策には大きく分けて以下の3種類があり、これらの対策のうちの1つまたは1つ以上が選択されて搭載される。
<1>論理対策、
<2>タイミング対策、
<3>電流対策。
【0008】
これらの中で、DPA攻撃に対して最も耐性のあるのは<1>の論理対策である。通常は論理対策<1>に補助的にタイミング対策<2>や電流対策<3>を組み合わせてDPA対策とする。
【0009】
論理対策<1>の方法としては、たとえば特許文献1に開示された技術が知られている。
この技術では、1bit のデータをハミング重み(Hamming Weight)の等しい2bitの数値に展開する。そして、演算によるデータの遷移は、稼動相と休止相の2相を設けて、一旦“0”でも“1”でもない状態に遷移してから演算後のデータに遷移する制御を行うことによって、演算値の遷移に伴う変化電流の検出を困難にしている。
【0010】
具体的には、たとえばデータ“0”を “01”、データ“1”を“10”として暗号演算を実行する。そして、ラウンド(Round)演算によってデータが変化する場合、たとえば一端“00”に遷移してから演算後のデータに遷移する。
すなわち、遷移を以下のように表わせば、演算に基づく各ビットの遷移は 演算結果によらず必ず1ビットとなり、変化電流からの鍵の取り出しは困難となる。
【0011】
[稼動] [休止] [稼動]
“0”→“0”の遷移:“01”→“00”→“01”
“0”→“1”の遷移:“01”→“00”→“10”
“1”→“0”の遷移:“10”→“00”→“01”
“1”→“1”の遷移:“10”→“00”→“10”
【特許文献1】特開2004−347975号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
しかし、特許文献1に開示された方式の場合、本来各々1ビットの演算処理を各々2ビットで処理する必要があるため、回路規模および消費電流は2倍かそれ以上となる。
また、拡張した2ビットの配線等の付加容量に差があると、各ビットの充放電電流に差異が発生し、DPA攻撃が可能となってしまう。
【0013】
本発明の目的は、セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えることが可能な暗号処理装置を提供することにある。
【課題を解決するための手段】
【0014】
本発明の第1の観点の暗号処理装置は、複数の演算ブロックを含み、暗号演算を電源電圧レベルと基準電位レベル間でデータを遷移させ、当該演算によるデータの遷移を休止相と稼動相の2相で行う演算回路と、電源電圧と基準電圧の中間の電圧を生成する電圧生成部と、上記休止相では上記演算ブロック間の信号バスを上記電圧生成部に接続し、上記稼動相では上記信号バスを演算ブロックの出力に接続する出力制御部とを有する。
【0015】
好適には、上記電圧生成部は、電源電圧と基準電圧の中間の電圧を発生する中間電圧発生部を含み、上記出力制御部は、上記休止相では上記演算ブロック間の信号バスを上記中間電圧発生部の中間電圧の供給ラインに接続する。
【0016】
好適には、上記電圧生成部は、フローティング状態となる配線を含み、上記出力制御部は、上記休止相では上記演算ブロック間の信号バスを上記配線に接続しショートさせる。
【0017】
好適には、上記出力制御部は、出力端子と上記演算ブロックの出力との間に接続され、制御信号によりオン、オフされる第1スイッチと、上記出力端子と上記電圧生成部との間に接続され、制御信号により上記第1スイッチと相補的にオン、オフされる第2スイッチと、を含み、休止相を示す制御信号が供給されると上記第1スイッチがオフし、上記第2スイッチがオンし、稼動相を示す制御信号が供給されると上記第1スイッチがオンし、上記第2スイッチがオフする。
【0018】
好適には、上記演算回路は、取り込み信号に同期してラウンド演算用データを格納する第1レジスタと、上記取り込み信号に同期して論理演算部の演算結果を格納する第2レジスタと、演算部を含み、上記第1レジスタに格納されたデータに応じたラウンド演算を行うラウンド演算部と、を含み、上記出力制御部は、上記第1レジスタ、上記第2レジスタ、上記演算部の出力側のうち、少なくとも一つの出力側に配置されている。
【0019】
好適には、前記ラウンド演算部は、非線形変換部としてのSボックスを有し、当該Sボックスの出力側に出力制御部が配置され、前記第1レジスタおよび第2レジスタは、前記Sボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する。
【発明の効果】
【0020】
本発明によれば、セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えることができる。
【発明を実施するための最良の形態】
【0021】
以下、本発明の実施形態を図面に関連付けて詳細について説明する。
【0022】
図1は、本発明の第1の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
【0023】
本DES演算回路100は、初期置換部[IP(Initial Permutation)]101、スイッチ(SW)102L,102R、第1レジスタとしてLレジスタ103、第2レジスタとしてのRレジスタ104、および出力制御部105,106を有する。
DES演算回路100は、拡張部107、EXOR演算部108、出力制御部109、Sbox110、出力制御部111、置換部112、EXOR演算部113、出力制御部114、逆置換部(IP-1)115、および暗号文出力部(Crypto)116を有する。
また、DES演算回路100は、出力制御部105,106,109,111,114は休止相のとき信号バスが、スイッチSWを介して中間電圧発生部200に接続された配線300に接続される。
【0024】
スイッチ102Lの作動接点aは初期置換部101の出力に接続され、作動接点bは逆置換部115および拡張部107に接続され、固定接点cがLレジスタ103の入力に接続されている。
スイッチ102Rの作動接点aは初期置換部101の出力に接続され、作動接点bは逆置換部115に接続され、固定接点cがRレジスタ104の入力の入力に接続されている。
【0025】
Lレジスタ103は、データの取り込み信号としてのラッチパルスLatに同期してスイッチ102Lを介したデータ(第1データ)Linをラッチ(格納)する。
【0026】
出力制御部105は、制御信号CTL Rの制御の下、Lレジスタ103のラッチデータをEXOR演算部113の一方の入力に供給する。
【0027】
Rレジスタ104は、データの取り込み信号としてのラッチパルスLatに同期してスイッチ102Rを介したデータ(第2データ)Rinをラッチ(格納)する。
【0028】
出力制御部106は、制御信号CTL Rの制御の下、Rレジスタ104のラッチデータを拡張部107の入力およびスイッチ102Lの接点bに供給する。
【0029】
拡張部107は、出力制御部106を介して入力したRレジスタ104のラッチデータに対する拡張処理(ビット拡張処理)を行い、拡張処理後のデータをEXOR演算部109の一方の入力に供給する。
【0030】
EXOR演算部108は、拡張部107の出力データと鍵スケジュール部117から入力する鍵(拡張ビットと同じビット数)KnとのEXOR(排他的論理和)演算を行う。
【0031】
出力制御部109は、制御信号CTL E1の制御の下、EXOR演算部108の演算結果をSbox110に供給する。
【0032】
Sbox110は、出力制御部109を介して入力したEXOR演算部108の演算結果に対して非線形処理を行う。
Sbox110は、たとえば変換テーブルを適用した48ビットから32ビットへの非線形処理を実行する。
【0033】
出力制御部111は、制御信号CTL Sの制御の下、Sbox110における非線形処理後のデータを置換部112に供給する。
【0034】
置換部112は、出力制御部111を介したSbox110の出力データのビット位置の入れ替え処理を行い、その結果をEXOR演算部113の他方の入力に供給する。
【0035】
EXOR演算部113は、出力制御部105を介したLレジスタ103のラッチデータと置換部112によるデータとのEXOR(排他的論理和)演算を行う。
【0036】
出力制御部114は、制御信号CTL E2の制御の下、EXOR演算部113の演算結果をスイッチ102Rの接点bおよび逆置換部115に供給する。
【0037】
逆置換部115では、出力制御部106を介したRレジスタ104のラッチデータと出力制御部114を介したEXOR演算部113の出力に対する逆置換変換(IP-1)を実行し、出力部116を介して暗号文として出力する。
【0038】
以上の構成を有する本実施形態のDES演算回路100は、セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えるために以下の特徴的な構成を含む。
【0039】
種々のレジスタや演算ブロック出力部を、ハイインピーダンス(High-Impedance)状態をもつ出力制御部(クロック制御回路)で構成し、各演算ブロックの出力バスは、転送(Transfer)回路を介して中間電圧の発生回路に接続されている。
回路動作は、休止相(Equalize Phase)と稼動相(Evaluation Phase)で構成され、休止相(Equalize Phase)では回路ブロック間の信号バスを中間電圧発生回路200に接続し、稼動相(Evaluation Phase)では信号バスを演算ブロックの出力に接続する制御を行う。
または、休止相(Equalize Phase)では、バスの配線300へのショートのみで、中間電圧発生回路200に接続しない構成を採る。
【0040】
以下、本実施形態におけるレジスタ、演算部と各出力制御部の構成および機能について具体的に説明する。
【0041】
本DES演算回路100においては、Lレジスタ103とRレジスタ104の出力部分に、レジスタ値出力と中間電圧発生回路の出力電圧MVcc出力との切換制御を行う出力制御部105,106が配置されている。
【0042】
図2は、レジスタとその出力制御部のスイッチ部との構成例を示す回路図である。
図3は、図2の回路のタイミングチャートである。
ここでは、Lレジスタ103、Rレジスタ104をレジスタ部として符号120を用いて表し、スイッチ部を符号130を用いて表している。
【0043】
レジスタ部120は、転送ゲートTMG121〜TMG124、インバータINV121〜INV127、および入力端子T121,T122を有する。
【0044】
転送ゲートTMG121〜TMG124は、nチャネルMOS(NMOS)トランジスタとpチャネルMOS(PMOS)トランジスタのソース・ドレイン同士が接続されて構成されている。
【0045】
転送ゲートTMG121の一方の入出力端子がレジスタのラッチデータの入力端子T122に接続され、他方の入出力端子がインバータINV121の入力および転送ゲートTMG122の一方の入出力端子に接続されている。
インバータINV121の出力が転送ゲートTMG123の一方の入出力端子およびインバータINV122の入力に接続されている。
そして、転送ゲートTMG122の他方の入出力端子がインバータINV122の出力に接続されている。
インバータINV121,INV122と転送ゲートTMG122によりマスタ部121が形成される。
【0046】
転送ゲートTMG123の他方の入出力端子がインバータINV123の入力および転送ゲートTMG124の一方の入出力端子に接続されている。
インバータINV123の出力がインバータINV124およびインバータINV126の入力に接続されている。
そして、転送ゲートTMG124の他方の入出力端子がインバータINV124の出力に接続されている。
インバータINV123,INV124と転送ゲートTMG124によりスレーブ部122が形成される。
インバータINV126の出力がインバータINV127の入力に接続されている。
【0047】
転送ゲートTMG121,TMG124のPMOSトランジスタのゲート、並びに、転送ゲートTMG122、TMG123のNMOSトランジスタのゲートが信号Latの入力端子に接続されている。
転送ゲートTMG121,TMG124のNMOSトランジスタのゲート、並びに、転送ゲートTMG122、TMG123のPMOSトランジスタのゲートがインバータINV125を介して信号Latの入力端子に接続されている。
【0048】
スイッチ部130は、転送ゲートTMG131,TMG132、インバータINV131、入力端子T131,T132、および出力端子T133を有する。
転送ゲートTMG131により第1スイッチが形成され、転送ゲートTMG132により第2スイッチが形成されている。
【0049】
転送ゲートTMG131の一方の入出力端子がレジスタ部120の出力であるインバータINV127の出力に接続され、他方の入出力端子が出力端子T133に接続されている。
転送ゲートTMG132の一方の入出力端子が中間電圧MVccの入力端子T132に接続され、他方の入出力端子が出力端子T133および転送ゲートTMG131の他方の入出力端子に接続されている。
そして、転送ゲートTMG131のNMOSトランジスタのゲートおよび転送ゲートTMG132のPMOSトランジスタのゲートが制御信号CTLの入力端子T131に接続されている。転送ゲートTMG131のPMOSトランジスタのゲートおよび転送ゲートTMG132のNMOSトランジスタのゲートがインバータINV131を介して制御信号CTLの入力端子T131に接続されている。
【0050】
図2の回路では、レジスタ部120の出力端に制御信号CTLで導通状態が制御される転送ゲートTMG131およびTMG132が配置されている。
転送ゲートTMG131は、制御信号CTLがハイレベルでレジスタ120の格納値を出力端子T133に出力する。
転送ゲートTMG132は、制御信号CTLがローレベルで中間電圧MVccを出力端子T133に出力する。
すなわち、制御信号CTLのレベルに応じて、レジスタ部120のラッチデータと中間電圧MVccの一方が出力端子T133およびその負荷に出力される。
【0051】
具体的な動作は、以下のように行われる。
【0052】
期間tにおいて、レジスタ部120の格納値は“Rn−1”であり、出力の制御信号CTLはハイレベルとなっているため転送ゲートTMG131はオン状態、転送ゲートTMG132はオフ状態となる。
これにより、レジスタ部120のスレーブ部の格納値“Rn−1”が出力端子T131から信号“Reg_out”として出力されている。これと並行して、レジスタ部120のマスタ部121には次の値“Rn”が入力されている。
【0053】
期間t1において、レジスタ部120の取込信号Latが立ち上り、レジスタ部120の入力値“Rn”がマスタ部121に保持され、この値はスレーブ部122へも伝えられる。
これと並行して、制御信号CTLが立下り、転送ゲートTMG131がオフし、転送ゲートTMG132がオンし、バスは中間電圧MVccの入力端子T132と接続される。
これにより、出力端子T133の信号“Reg_out”として中間電圧MVccが出力される。
このとき、たとえば32本のバスは全てMVccの供給ラインに接続されるが、同時に32本のバスは転送ゲートTMG131を介してショートされる。このため、この過程では下記の<1>、<2>が連続して起こる。
【0054】
<1> 各バス線は、各バス線間の電荷の再配分によって決まる電位に遷移する。
<2> 再配分電圧と中間電圧との差分が中間電圧発生回路から充電または放電される。
【0055】
このとき、上記<1>での電荷再配分は、各バス間での電荷のやり取りであるため、これに起因するリーク電流は電源端または接地端には現われない。
そして、32本のバス全体の再配分電圧と中間電圧MVccとの差分に対して、中間電圧発生回路200により充放電される。
このため、この期間での動作電流には個々のビット(bit)の値に関するものはなく、DPA攻撃は極めて困難となる。
【0056】
期間tにおいて、制御信号CTLが立ち上り、転送ゲートTMG131がオンすると同時に、転送ゲートTMG132がオフし、レジスタ部120の格納値“Rn”がバスに出力される。
このとき、レジスタ部120の値が“0”のビットはMVccからGNDへ、“1”のビットはMVccからVccへの遷移が起こり、レジスタ部120の格納値が0でも1でも遷移電流が流れる。
この2つの遷移電流が同じになるように中間電圧MVccの電圧値が設定されている場合、遷移電流はレジスタ部120の格納値にかかわらず同じ電流が必ず流れることとなり、DPA攻撃は極めて困難となる。
【0057】
期間tにおいて、レジスタ部120の取込信号Latが立ち下り、レジスタ部120のスレーブ部122の値“Rn”が保持されると同時に、レジスタ部120の次の入力値“Rn+1”がマスタ部121に取り込まれる。
スレーブ部122の値に変化はないため、レジスタ部120の出力に変化はない。
【0058】
なお、この構成では、レジスタ部120の制御信号である取込信号Latの立ち上りとレジスタ部120の出力の制御信号CLTの立ち下りは同じタイミングであるが、信号Latの立ち下りと信号CLTの立ち上りは同じタイミングとはしていない。
これは、本実施形態の構成では中間電圧MVccを用いるが、この電圧がレジスタ部120に入力されると貫通電流が流れるため、それを起こらないようにするためである。
【0059】
次に、EXOR演算部およびその出力制御部について説明する。
【0060】
図4は、EXOR演算部とその出力制御部のスイッチ部との構成例を示す回路図である。
図5は、図4の回路のタイミングチャートである。
ここでは、EXOR演算部を符号140を用いて表し、スイッチ部を符号150を用いて表している。
【0061】
EXOR演算部140は、3入力NANDゲートNA141〜NA143、2入力NANDゲートNA144、および入力端子T141,T142,T143を有する。
【0062】
NANDゲートNA141の第1入力が信号Aの入力端子T141に接続され、第2入力が制御信号CTLの入力端子T143に接続され、第3入力が信号Bの入力端子に接続されている。
NANDゲートNA142の第1入力が信号Aの入力端子T141に接続され、第2入力が制御信号CTLの入力端子T143に接続され、第3入力がNANDゲートNA141の出力に接続されている。
NANDゲートNA143の第1入力が信号Bの入力端子T142に接続され、第2入力が制御信号CTLの入力端子T143に接続され、第3入力がNANDゲートNA141の出力に接続されている。
NANDゲートNA144の第1入力がNANDゲートNA142の出力に接続され、第2入力がNANDゲートNA143の出力に接続されている。
【0063】
スイッチ部150は、転送ゲートTMG151,TMG152、インバータINV151、入力端子T151、および出力端子T152を有する。
転送ゲートTMG151により第1スイッチが形成され、転送ゲートTMG152により第2スイッチが形成される。
【0064】
転送ゲートTMG151の一方の入出力端子がEXOR演算部140の出力であるNANDゲートNA144の出力に接続され、他方の入出力端子が出力端子T152に接続されている。
転送ゲートTMG152の一方の入出力端子が中間電圧MVccの入力端子T151に接続され、他方の入出力端子が出力端子T152よび転送ゲートTMG151の他方の入出力端子に接続されている。
そして、転送ゲートTMG151のNMOSトランジスタのゲートおよび転送ゲートTMG152のPMOSトランジスタのゲートが制御信号CTLの入力端子T143に接続されている。転送ゲートTMG151のPMOSトランジスタのゲートおよび転送ゲートTMG152のNMOSトランジスタのゲートがインバータINV151を介して制御信号CTLの入力端子T143に接続されている。
【0065】
図4の回路では、EXOR演算部140の出力側に制御信号CTLで導通状態が制御される転送ゲートTMG151およびTMG152が配置されている。
転送ゲートTMG151は、制御信号CTLがハイレベルでEXOR演算部140の演算結果を出力端子T152に出力する。
転送ゲートTMG152は、制御信号CTLがローレベルで中間電圧MVccを出力端子T152に出力する。
すなわち、制御信号CTLのレベルに応じて、EXOR演算部140の演算結果と中間電圧MVccの一方が出力端子T152およびその負荷に出力される。
【0066】
具体的な動作は、以下のように行われる。
【0067】
期間t0 において、制御信号CTLがハイレベルに設定され、転送ゲートTMG151がオンして、EXOR演算部140の演算結果が出力されている。
期間t1 において、制御信号CTLがローレベルに変化すると、転送ゲートTMG151がオフし、転送ゲートTMG152がオンし、たとえば32本の出力は中間電圧の供給端子T151と接続される。
ここで32本の出力のショートも同時に起こり、電荷の再配分により決まる電位に遷移した後またはその過程で、電圧MVccから充電または放電が起こり、中間電圧MVccに収束する。
電荷の再配分ではこれに起因する動作電流は電源端子またはGND端子に現われず、MVccからの充放電は、再配分電圧とMVccとの差分に対して起こるため、この期間でのDPA攻撃も極めて困難である。
また、この期間の最初で制御信号CTLがローレベルに変化する。
本実施形態の構成では、中間電圧MVccがEXOR演算部140の入力となる場合もある。
制御信号CTLは、中間電圧入力時に、貫通電流が流れない制御を行う。制御信号CTLがローレベルの期間にEXOR演算部140の入力は次の値に変化するが、この期間は、EXOR演算部140の入力にかかわりなく出力はGNDレベルとなる。
【0068】
期間tにおいて、制御信号CTLがハイレベルに変化し、EXOR演算部の出力は次の値に変化する。
同時に、スイッチ部150の転送ゲートTMG152がオフとなり、転送ゲートTMG151がオンして、出力端子T152はEXOR演算部140の出力と接続される。
このとき、32本のEXOR出力の電圧はMVccとなっていて、EXOR演算部140の演算結果が“0”のビットはMVccからGND、演算結果が“1”の ビットはMVccからVccに変化し、EXOR演算結果にかかわらず電流が流れる。
EXOR演算結果が“0”の場合と“1”の場合の電流が同じになるように電圧MVccが設定されていれば、この期間でのDPA攻撃は極めて困難となる。
【0069】
次に、回路素子の最後として、Sboxとその出力制御部について説明する。
【0070】
Sbox110は、6ビット入力4ビット出力の Sub Sbox のテーブル8個で構成され、LSIへの実装ではROMを使う方法と、論理回路で構成する方法があり、ここでは論理回路で構成する方法について説明する。
論理回路で構成する方法にも幾つかあるが、その中でBDD( Binary Decision Diagram )を用いる方法について説明する。
【0071】
図6は、Sboxの構成を概念的に示す図である。
【0072】
BDD法はスイッチ回路160をピラミッド状に配置し、各スイッチ回路の入力をSboxテーブルに基づいて接続した構成を採り、その動作は、6ビットの入力で選択された1個のパスの値が出力される。
これを4個並べることにより6ビット入力4ビット出力の1個の Sub Sboxが構成され、これを8個並べることによりDESの変換テーブルであるSbox が構成される。
【0073】
図7は、Sboxのスイッチ回路の構成例を示す図である。
図8は、図7の回路のタイミングチャートである。
図9は、スイッチ回路の真理値表を示す図である。
【0074】
スイッチ回路160は、演算部170およびスイッチ部180を有する。
【0075】
演算部170は、2入力NANDゲートNA171、2入力NANDゲートNA172、転送ゲートTMG171、TMG172、インバータINV171、入力端子T171〜T174を有する。
【0076】
NANDゲートNA171の第1入力が選択信号SELの入力端子T171に接続され、第2入力が制御信号CTLの入力端子T174に接続され、出力がインバータINV171の入力に接続されている。
転送ゲートTMG171の一方の入出力端子が信号Aの入力端子T172に接続され、他方の入出力端子が転送ゲートTMG172の他方の入出力端子とNANDゲートNA172の第1入力に接続されている。
転送ゲートTMG172の一方の入出力端子が信号Bの入力端子T173に接続され、他方の入出力端子が転送ゲートTMG171の他方の入出力端子とNANDゲートNA172の第1入力に接続されている。
NANDゲートNA172の第2入力は制御信号CTLの入力端子T174に接続されている。
NANDゲートNA171の出力が転送ゲートTMG171のNMOSトランジスタのゲートおよび転送ゲートTMG172のPMOSトランジスタのゲートに接続されている。
インバータINV171の出力が転送ゲートTMG171のPMOSトランジスタのゲートおよび転送ゲートTMG172のNMOSトランジスタのゲートに接続されている。
【0077】
スイッチ部180は、転送ゲートTMG181,TMG182、インバータINV181、入力端子T181、および出力端子T182を有する。
転送ゲートTMG181により第1スイッチが形成され、転送ゲートTMG182により第2スイッチが形成される。
【0078】
転送ゲートTMG181の一方の入出力端子が演算部170の出力であるNANDゲートNA172の出力に接続され、他方の入出力端子が出力端子T182に接続されている。
転送ゲートTMG182の一方の入出力端子が中間電圧MVccの入力端子T181に接続され、他方の入出力端子が出力端子T182および転送ゲートTMG181の他方の入出力端子に接続されている。
そして、転送ゲートTMG181のNMOSトランジスタのゲートおよび転送ゲートTMG182のPMOSトランジスタのゲートが制御信号CTLの入力端子T174に接続されている。転送ゲートTMG181のPMOSトランジスタのゲートおよび転送ゲートTMG182のNMOSトランジスタのゲートがインバータINV181を介して制御信号CTLの入力端子T174に接続されている。
【0079】
図7の回路では、演算部170の出力側に制御信号CTLで導通状態が制御される転送ゲートTMG181およびTMG182が配置されている。
転送ゲートTMG181は、制御信号CTLがハイレベルで演算部170の選択結果を出力端子T182に出力する。
転送ゲートTMG182は、制御信号CTLがローレベル中間電圧MVccを出力端子T182出力する。
すなわち、制御信号CTLのレベルに応じて、演算部170の演算結果と中間電圧MVccの一方が出力端子T182およびその負荷に出力される。
【0080】
具体的な動作は、以下のように行われる。
図9の真理値表で、制御信号CTLがハイレベル(H)のとき、スイッチ回路160の結果は“/A”または“/B”となっていて、入力の反転信号となっている。
しかし、Sboxは6段のスイッチ回路160で構成されているため、最終的な出力は非反転の値に戻っている。
【0081】
制御信号CTLがハイレベルの期間(t0)は、入力データで選択された値が出力端子T182から信号SW_Outが出力されている。
ここで制御信号CTLがハイレベルからローレベルに遷移する時(t1)、各スイッチ回路の出力はスイッチ演算結果から切り離されて中間電圧発生回路の出力MVccに接続される。
このとき、Sbox内には数百個のスイッチ回路が存在する。
これらとSboxの出力は同時にMVccの供給ラインに接続されるが、これまでの回路と同様に、スイッチ回路の出力間のショートも同時に起こり、電荷の再配分が起こってから、再配分電圧と電圧MVccとの差分が中間電圧発生回路から供給される。
このため、この期間でのDPA攻撃は極めて困難である。
【0082】
制御信号CLTがローレベルの期間は、Sbox内のスイッチ回路の出力は全て中間電圧である“MVcc”になっている。
そして、スイッチ回路の制御信号CTLがローレベルからハイレベルに遷移したとき、スイッチ結果が “0”のビットでMVccからGND、スイッチ結果が“1”のビットではMVccからVccの変化が起こり、どちらの場合でも電流は流れる。
この電流が同じになるように電圧MVccが設定されていれば、この期間でのDPA攻撃は極めて困難になる。
実際には、Sbox 内のスイッチ回路はピラミッド状に配置されていて、スイッチ回路の出力は下側から確定していく。
【0083】
このため、同じタイミングで制御信号CTLをローレベルからハイレベルに変化させると、スイッチ回路の上側の段では2つの入力がMVccとなってしまい、貫通電流が流れる。
これを回避するために、スイッチ回路をアクティブとするタイミングを下から順番に制御する必要がある。
この場合でも、スイッチ結果が “0”のビットではMVccからGND、スイッチ結果が“1”のビットではMVccからVccの変化が起こり、どちらの場合でも電流は流れ、DPA攻撃は極めて困難となる。
【0084】
以上説明してきたように、制御信号CTLがハイレベルからローレベルに遷移するときは、各ブロックの出力が中間電圧発生回路の電圧MVccの出力に接続される。
これと並行して、各信号線のショートも起こり、まずは電源端子、GND端子に電流としては現われない信号線間での電荷の再配分が起こり、その後に再配分電圧と“MVcc”との差分に相当する電位差が充放電される。
この間、各信号線がハイレベルかローレベルかに基づく充放電電流は電源端子、GND端子には流れない。
この電圧“MVcc”の供給ラインに接続する過程で、電荷の再配分と、再配分電圧と“MVcc”との差分の充放電は、接続が同時でも充放電の方が遅れて起こることが期待されるが、電荷の再配分が十分行われる前に充放電が起こり始める可能性もある。
確実に電荷の再配分が行われた後に、“MVcc”からの充放電が行われるように、本実施形態では、図10に示すように、各回路ブロック103と105,104と106,108と109,113と114、110と111と中間電圧発生回路200の間にスイッチ回路が配置される。
そして、各回路ブロックが中間電圧発生回路200と接続する制御が行われるとき、その制御信号の少し遅延した信号で中間電圧発生回路200と接続する制御が行われるようにすれば良い。
【0085】
これらの回路ブロックを用いて構成したのが図1の回路であり、その動作タイミングを図11に示す。
【0086】
この例では、期間“t”〜“t”、すなわち2クロックで1つのラウンド(Round)を構成している。この構成には、以下の制御信号が供給されている。
【0087】
図11において、信号LatはLレジスタ103、Rレジスタ104の値の取込信号であり、信号の立ち上りで、値を対応するレジスタ内に取り込む。
【0088】
信号CTL_Rは、レジスタの出力制御信号であり、ハイレベルでレジスタの値を出力し、ローレベルで中間電圧MVccを出力する。
【0089】
信号CTL_E1はいわゆるF関数内の入力とラウンド(Round)鍵の EXOR演算部108の出力制御信号であり、ハイレベルでEXOR値を出力し、ローレベルで中間電圧MVccを出力する。
【0090】
信号CTL_S[0−5]はF関数内のSboxの演算および出力の制御信号であり、ハイレベルでSboxの値を出力し、ローレベルで中間電圧MVccを出力する。
この信号CTL_Sがハイレベルからローレベルに遷移するとSbox内のスイッチ回路は全て非アクティブでその出力はMVccとなる。
信号CTL_Sがローレベルからハイレベルに遷移するとSboxの出力は確定するが、SboxにBDD方式を用いている場合、Sboxは6段のスイッチ回路で構成されている。そして、下の段のスイッチ回路の出力が次の段のスイッチ回路の入力となっているため、立ち上りに際しては、スイッチ回路の遅延分だけ順次遅らせた6種類のタイミングで制御する。
【0091】
信号CTL_E2はF関数出力とLレジスタ103の値とのEXOR演算部113の出力制御信号であり、ハイレベルでEXOR値を出力し、ローレベルで中間電圧MVccを出力する。
【0092】
これらの制御信号を用いて、本実施形態の動作は以下のようになる。
【0093】
期間tにおいて、制御信号CTL_R,CTL_E1,CTL_S、およびCTL_E2は全てハイレベルで、各回路ブロックの各ノードはVccあるいはGNDレベルに確定している。
Lレジスタ103およびRレジスタ104には直前の値“Rn−1”,“Ln−1”が保持され、値“Rn−1”はF関数および値“Ln”としてLレジスタ103の入力に供給される。
F関数の出力は値“Ln−1”とのEXOR後に 演算結果“Rn”としてRレジスタ104の入力に供給されている。
そして、制御信号Latがローレベルであることにより、レジスタ入力の値はレジスタ部120のマスタ部121にも入力されている。
【0094】
期間tにおいて、レジスタの取込制御信号Latがハイレベルに遷移し、前のラウンド(Round)の演算結果“Rn”,“Ln”がレジスタ部120のスレーブ部122に取り込まれる。
これと並行して、制御信号CTL_R,CTL_E1,CTL_S、およびCTL_E2は全てローレベルに遷移し、レジスタ103,104、EXOR演算部108,113、Sbox110の出力は全て中間電圧発生回路200のMVccの供給ラインと接続される。 このとき、各回路ブロックの負荷は、まず信号線ショートによる電荷の再配分により、(1)各信号線の“0”,“1”比率に応じた電荷の再配分電圧に収束し、その後、(2)中間電圧MVccとの差分が 中間電圧発生回路200から充放電される。
この期間、電源端子およびGND端子に現われる電流は、(2)の電荷の再配分電圧と中間電圧MVccとの差分に対する中間電圧発生回路からの充放電電流であるため、この過程でのDPA攻撃は極めて困難である。
【0095】
期間tにおいて、レジスタ出力の制御信号CTL_Rがハイレベルに遷移する。
これに伴って、レジスタの出力はレジスタの格納値“Rn”,“Ln”に基づいて遷移するが、遷移前の電圧が中間電圧MVccであるため、Vccへの遷移でもGNDへの遷移でもどちらでも充放電電流が流れる。
この充放電電流が同じになる様に中間電圧MVccが設定されていると、この充放電電流へのDPA攻撃は極めて困難となる。
そして、この期間の動作により、VccあるいはGNDに確定した“Rn”がF関数内のラウンド(Round)鍵との EXOR演算部108、およびLレジスタ103の入力に供給され、“Ln”がF関数出力とのEXOR演算部113に供給される。
【0096】
期間tにおいて、F関数内のEXOR108、Sbox110、およびF関数直後のEXOR演算部113の制御信号CTL_E1,CTL_S、およびCTL_E2が順次ハイレベルに遷移する。
これに伴って、F関数内のEXOR演算部108、Sbox回路110、およびF関数直後のEXOR演算部113が順次アクティブとなって出力が確定して行く。この場合、何れも中間電圧MVccからVccまたはGNDへの遷移となり、どちらの遷移でも必ず充放電電流が流れ、この遷移電流へのDPA攻撃は極めて困難となる。
この期間での制御によりラウンド(Round)演算結果は確定し、“Rn+1”および“Ln+1”がRレジスタ104、Lレジスタ103の入力に供給される。
【0097】
期間tにおいて、レジスタの取込信号Latがローレベルに遷移する。
これに伴って、このラウンド(Round)の演算結果“Rn+1”と“Ln+1”はレジスタ部120のマスタ部121に入力されるが両入力とも各ビットVccまたはGNDレベルに確定しているため、レジスタ部120のマスタ部12で貫通電流が流れることは無い。
【0098】
以上説明してきたように、本実施形態においては、出力信号を中間電位に遷移させた後、次のデータの出力に遷移する制御を行う。
このことにより、中間電位への遷移では、電源端子・GND端子に動作電流として現われない「信号負荷間での電荷の再配分」がまず起こる。
その後、電荷の再配分電圧と中間電圧MVccとの差分のみが、電源端子およびGND端子に動作電流として現われる中間電圧発生回路からの充放電電流として供給される。
このため、この期間でのDPA攻撃は極めて困難である。
中間電位からの遷移では、データが“0”のビットにはMVccからGNDの放電、データが“1”のビットにはMVccからVccの充電が起こるが、どちらのデータでも必ず電流は流れる。
この放電電流と充電電流が等しくなるように、中間電圧MVccを設定しておけば、この過程でのDPA攻撃は極めて困難になる。
【0099】
次に、本発明の第2の実施形態について説明する。
図12は、本発明の第2の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
【0100】
第1の実施形態では、中間電位を発生する回路を配置し、ラウンド(Round)演算の前半のフェーズ(Phase)で、各回路ブロックの出力を切り離して中間電圧発生回路の出力に接続する。各配線間での電荷の再配分電圧と中間電圧発生回路からの充放電で所望の中間電圧MVccとし、後半のフェーズでは、中間電圧MVccから各ビットのデータに応じてGNDまたはVccに遷移させる。
そして、その放電電流と充電電流を同じにすることにより、データに関わらず同じ電流が流れる構成とし、これによりDPA攻撃を不可能としていた。
【0101】
本第2の実施形態では、ラウンド(Round)演算の前半のフェーズ(Phase)で、各回路ブロックの出力を切離してフローティング状態の配線300に対するショートのみ行い、中間電圧発生回路の出力と接続しない点が第1の実施形態と異なる。
【0102】
本第2の実施形態の構成で、配線をショートする方法は、回路ブロック単位で出力をショートする、幾つかのブロックまたは全ての回路ブロックの出力をショートする、異なるブロックの同じビットまたは複数のビットをショートする、等の構成が採用可能である。
ここでは、回路ブロック単位で出力をショートする場合について説明する。
【0103】
タイミングに関しては第1の実施形態と同じで制御可能で、図11のタイミング図、および図13、図14に関連付けて説明する。
図13は、電荷の再配分電圧と充放電電流を説明するための図である。
図14は、各ケースをグループ分けした充放電電流の加算処理結果を示す図である。
【0104】
期間t1の最初に取込制御信号Latが立ち上り、前のラウンド(Round)の演算結果がレジスタ103,104に取り込まれる。
これと並行して、制御信号CTL_R,CTL_E1,CTL_S、およびCTL_E2は全てローレベルに遷移し、レジスタ出力、EXOR演算部108,113の出力、およびSbox出力の各32ビットの信号線はその単位でショートされる。
このとき、Rレジスタ104の出力に着目すると、ショートによって各信号線間で電荷の再配分が起こり、32ビット中の“0”と“1”の比率によって決まる電圧に収束する。
Rレジスタ104のデータはF関数とLレジスタ103の入力に32ビット全てが供給されるがここで、説明を簡単にするために、各ビットの配線容量を同じ(配線容量“C”)として説明する。
このときのショートによる収束電圧は、32ビット中の“0”と“1”の比率によって図13に示すようになる。
期間t2の最初で制御信号CTL_Rがハイレベルに遷移し、レジスタ出力配線間のショートが解除されてレジスタに接続されるとき、ショート電圧からVccあるいはGNDに遷移する。
このとき、ショート電圧の値によって、Vccに遷移する場合の充電電流は色々な値となり、GNDに遷移する場合も色々な放電電流となる。そして、両電流値は、直前のデータの“0”と“1”が共に16ビットである場合を除いて異なる値を採り、レジスタのラッチデータの情報がリークするおそれがある。
しかし、個々のリーク電流は非常に小さいため、DPA攻撃するためには千個〜数十万個の電流波形を取得して、それを統計処理する必要がある。
ところが、千個〜数十万個の電流波形を取得したとき、図13の各 Case はある分布で存在し、図14に示すように、Case 0 と Case 32, Case 1 と Case 31, ・・・ Case 15 と Case 17 は同じ確率で存在する。
このとき、各組合せで充放電電流の加算を行うと、全ての組合せで充電電流と放電電流が同じとなり、統計処理を行うだけの十分な電流をそろえたとき次のようになる。
すなわち、Vccに遷移する場合とGNDに遷移する場合で統計処理後の電流は等しくなり、この電流に対するDPA攻撃は極めて困難となる。
この現象は他の回路ブロックの出力についても同じことが言え、したがって、第2の実施形態でもDPA攻撃は極めて困難となる。
【0105】
以上説明したように、本実施形態によれば、暗号演算回路において、休止相(Pre-Charge Phase)で、信号線をバス単位でイコライズして中間電圧発生回路200に接続し、あるいは信号線をショートさせる。
そして、稼動相(Evaluation Phase)で中間電位から順次VccまたはGNDへ変化させる制御を行う。
その結果、暗号演算に伴うバス線の信号変化は、VccあるいはGNDから中間Vcc、または中間VccからVccあるいはGNDへの変化となるため、データが0でも1でもほぼ同じ電流が流れる。
したがって、消費電流波形を、鍵を推定しての統計処理を行ってもリーク電流を取得することはできず、DPA攻撃は失敗する。
すなわち、DPA攻撃の対象となるリーク電流の発生が抑えられ、DPA攻撃が極めて困難となる。
【0106】
ここで、上述の暗号処理を実行するデバイスとしてのICモジュール400の構成例を図15を参照して説明する。上述の処理は、たとえばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図15に示すICモジュール400は、これら様々な機器に構成することが可能である。
【0107】
図15において、CPU(Central processing Unit)401は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述した各スイッチの切り替え制御、その他の各種プログラムを実行するプロセッサである。
メモリ402は、CPU401が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)を含む。
また、メモリ402は、CPU401の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。
また、メモリ402は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【0108】
暗号処理部403は、たとえば上述したDESアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、図1のDES演算回路100や図12のDES演算回路100Aが適用される。
【0109】
送受信部404は、外部とのデータ通信を実行するデータ通信処理部であり、たとえばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【0110】
なお、暗号処理部403において適用される各種の制御信号、たとえば前述したスイッチの切り替え制御信号は、クロック生成回路405からのクロック信号をトリガにして動作するタイミング発生回路406において生成し、暗号処理部403に供給することが可能である。
【0111】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。
【図面の簡単な説明】
【0112】
【図1】本発明の第1の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
【図2】レジスタとその出力制御部のスイッチ部との構成例を示す回路図である。
【図3】図2の回路のタイミングチャートである。
【図4】EXOR演算部とその出力制御部のスイッチ部との構成例を示す回路図である。
【図5】図4の回路のタイミングチャートである。
【図6】Sboxの構成を概念的に示す図である。
【図7】Sboxのスイッチ回路の構成例を示す図である。
【図8】図7の回路のタイミングチャートである。
【図9】スイッチ回路の真理値表を示す図である。
【図10】各回路ブロックと中間電圧発生回路の間にスイッチ回路が配置される例を示す図である。
【図11】図1の回路の動作タイミングを示す図である。
【図12】本発明の第2の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
【図13】電荷の再配分電圧と充放電電流を説明するための図である。
【図14】各ケースをグループ分けした充放電電流の加算処理結果を示す図である。
【図15】本発明の構成が適用可能な暗号処理実行デバイスとしてのICモジュールの構成例を示す図である。
【符号の説明】
【0113】
100,100A・・・DES演算回路、101・・・初期置換部[IP(Initial Permutation)]、102・・・スイッチ(SW)、102L・・・Lレジスタ側スイッチ、102R・・・Rレジスタ側スイッチ、103・・・Lレジスタ、104・・・Rレジスタ、105,106,109,111,114・・・出力制御部、107・・・拡張部、108,113・・・EXOR演算部、115・・・逆置換部(IP-1)、116・・・暗号文出力部(Crypto)。

【特許請求の範囲】
【請求項1】
複数の演算ブロックを含み、暗号演算を電源電圧レベルと基準電位レベル間でデータを遷移させ、当該演算によるデータの遷移を休止相と稼動相の2相で行う演算回路と、
電源電圧と基準電圧の中間の電圧を生成する電圧生成部と、
上記休止相では上記演算ブロック間の信号バスを上記電圧生成部に接続し、上記稼動相では上記信号バスを演算ブロックの出力に接続する出力制御部と
を有する暗号処理装置。
【請求項2】
上記電圧生成部は、
電源電圧と基準電圧の中間の電圧を発生する中間電圧発生部を含み、
上記出力制御部は、
上記休止相では上記演算ブロック間の信号バスを上記中間電圧発生部の中間電圧の供給ラインに接続する
請求項1記載の暗号処理装置。
【請求項3】
上記電圧生成部は、
フローティング状態となる配線を含み、
上記出力制御部は、
上記休止相では上記演算ブロック間の信号バスを上記配線に接続しショートさせる
請求項1記載の暗号処理装置。
【請求項4】
上記出力制御部は、
出力端子と上記演算ブロックの出力との間に接続され、制御信号によりオン、オフされる第1スイッチと、
上記出力端子と上記電圧生成部との間に接続され、制御信号により上記第1スイッチと相補的にオン、オフされる第2スイッチと、を含み、
休止相を示す制御信号が供給されると上記第1スイッチがオフし、上記第2スイッチがオンし、
稼動相を示す制御信号が供給されると上記第1スイッチがオンし、上記第2スイッチがオフする
請求項1から3のいずれか一に記載の暗号処理装置。
【請求項5】
上記演算回路は、
取り込み信号に同期してラウンド演算用データを格納する第1レジスタと、
上記取り込み信号に同期して論理演算部の演算結果を格納する第2レジスタと、
演算部を含み、上記第1レジスタに格納されたデータに応じたラウンド演算を行うラウンド演算部と、を含み、
上記出力制御部は、
上記第1レジスタ、上記第2レジスタ、上記演算部の出力側のうち、少なくとも一つの出力側に配置されている
請求項1から4のいずれか一に記載の暗号処理装置。
【請求項6】
前記ラウンド演算部は、
非線形変換部としてのSボックスを有し、当該Sボックスの出力側に出力制御部が配置され、
前記第1レジスタおよび第2レジスタは、前記Sボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する
請求項5記載の暗号処理装置。
【請求項7】
前記暗号処理装置は、
DES(Data Encryption Standard)アルゴリズムに従った暗号処理演算を実行する
請求項6記載の暗号処理装置。

【図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

【図15】
image rotate


【公開番号】特開2010−68253(P2010−68253A)
【公開日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願番号】特願2008−232681(P2008−232681)
【出願日】平成20年9月10日(2008.9.10)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】