(57)【特許請求の範囲】
【請求項１】
候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、
前記候補を限定したマスク値に応じて事前計算したテーブルを用いるテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、
前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿した後に、マスク値との排他的論理和演算を行い、
前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿した後に、限定しない候補からランダムに選択したマスク値に対してガロア体上の定数倍演算を行った結果との排他的論理和演算を行い、
前記候補を限定したマスク値の集合は、全てのビットが１である符号語を含む線形符号であり、
マスク値の候補は、いくつかの候補を抽出して排他的論理和演算を行った結果が必ず候補となること、かつ、各マスク値の候補の反転値もマスク値の候補となることを条件として選択する
ことを特徴とする暗号処理装置。
【請求項２】
候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、
入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、
前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿した後に、マスク値との排他的論理和演算を行い、
前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿した後に、限定しない候補からランダムに選択したマスク値に対してガロア体上の定数倍演算を行った結果との排他的論理和演算を行い、
前記ガロア体上の定数倍演算において２のべき乗倍のみを計算して、その結果から必要なもののみ排他的論理和を行い、
前記候補を限定したマスク値の集合は、全てのビットが１である符号語を含む線形符号であり、
マスク値の候補は、いくつかの候補を抽出して排他的論理和演算を行った結果が必ず候補となること、かつ、各マスク値の候補の反転値も候補となることを条件として選択する
ことを特徴とする暗号処理装置。
【請求項３】
候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、
入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、
前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、
前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、マスク値と限定しない候補からランダムに選択したマスク値との排他的論理和演算を行い、さらに、ガロア体上の定数倍演算を行った結果との排他的論理和演算を行い、
前記限定しない候補からランダムに選択したマスク値は暗号化毎に１値のみ生成して、前記ガロア体上の定数倍演算の一部または全てで同一の値を使用し、
前記候補を限定したマスク値の集合は、全てのビットが１である符号語を含む線形符号であり、
マスク値の候補は、いくつかの候補を抽出して排他的論理和演算を行った結果が必ず候補となること、かつ、各マスク値の候補の反転値も候補となることを条件として選択する
ことを特徴とする暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関する。
【背景技術】
【０００２】
ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの共通鍵暗号の変換を行う暗号処理装置では、ＡＳＩＣなどの専用ハードウェアや、ソフトウェアプログラムとして実装される（例えば、非特許文献１参照）。
【０００３】
共通鍵暗号の変換を実装する際には、非線形変換あるいは線形変換である小規模の変換を順番に行っていくので様々な中間値を生じる。
暗号処理を行う際の消費電力は、これら中間値の値に依存しており、この中間値と消費電力との間の依存関係から暗号鍵を抽出するサイドチャネルアタック（ＳＣＡ：Ｓｉｄｅ  Ｃｈａｎｎｅｌ  Ａｔｔａｃｋｓ）が報告されている（例えば、非特許文献２参照）。この依存関係は、中間値のハミング重みや、ハミング距離などを用いて効果的に抽出することができる（例えば、非特許文献３参照）。
【０００４】
このＳＣＡの対策として、内部生成した乱数との演算を行った状態で暗号化の変換を行うマスキング対策技術が知られている。この演算には、暗号処理との親和性の高さから、乱数値との排他的論理和を行う加算マスクを用いる場合が多い。以降では、乱数値を「マスク値」と記し、またマスク値との排他的論理和を行うことを「マスクする」と記す。
【０００５】
マスクする乱数値の乱数性が十分であれば、暗号化の変換過程で生じる中間値と消費電力との依存関係が無くなり、ＳＣＡによる暗号鍵解読を困難にすることができる。例えば、マスキング対策技術の実現方法の１つとして、入出力データをマスクしたまま非線形変換を行うテーブルを事前計算しておき、暗号化毎に利用するテーブルをランダムに切り替える方法がある。このようなマスク付非線形変換テーブルを用いる場合、そのテーブル数を削減するために入出力データをマスクする乱数値の候補を限定する必要がある。この候補を限定した乱数値は、所定の秘匿性を満たす集合となるように選択される（例えば、特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】National Institute of Standards and Technology (NIST), “FIPS PUB 197:Advanced Encryption Standard (AES), Nov.26,2001.”
【非特許文献２】P. C. Kocher, J. Jaffe, and B. Jun, Differential Power Analysis, Crypto '99, Lecture Notes in Computer Science, Vol. 1666(1999), pp.388-397.
【非特許文献３】E. Brier, C. Clavier, and F. Olivier, “Correlation Power Analysis with a Leakage Model,” CHES, pp.16-29, 2004.
【特許文献】
【０００７】
【特許文献１】特開２０００−６６５８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、非線形変換に引き続き行われる線形変換を行う際に、マスク値の集合が変化して、所定の秘匿性を満たさない集合になる可能性がある。特に線形変換としてガロア体上の定数倍を行った場合に異なる集合へと変化する。
【０００９】
本発明は、こうした実情に鑑みてなされたものであり、その目的は、線形変換におけるマスク値の変化による秘匿性の低下を防ぐことができる暗号処理装置を提供することにある。
【課題を解決するための手段】
【００１０】
以下、上記課題を解決するための手段及びその作用効果について説明する。
上記課題を解決する暗号処理装置は、候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、前記候補を限定したマスク値に応じて事前計算したテーブルを用いるテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、前記候補を限定したマスク値の集合は、全てのビットが１である符号語を含む線形符号であることをその要旨としている。
【００１１】
上記構成によれば、ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていないため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。
【００１２】
上記暗号処理装置について、候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、前記ガロア体上の定数倍演算において２のべき乗倍のみを計算して、その結果から必要なもののみ前記排他的論理和を行い、前記候補を限定したマスク値の集合は、全てのビットが１である符号語を含む線形符号であることをその要旨としている。
【００１３】
上記構成によれば、ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていないため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。また、２のべき乗倍（２倍、４倍、８倍、…）のみを計算して、その結果から必要なもののみの排他的論理和を行うことでマスク値が求められる。このため、線形変換において定数倍演算として９倍、１１倍、１３倍、１４倍のそれぞれを独立で計算するよりも処理効率を向上させることができる。
【００１４】
上記暗号処理装置について、候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、前記限定しない候補からランダムに選択したマスク値は暗号化毎に１値のみ生成して、前記ガロア体上の定数倍演算の一部または全てで同一の値を使用し、前記候補を限定したマスク値の集合は、全てのビットが１である符号語を含む線形符号であることが好ましい。
【００１５】
上記構成によれば、ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていないため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。また、暗号化毎に生成した１値のみをマスク値として、ガロア体上の定数倍演算の一部または全てで同一の値を使用する。このため、全て異なる値を使用するよりも処理効率を向上させることができる。
【発明の効果】
【００１６】
本発明によれば、線形変換におけるマスク値の変化による秘匿性の低下を防ぐことができる。
【図面の簡単な説明】
【００１７】
【図１】ＡＥＳの暗号処理を示すフローチャート。
【図２】ＡＥＳのうち１ラウンドを示す図。
【図３】第１の実施形態の暗号処理装置による暗号化を示す図。
【図４】第１の実施形態の暗号処理装置によるＳ−ｂｏｘを示す図。
【図５】第１の実施形態の暗号処理装置によるＭＣにおける２倍演算を示す図。
【図６】第１の実施形態の暗号処理装置によるＭＣにおける３倍演算を示す図。
【図７】第１の実施形態の暗号処理装置によるＭＣの１バイトを示す図。
【図８】第２の実施形態の暗号処理装置によるＭＣにおける２のべき乗倍を示す図。
【図９】第３の実施形態の暗号処理装置によるＭＣにおける２倍演算を示す図。
【発明を実施するための形態】
【００１８】
（第１の実施形態）
以下、図１〜図７を参照して、暗号処理装置の第１の実施形態について説明する。以下では、ＡＥＳ（Ａｄｖａｎｃｅ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）を用いる暗号処理装置への適用例として説明する。なお、適用可能な暗号処理装置はＡＥＳを用いる暗号処理装置に限定されるものではなく、暗号処理において乗算を用いた線形処理を行う暗号処理装置に広く適用可能である。
【００１９】
（ＡＥＳの概要）
図１及び図２に示されるように、暗号処理装置は、ＡＥＳ暗号方式を用いる。ＡＥＳでは、まず１バイト単位での非線形な変換を行うＳｕｂＢｙｔｅｓ（以降、ＳＢと表す）という処理を行う。続いて、１バイト単位で順序の入れ替えを行うＳｈｉｆｔＲｏｗｓ（以降、ＳＲと表す）という処理を行う。続いて、４バイト単位で線形な変換を行うＭｉｘＣｏｌｕｍｎｓ（以降、ＭＣと表す）という処理を行う。続いて、暗号鍵から生成される秘密データ（拡大鍵）との排他的論理和を行うＡｄｄＲｏｕｎｄＫｅｙ（以降、ＡＫと表す）という処理を行う。すなわち、ＡＥＳでは、これらの４つの処理（ＳＢ、ＳＲ、ＭＣ、ＡＫ）を繰り返し行う。
【００２０】
繰り返しの順番は、まず初めに平文データに対してＡＫを行い、続いてＳＢ、ＳＲ、ＭＣ、ＡＫの順序を１ラウンドとして規定回数繰り返し、さらにＳＢ、ＳＲ、ＡＫを行った結果を暗号文として出力する。
【００２１】
ＡＥＳでは、暗号鍵のサイズとして１６バイト（１２８ビット）、２４バイト（１９２ビット）、３２バイト（２５６ビット）のいずれかから選択可能である。そして、それぞれの暗号鍵のサイズに対して前記１ラウンドの繰り返しの規定回数が規定されている。すなわち、暗号鍵のサイズが１６バイトでは１０ラウンド、暗号鍵のサイズが２４バイトでは１２ラウンド、暗号鍵のサイズが３２バイトでは１４ラウンドと規定されている。
【００２２】
ＡＫで用いる秘密データは、図示しない鍵スケジュール部において暗号鍵を入力として出力される複数個の副鍵のことであり、拡大鍵と呼ばれる。
ＡＥＳで行われるＳＢ、ＳＲ、ＭＣ、ＡＫのうち、ＳＢのみ非線形変換であって、ＳＲ、ＭＣ、ＡＫは線形変換である。ＳＢにおける１バイト単位の変換は、Ｓ−ｂｏｘと呼ばれる。
【００２３】
Ｓ−ｂｏｘは、非特許文献１の仕様で規定されており、例えば入力バイトＸが「００」ならば出力バイトＹは「６３」、入力バイトＸが「０１」ならば出力バイトＹは「７Ｃ」を出力する。以降では、このＳ−ｂｏｘをＹ＝Ｓ［Ｘ］と表す。
【００２４】
また、ＭＣは、中間値を４バイト毎に分割し、式（１）に示す行列演算を、多項式Ｇ（ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ＋１を法としたガロア体上の演算で行う。ガロア体は、有限個の元からなる体であって、四則演算が閉じている有限集合のことである。
【００２５】
ここで、式（１）中の記号ｘ０〜ｘ３はそれぞれ入力の１バイトを表す。また、ｙ０〜ｙ３は出力の１バイトを表す。
【００２６】
【数１】
0006371197.tif 000002
ＭＣでは、入力バイトの２倍や３倍のガロア体上の定数倍演算が含まれる。ここで、ＭＣでは式（２）の関係がある。
【００２７】
【数２】
0006371197.tif 000003
すなわち、マスクで秘匿したままのデータに対してそのままＭＣを行うことでマスクによって秘匿された出力が得られる。また、出力時のマスクは、入力時のマスクに対してＭＣを行ったものとなる。
【００２８】
以下では、ＡＥＳのうち、特に暗号化のみを行う暗号処理装置を例として説明する。
（事前準備）
マスク値の候補（マスク候補値Ｍｓ）を、式（３）に示す４候補に限定した場合について説明する。マスク候補値Ｍｓは、全てのビットが１である符号語（ここではＦＦ）を含む線形符号である。
【００２９】
【数３】
0006371197.tif 000004
これらのマスク候補値Ｍｓは、いくつかの候補を抽出して排他的論理和を計算した結果が必ず候補値となること、かつ各マスク候補値Ｍｓの反転値もまた候補値となることを条件として選択している。すなわち、マスク候補値Ｍｓは、線形符号であるため、いくつかの候補を抽出して排他的論理和を計算した結果が必ず候補値となる。また、マスク候補値Ｍｓは、全てのビットが１である符号語を含む線形符号であるため、各マスク候補値Ｍｓの反転値もまた候補値となる。
【００３０】
この条件下では、マスクされた１バイトデータの１値のハミング重みや、マスクされた１バイトデータの２値のハミング距離の期待値が、マスク前のデータに依存せず４となる。このため、統計的な解析を行う差分電力解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）や相関電力解析（ＣＰＡ：Ｃｏｒｒｅｌａｔｉｏｎ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）といった解析が困難となる。
【００３１】
式（４）〜（６）に示すように、Ｓ−ｂｏｘを４つのマスク付テーブルＳ′１〜Ｓ′４として事前計算する。ここで、これらマスク付テーブルＳ′１〜Ｓ′４は、候補を限定したマスク値に応じて事前計算されたテーブルである。
【００３２】
【数４】
0006371197.tif 000005
例えば、３６でマスクされたデータをＳ−ｂｏｘする場合には、テーブルＳ′２を使って変換すると、Ｓ−ｂｏｘした上でＦＦをマスクしたデータが得られる。
【００３３】
（暗号化手順）
まず初めに、図３に示されるように、平文データＰ（０）〜Ｐ（１５）とマスク候補値Ｍｓからランダムに選択したマスク値Ｍａｓｋ（０）〜Ｍａｓｋ（１５）との排他的論理和を計算する。続いて、計算したものと拡大鍵バイトＫ（０）〜Ｋ（１５）との排他的論理和を計算して、結果Ｍ（０）〜Ｍ（１５）を出力する。
【００３４】
このとき、平文データＰ（０）〜Ｐ（１５）は、１６バイトの平文データをバイト単位で表したものであり、平文データＰ（０）を最上位バイト（ＭＳＢ：Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｙｔｅ）側とする。
【００３５】
次に、図４に示されるように、各中間値バイトのマスク値Ｍａｓｋ（０）〜Ｍａｓｋ（１５）の値に応じて、参照するテーブルを決定する。すなわち、マスク値Ｍａｓｋ（ｉ）の値に応じて使うテーブルを選択する。また、使ったテーブルに応じてマスク値Ｍａｓｋ′（ｉ）の値が決まる。ここで、ｉは１６バイトの各バイトを示し、ｉ＝０〜１５である。
【００３６】
例えば、式（８）であれば、結果Ｍ（０）を入力バイトとして、テーブルＳ′２を用いて変換する。
【００３７】
【数５】
0006371197.tif 000006
この結果をＭ′（０）とすると、この中間値Ｍ′（０）はテーブルＳ′２の定義から、マスク値ＦＦでマスクされたものとなる。この新たなマスク値をＭａｓｋ′（０）とする。他のバイトも同様に変換を行う。
【００３８】
ＳＢに続いて、ＳＲとＭＣとを行う。ＭＣの出力バイトを、Ｍ″（０）〜Ｍ″（１５）と表し、それぞれのバイトのマスク値をＭａｓｋ″（０）〜Ｍａｓｋ″（１５）と表す。出力バイトＭ″（０）、Ｍ″（１）、Ｍ″（２）、Ｍ″（３）の４バイトは、ＳＲにより入力バイトＭ′（０）、Ｍ′（５）、Ｍ′（１０）、Ｍ′（１５）を用いて計算する。
【００３９】
（比較例）
式（２）の関係から、マスクされた出力バイトＭ″（０）とそのマスク値Ｍａｓｋ″（０）とは、それぞれ式（９）及び式（１０）によって計算される。
【００４０】
【数６】
0006371197.tif 000007
ここで、式（１０）の計算過程では、入力バイトＭ′（０）の２倍演算の結果である２Ｍ′（０）の中間値と入力バイトＭ′（５）の３倍演算の結果である３Ｍ′（５）の中間値とを計算する必要がある。この入力バイトＭ′（０）の２倍演算の結果である２Ｍ′（０）のマスク値は、２Ｍａｓｋ′（０）で計算され、その集合Ｍｓ′は式（１１）となる。
【００４１】
【数７】
0006371197.tif 000008
集合Ｍｓ′からランダムに選択した値でマスクされた１バイトデータの１値のハミング重みは、マスク前のデータ値に依存して変動するため、統計的な解析を行う差分電力解析（ＤＰＡ）や相関電力解析（ＣＰＡ）といった解析が成立する恐れがある。
【００４２】
（実施例）
暗号処理装置は、マスク値Ｍａｓｋ′（０）でマスクされたＭＣの入力バイトＭ′（０）に対してガロア体上の２倍演算を下記手順で行う。
【００４３】
図５に示されるように、まず、暗号処理装置は、ランダムな１バイト値Ｒｄ（０）を生成する（ステップＳ１）。このランダムな１バイト値Ｒｄ（０）は、候補を限定しない値である（００，０１，０２，…，ＦＥ，ＦＦ）の候補からランダムに選択した値である。
【００４４】
次に、暗号処理装置は、入力バイトＭ′（０）とランダムな１バイト値Ｒｄ（０）との排他的論理和を計算する（ステップＳ２）。ここで、入力バイトＭ′（０）のマスク値Ｍａｓｋ′（０）は、候補が限定されたマスク値であって、（００，３６，Ｃ９，ＦＦ）のいずれかの値である。また、ステップＳ２の結果Ａ２のマスク値は、ランダムな１バイト値Ｒｄ（０）とマスク値Ｍａｓｋ′（０）とを排他的論理和した値（Ｒｄ（０）（＋）Ｍａｓｋ′（０））である。この排他的論理和した値（Ｒｄ（０）（＋）Ｍａｓｋ′（０））は、候補を限定しない値（００，０１，０２，…，ＦＥ，ＦＦ）のいずれかと、候補が限定された値（００，３６，Ｃ９，ＦＦ）のいずれかとの排他的論理和である。この結果は、（００，０１，０２，…，ＦＥ，ＦＦ）のいずれかとなり、すなわち候補を限定しない値（ランダムな１バイト値）となる。なお、「（＋）」は、排他的論理和を示している。
【００４５】
続いて、暗号処理装置は、ステップＳ２の結果Ａ２とマスク値Ｍａｓｋ′（０）との排他的論理和を計算する（ステップＳ３）。ここで、ステップＳ３の結果Ａ３のマスク値は、ランダムな１バイト値Ｒｄ（０）である。
【００４６】
暗号処理装置は、ステップＳ３の結果Ａ３に対して、ガロア体上の２倍演算を行う（ステップＳ４）。ここで、ステップＳ４の結果Ａ４のマスク値は、ランダムな１バイト値Ｒｄ（０）をガロア体上の２倍演算した値（２・Ｒｄ（０））である。
【００４７】
暗号処理装置は、ステップＳ４の結果Ａ４と集合Ｍｓからランダムに選んだ値Ｍａｓｋ′＿ｄ（０）との排他的論理和を計算する（ステップＳ５）。ここで、ステップＳ５の結果Ａ５のマスク値（２・Ｒｄ（０）（＋）Ｍａｓｋ′＿ｄ（０））は、ステップＳ２の結果Ａ２のマスク値と同様に、ランダムな１バイト値である。
【００４８】
暗号処理装置は、ランダムな１バイト値Ｒｄ（０）に対して、ガロア体上の２倍演算する（ステップＳ６）。
暗号処理装置は、ステップＳ５の結果Ａ５とステップＳ６の結果Ａ６との排他的論理和を計算する（ステップＳ７）。ここで、ステップＳ７の結果Ａ７のマスク値は、候補が限定されたマスク値Ｍａｓｋ′＿ｄ（０）である。この候補が限定されたマスク値Ｍａｓｋ′＿ｄ（０）は、（００，３６，Ｃ９，ＦＦ）のいずれかである。ステップＳ７で得られた結果Ａ７を２Ｍ′（０）とする。
【００４９】
この手順で得られる結果２Ｍ′（０）は、マスク値Ｍａｓｋ′＿ｄ（０）でマスクされた値となる。またこの計算過程では、中間値を秘匿するマスク値が、候補が限定されたマスク値Ｍａｓｋ′（０）と、候補を限定しないマスク値Ｍａｓｋ′＿ｄ（０）とのいずれかであって、偏りのある集合となることはない。
【００５０】
同様に、マスク値Ｍａｓｋ′（５）でマスクされたＭＣの入力バイトＭ′（５）に対してガロア体上の３倍演算を下記手順で行う。
図６に示されるように、まず、暗号処理装置は、ランダムな１バイト値Ｒｔ（５）を生成する（ステップＳ１１）。このランダムな１バイト値Ｒｔ（５）は、候補を限定しない値である（００，０１，０２，…，ＦＥ，ＦＦ）の候補からランダムに選択した値である。
【００５１】
次に、暗号処理装置は、入力バイトＭ′（５）とランダムな１バイト値Ｒｔ（５）との排他的論理和を計算する（ステップＳ１２）。ここで、入力バイトＭ′（５）のマスク値は、候補が限定されたマスク値Ｒｔ（５）とマスク値Ｍａｓｋ′（５）とを排他的論理和した値（Ｒｔ（５）（＋）Ｍａｓｋ′（５））である。この排他的論理和した値（Ｒｔ（５）（＋）Ｍａｓｋ′（５））は、ステップＳ２の結果Ａ２のマスク値と同様に、候補を限定しない値（ランダムな１バイト値）となる。
【００５２】
暗号処理装置は、ステップＳ１２の結果Ａ１２とＭａｓｋ′（５）との排他的論理和を計算する（ステップＳ１３）。ここで、ステップＳ１３の結果Ａ１３のマスク値は、ランダムな１バイト値Ｒｔ（５）である。
【００５３】
暗号処理装置は、ステップＳ１３の結果Ａ１３に対して、ガロア体上の３倍演算を行う（ステップＳ１４）。ここで、ステップＳ１３の結果Ａ１３のマスク値は、ランダムな１バイト値Ｒｔ（５）をガロア体上の３倍演算した値（３・Ｒｔ（５））である。
【００５４】
暗号処理装置は、ステップＳ１４の結果Ａ１４と集合Ｍｓからランダムに選んだ値Ｍａｓｋ′＿ｔ（５）との排他的論理和を計算する（ステップＳ１５）。ここで、ステップＳ１５の結果Ａ１５のマスク値（３・Ｒｔ（５）（＋）Ｍａｓｋ′＿ｔ（５））は、ランダムな１バイト値である。
【００５５】
暗号処理装置は、ランダムな１バイト値Ｒｔ（５）に対して、ガロア体上の３倍演算する（ステップＳ１６）。
暗号処理装置は、ステップＳ１５の結果Ａ１５とステップＳ１６の結果Ａ１６との排他的論理和を計算する（ステップＳ１７）。ここで、ステップＳ１７の結果Ａ１７のマスク値は、候補が限定されたマスク値Ｍａｓｋ′＿ｔ（５）である。この候補が限定されたマスク値Ｍａｓｋ′＿ｔ（５）は、（００，３６，Ｃ９，ＦＦ）のいずれかである。ステップＳ１７の結果Ａ１７を３Ｍ′（５）とする。
【００５６】
この手順で得られる結果３Ｍ′（５）は、マスク値Ｍａｓｋ′＿ｔ（５）でマスクされた値となる。またこの計算過程では、中間値を秘匿するマスク値が、候補が限定されたマスク値Ｍａｓｋ′（５）と、候補を限定しないマスク値Ｍａｓｋ′＿ｔ（５）とのいずれかであって、偏りのある集合となることはない。
【００５７】
図７に示されるように、暗号処理装置は、計算した結果である入力バイト２Ｍ′（０）、３Ｍ′（５）を用いて、ＭＣの出力のうちの１バイトである出力バイトＭ″（０）を式（１２）にて計算する。また、暗号処理装置は、出力バイトＭ″（０）のマスク値であるＭａｓｋ″（０）を式（１３）にて計算する。
【００５８】
【数８】
0006371197.tif 000009
暗号処理装置は、マスク値Ｍａｓｋ′＿ｄ（０）、Ｍａｓｋ′＿ｔ（５）、Ｍａｓｋ′（１０）、Ｍａｓｋ′（１５）は全て集合Ｍｓの要素である。集合Ｍｓは線形符号となるように選択したので、式（１２）の計算過程でのマスク値の変化もまた必ず集合Ｍｓの要素である。
【００５９】
従って、差分電力解析（ＤＰＡ）や相関電力解析（ＣＰＡ）といった解析を困難とすることができる。
以上では、入力バイトＭ′（０）の２倍演算と入力バイトＭ′（５）の３倍演算とを例として説明したが、ＳＢの出力の任意の各バイトＭ′（ｉ）に対して、同様の手順で２倍、３倍を計算し、ＭＣの出力を計算することができる。残りの処理は、ＡＫ、ＳＢ、ＳＲ、ＭＣで構成されているため、同様の手順を繰り返し、最終的な出力の前にマスクを外すことで、ＡＥＳの処理を完了することができる。
【００６０】
以上説明したように、第１の実施形態によれば、以下の効果を奏することができる。
（１）ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていない。このため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。
【００６１】
（第２の実施形態）
以下、図８を参照して、暗号処理装置の第２の実施形態について説明する。この実施形態の暗号化装置は、２のべき乗倍のみを計算して、その結果から必要なもののみの排他的論理和を計算する点が上記第１の実施形態と異なっている。以下、第１の実施形態との相違点のみを説明する。
【００６２】
第１の実施形態では、ＭＣにおける２倍演算と３倍演算とのマスクを、それぞれ独立で行うようにした。しかしながら、ＡＥＳの復号化を行う場合には、９倍、１１倍、１３倍、１４倍を行う必要があり、それぞれを独立で行うことで処理効率が低下する可能性がある。
【００６３】
ところで、ガロア体上の定数倍は線形変換であり、式（１４）の関係がある。
【００６４】
【数９】
0006371197.tif 000010
そこで、ガロア体上の任意の定数倍を行いたい場合には、２のべき乗倍（２倍、４倍、８倍・・・）のみを計算して、その結果から必要なもののみの排他的論理和を計算すれば求められる。
【００６５】
図８に示されるように、暗号処理装置は、入力バイトＭ′（０）とランダムな１バイト値Ｒ（０）との排他的論理和を計算する（ステップＳ２１）。ここで、入力バイトＭ′（０）のマスク値は、Ｍａｓｋ′（０）である。
【００６６】
暗号処理装置は、ステップＳ２１の結果とマスク値Ｍａｓｋ′（０）との排他的論理和を計算する（ステップＳ２２）。暗号処理装置は、ステップＳ２２の結果に対して２倍演算する（ステップＳ２３）。
【００６７】
暗号処理装置は、ステップＳ２３の結果と、集合Ｍｓからランダムに選択されたマスク値Ｍａｓｋ′＿ｄ（０）との排他的論理和を計算する（ステップＳ２４）。暗号処理装置は、ランダムな１バイト値Ｒ（０）に対して２倍演算する（ステップＳ２５）。暗号処理装置は、ステップＳ２４の結果とステップＳ２５の結果との排他的論理和を計算する（ステップＳ２６）。ここで、ステップＳ２６の結果２Ｍ′（０）のマスク値は、Ｍａｓｋ′＿ｄ（０）である。
【００６８】
暗号処理装置は、ステップＳ２３の結果に対して２倍演算する（ステップＳ２７）。暗号処理装置は、ステップＳ２７の結果と、集合Ｍｓからランダムに選択されたマスク値Ｍａｓｋ′＿ｑ（０）との排他的論理和を計算する（ステップＳ２８）。
【００６９】
暗号処理装置は、ステップＳ２５の結果に対して２倍演算する（ステップＳ２９）。暗号処理装置は、ステップＳ２８の結果とステップＳ２９の結果との排他的論理和を計算する（ステップＳ３０）。ここで、ステップＳ３０の結果４Ｍ′（０）のマスク値は、Ｍａｓｋ′＿ｑ（０）である。
【００７０】
暗号処理装置は、ステップＳ２７の結果に対して２倍演算する（ステップＳ３１）。暗号処理装置は、ステップＳ３１の結果と、集合Ｍｓからランダムに選択されたマスク値Ｍａｓｋ′＿ｏ（０）との排他的論理和を計算する（ステップＳ３２）。
【００７１】
暗号処理装置は、ステップＳ２９に対して２倍演算する（ステップＳ３３）。暗号処理装置は、ステップＳ３２の結果とステップＳ３３の結果との排他的論理和を計算する（ステップＳ３４）。ここで、ステップＳ３４の結果８Ｍ′（０）のマスク値は、Ｍａｓｋ′＿ｏ（０）である。
【００７２】
以上説明したように、第２の実施形態によれば、第１の実施形態の効果に加えて、以下の効果を奏することができる。
（２）２のべき乗倍（２倍、４倍、８倍、…）のみを計算して、その結果から必要なもののみの排他的論理和を行うことでマスク値が求められる。このため、ＭＣにおいて９倍、１１倍、１３倍、１４倍のそれぞれを独立で計算するよりも処理効率を向上させることができる。
【００７３】
（第３の実施形態）
以下、図９を参照して、暗号処理装置の第３の実施形態について説明する。この実施形態の暗号化装置は、ガロア体の定数倍演算時にランダムな値の生成を１度だけに限定し、このランダムな値を他でも再利用する点が上記第１の実施形態と異なっている。以下、第１の実施形態との相違点のみを説明する。
【００７４】
第１の実施形態では、ガロア体の定数倍演算を行うバイト毎に乱数を生成した。しかしながら、第３の実施形態は、ガロア体の定数倍演算時にランダムな値の生成を１度だけに限定し、このランダムな値を他でも再利用する。
【００７５】
平文データからＳＢの出力Ｍ′（０）〜Ｍ′（１５）と、そのマスク値Ｍａｓｋ′（０）〜Ｍａｓｋ′（１５）を生成する過程は、第１の実施例と同じである。
図９に示されるように、暗号処理装置は、ＭＣに含まれるガロア体の２倍演算を行うにあたって、ランダムな１バイト値Ｒを生成する（ステップＳ４１）。
【００７６】
暗号処理装置は、ＳＢの出力Ｍ′（０）〜Ｍ′（１５）それぞれと、ランダムな１バイト値Ｒとの排他的論理和を計算する（ステップＳ４２−０，Ｓ４２−１，Ｓ４２−２，…）。暗号処理装置は、ステップＳ４２の各バイトの結果に対して、ガロア体上の２倍演算を行う（ステップＳ４３−０，Ｓ４３−１，Ｓ４３−２，…）。
【００７７】
暗号処理装置は、ステップＳ４３の各バイトの結果と、バイト毎に独立に集合Ｍｓから選択したマスク値Ｍａｓｋ′＿ｄ（０）〜Ｍａｓｋ′＿ｄ（１５）との排他的論理和を計算する（ステップＳ４４−０，Ｓ４４−１，Ｓ４４−２，…）。
【００７８】
暗号処理装置は、マスク値Ｍａｓｋ′（０）〜Ｍａｓｋ′（１５）とランダムな１バイト値Ｒとの排他的論理和をそれぞれ計算する（ステップＳ４５−０，Ｓ４５−１，Ｓ４５−２，…）。暗号処理装置は、ステップＳ４５の結果に対してガロア体上の２倍演算を行う（ステップＳ４６−０，Ｓ４６−１，Ｓ４６−２，…）。
【００７９】
暗号処理装置は、ステップＳ４４の各バイトの結果と、ステップＳ４６の各バイトの結果との排他的論理和を計算する（ステップＳ４７）。ステップＳ４７の結果を、２Ｍ′（０）〜２Ｍ′（１５）とする。
【００８０】
上記手順で計算した結果２Ｍ′（０）〜２Ｍ′（１５）は、それぞれステップＳ４４で使用したマスク値Ｍａｓｋ′＿ｄ（０）〜Ｍａｓｋ′＿ｄ（１５）によって秘匿された値となる。
【００８１】
このように、ランダムな１バイト値の生成をランダムな１バイト値Ｒだけに限定することができる。このため、ソフトウェアで乱数を生成する場合等の乱数生成負荷が高い場合に、全体の処理負荷を軽減することができる。
【００８２】
以上説明したように、第３の実施形態によれば、第１の実施形態の効果に加え、以下の効果を奏することができる。
（３）暗号化毎に生成した１値のみをマスク値として、ガロア体上の定数倍演算の全てで同一の値（Ｒ）を使用する。このため、全て異なる値を使用するよりも処理効率を向上させることができる。
【００８３】
なお、上記実施形態は、これを適宜変更した以下の形態にて実施することもができる。
・上記各実施形態では、マスク値の候補を４値としたが、これらに限らずすべてのビットが１である符号語を含む線形符号であれば、４値よりも大きい２の累乗数である、８，１６，３２，６４，１２８，２５６でも良い。なお、上記各実施形態で示したＡＥＳの場合は、８値、１６値、６４値、１２８値のものが採用可能である。
【００８４】
・上記第３の実施形態では、ランダムな１バイト値Ｒの共有範囲を全ＭＣで共通とした。しかしながら、ランダムな１バイト値Ｒの共有範囲を特定の数バイトに限定することも可能である。
【符号の説明】
【００８５】
Ｋ…拡大鍵、Ｍ（ｉ）…入力、Ｍ′（ｉ）…出力（結果）又は入力、Ｍａｓｋ（ｉ），Ｍａｓｋ′（ｉ）…マスク値、Ｒ…ランダムな１バイト値。
【図１】
0006371197.tif 000011
【図２】
0006371197.tif 000012
【図３】
0006371197.tif 000013
【図４】
0006371197.tif 000014
【図５】
0006371197.tif 000015
【図６】
0006371197.tif 000016
【図７】
0006371197.tif 000017
【図８】
0006371197.tif 000018
【図９】
0006371197.tif 000019