説明

暗号処理装置及び暗号処理回路の制御方法

【課題】サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えること
【解決手段】本発明にかかる暗号処理装置は、平文又はラウンド処理結果である入力データを複数の部分データに分割する分割部と、複数の部分データのそれぞれを保持するための複数のデータ保持部と、複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する結合部と、を備え、分割部は、複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、複数の部分データのそれぞれについて、当該選択した格納先へ格納し、結合部は、分割部により選択された各部分データの格納先に応じて、入力データを復元するように複数の部分データからラウンド処理対象データに結合する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理装置及び暗号処理回路の制御方法に関し、特に、共通鍵暗号を用いた暗号処理がハードウェア実装された暗号処理装置及び暗号処理回路の制御方法に関する。
【背景技術】
【0002】
セキュリティの需要増加に伴い、大容量データを高速に暗号処理可能なシステムの必要性が高まっている。大容量データの暗号化及び復号化には、TDES(Triple Data Encryption Standard)やAES(Advanced Encryption Standard)などの共通鍵暗号が用いられる。また、処理の高速化は、ハードウェア実装によって実現される。
【0003】
一方で、共通鍵暗号機能を搭載したシステムにおいて、サイドチャネル攻撃の一つである電力差分解析(DPA:Differential Power Analysis)の脅威が拡大している。(非特許文献1を参照。)
【0004】
サイドチャネル攻撃は、暗号処理機能を搭載した装置が処理実行時に発生する消費電力、電磁波及び処理時間などのサイドチャネル情報を利用して、暗号の秘密鍵を推定する攻撃手法である。
【0005】
DPAは、秘密鍵が等しく、かつ、入出力の異なる暗号処理中に消費された複数の電力情報を利用する。消費電力は、入出力データと秘密鍵により決まる中間データに依存して微小に変化する。攻撃者は、秘密鍵の一部を推測し、その推測により求まる中間データと入出力データを基に、複数の消費電力の変化をそれぞれ予測する。この予測した消費電力の変化量の大小によって、複数の消費電力を2つのグループに分類し、平均化によりノイズを除去した後に、グループ間の差分を抽出する。推測した鍵が正しい時のみグループの分類が正しく行われ、差分が生じる。従って、グループ間に差分を確認できた推測鍵が正しい鍵だと推定する事ができる。
【0006】
尚、ここでは、電力をサイドチャネル情報として説明したが、例えば、電磁波などでも同様に攻撃することができる(非特許文献2を参照)。
【0007】
図4は、関連技術にかかる暗号処理回路400の構成を示すブロック図である。ここでは、暗号処理回路400は、平文を入力データ21とし、暗号文を出力データ23とした暗号処理について説明するが、暗号文を入力データ21とし、平文を出力データ23とした復号処理も同じである。
【0008】
暗号処理回路400は、セレクタ410と、レジスタ420と、ラウンド処理部430と、レジスタ440と、ラウンド鍵生成部450とを備える。セレクタ410は、暗号処理開始時において、入力データ21(平文)を選択し、暗号処理中においては、ラウンド処理部430によるラウンド処理結果を選択する。レジスタ420は、セレクタ410にて選択された結果を格納する。ラウンド処理部430は、レジスタ420にて格納されたデータに対してラウンド処理を行う。レジスタ440は、暗号処理終了時に暗号文を格納し、出力データ23(暗号文)を出力する。ラウンド鍵生成部450は、秘密鍵22から各ラウンド鍵を生成した結果をラウンド処理部430へ出力する。
【0009】
図4の暗号処理回路400は、平文である入力データ21と、秘密鍵である秘密鍵22とを入力とし、複数回のラウンド処理を実行することで、暗号化処理を行い、暗号文である出力データ23を出力する。
【0010】
図5は、図4記載の暗号処理回路400の動作を説明するためのタイミングチャートである。図5のタイミングチャートにおける各符号は、上段からそれぞれ以下の意味を示す。
[CLK]:クロック信号
[Key]:秘密鍵
[D_in]:入力データ(平文)
[Ki]:ラウンド鍵生成部450にて生成されるラウンド鍵
[Start]:暗号処理開始信号
[Reg]:レジスタ420の格納データ
[F_in]:ラウンド処理部430の入力データ
[F_out]:ラウンド処理部430の出力データ
[End]:暗号処理終了信号
[Reg_o]:出力データ(暗号文)
【0011】
最初に、暗号処理開始信号StartがHighになる。それに伴い、セレクタ410は、入力データD0を選択し、クロック信号CLKの立ち上がりで入力データD0をレジスタ420に格納する。
【0012】
次に、ラウンド処理部430は、入力データD0とラウンド鍵生成部450で生成されたラウンド鍵K1を入力として1回目のラウンド処理を行い、出力データD1を出力する。この時、暗号処理開始信号Startは、Lowとなっている。そのため、セレクタ410は、ラウンド処理部430の出力データD1を選択し、クロック信号CLKの立ち上がりで出力データD1をレジスタ420に格納する。
【0013】
上記ラウンド処理を規定の回数(n回)繰り返すと、暗号処理終了信号EndがHighとなる。それに伴い、クロック信号CLKの立ち上がりで、ラウンド処理部430は、出力データDnをレジスタ440に格納する。その後、レジスタ440に格納された出力データDnが暗号文として出力される。
【0014】
このような暗号処理回路400において、データ変化時のハミング距離が、消費電力が発生及び変化する主要因となる。
【0015】
図4の暗号処理において、攻撃者は、例えば、次のようにしてDPAを実施する。まず、ラウンド鍵Kiを推測する。次に、観測可能な入力データD0又は出力データDnから、ラウンド処理内のデータ又はラウンド処理結果を格納するレジスタ420のハミング重みやデータ遷移を推測する。これにより消費電力の変化を予想する。
【0016】
そこで、DPA対策では、内部データのハミング重みやデータ遷移を攻撃者が推測できないようにする必要がある。
【0017】
このようなDPAの対策方法として、特許文献1記載の方法が提案されている。図6は、特許文献1にかかる暗号処理回路300の構成を示すブロック図である。暗号処理回路300は、複数ラウンドの繰り返し処理を含む暗号アルゴリズムを実行する半導体集積回路である。暗号処理回路300は、初期置換部301と、スイッチSW1p及びSW1qと、DES演算回路310及び320と、逆置換部302と、秘密鍵351と、ダミー鍵352と、スイッチSW3と、第1鍵スケジュール部353と、ダミー鍵361と、第2鍵スケジュール部362と、スイッチSW2p及びSW2qとを備える。
【0018】
DES演算回路310は、レジスタ311と、レジスタ312と、F関数部313とを備える。DES演算回路320は、レジスタ321と、レジスタ322と、F関数部323とを備える。DES演算回路310及び320は、F関数部313及び323を実行する2つのラウンド処理部である。
【0019】
第1鍵スケジュール部353は、DES演算回路310及び320に対して、正規のラウンド処理用の正規ラウンド鍵を出力する。第2鍵スケジュール部362は、DES演算回路310及び320に対して、ダミーラウンド処理用のダミーラウンド鍵を出力する。
【0020】
DES演算回路310及び320は、正規ラウンド鍵を適用した正規ラウンド処理と、ダミーラウンド鍵を適用したダミーラウンド処理とを交互に繰り返し実行する。このとき、F関数部313は、レジスタ312に格納されたデータとスイッチSW2pから出力される鍵データとを用いてラウンド処理を行う。レジスタ322には、レジスタ311に格納されたデータとF関数部313の処理結果との和が格納される。一方、レジスタ321には、レジスタ312に格納されたデータが格納される。そして、F関数部323は、レジスタ322に格納されたデータとスイッチSW2qから出力される鍵データとを用いてラウンド処理を行う。その後、レジスタ311には、レジスタ322に格納されたデータが格納される。一方、レジスタ312には、レジスタ321に格納されたデータとF関数部323の処理結果との和が格納される。
【0021】
つまり、レジスタ311及び312並びにレジスタ321及び322において、正規のラウンド処理結果と、ダミーラウンド処理結果が交互に格納されることになる。そのため、各レジスタのデータ更新時のビット変化を電流計測によって求めたとしても、このビット変化は、全てダミーラウンド鍵を適用したダミーラウンド処理結果、すなわちダミー処理で生成された未知の値に基づくものとなる。これより、消費電流の統計処理によるDPA攻撃に対する暗号処理装置が実現している。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】特開2007−195132号公報
【非特許文献】
【0023】
【非特許文献1】Paul Kocher、 Joshua Jaffe、 Benjamin Jun、 "Introduction to Differential Power Analysis and Related Attacks"、 1998.
【非特許文献2】K. Gandolfi、 C. Mourtel、 and F. Olivier、 "Electromagnetic Analysis: Concrete Results、" CHES 2001、 LNCS 2162、 pp.251-262、 2001.
【発明の概要】
【発明が解決しようとする課題】
【0024】
しかしながら、特許文献1のDPA対策方法では、図4の暗号処理回路400と比べて、ラウンド処理部430及びラウンド鍵生成部450をもう一組用意する必要がある。そのため、一般的な暗号処理回路400の2倍以上の回路規模となり、回路規模の増加つまり対策コストが増加するという問題点がある。すなわち、特許文献1では、サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えることが困難である。
【課題を解決するための手段】
【0025】
本発明の第1の態様にかかる暗号処理装置は、平文又はラウンド処理結果である入力データを複数の部分データに分割する分割部と、前記複数の部分データのそれぞれを保持するための複数のデータ保持部と、前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する結合部と、を備え、前記分割部は、前記複数の部分データのそれぞれの格納先を前記複数のデータ保持部の中から選択し、前記複数の部分データのそれぞれについて、当該選択した格納先へ格納し、前記結合部は、前記分割部により選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数の部分データから前記ラウンド処理対象データに結合する。
【0026】
本発明の第2の態様にかかる暗号処理回路の制御方法は、複数のデータ保持部を備える暗号処理回路の制御方法であって、平文又はラウンド処理結果である入力データを複数の部分データに分割し、前記複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、前記複数の部分データのそれぞれについて、前記選択した格納先へ格納し、前記選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する。
【0027】
上述した本発明の第1及び第2の態様により、平文又はラウンド処理対象のデータを分割し、分割したデータを格納する度に、格納先のデータ保持部を変化させるため、攻撃者がサイドチャネル情報を用いた解析を行ったとしてもレジスタ遷移推測を困難にすることができる。また、図4の一般的な暗号処理回路400と比べて、暗号処理及び鍵生成処理を行うための構成は変わらないため、特許文献1と比べて、回路規模の増加を抑えつつ、サイドチャネル情報を用いた攻撃への対策を施すことができる。
【発明の効果】
【0028】
本発明により、サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えるための暗号処理装置及び暗号処理回路の制御方法を提供することができる。
【図面の簡単な説明】
【0029】
【図1】本発明の実施の形態1にかかる暗号処理回路の構成を示すブロック図である。
【図2】本発明の実施の形態1にかかる暗号処理におけるタイミングチャートである。
【図3】本発明の実施の形態2にかかる暗号処理回路の構成を示すブロック図である。
【図4】関連技術にかかる暗号処理回路の構成を示すブロック図である。
【図5】関連技術にかかる暗号処理におけるタイミングチャートである。
【図6】関連技術にかかる暗号処理回路の構成を示すブロック図である。
【発明を実施するための形態】
【0030】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0031】
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかる暗号処理回路100の構成を示すブロック図である。暗号処理回路100は、選択制御部111と、遅延器112と、セレクタ113と、データ分割部114と、セレクタ115及び116と、レジスタ117及び118と、セレクタ119及び120と、データ結合部121と、ラウンド処理部122と、ラウンド鍵生成部123と、レジスタ124とを備える。
【0032】
暗号処理回路100は、入力データ21と秘密鍵22とを入力し、複数回のラウンド処理により暗号化を行い、出力データ23として出力する半導体集積回路である。入力データ21が平文である場合には、出力データ23は暗号文であり、入力データ21が暗号文である場合には、出力データ23は平文である。
【0033】
選択制御部111は、セレクタ115及び116並びにセレクタ119及び120の選択制御信号を生成し、セレクタ115及び116並びにセレクタ119及び120に対して選択制御信号を出力する。つまり、選択制御部111は、所定の基準に従って格納先の選択を制御するための選択制御信号を出力する。具体的には、選択制御信号は、セレクタ115及び116並びにセレクタ119及び120における入力端子"0"又は"1"のいずれかを選択させる信号である。ここで、所定の基準とは、例えば、格納先の選択をクロック信号に合わせて交互に入れ替える場合や、ランダムに指定する場合などとなる。
【0034】
遅延器112は、選択制御部111により出力された選択制御信号を遅延させて、セレクタ119及び120へ出力する。
【0035】
セレクタ113は、入力データ21とラウンド処理部122の出力とを受け付けて、暗号処理開始時に入力データ21を選択し、暗号処理中はラウンド処理部122の出力であるラウンド処理結果を選択し、データ分割部114へ出力する。
【0036】
データ分割部114は、セレクタ113からの入力データを分割し、分割したそれぞれのデータをセレクタ115及び116に出力する。つまり、データ分割部114は、暗号処理中において、セレクタ113により選択された平文またはラウンド処理結果を、データ分割部114にとっての入力データとして、当該入力データを複数の部分データに分割する。
【0037】
尚、データ分割部114は、任意の方法により入力データを分割して構わない。例えば、データ分割部114は、入力データを上位ビットと下位ビットに分割するとよい。または、データ分割部114は、奇数ビットと偶数ビットに分割するか、さらには、ランダムに選択したビットごとに分割するようにしてもよい。いずれの場合も、入力データの各ビットが分割された部分データのいずれかに含まれていればよい。つまり、データ分割部114における分割の方法とデータ結合部121における結合の方法とが対応していればよい。
【0038】
セレクタ115は、選択制御部111により生成された選択制御信号により、データ分割部114で分割された部分データの一方を選択し、レジスタ117へ出力する。また、セレクタ116は、選択制御部111により生成された選択制御信号により、セレクタ115において選択されなかった部分データを選択し、レジスタ118へ出力する。ここでは、セレクタ115及び116は、選択制御信号に応じて入力端子"0"又は"1"のいずれかの入力を選択して各レジスタへ出力する。
【0039】
例えば、データ分割部114への入力データが8ビットであり、データ分割部114の分割方法が上位ビットと下位ビットに分割するものであるものとする。この場合、データ分割部114は、上位4ビットをセレクタ115の入力端子"0"及びセレクタ116の入力端子"1"へ出力し、下位4ビットをセレクタ115の入力端子"1"及びセレクタ116の入力端子"0"へ出力する。ここで、選択制御部111により生成される選択制御信号が入力端子"1"を選択させること示すものとする。その場合、セレクタ115は、入力端子"1"から受け付けた下位4ビットを選択して、レジスタ117へ格納する。また、セレクタ116は、入力端子"1"から受け付けた上位4ビットを選択して、レジスタ118へ格納する。
【0040】
すなわち、セレクタ115及び116は、複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、複数の部分データのそれぞれについて、当該選択した格納先へ格納するものである。また、セレクタ115及び116は、選択制御信号に基づいて格納先を複数のデータ保持部の中から選択する。
【0041】
レジスタ117及び118は、セレクタ115及び116の出力結果を格納し、格納データをセレクタ119及び120へ出力する。つまり、レジスタ117及び118は、複数の部分データのそれぞれを保持するための複数のデータ保持部である。
【0042】
セレクタ119は、選択制御部111により生成された選択制御信号により、レジスタ117又は118の出力のいずれか一方を選択し、選択されたレジスタに格納されたデータをデータ結合部121へ出力する。セレクタ120は、選択制御部111により生成された選択制御信号により、セレクタ119において選択されなかったレジスタを選択し、選択されたレジスタに格納されたデータをデータ結合部121へ出力する。ここでは、セレクタ119の入力端子"0"には、レジスタ117の出力が接続されており、入力端子"1"には、レジスタ118の出力が接続されている。また、セレクタ120の入力端子"0"には、レジスタ118の出力が接続されており、入力端子"1"には、レジスタ117の出力が接続されている。
【0043】
上述した例、つまり、選択制御信号が入力端子"1"を選択させること示す場合、セレクタ119は、入力端子"1"から受け付けたデータ、すなわち、レジスタ118に格納されている上位4ビットを選択して、データ結合部121へ出力する。また、セレクタ120は、入力端子"1"から受け付けたデータ、すなわち、レジスタ117に格納されている下位4ビットを選択して、データ結合部121へ出力する。
【0044】
データ結合部121は、セレクタ119及び120の入力を結合し、ラウンド処理部122に出力する。つまり、データ結合部121は、複数のデータ保持部に保持された複数の部分データから暗号処理の対象となる一つの暗号処理対象データに結合する。
【0045】
例えば、データ分割部114への入力データが8ビットであり、データ分割部114の分割方法が上位ビットと下位ビットに分割するものである場合、データ結合部121は、セレクタ119から受け付けたデータを上位ビット、セレクタ120から受け付けたデータを下位ビットとしてデータを結合するものとする。つまり、この場合、データ結合部121は、データ分割部114により選択された各部分データの格納先に応じて、データ分割部114への入力データを復元するように複数の部分データから暗号処理対象データに結合するといえる。
【0046】
ラウンド鍵生成部123は、秘密鍵22を入力としてラウンド鍵Kiを生成し、ラウンド処理部122へ出力する。
【0047】
ラウンド処理部122は、データ結合部121からの出力結果に対してラウンド処理を行い、処理結果をセレクタ113及びレジスタ124に出力する。ここで、ラウンド処理は、置換や転置、論理演算、算術演算などにより構成された処理であり、多くの共通鍵暗号は、複数ラウンドのラウンド処理により入力データを攪拌する事で、十分な暗号強度を実現する。
【0048】
レジスタ124は、ラウンド処理部122からの出力結果を格納する。そして、レジスタ124は、暗号処理完了時に、暗号処理結果として出力データ23を出力する。
【0049】
尚、選択制御部111は、入力データがデータ分割部114に入力される度に、選択制御信号を出力することが望ましい。または、選択制御部111は、ラウンド処理部122においてラウンド処理が行われる度に選択制御信号を出力しても構わない。これにより、レジスタ117及び118に部分データが格納される度に、格納先を切り替えることとなり、攻撃者におけるレジスタ遷移推測をより困難にし、DPA等の対策をより効果的に施すことができる。
【0050】
さらに、本発明の実施の形態1では、データ分割部114が、ラウンド処理部122における暗号処理対象データに対する暗号処理の結果を、入力データとする。そして、選択制御部111は、暗号処理の再帰的な実行に応じて、選択制御信号を出力するものである。これにより、回路規模を抑えつつ、DPA等の対策を施すことができる。
【0051】
図2は、本発明の実施の形態1にかかる暗号処理回路100の暗号処理におけるタイミングチャートである。図2のタイミングチャートにおける各符号は、上段からそれぞれ以下の意味を示す。
[CLK]:クロック信号
[Key]:秘密鍵
[D_in]:入力データ(平文)
[Ki]:ラウンド鍵生成部123にて生成されるラウンド鍵
[Start]:暗号処理開始信号
[Sel]:選択制御部111で生成される選択制御信号
[Reg_1]:レジスタ117の格納データ
[Reg_2]:レジスタ118の格納データ
[F_in]:ラウンド処理部122の入力データ
[F_out]:ラウンド処理部122の出力データ
[Fin_Flag]:暗号処理終了信号
[Reg_o]:出力データ(暗号文)
【0052】
最初に、開始信号であるStart(図1には示さず)がHighになる。それに伴い、セレクタ113は、入力データD0を選択する。データ分割部114は、入力データD0を部分データD0_R及びD0_Lに分割する。ここでは、部分データD0_Rが上位ビットであり、部分データD0_Lが下位ビットであるものとする。そして、データ分割部114は、部分データD0_Rをセレクタ115の入力端子"0"及びセレクタ116の入力端子"1"に出力する。また、データ分割部114は、部分データD0_Lをセレクタ115の入力端子"1"及びセレクタ116の入力端子"0"に出力する。
【0053】
この時、選択制御信号SelはHighである。そのため、クロック信号CLKの立ち上がりにおいて、セレクタ115は、選択制御信号Selに基づき入力端子"1"を選択し、部分データD0_Lをレジスタ117に格納し、セレクタ116は、選択制御信号Selに基づき入力端子"1"を選択し、部分データD0_Rをレジスタ118に格納する。
【0054】
次に、選択制御信号Selが反転し、Lowとなる。これにより、セレクタ119は、選択制御信号Selに基づき入力端子"1"を選択し、レジスタ118に格納されている部分データD0_Rをデータ結合部121へ出力する。また、セレクタ120は、選択制御信号Selに基づき入力端子"1"を選択し、レジスタ117に格納されている部分データD0_Lをデータ結合部121へ出力する。
【0055】
そして、データ結合部121は、セレクタ119から受け付けた部分データD0_Rを上位ビット、セレクタ120から受け付けた部分データD0_Lを下位ビットとして結合する。この場合、結合されたデータは、入力データD0となり、データ分割部114に入力されたデータと同一のもの、つまり復元されたこととなる。
【0056】
その後、ラウンド処理部122は、データ結合部121により復元された入力データD0に対するラウンド処理を行い、出力データD1を出力する。
【0057】
そして、セレクタ113は、出力データD1を選択してデータ分割部114へ出力する。データ分割部114は、データD1を部分データD1_R及びD1_Lに分割する。ここでは、部分データD1_Rが上位ビットであり、部分データD1_Lが下位ビットであるものとする。そして、データ分割部114は、部分データD1_Rをセレクタ115の入力端子"0"及びセレクタ116の入力端子"1"に出力する。また、データ分割部114は、部分データD1_Lをセレクタ115の入力端子"1"及びセレクタ116の入力端子"0"に出力する。
【0058】
このとき、選択制御信号SelがLowである。そのため、クロック信号CLKの立ち上がりにおいて、セレクタ115は、選択制御信号Selに基づき入力端子"0"を選択し、部分データD1_Rをレジスタ117に格納し、セレクタ116は、選択制御信号Selに基づき入力端子"0"を選択し、部分データD1_Lをレジスタ118に格納する。
【0059】
以降、ラウンド処理を、選択制御信号Selを反転しながら規定の回数(n回)繰り返す。その後、終了信号EndがHighとなり、クロック信号CLKの立ち上がりで、ラウンド処理部122の出力データDnをレジスタ124に格納し、出力データDnを暗号(復号)文として出力する。
【0060】
このように、本発明の実施の形態1にかかる暗号処理回路100は、ラウンド処理結果を格納するレジスタにおいて、同一のビット位置に連続して同じビット位置のデータを格納しないことで、攻撃者によるレジスタのビット変化の推測を困難とすることで、特許文献1と同様にDPA等を実施しにくくすることができる。その上、本発明の実施の形態1では、ラウンド処理結果を格納するレジスタへの入力データの分割及び選択と、レジスタからの出力データの選択及び結合する回路構成である。そのため、ラウンド処理部122やラウンド鍵生成部123を複数準備する必要がない。また、レジスタのサイズも入力データを保持する分だけ準備すれば良い。よって、特許文献1に比べて、回路規模増加を抑える事ができる。
【0061】
以上のことから、本発明の実施の形態1により、サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えることができる。
【0062】
尚、本発明の実施の形態1にかかる暗号処理回路100は、暗号処理として動作を説明したが、復号処理でもよい。
【0063】
また、本発明の実施の形態1にかかる暗号処理回路100は、データ分割部114の内部にセレクタ115及び116の機能を有していても構わない。つまり、データ分割部114は、選択制御信号に基づいて、格納先を複数のデータ保持部の中から選択することとなる。その場合、データ分割部114の出力の一方が直接、レジスタ117に接続され、他方が直接、レジスタ118に接続される。そして、選択制御部111は、データ分割部114に対して選択制御信号を出力することとなる。
【0064】
同様に、本発明の実施の形態1にかかる暗号処理回路100は、データ結合部121の内部にセレクタ119及び120の機能を有していても構わない。つまり、データ結合部121は、選択制御信号に基づいて、複数の部分データから暗号処理対象データに結合することとなる。その場合、データ結合部121は、レジスタ117及び118の出力が直接、接続されることとなる。選択制御部111は、データ結合部121に対して選択制御信号を出力することとなる。
【0065】
また、選択制御部111は、データ分割部114への入力データの分割方法を制御するための分割制御信号をデータ分割部114及びデータ結合部121へ出力するようにしてもよい。そして、このとき、データ分割部114は、分割制御信号に基づいて、暗号処理済みのデータを複数の部分データに分割し、データ結合部121は、分割制御信号に基づいて、複数の部分データから暗号処理対象データに結合する。つまり、入力データを上位ビットと下位ビットに分割するか、奇数ビットと偶数ビットに分割するか、又は、ランダムに選択したビットごとに分割するかなどを分割制御信号により制御しても構わない。
【0066】
<発明の実施の形態2>
上述した発明の実施の形態1にかかる暗号処理回路100は、同一回路にてラウンド処理を規定回数繰り返すループ構成としたが、本発明の実施の形態2にかかる暗号処理回路101は、2個以上の回路を接続したパイプライン構成とした場合の例である。
【0067】
図3は、本発明の実施の形態2にかかる暗号処理回路101の構成を示すブロック図である。尚、図3において、図1と同等の構成については同一の符号を付し、説明を省略するものとする。
【0068】
暗号処理回路101は、選択制御部111と、ラウンド処理回路130a、130b、・・・及び130nと、レジスタ124とを備える。また、暗号処理回路100は、入力データ21と秘密鍵22とを入力し、ラウンド処理回路130a、130b、・・・及び130nにより直列に暗号化を行い、出力データ23として出力する半導体集積回路である。入力データ21が平文である場合には、出力データ23は暗号文であり、入力データ21が暗号文である場合には、出力データ23は平文である。
【0069】
選択制御部111は、ラウンド処理回路130a、130b、・・・及び130nのそれぞれに対して選択制御信号を出力する。
【0070】
ラウンド処理回路130aは、図1の遅延器112と、データ分割部114と、セレクタ115及び116と、レジスタ117及び118と、セレクタ119及び120と、データ結合部121と、ラウンド処理部122と、ラウンド鍵生成部123とを備える。また、ラウンド処理回路130aは、入力データ21及び秘密鍵22を受け付けて、暗号処理結果をラウンド処理回路130bへ出力する。
【0071】
ラウンド処理回路130bは、ラウンド処理回路130aからの出力及び秘密鍵22を受け付けて、暗号処理結果をラウンド処理回路130c(不図示)へ出力する。以降、ラウンド処理回路130nは、ラウンド処理回路130n−1(不図示)からの出力及び秘密鍵22を受け付けて、暗号処理結果をレジスタ124へ出力する。尚、ラウンド処理回路130b〜130nの内部構成は、ラウンド処理回路130aと同等であるため、図示及び説明を省略する。
【0072】
尚、ラウンド処理回路130a乃至130nのそれぞれに、ラウンド鍵生成部123を含まなくても構わない。例えば、暗号処理回路101内に一つのラウンド鍵生成部を備えるようにしても良い。その場合、当該一つのラウンド鍵生成部は、複数の異なるラウンド鍵を生成し、それぞれをラウンド処理回路130a乃至130nへ入力するようにすればよい。または、暗号処理回路101内にラウンド鍵生成部を備えず、暗号処理回路101外において、複数の異なるラウンド鍵を生成し、生成された複数のラウンド鍵を外部からラウンド処理回路130a乃至130nへ入力させるようにしてもよい。
【0073】
このように、ラウンド処理回路130a〜130nをハードウェアとして個別に搭載することで、上述した発明の実施の形態1に比べて、暗号処理を高速化することができる。そして、この場合であっても、特許文献1にかかる暗号処理回路300をパイプライン構成とした場合に比べて、回路規模を抑えることができる。
【0074】
<その他の発明の実施の形態>
尚、本発明の実施の形態1にかかる暗号処理回路100が備えるレジスタ117及び118は、3以上のレジスタ群であってもよい。その場合、当該レジスタ群に対応する数の前段及び後段のセレクタをそれぞれ備えることとなる。そして、例えば、データ分割部114は、入力データをレジスタ数分の部分データに分割し、各レジスタの入力端子へ部分データのいずれかを出力することとなる。そして、選択制御部111は、各レジスタに対して選択制御信号を出力する。その際、各レジスタに対して、部分データのうちいずれを入力させるかは任意の組合せで構わない。同様に、データ結合部121は、レジスタ数分のセレクタから各部分データを受け付けて、結合することとなる。
【0075】
また、本発明は次のように言い換えることができる。すなわち、本発明にかかる共通鍵暗号を搭載した半導体集積回路は、入力データを2つ以上に分割する分割部と、前記分割部で分割したデータを保持するためのデータ保持レジスタと、前記データ保持レジスタの入力および出力を選択するセレクタと、分割したデータを結合する結合部を有する。これにより、攻撃者は2つ以上に分割されたデータがどのデータ保持レジスタに保持されたのかの判別が出来ないためにデータ保持レジスタのビット変化の推測が困難となり、特許文献1と同様にDPAを実施できにくくすることができる。さらに、データ保持レジスタのサイズも入力データを保持する分だけ準備すれば良い為、特許文献1に比べて回路規模増加を抑える事が可能となる。
【0076】
尚、本発明は半導体集積回路に関し、特に、ハードウェア実装された共通鍵暗号において、暗号処理時に漏洩するサイドチャネル情報を用いた電力差分解析への耐性を向上させる暗号処理回路に関するものである。
【0077】
また、本発明は、暗号処理装置の分野に関するものであり、特許文献1の課題であったハードウェア実装された共通鍵暗号の処理中間データの遷移が、サイドチャネル攻撃の一つである差分電力又は電磁波解析に対して脆弱であるという問題に対して、データ保持レジスタと正規データを分割し、分割したデータの格納先である保持レジスタを、選択制御回路により、暗号処理を行う度に変化させることで、攻撃者のレジスタ遷移推測を困難にすることを可能にした。
【0078】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【0079】
100 暗号処理回路
101 暗号処理回路
111 選択制御部
112 遅延器
113 セレクタ
114 データ分割部
115 セレクタ
116 セレクタ
117 レジスタ
118 レジスタ
119 セレクタ
120 セレクタ
121 データ結合部
122 ラウンド処理部
123 ラウンド鍵生成部
124 レジスタ
130a ラウンド処理回路
130b ラウンド処理回路
130n ラウンド処理回路
21 入力データ
22 秘密鍵
23 出力データ
300 暗号処理回路
301 初期置換部
302 逆置換部
310 DES演算回路
311 レジスタ
312 レジスタ
313 F関数部
320 DES演算回路
321 レジスタ
322 レジスタ
323 F関数部
351 秘密鍵
352 ダミー鍵
353 第1鍵スケジュール部
361 ダミー鍵
362 第2鍵スケジュール部
SW1p スイッチ
SW1q スイッチ
SW2p スイッチ
SW2q スイッチ
SW3 スイッチ
400 暗号処理回路
410 セレクタ
420 レジスタ
430 ラウンド処理部
440 レジスタ
450 ラウンド鍵生成部
CLK クロック信号
Key 秘密鍵
D_in 入力データ
Ki ラウンド鍵
Start 暗号処理開始信号
Sel 選択制御信号
Reg 格納データ
Reg1 格納データ
Reg2 格納データ
F_in 入力データ
F_Out 出力データ
Fin_Flag 暗号処理終了信号
End 暗号処理終了信号
Reg_o 出力データ
D0〜Dn データ
D0_R〜Dn_R 部分データ
D0_L〜Dn_L 部分データ
K1〜Kn ラウンド鍵

