(57)【要約】【課題】サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えること【解決手段】本発明にかかる暗号処理装置は、平文又はラウンド処理結果である入力データを複数の部分データに分割する分割部と、複数の部分データのそれぞれを保持するための複数のデータ保持部と、複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する結合部と、を備え、分割部は、複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、複数の部分データのそれぞれについて、当該選択した格納先へ格納し、結合部は、分割部により選択された各部分データの格納先に応じて、入力データを復元するように複数の部分データからラウンド処理対象データに結合する。【選択図】図１
2012083542.tif 000002
【特許請求の範囲】
【請求項１】
平文又はラウンド処理結果である入力データを複数の部分データに分割する分割部と、
前記複数の部分データのそれぞれを保持するための複数のデータ保持部と、
前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する結合部と、
を備え、
前記分割部は、前記複数の部分データのそれぞれの格納先を前記複数のデータ保持部の中から選択し、前記複数の部分データのそれぞれについて、当該選択した格納先へ格納し、
前記結合部は、前記分割部により選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする暗号処理装置。
【請求項２】
所定の基準に従って前記格納先の選択を制御するための選択制御信号を前記分割部及び前記結合部へ出力する選択制御部をさらに備え、
前記分割部は、前記選択制御信号に基づいて前記格納先を前記複数のデータ保持部の中から選択し、
前記結合部は、前記選択制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記選択制御部は、前記入力データが前記分割部に入力される度に、前記選択制御信号を出力することを特徴とする請求項２に記載の暗号処理装置。
【請求項４】
前記分割部は、前記ラウンド処理対象データに対する前記ラウンド処理の結果を、前記入力データとし、
前記選択制御部は、前記ラウンド処理の再帰的な実行に応じて、前記選択制御信号を出力することを特徴とする請求項１乃至３のいずれか１項に記載の暗号処理装置。
【請求項５】
前記選択制御部は、前記入力データの分割方法を制御するための分割制御信号を前記分割部及び前記結合部へ出力し、
前記分割部は、前記分割制御信号に基づいて、前記入力データを複数の部分データに分割し、
前記結合部は、前記分割制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項１乃至４のいずれか１項に記載の暗号処理装置。
【請求項６】
複数のデータ保持部を備える暗号処理回路の制御方法であって、
平文又はラウンド処理結果である入力データを複数の部分データに分割し、
前記複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、
前記複数の部分データのそれぞれについて、前記選択した格納先へ格納し、
前記選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する
制御方法。
【請求項７】
所定の基準に従って前記格納先の選択を制御するために出力される選択制御信号に基づいて、前記格納先を前記複数のデータ保持部の中から選択し、
前記選択制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項６に記載の制御方法。
【請求項８】
前記選択制御信号は、前記入力データが入力される度に出力されることを特徴とする請求項７に記載の制御方法。
【請求項９】
前記ラウンド処理対象データに対する前記ラウンド処理の結果を、前記入力データと、
前記選択制御信号は、前記ラウンド処理の再帰的な実行に応じて、出力されることを特徴とする請求項６乃至８のいずれか１項に記載の制御方法。
【請求項１０】
前記入力データの分割方法を制御するために出力される分割制御信号に基づいて、前記入力データを複数の部分データに分割し、
前記分割制御信号に基づいて、前記複数の部分データから前記ラウンド処理対象データに結合することを特徴とする請求項６乃至９のいずれか１項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置及び暗号処理回路の制御方法に関し、特に、共通鍵暗号を用いた暗号処理がハードウェア実装された暗号処理装置及び暗号処理回路の制御方法に関する。
【背景技術】
【０００２】
セキュリティの需要増加に伴い、大容量データを高速に暗号処理可能なシステムの必要性が高まっている。大容量データの暗号化及び復号化には、ＴＤＥＳ（Ｔｒｉｐｌｅ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの共通鍵暗号が用いられる。また、処理の高速化は、ハードウェア実装によって実現される。
【０００３】
一方で、共通鍵暗号機能を搭載したシステムにおいて、サイドチャネル攻撃の一つである電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）の脅威が拡大している。（非特許文献１を参照。）
【０００４】
サイドチャネル攻撃は、暗号処理機能を搭載した装置が処理実行時に発生する消費電力、電磁波及び処理時間などのサイドチャネル情報を利用して、暗号の秘密鍵を推定する攻撃手法である。
【０００５】
ＤＰＡは、秘密鍵が等しく、かつ、入出力の異なる暗号処理中に消費された複数の電力情報を利用する。消費電力は、入出力データと秘密鍵により決まる中間データに依存して微小に変化する。攻撃者は、秘密鍵の一部を推測し、その推測により求まる中間データと入出力データを基に、複数の消費電力の変化をそれぞれ予測する。この予測した消費電力の変化量の大小によって、複数の消費電力を２つのグループに分類し、平均化によりノイズを除去した後に、グループ間の差分を抽出する。推測した鍵が正しい時のみグループの分類が正しく行われ、差分が生じる。従って、グループ間に差分を確認できた推測鍵が正しい鍵だと推定する事ができる。
【０００６】
尚、ここでは、電力をサイドチャネル情報として説明したが、例えば、電磁波などでも同様に攻撃することができる（非特許文献２を参照）。
【０００７】
図４は、関連技術にかかる暗号処理回路４００の構成を示すブロック図である。ここでは、暗号処理回路４００は、平文を入力データ２１とし、暗号文を出力データ２３とした暗号処理について説明するが、暗号文を入力データ２１とし、平文を出力データ２３とした復号処理も同じである。
【０００８】
暗号処理回路４００は、セレクタ４１０と、レジスタ４２０と、ラウンド処理部４３０と、レジスタ４４０と、ラウンド鍵生成部４５０とを備える。セレクタ４１０は、暗号処理開始時において、入力データ２１（平文）を選択し、暗号処理中においては、ラウンド処理部４３０によるラウンド処理結果を選択する。レジスタ４２０は、セレクタ４１０にて選択された結果を格納する。ラウンド処理部４３０は、レジスタ４２０にて格納されたデータに対してラウンド処理を行う。レジスタ４４０は、暗号処理終了時に暗号文を格納し、出力データ２３（暗号文）を出力する。ラウンド鍵生成部４５０は、秘密鍵２２から各ラウンド鍵を生成した結果をラウンド処理部４３０へ出力する。
【０００９】
図４の暗号処理回路４００は、平文である入力データ２１と、秘密鍵である秘密鍵２２とを入力とし、複数回のラウンド処理を実行することで、暗号化処理を行い、暗号文である出力データ２３を出力する。
【００１０】
図５は、図４記載の暗号処理回路４００の動作を説明するためのタイミングチャートである。図５のタイミングチャートにおける各符号は、上段からそれぞれ以下の意味を示す。
［ＣＬＫ］：クロック信号
［Ｋｅｙ］：秘密鍵
［Ｄ＿ｉｎ］：入力データ（平文）
［Ｋｉ］：ラウンド鍵生成部４５０にて生成されるラウンド鍵
［Ｓｔａｒｔ］：暗号処理開始信号
［Ｒｅｇ］：レジスタ４２０の格納データ
［Ｆ＿ｉｎ］：ラウンド処理部４３０の入力データ
［Ｆ＿ｏｕｔ］：ラウンド処理部４３０の出力データ
［Ｅｎｄ］：暗号処理終了信号
［Ｒｅｇ＿ｏ］：出力データ（暗号文）
【００１１】
最初に、暗号処理開始信号ＳｔａｒｔがＨｉｇｈになる。それに伴い、セレクタ４１０は、入力データＤ０を選択し、クロック信号ＣＬＫの立ち上がりで入力データＤ０をレジスタ４２０に格納する。
【００１２】
次に、ラウンド処理部４３０は、入力データＤ０とラウンド鍵生成部４５０で生成されたラウンド鍵Ｋ１を入力として１回目のラウンド処理を行い、出力データＤ１を出力する。この時、暗号処理開始信号Ｓｔａｒｔは、Ｌｏｗとなっている。そのため、セレクタ４１０は、ラウンド処理部４３０の出力データＤ１を選択し、クロック信号ＣＬＫの立ち上がりで出力データＤ１をレジスタ４２０に格納する。
【００１３】
上記ラウンド処理を規定の回数（ｎ回）繰り返すと、暗号処理終了信号ＥｎｄがＨｉｇｈとなる。それに伴い、クロック信号ＣＬＫの立ち上がりで、ラウンド処理部４３０は、出力データＤｎをレジスタ４４０に格納する。その後、レジスタ４４０に格納された出力データＤｎが暗号文として出力される。
【００１４】
このような暗号処理回路４００において、データ変化時のハミング距離が、消費電力が発生及び変化する主要因となる。
【００１５】
図４の暗号処理において、攻撃者は、例えば、次のようにしてＤＰＡを実施する。まず、ラウンド鍵Ｋｉを推測する。次に、観測可能な入力データＤ０又は出力データＤｎから、ラウンド処理内のデータ又はラウンド処理結果を格納するレジスタ４２０のハミング重みやデータ遷移を推測する。これにより消費電力の変化を予想する。
【００１６】
そこで、ＤＰＡ対策では、内部データのハミング重みやデータ遷移を攻撃者が推測できないようにする必要がある。
【００１７】
このようなＤＰＡの対策方法として、特許文献１記載の方法が提案されている。図６は、特許文献１にかかる暗号処理回路３００の構成を示すブロック図である。暗号処理回路３００は、複数ラウンドの繰り返し処理を含む暗号アルゴリズムを実行する半導体集積回路である。暗号処理回路３００は、初期置換部３０１と、スイッチＳＷ１ｐ及びＳＷ１ｑと、ＤＥＳ演算回路３１０及び３２０と、逆置換部３０２と、秘密鍵３５１と、ダミー鍵３５２と、スイッチＳＷ３と、第１鍵スケジュール部３５３と、ダミー鍵３６１と、第２鍵スケジュール部３６２と、スイッチＳＷ２ｐ及びＳＷ２ｑとを備える。
【００１８】
ＤＥＳ演算回路３１０は、レジスタ３１１と、レジスタ３１２と、Ｆ関数部３１３とを備える。ＤＥＳ演算回路３２０は、レジスタ３２１と、レジスタ３２２と、Ｆ関数部３２３とを備える。ＤＥＳ演算回路３１０及び３２０は、Ｆ関数部３１３及び３２３を実行する２つのラウンド処理部である。
【００１９】
第１鍵スケジュール部３５３は、ＤＥＳ演算回路３１０及び３２０に対して、正規のラウンド処理用の正規ラウンド鍵を出力する。第２鍵スケジュール部３６２は、ＤＥＳ演算回路３１０及び３２０に対して、ダミーラウンド処理用のダミーラウンド鍵を出力する。
【００２０】
ＤＥＳ演算回路３１０及び３２０は、正規ラウンド鍵を適用した正規ラウンド処理と、ダミーラウンド鍵を適用したダミーラウンド処理とを交互に繰り返し実行する。このとき、Ｆ関数部３１３は、レジスタ３１２に格納されたデータとスイッチＳＷ２ｐから出力される鍵データとを用いてラウンド処理を行う。レジスタ３２２には、レジスタ３１１に格納されたデータとＦ関数部３１３の処理結果との和が格納される。一方、レジスタ３２１には、レジスタ３１２に格納されたデータが格納される。そして、Ｆ関数部３２３は、レジスタ３２２に格納されたデータとスイッチＳＷ２ｑから出力される鍵データとを用いてラウンド処理を行う。その後、レジスタ３１１には、レジスタ３２２に格納されたデータが格納される。一方、レジスタ３１２には、レジスタ３２１に格納されたデータとＦ関数部３２３の処理結果との和が格納される。
【００２１】
つまり、レジスタ３１１及び３１２並びにレジスタ３２１及び３２２において、正規のラウンド処理結果と、ダミーラウンド処理結果が交互に格納されることになる。そのため、各レジスタのデータ更新時のビット変化を電流計測によって求めたとしても、このビット変化は、全てダミーラウンド鍵を適用したダミーラウンド処理結果、すなわちダミー処理で生成された未知の値に基づくものとなる。これより、消費電流の統計処理によるＤＰＡ攻撃に対する暗号処理装置が実現している。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特開２００７−１９５１３２号公報
【非特許文献】
【００２３】
【非特許文献１】Paul Kocher、 Joshua Jaffe、 Benjamin Jun、 "Introduction to Differential Power Analysis and Related Attacks"、 1998.
【非特許文献２】K. Gandolfi、 C. Mourtel、 and F. Olivier、 "Electromagnetic Analysis: Concrete Results、" CHES 2001、 LNCS 2162、 pp.251-262、 2001.
【発明の概要】
【発明が解決しようとする課題】
【００２４】
しかしながら、特許文献１のＤＰＡ対策方法では、図４の暗号処理回路４００と比べて、ラウンド処理部４３０及びラウンド鍵生成部４５０をもう一組用意する必要がある。そのため、一般的な暗号処理回路４００の２倍以上の回路規模となり、回路規模の増加つまり対策コストが増加するという問題点がある。すなわち、特許文献１では、サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えることが困難である。
【課題を解決するための手段】
【００２５】
本発明の第１の態様にかかる暗号処理装置は、平文又はラウンド処理結果である入力データを複数の部分データに分割する分割部と、前記複数の部分データのそれぞれを保持するための複数のデータ保持部と、前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する結合部と、を備え、前記分割部は、前記複数の部分データのそれぞれの格納先を前記複数のデータ保持部の中から選択し、前記複数の部分データのそれぞれについて、当該選択した格納先へ格納し、前記結合部は、前記分割部により選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数の部分データから前記ラウンド処理対象データに結合する。
【００２６】
本発明の第２の態様にかかる暗号処理回路の制御方法は、複数のデータ保持部を備える暗号処理回路の制御方法であって、平文又はラウンド処理結果である入力データを複数の部分データに分割し、前記複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、前記複数の部分データのそれぞれについて、前記選択した格納先へ格納し、前記選択された各部分データの格納先に応じて、前記入力データを復元するように前記複数のデータ保持部に保持された複数の部分データからラウンド処理の対象となる一つのラウンド処理対象データに結合する。
【００２７】
上述した本発明の第１及び第２の態様により、平文又はラウンド処理対象のデータを分割し、分割したデータを格納する度に、格納先のデータ保持部を変化させるため、攻撃者がサイドチャネル情報を用いた解析を行ったとしてもレジスタ遷移推測を困難にすることができる。また、図４の一般的な暗号処理回路４００と比べて、暗号処理及び鍵生成処理を行うための構成は変わらないため、特許文献１と比べて、回路規模の増加を抑えつつ、サイドチャネル情報を用いた攻撃への対策を施すことができる。
【発明の効果】
【００２８】
本発明により、サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えるための暗号処理装置及び暗号処理回路の制御方法を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施の形態１にかかる暗号処理回路の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる暗号処理におけるタイミングチャートである。
【図３】本発明の実施の形態２にかかる暗号処理回路の構成を示すブロック図である。
【図４】関連技術にかかる暗号処理回路の構成を示すブロック図である。
【図５】関連技術にかかる暗号処理におけるタイミングチャートである。
【図６】関連技術にかかる暗号処理回路の構成を示すブロック図である。
【発明を実施するための形態】
【００３０】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００３１】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかる暗号処理回路１００の構成を示すブロック図である。暗号処理回路１００は、選択制御部１１１と、遅延器１１２と、セレクタ１１３と、データ分割部１１４と、セレクタ１１５及び１１６と、レジスタ１１７及び１１８と、セレクタ１１９及び１２０と、データ結合部１２１と、ラウンド処理部１２２と、ラウンド鍵生成部１２３と、レジスタ１２４とを備える。
【００３２】
暗号処理回路１００は、入力データ２１と秘密鍵２２とを入力し、複数回のラウンド処理により暗号化を行い、出力データ２３として出力する半導体集積回路である。入力データ２１が平文である場合には、出力データ２３は暗号文であり、入力データ２１が暗号文である場合には、出力データ２３は平文である。
【００３３】
選択制御部１１１は、セレクタ１１５及び１１６並びにセレクタ１１９及び１２０の選択制御信号を生成し、セレクタ１１５及び１１６並びにセレクタ１１９及び１２０に対して選択制御信号を出力する。つまり、選択制御部１１１は、所定の基準に従って格納先の選択を制御するための選択制御信号を出力する。具体的には、選択制御信号は、セレクタ１１５及び１１６並びにセレクタ１１９及び１２０における入力端子"０"又は"１"のいずれかを選択させる信号である。ここで、所定の基準とは、例えば、格納先の選択をクロック信号に合わせて交互に入れ替える場合や、ランダムに指定する場合などとなる。
【００３４】
遅延器１１２は、選択制御部１１１により出力された選択制御信号を遅延させて、セレクタ１１９及び１２０へ出力する。
【００３５】
セレクタ１１３は、入力データ２１とラウンド処理部１２２の出力とを受け付けて、暗号処理開始時に入力データ２１を選択し、暗号処理中はラウンド処理部１２２の出力であるラウンド処理結果を選択し、データ分割部１１４へ出力する。
【００３６】
データ分割部１１４は、セレクタ１１３からの入力データを分割し、分割したそれぞれのデータをセレクタ１１５及び１１６に出力する。つまり、データ分割部１１４は、暗号処理中において、セレクタ１１３により選択された平文またはラウンド処理結果を、データ分割部１１４にとっての入力データとして、当該入力データを複数の部分データに分割する。
【００３７】
尚、データ分割部１１４は、任意の方法により入力データを分割して構わない。例えば、データ分割部１１４は、入力データを上位ビットと下位ビットに分割するとよい。または、データ分割部１１４は、奇数ビットと偶数ビットに分割するか、さらには、ランダムに選択したビットごとに分割するようにしてもよい。いずれの場合も、入力データの各ビットが分割された部分データのいずれかに含まれていればよい。つまり、データ分割部１１４における分割の方法とデータ結合部１２１における結合の方法とが対応していればよい。
【００３８】
セレクタ１１５は、選択制御部１１１により生成された選択制御信号により、データ分割部１１４で分割された部分データの一方を選択し、レジスタ１１７へ出力する。また、セレクタ１１６は、選択制御部１１１により生成された選択制御信号により、セレクタ１１５において選択されなかった部分データを選択し、レジスタ１１８へ出力する。ここでは、セレクタ１１５及び１１６は、選択制御信号に応じて入力端子"０"又は"１"のいずれかの入力を選択して各レジスタへ出力する。
【００３９】
例えば、データ分割部１１４への入力データが８ビットであり、データ分割部１１４の分割方法が上位ビットと下位ビットに分割するものであるものとする。この場合、データ分割部１１４は、上位４ビットをセレクタ１１５の入力端子"０"及びセレクタ１１６の入力端子"１"へ出力し、下位４ビットをセレクタ１１５の入力端子"１"及びセレクタ１１６の入力端子"０"へ出力する。ここで、選択制御部１１１により生成される選択制御信号が入力端子"１"を選択させること示すものとする。その場合、セレクタ１１５は、入力端子"１"から受け付けた下位４ビットを選択して、レジスタ１１７へ格納する。また、セレクタ１１６は、入力端子"１"から受け付けた上位４ビットを選択して、レジスタ１１８へ格納する。
【００４０】
すなわち、セレクタ１１５及び１１６は、複数の部分データのそれぞれの格納先を複数のデータ保持部の中から選択し、複数の部分データのそれぞれについて、当該選択した格納先へ格納するものである。また、セレクタ１１５及び１１６は、選択制御信号に基づいて格納先を複数のデータ保持部の中から選択する。
【００４１】
レジスタ１１７及び１１８は、セレクタ１１５及び１１６の出力結果を格納し、格納データをセレクタ１１９及び１２０へ出力する。つまり、レジスタ１１７及び１１８は、複数の部分データのそれぞれを保持するための複数のデータ保持部である。
【００４２】
セレクタ１１９は、選択制御部１１１により生成された選択制御信号により、レジスタ１１７又は１１８の出力のいずれか一方を選択し、選択されたレジスタに格納されたデータをデータ結合部１２１へ出力する。セレクタ１２０は、選択制御部１１１により生成された選択制御信号により、セレクタ１１９において選択されなかったレジスタを選択し、選択されたレジスタに格納されたデータをデータ結合部１２１へ出力する。ここでは、セレクタ１１９の入力端子"０"には、レジスタ１１７の出力が接続されており、入力端子"１"には、レジスタ１１８の出力が接続されている。また、セレクタ１２０の入力端子"０"には、レジスタ１１８の出力が接続されており、入力端子"１"には、レジスタ１１７の出力が接続されている。
【００４３】
上述した例、つまり、選択制御信号が入力端子"１"を選択させること示す場合、セレクタ１１９は、入力端子"１"から受け付けたデータ、すなわち、レジスタ１１８に格納されている上位４ビットを選択して、データ結合部１２１へ出力する。また、セレクタ１２０は、入力端子"１"から受け付けたデータ、すなわち、レジスタ１１７に格納されている下位４ビットを選択して、データ結合部１２１へ出力する。
【００４４】
データ結合部１２１は、セレクタ１１９及び１２０の入力を結合し、ラウンド処理部１２２に出力する。つまり、データ結合部１２１は、複数のデータ保持部に保持された複数の部分データから暗号処理の対象となる一つの暗号処理対象データに結合する。
【００４５】
例えば、データ分割部１１４への入力データが８ビットであり、データ分割部１１４の分割方法が上位ビットと下位ビットに分割するものである場合、データ結合部１２１は、セレクタ１１９から受け付けたデータを上位ビット、セレクタ１２０から受け付けたデータを下位ビットとしてデータを結合するものとする。つまり、この場合、データ結合部１２１は、データ分割部１１４により選択された各部分データの格納先に応じて、データ分割部１１４への入力データを復元するように複数の部分データから暗号処理対象データに結合するといえる。
【００４６】
ラウンド鍵生成部１２３は、秘密鍵２２を入力としてラウンド鍵Ｋｉを生成し、ラウンド処理部１２２へ出力する。
【００４７】
ラウンド処理部１２２は、データ結合部１２１からの出力結果に対してラウンド処理を行い、処理結果をセレクタ１１３及びレジスタ１２４に出力する。ここで、ラウンド処理は、置換や転置、論理演算、算術演算などにより構成された処理であり、多くの共通鍵暗号は、複数ラウンドのラウンド処理により入力データを攪拌する事で、十分な暗号強度を実現する。
【００４８】
レジスタ１２４は、ラウンド処理部１２２からの出力結果を格納する。そして、レジスタ１２４は、暗号処理完了時に、暗号処理結果として出力データ２３を出力する。
【００４９】
尚、選択制御部１１１は、入力データがデータ分割部１１４に入力される度に、選択制御信号を出力することが望ましい。または、選択制御部１１１は、ラウンド処理部１２２においてラウンド処理が行われる度に選択制御信号を出力しても構わない。これにより、レジスタ１１７及び１１８に部分データが格納される度に、格納先を切り替えることとなり、攻撃者におけるレジスタ遷移推測をより困難にし、ＤＰＡ等の対策をより効果的に施すことができる。
【００５０】
さらに、本発明の実施の形態１では、データ分割部１１４が、ラウンド処理部１２２における暗号処理対象データに対する暗号処理の結果を、入力データとする。そして、選択制御部１１１は、暗号処理の再帰的な実行に応じて、選択制御信号を出力するものである。これにより、回路規模を抑えつつ、ＤＰＡ等の対策を施すことができる。
【００５１】
図２は、本発明の実施の形態１にかかる暗号処理回路１００の暗号処理におけるタイミングチャートである。図２のタイミングチャートにおける各符号は、上段からそれぞれ以下の意味を示す。
［ＣＬＫ］：クロック信号
［Ｋｅｙ］：秘密鍵
［Ｄ＿ｉｎ］：入力データ（平文）
［Ｋｉ］：ラウンド鍵生成部１２３にて生成されるラウンド鍵
［Ｓｔａｒｔ］：暗号処理開始信号
［Ｓｅｌ］：選択制御部１１１で生成される選択制御信号
［Ｒｅｇ＿１］：レジスタ１１７の格納データ
［Ｒｅｇ＿２］：レジスタ１１８の格納データ
［Ｆ＿ｉｎ］：ラウンド処理部１２２の入力データ
［Ｆ＿ｏｕｔ］：ラウンド処理部１２２の出力データ
［Ｆｉｎ＿Ｆｌａｇ］：暗号処理終了信号
［Ｒｅｇ＿ｏ］：出力データ（暗号文）
【００５２】
最初に、開始信号であるＳｔａｒｔ（図1には示さず）がＨｉｇｈになる。それに伴い、セレクタ１１３は、入力データＤ０を選択する。データ分割部１１４は、入力データＤ０を部分データＤ０＿Ｒ及びＤ０＿Ｌに分割する。ここでは、部分データＤ０＿Ｒが上位ビットであり、部分データＤ０＿Ｌが下位ビットであるものとする。そして、データ分割部１１４は、部分データＤ０＿Ｒをセレクタ１１５の入力端子"０"及びセレクタ１１６の入力端子"１"に出力する。また、データ分割部１１４は、部分データＤ０＿Ｌをセレクタ１１５の入力端子"１"及びセレクタ１１６の入力端子"０"に出力する。
【００５３】
この時、選択制御信号ＳｅｌはＨｉｇｈである。そのため、クロック信号ＣＬＫの立ち上がりにおいて、セレクタ１１５は、選択制御信号Ｓｅｌに基づき入力端子"１"を選択し、部分データＤ０＿Ｌをレジスタ１１７に格納し、セレクタ１１６は、選択制御信号Ｓｅｌに基づき入力端子"１"を選択し、部分データＤ０＿Ｒをレジスタ１１８に格納する。
【００５４】
次に、選択制御信号Ｓｅｌが反転し、Ｌｏｗとなる。これにより、セレクタ１１９は、選択制御信号Ｓｅｌに基づき入力端子"１"を選択し、レジスタ１１８に格納されている部分データＤ０＿Ｒをデータ結合部１２１へ出力する。また、セレクタ１２０は、選択制御信号Ｓｅｌに基づき入力端子"１"を選択し、レジスタ１１７に格納されている部分データＤ０＿Ｌをデータ結合部１２１へ出力する。
【００５５】
そして、データ結合部１２１は、セレクタ１１９から受け付けた部分データＤ０＿Ｒを上位ビット、セレクタ１２０から受け付けた部分データＤ０＿Ｌを下位ビットとして結合する。この場合、結合されたデータは、入力データＤ０となり、データ分割部１１４に入力されたデータと同一のもの、つまり復元されたこととなる。
【００５６】
その後、ラウンド処理部１２２は、データ結合部１２１により復元された入力データＤ０に対するラウンド処理を行い、出力データＤ１を出力する。
【００５７】
そして、セレクタ１１３は、出力データＤ１を選択してデータ分割部１１４へ出力する。データ分割部１１４は、データＤ１を部分データＤ１＿Ｒ及びＤ１＿Ｌに分割する。ここでは、部分データＤ１＿Ｒが上位ビットであり、部分データＤ１＿Ｌが下位ビットであるものとする。そして、データ分割部１１４は、部分データＤ１＿Ｒをセレクタ１１５の入力端子"０"及びセレクタ１１６の入力端子"１"に出力する。また、データ分割部１１４は、部分データＤ１＿Ｌをセレクタ１１５の入力端子"１"及びセレクタ１１６の入力端子"０"に出力する。
【００５８】
このとき、選択制御信号ＳｅｌがＬｏｗである。そのため、クロック信号ＣＬＫの立ち上がりにおいて、セレクタ１１５は、選択制御信号Ｓｅｌに基づき入力端子"０"を選択し、部分データＤ１＿Ｒをレジスタ１１７に格納し、セレクタ１１６は、選択制御信号Ｓｅｌに基づき入力端子"０"を選択し、部分データＤ１＿Ｌをレジスタ１１８に格納する。
【００５９】
以降、ラウンド処理を、選択制御信号Ｓｅｌを反転しながら規定の回数（ｎ回）繰り返す。その後、終了信号ＥｎｄがＨｉｇｈとなり、クロック信号ＣＬＫの立ち上がりで、ラウンド処理部１２２の出力データＤｎをレジスタ１２４に格納し、出力データＤｎを暗号（復号）文として出力する。
【００６０】
このように、本発明の実施の形態１にかかる暗号処理回路１００は、ラウンド処理結果を格納するレジスタにおいて、同一のビット位置に連続して同じビット位置のデータを格納しないことで、攻撃者によるレジスタのビット変化の推測を困難とすることで、特許文献１と同様にＤＰＡ等を実施しにくくすることができる。その上、本発明の実施の形態１では、ラウンド処理結果を格納するレジスタへの入力データの分割及び選択と、レジスタからの出力データの選択及び結合する回路構成である。そのため、ラウンド処理部１２２やラウンド鍵生成部１２３を複数準備する必要がない。また、レジスタのサイズも入力データを保持する分だけ準備すれば良い。よって、特許文献１に比べて、回路規模増加を抑える事ができる。
【００６１】
以上のことから、本発明の実施の形態１により、サイドチャネル情報を用いた電力差分解析又は電磁波等の解析による攻撃への対策を施し、かつ、回路規模増加を抑えることができる。
【００６２】
尚、本発明の実施の形態１にかかる暗号処理回路１００は、暗号処理として動作を説明したが、復号処理でもよい。
【００６３】
また、本発明の実施の形態１にかかる暗号処理回路１００は、データ分割部１１４の内部にセレクタ１１５及び１１６の機能を有していても構わない。つまり、データ分割部１１４は、選択制御信号に基づいて、格納先を複数のデータ保持部の中から選択することとなる。その場合、データ分割部１１４の出力の一方が直接、レジスタ１１７に接続され、他方が直接、レジスタ１１８に接続される。そして、選択制御部１１１は、データ分割部１１４に対して選択制御信号を出力することとなる。
【００６４】
同様に、本発明の実施の形態１にかかる暗号処理回路１００は、データ結合部１２１の内部にセレクタ１１９及び１２０の機能を有していても構わない。つまり、データ結合部１２１は、選択制御信号に基づいて、複数の部分データから暗号処理対象データに結合することとなる。その場合、データ結合部１２１は、レジスタ１１７及び１１８の出力が直接、接続されることとなる。選択制御部１１１は、データ結合部１２１に対して選択制御信号を出力することとなる。
【００６５】
また、選択制御部１１１は、データ分割部１１４への入力データの分割方法を制御するための分割制御信号をデータ分割部１１４及びデータ結合部１２１へ出力するようにしてもよい。そして、このとき、データ分割部１１４は、分割制御信号に基づいて、暗号処理済みのデータを複数の部分データに分割し、データ結合部１２１は、分割制御信号に基づいて、複数の部分データから暗号処理対象データに結合する。つまり、入力データを上位ビットと下位ビットに分割するか、奇数ビットと偶数ビットに分割するか、又は、ランダムに選択したビットごとに分割するかなどを分割制御信号により制御しても構わない。
【００６６】
＜発明の実施の形態２＞
上述した発明の実施の形態１にかかる暗号処理回路１００は、同一回路にてラウンド処理を規定回数繰り返すループ構成としたが、本発明の実施の形態２にかかる暗号処理回路１０１は、２個以上の回路を接続したパイプライン構成とした場合の例である。
【００６７】
図３は、本発明の実施の形態２にかかる暗号処理回路１０１の構成を示すブロック図である。尚、図３において、図１と同等の構成については同一の符号を付し、説明を省略するものとする。
【００６８】
暗号処理回路１０１は、選択制御部１１１と、ラウンド処理回路１３０ａ、１３０ｂ、・・・及び１３０ｎと、レジスタ１２４とを備える。また、暗号処理回路１００は、入力データ２１と秘密鍵２２とを入力し、ラウンド処理回路１３０ａ、１３０ｂ、・・・及び１３０ｎにより直列に暗号化を行い、出力データ２３として出力する半導体集積回路である。入力データ２１が平文である場合には、出力データ２３は暗号文であり、入力データ２１が暗号文である場合には、出力データ２３は平文である。
【００６９】
選択制御部１１１は、ラウンド処理回路１３０ａ、１３０ｂ、・・・及び１３０ｎのそれぞれに対して選択制御信号を出力する。
【００７０】
ラウンド処理回路１３０ａは、図１の遅延器１１２と、データ分割部１１４と、セレクタ１１５及び１１６と、レジスタ１１７及び１１８と、セレクタ１１９及び１２０と、データ結合部１２１と、ラウンド処理部１２２と、ラウンド鍵生成部１２３とを備える。また、ラウンド処理回路１３０ａは、入力データ２１及び秘密鍵２２を受け付けて、暗号処理結果をラウンド処理回路１３０ｂへ出力する。
【００７１】
ラウンド処理回路１３０ｂは、ラウンド処理回路１３０ａからの出力及び秘密鍵２２を受け付けて、暗号処理結果をラウンド処理回路１３０ｃ（不図示）へ出力する。以降、ラウンド処理回路１３０ｎは、ラウンド処理回路１３０ｎ−１（不図示）からの出力及び秘密鍵２２を受け付けて、暗号処理結果をレジスタ１２４へ出力する。尚、ラウンド処理回路１３０ｂ〜１３０ｎの内部構成は、ラウンド処理回路１３０ａと同等であるため、図示及び説明を省略する。
【００７２】
尚、ラウンド処理回路１３０ａ乃至１３０ｎのそれぞれに、ラウンド鍵生成部１２３を含まなくても構わない。例えば、暗号処理回路１０１内に一つのラウンド鍵生成部を備えるようにしても良い。その場合、当該一つのラウンド鍵生成部は、複数の異なるラウンド鍵を生成し、それぞれをラウンド処理回路１３０ａ乃至１３０ｎへ入力するようにすればよい。または、暗号処理回路１０１内にラウンド鍵生成部を備えず、暗号処理回路１０１外において、複数の異なるラウンド鍵を生成し、生成された複数のラウンド鍵を外部からラウンド処理回路１３０ａ乃至１３０ｎへ入力させるようにしてもよい。
【００７３】
このように、ラウンド処理回路１３０ａ〜１３０ｎをハードウェアとして個別に搭載することで、上述した発明の実施の形態１に比べて、暗号処理を高速化することができる。そして、この場合であっても、特許文献１にかかる暗号処理回路３００をパイプライン構成とした場合に比べて、回路規模を抑えることができる。
【００７４】
＜その他の発明の実施の形態＞
尚、本発明の実施の形態１にかかる暗号処理回路１００が備えるレジスタ１１７及び１１８は、３以上のレジスタ群であってもよい。その場合、当該レジスタ群に対応する数の前段及び後段のセレクタをそれぞれ備えることとなる。そして、例えば、データ分割部１１４は、入力データをレジスタ数分の部分データに分割し、各レジスタの入力端子へ部分データのいずれかを出力することとなる。そして、選択制御部１１１は、各レジスタに対して選択制御信号を出力する。その際、各レジスタに対して、部分データのうちいずれを入力させるかは任意の組合せで構わない。同様に、データ結合部１２１は、レジスタ数分のセレクタから各部分データを受け付けて、結合することとなる。
【００７５】
また、本発明は次のように言い換えることができる。すなわち、本発明にかかる共通鍵暗号を搭載した半導体集積回路は、入力データを２つ以上に分割する分割部と、前記分割部で分割したデータを保持するためのデータ保持レジスタと、前記データ保持レジスタの入力および出力を選択するセレクタと、分割したデータを結合する結合部を有する。これにより、攻撃者は２つ以上に分割されたデータがどのデータ保持レジスタに保持されたのかの判別が出来ないためにデータ保持レジスタのビット変化の推測が困難となり、特許文献１と同様にＤＰＡを実施できにくくすることができる。さらに、データ保持レジスタのサイズも入力データを保持する分だけ準備すれば良い為、特許文献１に比べて回路規模増加を抑える事が可能となる。
【００７６】
尚、本発明は半導体集積回路に関し、特に、ハードウェア実装された共通鍵暗号において、暗号処理時に漏洩するサイドチャネル情報を用いた電力差分解析への耐性を向上させる暗号処理回路に関するものである。
【００７７】
また、本発明は、暗号処理装置の分野に関するものであり、特許文献１の課題であったハードウェア実装された共通鍵暗号の処理中間データの遷移が、サイドチャネル攻撃の一つである差分電力又は電磁波解析に対して脆弱であるという問題に対して、データ保持レジスタと正規データを分割し、分割したデータの格納先である保持レジスタを、選択制御回路により、暗号処理を行う度に変化させることで、攻撃者のレジスタ遷移推測を困難にすることを可能にした。
【００７８】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【００７９】
１００  暗号処理回路
１０１  暗号処理回路
１１１  選択制御部
１１２  遅延器
１１３  セレクタ
１１４  データ分割部
１１５  セレクタ
１１６  セレクタ
１１７  レジスタ
１１８  レジスタ
１１９  セレクタ
１２０  セレクタ
１２１  データ結合部
１２２  ラウンド処理部
１２３  ラウンド鍵生成部
１２４  レジスタ
１３０ａ  ラウンド処理回路
１３０ｂ  ラウンド処理回路
１３０ｎ  ラウンド処理回路
２１  入力データ
２２  秘密鍵
２３  出力データ
３００  暗号処理回路
３０１  初期置換部
３０２  逆置換部
３１０  ＤＥＳ演算回路
３１１  レジスタ
３１２  レジスタ
３１３  Ｆ関数部
３２０  ＤＥＳ演算回路
３２１  レジスタ
３２２  レジスタ
３２３  Ｆ関数部
３５１  秘密鍵
３５２  ダミー鍵
３５３  第１鍵スケジュール部
３６１  ダミー鍵
３６２  第２鍵スケジュール部
ＳＷ１ｐ  スイッチ
ＳＷ１ｑ  スイッチ
ＳＷ２ｐ  スイッチ
ＳＷ２ｑ  スイッチ
ＳＷ３  スイッチ
４００  暗号処理回路
４１０  セレクタ
４２０  レジスタ
４３０  ラウンド処理部
４４０  レジスタ
４５０  ラウンド鍵生成部
ＣＬＫ  クロック信号
Ｋｅｙ  秘密鍵
Ｄ＿ｉｎ  入力データ
Ｋｉ  ラウンド鍵
Ｓｔａｒｔ  暗号処理開始信号
Ｓｅｌ  選択制御信号
Ｒｅｇ  格納データ
Ｒｅｇ１  格納データ
Ｒｅｇ２  格納データ
Ｆ＿ｉｎ  入力データ
Ｆ＿Ｏｕｔ  出力データ
Ｆｉｎ＿Ｆｌａｇ  暗号処理終了信号
Ｅｎｄ  暗号処理終了信号
Ｒｅｇ＿ｏ  出力データ
Ｄ０〜Ｄｎ  データ
Ｄ０＿Ｒ〜Ｄｎ＿Ｒ  部分データ
Ｄ０＿Ｌ〜Ｄｎ＿Ｌ  部分データ
Ｋ１〜Ｋｎ  ラウンド鍵
【図１】
2012083542.tif 000003
【図２】
2012083542.tif 000004
【図３】
2012083542.tif 000005
【図４】
2012083542.tif 000006
【図５】
2012083542.tif 000007
【図６】
2012083542.tif 000008