(57)【特許請求の範囲】
【請求項１】
入力ラウンド関数値と同一のビット長を有するマスク値Ｍを生成するマスク値生成部と、
前記入力ラウンド関数値それぞれに対して前記マスク値Ｍを適用して第１マスキングラウンド関数値を生成するマスク値適用部と、
前記第１マスキングラウンド関数値にラウンドキー値を適用して第２マスキングラウンド関数値を生成するラウンドキー適用部と、
前記第２マスキングラウンド関数値に対してマスク加算演算を行って第３マスキングラウンド関数値を生成するマスク演算遂行部と、
前記第３マスキングラウンド関数値に対して循環シフト演算を行って第４マスキングラウンド関数値を生成するシフト演算遂行部と、
前記第４マスキングラウンド関数値に対して前記マスク値Ｍを用いた演算を行って出力ラウンド関数値を生成するシフト演算補正部と、を含んでなることを特徴とする、低電力暗号化装置。
【請求項２】
前記入力ラウンド関数値は、入力ラウンド関数値Ｘｉ［０］、入力ラウンド関数値Ｘｉ［１］、入力ラウンド関数値Ｘｉ［２］および入力ラウンド関数値Ｘｉ［３］であることを特徴とする、請求項１に記載の低電力暗号化装置。
【請求項３】
前記マスク値適用部は、
前記入力ラウンド関数値Ｘｉ［０］と前記マスク値Ｍに対して数式
【数１】
0005646008.tif 000100
に従って第１マスキングラウンド関数値Ｘｉ_１［０］を生成し、
前記入力ラウンド関数値Ｘｉ［１］と前記マスク値Ｍに対して数式
【数２】
0005646008.tif 000101
に従って第１マスキングラウンド関数値Ｘｉ_１［１］を生成し、
前記入力ラウンド関数値Ｘｉ［２］と前記マスク値Ｍに対して数式
【数３】
0005646008.tif 000102
に従って第１マスキングラウンド関数値Ｘｉ_１［２］を生成し、
前記入力ラウンド関数値Ｘｉ［３］と前記マスク値Ｍに対して数式
【数４】
0005646008.tif 000103
に従って第１マスキングラウンド関数値Ｘｉ_１［３］を生成することを特徴とする、請求項２に記載の低電力暗号化装置。（ここで、
【数５】
0005646008.tif 000104
は論理的排他和演算記号を意味する。）
【請求項４】
前記ラウンドキー値は、ラウンドキー値ＲＫｉ［０］、ラウンドキー値ＲＫｉ［１］、ラウンドキー値ＲＫｉ［２］、ラウンドキー値ＲＫｉ［３］、ラウンドキー値ＲＫｉ［４］、およびラウンドキー値ＲＫｉ［５］であることを特徴とする、請求項３に記載の低電力暗号化装置。
【請求項５】
前記ラウンドキー適用部は、
前記第１マスキングラウンド関数値Ｘｉ_１［０］と前記ラウンドキー値ＲＫｉ［０］
に対して数式
【数６】
0005646008.tif 000105
に従って第２マスキングラウンド関数値Ｘｉ_２［０］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［１］
に対して数式
【数７】
0005646008.tif 000106
に従って第２マスキングラウンド関数値Ｘｉ_２_１［１］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［２］
に対して数式
【数８】
0005646008.tif 000107
に従って第２マスキングラウンド関数値Ｘｉ_２_２［１］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［３］
に対して数式
【数９】
0005646008.tif 000108
に従って第２マスキングラウンド関数値Ｘｉ_２_１［２］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［４］
に対して数式
【数１０】
0005646008.tif 000109
に従って第２マスキングラウンド関数値Ｘｉ_２_２［２］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［３］と前記ラウンドキー値ＲＫｉ［５］
に対して数式
【数１１】
0005646008.tif 000110
に従って第２マスキングラウンド関数値Ｘｉ_２［３］を生成することを特徴とする、請求項４に記載の低電力暗号化装置。
【請求項６】
前記マスク演算遂行部は、
前記第２マスキングラウンド関数値Ｘｉ_２［０］と前記第２マスキングラウンド関数値Ｘｉ_２_１［１］に対して数式
【数１２】
0005646008.tif 000111
を満足する前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［１］を生成し、
前記第２マスキングラウンド関数値Ｘｉ_２_２［１］と前記第２マスキングラウンド関数値Ｘｉ_２_１［２］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［２］を生成し、
前記第２マスキングラウンド関数値Ｘｉ_２_２［２］と前記第２マスキングラウンド関数値Ｘｉ_２［３］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［３］を生成することを特徴とする、請求項５に記載の低電力暗号化装置。（ここで、
【数１３】
0005646008.tif 000112
はマスク加算演算記号、
【数１４】
0005646008.tif 000113
および
【数１５】
0005646008.tif 000114
それぞれは前記マスク値Ｍが適用された前記第２マスキングラウンド関数値を意味する。）
【請求項７】
前記シフト演算遂行部は、
前記第３マスキングラウンド関数値Ｘｉ_３［１］に対して数式Ｘｉ_４［１］＝ＲＯＬ９（Ｘｉ_３［１］）に従って第４マスキングラウンド関数値Ｘｉ_４［１］を生成し、
前記第３マスキングラウンド関数値Ｘｉ_３［２］に対して数式Ｘｉ_４［２］＝ＲＯＲ５（Ｘｉ_３［２］）に従って第４マスキングラウンド関数値Ｘｉ_４［２］を生成し、
前記第３マスキングラウンド関数値Ｘｉ_３［３］に対して数式Ｘｉ_４［３］＝ＲＯＲ３（Ｘｉ_３［３］）に従って第４マスキングラウンド関数値Ｘｉ_４［３］を生成することを特徴とする、請求項６に記載の低電力暗号化装置。（ここで、ＲＯＬa（ｘ）はｘを左にａビットだけ循環シフトした後に出力する関数を意味し、ＲＯＲａ（ｘ）はｘを右にａビットだけ循環シフトした後に出力する関数を意味する。）
【請求項８】
前記シフト演算補正部は、
前記第４マスキングラウンド関数値Ｘｉ_４［１］と前記マスク値Ｍに対して数式
【数１６】
0005646008.tif 000115
に従って出力ラウンド関数値Ｘｉ＋１［０］を生成し、
前記第４マスキングラウンド関数値Ｘｉ_４［２］と前記マスク値Ｍに対して数式
【数１７】
0005646008.tif 000116
に従って出力ラウンド関数値Ｘｉ＋１［１］を生成し、
前記第４マスキングラウンド関数値Ｘｉ_４［３］と前記マスク値Ｍに対して数式
【数１８】
0005646008.tif 000117
に従って出力ラウンド関数値Ｘｉ＋１［２］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［０］に対して数式Ｘｉ＋１［３］＝Ｘｉ_
１［０］に従って出力ラウンド関数値Ｘｉ＋１［３］を生成することを特徴とする、請求項７に記載の低電力暗号化装置。
【請求項９】
低電力暗号化装置を制御する方法であって、
マスク値生成部が、入力ラウンド関数値と同一のビット長を有するマスク値Ｍを生成する段階と、
マスク値適用部が、前記入力ラウンド関数値それぞれに対して前記マスク値Ｍを適用して第１マスキングラウンド関数値を生成する段階と、
ラウンドキー適用部が、前記第１マスキングラウンド関数値にラウンドキー値を適用して第２マスキングラウンド関数値を生成する段階と、
マスク演算遂行部が、前記第２マスキングラウンド関数値に対してマスク加算演算を行って第３マスキングラウンド関数値を生成する段階と、
シフト演算遂行部が、前記第３マスキングラウンド関数値に対して循環シフト演算を行って第４マスキングラウンド関数値を生成する段階と、
シフト演算補正部が、前記第４マスキングラウンド関数値に対して前記マスク値Ｍを用いた演算を行って出力ラウンド関数値を生成する段階とを含んでなることを特徴とする、低電力暗号化方法。
【請求項１０】
前記入力ラウンド関数値は、入力ラウンド関数値Ｘｉ［０］、入力ラウンド関数値Ｘｉ［１］、入力ラウンド関数値Ｘｉ［２］および入力ラウンド関数値Ｘｉ［３］であることを特徴とする、請求項９に記載の低電力暗号化方法。
【請求項１１】
前記入力ラウンド関数値それぞれに対して前記マスク値Ｍを適用して第１マスキングラウンド関数値を生成する段階は、
前記入力ラウンド関数値Ｘｉ［０］と前記マスク値Ｍに対して数式
【数１９】
0005646008.tif 000118
に従って第１マスキングラウンド関数値Ｘｉ_１［０］を生成し、
前記入力ラウンド関数値Ｘｉ［１］と前記マスク値Ｍに対して数式
【数２０】
0005646008.tif 000119
に従って第１マスキングラウンド関数値Ｘｉ_１［１］を生成し、
前記入力ラウンド関数値Ｘｉ［２］と前記マスク値Ｍに対して数式
【数２１】
0005646008.tif 000120
に従って第１マスキングラウンド関数値Ｘｉ_１［２］を生成し、
前記入力ラウンド関数値Ｘｉ［３］と前記マスク値Ｍに対して数式
【数２２】
0005646008.tif 000121
に従って第１マスキングラウンド関数値Ｘｉ_１［３］を生成することを特徴とする、請求項１０に記載の低電力暗号化方法。（ここで、
【数２３】
0005646008.tif 000122
は論理的排他和演算記号を意味する。）
【請求項１２】
前記ラウンドキー値は、ラウンドキー値ＲＫｉ［０］、ラウンドキー値ＲＫｉ［１］、
ラウンドキー値ＲＫｉ［２］、ラウンドキー値ＲＫｉ［３］、ラウンドキー値ＲＫｉ［４］およびラウンドキー値ＲＫｉ［５］であることを特徴とする、請求項１１に記載の低電力暗号化方法。
【請求項１３】
前記第１マスキングラウンド関数値にラウンドキー値を適用して第２マスキングラウンド関数値を生成する段階は、
前記第１マスキングラウンド関数値Ｘｉ_１［０］と前記ラウンドキー値ＲＫｉ［０］
に対して数式
【数２４】
0005646008.tif 000123
に従って第２マスキングラウンド関数値Ｘｉ_２［０］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［１］
に対して数式
【数２５】
0005646008.tif 000124
に従って第２マスキングラウンド関数値Ｘｉ_２_１［１］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［２］
に対して数式
【数２６】
0005646008.tif 000125
に従って第２マスキングラウンド関数値Ｘｉ_２_２［１］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［３］
に対して数式
【数２７】
0005646008.tif 000126
に従って第２マスキングラウンド関数値Ｘｉ_２_１［２］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［４］
に対して数式
【数２８】
0005646008.tif 000127
に従って第２マスキングラウンド関数値Ｘｉ_２_２［２］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［３］と前記ラウンドキー値ＲＫｉ［５］
に対して数式
【数２９】
0005646008.tif 000128
に従って第２マスキングラウンド関数値Ｘｉ_２［３］を生成することを特徴とする、請求項１２に記載の低電力暗号化方法。
【請求項１４】
前記第２マスキングラウンド関数値に対してマスク加算演算を行って第３マスキングラウンド関数値を生成する段階は、
前記第２マスキングラウンド関数値Ｘｉ_２［０］と前記第２マスキングラウンド関数値Ｘｉ_２_１［１］に対して数式
【数３０】
0005646008.tif 000129
を満足する前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［１］を生成し、
前記第２マスキングラウンド関数値Ｘｉ_２_２［１］と前記第２マスキングラウンド関
数値Ｘｉ_２_１［２］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［２］を生成し、
前記第２マスキングラウンド関数値Ｘｉ_２_２［２］と前記第２マスキングラウンド関数値Ｘｉ_２［３］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［３］を生成することを特徴とする、請求項１３に記載の低電力暗号化方法。（ここで、
【数３１】
0005646008.tif 000130
はマスク加算演算記号、
【数３２】
0005646008.tif 000131
および
【数３３】
0005646008.tif 000132
それぞれは前記マスク値Ｍが適用された前記第２マスキングラウンド関数値を意味する。）
【請求項１５】
前記第３マスキングラウンド関数値に対して循環シフト演算を行って第４マスキングラウンド関数値を生成する段階は、
前記第３マスキングラウンド関数値Ｘｉ_３［１］に対して数式Ｘｉ_４［１］＝ＲＯＬ９（Ｘｉ_３［１］）に従って第４マスキングラウンド関数値Ｘｉ_４［１］を生成し、
前記第３マスキングラウンド関数値Ｘｉ_３［２］に対して数式Ｘｉ_４［２］＝ＲＯＲ５（Ｘｉ_３［２］）に従って第４マスキングラウンド関数値Ｘｉ_４［２］を生成し、
前記第３マスキングラウンド関数値Ｘｉ_３［３］に対して数式Ｘｉ_４［３］＝ＲＯＲ３（Ｘｉ_３［３］）に従って第４マスキングラウンド関数値Ｘｉ_４［３］を生成することを特徴とする、請求項１４に記載の低電力暗号化方法。（ここで、ＲＯＬａ（ｘ）はｘを左にａビットだけ循環シフトした後に出力する関数を意味し、ＲＯＲａ（ｘ）はｘを右にａビットだけ循環シフトした後に出力する関数を意味する。）
【請求項１６】
前記第４マスキングラウンド関数値に対してマスク値Ｍを用いた演算を行って出力ラウンド関数値を生成する段階は、
前記第４マスキングラウンド関数値Ｘｉ_４［１］と前記マスク値Ｍに対して数式
【数３４】
0005646008.tif 000133
に従って出力ラウンド関数値Ｘｉ＋１［０］を生成し、
前記第４マスキングラウンド関数値Ｘｉ_４［２］と前記マスク値Ｍに対して数式
【数３５】
0005646008.tif 000134
に従って出力ラウンド関数値Ｘｉ＋１［１］を生成し、
前記第４マスキングラウンド関数値Ｘｉ_４［３］と前記マスク値Ｍに対して数式
【数３６】
0005646008.tif 000135
に従って出力ラウンド関数値Ｘｉ＋１［２］を生成し、
前記第１マスキングラウンド関数値Ｘｉ_１［０］に対して数式Ｘｉ＋１［３］＝Ｘｉ_
１［０］に従って出力ラウンド関数値Ｘｉ＋１［３］を生成することを特徴とする、請求項１５に記載の低電力暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、低電力暗号化装置及び方法に係り、より詳しくは、低電力暗号化アルゴリズムの中間演算値を乱数化することにより、差分電力解析攻撃に安全な暗号化アルゴリズムを提供することが可能な低電力暗号化装置および方法に関する。
【背景技術】
【０００２】
ブロック暗号は、各種機器の通信および保存資料の保安のための暗号アプリケーションで最も多く使用される核心要素であり、特定の長さ単位（６４ビット、１２８ビット）でデータを暗号化して機密性(confidentiality)を提供することが主な役割である。また、ハッシュ関数、メッセージ認証コード、乱数生成器などとしても活用される。このような用途に合わせて、ブロック暗号は、機器および暗号アプリケーション特性に適した性質を持つように設計されなければならず、機器に特化したチップまたは機器のＣＰＵで駆動されるソフトウェアとして実現される。
【０００３】
一方、ブロック暗号に対する攻撃として、１９９６年にＰａｕｌ Ｋｏｃｈｅｒによってサイドチャネル解析攻撃(Side Channel Analysis Attack)という攻撃方法が紹介されたことがある。サイドチャネル解析攻撃は、数学的理論を背景とする既存の暗号解析法とは異なり、暗号化アルゴリズムを実現した暗号化装置から発生する物理的情報を用いて暗号を攻撃する方法である。このようなサイドチャネル解析方攻撃で用いられる物理的情報には、アルゴリズムの演算時間、電力消耗量または放射された電磁気波などがある。このようなサイドチャネル解析攻撃は実際暗号化アルゴリズムが実現された暗号化装置に大きな脅威となっている。
【０００４】
特に、サイドチャネル解析攻撃の１種である電力解析攻撃(Power Analysis Attack)は、暗号アルゴリズムが動作するときに秘密キーに関連したデータが処理される時点で暗号化装置で測定された消費電力の特性を解析してキーを探し出す。電力解析攻撃は単純電力解析攻撃(Simple Power Analysis Attack)と差分電力解析攻撃(Differential Power Analysis Attack)に大別される。
【０００５】
一方、超軽量および低電力環境におけるＨ／Ｗ暗号演算を目的として開発された低電力暗号とアルゴリズム（Lightweight Low-power Encryption Algorithm、ＬＥＡ）に関連して、２００６年のＷｏｒｋｓｈｏｐ ｏｎ Ｃｒｙｐｔｏｇｒａｐｈｉｃ Ｈａｒｄｗａｒｅ ａｎｄ Ｅｍｂｅｄｄｅｄ Ｓｙｓｔｅｍｓにおける「HIGHT : A New Block Cipher Suitable for Low-Resource Device」論文にブロック暗号技法が公開されているが、この論文に公開されたブロック暗号技法は前述したサイドチャネル解析攻撃に弱くて安全性に対する脆弱点が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、サイドチャネル解析攻撃、特に電力解析攻撃に強い低電力暗号化を支援する装置および方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係る低電力暗号化装置は、入力ラウンド関数値と同一のビット長を有するマスク値Ｍを生成するマスク値生成部と、前記入力ラウンド関数値それぞれに対して前記マスク値Ｍを適用して第１マスキングラウンド関数値を生成するマスク値適用部と、前記第１ラウンド関数値にラウンドキー値を適用して第２マスキングラウンド関数値を生成するラウンドキー適用部と、前記第２マスキングラウンド関数値に対してマスク加算演算を行って第３マスキングラウンド関数値を生成するマスク演算遂行部と、前記第３マスキングラウンド関数値に対して循環シフト演算を行って第４マスキングラウンド関数値を生成するシフト演算遂行部と、前記第４マスキングラウンド関数値に対して前記マスク値Ｍを用いた演算を行って出力ラウンド関数値を生成するシフト演算補正部とを含んでなることを特徴とする。
【０００８】
この際、前記入力ラウンド関数値は、入力ラウンド関数値Ｘｉ［０］、入力ラウンド関数値Ｘｉ［１］、入力ラウンド関数値Ｘｉ［２］および入力ラウンド関数値Ｘｉ［３］であってもよい。
【０００９】
この際、前記マスク値適用部は、前記入力ラウンド関数値Ｘｉ［０］と前記マスク値Ｍに対して数式
【数１】
0005646008.tif 000002
【００１０】
に従って第１マスキングラウンド関数値Ｘｉ_１［０］を生成し、前記入力ラウンド関数値 Ｘｉ［１］と前記マスク値Ｍに対して数式
【数２】
0005646008.tif 000003
【００１１】
に従って第１マスキングラウンド関数値Ｘｉ_１［１］を生成し、前記入力ラウンド関数値Ｘｉ［２］と前記マスク値Ｍに対して数式
【数３】
0005646008.tif 000004
【００１２】
に従って第１マスキングラウンド関数値Ｘｉ_１［２］を生成し、前記入力ラウンド関数値Ｘｉ［３］と前記マスク値Ｍに対して数式
【数４】
0005646008.tif 000005
【００１３】
に従って第１マスキングラウンド関数値Ｘｉ_１［３］を生成することができる。ここで、
【数５】
0005646008.tif 000006
【００１４】
は論理的排他和演算記号を意味する。
【００１５】
この際、前記ラウンドキー値は、ラウンドキー値ＲＫｉ［０］、ラウンドキー値ＲＫｉ［１］、ラウンドキー値ＲＫｉ［２］、ラウンドキー値ＲＫｉ［３］、ラウンドキー値ＲＫｉ［４］、およびラウンドキー値ＲＫｉ［５］であってもよい。
【００１６】
この際、前記ラウンドキー適用部は、前記第１マスキングラウンド関数値Ｘｉ_１［０］と前記ラウンドキー値ＲＫｉ［０］に対して数式
【数６】
0005646008.tif 000007
【００１７】
に従って第２マスキングラウンド関数値Ｘｉ_２［０］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［１］に対して数式
【数７】
0005646008.tif 000008
【００１８】
に従って第２マスキングラウンド関数値Ｘｉ_２_１［１］を生成し、 前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［２］に対して数式
【数８】
0005646008.tif 000009
【００１９】
に従って第２マスキングラウンド関数値Ｘｉ_２_２［１］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［３］に対して数式
【数９】
0005646008.tif 000010
【００２０】
に従って第２マスキングラウンド関数値Ｘｉ_２_１［２］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［４］に対して数式
【数１０】
0005646008.tif 000011
【００２１】
に従って第２マスキングラウンド関数値Ｘｉ_２_２［２］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［３］と前記ラウンドキー値ＲＫｉ［５］に対して数式
【数１１】
0005646008.tif 000012
【００２２】
に従って第２マスキングラウンド関数値Ｘｉ_２［３］を生成することができる。
【００２３】
この際、前記マスク演算遂行部は、前記第２マスキングラウンド関数値Ｘｉ_２［０］と前記第２マスキングラウンド関数値Ｘｉ_２_１［１］に対して数式
【数１２】
0005646008.tif 000013
【００２４】
を満足する前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［１］を生成し、前記第２マスキングラウンド関数値Ｘｉ_２_２［１］と前記第２マスキングラウンド関数値Ｘｉ_２_１［２］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［２］を生成し、前記第２マスキングラウンド関数値Ｘｉ_２_２［２］と前記第２マスキングラウンド関数値Ｘｉ_２［３］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［３］を生成することができる。ここで、
【数１３】
0005646008.tif 000014
【００２５】
はマスク加算演算記号、
【数１４】
0005646008.tif 000015
【００２６】
および
【数１５】
0005646008.tif 000016
【００２７】
それぞれはマスク値Ｍが適用された第２マスキングラウンド関数値を意味する。
【００２８】
この際、前記シフト演算遂行部は、前記第３マスキングラウンド関数値Ｘｉ_３［１］に対して数式Ｘｉ_４［１］＝ＲＯＬ９（Ｘｉ_３［１］）に従って第４マスキングラウンド関数値Ｘｉ_４［１］を生成し、前記第３マスキングラウンド関数値Ｘｉ_３［２］に対して数式Ｘｉ_４［２］＝ＲＯＲ５（Ｘｉ_３［２］）に従って第４マスキングラウンド関数値Ｘｉ_４［２］を生成し、前記第３マスキングラウンド関数値Ｘｉ_３［３］に対して数式Ｘｉ_４［３］＝ＲＯＲ３（Ｘｉ_３［３］）に従って第４マスキングラウンド関数値Ｘｉ_４［３］を生成することができる。ここで、ＲＯＬａ（ｘ）はｘを左にａビットだけ循環シフトした後に出力する関数を意味し、ＲＯＲａ（ｘ）はｘを右にａビットだけ循環シフトした後に出力する関数を意味する。
【００２９】
この際、前記シフト演算補正部は、前記第４マスキングラウンド関数値Ｘｉ_４［１］と前記マスク値Ｍに対して数式
【数１６】
0005646008.tif 000017
【００３０】
に従って出力ラウンド関数値Ｘｉ＋１［０］を生成し、前記第４マスキングラウンド関数値Ｘｉ_４［２］と前記マスク値Ｍに対して数式
【数１７】
0005646008.tif 000018
【００３１】
に従って出力ラウンド関数値Ｘｉ＋１［１］を生成し、前記第４マスキングラウンド関数値Ｘｉ_４［３］と前記マスク値Ｍに対して数式
【数１８】
0005646008.tif 000019
【００３２】
に従って出力ラウンド関数値Ｘｉ＋１［２］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［０］に対して数式Ｘｉ＋１［３］＝Ｘｉ_１［０］に従って出力ラウンド関数値Ｘｉ＋１［３］を生成することができる。
【００３３】
また、上記目的を達成するために、本発明に係る低電力暗号化方法は、入力ラウンド関数値と同一のビット長を有するマスク値Ｍを生成する段階と、前記入力ラウンド関数値それぞれに対して前記マスク値Ｍを適用して第１マスキングラウンド関数値を生成する段階と、前記第１ラウンド関数値にラウンドキー値を適用して第２マスキングラウンド関数値を生成する段階と、前記第２マスキングラウンド関数値に対してマスク加算演算を行って第３マスキングラウンド関数値を生成する段階と、前記第３マスキングラウンド関数値に対して循環シフト演算を行って第４マスキングラウンド関数値を生成する段階と、前記第４マスキングラウンド関数値に対して前記マスク値Ｍを用いた演算を行って出力ラウンド関数値を生成する段階とを含んでなることを特徴とする。
【００３４】
この際、前記入力ラウンド関数値は、入力ラウンド関数値Ｘｉ［０］、入力ラウンド関数値Ｘｉ［１］、入力ラウンド関数値Ｘｉ［２］および入力ラウンド関数値Ｘｉ［３］であってもよい。
【００３５】
この際、前記入力ラウンド関数値それぞれに対して前記マスク値Ｍを適用して第１マスキングラウンド関数値を生成する段階は、前記入力ラウンド関数値Ｘｉ［０］と前記マスク値Ｍに対して数式
【数１９】
0005646008.tif 000020
【００３６】
に従って第１マスキングラウンド関数値Ｘｉ_１［０］を生成し、前記入力ラウンド関数値Ｘｉ［１］と前記マスク値Ｍに対して数式
【数２０】
0005646008.tif 000021
【００３７】
に従って第１マスキングラウンド関数値Ｘｉ_１［１］を生成し、前記入力ラウンド関数値Ｘｉ［２］と前記マスク値Ｍに対して数式
【数２１】
0005646008.tif 000022
【００３８】
に従って第１マスキングラウンド関数値Ｘｉ_１［２］を生成し、前記入力ラウンド関数値Ｘｉ［３］と前記マスク値Ｍに対して数式
【数２２】
0005646008.tif 000023
【００３９】
に従って第１マスキングラウンド関数値Ｘｉ_１［３］を生成することができる。
【００４０】
この際、前記ラウンドキー値は、ラウンドキー値ＲＫｉ［０］、ラウンドキー値ＲＫｉ［１］、ラウンドキー値ＲＫｉ［２］、ラウンドキー値ＲＫｉ［３］、ラウンドキー値ＲＫｉ［４］およびラウンドキー値ＲＫｉ［５］であってもよい。
【００４１】
この際、第１ラウンド関数値にラウンドキー値を適用して第２マスキングラウンド関数値を生成する段階は、前記第１マスキングラウンド関数値Ｘｉ_１［０］と前記ラウンドキー値ＲＫｉ［０］に対して数式
【数２３】
0005646008.tif 000024
【００４２】
に従って第２マスキングラウンド関数値Ｘｉ_２［０］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［１］に対して数式
【数２４】
0005646008.tif 000025
【００４３】
に従って第２マスキングラウンド関数値Ｘｉ_２_１［１］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［１］と前記ラウンドキー値ＲＫｉ［２］に対して数式
【数２５】
0005646008.tif 000026
【００４４】
に従って第２マスキングラウンド関数値Ｘｉ_２_２［１］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［３］に対して数式
【数２６】
0005646008.tif 000027
【００４５】
に従って第２マスキングラウンド関数値Ｘｉ_２_１［２］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［２］と前記ラウンドキー値ＲＫｉ［４］に対して数式
【数２７】
0005646008.tif 000028
【００４６】
に従って第２マスキングラウンド関数値Ｘｉ_２_２［２］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［３］と前記ラウンドキー値ＲＫｉ［５］に対して数式
【数２８】
0005646008.tif 000029
【００４７】
に従って第２マスキングラウンド関数値Ｘｉ_２［３］を生成することができる。
【００４８】
この際、前記第２マスキングラウンド関数値に対してマスク加算演算を行って第３マスキングラウンド関数値を生成する段階は、前記第２マスキングラウンド関数値Ｘｉ_２［０］と前記第２マスキングラウンド関数値Ｘｉ_２_１［１］に対して数式
【数２９】
0005646008.tif 000030
【００４９】
を満足する前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［１］を生成し、前記第２マスキングラウンド関数値Ｘｉ_２_２［１］と前記第２マスキングラウンド関数値Ｘｉ_２_１［２］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［２］を生成し、前記第２マスキングラウンド関数値Ｘｉ_２_２［２］と前記第２マスキングラウンド関数値Ｘｉ_２［３］に対して前記マスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［３］を生成することができる。
【００５０】
この際、前記第３マスキングラウンド関数値に対して循環シフト演算を行って第４マスキングラウンド関数値を生成する段階は、前記第３マスキングラウンド関数値                                                                                 Ｘｉ_３［１］に対して数式Ｘｉ_４［１］＝ＲＯＬ９（Ｘｉ_３［１］）に従って第４マスキングラウンド関数値Ｘｉ_４［１］を生成し、前記第３マスキングラウンド関数値Ｘｉ_３［２］に対して数式Ｘｉ_４［２］＝ＲＯＲ５（Ｘｉ_３［２］）に従って第４マスキングラウンド関数値Ｘｉ_４［２］を生成し、前記第３マスキングラウンド関数値Ｘｉ_３［３］に対して数式Ｘｉ_４［３］＝ＲＯＲ３（Ｘｉ_３［３］）に従って第４マスキングラウンド関数値Ｘｉ_４［３］を生成することができる。
【００５１】
この際、前記第４マスキングラウンド関数値に対してマスク値Ｍを用いた演算を行って出力ラウンド関数値を生成する段階は、前記第４マスキングラウンド関数値Ｘｉ_４［１］と前記マスク値Ｍに対して数式
【数３０】
0005646008.tif 000031
【００５２】
に従って出力ラウンド関数値Ｘｉ＋１［０］を生成し、前記第４マスキングラウンド関数値Ｘｉ_４［２］と前記マスク値Ｍに対して数式
【数３１】
0005646008.tif 000032
【００５３】
に従って出力ラウンド関数値Ｘｉ＋１［１］を生成し、前記第４マスキングラウンド関数値Ｘｉ_４［３］と前記マスク値Ｍに対して数式
【数３２】
0005646008.tif 000033
【００５４】
に従って出力ラウンド関数値Ｘｉ＋１［２］を生成し、前記第１マスキングラウンド関数値Ｘｉ_１［０］に対して数式Ｘｉ＋１［３］＝Ｘｉ_１［０］に従って出力ラウンド関数値Ｘｉ＋１［３］を生成することができる。
【発明の効果】
【００５５】
本発明の暗号化アルゴリズムによれば、従来の暗号化装置に対して少ないリソースを用いて電力解析攻撃に対する安全性が保障される暗号化アルゴリズムを適用することができるという効果がある。
【図面の簡単な説明】
【００５６】
【図１】本発明に係る低電力暗号化装置の構成を示すブロック図である。
【図２】本発明に係る低電力暗号化装置で行われる暗号化アルゴリズムを示す図である。
【図３】本発明に係る低電力暗号化方法を説明するための流れ図である。
【図４】従来の低電力暗号化アルゴリズムに対して差分電力解析攻撃を行った場合、候補キーの値に対する相関係数を示す図である。
【図５】本発明に係る低電力暗号化アルゴリズムに対して差分電力解析攻撃を行った場合、候補キーの値に対する相関係数を示す図である。
【発明を実施するための形態】
【００５７】
以下、本発明を添付図面に基づいて詳細に説明する。ここで、反復される説明と、本発明の要旨を無駄に乱すおそれのある公知の機能および構成に対する詳細な説明は省略する。本発明の実施形態は、当該分野における通常の知識を有する者に本発明をより完全に説明するために提供されるものである。よって、図面における要素の形状やサイズなどはより明確な説明のために誇張することもある。
【００５８】
次に、図１および図２を参照して、本発明に係る低電力暗号化装置の構成及び動作について説明する。
【００５９】
図１は本発明に係る暗号化装置の構成を示すブロック図である。
【００６０】
図１を参照すると、本発明に係る低電力暗号化装置１００は、平文入力部１１０、マスク値生成部１２０、マスク値適用部１３０、ラウンドキー適用部１４０、マスク演算遂行部１５０、シフト演算遂行部１６０、シフト演算補正部１７０、および平文出力部１８０から構成される。
【００６１】
平文入力部１１０は、ユーザーから平文（Plaintext、Ｐ）という暗号化しようとする対象、例えば特定のテキスト(text)または音声(voice)の入力を受ける。この際、平文入力部１１０に入力される平文Ｐは、１２８ビット長からなり、それぞれ３２ビット長を有するサブ平文から構成される。すなわち、平文Ｐはそれぞれ３２ビット長を有する複数のサブ平文の連接から構成され、１２８ビット長を有する平文は下記数式１で表される。
【数３３】
0005646008.tif 000034
【００６２】
ここで、Ｐ［０］〜Ｐ［３］は、平文Ｐを構成する、それぞれ３２ビット長を有するサブ平文を意味する。
【００６３】
一方、本発明に係る低電力暗号化過程は、それぞれ１２８ビット、１９２ビットまたは２５６ビット長を有するラウンドキーが入力されるにつれて、暗号化のためのラウンド関数を２４、２８、３２回繰り返し適用することができる。この際、前記サブ平文Ｐ［０］〜Ｐ［３］は、ラウンド関数を繰り返し適用するために、一番目のラウンド関数の入力値として入力される初期入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］となる。
【００６４】
また、平文入力部１１０は、ユーザーからマスターキーの入力を受け、マスターキーからラウンドキー（Round Key、ＲＫ）を生成し、生成されたラウンドキーから各ラウンド関数に入力される入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］を暗号化して出力ラウンド関数値Ｘｉ＋１［０］〜Ｘｉ＋１［３］を出力するために必要なラウンドキー値を生成する。この際、平文入力部１１０は、ユーザーからマスターキーの入力を受け、それからｉ番目のラウンドで入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］に対する暗号化のために使用され、１９２ビット長を有するラウンドキーＲＫｉを生成し、下記数式２に基づいてそれぞれ３２ビット長を有する６つのラウンドキー値ＲＫｉ［０］〜ＲＫｉ［５］を生成することができる。
【数３４】
0005646008.tif 000035
【００６５】
平文入力部１１０は、平文Ｐから生成した初期入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］をマスク値適用部１３０へ伝送する一方で、マスターキーから生成したラウンドキー値ＲＫｉ［０］〜ＲＫｉ［５］をラウンドキー適用部１３０へ伝送する。
【００６６】
マスク値生成部１２０は、入力ラウンド関数値と同一のビット長を有するマスク値を生成する。この際、マスク値生成部１２０は入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］それぞれのビット長である３２ビット長を有するマスク値Ｍを生成することができる。マスク値生成部１２０は、生成したマスク値Ｍをマスク値適用部１３０へ伝送する。前記マスク値Ｍは、ランダムに生成された３２ビット長を有する値であって、各ラウンドで入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］に対するマスキングのために同一のマスク値Ｍが使用できるが、特定のラウンドからはマスク値Ｍが他のマスクＭ’に変更されて使用できる。この際、マスク値生成部１２０は変更されたマスク値Ｍ’を生成してマスク値適用部１３０へ伝送することができる。
【００６７】
マスク値適用部１３０は、平文入力部１１０から受信した初期入力ラウンド関数値Ｘ１［０］〜Ｘ１［３］それぞれに対してマスク値生成部１２０から受信したマスク値を適用し、一番目のラウンドにおける第１マスキングラウンド関数値Ｘ１_１［０］〜Ｘ１_１［３］を生成する。また、マスク値適用部１３０は、シフト演算補正部１７０によって生成された以前ラウンドにおける出力ラウンド関数値を該当ラウンドにおける入力ラウンド関数値として設定し、入力ラウンド関数値に対してマスク値を適用して第１マスキングラウンド関数値を生成する。すなわち、マスク値適用部１３０は、入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］（ｉ番目のラウンドにおける入力ラウンド関数値、ｉ≧１）それぞれに対してマスク値Ｍを適用して第１マスキングラウンド関数値Ｘｉ_１［０］〜Ｘｉ_１［３］を生成する。この際、マスク値適用部１３０は、下記数式３に基づいて入力ラウンド関数値Ｘｉ［０］〜Ｘｉ［３］それぞれとマスク値Ｍに対して論理的排他和の演算を行って第１マスキングラウンド関数値Ｘｉ_１［０］〜Ｘｉ_１［３］を生成する。
【数３５】
0005646008.tif 000036
【００６８】
ここで、
【数３６】
0005646008.tif 000037
【００６９】
は論理的排他和（exclusive OR、ＸＯＲ）演算記号を意味する。
【００７０】
より具体的に、マスク値適用部１３０は、入力ラウンド関数値Ｘｉ［０］とマスク値Ｍから数式
【数３７】
0005646008.tif 000038
【００７１】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［０］を生成し、入力ラウンド関数値Ｘｉ［１］とマスク値Ｍから数式
【数３８】
0005646008.tif 000039
【００７２】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［１］を生成する。また、マスク値適用部１３０は、入力ラウンド関数値Ｘｉ［２］とマスク値Ｍから数式
【数３９】
0005646008.tif 000040
【００７３】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［２］を生成し、入力ラウンド関数値Ｘｉ［３］とマスク値Ｍから数式
【数４０】
0005646008.tif 000041
【００７４】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［３］を生成する。
【００７５】
マスク値適用部１３０は、生成された第１マスキングラウンド関数値Ｘｉ_１［０］〜Ｘｉ_１［３］をラウンドキー適用部１４０へ伝送する。
【００７６】
ラウンドキー適用部１４０は、マスク値適用部１３０から受信した入力ラウンド関数値Ｘｉ_１［０］〜Ｘｉ_１［３］それぞれに対して平文入力部１１０から受信したラウンドキー値ＲＫｉ［０］〜ＲＫｉ［５］を適用して第２マスキングラウンド関数値を生成する。より具体的に、ラウンドキー適用部１４０は、第１マスキングラウンド関数値Ｘｉ_１［０］とラウンドキー値ＲＫｉ［０］から数式
【数４１】
0005646008.tif 000042
【００７７】
に基づいて第２マスキングラウンド関数値Ｘｉ_２［０］を生成し、第１マスキングラウンド関数値Ｘｉ_１［１］とラウンドキー値ＲＫｉ［１］から数式
【数４２】
0005646008.tif 000043
【００７８】
に基づいて第２マスキングラウンド関数値Ｘｉ_２_１［１］を生成する。また、ラウンドキー適用部１４０は、第１マスキングラウンド関数値Ｘｉ_１［１］とラウンドキー値ＲＫｉ［２］から数式
【数４３】
0005646008.tif 000044
【００７９】
に基づいて第２マスキングラウンド関数値Ｘｉ_２_２［１］を生成し、第１マスキングラウンド関数値Ｘｉ_１［２］とラウンドキー値ＲＫｉ［３］から数式
【数４４】
0005646008.tif 000045
【００８０】
に基づいて第２マスキングラウンド関数値Ｘｉ_２_１［２］を生成する。また、ラウンドキー適用部１４０は、第１マスキングラウンド関数値Ｘｉ_１［２］とラウンドキー値ＲＫｉ［４］から数式
【数４５】
0005646008.tif 000046
【００８１】
に基づいて第２マスキングラウンド関数値Ｘｉ_２_２［２］を生成し、第１マスキングラウンド関数値Ｘｉ_１［３］と前記ラウンドキー値ＲＫｉ［５］から数式
【数４６】
0005646008.tif 000047
【００８２】
に基づいて第２マスキングラウンド関数値Ｘｉ_２［３］を生成する。
【００８３】
ラウンドキー適用部１４０は、生成された第２マスキングラウンド関数値Ｘｉ_２［０］、 Ｘｉ_２_１［１］、Ｘｉ_２_２［１］、Ｘｉ_２_１［２］、Ｘｉ_２_２［２］およびＸｉ_２［３］をマスク演算遂行部１５０へ伝送する。
【００８４】
マスク演算遂行部１５０は、ラウンドキー適用部１４０から受信した第２マスキングラウンド関数値Ｘｉ_２［０］、 Ｘｉ_２_１［１］、Ｘｉ_２_２［１］、Ｘｉ_２_１［２］、Ｘｉ_２_２［２］およびＸｉ_２［３］に対してマスク加算演算を行って第３マスキングラウンド関数値を生成する。ここで、マスク加算演算は下記数式４を満足する演算であって、本明細書で定義する演算である。
【数４７】
0005646008.tif 000048
【００８５】
ここで、
【数４８】
0005646008.tif 000049
【００８６】
はマスク加算演算記号を意味し、＋は論理的和演算記号を意味し、
【数４９】
0005646008.tif 000050
【００８７】
及び
【数５０】
0005646008.tif 000051
【００８８】
それぞれはマスク値Ｍが適用された第２マスキングラウンド関数値を意味する。
【００８９】
本発明で上述のように定義されるマスク加算演算について例を挙げて説明すると、入力値
【数５１】
0005646008.tif 000052
【００９０】
が‘
【数５２】
0005646008.tif 000053
【００９１】
’（この場合、Ａは
【数５３】
0005646008.tif 000054
【００９２】
に該当する。）であり、入力値
【数５４】
0005646008.tif 000055
【００９３】
が‘
【数５５】
0005646008.tif 000056
【００９４】
’（この場合、Ｂは
【数５６】
0005646008.tif 000057
【００９５】
に該当する。）であるとき、マスク加算演算は‘
【数５７】
0005646008.tif 000058
【００９６】
’を出力する。
【００９７】
マスク演算遂行部１５０は、第２マスキングラウンド関数値Ｘｉ_２［０］と第２マスキングラウンド関数値Ｘｉ_２_１［１］に対してマスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［１］を生成する。この際、第３マスキングラウンド関数値Ｘｉ_３［１］は‘
【数５８】
0005646008.tif 000059
【００９８】
’（すなわち、‘
【数５９】
0005646008.tif 000060
【００９９】
’）に該当する値を有する。また、マスク演算遂行部１５０は、第２マスキングラウンド関数値Ｘｉ_２_２［１］と第２マスキングラウンド関数値Ｘｉ_２_１［２］に対してマスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［２］を生成する。この際、第３マスキングラウンド関数値Ｘｉ_３［２］は‘
【数６０】
0005646008.tif 000061
【０１００】
’（すなわち、‘
【数６１】
0005646008.tif 000062
【０１０１】
’）に該当する値を有する。また、マスク演算遂行部１５０は、第２マスキングラウンド関数値Ｘｉ_２_２［２］と第２マスキングラウンド関数値Ｘｉ_２［３］に対してマスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［３］を生成する。この際、第３マスキングラウンド関数値Ｘｉ_３［３］は‘
【数６２】
0005646008.tif 000063
【０１０２】
’（すなわち、‘
【数６３】
0005646008.tif 000064
【０１０３】
’）に該当する値を有する。
【０１０４】
マスク演算遂行部１５０は、生成された第３マスキングラウンド関数値Ｘｉ_３［１］、 Ｘｉ_３［２］およびＸｉ_３［３］をシフト演算遂行部１６０へ伝送する。
【０１０５】
シフト演算遂行部１６０は、マスク演算遂行部１５０から受信した第３マスキングラウンド関数値Ｘｉ_３［１］、Ｘｉ_３［２］およびＸｉ_３［３］に対して循環シフト演算を行って第４マスキングラウンド関数値を生成する。より具体的に、シフト演算遂行部１６０は第３マスキングラウンド関数値Ｘｉ_３［１］に対して数式Ｘｉ_４［１］＝ＲＯＬ９（Ｘｉ_３［１］）に従って第４マスキングラウンド関数値Ｘｉ_４［１］を生成する。ここで、ＲＯＬａ（ｘ）はｘを左にａビットだけ循環シフトした後に出力する関数を意味する。この際、第４マスキングラウンド関数値Ｘｉ_４［１］は‘
【数６４】
0005646008.tif 000065
【０１０６】
’（すなわち、‘
【数６５】
0005646008.tif 000066
【０１０７】
’）に該当する値を有する。また、シフト演算遂行部１６０は、第３マスキングラウンド関数値Ｘｉ_３［２］に対して数式Ｘｉ_４［２］＝ＲＯＲ５（Ｘｉ_３［２］）に従って第４マスキングラウンド関数値Ｘｉ_４［２］を生成する。ここで、ＲＯＲａ（ｘ）はｘを右にａビットだけ循環シフトした後に出力する関数を意味する。この際、第４マスキングラウンド関数値Ｘｉ_４［２］は‘
【数６６】
0005646008.tif 000067
【０１０８】
’（すなわち、‘
【数６７】
0005646008.tif 000068
【０１０９】
’）に該当する値を有する。また、シフト演算遂行部１６０は、第３マスキングラウンド関数値Ｘｉ_３［３］に対して数式Ｘｉ_４［３］＝ＲＯＲ３（Ｘｉ_３［３］）に従って第４マスキングラウンド関数値Ｘｉ_４［３］を生成する。この際、第４マスキングラウンド関数値Ｘｉ_４［３］は、‘
【数６８】
0005646008.tif 000069
【０１１０】
’（すなわち、‘
【数６９】
0005646008.tif 000070
【０１１１】
’）に該当する値を有する。
【０１１２】
シフト演算遂行部１６０は、生成された第４マスキングラウンド関数値Ｘｉ_４［１］、Ｘｉ_４［２］およびＸｉ_４［３］をシフト演算補正部１７０へ伝送する。
【０１１３】
シフト演算補正部１７０は、シフト演算遂行部１６０から受信した第４マスキングラウンド関数値Ｘｉ_４［１］、Ｘｉ_４［２］およびＸｉ_４［３］に対してマスク値Ｍを用いた演算を行って出力ラウンド関数値を生成する。より具体的に、シフト演算補正部１７０は、第４マスキングラウンド関数値Ｘｉ_４［１］とマスク値Ｍに対して数式
【数７０】
0005646008.tif 000071
【０１１４】
に従って出力ラウンド関数値Ｘｉ＋１［０］を生成する。この際、出力ラウンド関数値Ｘｉ＋１［０］は、‘
【数７１】
0005646008.tif 000072
【０１１５】
’（すなわち、‘
【数７２】
0005646008.tif 000073
【０１１６】
’）に該当する値を有する。また、シフト演算補正部１７０は、第４マスキングラウンド関数値Ｘｉ_４［２］とマスク値Ｍに対して数式
【数７３】
0005646008.tif 000074
【０１１７】
に従って出力ラウンド関数値Ｘｉ＋１［１］を生成する。この際、出力ラウンド関数値Ｘｉ＋１［１］は‘
【数７４】
0005646008.tif 000075
【０１１８】
’（すなわち、‘
【数７５】
0005646008.tif 000076
【０１１９】
’）に該当する値を有する。また、シフト演算補正部１７０は、第４マスキングラウンド関数値Ｘｉ_４［３］とマスク値Ｍに対して数式
【数７６】
0005646008.tif 000077
【０１２０】
に従って出力ラウンド関数値Ｘｉ＋１［２］を生成する。この際、出力ラウンド関数値Ｘｉ＋１［２］は‘
【数７７】
0005646008.tif 000078
【０１２１】
’（すなわち、‘
【数７８】
0005646008.tif 000079
【０１２２】
’）に該当する値を有する。一方、シフト演算補正部１７０は、第１マスキングラウンド関数値Ｘｉ_１［０］に対して数式Ｘｉ＋１［３］＝Ｘｉ_１［０］に従って出力ラウンド関数値Ｘｉ＋１［３］を生成する。この際、出力ラウンド関数値Ｘｉ＋１［３］
は‘
【数７９】
0005646008.tif 000080
【０１２３】
’に該当する値を有する。
【０１２４】
シフト演算補正部１７０は、ｉ番目のラウンドが暗号化過程の最終ラウンドに該当する場合には出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］を平文出力部１８０へ伝送する。これに対し、ｉ番目のラウンドが暗号化過程の最終ラウンドに該当しない場合には、出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］をマスク値適用部１３０へ伝送して次のラウンド（ｉ＋１ラウンド）による暗号化過程を繰り返し行うようにする。
【０１２５】
平文出力部１８０は、シフト演算補正部１７０から出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］を受信する場合、出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］から最終的に暗号化された平文を出力する。この際、平文出力部１８０は出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］を下記数式５のように連接して１２８ビット長を有する暗号化された平文Ｐ’を出力する。
【数８０】
0005646008.tif 000081
【０１２６】
ここで、出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］それぞれは３２ビット長を有するので、暗号化された平文Ｐ’は１２８ビット長を有する平文として出力される。
【０１２７】
図２は本発明に係る低電力暗号化装置１００のマスク値適用部１３０、ラウンドキー適用部１４０、マスク演算遂行部１５０、シフト演算遂行部１６０およびシフト演算補正部１７０で行われるｉ番目のラウンドにおける暗号化アルゴリズムを示す図である。
【０１２８】
図２を参照すると、ｉ番目のラウンドにおいて、入力ラウンド関数値Ｘｉ［０］（２００ａ）、入力ラウンド関数値Ｘｉ［１］（２００ｂ）、入力ラウンド関数値Ｘｉ［２］（２００ｃ）、および入力ラウンド関数値Ｘｉ［３］（２００ｄ）のそれぞれの入力値に対して論理的排他和演算２４０、マスク加算演算２６０および循環シフト演算２８０が行われ、出力ラウンド関数値Ｘｉ＋１［０］（２２０ａ）、出力ラウンド関数値Ｘｉ＋１［１］（２２０ｂ）、出力ラウンド関数値Ｘｉ＋１［２］（２２０ｃ）、および出力ラウンド関数値Ｘｉ＋１［３］（２２０ｄ）が最終出力値としてそれぞれ出力される。
【０１２９】
この際、出力ラウンド関数値Ｘｉ＋１［０］（２２０ａ）、出力ラウンド関数値Ｘｉ＋１［１］（２２０ｂ）、出力ラウンド関数値Ｘｉ＋１［２］（２２０ｃ）および出力ラウンド関数値Ｘｉ＋１［３］（２２０ｄ）は下記数式６〜数式９による値を有する。
【数８１】
0005646008.tif 000082
【数８２】
0005646008.tif 000083
【数８３】
0005646008.tif 000084
【数８４】
0005646008.tif 000085
【０１３０】
以下、本発明に係る低電力暗号化方法について説明する。これに先立ち、図１及び図２を参照した本発明に係る低電力暗号化装置の動作についての説明と一部重複する部分は省略して説明する。
【０１３１】
図３は本発明に係る低電力暗号化方法を説明するための流れ図である。
【０１３２】
図３を参照すると、本発明に係る低電力暗号化方法は、まず、平文入力部１１０が入力ラウンド関数値Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］および Ｘｉ［３］を生成し、マスク値生成部１２０が平文入力部１１０によって生成される入力ラウンド関数値Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］および Ｘｉ［３］と同一のビット長を有するマスク値Ｍを生成する（Ｓ３００）。この際、入力ラウンド関数値Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］およびＸｉ［３］はそれぞれ３２ビット長を有する場合、マスク値Ｍも３２ビット長を有することができる。
【０１３３】
その後、マスク値適用部１３０が入力ラウンド関数値Ｘｉ［０］、Ｘｉ［１］、Ｘｉ［２］およびＸｉ［３］それぞれに対してマスク値Ｍを適用して第１マスキングラウンド関数値Ｘｉ_１［０］、Ｘｉ_１［１］、Ｘｉ_１［２］およびＸｉ_１［３］を生成する（Ｓ３１０）。この際、マスク値適用部１３０は、数式
【数８５】
0005646008.tif 000086
【０１３４】
に基づいて入力ラウンド関数値Ｘｉ［０］とマスク値Ｍから第１マスキングラウンド関数値Ｘｉ_１［０］を生成し、数式
【数８６】
0005646008.tif 000087
【０１３５】
に基づいて入力ラウンド関数値Ｘｉ［１］と前記マスク値Ｍから第１マスキングラウンド関数値Ｘｉ_１［１］を生成する。また、マスク値適用部１３０は数式
【数８７】
0005646008.tif 000088
【０１３６】
に基づいて入力ラウンド関数値Ｘｉ［２］と前記マスク値Ｍから第１マスキングラウンド関数値Ｘｉ_１［２］を生成し、数式
【数８８】
0005646008.tif 000089
【０１３７】
に基づいて入力ラウンド関数値Ｘｉ［３］とマスク値Ｍから第１マスキングラウンド関数値Ｘｉ_１［３］を生成する。
【０１３８】
そして、ラウンドキー適用部１４０が第１ラウンド関数値Ｘｉ_１［０］、Ｘｉ_１［１］、Ｘｉ_１［２］およびＸｉ_１［３］にラウンドキーＲＫｉ［０］ 、ＲＫｉ［１］、ＲＫｉ［２］、 ＲＫｉ［３］、ＲＫｉ［４］およびＲＫｉ［５］を適用して第２マスキングラウンド関数値Ｘｉ_２［０］、Ｘｉ_２_１［１］、Ｘｉ_２_２［１］、Ｘｉ_２_１［２］、Ｘｉ_２_２［２］およびＸｉ_２［３］を生成する（Ｓ３２０）。この際、ラウンドキー適用部１４０は数式
【数８９】
0005646008.tif 000090
【０１３９】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［０］とラウンドキー値ＲＫｉ［０］から第２マスキングラウンド関数値Ｘｉ_２［０］を生成し、数式
【数９０】
0005646008.tif 000091
【０１４０】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［１］とラウンドキー値ＲＫｉ［１］から第２マスキングラウンド関数値Ｘｉ_２_１［１］を生成する。また、ラウンドキー適用部１４０は、数式
【数９１】
0005646008.tif 000092
【０１４１】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［１］とラウンドキー値ＲＫｉ［２］から第２マスキングラウンド関数値Ｘｉ_２_２［１］を生成し、数式
【数９２】
0005646008.tif 000093
【０１４２】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［２］とラウンドキー値ＲＫｉ［３］から第２マスキングラウンド関数値Ｘｉ_２_１［２］を生成する。また、ラウンドキー適用部１４０は数式
【数９３】
0005646008.tif 000094
【０１４３】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［２］とラウンドキー値ＲＫｉ［４］から第２マスキングラウンド関数値Ｘｉ_２_２［２］を生成し、数式
【数９４】
0005646008.tif 000095
【０１４４】
に基づいて第１マスキングラウンド関数値Ｘｉ_１［３］とラウンドキー値ＲＫｉ［５］から第２マスキングラウンド関数値Ｘｉ_２［３］を生成する。
【０１４５】
その後、マスク演算遂行部１５０が第２マスキングラウンド関数値Ｘｉ_２［０］、Ｘｉ_２_１［１］、Ｘｉ_２_２［１］、Ｘｉ_２_１［２］、Ｘｉ_２_２［２］およびＸｉ_２［３］に対して数式
【数９５】
0005646008.tif 000096
【０１４６】
を満足するマスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［１］、Ｘｉ_３［２］およびＸｉ_３［３］を生成する（Ｓ３３０）。この際、マスク演算遂行部１５０は、第２マスキングラウンド関数値Ｘｉ_２［０］と第２マスキングラウンド関数値Ｘｉ_２_１［１］に対してマスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［１］を生成する。また、マスク演算遂行部１５０は、第２マスキングラウンド関数値Ｘｉ_２_２［１］と第２マスキングラウンド関数値Ｘｉ_２_１［２］に対してマスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［２］を生成する。また、マスク演算遂行部１５０は、第２マスキングラウンド関数値Ｘｉ_２_２［２］と第２マスキングラウンド関数値Ｘｉ_２［３］に対してマスク加算演算を行って第３マスキングラウンド関数値Ｘｉ_３［３］を生成する。
【０１４７】
そして、シフト演算遂行部１６０が第３マスキングラウンド関数値Ｘｉ_３［１］、Ｘｉ_３［２］およびＸｉ_３［３］に対して循環シフト演算を行って第４マスキングラウンド関数値Ｘｉ_４［１］、Ｘｉ_４［２］およびＸｉ_４［３］を生成する（Ｓ３４０）。この際、シフト演算遂行部１６０は、数式Ｘｉ_４［１］＝ＲＯＬ９（Ｘｉ_３［１］）に基づいて第３マスキングラウンド関数値Ｘｉ_３［１］から第４マスキングラウンド関数値Ｘｉ_４［１］を生成する。また、シフト演算遂行部１６０は、数式Ｘｉ_４［２］＝ＲＯＲ５（Ｘｉ_３［２］）に基づいて第３マスキングラウンド関数値Ｘｉ_３［２］から第４マスキングラウンド関数値Ｘｉ_４［２］を生成する。また、シフト演算遂行部１６０は、数式Ｘｉ_４［３］＝ＲＯＲ３（Ｘｉ_３［３］）に基づいて第３マスキングラウンド関数値Ｘｉ_３［３］から第４マスキングラウンド関数値Ｘｉ_４［３］を生成する。
【０１４８】
その後、シフト演算補正部１７０が第４マスキングラウンド関数値Ｘｉ_４［１］、Ｘｉ_４［２］およびＸｉ_４［３］に対して前記マスク値Ｍを用いた演算を行って出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］を生成する（Ｓ３５０）。この際、シフト演算補正部１７０は、数式
【数９６】
0005646008.tif 000097
【０１４９】
に基づいて第４マスキングラウンド関数値Ｘｉ_４［１］とマスク値Ｍから出力ラウンド関数値Ｘｉ＋１［０］を生成する。また、シフト演算補正部１７０は、数式
【数９７】
0005646008.tif 000098
【０１５０】
に基づいて第４マスキングラウンド関数値Ｘｉ_４［２］とマスク値Ｍから出力ラウンド関数値Ｘｉ＋１［１］を生成する。また、シフト演算補正部１７０は、数式
【数９８】
0005646008.tif 000099
【０１５１】
に基づいて第４マスキングラウンド関数値Ｘｉ_４［３］とマスク値Ｍから出力ラウンド関数値Ｘｉ＋１［２］を生成する。一方、シフト演算補正部１７０は、数式Ｘｉ＋３［３］＝Ｘｉ_１［０］に基づいてマスク値適用部１３０によって生成された第１マスキングラウンド関数値Ｘｉ_１［０］から出力ラウンド関数値Ｘｉ＋３［３］を生成する。ｉ番目のラウンドが暗号化過程の最終ラウンドに該当しない場合には、前記Ｓ３５０段階でシフト演算補正部１７０は出力ラウンド関数値Ｘｉ＋１［０］、Ｘｉ＋１［１］、Ｘｉ＋１［２］およびＸｉ＋１［３］をマスク値適用部１３０へ伝送することにより、次のラウンド（ｉ＋１ラウンド）で前記Ｓ３１０段階〜前記Ｓ３５０段階を繰り返し行うようにすることができる。
【０１５２】
図４は従来の低電力暗号化アルゴリズムに対して差分電力解析攻撃を行った場合、候補キーの値に対する相関係数を示す図であり、図５は本発明に係る低電力暗号化アルゴリズムに対して差分電力解析攻撃を行った場合、候補キーの値に対する相関係数を示す図である。
【０１５３】
図４を参照すると、従来の低電力暗号化アルゴリズムに対して差分電力解析攻撃を行った場合には、候補キーのうち実際暗号キーに該当する値において、他の暗号キーに該当する値に比べて高い相関関係が示されることを確認することができる。これに対し、図５を参照すると、本発明に係る低電力暗号化アルゴリズムに対して差分電力解析攻撃を行った場合には、候補キーのうち実際暗号キーに該当する値において、他の暗号キーに該当する値に比べて高くない相関関係が示されることを確認することができる。
【０１５４】
以上、図面と明細書において最適の実施例が開示された。ここで特定の用語が使用されたが、これは本発明を説明するための目的で使用されたものであり、意味を限定し或いは特許請求の範囲に記載された本発明の範囲を制限するために使用されたものではない。よって、当該技術分野における通常の知識を有する者であれば、これから多様な変形および均等な他の実施が可能であるという点を理解するであろう。したがって、本発明の真正な技術的保護範囲は添付された特許請求の範囲の技術的思想によって定められるべきである。
【符号の説明】
【０１５５】
１００    低電力暗号化装置
１１０    平文入力部
１２０    マスク値生成部
１３０    マスク値適用部
１４０    ラウンドキー適用部
１５０    マスク演算遂行部
１６０    シフト演算遂行部
１７０    シフト演算補正部
１８０    平文出力部
【図１】
0005646008.tif 000136
【図２】
0005646008.tif 000137
【図３】
0005646008.tif 000138
【図４】
0005646008.tif 000139
【図５】
0005646008.tif 000140