【特許請求の範囲】
【請求項1】
平文又はラウンド処理結果である入力データを複数の部分データに分割する分割部と、
前記複数の部分データのそれぞれを保持するための複数のデータ保持部と、
前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する結合部と、
を備え、
前記分割部は、前記複数の部分データのそれぞれの格納先を前記複数のデータ保持部の中から選択し、前記複数の部分データのそれぞれについて、当該選択した格納先へ格納し、
前記結合部は、前記分割部により選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする暗号処理装置。
【請求項2】
所定の基準に従って前記格納先の選択を制御するための選択制御信号を前記分割部及び前記結合部へ出力する選択制御部をさらに備え、
前記分割部は、前記選択制御信号に基づいて前記格納先を前記複数のデータ保持部の中から選択し、
前記結合部は、前記選択制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記選択制御部は、前記入力データが前記分割部に入力される度に、前記選択制御信号を出力することを特徴とする請求項2に記載の暗号処理装置。
【請求項4】
前記分割部は、前記ラウンド処理対象データに対する前記ラウンド処理の結果を、前記入力データとし、
前記選択制御部は、前記ラウンド処理の再帰的な実行に応じて、前記選択制御信号を出力することを特徴とする請求項1乃至3のいずれか1項に記載の暗号処理装置。
【請求項5】
前記選択制御部は、前記入力データの分割方法を制御するための分割制御信号を前記分割部及び前記結合部へ出力し、
前記分割部は、前記分割制御信号に基づいて、前記入力データを複数の部分データに分割し、
前記結合部は、前記分割制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項1乃至4のいずれか1項に記載の暗号処理装置。
【請求項6】
複数のデータ保持部を備える暗号処理回路の制御方法であって、
平文又はラウンド処理結果である入力データを複数の部分データに分割し、
前記複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、
前記複数の部分データのそれぞれについて、前記選択した格納先へ格納し、
前記選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する
制御方法。
【請求項7】
所定の基準に従って前記格納先の選択を制御するために出力される選択制御信号に基づいて、前記格納先を前記複数のデータ保持部の中から選択し、
前記選択制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項6に記載の制御方法。
【請求項8】
前記選択制御信号は、前記入力データが入力される度に出力されることを特徴とする請求項7に記載の制御方法。
【請求項9】
前記ラウンド処理対象データに対する前記ラウンド処理の結果を、前記入力データと、
前記選択制御信号は、前記ラウンド処理の再帰的な実行に応じて、出力されることを特徴とする請求項6乃至8のいずれか1項に記載の制御方法。
【請求項10】
前記入力データの分割方法を制御するために出力される分割制御信号に基づいて、前記入力データを複数の部分データに分割し、
前記分割制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項6乃至9のいずれか1項に記載の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−83542(P2012−83542A)
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2010−229522(P2010−229522)
【出願日】平成22年10月12日(2010.10.12)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】