(57)【要約】【課題】ＤＰＡのみならず高次ＤＰＡに対しても安全な非線形データ変換器、暗号化装置、及び復号装置を提供する。【解決手段】平文ブロックから暗号文ブロックを生成する暗号化装置であって、一つ以上のマスク値とマスク値のｂｉｔパタンを反転した値の組（ａｉ，ａｉ￣）を保持する記憶素子と、ａｉあるいはａｉ￣で入力をマスク処理し、ａｉあるいはａｉ￣で出力をマスク処理することで初期Ｓ箱演算を変換した変形Ｓ箱演算を行う複数の変形Ｓ箱演算回路と、各段で用いるマスクパタン用乱数をランダムに発生する乱数発生回路と、マスクパタン値に応じてマスク値を選択するマスク選択回路と、複数のマスクパタン値に応じて前期複数の変形Ｓ箱演算回路の出力から一つの出力を選択する変形Ｓ箱演算値選択回路とを具備する。【選択図】図４
2008292742.tif 000002
【特許請求の範囲】
【請求項１】
入力ビット列を、第１のマスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号または復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を第２のマスク値を用いてマスク処理して得られるビット列と等しい第１の出力ビット列に変換する第１のデータ変換手段と、
前記入力ビット列を前記第１のマスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第２のマスク値のビット反転である第２の反転マスク値を用いてマスク処理して得られるビット列と等しい第２の出力ビット列に変換する第２のデータ変換手段と、
前記入力ビット列を前記第１のマスク値のビット反転である第１の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第２のマスク値を用いてマスク処理して得られるビット列と等しい第３の出力ビット列に変換する第３のデータ変換手段と、
前記入力ビット列を前記第１の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第２の反転マスク値を用いてマスク処理して得られるビット列と等しい第４の出力ビット列に変換する第４のデータ変換手段と、
乱数ビット列を生成する生成手段と、
前記乱数ビット列に従い、前記第１のデータ変換手段乃至前記第４のデータ変換手段が出力した前記第１の出力ビット列乃至前記第４の出力ビット列のうち、いずれか１つを選択する選択手段と
を備えることを特徴とする非線形データ変換器。
【請求項２】
入力ビット列を、第１のマスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号または復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を第２のマスク値を用いてマスク処理して得られるビット列と等しい第１の出力ビット列に変換する第１のデータ変換手段と、
前記第１のデータ変換手段が出力する前記第１の出力ビット列をビット反転し、第２の出力ビット列として出力する第１の反転手段と、
前記入力ビット列を前記第１のマスク値のビット反転である第１の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第２のマスク値を用いてマスク処理して得られるビット列と等しい第３の出力ビット列に変換する第２のデータ変換手段と、
前記第２のデータ変換手段が出力する前記第３の出力ビット列をビット反転し、第４の出力ビット列として出力する第２の反転手段と、
乱数ビット列を生成する生成手段と、
前記乱数ビット列に従い、前記第１のデータ変換手段が出力した前記第１の出力ビット列、前記第１の反転手段が出力した前記第２の出力ビット列、前記第２のデータ変換手段が出力した前記第３の出力ビット列、または前記第２の反転手段が出力した前記第４の出力ビット列のうち、いずれか１つを選択する選択手段と
を備えることを特徴とする非線形データ変換器。
【請求項３】
秘密情報である鍵情報から第ｊ（ｊは１以上ｚ以下の整数；ｚは２以上の整数）拡大鍵を生成する鍵スケジュール手段と、第ｊ乱数ビット列を生成する乱数生成手段と、前記第ｊ乱数ビット列とあらかじめ定められた第１のマスク値および第２のマスク値とに基づいて第ｊ段第１マスク値および第ｊ段第２マスク値を作成するマスク作成手段と、外部から入力された平文ブロックに基づくビット列から第１段ビット列を出力する前処理部と、第ｊ段ビット列に対して暗号化演算を行い第ｊ＋１段ビット列を出力する第ｊ段の段関数演算部と、第ｚ＋１段ビット列に基づき暗号化結果を出力する後処理部とを備える暗号化装置であって、
前記第ｊ段の段関数演算部が、
前記第ｊ段ビット列に基づく変換前ビット列を、前記第ｊ段第１マスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第１の変換後ビット列に変換する第１のデータ変換手段と、
前記変換前ビット列を前記第ｊ段第１マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値のビット反転である第ｊ段第２反転マスク値を用いてマスク処理して得られるビット列と等しい第２の変換後ビット列に変換する第２のデータ変換手段と、
前記変換前ビット列を前記第ｊ段第１マスク値のビット反転である第ｊ段第１反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第３の変換後ビット列に変換する第３のデータ変換手段と、
前記変換前ビット列を前記第ｊ段第１反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２反転マスク値を用いてマスク処理して得られるビット列と等しい第４の変換後ビット列に変換する第４のデータ変換手段と、
前記第ｊ乱数ビット列に従い、前記第１のデータ変換手段乃至前記第４のデータ変換手段が出力した前記第１の変換後ビット列乃至前記第４の変換後ビット列のうち、いずれか１つを選択する選択手段と、
前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第ｊ＋１段ビット列として出力する出力手段と
を備えることを特徴とする暗号化装置。
【請求項４】
秘密情報である鍵情報から第ｊ（ｊは１以上ｚ以下の整数；ｚは２以上の整数）拡大鍵を生成する鍵スケジュール手段と、第ｊ乱数ビット列を生成する乱数生成手段と、前記第ｊ乱数ビット列とあらかじめ定められた第１のマスク値および第２のマスク値とに基づいて第ｊ段第１マスク値および第ｊ段第２マスク値を作成するマスク作成手段と、外部から入力された暗号文ブロックに基づくビット列から第１段ビット列を出力する前処理部と、第ｊ段ビット列に対して復号演算を行い第ｊ＋１段ビット列を出力する第ｊ段の段関数演算部と、第ｚ＋１段ビット列に基づき復号結果を出力する後処理部とを備える復号装置であって、
前記第ｊ段の段関数演算部が、
前記第ｊ段ビット列に基づく変換前ビット列を、前記第ｊ段第１マスク値を用いてマスク処理し、そのマスク処理されたビット列を復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第１の変換後ビット列に変換する第１のデータ変換手段と、
前記変換前ビット列を前記第ｊ段第１マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値のビット反転である第ｊ段第２反転マスク値を用いてマスク処理して得られるビット列と等しい第２の変換後ビット列に変換する第２のデータ変換手段と、
前記変換前ビット列を前記第ｊ段第１マスク値のビット反転である第ｊ段第１反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第３の変換後ビット列に変換する第３のデータ変換手段と、
前記変換前ビット列を前記第ｊ段第１反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２反転マスク値を用いてマスク処理して得られるビット列と等しい第４の変換後ビット列に変換する第４のデータ変換手段と、
前記第ｊ乱数ビット列に従い、前記第１のデータ変換手段乃至前記第４のデータ変換手段が出力した前記第１の変換後ビット列乃至前記第４の変換後ビット列のうち、いずれか１つを選択する選択手段と、
前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第ｊ＋１段ビット列として出力する出力手段と
を備えることを特徴とする復号装置。
【請求項５】
秘密情報である鍵情報から第ｊ（ｊは１以上ｚ以下の整数；ｚは２以上の整数）拡大鍵を生成する鍵スケジュール手段と、第ｊ乱数ビット列を生成する乱数生成手段と、前記第ｊ乱数ビット列とあらかじめ定められた第１のマスク値および第２のマスク値とに基づいて第ｊ段第１マスク値および第ｊ段第２マスク値を作成するマスク作成手段と、外部から入力された平文ブロックに基づくビット列から第１段ビット列を出力する前処理部と、第ｊ段ビット列に対して暗号化演算を行い第ｊ＋１段ビット列を出力する第ｊ段の段関数演算部と、第ｚ＋１段ビット列に基づき暗号化結果を出力する後処理部とを備える暗号化装置であって、
前記第ｊ段の段関数演算部が、
前記第ｊ段ビット列に基づく変換前ビット列を、前記第ｊ段第１マスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第１の変換後ビット列に変換する第１のデータ変換手段と、
前記第１のデータ変換手段が出力する前記第１の変換後ビット列をビット反転し、第２の変換後ビット列として出力する第１の反転手段と、
前記変換前ビット列を前記第ｊ段第１マスク値のビット反転である第ｊ段第１反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第３の変換後ビット列に変換する第２のデータ変換手段と、
前記第２のデータ変換手段が出力する前記第３の変換後ビット列をビット反転し、第４の変換後ビット列として出力する第２の反転手段と、
前記第ｊ乱数ビット列に従い、前記第１の変換後ビット列乃至前記第４の変換後ビット列のうち、いずれか１つを選択する選択手段と、
前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第ｊ＋１段ビット列として出力する出力手段と
を備えることを特徴とする暗号化装置。
【請求項６】
秘密情報である鍵情報から第ｊ（ｊは１以上ｚ以下の整数；ｚは２以上の整数）拡大鍵を生成する鍵スケジュール手段と、第ｊ乱数ビット列を生成する乱数生成手段と、前記第ｊ乱数ビット列とあらかじめ定められた第１のマスク値および第２のマスク値とに基づいて第ｊ段第１マスク値および第ｊ段第２マスク値を作成するマスク作成手段と、外部から入力された暗号文ブロックに基づくビット列から第１段ビット列を出力する前処理部と、第ｊ段ビット列に対して復号演算を行い第ｊ＋１段ビット列を出力する第ｊ段の段関数演算部と、第ｚ＋１段ビット列に基づき復号結果を出力する後処理部とを備える復号装置であって、
前記第ｊ段の段関数演算部が、
前記第ｊ段ビット列に基づく変換前ビット列を、前記第ｊ段第１マスク値を用いてマスク処理し、そのマスク処理されたビット列を復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第１の変換後ビット列に変換する第１のデータ変換手段と、
前記第１のデータ変換手段が出力する前記第１の変換後ビット列をビット反転し、第２の変換後ビット列として出力する第１の反転手段と、
前記変換前ビット列を前記第ｊ段第１マスク値のビット反転である第ｊ段第１反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第ｊ段第２マスク値を用いてマスク処理して得られるビット列と等しい第３の変換後ビット列に変換する第２のデータ変換手段と、
前記第２のデータ変換手段が出力する前記第３の変換後ビット列をビット反転し、第４の変換後ビット列として出力する第２の反転手段と、
前記第ｊ乱数ビット列に従い、前記第１の変換後ビット列乃至前記第４の変換後ビット列のうち、いずれか１つを選択する選択手段と、
前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第ｊ＋１段ビット列として出力する出力手段と
を備えることを特徴とする復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非線形データ変換器、暗号化装置、および復号装置に関するものである。
【背景技術】
【０００２】
ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの共通鍵暗号方式による暗号化装置または復号装置は、ＩＣカード装置などに搭載され、広く使用されている。そのため、その秘密鍵を不正なアクセスから保護することの重要性は大きい。
【０００３】
例えば、暗号化装置または復号装置の動作時における消費電力から秘密鍵を推定するＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）などの不正アクセスに対抗するものとして特許文献１に開示されているように、暗号化あるいは復号を行うごとに、あらかじめ定められたマスク値とそれをビット反転して得られるマスク値とをランダムに選択し、マスク処理を行う方法が報告されている。
【０００４】
しかし、上記の特許文献１に記載される発明では、複数のタイミングでの消費電力から秘密鍵を推定する高次ＤＰＡに対する耐性が考慮されていない。
【特許文献１】特開２０００−６６５８５公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したように、特許文献１で開示されている手法には高次ＤＰＡに対する耐性が考慮されていないという問題があった。
【０００６】
本発明は、上記従来技術の問題点を解決するためになされたものであって、高次ＤＰＡに対する耐性を確保できる非線形データ変換器、暗号化装置、および復号装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の実施形態に係る非線形データ変換器は、入力ビット列を、第１のマスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号または復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を第２のマスク値を用いてマスク処理して得られるビット列と等しい第１の出力ビット列に変換する第１のデータ変換手段と、前記入力ビット列を前記第１のマスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第２のマスク値のビット反転である第２の反転マスク値を用いてマスク処理して得られるビット列と等しい第２の出力ビット列に変換する第２のデータ変換手段と、前記入力ビット列を前記第１のマスク値のビット反転である第１の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第２のマスク値を用いてマスク処理して得られるビット列と等しい第３の出力ビット列に変換する第３のデータ変換手段と、前記入力ビット列を前記第１の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第２の反転マスク値を用いてマスク処理して得られるビット列と等しい第４の出力ビット列に変換する第４のデータ変換手段と、乱数ビット列を生成する生成手段と、前記乱数ビット列に従い、前記第１のデータ変換手段乃至前記第４のデータ変換手段が出力した前記第１の出力ビット列乃至前記第４の出力ビット列のうち、いずれか１つを選択する選択手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、高次ＤＰＡに対する耐性を確保できる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態について説明する。
【００１０】
（ＤＥＳの基本構成）
図１は、暗号アルゴリズムＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）の暗号化装置５の基本構成を示すブロック図である。  
秘密情報として保持される鍵情報１９を用いて、鍵スケジュール部２０は拡大鍵２１ａ、２１ｂ，‥２１ｐを算出する。拡大鍵２１ａ、２１ｂ，‥２１ｐは、第１段〜第１６段の段関数３０ａ〜３０ｐに供給される。それぞれの段関数３０ａ〜３０ｐは、拡大鍵２１ａ、２１ｂ，‥２１ｐを用いて平文ブロック９（６４ｂｉｔ）を攪拌する。平文ブロック９は、初期転置ＩＰ（Ｉｎｉｔｉａｌ Ｐｅｒｍｕｔａｔｉｏｎ）１０で転置され、それぞれの段関数３０ａ〜３０ｐで攪拌され、最終転置ＦＰ（Ｆｉｎａｌ Ｐｅｒｍｕｔａｔｉｏｎ）４０で転置され、暗号文ブロック５０となる。
【００１１】
なお、平文ブロック９は、初期転置ＩＰ１０で転置された後、上位３２ｂｉｔと下位３２ｂｉｔに分割され、第１段の段関数３０ａの右側入力と左側入力に入力される。同様に、第１段の段関数３０ａは、右側出力と左側出力から、それぞれ２つのビット列（３２ｂｉｔ）を出力する。
【００１２】
ここで、第１段の段関数３０ａが出力する２つのビット列は、第２段の段関数３０ｂに入力される。即ち、第１段の段関数３０ａの右側出力から出力されたビット列は、第２段の段関数３０ｂの右側入力に入力され、第１段の段関数３０ａの左側出力から出力されたビット列は、第２段の段関数３０ｂの左側入力に入力される。以降、第２段〜第１６段の段関数３０ｂ〜３０ｐでも同様の処理が繰り返される。第１６段の段関数３０ｐの出力である２つのビット列は順番を入れ替えて連結され、最終転置ＦＰ４０に入力される。
【００１３】
図２は、第１段の段関数３０ａの構成を示す図である。なお、第２段〜第１６段の段関数３０ｂ〜３０ｐについても、同じ構成として理解される。  
第１段の段関数３０ａは、拡大転置Ｅ（Ｅｘｔｅｎｔｉｏｎ Ｐｅｒｍｕｔａｔｉｏｎ）３１と、拡大転置Ｅ３１の出力と拡大鍵２１ａとの排他的論理和演算を行う排他的論理和３７と、８個のＳ箱（Ｓ１，Ｓ２，・・・，Ｓ８）３３ａ〜３３ｈと、転置Ｐ（Ｐｅｒｍｕｔａｔｉｏｎ）３４と、転置Ｐ３４の出力と第１段の段関数３０ａの３２ｂｉｔの左側入力との排他的論理和演算を行う排他的論理和３５とを備える。
【００１４】
第１段の段関数３０ａの３２ｂｉｔの右側入力は、拡大転置Ｅ３１により転置され、かつ、４８ｂｉｔに拡大される。次に、排他的論理和３７は、拡大転置Ｅ３１からの４８ｂｉｔの出力と４８ｂｉｔの拡大鍵２１ａとの排他的論理和演算を行う。排他的論理和３７の４８ｂｉｔの出力は、６ｂｉｔ毎のビット列に８等分され、それぞれ８個のＳ箱（Ｓ１，Ｓ２，・・・，Ｓ８）３３ａ〜３３ｈに入力される。
【００１５】
それぞれのＳ箱（Ｓ１，Ｓ２，・・・，Ｓ８）３３ａ〜３３ｈは、入力された６ｂｉｔのビット列を、４ｂｉｔのビット列に非線形変換する。例えば、ＤＥＳのＳ箱（Ｓ１）３３ａの入出力関係を示す表を表１に示す。
【表１】
2008292742.tif 000003
【００１６】
入力された６ｂｉｔの最上位ビットと最下位ビットからなる２ビット（０〜３：２進数）は、表１に示すＳ箱（Ｓ１）３３ａの行番号を指定する。表１に示すＳ箱（Ｓ１）３３ａの行番号は、上から０、１、２、３とする。また、入力された６ｂｉｔから最上位ビットと最下位ビットとを除く、残りの４ｂｉｔ（０〜１５：２進数）は、表１に示すＳ箱（Ｓ１）３３ａの列番号を指定する。表１に示すＳ箱（Ｓ１）３３ａの列番号は、左端から０，１，２，３，…１５と数える。
【００１７】
例えば、Ｓ箱（Ｓ１）３３ａに入力されたビット列を「０１１０１１」とすると、行番号は「１」（０１／ｂ：バイナリー）であり、列番号は「１３」（１１０１／ｂ）であるので、出力値「５」が得られる。従って、Ｓ箱（Ｓ１）３３ａの出力は、「０１０１」となる。なお、Ｓ箱（Ｓ１）３３ａは、６本の入力線（１本が１ｂｉｔに対応）と４本の出力線（１本が１ｂｉｔに対応）とを備え、表１に示す入出力関係となるように、入力線と出力線とを接続する配線および論理素子（ＮＡＮＤ、ＮＯＲなど）の適切な組み合わせにより構成される。
【００１８】
それぞれのＳ箱（Ｓ１，Ｓ２，・・・，Ｓ８）３３ａ〜３３ｈから出力されたビット列（４ｂｉｔ×８つ）を、Ｓ箱（Ｓ１）３３ａの出力ビット列からＳ箱（Ｓ８）３３ｈの出力ビット列までを順に連結して得られる３２ｂｉｔは、転置Ｐ３４で転置される。そして、排他的論理和３５は、転置Ｐ３４からの３２ｂｉｔ出力と、第１段の段関数３０ａの３２ｂｉｔの左側入力との排他的論理和演算を行う。この排他的論理和３５の演算結果は、第１段の段関数３０ａからの３２ｂｉｔの右側出力となる。なお、第１段の段関数３０ａの左側出力は、右側入力と同一である。
【００１９】
（第１の実施形態）
図３は本発明の第１の実施形態に係る暗号化装置１００を示すブロック図である。  
この第１の実施形態に係る暗号化装置１００は、外部から入力された６４ｂｉｔの平文ブロックの初期転置を行う初期転置部（ＩＰ）１０５と、初期転置部１０５が出力するビット列とマスク値ｒｍｓｋ０，ｌｍｓｋ０との排他的論理和演算を行う排他的論理和１３０Ａ、１３０Ｂと、マスク処理あるいはマスクの除去処理のために排他的論理和演算を行う排他的論理和１３０ａ〜１３０ｈと、段関数の３２ｂｉｔの左側入力を排他的論理和１３０Ａの出力、排他的論理和１３０ｈの出力、排他的論理和１３０ｂの出力のいずれかから選択するセレクタ１１０Ｌと、段関数の３２ｂｉｔの右側入力を排他的論理和１３０Bの出力、排他的論理和１３０ｈの出力、排他的論理和１３０ｂの出力のいずれかから選択するセレクタ１１０Ｒと、セレクタ１１０Ｌ、１１０Ｒからの３２ｂｉｔ出力を記憶するレジスタ１２０Ｌ、１２０Ｒと、排他的論理和１３０ｄの出力と拡大鍵ｒｋｅｙｊとの排他的論理和演算を行う排他的論理和１３０ｚと、段関数ごとに乱数ビット列を発生する乱数発生部１４５と、拡大転置部（Ｅ）１５０と、転置部（Ｐ）１６０と、第１６段の段関数の２つの出力と後述するマスク値ｒｍｓｋ１６，ｌｍｓｋ１６との排他的論理和演算を行う排他的論理和１３０Ｃ、１３０Ｄと、受信したビット列に最終転置を行い、６４ｂｉｔの暗号文ブロックを外部へ出力する最終転置部（ＦＰ）１６５とを備える。
【００２０】
また、第１の実施形態に係る暗号化装置１００は、ＤＥＳのＳ箱（Ｓ１）３３ａの非線形変換方式に基づき作製されるそれぞれ異なる４つの変形Ｓ箱１４１ａ〜１４４ａ（第１の変形Ｓ箱群１４０ａ）と、第１の変形Ｓ箱群１４０ａの４つの変形Ｓ箱１４１ａ〜１４４ａの出力から１つを選択するセレクタ１１０ａとを備える。
【００２１】
４つの変形Ｓ箱１４１ａ〜１４４ａは、図２と同じく８群設けられるが、図３では用紙の大きさから省略されている。したがって、図３には非線形変換方式に基づき作製されるそれぞれ異なる４つの変形Ｓ箱を持つ第１の変形Ｓ箱群１４０ａ〜第８の変形Ｓ箱群１４０ｈが存在することを理解する。また、第１の第変形Ｓ箱群１４０ａ〜第８の変形Ｓ箱群１４０ｈの各出力を選択するセレクタ１１０ａ〜１１０ｈが存在することを理解する。
【００２２】
なお、初期転置部１０５、セレクタ１１０Ｌ、１１０Ｒ、レジスタ１２０Ｌ、１２０Ｒ、排他的論理和１３０Ａ〜１３０Ｄ、１３０ａ〜１３０ｈ、１３０ｚ、第１の変形Ｓ箱群１４０ａ〜第８の変形Ｓ箱群１４０ｈ（ただし、第２の変形Ｓ箱群１４０ｂ〜第８の変形Ｓ箱群１４０ｈは図示せず）、拡大転置部１５０、転置部１６０、および最終転置部１６５は、クロック信号に同期して動作する。
【００２３】
また、乱数発生部１４５は、それぞれの段関数（第１段から第１６段まで）の演算が行われる度に、２つの８ｂｉｔの乱数ビット列（ｌｍｐｔｎｊ、ｒｍｐｔｎｊ）を発生する（ｊ＝１，２，・・・・１６）。
【００２４】
さらにまた、３２ｂｉｔのマスク値（ｒｍｓｋｊ、ｌｍｓｋｊ）、および４８ｂｉｔのマスク値（ｅｒｍｓｋｊ）は、乱数ビット列（ｌｍｐｔｎｊ、ｒｍｐｔｎｊ）と、暗号化装置１００にあらかじめ定められた４ｂｉｔのマスク値「ａ」（外部から検出不可）とに基づいて生成されるマスク値である。なお、以下では、「ａ￣」は「ａ」をビットごとに反転して得られる４ｂｉｔのビット列であり、「ａ’」は、「０｜｜ａ｜｜０」で示される６ｂｉｔのビット列であり、「ａ’￣」は、「１｜｜ａ￣｜｜１」で示される６ｂｉｔのビット列として記載する。ここで、「｜｜」はビット連結を表す。
【００２５】
３２ｂｉｔのマスク値（ｌｍｓｋｊ、ｒｍｓｋｊ）は、８ｂｉｔの乱数ビット列（ｌｍｐｔｎｊ、ｒｍｐｔｎｊ）のそれぞれのビットを４ｂｉｔに拡張して生成される。例えば、乱数ビット列（ｌｍｐｔｎｊ）が「１１０１０１００」のとき、３２ｂｉｔのマスク値（ｌｍｓｋｊ）は「ａ￣｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ｜｜ａ」（ａは４ｂｉｔ）となる。また、例えば、乱数ビット列（ｒｍｐｔｎｊ）が「０１０１１０１０」のとき、３２ｂｉｔのマスク値（ｒｍｓｋｊ）は「ａ｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ」となる。
【００２６】
４８ｂｉｔのマスク値（ｅｒｍｓｋｊ）は、８ｂｉｔの乱数ビット列（ｒｍｐｔｎｊ）のそれぞれのビットを６ｂｉｔに拡張して生成される。例えば、乱数ビット列（ｒｍｐｔｎｊ）が「０１０１１０１０」のとき、４８ｂｉｔのマスク値（ｅｒｍｓｋｊ）は「０||ａ||０||１||ａ￣||１||０||ａ||０||１||ａ￣||１||１||ａ￣||１||０||ａ||０||１||ａ￣||１||０||ａ|｜０」となる。
【００２７】
図４は、第１番目の変形Ｓ箱群１４０ａが備える変形Ｓ箱（Ｓ１００、Ｓ１０１、Ｓ１１０、Ｓ１１１）１４１ａ〜１４４ａの等価回路を右側に示すブロック図である。なお、図４に示す等価回路は、図示しない第２の変形Ｓ箱群１４０ｂ〜第８の変形Ｓ箱群１４０ｈも同様であると理解する。  
ここで、ＤＥＳのＳ箱（Ｓｉ）３３ａ〜３３ｈ（ｉ＝１，２，・・・，８）は、６ｂｉｔのビット列ｘが入力された場合に、４ｂｉｔのビット列Ｓｉ（ｘ）を出力する。つまり、第１の変形Ｓ箱（Ｓ１００、Ｓ１０１、Ｓ１１０、Ｓ１１１）１４１ａ〜１４４ａ〜第８の変形Ｓ箱（Ｓ８００、Ｓ８０１、Ｓ８１０、Ｓ８１１）１４１ｈ〜１４４ｈは、６ｂｉｔのビット列ｘが入力された場合に、４ｂｉｔのビット列Ｓｉ００（ｘ）、Ｓｉ０１（ｘ）、Ｓｉ１０（ｘ）、Ｓｉ１１（ｘ）（ｉ＝１，２，・・・，８）を出力する。
【００２８】
以下では、第１乃至第８の変形Ｓ箱（Ｓｉ００、Ｓｉ０１、Ｓｉ１０、Ｓｉ１１）１４１ａ〜１４４ｈの入出力関係を示す。なお、以下では符号「＋」は、排他的論理和演算を示すものである。
【００２９】
即ち、第１乃至第８の変形Ｓ箱（Ｓｉ００、Ｓｉ０１、Ｓｉ１０、Ｓｉ１１）１４１ａ〜１４４ｈ乃至は、６ｂｉｔのビット列から４ｂｉｔのビット列を生成し、「Ｓｉ００（ｘ）＝Ｓｉ（ｘ＋ａ’）＋ａ、Ｓｉ０１（ｘ）＝Ｓｉ（ｘ＋ａ’）＋ａ￣、Ｓｉ１０（ｘ）＝Ｓｉ（ｘ＋ａ’￣）＋ａ、Ｓｉ１１（ｘ）＝Ｓｉ（ｘ＋ａ’￣）＋ａ￣」（ｉ＝１，２，・・・，８）の演算を行うように、入出力関係から導かれる変換テーブルに基づいて設計される。
【００３０】
本発明の第１の実施形態に係る暗号化装置１００の動作を、図３を用いてクロックサイクルごとに説明する。
【００３１】
［第１のクロックサイクル］
まず、乱数発生部１４５は、乱数ビット列（ｒｍｐｔｎ０，ｌｍｐｔｎ０）を生成する。初期転置部１０５は、外部から受信した６４ｂｉｔの平文ブロックを上位３２ｂｉｔと下位３２ｂｉｔのビット列に分割して出力する。排他的論理和１３０Ａは、出力された上位３２ｂｉｔと乱数ビット列（ｒｍｐｔｎ０）から計算されるマスク値（ｒｍｓｋ０）との排他的論理和演算を行う。排他的論理和１３０Ｂは、出力された下位３２ｂｉｔと乱数ビット列（ｌｍｐｔｎ０）から計算されるマスク値（ｌｍｓｋ０）との排他的論理和演算を行う。それぞれの演算結果は、セレクタ１１０Ｌ、１００Ｒを通して、レジスタ１２０Ｌ、１２０Ｒに格納される。なお、乱数ビット列（ｒｍｐｔｎ０，ｌｍｐｔｎ０）は、第１段の段関数（第２番目のクロックサイクル）で使用されるため、記憶される。
【００３２】
［第２〜１６のクロックサイクル（第ｊ段の段関数、ｊ＝１、２、・・・、１５）］
まず、乱数発生部は、乱数ビット列（ｒｍｐｔｎｊ，ｌｍｐｔｎｊ）を生成する。排他的論理和１３０ａは、上記レジスタ１２０Ｒに格納された３２ｂｉｔのビット列に対して乱数ビット列（ｒｍｐｔｎｊ）から計算されるマスク値（ｒｍｓｋｊ）との排他的論理和演算を行う。次の、排他的論理和１３０ｂは、排他的論理和１３０ａの出力とマスク値（ｌｍｓｋｊ−１）との排他的論理和演算を行う。その演算結果は、セレクタ１１０Ｒ，１１０Ｌ、拡大転置部Ｅ１５０に出力され、拡大転置部Ｅ１５０では転置され、かつ、４８ｂｉｔのビット列に拡大される。なお、排他的論理和１３０ｂの出力は、第ｊ段の段関数の左出力（３２ｂｉｔのビット列）である。
【００３３】
次に、排他的論理和１３０ｄには、拡大転置部（Ｅ）１５０が出力する４８ｂｉｔのビット列が入力され、またマスク値（ｒｍｓｋｊ）を拡大転置（Ｅ）して得られる「Ｅ（ｒｍｓｋｊ）」とマスク値（ｅｒｍｓｋｊ）との排他的論和演算結果が入力され、それらの入力ビット列について排他的論理和演算を行う。排他的論理和１３０ｚは、排他的論理和１３０ｄの演算結果と、第ｊ段の段関数に入力された拡大鍵（ラウンド鍵：ｒｋｅｙｊ）との排他的論理和演算を行う。このようにして得られた４８ｂｉｔのビット列は、６ｂｉｔ毎の８つのビット列（第１のビット列〜第８のビット列）に分割される。
【００３４】
そして、第１の変形Ｓ箱群１４０ａ（変形Ｓ箱１４１ａ〜１４４ａ）には、第１のビット列が入力され、図４で説明した非線形変換を行う。図示しない第２の変形Ｓ箱群１４０ｂ〜第８の変形Ｓ箱群１４０ｈにあっても、第２のビット列〜第８のビット列が入力され、図４で説明した非線形変換を行う。
【００３５】
次に、セレクタ１１０ａ〜１１０ｈ（セレクタ１１０ｂ〜１１０ｈは図示せず）は、乱数ビット列「ｌｍｐｔｎｊ」と「ｒｍｐｔｎｊ」の第ｉ番目のビットに基づき、第１の変形Ｓ箱群１４０ａ〜第８の変形Ｓ箱群１４０ｈ毎にいずれの変形Ｓ箱（Ｓｉ００，Ｓｉ０１，Ｓｉ１０，Ｓｉ１１）からの出力を選択するかを、段関数ごとに決定する。
【００３６】
例えば、第ｊ段の段関数の乱数ビット列が「ｒｍｐｔｎｊ＝１１０１０１００，ｌｍｐｔｎｊ＝０１０１１０１０」のとき、セレクタ１１０ａは、「ｒｍｐｔｎｊ」と「ｌｍｐｔｎｊ」の各第１番目のビットが「１」「０」であることから、第１の変形Ｓ箱群１４０ａから「変形Ｓ箱（Ｓ１１０）１４３ａの出力」を選択する。なお、セレクタ１１０ａ〜１１０ｈが選択する各変形Ｓ箱（Ｓｉｘｙ）の出力は、「ｒｍｐｔｎｊ」の第ｉ番目のビットを「ｘ」に代入し、「ｌｍｐｔｎｊ」の第ｉ番目のビットを「ｙ」に代入して同様に決定される。したがって、第２の変形Ｓ箱群１４０ｂ〜第８の変形Ｓ箱群１４０ｈのセレクタ１１０ｂ〜１１０ｈは、Ｓ２１１、Ｓ３００、Ｓ４１１、Ｓ５０１、Ｓ６１０、Ｓ７０１、Ｓ８００の変形Ｓ箱をそれぞれ選択すると理解する。
【００３７】
セレクタ１１０ａ〜１１０ｈにより選択された第１の変形Ｓ箱群１４０ａ〜第８の変形Ｓ箱群１４０ｈの４ｂｉｔのビット列は、順に連結され、３２ｂｉｔのビット列となって排他的論理和１３０ｅに入力される。
【００３８】
次に、排他的論理和１３０ｅは、連結された３２ｂｉｔのビット列と、乱数ビット列（ｌｍｐｔｎｊ）から計算されるマスク値（ｌｍｓｋｊ）に転置Ｐの逆演算を施した「Ｐ−１（ｌｍｓｋｊ）」との排他的論理和演算を行う。次に、排他的論理和１３０ｆは、排他的論理和１３０ｅの出力とマスク値（ｌｍｓｋｊ）との排他的論理和演算を行う。その演算結果は、転置部（Ｐ）１６０に入力され、転置される。
【００３９】
次に、排他的論理和１３０ｇは、転置部（Ｐ）１６０から出力された３２ｂｉｔのビット列とレジスタ１２０Ｌに記憶された３２ｂｉｔのビット列との排他的論理和演算を行う。また、排他的論理和１３０ｈは、排他的論理和１３０ｇの出力とマスク値（ｒｍｓｋｊ−１）との排他的論理和演算を行う。
【００４０】
このような演算が行われた排他的論理和１３０ｈの３２ｂｉｔのビット列は、セレクタ１１０Ｒ，１１０Ｌに入力される。セレクタ１１０Ｒは、排他的論理和１３０ｈの出力（右側出力）を選択しレジスタ１２０Ｒに出力する。また一方、セレクタ１１０Ｌは、排他的論理和１３０ｂの出力（左側出力）を選択し、レジスタ１２０Ｌに出力する。なお、乱数ビット列（ｒｍｐｔｎｊ，ｌｍｐｔｎｊ）は、第ｊ＋１段目の段関数で使用されるため、記憶される。
【００４１】
［第１７のクロックサイクル（第１６段の段関数）］
セレクタ１１０Ｌ、１１０Ｒの動作を除き、第２〜１６のクロックサイクルで行われる第１〜１５段の段関数の動作と、第１６段の段関数の動作は同様である。
【００４２】
第１７のクロックサイクルで行われる第１６段の段関数の動作において、セレクタ１１０Ｒは、排他的論理和１３０ｂの出力（左側出力）を選択し、レジスタ１２０Ｒに送信する。また、セレクタ１１０Ｒは、排他的論理和１３０ｈの出力（右側出力）を選択し、レジスタ１２０Ｌに送信する。なお、乱数ビット列（ｒｍｐｔｎ１６，ｌｍｐｔｎ１６）は、最終転置ＦＰ１６５直前に行われる排他的論理和演算（マスク処理）で使用されるため、記憶される。
【００４３】
［第１８のクロックサイクル］
排他的論理和１３０Ｃは、レジスタ１２０Ｌに記憶された第１６段の段関数の右側出力のビット列と、マスク値（ｌｍｓｋ１６）との排他的論理和演算を行い、最終転置部（ＦＰ）１６５に送信する。また、レジスタ１２０Ｒに記憶されたビット列は、排他的論理和１３０ａ、１３０ｂで、マスク値（ｒｍｓｋ１６、ｌｍｓｋ１５）と排他的論理和演算が行われる。次に、排他的論理和１３０Ｄは、排他的論理和１３０ｂから出力される第１６段の段関数の左側出力のビット列と、マスク値（ｒｍｓｋ１６）との排他的論理和演算を行い、最終転置部（ＦＰ）１６５に送信する。最終転置部（ＦＰ）１６５は、排他的論理和１３０Ｃ、１３０Ｄより受信した２つのビット列を連結し、転置を行い、６４ｂｉｔの暗号文ブロックを出力する。
【００４４】
このように、第１の実施形態に係る暗号化装置１００によれば、ＤＥＳのＳ箱内部で、入力ビット列に「ａ’」あるいは「ａ’￣」によるマスク処理がなされ、出力ビット列に「ａ」あるいは「ａ￣」によるマスク処理がなされたものとして、４種類の変形Ｓ箱を作成し、それらの変形Ｓ箱のいずれを使用するかをランダムに選択することにより、高次ＤＰＡへの耐性を確保することが可能となる。
【００４５】
なお、第１の実施形態に係る暗号化装置１００と同様に、ＤＥＳのＳ箱内部で、入力ビット列に「ａ’」あるいは「ａ’￣」によるマスク処理がなされ、出力ビット列に「ａ」あるいは「ａ￣」によるマスク処理がなされたものとして作成された４種類の変形Ｓ箱を備え、それらの変形Ｓ箱のいずれを使用するかをランダムに選択することとした復号装置を構成することができ、暗号文ブロックを平文ブロックに復号する際にも、高次ＤＰＡへの耐性を確保することが可能となる。
【００４６】
（第１の実施形態の変形例１）
第１の実施形態では、乱数発生部は、各段関数（第１段から第１６段まで）の演算が行われる度に、２つの８ｂｉｔの乱数ビット列（ｌｍｐｔｎｊ、ｒｍｐｔｎｊ）を発生するものとして説明を行った。
【００４７】
これに対して第１の実施形態の変形例１では、乱数発生部が、例えば、第１段の段関数の演算で２つの８ｂｉｔの乱数ビット列（ｍｐｔｎ０、ｍｐｔｎ１）を発生させ、第ｊ段の段関数（ｊ＝２，・・・，１６）の演算で、１つの８ｂｉｔの乱数ビット列（ｍｐｔｎｊ）を発生させる場合の実施の形態について説明する。
【００４８】
図５は、本発明の第１の実施形態の変形例１に係る暗号化装置１００を示すブロック図である。
【００４９】
この変形例１に係る暗号化装置１００は、排他的論理和１３０ａ、１３０ｂが無い点で第１の実施形態と相異する。また、第１の実施形態に係る乱数発生部１４５が第ｊ段の段関数の演算で発生させた乱数ビット列（ｒｍｐｔｎｊ）は、この変形例１に係る乱数発生部１４５が第ｊ−１段の段関数の演算で発生させた乱数ビット列（ｍｐｔｎｊ−１）となる。また、第１の実施形態に係る乱数発生部１４５が第ｊ段の段関数の演算で発生させた乱数ビット列（ｌｍｐｔｎｊ）は、この変形例１に係る乱数発生部が第ｊ段の段関数の演算で発生させた乱数ビット列（ｍｐｔｎｊ）となる。
【００５０】
なお、変形例１に係る暗号化装置１００の動作は、排他的論理和１３０ａ、１３０ｂがない点と、演算に使用する乱数ビット列が上記の通りである点で第１の実施形態と相違する。
【００５１】
ここで、第１の実施形態の変形例１に係る暗号化装置１００で、排他的論理和１３０ａ、１３０ｂが無い理由を以下に示す。  
変形例１では、第ｊ段の段関数の演算を行う際に、第ｊ段と第ｊ−１段の段関数の演算時に発生させた乱数ビット列（ｍｐｔｎｊ、ｍｐｔｎｊ−１）を用いてマスク処理およびマスクの除去処理を行う。そのため、排他的論理和１３０ａ、１３０ｂが排他的論理和演算を行う際に用いるマスク値が双方ともに（ｍｓｋｊ−１）となり、排他的論理和１３０ａ、１３０ｂが不要となる。
【００５２】
このように第１の実施形態の変形例１に係る暗号化装置１００によれば、４種類のＳ箱を利用することでＤＰＡ、高次ＤＰＡによる解析を困難なものとし、かつ、暗号化演算を行う際の乱数ビット列の発生回数を削減することが可能となり、演算速度を高速化できる。
【００５３】
また、暗号化演算を行う際の乱数ビット列の発生回数を削減することを可能とし、かつ、４種類のＳ箱を利用することでＤＰＡ、高次ＤＰＡによる解析を困難なものとすることができる復号装置を構成することができる。
【００５４】
（第１の実施形態の変形例２）
第１の実施形態では、ＤＥＳのＳ箱内部で、入力ビット列に「ａ’」あるいは「ａ’￣」によるマスク処理がなされ、出力ビット列に「ａ」あるいは「ａ￣」によるマスク処理がなされたものとして、４種類の変形Ｓ箱（Ｓｉ００，Ｓｉ０１，Ｓｉ１０，Ｓｉ１１）（ｉ＝１，２，・・・，８）を用意するものとして説明を行った。
【００５５】
これに対して変形例２では、例えば、２種類の変形Ｓ箱（Ｓｉ００，Ｓｉ１０）を用意し、その２つの変形Ｓ箱（Ｓｉ００，Ｓｉ１０）の出力をそれぞれ全ビット反転させる２つの排他的論理和を用意する。
【００５６】
図６は、本発明の第１の実施形態の変形例２に係る暗号化装置１００を示すブロック図である。
【００５７】
この変形例２に係る暗号化装置１００では、変形Ｓ箱（Ｓ１０１、Ｓ１１１）１４２ａ、１４４ａが無く、変形Ｓ箱（Ｓ１００）１４１ａの出力を全ビット反転する排他的論理和１３０ｘと、変形Ｓ箱（Ｓ１１０）１４３ａの出力を全ビット反転する排他的論理和１３０ｙとをさらに備える点で第１の実施形態と相異する。
【００５８】
なお、変形例２に係る暗号化装置１００の動作は、２つの変形Ｓ箱（Ｓ１０１、Ｓ１１１）では非線形データ変換が行われない点と、排他的論理和１３０ｘが変形Ｓ箱（Ｓ１００）１４１ａの出力を全ビット反転し、排他的論理和１３０ｙが変形Ｓ箱（Ｓ１１１）１４１ｄの出力を全ビット反転する点、およびセレクタ１１０ａでは、入力となる変形Ｓ箱（Ｓ１００）１４１ａ、排他的論理和１３０ｘ「変形Ｓ箱（Ｓ１０１）とみなす」、変形Ｓ箱（Ｓ１１０）１４３ａ、あるいは排他的論理和１３０ｙ「変形Ｓ箱（Ｓ１１１）とみなす」のいずれか１つの出力を、乱数ビット列（ｌｍｐｔｎｊ、ｒｍｐｔｎｊ）を用いて選択する点が第１の実施形態と相異する。なお、セレクタ１１０ａが乱数ビット列（ｌｍｐｔｎｊ、ｒｍｐｔｎｊ）を用いて上記４つの出力のうちから１つを選択する方法は、第１の実施形態で述べた通りである。
【００５９】
このように変形例２に係る暗号化装置１００によれば、２種類の変形Ｓ箱（例えば、Ｓ１００、Ｓ１１０）とそれらの出力のビット反転を行う素子を利用することでＤＰＡ、高次ＤＰＡによる解析を困難なものとし、この暗号化装置１００の回路規模を削減させることが可能である。
【００６０】
また、２種類の変形Ｓ箱（例えば、Ｓ１００、Ｓ１１０）とそれらの出力のビット反転を行う素子を利用することで回路規模を削減することができ、かつ、ＤＰＡ、高次ＤＰＡによる解析を困難なものとする復号装置を構成することができる。
【００６１】
（ＡＥＳの基本構成）
図７は、暗号アルゴリズムＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）の暗号化装置２０５の基本構成を示すブロック図である。  
鍵スケジュール部２５０は、秘密情報として保持される鍵情報２４９を用いて、例えば１２８ｂｉｔの拡大鍵２５１、２５１ａ〜２５１ｊを算出し、鍵加算部２４０、各段の鍵加算部２４０ａ〜２４０ｊへ拡大鍵２５１、２５１ａ〜２５１ｊを供給する。例えば１２８ｂｉｔの平文ブロックは、鍵加算部２４０で拡大鍵２５１と加算され、拡大鍵２５１ａ〜２５１ｊとの加算を含む第１〜１０段の段関数２００ａ〜２００ｊで攪拌され、暗号文ブロックとなる。
【００６２】
第１〜９段の段関数２００ａ〜２００ｉは、入力ビット列に対して、ＳｕｂＢｙｔｅ２１０ａ〜２１０ｉ、ＳｈｉｆｔＲｏｗ２２０ａ〜２２０ｉ、ＭｉｘＣｏｌｕｍｎ２３０ａ〜２３０ｉ、鍵加算部２４０ａ〜２４０ｉでの処理を行う。ただし、図７では第１の段関数２００ａの構成のみ記載している。第１０段の段関数２００ｊは、入力ビット列に対して、ＳｕｂＢｙｔｅ２１０ｊ、ＳｈｉｆｔＲｏｗ２２０ｊ、鍵加算部２４０ｊでの処理を行う。
【００６３】
ＳｕｂＢｙｔｅ２１０ａ〜２１０ｊ、ＳｈｉｆｔＲｏｗ２２０ａ〜２２０ｊ、ＭｉｘＣｏｌｕｍｎ２３０ａ〜２３０ｉでは、入力されたビット列（１２８ｂｉｔ）を８ｂｉｔのビット列毎に１６個のブロックに分割して処理を行う。以下、１６個のブロックは、「ｓ０，０，ｓ１，０，ｓ２，０，ｓ３，０，ｓ０，１，ｓ１，１，ｓ２，１，ｓ３，１，ｓ０，２，ｓ１，２，ｓ２，２，ｓ３，２，ｓ０，３，ｓ１，３，ｓ２，３，ｓ３，３」と記載する。
【００６４】
ＳｕｂＢｙｔｅ２１０ａ〜２１０ｊは、入力された８ｂｉｔのビット列を非線形変換し、８ｂｉｔのビット列を出力するＳ箱を１６個備える。即ち、ＳｕｂＢｙｔｅ２１０ａ〜２１０ｊでは、入力ビット列である１６個のブロック「ｓｉ，ｋ」（８ｂｉｔのビット列）が、それぞれ出力ビット列である「Ｓ（ｓｉ，ｋ）」に変換される。
【００６５】
ＳｈｉｆｔＲｏｗ２２０ａ〜２２０ｊは、１６個のブロック［ｓｉ，０，ｓｉ，１，ｓｉ，２，ｓｉ，３］（ｉ＝０，１，２，３）を［ｓｉ，０◎ｉ，ｓｉ，１◎ｉ，ｓｉ，２◎ｉ，ｓｉ，３◎ｉ］に変換する。なお、◎は４を法とする加算を示す。即ち、１６個のブロック「ｓｉ，ｋ」を行列表現した場合に、行ごとの交換を行う。
【００６６】
ＭｉｘＣｏｌｕｍｎ２３０ａ〜２３０ｉは、各データブロックの８ｂｉｔのデータを、
【数１】
2008292742.tif 000004
【００６７】
を定義多項式とするＧＦ（２）の８次拡大体ＧＦ（２８）の数とみなして、ＧＦ（２８）上で行列変換
【数２】
2008292742.tif 000005
【００６８】
を行う。
【００６９】
鍵加算部２４０、２４０ａ〜２４０ｊは、鍵長１２８ｂｉｔのＡＥＳとすると、入力された１２８ｂｉｔのビット列と１２８ｂｉｔの拡大鍵との排他的論理和演算が行われる。
【００７０】
（第２の実施形態）
図８は、本発明の第２の実施形態に係る暗号化装置３００を示すブロック図である。  
第２の実施形態に係る暗号化装置３００は、第１段の段関数に入力される前に、マスク処理を行う排他的論理和３３０ａと、マスクされた平文ブロックと段関数の出力とを選択するセレクタ３１０と、段関数の入力を記憶するレジスタ３２０と、マスク処理あるいはマスクの除去処理のために排他的論理和演算を行う排他的論理和３３０ｂ、３３０ｃと、排他的論理和３３０ｃの出力と拡大鍵（ｒｋｅｙｋ−１）との排他的論理和演算を行う鍵加算部３５０ａと、ＳｕｂＢｙｔｅ’３６０と、ＳｈｉｆｔＲｏｗ３７０と、ＭｉｘＣｏｌｕｍｎ’３８０と、第１０段の段関数の鍵加算部３５０ｂと、暗号文ブロックを出力する排他的論理和３３０ｄと、段関数ごとに乱数ビット列を発生する図示しない乱数発生部を備える。
【００７１】
また、ＳｕｂＢｙｔｅ’３６０は、ＡＥＳのＳ箱（Ｓ１：図示せず）の非線形変換方式に基づき作製されるそれぞれ異なる４つの変形Ｓ箱３４１ａ〜３４４ａ（第１の変形Ｓ箱群３４０ａ）と、第１の変形Ｓ箱群３４０ａの４つの変形Ｓ箱３４１ａ〜３４４ａの出力から１つを選択するセレクタ３１０ａとを備える。
【００７２】
Ｓ箱３４１ａ〜３４４ａは１６群設けられるが、図８では用紙の大きさから省略されている。したがって、図８には非線形変換方式に基づき作製されるそれぞれ異なる４つの変形Ｓ箱を持つ第１の変形Ｓ箱群３４０ａ〜第１６の変形Ｓ箱群３４０ｐが存在することを理解する。また、第１の変形Ｓ箱群３４０ａ〜第１６の変形Ｓ箱群３４０ｐの各出力を選択するセレクタ３１０ａ〜３１０ｐが存在することを理解する。
【００７３】
なお、セレクタ３１０、３１０ａ〜３１０ｐ、レジスタ３２０、排他的論理和３３０ａ〜３３０ｄ、変形Ｓ箱群３４０ａ〜３４０ｐ、鍵加算部３５０ａ、３５０ｂ、ＳｈｉｆｔＲｏｗ３７０、およびＭｉｘＣｏｌｕｍｎ’３８０は、クロック信号に同期して動作する。
【００７４】
また、乱数発生部３４５は、それぞれの段関数（第１段から第１０段まで）の演算が行われる度に、２つの１６ｂｉｔの乱数ビット列（ｉｍｐｔｎｋ、ｏｍｐｔｎｋ）を発生する（ｋ＝１，２，・・・・１０）。
【００７５】
さらにまた、１２８ｂｉｔのマスク値（ｉｍｓｋｋ、ｏｍｓｋｋ）は、１６ｂｉｔの乱数ビット列（ｉｍｐｔｎｋ、ｏｍｐｔｎｋ）と、暗号化装置３００にあらかじめ定められた８ｂｉｔのマスク値「ａ」に基づいて生成されるマスク値である。
【００７６】
１２８ｂｉｔのマスク値（ｉｍｓｋｋ、ｏｍｓｋｋ）は、１６ｂｉｔの乱数ビット列（ｉｍｐｔｎｋ、ｏｍｐｔｎｋ）のそれぞれのビットを８ｂｉｔに拡張して生成される。例えば、乱数ビット列（ｉｍｐｔｎｋ）が「１１０１０１００１１０１０１００」のとき、１２８ｂｉｔのマスク値（ｉｍｓｋｋ）は「ａ￣｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ｜｜ａ｜｜ａ￣｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ｜｜ａ￣｜｜ａ｜｜ａ」とされる。なお、１２８ｂｉｔのマスク値（ｏｍｓｋｋ）を生成する方法についても同様である。
【００７７】
図９は、第１番の変形Ｓ箱群３４０ａが備える変形Ｓ箱（Ｓ１００、Ｓ１０１、Ｓ１１０、Ｓ１１１）３４１ａ〜３４４ａの等価回路を左側に示すブロック図である。なお、図９に示す等価回路内部のＡＥＳのＳ箱（Ｓ１）が、図示しない第２番の変形Ｓ箱群３４０ｂ〜第１６番の変形Ｓ箱群３４０ｐにおいても同じ構成および動作であると理解する。  
ここで、ＡＥＳのＳ箱（Ｓｉ）（ｉ＝１，２，・・・，１６、ただしＳｉはすべて等しい）は、８ｂｉｔのビット列ｘが入力された場合に、８ｂｉｔの各ビット列Ｓｉ（ｘ）を出力する。つまり、変形Ｓ箱（Ｓｉ００、Ｓｉ０１、Ｓｉ１０、Ｓｉ１１）３４１ａ〜３４４ｐは、８ｂｉｔのビット列ｘが入力された場合に、８ｂｉｔの各ビット列Ｓｉ００（ｘ）、Ｓｉ０１（ｘ）、Ｓｉ１０（ｘ）、Ｓｉ１１（ｘ）を出力するものとする。
【００７８】
以下では、変形Ｓ箱（Ｓｉ００、Ｓｉ０１、Ｓｉ１０、Ｓｉ１１）３４１ａ〜３４４ｐの入力「ｘ」と出力Ｓｉ００（ｘ）、Ｓｉ０１（ｘ）、Ｓｉ１０（ｘ）、Ｓｉ１１（ｘ）との関係を示す。なお、「＋」は排他的論理和演算を示す。
【００７９】
即ち、変形Ｓ箱（Ｓｉ００、Ｓｉ０１、Ｓｉ１０、Ｓｉ１１）３４１ａ〜３４４ｐは、「Ｓｉ００（ｘ）＝Ｓｉ（ｘ＋ａ）＋ａ、Ｓｉ０１（ｘ）＝Ｓｉ（ｘ＋ａ）＋ａ￣、Ｓｉ１０（ｘ）＝Ｓｉ（ｘ＋ａ￣）＋ａ、Ｓｉ１１（ｘ）＝Ｓｉ（ｘ＋ａ￣）＋ａ￣」の演算が、入出力関係から導かれる変換テーブルに基づいて行われるように設計される。
【００８０】
なお、変形Ｓ箱（Ｓｉ００、Ｓｉ０１、Ｓｉ１０、Ｓｉ１１）３４１ａ〜３４４ｐは、８本の入力線（１本が１ｂｉｔに対応）と８本の出力線（１本が１ｂｉｔに対応）とを備え、入力線と出力線とを接続する配線および論理素子（ＮＡＮＤ、ＮＯＲなど）の適切な組み合わせにより構成される。このとき、変形Ｓ箱（Ｓｉ００、Ｓｉ０１、Ｓｉ１０、Ｓｉ１１）３４１ａ〜３４４ｐを実現する回路は、排他的論理和演算回路とＡＥＳのＳ箱回路とを連結して設計されるのではなく、上記入出力関係から導かれる新たな変換テーブルに基づいて設計される。
【００８１】
本発明の第２の実施形態に係る暗号化装置３００の動作を、図８を用いてクロックサイクルごとに説明する。
【００８２】
［第１のクロックサイクル］
まず、乱数発生部は、乱数ビット列（ｉｍｐｔｎ０，ｏｍｐｔｎ０）を生成する。排他的論理和３３０ａは、外部から受信した１２８ｂｉｔの平文ブロックと、乱数ビット列（ｏｍｐｔｎ０）から計算されるマスク値（ｏｍｓｋ０）との排他的論理和演算を行う。この演算結果は、セレクタ３１０を介してレジスタ３２０に記憶される。なお、乱数ビット列（ｏｍｐｔｎ０）は、第１段の段関数（第２番目のクロックサイクル）で使用されるため、図示しないメモリに記憶される。
【００８３】
［第２〜１０のクロックサイクル（第ｋ段の段関数、ｋ＝１、２、・・・、９）］
まず、乱数発生部は、乱数ビット列（ｉｍｐｔｎｋ，ｏｍｐｔｎｋ）を生成する。排他的論理和３３０ｂは、レジスタ３２０に格納された１２８ｂｉｔのビット列と、マスク値（ｉｍｓｋｋ）との排他的論理和演算を行う。次の、排他的論理和３３０ｃは、排他的論理和３３０ｂの出力とマスク値（ｏｍｓｋｋ−１）との排他的論理和演算を行う。その演算を受ける鍵加算３５０ａは、さらに拡大鍵（ｒｋｅｙｋ−１）との排他的論理和演算を行う。
【００８４】
このようにして得られたビット列は、８ｂｉｔのビット列毎に１６個のブロックに分割され、第１の変形Ｓ箱群〜第１６の変形Ｓ箱群（３４０ａ〜３４０ｐ）に入力される。即ち、第１〜第８ビットを第１のブロック、第９〜第１６ビットを第２のブロック、・・・、第１２１〜第１２８ビットを第１６のブロックとする。
【００８５】
第１の変形Ｓ箱群３４０ａ（変形Ｓ箱３４１ａ〜３４４ａ）は、第１のブロックを入力ビット列として、非線形変換を行う。同様にして、第２〜第１６の変形Ｓ箱群３４０ｂ〜３４０ｐ（各変形Ｓ箱３４１ｂ〜３４４ｐ）は、第２〜第１６のブロックを入力ビット列として、非線形変換を行う。
【００８６】
次に、セレクタ３１０ａ〜３１０ｐは、乱数ビット列（ｉｍｐｔｎｋ、ｏｍｐｔｎｋ）の第ｉ番（ｉ＝１，２，・・・，１６）のビットに基づき、変形Ｓ箱群３４０ａ〜３４０ｐ毎に変形Ｓ箱（Ｓｉ００，Ｓｉ０１，Ｓｉ１０，Ｓｉ１１）の出力を選択する。
【００８７】
例えば、第ｋ段の段関数の乱数ビット列が「ｉｍｐｔｎｋ＝１１０１０１００１１０１０１００，ｏｍｐｔｎｋ＝０１０１１０１００１０１１０１０」のとき、セレクタ３１０ａは、「ｉｍｐｔｎｋ」と「ｏｍｐｔｎｋ」の第１番目のビットが「１」「０」であることから、第１の変形Ｓ箱群３４０ａから「変形Ｓ箱（Ｓ１１０）３４３ａの出力」を選択する。なお、セレクタ３１０ａ〜３１０ｐが選択する変形Ｓ箱（Ｓｉｘｙ）の出力は、「ｉｍｐｔｎｋ」の第ｉ番目のビットを「ｘ」に代入し、「ｏｍｐｔｎｋ」の第ｉ番目のビットを「ｙ」に代入して同様に決定される。これにより、第２の変形Ｓ箱群〜第１６の変形Ｓ箱群（３４０ｂ〜３４０ｐ）のセレクタ３１０ｂ〜３１０ｐは、「Ｓ２１１、Ｓ３００、Ｓ４１１、Ｓ５０１、Ｓ６１０、Ｓ７０１、Ｓ８００、Ｓ９１０、Ｓ１０１１、Ｓ１１００、Ｓ１２１１、Ｓ１３０１、Ｓ１４１０、Ｓ１５０１、Ｓ１６００」の変形Ｓ箱の出力をそれぞれ選択する。
【００８８】
セレクタ３１０ａ〜３１０ｐにより選択された第１の変形Ｓ箱群〜第１６の変形Ｓ箱群（３４０ａ〜３４０ｐ）から出力される８ｂｉｔのビット列は、順に連結され、１２８ｂｉｔのビット列となって、ＳｈｉｆｔＲｏｗ３７０に供給される。
【００８９】
次に、ＳｈｉｆｔＲｏｗ３７０は、連結された１２８ｂｉｔのビット列に対して、前述の変換処理を行う。なお、乱数ビット列（ｏｍｐｔｎｋ）は、ＳｈｉｆｔＲｏｗ３７０で行われる処理に対応するように入れ替えられる。
【００９０】
ＭｉｘＣｏｌｕｍｎ’３８０は、ＳｈｉｆｔＲｏｗ３７０の出力に対して、ｓ’ｉ，ｋのマスク値（ａまたはａ￣）がｓｉ，ｋのマスク値と一致するように処理を行う。具体的には、（ｓ０，ｋ，ｓ１，ｋ，ｓ２，ｋ，ｓ３，ｋ）に対応するマスク値を（ａ０，ｋ，ａ１，ｋ，ａ２，ｋ，ａ３，ｋ）とするとき、ＭｉｘＣｏｌｕｍｎ’３８０は、（数３）に対応する処理を行う。
【数３】
2008292742.tif 000006
【００９１】
なお、ＭｉｘＣｏｌｕｍｎ’３８０は、ＳｈｉｆｔＲｏｗ３７０で行われる処理に対応するように、入れ替えられた乱数ビット列（ｏｍｐｔｎｋ）を使用する。このような処理が行われた後、セレクタ３１０は、ＭｉｘＣｏｌｕｍｎ’３８０の出力を選択し、レジスタ３２０に出力する。なお、乱数ビット列（ｏｍｐｔｎｋ）は、第ｋ＋１段目の段関数で使用されるため、記憶される。
【００９２】
［第１１のクロックサイクル（第１０段の段関数）］
第２〜１０のクロックサイクルで行われる第１〜９段目の段関数の動作と、レジスタ３２０に記憶されたビット列が、ＳｈｉｆｔＲｏｗ３７０による処理が行われるまでは、各段のマスク値に基づいて上述した動作を繰り返す。
【００９３】
第１１のクロックサイクルでＳｈｉｆｔＲｏｗ３７０の出力は、鍵加算３５０ｂの入力となる。鍵加算３５０ｂは、ＳｈｉｆｔＲｏｗ３７０からの１２８ｂｉｔの入力ビット列と拡大鍵（ｒｋｅｙ１０）との排他的論理和演算を行う。排他的論理和３３０ｄは、この鍵加算３５０ｂの演算結果と、ＳｈｉｆｔＲｏｗ３７０で行われる処理に対応するように入れ替えられた乱数ビット列（ｏｍｐｔｎ１０）との排他的論理和演算を行い、１２８ｂｉｔの暗号文ブロックを出力する。
【００９４】
このように、第２の実施形態に係る暗号化装置３００によれば、ＡＥＳのＳ箱内部で、入力ビット列および出力ビット列に「ａ」あるいは「ａ￣」によるマスク処理がなされたものとして、４種類の変形Ｓ箱を作成し、それらの変形Ｓ箱のいずれを使用するかをランダムに選択することにより、高次ＤＰＡへの耐性を確保することが可能となる。
【００９５】
なお、第２の実施形態に係る暗号化装置３００と同様に、ＡＥＳのＳ箱内部で、入力ビット列および出力ビット列に「ａ」あるいは「ａ￣」によるマスク処理がなされたものとして作成された４種類の変形Ｓ箱を備え、それらの変形Ｓ箱のいずれを使用するかをランダムに選択することとした復号装置を構成することができ、高次ＤＰＡへの耐性を確保することが可能となる。
【００９６】
（第２の実施形態の変形例１）
第２の実施形態では、乱数発生部は、各段関数（第１段から第１０段まで）の演算が行われる度に、２つの１６ｂｉｔの乱数ビット列（ｉｍｐｔｎｋ、ｏｍｐｔｎｋ）を発生するものとして説明を行った。
【００９７】
これに対して第２の実施形態の変形例１では、乱数発生部が、例えば、第１段の段関数の演算で２つの１６ｂｉｔの乱数ビット列（ｍｐｔｎ０、ｍｐｔｎ１）を発生させ、第ｋ段の段関数（ｋ＝２，・・・，１０）の演算で、１つの１６ｂｉｔの乱数ビット列（ｍｐｔｎｋ）を発生させる。
【００９８】
図１０は、本発明の第２の実施形態の変形例１に係る暗号化装置３００を示すブロック図である。  
この変形例１に係る暗号化装置３００は、排他的論理和３３０ｂ、３３０ｃが無い点で第２の実施形態と相異する。また、第２の実施形態に係る乱数発生部が第ｋ段目の段関数の演算で発生させた乱数ビット列（ｉｍｐｔｎｋ）を、変形例１に係る乱数発生部が第ｋ−１段目の段関数の演算で発生させた乱数ビット列（ｍｐｔｎｋ−１）とする。また、第２の実施形態に係る乱数発生部が第ｋ段目の段関数の演算で発生させた乱数ビット列（ｏｍｐｔｎｋ）を、変形例１に係る乱数発生部が第ｋ段目の段関数の演算で発生させた乱数ビット列（ｍｐｔｎｋ）とする。
【００９９】
なお、変形例１に係る暗号化装置３００の動作は、排他的論理和３３０ｂ、３３０ｃの動作がない点と、演算に使用する乱数ビット列が上記の通りである点が第２の実施形態と相違する。
【０１００】
ここで、変形例１に係る暗号化装置３００では、排他的論理和３３０ｂ、３３０ｃが無い理由を以下に説明する。
【０１０１】
第２の実施形態の変形例１に係る暗号化装置３００では、第ｋ段の段関数の演算を行う際に、第ｋ段と第ｋ−１段の段関数の演算時に発生させた乱数ビット列（ｍｐｔｎｋ、ｍｐｔｎｋ−１）を用いてマスク処理およびマスクの除去処理を行う。そのため、排他的論理和３３０ｂ、３３０ｃが排他的論理和演算を行う際に用いるマスク値が双方ともに（ｍｓｋｋ−１）となり、排他的論理和１３０ａ、１３０ｂが不要となる。
【０１０２】
このように第２の実施形態の変形例１に係る暗号化装置３００によれば、４種類のＳ箱を利用することでＤＰＡ、高次ＤＰＡによる解析を困難なものとし、かつ、暗号化のための演算を行う際の乱数ビット列の発生回数を削減することが可能となる。よって、第２の実施形態の変形例１に係る暗号化装置３００は、演算速度を高速化できる。
【０１０３】
また、暗号化演算を行う際の乱数ビット列の発生回数を削減することを可能とし、かつ、４種類のＳ箱を利用することでＤＰＡ、高次ＤＰＡによる解析を困難なものとすることができる復号装置を構成することができる。
【０１０４】
（第２の実施形態の変形例２）
第２の実施形態では、ＡＥＳのＳ箱内部で、入力ビット列に「ａ」あるいは「ａ￣」によるマスク処理がなされ、出力ビット列に「ａ」あるいは「ａ￣」によるマスク処理がなされたものとして、４種類の変形Ｓ箱（Ｓｉ００，Ｓｉ０１，Ｓｉ１０，Ｓｉ１１）（ｉ＝１，２，・・・，８）を用意するものとして説明を行った。
【０１０５】
これに対して第２の実施形態の変形例２では、例えば、２種類の変形Ｓ箱（Ｓｉ００，Ｓｉ１０）を用意し、その２つの変形Ｓ箱の出力をそれぞれ全ビット反転させる２つの排他的論理和を用意する。
【０１０６】
図１１は、本発明の第２の実施形態の変形例２に係る暗号化装置３００を示すブロック図である。  
この変形例２に係る暗号化装置３００は、２つの変形Ｓ箱（Ｓ１０１、Ｓ１１１）３４２ａ、３４４ａが無く、変形Ｓ箱（Ｓ１００）３４１ａの出力を全ビット反転する排他的論理和３３０ｘと、変形Ｓ箱（Ｓ１１１）３４３ａの出力を全ビット反転する排他的論理和３３０ｙとをさらに備える点で第２の実施形態と相異する。
【０１０７】
なお、第２の実施形態の変形例２に係る暗号化装置１００の動作は、変形Ｓ箱（Ｓ１０１、Ｓ１１１）の動作（非線形データ変換）がない点と、排他的論理和３３０ｘが変形Ｓ箱（Ｓ１００）３４１ａの出力を全ビット反転し、排他的論理和３３０ｙが変形Ｓ箱（Ｓ１１１）３４３ａの出力を全ビット反転する点、およびセレクタ３１０ａが、入力される変形Ｓ箱（Ｓ１００）３４１ａ、排他的論理和３３０ｘ、変形Ｓ箱（Ｓ１１０）３４３ａ、あるいは排他的論理和３３０ｙのいずれか１つの出力を、乱数ビット列（ｉｍｐｔｎｋ、ｏｍｐｔｎｋ）を用いて選択する点が第２の実施形態と相異する。
【０１０８】
このように第２の実施形態の変形例２に係る暗号化装置３００によれば、２種類の変形Ｓ箱（例えば、Ｓ１００、Ｓ１１０）とそれらの出力のビット反転を行う素子を利用することでＤＰＡ、高次ＤＰＡによる解析を困難なものとし、この暗号化装置３００の回路規模を削減させることが可能である
また、２種類の変形Ｓ箱（例えば、Ｓ１００、Ｓ１１０）とそれらの出力のビット反転を行う素子を利用することで回路規模を削減することができ、かつ、ＤＰＡ、高次ＤＰＡによる解析を困難なものとする復号装置を構成することができる。
【０１０９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１０】
【図１】暗号アルゴリズムＤＥＳによる暗号化装置の基本構成を示すブロック図。
【図２】暗号アルゴリズムＤＥＳの第１段目の段関数の基本構成を示すブロック図。
【図３】本発明の第１の実施形態に係る暗号演算回路の構成を示すブロック図。
【図４】本発明の第１の実施形態に係る変形Ｓ箱（Ｓ１００、Ｓ１０１、Ｓ１１０、Ｓ１１１）の等価回路を示すブロック図。
【図５】本発明の第１の実施形態の変形例１に係る暗号演算回路の構成を示すブロック図。
【図６】本発明の第１の実施形態の変形例２に係る暗号演算回路の構成を示すブロック図。
【図７】暗号アルゴリズムＡＥＳによる暗号化装置の基本構成を示すブロック図。
【図８】本発明の第２の実施形態に係る暗号演算回路の構成を示すブロック図。
【図９】本発明の第２の実施形態に係る変形Ｓ箱（Ｓ１００、Ｓ１０１、Ｓ１１０、Ｓ１１１）の等価回路を示すブロック図。
【図１０】本発明の第２の実施形態の変形例１に係る暗号演算回路の構成を示すブロック図。
【図１１】本発明の第２の実施形態の変形例２に係る暗号演算回路の構成を示すブロック図。
【符号の説明】
【０１１１】
５・・・暗号化装置
９・・・平文ブロック
１０・・・初期転置部（ＩＰ）
１９・・・鍵情報
２０・・・鍵スケジュール部
２１ａ、２１ｂ、２１ｐ・・・拡大鍵
３０ａ・・・段関数（第１段）
３０ｂ・・・段関数（第２段）
３０ｐ・・・段関数（第１６段）
３１・・・拡大転置部（Ｅ）
３３ａ・・・ＤＥＳのＳ箱（Ｓ１）
３３ｂ・・・ＤＥＳのＳ箱（Ｓ２）
３３ｈ・・・ＤＥＳのＳ箱（Ｓ８）
３４・・・転置部（Ｐ）
３５、３７・・・排他的論理和
４０・・・最終転置部（ＦＰ）
４１・・・暗号文ブロック
１００・・・暗号化装置
１０５・・・初期転置部（ＩＰ）
１１０ａ、１１０Ｌ、１１０Ｒ・・・セレクタ
１２０Ｌ、１２０Ｒ・・・レジスタ
１３０ａ〜１３０ｈ、１３０Ａ〜１３０Ｄ、１３０ｘ、１３０ｙ・・・排他的論理和
１４０ａ・・・変形Ｓ箱群
１４１ａ・・・変形Ｓ箱（Ｓ１００）
１４２ａ・・・変形Ｓ箱（Ｓ１０１）
１４３ａ・・・変形Ｓ箱（Ｓ１１０）
１４４ａ・・・変形Ｓ箱（Ｓ１１１）
１４５・・・乱数発生部
１５０・・・拡大転置部（Ｅ）
１６０・・・転置部（Ｐ）
１６５・・・最終転置部
２００ａ・・・段関数（第１段）
２００ｉ・・・段関数（第９段）
２００ｊ・・・段関数（第１０段）
２０５・・・暗号化装置
２０９・・・平文ブロック
２１０ａ、２１０ｊ・・・ＳｕｂＢｙｔｅ
２２０ａ、２２０ｊ・・・ＳｈｉｆｔＲｏｗ
２３０ａ・・・ＭｉｘＣｏｌｕｍｎ
２４０、２４０ａ、２４０ｊ・・・鍵加算部
２４１・・・暗号文ブロック
２４９・・・鍵情報
２５０・・・鍵スケジュール部
２５１、２５１ａ、２５１ｉ、２５１ｊ・・・拡大鍵
３００・・・暗号化装置
３１０、３１０ａ・・・セレクタ
３２０・・・レジスタ
３３０ａ、３３０ｂ、３３０ｃ、３３０ｄ、３３０ｘ、３３０ｙ・・・排他的論理和
３４０ａ・・・変形Ｓ箱群
３４１ａ・・・変形Ｓ箱（Ｓ１００）
３４２ａ・・・変形Ｓ箱（Ｓ１０１）
３４３ａ・・・変形Ｓ箱（Ｓ１１０）
３４４ａ・・・変形Ｓ箱（Ｓ１１１）
３４５・・・乱数発生部
３５０ａ、３５０ｂ・・・鍵加算部
３６０・・・ＳｕｂＢｙｔｅ’
３７０・・・ＳｈｉｆｔＲｏｗ
３８０・・・ＭｉｘＣｏｌｕｍｎ’
【図１】
2008292742.tif 000007
【図２】
2008292742.tif 000008
【図３】
2008292742.tif 000009
【図４】
2008292742.tif 000010
【図５】
2008292742.tif 000011
【図６】
2008292742.tif 000012
【図７】
2008292742.tif 000013
【図８】
2008292742.tif 000014
【図９】
2008292742.tif 000015
【図１０】
2008292742.tif 000016
【図１１】
2008292742.tif 000017