(57)【要約】【課題】電力解析に対する耐性を向上させることを目的とする。【解決手段】暗号処理装置１０において、データ変換部１２は、入力データｘに対し、所定の線形変換処理を含む入力変換処理を実行して入力変換データｘ’を生成する。また、データ変換部１２は、暗号鍵データｋに対し、上記所定の線形変換処理を含む鍵変換処理を実行して鍵変換データｋ’を生成する。データ暗号部１４は、鍵変換データｋ’を用いて入力変換データｘ’をＡＥＳの暗号処理により暗号化して暗号変換データｅ’を生成する。データ補正部１５は、暗号変換データｅ’に対し、上記所定の線形変換処理の逆変換処理を含む補正処理を実行して暗号データｅを生成する。この暗号データｅは、単に暗号鍵データｋを用いて入力データｘをＡＥＳの暗号処理により暗号化した結果と同じものになる。【選択図】図１
2010166402.tif 000002
【特許請求の範囲】
【請求項１】
入力データｘと暗号鍵データｋとを入力し、入力した入力データｘに対し、入力した暗号鍵データｋを用いて、非線形変換処理を含む所定の暗号処理を実行した結果である暗号データｅを出力する暗号処理装置において、
前記入力データｘに対し、所定の線形変換処理を含む入力変換処理を処理装置により実行して入力変換データｘ’を生成するとともに、前記暗号鍵データｋに対し、前記所定の線形変換処理を含む鍵変換処理を処理装置により実行して鍵変換データｋ’を生成するデータ変換部と、
前記データ変換部により生成された入力変換データｘ’と鍵変換データｋ’とを加算して中間データｉ’を生成する鍵加算部と、
前記鍵加算部により生成された中間データｉ’に対し、前記非線形変換処理の前に前記所定の線形変換処理の逆変換処理が付加されるとともに前記非線形変換処理の後に前記所定の線形変換処理が付加された前記所定の暗号処理を修正暗号処理として処理装置により実行して暗号変換データｅ’を生成するデータ暗号部と、
前記データ暗号部により生成された暗号変換データｅ’に対し、前記所定の線形変換処理の逆変換処理を含む補正処理を処理装置により実行して前記暗号データｅを生成するデータ補正部とを備えることを特徴とする暗号処理装置。
【請求項２】
前記所定の線形変換処理の対象となるデータをｐ、前記所定の線形変換処理の結果を関数ｆ（ｐ）で表すとき、ｆ（ｐ）は、全単射であり、かつ、ｆ（ａ＋ｂ）＝ｆ（ａ）＋ｆ（ｂ）（ａ，ｂは任意のデータであり、“＋”は排他的論理和演算の演算子である）を満たすことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記データ変換部は、前記入力変換処理をテーブル参照のみにより実行することを特徴とする請求項１又は２に記載の暗号処理装置。
【請求項４】
前記データ補正部は、前記補正処理をテーブル参照のみにより実行することを特徴とする請求項１から３までのいずれかに記載の暗号処理装置。
【請求項５】
前記データ変換部は、前記鍵変換処理をテーブル参照のみにより実行することを特徴とする請求項１から４までのいずれかに記載の暗号処理装置。
【請求項６】
前記データ変換部は、前記暗号鍵データｋを分割した複数のデータのそれぞれに対し、データ長を拡大する拡大処理を実行し、それぞれの拡大処理の結果を結合して格納暗号鍵データｓを生成し、生成した格納暗号鍵データｓを分割した複数のデータのそれぞれに対し、前記所定の線形変換処理の前にそれぞれの拡大処理の逆変換処理が付加された前記鍵変換処理を修正鍵変換処理としてテーブル参照のみにより実行し、
それぞれの拡大処理の対象となるデータをｑ、それぞれの拡大処理の結果を関数ｇ（ｑ）と表すとき、ｇ（ｑ）は、単射であり、かつ、ハミング重みが一定となることを特徴とする請求項１から４までのいずれかに記載の暗号処理装置。
【請求項７】
前記データ変換部は、それぞれの修正鍵変換処理を同じテーブル参照のみにより実行し、
１つの拡大処理の対象となるデータをｑ１、当該１つの拡大処理の結果を関数ｇ１（ｑ１）、他の拡大処理の対象となるデータをｑ２、当該他の拡大処理の結果を関数ｇ２（ｑ２）と表すとき、ｇ１（ｑ１），ｇ２（ｑ２）は、ｑ１＝ｑ２の場合にｇ１（ｑ１）≠ｇ２（ｑ２）を満たすことを特徴とする請求項６に記載の暗号処理装置。
【請求項８】
前記入力変換処理は、前記所定の線形変換処理の後に、前記所定の線形変換処理の結果に定数データｍ１を加算する入力マスク処理を含み、
前記鍵変換処理は、前記所定の線形変換処理の後に、前記所定の線形変換処理の結果に定数データｍ２を加算する鍵マスク処理を含み、
前記定数データｍ１と前記定数データｍ２とは、いずれも０以外であり、かつ、互いに異なる値をもつことを特徴とする請求項１から７までのいずれかに記載の暗号処理装置。
【請求項９】
前記データ暗号部は、前記データ変換部により生成された鍵変換データｋ’に対し、所定の鍵スケジュール処理を所定のラウンド数実行して、ラウンドごとに拡大鍵データｒ’を生成する拡大鍵生成部を有し、ラウンドごとに前記拡大鍵生成部により生成された拡大鍵データｒ’を用いて前記修正暗号処理を実行し、最後のラウンドにて前記暗号変換データｅ’を生成し、
前記拡大鍵生成部は、前記所定の鍵スケジューリング処理にて、同じ定数データｍが加算されたデータｃ，ｄに対し、関数ｆｍ（ｃ＋ｍ，ｄ＋ｍ）＝ｃ＋ｄ＋ｍ（“＋”は排他的論理和演算の演算子である）を計算する場合、ｃ＋ｍ，ｄ＋ｍのそれぞれに対し、前記入力変換処理を実行して中間データｃ’，ｄ’を生成し、生成した中間データｃ’，ｄ’のいずれか一方に予め定められた定数データｍ’を加算し、さらに、当該中間データｃ’，ｄ’の他方を加算し、その結果に対し、前記補正処理を実行してｆｍを算出することを特徴とする請求項８に記載の暗号処理装置。
【請求項１０】
前記データ暗号部は、前記データ変換部により生成された鍵変換データｋ’に対し、所定の鍵スケジュール処理を所定のラウンド数実行して、ラウンドごとに拡大鍵データｒ’を生成する拡大鍵生成部を有し、ラウンドごとに前記拡大鍵生成部により生成された拡大鍵データｒ’を用いて前記修正暗号処理を実行し、最後のラウンドにて前記暗号変換データｅ’を生成し、
前記拡大鍵生成部は、前記所定の鍵スケジューリング処理にて、同じ定数データｍが加算されたデータｃ，ｄに対し、関数ｆｍ（ｃ＋ｍ，ｄ＋ｍ）＝ｃ＋ｄ＋ｍ（“＋”は排他的論理和演算の演算子である）を計算する場合、ｃ＋ｍ，ｄ＋ｍのそれぞれをｎ分割し（ｎ＞１）、分割したｎ個のデータｃｉ＋ｍｉ，ｄｉ＋ｍｉについて（ｉ＝１，・・・，ｎ）、ｃｉ＋ｍｉ，ｄｉ＋ｍｉをテーブル参照により計算し、その結果を結合してｆｍを算出することを特徴とする請求項８に記載の暗号処理装置。
【請求項１１】
前記所定の暗号処理は、ＡＥＳ（Ａｄｖａｎｃｅｄ・Ｅｎｃｒｙｐｔｉｏｎ・Ｓｔａｎｄａｒｄ）の暗号処理であることを特徴とする請求項１から１０までのいずれかに記載の暗号処理装置。
【請求項１２】
入力データｘと暗号鍵データｋとを入力し、入力した入力データｘに対し、入力した暗号鍵データｋを用いて、非線形変換処理を含む所定の暗号処理を実行した結果である暗号データｅを出力する暗号処理装置を用いた暗号処理方法において、
前記暗号処理装置のデータ変換部が、前記入力データｘに対し、所定の線形変換処理を含む入力変換処理を処理装置により実行して入力変換データｘ’を生成するとともに、前記暗号鍵データｋに対し、前記所定の線形変換処理を含む鍵変換処理を処理装置により実行して鍵変換データｋ’を生成し、
前記暗号処理装置の鍵加算部が、前記入力変換データｘ’と前記鍵変換データｋ’とを加算して中間データｉ’を生成し、
前記暗号処理装置のデータ暗号部が、前記中間データｉ’に対し、前記非線形変換処理の前に前記所定の線形変換処理の逆変換処理が付加されるとともに前記非線形変換処理の後に前記所定の線形変換処理が付加された前記所定の暗号処理を修正暗号処理として処理装置により実行して暗号変換データｅ’を生成し、
前記暗号処理装置のデータ補正部が、前記暗号変換データｅ’に対し、前記所定の線形変換処理の逆変換処理を含む補正処理を処理装置により実行して前記暗号データｅを生成することを特徴とする暗号処理方法。
【請求項１３】
入力データｘと暗号鍵データｋとを入力し、入力した入力データｘに対し、入力した暗号鍵データｋを用いて、非線形変換処理を含む所定の暗号処理を実行した結果である暗号データｅを出力する暗号処理プログラムにおいて、
前記入力データｘに対し、所定の線形変換処理を含む入力変換処理を処理装置により実行して入力変換データｘ’を生成するとともに、前記暗号鍵データｋに対し、前記所定の線形変換処理を含む鍵変換処理を処理装置により実行して鍵変換データｋ’を生成するデータ変換手順と、
前記データ変換手順により生成された入力変換データｘ’と鍵変換データｋ’とを加算して中間データｉ’を生成する鍵加算手順と、
前記鍵加算手順により生成された中間データｉ’に対し、前記非線形変換処理の前に前記所定の線形変換処理の逆変換処理が付加されるとともに前記非線形変換処理の後に前記所定の線形変換処理が付加された前記所定の暗号処理を修正暗号処理として処理装置により実行して暗号変換データｅ’を生成するデータ暗号手順と、
前記データ暗号手順により生成された暗号変換データｅ’に対し、前記所定の線形変換処理の逆変換処理を含む補正処理を処理装置により実行して前記暗号データｅを生成するデータ補正手順とをコンピュータに実行させることを特徴とする暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置及び暗号処理方法及び暗号処理プログラムに関するものである。
【背景技術】
【０００２】
ＡＥＳ（Ａｄｖａｎｃｅｄ・Ｅｎｃｒｙｐｔｉｏｎ・Ｓｔａｎｄａｒｄ）等（例えば、非特許文献１参照）の暗号処理をシステム上で実行する場合、実行中のシステムの消費電力の変化を観測し、暗号処理に使われている秘密情報である暗号鍵を推測する方法がある（例えば、非特許文献２参照）。この手法は電力解析（電力差分解析）と呼ばれている。電力解析に対して、解析を行われても、暗号鍵を推測できないように暗号を実装する必要がある。
【０００３】
電力解析への対策法として、いくつかの方法が提案されている（例えば、特許文献１、２参照）。また、電力解析に弱い部分をテーブル参照のみで構築するテーブルネットワーク実装がある（例えば、非特許文献３参照）。テーブルに設計者のみが知り得る変換処理を施すことで従来の電力解析に対して耐性を持たせることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３１１８２６号公報
【特許文献２】特開２０００−１６５３７５号公報
【非特許文献】
【０００５】
【非特許文献１】Ｅ．  Ｂｒｉｃｋｅｌｌ，  Ｇ．  Ｇｒａｕｎｋｅ，  Ｍ．  Ｎｅｖｅ，  Ｊ．  Ｓｅｉｆｅｒｔ，  “Ｓｏｆｔｗａｒｅ  ｍｉｔｉｇａｔｉｏｎｓ  ｔｏ  ｈｅｄｇｅ  ＡＥＳ  ａｇａｉｎｓｔ  ｃａｃｈｅ−ｂａｓｅｄ  ｓｏｆｔｗａｒｅ  ｓｉｄｅ  ｃｈａｎｎｅｌ  ｖｕｌｎｅｒａｂｉｌｉｔｉｅｓ，”  ＩＡＣＲ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，  ２００６
【非特許文献２】Ｐ．  Ｋｏｃｈｅｒ，  Ｊ．  Ｊａｆｆｅ，  Ｂ．  Ｊｕｎ，  “Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ，”  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＣＲＹＰＴＯ  ’９９，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ｐｐ．３８８−３９７，  １９９９
【非特許文献３】Ｓ．  Ｃｈｏｗ，  Ｐ．  Ｅｉｓｅｎ，  Ｈ．  Ｊｏｈｎｓｏｎ，  Ｐ．Ｃ．  Ｏｏｒｓｃｈｏｔ，  “Ｗｈｉｔｅ−Ｂｏｘ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  ａｎ  ＡＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ，”  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＳＡＣ  ２００２，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ｐｐ．２５０−２７０，  ２００２
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の方法では、予め複数のスクランブル処理を用意し、暗号処理の過程で、乱数や暗号鍵によって、適用するスクランブル処理を切り替えている。この場合、用意するスクランブル回路分だけ、冗長なリソースが必要となる。また、解析の困難さは用意するテーブルの種類にのみ依存し、要するリソースの割には、十分な複雑さを得ることはできない。
【０００７】
また、特許文献２には、正規のデータとビット反転したデータとを同時に処理し、データ参照時のハミング重みを揃えることで、漏洩する電力消費や電磁波から秘密情報を推定させない方法が記載されている。しかし、特許文献２に記載の方法では、データバスの駆動に依存する電力消費や電磁波には効果を得られるが、アドレスバスの駆動に依存する電力消費や電磁波に対して、効果は得られない。
【０００８】
一方、テーブルネットワーク実装では、設計者が一定の条件の下で任意にテーブルを設計でき、かつ、設計可能なテーブルの種類が十分多いため、従来の電力解析を困難にできる。しかし、従来のテーブルネットワーク実装では、全拡大鍵に対して異なるテーブルを用意する必要があるため、大量のメモリを消費する。また、秘密鍵が変更される度にテーブルを構築しなおす必要があり、演算に多大なコストがかかる。さらに、テーブル構築過程を攻撃することで、秘密鍵や設計者のみが知り得る変換処理が解析される虞がある。
【０００９】
本発明は、例えば、電力解析に対する耐性を向上させることを目的とする。また、本発明は、さらに、秘密鍵によるテーブルの再構築を必要とせず、かつ、設計者のみが知り得る変換処理を入れ込んで従来の電力解析に対して耐性をもたせることを目的とする。また、本発明は、さらに、アドレスバスの駆動に依存する電力消費や電磁波から秘密情報を推定することを困難にすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一の態様に係る暗号処理装置は、
入力データｘと暗号鍵データｋとを入力し、入力した入力データｘに対し、入力した暗号鍵データｋを用いて、非線形変換処理を含む所定の暗号処理を実行した結果である暗号データｅを出力する暗号処理装置であり、
前記入力データｘに対し、所定の線形変換処理を含む入力変換処理を処理装置により実行して入力変換データｘ’を生成するとともに、前記暗号鍵データｋに対し、前記所定の線形変換処理を含む鍵変換処理を処理装置により実行して鍵変換データｋ’を生成するデータ変換部と、
前記データ変換部により生成された入力変換データｘ’と鍵変換データｋ’とを加算して中間データｉ’を生成する鍵加算部と、
前記鍵加算部により生成された中間データｉ’に対し、前記非線形変換処理の前に前記所定の線形変換処理の逆変換処理が付加されるとともに前記非線形変換処理の後に前記所定の線形変換処理が付加された前記所定の暗号処理を修正暗号処理として処理装置により実行して暗号変換データｅ’を生成するデータ暗号部と、
前記データ暗号部により生成された暗号変換データｅ’に対し、前記所定の線形変換処理の逆変換処理を含む補正処理を処理装置により実行して前記暗号データｅを生成するデータ補正部とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明の一の態様によれば、暗号処理装置において、データ変換部が、入力データｘに対し、所定の線形変換処理を含む入力変換処理を実行して入力変換データｘ’を生成するとともに、暗号鍵データｋに対し、前記所定の線形変換処理を含む鍵変換処理を実行して鍵変換データｋ’を生成し、データ補正部が、鍵変換データｋ’を用いて入力変換データｘ’を暗号化した暗号変換データｅ’に対し、前記所定の線形変換処理の逆変換処理を含む補正処理を実行して暗号データｅを生成することにより、電力解析に対する耐性が向上する。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る暗号処理装置の構成を示すブロック図である。
【図２】実施の形態１に係る暗号処理装置のハードウェア構成の一例を示す図である。
【図３】実施の形態１に係る暗号処理装置の各部により実行される処理を示すブロック図である。
【図４】実施の形態１に係る初期変換処理の詳細を示すブロック図である。
【図５】実施の形態１に係る初期変換テーブルＡ，Ｂの詳細を示すブロック図である。
【図６】実施の形態１に係る拡大鍵加算処理の詳細を示すブロック図である。
【図７】実施の形態１に係る非線形変換処理の詳細を示すブロック図である。
【図８】実施の形態１に係る非線形変換テーブルＡ〜Ｄの詳細を示すブロック図である。
【図９】実施の形態１に係る線形逆変換処理Ｅ，Ｆの詳細を示すブロック図である。
【図１０】実施の形態１に係る線形変換処理Ｇ〜Ｊの詳細を示すブロック図である。
【図１１】実施の形態１に係る線形変換処理Ｋ〜Ｎの詳細を示すブロック図である。
【図１２】実施の形態１に係る最終変換処理の詳細を示すブロック図である。
【図１３】実施の形態１に係る最終変換テーブルＡ，Ｂの詳細を示すブロック図である。
【図１４】実施の形態１に係る暗号鍵格納処理の詳細を示すブロック図である。
【図１５】実施の形態１に係る鍵初期変換処理の詳細を示すブロック図である。
【図１６】実施の形態１に係る鍵初期変換テーブルＡ〜Ｄの詳細を示すブロック図である。
【図１７】実施の形態１に係る拡大鍵生成処理の詳細を示すブロック図である。
【図１８】図１７の定数を導出する処理の構成を示すブロック図である。
【図１９】実施の形態１に係る変換処理の詳細を示すブロック図である。
【図２０】実施の形態１に係る逆変換処理の詳細を示すブロック図である。
【図２１】実施の形態２に係る暗号鍵格納処理の詳細を示すブロック図である。
【図２２】実施の形態２に係る鍵初期変換処理の詳細を示すブロック図である。
【図２３】実施の形態２に係る鍵初期変換テーブルＥの詳細を示すブロック図である。
【図２４】実施の形態３に係る拡大鍵生成処理の詳細を示すブロック図である。
【図２５】実施の形態３に係る鍵加算処理の詳細を示すブロック図である。
【図２６】実施の形態３に係る鍵加算テーブルＡ，Ｂの詳細を示すブロック図である。
【図２７】実施の形態４に係る暗号処理装置の各部により実行される処理を示すブロック図である。
【図２８】実施の形態４に係る初期変換テーブルＡ，Ｂの詳細を示すブロック図である。
【図２９】実施の形態４に係る線形逆変換処理Ｅ，Ｆの詳細を示すブロック図である。
【図３０】実施の形態４に係る線形変換処理Ｇ〜Ｎの詳細を示すブロック図である。
【図３１】実施の形態４に係る最終変換テーブルＡ，Ｂの詳細を示すブロック図である。
【図３２】実施の形態４に係る鍵初期変換処理の詳細を示すブロック図である。
【図３３】実施の形態４に係る鍵初期変換テーブルＡ，Ｂの詳細を示すブロック図である。
【図３４】図１７、図２４の定数を導出する処理の構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図を用いて説明する。
【００１４】
実施の形態１．
図１は、本実施の形態に係る暗号処理装置１０の構成を示すブロック図である。
【００１５】
図１において、暗号処理装置１０は、データ入力部１１、データ変換部１２、鍵加算部１３、データ暗号部１４、データ補正部１５、データ出力部１６を備える。データ暗号部１４は、拡大鍵生成部２１を有する。各部の動作については後述する。
【００１６】
暗号処理装置１０は、処理装置５１、記憶装置５２、入力装置５３、出力装置５４等のハードウェアを備える。ハードウェアは暗号処理装置１０の各部によって利用される。例えば、処理装置５１は、暗号処理装置１０の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置５２は、そのデータや情報を記憶するために利用される。また、入力装置５３は、そのデータや情報を入力するために、出力装置５４は、そのデータや情報を出力するために利用される。
【００１７】
図２は、暗号処理装置１０のハードウェア構成の一例を示す図である。
【００１８】
図２において、暗号処理装置１０は、コンピュータであり、ＬＣＤ７１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード７２（Ｋ／Ｂ）、マウス７３、ＦＤＤ７４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ７５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ７６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ７１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス７３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【００１９】
暗号処理装置１０は、プログラムを実行するＣＰＵ８１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ８１は、処理装置５１の一例である。ＣＰＵ８１は、バス８２を介してＲＯＭ８３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ８４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード８５、ＬＣＤ７１、キーボード７２、マウス７３、ＦＤＤ７４、ＣＤＤ７５、プリンタ７６、ＨＤＤ９０（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ又はその他の記憶媒体が用いられてもよい。
【００２０】
ＲＡＭ８４は、揮発性メモリの一例である。ＲＯＭ８３、ＦＤＤ７４、ＣＤＤ７５、ＨＤＤ９０は、不揮発性メモリの一例である。これらは、記憶装置５２の一例である。通信ボード８５、キーボード７２、マウス７３、ＦＤＤ７４、ＣＤＤ７５は、入力装置５３の一例である。また、通信ボード８５、ＬＣＤ７１、プリンタ７６は、出力装置５４の一例である。
【００２１】
通信ボード８５は、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信ボード８５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００２２】
ＨＤＤ９０には、オペレーティングシステム９１（ＯＳ）、ウィンドウシステム９２、プログラム群９３、ファイル群９４が記憶されている。プログラム群９３のプログラムは、ＣＰＵ８１、オペレーティングシステム９１、ウィンドウシステム９２により実行される。プログラム群９３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ８１により読み出され実行される。ファイル群９４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ８４やＨＤＤ９０等の記憶媒体に記憶される。ＲＡＭ８４やＨＤＤ９０等の記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ８１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ８１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００２３】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ８４等のメモリ、ＦＤＤ７４のフレキシブルディスク（ＦＤ）、ＣＤＤ７５のコンパクトディスク（ＣＤ）、ＨＤＤ９０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス８２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【００２４】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ８３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１により読み出され、ＣＰＵ８１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２５】
図３に暗号処理装置１０の各部により実行される処理を示す。本実施の形態ではＡＥＳを例に示すが、本実施の形態の原理はＤＥＳ（Ｄａｔａ・Ｅｎｃｒｙｐｔｉｏｎ・Ｓｔａｎｄａｒｄ）等の他の暗号にも適用可能である。また、図３は、鍵長１２８ビット、平文−暗号文１２８ビットを例に示すが、本実施の形態の原理はこれらのビット長が異なっても適用可能である。
【００２６】
図３において、暗号鍵１０１は、暗号鍵格納処理１０２によって、２倍のビット長の格納暗号鍵１１５として記憶装置５２の記憶領域に蓄積される。格納暗号鍵１１５は暗号処理時に呼び出され、鍵初期変換処理１０３によって拡大鍵１０５に変換される。拡大鍵生成処理１０４は、拡大鍵１０５から拡大鍵１０６を生成する。以降、必要なサイズだけ拡大鍵生成処理１０４を繰り返し、拡大鍵１０７を得る。
【００２７】
平文１０８は初期変換処理１０９により変換された後、拡大鍵加算処理１１０にて拡大鍵１０５と加算され、その出力は非線形変換処理１１１に入力される。非線形変換処理１１１の出力は拡大鍵加算処理１１２にて拡大鍵１０６と加算される。以降、必要な回数だけ非線形変換処理１１１、拡大鍵加算処理１１２を繰り返す。最後の拡大鍵加算処理１１２の出力は最終変換処理１１３に入力され、暗号文１１４となる。
【００２８】
初期変換処理１０９、鍵初期変換処理１０３では、入力（平文１０８、格納暗号鍵１１５）に対して設計者が任意に指定できる線形変換及び定数マスクによる初期変換が行われる。最終変換処理１１３では、線形変換及び定数マスクの補正処理が行われる。
【００２９】
初期変換処理１０９、鍵初期変換処理１０３では、入力をｘ、線形変換をｆ（ｘ）、定数マスクをｍとした場合、ＩＴ（ｘ）＝ｆ（ｘ）＋ｍを出力する。ここで、“＋”は排他的論理和演算の演算子である（以降、同様とする）。初期変換処理１０９、鍵初期変換処理１０３において、平文１０８と格納暗号鍵１１５にかける線形変換は同一のものを用い、以下の条件を満たすものとする。初期変換処理１０９及び鍵初期変換処理１０３はテーブル参照のみで実現する。
（１）全単射である。
（２）排他的論理和演算に対して加法性が成立する。排他的論理和演算に対する加法性とは、関数ｆ（ｘ）について、ｆ（ａ＋ｂ）＝ｆ（ａ）＋ｆ（ｂ）を満たす性質である。
また、平文１０８に施す定数マスクと格納暗号鍵１１５に施す定数マスクは以下の条件を満たすよう設計する。
（１）０以外とする。
（２）平文１０８に施す定数マスクと格納暗号鍵１１５に施す定数マスクは互いに異なる。
【００３０】
最終変換処理１１３では、入力をｘ、線形変換をｆ（ｘ）、補正マスクをｍ”とした場合、ＦＴ（ｘ）＝ｆ−１（ｘ＋ｍ”）を出力する。ここで、ｆ−１（ｘ）はｆ（ｘ）の逆変換である（以降、同様とする）。最終変換処理１１３はテーブル参照のみで実現する。
【００３１】
拡大鍵生成処理１０４、非線形変換処理１１１は、線形変換及び定数マスクによる影響を考慮しながら実装する。具体的には、以下の条件を満たすように設計する。
（１）本来の処理における中間入力をｘｔ、中間出力をｙｔ＝Ｓ（ｘｔ）とする。補正した処理における中間入力をｘｃ＝ｆ（ｘｔ）＋ｍ、中間出力をｙｃ＝ｆ（ｙｔ）＋ｍ’＝Ｓ’（ｘｃ）とした場合、数式１となるようにＳ’（ｘｃ）を設計する。ただし、ｍ、ｍ’は設計者が決める定数である。また、数式１の計算は１回のテーブル参照で実行する。
数式１：
Ｓ’（ｘｃ）＝ｆ（Ｓ（ｆ−１（ｘｃ＋ｍ）））＋ｍ’
（２）ｘ１ｃ＝ｆ（ｘ１ｔ）＋ｍとｘ２ｃ＝ｆ（ｘ２ｔ）＋ｍとの排他的論理和ｘ１ｃ＋ｘ２ｃを求める場合、数式２に従って計算する。ただし、ｍ”’＝ｆ（ｍ）＋ｍ”とする。
数式２：
ｘ１ｃ＋ｘ２ｃ＝ＦＴ（（ＩＴ（ｘ１ｃ＋ｍ”’））＋ＩＴ（ｘ２ｃ））
（３）鍵初期変換処理１０３の実装において、テーブル参照をする場合、参照するアドレスバス及びデータバスのハミング重みが一定となるように実装する。具体的には格納暗号鍵１１５を４ビット以下の単位で分割し、各々を、以下の条件を満たすように８ビットに拡大する。
（ア）単射である。
（イ）ハミング重みが一定である。
拡大した８ビットデータに対してテーブル参照を行い、テーブル出力を演算して所定の出力を得る。このときに参照するテーブルとしては上記ビット拡大処理に対応したテーブルを用意する。
【００３２】
以下、図１及び図３を用いて、暗号処理装置１０の各部の動作を説明する。
【００３３】
データ入力手順：データ入力部１１は、入力装置５３により入力データｘ（平文１０８）と暗号鍵データｋ（暗号鍵１０１）とを入力する。
【００３４】
データ変換手順：データ変換部１２は、データ入力部１１により入力された入力データｘに対し、所定の線形変換処理を含む入力変換処理（初期変換処理１０９）を処理装置５１により実行して入力変換データｘ’を生成する。また、データ変換部１２は、データ入力部１１により入力された暗号鍵データｋに対し、上記所定の線形変換処理を含む鍵変換処理（暗号鍵格納処理１０２、鍵初期変換処理１０３）を処理装置５１により実行して鍵変換データｋ’（拡大鍵１０５）を生成する。
【００３５】
鍵加算手順：鍵加算部１３は、データ変換部１２により生成された入力変換データｘ’と鍵変換データｋ’とを加算（拡大鍵加算処理１１０）して中間データｉ’を生成する。
【００３６】
データ暗号手順：データ暗号部１４は、鍵加算部１３により生成された中間データｉ’に対し、修正暗号処理（拡大鍵生成処理１０４、非線形変換処理１１１、拡大鍵加算処理１１２）を処理装置５１により実行して暗号変換データｅ’を生成する。修正暗号処理は、ＡＥＳの暗号処理（所定の暗号処理の一例）を中間データｉ’に対して実行可能にしたものである。具体的には、修正暗号処理は、ＡＥＳの暗号処理に含まれる非線形変換処理の前に上記所定の線形変換処理の逆変換処理を付加するとともに当該非線形変換処理の後に上記所定の線形変換処理を付加したものである。
【００３７】
データ補正手順：データ補正部１５は、データ暗号部１４により生成された暗号変換データｅ’に対し、上記所定の線形変換処理の逆変換処理を含む補正処理（最終変換処理１１３）を処理装置５１により実行して暗号データｅ（暗号文１１４）を生成する。この暗号データｅは、入力データｘに対し、暗号鍵データｋを用いて、単にＡＥＳの暗号処理を実行した結果と同じものになる。
【００３８】
データ出力手順：データ出力部１６は、データ補正部１５により生成された暗号データｅを出力装置５４により出力する。
【００３９】
以下では、図３に示した各処理の詳細について説明する。
【００４０】
図４に初期変換処理１０９の構成を示す。データ変換部１２は、入力２０１（入力データｘ）を８ビットずつに分解し、各々初期変換テーブルＡ２０２又は初期変換テーブルＢ２０３に入力する。データ変換部１２は、８つの初期変換テーブルＡ２０２及び８つの初期変換テーブルＢ２０３から８ビットのテーブル出力を得て、結果を結合し、出力２０４（入力変換データｘ’）とする。なお、８つの初期変換テーブルＡ２０２はいずれも同一のテーブルである。８つの初期変換テーブルＢ２０３はいずれも同一のテーブルである。初期変換テーブルＡ２０２と初期変換テーブルＢ２０３とは異なってもよい。初期変換テーブルＡ２０２や初期変換テーブルＢ２０３は、例えば配列として記憶装置５２に記憶されており、プログラムの実行時に処理装置５１によって参照される。
【００４１】
このように、本実施の形態では、データ変換部１２により実行される入力変換処理（初期変換処理１０９）は、入力データｘを入力とし、入力変換データｘ’を出力とするテーブル（初期変換テーブルＡ２０２、初期変換テーブルＢ２０３）として実装している（１つのテーブルでもよいし、本実施の形態のようにデータを分割して処理する場合には複数のテーブルでもよい）。これにより、データ変換部１２は、上記入力変換処理をテーブル参照のみにより実行することができるため、電力解析に対する耐性が向上する。
【００４２】
図５に初期変換テーブルＡ２０２及び初期変換テーブルＢ２０３の構成を示す。各初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。両者の構成は同一であるが、内部パラメータは異なる。初期変換テーブルＡ２０２で実現される処理では、入力３０１が半分ずつに分解され、各々に対し、線形変換処理Ａ３０２、線形変換処理Ｂ３０３が施される。初期変換テーブルＢ２０３で実現される処理では、入力３０４が半分ずつに分解され、各々に対し、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６が施される。前述したように、線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６は以下の条件を満たす任意の処理であり、設計者が指定する。関数ｆ（ｘ）の例としては、ガロア体上のアフィン変換、ガロア拡大体上の定数倍算、ガロア拡大体上の２ｎ乗算がある。ｎは１以上の整数である。
（１）全単射である。
（２）排他的論理和演算に対して加法性が成立する。加法性とは関数ｆ（ｘ）に対してｆ（ａ＋ｂ）＝ｆ（ａ）＋ｆ（ｂ）を満たす性質である。
【００４３】
初期変換テーブルＡ２０２で実現される処理では、線形変換処理Ａ３０２、線形変換処理Ｂ３０３の出力が結合され、定数３０７との排他的論理和が施され、その結果が出力３０８となる。初期変換テーブルＢ２０３で実現される処理では、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６の出力が結合され、定数３０９との排他的論理和が施され、その結果が出力３１０となる。定数３０７，３０９は設計者が任意に設定する。
【００４４】
このように、本実施の形態では、前述した所定の線形変換処理（線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６）は、上記（１）及び（２）の条件を満たすものである。即ち、上記所定の線形変換処理の対象となるデータをｐ、上記所定の線形変換処理の結果を関数ｆ（ｐ）で表すとき、ｆ（ｐ）は、全単射であり、かつ、ｆ（ａ＋ｂ）＝ｆ（ａ）＋ｆ（ｂ）（ａ，ｂは任意のデータである）を満たす。
【００４５】
なお、本実施の形態の変形例として、データ変換部１２が、初期変換テーブルＡ２０２や初期変換テーブルＢ２０３で実現される処理の一部あるいは全部を、テーブル参照ではなく処理装置５１により直接実行する（線形変換処理や排他的論理和の演算処理等を実際に実行する）ようにすることも可能である。
【００４６】
図６に拡大鍵加算処理１１０，１１２の構成を示す。鍵加算部１３（拡大鍵加算処理１１０の場合）又はデータ暗号部１４（拡大鍵加算処理１１２の場合）は、入力４０１（拡大鍵加算処理１１０の場合、入力変換データｘ’）と拡大鍵４０２（拡大鍵加算処理１１０の場合、鍵変換データｋ’）をビットごとの排他的論理和で加算し、出力４０３（拡大鍵加算処理１１０の場合、中間データｉ’）を得る。
【００４７】
図７に非線形変換処理１１１の構成を示す。データ暗号部１４は、入力５０１（例えば、中間データｉ’）を８ビットごとに分解し、ＳｈｉｆｔＲｏｗ処理によってバイト単位で位置を入れ替える。ＳｈｉｆｔＲｏｗはＡＥＳに準拠する。データ暗号部１４は、入れ替え処理を行ったデータを非線形変換テーブルＡ５０２、非線形変換テーブルＢ５０３、非線形変換テーブルＣ５０４、非線形変換テーブルＤ５０５に入力する。データ暗号部１４は、１つの非線形変換テーブルＡ５０２、１つの非線形変換テーブルＢ５０３、１つの非線形変換テーブルＣ５０４、１つの非線形変換テーブルＤ５０５の出力を排他的論理和する。即ち、データ暗号部１４は、１６個の非線形変換テーブルの出力を４つずつ排他的論理和する。データ暗号部１４は、排他的論理和結果を結合して出力５０６を得る。なお、４つの非線形変換テーブルＡ５０２はいずれも同一のテーブルである。４つの非線形変換テーブルＢ５０３はいずれも同一のテーブルである。４つの非線形変換テーブルＣ５０４はいずれも同一のテーブルである。４つの非線形変換テーブルＤ５０５はいずれも同一のテーブルである。非線形変換テーブルＡ５０２、非線形変換テーブルＢ５０３、非線形変換テーブルＣ５０４、非線形変換テーブルＤ５０５は異なるテーブルである。非線形変換テーブルＡ５０２、非線形変換テーブルＢ５０３、非線形変換テーブルＣ５０４、非線形変換テーブルＤ５０５は、例えば配列として記憶装置５２に記憶されており、プログラムの実行時に処理装置５１によって参照される。
【００４８】
図８に非線形変換テーブルＡ５０２、非線形変換テーブルＢ５０３、非線形変換テーブルＣ５０４、非線形変換テーブルＤ５０５の構成を示す。各非線形変換テーブルの数値は事前計算しておき、テーブル参照で実現する。非線形変換テーブルＡ５０２で実現される処理では、入力６０１に対し、線形逆変換処理Ｅ６０２が施され、その出力がＴ−Ｔａｂｌｅ３に入力される。Ｔ−Ｔａｂｌｅ処理はＡＥＳに準拠する（Ｔ−Ｔａｂｌｅ０〜３については、例えば、非特許文献１参照）。Ｔ−Ｔａｂｌｅ３の３２ビット出力は４つに分解され、それぞれに対して、上位から順に線形変換処理Ｍ６０３、線形変換処理Ｎ６０４、線形変換処理Ｋ６０５、線形変換処理Ｌ６０６が施される。それらの出力は結合され、３２ビットの出力６０７となる。非線形変換テーブルＢ５０３で実現される処理では、入力６０８に対し、線形逆変換処理Ｆ６０９が施され、その出力がＴ−Ｔａｂｌｅ２に入力される。Ｔ−Ｔａｂｌｅ２の３２ビット出力は４つに分解され、それぞれに対して、上位から順に線形変換処理Ｉ６１０、線形変換処理Ｊ６１１、線形変換処理Ｇ６１２、線形変換処理Ｈ６１３が施される。それらの出力は結合され、３２ビットの出力６１４となる。非線形変換テーブルＣ５０４で実現される処理では、入力６１５に対し、線形逆変換処理Ｅ６０２が施され、その出力がＴ−Ｔａｂｌｅ１に入力される。Ｔ−Ｔａｂｌｅ１の３２ビット出力は４つに分解され、それぞれに対して、上位から順に線形変換処理Ｋ６０５、線形変換処理Ｌ６０６、線形変換処理Ｍ６０３、線形変換処理Ｎ６０４が施される。それらの出力は結合され、３２ビットの出力６１６となる。非線形変換テーブルＤ５０５で実現される処理では、入力６１７に対し、線形逆変換処理Ｆ６０９が施され、その出力がＴ−Ｔａｂｌｅ０に入力される。Ｔ−Ｔａｂｌｅ０の３２ビット出力は４つに分解され、それぞれに対して、上位から順に線形変換処理Ｇ６１２、線形変換処理Ｈ６１３、線形変換処理Ｉ６１０、線形変換処理Ｊ６１１が施される。それらの出力は結合され、３２ビットの出力６１８となる。
【００４９】
なお、本実施の形態の変形例として、データ暗号部１４が、非線形変換テーブルＡ５０２、非線形変換テーブルＢ５０３、非線形変換テーブルＣ５０４、非線形変換テーブルＤ５０５で実現される処理の一部あるいは全部を、テーブル参照ではなく処理装置５１により直接実行する（線形変換処理、線形逆変換処理、Ｔ−Ｔａｂｌｅ処理、排他的論理和の演算処理等を実際に実行する）ようにすることも可能である。
【００５０】
図９に線形逆変換処理Ｅ６０２及び線形逆変換処理Ｆ６０９の構成を示す。線形逆変換処理Ｅ６０２と線形逆変換処理Ｆ６０９はパラメータが異なるが、構成は同じである。線形逆変換処理Ｅ６０２では、入力７０１が定数７０２と排他的論理和される。線形逆変換処理Ｆ６０９では、入力７０３が定数７０４と排他的論理和される。定数７０２は数式３から、定数７０４は数式４から求める。ここで、｜｜はデータの連接を示す（以降、同様とする）。なお、定数３０７，３０９は、図５に示したものである。定数１３０９〜１３１２については、後で図１６に示す。
数式３：
定数７０２＝定数３０７＋（定数１３０９｜｜定数１３１０）
数式４：
定数７０４＝定数３０９＋（定数１３１１｜｜定数１３１２）
【００５１】
線形逆変換処理Ｅ６０２では、排他的論理和の結果が４ビットずつに分解され、各々に対して、上位から順に線形逆変換処理Ａ７０５、線形逆変換処理Ｂ７０６が施される。線形逆変換処理Ａ７０５は、図５に示した初期変換テーブルＡ２０２における線形変換処理Ａ３０２の逆変換処理である。同様に線形逆変換処理Ｂ７０６は、初期変換テーブルＡ２０２における線形変換処理Ｂ３０３の逆変換処理である。線形逆変換処理Ｅ６０２では、線形逆変換処理Ａ７０５、線形逆変換処理Ｂ７０６の出力が結合され、出力７０７となる。線形逆変換処理Ｆ６０９では、排他的論理和の結果が４ビットずつに分解され、各々に対して、上位から順に線形逆変換処理Ｃ７０８、線形逆変換処理Ｄ７０９が施される。線形逆変換処理Ｃ７０８は、図５に示した初期変換テーブルＢ２０３における線形変換処理Ｃ３０５の逆変換処理である。同様に線形逆変換処理Ｄ７０９は、初期変換テーブルＢ２０３における線形変換処理Ｄ３０６の逆変換処理である。線形逆変換処理Ｆ６０９では、線形逆変換処理Ｃ７０８、線形逆変換処理Ｄ７０９の出力が結合され、出力７１０となる。
【００５２】
図１０及び図１１に線形変換処理Ｇ６１２、線形変換処理Ｈ６１３、線形変換処理Ｉ６１０、線形変換処理Ｊ６１１、線形変換処理Ｋ６０５、線形変換処理Ｌ６０６、線形変換処理Ｍ６０３、線形変換処理Ｎ６０４の構成を示す。各線形変換処理はパラメータが異なるが、構成は同じである。線形変換処理Ｇ６１２、線形変換処理Ｈ６１３、線形変換処理Ｉ６１０、線形変換処理Ｊ６１１、線形変換処理Ｋ６０５、線形変換処理Ｌ６０６、線形変換処理Ｍ６０３、線形変換処理Ｎ６０４では、それぞれの入力８０１〜８０８が、４ビットずつに分解され、各々に対して、上位から順に線形変換処理Ａ３０２、線形変換処理Ｂ３０３、あるいは、上位から順に線形変換処理Ｃ３０５、線形変換処理Ｄ３０６が施される。線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６は、図５に示したものである。線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６の出力は結合され、結合された結果が定数８０９〜８１６と排他的論理和され、出力８１７〜８２４となる。定数８０９〜８１６は以下の条件を満たす範囲で設計者が決定する。
（１）各定数のハミング重みは０以外である。
（２）定数８０９，８１１，８１３，８１５について、任意の２つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（３）定数８０９，８１１，８１３，８１５について、任意の３つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（４）定数８０９，８１１，８１３，８１５について、全ての排他的論理和を求めた結果は定数３０７と一致する。
（５）定数８１０，８１２，８１４，８１６について、任意の２つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（６）定数８１０，８１２，８１４，８１６について、任意の３つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（７）定数８１０，８１２，８１４，８１６について、全ての排他的論理和を求めた結果は定数３０９と一致する。
【００５３】
図１２に最終変換処理１１３の構成を示す。データ補正部１５は、入力９０１（暗号変換データｅ’）を８ビットずつに分解し、各々最終変換テーブルＡ９０２又は最終変換テーブルＢ９０３に入力する。データ補正部１５は、８つの最終変換テーブルＡ９０２及び８つの最終変換テーブルＢ９０３から８ビットのテーブル出力を得て、結果を結合し、出力９０４（暗号データｅ）とする。なお、８つの最終変換テーブルＡ９０２はいずれも同一のテーブルである。８つの最終変換テーブルＢ９０３はいずれも同一のテーブルである。最終変換テーブルＡ９０２と最終変換テーブルＢ９０３とは異なってもよい。最終変換テーブルＡ９０２や最終変換テーブルＢ９０３は、例えば配列として記憶装置５２に記憶されており、プログラムの実行時に処理装置５１によって参照される。
【００５４】
このように、本実施の形態では、データ補正部１５により実行される補正処理（最終変換処理１１３）は、暗号変換データｅ’を入力とし、暗号データｅを出力とするテーブル（最終変換テーブルＡ９０２、最終変換テーブルＢ９０３）として実装している（１つのテーブルでもよいし、本実施の形態のようにデータを分割して処理する場合には複数のテーブルでもよい）。これにより、データ補正部１５は、上記補正処理をテーブル参照のみにより実行することができるため、電力解析に対する耐性が向上する。
【００５５】
図１３に最終変換テーブルＡ９０２及び最終変換テーブルＢ９０３の構成を示す。各最終変換テーブルの数値は事前計算しておき、テーブル参照で実現する。両者の構成は同一であるが、内部パラメータは異なる。最終変換テーブルＡ９０２で実現される処理では、入力１００１が定数７０２と排他的論理和され、排他的論理和の結果が半分ずつに分解され、各々に対し、線形逆変換処理Ａ７０５、線形逆変換処理Ｂ７０６が施される。定数７０２、線形逆変換処理Ａ７０５、線形逆変換処理Ｂ７０６は、図９に示したものである。線形逆変換処理Ａ７０５、線形逆変換処理Ｂ７０６の結果は結合され、出力１００２となる。最終変換テーブルＢ９０３で実現される処理では、入力１００３が定数７０４と排他的論理和され、排他的論理和の結果が半分ずつに分解され、各々に対し、線形逆変換処理Ｃ７０８、線形逆変換処理Ｄ７０９が施される。定数７０４、線形逆変換処理Ｃ７０８、線形逆変換処理Ｄ７０９は、図９に示したものである。線形逆変換処理Ｃ７０８、線形逆変換処理Ｄ７０９の結果は結合され、出力１００４となる。
【００５６】
なお、本実施の形態の変形例として、データ補正部１５が、最終変換テーブルＡ９０２や最終変換テーブルＢ９０３で実現される処理の一部あるいは全部を、テーブル参照ではなく処理装置５１により直接実行する（排他的論理和の演算処理や線形逆変換処理等を実際に実行する）ようにすることも可能である。
【００５７】
図１４に暗号鍵格納処理１０２の構成を示す。データ変換部１２は、暗号鍵１０１（暗号鍵データｋ）を４ビットずつに分解し、各々ビット拡大処理Ａ１１０１、ビット拡大処理Ｂ１１０２、ビット拡大処理Ｃ１１０３、ビット拡大処理Ｄ１１０４に入力する。ビット拡大処理Ａ１１０１、ビット拡大処理Ｂ１１０２、ビット拡大処理Ｃ１１０３、ビット拡大処理Ｄ１１０４は以下の条件を満たす任意の処理であり、設計者が指定する。データ変換部１２は、ビット拡大処理Ａ１１０１、ビット拡大処理Ｂ１１０２、ビット拡大処理Ｃ１１０３、ビット拡大処理Ｄ１１０４の出力を結合して格納暗号鍵１１５を得る。
（１）単射である。
（２）出力のハミング重みが出力ビット長の半分である。
【数１】
2010166402.tif 000003
【００５８】
８つのビット拡大処理Ａ１１０１はいずれも同一の処理である。８つのビット拡大処理Ｂ１１０２はいずれも同一の処理である。８つのビット拡大処理Ｃ１１０３はいずれも同一の処理である。８つのビット拡大処理Ｄ１１０４はいずれも同一の処理である。ビット拡大処理Ａ１１０１、ビット拡大処理Ｂ１１０２、ビット拡大処理Ｃ１１０３、ビット拡大処理Ｄ１１０４は異なってもよい。
【００５９】
図１５に鍵初期変換処理１０３の構成を示す。データ変換部１２は、格納暗号鍵１１５を分割し、各々鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２、鍵初期変換テーブルＣ１２０３、鍵初期変換テーブルＤ１２０４に入力する。データ変換部１２は、各鍵初期変換テーブルの出力を、対応する定数（０ｘｆ０又は０ｘ０ｆ）によりマスクする。データ変換部１２は、マスクした鍵初期変換テーブルＡ１２０１の出力と、マスクした鍵初期変換テーブルＢ１２０２の出力を排他的論理和で加算する。即ち、データ変換部１２は、鍵初期変換テーブルＡ１２０１の出力の上位４ビットと、マスクした鍵初期変換テーブルＢ１２０２の出力の下位４ビットとを結合する。同様に、データ変換部１２は、マスクした鍵初期変換テーブルＣ１２０３の出力と、マスクした鍵初期変換テーブルＤ１２０４の出力を排他的論理和で加算する。即ち、データ変換部１２は、鍵初期変換テーブルＣ１２０３の出力の上位４ビットと、マスクした鍵初期変換テーブルＤ１２０４の出力の下位４ビットとを結合する。データ変換部１２は、加算した結果を連結して拡大鍵１０５として出力する。８つの鍵初期変換テーブルＡ１２０１はいずれも同一のテーブルである。８つの鍵初期変換テーブルＢ１２０２はいずれも同一のテーブルである。８つの鍵初期変換テーブルＣ１２０３はいずれも同一のテーブルである。８つの鍵初期変換テーブルＤ１２０４はいずれも同一のテーブルである。鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２、鍵初期変換テーブルＣ１２０３、鍵初期変換テーブルＤ１２０４は異なってもよい。鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２、鍵初期変換テーブルＣ１２０３、鍵初期変換テーブルＤ１２０４は、例えば配列として記憶装置５２に記憶されており、プログラムの実行時に処理装置５１によって参照される。なお、各鍵初期変換テーブルは、絶対アドレス空間上でテーブルの先頭アドレスの下位ｎビットが０となるように配置する。ここで、ｎはテーブル入力のビット長である。ＭＭＵ（Ｍｅｍｏｒｙ・Ｍａｎａｇｅｍｅｎｔ・Ｕｎｉｔ）を搭載するプロセッサ（処理装置５１）の場合は、必ずしもこのような位置に配置しなくてもよい。
【００６０】
このように、本実施の形態では、データ変換部１２により実行される鍵変換処理（暗号鍵格納処理１０２、鍵初期変換処理１０３）は、その主要部分をテーブル（鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２、鍵初期変換テーブルＣ１２０３、鍵初期変換テーブルＤ１２０４）として実装しているため（１つのテーブルでもよいし、本実施の形態のようにデータを分割して処理する場合には複数のテーブルでもよい）、電力解析に対する耐性が向上する。なお、上記鍵変換処理は、暗号鍵データｋを入力とし、鍵変換データｋ’を出力とするテーブルとして実装してもよい。この場合、データ変換部１２は、上記鍵変換処理をテーブル参照のみにより実行することができるため、電力解析に対する耐性がさらに向上する。
【００６１】
図１６に鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２、鍵初期変換テーブルＣ１２０３、鍵初期変換テーブルＤ１２０４の構成を示す。各鍵初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。鍵初期変換テーブルＡ１２０１で実現される処理では、入力１３０１がビット縮小処理Ａ１３０２によって４ビットに縮小される。鍵初期変換テーブルＢ１２０２で実現される処理では、入力１３０３がビット縮小処理Ｂ１３０４によって４ビットに縮小される。鍵初期変換テーブルＣ１２０３で実現される処理では、入力１３０５がビット縮小処理Ｃ１３０６によって４ビットに縮小される。鍵初期変換テーブルＤ１２０４で実現される処理では、入力１３０７がビット縮小処理Ｄ１３０８によって４ビットに縮小される。ビット縮小処理Ａ１３０２は図１４に示した暗号鍵格納処理１０２に含まれるビット拡大処理Ａ１１０１の逆変換処理である。同様に、ビット縮小処理Ｂ１３０４は暗号鍵格納処理１０２に含まれるビット拡大処理Ｂ１１０２の逆変換処理、ビット縮小処理Ｃ１３０６は暗号鍵格納処理１０２に含まれるビット拡大処理Ｃ１１０３の逆変換処理、ビット縮小処理Ｄ１３０８は暗号鍵格納処理１０２に含まれるビット拡大処理Ｄ１１０４の逆変換処理である。鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２、鍵初期変換テーブルＣ１２０３、鍵初期変換テーブルＤ１２０４で実現される処理では、ビット縮小処理されたデータそれぞれが線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６に入力される。線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６は、図５に示したものである。線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６の出力は、定数１３０９〜１３１２と排他的論理和され、ビット成型処理１３１３〜１３１６に入力される。定数１３０９〜１３１２は以下の条件を満たす範囲で設計者が指定する。
（１）（定数１３０９｜｜定数１３１０）≠定数３０７
（２）（定数１３１１｜｜定数１３１２）≠定数３０９
【００６２】
ビット成型処理１３１３では、入力が上位ビットに、乱数が下位ビットに割り当てられ、出力ビットのハミング重みが出力ビット長の半分になるような出力が生成される。ビット成型処理１３１５はビット成型処理１３１３と同様である。ビット成型処理１３１４では、入力が下位ビットに、乱数が上位ビットに割り当てられ、出力ビットのハミング重みが出力ビット長の半分になるような出力が生成される。ビット成型処理１３１６はビット成型処理１３１４と同様である。乱数生成処理１３１７〜１３２０では、出力ビットのハミング重みが出力ビット長の半分になるような乱数が生成される。入力判定処理１３２１では、入力１３０１がビット拡大処理Ａ１１０１の出力と一致するか否かが判定され、一致していればビット成型処理１３１３の出力が、そうでなければ乱数生成処理１３１７の出力が出力１３２２となる。同様に、入力判定処理１３２３では、入力１３０３がビット拡大処理Ｂ１１０２の出力と一致するか否かが判定され、一致していればビット成型処理１３１４の出力が、そうでなければ乱数生成処理１３１８の出力が出力１３２４となる。入力判定処理１３２５では、入力１３０５がビット拡大処理Ｃ１１０３の出力と一致するか否かが判定され、一致していればビット成型処理１３１５の出力が、そうでなければ乱数生成処理１３１９の出力が出力１３２６となる。入力判定処理１３２７では、入力１３０７がビット拡大処理Ｄ１１０４の出力と一致するか否かが判定され、一致していればビット成型処理１３１６の出力が、そうでなければ乱数生成処理１３２０の出力が出力１３２８となる。
【００６３】
このように、本実施の形態では、データ変換部１２は、暗号鍵データｋを分割した複数のデータのそれぞれに対し、データ長を拡大する拡大処理（ビット拡大処理Ａ１１０１、ビット拡大処理Ｂ１１０２、ビット拡大処理Ｃ１１０３、ビット拡大処理Ｄ１１０４）を実行し、それぞれの拡大処理の結果を結合して格納暗号鍵データｓを生成する。それぞれの拡大処理の対象となるデータをｑ、それぞれの拡大処理の結果を関数ｇ（ｑ）と表すとき、ｇ（ｑ）は、単射であり、かつ、ハミング重みが一定となる。そして、データ変換部１２は、生成した格納暗号鍵データｓを分割した複数のデータのそれぞれに対し、前述した鍵変換処理を修正した修正鍵変換処理を、テーブル参照のみにより実行する。修正鍵変換処理は、上記鍵変換処理において、前述した所定の線形変換処理の前にそれぞれの拡大処理の逆変換処理（ビット縮小処理Ａ１３０２、ビット縮小処理Ｂ１３０４、ビット縮小処理Ｃ１３０６、ビット縮小処理Ｄ１３０８）が付加されたものである。これにより、テーブル参照をする際に、参照するアドレスバス及びデータバスのハミング重みが一定となるため、電力解析に対する耐性が向上する。
【００６４】
また、本実施の形態では、前述した入力変換処理（初期変換処理１０９）が、前述した所定の線形変換処理（線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６）の後に、上記所定の線形変換処理の結果に定数データｍ１（定数３０７，３０９）を加算する入力マスク処理（排他的論理和演算処理）を含む。それとともに、前述した鍵変換処理（暗号鍵格納処理１０２、鍵初期変換処理１０３）が、上記所定の線形変換処理の後に、上記所定の線形変換処理の結果に定数データｍ２（定数１３０９〜１３１２）を加算する鍵マスク処理（排他的論理和演算処理）を含む。上記定数データｍ１と上記定数データｍ２とは、いずれも０以外であり、かつ、互いに異なる値をもつ。これにより、データに対し、定数マスクのかかった状態で暗号処理を実行することができるため、電力解析に対する耐性が向上する。
【００６５】
図１７に拡大鍵生成処理１０４の構成を示す。拡大鍵生成処理１０４はＡＥＳの鍵スケジュールに準拠する。データ暗号部１４の拡大鍵生成部２１は、入力である拡大鍵１４０１を３２ビットずつのデータＤａ，Ｄｂ，Ｄｃ，Ｄｄに分割する。拡大鍵生成部２１は、データＤｄを定数１４０２と排他的論理和した後、８ビットずつ分割し、バイト単位で巡回シフトする。拡大鍵生成部２１は、定数１４０２を数式５で求める。なお、定数３０７，３０９は、図５に示したものである。
数式５：
定数１４０２＝（定数３０７｜｜定数３０９｜｜定数３０７｜｜定数３０９）
【００６６】
拡大鍵生成部２１は、各々の８ビットデータを非線形変換テーブルＢ５０３、非線形変換テーブルＣ５０４、非線形変換テーブルＤ５０５、非線形変換テーブルＡ５０２に入力する。非線形変換テーブルＢ５０３、非線形変換テーブルＣ５０４、非線形変換テーブルＤ５０５、非線形変換テーブルＡ５０２は、図８に示したものである。拡大鍵生成部２１は、各非線形変換テーブルの出力をマスクし、マスクしたデータと定数１４０３とデータＤａとの排他的論理和を計算する。拡大鍵生成部２１は、それらの排他的論理和結果を拡大鍵１４０４の上位３２ビットのデータＤｅとする。また、拡大鍵生成部２１は、データＤｅの値を変換処理１４０５で変換する。
【００６７】
一方、拡大鍵生成部２１は、データＤｂを変換処理１４０５で変換し、定数１４０６と排他的論理和する。拡大鍵生成部２１は、その排他的論理和結果と変換処理１４０５で変換されたデータＤｅとの排他的論理和を計算し、その計算結果を逆変換処理１４０７に入力する。拡大鍵生成部２１は、この逆変換処理１４０７の出力を拡大鍵１４０４の次の３２ビットのデータＤｆとする。また、拡大鍵生成部２１は、データＤｆの値を変換処理１４０５で変換する。同様に、拡大鍵生成部２１は、データＤｃを変換処理１４０５で変換し、定数１４０６と排他的論理和する。拡大鍵生成部２１は、その排他的論理和結果と変換処理１４０５で変換されたデータＤｆとの排他的論理和を計算し、その計算結果を逆変換処理１４０７に入力する。拡大鍵生成部２１は、この逆変換処理１４０７の出力を拡大鍵１４０４の次の３２ビットのデータＤｇとする。また、拡大鍵生成部２１は、データＤｇの値を変換処理１４０５で変換する。同様に、拡大鍵生成部２１は、データＤｄを変換処理１４０５で変換し、定数１４０６と排他的論理和する。拡大鍵生成部２１は、その排他的論理和結果と変換処理１４０５で変換されたデータＤｇとの排他的論理和を計算し、その計算結果を逆変換処理１４０７に入力する。拡大鍵生成部２１は、この逆変換処理１４０７の出力を拡大鍵１４０４の下位３２ビットのデータＤｈとする。拡大鍵生成部２１は、定数１４０６を数式６で決定する。定数１４０６は事前に計算しておく。数式６で、Ｆａ（ｘ）は入力ｘに対する線形変換処理Ａ３０２の出力とする。同様に、Ｆｂ（ｘ）は入力ｘに対する線形変換処理Ｂ３０３の出力、Ｆｃ（ｘ）は入力ｘに対する線形変換処理Ｃ３０５の出力、Ｆｄ（ｘ）は入力ｘに対する線形変換処理Ｄ３０６の出力とする。なお、定数７０２，７０４は、図９に示したものである。また、定数１３０９〜１３１２は、図１６に示したものである。
数式６：
ＴＭ１＝（Ｆａ（定数１３０９）｜｜Ｆｂ（定数１３１０））＋定数７０２
ＴＭ２＝（Ｆａ（定数１３１１）｜｜Ｆｂ（定数１３１２））＋定数７０４
定数１４０６＝（ＴＭ１｜｜ＴＭ２｜｜ＴＭ１｜｜ＴＭ２）
【００６８】
図１８に拡大鍵生成部２１が定数１４０３を導出するための構成を示す。定数１４０３は事前に計算しておく。図１８において、拡大鍵生成部２１は、ＲＣｏｎを４ビットずつに分割し、各々を線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６により変換する。線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６は、図５に示したものである。ＲＣｏｎはＡＥＳの仕様に準拠する。拡大鍵生成部２１は、各線形変換処理の出力を連接し、連接結果と補正係数１５０１との排他的論理和を求め、結果を定数１４０３とする。拡大鍵生成部２１は、補正係数１５０１を数式７で求める。なお、定数８１１は、図１０に示したものである。また、定数８１４は、図１１に示したものである。
数式７：
補正係数１５０１＝（定数８１１｜｜定数８１４｜｜定数８１１｜｜定数８１４）
【００６９】
図１９に変換処理１４０５の構成を示す。拡大鍵生成部２１は、３２ビットの入力１６０１を８ビットずつ分割し、各々初期変換テーブルＡ２０２、初期変換テーブルＢ２０３に入力する。初期変換テーブルＡ２０２、初期変換テーブルＢ２０３は、図５に示したものである。拡大鍵生成部２１は、各初期変換テーブルの出力を結合し、出力１６０２を得る。
【００７０】
図２０に逆変換処理１４０７の構成を示す。拡大鍵生成部２１は、３２ビットの入力１７０１を８ビットずつ分割し、各々最終変換テーブルＡ９０２、最終変換テーブルＢ９０３に入力する。最終変換テーブルＡ９０２、最終変換テーブルＢ９０３は、図１３に示したものである。拡大鍵生成部２１は、各最終変換テーブルの出力を結合し、出力１７０２を得る。
【００７１】
このように、本実施の形態では、データ暗号部１４の拡大鍵生成部２１は、データ変換部１２により生成された鍵変換データｋ’に対し、ＡＥＳの鍵スケジュール処理（所定の鍵スケジュール処理の一例）を所定のラウンド数実行して、ラウンドごとに拡大鍵データｒ’を生成する。データ暗号部１４は、ラウンドごとに拡大鍵生成部２１により生成された拡大鍵データｒ’を用いて前述した修正暗号処理を実行する。このとき、データ暗号部１４は、最後のラウンドにて暗号変換データｅ’を生成することになる。拡大鍵生成部２１は、ＡＥＳの鍵スケジューリング処理にて、同じ定数データｍが加算されたデータｃ，ｄ（１つの例としては、データＤａ，Ｄｂ）に対し、関数ｆｍ（ｃ＋ｍ，ｄ＋ｍ）＝ｃ＋ｄ＋ｍを計算する場合（上記例において、データＤａ，ＤｂからデータＤｆを計算する場合）、まず、ｃ＋ｍ，ｄ＋ｍのそれぞれに対し、前述した入力変換処理（変換処理１４０５）を実行して中間データｃ’，ｄ’（上記例では、変換処理１４０５が施されたデータＤｅ，Ｄｂ）を生成する。そして、拡大鍵生成部２１は、生成した中間データｃ’，ｄ’のいずれか一方（上記例において、図１７に示したものと同様に、変換処理１４０５が施されたデータＤｂとする）に予め定められた定数データｍ’（定数１４０６）を加算する。拡大鍵生成部２１は、さらに、当該中間データｃ’，ｄ’の他方を加算し、その結果に対し、前述した補正処理（逆変換処理１４０７）を実行してｆｍ（上記例では、データＤｆ）を算出する。これにより、線形変換処理が施され、さらに、定数マスクがかけられたデータを対象に、ＡＥＳ等の暗号処理を実行することが可能となる。
【００７２】
以上説明したように、本実施の形態における暗号処理装置１０は、入力（平文１０８）と暗号鍵１０１とをそれぞれ設計者が設計した変換処理により変換し、変換した入力及び暗号鍵に対して暗号処理を実行し、暗号処理結果に補正処理を加えて、所望の暗号文１１４を得ることを特徴とする。
【００７３】
上記暗号処理装置１０は、上記変換処理に、以下の条件（１）、（２）を満たす線形変換と、条件（３）、（４）を満たす定数マスクによる排他的論理和処理を用いることを特徴とする。
（１）全単射である。
（２）排他的論理和演算に対して加法性が成立する。排他的論理和演算に対する加法性とは、関数ｆ（ｘ）について、ｆ（ａ＋ｂ）＝ｆ（ａ）＋ｆ（ｂ）を満たす性質である。
（３）０以外とする。
（４）入力に施す定数マスクと暗号鍵１０１に施す定数マスクは互いに異なる。
【００７４】
上記暗号処理装置１０は、上記変換処理及び上記補正処理をテーブル参照のみで実現することを特徴とする。
【００７５】
上記暗号処理は、上記変換処理による影響を考慮し、所定の出力を得られるよう修正され、かつ、以下の計算要素のみで構成される（一部のビットマスク処理を除く）ことを特徴とする。
（１）テーブル参照
（２）転置処理
（３）排他的論理和
【００７６】
上記暗号処理装置１０は、同一の定数マスクｍのかかっている２つのデータａ＋ｍ，ｂ＋ｍに対し、以下の関数ｆｍを計算するにあたり、各々のデータａ＋ｍ，ｂ＋ｍに上記変換処理を施し、予め求めておいた補正用定数を、上記変換処理を施したデータのいずれか一方に排他的論理和し、その結果に上記変換処理を施した他方のデータとの排他的論理和を求め、その結果に、上記変換処理に対する補正処理を行うことで関数ｆｍを計算することを特徴とする。
ｆｍ（ａ＋ｍ，ｂ＋ｍ）＝ａ＋ｂ＋ｍ
【００７７】
上記暗号処理装置１０は、暗号鍵１０１の変換処理を行うにあたり、暗号鍵１０１のデータを一定のサイズに分割し、分割されたデータに対し、以下の条件（１）、（２）を満たすように拡大処理を施し、上記拡大処理されたデータを連接して格納することを特徴とする。
（１）単射である。
（２）出力のハミング重みが一定である。
【００７８】
上記暗号処理装置１０は、拡大され格納された暗号鍵（格納暗号鍵１１５）を呼び出し、変換処理を施し、上記変換処理の出力を処理することで、変換された拡大鍵１０５を得ることを特徴とする。
【００７９】
なお、上記暗号処理装置１０によって生成された暗号文１１４を復号する復号処理装置として、上記暗号処理装置１０と同様の構成を有するものを用いることができる。即ち、上記暗号処理装置１０は復号処理装置として用いることもできる。
【００８０】
以下、本実施の形態が奏する効果について説明する。
【００８１】
本実施の形態では、初期変換処理１０９の出力から最終変換処理１１３の入力までと、鍵初期変換処理１０３の出力以降の拡大鍵を含む中間変数の値は、設計者が秘匿した線形関数及び定数マスクによって秘匿されるため、攻撃者はその値を推定できない。よって、本来の暗号処理から推定される中間変数と実際の電力消費との相関をなくすことができるため、電力解析への耐性が上がる。
【００８２】
また、本実施の形態では、暗号鍵１０１を、暗号鍵格納処理１０２を通して、格納暗号鍵１１５として記憶装置５２に格納することにより、鍵初期変換処理１０３におけるテーブル参照において、参照するアドレスのハミング重みを、暗号鍵１０１の値によらず一定にすることができる。よって、当該テーブル参照演算において、アドレス参照時のハミング重みの違いによる電力消費との相関を減らすことができる。また、テーブル出力のハミング重みも一定にすることができるため、テーブルデータ取得時のハミング重みの違いによる電力消費との相関を減らすことができる。
【００８３】
さらに、本実施の形態では、同一の定数マスクのかかっている２つのデータの排他的論理和を求めるにあたり、各々のデータに変換処理１４０５を施し、予め求めておいた補正用の定数１４０６を、変換処理１４０５を施したデータのいずれか一方に排他的論理和し、その結果に他方の変換処理１４０５を施したデータとの排他的論理和を求め、その結果に、変換処理１４０５に対する補正処理として逆変換処理１４０７を行っている。このことで、演算中の中間変数には、常に線形変換処理と定数マスクがかかった状態となる。線形変換処理には加法性の条件があるため、線形変換処理の入力が０である場合、出力は必ず０となる。このような入力の場合、定数マスクがかからないと、入力が０の場合に攻撃者が推定できてしまうが、本実施の形態では、常に線形変換処理と定数マスクがかかった状態となるため、このような入力に対しても、攻撃者は値を推定できない。
【００８４】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００８５】
実施の形態１では、４つの鍵初期変換テーブル（図１６に示した鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２、鍵初期変換テーブルＣ１２０３、鍵初期変換テーブルＤ１２０４）を用意したが、本実施の形態では、これらを１つのテーブルで実装する手法を採用する。実施の形態１との違いは、暗号鍵格納処理１０２、及び、鍵初期変換処理１０３である。
【００８６】
図２１に本実施の形態における暗号鍵格納処理１０２の構成を示す。構成は図１４と同じである。ビット拡大処理Ａ１８０１、ビット拡大処理Ｂ１８０２、ビット拡大処理Ｃ１８０３、ビット拡大処理Ｄ１８０４は以下の条件を満たす任意の処理であり、設計者が指定する。
（１）単射である。
（２）出力のハミング重みが出力ビット長の半分である。
（３）異なる２つのビット拡大処理について、同一入力に対する出力が互いに異なる。
上記条件を満たすビット拡大処理として、例えば、ハミング重みが出力ビット長の半分となる数を求め、数の小さい順から、入力ビットが示す空間ずつ割り当てる方法がある。入力４ビット、出力８ビットのビット拡大処理を４種類用意する場合（即ち、ビット拡大処理Ａ１１０１、ビット拡大処理Ｂ１１０２、ビット拡大処理Ｃ１１０３、ビット拡大処理Ｄ１１０４が異なる種類であるとする場合）、入力に割り当てるために必要な数の個数は２４×４＝６４である（入力値は２４通りであり、それぞれの値について４通りの異なる出力値が必要となるからである）。一方、８ビットデータのうちハミング重みが４となる数の個数は８Ｃ４＝７０となるため、割り当ては可能である。
【００８７】
図２２に本実施の形態における鍵初期変換処理１０３の構成を示す。構成はほぼ図１５と同じである。図１５との違いは、鍵初期変換テーブルＥ１９０１が１種類しかない（全て同じである）ことである。
【００８８】
このように、本実施の形態では、データ変換部１２は、それぞれの修正鍵変換処理を同じテーブル参照のみにより実行する。１つの拡大処理の対象となるデータをｑ１、当該１つの拡大処理の結果を関数ｇ１（ｑ１）、他の拡大処理の対象となるデータをｑ２、当該他の拡大処理の結果を関数ｇ２（ｑ２）と表すとき、ｇ１（ｑ１），ｇ２（ｑ２）は、ｑ１＝ｑ２の場合にｇ１（ｑ１）≠ｇ２（ｑ２）を満たす。これにより、参照するテーブルが１種類であっても、実施の形態１と同様の効果が得られる。
【００８９】
図２３に鍵初期変換テーブルＥ１９０１の構成を示す。鍵初期変換テーブルＥ１９０１の数値は事前計算しておき、テーブル参照で実現する。鍵初期変換テーブルＥ１９０１で実現される処理では、入力２００１がビット縮小処理Ａ２００２、ビット縮小処理Ｂ２００３、ビット縮小処理Ｃ２００４、ビット縮小処理Ｄ２００５によって４ビットに縮小される。ビット縮小処理Ａ２００２は図２１に示した暗号鍵格納処理１０２に含まれるビット拡大処理Ａ１８０１の逆変換処理である。同様に、ビット縮小処理Ｂ２００３は暗号鍵格納処理１０２に含まれるビット拡大処理Ｂ１８０２の逆変換処理、ビット縮小処理Ｃ２００４は暗号鍵格納処理１０２に含まれるビット拡大処理Ｃ１８０３の逆変換処理、ビット縮小処理Ｄ２００５は暗号鍵格納処理１０２に含まれるビット拡大処理Ｄ１８０４の逆変換処理である。鍵初期変換テーブルＥ１９０１で実現される処理では、ビット縮小処理されたデータそれぞれが線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６に入力される。線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６は、図５に示したものである。線形変換処理Ａ３０２、線形変換処理Ｂ３０３、線形変換処理Ｃ３０５、線形変換処理Ｄ３０６の出力は、定数１３０９〜１３１２と排他的論理和され、ビット成型処理１３１３〜１３１６に入力される。定数１３０９〜１３１２、ビット成型処理１３１３〜１３１６は、図１６に示したものと同じである。
【００９０】
乱数生成処理２００６では、出力ビットのハミング重みが出力ビット長の半分になるような乱数が生成される。入力判定処理２００７では、入力２００１がビット拡大処理Ａ１８０１の出力と一致していればビット成型処理１３１３の出力が、ビット拡大処理Ｂ１８０２の出力と一致していればビット成型処理１３１４の出力が、ビット拡大処理Ｃ１８０３の出力と一致していればビット成型処理１３１５の出力が、ビット拡大処理Ｄ１８０４の出力と一致していればビット成型処理１３１６の出力が、いずれにも合致しない場合は乱数生成処理２００６の出力が出力２００８となる。
【００９１】
以上説明したように、本実施の形態における暗号処理装置１０は、実施の形態１と同様に、暗号鍵１０１の変換処理を行うにあたり、暗号鍵１０１のデータを一定のサイズに分割し、分割されたデータに対し、以下の条件（１）、（２）を満たすように拡大処理を施し、上記拡大処理されたデータを連接して格納するが、このとき、任意の複数の拡大処理において、同一入力に対する出力が互いに異なることを特徴とする。
（１）単射である。
（２）出力のハミング重みが一定である。
【００９２】
以下、本実施の形態が奏する効果について説明する。
【００９３】
実施の形態１では、鍵初期変換テーブルとして４つのテーブルをもつ必要があるが、本実施の形態では１つですむ。よって、実装サイズを小さくできる。
【００９４】
実施の形態３．
本実施の形態について、主に実施の形態１との差異を説明する。
【００９５】
実施の形態１では、拡大鍵生成処理１０４において、２回の変換処理１４０５の後に排他的論理和を行い、逆変換処理１４０７を行うことで拡大鍵を生成する手法を示した。この場合、１回の拡大鍵生成処理１０４において、合計４０回のテーブル参照を行うことになる。本実施の形態では、これを２８回のテーブル参照で実現する方法を採用する。実施の形態１との違いは、拡大鍵生成処理１０４である。
【００９６】
図２４に本実施の形態における拡大鍵生成処理１０４の構成を示す。拡大鍵１４０４のデータＤｆ，Ｄｇ，Ｄｈがそれぞれ鍵加算処理２１０１で生成される点以外は、図１７と同じである。
【００９７】
図２５に鍵加算処理２１０１の構成を示す。拡大鍵生成部２１は、２つの３２ビットの入力Ａ２２０１、入力Ｂ２２０２をそれぞれ４ビットずつ区切る。拡大鍵生成部２１は、区切った入力Ａ２２０１の４ビットデータを、入力Ｂ２２０２の同じ位置の４ビットデータと連接する。拡大鍵生成部２１は、連接した８ビットデータを鍵加算テーブルＡ２２０３又は鍵加算テーブルＢ２２０４に入力する。拡大鍵生成部２１は、２つの鍵加算テーブルＡ２２０３又は鍵加算テーブルＢ２２０４の出力にビットマスクをかけたデータ同士を排他的論理和する。拡大鍵生成部２１は、排他的論理和の結果を連接し、３２ビットの出力２２０５とする。
【００９８】
図２６に鍵加算テーブルＡ２２０３及び鍵加算テーブルＢ２２０４の構成を示す。各鍵加算テーブルの数値は事前計算しておき、テーブル参照によって実現する。鍵加算テーブルＡ２２０３で実現される処理では、８ビットの入力２３０１が４ビットずつに分割され、排他的論理和される。排他的論理和された結果は、同じデータを連接されて８ビットデータとなり、その８ビットデータと定数２３０２との排他的論理が求められ、その結果が出力２３０３となる。同様に、鍵加算テーブルＢ２２０４で実現される処理では、８ビットの入力２３０４が４ビットずつに分割され、排他的論理和される。排他的論理和された結果は、同じデータを連接されて８ビットデータとなり、その８ビットデータと定数２３０５との排他的論理が求められ、その結果が出力２３０６となる。定数２３０２は数式８、定数２３０５は数式９で計算する。なお、定数１３０９〜１３１２は、図１６に示したものである。
数式８：
定数２３０２＝（定数１３０９｜｜定数１３１０）
数式９：
定数２４０４＝（定数１３１１｜｜定数１３１２）
【００９９】
このように、本実施の形態では、拡大鍵生成部２１は、ＡＥＳの鍵スケジューリング処理にて、同じ定数データｍが加算されたデータｃ，ｄ（１つの例としては、データＤａ，Ｄｂ）に対し、関数ｆｍ（ｃ＋ｍ，ｄ＋ｍ）＝ｃ＋ｄ＋ｍを計算する場合（上記例において、データＤａ，ＤｂからデータＤｆを計算する場合）、まず、ｃ＋ｍ，ｄ＋ｍのそれぞれをｎ分割する（ｎはｎ＞１であり、例えば８である）。そして、拡大鍵生成部２１は、分割したｎ個のデータｃｉ＋ｍｉ，ｄｉ＋ｍｉについて（ｉ＝１，・・・，ｎ）、ｃｉ＋ｍｉ，ｄｉ＋ｍｉをテーブル参照により計算し、その結果を結合してｆｍ（上記例では、データＤｆ）を算出する。
【０１００】
以上説明したように、本実施の形態における暗号処理装置１０は、実施の形態１と同様の特徴に加えて、同一の定数マスクｍのかかっている２つのデータａ＋ｍ，ｂ＋ｍに対し、以下の関数ｆｍを計算するにあたり、上記２つのデータをｎ分割し、分割された各データａｉ＋ｍｉ，ｂｉ＋ｍｉ（１≦ｉ≦ｎ）について、ａｉ＋ｂｉ＋ｍｉをテーブル参照で計算し、計算結果を結合して関数ｆｍを計算することを特徴とする。
ｆｍ（ａ＋ｍ，ｂ＋ｍ）＝ａ＋ｂ＋ｍ
【０１０１】
以下、本実施の形態が奏する効果について説明する。
【０１０２】
実施の形態１では、１回の拡大鍵生成処理１０４において、合計４０回のテーブル参照を行うことになるが、本実施の形態では、これを２８回のテーブル参照で実現することによって高速な処理が実現できる。
【０１０３】
実施の形態４．
本実施の形態について、主に実施の形態１との差異を説明する。
【０１０４】
実施の形態１では、暗号鍵１０１を、暗号鍵格納処理１０２を通して、格納暗号鍵１１５として格納することにより、鍵初期変換処理１０３におけるテーブル参照において、参照するアドレスのハミング重みを、暗号鍵１０１の値によらず一定にし、アドレス参照時のハミング重みの違いによる電力消費との相関を減らした。本実施の形態では、暗号鍵格納処理１０２を通さずに、鍵初期変換処理１０３を直接行う手法を採用する。
【０１０５】
図２７に実施の形態４における暗号処理装置１０の各部により実行される処理を示す。実施の形態１との違いは、暗号鍵１０１が鍵初期変換処理１０３に直接入っている点である。
【０１０６】
以下では、初期変換処理１０９、非線形変換処理１１１、最終変換処理１１３について、実施の形態１との差異を説明した後、本実施の形態における鍵初期変換処理１０３の構成を説明する。また、拡大鍵生成処理１０４について、実施の形態１との差異を説明する。
【０１０７】
初期変換処理１０９の構成は、図４に示した実施の形態１のものと同様であるが、実施の形態１とはテーブルの内容が異なる。
【０１０８】
図２８に本実施の形態における初期変換テーブルＡ２０２及び初期変換テーブルＢ２０３の構成を示す。実施の形態１と同様に、各初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。初期変換テーブルＡ２０２で実現される処理では、入力３０１に対し、線形変換処理Ａ３０２が施される。初期変換テーブルＢ２０３で実現される処理では、入力３０４に対し、線形変換処理Ｂ３０３が施される。線形変換処理Ａ３０２、線形変換処理Ｂ３０３は、実施の形態１と同様の条件を満たす任意の処理である。初期変換テーブルＡ２０２で実現される処理では、線形変換処理Ａ３０２の出力に定数３０７との排他的論理和が施され、その結果が出力３０８となる。初期変換テーブルＢ２０３で実現される処理では、線形変換処理Ｂ３０３の出力に定数３０９との排他的論理和が施され、その結果が出力３１０となる。実施の形態１と同様に、定数３０７，３０９は設計者が任意に設定する。
【０１０９】
非線形変換処理１１１の構成は、図７に示した実施の形態１のものと同様であるが、実施の形態１とはテーブルの内容が異なる。具体的には、図８に示した構成において、線形逆変換処理Ｅ６０２、線形逆変換処理Ｆ６０９が異なる。また、線形変換処理Ｇ６１２、線形変換処理Ｈ６１３、線形変換処理Ｉ６１０、線形変換処理Ｊ６１１、線形変換処理Ｋ６０５、線形変換処理Ｌ６０６、線形変換処理Ｍ６０３、線形変換処理Ｎ６０４も異なる。
【０１１０】
図２９に線形逆変換処理Ｅ６０２及び線形逆変換処理Ｆ６０９の構成を示す。線形逆変換処理Ｅ６０２では、入力７０１が定数７０２と排他的論理和される。線形逆変換処理Ｆ６０９では、入力７０３が定数７０４と排他的論理和される。定数７０２は数式１０から、定数７０４は数式１１から求める。なお、定数３０７，３０９は、図２８に示したものである。定数１３０９，１３１０については、後で図３３に示す。
数式１０：
定数７０２＝定数３０７＋定数１３０９
数式１１：
定数７０４＝定数３０９＋定数１３１０
【０１１１】
線形逆変換処理Ｅ６０２では、排他的論理和の結果に対して線形逆変換処理Ａ７０５が施される。線形逆変換処理Ａ７０５は、図２８に示した初期変換テーブルＡ２０２における線形変換処理Ａ３０２の逆変換処理である。線形逆変換処理Ｅ６０２では、線形逆変換処理Ａ７０５の出力が出力７０７となる。線形逆変換処理Ｆ６０９では、排他的論理和の結果に対して線形逆変換処理Ｂ７０６が施される。線形逆変換処理Ｂ７０６は、図２８に示した初期変換テーブルＢ２０３における線形変換処理Ｂ３０３の逆変換処理である。線形逆変換処理Ｆ６０９では、線形逆変換処理Ｂ７０６の出力が出力７１０となる。
【０１１２】
図３０に線形変換処理Ｇ６１２、線形変換処理Ｈ６１３、線形変換処理Ｉ６１０、線形変換処理Ｊ６１１、線形変換処理Ｋ６０５、線形変換処理Ｌ６０６、線形変換処理Ｍ６０３、線形変換処理Ｎ６０４の構成を示す。線形変換処理Ｇ６１２、線形変換処理Ｈ６１３、線形変換処理Ｉ６１０、線形変換処理Ｊ６１１、線形変換処理Ｋ６０５、線形変換処理Ｌ６０６、線形変換処理Ｍ６０３、線形変換処理Ｎ６０４では、それぞれの入力８０１〜８０８に対して、線形変換処理Ａ３０２、あるいは、線形変換処理Ｂ３０３が施される。線形変換処理Ａ３０２、線形変換処理Ｂ３０３は、図２８に示したものである。線形変換処理Ａ３０２、線形変換処理Ｂ３０３の出力は定数８０９〜８１６と排他的論理和され、出力８１７〜８２４となる。実施の形態１と同様に、定数８０９〜８１６は以下の条件を満たす範囲で設計者が決定する。
（１）各定数のハミング重みは０以外である。
（２）定数８０９，８１１，８１３，８１５について、任意の２つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（３）定数８０９，８１１，８１３，８１５について、任意の３つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（４）定数８０９，８１１，８１３，８１５について、全ての排他的論理和を求めた結果は定数３０７と一致する。
（５）定数８１０，８１２，８１４，８１６について、任意の２つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（６）定数８１０，８１２，８１４，８１６について、任意の３つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは０以外である。
（７）定数８１０，８１２，８１４，８１６について、全ての排他的論理和を求めた結果は定数３０９と一致する。
【０１１３】
最終変換処理１１３の構成は、図１２に示した実施の形態１のものと同様であるが、実施の形態１とはテーブルの内容が異なる。
【０１１４】
図３１に最終変換テーブルＡ９０２及び最終変換テーブルＢ９０３の構成を示す。実施の形態１と同様に、各最終変換テーブルの数値は事前計算しておき、テーブル参照で実現する。最終変換テーブルＡ９０２で実現される処理では、入力１００１が定数７０２と排他的論理和され、排他的論理和の結果に対し、線形逆変換処理Ａ７０５が施される。定数７０２、線形逆変換処理Ａ７０５は、図２９に示したものである。線形逆変換処理Ａ７０５の結果は出力１００２となる。最終変換テーブルＢ９０３で実現される処理では、入力１００３が定数７０４と排他的論理和され、排他的論理和の結果に対し、線形逆変換処理Ｂ７０６が施される。定数７０４、線形逆変換処理Ｂ７０６は、図２９に示したものである。線形逆変換処理Ｂ７０６の結果は出力１００４となる。
【０１１５】
図３２に鍵初期変換処理１０３の構成を示す。データ変換部１２は、暗号鍵１０１を８ビットずつに分割し、各々鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２に入力する。データ変換部１２は、各鍵初期変換テーブルの出力を連接し、拡大鍵１０５として出力する。実施の形態１と同様に、８つの鍵初期変換テーブルＡ１２０１はいずれも同一のテーブルである。８つの鍵初期変換テーブルＢ１２０２はいずれも同一のテーブルである。鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２は異なってもよい。鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２は、例えば配列として記憶装置５２に記憶されており、プログラムの実行時に処理装置５１によって参照される。
【０１１６】
図３３に鍵初期変換テーブルＡ１２０１、鍵初期変換テーブルＢ１２０２の構成を示す。実施の形態１と同様に、各鍵初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。鍵初期変換テーブルＡ１２０１で実現される処理では、入力１３０１が線形変換処理Ａ３０２に入力される。鍵初期変換テーブルＢ１２０２で実現される処理では、入力１３０３が線形変換処理Ｂ３０３に入力される。線形変換処理Ａ３０２、線形変換処理Ｂ３０３は、図２８に示したものである。線形変換処理Ａ３０２、線形変換処理Ｂ３０３の出力は、定数１３０９，１３１０と排他的論理和され、それぞれの結果が出力１３２２，１３２４となる。定数１３０９，１３１０は以下の条件を満たす範囲で設計者が指定する。
（１）定数１３０９≠定数３０７
（２）定数１３１０≠定数３０９
【０１１７】
拡大鍵生成処理１０４の構成は、図１７に示した実施の形態１のものと同様であるが、実施の形態１とは定数１４０３，１４０６が異なる。なお、実施の形態１と同様に、拡大鍵生成部２１は、定数１４０２を数式１２で求める。定数３０７，３０９は、図２８に示したものである。
数式１２：
定数１４０２＝（定数３０７｜｜定数３０９｜｜定数３０７｜｜定数３０９）
【０１１８】
拡大鍵生成部２１は、定数１４０６を数式１３で決定する。実施の形態１と同様に、定数１４０６は事前に計算しておく。数式１３で、Ｆａ（ｘ）は入力ｘに対する線形変換処理Ａ３０２の出力とする。同様に、Ｆｂ（ｘ）は入力ｘに対する線形変換処理Ｂ３０３の出力とする。なお、定数７０２，７０４は、図２９に示したものである。また、定数１３０９，１３１０は、図３３に示したものである。
数式１３：
ＴＭ１＝Ｆａ（定数１３０９）＋定数７０２
ＴＭ２＝Ｆｂ（定数１３１０）＋定数７０４
定数１４０６＝（ＴＭ１｜｜ＴＭ２｜｜ＴＭ１｜｜ＴＭ２）
【０１１９】
図３４に拡大鍵生成部２１が定数１４０３を導出するための構成を示す。実施の形態１と同様に、定数１４０３は事前に計算しておく。図３４において、拡大鍵生成部２１は、ＲＣｏｎを８ビットずつに分割し、各々を線形変換処理Ａ３０２、線形変換処理Ｂ３０３により変換する。線形変換処理Ａ３０２、線形変換処理Ｂ３０３は、図２８に示したものである。ＲＣｏｎはＡＥＳの仕様に準拠する。拡大鍵生成部２１は、各線形変換処理の出力を連接し、連接結果と補正係数１５０１との排他的論理和を求め、結果を定数１４０３とする。実施の形態１と同様に、拡大鍵生成部２１は、補正係数１５０１を数式１４で求める。なお、定数８１１，８１４は、図３０に示したものである。
数式１４：
補正係数１５０１＝（定数８１１｜｜定数８１４｜｜定数８１１｜｜定数８１４）
【０１２０】
ここで、拡大鍵生成処理１０４の構成は、図２４に示した実施の形態３のものと同様であってもよい。この場合、実施の形態３とは定数１４０３が異なる。なお、実施の形態３と同様に、拡大鍵生成部２１は、定数１４０２を上記数式１２で求める。定数１４０３を導出するための構成については、図３４を用いて説明した通りである。
【０１２１】
以下、本実施の形態が奏する効果について説明する。
【０１２２】
実施の形態１では、アドレス参照時のハミング重みの違いによる電力消費との相関を減らすために、暗号鍵格納処理１０２と鍵初期変換処理１０３でテーブル参照を多用するため、処理速度が低下する虞がある。これに対し、本実施の形態４は、テーブル参照の回数を減らすことで、処理の高速化が図れる。
【０１２３】
以上、本発明の実施の形態について説明したが、これらのうち、２つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、１つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、２つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
【符号の説明】
【０１２４】
１０  暗号処理装置、１１  データ入力部、１２  データ変換部、１３  鍵加算部、１４  データ暗号部、１５  データ補正部、１６  データ出力部、２１  拡大鍵生成部、５１  処理装置、５２  記憶装置、５３  入力装置、５４  出力装置、７１  ＬＣＤ、７２  キーボード、７３  マウス、７４  ＦＤＤ、７５  ＣＤＤ、７６  プリンタ、８１  ＣＰＵ、８２  バス、８３  ＲＯＭ、８４  ＲＡＭ、８５  通信ボード、９０  ＨＤＤ、９１  オペレーティングシステム、９２  ウィンドウシステム、９３  プログラム群、９４  ファイル群、１０１  暗号鍵、１０２  暗号鍵格納処理、１０３  鍵初期変換処理、１０４，１０４  拡大鍵生成処理、１０５〜１０７  拡大鍵、１０８  平文、１０９  初期変換処理、１１０，１１２  拡大鍵加算処理、１１１  非線形変換処理、１１３  最終変換処理、１１４  暗号文、１１５  格納暗号鍵、２０１  入力、２０２  初期変換テーブルＡ、２０３  初期変換テーブルＢ、２０４  出力、３０１，３０４  入力、３０２  線形変換処理Ａ、３０３  線形変換処理Ｂ、３０５  線形変換処理Ｃ、３０６  線形変換処理Ｄ、３０７，３０９  定数、３０８，３１０  出力、４０１  入力、４０２  拡大鍵、４０３  出力、５０１  入力、５０２  非線形変換テーブルＡ、５０３  非線形変換テーブルＢ、５０４  非線形変換テーブルＣ、５０５  非線形変換テーブルＤ、５０６  出力、６０１，６０８，６１５，６１７  入力、６０２  線形逆変換処理Ｅ、６０３  線形変換処理Ｍ、６０４  線形変換処理Ｎ、６０５  線形変換処理Ｋ、６０６  線形変換処理Ｌ、６０７，６１４，６１６，６１８  出力、６０９  線形逆変換処理Ｆ、６１０  線形変換処理Ｉ、６１１  線形変換処理Ｊ、６１２  線形変換処理Ｇ、６１３  線形変換処理Ｈ、７０１，７０３  入力、７０２，７０４  定数、７０５  線形逆変換処理Ａ、７０６  線形逆変換処理Ｂ、７０７，７１０  出力、７０８  線形逆変換処理Ｃ、７０９  線形逆変換処理Ｄ、８０１〜８０８  入力、８０９〜８１６  定数、８１７〜８２４  出力、９０１  入力、９０２  最終変換テーブルＡ、９０３  最終変換テーブルＢ、９０４  出力、１００１，１００３  入力、１００２，１００４  出力、１１０１  ビット拡大処理Ａ、１１０２  ビット拡大処理Ｂ、１１０３  ビット拡大処理Ｃ、１１０４  ビット拡大処理Ｄ、１２０１  鍵初期変換テーブルＡ、１２０２  鍵初期変換テーブルＢ、１２０３  鍵初期変換テーブルＣ、１２０４  鍵初期変換テーブルＤ、１３０１，１３０３，１３０５，１３０７  入力、１３０２  ビット縮小処理Ａ、１３０４  ビット縮小処理Ｂ、１３０６  ビット縮小処理Ｃ、１３０８  ビット縮小処理Ｄ、１３０９〜１３１２  定数、１３１３〜１３１６  ビット成型処理、１３１７〜１３２０  乱数生成処理、１３２１，１３２３，１３２５，１３２７  入力判定処理、１３２２，１３２４，１３２６，１３２８  出力、１４０１，１４０４  拡大鍵、１４０２，１４０３，１４０６  定数、１４０５  変換処理、１４０７  逆変換処理、１５０１  補正係数、１６０１  入力、１６０２  出力、１７０１  入力、１７０２  出力、１８０１  ビット拡大処理Ａ、１８０２  ビット拡大処理Ｂ、１８０３  ビット拡大処理Ｃ、１８０４  ビット拡大処理Ｄ、１９０１  鍵初期変換テーブルＥ、２００１  入力、２００２  ビット縮小処理Ａ、２００３  ビット縮小処理Ｂ、２００４  ビット縮小処理Ｃ、２００５  ビット縮小処理Ｄ、２００６  乱数生成処理、２００７  入力判定処理、２００８  出力、２１０１  鍵加算処理、２２０１  入力Ａ、２２０２  入力Ｂ、２２０３  鍵加算テーブルＡ、２２０４  鍵加算テーブルＢ、２２０５  出力、２３０１，２３０４  入力、２３０２，２３０５  定数、２３０３，２３０６  出力。
【図１】
2010166402.tif 000004
【図２】
2010166402.tif 000005
【図３】
2010166402.tif 000006
【図４】
2010166402.tif 000007
【図５】
2010166402.tif 000008
【図６】
2010166402.tif 000009
【図７】
2010166402.tif 000010
【図８】
2010166402.tif 000011
【図９】
2010166402.tif 000012
【図１０】
2010166402.tif 000013
【図１１】
2010166402.tif 000014
【図１２】
2010166402.tif 000015
【図１３】
2010166402.tif 000016
【図１４】
2010166402.tif 000017
【図１５】
2010166402.tif 000018
【図１６】
2010166402.tif 000019
【図１７】
2010166402.tif 000020
【図１８】
2010166402.tif 000021
【図１９】
2010166402.tif 000022
【図２０】
2010166402.tif 000023
【図２１】
2010166402.tif 000024
【図２２】
2010166402.tif 000025
【図２３】
2010166402.tif 000026
【図２４】
2010166402.tif 000027
【図２５】
2010166402.tif 000028
【図２６】
2010166402.tif 000029
【図２７】
2010166402.tif 000030
【図２８】
2010166402.tif 000031
【図２９】
2010166402.tif 000032
【図３０】
2010166402.tif 000033
【図３１】
2010166402.tif 000034
【図３２】
2010166402.tif 000035
【図３３】
2010166402.tif 000036
【図３４】
2010166402.tif 000037