(57)【要約】【課題】二重化法は２次ＤＰＡに対して脆弱である。【解決手段】分割部は、マスク付平文を、複数の第１分割データに分割する。第１生成部は、複数の第１分割データから複数の分割入力データを生成する。受付部は、複数の分割入力データと、第１マスクと、第２マスクとを受付ける。非線形変換部は、複数の分割入力データを変換した複数の分割出力データを生成する。データ統合部は、第２分割データを統合してマスク付暗号文を生成する。アンマスク処理部は、マスク付暗号文から暗号文を生成する。複数の分割入力データの排他的論理和は、非線形変換処理を実行すべきデータであって平文から算出される入力データと、第１マスクとの排他的論理和と一致する。複数の分割出力データの排他的論理和は、入力データに非線形変換処理を実行した場合に得られる変換データと第２マスクとの排他的論理和と一致する。【選択図】図１
2012063700.tif 000002
【特許請求の範囲】
【請求項１】
平文を暗号文に暗号化する暗号化処理を実行する暗号化装置であって、
前記暗号化処理は非線形変換処理を含み、
前記平文と第１マスクに基づいて生成したマスク付平文を算出するマスク処理部と、
前記マスク付平文を、複数の第１分割データに分割する分割部と、
複数の第１分割データに所定の第１処理を行って複数の分割入力データを生成する第１生成部と、
複数の分割入力データと、前記第１マスクと、第２マスクとを受付ける受付部と、
複数の分割入力データを変換した複数の分割出力データを生成する非線形変換部と、
複数の分割出力データに所定の第２処理を行って第２分割データを生成する第２生成部と、
複数の第２分割データを統合して、前記暗号文と前記第２マスクとに基づいて生成されるマスク付暗号文を生成するデータ統合部と、
前記マスク付暗号文と前記第２マスクに基づいて前記暗号文を生成するアンマスク処理部を有し、
複数の分割入力データの排他的論理和は、前記非線形変換処理を実行すべきデータであって前記平文から算出される入力データと、前記第１マスクとの排他的論理和と一致し、
複数の分割出力データの排他的論理和は、前記入力データに前記非線形変換処理を実行した場合に得られる変換データと前記第２マスクとの排他的論理和と一致する、
ことを特徴とする暗号化装置。
【請求項２】
前記非線形変換部は、
複数の前記分割入力データそれぞれ対応して備えられ、対応する前記分割入力データを、線形変換を含む変換処理により変換したデータを生成する複数の第１変換部と、
複数の前記第１変換部によりそれぞれ生成されたデータの排他的論理和を非線形変換したデータを、複数の前記分割出力データの１つとして生成する第２変換部と、
複数の前記第１変換部がそれぞれ線形変換したデータの排他的論理和を予め定められた変換処理で変換したデータを、複数の前記分割出力データの１つとして生成する第３変換部と、を備えること、
を特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記第２生成部は、複数の分割出力データを線形変換する線形変換部を備えること、
を特徴とする請求項１に記載の暗号化装置。
【請求項４】
第１乱数と第２乱数とを生成する乱数生成部をさらに備え、
前記マスク処理部は、前記平文を前記第１乱数である前記第１マスクでマスクした前記マスク付平文を算出し、
前記アンマスク処理部は、前記第２乱数である前記第２マスクに基づいて前記暗号文を生成すること、
を特徴とする請求項１に記載の暗号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、非線形変換処理を含む暗号化処理を実行する暗号化装置に関する。
【背景技術】
【０００２】
暗号モジュールが動作する際の処理時間、消費電力、および電磁波などの物理的な情報を利用して暗号鍵を解析するサイドチャネル攻撃が各種考案されている。サイドチャネル攻撃の中でも、消費電力情報を用いた解析手法として、単純電力解析（Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ、ＳＰＡ）、差分電力解析（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ、ＤＰＡ）、および相関電力解析（Ｃｏｒｒｅｌａｔｉｏｎ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ、ＣＰＡ）が挙げられる。ＤＰＡは、暗号化処理中の消費電力を統計分析することにより内部情報を取り出す攻撃方法である。ＤＰＡやＣＰＡの対策としては、マスク法が知られている。
【０００３】
マスク法は、暗号化処理中のデータに対してマスクと呼ばれる乱数または固定値を加算し暗号化処理を続けることで、消費電力と暗号化処理中のデータとの相関をなくす。しかし、２次ＤＰＡやその拡張である高次ＤＰＡを用いると、マスク法を施した暗号回路からも暗号鍵を解析することができる。２次ＤＰＡとは、消費電力波形上の２点の電力を利用してマスクの影響を考慮した上で、消費電力と暗号化処理中のデータとの相関の有無を判定する攻撃手法である。消費電力波形上の２点として、例えば、暗号化処理の中間データに対するマスク付きデータを処理する点と、そのマスクを処理する点の消費電力を用いる場合や、同一のマスクが付いた２つのデータを処理する点の消費電力を用いる場合がある。また、ＤＰＡやＣＰＡの対策としては、他に二重化法が知られている。二重化法は暗号化処理中のデータを２つに分割して処理することで、消費電力と暗号化処理中のデータとの相関を取り除く方法である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｃ．  Ｈｅｒｂｓｔ、  Ｅ．Ｏｓｗａｌｄ、  Ｓ．  Ｍａｎｇａｒｄ、  Ａｎ  ＡＥＳ  ｓｍａｒｔ  ｃａｒｄ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｒｅｓｉｓｔａｎｔ  ｔｏ  ｐｏｗｅｒ  ａｎａｌｙｓｉｓ  ａｔｔａｃｋｓ、  Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  Ｎｅｔｗｏｒｋ  Ｓｅｃｕｒｉｔｙ、  ＡＣＮＳ、  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ｖｏｌ．３９８９、  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ、  ｐｐ．  ２３９−２５２、  ２００６．
【非特許文献２】Ｌ．  Ｇｏｕｂｉｎ  ａｎｄ  Ｊ．  Ｐａｔａｒｉｎ、  ＤＥＳ  ａｎｄ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  −  Ｔｈｅ  "Ｄｕｐｌｉｃａｔｉｏｎ"  Ｍｅｔｈｏｄ、  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ、  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ｖｏｌ．１７１７、  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ、  ｐｐ．１５８−１７２、  １９９９．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
二重化法は、２次ＤＰＡに対して脆弱であるという問題があった。
【課題を解決するための手段】
【０００６】
実施形態の暗号化装置は、分割部と、第１生成部と、受付部と、非線形変換部と、データ統合部と、アンマスク処理部とを備える。分割部は、マスク付平文を、複数の第１分割データに分割する。第１生成部は、複数の第１分割データから複数の分割入力データを生成する。受付部は、複数の分割入力データと、第１マスクと、第２マスクとを受付ける。非線形変換部は、複数の分割入力データを変換した複数の分割出力データを生成する。データ統合部は、第２分割データを統合してマスク付暗号文を生成する。アンマスク処理部は、マスク付暗号文から暗号文を生成する。複数の分割入力データの排他的論理和は、非線形変換処理を実行すべきデータであって平文から算出される入力データと、第１マスクとの排他的論理和と一致する。複数の分割出力データの排他的論理和は、入力データに非線形変換処理を実行した場合に得られる変換データと第２マスクとの排他的論理和と一致する。
【図面の簡単な説明】
【０００７】
【図１】暗号化装置の構成の一例を示すブロック図。
【図２】復号装置の構成の一例を示すブロック図。
【図３】第１の実施形態の暗号化装置の構成例を示すブロック図。
【図４】ＳｕｂＢｙｔｅ処理部の構成例を示すブロック図。
【図５】ＭＥＳの構成例を示すブロック図。
【図６】変換部の構成例を示すブロック図。
【図７】変換表記憶部に記憶される変換表の一例を示す図。
【図８】第１の実施形態の暗号化処理の全体の流れの一例を示すフローチャート。
【図９】変換表を用いる場合のＭＥＳの処理手順の一例を示すフローチャート。
【図１０】変形例のＭＥＳの構成例を示すブロック図。
【図１１】変換部の構成例を示すブロック図。
【図１２】第２の実施形態のＭＥＳの構成例を示すブロック図。
【図１３】変換部の構成例を示すブロック図。
【図１４】変換部の構成例を示すブロック図。
【図１５】第３の実施形態のＭＥＳの構成例を示すブロック図。
【図１６】変換部の構成例を示すブロック図。
【図１７】第４の実施形態のＭＥＳの構成例を示すブロック図。
【図１８】第５の実施形態の暗号化装置の構成例を示すブロック図。
【図１９】第６の実施形態の暗号化装置の構成例を示すブロック図。
【図２０】第１〜第６の実施形態にかかる暗号化装置のハードウェア構成を示す説明図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、この発明にかかる暗号化装置の好適な実施形態を詳細に説明する。
【０００９】
以下では、鍵長を１２８ビットとしたＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式の暗号化装置に適用した例について説明するが、１９６ビットや２５６ビットの鍵長でも同様に適用できる。また、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＨｉｅｒｏｃｒｙｐｔなど、他の非線形変換を用いる暗号アルゴリズムを処理する装置にも適用できる。また、非線形変換を用いるハッシュ関数にも同様に適用できる。
【００１０】
ここで、ＡＥＳ方式の暗号化装置および復号装置の構成例について説明する。図１は、暗号化装置１０００の構成の一例を示すブロック図である。図１に示すように、暗号化装置１０００は、入力部１００１ａと、出力部１００１ｂと、鍵記憶部１００２と、ラウンド鍵生成部１００３と、ＡｄｄＲｏｕｎｄＫｅｙ１００４ａ〜１００４ｋと、ＳｕｂＢｙｔｅ１００５ｂ〜１００５ｋと、ＳｈｉｆｔＲｏｗ１００６ｂ〜１００６ｋと、ＭｉｘＣｏｌｕｍｎ１００７ｂ〜１００７ｊと、を備える。
【００１１】
入力部１００１ａは、外部から平文の入力を受け付ける。出力部１００１ｂは、処理結果の暗号文を外部に出力する。なお、入力部１００１ａと出力部１００１ｂの機能を共に有する入出力部１００１を備えるように構成しても良い。
【００１２】
鍵記憶部１００２は、１２８ビットの秘密鍵を記憶する。鍵記憶部１００２は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、光ディスク、メモリカード、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００１３】
ラウンド鍵生成部１００３は、鍵記憶部１００２が記憶する秘密鍵から１１個の１２８ビットのラウンド鍵ｄ１００３ａ〜ｄ１００３ｋを計算し、ＡｄｄＲｏｕｎｄＫｅｙ１００４ａ〜１００４ｋに供給する。ラウンド鍵ｄ１００３ａ〜ｄ１００３ｋは、ＡｄｄＲｏｕｎｄＫｅｙ１００４ａが実行される以前に予め計算しても良いし、ＡｄｄＲｏｕｎｄＫｅｙ１００４ａ〜１００４ｋと並行に計算しても良い。
【００１４】
ＡｄｄＲｏｕｎｄＫｅｙ１００４ａに入力されるデータｄ１００１ａは、入力された平文と同一である。ＡｄｄＲｏｕｎｄＫｅｙ１００４ａ〜１００４ｋは、データｄ１００１ａ、ｄ１００７ｂ〜ｄ１００７ｊ、ｄ１００６ｋに対してＡＥＳ暗号で定められているＡｄｄＲｏｕｎｄＫｅｙ変換処理を行い、データｄ１００４ａ〜ｄ１００４ｋを出力する。データｄ１００４ａ〜ｄ１００４ｊは、ＳｕｂＢｙｔｅ１００５ｂ〜１００５ｊに入力される。データｄ１００４ｋは、暗号文と同一である。
【００１５】
ＳｕｂＢｙｔｅ１００５ｂ〜１００５ｋは、データｄ１００４ａ〜ｄ１００４ｊを、８ビットごとに非線形変換し、データｄ１００５ｂ〜ｄ１００５ｋを出力する。データｄ１００５ｂ〜ｄ１００５ｋは、ＳｈｉｆｔＲｏｗ１００６ｂ〜１００６ｋに入力される。
【００１６】
ＳｈｉｆｔＲｏｗ１００６ｂ〜１００６ｋは、データｄ１００５ｂ〜ｄ１００５ｋを、８ビットをブロック単位として並べ替え、データｄ１００６ｂ〜ｄ１００６ｋを出力する。データｄ１００６ｂ〜ｄ１００６ｊは、ＭｉｘＣｏｌｕｍｎ１００７ｂ〜１００７ｊに入力される。データｄ１００６ｋは、ＡｄｄＲｏｕｎｄＫｅｙ１００４ｋに入力される。
【００１７】
ＭｉｘＣｏｌｕｍｎ１００７ｂ〜１００７ｊは、データｄ１００７ｂ〜ｄ１００７ｊを３２ビットごとに線形変換を実行し、データｄ１００７ｂ〜ｄ１００７ｊを出力する。データｄ１００７ｂ〜ｄ１００７ｊは、ＡｄｄＲｏｕｎｄＫｅｙ１００４ｂ〜１００４ｊに入力される。
【００１８】
図２は、復号装置１１００の構成の一例を示すブロック図である。図２に示すように、復号装置１１００は、入力部１１０１ａと、出力部１１０１ｂと、鍵記憶部１１０２と、ラウンド鍵生成部１１０３と、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ１１０４ａ〜１１０４ｋと、ＩｎｖＳｈｉｆｔＲｏｗ１１０５ａ〜１１０５ｊと、ＩｎｖＳｕｂＢｙｔｅ１１０６ａ〜１１０６ｊと、ＩｎｖＭｉｘＣｏｌｕｍｎ１１０７ｂ〜１１０７ｊと、を備える。
【００１９】
入力部１１０１ａは、外部から暗号文の入力を受け付ける。出力部１１０１ｂは、処理結果の平文を外部に出力する。なお、入力部１１０１ａと出力部１１０１ｂの機能を共に有する入出力部１１０１を備えるように構成しても良い。
【００２０】
鍵記憶部１１０２は、１２８ビットの秘密鍵を記憶する。鍵記憶部１１０２は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、光ディスク、メモリカード、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００２１】
ラウンド鍵生成部１１０３は、鍵記憶部１１０２が記憶する秘密鍵から１１個の１２８ビットのラウンド鍵ｄ１１０３ａ〜ｄ１１０３ｋを計算し、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ１１０４ａ〜１１０４ｋに供給する。ラウンド鍵ｄ１１０３ａ〜ｄ１１０３ｋは、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ１１０４ａが実行される以前に予め計算しても良いし、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ１１０４ａ〜１１０４ｋと並行に計算しても良い。
【００２２】
ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ１１０４ａに入力されるデータｄ１１０１ａは、入力された暗号文と同一である。
【００２３】
ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ１１０４ａ〜１１０４ｋは、データｄ１１０１ａ、ｄ１１０６ａ〜ｄ１１０６ｊに対してＡＥＳ暗号で定められているＩｎｖＡｄｄＲｏｕｎｄＫｅｙ変換処理を行い、データｄ１１０４ａ〜１１０４ｋを出力する。データｄ１１０４ａは、ＩｎｖＳｈｉｆｔＲｏｗ１１０５ａに入力される。データｄ１１０４ｂ〜１１０４ｊは、ＩｎｖＭｉｘＣｏｌｕｍｎ１１０７ｂ〜１１０７ｊに入力される。データｄ１１０４ｋは、出力される平文と同一である。
【００２４】
ＩｎｖＳｈｉｆｔＲｏｗ１１０５ａ〜１１０５ｊは、データｄ１１０４ａ、ｄ１１０７ｂ〜ｄ１１０７ｊを、８ビットをブロック単位として並べ替え、データｄ１１０５ａ〜ｄ１１０５ｊを出力する。データｄ１１０５ａ〜ｄ１１０５ｊは、ＩｎｖＳｕｂＢｙｔｅ１１０６ａ〜１１０６ｊに入力される。
【００２５】
ＩｎｖＳｕｂＢｙｔｅ１１０６ａ〜１１０６ｊは、データｄ１１０５ａ〜ｄ１１０５ｊを８ビットごとに非線形変換し、データｄ１１０６ａ〜ｄ１１０６ｊを出力する。データｄ１１０６ａ〜ｄ１１０６ｊは、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ１１０４ｂ〜１１０４ｋに入力される。
【００２６】
ＩｎｖＭｉｘＣｏｌｕｍｎ１１０７ｂ〜１１０７ｊは、データｄ１１０４ｂ〜ｄ１１０４ｊを３２ビットごとに線形変換を実行し、データｄ１１０７ｂ〜ｄ１１０７ｊを出力する。データｄ１１０７ｂ〜ｄ１１０７ｊは、ＩｎｖＳｈｉｆｔＲｏｗ１１０５ｂ〜１１０５ｊに入力される。
【００２７】
（第１の実施形態）
以下では、本発明を暗号化処理（暗号化装置１０００等）に適用した場合について説明するが、復号処理（復号装置１１００等）にも同様に適用できる。
【００２８】
次に、用語を定義する。暗号化処理の中間データとは、暗号アルゴリズムで定められた処理中に計算されるデータである。ＡＥＳ暗号化の場合には、ＡｄｄＲｏｕｎｄＫｅｙ、ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、および、ＭｉｘＣｏｌｕｍｎに入出力されるデータおよび内部で取り扱われるデータが中間データに相当する。
【００２９】
マスクとは、暗号化処理の中間データと消費電力との相関を取り除くため、暗号化処理の中間データに排他的加算算術的加算、および乗算などで処理されるデータである。ＳｕｂＢｙｔｅに入力される入力データにかかるマスクを入力マスク（第１マスク）とし、ＳｕｂＢｙｔｅから出力される出力データにかかるマスクを出力マスク（第２マスク）とする。実施形態の説明では、排他的加算で処理されるマスクを例に説明する。
【００３０】
図３は、第１の実施形態の説明で用いる、暗号化アルゴリズムＡＥＳを処理する暗号化装置１００の構成例を示すブロック図である。暗号化装置１００は、入力部１０１ａと、出力部１０１ｂと、鍵記憶部１０２と、ラウンド鍵生成部１０３と、分割用データ生成部１０４（第１生成部）と、マスク生成部１０５と、マスク処理部１０７と、アンマスク処理部１０８と、データ分割部１０９と、データ統合部１１０と、ＡｄｄＲｏｕｎｄＫｅｙ１１１ａ〜１１１ｋと、ＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋと、ＳｈｉｆｔＲｏｗ１１３ｂｌ〜１１３ｋｌと、ＳｈｉｆｔＲｏｗ１１３ｂｒ〜１１３ｋｒと、ＭｉｘＣｏｌｕｍｎ１１４ｂｌ〜１１４ｊｌと、ＭｉｘＣｏｌｕｍｎ１１４ｂｒ〜１１４ｊｒと、マスク付替部１１５ｂ〜１１５ｊと、を備える。
【００３１】
ＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋから出力される２つのデータを処理するＳｈｉｆｔＲｏｗ１１３ｂｌ〜１１３ｋｌ、ＳｈｉｆｔＲｏｗ１１３ｂｒ〜１１３ｋｒ、ＭｉｘＣｏｌｕｍｎ１１４ｂｌ〜１１４ｊｌ、ＭｉｘＣｏｌｕｍｎ１１４ｂｒ〜１１４ｊｒ、マスク付替部１１５ｂ〜１１５ｊが、第２生成部に相当する。  
【００３２】
入力部１０１ａは、外部から１２８ビットの平文ｄ１０１ａを受け付け、平文ｄ１０１ａをマスク処理部１０７に供給する。出力部１０１ｂは、処理結果の暗号文ｄ１０８を入力され外部に出力する。鍵記憶部１０２は、１２８ビットの秘密鍵を記憶する。
【００３３】
ラウンド鍵生成部１０３は、鍵記憶部１０２が記憶する秘密鍵から１１個の１２８ビットのラウンド鍵ｄ１０３ａ〜ｄ１０３ｋを計算し、ＡｄｄＲｏｕｎｄＫｅｙ１１１ａ〜１１１ｋに供給する。ラウンド鍵ｄ１０３ａ〜ｄ１０３ｋは、ＡｄｄＲｏｕｎｄＫｅｙ１１１ａが実行される以前に予め計算しても良いし、ＡｄｄＲｏｕｎｄＫｅｙ１１１ａ〜１１１ｋと並行に計算しても良い。
【００３４】
分割用データ生成部１０４は、１２８ビットの分割用データｄ１０４を生成し、データ分割部１０９に供給する。分割用データｄ１０４は、予め用意された値でも良いし、分割用データ生成部１０４が乱数生成部を備え、この乱数生成部が生成した乱数を用いても良い。
【００３５】
マスク生成部１０５は、入力マスクｄ１２０ｂ〜ｄ１２０ｋと、出力マスクｄ１２１ｂ〜ｄ１２１ｋを生成する。マスク生成部１０５は、入力マスクｄ１２０ｃ〜ｄ１２０ｋと、出力マスクｄ１２１ｂ〜ｄ１２１ｊとから付替マスクｄ１２２ｂ〜ｄ１２２ｊを生成する。マスク生成部１０５は、入力マスクｄ１２０ｂをマスク処理部１０７に供給し、入力マスクｄ１２０ｂ〜ｄ１２０ｋと、出力マスクｄ１２１ｂ〜ｄ１２１ｋとをそれぞれＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋに供給する。マスク生成部１０５は、出力マスクｄ１２１ｋをアンマスク処理部１０８に供給し、付替マスクｄ１２２ｂ〜ｄ１２２ｊをそれぞれマスク付替部１１５ｂ〜１１５ｊに供給する。
【００３６】
各マスクは、予め用意された値でも良いし、マスク生成部１０５が乱数生成部を備え、乱数生成部が生成した乱数を用いても良い。マスク生成部１０５が備える乱数生成部は、分割用データ生成部１０４が備える乱数生成部と同一でも良い。
【００３７】
マスク生成部１０５は、例えば、ｄ１２２ｂ＝ｄ１２０ｂ＾ｄ１２１ｂにより付替マスクｄ１２２ｂを計算する。なお、「Ａ＾Ｂ」はＡとＢとの排他的論理和を意味する。
【００３８】
マスク処理部１０７は、入力マスクｄ１２０ｂと平文ｄ１０１ａとの排他的論理和を計算し、マスク付き平文ｄ１０７としてデータ分割部１０９に出力する。
【００３９】
データ分割部１０９は、分割用データｄ１０４に基づいて、１２８ビットのマスク付き平文ｄ１０７を、１２８ビットの２つの分割データｄ１０９ｌおよびｄ１０９ｒを、ｄ１０９ｌとｄ１０９ｒとの排他的論理和が、マスク付き平文ｄ１０７と一致するように分割して出力する。例えば、分割データｄ１０９ｌとして分割用データｄ１０４を用い、分割データｄ１０９ｒとして分割用データｄ１０４とマスク付き平文ｄ１０７との排他的論理和を用いることができる。
【００４０】
このように、本実施形態では、あるデータから、排他的論理和が当該データと一致するような複数のデータを生成することを、当該データを分割するといい、生成した各データを分割データという。
【００４１】
ＡｄｄＲｏｕｎｄＫｅｙ１１１ａは、入力されたデータｄ１０９ｌとラウンド鍵ｄ１０３ａとの排他的論理和であるデータｄ１１１ａを計算し、ＳｕｂＢｙｔｅ処理部１１２ｂに出力する。ＡｄｄＲｏｕｎｄＫｅｙ１１１ｂ〜１１１ｋも同様に、入力されたデータとラウンド鍵との排他的論理和を計算し出力する。
【００４２】
ＳｕｂＢｙｔｅ処理部１１２ｂは、２つのデータｄ１１１ａおよびｄ１０９ｒを入力され、２つのデータｄ１１２ｂｌおよびｄ１１２ｂｒを出力する。データｄ１１１ａおよびｄ１０９ｒは、その排他的論理和が、図１のＳｕｂＢｙｔｅ１００５ｂに入力されるデータｄ１００４ａと入力マスクｄ１２０ｂとの排他的論理和となる関係を有する。データｄ１１２ｂｌおよびｄ１１２ｂｒは、その排他的論理和が、図１のＳｕｂＢｙｔｅ１１０５ｂから出力されるデータｄ１００５ｂと出力マスクｄ１２１ｂとの排他的論理和となる関係を有する。
【００４３】
ＳｈｉｆｔＲｏｗ１１３ｂｌ〜１１３ｋｌ、ＳｈｉｆｔＲｏｗ１１３ｂｒ〜１１３ｋｒ、ＭｉｘＣｏｌｕｍｎ１１４ｂｌ〜１１４ｊｌ、ＳｈｉｆｔＲｏｗ１１４ｂｒ〜１１４ｊｒは、入力されたデータを攪拌する。
【００４４】
マスク付替部１１５ｂは、入力されたデータｄ１１４ｂｒと付替マスクｄ１２２ｂとの排他的論理和であるデータｄ１１５ｂを計算し出力する。マスク付替部１１５ｃ〜１１５ｊも同様に入力されたデータｄ１１４ｃｒ〜ｄ１１４ｊｒと付替マスクｄ１２２ｃ〜ｄ１２２ｊとの排他的論理和を計算し出力する。
【００４５】
データ統合部１１０は、データｄ１１１ｋとデータｄ１１３ｋｒとの排他的論理和であるデータｄ１１０を計算し出力する。アンマスク処理部１０８は、データｄ１１０と出力マスクｄ１２１ｋとの排他的論理和である暗号文ｄ１０８を計算し出力する。出力部１０１ｂは、暗号文ｄ１０８を受けつけ、外部に出力する。
【００４６】
次に、ＳｕｂＢｙｔｅ処理部１１２ｂの構成例について説明する。図４は、ＳｕｂＢｙｔｅ処理部１１２ｂの構成例を示すブロック図である。ＳｕｂＢｙｔｅ処理部１１２ｃ〜１１２ｋの構成は、ＳｕｂＢｙｔｅ処理部１１２ｂと同様であるため説明を省略する。
【００４７】
ＳｕｂＢｙｔｅ処理部１１２ｂは、１６個のマスク付き拡張Ｓ−ｂｏｘ（以下、ＭＥＳ（Ｍａｓｋｅｄ  ａｎｄ  Ｅｘｔｅｎｄｅｄ  Ｓ−ｂｏｘ））２２００〜２２１５を備えている。
【００４８】
ＳｕｂＢｙｔｅ処理部１１２ｂは、１２８ビットのデータｄ２１ｌをｄ２１ｌ＝ｄ２１００ｌ｜｜・・・｜｜ｄ２１１５ｌ（｜｜は連結を意味する）を満たす８ビットのデータｄ２１００ｌ〜ｄ２１１５ｌに分け、それぞれＭＥＳ２２００〜２２１５に入力する。同様に、ＳｕｂＢｙｔｅ処理部１１２ｂは、１２８ビットのデータｄ２１ｒをｄ２１ｒ＝ｄ２１００ｒ｜｜・・・｜｜ｄ２１１５ｒを満たす８ビットのデータｄ２１００ｒ〜ｄ２１１５ｒに分け、それぞれＭＥＳ２２００〜２２１５に入力する。
【００４９】
ＳｕｂＢｙｔｅ処理部１１２ｂは、ＭＥＳ２２００〜２２１５が出力した８ビットのデータｄ２２００ｌ〜ｄ２２１５ｌを、ｄ２２ｌ＝ｄ２２００ｌ｜｜・・・｜｜ｄ２２１５ｌを満たすｄ２２ｌに連結して出力する。同様に、ＳｕｂＢｙｔｅ処理部１１２ｂは、ＭＥＳ２２００〜２２１５が出力した８ビットのデータｄ２２００ｒ〜ｄ２２１５ｒをｄ２２ｒ＝ｄ２２００ｒ｜｜・・・｜｜ｄ２２１５ｒを満たすｄ２２ｒに連結して出力する。
【００５０】
ＭＥＳ２２００は、２つのデータｄ２１００ｌとｄ２１００ｒとを入力され、２つのデータｄ２２００ｌとｄ２２００ｒとを出力する。ＭＥＳ２２０１〜２２１５も同様である。
【００５１】
図５は、ＭＥＳ２２００の構成例を示すブロック図である。以下では８ビット単位のデータを処理する例を説明する。
【００５２】
ＭＥＳ２２００は、変換部３０１ｌと、変換部３０１ｒと、変換部３０３と、変換部３０４と、排他的論理和演算部３０２とを備えている。ＭＥＳ２２００は、入力されたデータｄ３００ｌを変換部３０１ｌに入力し、データｄ３００ｒを変換部３０１ｒに入力し、変換部３０１ｌの出力したデータｄ３０１ｌと変換部３０１ｒの出力したデータｄ３０１ｒとの排他的論理和であるデータｄ３０２を計算する。ＭＥＳ２２００は、データｄ３０２を変換部３０３と変換部３０４とに入力し、変換部３０３が変換したデータｄ３０３を出力し、変換部３０４が変換したデータｄ３０４を出力する。
【００５３】
変換部３０１ｌは、データｄ３００ｌを入力として、線形変換を含む変換処理により変換したデータｄ３０１ｌを出力する。変換部３０１ｌは、例えば、入力されたデータｄ３００ｌを後述する関数φで線形変換したデータに変換用データｄ３０１ａを排他的加算した結果であるデータｄ３０１ｌを出力するような変換として構成される。変換部３０１ｌが、入力されたデータｄ３００ｌを線形変換したデータｄ３０１ｌを出力するように構成してもよい。
【００５４】
変換部３０１ｒは、データｄ３００ｒを入力として、線形変換を含む変換処理により変換したデータｄ３０１ｒを出力する。変換部３０１ｒは、例えば、入力されたデータｄ３００ｒを関数φで線形変換したデータに変換用データｄ３０１ｂを排他的加算した結果であるデータｄ３０１ｒを出力するような変換として構成される。変換部３０１ｒが、入力されたデータｄ３００ｒを線形変換したデータｄ３０１ｒを出力するように構成してもよい。
【００５５】
関数φは、８ビット入出力の関数であり、例えば以下の（１）式を用いることができる。ｘｉ、ｙｉ（０≦ｉ≦７）はそれぞれ１ビットのデータを表し、関数φの入力がｘｉで出力がｙｉである。
【数１】
2012063700.tif 000003
【００５６】
関数φは、（１）式に限られるものではなく、例えば恒等変換であっても良い。恒等変換の場合は、関数φによる変換処理を行わなくても良い。変換用データｄ３０１ａは０でも良く、その場合は排他的加算を行わなくても良い。変換用データｄ３０１ｂは０でも良く、その場合は排他的加算を行わなくても良い。なお、変換用データｄ３０１ａ＝０かつ変換用データｄ３０１ｂ＝０の場合、変換部３０１ｌと変換部３０１ｒとは等しくなる。
【００５７】
変換部３０４は、入力されたデータｄ３０２を所定の変換を用いてｄ３０４に変換し出力する。変換部３０４は、ＡＥＳのＳｕｂＢｙｔｅ（Ｓ−ｂｏｘ）のような非線形変換でも良いし、関数φのような線形変換でも良く、任意の変換を用いることができる。変換部３０４は、恒等変換でも良く、この場合変換処理を行わなくても良い。
【００５８】
変換部３０１ｌ、変換部３０１ｒ、および変換部３０４は、予め変換表を用意し、用意した変換表を参照して変換処理を行うように構成してもよい。
【００５９】
図６は、変換部３０３の構成例を示すブロック図である。変換部３０３は、変換部４０１と、排他的論理和演算部４０２と、Ｓ−ｂｏｘ４０３と、変換部４０４と、排他的論理和演算部４０５と、排他的論理和演算部４０６と、を備えている。変換部３０３は、データｄ３０２、ｄ４００ａ、ｄ４００ｂが入力される。データｄ３０２は、変換部４０１に入力される。変換部４０１は、データｄ３０２をデータｄ４０１に変換する。排他的論理和演算部４０２は、データｄ４０１とデータｄ４００ａとの排他的論理和であるデータｄ４０２を計算しＳ−ｂｏｘ４０３に入力する。変換部４０４は、データｄ３０２をデータｄ４０４に変換する。排他的論理和演算部４０５は、Ｓ−ｂｏｘ４０３が出力したデータｄ４０３とｄ４０４との排他的論理和であるデータｄ４０５を計算する。排他的論理和演算部４０６は、データｄ４０５とｄ４００ｂとの排他的論理和であるデータｄ３０３を計算し、出力する。
【００６０】
データｄ４００ａは、マスク生成部１０５が出力した１２８ビットの入力マスクｄ１２０ｂを８ビットずつ区切って１６個に分けたデータの１つである。データｄ４００ｂは、マスク生成部１０５が出力した１２８ビットの出力マスクｄ１２１ｂを８ビットずつ区切って１６個に分けたデータの１つである。
【００６１】
変換部４０１は、例えば、入力されたデータｄ３０２に、変換用データｄ３０１ａと変換用データｄ３０１ｂを排他的加算した結果を、関数φの逆関数φ−１でデータｄ４０１に変換し、出力するように構成される。関数φの逆変換φ−１は、例えば以下の（２）式で表される。
【数２】
2012063700.tif 000004
【００６２】
Ｓ−ｂｏｘ４０３は、ＡＥＳのＳｕｂＢｙｔｅ（Ｓ−ｂｏｘ）と同様の非線形変換であり、入力されたデータｄ４０２をデータｄ４０３に変換する。
【００６３】
変換部４０４は、図５の変換部３０４と同一の変換であり、入力されたデータｄ３０２をデータｄ４０４に変換する。
【００６４】
変換部３０３は、Ｓ−ｂｏｘ変換をＳ、変換部４０４をｈ、変換部４０１をｇ−１と表記すると、以下の（３）式の関係を満たす。
ｄ３０３＝Ｓ（ｇ−１（ｄ３０２）＾ｄ４００ａ）＾ｈ（ｄ３０２）＾ｄ４００ｂ
・・・（３）
【００６５】
（３）式を満たしていれば、上述の計算手順でなくても良い。そのため変換部３０３は、入力されるデータｄ３０２が０から２５５までの場合について、出力されるデータｄ３０３を予め計算し、変換表記憶部４１０にデータｄ３０２とデータｄ３０３とを対応づけた変換表Ｔ２２００として保持することもできる。この場合、変換部３０３は、データｄ３０２を受け付け、変換表Ｔ２２００を参照して受け付けたデータｄ３０２に対応するデータｄ３０３を出力する。図７は、変換表記憶部４１０に記憶される変換表Ｔ２２００の一例を示す図である。
【００６６】
ＳｕｂＢｙｔｅ処理部１１２ｂが、１２８ビットのデータを８ビットずつ処理する構成例を説明したが、処理単位は８ビットに限られず、１６ビットや１２８ビットとしても良いし、ビット数が異なる処理単位としても良い。処理単位を１２８ビットとする場合は、例えばＳｕｂＢｙｔｅ処理部１１２ｂが１つのＭＥＳ２２００を備えるように構成すれば良い。
【００６７】
ＳｕｂＢｙｔｅ処理部１１２ｂが有するＭＥＳ２２００〜ＭＥＳ２２１５は同じ構成でも良い。ＳｕｂＢｙｔｅ処理部１１２ｃ〜１１２ｋについても同様で、同じ構成のＭＥＳを有していても良い。また、ＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋが同じ構成でも良い。
【００６８】
ＡｄｄＲｏｕｎｄＫｅｙ１１１ｂ〜１１１ｋは、図３では、分割されたデータの左の系列に配置されているが、右に配置されても良い。この場合、ＡｄｄＲｏｕｎｄＫｅｙ１１１ｂは、マスク付替部１１５ｂの出力したデータｄ１１５ｂを入力され、ラウンド鍵ｄ１０３ｂとデータｄ１１５ｂとの排他的論理和であるデータｄ１１１ｂを計算し、ＳｕｂＢｙｔｅ処理部１１２ｃに出力する。このとき、ＭｉｘＣｏｌｕｍｎ１１４ｂｌはＳｕｂＢｙｔｅ処理部１１２ｃにデータｄ１１４ｂｌを出力する。同一の数字で表される装置は、同一の装置を用いて構成されても良い。
【００６９】
次に、暗号化装置１００の処理手順を図８のフローチャートを用いて説明する。図８は、第１の実施形態の暗号化装置１００で同一の数字の装置に同一の装置を用いた場合の暗号化処理の全体の流れの一例を示すフローチャートである。
【００７０】
暗号化装置１００の入力部１０１ａは、１２８ビットの平文ｄ１０１ａを受け付ける（ＳＴ１０１）。ラウンド鍵生成部１０３は、鍵記憶部１０２から供給された暗号化鍵ｄ１０２に基づいて、ラウンド鍵ｄ１０３ａ〜ｄ１０３ｋを生成し、それぞれＡｄｄＲｏｕｎｄＫｅｙ１１１ａ〜１１１ｋに供給する（ＳＴ１０２）。
【００７１】
マスク生成部１０５は、入力マスクｄ１２０ｂ〜ｄ１２０ｋ、出力マスクｄ１２１ｂ〜ｄ１２１ｋ、および付替マスクｄ１２２ｂ〜ｄ１２２ｊを生成する（ＳＴ１０３）。マスク処理部１０７は、平文ｄ１０１ａに入力マスクｄ１２０ｂを処理し、マスク付き平文ｄ１０７を出力する（ＳＴ１０４）。マスク付き平文ｄ１０７は、平文ｄ１０１ａと入力マスクｄ１２０ｂの排他的論理和である。
【００７２】
データ分割部１０９は、分割用データ生成部１０４から供給された分割用データｄ１０４に基づいて、マスク付き平文ｄ１０７を２つのデータｄ１０９ｌおよびデータｄ１０９ｒに分割する（ＳＴ１０５）。データｄ１０９ｌとデータｄ１０９ｒとの排他的論理和はｄ１０７である。例えばｄ１０９ｌ＝ｄ１０４、ｄ１０９ｒ＝ｄ１０７＾ｄ１０４のように計算することができる。
【００７３】
ＡｄｄＲｏｕｎｄＫｅｙ１１１ａは、ラウンド鍵生成部１０３から供給されたラウンド鍵ｄ１０３ａとデータｄ１０９ｌとの排他的論理和であるデータｄ１１１ａを計算して出力する（ＳＴ１０６）。
【００７４】
ＳｕｂＢｙｔｅ処理部１１２ｂは、ＡｄｄＲｏｕｎｄＫｅｙ１１１ａの出力したデータｄ１１１ａと、データ分割部１０９が出力したデータｄ１０９ｒと、入力マスクｄ１２０ｂと出力マスクｄ１２１ｂとを入力され、マスクが施されたまま非線形変換処理を行い、２つのデータｄ１１２ｂｌおよびデータｄ１１２ｂｒを出力する（ＳＴ１０７）。
【００７５】
ＳｈｉｆｔＲｏｗ１１３ｂｌは、ＳｕｂＢｙｔｅ処理部１１２ｂが出力したデータｄ１１２ｂｌを、８ビットをブロック単位として並び替える（ＳＴ１０８）。
【００７６】
暗号化装置１００は、ラウンド数が１０ラウンド目か否かを判定する（ＳＴ１０９）。ラウンド数が１〜９ラウンド目の場合（ＳＴ１０９：Ｎｏ）、ＭｉｘＣｏｌｕｍｎ１１４ｂｌは、ＳｈｉｆｔＲｏｗ１１３ｂｌが出力したデータｄ１１３ｂｌを３２ビット毎に線形変換し、変換後のデータｄ１１４ｂｌをＡｄｄＲｏｕｎｄＫｅｙ１１１ｂに出力する（ＳＴ１１０）。
【００７７】
ＳｈｉｆｔＲｏｗ１１３ｂｒは、ＳｕｂＢｙｔｅ処理部１１２ｂが出力したデータｄ１１２ｂｒを、８ビットをブロック単位として並び替える（ＳＴ１１１）。
【００７８】
暗号化装置１００は、ラウンド数が１０ラウンド目か否かを判定する（ＳＴ１１２）。
ラウンド数が１〜９ラウンド目の場合（ＳＴ１１２：Ｎｏ）、ＭｉｘＣｏｌｕｍｎ１１４ｂｒは、ＳｈｉｆｔＲｏｗ１１３ｂｒが出力したデータｄ１１３ｂｒを３２ビット毎に線形変換し、変換後のデータｄ１１４ｂｒをマスク付替部１１５ｂに出力する（ＳＴ１１３）。
【００７９】
マスク付替部１１５ｂは、ＭｉｘＣｏｌｕｍｎ１１４ｂｒが出力したデータｄ１１４ｂｒと、マスク生成部１０５から供給された付替マスクｄ１２２ｂとの排他的論理和であるデータｄ１１５ｂを計算し、ＳｕｂＢｙｔｅ処理部１１２ｃに出力する（ＳＴ１１４）。
【００８０】
ＳｕｂＢｙｔｅ処理部１１２ｃは、ＡｄｄＲｏｕｎｄＫｅｙ１１１ｂの出力したデータｄ１１１ｂと、マスク付替部１１５ｂの出力したデータｄ１１５ｂを入力され、マスクが施されたまま非線形変換処理を行い、２つのデータｄ１１２ｃｌおよびデータｄ１１２ｃｒを出力する（ＳＴ１０７）。
【００８１】
１〜１０ラウンド目のＡｄｄＲｏｕｎｄＫｅｙ１１１ｂ〜１１１ｊは、ＡｄｄＲｏｕｎｄＫｅｙ１１１ａと同様の処理、２〜１０ラウンド目のＳｕｂＢｙｔｅ処理部１１２ｃ〜１１２ｋは、ＳｕｂＢｙｔｅ処理部１１２ｂと同様の処理、２〜１０ラウンド目のＳｈｉｆｔＲｏｗ１１３ｃｌ〜１１３ｋｌおよびＳｈｉｆｔＲｏｗ１１３ｃｒ〜１１３ｋｒは、ＳｈｉｆｔＲｏｗ１１３ｂｌおよびＳｈｉｆｔＲｏｗ１１３ｂｒと同様の処理、２〜９ラウンド目のＭｉｘＣｏｌｕｍｎ１１４ｃｌ〜１１４ｊｌおよびＭｉｘＣｏｌｕｍｎ１１４ｃｒ〜１１４ｊｒは、ＭｉｘＣｏｌｕｍｎ１１４ｂｌおよびＭｉｘＣｏｌｕｍｎ１１４ｂｒと同様の処理、２〜９ラウンド目のマスク付替部１１５ｃ〜１１５ｊは、マスク付替部１１５ｂと同様の処理を行うため説明は省略する。
【００８２】
ラウンド数が１０ラウンド目の場合（ＳＴ１０９：Ｙｅｓ、ＳＴ１１２：Ｙｅｓ）、ＡｄｄＲｏｕｎｄＫｅｙ１１１ｋは、ラウンド鍵生成部１０３から供給されたラウンド鍵ｄ１０３ｋと、ＳｈｉｆｔＲｏｗ１１３ｋｌが出力したデータｄ１１３ｋｌとの排他的論理和であるデータｄ１１１ｋをデータ統合部１１０に出力する（ＳＴ１１５）。
【００８３】
データ統合部１１０は、マスク付き暗号文としてＳｈｉｆｔＲｏｗ１１３ｋｒが出力したデータｄ１１３ｋｒと、ＡｄｄＲｏｕｎｄＫｅｙ１１１ｋが出力したデータｄ１１１ｋとの排他的論理和であるデータｄ１１０を計算し、アンマスク処理部１０８に出力する（ＳＴ１１６）。
【００８４】
アンマスク処理部１０８は、マスク付き暗号文ｄ１１０から出力マスクｄ１２１ｋを除去し、暗号文ｄ１０８を計算する（ＳＴ１１７）。暗号文ｄ１０８は、マスク付き暗号文ｄ１１０と出力マスクｄ１２１ｋとの排他的論理和である。出力部１０１ｂは、暗号文ｄ１０８を出力する（ＳＴ１１８）。
【００８５】
ＭＥＳ２２００が予め変換表Ｔ２２００を生成しているときの、ＭＥＳ２２００の処理手順を図９を用いて説明する。図９は、変換表を用いる場合のＭＥＳ２２００の処理手順の一例を示すフローチャートである。
【００８６】
ＭＥＳ２２００は、２つのデータｄ３００ｌおよびデータｄ３００ｒを受け付ける（ＳＴ２０１）。変換部３０１ｌは、データｄ３００ｌを変換してｄ３０１ｌを出力し、変換部３０１ｒは、データｄ３００ｒを変換してｄ３０１ｒを出力する（ＳＴ２０２）。
【００８７】
ＭＥＳ２２００は、データｄ３０１ｌとデータｄ３０１ｒとの排他的論理和を計算し、変換部３０３と変換部３０４に供給する（ＳＴ２０３）。変換部３０３は、変換表Ｔ２２００を参照し、データｄ３０２に対応するデータｄ３０３を得る（ＳＴ２０４）。変換部３０４は、データｄ３０２を所定の変換を用いてｄ３０４に変換する（ＳＴ２０５）。ＭＥＳ２２００は、データｄ３０３およびデータｄ３０４を出力する（ＳＴ２０６）。
【００８８】
本実施形態によれば、ＭＥＳ２２００の入出力は、以下の（４）式の関係を満たす。
（ｄ３０３＾ｄ３０４）＾ｄ４００ｂ＝Ｓ（（ｄ３００ｌ＾ｄ３００ｒ）＾ｄ４００ａ）
・・・（４）
【００８９】
ＭＥＳ２２００は、暗号化処理のマスク付きの中間データを分割した２つのデータを入力として、マスクを付けたまま非線形変換を行い、正しい演算結果の分割データを出力することができる。
【００９０】
２次ＤＰＡは、暗号化処理のマスク付きの中間データと、マスクの２点の消費電力を用いて、または同一のマスクが付いた２つの暗号化処理の中間データの消費電力を用いて秘密鍵を特定する。本実施形態では、暗号化処理のマスク付きの中間データは分割されたまま暗号化処理が実行されるため、暗号化処理のマスク付きの中間データを処理する時点の消費電力を測定することができない。そのため２次ＤＰＡに耐性を有する。また、暗号化処理の中間データを処理する時点の消費電力も測定することができない。暗号化処理の中間データと消費電力との相関が取り除かれ、電力解析に対する耐性を持つ。
【００９１】
ＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋが全て同じ構成の場合には、入力マスクｄ１２０ｂ〜ｄ１２０ｋを同一データにすることができ、出力マスクｄ１２１ｂ〜ｄ１２１ｋを同一データにすることができ、付替マスクｄ１２２ｂ〜ｄ１２２ｋを同一データにすることができる。
【００９２】
ＳｕｂＢｙｔｅ処理部１１２ｂが有するＭＥＳ２２００〜２２１５が全て同じ構成の場合には、全てのＭＥＳに同じ入力マスクと出力マスクを用いることができるため、１２８ビットの入力マスクｄ１２０ｂを８ビットのデータにすることができ、１２８ビットの出力マスクｄ１２１ｂを８ビットのデータにすることができる。ＳｕｂＢｙｔｅ処理部１１２ｃ〜１１２ｋについても同様に、入力マスクと出力マスクを８ビットにした場合は、１２８ビットの付替マスクｄ１２２ｂ〜ｄ１２２ｊを８ビットのデータにすることができる。
【００９３】
ＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋが全て同じ構成で、ＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋが有するＭＥＳが全て同じ構成の場合に、暗号化装置１００は、１つのＭＥＳを用いて暗号化処理を行うことができる。変換表を用いた実装の場合、暗号化装置１００は、１つの変換表を生成、記憶するだけでＳｕｂＢｙｔｅの計算を行うことができるため、２次ＤＰＡへの耐性を有しつつ、回路規模、記憶容量、処理時間、および消費電力を削減できる。
【００９４】
（第１の実施形態の変形例）
図１０は、ＭＥＳ２２００の変形例であるＭＥＳ２２００−２の構成例を示すブロック図である。以下では８ビット単位のデータを処理する例を説明する。
【００９５】
ＭＥＳ２２００−２は、変換部１２０１ｌと、変換部１２０１ｃと、変換部１２０１ｒと、変換部１２０３と、変換部１２０４と、変換部１２０５と、排他的論理和演算部１２０２を備えている。
【００９６】
ＭＥＳ２２００−２は、入力されたデータｄ１２００ｌを変換部１２０１ｌに入力し、データｄ１２００ｃを変換部１２０１ｃに入力し、データｄ１２００ｒを変換部１２０１ｒに入力する。ＭＥＳ２２００−２は、変換部１２０１ｌの出力したデータｄ１２０１ｌと、変換部１２０１ｃの出力したデータｄ１２０１ｃと、変換部１２０１ｒの出力したデータｄ１２０１ｒとの排他的論理和であるデータｄ１２０２を計算する。ＭＥＳ２２００−２は、データｄ１２０２を変換部１２０３と変換部１２０４と変換部１２０５とに入力する。ＭＥＳ２２００−２は、変換部１２０３が変換したデータｄ１２０３を出力し、変換部１２０４が変換したデータｄ１２０４を出力し、変換部１２０５が変換したデータｄ１２０５を出力する。
【００９７】
変換部１２０１ｌは、データｄ１２００ｌを入力として、データｄ１２０１ｌを出力する。変換部１２０１ｌは、例えば、入力されたデータｄ１２００ｌを関数φで変換したデータに変換用データｄ３０１ａを排他的加算した結果であるデータｄ１２０１ｌを出力するような変換として構成される。この変換用データは０でも良く、その場合は排他的加算を行わなくても良い。
【００９８】
変換部１２０１ｃは、データｄ１２００ｃを入力として、データｄ１２０１ｃを出力する。変換部１２０１ｃは、例えば、入力されたデータｄ１２００ｃを関数φで変換したデータに変換用データｄ３０１ｂを排他的加算した結果であるデータｄ１２０１ｃを出力するような変換として構成される。この変換用データは０でも良く、その場合は排他的加算を行わなくても良い。
【００９９】
変換部１２０１ｒは、データｄ１２００ｒを入力として、データｄ１２０１ｒを出力する。変換部１２０１ｒは、例えば、入力されたデータｄ１２００ｒを関数φで変換したデータに変換用データｄ３０１ｃを排他的加算した結果であるデータｄ１２０１ｒを出力するような変換として構成される。この変換用データは０でも良く、その場合は排他的加算を行わなくても良い。
【０１００】
変換部１２０４は、入力されたデータｄ１２０２を所定の変換を用いてデータｄ１２０４に変換し出力する。変換部１２０４は、ＡＥＳのＳｕｂＢｙｔｅ（Ｓ−ｂｏｘ）のような非線形変換でも良いし、関数φのような線形変換でも良く、任意の変換を用いることができる。変換部１２０４は、恒等変換でも良く、この場合変換処理を行わなくても良い。
【０１０１】
変換部１２０５は、入力されたデータｄ１２０２を所定の変換を用いてデータｄ１２０５に変換し出力する。変換部１２０５は、ＡＥＳのＳｕｂＢｙｔｅ（Ｓ−ｂｏｘ）のような非線形変換でも良いし、関数φのような線形変換でも良く、任意の変換を用いることができる。変換部１２０５は、恒等変換でも良く、この場合変換処理を行わなくても良い。
【０１０２】
変換部１２０１ｌ、変換部１２０１ｃ、変換部１２０１ｒ、変換部１２０３、変換部１２０４、および、変換部１２０５は、予め変換表を用意し、用意した変換表を参照することでＭＥＳ２２００−２を計算しても良い。
【０１０３】
図１１は、変換部１２０３の構成例を示すブロック図である。変換部１２０３は、変換部１３０１と、排他的論理和演算部１３０２と、Ｓ−ｂｏｘ１３０３と、変換部１３０４と、排他的論理和演算部１３０５と、排他的論理和演算部１３０６と、変換部１３０７と、排他的論理和演算部１３０８と、を備えている。
【０１０４】
変換部１２０３は、データｄ１２０２、ｄ４００ａ、ｄ４００ｂを入力する。変換部１２０３は、データｄ１２０２を変換部１３０１に入力し、変換部１３０１の出力データｄ１３０１とデータｄ４００ａとの排他的論理和であるデータｄ１３０２を計算してＳ−ｂｏｘ１３０３に入力する。変換部１２０３は、データｄ１２０２を変換部１３０４でデータｄ１３０４に変換する。変換部１２０３は、Ｓ−ｂｏｘ１３０３の出力したデータｄ１３０３と変換部１３０４が出力したデータｄ１３０４との排他的論理和であるデータｄ１３０５を計算する。変換部１２０３は、データｄ１３０５とデータｄ４００ｂとの排他的論理和であるデータｄ１３０６を計算する。変換部１２０３は、データｄ１２０２を変換部１３０７でデータｄ１３０７に変換する。変換部１２０３は、データｄ１３０６と変換部１３０７が出力したデータｄ１３０７との排他的論理和であるデータｄ１２０３を計算し、出力する。
【０１０５】
データｄ４００ａは、マスク生成部１０５が出力した１２８ビットの入力マスクｄ１２０ｂを８ビットずつ区切って１６個に分けたデータの１つである。データｄ４００ｂは、マスク生成部１０５が出力した１２８ビットの出力マスクｄ１２１ｂを８ビットずつ区切って１６個に分けたデータの１つである。変換部１３０１は、例えば、入力されたデータｄ１２０２に、変換用データｄ３０１ａと変換用データｄ３０１ｂを排他的加算した結果を、関数φの逆関数φ−１でデータｄ１３０１に変換し、出力するように構成される。
【０１０６】
Ｓ−ｂｏｘ１３０３は、ＡＥＳのＳｕｂＢｙｔｅ（Ｓ−ｂｏｘ）と同様の非線形変換であり、入力されたデータｄ１３０２をｄ１３０３に変換する。
【０１０７】
変換部１３０４は、変換部１２０４と同一の変換であり、入力されたデータｄ１２０２をｄ１３０４に変換する。変換部１３０７は、変換部１２０５と同一の変換であり、入力されたデータｄ１２０２をｄ１３０７に変換する。
【０１０８】
変換部１２０３は、Ｓ−ｂｏｘ変換をＳ、変換部１３０１をｇ−１、変換部１３０４をｈ１、変換部１３０７をｈ２と表記すると以下の（５）式の関係を満たす。
ｄ１２０３＝Ｓ（ｇ−１（ｄ１２０２）＾ｄ４００ａ）＾ｈ１（ｄ１２０２）＾ｄ４００ｂ＾ｈ２（ｄ１３０７）  ・・・（５）
【０１０９】
（５）式を満たしていれば、上述の計算手順でなくても良い。そのため変換部１２０３は、入力されるデータｄ１２０２が０から２５５までの場合について、出力されるデータｄ１２０３を予め計算し図７のような変換表Ｔ２２００として保持することもできる。この場合、変換部１２０３は、データｄ１２０２を受け付け、変換表Ｔ２２００を参照して受け付けたデータｄ１２０２に対応するデータｄ１２０３を出力する。
【０１１０】
このように、第１の実施形態にかかる暗号化装置では、暗号化処理のマスク付きの中間データを分割したまま暗号化処理を実行できる。このため、暗号化処理のマスク付きの中間データを処理する時点の消費電力を測定することができず、２次ＤＰＡに耐性を有する。
【０１１１】
（第２の実施形態）
第２の実施形態は、ＭＥＳ２２００〜２２１５の代わりにＭＥＳ６００〜６１５を備える点が第１の実施形態と異なる。図１２は、ＭＥＳ６００の構成例を示すブロック図である。なお、ＭＥＳ６０１〜ＭＥＳ６１５はＭＥＳ６００と同様の構成を備えるため説明を省略する。
【０１１２】
ＭＥＳ６００は、変換部６０１と、変換部６０２と、変換部６０３と、変換部６０４と、変換部６０５と、変換部６０６と、を備えている。
【０１１３】
ＭＥＳ６００は、２つの８ビットのデータｄ６００ｌとｄ６００ｒを受け付け、データｄ６００ｌを変換部６０１と変換部６０３に入力し、データｄ６００ｒを変換部６０２と変換部６０４に入力する。ＭＥＳ６００は、変換部６０１が出力したデータｄ６０１と変換部６０２が出力したデータｄ６０２とを変換部６０５に入力する。ＭＥＳ６００は、変換部６０３が出力したデータｄ６０３と変換部６０４が出力したデータｄ６０４とを変換部６０６に入力する。ＭＥＳ６００は、変換部６０５が出力したデータｄ６０５と変換部６０６が出力したデータｄ６０６とを出力する。
【０１１４】
変換部６０１は、逆変換を有する変換でデータｄ６００ｌをｄ６０１に変換する。変換部６０２は、逆変換を有する変換でデータｄ６００ｒをｄ６０２に変換する。変換部６０３は、逆変換を有する変換でデータｄ６００ｌをｄ６０３に変換する。変換部６０４は、逆変換を有する変換でデータｄ６００ｒをｄ６０４に変換する。
【０１１５】
変換部６０１、変換部６０２、変換部６０３、および変換部６０４としては、例えば、第１の実施形態で説明した関数φやＡＥＳのＳ−ｂｏｘや恒等変換を用いて構成できる。恒等変換を用いる場合は変換処理を行わなくても良い。
【０１１６】
図１３は、変換部６０５の構成例を示すブロック図である。図１４は、変換部６０６の構成例を示すブロック図である。
【０１１７】
変換部６０５は、排他的論理和演算部７０１と、排他的論理和演算部７０２と、Ｓ−ｂｏｘ７０３と、変換部７０７と、変換部７０８と、変換部７０４と、排他的論理和演算部７０５と、排他的論理和演算部７０６と、を備えている。
【０１１８】
変換部６０５は、データｄ６０１、ｄ６０２、ｄ７００ａ、ｄ７００ｂが入力され、データｄ６０１を変換部７０７に入力し、データｄ６０２を変換部７０８に入力する。変換部６０５は、変換部７０７が出力したデータｄ７０７と変換部７０８が出力したデータｄ７０８との排他的論理和であるデータｄ７０１を計算する。変換部６０５は、データｄ７０１とデータｄ７００ａとの排他的論理和であるデータｄ７０２を計算してＳ−ｂｏｘ７０３に入力する。変換部６０５は、変換部７０７が出力したデータｄ７０７と変換部７０８が出力したデータｄ７０８とを変換部７０４に入力する。変換部６０５は、Ｓ−ｂｏｘ７０３が出力したデータｄ７０３と変換部７０４が出力したデータｄ７０４との排他的論理和であるデータｄ７０５を計算する。変換部６０５は、データｄ７０５とデータｄ７００ｂとの排他的論理和であるデータｄ６０５を計算し出力する。
【０１１９】
データｄ７００ａは、マスク生成部１０５が出力した１２８ビットの入力マスクｄ１２０ｂを８ビットずつ区切って１６個に分けたデータの１つである。データｄ７００ｂは、マスク生成部１０５が出力した１２８ビットの出力マスクｄ１２１ｂを８ビットずつ区切って１６個に分けたデータの１つである。
【０１２０】
Ｓ−ｂｏｘ７０３は、ＡＥＳのＳ−ｂｏｘと同様の非線形変換であり、入力されたデータｄ７０２をｄ７０３に変換する。
【０１２１】
変換部７０７は、入力されたデータｄ６０１に対して変換部６０１の逆変換を行った結果ｄ７０７を出力する。変換部７０８は、入力されたデータｄ６０２に対して変換部６０２の逆変換を行った結果ｄ７０８を出力する。変換部７０４は、入力された８ビットのデータｄ７０７とデータｄ７０８を所定の変換を用いて８ビットのデータｄ７０４に変換し出力する。変換部７０４は、１６ビット入力８ビット出力である任意の変換を用いることができる。
【０１２２】
変換部６０１が恒等変換である場合には、変換部７０７も恒等変換であり、その場合には、変換部７０７の変換処理を行わなくても良い。変換部７０８についても同様である。変換部７０４が恒等変換である場合にも、変換処理を行わなくても良い。
【０１２３】
変換部６０６は、変換部７１０と、変換部７１１と、変換部７１２と、を備えている。変換部６０６は、２つの８ビットのデータｄ６０３とデータｄ６０４を受け付け、データｄ６０３を変換部７１０に入力し、データｄ６０４を変換部７１１に入力する。変換部６０６は、変換部７１０が出力したデータｄ７１０と変換部７１１が出力したデータｄ７１１を変換部７１２に入力し、変換部７１２が出力したデータｄ６０６を出力する。変換部７１２は、入力されたデータｄ７１０に対して、変換部７０４と同一の変換を行った結果ｄ６０６を出力する。
【０１２４】
ＭＥＳ６００の入出力データは、Ｓ−ｂｏｘ変換をＳと表記すると、以下の（６）式の関係を満たす。
ｄ６０５＾ｄ６０６＾ｄ７００ｂ
＝Ｓ（ｄ６００ｌ＾ｄ６００ｒ＾ｄ７００ａ）  ・・・（６）
【０１２５】
変換部６０５は、入力されるデータｄ６０１およびデータｄ６０２に対して出力されるデータｄ６０５を予め計算し、変換表として保持することもできる。この場合、変換部６０５は、入力されたデータｄ６０１およびデータｄ６０２を受け付け、この変換表を参照して対応するデータｄ６０５を出力する。
【０１２６】
変換部６０６は、入力されるデータｄ６０３およびデータｄ６０４に対して出力されるデータｄ６０６を予め計算し、変換表として保持することもできる。この場合、変換部６０６は、入力されたデータｄ６０３およびデータｄ６０４を受け付け、この変換表を参照して対応するデータｄ６０６を出力する。
【０１２７】
ＭＥＳ６００は、入力されるデータｄ６００ｌおよびデータｄ６００ｒに対して出力されるデータｄ６０５およびデータｄ６０６を予め計算し、変換表として保持することもできる。この場合、ＭＥＳ６００は入力データｄ６００ｌおよびデータｄ６００ｒを受け付け、この変換表を参照して対応するデータｄ６０５およびデータｄ６０６を出力する。
【０１２８】
（第３の実施形態）
第３の実施形態は、ＭＥＳ２２００〜２２１５の代わりにＭＥＳ１６００〜１６１５を備える点が第１の実施形態と異なる。図１５は、ＭＥＳ１６００の構成例を示すブロック図である。なお、ＭＥＳ１６０１〜ＭＥＳ１６１５はＭＥＳ１６００と同様の構成を備えるため説明を省略する。
【０１２９】
ＭＥＳ１６００は、変換部１６０１と、変換部１６０２と、変換部１６０３と、を備えている。ＭＥＳ１６００は、マスク付き暗号化処理中のデータの分割データであるデータｄ１６００ｌとデータｄ１６００ｒが入力され、データｄ１６００ｌとデータｄ１６００ｒを変換部１６０１に入力する。ＭＥＳ１６００は、変換部１６０１が出力したデータｄ１６０１を変換部１６０２と変換部１６０３とに入力する。ＭＥＳ１６００は、変換部１６０２が出力したデータｄ１６０２と、変換部１６０３が出力したデータｄ１６０３とを出力する。
【０１３０】
変換部１６０１は、８ビットのデータｄ１６００ｌとデータｄ１６００ｒとを受け付け、データｄ１６００ｌとｄ１６００ｒと変換用データｄ１６０１ａを排他的加算した結果を、関数ψを用いて８ビットのデータに変換し、変換結果に、変換用データｄ１６０１ｂを排他的加算した結果ｄ１６０１を出力する。関数ψは逆関数ψ−１を持つ。関数ψは恒等変換でも良く、その場合は変換処理を行わなくても良い。
【０１３１】
変換用データｄ１６０１ａおよび変換用データｄ１６０１ｂは０でも良く、その場合は排他的加算を行わなくても良い。
【０１３２】
変換部１６０１は、予め計算された変換表を参照することで計算されても良い。この変換表は、入力されるデータｄ１６００ｌおよびデータｄ１６００ｒと、出力されるデータｄ１６０１との対応関係を表し、関数ψと変換用データｄ１６０１ａに応じて生成される。
【０１３３】
変換部１６０３は、変換部１６０１が出力したデータｄ１６０１を所定の変換を用いてデータｄ１６０３に変換し、出力する。変換部１６０３は、Ｓ−ｂｏｘのような非線形変換でも良いし、第１の実施形態で説明した関数φのような線形変換でも良く、任意の変換を用いることができる。変換部１６０３は、恒等変換でも良く、この場合変換処理を行わなくても良い。
【０１３４】
図１６は、変換部１６０２の構成例を示すブロック図である。変換部１６０２は、変換部１７０１と、排他的論理和演算部１７０２と、変換部１７０４と、Ｓ−ｂｏｘ１７０３と、排他的論理和演算部１７０５と、排他的論理和演算部１７０６と、を備えている。
【０１３５】
変換部１６０２は、データｄ１６０１、ｄ１７００ａ、ｄ１７００ｂが入力され、データｄ１６０１を変換部１７０１に入力する。変換部１６０２は、変換部１７０１が出力したデータｄ１７０１とデータｄ１７００ａとの排他的論理和であるデータｄ１７０２を計算してＳ−ｂｏｘ１７０３に入力する。変換部１６０２は、データｄ１６０１を変換部１７０４でデータｄ１７０４に変換する。変換部１６０２は、Ｓ−ｂｏｘ１７０３が出力したデータｄ１７０３と、変換部１７０４が出力したデータｄ１７０４との排他的論理和であるデータｄ１７０５を計算する。変換部１６０２は、データｄ１７０５とｄ１７００ｂとの排他的論理和であるデータｄ１６０２を計算し、出力する。
【０１３６】
データｄ１７００ａは、マスク生成部１０５が出力した１２８ビットの入力マスクｄ１２０ｂを８ビットずつ区切って１６個に分けたデータの１つである。データｄ１７００ｂは、マスク生成部１０５が出力した１２８ビットの出力マスクｄ１２１ｂを８ビットずつ区切って１６個に分けたデータの１つである。
【０１３７】
変換部１７０１は、入力されたデータｄ１６０１に変換用データｄ１６０１ｂを排他的加算した結果を関数ψの逆関数ψ−１で変換した結果に変換用データｄ１６０１ａを排他的加算した結果ｄ１７０１を出力する。
【０１３８】
Ｓ−ｂｏｘ１７０３は、ＡＥＳのＳ−ｂｏｘと同様の非線形変換であり、入力されたデータｄ１７０２をｄ１７０３に変換する。変換部１７０４は、変換部１６０３と同一の変換であり、入力されたデータｄ１６０１をｄ１７０４に変換する。変換部１６０２は、入力されるデータｄ１６０１が０から２５５までの場合について、出力されるデータｄ１６０２を予め計算し、変換表として保持することもできる。この場合、変換部１６０２は、データｄ１６０１を受け付け、この変換表を参照して受け付けたデータｄ１６０１に対応するデータｄ１６０２を出力する。
【０１３９】
ＭＥＳ１６００の入出力データは、Ｓ−ｂｏｘ変換をＳと表記すると、以下の（７）式の関係を満たす。
ｄ１６０２＾ｄ１６０３＾ｄ１７００ｂ＝Ｓ（ｄ１６００ｌ＾ｄ１６００ｒ＾ｄ１７００ａ）  ・・・（７）
【０１４０】
これまでは１２８ビットのデータを８ビットずつ処理する構成例を説明したが、処理単位は８ビットに限られず、１６ビットや１２８ビットとしても良いし、ビット数が異なる処理単位としても良い。ＳｕｂＢｙｔｅ処理部１１２ｂが有するＭＥＳ１６００〜１６１５は同じ構成でも良い。
【０１４１】
（第４の実施形態）
第４の実施形態は、ＭＥＳ２２００〜２２１５の代わりにＭＥＳ１８００〜１８１５を備える点が第１の実施形態と異なる。図１７は、ＭＥＳ１８００の構成例を示すブロック図である。なお、ＭＥＳ１８０１〜ＭＥＳ１８１５はＭＥＳ１８００と同様の構成を備えるため説明を省略する。
【０１４２】
ＭＥＳ１８００は、排他的論理和演算部１８０１と、排他的論理和演算部１８０２と、排他的論理和演算部１８０４と、排他的論理和演算部１８０６と、暗号アルゴリズムで定められたＳ−ｂｏｘ１８０３と、変換部１８０５と、を備えている。
【０１４３】
ＭＥＳ１８００は、マスク付き暗号化処理中のデータの分割データであるデータｄ１８００ｌおよびデータｄ１８００ｒと、データｄ１８０６ａおよびデータｄ１８０６ｂが入力される。ＭＥＳ１８００は、データｄ１８００ｌとデータｄ１８００ｒとの排他的論理和であるデータｄ１８０１を計算する。ＭＥＳ１８００は、データｄ１８０１とデータｄ１８０６ａとの排他的論理和であるデータｄ１８０２を計算してＳ−ｂｏｘ１８０３に入力する。ＭＥＳ１８００は、Ｓ−ｂｏｘ１８０３が出力したデータｄ１８０３とデータｄ１８０６ｂとの排他的論理和であるデータｄ１８０４を計算する。ＭＥＳ１８００は、入力されたデータｄ１８００ｒを変換部１８０５に入力する。ＭＥＳ１８００は、変換部１８０５が出力したデータｄ１８０５ｒと、データｄ１８０４との排他的論理和であるデータｄ１８０５ｌを出力する。
【０１４４】
変換部１８０５は、データｄ１８００ｒを所定の変換を用いてデータｄ１８０５ｒに変換し、出力する。変換部１８０５は、Ｓ−ｂｏｘのような非線形変換でも良いし、第１の実施形態で説明した関数φのような線形変換でも良く、任意の変換を用いることができる。
【０１４５】
ＭＥＳ１８００は、入力データに対して出力されるデータを予め計算し、変換表として保持することもできる。この場合、ＭＥＳ１８００は入力されたデータｄ１８００ｌおよびデータｄ１８００ｒを受け付け、この変換表を参照してデータｄ１８０５ｌおよびデータｄ１８０５ｒを出力する。
【０１４６】
ＭＥＳ１８００の入出力データは、Ｓ−ｂｏｘ変換をＳと表記すると、以下の（８）式の関係を満たす。
ｄ１８０５ｌ＾ｄ１８０５ｒ＾ｄ１８０６ｂ
＝Ｓ（ｄ１８００ｌ＾ｄ１８００ｒ＾ｄ１８０６ａ）  ・・・（８）
【０１４７】
これまでは、１２８ビットのデータを８ビットずつ処理する構成例を説明したが、処理単位は８ビットに限られず、１６ビットや１２８ビットとしても良いし、ビット数が異なる処理単位としても良い。ＳｕｂＢｙｔｅ処理部１１２ｂが有するＭＥＳ１８００〜１８１５は同じ構成でも良い。
【０１４８】
（第５の実施形態）
図１８は、第５の実施形態の暗号化装置５００の構成例を示すブロック図である。第１の実施形態の暗号化装置１００のブロック図である図３と同様の処理部およびデータについては、図３と同一の符号を付し、説明は省略する。
【０１４９】
暗号化装置５００は、排他的論理和演算部１９０１ｌ〜１９１０ｌと１９０１ｒ〜１９１０ｒをさらに備える。
【０１５０】
排他的論理和演算部１９０１ｌは、データ分割部１０９が出力したデータｄ１０９ｒとＳｕｂＢｙｔｅ処理部１１２ｂが出力したデータｄ１１２ｂｌとを排他的加算した結果であるデータｄ１９０１ｌをＳｈｉｆｔＲｏｗ１１３ｂｌに入力する。
【０１５１】
排他的論理和演算部１９０１ｒは、データ分割部１０９が出力したデータｄ１０９ｒとＳｕｂＢｙｔｅ処理部１１２ｂが出力したデータｄ１１２ｂｒとを排他的加算した結果であるデータｄ１９０１ｒをＳｈｉｆｔＲｏｗ１１３ｂｒに入力する。
【０１５２】
排他的論理和演算部１９０１ｌは、データ分割部１０９が出力したデータｄ１０９ｌとＳｕｂＢｙｔｅ処理部１１２ｂが出力したデータｄ１１２ｂｌとを排他的加算した結果であるデータｄ１９０１ｌをＳｈｉｆｔＲｏｗ１１３ｂｌに入力しても良い。
【０１５３】
このとき、排他的論理和演算部１９０１ｒは、データ分割部１０９が出力したデータｄ１０９ｌとＳｕｂＢｙｔｅ処理部１１２ｂが出力したデータｄ１１２ｂｒとを排他的加算した結果であるデータｄ１９０１ｒをＳｈｉｆｔＲｏｗ１１３ｂｒに入力する。
【０１５４】
排他的論理和演算部１９０１ｌは、データ分割部１０９が出力したデータｄ１０９ｌまたはデータｄ１０９ｒと、ＳｈｉｆｔＲｏｗ１１３ｂｌが出力したデータｄ１１３ｂｌとを排他的加算した結果であるデータｄ１９０１ｌをＭｉｘＣｏｌｕｍｎ１１４ｂｌに入力しても良い。
【０１５５】
排他的論理和演算部１９０１ｒは、データ分割部１０９が出力したデータｄ１０９ｌまたはｄ１０９ｒと、ＳｈｉｆｔＲｏｗ１１３ｂｒが出力したデータｄ１１３ｂｒとを排他的加算した結果であるデータｄ１９０１ｒをＭｉｘＣｏｌｕｍｎ１１４ｂｒに入力しても良い。
【０１５６】
排他的論理和演算部１９０２ｌ〜１９１０ｌは、ＭｉｘＣｏｌｕｍｎ１１４ｂｌ〜１１４ｊｌが出力したデータｄ１１４ｂｌ〜ｄ１１４ｊｌまたはＭｉｘＣｏｌｕｍｎ１１４ｂｒ〜１１４ｊｒが出力したデータｄ１１４ｂｒ〜ｄ１１４ｊｒと、ＳｕｂＢｙｔｅ処理部１１２ｃ〜１１２ｋが出力したデータｄ１１２ｃｌ〜ｄ１１２ｋｌとを排他的加算した結果であるデータｄ１９０２ｌ〜ｄ１９１０ｌをＳｈｉｆｔＲｏｗ１１３ｃｌ〜１１３ｋｌに入力する。
【０１５７】
排他的論理和演算部１９０２ｒ〜１９１０ｒは、ＭｉｘＣｏｌｕｍｎ１１４ｂｌ〜１１４ｊｌが出力したデータｄ１１４ｂｌ〜ｄ１１４ｊｌまたはＭｉｘＣｏｌｕｍｎ１１４ｂｒ〜１１４ｊｒが出力したデータｄ１１４ｂｒ〜ｄ１１４ｊｒと、ＳｕｂＢｙｔｅ処理部１１２ｃ〜１１２ｋが出力したデータｄ１１２ｃｒ〜ｄ１１２ｋｒとを排他的加算した結果であるデータｄ１９０２ｒ〜ｄ１９１０ｒをＳｈｉｆｔＲｏｗ１１３ｃｒ〜１１３ｋｒに入力する。
【０１５８】
排他的論理和演算部１９０２ｌ〜１９１０ｌは、ＭｉｘＣｏｌｕｍｎ１１４ｂｌ〜１１４ｊｌが出力したデータｄ１１４ｂｌ〜ｄ１１４ｊｌまたはＭｉｘＣｏｌｕｍｎ１１４ｂｒ〜１１４ｊｒが出力したデータｄ１１４ｂｒ〜ｄ１１４ｊｒと、ＳｈｉｆｔＲｏｗ１１３ｃｌ〜１１３ｋｌが出力したデータｄ１１３ｃｌ〜ｄ１１３ｋｌとを排他的加算した結果であるデータｄ１９０２ｌ〜ｄ１９１０ｌをＭｉｘＣｏｌｕｍｎ１１４ｃｌ〜１１４ｊｌ、およびＡｄｄＲｏｕｎｄＫｅｙ１１１ｋに入力しても良い。
【０１５９】
排他的論理和演算部１９０２ｒ〜１９１０ｒは、ＭｉｘＣｏｌｕｍｎ１１４ｂｌ〜１１４ｊｌが出力したデータｄ１１４ｂｌ〜ｄ１１４ｊｌまたはＭｉｘＣｏｌｕｍｎ１１４ｂｒ〜１１４ｊｒが出力したデータｄ１１４ｂｒ〜ｄ１１４ｊｒと、ＳｈｉｆｔＲｏｗ１１３ｃｒ〜１１３ｋｒが出力したデータｄ１１３ｃｒ〜ｄ１１３ｋｒとを排他的加算した結果であるデータｄ１９０２ｒ〜ｄ１９１０ｒをＭｉｘＣｏｌｕｍｎ１１４ｃｒ〜１１４ｊｒ、およびデータ統合部１１０に入力しても良い。
【０１６０】
（第６の実施形態）
図１９は、第６の実施形態の暗号化装置６０００の構成例を示すブロック図である。第１の実施形態の暗号化装置１００のブロック図である図３と同様の処理部およびデータについては、図３と同一の符号を付し、説明は省略する。
【０１６１】
暗号化装置６０００は、マスク生成部２００１を備え、マスク処理部２００２とアンマスク処理部２００３をさらに備える。
【０１６２】
マスク生成部２００１は、入力マスクｄ２０１２ｂ〜ｄ２０１２ｋと、入力マスクの分割データｄ２０１０ｂ〜ｄ２０１０ｋ、および、入力マスクの分割データｄ２０１１ｂ〜ｄ２０１１ｋを生成する。入力マスクｄ２０１２ｂ〜ｄ２０１２ｋは、入力マスクの分割データｄ２０１０ｂ〜ｄ２０１０ｋとｄ２０１１ｂ〜ｄ２０１１ｋとを排他的加算した結果である。
【０１６３】
マスク生成部２００１は、出力マスクｄ２０１５ｂ〜ｄ２０１５ｋと、出力マスクの分割データｄ２０１３ｂ〜ｄ２０１３ｋ、および、出力マスクの分割データｄ２０１４ｂ〜ｄ２０１４ｋを生成する。出力マスクｄ２０１５ｂ〜ｄ２０１５ｋは、出力マスクの分割データｄ２０１３ｂ〜ｄ２０１３ｋとｄ２０１４ｂ〜ｄ２０１４ｋとを排他的加算した結果である。
【０１６４】
マスク生成部２００１は、付替マスクｄ２０１６ｂ〜ｄ２０１６ｊを生成する。付替マスクｄ２０１６ｂ〜ｄ２０１６ｊは、入力マスクｄ２０１２ｃ〜ｄ２０１２ｋと出力マスクｄ２０１５ｂ〜ｄ２０１５ｊとを排他的加算した結果である。
【０１６５】
マスク生成部２００１は、入力マスクの分割データｄ２０１０ｂをマスク処理部１０７に供給し、入力マスクの分割データｄ２０１１ｂをマスク処理部２００２に供給し、入力マスクｄ２０１２ｂ〜ｄ２０１２ｋをＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋに供給する。
【０１６６】
マスク生成部２００１は、入力マスクｄ２０１２ｂ〜ｄ２０１２ｋとして、入力マスクの分割データｄ２０１０ｂ〜ｄ２０１０ｋとｄ２０１１ｂ〜ｄ２０１１ｋとを連結したデータをＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋに供給しても良い。
【０１６７】
マスク生成部２００１は、出力マスクの分割データｄ２０１３ｋをアンマスク処理部２００３に供給し、出力マスクの分割データｄ２０１４ｋをアンマスク処理部１０８に供給し、出力マスクｄ２０１５ｂ〜ｄ２０１５ｋをＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋに供給する。
【０１６８】
マスク生成部２００１は、出力マスクｄ２０１５ｂ〜ｄ２０１５ｋとして、出力マスクの分割データｄ２０１３ｂ〜ｄ２０１３ｋとｄ２０１４ｂ〜ｄ２０１４ｋとを連結したデータをＳｕｂＢｙｔｅ処理部１１２ｂ〜１１２ｋに供給しても良い。
【０１６９】
マスク生成部２００１は、付替マスクｄ２０１６ｂ〜ｄ２０１６ｊをマスク付替部１１５ｂ〜１１５ｊに供給する。マスク生成部２００１は、付替マスクｄ２０１６ｂ〜ｄ２０１６ｊとして、入力マスクの分割データｄ２０１０ｃ〜ｄ２０１０ｋ、ｄ２０１１ｃ〜ｄ２０１１ｋと、出力マスクの分割データｄ２０１３ｂ〜ｄ２０１３ｊとｄ２０１４ｂ〜ｄ２０１４ｊとを連結したデータを供給しても良い。
【０１７０】
マスク処理部２００２は、データ分割部１０９が出力したデータｄ１０９ｒと入力マスクの分割データｄ２０１１ｂとを排他的加算した結果ｄ２００２をＳｕｂＢｙｔｅ処理部１１２ｂに入力する。
【０１７１】
マスク処理部２００２は、データ分割部１０９が出力したデータｄ１０９ｌと入力マスクの分割データｄ２０１１ｂとを排他的加算した結果ｄ２００２をＡｄｄＲｏｕｎｄＫｅｙ１１１ａに入力しても良い。
【０１７２】
マスク処理部２００２は、マスク処理部１０７が出力したデータｄ１０７と入力マスクの分割データｄ２０１１とを排他的加算した結果ｄ２００２をデータ分割部１０９に入力しても良い。
【０１７３】
アンマスク処理部２００３は、ＳｈｉｆｔＲｏｗ１１３ｋｒが出力したデータｄ１１３ｋｒと出力マスクの分割データｄ２０１３ｋとを排他的加算した結果ｄ２００３をデータ統合部１１０に入力する。
【０１７４】
アンマスク処理部２００３は、ＡｄｄＲｏｕｎｄＫｅｙ１１１ｋが出力したデータｄ１１１ｋと出力マスクの分割データｄ２０１３ｋとを排他的加算した結果ｄ２００３をデータ統合部１１０に入力しても良い。
【０１７５】
アンマスク処理部２００３は、データ統合部１１０が出力したデータｄ１１０と出力マスクの分割データｄ２０１３ｋとを排他的加算した結果ｄ２００３をアンマスク処理部１０８に入力しても良い。
【０１７６】
ＳｕｂＢｙｔｅ処理部１１２ｂで、Ｓ−ｂｏｘ変換をＳと表記し、ＳｕｂＢｙｔｅ処理部１１２ｂの２つの入力データを排他的加算した結果をｄ２０２０ｂと表記すると、ＳｕｂＢｙｔｅ処理部１１２ｂの入出力データは、以下の（９）式の関係を満たす。
ｄ１１２ｂｌ＾ｄ１１２ｂｒ＾ｄ２０１５ｂ
＝Ｓ（ｄ２０２０ｂ＾ｄ２０１２ｂ）  ・・・（９）
【０１７７】
（９）式を満たしていれば、上述の計算手順でなくても良い。
【０１７８】
先に説明したとおり、マスク生成部２００１が、ＳｕｂＢｙｔｅ処理部１１２ｂに入力マスクの分割データｄ２０１０ｂとｄ２０１１ｂを供給する場合には、ＳｕｂＢｙｔｅ処理部１１２ｂの入出力データは、以下の（１０）式の関係を満たす。
ｄ１１２ｂｌ＾ｄ１１２ｂｒ＾ｄ２０１５ｂ＝Ｓ（ｄ２０２０ｂ＾ｄ２０１２ｂ）
＝Ｓ（ｄ２０２０ｂ＾ｄ２０１０ｂ＾ｄ２０１１ｂ）  ・・・（１０）
【０１７９】
（１０）式を満たしていれば、上述の計算手順でなくても良い。
【０１８０】
同様に、マスク生成部２００１が、ＳｕｂＢｙｔｅ処理部１１２ｂに出力マスクの分割データｄ２０１３ｂとｄ２０１４ｂを供給する場合には、ＳｕｂＢｙｔｅ処理部１１２ｂの入出力データは、以下の（１１）式の関係を満たす。
ｄ１１２ｂｌ＾ｄ１１２ｂｒ＾ｄ２０１５ｂ
＝ｄ１１２ｂｌ＾ｄ１１２ｂｒ＾ｄ２０１３ｂ＾ｄ２０１４ｂ
＝Ｓ（ｄ２０２０ｂ＾ｄ２０１２ｂ）  ・・・（１１）
【０１８１】
（１１）式を満たしていれば、上述の計算手順でなくても良い。ＳｕｂＢｙｔｅ処理部１１２ｃ〜１１２ｋに付いても同様に上記の関係が成り立つ。
【０１８２】
マスク生成部２００１が、マスク付替部１１５ｂに入力マスクの分割データｄ２０１０ｃとｄ２０１１ｃおよび出力マスクの分割データｄ２０１３ｂとｄ２０１４ｂを供給する場合には、マスク付替部１１５ｂの入出力データは、以下の（１２）式の関係を満たす。
ｄ１１５ｂ＝ｄ１１４ｂｒ＾ｄ２０１０ｃ＾ｄ２０１１ｃ＾ｄ２０１３ｂ＾ｄ２０１４ｂ  ・・・（１２）
【０１８３】
（１２）式を満たしていれば、上述の計算手順でなくても良い。マスク付替部１１５ｃ〜１１５ｊに付いても同様に上記の関係が成り立つ。
【０１８４】
以上説明したとおり、第１から第６の実施形態によれば、非線形変換を用いた暗号モジュールで、高次ＤＰＡを含む電力解析に耐性を持つ暗号化装置を提供することができる。すなわち、上記実施形態によれば、ＭＥＳはマスク付きの暗号化処理の中間データを分割した複数のデータを入力として、マスクを付けたまま非線形変換を行い、正しい非線形変換結果を分割した複数のデータを出力することができる。これにより、暗号化処理の中間データと消費電力との相関が取り除かれ、電力解析に対する耐性を持つ。また、１回の暗号化処理で１種類のＭＥＳを用いた場合は、２次ＤＰＡ対策への耐性を有しつつ、従来の２次ＤＰＡ対策技術であるランダムマスク法に比較して回路規模、記憶容量、処理時間、および消費電力を削減することが可能になる。
【０１８５】
次に、第１〜第６の実施形態にかかる暗号化装置のハードウェア構成について図２０を用いて説明する。図２０は、第１〜第６の実施形態にかかる暗号化装置のハードウェア構成を示す説明図である。
【０１８６】
第１〜第６の実施形態にかかる暗号化装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、ＨＤＤ（Hard  Disk  Drive）、ＣＤ（Compact  Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス６１を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１８７】
第１〜第６の実施形態にかかる暗号化装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【０１８８】
また、第１〜第６の実施形態にかかる暗号化装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第１〜第６の実施形態にかかる暗号化装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１８９】
また、第１〜第６の実施形態のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成しても良い。
【０１９０】
第１〜第６の実施形態にかかる暗号化装置で実行されるプログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５１（プロセッサ）が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【０１９１】
なお、本発明の実施形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除しても良い。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１９２】
１００  暗号化装置
１０１ａ  入力部
１０１ｂ  出力部
１０２  鍵記憶部
１０３  ラウンド鍵生成部
１０４  分割用データ生成部
１０５  マスク生成部
１０７  マスク処理部
１０８  アンマスク処理部
１０９  データ分割部
１１０  データ統合部
１１１ａ〜１１１ｋ  ＡｄｄＲｏｕｎｄＫｅｙ
１１２ｂ〜１１２ｋ  ＳｕｂＢｙｔｅ処理部
１１３ｂｌ〜１１３ｋｌ、１１３ｂｒ〜１１３ｋｒ  ＳｈｉｆｔＲｏｗ
１１４ｂｌ〜１１４ｋｌ、１１４ｂｒ〜１１４ｋｒ  ＭｉｘＣｏｌｕｍｎ
１１５ｂ〜１１５ｊ  マスク付替部
【図１】
2012063700.tif 000005
【図２】
2012063700.tif 000006
【図３】
2012063700.tif 000007
【図４】
2012063700.tif 000008
【図５】
2012063700.tif 000009
【図６】
2012063700.tif 000010
【図７】
2012063700.tif 000011
【図８】
2012063700.tif 000012
【図９】
2012063700.tif 000013
【図１０】
2012063700.tif 000014
【図１１】
2012063700.tif 000015
【図１２】
2012063700.tif 000016
【図１３】
2012063700.tif 000017
【図１４】
2012063700.tif 000018
【図１５】
2012063700.tif 000019
【図１６】
2012063700.tif 000020
【図１７】
2012063700.tif 000021
【図１８】
2012063700.tif 000022
【図１９】
2012063700.tif 000023
【図２０】
2012063700.tif 000024