(57)【要約】【課題】ＤＰＡのみならず高次ＤＰＡに対しても安全な暗号化装置、暗号化方法及び暗号化プログラムを提供する。【解決手段】平文ブロックから暗号文ブロックを生成する暗号化装置であって、複数の乱数を発生する乱数発生器と、前記複数の乱数から１つのマスク用乱数をランダムに選択する選択器と、前記選択器により選択されたマスク用乱数を用いて平文ブロックに対しマスク処理を施すマスク処理部と、初期Ｓ箱を表す第一のテーブルを記憶する記憶部と、前記選択器により選択されたマスク用乱数に基づいて、前記第一のテーブルを、変形Ｓ箱を表す第二のテーブルに変換する変換器と、鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演算を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成する暗号化部とを具備する。【選択図】図１
2007189659.tif 000002
【特許請求の範囲】
【請求項１】
平文ブロックから暗号文ブロックを生成する暗号化装置であって、
複数の乱数を発生する乱数発生手段と、
前記複数の乱数から１つのマスク用乱数をランダムに選択する選択手段と、
前記選択手段により選択されたマスク用乱数を用いて平文ブロックに対しマスク処理を
施すマスク処理手段と、
初期Ｓ箱を表す第一のテーブルを記憶する記憶手段と、
前記選択手段により選択されたマスク用乱数に基づいて、前記第一のテーブルを、変形
Ｓ箱を表す第二のテーブルに変換する変換手段と、
鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演算
を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成する暗号
化手段と、
を具備することを特徴とする暗号化装置。
【請求項２】
前記選択手段は、前記乱数発生手段が発生した複数の乱数のうち、いずれかの乱数の特
定ビットにしたがって前記マスク用乱数を選択することを特徴とする請求項１に記載の暗
号化装置。
【請求項３】
平文ブロックから暗号文ブロックを生成する暗号化装置であって、
複数の乱数を発生する乱数発生手段と、
平文ブロックに対し前記複数の乱数それぞれを用いてマスク処理を施すことにより複数
のマスク処理後平文ブロックをそれぞれ得る複数のマスク処理手段と、
初期Ｓ箱を表す第一のテーブルを記憶する記憶手段と、
前記複数の乱数それぞれで前記第一のテーブルを変換することで、変形Ｓ箱を表す複数
の変形テーブルを得る変換手段と、
前記複数のマスク処理後平文ブロックの中から１つをランダムに選択すると共に、この
選択に応じて前記複数の変形テーブルの中から１つを選択する選択手段と、
鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブルを用いる第
二の演算を含む段関数により、選択された前記マスク処理後平文ブロックから、暗号文ブ
ロックを生成する暗号化手段と、
を具備することを特徴とする暗号化装置。
【請求項４】
前記選択手段は、前記乱数発生手段が発生した複数の乱数のうち、いずれかの乱数の特
定ビットにしたがって、前記複数のマスク処理後平文ブロックの中から１つを選択するこ
とを特徴とする請求項３に記載の暗号化装置。
【請求項５】
前記第一のマスク処理手段と前記第二のマスク処理手段は、同一クロックで前記マスク
処理を行うことを特徴とする請求項３に記載の暗号化装置。
【請求項６】
平文ブロックから暗号文ブロックを生成する暗号化装置であって、
第一の固定値及び第２の固定値を記憶する第一の記憶手段と、
初期Ｓ箱を表すテーブルを記憶する第二の記憶手段と、
前記第一の固定値に基づいて前記初期Ｓ箱を変換してなる第一の変形Ｓ箱を表す第一の
テーブル及び前記第二の固定値に基づいて前記初期Ｓ箱を変換してなる第二の変形Ｓ箱を
表す第二のテーブルを記憶する第三の記憶手段と、
乱数を発生する乱数発生手段と、
前記第一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマス
ク処理後平文ブロックを得る第一のマスク処理手段と、
前記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二の
マスク処理後平文ブロックを得る第二のマスク処理手段と、
前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第三のマスク処
理後平文ブロックを得る第三のマスク処理手段と、
前記乱数に基づいて、前記初期Ｓ箱を表すテーブルを、第三の変形Ｓ箱を表す第三のテ
ーブルに変換する変換手段と、
前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前
記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択に
応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択する
選択手段と、
鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテーブル、第二の
テーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段関数により、
選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文ブロック、及
び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成する暗号化手
段と、
を具備することを特徴とする暗号化装置。
【請求項７】
前記選択手段はが、前記乱数発生手段が発生した乱数の特定ビットにしたがって、前記
第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前記第三
のマスク処理後平文ブロックのいずれかを選択することを特徴とする請求項６に記載の暗
号化装置。
【請求項８】
平文ブロックから暗号文ブロックを生成する暗号化装置であって、
第一の乱数、第二の乱数及び第三の乱数を発生する乱数発生手段と、
平文ブロックに対し前記第一の乱数を用いて第一の演算を行うことでマスク処理を施し
、第一マスク処理後平文ブロックを得る第一のマスク処理手段と、
前記平文ブロックに対し前記第二の乱数を用いて第二の演算を行うことでマスク処理を
施し、第二マスク処理後平文ブロックを得る第二のマスク処理手段と、
前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数
及び前記第三の乱数に基づいて第二のデータを算出する演算手段と、
前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックのどちらかを
ランダムに選択し、この選択に応じて前記第一のデータと第二のデータのどちらかを選択
する選択手段と、
鍵情報に基づく拡大鍵を用いた第一の暗号化演算及び前記第一のデータ又は前記第二の
データのどちらかを用いた第二の暗号化演算を含む段関数により、前記第一マスク処理後
平文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成する暗号化部
と、
を具備することを特徴とする暗号化装置。
【請求項９】
前記乱数発生手段は、前記第一の乱数及び前記第三の乱数を発生し、前記第二の乱数と
して前記第一の乱数を用いることを特徴とする請求項８に記載の暗号化装置。
【請求項１０】
前記選択手段は、前記乱数発生手段が発生した乱数の特定ビットにしたがって、前記第
一のマスク処理後平文ブロックと前記第二のマスク処理後平文ブロックのいずれか一方を
選択することを特徴とする請求項８に記載の暗号化装置。
【請求項１１】
前記第一のマスク処理手段と前記第二のマスク処理手段は、同一クロックで前記マスク
処理を行うことを特徴とする請求項８に記載の暗号化装置。
【請求項１２】
平文ブロックから暗号文ブロックを生成する暗号化方法であって、
複数の乱数を乱数発生手段が発生するステップと、
前記複数の乱数から１つのマスク用乱数をランダムに選択する選択ステップと、
選択された前記マスク用乱数を用いて平文ブロックに対しマスク処理を施すステップと
、
初期Ｓ箱を表す第一のテーブルを記憶するステップと、
選択された前記マスク用乱数に基づいて、前記第一のテーブルを、変形Ｓ箱を表す第二
のテーブルに変換するステップと、
鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演算
を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成するステ
ップと、
を具備することを特徴とする暗号化方法。
【請求項１３】
平文ブロックから暗号文ブロックを生成する暗号化方法であって、
複数の乱数を乱数発生手段が発生するステップと、
平文ブロックに対し、前記複数の乱数それぞれを用いてマスク処理を施すことにより複
数のマスク処理後平文ブロックをそれぞれ得る複数のマスク処理ステップと、
初期Ｓ箱を表す第一のテーブルを記憶するステップと、
前記複数の乱数に基づいて、前記第一のテーブルを、変形Ｓ箱を表す複数の変形テーブ
ルにそれぞれ変換するステップと、
前記複数のマスク処理後平文ブロックの中から１つをランダムに選択すると共に、この
選択に応じて前記複数の変形テーブルの中から１つを選択する選択ステップと、
鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブルを用いる第
二の演算を含む段関数により、選択された前記マスク処理後平文ブロックから、暗号文ブ
ロックを生成するステップと、
を具備することを特徴とする暗号化方法。
【請求項１４】
平文ブロックから暗号文ブロックを生成する暗号化方法であって、
第一の固定値及び第２の固定値を記憶するステップと、
初期Ｓ箱を表すテーブルを記憶するステップと、
前記第一の固定値に基づいて前記初期Ｓ箱を変換してなる第一の変形Ｓ箱を表す第一の
テーブル及び前記第二の固定値に基づいて前記初期Ｓ箱を変換してなる第二の変形Ｓ箱を
表す第二のテーブルを記憶するステップと、
乱数発生手段が乱数を発生するステップと、
前記第一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマス
ク処理後平文ブロックを得る第一のマスク処理ステップと、
前記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二の
マスク処理後平文ブロックを得る第二のマスク処理ステップと、
前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第三のマスク処
理後平文ブロックを得る第三のマスク処理ステップと、
前記乱数に基づいて、前記初期Ｓ箱を表すテーブルを、第三の変形Ｓ箱を表す第三のテ
ーブルに変換するステップと、
前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前
記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択に
応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択する
選択ステップと、
鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテーブル、第二の
テーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段関数により、
選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文ブロック、及
び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成するステップ
と、
を具備することを特徴とする暗号化方法。
【請求項１５】
平文ブロックから暗号文ブロックを生成する暗号化方法であって、
乱数発生手段が第一の乱数、第二の乱数及び第三の乱数を発生するステップと、
平文ブロックに対し、前記第一の乱数を用いて第一の演算を行うことでマスク処理を施
し、第一マスク処理後平文ブロックを得る第一のマスク処理ステップと、
前記平文ブロックに対し、前記第二の乱数を用いて第二の演算を行うことでマスク処理
を施し、第二マスク処理後平文ブロックを得る第二のマスク処理ステップと、
前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数
及び前記第三の乱数に基づいて第二のデータを算出する演算ステップと、
前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックのどちらかを
ランダムに選択し、この選択に応じて前記第一のデータと前記第二のデータのどちらかを
選択する選択ステップと、
鍵情報に基づく拡大鍵を用いた第一の暗号化演算及び前記第一のデータ又は前記第二の
データのいずれか一方を用いた第二の暗号化演算を含む段関数により、前記第一マスク処
理後平文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成するステ
ップと、
を具備することを特徴とする暗号化方法。
【請求項１６】
コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
て、
複数の乱数を乱数発生手段に発生させる乱数発生機能と、
前記複数の乱数から１つのマスク用乱数をランダムに選択する選択機能と、
選択された前記マスク用乱数を用いて平文ブロックに対しマスク処理を施すマスク処理
機能と、
初期Ｓ箱を表す第一のテーブルを記憶する記憶機能と、
選択された前記マスク用乱数に基づいて、前記第一のテーブルを、変形Ｓ箱を表す第二
のテーブルに変換する変換機能と、
鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演算
を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成する暗号
化機能と
をコンピュータに実現させるための暗号化プログラム。
【請求項１７】
コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
て、
複数の乱数を乱数発生手段に発生させる乱数発生機能と、
平文ブロックに対し前記複数の乱数それぞれを用いてマスク処理を施すことにより複数
のマスク処理後平文ブロックを得るマスク処理機能と、
初期Ｓ箱を表す第一のテーブルを記憶する記憶機能と、
前記複数の乱数それぞれに基づいて、前記第一のテーブルを変換することで、変形Ｓ箱
を表す複数のテーブル得る変換機能と、
前記複数のマスク処理後平文ブロックの中から１つをランダムに選択すると共に、この
選択に応じて前記複数の変形テーブルの中から１つを選択する選択機能と、
鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブルを用いる第
二の演算を含む段関数により、選択された前記マスク処理後平文ブロックから、暗号文ブ
ロックを生成する生成機能と
をコンピュータに実現させるための暗号化プログラム。
【請求項１８】
コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
て、
第一の固定値及び第２の固定値を記憶する第一の記憶機能と、
初期Ｓ箱を表すテーブルを記憶する第二の記憶機能と、
前記第一の固定値に基づいて前記初期Ｓ箱を変換してなる第一の変形Ｓ箱を表す第一の
テーブル及び前記第二の固定値に基づいて前記初期Ｓ箱を変換してなる第二の変形Ｓ箱を
表す第二のテーブルを記憶する第三の記憶機能と、
乱数発生手段に乱数を発生させる乱数発生機能と、
前記第一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマス
ク処理後平文ブロックを得る第一のマスク処理機能と、
前記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二の
マスク処理後平文ブロックを得る第二のマスク処理機能と、
前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第三のマスク処
理後平文ブロックを得る第三のマスク処理機能と、
前記乱数に基づいて、前記初期Ｓ箱を表すテーブルを、第三の変形Ｓ箱を表す第三のテ
ーブルに変換する変換機能と、
前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前
記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択に
応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択する
選択機能と、
鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテーブル、第二の
テーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段関数により、
選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文ブロック、及
び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成する暗号化機
能と
をコンピュータに実現させるための暗号化プログラム。
【請求項１９】
コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
て、
乱数発生手段に第一の乱数、第二の乱数及び第三の乱数を発生させる乱数発生機能と、
平文ブロックに対し、前記第一の乱数を用いて第一の演算を行うことでマスク処理を施
し、第一マスク処理後平文ブロックを得る第一のマスク処理機能と、
前記平文ブロックに対し、前記第二の乱数を用いて第二の演算を行うことでマスク処理
を施し、第二マスク処理後平文ブロックを得る第二のマスク処理機能と、
前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数
及び前記第三の乱数に基づいて第二のデータを算出する演算機能と、
前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックのどちらかを
ランダムに選択し、この選択に応じて前記第一のデータと前記第二のデータのどちらかを
選択する選択機能と、
鍵情報に基づく拡大鍵を用いた第一の暗号化演算、及び前記第一のデータ又は前記第二
のデータのどちらかを用いた第二の暗号化演算を含む段関数により、前記第一マスク処理
後平文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成する暗号化
機能と、
をコンピュータに実現させることを特徴とする暗号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電力解析に対して安全な秘密鍵ブロック暗号を用いる暗号化装置、暗号化方
法及び暗号化プログラムに関する。
【背景技術】
【０００２】
ＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）は、通信内容の秘匿など
を目的として広範に用いられている秘密鍵ブロック暗号である（例えば下記特許文献１参
照）。
【０００３】
近年、Ｐａｕｌ ＫｏｃｈｅｒらによりＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ Ｐｏｗｅｒ
Ａｎａｌｙｓｉｓ，差分電力解析）が提案されている。ＤＰＡは、複数の平文ブロック
の暗号化を実行する際に暗号化装置が消費する電力を統計的手法により解析することで、
暗号化装置が秘密裏に保持する鍵情報を推測する解析手法である（例えば下記非特許文献
１参照）。
【０００４】
ＤＰＡへの対策としては、乱数で平文ブロックをマスク処理し、解析者が暗号化装置内
部で処理される中間データを予測できないようにすることで統計的解析を無効化すること
が知られている。しかしながら、観測された消費電力の複数のタイミングでの消費電力値
を利用することで乱数のマスクを施す対策を無効化し、暗号化装置が秘密裏に保持する鍵
情報を推測する高次ＤＰＡ（Ｈｉｇｈｅｒ−Ｏｒｄｅｒ ＤＰＡ）がＰａｕｌ Ｋｏｃｈｅ
ｒらにより報告されている。これは、暗号化装置内でマスク用の乱数を発生するタイミン
グと、暗号化処理で非線形演算が行われるタイミングとを利用することで、高次ＤＰＡに
より暗号化装置が秘密裏に保持する鍵情報を推定できるというものである。
【０００５】
伊藤らは、予め固定された複数のマスク値に対応する複数の変換テーブルを暗号化処理
ごとにランダムに選択することでＤＰＡに対して安全な暗号化装置の構成法を与えている
（例えば下記特許文献２参照）。この伊藤らの暗号化装置では、外部から平文ブロックが
入力されると、乱数発生部がマスク選択用の乱数を発生する。このマスク選択用の乱数に
したがって、選択部はマスク記憶部及びテーブル記憶部の各々に予め記憶されている複数
のマスク値及び変換テーブルのうち、対応するマスク値と変換テーブルを選択する。入力
された平文ブロックに対し、マスク処理部は選択されたマスク値によりマスク処理を施す
。マスク処理が施された平文ブロックは、選択された変換テーブルを利用して、鍵情報に
依存する暗号文ブロックに変換される。
【０００６】
伊藤らの手法は、マスク用の乱数を発生させないため、上述した２箇所のタイミングを
利用した高次ＤＰＡを無効化することが可能である。
【特許文献１】特開昭５１−１０８７０１号公報
【特許文献２】特開２００２−３６６０２９公報
【非特許文献１】Ｐａｕｌ Ｋｏｃｈｅｒ，Ｊｏｓｈｕａ Ｊａｆｆｅ， ａｎｄ Ｂｅｎｊａｍｉｎ Ｊｕｎ“Ｄｉｆｆｅｒｅｎｔｉａｌ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ” ｉｎ Ｐｒｏｃｅｅｄｉｎｇｓ ｏｆ Ａｄｖａｎｃｅｓ ｉｎ Ｃｒｙｐｔｏｌｏｇｙ − ＣＲＹＰＴＯ‘９９ Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，１９９９
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献２に記載の暗号化装置は、マスク値のビット（０と１）のバラ
ンスが悪いとＤＰＡや高次ＤＰＡにより鍵の推定が可能であることが知られている。その
ため、予めバランスのよいマスク値を準備する必要がある。また、予めマスク値を固定し
ておくとリバースエンジニアリングなどによりマスク値が露呈した場合には、僅かなバラ
ンスの偏りにより鍵情報が推定される恐れもある。
【０００８】
本発明はこのような問題点に鑑みてなされたものであり、ＤＰＡのみならず高次ＤＰＡ
に対しても安全な暗号化装置、暗号化方法及び暗号化プログラムを提供することを目的と
する。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の暗号化装置は、平文ブロックから暗号文ブロック
を生成する暗号化装置であって、複数の乱数を発生する乱数発生手段と、前記複数の乱数
から１つのマスク用乱数をランダムに選択する選択手段と、前記選択手段により選択され
たマスク用乱数を用いて平文ブロックに対しマスク処理を施すマスク処理手段と、初期Ｓ
箱を表す第一のテーブルを記憶する記憶手段と、前記選択手段により選択されたマスク用
乱数に基づいて、前記第一のテーブルを、変形Ｓ箱を表す第二のテーブルに変換する変換
手段と、鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二
の演算を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成す
る暗号化手段と、を具備することを特徴とする。
【００１０】
また、本発明の暗号化装置は、平文ブロックから暗号文ブロックを生成する暗号化装置
であって、複数の乱数を発生する乱数発生手段と、平文ブロックに対し前記複数の乱数そ
れぞれを用いてマスク処理を施すことにより複数のマスク処理後平文ブロックをそれぞれ
得る複数のマスク処理手段と、初期Ｓ箱を表す第一のテーブルを記憶する記憶手段と、前
記複数の乱数それぞれで前記第一のテーブルを変換することで、変形Ｓ箱を表す複数の変
形テーブルを得る変換手段と、前記複数のマスク処理後平文ブロックの中から１つをラン
ダムに選択すると共に、この選択に応じて前記複数の変形テーブルの中から１つを選択す
る選択手段と、鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブ
ルを用いる第二の演算を含む段関数により、選択された前記マスク処理後平文ブロックか
ら、暗号文ブロックを生成する暗号化手段と、を具備することを特徴とする。
【００１１】
また、本発明の暗号化装置は、平文ブロックから暗号文ブロックを生成する暗号化装置
であって、第一の固定値及び第２の固定値を記憶する第一の記憶手段と、初期Ｓ箱を表す
テーブルを記憶する第二の記憶手段と、前記第一の固定値に基づいて前記初期Ｓ箱を変換
してなる第一の変形Ｓ箱を表す第一のテーブル及び前記第二の固定値に基づいて前記初期
Ｓ箱を変換してなる第二の変形Ｓ箱を表す第二のテーブルを記憶する第三の記憶手段と、
乱数を発生する乱数発生手段と、前記第一の固定値を用いて平文ブロックに対しマスク処
理を施すことにより第一のマスク処理後平文ブロックを得る第一のマスク処理手段と、前
記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二のマス
ク処理後平文ブロックを得る第二のマスク処理手段と、前記乱数を用いて前記平文ブロッ
クに対しマスク処理を施すことにより第三のマスク処理後平文ブロックを得る第三のマス
ク処理手段と、前記乱数に基づいて、前記初期Ｓ箱を表すテーブルを、第三の変形Ｓ箱を
表す第三のテーブルに変換する変換手段と、前記第一のマスク処理後平文ブロック、前記
第二のマスク処理後平文ブロック、及び前記第三のマスク処理後平文ブロックのいずれか
をランダムに選択すると共に、この選択に応じて前記第一のテーブル、第二のテーブル、
及び第三のテーブルのいずれかを選択する選択手段と、鍵情報に基づく拡大鍵を用いる第
一の演算及び選択された前記第一のテーブル、第二のテーブル、及び前記第三のテーブル
のいずれかを用いる第二の演算を含む段関数により、選択された前記第一のマスク処理後
平文ブロック、第二のマスク処理後平文ブロック、及び第三のマスク処理後平文ブロック
のいずれかから、暗号文ブロックを生成する暗号化手段と、を具備することを特徴とする
。
【００１２】
また、本発明の暗号化装置は、平文ブロックから暗号文ブロックを生成する暗号化装置
であって、第一の乱数、第二の乱数及び第三の乱数を発生する乱数発生手段と、平文ブロ
ックに対し前記第一の乱数を用いて第一の演算を行うことでマスク処理を施し、第一マス
ク処理後平文ブロックを得る第一のマスク処理手段と、前記平文ブロックに対し前記第二
の乱数を用いて第二の演算を行うことでマスク処理を施し、第二マスク処理後平文ブロッ
クを得る第二のマスク処理手段と、前記第一の乱数及び前記第三の乱数に基づいて第一の
データを算出し、前記第二の乱数及び前記第三の乱数に基づいて第二のデータを算出する
演算手段と、前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックの
どちらかをランダムに選択し、この選択に応じて前記第一のデータと第二のデータのどち
らかを選択する選択手段と、鍵情報に基づく拡大鍵を用いた第一の暗号化演算及び前記第
一のデータ又は前記第二のデータのどちらかを用いた第二の暗号化演算を含む段関数によ
り、前記第一マスク処理後平文ブロック又は第二マスク処理後平文ブロックから暗号文ブ
ロックを生成する暗号化部と、を具備することを特徴とする。
【００１３】
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、複数の乱数を乱数発生手段が発生するステップと、前記複数の乱数から１つの
マスク用乱数をランダムに選択する選択ステップと、選択された前記マスク用乱数を用い
て平文ブロックに対しマスク処理を施すステップと、初期Ｓ箱を表す第一のテーブルを記
憶するステップと、選択された前記マスク用乱数に基づいて、前記第一のテーブルを、変
形Ｓ箱を表す第二のテーブルに変換するステップと、鍵情報に基づく拡大鍵を用いる第一
の演算及び前記第二のテーブルを用いる第二の演算を含む段関数により前記マスク処理後
の平文ブロックから暗号文ブロックを生成するステップと、を具備することを特徴とする
。
【００１４】
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、複数の乱数を乱数発生手段が発生するステップと、平文ブロックに対し、前記
複数の乱数それぞれを用いてマスク処理を施すことにより複数のマスク処理後平文ブロッ
クをそれぞれ得る複数のマスク処理ステップと、初期Ｓ箱を表す第一のテーブルを記憶す
るステップと、前記複数の乱数に基づいて、前記第一のテーブルを、変形Ｓ箱を表す複数
の変形テーブルにそれぞれ変換するステップと、前記複数のマスク処理後平文ブロックの
中から１つをランダムに選択すると共に、この選択に応じて前記複数の変形テーブルの中
から１つを選択する選択ステップと、鍵情報に基づく拡大鍵を用いる第一の演算及び選択
された前記変形テーブルを用いる第二の演算を含む段関数により、選択された前記マスク
処理後平文ブロックから、暗号文ブロックを生成するステップと、を具備することを特徴
とする。
【００１５】
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、第一の固定値及び第２の固定値を記憶するステップと、初期Ｓ箱を表すテーブ
ルを記憶するステップと、前記第一の固定値に基づいて前記初期Ｓ箱を変換してなる第一
の変形Ｓ箱を表す第一のテーブル及び前記第二の固定値に基づいて前記初期Ｓ箱を変換し
てなる第二の変形Ｓ箱を表す第二のテーブルを記憶するステップと、乱数発生手段が乱数
を発生するステップと、前記第一の固定値を用いて平文ブロックに対しマスク処理を施す
ことにより第一のマスク処理後平文ブロックを得る第一のマスク処理ステップと、前記第
二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二のマスク処
理後平文ブロックを得る第二のマスク処理ステップと、前記乱数を用いて前記平文ブロッ
クに対しマスク処理を施すことにより第三のマスク処理後平文ブロックを得る第三のマス
ク処理ステップと、前記乱数に基づいて、前記初期Ｓ箱を表すテーブルを、第三の変形Ｓ
箱を表す第三のテーブルに変換するステップと、前記第一のマスク処理後平文ブロック、
前記第二のマスク処理後平文ブロック、及び前記第三のマスク処理後平文ブロックのいず
れかをランダムに選択すると共に、この選択に応じて前記第一のテーブル、第二のテーブ
ル、及び第三のテーブルのいずれかを選択する選択ステップと、鍵情報に基づく拡大鍵を
用いる第一の演算及び選択された前記第一のテーブル、第二のテーブル、及び前記第三の
テーブルのいずれかを用いる第二の演算を含む段関数により、選択された前記第一のマス
ク処理後平文ブロック、第二のマスク処理後平文ブロック、及び第三のマスク処理後平文
ブロックのいずれかから、暗号文ブロックを生成するステップと、を具備することを特徴
とする暗号化方法。
【００１６】
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、乱数発生手段が第一の乱数、第二の乱数及び第三の乱数を発生するステップと
、平文ブロックに対し、前記第一の乱数を用いて第一の演算を行うことでマスク処理を施
し、第一マスク処理後平文ブロックを得る第一のマスク処理ステップと、前記平文ブロッ
クに対し、前記第二の乱数を用いて第二の演算を行うことでマスク処理を施し、第二マス
ク処理後平文ブロックを得る第二のマスク処理ステップと、前記第一の乱数及び前記第三
の乱数に基づいて第一のデータを算出し、前記第二の乱数及び前記第三の乱数に基づいて
第二のデータを算出する演算ステップと、前記第一マスク処理後平文ブロックと前記第二
マスク処理後平文ブロックのどちらかをランダムに選択し、この選択に応じて前記第一の
データと前記第二のデータのどちらかを選択する選択ステップと、鍵情報に基づく拡大鍵
を用いた第一の暗号化演算及び前記第一のデータ又は前記第二のデータのいずれか一方を
用いた第二の暗号化演算を含む段関数により、前記第一マスク処理後平文ブロック又は第
二マスク処理後平文ブロックから暗号文ブロックを生成するステップと、を具備すること
を特徴とする。
【００１７】
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、複数の乱数を乱数発生手段に発生させる乱数発
生機能と、前記複数の乱数から１つのマスク用乱数をランダムに選択する選択機能と、選
択された前記マスク用乱数を用いて平文ブロックに対しマスク処理を施すマスク処理機能
と、初期Ｓ箱を表す第一のテーブルを記憶する記憶機能と、選択された前記マスク用乱数
に基づいて、前記第一のテーブルを、変形Ｓ箱を表す第二のテーブルに変換する変換機能
と、鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演
算を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成する暗
号化機能とをコンピュータに実現させるための暗号化プログラムである。
【００１８】
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、複数の乱数を乱数発生手段に発生させる乱数発
生機能と、平文ブロックに対し前記複数の乱数それぞれを用いてマスク処理を施すことに
より複数のマスク処理後平文ブロックを得るマスク処理機能と、初期Ｓ箱を表す第一のテ
ーブルを記憶する記憶機能と、前記複数の乱数それぞれに基づいて、前記第一のテーブル
を変換することで、変形Ｓ箱を表す複数のテーブル得る変換機能と、前記複数のマスク処
理後平文ブロックの中から１つをランダムに選択すると共に、この選択に応じて前記複数
の変形テーブルの中から１つを選択する選択機能と、鍵情報に基づく拡大鍵を用いる第一
の演算及び選択された前記変形テーブルを用いる第二の演算を含む段関数により、選択さ
れた前記マスク処理後平文ブロックから、暗号文ブロックを生成する生成機能とをコンピ
ュータに実現させるための暗号化プログラムである。
【００１９】
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、第一の固定値及び第２の固定値を記憶する第一
の記憶機能と、初期Ｓ箱を表すテーブルを記憶する第二の記憶機能と、前記第一の固定値
に基づいて前記初期Ｓ箱を変換してなる第一の変形Ｓ箱を表す第一のテーブル及び前記第
二の固定値に基づいて前記初期Ｓ箱を変換してなる第二の変形Ｓ箱を表す第二のテーブル
を記憶する第三の記憶機能と、乱数発生手段に乱数を発生させる乱数発生機能と、前記第
一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマスク処理後
平文ブロックを得る第一のマスク処理機能と、前記第二の固定値を用いて前記平文ブロッ
クに対しマスク処理を施すことにより第二のマスク処理後平文ブロックを得る第二のマス
ク処理機能と、前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第
三のマスク処理後平文ブロックを得る第三のマスク処理機能と、前記乱数に基づいて、前
記初期Ｓ箱を表すテーブルを、第三の変形Ｓ箱を表す第三のテーブルに変換する変換機能
と、前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び
前記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択
に応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択す
る選択機能と、鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテー
ブル、第二のテーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段
関数により、選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文
ブロック、及び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成
する暗号化機能とをコンピュータに実現させるための暗号化プログラムである。
【００２０】
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、乱数発生手段に第一の乱数、第二の乱数及び第
三の乱数を発生させる乱数発生機能と、平文ブロックに対し、前記第一の乱数を用いて第
一の演算を行うことでマスク処理を施し、第一マスク処理後平文ブロックを得る第一のマ
スク処理機能と、前記平文ブロックに対し、前記第二の乱数を用いて第二の演算を行うこ
とでマスク処理を施し、第二マスク処理後平文ブロックを得る第二のマスク処理機能と、
前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数及
び前記第三の乱数に基づいて第二のデータを算出する演算機能と、前記第一マスク処理後
平文ブロックと前記第二マスク処理後平文ブロックのどちらかをランダムに選択し、この
選択に応じて前記第一のデータと前記第二のデータのどちらかを選択する選択機能と、鍵
情報に基づく拡大鍵を用いた第一の暗号化演算、及び前記第一のデータ又は前記第二のデ
ータのどちらかを用いた第二の暗号化演算を含む段関数により、前記第一マスク処理後平
文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成する暗号化機能
と、をコンピュータに実現させることを特徴とする暗号化プログラムである。
【発明の効果】
【００２１】
本発明によれば、ＤＰＡのみならず高次ＤＰＡに対しても安全な暗号化装置、暗号化方
法及び暗号化プログラムを提供できる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態を、図面を参照して説明する。
【００２３】
（第一実施形態）
第一実施形態では、本発明をＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒ
ｄ）に適用した例を説明する。
【００２４】
図１は本発明が適用される、暗号アルゴリズムＤＥＳの構成を示す図である。
【００２５】
暗号化装置内部に秘密裏に保持される鍵情報２０８から鍵スケジュール部２０２により
計算される拡大鍵２０８を用いて、平文ブロック（６４ビット）２０３が攪拌される。こ
れにより暗号文ブロック２０７が計算される。具体的には、平文ブロック２０３は初期転
置２０４が施された後、左側（上位）及び右側（下位）の３２ビットずつのデータに分割
される。分割された左側の３２ビットのデータと右側の３２ビットのデータは、それぞれ
後述する段関数２０５の入力となる。段関数２０５の出力は、左側と右側の３２ビットが
入れ替えられた後、次の段関数の入力となる。このような段関数を１６段繰り返した後、
その結果に最終転置２０６を施すことで暗号化処理が完了し、暗号文ブロック２０７が得
られる。
【００２６】
図２は段関数の詳細回路図である。段関数３１７は、転置Ｅ３１１、排他的論理和３１
３、複数のＳ箱（Ｓ１，Ｓ２，．．．，Ｓ８）、転置Ｐ３１５及び排他的論理和３１６と
で構成される。
【００２７】
右側３２ビットのデータを拡大転置Ｅ３１１により４８ビットに拡大し、その結果を排
他的論理和３１３に出力する。排他的論理和３１３は、転置Ｅ３１１の出力と、拡大鍵３
１２の排他的論理和を出力する。排他的論理和３１３の出力４８ビットは６ビットのデー
タに等分され、各Ｓ箱の入力となる。
【００２８】
各Ｓ箱はテーブルで構成され、６４エントリの６ビット入力に対してそれぞれ４ビット
データを出力する。例えばＳ箱（Ｓ１）３１４について、６ビット入力の左端を第１ビッ
ト、右端を第６ビットとすると、第１ビットと第６ビットを２進数とみなした数字で図３
に示すＳ箱の表（Ｓ１の表）の行を指定する。図３に示すＳ１の表の行番号は上から０，
１，２，３行と数える。次に、残りの４ビットを２進数とみなした数字で列の番号を指定
する。列番号も左端から０，１，２，３，…１５列と数える。例えば、Ｓ１の入力を「０
１１０１１」とすると、行番号は「０１」すなわち、図３において上から２番目の行とな
る。次に、列番号は「１１０１」すなわち「１３」（左から１４番目の列）なので表の値
は「５」となる。従って、Ｓ１の出力はこの２進表現である「０１０１」となる。なお、
図３では、Ｓ箱の出力を行と列で示したが、一般には、０から６３までの入力に対応した
表として構成される。各Ｓ箱の出力を結合した３２ビットのデータは、転置Ｐ３１５によ
りビット転置操作が行われ、その結果が排他的論理和３１６に出力される。排他的論理和
３１６は左側３２ビットのデータと転置Ｐ３１５の出力との排他的論理和を出力する。
【００２９】
図４は本発明の第一実施形態に係る暗号化装置の概略構成を示すブロック図、図５は同
装置の詳細構成を示す図である。
【００３０】
第一実施形態に係る暗号化装置は、入出力部５０１、制御部５０２、演算器５０３、乱
数発生器５０４、選択器５０５、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）５０６及び
ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）５０７を有している。
【００３１】
入出力部５０１は、外部から平文ブロック（６４ビット）を入力として受け付け、演算
結果である暗号文ブロック（６４ビット）を出力する。制御部５０２はクロック信号を発
生し、暗号化装置の動作を制御する。演算器５０３は、入力（命令とデータ）に応じて演
算を行う部分であり、加算や排他的論理和などを実行する。乱数発生器５０４はマスク用
乱数及び選択用乱数を発生する。選択器５０５は、乱数発生器５０４が発生した選択用乱
数に基づいて、乱数発生器５０４が発生した複数のマスク用乱数と、マスク用乱数に対応
して変形された複数のＳ箱からそれぞれ１つを選択する。ＲＯＭ５０６には、命令コード
、初期転置、拡大転置、Ｓ箱、段関数で施す転置、最終転置、鍵情報、及び鍵スケジュー
ルを施すために必要な情報などが記憶されている。ＲＡＭ５０７は、乱数発生器５０４に
より発生された乱数、変形されたＳ箱、及び演算過程で得られるデータなどを保存するメ
モリである。
【００３２】
Ｍｅｈｄｉ−Ｌａｕｒｅｎｔ Ａｋｋａｒらは、暗号化装置の安全性を向上させるため
に、各段で異なるマスク用乱数に対応するＳ箱を用意する方法を提案している（例えば、
参考文献「Ｍｅｈｄｉ−Ｌａｕｒｅｎｔ Ａｋｋａｒ，Ｒｅｉｇｉｓ Ｂｅｖａｎ，ａｎｄ
Ｌｏｕｉｓ Ｇｏｕｂｉｎ，“Ｔｗｏ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ Ａｔｔａｃｋｓ ａ
ｇａｉｎｓｔ Ｏｎｅ−Ｍａｓｋ Ｍｅｔｈｏｄｓ” Ｆａｓｔ Ｓｆｔｗａｒｅ Ｅｎｃｒ
ｙｐｔｉｏｎ ２００４，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，２００４」を参照）。第一
実施形態はＭｅｈｄｉ−Ｌａｕｒｅｎｔ Ａｋｋａｒらの手法を利用することで安全性を
より向上することが可能であるが、説明は省略する。
【００３３】
図５を参照しながら、第一実施形態に係る暗号化装置の動作を説明する。
【００３４】
入出力部５０１が平文ブロック（６４ビット）６０１を受け付けると、乱数発生器５０
４がマスク用乱数６０２ａ及び６０２ｂ（いずれも６４ビット）と選択用乱数６０３（１
ビット）とを発生する。選択器５０５は選択用乱数６０３に基づいてマスク用乱数６０２
ａと６０２ｂから１つを選択処理６０４する。
【００３５】
今、例えばマスク用乱数６０２ａが選択処理６０４において選択されたとする。演算器
（変換器）５０３は、ＲＯＭ５０６に記憶されているＳ箱をマスク用乱数６０２ａに基づ
いて変形Ｓ箱に変換する。具体的には、まずマスク用乱数６０２ａに初期転置を施した後
、これを左側（上位）の３２ビットと右側（下位）の３２ビットとに分割する。ここで、
右側の３２ビットを段関数の拡大転置により４８ビットに拡大したのち、これを各Ｓ箱の
入力に対応するｍｉ１，ｍｉ２，．．．，ｍｉ８（各ｍｉｊは６ビット）に分割する。一
方、左側の３２ビットは、段関数の転置を逆向きに施し、各Ｓ箱の出力に対応するｍｏ１
，ｍｏ２，．．．，ｍｏ８（各ｍｏｊは４ビット）に分割する。ＲＯＭ５０６に記憶され
ているＳ箱（初期Ｓ箱）をＳｊとあらわし、マスク用乱数に依存して変形されたＳ箱（変
形Ｓ箱）をＭＳｊとあらわすことにする（但し、ｊ＝１，２，．．．，８）。
【００３６】
ＭＳｊは、入力ｉ（６ビット）に対して、ｉとｍｉｊの排他的論理和を入力とするＳｊ
からの出力（４ビット）とｍｏｊ（４ビット）との排他的論理和を出力とする。このよう
なＭＳｊは例えばテーブルとしてＲＡＭ５０７に記憶され、段関数に供給される。
【００３７】
一方、選択処理６０４においてマスク用乱数６０２ａが選択されると、演算器５０３は
このマスク用乱数６０２ａと平文ブロック６０１との排他的論理和演算６０５を実行する
。これにより得られたデータ（６４ビット）は、初期転置６０６が施された後、左側（上
位）と右側（下位）の３２ビットずつに分割され、Ｓ箱としてＭＳｊを利用した段関数６
０７の入力とされる。段関数の構成は、ＳｊがＭＳｊ（ｊ＝１，２，．．．，８）に置き
換わる他は図２に示したものと同一である。
【００３８】
段関数の計算が１６回繰り返され、最終転置６０８が施された後、マスク用乱数６０２
ａと最終転置６０８の出力結果との排他的論理和演算６０９が実行され、これにより暗号
文ブロック６１０が得られ、入出力部５０１から出力される。
【００３９】
以上説明した第一実施形態に係る暗号化装置は、ビットのバランスのよいマスク値を予
め設計するのではなく、乱数発生器５０４が発生する乱数を利用することで統計的にビッ
トのバランスを整えるようにしたものである。このような第一実施形態に係る暗号化装置
は、マスク値のビットのバランスを考慮しなくてもよいため設計が容易である。また、リ
バースエンジニアリング等によりマスク値の情報が漏洩することもないため安全性を向上
できる。そして、乱数発生器５０４が発生する複数の乱数の中から１つをマスク値として
選択するため、使用されるマスク用乱数の発生のタイミングが暗号化処理ごとに異なり、
高次ＤＰＡによる鍵情報の推定を困難化することができる。
【００４０】
（第一実施形態の変形例）
第一実施形態では、選択用乱数として乱数発生器５０４が１ビットの乱数を発生するも
のとして説明したが、発生する乱数が固定長であって、１ビットの乱数を発生できない実
装が考えられる。この場合、乱数の発生処理に時間を要してしまう。第一実施形態の変形
例は、生成された２つのマスク用乱数のうち、いずれか所定のマスク用乱数（例えば最初
に生成されたマスク用乱数６０２ａ）の特定ビット（例えば最下位ビット）を選択用変数
とする。この選択用変数の値も乱数であり、生成された２つのマスク用乱数のうちのどち
らかがこの値により選択される。この変形例によれば、乱数発生処理の回数を１回削減す
ることが可能である。
【００４１】
（第二実施形態）
図６は本発明の第二実施形態に係る暗号化装置の概略構成を示すブロック図、図７は同
装置の詳細構成を示す図である。なお、第二実施形態でも、本発明をＤＥＳ（Ｄａｔａ 
Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）に適用した例を説明する。
【００４２】
第二実施形態に係る暗号化装置は、入出力部７０１、制御部７０２、演算器７０３ａと
７０３ｂ、乱数発生器７０４、選択器７０５、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ
）７０６及びＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）７０７により構成され
る。
【００４３】
入出力部７０１は、外部から平文ブロック（６４ビット）を入力として受け付け、演算
結果である暗号文ブロック（６４ビット）を出力する。制御部７０２はクロック信号を発
生し、暗号化装置の動作を制御する。演算器７０３ａ及び７０３ｂは、入力（命令とデー
タ）に応じて演算を行う部分であり、加算や排他的論理和などを実行する。乱数発生器７
０４はマスク用乱数及び選択用乱数を発生する。選択器７０５は、演算器７０３ａ及び７
０３ｂにより計算された平文ブロックとマスク用乱数との排他的論理和の結果からいずれ
か１つを選択し、２つのマスク用乱数に対応して変形された２つの変形Ｓ箱からいずれか
１つを選択する。ＲＯＭ７０６には、命令コード、初期転置、拡大転置、Ｓ箱、段関数で
施す転置、最終転置、鍵情報、及び鍵スケジュールを施すために必要な情報などが記憶さ
れている。ＲＡＭ７０７は、乱数発生器７０４により発生された乱数、変形されたＳ箱、
及び演算過程で得られるデータなどを保存するメモリである。
【００４４】
第一実施形態と同様に、第二実施形態もＭｅｈｄｉ−Ｌａｕｒｅｎｔ Ａｋｋａｒらの
手法を利用することで安全性をより向上することが可能であるが、説明は省略する。
【００４５】
図７を参照しながら、第二実施形態に係る暗号化装置の動作を説明する。
【００４６】
入出力部７０１が平文ブロック（６４ビット）を受け付けると、乱数発生器７０４がマ
スク用乱数８０２ａ及び８０２ｂ（いずれも６４ビット）と選択用乱数８０３（１ビット
）とを発生する。演算器７０３ａ及び７０３ｂは平文ブロック（平文ブロック８０１ａと
平文ブロック８０１ｂは同一のデータ）とマスク用乱数８０２ａ及び８０２ｂとを入力と
して受け付け、同一クロックで排他的論理和演算８０４ａ及び８０４ｂをそれぞれ実行す
る。
【００４７】
一方、２つのマスク用乱数８０２ａ及び８０２ｂのそれぞれに対応して、演算器（変換
器）７０３ａ及び７０３ｂがＲＯＭ７０６に記憶されているＳ箱を２つの変形Ｓ箱に変換
する。変換規則は第一実施形態と同様であるため、説明は省略する。これにより得られた
２つの変形Ｓ箱すなわちＭＳａｊとＭＳｂｊ（ｊ＝１，２，．．．，８）は、テーブルと
してＲＡＭ７０７に記憶される。
【００４８】
選択器７０５は選択用乱数８０３に基づいて、マスク用乱数でマスク処理が施された２
つのデータから１つを選択処理８０５する。また、選択器７０５は選択用乱数８０３に基
づいて、ＲＡＭ７０７に記憶されている変形されたＳ箱（ＭＳａ１，ＭＳａ２，．．．，
ＭＳａ８）と（ＭＳｂ１，ＭＳｂ２，．．．，ＭＳｂ８）から１組を選択処理８０６する
。
【００４９】
以上の処理が終了したら、選択処理８０５により選択されたマスク処理後の平文ブロッ
ク（６４ビット）に対し初期転置８０７が施された後、その処理結果は左側（上位）と右
側（下位）の３２ビットずつに分割され、Ｓ箱としてＭＳａｊあるいはＭＳｂｊが供給さ
れた段関数８０８に入力される。段関数の構成は、ＳｊがＭＳａｊあるいはＭＳｂｊ（ｊ
＝１，２，．．．，８）のうち選択処理８０５により選択された変形Ｓ箱に置き換わる他
は図２に示したものと同一である。
【００５０】
段関数の計算が１６回繰り返された後、その結果に最終転置８０９が施される。演算器
７０３ａ及び７０３ｂは、最終転置８０９の出力（８１０ａ及び８１０ｂには同一のデー
タが入力される）とマスク用乱数８０２ａ及び８０２ｂとを入力として受け付け、同一ク
ロックで排他的論理和演算８１０ａ及び８１０ｂをそれぞれ実行する。これらの結果は選
択器７０５に入力される。選択器７０５は、選択用乱数８０３にしたがって排他的論理和
８１０ａ及び８１０ｂの出力のうちから１つを選択処理８１１する。これにより暗号文ブ
ロック８１２が求まり、入出力部７０１から出力される。
【００５１】
なお、ここでは２つのマスク用乱数を用いた例を説明したが、２つ以上のマスク用乱数
を用いてもよい。
【００５２】
以上説明した第二実施形態に係る暗号化装置は、平文ブロックにマスク処理を施す前に
マスク用乱数を選択するのではなく、複数（実施形態では２つ）のマスク用乱数について
マスク処理を並列に実行した結果からいずれかを選択する。これにより、暗号化装置内で
マスク処理されるデータと消費電力との相関を減らすことができ、ＤＰＡや高次ＤＰＡの
ように消費電力を利用した鍵情報の推測を困難化することができる。
【００５３】
（第二実施形態の変形例）
本発明の第二実施形態においても、第一実施形態と同様の変形例が考えられる。すなわ
ち、選択用変数としてマスク用乱数８０２ａの最下位ビットを用いることで乱数発生処理
の回数を１回削減することが可能である。
【００５４】
（第三実施形態）
図８は本発明の第三実施形態に係る暗号化装置の概略構成を示すブロック図、図９は同
装置の詳細構成を示す図である。第三実施形態でも、本発明をＤＥＳ（Ｄａｔａ Ｅｎｃ
ｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）に適用した例を説明する。
【００５５】
第三実施形態に係る暗号化装置は、入出力部９０１、制御部９０２、演算器９０３ａ、
９０３ｂと９０３ｃ、乱数発生器９０４、選択器９０５、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍ
ｅｍｏｒｙ）９０６及びＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）９０７によ
り構成される。
【００５６】
入出力部９０１は、外部から平文ブロック（６４ビット）を入力として受け付け、演算
結果である暗号文ブロック（６４ビット）を出力する。制御部９０２はクロック信号を発
生し、暗号化装置の動作を制御する。演算器９０３ａ、９０３ｂ、及び９０３ｃは、入力
（命令とデータ）に応じて演算を行う部分であり、加算や排他的論理和などを実行する。
乱数発生器９０４はマスク用乱数及び選択用乱数を発生する。選択器９０５は、演算器９
０３ａ、９０３ｂ、及び９０３ｃにより計算された平文ブロックとマスク用変数との排他
的論理和の結果からいずれか１つを選択し、マスク用変数に対応して変形された複数（３
つ）の変形Ｓ箱からいずれか１つを選択する。ＲＯＭ９０６には、命令コード、初期転置
、拡大転置、Ｓ箱、段関数で施す転置、最終転置、鍵情報、鍵スケジュールを施すために
必要な情報、２つのマスク用変数（６４ビット固定値）、及び２つのマスク用変数に対応
する、変形されたＳ箱などが記憶されている。ＲＡＭ９０７は、乱数発生器９０４により
発生された乱数、変形されたＳ箱、及び演算過程で得られるデータなどを保存するメモリ
である。
【００５７】
第一実施形態と同様に、第三実施形態もＭｅｈｄｉ−Ｌａｕｒｅｎｔ Ａｋｋａｒらの
手法を利用することで安全性をより向上することが可能であるが、説明は省略する。
【００５８】
図９を参照しながら、第三実施形態に係る暗号化装置の動作を説明する。
【００５９】
第三実施形態に係る暗号化装置において、マスク用変数１００２ａ及びマスク用変数１
００２ｂのそれぞれには予め固定値が代入され、ＲＯＭ９０６に記憶されている。マスク
用変数１００２ａ及びマスク用変数１００２ｂは、安全性を向上させるため互いに反転し
たビット列となっていることが望ましい。例えばマスク用変数１００２ａとしては０１０
１・・・０１（６４ビット）とし、マスク用変数１００２ｂとしては１０１０・・・１０
（６４ビット）としてＲＯＭ９０６に記憶する。それぞれのマスク用変数に対応する変形
Ｓ箱（ＭＳａ１，ＭＳａ２，．．．，ＭＳａ８）及び（ＭＳｂ１，ＭＳｂ２，．．．，Ｍ
Ｓｂ８）は第一実施形態と同様に計算してＲＯＭ９０６に記憶しておく。
【００６０】
入出力部９０１が平文ブロック（６４ビット）を受け付けると、乱数発生器９０４がマ
スク用乱数（６４ビット）と選択用乱数（２ビット）を発生する。マスク用乱数はマスク
用変数１００２ｃに代入される。演算器９０３ａ、９０３ｂ、及び９０３ｃは平文ブロッ
ク（平文ブロック１００１ａ、平文ブロック１００１ｂと平文ブロック１００１ｃは同一
のデータ）とマスク用変数１００２ａ、１００２ｂ、及び１００２ｃを入力として受け付
け、同一のクロックで排他的論理和演算１００４ａ、１００４ｂ、及び１００４ｃをそれ
ぞれ実行する。
【００６１】
一方、マスク用乱数１００２ｃに対応して、ＲＯＭ９０６に記憶されているＳ箱を演算
器９０３ｃにおいて変形Ｓ箱に変換する。変換規則は第一実施形態と同様であるため、説
明は省略する。変換された変形Ｓ箱すなわちＭＳｃｊ（ｊ＝１，２，．．．，８）は、テ
ーブルとしてＲＡＭ９０７に記憶される。
【００６２】
選択器９０５は選択用乱数１００３に基づいて、マスク用変数でマスク処理が施された
３つのデータから１つを選択処理１００５する。また、選択器９０５は選択用乱数１００
３に基づいて、ＲＯＭ９０６とＲＡＭ９０７に記憶されている変形Ｓ箱（ＭＳａ１，ＭＳ
ａ２，．．．，ＭＳａ８），（ＭＳｂ１，ＭＳｂ２，．．．，ＭＳｂ８）、及び（ＭＳｃ
１，ＭＳｃ２，．．．，ＭＳｃ８）から１組を選択処理１００６する。
【００６３】
以上の処理が終了したら、選択処理１００５において選択された、マスク処理が施され
た平文ブロック（６４ビット）に対し初期転置１００７が施される。その結果は、左側（
上位）と右側（下位）の３２ビットずつに分割され、Ｓ箱としてＭＳａｊ，ＭＳｂｊある
いはＭＳｃｊが供給された段関数１００８に入力される。段関数の構成は、ＳｊがＭＳａ
ｊ，ＭＳｂｊあるいはＭＳｃｊ（ｊ＝１，２，．．．，８）のうち選択処理１００５によ
り選択された変形Ｓ箱に置き換わる他は図２のものと同一である。
【００６４】
段関数の計算が１６回繰り返された後、その結果に対して最終転置１００９が施される
。演算器１００３ａ，１００３ｂ、及び１００３ｃは、最終転置１００９の出力（１０１
０ａ，１０１０ｂと１０１０ｃには同一のデータが入力される）とマスク用変数１００２
ａ，１００２ｂ、及び１００２ｃを入力として受け付け、同一クロックで排他的論理和演
算１０１０ａ、１０１０ｂ、及び１０１０ｃをそれぞれ実行する。選択器９０５は、選択
用乱数１００３にしたがって排他的論理和１０１０ａ，１０１０ｂ、及び１０１０ｃの出
力のうちから１つを選択処理１０１１する。これにより暗号文ブロック１０２０が得られ
、入出力部９０１から出力される。
【００６５】
以上説明した第三実施形態に係る暗号化装置では、マスク用乱数として１つの乱数を発
生するのみであり、乱数発生処理の回数を削減することが可能である。また、この乱数と
予め固定された２つのマスク値との計３つをマスク用変数として、上記第二実施形態に係
る暗号化装置と同様の処理を行うようにしたものでり、第二実施形態と同様の効果を得ら
れる。
【００６６】
（第三実施形態の変形例）
第三実施形態においても、第一実施形態と同様の問題が考えられる。第三実施形態の変
形例として、選択用変数としてマスク用変数１００２ｃの下位２ビットに着目し、下位２
ビットが００の場合はマスク変数１００２ａを使用し、０１の場合はマスク変数１００２
ｂを使用し、１０と１１の場合はマスク変数１００２ｃを使用することで乱数発生処理の
回数を１回削減することが可能である。
【００６７】
（第四実施形態）
第四実施形態では、本発明をＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔ
ａｎｄａｒｄ）に適用した例を説明するが、本発明をＤＥＳに適用してもよい。
【００６８】
図１０は、本発明が適用される暗号アルゴリズムＡＥＳの構成を示す図である。
【００６９】
鍵スケジュール部１１０３が、暗号化装置内部に秘密裏に保持されている鍵情報１１０
２から拡大鍵を計算する。次に、各段関数にてこの拡大鍵を用いて平文ブロック１１０１
が攪拌され、結果、暗号文ブロック１１０４が計算される。具体的には、平文ブロック１
１０１は、鍵スケジュール部によって計算された拡大鍵を用いて鍵加算１１０５が施され
た後、段関数１１０２に入力される。段関数１１２０に入力されたデータは、ＳｕｂＢｙ
ｔｅ１１０６、ＳｈｉｆｔＲｏｗ１１０７、ＭｉｘＣｏｌｕｍｎ１１０８、鍵加算１１０
９の順に処理が施され、次の段関数の入力となる。このような段関数を９段繰り返した後
、ＳｕｂＢｙｔｅ１１１０、ＳｈｉｆｔＲｏｗ１１１１、鍵加算１１１２を施すことで暗
号化処理が完了し、暗号文ブロック１１０４が得られる。このＳｕｂＢｙｔｅ１１１０、
ＳｈｉｆｔＲｏｗ１１１１、鍵加算１１１２は、第１０段目の段関数と呼ばれる。
【００７０】
ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ，ＭｉｘＣｏｌｕｍｎでは、１２８ビットのデータ
を８ビットごとの１６個のデータブロックとして表現して処理を行う。
【００７１】
ＳｕｂＢｙｔｅでは、１６個のデータブロックそれぞれについて以下を実行する。まず
、各データブロックの８ビットのデータを、
ｂ（ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ＋１
を定義多項式とするＧＦ（２）の８次拡大体ＧＦ（２８）の数Ｉとみなして、Ｉの逆数
Ｊ＝Ｉ−１（ただし、０−１は０と定める）
を計算する。次に、Ｉの逆数として表現されているＪを８ビットのデータＪ１Ｊ２・・・
Ｊ８（各Ｊｉは１ビット）とみなして、ｉ＝０，１，・・・，７について、
Ｊ’ｉ＝Ｊｉ（＋）Ｊｉ＋４ｍｏｄ８（＋）Ｊｉ＋５ｍｏｄ８（＋）Ｊｉ＋６ｍｏｄ８
（＋）Ｊｉ＋７ｍｏｄ８（＋）Ｃｉ
を計算する。ここで、（＋）は排他的論理和を表し、Ｃｉは（Ｃ７，Ｃ６，Ｃ５，Ｃ４，
Ｃ３，Ｃ２，Ｃ１，Ｃ０）＝（０，１，１，０，０，０，１，１）からなるビットである
。このとき、８ビットのデータＪからＪ’＝Ｊ’７Ｊ’６Ｊ’５Ｊ’４Ｊ’３Ｊ’２Ｊ’
１Ｊ’０を計算する手法は、ＳｕｂＢｙｔｅのアフィン変換部と呼ばれ、以下では、Ｊ’
＝Ａ（Ｊ）と記す。すなわち、各データブロックＩにＳｕｂＢｙｔｅを実行するとＡ（Ｉ
−１）が出力される。
【００７２】
ＳｕｂＢｙｔｅは、加算及び乗算回路を利用して、上述のＪ＝Ｉ−１及びＡ（Ｉ−１）
を計算する方法、あるいは入力Ｉに対してＡ（Ｉ−１）を出力とするテーブルを準備する
方法のいずれかにより実装される。前者の方法は、回路規模は増大するものの、記憶容量
を少なくすることが可能である。
【００７３】
ＳｈｉｆｔＲｏｗ及びＭｉｘＣｏｌｕｍｎでは、１６個のデータブロックを４×４の行
列に配置して、ブロック単位で変換を行う。
【００７４】
ＳｈｉｆｔＲｏｗは、行列の各行において所定の大きさだけ巡回置換を行う。ＭｉｘＣ
ｏｌｕｍｎは、行列の各列において所定の行列変換を行う。行列変換は、加算及び乗算回
路を利用して計算する方法、あるいは演算を展開することにより加算回路のみで計算する
方法のいずれかにより実装される。
【００７５】
鍵加算では、１２８ビットのデータと鍵スケジュール部で計算される１２８ビットの拡
大鍵との排他的論理和を計算する。
【００７６】
以下、第四実施形態では、上述したＳｕｂＢｙｔｅやＭｉｘＣｏｌｕｍｎを実行するた
めに、乗算回路と加算回路をそれぞれ一つずつ保持していると仮定する。
【００７７】
図１１は本発明の第四実施形態に係る暗号化装置の概略構成を示すブロック図、図１２
は同装置の詳細構成を示す図である。
【００７８】
第四実施形態に係る暗号化装置は、入出力部１２０１、制御部１２０２、演算器１２０
３、乱数発生器１２０４、選択器１２０５、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ
）１２０６及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２０７、乗算器
１２０８、加算器１２０９を有している。
【００７９】
入出力部１２０１は、外部からの平文ブロック（１２８ビット）を入力として受け付け
、演算結果である暗号文ブロック（１２８ビット）を出力する。制御部１２０２は、クロ
ック信号を発生し、暗号化装置の動作を制御する。演算器１２０３は、入力（命令とデー
タ）に応じて演算を行う部分であり、加算や排他的論理和などを実行する。乗算器１２０
８と加算器１２０９は、それぞれ乗算と加算専用の回路であり、演算器１２０３よりも乗
算や加算を効率的に処理することが可能である。第四実施形態においては、乗算器１２０
８と加算器１２０９は、それぞれマスク処理とＳｕｂＢｙｔｅ、ＭｉｘＣｏｌｕｍｎの計
算に用いられる。
【００８０】
乱数発生器１２０４は、マスク用乱数を２つ、選択用乱数を１つ発生する。選択器１２
０５は、乗算器１２０８と加算器１２０９それぞれで計算された平文ブロックとマスク用
乱数との処理結果からいずれか１つを選択し、マスク用乱数に対応して計算されＳｕｂＢ
ｙｔｅで用いる２組の値からいずれか１組を選択する。なお、このＳｕｂＢｙｔｅの内部
で用いる値の詳細については後述する。
【００８１】
ＲＯＭ１２０６には、命令コード、ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌ
ｕｍｎ、鍵情報、及び鍵スケジュールを施すために必要な情報などが記憶されている。Ｒ
ＡＭ１２０７は、乱数発生器１２０４により発生された乱数、及び演算過程で得られるデ
ータなどを保存するメモリである。
【００８２】
第四実施形態も、第一実施形態と同様に各段で異なるマスクが施されるように構成する
ことで、安全性をより向上することが可能であるが、説明は省略する。
【００８３】
次に、図１２を参照しながら、第四実施形態に係る暗号化装置の動作を説明する。
【００８４】
入出力部１２０１が平文ブロック（１２０８ビット）を受け付けると、乱数発生器１２
０８がマスク用乱数ｍａ１３０２ａ及びｍｂ１３０２ｂ（いずれも１２８ビット）と選択
用乱数１３０３（１ビット）、ＳｕｂＢｙｔｅマスク用乱数ｍ’（１２８ビット）とを発
生する。
【００８５】
乗算器１２０８は、平文ブロック１３０１ａとマスク用乱数ｍａ１３０２ａを入力とし
て受け付け、加算器１２０９は、平文ブロック１３０１ｂ（平文ブロック１３０１ｂは、
平文ブロック１３０１ａと同一のデータ）とマスク用乱数ｍｂ１３０２ｂを入力として受
け付ける。乗算器１２０８及び加算器１２０９は、各入力１２８ビットを１６個の８ビッ
トのデータブロックとみなして、同一クロックで拡大体ＧＦ（２８）における乗算１３０
４ａ及び加算１３０４ｂをそれぞれ実行し、マスク処理を行う。
【００８６】
一方、演算器１２０３では、各マスク用乱数ｍａ＝（ｍａ１５，ｍａ１４，・・・，ｍ
ａ０）、ｍｂ＝（ｍｂ１５，ｍｂ１４，・・・，ｍｂ０）、ｍ’＝（ｍ’１５，ｍ’１４
，・・・，ｍ’０）の逆元であるｍａ−１＝（ｍａ１５−１，ｍａ１４−１，・・・，ｍ
ａ０−１）、ｍｂ＝（ｍｂ１５−１，ｍｂ１４−１，・・・，ｍｂ０−１）、ｍ’＝（ｍ
’１５−１，ｍ’１４−１，・・・，ｍ’０−１）、及びＳｕｂＢｙｔｅのアフィン変換
Ａ（ｍ’ｉ）を計算する。この計算結果は、乗算器１２０８で計算されるＳｕｂＢｙｔｅ
内部で用いるデータの算出に用いられる。なお、ｍａｉ，ｍｂｉ，ｍ’ｉ（ｉ＝０，１，
２，・・・，１５）は、ｍａ，ｍｂ，ｍ’をそれぞれ８ビットに分割した１６個の各デー
タブロックを表す。
【００８７】
乗算器１２０８では、ＳｕｂＢｙｔｅ内部で用いるデータとして、ｍａ−１ｍ’＝（ｍ
ａ１５−１ｍ’１５，ｍａ１４−１ｍ’１４，・・・，ｍａ０−１ｍ’０）、ｍａＡ（ｍ
’）＝（ｍａ１５Ａ（ｍ’１５），ｍａ１４Ａ（ｍ’１４），・・，ｍａ０Ａ（ｍ’０）
）、ｍｂｍ’＝（ｍｂ１５ｍ’１５，ｍｂ１４ｍ’１４，・・・，ｍｂ０ｍ’０）、ｍｂ
ｍ’−１＝（ｍｂ１５ｍ’１５−１，ｍｂ１４ｍ’１４−１，・・・，ｍｂ０ｍ’０−１
）、を計算する。ｍａ−１とｍａ−１ｍ’，ｍａＡ（ｍ’））及び（ｍｂｍ’，ｍｂｍ’
−１）は、ＲＡＭ１２０７に記憶される。なお、この（ｍａ−１ｍ’，ｍａＡ（ｍ’））
及び（ｍｂｍ’，ｍｂｍ’−１）が、上述した選択器が選択する２組の値である。
【００８８】
選択器１２０５は、選択用乱数１３０３に基づいて、乗算器１２０８及び加算器１２０
９それぞれでマスク処理を施した２つの平文ブロック１３２０ａ，１３２０ｂから１つを
選択処理１３０５する。また、選択器１２０５は、選択用乱数１３０３に基づいて、ＲＡ
Ｍに記憶されている２組の値（ｍａ−１ｍ’，ｍａＡ（ｍ’））及び（ｍｂｍ’，ｍｂｍ
’−１）から１組を選択処理１３０６する。
【００８９】
以上の処理が終了したら、選択処理１３０５により選択されたマスク処理後の平文ブロ
ック（１２８ビット）に対して拡大鍵を加算した後、段関数に入力する。
【００９０】
選択用乱数にしたがって、乗算によりマスク処理が施された平文ブロック１３０８ａが
選択された場合には、鍵加算、ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎ
の各関数の入出力が、ともに乗算によりマスク処理が施された平文ブロック１３２０ａに
基づくデータとなるように処理を変更する。一方、加算によりマスク処理が施された平文
ブロック１３０８ｂが選択された場合には、各関数の入出力がともに加算によりマスク処
理が施された平文ブロック１３２０ｂに基づくデータとなるように処理を変更する。
【００９１】
乗算によりマスク処理が施された平文ブロック１３２０ａが選択される場合◎
ここで、選択処理１３０５によって、乗算によりマスク処理が施された平文１３２０ａ
が選択された場合の鍵加算および各段関数での処理を考える。
【００９２】
各処理に入力されるデータを、ｄ＝（ｄ１５，ｄ１４，・・・，ｄ０）と表し、マスク
ｍａをｍａ＝（ｍａ１５，ｍａ１４，・・・，ｍａ０）と表す。ここで、ＧＦ（２８）の
乗算によりマスク処理が施されているデータｄｍａ＝（ｄ１５ｍａ１５，ｄ１４ｍａ１４
，・・・，ｄ０ｍａ０）について考える。
【００９３】
鍵加算は、データｄと拡大鍵ｋとの排他的論理和を算出する関数である。データｄに乗
算１３０４ａによるマスク処理が施されている場合には、ｄｍａとｋから（ｄ（＋）ｋ）
ｍａを計算する必要がある。
【００９４】
まず、拡大鍵ｋをｋ＝（ｋ１５，ｋ１４，・・・，ｋ０）で表す。ただし、ｋｉ（ｉ＝
０，・・・，１５）は、８ビットずつに分割された１６個のデータブロックを表す。この
とき、ｋｍａ＝（ｋ１５ｍａ１５，ｋ１４ｍａ１４，・・・，ｋ０ｍａ０）を計算し、鍵
加算をｄｍａとｋｍａのＧＦ（２８）での加算により処理することで、（ｄ（＋）ｋ）ｍ
ａが得られる。
【００９５】
ＧＦ（２８）の加算は、８ビットのデータをＧＦ（２８）で表現したときの各係数のｍ
ｏｄ２での加算によって計算され、排他的論理和と等価である。従って、ｄｍａ＋ｋｍａ
＝（ｄ＋ｋ）ｍａは、（ｄ（＋）ｋ）ｍａに等しい。
【００９６】
次に、ＳｈｉｆｔＲｏｗを考える。ＳｈｉｆｔＲｏｗは、８ビットに分割されたデータ
ブロックを１つの単位として置換を行うため、マスク用乱数ｍａ、ｍｂなども対応して８
ビット単位で置換を行う。
【００９７】
次に、ＭｉｘＣｏｌｕｍｎを考える。ＭｉｘＣｏｌｕｍｎは、入力されたデータｄに対
して、８ビットに分割されたデータブロックを用いて行列変換を行う。この行列変換とし
て、ＭｉｘＣｏｌｕｍｎを行った後の出力データが、マスクｍａが施されたデータとなる
ように、変換行列の各成分とマスクデータの積を計算する。
【００９８】
例えば、(ｄ１５,ｄ１４, ・・・,ｄ０)をＭｉｘＣｏｌｕｍｎに入力して得られる(ｄ
’１５,ｄ’１４, ・・・,ｄ’０)のうちｄ’１５は、積(０ｘ０２, ０ｘ０３, ０ｘ０１
, ０ｘ０１) (ｄ１５,ｄ１４,ｄ１３,ｄ１２)Ｔ（Ｔは転置をあらわす）により得ること
ができる。
【００９９】
ここで、(０ｘ０２, ０ｘ０３, ０ｘ０１, ０ｘ０１)の代わりに(０ｘ０２, ０ｘ０３
＊ｍa,1４−１＊ｍa,1５, ０ｘ０１＊ｍa,1３−１＊ｍa,1５, ０ｘ０１＊ｍa,1２−１＊
ｍａ１５)として、(ｄｍa,1５, ｄｍa,1４, ｄｍa,1３, ｄｍa,1２)Ｔの積を計算すれば
、マスク処理を施したデータｄｍａを入力とした場合のＭｉｘＣｏｌｕｍｎの出力の１５
ブロック目を得られる。ＭｉｘＣｏｌｕｍｎの他のブロックとマスクの積についても同様
に計算することが可能である。
【０１００】
最後にＳｕｂＢｙｔｅの処理を考える。ＳｕｂＢｙｔｅは入力データｄ＝（ｄ１５，ｄ
１４，・・・，ｄ０）に対して（Ａ（ｄ１５−１），Ａ（ｄ１４−１），・・・，Ａ（ｄ
０−１））を出力する関数である。乗算マスクが施されているデータｄｍａを入力とする
場合には、ｄｍａから（Ａ（ｄ１５−１）ｍａ，１５，Ａ（ｄ１４−１）ｍａ，１４，・
・・，Ａ（ｄ０−１）ｍａ，０）を計算する必要がある。これは、次のように計算する。
【０１０１】
まず、演算器１２０３で（ｄｍａ）−１＝（ｄ１５−１ｍａ，１５−１，ｄ１４−１ｍ
ａ，１４−１，・・・，ｄ０−１ｍａ，０−１）を計算する。次に、（ｄｍａ）−１にｍ
ａ−１ｍ’を加算し、（ｄ−１＋ｍ’）ｍａ−１＝（（ｄ１５−１＋ｍ’１５）ｍａ、１
５−１，（ｄ１４−１＋ｍ’１４）ｍａ、１４−１，・・・，（ｄ０−１＋ｍ’０）ｍａ
、０−１）を計算し、ｍａを乗算してｄ−１＋ｍ’＝（ｄ１５−１＋ｍ’１５，ｄ１４−
１＋ｍ’１４，・・・，ｄ０−１＋ｍ’０）を計算する。ここで得られた各ブロックにア
フィン変換Ａ（・）を作用すると、（Ａ（ｄ１５−１）＋Ａ（ｍ’１５），Ａ（ｄ１４−
１）＋Ａ（ｍ’１４），・・・，Ａ（ｄ０−１）＋Ａ（ｍ’０））を得る。この値にｍａ
を乗算して（（Ａ（ｄ１５−１）ｍａ、１５＋Ａ（ｍ’１５）ｍａ、１５，Ａ（ｄ１４−
１）ｍａ、１４＋Ａ（ｍ’１４）ｍａ、１４，・・・，Ａ（ｄ０−１）ｍａ、0＋Ａ（ｍ
’０）ｍａ、0）を計算し、ｍａＡ（ｍ’）を足すことで（Ａ（ｄ１５−１）ｍａ，１５
，Ａ（ｄ１４−１）ｍａ，１４，・・・，Ａ（ｄ０−１）ｍａ，０）を計算することがで
きる。
【０１０２】
加算によりマスク処理が施された平文ブロック１３２０ｂが選択される場合
一方、選択処理１３０５によって、加算によりマスク処理が施された平文１３２０ｂが
選択された場合の鍵加算および各段関数での処理を考える。
【０１０３】
まず、各処理に入力されるデータを、ｄ＝（ｄ１５，ｄ１４，・・・，ｄ０）と表し、
マスクをｍｂ＝（ｍｂ１５，ｍｂ１４，・・・，ｍｂ０）と表す。ここで、入力データに
ＧＦ（２８）の加算によりマスク処理が施されている場合は、各処理に入力されるデータ
は、ｄ＋ｍｂ＝（ｄ１５＋ｍｂ１５，ｄ１４＋ｍｂ１４，・・・，ｄ０＋ｍｂ０）と表さ
れる。そこで、以下、このｄ＋ｍｂを入力とした場合について、鍵加算及び各段関数での
処理を考える。
【０１０４】
鍵加算は、データｄと拡大鍵ｋとの排他的論理和を算出する関数である。データｄに加
算１３０４ｂによるマスク処理が施されている場合には、ｄ＋ｍｂとｋから（ｄ（＋）ｋ
）＋ｍｂを計算する必要がある。上述の通りＧＦ（２８）の加算は、８ビットのデータを
ＧＦ（２８）で表現したときの各係数のｍｏｄ ２での加算によって計算され、排他的論
理和と等価であることから、（ｄ＋ｍb）＋ｋ＝（（ｄ１５＋ｍb，１５）＋ｋ１５，（ｄ
１４＋ｍb，１４）＋ｋ１４，・・・，（ｄ０＋ｍb，０）＋ｋ０）を計算すれば（ｄ（＋
）ｋ）＋ｍbを計算できる。
【０１０５】
次に、ＳｈｉｆｔＲｏｗを考える。乗算によりマスク処理が施されている場合と同様に
、ＳｈｉｆｔＲｏｗは８ビットに分割されたデータブロックを一つの単位として置換を行
うため、ｍａ，ｍｂなどのデータも対応して８ビット単位で置換を行う。
【０１０６】
次に、ＭｉｘＣｏｌｕｍｎを考える。上述したように、ＭｉｘＣｏｌｕｍｎは８ビット
に分割されたデータブロックを用いた行列変換を行う。加算によりマスクが施されたデー
タを入力とする場合は、変換行列の各成分とマスクデータの積の差を計算することで、Ｍ
ｉｘＣｏｌｕｍｎを行った結果の出力データとしてマスクｍａが施されたデータが得られ
る。
【０１０７】
例えば、積(０ｘ０２, ０ｘ０３, ０ｘ０１, ０ｘ０１) (ｄ１５＋ｍb,１５, ｄ１４＋
ｍb,1４, ｄ１３＋ｍb,1３, ｄ１２＋ｍb,1２)Ｔにｍb,1５−０ｘ０２＊ｍb,1５−０ｘ０
３＊ｍb,1４−０ｘ０１＊ｍb,1３−０ｘ０１＊ｍb,1２を加算すれば、マスク処理を施し
たデータｄ＋ｍｂを入力とした場合のＭｉｘＣｏｌｕｍｎの出力を得ることができる。Ｍ
ｉｘＣｏｌｕｍｎの他のブロックとマスクの和についても同様に計算することが可能であ
る。
【０１０８】
最後にＳｕｂＢｙｔｅの処理を考える。ＳｕｂＢｙｔｅは、入力データｄ＝（ｄ１５，
ｄ１４，・・・，ｄ０）に対して（Ａ（ｄ１５−１），Ａ（ｄ１４−１），・・・，Ａ（
ｄ０−１））を出力する関数である。加算マスクが施されているデータｄ＋ｍｂを入力と
する場合には、ｄ＋ｍｂから（Ａ（ｄ１５−１）＋ｍｂ，１５，Ａ（ｄ１４−１）＋ｍｂ
，１４，・・・，Ａ（ｄ０−１）＋ｍｂ，０）を計算する必要がある。これは、次のよう
に計算する。
【０１０９】
まず、ｄ＋ｍｂにｍ’を乗算して（ｄ＋ｍｂ）ｍ’＝（（ｄ１５＋ｍｂ，１５）ｍ’１
５，（ｄ１４＋ｍｂ，１４）ｍ’１４，・・・，（ｄ０＋ｍｂ，０）ｍ’０）を計算する
。得られたデータに、ｍｂｍ’を加算し、ｄｍ’＝（ｄ１５ｍ’１５，ｄ１４ｍ’１４，
・・・，ｄ０ｍ’０）を計算し、その逆元（ｄｍ’）−１＝（ｄ１５−１ｍ’１５−１，
ｄ１４−１ｍ’１４−１，・・・，ｄ０−１ｍ’０−１）を計算する。
【０１１０】
次に、（ｄｍ’）−１にｍｂｍ’−１を加算し、（ｄ−１＋ｍｂ）ｍ’−１＝（（ｄ１
５−１＋ｍｂ，１５）ｍ’１５−１，（ｄ１４−１＋ｍｂ，１４）ｍ’１４−１，・・・
，（ｄ０−１＋ｍｂ，０）ｍ’０−１）を計算し、ｍ’を乗算してｄ−１＋ｍｂ＝（ｄ１
５−１＋ｍｂ，１５，ｄ１４−１＋ｍｂ，１４，・・・，ｄ０−１＋ｍｂ，０）を計算す
る。この値にアフィン変換Ａ（・）を施して（Ａ（ｄ１５−１）＋Ａ（ｍｂ，１５），Ａ
（ｄ１４−１）＋Ａ（ｍｂ，１４），・・・，Ａ（ｄ０−１）＋Ａ（ｍｂ，０））を計算
する。
【０１１１】
最後に、Ａ（ｍｂ，０）＋ｍｂ，０を加算することで、（Ａ（ｄ１５−１）＋ｍｂ，１
５，Ａ（ｄ１４−１）＋ｍｂ，１４，・・・，Ａ（ｄ０−１）＋ｍｂ，０）を計算する。
なお、最後の加算は鍵加算と合わせて計算することも可能である。
【０１１２】
以上のように、選択処理１３０５によって選択された平文ブロックにあわせて段関数の
計算が１０段繰り返された後、乗算器１２０８及び加算器１２０９は、１０段目の段関数
の出力とマスク用乱数の逆数ｍa−１１３０２ｃ及びマスク用乱数ｍｂ１３０２ｂとを入
力として受け付け、同一クロックで乗算１３１０ａ及び加算１３１０ｂをそれぞれ実行す
る。これらの結果は選択器１２０５に入力される。
【０１１３】
選択器１２０５は、選択用乱数１３０３にしたがって乗算１３１０ａ及び加算１３１０
ｂの出力のうちから１つを選択処理１３１１する。これにより暗号文ブロック１３１２が
求まり、入出力部１２０１から出力される。
【０１１４】
以上説明した第四実施形態に係る暗号化装置は、複数のマスク演算手法によりマスク処
理が施された平文ブロックからいずれかを選択することで、暗号化装置内で処理されるデ
ータと消費電力との相関を減らすようにしている。これにより、ＤＰＡや高次ＤＰＡのよ
うに消費電力を利用した鍵情報の推測を困難化することができる。なお、上述の第四実施
形態においてＳｕｂＢｙｔｅの処理の順番あるいは計算時間からいずれを選択したか特定
されないために、ダミー処理を追加することにより計算順序および計算時間をそろえる必
要がある。
【０１１５】
この第四実施形態では、二つのマスク処理として異なる演算（乗算と加算）に、Ｓｕｂ
ＢｙｔｅやＭｉｘＣｏｌｕｍｎを実行するために保持している乗算回路と加算回路を利用
することで、回路規模の増大を抑えることが可能となる。
【０１１６】
（第四実施形態の変形例）
本発明の第四実施形態においても、第一実施形態と同様の変形例が考えられる。すなわ
ち、選択用変数としてマスク用乱数ｍａ１３０２ａの最下位ビットを用いることで乱数発
生処理の回数を１回削減することが可能である。
【０１１７】
また、ｍａとｍｂとして同一の乱数を用いることで乱数発生処理の回数を１回削減する
ことも可能である。
【０１１８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要
旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示され
ている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実
施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実
施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１９】
【図１】本発明が適用される、暗号アルゴリズムＤＥＳの構成を示す図
【図２】段関数の詳細回路図
【図３】Ｓ箱（Ｓ１）の表の一例を示す図
【図４】本発明の第一実施形態に係る暗号化装置の概略構成を示すブロック図
【図５】本発明の第一実施形態に係る暗号化装置の詳細構成を示す図
【図６】本発明の第二実施形態に係る暗号化装置の概略構成を示すブロック図
【図７】本発明の第二実施形態に係る暗号化装置の詳細構成を示す図
【図８】本発明の第三実施形態に係る暗号化装置の概略構成を示すブロック図
【図９】本発明の第三実施形態に係る暗号化装置の詳細構成を示す図
【図１０】本発明が適用される、暗号アルゴリズムＡＥＳの構成を示す図
【図１１】本発明の第四実施形態に係る暗号化装置の概略構成を示すブロック図
【図１２】本発明の第四実施形態に係る暗号化装置の詳細構成を示す図
【符号の説明】
【０１２０】
２０２…鍵スケジュール部；
２０３…平文ブロック；
２０４…初期転置；
２０５…段関数；
２０６…最終転置；
２０７…暗号文ブロック；
２０８…鍵情報；
【図１】
2007189659.tif 000003
【図２】
2007189659.tif 000004
【図３】
2007189659.tif 000005
【図４】
2007189659.tif 000006
【図５】
2007189659.tif 000007
【図６】
2007189659.tif 000008
【図７】
2007189659.tif 000009
【図８】
2007189659.tif 000010
【図９】
2007189659.tif 000011
【図１０】
2007189659.tif 000012
【図１１】
2007189659.tif 000013
【図１２】
2007189659.tif 000014