(57)【要約】      （修正有）【課題】差分電力解析に高い耐性を持たせる。【解決手段】SubBytes／ShiftRows／MixColumnsの演算を行う処理部と、ラウンド鍵を用いてＸＯＲ演算を行うＸＯＲ部とを交互に２段以上縦続接続した縦続接続回路と、縦続接続回路の各々の処理部の出力データから１つを選択するセレクタ１１と、セレクタ１１から出力するデータへラウンド鍵によりＸＯＲ演算を行うＸＯＲ部２と、ＸＯＲ部２の出力データをクロックにより保持するレジスタ３と、平文データへラウンド鍵により演算を行うＸＯＲ部２の出力データとレジスタ３の出力データの一方を選択して縦続接続回路の初段の処理部１０に入力するセレクタ１とを備える。初頭ラウンド演算ではセレクタ１がＸＯＲ部２の出力データを選択し、最終ラウンド演算ではセレクタ１１で出力データが選択される処理部１０のいずれかがShiftRows演算部の出力をセレクタで選択する。【選択図】図１
2009206593.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵を元に生成された複数のラウンド鍵を使用して、入力した平文データに対してＮｒ回のラウンド演算を行い、前記平文データを暗号化して得た暗号文データを出力する暗号化方法において、
２回以上のラウンド演算を１クロックで行うステップを含ませることで、前記Ｎｒ回のラウンド演算を前記Ｎｒよりも少ないクロック数にて行うことを特徴とする暗号化方法。
【請求項２】
暗号鍵を元に生成された複数のラウンド鍵を使用して、入力した平文データに対して複数回のラウンド演算を行い、前記平文データを暗号化して得た暗号文データを出力する暗号化装置において、
所定の演算を行う第１演算手段と前記ラウンド鍵を用いて演算を行う第２演算手段とを交互に２段以上縦続接続した縦続接続回路と、
該縦続接続回路の各々の第１演算手段の出力データのうちから１つを選択する第１セレクタと、
該第１セレクタから出力する出力データに対して前記ラウンド鍵により演算を行う第３演算手段と、
該第３演算手段の出力データをクロックにより保持するレジスタと、
前記平文データに対して前記ラウンド鍵により演算を行う第４演算手段と、
該第４演算手段の出力データと前記レジスタの出力データの一方を選択して前記縦続接続回路の初段の第１演算手段に入力する第２セレクタとを備え、
初頭ラウンド演算では前記第２セレクタが前記第４演算手段の出力データを選択し、最終ラウンド演算では前記第１セレクタで出力データが選択される前記第１演算手段が最終ラウンド演算用に切りかわるようにし、前記レジスタから暗号文データを取り出すことを特徴とする暗号化装置。
【請求項３】
暗号鍵を元に生成された複数のラウンド鍵を使用して、入力した平文データに対して複数回のラウンド演算を行い、前記平文データを暗号化して得た暗号文データを出力する暗号化装置において、
所定の演算を行う第１演算手段と前記ラウンド鍵を用いて演算を行う第２演算手段とを交互に２段以上縦続接続した縦続接続回路と、
該縦続接続回路の各々の第１演算手段の出力データのうちから１つを選択する第１セレクタと、
該第１セレクタの出力データと前記平文データの一方を選択する第２セレクタと、
該第２セレクタの出力データを前記ラウンド鍵により演算する第３演算手段と、
該第３演算手段の出力データをクロックにより保持して前記縦続接続回路の初段の第１演算手段に入力するレジスタとを備え、
初頭ラウンド演算では前記第２セレクタが前記平文データを選択し、最終ラウンド演算では前記第１セレクタで出力データが選択される前記第１演算手段が最終ラウンド演算用に切りかわるようにし、前記レジスタから暗号文データを取り出すことを特徴とする暗号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のラウンド演算によるブロック暗号化に対する解析法の１つである差分電力解析（ＤＰＡ：Differential Power Analysis）に対して耐性を持たせた暗号化方法および装置に関するものである。
【背景技術】
【０００２】
共通鍵暗号化方式として、ＤＥＳ（Data Encryption Standard）が主流となっていたが、近年ではデータ保守性の観点から、より強固な暗号化技術であるＡＥＳ（Advanced Encryption Standard）が使用されるようになっている。
【０００３】
このＡＥＳの暗号化アルゴリズムには、Rijndael（ラインダール）のアルゴリズムが使用される。このアルゴリズムは、入力する平文データを１２８ビットの固定長データに順次分割して、１２８ビット毎にブロック暗号化するものである。すなわち、１２８ビットの平文データに対して行うSubBytes／ShiftRows／MixColumns／XORの４つの演算処理を１ラウンドとして、複数ラウンド分の演算を繰り返し適用するものである。このラウンド数は暗号鍵のビット長によって異なり、１２８ビット鍵では１１、１９２ビット鍵では１３、２５６ビット鍵では１５である。なお、最初のラウンドではＸＯＲの演算だけが行われ、最終のラウンドではMixColumnsを除いた３つの演算が行われる。ＸＯＲの演算は、暗号鍵を元に作成された複数のラウンド鍵を使用して行われる。
【０００４】
図３は従来のＡＥＳ暗号化装置の概略構成を示すブロック図である。上記のように、ＡＥＳの演算では総ラウンド数が暗号鍵のビット長で変化するが、ここでは総ラウンド数をＮｒで表す。入力された暗号鍵は、キースケジューラ８へ取り込まれ、このキースケジューラ８において、ラウンド鍵が生成される。ラウンド鍵は各ラウンドで使用される暗号鍵であり、入力された暗号鍵を元にして決まった演算によってラウンド毎に生成される。ラウンド数はコントローラ９で管理され、クロックごとにインクリメントされる。キースケジューラ８は、コントローラ９から受け取ったラウンド数に従って演算してラウンド鍵を生成し、ＸＯＲ部２へ出力する。ＸＯＲ部２は、セレクタ１を介して入力された１２８ビットの平文データとラウンド鍵とでＸＯＲ演算を行い、その結果をレジスタ３に送る。平文データがラウンド鍵とＸＯＲ演算されるのは、最初のラウンドのときのみである。よって、セレクタ１が平文データを選択するのはラウンド数が１のときのみである。セレクタ１の制御は、コントローラ９により現在のラウンド数に従って行われる。レジスタ３から読み出された１２８ビットのデータは、SubBytes演算部４、ShiftRows演算部５、MixColumns演算部６でそれぞれ順次演算された後、セレクタ７を介してセレクタ１にループバックされる。そして、再びＸＯＲ部２に入力され、キースケジューラ８から出力される２番目のラウンド鍵とＸＯＲ演算され、レジスタ３に格納される。以上の処理がラウンド数がＮｒに達するまで繰り返される。ただし、ラウンド数がＮｒに一致する最後のラウンドでは、MixColumns演算部６での演算は行われないため、セレクタ７はShiftRows演算部５の出力データを選択する。この制御はコントローラ９により、ラウンド数に従って行われる。総ラウンド数Ｎｒまで演算が行われると、暗号処理は終了し、レジスタ３に格納された１２８ビットデータが、暗号文データとして出力される。
【０００５】
ところで、上記のような暗号化は、半導体回路を使用した電気的な処理で行われるため、その電力波形に処理データや回路構造の情報が反映される。暗号処理中の電力波形を測定し解析することにより、そこに使用されている暗号鍵を推定する方法を電力解析という。単純に測定した波形で解析を行う方法を単純電力解析（ＳＰＡ：Simple Power Analysis)といい、この方法では、暗号処理で実行される演算の消費電力に大きな差が出ないと良好に解析することができない。上記のような総ラウンド数がＮｒ回のラウンド演算からなるブロック暗号化の場合、各ラウンドで実行される演算の消費電力に大きな違いが出ないため、単純電力解析では解析が困難である。
【０００６】
一方、暗号処理の電力波形を数千〜数万回測定し、そのデータを統計処理することで、わずかに表れる差異を増幅して、そこに使用されている暗号鍵を推定する方法を差分電力解析という。差分電力解析を使用すれば、電力波形に大きな違いが出ない複数のラウンド演算からなるブロック暗号化であっても、暗号鍵が推測されてしまう。
【０００７】
そこで、このような差分電力解析を回避するために、従来では、ダミーの暗号鍵を複数個用意して、正規暗号鍵が使用されるタイミングをランダムにする手法（特許文献１）、暗号化を行う度に内部回路を変更する手法（特許文献２）等が提案されている。
【特許文献１】特開２００７−６７９２４号公報
【特許文献２】特開平１３−２６８０７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところが、特許文献１に記載の手法は、ダミーの暗号鍵による演算が必要になるため、結果が出力されるまでに時間がかかる問題がある。また、特許文献２に記載の手法は、回路の書き換えに要するオーバーヘッドが大きく実用的とはいえない。
【０００９】
本発明の目的は、１クロック期間内にランダムな複数ラウンド分の演算が行なわれるようにして前記した問題を解決し、差分電力解析に高い耐性をもつ暗号化方法および装置を提供することである。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１にかかる発明は、暗号鍵を元に生成された複数のラウンド鍵を使用して、入力した平文データに対してＮｒ回のラウンド演算を行い、前記平文データを暗号化して得た暗号文データを出力する暗号化方法において、２回以上のラウンド演算を１クロックで行うステップを含ませることで、前記Ｎｒ回のラウンド演算を前記Ｎｒよりも少ないクロック数にて行うことを特徴とする。
請求項２にかかる発明は、暗号鍵を元に生成された複数のラウンド鍵を使用して、入力した平文データに対して複数回のラウンド演算を行い、前記平文データを暗号化して得た暗号文データを出力する暗号化装置において、所定の演算を行う第１演算手段と前記ラウンド鍵を用いて演算を行う第２演算手段とを交互に２段以上縦続接続した縦続接続回路と、該縦続接続回路の各々の第１演算手段の出力データのうちから１つを選択する第１セレクタと、該第１セレクタから出力する出力データに対して前記ラウンド鍵により演算を行う第３演算手段と、該第３演算手段の出力データをクロックにより保持するレジスタと、前記平文データに対して前記ラウンド鍵により演算を行う第４演算手段と、該第４演算手段の出力データと前記レジスタの出力データの一方を選択して前記縦続接続回路の初段の第１演算手段に入力する第２セレクタとを備え、初頭ラウンド演算では前記第２セレクタが前記第４演算手段の出力データを選択し、最終ラウンド演算では前記第１セレクタで出力データが選択される前記第１演算手段が最終ラウンド演算用に切りかわるようにし、前記レジスタから暗号文データを取り出すことを特徴とする。
請求項３にかかる発明は、暗号鍵を元に生成された複数のラウンド鍵を使用して、入力した平文データに対して複数回のラウンド演算を行い、前記平文データを暗号化して得た暗号文データを出力する暗号化装置において、所定の演算を行う第１演算手段と前記ラウンド鍵を用いて演算を行う第２演算手段とを交互に２段以上縦続接続した縦続接続回路と、該縦続接続回路の各々の第１演算手段の出力データのうちから１つを選択する第１セレクタと、該第１セレクタの出力データと前記平文データの一方を選択する第２セレクタと、該第２セレクタの出力データを前記ラウンド鍵により演算する第３演算手段と、該第３演算手段の出力データをクロックにより保持して前記縦続接続回路の初段の第１演算手段に入力するレジスタとを備え、初頭ラウンド演算では前記第２セレクタが前記平文データを選択し、最終ラウンド演算では前記第１セレクタで出力データが選択される前記第１演算手段が最終ラウンド演算用に切りかわるようにし、前記レジスタから暗号文データを取り出すことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、１クロック期間内にランダムな複数ラウンド分の演算を行なうことができるので、各クロック期間に実行されている演算を特定するのが困難になるため、差分電力解析を行うために必要な情報を正確に得られず、差分電力解析により暗号鍵を取り出すことが困難となり、耐性を持つ暗号化方法および装置を実現できる。また、短時間演算で暗号化を実現でき、内部回路構成変更も不要となる。
【発明を実施するための最良の形態】
【００１２】
差分電力解析を使用して暗号鍵を解析するためには、各クロック期間でどの演算処理が実行されているのかを正確に判断できなければならない。複数回のラウンド演算からなるブロック暗号化では、一般的に１ラウンドで演算される暗号化処理を１クロック期間で演算する。そこで、本発明では、１クロック期間にランダムな複数回分のラウンド演算を行うことで、解析対象の暗号処理がどのクロック期間で実行されているのかを判別困難にする。これにより、本来の暗号化処理に必要のない無駄なダミー回路による無駄な演算が不要となる。また、１クロック期間に複数ラウンドの演算を行うため、より少ないクロック数で高速に暗号演算を行うことが可能となる。
【００１３】
図１は差分電力解析に対する対策を施した本発明の実施例のＡＥＳ暗号化装置の概略構成を示すブロック図である。１０１〜１０Ｎは、図３で説明したSubBytes演算部４、ShiftRows演算部５、MixColumns演算部６、およびセレクタ７をまとめた処理部であり、Ｎ個設けられる。また、ＸＯＲ演算の処理部としては、ＸＯＲ部２以外に、同様のＮ個のＸＯＲ部２１〜２Ｎの設けられ、合計でＮ＋１個設けられる。そして、各処理部１０１〜１０Ｎの処理結果が、セレクタ１１によって選択され、ＸＯＲ部２で演算されてクロック毎にレジスタ３にループバックされる構成となっている。各ＸＯＲ部２，２１〜２Ｎにはキースケジューラ８からラウンド鍵が入力される。また、コントローラ９は、キースケジューラ８とセレクタ１，１１と各処理部１０１〜１０Ｎのセレクタ７をそれぞれ制御する。
【００１４】
なお、請求項２との関連では、第１演算手段の具体化は処理部１０１〜１０Ｎにより、第２演算手段の具体化はＸＯＲ部２２〜２Ｎにより、第３演算手段の具体化はＸＯＲ部２により、第４演算手段の具体化はＸＯＲ２１により、第１セレクタの具体化はセレクタ１１により、第２セレクタの具体化はセレクタ１により、それぞれ実施している。
【００１５】
したがって、最初のラウンドのみは、平文データをＸＯＲ部２１で演算するが、２番目のラウンド以降では、処理部１０１の出力をセレクタ１１によって選択すれば１ラウンド分の演算が１クロック期間で、処理部１０２の出力を選択すれば２ラウンド分の演算が１クロック期間で、・・・、処理部１０Ｎの出力を選択すればＮラウンド分の演算が１クロック期間でそれぞれ処理され、レジスタ３に格納される。最終ラウンド用の処理部では、その内部のセレクタ７によって、MixColumns演算部６の出力データが外され、Shift Rows演算部５からの出力データが選択される。
【００１６】
１クロック期間で演算するラウンド数はコントローラ９が乱数に基づいて決定する。コントローラ９は演算するラウンド数をキースケジューラ８に伝え、キースケジューラ８はそのときラウンド演算を行うＸＯＲ回路２、２１〜２Ｎの内のいずれか１以上にラウンド鍵を出力する。このとき、２以上のラウンド鍵を同時に出力する場合もある。また、コントローラ９は、演算するラウンド数に合わせてセレクタ１１に制御信号を送り、どのループバック出力を選択するのかを制御する。さらに、最終ラウンドに対するMixColumns演算部６のキャンセルのため、処理部１０１〜１０Ｎに制御信号を伝える。さらに、各クロック期間で演算されたラウンド数の合計が総ラウンド数Ｎｒになるように、ラウンド数を決定する。
【００１７】
例えば、総ラウンド数Ｎｒ＝１１のときは、入力した平文データに対して、最初の第１クロック期間においてＸＯＲ部２１と処理部１０１とＸＯＲ部２より最初の２ラウンド分の演算を行い、次の第２クロック期間において処理部１０１とＸＯＲ部２２、処理部１０２とＸＯＲ部２３、処理部１０３とＸＯＲ部２により次の３ラウンド分の演算を行い、次の第３クロック期間において処理部１０１とＸＯＲ部２２、処理部１０２とＸＯＲ部２３、処理部１０３とＸＯＲ部２４、処理部１０４とＸＯＲ部２により次の４ラウンド分の演算を行い、次の第４クロック期間において処理部１０１とＸＯＲ部２２、処理部１０２とＸＯＲ部２により次の２ラウンド分演算を行うことで、合計１１ラウンド分の演算が行われ、暗号化が完了する。なお、第１クロック期間における処理部１０１のセレクタ７、第２クロック期間における処理部１０１〜１０３のセレクタ７、第３クロック期間における処理部１０１〜１０４のセレクタ７、第４クロック期間における処理部１０１のセレクタ７は、それぞれMixColumns演算部６を選択するが、第４クロック期間における処理部１０２は、ShiftRows演算部５を選択する。
【００１８】
これにより、各クロック期間で複数ラウンド分の演算が行われるので、それぞれのクロック期間に実行されている演算を特定することが困難になり、差分電力解析を使用して暗号鍵を解析することが不可能になる。また、総ラウンド数よりもクロック数が少なくなり、暗号化完了までの演算時間が短くなる。
【００１９】
図２は本発明の別の実施例のＡＥＳ暗号化装置の概略構成を示すブロック図である。図１の構成と異なるところは、セレクタ１１の出力側にセレクタ１を介在させ、ここでセレクタ１１の出力データと平文データの一方を選択すること、およびこのセレクタ１の出力側にＸＯＲ部２１を接続することで、全体で必要なＸＯＲ部を図１の場合よりも１個少なくしたことである。
【００２０】
なお、請求項３との関連では、第１演算手段の具体化は処理部１０１〜１０Ｎにより、第２演算手段の具体化はＸＯＲ部２２〜２Ｎにより、第３演算手段の具体化はＸＯＲ部２１により、第１セレクタの具体化はセレクタ１１により、第２セレクタの具体化はセレクタ１により、それぞれ実施している。
【００２１】
本実施例では、ＸＯＲ部２１で行われる初頭ラウンド演算の結果がクロックでレジスタ３に取り込まれるので、平文データをＸＯＲ演算する初頭ラウンド演算は必ず１クロック期間で行われる。つまり、初頭ラウンド演算とそれより後段のラウンド演算を１クロック期間で行うことができないが、ＸＯＲ部が１個少なくなる利点がある。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施例のＡＥＳ暗号化装置の概略構成のブロック図である。
【図２】本発明の別の実施例のＡＥＳ暗号化装置の概略構成のブロック図である。
【図３】従来のＡＥＳ暗号化装置の概略構成のブロック図である。
【符号の説明】
【００２３】
１：セレクタ
２，２１〜２Ｎ：ＸＯＲ部
３：レジスタ
４：SubBytes演算部
５：ShiftRows演算部
６：MixColumns演算部
７：セレクタ
８：キースケジューラ
９：コントローラ
１０，１０１〜１０Ｎ：処理部
１１：セレクタ
【図１】
2009206593.tif 000003
【図２】
2009206593.tif 000004
【図３】
2009206593.tif 000005