(57)【要約】ＡＥＳ暗号に対する電力解析攻撃対策として、合成体上の逆元計算を用いてＳ−Ｂｏｘを実装したマスキング法を用いると、最大論理段数が大きくなり処理速度が低下するという問題があった。鍵を用いて平文から暗号文を生成する暗号化装置（１）は、前記鍵によって予め定められた処理がされた入力データに対して、乱数に依存して決まる予め定められた入力マスク値が加算されたランダム化入力データと前記入力マスク値とを受け付けて、前記入力マスク値の逆元である出力マスク値が、前記入力データの逆元に対して加算されたランダム化出力データを生成するランダム化８ビット逆元計算部（１０１）を備えており、生成された当該ランダム化出力データから暗号文を生成する。
2008146482.tif 000002
【特許請求の範囲】
【請求項１】
鍵を用いて平文から暗号文を生成する暗号化装置であって、
乱数を生成する乱数生成部と、
前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、
前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、
を備えることを特徴とする暗号化装置。
【請求項２】
前記第１のランダム化逆元データ生成部は、
前記ランダム化入力データと前記入力マスク値とに対して予め定められた第１のべき数によるべき乗計算を行い、第１のべき乗ランダム化入力データと第１のべき乗入力マスク値とをそれぞれ各べき乗計算により生成する第１のべき乗計算部と、
前記ランダム化入力データと前記入力マスク値とから、予め定められた補正データを生成する補正データ生成部と、
生成された前記補正データを、計算された前記第１のべき乗ランダム化入力データに加算し、副ランダム化入力データを生成する加算部と、
前記副ランダム化入力データと前記第１のべき乗入力マスク値とを受け付けて、当該第１のべき乗入力マスク値の予め定められた第２の有限体における逆元であるマスク値が、前記副ランダム化入力データの当該第２の有限体における逆元に加算されたランダム化副出力データを生成する第２のランダム化逆元データ生成部と、
前記ランダム化副出力データと前記ランダム化入力データと前記入力マスク値と前記第１のべき乗入力マスク値とから、前記ランダム化出力データを生成するランダム化出力データ生成部と
を備えることを特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記ランダム化出力データ生成部は、
前記ランダム化入力データと前記入力マスク値とに対して予め定められた第２のべき数によるべき乗計算を行い、第２のべき乗ランダム化入力データと第２のべき乗入力マスク値とを各べき乗計算によってそれぞれ生成する第２のべき乗計算部と、
前記第１のべき乗入力マスク値に対して前記第２の有限体上の逆元計算を行い、当該第１のべき乗入力マスク値の前記第２の有限体における逆元である逆元べき乗入力マスク値を生成する逆元演算部と、
前記ランダム化副出力データと前記第２のべき乗ランダム化入力データと前記第２のべき乗入力マスク値と前記逆元べき乗入力マスク値とから前記ランダム化出力データを生成するランダム化出力データ生成部と
を備えることを特徴とする請求項２に記載の暗号化装置。
【請求項４】
当該暗号化装置は、前記平文に対してＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号の暗号化処理を行い、ＡＥＳ暗号の暗号文を生成し、
前記入力データの逆元は、ＡＥＳ暗号のＳｂｏｘテーブルと等価である逆元計算およびアフィンのうちの逆元計算が前記入力データにされた計算結果である、
ことを特徴とする請求項１に記載の暗号化装置。
【請求項５】
前記ランダム化入力データ生成部は、
前記平文から、第１の入力マスク値が加算された第１のランダム化入力データを生成する第１部分と、
前記第１のランダム化逆元データ生成部により生成された第（ｔ−１）のランダム化出力データを受け付けて、前記第（ｔ−１）の出力マスク値から決まる第ｔの入力マスク値が加算された第ｔのランダム化入力データ（２≦ｔ≦Ｊ、Ｊは２以上の予め定められた整数）を生成する第２部分とを備え、
当該暗号化装置は、前記乱数から前記第１〜第Ｊの入力マスク値を生成するマスク値生成部を更に備え、
前記第１のランダム化逆元データ生成部は、前記第１部分により生成された前記第１のランダム化入力データと、生成された前記第１の入力マスク値とから前記第１のランダム化出力データを生成すると共に、前記第２部分により生成された前記第ｔのランダム化入力データと、生成された前記第ｔの入力マスク値とから前記第ｔのランダム化出力データを生成し（２≦ｔ≦Ｊ）、
前記出力データ処理部は、生成された第Ｊのランダム化出力データから前記暗号文を生成する、
ことを特徴とする請求項１に記載の暗号化装置。
【請求項６】
鍵を用いて暗号文から復号文を生成する復号化装置であって、
乱数を生成する乱数生成部と、
前記暗号文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記暗号文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、
前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記復号文を生成する出力データ処理部と、
を備えることを特徴とする復号化装置。
【請求項７】
鍵を用いて平文から暗号文を生成する暗号化方法であって、
乱数を生成する乱数生成ステップと、
前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成ステップと、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成ステップと、
前記第１のランダム化逆元データ生成ステップで生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、
を備えることを特徴とする暗号化方法。
【請求項８】
鍵を用いて平文から暗号文を生成する集積回路であって、
乱数を生成する乱数生成部と、
前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、
前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理を実行する際の電力消費量を計測することで、暗号モジュールに埋め込まれている暗号鍵を解析する攻撃方法に対して安全な暗号化装置、復号化装置、暗号化方法、及び集積回路に関する。
【背景技術】
【０００２】
近年、ハードウェアあるいはソフトウェアで実装された暗号モジュールが、暗号処理を行う際の副情報を手がかりにして、暗号鍵の解析を行う解読法が各種考案されている。例えば、タイミング攻撃と呼ばれる解析方法では、暗号モジュールが暗号処理に要する時間が、暗号処理に用いている暗号鍵の値により、わずかではあるが異なることを利用して、暗号鍵の解析を行う。即ち、タイミング攻撃においては、暗号処理を行う際の処理時間という副情報を利用して、暗号鍵の解読を行っている。そのような解読法の中でも、暗号処理を行う際の電力消費量を副情報として、解読を行う解読方法としては、Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  ＡｎａｌｙｓｉｓやＤｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓといった各種の方法が考案されている。これらの解読法は、近年、高性能な計測機器が安価で手に入るようになった背景もあって、ＩＣカードのような暗号が実装された実際の製品に対しても解析が可能であることが報告されている。また、暗号処理を行う際に、暗号モジュールから発生する電磁波強度を副情報として解読する方法など数々の解析方法が考案されている。以下の記述では、暗号処理時における暗号モジュールの電力消費量を手がかりにして、暗号鍵を解析する解読方法を総称して、「電力解析攻撃」と呼ぶことにする。以下では、電力解析攻撃を例にして説明を行うが、本発明は、副情報を用いたその他の解析方法に対しても同様に有効である。即ち、本発明は、電力解析攻撃のみならず、暗号処理中に暗号モジュールから発生する副情報を利用して鍵の推定を行う解析方法であれば適用可能である。【０００３】
電力解析攻撃は、暗号モジュールの電力消費量と暗号処理途中の中間値との間に相関があることを利用して、鍵の解析を行う。従って、電力解析攻撃に対する対策としては、暗号処理途中の中間値を、暗号モジュール内部で生成した乱数によってランダム化することで電力消費量と中間値との相関関係をわかりにくくすることが考えられる。このように、暗号処理の中間値をランダム化することを、中間値を「マスクする」と呼ぶ。また、中間値をマスクすることにより、電力解析攻撃による鍵解析を困難にする方法を総称して「マスキング法」と呼ぶ。【０００４】
特許文献１に記載のマスキング法では、米国標準暗号ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号に対するマスキング法が開示されている（従来技術１と呼ぶ）。【０００５】
（従来技術１の概要）
従来技術１の方法によると、ＤＥＳ暗号で用いるデータ変換用テーブルＳｂｏｘを、暗号モジュール内部で生成する乱数に基づいてランダム化したランダム化Ｓｂｏｘテーブルを、暗号処理に先立って作成し、一時的に保管する。暗号処理に、このランダム化Ｓｂｏｘテーブルを用いることで、暗号処理の中間値はマスクされ、電力解析攻撃は困難になる。ここで、従来技術１においては、ランダム化Ｓｂｏｘテーブルを一時記憶するためのＲＡＭが必要になる。従って、ＲＡＭ容量に厳しい制約のある場合には、従来技術１は使用できないという問題がある。また、暗号モジュールをハードウェアで実装する場合には、一般にＳｂｏｘテーブルは、論理回路で実装されることが多い。従って、ランダム化Ｓｂｏｘテーブルを作成することができないので、従来技術１は使用できないという問題がある。【０００６】
（従来技術２の概要）
非特許文献１に記載のマスキング法では、米国次世代標準暗号ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号に対するマスキング法が開示されている（従来技術２と呼ぶ）。従来技術２は、Ｓｂｏｘテーブルを論理回路で実装でき、かつ、従来技術１のようにランダム化Ｓｂｏｘテーブルを作成する必要がないので、ハードウェア実装に適している。以下、その概要について説明する。【０００７】
ＡＥＳ暗号のＳｂｏｘテーブルは、拡大体ＧＦ（２＾８）上の逆元計算（“Ｘ＾Ｙ”は、「ＸのＹ乗」を示す）と所定のアフィン変換を行う処理と等価であることが知られている。また、拡大体ＧＦ（２＾８）上の元Ｘに対する逆元計算を回路で実現する方法として以下のような既存方法がある。【０００８】
（１）ＸをＧＦ（２＾８）と同型な合成体ＧＦ（（（２＾２）＾２）＾２）上の元Ａに変換する。
（２）前記合成体上でＡの逆元Ａ＾（−１）を計算する。
（３）Ａ＾（−１）を拡大体上の元に逆変換して、Ｘ＾（−１）を求める。【０００９】
この方法では、逆元計算を合成体上で行うことで、小さな回路規模で逆元計算を実装することができる。【００１０】
ＡＥＳ暗号のＳｂｏｘテーブルを上記のような逆元計算とアフィン変換によって実装してマスキング法を適用すれば、小さな回路規模で、電力解析攻撃に対する耐性を高めることができる。このとき、逆元計算部分にどのようにしてマスキングを施すかが、ポイントとなる。以下では、従来技術２における、逆元計算部分のマスキング方法について簡単に説明する。【００１１】
図１〜７は、従来技術２に係る暗号化装置に設けられたランダム化８ビット逆元計算部８１を示す図である。【００１２】
＜ランダム化８ビット逆元計算部８１＞
図１は、従来技術２におけるランダム化８ビット逆元計算部８１の構成を示したブロック図である。ランダム化８ビット逆元計算部８１は、マスクされた逆元計算対象データＸ（８ビット）と、マスクデータＲ（８ビット）、計算用乱数ｒ（４ビット）を入力として、逆元計算を行い、マスクされた逆元計算結果Ｙ（８ビット）を出力する。ここで、Ｘは、マスクデータＲによってマスクをされた状態のデータであり、Ｘ＝Ｍ（＋）Ｒとして表される。ここで、Ｍ（８ビット）はマスクされる前のデータであり、「（＋）」はビットごとの排他的論理和演算を表す。このとき、Ｙは、Ｙ＝｛Ｍ＾（−１）｝（＋）Ｒとなる。即ち、ランダム化８ビット逆元計算部８１は、ＲによってマスクされたＭを入力として、逆元を計算し、その結果Ｍ＾（−１）を、Ｒでマスクされた状態で出力する処理である。即ち、暗号処理の中間値であるＭに対しては、ランダムなマスクデータＲによってマスクされた状態で逆元計算が行われるため、電力解析攻撃は困難となる。【００１３】
ランダム化８ビット逆元計算部８１の処理は、図１に示す通り、合成体ＧＦ（（（２＾２）＾２）＾２）上の１７乗計算を行う１７乗計算部８１０、８１２と、４ビット補正項計算部８１１（図２）と、４ビット出力計算部８１６、８１７（図３）と、４ビットの排他的論理和演算を行う排他的論理和部８１３、８１４、８１８、８１９と、ランダム化４ビット逆元計算部８１５（図４）とから構成される。【００１４】
ここで、４ビット補正項計算部８１１は、図２に示す通り、合成体ＧＦ（（２＾２）＾２）上の乗算を行う４ビット乗算部８１１ａ、８１１ｂと、４ビットの排他的論理和演算を行う排他的論理和部８１１ｃ、８１１ｄとからなる処理を行う。なお、合成体ＧＦ（（２＾２）＾２）を２次拡大したものが、合成体ＧＦ（（（２＾２）＾２）＾２）である。【００１５】
また、４ビット出力計算部８１６、８１７は、図３に示す通り、合成体ＧＦ（（２＾２）＾２）上の乗算を行う４ビット乗算部８１６ａ、８１６ｂ、８１６ｃ、８１６ｄと、４ビットの排他的論理和演算を行う排他的論理和部８１６ｅ、８１６ｆ、８１６ｇ、８１６ｈ、８１６ｉ、８１６ｊとからなる処理を行う。【００１６】
また、ランダム化４ビット逆元計算部８１５（図４）の処理は、図４に示す通り、合成体ＧＦ（（２＾２）＾２）上の５乗計算を行う５乗計算部８２０、８２２と、２ビット補正項計算部８２１（図５）と、２ビット出力計算部８２６、８２７（図６）と、２ビットの排他的論理和演算を行う排他的論理和部８２３、８２４、８２８、８２９と、ランダム化２ビット逆元計算部８２５（図７）とから構成される。【００１７】
ここで、２ビット補正項計算部８２１（図４、図５）は、図５に示す通り、有限体ＧＦ（２＾２）上の乗算を行う２ビット乗算部８２１ａ、８２１ｂと、２ビットの排他的論理和演算を行う排他的論理和部８２１ｃ、８２１ｄとからなる処理を行う。なお、有限体ＧＦ（２＾２）を２次拡大したものが、合成体ＧＦ（（２＾２）＾２）である。【００１８】
また、２ビット出力計算部８２６、８２７（図６、図４）は、図６に示す通り、有限体ＧＦ（２＾２）上の乗算を行う２ビット乗算部８２６ａ、８２６ｂ、８２６ｃ、８２６ｄと、２ビットの排他的論理和演算を行う排他的論理和部８２６ｅ、８２６ｆ、８２６ｇ、８２６ｈ、８２６ｉ、８２６ｊとからなる処理を行う。【００１９】
また、ランダム化２ビット逆元計算部８２５（図７、図４）の処理は、図７に示す通り、１ビットの排他的論理和演算を行う排他的論理和部８２５ａ、８２５ｂからなる処理を行う。【００２０】
以上のように、従来技術２に係る暗号化装置に設けられたランダム化８ビット逆元計算部８１（図１）は、内部でランダム化４ビット逆元計算部８１５、ランダム化２ビット逆元計算部８２５を再帰的に実行する構成をとっており、この構成により、他の従来技術と比べて比較的小さな回路規模での実装が可能となる。【００２１】
従来技術２においては、このような、ランダム化８ビット逆元計算部８１（図１）が設けられて、逆元計算とアフィン変換とによりＡＥＳ暗号のＳｂｏｘテーブルが実装されることにより、ハードウェア実装に適するようにされた暗号化装置が開示されている。
【非特許文献１】森岡澄夫、秋下徹、「合成体を用いたＡＥＳ  Ｓ−Ｂｏｘ回路に対するＤＰＡ攻撃」、コンピュータセキュリティシンポジウム２００４予稿集（平成１６年１０月）
【非特許文献２】Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ  Ｐｕｂｌｉｃａｔｉｏｎ  １９７，「Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  ｔｈｅ  ＡＤＶＡＮＣＥＤ  ＥＮＣＲＹＰＴＩＯＮ  ＳＴＡＮＤＡＲＤ（ＡＥＳ）」，Ｎｏｖｅｍｂｅｒ  ２６，２００１
【特許文献１】米国特許第６２９５６０６号明細書
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、前記従来技術２においては、先ほど述べた、ランダム化８ビット逆元計算部８１（図１）が有する再帰的な構成のために、最大論理段数が大きくなってしまうという課題を有していた。従来技術２のランダム化８ビット逆元計算部８１を、回路で実現したときのクリティカルパスとその最大論理段数を見積もると以下のようになる。【００２３】
ランダム化８ビット逆元計算部８１（図１〜図７）のクリティカルパスは、以下の通りとなる。【００２４】
まず、図１において、クリティカルパスは、次の通りである。【００２５】
１７乗計算部８１０  ⇒  排他的論理和部８１３  ⇒  排他的論理和部８１４  ⇒  ランダム化４ビット逆元計算部８１５（図４）  ⇒  ４ビット出力計算部８１７（図３）  ⇒  排他的論理和部８１８  ⇒  排他的論理和部８１９【００２６】
ここで、このパスの途上にある、４ビット出力計算部８１７（図３）とランダム化４ビット逆元計算部８１５（図４）との内部におけるクリティカルパスは、次のようになる。【００２７】
まず、４ビット出力計算部８１７（図３）の内部におけるクリティカルパスは、以下の通りとなる。【００２８】
４ビット乗算部８１６ａ  ⇒  排他的論理和部８１６ｅ  ⇒  排他的論理和部８１６ｆ  ⇒  排他的論理和部８１６ｉ  ⇒  排他的論理和部８１６ｊ【００２９】
また、ランダム化４ビット逆元計算部８１５（図４）の内部におけるクリティカルパスは、以下の通りとなる。【００３０】
５乗計算部８２０  ⇒  排他的論理和部８２３  ⇒  排他的論理和部８２４  ⇒  ランダム化２ビット逆元計算部８２５（図７）  ⇒  ２ビット出力計算部８２７（図６）  ⇒  排他的論理和部８２８  ⇒  排他的論理和部８２９【００３１】
このパスの途上には、２ビット出力計算部８２７（図６）と、ランダム化２ビット逆元計算部８２５（図７）とがある。これらの内部におけるクリティカルパスは、それぞれ、以下の通りである。【００３２】
まず、２ビット出力計算部８２７（図６）の内部におけるクリティカルパスは、以下の通りとなる。【００３３】
２ビット乗算部８２６ａ  ⇒  排他的論理和部８２６ｅ  ⇒  排他的論理和部８２６ｆ  ⇒  排他的論理和部８２６ｉ  ⇒  排他的論理和部８２６ｊ【００３４】
そして、ランダム化２ビット逆元計算部８２５（図７）の内部におけるクリティカルパスは、以下の通りとなる。【００３５】
排他的論理和部８２５ａ  ⇒  排他的論理和部８２５ｂ【００３６】
以上より、ランダム化８ビット逆元計算部８１（図１）の最大論理段数は、以下の処理をシリアルに処理したときの論理段数になる。【００３７】
１７乗計算×１回
５乗計算×１回
４ビット乗算×１回
２ビット乗算×１回
排他的論理和演算×１８回【００３８】
なお、ここで、「排他的論理和演算×１８回」とあるうちの１８は、１８＝４＋４＋４＋４＋２の計算により得られるものである。【００３９】
以上の通り、従来技術２は、最大論理段数が大きくなってしまうという課題があった。【００４０】
本発明は、前記従来技術２の暗号処理上の課題を解決するもので、従来技術２と同様に合成体ＧＦ（（（２＾２）＾２）＾２）上の逆元演算を用いたＳｂｏｘテーブルの実装法を用いながら、従来技術２よりも、最大論理段数が削減可能な、暗号化装置を提供することを目的とする。
【課題を解決するための手段】
【００４１】
上記課題を解決するために、本発明では、次の構成を採る。【００４２】
すなわち、鍵を用いて平文から暗号文を生成する暗号化装置であって、乱数に依存して決まる予め定められた入力マスク値が、前記鍵によって予め定められた処理がされた入力データに加算されたランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部を備え、生成された前記ランダム化出力データから前記暗号文を生成する暗号化装置の構成を採る。【００４３】
この暗号化装置によると、出力マスク値が入力マスク値の逆元であり、段数が少ない簡単な構成の暗号化装置を実現できる。
【発明の効果】
【００４４】
本発明によれば、段数が少ない簡単な構成の暗号化装置を実現できる。
【図面の簡単な説明】
【００４５】
【図１】図１は、従来技術に係るランダム化８ビット逆元計算部８１の構成を示すブロック図である。
【図２】図２は、従来技術に係る４ビット補正項計算部８１１の構成を示すブロック図である。
【図３】図３は、従来技術に係る４ビット出力計算部８１６、８１７の構成を示すブロック図である。
【図４】図４は、従来技術に係るランダム化４ビット逆元計算部８１５の構成を示すブロック図である。
【図５】図５は、従来技術に係るランダム化２ビット補正項計算部８２１の構成を示すブロック図である。
【図６】図６は、従来技術に係る２ビット出力計算部８２６、８２７の構成を示すブロック図である。
【図７】図７は、従来技術に係るランダム化２ビット逆元計算部８２５の構成を示すブロック図である。
【図８】図８は、本発明の実施の形態に係る暗号化装置１の構成を示すブロック図である。
【図９】図９は、本発明の実施の形態に係る暗号化部１ａの構成を示すブロック図である。
【図１０】図１０は、本発明の実施の形態に係るランダム化Ｒｏｕｎｄ＿ｎ１２の構成を示すブロック図である。
【図１１】図１１は、本発明の実施の形態に係るランダム化Ｒｏｕｎｄ＿１０  １３の構成を示すブロック図である。
【図１２】図１２は、本発明の実施の形態に係るランダム化ＳｕｂＢｙｔｅｓ１２０、１３０の構成を示すブロック図である。
【図１３】図１３は、本発明の実施の形態に係るランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐの構成を示すブロック図である。
【図１４】図１４は、本発明の実施の形態に係るランダム化８ビット逆元計算部１０１の構成を示すブロック図である。
【図１５】図１５は、本発明の実施の形態に係る１７乗計算部１１０、１１２の構成を示すブロック図である。
【図１６】図１６は、本発明の実施の形態に係る４ビット補正項計算部１１１の構成を示すブロック図である。
【図１７】図１７は、本発明の実施の形態に係る１６乗計算部１１５、１１７の構成を示すブロック図である。
【図１８】図１８は、本発明の実施の形態に係る４ビット出力計算部１１８、１１９の構成を示すブロック図である。
【図１９】図１９は、本発明の実施の形態に係る４ビット乗算部２０の構成を示すブロック図である。
【図２０】図２０は、本発明の実施の形態に係る２ビット乗算部２１の構成を示すブロック図である。
【図２１】図２１は、本発明の実施の形態に係る４ビット逆元計算部１１６の構成を示すブロック図である。
【図２２】図２２は、本発明の実施の形態に係る２ビット逆元計算部１４２の構成を示すブロック図である。
【図２３】図２３は、本発明の実施の形態に係るランダム化４ビット逆元計算部１１４の構成を示すブロック図である。
【図２４】図２４は、本発明の実施の形態に係る５乗計算部１４１、１５０、１５２の構成を示すブロック図である。
【図２５】図２５は、本発明の実施の形態に係る２ビット補正項計算部１５１の構成を示すブロック図である。
【図２６】図２６は、本発明の実施の形態に係る４乗計算部１５５、１５７の構成を示すブロック図である。
【図２７】図２７は、本発明の実施の形態に係る２ビット出力計算部１５８、１５９の構成を示すブロック図である。
【図２８】図２８は、本発明の実施の形態に係るランダム化２ビット逆元計算部１５４の構成を示すブロック図である。
【図２９】図２９は、本発明の実施の形態に係る乱数更新部１７の構成を示すブロック図である。
【図３０】図３０は、本発明の実施の形態に係る８ビット逆元計算部１７１の構成を示すブロック図である。
【図３１】図３１は、本発明の実施の形態に係る復号化装置３の構成を示すブロック図である。
【図３２】図３２は、本発明の実施の形態に係る復号化部３ａの構成を示すブロック図である。
【図３３】図３３は、本発明の実施の形態に係るランダム化ＩｎｖＲｏｕｎｄ＿ｎ  ３２の構成を示すブロック図である。
【図３４】図３４は、本発明の実施の形態に係るランダム化ＩｎｖＲｏｕｎｄ＿０  ３３の構成を示すブロック図である。
【図３５】図３５は、本発明の実施の形態に係るランダム化ＩｎｖＳｕｂＢｙｔｅｓ３３１の構成を示すブロック図である。
【図３６】図３６は、本発明の実施の形態に係るランダム化ＩｎｖＳ−Ｂｏｘ３３１ａ〜３３１ｐの構成を示すブロック図である。
【図３７】図３７は、本発明の実施の形態に係る乱数更新部３７の構成を示すブロック図である。
【図３８】図３８は、暗号化装置１および暗号化装置１が有する部分の間の包含関係と、それら全体および部分の間における入出力データを示す図である。
【符号の説明】
【００４６】
１    暗号化装置
１ａ    暗号化部
１ｂ，３ｂ    ラウンド鍵生成部
１ｃ，３ｃ    鍵保管部
１０，３０    マスク処理部
１１，１２３，１３２，３１，３２２，３３２    ＡｄｄＲｏｕｎｄＫｅｙ
１２Ｘ    ランダム化Ｒｏｕｎｄ＿ｔ
１２    ランダム化Ｒｏｕｎｄ＿ｎ
１３    ランダム化Ｒｏｕｎｄ＿１０
１４，３４    アンマスク処理部
１５，３５    乱数生成部
１６，３６    乱数一時記憶部
１７，３７    乱数更新部
１００，１０３，１７０，３０３    合成体変換部
１０１    ランダム化８ビット逆元計算部
１０２，１７２    拡大体変換兼行列変換部
１０４，１１０ａ，１１０ｅ，１１１ｃ，１１３，１１５ａ，１１８ｃ，１１８ｅ，１４０，１４２ａ，１５０ａ，１５０ｅ，１５１ｃ，１５３，１５４ｃ，１５５ａ，１５８ｃ，１５８ｅ，１７１ａ，２０４，２０５，２０７，２１４，２１５，２１６    排他的論理和部
１１０Ｘ，１１０，１１２，１７１ｂ    １７乗計算部
２０，１１０ｂ，１１０ｃ，１１０ｄ，１１１ａ，１１１ｂ，１１８ａ，１１８ｂ，１１８ｄ，１７１ｄ，１７１ｅ    ４ビット乗算部
１１１    ４ビット補正項計算部
１１４    ランダム化４ビット逆元計算部
１１５Ｘ，１１５，１１７    １６乗計算部
１１６，１７１ｃ    ４ビット逆元計算部
１１８Ｘ，１１８，１１９    ４ビット出力計算部
１２０Ｘ，１２０，１３０    ランダム化ＳｕｂＢｙｔｅｓ
１２１Ｘ，１２０ａ，１２０ｂ，１２０ｃ，１２０ｐ    ランダム化Ｓ−Ｂｏｘ
１２１，１３１    ＳｈｉｆｔＲｏｗｓ
１２２    ＭｉｘＣｏｌｕｍｎｓ
１４１Ｘ，１４１，１５０，１５２    ５乗計算部
１４２，１５６    ２ビット逆元計算部
２１，１４３，１４４，１５０ｂ，１５０ｃ，１５０ｄ，１５１ａ，１５１ｂ，１５８ａ，１５８ｂ，１５８ｄ，２００，２０１，２０２，２０３，２０６    ２ビット乗算部
１５１    ２ビット補正項計算部
１５４    ランダム化２ビット逆元計算部
１５５Ｘ，１５５，１５７    ４乗計算部
１５８Ｘ，１５８，１５９    ２ビット出力計算部
１７１    ８ビット逆元計算部
２１０，２１１，２１２，２１３    論理積部
３    復号化装置
３ａ    復号化部
３２    ランダム化ＩｎｖＲｏｕｎｄ＿ｎ
３３    ランダム化ＩｎｖＲｏｕｎｄ＿０
３００，３７０    合成体変換兼逆行列変換部
３０１    ８ビットランダム化合成体逆元計算部
３０２，３７２    拡大体変換部
３２０，３３０    ＩｎｖＳｈｉｆｔＲｏｗｓ
３２１，３３１    ランダム化ＩｎｖＳｕｂＢｙｔｅｓ
３２３    ＩｎｖＭｉｘＣｏｌｕｍｎｓ
３３１ａ，３３１ｂ，３３１ｃ，３３１ｐ    ランダム化ＩｎｖＳ−Ｂｏｘ
３７１    ８ビット合成体逆元計算部
８１    ランダム化８ビット逆元計算部
８１０，８１２    １７乗計算部
８１１    ４ビット補正項計算部
８１５    ランダム化４ビット逆元計算部
８１６，８１７    ４ビット出力計算部
８１１ａ，８１１ｂ，８１６ａ，８１６ｂ，８１６ｃ，８１６ｄ    ４ビット乗算部
８２０，８２２    ５乗計算部
８２１    ２ビット補正項計算部
８２５    ランダム化２ビット逆元計算部
８２６，８２７    ２ビット出力計算部
８２１ａ，８２１ｂ，８２６ａ，８２６ｂ，８２６ｃ，８２６ｄ    ２ビット乗算部
８１１ｃ，８１１ｄ，８１３，８１４，８１６ｅ，８１６ｆ，８１６ｇ，８１６ｈ，８１６ｉ，８１６ｊ，８１８，８１９，８２１ｃ，８２１ｄ，８２３，８２４，８２５ａ，８２５ｂ，８２６ｅ，８２６ｆ，８２６ｇ，８２６ｈ，８２６ｉ，８２６ｊ，８２８，８２９    排他的論理和部
【発明を実施するための最良の形態】
【００４７】
請求項１記載の態様の（本発明の一実施態様の）暗号化装置は、鍵を用いて平文から暗号文を生成する暗号化装置であって、乱数を生成する乱数生成部と、前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、を備えたものである。【００４８】
本態様によると、副情報の計測により、平文から暗号文が生成されるのに用いられる鍵が解析されてしまうのを防ぐために、当該鍵による予め定められた処理がされた入力データに対して入力マスク値が加算されたランダム化入力データから、出力マスク値が加算されたランダム化出力データが生成されるのに際して、出力マスク値が入力マスク値の逆元であることにより、段数が少ない簡単な構成により、ランダム化入力データからランダム化出力データが生成され、暗号化装置を、段数の少ない簡単な構成にできる。【００４９】
なお、当該暗号化装置は、生成された前記乱数を受け付けて、受け付けた当該乱数から上記入力マスク値を生成するマスク値生成部を更に備え、前記第１のランダム化逆元データ生成部は、生成された前記入力マスク値を受け付けて、上記生成を行うものであってもよい。こうすれば、当該暗号化装置に外部から入力マスク値を入力する構成が不要になり、システムの構成を簡単にできる。【００５０】
請求項２記載の態様の（本発明の一実施態様の）暗号化装置は、前記第１のランダム化逆元データ生成部は、前記ランダム化入力データと前記入力マスク値とに対して予め定められた第１のべき数によるべき乗計算を行い、第１のべき乗ランダム化入力データと第１のべき乗入力マスク値とをそれぞれ各べき乗計算により生成する第１のべき乗計算部と、前記ランダム化入力データと前記入力マスク値とから、予め定められた補正データを生成する補正データ生成部と、生成された前記補正データを、計算された前記第１のべき乗ランダム化入力データに加算し、副ランダム化入力データを生成する加算部と、前記副ランダム化入力データと前記第１のべき乗入力マスク値とを受け付けて、当該第１のべき乗入力マスク値の予め定められた第２の有限体における逆元であるマスク値が、前記副ランダム化入力データの当該第２の有限体における逆元に加算されたランダム化副出力データを生成する第２のランダム化逆元データ生成部と、前記ランダム化副出力データと前記ランダム化入力データと前記入力マスク値と前記第１のべき乗入力マスク値とから、前記ランダム化出力データを生成するランダム化出力データ生成部と、を備えたものである。【００５１】
本態様によると、ランダム化出力データが、分かり易い構成により生成され、故障や動作不良を少なくしたり、設計を容易にしたりしつつ、段数の少ない簡単な構成により暗号化装置を実現することができる。【００５２】
また、態様Ａの（本発明の一実施態様の）暗号化装置は、ランダム化合成体逆元計算部の演算を、従来はＸ＝Ｍ＋ＲをＹ＝Ｍ＾（−１）＋Ｒに変換していたものを、Ｘ＝Ｍ＋ＲからＹ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換するようにしたものであり、これにより、従来よりも最大論理段数を削減しつつ、コンパクト実装が可能という従来法の利点を実現することが可能となるものである。【００５３】
また、態様Ｂの（本発明の一実施態様の）の暗号化装置は、平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成する暗号化装置であって、乱数を生成する乱数生成部と、ランダム化入力データと入力マスク値を受け付けて第１の有限体上の逆元計算を行い、ランダム化出力データを出力する第１のランダム化逆元計算部を備え、前記ランダム化入力データは、入力マスク値と入力データとの加算によりマスクされた値であり、前記ランダム化出力データは、出力マスク値と出力データとの加算によりマスクされた値であり、前記入力マスク値は、前記乱数に依存して決まる値であり、前記出力データは、前記入力データの前記第１の有限体における逆元であり、前記出力マスク値は、前記入力マスク値の前記第１の有限体における逆元であるものである。【００５４】
ここで、この態様Ｂに係る暗号化装置は、前記第１のランダム化逆元計算部は、前記ランダム化入力データと前記入力マスク値のそれぞれに対して第１のべき数によるべき乗計算を行い、第１のべき乗ランダム化入力データと第１のべき乗入力マスク値を生成する第１のべき乗演算部と、前記ランダム化入力データと前記入力マスク値とから補正データを生成する補正データ生成部と、前記補正データと前記第１のべき乗ランダム化入力データとの加算を行い副ランダム化入力データを生成する加算部と、前記副ランダム化入力データと前記第１のべき乗入力マスク値を受け付けて第２の有限体上の逆元計算を行い、ランダム化副出力データを生成する第２のランダム化逆元計算部と、前記ランダム化副出力データと前記ランダム化入力データと前記第１のべき乗入力マスク値と前記入力マスク値から前記ランダム化出力データを生成するランダム化出力データ生成部を備えたものであってもよい。【００５５】
さらに、この態様Ｂに係る暗号化装置は、前記ランダム化出力データ生成部は、前記ランダム化入力データと前記入力マスク値のそれぞれに対して第２のべき数によるべき乗計算を行い、第２のべき乗ランダム化入力データと第２のべき乗入力マスク値を生成する第２のべき乗演算部と、前記第１のべき乗入力マスク値に対して前記第２の有限体上の逆元計算を行い、逆元べき乗入力マスク値を生成する逆元演算部と、前記ランダム化副出力データと前記第２のべき乗ランダム化入力データと前記逆元べき乗入力マスク値と前記第２のべき乗入力マスク値から前記ランダム化出力データを生成するランダム化出力データ計算部を備えたものであってもよい。【００５６】
さらに、態様Ｃの（本発明の一実施態様の）の復号化装置は、暗号文に対して鍵に基づく所定の復号化処理を行い、復号文を生成する復号化装置であって、乱数を生成する乱数生成部と、ランダム化入力データと入力マスク値を受け付けて第１の有限体上の逆元計算を行い、ランダム化出力データを出力する第１のランダム化逆元計算部を備え、前記ランダム化入力データは、入力マスク値と入力データとの加算によりマスクされた値であり、前記ランダム化出力データは、出力マスク値と出力データとの加算によりマスクされた値であり、前記入力マスク値は、前記乱数に依存して決まる値であり、前記出力データは、前記入力データの前記第１の有限体における逆元であり、前記出力マスク値は、前記入力マスク値の前記第１の有限体における逆元であるものである。
【００５７】
（実施の形態）
以下、本発明の実施の形態について、図面を参照しながら説明する。【００５８】
なお、実施の形態において、合成体ＧＦ（（（２＾２）＾２）＾２）、及びその部分体ＧＦ（（２＾２）＾２）、ＧＦ（２＾２）、ＧＦ（２）上の演算を使用するが、これらは以下のような関係になる。【００５９】
ＧＦ（２）に対して、既約多項式ｘ＾２＋ｘ＋１で２次拡大を行ったものが、ＧＦ（２＾２）である。【００６０】
ＧＦ（２＾２）に対して、既約多項式ｘ＾２＋ｘ＋φで２次拡大を行ったものがＧＦ（（２＾２）＾２）である。【００６１】
ＧＦ（（２＾２）＾２）に対して、既約多項式ｘ＾２＋ｘ＋λ（２進数）で２次拡大を行ったものが、ＧＦ（（（２＾２）＾２）＾２）である。【００６２】
このとき、ｘ＾２＋ｘ＋１＝０の根をαとしたとき、φ＝α、λ＝α＾３＋αであるので、それぞれ、φ＝１０（２進数）、λ＝１１００（２進数）とビット表記する。【００６３】
＜実施の形態の概要＞
実際の処理詳細を説明する前に、まずは、実施の形態の概要を、（非特許文献１）つまり従来技術２に開示されている従来方式との対比をしながら、説明する。【００６４】
（非特許文献１）に開示の従来技術、つまり従来技術２においては、ランダム化８ビット逆元計算部８１（図１等）は、入力データＸ＝Ｍ（＋）Ｒに対して、乱数Ｒ及びｒを用いたランダム化逆元計算を行い、出力データＹ＝Ｍ＾（−１）（＋）Ｒを生成していた。ここで、Ｘは、本来のデータＭをランダムマスクＲでマスクされた値となり、ランダム化８ビット逆元計算部８１は、ＧＦ（（（２＾２）＾２）＾２）におけるＭの逆元Ｍ＾（−１）を求めて、この値がランダムマスクＲによってマスクされた形（Ｍ＾（−１）（＋）Ｒ）として出力していた。【００６５】
本発明に係る実施の形態では、上記のランダム化８ビット逆元計算処理を、入力データＸ＝Ｍ（＋）Ｒに対して、乱数Ｒを用いたランダム化逆元計算により、出力データＹ＝Ｍ＾（−１）（＋）Ｒ＾（−１）を生成している。即ち、出力データのランダムマスク値が、従来技術２では、Ｒであったものが、本発明では、Ｒ＾（−１）となっている。このように、従来技術２と異なる出力データを計算する構成としたことで、後で述べるように、最大論理段数を従来技術よりも削減可能となった。【００６６】
図８〜図３８は、実施の形態に係る暗号化装置１、および暗号化装置１の各部分をそれぞれ示す図である。【００６７】
そして、図３８は、実施の形態に係る暗号化装置１の全体および各部分の間の包含関係を示す図である。以下では、適宜図３８を参照しつつ、図１〜図２３に示される暗号化装置１を説明する。【００６８】
図３８に示されるように、暗号化装置１（図８）は、ランダム化８ビット逆元計算部１０１（図１３、図１４）を備える。暗号化装置１（図８）は、暗号化部１ａ（図８、図９）を備える。暗号化部１ａは、マスク処理部１０（図９）と、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘ（ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０）、ランダム化Ｒｏｕｎｄ＿１０ １３（図９、図１１））と、アンマスク処理部１４（図９）とを備える。なお、図３８においては、図８〜３７に示される暗号化装置１の各部分のうちの一部は捨象されている。【００６９】
そして、図３８に示されるランダム化Ｒｏｕｎｄ＿ｔ１２（図９及び図１０に示されるランダム化Ｒｏｕｎｄ＿ｎ１２、図９及び図１１に示されるランダム化Ｒｏｕｎｄ＿１０）は、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１０、図１１、図１２）を備え、このランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１２に示されるランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐ）を備え、さらにこのランダム化Ｓ−Ｂｏｘ１２１Ｘは、ランダム化８ビット逆元計算部１０１（図１３、図１４）を備える。【００７０】
そして、このランダム化８ビット逆元計算部１０１（図３８、図１４等）は、図３８に示されるように、ランダム化入力データＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）が入力され、Ｒｔに基づいたＴ１（Ｒｔ）なるマスク値によりマスクされたこのランダム化入力データＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）から、ランダム化出力データＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）を算出し、算出したこのＯＤ８ｔを出力する。要するに、このランダム化８ビット逆元計算部１０１（図１３、図１４）が、Ｍ＝Ｔ１（Ｖ８ｔ）、Ｒ＝Ｔ１（Ｒｔ）とした、上記したような、入力データＸ＝Ｍ（＋）Ｒに対して、出力データＹ＝Ｍ＾（−１）（＋）Ｒ＾（−１）を生成する処理を行う。【００７１】
本実施の形態に係る暗号化装置１（図３８、図８）は、このような、Ｘ＝Ｍ（＋）ＲからＹ＝Ｍ＾（−１）（＋）Ｒ＾（−１）を生成するランダム化８ビット逆元計算部１０１を備えており、最大論理段数を削減できる。【００７２】
以下、そのような、暗号化装置１の処理詳細について説明する。【００７３】
＜暗号化装置１＞
図８は、本発明の実施の形態における、暗号化装置１の構成を示したブロック図である。【００７４】
暗号化装置１（図８）は、暗号化部１ａ（図９）と、ラウンド鍵生成部１ｂと、鍵保管部１ｃとを備える。【００７５】
暗号化装置１（図８）は、暗号化装置１に入力される１２８ビットの平文Ｐ（１２８ビット）に対して、装置内部に保持する鍵Ｋ（１２８ビット）を用いて、ランダム化されたＡＥＳ暗号化処理（ＡＥＳ：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）を行い、暗号文Ｃ（１２８ビット）を出力する。暗号文Ｃは、平文Ｐに対して鍵Ｋを用いてＡＥＳ暗号化処理を行った結果と等しい。また、暗号化処理過程の暗号処理中間値は、装置内部で暗号化処理ごとにランダムに生成する乱数によってランダム化されているので、電力解析攻撃による鍵Ｋの解析は困難となっている。以下、暗号化装置１の処理手順について説明する。【００７６】
なお、ＡＥＳ暗号は、より詳しくは、暗号化処理においてラウンドを繰り返す、いわゆる繰り返し暗号の代表的な構成法であるＦｅｉｓｔｅｌ構造と、ＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ  Ｓｔｒｕｃｔｕｒｅ）構造とのうちの、後者のＳＰＮ構造が採用された暗号である。【００７７】
ここで、暗号化装置１は、例えば、ＩＣカードに設けられたものであってもよい。【００７８】
鍵保管部１ｃは、暗号化装置１に事前に設定されている鍵Ｋを保管する。鍵Ｋは、暗号化装置１の製造時に設定されていてもよいし、暗号化装置１の製造後に、装置内で生成して鍵保管部１ｃに設定するようにしてもよい。平文Ｐが入力されると、暗号化装置１は、以下の処理を行う。【００７９】
（１）鍵保管部１ｃは、保管する鍵Ｋをラウンド鍵生成部１ｂに入力する。【００８０】
（２）ラウンド鍵生成部１ｂは、ＡＥＳ暗号方式のラウンド鍵生成処理に従って、鍵Ｋから、ラウンド鍵ＲＫ０〜ＲＫ１０（各１２８ビット）を生成し、暗号化部１ａに入力する。なお、ラウンド鍵生成処理は、（非特許文献２）に記載され公知であるから、ここでは詳細は説明しない。【００８１】
（３）暗号化部１ａは、ラウンド鍵ＲＫ０〜ＲＫ１０を用いて、平文Ｐに対して後で述べる暗号化処理を行い、暗号文Ｃを生成して出力する。【００８２】
次に、暗号化部１ａの処理について説明する。【００８３】
＜暗号化部１ａ＞
図９は、暗号化部１ａの構成を示したブロック図である。【００８４】
図示するように、暗号化部１ａ（図８、図３８）は、マスク処理部１０と、ＡｄｄＲｏｕｎｄＫｅｙ１１と、ランダム化Ｒｏｕｎｄ＿ｎ１２（図１０）と、ランダム化Ｒｏｕｎｄ＿１０ １３（図１１）と、アンマスク処理部１４と、乱数生成部１５と、乱数一時記憶部１６と、乱数更新部１７とを備える。【００８５】
暗号化部１ａは、平文Ｐ（１２８ビット）に対して、ラウンド鍵ＲＫ０〜ＲＫ１０（１２８ビット×１１個）を用いて暗号化処理を行い、暗号文Ｃ（１２８ビット）を生成して出力する。暗号化部１ａは、入力されるラウンド鍵ＲＫ０〜ＲＫ１０のうち、ラウンド鍵ＲＫ０は、ＡｄｄＲｏｕｎｄＫｅｙ１１に入力し、ラウンド鍵ＲＫｎ（ｎ＝１〜９）は、ランダム化Ｒｏｕｎｄ＿ｎ１２（図１０）に入力し、ＲＫ１０はランダム化Ｒｏｕｎｄ＿１０  １３（図１１）に入力する。【００８６】
暗号化部１ａは、以下の処理を行う。【００８７】
（１）乱数生成部１５は、乱数Ｒ０（８ビット）をランダムに生成する。そして、乱数生成部１５は、生成した乱数Ｒ０を、乱数一時記憶部１６に、一旦記憶する。なお、乱数生成部１５は、一例としては、新しい平文Ｐが暗号化装置１に入力され、暗号化装置１が新たに暗号化の処理を開始するごとに、その開始に際して、新たに乱数Ｒ０を生成し、生成する乱数Ｒ０を記憶させるものであってもよい。【００８８】
（２）マスク処理部１０は、乱数一時記憶部１６に記憶している乱数Ｒ０を用いて、平文Ｐに対して以下のような排他的論理和演算を行い、データＡ（１２８ビット）を求める。この処理により、平文Ｐは、ランダムマスク値Ｒ０によってマスクされる。【００８９】
Ａ＝Ｐ（＋）（Ｒ０，Ｒ０，Ｒ０，…，Ｒ０）【００９０】
ここで、（Ｒ０，Ｒ０，Ｒ０，…，Ｒ０）は、Ｒ０（８ビット）を１６個結合した１２８ビットデータを表す。なお、以下では、特に断りがなければ、８ビットデータＸを１６個結合した１２８ビットデータを（Ｘ，Ｘ，Ｘ，…，Ｘ）として表記するものとする。【００９１】
なお、図８に示されるＰは、図３８では、記号Ｕにより示される。また、図８に示されるＣは、図３８では、記号Ｃにより示される。また、図９に示されるＡは、図３８においては、ＩＡと図示される。また、図９に示されるＢ、Ｄは、図３８では、記号ＩＡｔ（ｔ＝１〜９またはｔ＝１０）により示される。また、図９に示されるＥは、図３８では、記号ＯＡ１０＝ＯＡｔ（ｔ＝１０）により示される。【００９２】
（３）乱数更新部１７は、乱数一時記憶部１６に記憶している乱数Ｒ０に、後で述べる乱数更新処理を行って、Ｒ１を生成し、乱数一時記憶部１６に記憶している乱数Ｒ０を、Ｒ１に更新する。【００９３】
（４）ＡｄｄＲｏｕｎｄＫｅｙ１１は、上記の（２）で乱数生成部１５が求めた上記Ａに対して、以下のようなＲＫ０を用いた鍵加算処理を行い、Ｂ１を求める。これは、ＡＥＳ暗号アルゴリズム仕様で定められているＡｄｄＲｏｕｎｄＫｅｙ処理である。【００９４】
Ｂ１＝Ａ（＋）ＲＫ０【００９５】
（５）次に、ランダム化Ｒｏｕｎｄ＿ｎ１２が、ｎ＝１、２、３、…、９について、以下の処理を繰り返し実行する。【００９６】
（５−１）ランダム化Ｒｏｕｎｄ＿ｎ１２は、ラウンド鍵ＲＫｎと、乱数一時記憶部１６に記憶する乱数Ｒｎを用いて、Ｂｎ（当該ランダム化Ｒｏｕｎｄ＿ｎ１２への入力データであるＢのうちでｎ番目のもの）に対して後で述べるランダム化Ｒｏｕｎｄ＿ｎ処理を行って、Ｂｎ＋１を生成する。そして、ランダム化Ｒｏｕｎｄ＿ｎ１２は、生成したＢ（ｎ＋１）を、ｎ＝９の場合、つまり、生成されるＢ（ｎ＋１）が、Ｂ（ｎ＋１）＝Ｂ１０の場合は、Ｄ＝Ｂ１０として、Ｄをランダム化Ｒｏｕｎｄ＿１０  １３に入力し、ｎ≠９の場合、つまりｎ＝１、２、…９であり、生成されるＢ（ｎ＋１）が、Ｂ２、Ｂ３、…、Ｂ９の何れかである場合は、そのＢ（ｎ＋１）を再びランダム化Ｒｏｕｎｄ＿ｎ１２に入力する。【００９７】
（５−２）乱数更新部１７は、乱数一時記憶部１６に記憶する乱数Ｒｎに対して、後で述べる乱数更新処理を行って、Ｒｎ＋１を生成し、乱数一時記憶部１６に記憶している乱数ＲｎをＲｎ＋１に更新する。乱数更新部１７は、乱数生成部１５により生成される乱数Ｒ０から、乱数Ｒ１、乱数Ｒ２、…、乱数Ｒ１１を生成し、乱数一時記憶部１６に記憶される乱数を、生成する各乱数に更新することにより、それぞれその乱数を、マスク処理部１０、ランダム化Ｒｏｕｎｄ＿ｎ１２、ランダム化Ｒｏｕｎｄ＿１０ １３、アンマスク処理部１４のうちでその乱数に対応する構成へと、それぞれ、供給する。乱数更新部１７は、乱数一時記憶部１６を介して、乱数Ｒ０をマスク処理部１０に供給し、乱数Ｒ１〜Ｒ９を、ランダム化Ｒｏｕｎｄ＿ｎ１２に供給し、乱数Ｒ１０をランダム化Ｒｏｕｎｄ＿１０ １３に供給し、乱数Ｒ１１をアンマスク処理部１４に供給する。【００９８】
（５−３）暗号化部１ａは、ｎ＝９の場合は、繰り返し処理のループを完了し、次のランダム化Ｒｏｕｎｄ＿１０  １３の処理に移行し、ｎ≠９の場合は、ｎの値を１加算し、再び、上記（５−１）〜（５−３）の処理を実行する。【００９９】
（６）ランダム化Ｒｏｕｎｄ＿１０  １３は、ラウンド鍵ＲＫ１０と乱数一時記憶部１６に記憶している乱数Ｒ１０とを用いて、上記（５）の処理で得られる、ランダム化Ｒｏｕｎｄ＿１０  １３への入力データＤ（１２８ビット）に対して、後で述べるランダム化Ｒｏｕｎｄ＿１０処理を行い、データＥ（１２８ビット）を生成する。ランダム化Ｒｏｕｎｄ１０  １３は、データＥを、アンマスク処理部１４に入力する。【０１００】
また、乱数更新部１７は、乱数一時記憶部１６に記憶する乱数Ｒ１０に対して、後で述べる乱数更新処理を行って、乱数一時記憶部１６に記憶している乱数Ｒ１０を乱数Ｒ１１に更新する。乱数更新部１７は、このＲ１１への更新により、アンマスク処理部１４に乱数Ｒ１１を供給する。【０１０１】
（７）アンマスク処理部１４は、乱数一時記憶部１６に記憶する乱数Ｒ１１を用いて、上記（６）で、ランダム化Ｒｏｕｎｄ＿１０から得られたデータＥに対して、以下のような排他的論理和演算を行い、暗号文Ｃ（１２８ビット）を生成する。この処理により、マスクされていたデータＥは、アンマスクされ（マスクの影響を除去され）、マスクのされていない暗号文Ｃが得られる。【０１０２】
Ｃ＝Ｅ（＋）Ｒ１１【０１０３】
（８）暗号化部１ａは、上記（７）で得られた暗号文Ｃを、暗号化部１ａの出力データとして、出力する。【０１０４】
次に、暗号化部１ａ（図９）の内部で使用されるランダム化Ｒｏｕｎｄ＿ｎ１２、ランダム化Ｒｏｕｎｄ＿１０  １３の詳細な構成について説明する。【０１０５】
＜ランダム化Ｒｏｕｎｄ＿ｎ１２＞
図１０は、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９）の構成を示したブロック図である。【０１０６】
図１０に示されるように、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０、図３８）は、ランダム化ＳｕｂＢｙｔｅｓ１２０と（図１２、図３８）、ＳｈｉｆｔＲｏｗｓ１２１と、ＭｉｘＣｏｌｕｍｎｓ１２２と、ＡｄｄＲｏｕｎｄＫｅｙ１２３とを備える。【０１０７】
そして、ランダム化Ｒｏｕｎｄ＿ｎ１２は、乱数Ｒｎとラウンド鍵ＲＫｎ（ｎ＝１、２、…、９）を用いて、当該ランダム化Ｒｏｕｎｄ＿ｎ１２への入力データＸ（暗号化部１ａの処理説明（図９）におけるデータＢｎに対応）に対して、ランダム化Ｒｏｕｎｄ処理を行い、出力データＹ（暗号化部１ａの処理説明におけるデータＢｎ＋１（図９）に対応）を生成する。【０１０８】
なお、ランダム化Ｒｏｕｎｄ＿ｎ１２が行う、ランダム化Ｒｏｕｎｄ＿ｎ処理は、マスク値（Ｒｎ，Ｒｎ，…，Ｒｎ）でマスクされている入力データＸ＝Ｍ（＋）（Ｒｎ，Ｒｎ，…，Ｒｎ）に対して、ＡＥＳ暗号アルゴリズム規格で規定されている１ラウンド処理を実行して、マスク値（Ｒｎ＋１，Ｒｎ＋１，…，Ｒｎ＋１）でマスクされたラウンド処理結果Ｙ＝Ｐ（＋）（Ｒｎ＋１，Ｒｎ＋１，…，Ｒｎ＋１）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されている１ラウンドの処理を行った結果と一致する。ここで、このＸは、図９の説明における、ランダム化Ｒｏｕｎｄ＿ｎ処理の入力データＢｎ（ｎ＝１、２、…、９）であり、また、このＹは、図９の説明における、出力データＢ（ｎ＋１））であり、Ｍ、Ｐは、それらＢｎ、Ｂｎ＋１からマスク値の影響を除去した本来の値（図３８に図示されるＶｔ，Ｖ（ｔ＋１））である。【０１０９】
なお、図１０におけるＸは、図３８では、記号ＩＡｔ（ｔ＝１、２、…、９）により示され、Ｙは、記号ＯＢｔ（ｔ＝１、２、…、９）により示され、Ｒｎは、記号Ｒｔ（ｔ＝１、２、…、９）により示される。【０１１０】
具体的には、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０）は、以下の処理を行う。【０１１１】
（１）ランダム化Ｒｏｕｎｄ＿ｎ１２が備えるランダム化ＳｕｂＢｙｔｅｓ１２０（図１０、図１２）は、乱数一時記憶部１６から取得する乱数Ｒｎ（８ビット）を用いて、当該ランダム化Ｒｏｕｎｄ＿ｎへの入力データＸ（１２８ビット）に対して、後で述べるランダム化ＳｕｂＢｙｔｅｓ処理を行い、データＡ（図１０）を生成する。【０１１２】
（２）ＳｈｉｆｔＲｏｗｓ１２１（図１０）は、上記（１）で生成される前記データＡに対して、ＡＥＳ暗号アルゴリズム規格で規定されているＳｈｉｆｔＲｏｗｓ処理を行い、データＢ（１２８ビット）を生成する。なお、ＳｈｉｆｔＲｏｗｓの詳細は、（非特許文献２）にて公知のため、詳しく説明しない。【０１１３】
（３）次に、ＭｉｘＣｏｌｕｍｎｓ１２２（図１０）は、上記（２）で生成される前記データＢに対して、ＡＥＳ暗号アルゴリズム規格で規定されているＭｉｘＣｏｌｕｍｎｓ処理を行い、データＣ（１２８ビット）を生成する。なお、ＭｉｘＣｏｌｕｍｎｓの詳細は、（非特許文献２）にて公知のため、詳しく説明しない。【０１１４】
（４）そして、ＡｄｄＲｏｕｎｄＫｅｙ１２３は、上記（３）で生成される前記データＣに対して、ラウンド鍵ＲＫｎを用いて、ＡＥＳ暗号アルゴリズム規格で規定されているＡｄｄＲｏｕｎｄＫｅｙ処理を行い、データＹ（１２８ビット）を生成する。そして、ＡｄｄＲｏｕｎｄＫｅｙ１２３は、生成したＹを、ランダム化Ｒｏｕｎｄ＿ｎ１２の出力データとして、出力する。なお、ＡｄｄＲｏｕｎｄＫｅｙの詳細は、（非特許文献２）にて公知のため、詳しく説明しない。【０１１５】
なお、図１０のデータＡは、図３８では、記号ＯＢｔ（ｔ＝１、２、…、９）により示される。【０１１６】
＜ランダム化Ｒｏｕｎｄ＿１０  １３＞
図１１は、ランダム化Ｒｏｕｎｄ＿１０  １３の構成を示したブロック図である。【０１１７】
ランダム化Ｒｏｕｎｄ＿１０  １３（図９、図１１）は、ランダム化ＳｕｂＢｙｔｅｓ１３０（図１１、図１２）と、ＳｈｉｆｔＲｏｗｓ１３１と、ＡｄｄＲｏｕｎｄＫｅｙ１３２とを備える。【０１１８】
そして、ランダム化Ｒｏｕｎｄ＿１０  １３は、図１１に示すように、ランダム化Ｒｏｕｎｄ＿ｎ１２から、ＭｉｘＣｏｌｕｍｎｓ１２２だけを取り除いた構成と等しい。これは、ＡＥＳ暗号アルゴリズムの仕様が、最終ラウンドだけ、ＭｉｘＣｏｌｕｍｎｓ処理を行わないことに対応する。それ以外は、ランダム化Ｒｏｕｎｄ＿ｎ１２と同じであるから、詳しい説明は省略する。【０１１９】
なお、ランダム化Ｒｏｕｎｄ＿１０処理は、マスク値（Ｒ１０，Ｒ１０，…，Ｒ１０）でマスクされている入力データＸ＝Ｍ（＋）（Ｒ１０，Ｒ１０，…，Ｒ１０）に対して、ＡＥＳ暗号アルゴリズム規格で規定されている最終ラウンド処理を実行して、マスク値（Ｒ１１，Ｒ１１，…，Ｒ１１）でマスクされた最終ラウンド処理結果Ｙ＝Ｐ（＋）（Ｒ１１，Ｒ１１，…，Ｒ１１）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されている最終ラウンド処理を行った結果と一致する。【０１２０】
なお、ここで、このＸは、図９の説明における、データＤであり、また、このＹは、図９の説明における、出力データＥ）であり、Ｍ、Ｐは、それらＤ、Ｅからマスク値の影響を除去した本来の値（図３８におけるＶ１０，Ｖ１１）である。【０１２１】
他方、図１０のデータＡは、図３８では、記号ＯＢ１０＝ＯＢｔ（ｔ＝１０）により示される。【０１２２】
次に、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０）、ランダム化Ｒｏｕｎｄ＿１０  １３（図９、図１１）で用いられているランダム化ＳｕｂＢｙｔｅｓ１２０、１３０（図１２）の詳細について説明する。【０１２３】
＜ランダム化ＳｕｂＢｙｔｅｓ１２０、１３０＞
図１２は、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（ランダム化ＳｕｂＢｙｔｅｓ１２０（図９、図１０）、ランダム化ＳｕｂＢｙｔｅｓ１３０（図９、図１１））の構成を示したブロック図である。例えば、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、ランダム化ＳｕｂＢｙｔｅｓ１２０であり、他方のランダム化ＳｕｂＢｙｔｅｓ１２０は、このランダム化ＳｕｂＢｙｔｅｓ１２０と同じ構成を有する。【０１２４】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、乱数Ｒ（８ビット）を用いて、入力データＸ（１２８ビット）に対して、ランダム化Ｓ−Ｂｏｘ処理を行い、出力データＹ（１２８ビット）を生成する。ここでいう入力データＸは、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理説明（図１０）におけるデータＸに相当し、また、ランダム化Ｒｏｕｎｄ＿１０  １３の処理説明（図１１）におけるデータＸに相当する。他方、乱数Ｒは、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理説明（図１０）における乱数Ｒｎに相当し、ランダム化Ｒｏｕｎｄ＿１０  １３の処理説明（図１１）における乱数Ｒ１０に相当する。また、出力データＹは、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理説明（図１０）におけるデータＡに相当し、ランダム化Ｒｏｕｎｄ＿１０  １３（図１１）の処理説明におけるデータＡに相当する。【０１２５】
なお、図１２におけるＸは、図３８では、記号ＩＢｔにより示され、Ｙは、記号ＯＢｔにより示され、Ｒは、Ｒｔにより示される。【０１２６】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、ランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐを備える。【０１２７】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（ランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐ）は、以下の処理を行う。【０１２８】
（１）ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、入力データを、上位から８ビットずつに分割して、Ｘ［０］、Ｘ［１］、…、Ｘ［１５］（図１２参照）とする。【０１２９】
（２）ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐは、分割されたＸ［０］、Ｘ［１］、…、Ｘ［１５］のそれぞれについて、乱数Ｒを用いたランダム化Ｓ−Ｂｏｘ処理を行い、それぞれ、Ｙ［０］、Ｙ［１］、…、Ｙ［１５］を生成する。この、ランダム化Ｓ−Ｂｏｘ処理の詳細は後で説明する。【０１３０】
（３）そして、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは，生成されるＹ［０］、Ｙ［１］、…、Ｙ［１５］を、上位からこの順で連結して、１２８ビットデータＹとする。そして、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、このＹを、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘの出力データとして出力する。【０１３１】
なお、ランダム化ＳｕｂＢｙｔｅｓ１２０、１３０の処理は、マスク値（Ｒ，Ｒ，…，Ｒ）でマスクされている入力データＸ＝Ｍ（＋）（Ｒ，Ｒ，…，Ｒ）に対して、ＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理を実行して、マスク値（Ｓ，Ｓ，…，Ｓ）でマスクされた処理結果Ｙ＝Ｐ（＋）（Ｓ，Ｓ，…，Ｓ）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理を行った結果と一致し、マスク値Ｓは、マスク値Ｒに対して乱数更新部１７で行われる乱数更新処理を行った結果と等しくなる。【０１３２】
なお、このＭは、図３８においてＶｔとして図示され、Ｐは、Ｓ−ｂｏｘ（Ｖｔ）により示される。【０１３３】
次に、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（ランダム化ＳｕｂＢｙｔｅｓ１２０、１３０）で用いられるランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの詳細について説明する。【０１３４】
＜ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐ＞
図１３は、ランダム化Ｓ−Ｂｏｘ１２１Ｘ（ランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐ：図１２）の構成を示したブロック図である。【０１３５】
ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１３、図１２）は、合成体変換部１００（数式１参照）と、ランダム化８ビット逆元計算部１０１（図１１、図３８）と、拡大体変換兼行列変換部１０２（数式２参照）と、排他的論理和部１０４と、合成体変換部１０３（数式１参照）とを備える。【０１３６】
ランダム化Ｓ−Ｂｏｘ１２１Ｘは、乱数Ｒ（８ビット）を用いて、入力データＸ（８ビット）に対してランダム化Ｓ−Ｂｏｘ処理を行い、出力データＹ（８ビット）を求める処理である。ここでいう入力データＸは、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１２）の処理説明におけるデータＸ［０］、Ｘ［１］、…、Ｘ［１５］のいずれかに相当し、乱数Ｒは、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘの処理説明（図１２）における乱数Ｒに相当する。また、出力データＹは、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘの処理説明（図１２）におけるデータＹ［０］、Ｙ［１］、…、Ｙ［１５］のいずれかに相当する。【０１３７】
なお、このＸは、図３８では、記号ＩＣ８ｔにより図示され、Ｙは、記号ＯＣ８ｔにより示され、Ｒは、記号Ｒｔにより示される。【０１３８】
ランダム化Ｓ−Ｂｏｘ１２１Ｘは、以下の処理を行う。【０１３９】
（１）合成体変換部１００は、Ｘ（８ビット）を上位から１ビットずつ分割して、Ｘ７、Ｘ６、…、Ｘ０とする。そして、合成体変換部１００は、以下の数式１の行列計算を行い、行列計算により求めたＡ７、Ａ６、…、Ａ０を、上位からこの順で結合して、合成体変換部１００の出力データＡ（８ビット）とする。なお、下記の行列計算は、ｍｏｄ  ２で行われるものとする。即ち、下記の行列計算においては、０＋０＝１＋１＝０であり、０＋１＝１＋０＝１である。【０１４０】
【数１】
2008146482.tif 000003
【０１４１】
（２）そして、他方の合成体変換部１０３は、上記の（１）と同様にして、Ｒ（８ビット）を上位から１ビットずつ分割してから、数式１の行列計算を行って、Ｒ（８ビット）からＳ（８ビット）を生成する。【０１４２】
（３）次に、ランダム化８ビット逆元計算部１０１は、上記（２）で生成された乱数Ｓ（８ビット）を用いて、上記（１）で生成された入力データＡ（８ビット）に対して、後で述べるランダム化８ビット逆元計算を行い、出力データＢ（８ビット）を生成する。【０１４３】
（４）拡大体変換兼行列変換部１０２は、上記（３）で生成されたデータＢ（８ビット）に対して、下記の数式２の行列計算式に基づいて、先述した（１）と同様の方法で、つまり、上位から１ビットずつ分割して、行列計算を行って、データＣ（８ビット）を生成する。【０１４４】
【数２】
2008146482.tif 000004
【０１４５】
（５）排他的論理和部１０４は、上記（４）で生成されたデータＣ（８ビット）と、定数０１１０００１１（２進数）とのビットごとの排他的論理和演算を行い、データＹ（８ビット）を生成する。【０１４６】
ランダム化Ｓ−ｂｏｘ１２１Ｘは、上記（５）で生成されたこのＹを、ランダム化Ｓ−Ｂｏｘ１２１Ｘの出力データとして出力する。【０１４７】
なお、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理は、マスク値（Ｒ，Ｒ，…，Ｒ）でマスクされている入力データＸ＝Ｍ（＋）（Ｒ，Ｒ，…，Ｒ）に対して、ＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理内のＳ−Ｂｏｘテーブル変換を行い、マスク値（Ｓ，Ｓ，…，Ｓ）でマスクされた処理結果Ｙ＝Ｐ（＋）（Ｓ，Ｓ，…，Ｓ）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理内のＳ−Ｂｏｘテーブル変換を行った結果と一致し、マスク値Ｓは、マスク値Ｒに対して乱数更新部１７で行われる乱数更新処理を行った結果と等しくなる。【０１４８】
なお、このＭは、図３８では、記号Ｖ８ｔにより示され、Ｐは、Ｓ−ｂｏｘ（ｖ８ｔ）により示される。このＡは、図３８では、記号ＩＤ８ｔにより示され、Ｂは、記号ＯＤ８ｔにより示される。【０１４９】
次に、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの内部でそれぞれ用いられるランダム化８ビット逆元計算部１０１の詳細について説明する。【０１５０】
＜ランダム化８ビット逆元計算部１０１＞
図１４は、ランダム化８ビット逆元計算部１０１の構成を示すブロック図である。【０１５１】
ランダム化８ビット逆元計算部１０１（図１３、図１４、図３８）は、１７乗計算部１１０（図１５）と、１７乗計算部１１２（図１５）と、４ビット補正項計算部１１１（図１６）と、１６乗計算部１１５（図１７）と、１６乗計算部１１７（図１７）と、４ビット出力計算部１１８（図１８）と、４ビット出力計算部１１９（図１８）と、４ビット逆元計算部１１６（図２１）と、ランダム化４ビット逆元計算部１１４（図２３）と、排他的論理和部１１３とを備える。【０１５２】
ランダム化８ビット逆元計算部１０１（図１３、図１４）は、乱数Ｒ（８ビット）を用いて、入力データＸ（８ビット）に対してランダム化８ビット逆元計算処理を行い、出力データＹ（８ビット）を出力する。ここでいう入力データＸは、先述した、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理説明（図１３）におけるデータＡに相当し、乱数Ｒは、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理説明（図１３）における乱数Ｓに相当する。また、出力データＹは、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理説明（図１３）におけるデータＢに相当する。【０１５３】
なお、このＸは、図３８では、記号ＩＤ８ｔにより示され、Ｒは、記号ＲＤｔにより示され、Ｙは、記号ＯＤ８ｔにより示される。【０１５４】
ランダム化８ビット逆元計算部１０１は、以下の処理を実行する。【０１５５】
（１）ランダム化８ビット逆元計算部１０１は、まず、データＸ（８ビット）を上位から４ビットずつに分割し、Ｘ０（４ビット）、Ｘ１（４ビット）とする。そして、ランダム化８ビット逆元計算部１０１は、同様に、乱数Ｒ（８ビット）を上位から４ビットずつに分割し、Ｒ０（４ビット）、Ｒ１（４ビット）とする。そして、ランダム化８ビット逆元計算部１０１は、１７乗計算部１１０にＸ０とＸ１を、４ビット補正項計算部１１１にＸ０とＸ１とＲ０とＲ１を、１７乗計算部１１２にＲ０とＲ１をそれぞれ入力する。【０１５６】
（２）そして、１７乗計算部１１０は、入力されるＸ０とＸ１に対して、後で述べる１７乗計算処理を行い、出力データＡ（４ビット）を生成する。同様に、他方の１７乗計算部１１２は、入力されるＲ０とＲ１に対して、１７乗計算処理を行い、出力データＣ（４ビット）を生成する。【０１５７】
（３）他方、４ビット補正項計算部１１１は、入力されるＸ０、Ｘ１、Ｒ０、Ｒ１に対して、後で述べる４ビット補正項計算処理を行い、出力データＢ（４ビット）を生成する。【０１５８】
（４）そして、排他的論理和部１１３は、（２）で生成されたデータＡと、（３）で生成されたデータＢの排他的論理和演算を行い、データＤ（８ビット）を生成する。【０１５９】
（５）そして、ランダム化４ビット逆元計算部１１４は、上記（２）で生成されたデータＣ（４ビット）を用いて、上記（４）で生成されたデータＤに対して、後で述べるランダム化４ビット逆元計算処理を行い、データＥ（４ビット）を生成する。【０１６０】
（６）また、１６乗計算部１１５は、ランダム化８ビット逆元計算部１０１に入力されるデータＸ（８ビット）に対して、後で述べる１６乗計算処理を行い、データＦ（８ビット）を生成する。そして、ランダム化８ビット逆元計算部１０１は、生成されるデータＦを、上位から４ビットずつに分割し、Ｆ０（４ビット）、Ｆ１（４ビット）とする。同様に、他方の１６乗計算部１１７は、ランダム化８ビット逆元計算部１０１に入力されるデータＲ（８ビット）に対して１６乗計算処理を行い、データＨを生成する。ランダム化８ビット逆元計算部１０１は、上記のデータＦの場合と同様、生成されるこのデータＨを、上位から４ビットずつに分割し、Ｈ０（４ビット）、Ｈ１（４ビット）とする。【０１６１】
（７）他方、４ビット逆元計算部１１６は、上記（２）で、図１４の下側に図示される１７乗計算部１１２により生成されるデータＣ（４ビット）に対して、後で述べる４ビット逆元計算処理を行い、データＧ（４ビット）を生成する。【０１６２】
（８）そして、４ビット出力計算部１１８は、上記（５）で生成されたデータＥ（４ビット）と、上記（７）で生成されたデータＧ（４ビット）と、上記（６）でデータＦから分割されたデータＦ０（４ビット）と、同じく上記（６）でデータＨから分割されたデータＨ０（４ビット）とに対して、後で述べる４ビット出力計算処理を行い、データＹ０（４ビット）を生成する。同様に、他方の４ビット出力計算部１１９は、データＥ（４ビット）と、データＧ（４ビット）と、データＦ１（４ビット）と、データＨ１（４ビット）とに対して、４ビット出力計算処理を行い、データＹ１（４ビット）を生成する。そして、ランダム化８ビット逆元計算部１０１は、こうして生成されるデータＹ０とＹ１を、上位からこの順で連結して８ビットデータＹとする。そして、ランダム化８ビット逆元計算部１０１は、連結されたデータＹを、ランダム化８ビット逆元計算部１０１の出力データとして出力する。【０１６３】
なお、このようして行われる、ランダム化８ビット逆元計算部１０１の処理は、マスク値Ｒでマスクされている入力データＸ＝Ｍ（＋）Ｒに対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の逆元計算を行い、マスク値Ｒ＾（−１）でマスクされた処理結果Ｙ＝Ｘ＾（−１）（＋）Ｒ＾（−１）を生成する処理に他ならない。このとき、Ｘ＾（−１）は、合成体ＧＦ（（（２＾２）＾２）＾２）におけるＸの逆元であり、マスク値Ｒ＾（−１）は、合成体ＧＦ（（（２＾２）＾２）＾２）におけるＲの逆元となる。【０１６４】
次に、ランダム化８ビット逆元計算部１０１の内部で使用される、１７乗計算部１１０、１１２（図１５に示される１７乗計算部１１０Ｘ）、４ビット補正項計算部１１１（図１６）、１６乗計算部１１５、１１７（図１７に示される１６乗計算部１１５Ｘ）、４ビット出力計算部１１８、１１９（図１８に示される４ビット出力計算部１１８Ｘ）の詳細について順に説明する。【０１６５】
＜１７乗計算部１１０、１１２＞
図１５は、１７乗計算部１１０Ｘを示す図である。【０１６６】
１７乗計算部１１０Ｘ（図１４、図１５）は、４ビット乗算部１１０ｂ（図１９）と、４ビット乗算部１１０ｃ（図１９）と、４ビット乗算部１１０ｄ（図１９）と、排他的論理和部１１０ａと、排他的論理和部１１０ｅとを備える。【０１６７】
そして、１７乗計算部１１０Ｘは、入力データＸ０（４ビット）、Ｘ１（４ビット）に対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１７乗計算処理を行い、データ処理結果Ｙ（４ビット）を生成する。このとき、入力データＸ０、Ｘ１を上位からこの順で連結した８ビットデータＸに対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１７乗計算を行った結果が、Ｙとなる。即ち【０１６８】
Ｙ＝Ｘ＾（１７）  ｉｎ  ＧＦ（（（２＾２）＾２）＾２）【０１６９】
である。このとき、Ｙ＾１５＝（Ｘ＾１７）＾１５＝Ｘ＾２５５となり、Ｘは、ＧＦ（（（２＾２）＾２）＾２）上の元であることから、Ｙ＾１５＝Ｘ＾２５５＝１である。即ち、Ｙの位数は１５となり、Ｙは、部分体ＧＦ（（２＾２）＾２）上の元となる。つまり、Ｙは、４ビットのデータとなる。【０１７０】
また、ここでいう入力データＸ０、Ｘ１は、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＸ０、Ｘ１もしくはＲ０、Ｒ１に相当し、出力データＹは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＡもしくはＣのいずれかに相当する。【０１７１】
ここで、１７乗計算部１１０Ｘは、部分体ＧＦ（（２＾２）＾２）上で以下の計算を行って、出力データＹを生成する。【０１７２】
Ｙ＝１１００（２進数）×（Ｘ０＾２）＋Ｘ１×（Ｘ０＋Ｘ１）  ｉｎ  ＧＦ（（２＾２）＾２）【０１７３】
ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１０ａ、１１０ｅ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１１０ｂ、１１０ｃ、１１０ｄ）の詳細は後で説明する（図１９）。【０１７４】
＜４ビット補正項計算部１１１＞
図１６は、４ビット補正項計算部１１１の構成を示すブロック図である。【０１７５】
４ビット補正項計算部１１１（図１４、図１６）は、４ビット乗算部１１１ａ（図１９）と、４ビット乗算部１１１ｂ（図１９）と、排他的論理和部１１１ｃとを備える。【０１７６】
そして、４ビット補正項計算部１１１は、入力データＸ０（４ビット）、Ｘ１（４ビット）、Ｒ０（４ビット）、Ｒ１（４ビット）に対して、４ビット補正項計算処理を行い、出力データＢ（４ビット）を生成する。ここでいう入力データＸ０、Ｘ１、Ｒ０、Ｒ１は、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＸ０、Ｘ１、Ｒ０、Ｒ１にそれぞれ相当し、出力データＢは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＢに相当する。【０１７７】
ここで、４ビット補正項計算部１１１は、部分体ＧＦ（（２＾２）＾２）上で以下の計算を行って、出力データＢを生成する。【０１７８】
Ｂ＝Ｘ０×Ｒ１＋Ｘ１×Ｒ０  ｉｎ  ＧＦ（（２＾２）＾２）【０１７９】
そして、ここに、ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１１ｃ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１１１ａ、１１１ｂ）の詳細は後で説明する（図１９）。【０１８０】
＜１６乗計算部１１５、１１７＞
図１７は、１６乗計算部１１５Ｘ（１６乗計算部１１５（図１４）、１６乗計算部１１７（図１４））の構成を示すブロック図である。【０１８１】
そして、１６乗計算部１１５Ｘは、入力データＸ（８ビット）に対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１６乗計算を行い、その計算結果をＹ（８ビット）として出力する。このとき、入力データＸに対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１６乗計算を行った結果が、Ｙとなる。即ち【０１８２】
Ｙ＝Ｘ＾（１６）  ｉｎ  ＧＦ（（（２＾２）＾２）＾２）【０１８３】
である。また、ここでいう入力データＸは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＸ、または、Ｒのいずれかに相当し、出力データＹは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＦまたはＨのいずれかに相当する。【０１８４】
ここで、１６乗計算部１１５、１１７は、入力データＸを上位から４ビットずつ分割して、Ｘ０、Ｘ１とした上で、以下の計算をＧＦ（（２＾２）＾２）上で行い、Ｙ０、Ｙ１を求める。【０１８５】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ０＋Ｘ１    ｉｎ  ＧＦ（（２＾２）＾２）【０１８６】
そして、ここで、ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１５ａ）。そして、１６乗計算部１１５Ｘは、こうして求められたＹ０、Ｙ１をこの順で結合して８ビットデータＹとする。このＹが１６乗計算部１１５、１１７の出力データとなる。【０１８７】
＜４ビット出力計算部１１８、１１９＞
図１８は、４ビット出力計算部１１８Ｘ（４ビット出力計算部１１８（図１４）、４ビット出力計算部１１９（図１４））の構成を示したブロック図である。【０１８８】
４ビット出力計算部１１８Ｘは、４ビット乗算部１１８ａ（図１９）と、４ビット乗算部１１８ｂ（図１９）と、４ビット乗算部１１８ｄ（図１９）と、排他的論理和部１１８ｃと、排他的論理和部１１８ｅとを備える。【０１８９】
そして、４ビット出力計算部１１８Ｘは、入力データＥ（４ビット）、Ｇ（４ビット）、Ｆ（４ビット）、Ｈ（４ビット）に対して、４ビット出力計算処理を行い、出力データＹを出力する。ここでいう入力データＥ、Ｇ、Ｆ、Ｈは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）においては、４ビット出力計算部１１８への入力データＥ、Ｇ、Ｆ０、Ｈ０にそれぞれ対応し、また、４ビット出力計算部１１９への入力データＥ、Ｇ、Ｆ１、Ｈ１にそれぞれ対応する。また、出力データＹは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）においては、４ビット出力計算部１１８の出力データＹ０に対応し、４ビット出力計算部１１９の出力データＹ１に対応する。４ビット出力計算部１１８、１１９は、ＧＦ（（２＾２）＾２）上で以下の計算を行い、Ｙを求めて、求められたＹを出力する。【０１９０】
Ｙ＝Ｅ×Ｆ＋Ｇ×Ｆ＋Ｅ×Ｈ    ｉｎ  ＧＦ（（２＾２）＾２）【０１９１】
ここで、ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１８ｃ、１１８ｅ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１１８ａ、１１８ｂ、１１８ｄ）の詳細は後で説明する（図１９）。【０１９２】
次に、これまで説明した各種処理で用いられている各４ビット乗算部の詳細、すなわち、図１５に示される４ビット乗算部１１０ｂおよび４ビット乗算部１１０ｃと、図１６に示される４ビット乗算部１１１ａおよび４ビット乗算部１１１ｂと、図１８に示される４ビット乗算部１１８ａ、４ビット乗算部１１８ｂ、及び４ビット乗算部１１８ｄとの詳細について説明する。なお、図３０に示される８ビット逆元計算部１７１が備える４ビット乗算部１７１ｄと、４ビット乗算部１７１ｅも同様である。なお、ここに、これら４ビット乗算部１７１ｄ等を有する、図３０に示される８ビット逆元計算部１７１は、図２９に示される乱数更新部１７（図１４参照）の一部である。【０１９３】
＜４ビット乗算部２０＞
図１９は、４ビット乗算部２０の構成を示したブロック図である。【０１９４】
ここでは、４ビット乗算部２０として説明するが、これまで説明した各種処理で用いられている、上記に列挙した４ビット乗算部は、すべてこれと同じ構成である。なお、この点は、上述した４ビット出力計算部１１８、４ビット出力計算部１１９が、いずれも図１８に示される４ビット出力計算部１１８Ｘと同じ構成であること等と同様である。【０１９５】
４ビット乗算部２０は、２ビット乗算部２００（図１９）と、２ビット乗算部２０１（図１９）と、２ビット乗算部２０２（図１９）と、２ビット乗算部２０３（図１９）と、２ビット乗算部２０６（図１９）と、排他的論理和部２０４と、排他的論理和部２０５と、排他的論理和部２０７とを備える。【０１９６】
そして、４ビット乗算部２０は、入力データＸ（４ビット）、Ｙ（４ビット）に対してＧＦ（（２＾２）＾２）上の乗算を行い、乗算結果Ｚ（４ビット）を出力する。このとき、
Ｚ＝Ｘ×Ｙ    ｉｎ  ＧＦ（（２＾２）＾２）
である。【０１９７】
そして、４ビット乗算部２０は、入力データＸ、Ｙを、それぞれ上位から２ビットずつに分割して、Ｘ０（２ビット）、Ｘ１（２ビット）、及び、Ｙ０（２ビット）、Ｙ１（２ビット）とする。そして、ＧＦ（２＾２）上で以下の計算式を実行して、Ｚ０、Ｚ１を求める。【０１９８】
Ｚ０＝Ｘ０×Ｙ１＋Ｘ１×Ｙ０＋Ｘ０×Ｙ０    ｉｎ  ＧＦ（２＾２）
Ｚ１＝１０（２進数）×Ｘ０×Ｙ０＋Ｘ１×Ｙ１    ｉｎ  ＧＦ（２＾２）【０１９９】
そして、４ビット乗算部２０は、上記のＺ０、Ｚ１を上位からこの順で連結した４ビットデータＺを、４ビット乗算部２０の出力として出力する。【０２００】
ここで、ＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部２０４、２０５、２０７）。ＧＦ（２＾２）上の乗算（２ビット乗算部２００、２０１、２０２、２０３、２０６：図１９）の詳細を次に説明する。【０２０１】
＜２ビット乗算部２１＞
図２０は、２ビット乗算部２１の構成を示したブロック図である。【０２０２】
ここでは、２ビット乗算部２１として説明するが、これまで説明した各種処理で用いられている２ビット乗算部は、すべてこれと同じ構成である。なお、図２１の２ビット乗算部１４３および２ビット乗算部１４４と、図２４の２ビット乗算部１５０ｂ、２ビット乗算部１５０ｃ、及び２ビット乗算部１５０ｄと、図２５の２ビット乗算部１５１ａおよび２ビット乗算部１５１ｂと、図２７の２ビット乗算部１５８ａ、２ビット乗算部１５８ｂ及び２ビット乗算部１５８ｄとについても、この図２０に示される２ビット乗算部２１と同じ構成を有する。【０２０３】
２ビット乗算部２１は、論理積部２１０と、論理積部２１１と、論理積部２１２と、論理積部２１３と、排他的論理和部２１４と、排他的論理和部２１５と、排他的論理和部２１６とを備える。【０２０４】
そして、２ビット乗算部２１は、入力データＸ（２ビット）、Ｙ（２ビット）に対してＧＦ（２＾２）上の乗算を行い、乗算結果Ｚ（２ビット）を出力する。このとき、
Ｚ＝Ｘ×Ｙ    ｉｎ  ＧＦ（２＾２）
である。【０２０５】
そして、２ビット乗算部２１は、入力データＸ、Ｙを、それぞれ上位から１ビットずつに分割して、Ｘ０（１ビット）、Ｘ１（１ビット）、及び、Ｙ０（１ビット）、Ｙ１（１ビット）とする。そして、２ビット乗算部２１は、ＧＦ（２）上で以下の計算式を実行して、Ｚ０、Ｚ１を求める。【０２０６】
Ｚ０＝Ｘ０×Ｙ１＋Ｘ１×Ｙ０＋Ｘ０×Ｙ０    ｉｎ  ＧＦ（２）
Ｚ１＝Ｘ０×Ｙ０＋Ｘ１×Ｙ１    ｉｎ  ＧＦ（２）【０２０７】
そして、２ビット乗算部２１は、上記のＺ０、Ｚ１を上位からこの順で連結し、連結した２ビットデータＺを、２ビット乗算部２１の出力として出力する。【０２０８】
ここで、ＧＦ（２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部２１４、２１５、２１６）。ＧＦ（２）上の乗算は、論理積となる（論理積部２１０、２１１、２１２、２１３）。【０２０９】
次に、ランダム化８ビット逆元計算部１０１（図１４）で用いられる４ビット逆元計算部１１６の詳細について説明する。【０２１０】
＜４ビット逆元計算部１１６＞
図２１は、４ビット逆元計算部１１６（図１４）の構成を示すブロック図である。なお、図３０の４ビット逆元計算部１７１ｃも、この４ビット逆元計算部１１６と同様のものである。【０２１１】
４ビット逆元計算部１１６は、５乗計算部１４１（図２４）と、２ビット逆元計算部１４２（図２２）と、２ビット乗算部１４３（図２０）と、２ビット乗算部１４４（図２０）と、排他的論理和部１４０とを備える。【０２１２】
そして、４ビット逆元計算部１１６は、入力データＸ（４ビット）に対して、ＧＦ（（２＾２）＾２）上の逆元計算を行い、計算結果である出力データＹ（４ビット）を生成する。このとき、【０２１３】
Ｙ＝Ｘ＾（−１）    ｉｎ  ＧＦ（（２＾２）＾２）【０２１４】
である。ここでいう入力データＸは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）においては、４ビット逆元計算部１１６への入力データＣに対応し、出力データＹは、４ビット逆元計算部１１６の出力データＧに対応する。４ビット逆元計算部１１６は、以下の処理を行う。【０２１５】
（１）まず、４ビット逆元計算部１１６は、入力データＸを上位から２ビットずつに分割して、Ｘ０、Ｘ１とする。そして、４ビット逆元計算部１１６は、分割したＸ０を、排他的論理和部１４０、５乗計算部１４１、２ビット乗算部１４３に入力する。また、４ビット逆元計算部１１６は、分割した他方のＸ１を、排他的論理和部１４０、５乗計算部１４１に入力する。【０２１６】
（２）５乗計算部１４１は、入力されるＸ０、Ｘ１に対してＧＦ（（２＾２）＾２）上の５乗計算を行い、その結果Ａ（２ビット）を求める。ここで、Ｘ０、Ｘ１をこの順で結合したデータＸ（４ビット）をＧＦ（（２＾２）＾２）上で５乗した結果が、Ａとなる。即ち、【０２１７】
Ａ＝Ｘ＾５    ｉｎ  ＧＦ（（２＾２）＾２）【０２１８】
である。また、Ａ＾３＝Ｘ＾１５＝１    ｉｎ  ＧＦ（（２＾２）＾２）より、Ａの位数は、３であるから、Ａは、ＧＦ（２＾２）上の元でもある。従って、Ａは２ビットデータとなる。５乗計算部１４１の詳細については、後で説明する（図２４）。【０２１９】
（３）そして、図２１の４ビット逆元計算部１１６が有する２ビット逆元計算部１４２は、上記（２）において５乗計算部１４１により求められる前記Ａ（２ビット）に対して、ＧＦ（２＾２）上の逆元計算を行い、データＢ（２ビット）を生成して、出力する。このとき、【０２２０】
Ｂ＝Ａ＾（−１）    ｉｎ  ＧＦ（２＾２）【０２２１】
である。２ビット逆元計算部１４２の詳細はこの後説明する（図２２）。【０２２２】
（４）次に、以上の計算の結果に基づいて、図２１の４ビット逆元計算部１１６が有する２ビット乗算部１４３、２ビット乗算部１４４が、上記（３）で２ビット逆元計算部１４２により生成される前記Ｂ（２ビット）、及び、上記（１）で分割されたＸ０、Ｘ１から、それぞれ、以下の計算により、Ｙ０（２ビット）、Ｙ１（２ビット）を求める。【０２２３】
Ｙ０＝Ｘ０×Ｂ    ｉｎ  ＧＦ（２＾２）
Ｙ１＝（Ｘ０＋Ｘ１）×Ｂ    ｉｎ  ＧＦ（２＾２）【０２２４】
そして、４ビット逆元計算部１１６は、こうして求められた上記のＹ０、Ｙ１を上位からこの順で連結した４ビットデータＹを、４ビット逆元計算部１１６の出力として出力する。【０２２５】
ここで、ＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１４０）。ＧＦ（２＾２）上の乗算（２ビット乗算部１４３、１４４）の詳細は既に説明した通りである（図２０の２ビット乗算部２１）。【０２２６】
次に、このような図２１の４ビット逆元計算部１１６（図２１）で用いられる２ビット逆元計算部１４２の詳細について説明する。【０２２７】
＜２ビット逆元計算部１４２＞
図２２は、２ビット逆元計算部１４２の構成を示すブロック図である。【０２２８】
２ビット逆元計算部１４２は、排他的論理和部１４２ａを有する。【０２２９】
そして、２ビット逆元計算部１４２は、入力データＸ（２ビット）に対してＧＦ（２＾２）上の逆元計算を行い、計算結果をＹ（２ビット）として出力する。このとき、【０２３０】
Ｙ＝Ｘ＾（−１）    ｉｎ  ＧＦ（２＾２）【０２３１】
となる。２ビット逆元計算部１４２は、Ｘの上位１ビット、下位１ビットをそれぞれＸ０、Ｘ１として分割して、以下の式により、Ｙ０、Ｙ１を求める。【０２３２】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ１＋Ｘ０【０２３３】
そして、Ｙ０、Ｙ１をこの順で結合した２ビットデータＹを、出力とする。【０２３４】
次に、ランダム化８ビット逆元計算部１０１（図１４）の内部で用いられるランダム化４ビット逆元計算部１１４の詳細について説明する。【０２３５】
＜ランダム化４ビット逆元計算部１１４＞
図２３は、ランダム化４ビット逆元計算部１１４（図１４）の構成を示すブロック図である。【０２３６】
ランダム化４ビット逆元計算部１１４（図１４、図２３）は、５乗計算部１５０（図２４）と、５乗計算部１５２（図２４）と、２ビット補正項計算部１５１（図２５）と、４乗計算部１５５（図２６）と、４乗計算部１５７（図２６）と、２ビット出力計算部１５８（図２７）と、２ビット出力計算部１５９（図２７）と、ランダム化２ビット逆元計算部１５４（図２８）と、２ビット逆元計算部１５６と、排他的論理和部１５３とを備える。【０２３７】
そして、ランダム化４ビット逆元計算部１１４は、乱数Ｒ（４ビット）を用いて、入力データＸ（４ビット）に対してランダム化４ビット逆元計算処理を行って、出力データＹ（４ビット）を生成する処理である。ここでいう入力データＸは、ランダム化８ビット逆元計算部１０１の説明（図１４）におけるランダム化４ビット逆元計算部１１４への入力データＤに相当し、乱数Ｒは、Ｃに相当する。また、出力データＹは、Ｅに相当する。ランダム化４ビット逆元計算部１１４は、ランダム化８ビット逆元計算部１０１と同様の計算処理を、ＧＦ（（２＾２）＾２）上で行っている。但し、ランダム化８ビット逆元計算部１０１では、１７乗計算部１１２の出力データＣをランダム化４ビット逆元計算部１１４にも入力していたが、ランダム化４ビット逆元計算部１１４はその出力Ｃをランダム化２ビット逆元計算部１５４には入力しない。また、各処理部に入力されるデータのデータサイズや、べき乗演算時のべき数などが異なる。上記を除けば、その処理手順はランダム化８ビット逆元計算部１０１と同じとなるため、ここでは詳しい説明を割愛する。【０２３８】
なお、ランダム化４ビット逆元計算部１１４の処理は、マスク値Ｒでマスクされている入力データＸ＝Ｍ（＋）Ｒに対して、合成体ＧＦ（（２＾２）＾２）上の逆元計算を行い、マスク値Ｒ＾（−１）でマスクされた処理結果Ｙ＝Ｘ＾（−１）（＋）Ｒ＾（−１）を生成する処理に他ならない。このとき、Ｘ＾（−１）は、ＧＦ（（２＾２）＾２）におけるＸの逆元であり、マスク値Ｒ＾（−１）は、ＧＦ（（２＾２）＾２）におけるＲの逆元となる。【０２３９】
＜５乗計算部１４１、１５０、１５２＞
図２４は、５乗計算部１４１Ｘ（５乗計算部１４１（図２１）、５乗計算部１５０（図２３）、５乗計算部１５２（図２３））の構成を示すブロック図である。【０２４０】
５乗計算部１４１Ｘは、２ビット乗算部１５０ｂと、２ビット乗算部１５０ｃと、２ビット乗算部１５０ｄと、排他的論理和部１５０ａと、排他的論理和部１５０ｅとを備える。ここで、２ビット乗算部１５０ｂと、２ビット乗算部１５０ｃと、２ビット乗算部１５０ｄとは、それぞれ、図２０に示される２ビット乗算部２１と同じ構成のものである。【０２４１】
そして、５乗計算部１４１Ｘ（５乗計算部１４１、１５０、１５２）は、入力データＸ０（２ビット）、Ｘ１（２ビット）に対してＧＦ（（２＾２）＾２）上の５乗計算処理を行って、出力データＹ（２ビット）を出力する。ここでいう入力データＸ０、Ｘ１は、４ビット逆元計算部１１６の説明（図２１）におけるＸ０、Ｘ１に相当し、ランダム化４ビット逆元計算部１１４の説明（図２３）における、Ｘ０、Ｘ１、及び、Ｒ０、Ｒ１に相当する。また、出力データＹは、４ビット逆元計算部１１６の説明（図２１）におけるＡに相当し、ランダム化４ビット逆元計算部１１４の説明（図２３）における、Ａ、及び、Ｃに相当する。【０２４２】
また、出力データＹは、入力データＸ０、Ｘ１をこの順で結合した４ビットデータをＸとしたとき、【０２４３】
Ｙ＝Ｘ＾５    ｉｎ  ＧＦ（（２＾２）＾２）【０２４４】
となる。ここで、Ｙ＾３＝Ｘ＾１５＝１    ｉｎ  ＧＦ（（２＾２）＾２）であるから、Ｙの位数は、３であり、ＹはＧＦ（２＾２）上の元でもある。従って、Ｙは、２ビットのデータとなる。【０２４５】
なお、５乗計算部１４１Ｘ（５乗計算部１４１（図２１）、５乗計算部１５０（図２３）、５乗計算部１５２（図２３））の処理の流れは、既に説明した１７乗計算部１１０Ｘ（図１５、１７乗計算部１１０、１７乗計算部１１２）と基本的には同じであるので、詳細な説明は割愛する。また、排他的論理和部１５０ａ、１５０ｅ、１１０ｅ（図２４）は、ビットごとの排他的論理和演算であり、２ビット乗算部１５０ｂ、２ビット乗算部１５０ｃ、２ビット乗算部１５０ｄ（図２４）の処理は、既に説明した２ビット乗算部２１（図２０）と同じである。【０２４６】
＜２ビット補正項計算部１５１＞
図２５は、２ビット補正項計算部１５１（図２３）の構成を示すブロック図である。【０２４７】
２ビット補正項計算部１５１は、２ビット乗算部１５１ａ（図２０）と、２ビット乗算部１５１ｂ（図２０）と、排他的論理和部１５１ｃとを備える。【０２４８】
そして、２ビット補正項計算部１５１は、入力データＸ０（２ビット）、Ｘ１（２ビット）、Ｒ０（２ビット）、Ｒ１（２ビット）に対して補正項計算処理をＧＦ（（２＾２）＾２）上で行って、出力データＢ（２ビット）を出力する。ここでいう入力データＸ０、Ｘ１、Ｒ０、Ｒ１は、ランダム化４ビット逆元計算部１１４の説明（図２３）における、Ｘ０、Ｘ１、Ｒ０、Ｒ１に相当する。【０２４９】
ここで、２ビット補正項計算部１５１の処理の流れは、既に説明した４ビット補正項計算部１１１（図１６）と基本的には同じであるので、詳細な説明は割愛する。また、排他的論理和部１５１ｃは、ビットごとの排他的論理和演算であり、２ビット乗算部１５１ａ、１５１ｂの処理は、既に説明した２ビット乗算部２１（図２０）と同じである。【０２５０】
＜４乗計算部１５５、１５７＞
図２６は、４乗計算部１５５Ｘ（４乗計算部１５５、４乗計算部１５７：図２３）の構成を示すブロック図である。【０２５１】
４乗計算部１５５Ｘは、排他的論理和部１５５ａを備える。【０２５２】
そして、４乗計算部１５５Ｘは、入力データＸ（４ビット）に対して、合成体ＧＦ（（２＾２）＾２）上の４乗計算を行い、その計算結果をＹ（４ビット）として出力する。このとき、入力データＸに対して、合成体ＧＦ（（２＾２）＾２）上の４乗計算を行った結果が、Ｙとなる。即ち【０２５３】
Ｙ＝Ｘ＾４  ｉｎ  ＧＦ（（２＾２）＾２）【０２５４】
である。また、ここでいう入力データＸは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）におけるデータＸ、または、Ｒのいずれかに相当し、出力データＹは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）におけるデータＦまたはＨのいずれかに相当する。【０２５５】
そして、４乗計算部１５５Ｘは、入力データＸを上位から２ビットずつ分割して、Ｘ０、Ｘ１とした上で、以下の計算をＧＦ（２＾２）上で行い、Ｙ０、Ｙ１を求める。【０２５６】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ０＋Ｘ１    ｉｎ  ＧＦ（２＾２）【０２５７】
ここでＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１５５ａ）。そして、４乗計算部１５５Ｘは、求められたＹ０、Ｙ１をこの順で結合して８ビットデータＹとする。このＹが４乗計算部１５５、１５７の出力データとなる。【０２５８】
＜２ビット出力計算部１５８、１５９＞
図２７は、２ビット出力計算部１５８Ｘ（２ビット出力計算部１５８、２ビット出力計算部１５９：図２３）の構成を示したブロック図である。【０２５９】
２ビット出力計算部１５８Ｘは、２ビット乗算部１５８ａ（図２０）と、２ビット乗算部１５８ｂ（図２０）と、２ビット乗算部１５８ｄ（図２０）と、排他的論理和部１５８ｃと、排他的論理和部１５８ｅとを備える。【０２６０】
そして、２ビット出力計算部１５８Ｘは、このような各部分を用いて、入力データＥ（２ビット）、Ｇ（２ビット）、Ｆ（２ビット）、Ｈ（２ビット）に対して、２ビット出力計算処理を行い、出力データＹを出力する。ここでいう入力データＥ、Ｇ、Ｆ、Ｈは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）においては、２ビット出力計算部１５８への入力データＥ、Ｇ、Ｆ０、Ｈ０にそれぞれ対応し、また、２ビット出力計算部１５９への入力データＥ、Ｇ、Ｆ１、Ｈ１にそれぞれ対応する。また、出力データＹは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）においては、２ビット出力計算部１５８の出力データＹ０に対応し、また、２ビット出力計算部１５９の出力データＹ１に対応する。２ビット出力計算部１５８Ｘは、ＧＦ（２＾２）上で以下の計算を行い、Ｙを求めて、Ｙを出力する。【０２６１】
Ｙ＝Ｅ×Ｆ＋Ｇ×Ｆ＋Ｅ×Ｈ    ｉｎ  ＧＦ（２＾２）【０２６２】
ここで、ＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１５８ｃ、１５８ｅ）。ＧＦ（２＾２）上の乗算（２ビット乗算部１５８ａ、２ビット乗算部１５８ｂ、２ビット乗算部１５８ｄ）は、既に説明した２ビット乗算部２１（図２３）と同じである。【０２６３】
＜ランダム化２ビット逆元計算部１５４＞
図２８は、ランダム化２ビット逆元計算部１５４の構成を示すブロック図である。【０２６４】
ランダム化２ビット逆元計算部１５４は、排他的論理和部１５４ｃを備える。【０２６５】
そして、ランダム化２ビット逆元計算部１５４は、この排他的論理和部１５４ｃを用いつつ、入力データＸ（２ビット）に対してランダム化２ビット逆元計算処理を行って、出力データＹ（２ビット）を生成する処理である。ここでいう入力データＸは、ランダム化４ビット逆元計算部１１４の説明（図２３）における、ランダム化２ビット逆元計算部１５４（図２３、図２８）への入力データＤに相当する。また、出力データＹは、Ｅに相当する。ランダム化２ビット逆元計算部１５４は、Ｘの上位１ビットをＸ０、下位１ビットをＸ１として、以下の式により、Ｙ０、Ｙ１を計算する。【０２６６】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ０＋Ｘ１    ｉｎ  ＧＦ（２＾２）【０２６７】
ここに、ＧＦ（２＾２）上の加算は、排他的論理和演算（排他的論理和部１５４ｃ）である。そして、Ｙ０、Ｙ１を上位からこの順で結合したデータＹ（２ビット）を出力する。【０２６８】
なお、ランダム化２ビット逆元計算部１５４の処理は、マスク値Ｒでマスクされている入力データＸ＝Ｍ（＋）Ｒに対して、合成体ＧＦ（２＾２）上の逆元計算を行い、マスク値Ｒ＾（−１）でマスクされた処理結果Ｙ＝Ｘ＾（−１）（＋）Ｒ＾（−１）を生成する処理に他ならない。このとき、Ｘ＾（−１）は、ＧＦ（２＾２）におけるＸの逆元であり、マスク値Ｒ＾（−１）は、ＧＦ（２＾２）におけるＲの逆元となる。【０２６９】
次に、暗号化部１ａの内部で用いられる乱数更新部１７（図９）の詳細を説明する。先述の通り、乱数更新部１７（図９）は、乱数一時記憶部１６（図９、図３８）に記憶される乱数を更新する。【０２７０】
＜乱数更新部１７＞
図２９は、乱数更新部１７の構成を示すブロック図である。【０２７１】
乱数更新部１７は、合成体変換部１７０と、８ビット逆元計算部１７１と、拡大体変換兼行列変換部１７２とを備える。【０２７２】
そして、乱数更新部１７は、入力乱数Ｘ（８ビット）に対して、乱数更新処理を行い、更新乱数Ｙ（８ビット）を出力データとして出力する。ここでいう、入力データＸは、暗号化部１ａの説明（図９）における、乱数更新部１７の入力乱数Ｒｎ（８ビット）に対応し、出力データＹは、暗号化部１ａの説明（図９）における、乱数更新部１７の出力乱数Ｒｎ＋１（８ビット）に対応する。乱数更新部１７は、以下の処理を行う。【０２７３】
（１）まず、合成体変換部１７０は、入力データＸを上位から１ビットずつ分割して、Ｘ７、Ｘ６、…、Ｘ０として、先述した数式１の行列計算を行い、Ａ７、Ａ６、…、Ａ０を求める。そして、合成体変換部１７０は、Ａ７、Ａ６、…、Ａ０を上位からこの順に連結した８ビットデータをＡとする。【０２７４】
（２）そして、次に、８ビット逆元計算部１７１は、上記（１）で生成された前記Ａに対して、ＧＦ（（（２＾２）＾２）＾２）上の逆元計算処理を行い、Ｂ（８ビット）を求める。このとき、【０２７５】
Ｂ＝Ａ＾（−１）    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）【０２７６】
となる。ＧＦ（（（２＾２）＾２）＾２）上の逆元計算処理の詳細については、後で説明する。【０２７７】
（３）そして、拡大体変換兼行列変換部１７２は、上記（２）で計算されたＢを、上位から１ビットずつ分割して、Ｂ７、Ｂ６、…、Ｂ０として、先述した数式２の行列計算を行い、Ｙ７、Ｙ６、…、Ｙ０を求める。【０２７８】
そして、拡大体変換兼行列変換部１７２は、上記のようにして求めたＹ７、Ｙ６、…、Ｙ０をこの順に連結した８ビットデータを、Ｙとして、乱数更新部１７の出力データとして出力する。【０２７９】
次に、乱数更新部１７で用いる８ビット逆元計算部１７１の詳細について説明する。【０２８０】
＜８ビット逆元計算部１７１＞
図３０は、８ビット逆元計算部１７１（図２９）の構成を示したブロック図である。【０２８１】
８ビット逆元計算部１７１（図３０、図２９）は、１７乗計算部１７１ｂ（図１５）と、４ビット逆元計算部１７１ｃ（図２１）と、４ビット乗算部１７１ｄ（図１９）と、４ビット乗算部１７１ｅ（図１９）と、排他的論理和部１７１ａとを備える。【０２８２】
そして、８ビット逆元計算部１７１は、入力データＸ（８ビット）に対して、ＧＦ（（（２＾２）＾２）＾２）上の逆元計算を行い、計算結果である出力データＹ（８ビット）を生成する。このとき、【０２８３】
Ｙ＝Ｘ＾（−１）    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）【０２８４】
である。ここでいう入力データＸは、乱数更新部１７の処理説明（図２９）においては、８ビット逆元計算部１７１への入力データＡに対応し、出力データＹは、８ビット逆元計算部１７１の出力データＢに対応する。８ビット逆元計算部１７１は、以下の処理を行う。【０２８５】
（１）８ビット逆元計算部１７１は、入力データＸを上位から４ビットずつに分割して、Ｘ０、Ｘ１とする。そして、８ビット逆元計算部１７１は、分割したＸ０を、排他的論理和部１７１ａ、１７乗計算部１７１ｂ、４ビット乗算部１７１ｄに入力する。また、８ビット逆元計算部１７１は、分割したＸ１は、排他的論理和部１７１ａ、１７乗計算部１７１ｂに入力する。【０２８６】
（２）そして、１７乗計算部１７１ｂは、当該１７乗計算部１７１ｂに入力されるＸ０、Ｘ１に対してＧＦ（（（２＾２）＾２）＾２）上の１７乗計算を行い、その結果Ａ（４ビット）を求める。ここで、Ｘ０、Ｘ１をこの順で結合したデータＸ（８ビット）をＧＦ（（（２＾２）＾２）＾２）上で１７乗した結果が、Ａとなる。即ち、【０２８７】
Ａ＝Ｘ＾１７    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）【０２８８】
である。また、Ａ＾１５＝Ｘ＾２５５＝１    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）より、Ａの位数は、１５であるから、Ａは、ＧＦ（（２＾２）＾２）上の元でもある。従って、Ａは４ビットデータとなる。１７乗計算部１７１ｂの詳細については、既に説明した１７乗計算部１１０Ｘ（１７乗計算部１１０（図１６）、１７乗計算部１１２（図１６）：図１５）と同じである。【０２８９】
（３）次に、４ビット逆元計算部１７１ｃ（図３０）は、上記（２）で生成された前記Ａ（４ビット）に対して、ＧＦ（（２＾２）＾２）上の逆元計算を行い、データＢ（４ビット）を生成して、出力する。このとき、【０２９０】
Ｂ＝Ａ＾（−１）    ｉｎ  ＧＦ（（２＾２）＾２）【０２９１】
である。４ビット逆元計算部１７１ｃの詳細は、既に説明した４ビット逆元計算部１１６（図２１）と同じである。【０２９２】
（４）そして、８ビット逆元計算部１７１は、上記（３）で生成される前記Ｂ（４ビット）、及び、上記（１）で分割されたＸ０、Ｘ１から、以下の計算により、それぞれ４ビット乗算部１７１ｄ、４ビット乗算部１７１ｅによって、以下のＹ０（４ビット）、Ｙ１（４ビット）を求める。【０２９３】
Ｙ０＝Ｘ０×Ｂ    ｉｎ  ＧＦ（（２＾２）＾２）
Ｙ１＝（Ｘ０＋Ｘ１）×Ｂ    ｉｎ  ＧＦ（（２＾２）＾２）【０２９４】
そして、８ビット逆元計算部１７１は、上記のＹ０、Ｙ１を上位からこの順で連結した８ビットデータＹを、当該８ビット逆元計算部１７１の出力として出力する。【０２９５】
ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１７１ａ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１７１ｄ、１７１ｅ）の詳細は既に説明した通りである（図１９の４ビット乗算部２０）。【０２９６】
以上により、暗号化装置１の詳細動作が全て説明された。【０２９７】
次に、ランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐ（図１３）が、ＡＥＳ暗号のＳ−ｂｏｘと互換性を保ちつつ、その処理途中のデータがマスクされていることについて説明する。【０２９８】
＜ランダム化８ビット逆元計算部１０１の原理＞
ランダム化８ビット逆元計算部１０１（図１４）は、合成体ＧＦ（（（２＾２）＾２）＾２）上の元Ｘ＝Ｍ＋Ｒ（図３８におけるＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）、Ｍ＝Ｔ１（Ｖ８ｔ）、Ｒ＝Ｔ１（Ｒｔ））を入力として、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）（図３８におけるＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１））を出力する。ここで、Ｍ＾（−１）、Ｒ＾（−１）は、それぞれＧＦ（（（２＾２）＾２）＾２）におけるＭ、Ｒの逆元を表す。以下、そのことを説明する。【０２９９】
１７乗計算部１１０（図１４、図１５）の出力値Ａは、拡大体の性質などを用いて、以下のようになる。【０３００】
Ａ＝Ｘ＾１７
＝（Ｍ＋Ｒ）＾１７
＝（Ｍ＋Ｒ）×（Ｍ＋Ｒ）＾１６
＝（Ｍ＋Ｒ）×（Ｍ＾１６＋Ｒ＾１６）
＝Ｍ＾１７＋Ｒ＾１７＋Ｍ＾１６×Ｒ＋Ｍ×Ｒ＾１６【０３０１】
ここで、ＧＦ（（（２＾２）＾２）＾２）は、既約多項式ｘ＾２＋ｘ＋１１００（２進数）によりＧＦ（（２＾２）＾２）を２次拡大したものであるから、αをｘ＾２＋ｘ＋１１００（２進数）＝０の根とすると、Ｍ、Ｒは以下のように表すことができる。【０３０２】
Ｍ：  Ｍ０×α＋Ｍ１
Ｒ：  Ｒ０×α＋Ｒ１【０３０３】
このとき、Ｍ＾１６×Ｒ＋Ｍ×Ｒ＾１６は、拡大体の性質などを用いると、以下のように計算できる。【０３０４】
（Ｍ０×α＋Ｍ１）＾１６×（Ｒ０×α＋Ｒ１）＋（Ｍ０×α＋Ｍ１）×（Ｒ０×α＋Ｒ１）＾１６
＝｛Ｍ０×α＋（Ｍ０＋Ｍ１）｝×（Ｒ０×α＋Ｒ１）＋（Ｍ０×α＋Ｍ１）×｛Ｒ０×α＋（Ｒ０＋Ｒ１）｝
＝（Ｍ０＋Ｒ０）×Ｒ１＋（Ｍ１＋Ｒ１）×Ｒ０【０３０５】
これは、図１４のランダム化８ビット逆元計算部１０１の処理において、Ｘ０×Ｒ１＋Ｘ１×Ｒ０に等しい。従って、【０３０６】
Ａ＝Ｍ＾１７＋Ｒ＾１７＋Ｘ０×Ｒ１＋Ｘ１×Ｒ０【０３０７】
と表すことができる。ところで、４ビット補正項計算部１１１（図１４、図１６）は、Ｂ＝Ｘ０×Ｒ１＋Ｘ１×Ｒ０を計算していることになるので、結局、ランダム化４ビット逆元計算部１１４（図１４、図２３）への入力データＤは、【０３０８】
Ｄ＝Ａ＋Ｂ
＝Ｍ＾１７＋Ｒ＾１７【０３０９】
となる。ランダム化４ビット逆元計算部１１４は、後で説明するように、入力Ｄ＝Ｍ＾１７＋Ｒ＾１７、Ｃ＝Ｒ＾１７に対して、出力Ｅ＝Ｍ＾（−１７）＋Ｒ＾（−１７）を出力する処理である。このとき、４ビット出力計算部１１８、１１９は、以下の計算を、上位４ビット、下位４ビットごとにそれぞれ分けて計算していることと同じである。【０３１０】
Ｙ＝Ｅ×Ｆ＋Ｇ×Ｆ＋Ｈ×Ｅ
＝｛Ｍ＾（−１７）＋Ｒ＾（−１７）｝×（Ｍ＋Ｒ）＾１６＋Ｒ＾（−１７）×（Ｍ＋Ｒ）＾１６＋Ｒ＾１６×｛Ｍ＾（−１７）＋Ｒ＾（−１７）｝【０３１１】
上記の式を計算すると、
Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）
となり、ランダム化８ビット逆元計算部１０１は、Ｘ＝Ｍ＋Ｒを、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換する処理であることがわかる。【０３１２】
そして、このような、Ｘ＝Ｍ＋Ｒを、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換するランダム化８ビット逆元計算部１０１の一部分である、ランダム化４ビット逆元計算部１１４（図１４、図２３）は、上記と同等の処理をＧＦ（（２＾２）＾２）上で行っていることになるので、上と同様の説明が成り立つ。従って、入力Ｄ＝Ｍ＾１７＋Ｒ＾１７、とＣ＝Ｒ＾１７の入力に対しては、Ｅ＝Ｍ＾（−１７）＋Ｒ＾（−１７）を出力することがわかる。更に、ランダム化４ビット逆元計算部１１４についても、同様のことが言えることは、Ｘ、Ｒの全ての値の組み合わせについて、実際に計算を行うことで確かめることができる。【０３１３】
以上のことより、ランダム化８ビット逆元計算部１０１は、合成体ＧＦ（（（２＾２）＾２）＾２）上の元Ｘ＝Ｍ＋Ｒを、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換する処理であることが説明される。【０３１４】
＜ランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐの動作原理＞
次に、ランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐ（図１３、図１２）の動作原理について説明する。図１３において、Ｘ＝Ｍ＋Ｒ（図３８におけるＩＣ８ｔ＝Ｖ８ｔ＋Ｒｔ，Ｍ＝Ｖ８ｔ、Ｒ＝Ｒｔ）とすると、合成体変換部１００の出力は、Ａ＝Ｔ（Ｘ）＝Ｔ（Ｍ）＋Ｔ（Ｒ）（図３８におけるＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ））となる。ここで、Ｔ（Ｘ）（図３８におけるＴ１）は、ＧＦ（２＾８）上の元を、合成体ＧＦ（（（２＾２）＾２）＾２）上の元に変換した結果である。同様に、他方の合成体変換部１０３は、Ｒ（図３８におけるＲｔ）をＳ＝Ｔ（Ｒ）（図３８におけるＲＤｔ＝Ｔ１（Ｒｔ））に変換する。【０３１５】
次に、先ほど説明したとおり、ランダム化８ビット逆元計算部１０１は、Ａ＝Ｔ（Ｍ）＋Ｔ（Ｒ）、Ｓ＝Ｔ（Ｒ）の入力から、Ｂ＝Ｔ（Ｍ）＾（−１）＋Ｔ（Ｒ）＾（−１）（図３８におけるＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）（−１））を生成する。次に、拡大体変換兼行列変換部１０２（図１３）は、合成体ＧＦ（（（２＾２）＾２）＾２）上の元を、ＧＦ（２＾８）上の元に変換した上で、ＡＥＳ暗号のＳ−ｂｏｘで定義されているＡｆｆｉｎｅ変換のうち、行列演算部分のみを行った結果を出力する。即ち、【０３１６】
Ｃ＝Ｍａｔ（Ｍ＾（−１））＋Ｍａｔ（Ｒ＾（−１））【０３１７】
が出力される（図３８におけるＭａｔ（Ｖ８ｔ＾（−１））＋Ｍａｔ（Ｒｔ＾（−１））。ここで、Ｍａｔ（Ｘ）は、Ｘに対して上記の行列演算、つまり、ＡＥＳ暗号のＳ−ｂｏｘで定義されているＡｆｆｉｎｅ変換のうちの行列演算を行った結果を表す。そして、排他的論理和部１０４（図１３）は、入力される上記Ｃと、定数０１１０００１１（２進数）とのＧＦ（２＾８）上の加算を行うが、この定数は、ＡＥＳ暗号のＳ−ｂｏｘで定義されているＡｆｆｉｎｅ変換で定義されている、定数加算の定数である。即ち、排他的論理和部１０４の出力結果Ｙは、【０３１８】
Ｙ＝｛Ｍａｔ（Ｍ＾（−１））＋０１１０００１１｝＋Ｍａｔ（Ｒ＾（−１））【０３１９】
となる（図３８におけるＭａｔ（Ｖ８ｔ＾（−１））＋０１１０００１１＋Ｍａｔ（Ｒｔ＾（−１））。上式の｛  ｝部分は、Ｍに対して、ＡＥＳ暗号のＳ−ｂｏｘ変換を行った結果に他ならず、【０３２０】
Ｙ＝Ｓ−ｂｏｘ［Ｍ］＋Ｍａｔ（Ｒ＾（−１））【０３２１】
と表すことができる（図３８におけるＳ−ｂｏｘ（Ｖ８ｔ）＋Ｍａｔ（Ｒｔ＾（−１））。ここでＳ−ｂｏｘ［Ｘ］は、Ｘに対してＡＥＳ暗号のＳ−ｂｏｘ変換を行った結果を表す。【０３２２】
＜暗号化装置１の動作原理＞
次に、暗号化装置１が、ＡＥＳ暗号アルゴリズムと互換性を保っていることを説明する。【０３２３】
まず、図９において、平文データＰ（１２８ビット）は、乱数Ｒ０（８ビット）によって、マスクされる。マスク処理部１０による処理結果Ａは、Ａ＝Ｐ＋（Ｒ０，Ｒ０，…，Ｒ０）となる。次に、ＡｄｄＲｏｕｎｄＫｅｙ１１の処理結果により、Ｂ＝Ｐ＋ＲＫ０＋（Ｒ０，Ｒ０，…，Ｒ０）に変換される。ここで、Ｐ＋ＲＫ０は、マスクがかかっていないときのＡｄｄＲｏｕｎｄＫｅｙ処理結果であり、これをＭとすると、Ｂ＝Ｍ＋（Ｒ０，Ｒ０，…，Ｒ０）となる。次に、ｎ＝１〜９に対して、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理が行われるが、それについては、図１０を参照して説明を行う。【０３２４】
図１０において、入力Ｘは、マスクがかかっていないときのランダム化Ｒｏｕｎｄ＿ｎ１２の入力値（つまり本来の値）をＭとすると、Ｘ＝Ｍ＋（Ｒ０，Ｒ０，…，Ｒ０）と表せる。ランダム化ＳｕｂＢｙｔｅｓ１２０は、図１２に示すような、ランダム化Ｓ−ｂｏｘからなる処理である。今、Ｍを上位から８ビットずつに分割してＭ０、Ｍ１、…、Ｍ１５とすると、【０３２５】
Ｘ＝（Ｍ０，Ｍ１，…，Ｍ１５）＋（Ｒ０，Ｒ０，…，Ｒ０）【０３２６】
と表せる。ここで、先ほどのランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐの動作原理説明から、ランダム化ＳｕｂＢｙｔｅｓ１２０の出力Ｙは、Ｙ＝（Ｓ−ｂｏｘ［Ｍ０］，Ｓ−ｂｏｘ［Ｍ１］，…，Ｓ−ｂｏｘ［Ｍ１５］）＋（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）と表せる。即ち、【０３２７】
Ｙ＝ＳｕｂＢｙｔｅｓ（Ｍ）＋（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）【０３２８】
である。つまり、ランダム化ＳｕｂＢｙｔｅｓ１２０の出力データは、（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）でマスクをされていることになる。次に、ＳｈｉｆｔＲｏｗｓ１２１の出力、ＭｉｘＣｏｌｕｍｎ１２２の出力は、いずれもＡＥＳ暗号アルゴリズムで規定されているＳｈｉｆｔＲｏｗｓ処理、ＭｉｘＣｏｌｕｍｎ処理をそのまま実行することで、（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）でマスクされたＳｈｉｆｔＲｏｗｓ処理結果、ＭｉｘＣｏｌｕｍｎ処理結果が得られることがわかる。従って、ランダム化Ｒｏｕｎｄ＿ｎ１２処理の入力値がＲでマスクをされていれば、その出力値は、Ｍａｔ［Ｒ０＾（−１）］でマスクされた状態で出力される。従って、Ｒ１＝Ｍａｔ［Ｒ０＾（−１）］として、ｎ＝１のランダム化Ｒｏｕｎｄ＿ｎ１２処理を実行すれば、Ｒ１でマスクされた状態の入力データは、Ｒ２＝Ｍａｔ［Ｒ１＾（−１）］でマスクされた状態の出力データが出力される。なお、Ｍａｔ［Ｒ０＾（−１）］、Ｍａｔ［Ｒ１＾（−１）］の処理は、図２９の乱数更新部処理に他ならない。以上のことをランダム化Ｒｏｕｎｄ＿１０  １３の処理まで繰り返せば、ランダム化Ｒｏｕｎｄ＿１０  １３（図９、図１１）の出力データは、平文Ｐに対してＡＥＳ暗号処理を行った結果の暗号文Ｃに対して、Ｒ１１＝Ｍａｔ［Ｒ１０＾（−１）］でマスクされた状態のデータが出力される。従って、アンマスク処理部１４において、Ｒ１１による排他的論理和処理を行うことで、暗号文Ｃ（図９）が得られる。【０３２９】
また、これまでの動作原理の説明からも分かるとおり、暗号処理過程の中間データは、つねに、乱数Ｒ０もしくはＲ０から所定の演算により算出される値によってマスクされている。従って、暗号化装置１に対する電力解析攻撃による鍵の解析は困難である。【０３３０】
図３８は、暗号化装置１および暗号化装置１が有する部分の間の包含関係と、それら全体、部分の間における入出力データを示す図である。図３８を参照して、上記の説明において示された、それら包含関係および入出力データを整理する。【０３３１】
暗号化部１ａは（図９、図３１）、平文Ｕが入力され、暗号文Ｃを出力する。【０３３２】
ここで、図３８に示されるＶｔ（ｔ＝１〜１１）の記号は、平文Ｕに対して、ラウンドｔまでの処理がされた中間データである。暗号化部１ａは、ラウンド（ｔ−１）までの処理により、このＶｔを乱数Ｒｔによりマスクしたランダム化出力データＯＡｔ＝Ｖｔ＋｛Ｒｔ、Ｒｔ、…、Ｒｔ｝を生成する。【０３３３】
乱数一時記憶部１６（図９）は、乱数Ｒ０をマスク処理部１０に供給し、乱数Ｒ１〜乱数Ｒ１０を、ランダム化８ビット逆元計算部１０１を有するランダム化Ｓ−ｂｏｘ１２１Ｘに供給し、乱数Ｒ１１をアンマスク処理部１４に供給する。【０３３４】
ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘ（図９、図１０、図１１）は、各ラウンドの処理において、それぞれ、ＩＡｔ＝Ｖｔ＋｛Ｒｔ，Ｒｔ，…，Ｒｔ｝（図９におけるＢ又はＤ、図１０および図１１におけるＸ）と、乱数Ｒｔ（図９のＲｎ、図１０のＲｎ，図１１のＲ１０）とが入力され、入力されたＩＡｔが示す本来の値たる中間値Ｖｔに対して第ｔラウンドの処理をした中間データＶ（ｔ＋１）を、乱数Ｒ（ｔ＋１）によりマスクしたＯＡｔ＝Ｖ(ｔ+１) + ｛Ｒ(ｔ+１)，Ｒ(ｔ+１)，・・・Ｒ(ｔ+１)｝を出力する。ここで、ランダム化出力データＯＡｔのマスク値の影響を除去した本来の値は、第ｔラウンドの処理がされた上記中間データＶである。【０３３５】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１０、図１１、図１２）は、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘへの入力ＩＡｔであるＩＢｔ＝ＩＡｔ＝Ｖｔ＋｛Ｒｔ，Ｒｔ，…，Ｒｔ｝（図１０及び図１１のＸ、図１２のＸ）および乱数Ｒｔ（図１２のＲ、図１０のＲｎ，図１１のＲ１０）が入力され、第ｔラウンドのＳｕｂＢｙｔｅｓ処理がされたＯＢｔ＝Ｓ−ｂｏｘ（Ｖｔ）＋｛Ｒ（ｔ＋１），Ｒ（ｔ＋１），…，Ｒ（ｔ＋１）｝（図１０及び図１１のＡ、図１２のＹ）を出力する。【０３３６】
ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１２、図１３）は、ランダム化ＳｕｂＢｙｔｅｓへの入力ＩＢｔが分割された８ビットＩＣ８ｔ＝ＩＢ８ｔ＝Ｖ８ｔ＋Ｒｔ（図１２に示されるＸ［０］、Ｘ［１］、…、又はＸ［１５］の何れか、図１３のＸ）および乱数Ｒｔ（図１３のＲ、図１２のＲ）が入力され、その８ビットに対して第ｔラウンドのＳ−Ｂｏｘ処理がされたＯＣ８ｔ＝Ｓ−ｂｏｘ（Ｖ８ｔ）＋Ｒ（ｔ＋１）（図１２のＹ［０］、Ｙ［１］、…、又はＹ［１５］の何れか、図１３のＹ）を出力する。【０３３７】
そして、ランダム化８ビット逆元計算部１０１（図１３、図１４）は、数式１による行列計算（合成体変換部１００および合成体変換部１０３の説明を参照）が記号Ｔ１により示されたものとして、ランダム化Ｓ−Ｂｏｘに入力される上記ＩＣ８ｔに基づいたＩＤ８ｔ＝Ｔ１（ＩＣ８ｔ）＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）と、乱数一時記憶部１６の乱数Ｒｔに基づいたＲＤｔ＝Ｔ１（Ｒｔ）（図１３のＳ、図１４のＲ）とが入力されて、Ｍ＋ＰからＭ＾（−１）＋Ｐ＾（−１）への演算を、これら入力に基づいて行った結果であるＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）（図１３のＢ，図１４のＹ）を出力する。【０３３８】
ここで、ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１３、図１２）は、このランダム化８ビット逆元計算部１０１の出力ＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）（図１３のＢ、図１４のＹ）に基づいて、拡大体変換兼行列変換部１０２および排他的論理和部１０４による計算をして、ＯＣ８ｔ＝｛Ｍａｔ（Ｖ８ｔ＾（−１））＋Ｍａｔ（Ｒｔ＾（−１））｝＋０１１０００１１＝｛Ｍａｔ（Ｖ８ｔ＾（−１））＋０１１０００１１｝＋Ｍａｔ（Ｒｔ＾（−１））＝Ｓ−ｂｏｘ（Ｖ８ｔ）＋Ｍａｔ（Ｒｔ＾（−１））＝Ｓ−ｂｏｘ（Ｖ８ｔ）＋Ｒ（ｔ＋１）を求め、求められたこのＯＣ８ｔを出力する（図１２のＹ［０］、Ｙ［１］、…、又はＹ［１５］の何れか、図１３のＹ）。【０３３９】
そして、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１２、図１０、図１１）は、各ランダム化Ｓ−ｂｏｘ１２０Ｘ（ランダム化Ｓ−ｂｏｘ１２０ａ〜ランダム化Ｓ−ｂｏｘ１２０ｐ）により出力されるこのＯＣ８ｔを連結し、出力データＯＢｔ＝Ｓ−ｂｏｘ（Ｖｔ）＋｛Ｒ（ｔ＋１），Ｒ（ｔ＋１），…，Ｒ（ｔ＋１）｝を出力する（図１０及び図１１のＡ、図１２のＹ）。【０３４０】
これにより、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘは、出力されるＯＢｔから、例えば、ＳｈｉｆｔＲｏｗｓ処理を行うなどして、ＯＡｔ＝Ｖ（ｔ＋１）＋｛Ｒ（ｔ＋１），Ｒ（ｔ＋１），…，Ｒ（ｔ＋１）｝を計算し、計算されたＯＡｔを、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘの次のラウンド、つまり第ｔ＋１ラウンドのランダム化入力データＩＡｔとして、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘに入力する。【０３４１】
これにより、アンマスク処理部１４には、ｔ＝１０のときのランダム化Ｒｏｕｎｄ＿t１２Ｘにより，ＯＡｔ＝ＯＡ１０＝Ｖ１１＋｛Ｒ１１，Ｒ１１，…，Ｒ１１｝が入力され、また、乱数Ｒ１１が乱数一時記憶部１６から入力されて（図９のＥ、図１１のＹ）、入力されるこのＯＡ１０＝Ｖ１１＋｛Ｒ１１，Ｒ１１，…，Ｒ１１｝に対して乱数Ｒ１１での排他的論理和演算を行うことによって、暗号文Ｃ＝Ｖ１１を出力する。【０３４２】
以上ようにして、鍵（ＲＫ０など）を用いて平文Ｕ（図３８）から暗号文Ｃ（図３８）を生成する暗号化装置１であって、乱数Ｒ０を生成する乱数生成部１５と、前記平文Ｕを受け付けて、前記乱数Ｒ０に依存して決まる予め定められた入力マスク値Ｔ１（Ｒｔ）が、前記平文Ｕに対して前記鍵（ＲＫ０など）によって予め定められた処理がされた入力データＴ１（Ｖ８ｔ）に対して加算されたランダム化入力データＴ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）を生成するランダム化入力データ生成部（マスク処理部１０（図９、図３８）、ＡｄｄＲｏｕｎｄＫｅｙ１１（図９）、および、ランダム化Ｒｏｕｎｄ＿ｎ１２における合成体変換部１００（図１３）、拡大体変換兼行列変換部１０２（図１３）、排他的論理和部１０４（図１３））と、前記ランダム化入力データ生成部により生成された前記ランダム化入力データＩＤ８ｔと、前記入力マスク値Ｔ１（Ｒｔ）＝ＲＤｔとを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値Ｔ１（Ｒｔ）＾（−１）が、前記入力データＴ１（Ｖ８ｔ）の当該第１の有限体における逆元Ｔ１（Ｖ８ｔ）＾（−１）に対して加算されたランダム化出力データＴ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）を生成するランダム化８ビット逆元計算部１０１と、前記ランダム化８ビット逆元計算部１０１により生成されたランダム化出力データＯＤ８１０（ｔ＝１０）を受け付けて、受け付けた当該ランダム化出力データから前記暗号文Ｃを生成する出力部（ランダム化Ｒｏｕｎｄ＿１０  １３における拡大体変換兼行列変換部１０２（図１３）および排他的論理和部１０４（図１３）と、ＳｈｉｆｔＲｏｗｓ１３１（図１１）と、ＡｄｄＲｏｕｎｄＫｅｙ１３２（図１１）と、アンマスク処理部１４（図９、図３８））と、を備えることを特徴とする暗号化装置１が構成される。【０３４３】
そして、この暗号化装置１においては、前記ランダム化８ビット逆元計算部１０１は、前記ランダム化入力データＩＤ８ｔ（図１４のＸ）と前記入力マスク値（Ｔ１（Ｒｔ）、図１４のＲ）とに対して予め定められた第１のべき数（１７乗）によるべき乗計算を行い、第１のべき乗ランダム化入力データ（図１４のＡ）と第１のべき乗入力マスク値（図１４のＣ）とをそれぞれ各べき乗計算により生成する１７乗計算部１１０、１１２（図１４）と、前記ランダム化入力データ（図１４のＸ）と前記入力マスク値（図１４のＲ）とから、予め定められた補正データ（図１４のＢ）を生成する４ビット補正項計算部１１１（図１４、図１６）と、生成された前記補正データ（図１４のＢ）を、計算された前記第１のべき乗ランダム化入力データ（図１４のＡ）に加算して、副ランダム化入力データ（図１４のＤ）を生成する排他的論理和部１１３（図１４）と、前記副ランダム化入力データ（図１４のＤ）と前記第１のべき乗入力マスク値（図１４のＣ）とを受け付けて、当該第一のべき乗入力マスク値（図１４のＣ）の第２の有限体における逆元であるマスク値（Ｃ＾（−１））が、前記副ランダム化入力データ（図１４のＤ）の前記第２の有限体における逆元である出力データ（Ｄ＾（−１））に加算されたランダム化副出力データ（図１４のＥ＝Ｄ＾（−１）＋Ｃ＾（−１））を生成するランダム化４ビット逆元計算部１１４（図１４、図２３）と、前記ランダム化副出力データ（図１４のＥ）と、前記ランダム化入力データ（図１４のＸ）と、前記入力マスク値（図１４のＲ）と、前記第１のべき乗入力マスク値（図１４のＣ）とから、前記ランダム化出力データ（図１４のＹ）を生成するその他の部分とを備える。【０３４４】
そして、ここで、その、「その他の部分」は、前記ランダム化入力データ（図１４のＸ）と、前記入力マスク値（図１４のＲ）とに対して予め定められた第２のべき数（１６乗）によるべき乗計算を行い、第２のべき乗ランダム化入力データ（図１４のＦ）と第２のべき乗入力マスク値（図１４のＨ）とを各べき乗計算によりそれぞれ生成する１６乗計算部１１５、１１７（図１４、図１７）と、前記第１のべき乗入力マスク値（図１４のＣ）に対して前記第２の有限体上の逆元計算を行い、前記第１のべき乗入力マスク値（図１４のＣ）の前記第２の有限体における逆元である逆元べき乗入力マスク値（図１４のＧ）を生成する４ビット逆元計算部１１６（図１５、図２１）と、前記ランダム化副出力データ（図１４のＥ）と、前記第２のべき乗ランダム化入力データ（図１４のＦ）と、前記第２のべき乗入力マスク値（図１４のＨ）と、前記逆元べき乗入力マスク値（図１４のＧ）とから、前記ランダム化出力データ（図１４のＹ）を生成するその他の部分（４ビット出力計算部１１８および４ビット出力計算部１１９）とを含む。【０３４５】
また、この暗号化装置１は、前記平文Ｕに対してＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号の暗号化処理を行い、ＡＥＳ暗号の暗号文Ｃを生成し、前記入力データの逆元Ｔ１（Ｖ８ｔ）＾（−１）は、ＡＥＳ暗号のＳｂｏｘテーブルと等価である逆元計算およびアフィンのうちの逆元計算が前記入力データＴ１（Ｖ８ｔ）にされた計算結果である。【０３４６】
このため、この暗号化装置１によれば、段数が少ない簡単な構成により、ＡＥＳ暗号の暗号化の逆元計算をでき、ひいては、ＡＥＳ暗号の暗号化の処理をできる。【０３４７】
また、この暗号化装置１は、前記ランダム化８ビット逆元計算部１０１により用いられる前記入力マスク値ＲＤｔを生成するマスク値生成部（乱数更新部１７および合成体変換部１０３（図９、図１３、図２９））を更に備える。【０３４８】
これにより、暗号化装置１内で入力マスク値が生成されて、システムの構成を簡単にできる。【０３４９】
そして、この暗号化装置１は、前記マスク入力データ生成部は、前記平文Ｕから第１のランダム化入力データＩＤ８ｔ＝ＩＤ８１＝Ｔ１（Ｖ８１）＋Ｔ１（Ｒ１）を生成する第１部分（マスク処理部１０（図３８、図９）、ＡｄｄＲｏｕｎｄＫｅｙ１１（図９）、合成体変換部１００（図１３））と、第（ｔ−１）のランダム化出力データＯＤ８（ｔ−１）を受け付けて、第（ｔ−１）の出力マスク値ＲＤ（ｔ−１）＾（−１）＝Ｔ１（Ｒｔ）から決まる予め定められた第ｔの入力マスク値Ｔ１（Ｒｔ）＝Ｔ１（Ｍａｔ（Ｒｔ＾（−１）））が加算された第ｔのランダム化入力データＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）（２≦ｔ≦Ｊ）を生成する第２部分（拡大体変換兼行列変換部１０２（図１３）、排他的論理和部１０４（図１３）、ランダム化Ｒｏｕｎｄ＿ｎ１２におけるＳｈｉｆｔＲｏｗｓ１２１（図１０）、ＭｉｘＣｏｌｕｍｎｓ１２２（図１０）、ＡｄｄＲｏｕｎｄＫｅｙ１２３（図１０）、合成体変換部１００）とを備え、前記マスク値生成部は、生成される前記乱数Ｒ０から前記第１の入力マスク値ＲＤ１〜第Ｊの入力マスク値ＲＤＪを生成し（Ｊ＝１０）、ランダム化８ビット逆元計算部１０１は、前記第１部分により生成された前記第１のランダム化入力データＩＤ８１と、生成された前記第１の入力マスク値ＲＤ１とから前記第１のランダム化出力データＯＤ８１を生成すると共に、前記第２部分により生成された前記第ｔのランダム化入力データＩＤ８ｔ（２≦ｔ≦Ｊ）と、生成された前記第ｔの入力マスク値ＲＤｔとから前記第ｔのランダム化出力データＯＤ８ｔを生成する（２≦ｔ≦Ｊ）暗号化装置１である。【０３５０】
なお、ここで、この暗号化装置１は、上記第１部分（マスク処理部１０（図３８、図９）、ＡｄｄＲｏｕｎｄＫｅｙ１１（図９）、合成体変換部１００（図１３））は、上記マスク値生成部から（乱数更新部１７から）、第１の入力マスク値ＲＤ１＝Ｔ１（Ｒ１）を特定する特定データＲ０を取得し、取得した特定データＲ０と前記平文Ｕとから、上記第１の入力マスク値ＲＤ１＝Ｔ１（Ｒ１）が加算された前記第１のランダム化入力データＩＤ８ｔ＝ＩＤ８１＝Ｔ１（Ｖ８１）＋Ｔ１（Ｒ１）を生成し、前記マスク値生成部は（乱数更新部１７は）、前記第Ｊの出力マスク値Ｔ１（Ｒ１０）＾（−１）を特定する特定データＲ１１を生成し、前記出力部は、生成された当該特定データＲ１１と、当該特定データＲ１１が特定する前記第Ｊの出力マスク値Ｔ１（Ｒ１０）＾（−１）が加算された第Ｊのランダム化出力データＯＤ８ｔとを受け付けて、それらから前記暗号文Ｃを生成する。【０３５１】
なお、前記マスク値生成部は、値を保持し、前記乱数Ｒ０が生成されると、生成された乱数Ｒ０を保持する保持部（乱数一時記憶部１６（図９））と、予め定められた計算により前記第ｔの入力マスク値が算出される乱数Ｒｔを、保持される乱数Ｒ（ｔ−１）から生成し、生成された乱数Ｒｔを前記保持部に保持させる保持制御部（乱数更新部１７（図９））と、保持される前記乱数Ｒｔから、それぞれ、前記計算によって前記第ｔの入力マスク値を算出する（ｔ＝１、２、…、Ｊ）算出部（合成体変換部１０３（図１３））とを備える。【０３５２】
これにより、乱数Ｒｔが保持されることにより、保持される乱数Ｒｔから、第（ｔ＋１）の入力マスク値が簡単な処理により算出され、簡単な処理によって各入力マスク値を算出することができる。【０３５３】
なお、請求の範囲に記載の「乱数生成部」は、例えば、乱数生成部１５、乱数一時記憶部１６及び乱数更新部１７の全体に対応すると解してもよい。このように解する場合、請求の範囲に記載の「マスク値生成部」は、上記したように乱数更新部１７および合成体変換部１０３に対応するのでなく、合成体変換部１０３のみに対応すると考えてもよい。【０３５４】
なお、このような暗号化装置１は、上記した各部分を実現する回路がそれぞれ設けられた集積回路を備えるものとしてもよく、この集積回路が、それら各部分を用いて上記した作用を働かせ、上記した方法を実行するものであってもよい。【０３５５】
＜復号化装置３＞
暗号化装置１に対応する復号化装置３の構成を、図３１〜図３７に示す。これらの処理は、暗号化装置１の処理の逆変換処理であり、基本的な処理フローは、暗号化装置１で説明した内容と同じであるため、詳細説明は省略する。なお、図３６のランダム化ＩｎｖＳ−Ｂｏｘ３３１ａ〜３３１ｐの合成体変換兼逆行列変換部３００では、以下の行列演算式【０３５６】
【数３】
2008146482.tif 000005
【０３５７】
を用いるものとし、同じ図３６に示される拡大体変換部３０２では、以下の行列演算式【０３５８】
【数４】
2008146482.tif 000006
【０３５９】
を用いるものとする。【０３６０】
これにより、鍵を用いて暗号文から復号文を生成する復号化装置３であって、乱数を生成する乱数生成部３５（図３２）と、前記暗号文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記暗号文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成する入力部（マスク処理部３０（図３２）、ＡｄｄＲｏｕｎｄＫｅｙ３１（図３２）、ＩｎｖＳｈｉｆｔＲｏｗｓ３２０（図３３）、図３６に示される排他的論理和部、ランダム化ＩｎｖＲｏｕｎｄ＿ｎ３２（図３２、図３３）が有する拡大体変換部３０２（図３６）、ＡｄｄＲｏｕｎｄＫｅｙ３２２（図３３）、ＩｎｖＭｉｘＣｏｌｕｍｎｓ３２３（図３３）、ランダム化ＩｎｖＲｏｕｎｄ＿０  ３３（図３４）が有するＩｎｖＳｈｉｆｔＲｏｗｓ３３０（図３４））と、前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、前記入力データの当該第１の有限体における逆元に対して加算されたランダム化出力データを生成する８ビットランダム化合成体逆元計算部３０１（図３６）と、前記８ビットランダム化合成体逆元計算部３０１により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記復号文を生成する出力部（ランダム化ＩｎｖＲｏｕｎｄ＿０  ３３（図３２、図３４）が有する拡大体変換部３０２（図３６）、ＡｄｄＲｏｕｎｄＫｅｙ３３２（図３４）、アンマスク処理部３４（図３２））と、を備えることを特徴とする復号化装置３が構成される。【０３６１】
＜最大論理段数の見積もり＞
以上で説明した実施の形態における、ランダム化８ビット逆元計算部１０１（図１４、図１３）の最大論理段数を見積もる。ランダム化８ビット逆元計算部１０１を、回路で実現したときのクリティカルパスとその最大論理段数を見積もると以下のようになる。【０３６２】
ランダム化８ビット逆元計算部１０１のクリティカルパスは、図１４において以下の通りとなる。【０３６３】
１７乗計算部１１０  ⇒  排他的論理和部１１３  ⇒  ランダム化４ビット逆元計算部１１４  ⇒  ４ビット出力計算部１１８【０３６４】
そして、このパスの途中にある４ビット出力計算部１１８のクリティカルパスは、以下の通りとなる（図１８）。【０３６５】
４ビット乗算部１１８ａ  ⇒  排他的論理和部１１８ｃ  ⇒  排他的論理和部１１８ｅ【０３６６】
また、図１４のパスの途中にあるランダム化４ビット逆元計算部１１４のクリティカルパスは、以下の通りとなる（図２３）。【０３６７】
５乗計算部１５０  ⇒  排他的論理和部１５３  ⇒  ランダム化２ビット逆元計算部１５４  ⇒  ２ビット出力計算部１５８【０３６８】
そして、この図２３に示される２ビット出力計算部１５８のクリティカルパスは、以下の通りとなる（図２７）。【０３６９】
２ビット乗算部１５８ａ  ⇒  排他的論理和部１５８ｃ  ⇒  排他的論理和部１５８ｅ【０３７０】
そして、先述の図２３のパスの途中にあるランダム化２ビット逆元計算部１５４のクリティカルパスは、以下の通りとなる（図２８）。【０３７１】
排他的論理和部１５４ｃ【０３７２】
以上より、ランダム化８ビット逆元計算部１０１（図１４）の最大論理段数は、以下の処理をシリアルに処理したときの論理段数になる。【０３７３】
１７乗計算×１回
５乗計算×１回
４ビット乗算×１回
２ビット乗算×１回
排他的論理和演算×７回【０３７４】
なお、ここに、上記「排他的論理和演算×７回」における「７回」は、次の計算、７＝１＋２＋１＋２＋１によるものである。即ち、従来技術２のランダム化８ビット逆元計算部８１（図１）よりも、排他的論理和演算が１１回も削減されており、最大論理段数の削減が実現されている。【０３７５】
（変形例）
なお、本実施の形態では、電力解析攻撃対策の対象とする暗号を、ＡＥＳ暗号としているが、ＡＥＳ暗号だけに限らず、暗号処理の中に逆元演算が使われている、あるいは、暗号処理の中で使われているテーブル変換処理が、逆元演算に基づいて構成可能な暗号方式であれば適用可能である。そのような暗号方式としては、他にＩＳＯ／ＩＥＣ  １８０３３−３：２００５，“Ｉｎｆｏｒｍａｔｉｏｎ  ｔｅｃｈｎｏｌｏｇｙ  ――  Ｓｅｃｕｒｉｔｙ  ｔｅｃｈｎｉｑｕｅｓ  ――  Ｅｎｃｒｙｐｔｉｏｎ  ａｌｇｏｒｉｔｈｍｓ  ――  Ｐａｒｔ  ３：  Ｂｌｏｃｋ  ｃｉｐｈｅｒｓ”（非特許文献：３）に記載のＣａｍｅｌｌｉａ暗号がある。【０３７６】
また、上記実施の形態は、ソフトウェアとして実装した場合であっても、変換テーブルを配列として保持する必要がなくなるので、従来技術同様コードサイズの節約が可能で、かつ、従来技術よりも暗号化処理時間の削減できるという効果がある。【０３７７】
また、上記実施の形態では、全ての処理を演算回路によって実装した場合について説明しているが、これらの処理の一部を変換テーブルとして実装しても良い。例えば、ランダム化４ビット逆元計算部１１４の場合、４ビット×１６個の要素からなる配列Ｉｎｖ４［１６］として実装し、４ビット入力Ｘに対して、４ビット出力をＩｎｖ４［Ｘ］として出力すれば良い。【０３７８】
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。【０３７９】
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【０３８０】
（２）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。【０３８１】
（３）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。【０３８２】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。【０３８３】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。【０３８４】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。【０３８５】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。【０３８６】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。【０３８７】
（５）なお、前記マスク値生成部は、ランダム化８ビット逆元計算部１０１（図１４）が、ランダム化入力データからランダム化出力データを計算するのと並列に、当該計算で当該ランダム化８ビット逆元計算部１０１が用いるＲＤｔよりも後に当該ランダム化８ビット逆元計算部１０１が用いるＲＤ（ｔ＋１）等を生成するものであってもよい。こうすれば、ランダム化８ビット逆元計算部１０１は、当該ＲＤ（ｔ＋１）等を、遅滞なく利用開始でき、暗号化装置１が高速に動作するようにできる。【０３８８】
（６）また、次の態様を採ってもよい。【０３８９】
すなわち、コンピュータを用いて、平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成する暗号化処理プログラムであって、乱数を生成し、ランダム化入力データと入力マスク値を受け付けて第１の有限体上の逆元計算を行い、ランダム化出力データを出力し、前記ランダム化入力データは、入力マスク値と入力データとの加算によりマスクされた値であり、前記ランダム化出力データは、出力マスク値と出力データとの加算によりマスクされた値であり、前記入力マスク値は、前記乱数に依存して決まる値であり、前記出力データは、前記入力データの前記第１の有限体における逆元であり、前記出力マスク値は、前記入力マスク値の前記第１の有限体における逆元である情報処理を前記コンピュータに行わせること、を特徴とする暗号化処理プログラムの態様を採ってもよい。【０３９０】
また、次の態様を採ってもよい。すなわち、コンピュータを用いて、鍵を用いて平文から暗号文を生成するためのコンピュータプログラムであって、乱数を生成する乱数生成機能と、前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成機能と、前記ランダム化入力データ生成機能により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成機能と、前記第１のランダム化逆元データ生成機能により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理機能と、を前記コンピュータに実現させるためのコンピュータプログラムの態様を採ってもよい。【０３９１】
なお、これら暗号化処理プログラム、コンピュータプログラムは、それぞれ、互いに異なる処理を並列に実行するマルチプロセッサ等により実行されるものであってもよく、その場合においては、当該コンピュータプログラムは、ランダム化入力データからランダム化出力データが生成されるのと並列に、前記入力マスク値の生成を前記コンピュータに行わせるものであってもよい。【０３９２】
（７）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０３９３】
本発明にかかる暗号化装置は、電力解析攻撃を阻止しつつ、従来技術よりも、暗号処理の処理量を削減するという特徴を有するので、高速処理あるいは低コストでの実現が求められる暗号化装置の実現に有用である。
【図１】
2008146482.tif 000007
【図２】
2008146482.tif 000008
【図３】
2008146482.tif 000009
【図４】
2008146482.tif 000010
【図５】
2008146482.tif 000011
【図６】
2008146482.tif 000012
【図７】
2008146482.tif 000013
【図８】
2008146482.tif 000014
【図９】
2008146482.tif 000015
【図１０】
2008146482.tif 000016
【図１１】
2008146482.tif 000017
【図１２】
2008146482.tif 000018
【図１３】
2008146482.tif 000019
【図１４】
2008146482.tif 000020
【図１５】
2008146482.tif 000021
【図１６】
2008146482.tif 000022
【図１７】
2008146482.tif 000023
【図１８】
2008146482.tif 000024
【図１９】
2008146482.tif 000025
【図２０】
2008146482.tif 000026
【図２１】
2008146482.tif 000027
【図２２】
2008146482.tif 000028
【図２３】
2008146482.tif 000029
【図２４】
2008146482.tif 000030
【図２５】
2008146482.tif 000031
【図２６】
2008146482.tif 000032
【図２７】
2008146482.tif 000033
【図２８】
2008146482.tif 000034
【図２９】
2008146482.tif 000035
【図３０】
2008146482.tif 000036
【図３１】
2008146482.tif 000037
【図３２】
2008146482.tif 000038
【図３３】
2008146482.tif 000039
【図３４】
2008146482.tif 000040
【図３５】
2008146482.tif 000041
【図３６】
2008146482.tif 000042
【図３７】
2008146482.tif 000043
【図３８】
2008146482.tif 000044
【手続補正書】
【提出日】平成21年1月23日(2009.1.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理を実行する際の電力消費量を計測することで、暗号モジュールに埋め込まれている暗号鍵を解析する攻撃方法に対して安全な暗号化装置、復号化装置、暗号化方法、及び集積回路に関する。
【背景技術】
【０００２】
近年、ハードウェアあるいはソフトウェアで実装された暗号モジュールが、暗号処理を行う際の副情報を手がかりにして、暗号鍵の解析を行う解読法が各種考案されている。例えば、タイミング攻撃と呼ばれる解析方法では、暗号モジュールが暗号処理に要する時間が、暗号処理に用いている暗号鍵の値により、わずかではあるが異なることを利用して、暗号鍵の解析を行う。即ち、タイミング攻撃においては、暗号処理を行う際の処理時間という副情報を利用して、暗号鍵の解読を行っている。そのような解読法の中でも、暗号処理を行う際の電力消費量を副情報として、解読を行う解読方法としては、Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  ＡｎａｌｙｓｉｓやＤｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓといった各種の方法が考案されている。これらの解読法は、近年、高性能な計測機器が安価で手に入るようになった背景もあって、ＩＣカードのような暗号が実装された実際の製品に対しても解析が可能であることが報告されている。また、暗号処理を行う際に、暗号モジュールから発生する電磁波強度を副情報として解読する方法など数々の解析方法が考案されている。以下の記述では、暗号処理時における暗号モジュールの電力消費量を手がかりにして、暗号鍵を解析する解読方法を総称して、「電力解析攻撃」と呼ぶことにする。以下では、電力解析攻撃を例にして説明を行うが、本発明は、副情報を用いたその他の解析方法に対しても同様に有効である。即ち、本発明は、電力解析攻撃のみならず、暗号処理中に暗号モジュールから発生する副情報を利用して鍵の推定を行う解析方法であれば適用可能である。
【０００３】
電力解析攻撃は、暗号モジュールの電力消費量と暗号処理途中の中間値との間に相関があることを利用して、鍵の解析を行う。従って、電力解析攻撃に対する対策としては、暗号処理途中の中間値を、暗号モジュール内部で生成した乱数によってランダム化することで電力消費量と中間値との相関関係をわかりにくくすることが考えられる。このように、暗号処理の中間値をランダム化することを、中間値を「マスクする」と呼ぶ。また、中間値をマスクすることにより、電力解析攻撃による鍵解析を困難にする方法を総称して「マスキング法」と呼ぶ。
【０００４】
特許文献１に記載のマスキング法では、米国標準暗号ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号に対するマスキング法が開示されている（従来技術１と呼ぶ）。
【０００５】
（従来技術１の概要）
従来技術１の方法によると、ＤＥＳ暗号で用いるデータ変換用テーブルＳｂｏｘを、暗号モジュール内部で生成する乱数に基づいてランダム化したランダム化Ｓｂｏｘテーブルを、暗号処理に先立って作成し、一時的に保管する。暗号処理に、このランダム化Ｓｂｏｘテーブルを用いることで、暗号処理の中間値はマスクされ、電力解析攻撃は困難になる。ここで、従来技術１においては、ランダム化Ｓｂｏｘテーブルを一時記憶するためのＲＡＭが必要になる。従って、ＲＡＭ容量に厳しい制約のある場合には、従来技術１は使用できないという問題がある。また、暗号モジュールをハードウェアで実装する場合には、一般にＳｂｏｘテーブルは、論理回路で実装されることが多い。従って、ランダム化Ｓｂｏｘテーブルを作成することができないので、従来技術１は使用できないという問題がある。
【０００６】
（従来技術２の概要）
非特許文献１に記載のマスキング法では、米国次世代標準暗号ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号に対するマスキング法が開示されている（従来技術２と呼ぶ）。従来技術２は、Ｓｂｏｘテーブルを論理回路で実装でき、かつ、従来技術１のようにランダム化Ｓｂｏｘテーブルを作成する必要がないので、ハードウェア実装に適している。以下、その概要について説明する。
【０００７】
ＡＥＳ暗号のＳｂｏｘテーブルは、拡大体ＧＦ（２＾８）上の逆元計算（“Ｘ＾Ｙ”は、「ＸのＹ乗」を示す）と所定のアフィン変換を行う処理と等価であることが知られている。また、拡大体ＧＦ（２＾８）上の元Ｘに対する逆元計算を回路で実現する方法として以下のような既存方法がある。
【０００８】
（１）ＸをＧＦ（２＾８）と同型な合成体ＧＦ（（（２＾２）＾２）＾２）上の元Ａに変換する。
（２）前記合成体上でＡの逆元Ａ＾（−１）を計算する。
（３）Ａ＾（−１）を拡大体上の元に逆変換して、Ｘ＾（−１）を求める。
【０００９】
この方法では、逆元計算を合成体上で行うことで、小さな回路規模で逆元計算を実装することができる。
【００１０】
ＡＥＳ暗号のＳｂｏｘテーブルを上記のような逆元計算とアフィン変換によって実装してマスキング法を適用すれば、小さな回路規模で、電力解析攻撃に対する耐性を高めることができる。このとき、逆元計算部分にどのようにしてマスキングを施すかが、ポイントとなる。以下では、従来技術２における、逆元計算部分のマスキング方法について簡単に説明する。
【００１１】
図１〜図７は、従来技術２に係る暗号化装置に設けられたランダム化８ビット逆元計算部８１を示す図である。
【００１２】
＜ランダム化８ビット逆元計算部８１＞
図１は、従来技術２におけるランダム化８ビット逆元計算部８１の構成を示したブロック図である。ランダム化８ビット逆元計算部８１は、マスクされた逆元計算対象データＸ（８ビット）と、マスクデータＲ（８ビット）、計算用乱数ｒ（４ビット）を入力として、逆元計算を行い、マスクされた逆元計算結果Ｙ（８ビット）を出力する。ここで、Ｘは、マスクデータＲによってマスクをされた状態のデータであり、Ｘ＝Ｍ（＋）Ｒとして表される。ここで、Ｍ（８ビット）はマスクされる前のデータであり、「（＋）」はビットごとの排他的論理和演算を表す。このとき、Ｙは、Ｙ＝｛Ｍ＾（−１）｝（＋）Ｒとなる。即ち、ランダム化８ビット逆元計算部８１は、ＲによってマスクされたＭを入力として、逆元を計算し、その結果Ｍ＾（−１）を、Ｒでマスクされた状態で出力する処理である。即ち、暗号処理の中間値であるＭに対しては、ランダムなマスクデータＲによってマスクされた状態で逆元計算が行われるため、電力解析攻撃は困難となる。
【００１３】
ランダム化８ビット逆元計算部８１の処理は、図１に示す通り、合成体ＧＦ（（（２＾２）＾２）＾２）上の１７乗計算を行う１７乗計算部８１０、８１２と、４ビット補正項計算部８１１（図２）と、４ビット出力計算部８１６、８１７（図３）と、４ビットの排他的論理和演算を行う排他的論理和部８１３、８１４、８１８、８１９と、ランダム化４ビット逆元計算部８１５（図４）とから構成される。
【００１４】
ここで、４ビット補正項計算部８１１は、図２に示す通り、合成体ＧＦ（（２＾２）＾２）上の乗算を行う４ビット乗算部８１１ａ、８１１ｂと、４ビットの排他的論理和演算を行う排他的論理和部８１１ｃ、８１１ｄとからなる処理を行う。なお、合成体ＧＦ（（２＾２）＾２）を２次拡大したものが、合成体ＧＦ（（（２＾２）＾２）＾２）である。
【００１５】
また、４ビット出力計算部８１６、８１７は、図３に示す通り、合成体ＧＦ（（２＾２）＾２）上の乗算を行う４ビット乗算部８１６ａ、８１６ｂ、８１６ｃ、８１６ｄと、４ビットの排他的論理和演算を行う排他的論理和部８１６ｅ、８１６ｆ、８１６ｇ、８１６ｈ、８１６ｉ、８１６ｊとからなる処理を行う。
【００１６】
また、ランダム化４ビット逆元計算部８１５（図４）の処理は、図４に示す通り、合成体ＧＦ（（２＾２）＾２）上の５乗計算を行う５乗計算部８２０、８２２と、２ビット補正項計算部８２１（図５）と、２ビット出力計算部８２６、８２７（図６）と、２ビットの排他的論理和演算を行う排他的論理和部８２３、８２４、８２８、８２９と、ランダム化２ビット逆元計算部８２５（図７）とから構成される。
【００１７】
ここで、２ビット補正項計算部８２１（図４、図５）は、図５に示す通り、有限体ＧＦ（２＾２）上の乗算を行う２ビット乗算部８２１ａ、８２１ｂと、２ビットの排他的論理和演算を行う排他的論理和部８２１ｃ、８２１ｄとからなる処理を行う。なお、有限体ＧＦ（２＾２）を２次拡大したものが、合成体ＧＦ（（２＾２）＾２）である。
【００１８】
また、２ビット出力計算部８２６、８２７（図６、図４）は、図６に示す通り、有限体ＧＦ（２＾２）上の乗算を行う２ビット乗算部８２６ａ、８２６ｂ、８２６ｃ、８２６ｄと、２ビットの排他的論理和演算を行う排他的論理和部８２６ｅ、８２６ｆ、８２６ｇ、８２６ｈ、８２６ｉ、８２６ｊとからなる処理を行う。
【００１９】
また、ランダム化２ビット逆元計算部８２５（図７、図４）の処理は、図７に示す通り、１ビットの排他的論理和演算を行う排他的論理和部８２５ａ、８２５ｂからなる処理を行う。
【００２０】
以上のように、従来技術２に係る暗号化装置に設けられたランダム化８ビット逆元計算部８１（図１）は、内部でランダム化４ビット逆元計算部８１５、ランダム化２ビット逆元計算部８２５を再帰的に実行する構成をとっており、この構成により、他の従来技術と比べて比較的小さな回路規模での実装が可能となる。
【００２１】
従来技術２においては、このような、ランダム化８ビット逆元計算部８１（図１）が設けられて、逆元計算とアフィン変換とによりＡＥＳ暗号のＳｂｏｘテーブルが実装されることにより、ハードウェア実装に適するようにされた暗号化装置が開示されている。
【非特許文献１】森岡澄夫、秋下徹、「合成体を用いたＡＥＳ  Ｓ−Ｂｏｘ回路に対するＤＰＡ攻撃」、コンピュータセキュリティシンポジウム２００４予稿集（平成１６年１０月）
【非特許文献２】Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ  Ｐｕｂｌｉｃａｔｉｏｎ  １９７，「Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  ｔｈｅ  ＡＤＶＡＮＣＥＤ  ＥＮＣＲＹＰＴＩＯＮ  ＳＴＡＮＤＡＲＤ（ＡＥＳ）」，Ｎｏｖｅｍｂｅｒ  ２６，２００１
【特許文献１】米国特許第６２９５６０６号明細書
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、前記従来技術２においては、先ほど述べた、ランダム化８ビット逆元計算部８１（図１）が有する再帰的な構成のために、最大論理段数が大きくなってしまうという課題を有していた。従来技術２のランダム化８ビット逆元計算部８１を、回路で実現したときのクリティカルパスとその最大論理段数を見積もると以下のようになる。
【００２３】
ランダム化８ビット逆元計算部８１（図１〜図７）のクリティカルパスは、以下の通りとなる。
【００２４】
まず、図１において、クリティカルパスは、次の通りである。
【００２５】
１７乗計算部８１０  ⇒  排他的論理和部８１３  ⇒  排他的論理和部８１４  ⇒  ランダム化４ビット逆元計算部８１５（図４）  ⇒  ４ビット出力計算部８１７（図３）  ⇒  排他的論理和部８１８  ⇒  排他的論理和部８１９
【００２６】
ここで、このパスの途上にある、４ビット出力計算部８１７（図３）とランダム化４ビット逆元計算部８１５（図４）との内部におけるクリティカルパスは、次のようになる。
【００２７】
まず、４ビット出力計算部８１７（図３）の内部におけるクリティカルパスは、以下の通りとなる。
【００２８】
４ビット乗算部８１６ａ  ⇒  排他的論理和部８１６ｅ  ⇒  排他的論理和部８１６ｆ  ⇒  排他的論理和部８１６ｉ  ⇒  排他的論理和部８１６ｊ
【００２９】
また、ランダム化４ビット逆元計算部８１５（図４）の内部におけるクリティカルパスは、以下の通りとなる。
【００３０】
５乗計算部８２０  ⇒  排他的論理和部８２３  ⇒  排他的論理和部８２４  ⇒  ランダム化２ビット逆元計算部８２５（図７）  ⇒  ２ビット出力計算部８２７（図６）  ⇒  排他的論理和部８２８  ⇒  排他的論理和部８２９
【００３１】
このパスの途上には、２ビット出力計算部８２７（図６）と、ランダム化２ビット逆元計算部８２５（図７）とがある。これらの内部におけるクリティカルパスは、それぞれ、以下の通りである。
【００３２】
まず、２ビット出力計算部８２７（図６）の内部におけるクリティカルパスは、以下の通りとなる。
【００３３】
２ビット乗算部８２６ａ  ⇒  排他的論理和部８２６ｅ  ⇒  排他的論理和部８２６ｆ  ⇒  排他的論理和部８２６ｉ  ⇒  排他的論理和部８２６ｊ
【００３４】
そして、ランダム化２ビット逆元計算部８２５（図７）の内部におけるクリティカルパスは、以下の通りとなる。
【００３５】
排他的論理和部８２５ａ  ⇒  排他的論理和部８２５ｂ
【００３６】
以上より、ランダム化８ビット逆元計算部８１（図１）の最大論理段数は、以下の処理をシリアルに処理したときの論理段数になる。
【００３７】
１７乗計算×１回
５乗計算×１回
４ビット乗算×１回
２ビット乗算×１回
排他的論理和演算×１８回
【００３８】
なお、ここで、「排他的論理和演算×１８回」とあるうちの１８は、１８＝４＋４＋４＋４＋２の計算により得られるものである。
【００３９】
以上の通り、従来技術２は、最大論理段数が大きくなってしまうという課題があった。
【００４０】
本発明は、前記従来技術２の暗号処理上の課題を解決するもので、従来技術２と同様に合成体ＧＦ（（（２＾２）＾２）＾２）上の逆元演算を用いたＳｂｏｘテーブルの実装法を用いながら、従来技術２よりも、最大論理段数が削減可能な、暗号化装置を提供することを目的とする。
【課題を解決するための手段】
【００４１】
上記課題を解決するために、本発明では、次の構成を採る。
【００４２】
すなわち、鍵を用いて平文から暗号文を生成する暗号化装置であって、乱数に依存して決まる予め定められた入力マスク値が、前記鍵によって予め定められた処理がされた入力データに加算されたランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部を備え、生成された前記ランダム化出力データから前記暗号文を生成する暗号化装置の構成を採る。
【００４３】
この暗号化装置によると、出力マスク値が入力マスク値の逆元であり、段数が少ない簡単な構成の暗号化装置を実現できる。
【発明の効果】
【００４４】
本発明によれば、段数が少ない簡単な構成の暗号化装置を実現できる。
【発明を実施するための最良の形態】
【００４５】
請求項１記載の態様の（本発明の一実施態様の）暗号化装置は、鍵を用いて平文から暗号文を生成する暗号化装置であって、乱数を生成する乱数生成部と、前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、を備えたものである。
【００４６】
本態様によると、副情報の計測により、平文から暗号文が生成されるのに用いられる鍵が解析されてしまうのを防ぐために、当該鍵による予め定められた処理がされた入力データに対して入力マスク値が加算されたランダム化入力データから、出力マスク値が加算されたランダム化出力データが生成されるのに際して、出力マスク値が入力マスク値の逆元であることにより、段数が少ない簡単な構成により、ランダム化入力データからランダム化出力データが生成され、暗号化装置を、段数の少ない簡単な構成にできる。
【００４７】
なお、当該暗号化装置は、生成された前記乱数を受け付けて、受け付けた当該乱数から上記入力マスク値を生成するマスク値生成部を更に備え、前記第１のランダム化逆元データ生成部は、生成された前記入力マスク値を受け付けて、上記生成を行うものであってもよい。こうすれば、当該暗号化装置に外部から入力マスク値を入力する構成が不要になり、システムの構成を簡単にできる。
【００４８】
請求項２記載の態様の（本発明の一実施態様の）暗号化装置は、前記第１のランダム化逆元データ生成部は、前記ランダム化入力データと前記入力マスク値とに対して予め定められた第１のべき数によるべき乗計算を行い、第１のべき乗ランダム化入力データと第１のべき乗入力マスク値とをそれぞれ各べき乗計算により生成する第１のべき乗計算部と、前記ランダム化入力データと前記入力マスク値とから、予め定められた補正データを生成する補正データ生成部と、生成された前記補正データを、計算された前記第１のべき乗ランダム化入力データに加算し、副ランダム化入力データを生成する加算部と、前記副ランダム化入力データと前記第１のべき乗入力マスク値とを受け付けて、当該第１のべき乗入力マスク値の予め定められた第２の有限体における逆元であるマスク値が、前記副ランダム化入力データの当該第２の有限体における逆元に加算されたランダム化副出力データを生成する第２のランダム化逆元データ生成部と、前記ランダム化副出力データと前記ランダム化入力データと前記入力マスク値と前記第１のべき乗入力マスク値とから、前記ランダム化出力データを生成するランダム化出力データ生成部と、を備えたものである。
【００４９】
本態様によると、ランダム化出力データが、分かり易い構成により生成され、故障や動作不良を少なくしたり、設計を容易にしたりしつつ、段数の少ない簡単な構成により暗号化装置を実現することができる。
【００５０】
また、態様Ａの（本発明の一実施態様の）暗号化装置は、ランダム化合成体逆元計算部の演算を、従来はＸ＝Ｍ＋ＲをＹ＝Ｍ＾（−１）＋Ｒに変換していたものを、Ｘ＝Ｍ＋ＲからＹ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換するようにしたものであり、これにより、従来よりも最大論理段数を削減しつつ、コンパクト実装が可能という従来法の利点を実現することが可能となるものである。
【００５１】
また、態様Ｂ（本発明の一実施態様）の暗号化装置は、平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成する暗号化装置であって、乱数を生成する乱数生成部と、ランダム化入力データと入力マスク値を受け付けて第１の有限体上の逆元計算を行い、ランダム化出力データを出力する第１のランダム化逆元計算部を備え、前記ランダム化入力データは、入力マスク値と入力データとの加算によりマスクされた値であり、前記ランダム化出力データは、出力マスク値と出力データとの加算によりマスクされた値であり、前記入力マスク値は、前記乱数に依存して決まる値であり、前記出力データは、前記入力データの前記第１の有限体における逆元であり、前記出力マスク値は、前記入力マスク値の前記第１の有限体における逆元であるものである。
【００５２】
ここで、この態様Ｂに係る暗号化装置は、前記第１のランダム化逆元計算部は、前記ランダム化入力データと前記入力マスク値のそれぞれに対して第１のべき数によるべき乗計算を行い、第１のべき乗ランダム化入力データと第１のべき乗入力マスク値を生成する第１のべき乗演算部と、前記ランダム化入力データと前記入力マスク値とから補正データを生成する補正データ生成部と、前記補正データと前記第１のべき乗ランダム化入力データとの加算を行い副ランダム化入力データを生成する加算部と、前記副ランダム化入力データと前記第１のべき乗入力マスク値を受け付けて第２の有限体上の逆元計算を行い、ランダム化副出力データを生成する第２のランダム化逆元計算部と、前記ランダム化副出力データと前記ランダム化入力データと前記第１のべき乗入力マスク値と前記入力マスク値から前記ランダム化出力データを生成するランダム化出力データ生成部を備えたものであってもよい。
【００５３】
さらに、この態様Ｂに係る暗号化装置は、前記ランダム化出力データ生成部は、前記ランダム化入力データと前記入力マスク値のそれぞれに対して第２のべき数によるべき乗計算を行い、第２のべき乗ランダム化入力データと第２のべき乗入力マスク値を生成する第２のべき乗演算部と、前記第１のべき乗入力マスク値に対して前記第２の有限体上の逆元計算を行い、逆元べき乗入力マスク値を生成する逆元演算部と、前記ランダム化副出力データと前記第２のべき乗ランダム化入力データと前記逆元べき乗入力マスク値と前記第２のべき乗入力マスク値から前記ランダム化出力データを生成するランダム化出力データ計算部を備えたものであってもよい。
【００５４】
さらに、態様Ｃ（本発明の一実施態様）の復号化装置は、暗号文に対して鍵に基づく所定の復号化処理を行い、復号文を生成する復号化装置であって、乱数を生成する乱数生成部と、ランダム化入力データと入力マスク値を受け付けて第１の有限体上の逆元計算を行い、ランダム化出力データを出力する第１のランダム化逆元計算部を備え、前記ランダム化入力データは、入力マスク値と入力データとの加算によりマスクされた値であり、前記ランダム化出力データは、出力マスク値と出力データとの加算によりマスクされた値であり、前記入力マスク値は、前記乱数に依存して決まる値であり、前記出力データは、前記入力データの前記第１の有限体における逆元であり、前記出力マスク値は、前記入力マスク値の前記第１の有限体における逆元であるものである。
【００５５】
（実施の形態）
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００５６】
なお、実施の形態において、合成体ＧＦ（（（２＾２）＾２）＾２）、及びその部分体ＧＦ（（２＾２）＾２）、ＧＦ（２＾２）、ＧＦ（２）上の演算を使用するが、これらは以下のような関係になる。
【００５７】
ＧＦ（２）に対して、既約多項式ｘ＾２＋ｘ＋１で２次拡大を行ったものが、ＧＦ（２＾２）である。
【００５８】
ＧＦ（２＾２）に対して、既約多項式ｘ＾２＋ｘ＋φで２次拡大を行ったものがＧＦ（（２＾２）＾２）である。
【００５９】
ＧＦ（（２＾２）＾２）に対して、既約多項式ｘ＾２＋ｘ＋λ（２進数）で２次拡大を行ったものが、ＧＦ（（（２＾２）＾２）＾２）である。
【００６０】
このとき、ｘ＾２＋ｘ＋１＝０の根をαとしたとき、φ＝α、λ＝α＾３＋αであるので、それぞれ、φ＝１０（２進数）、λ＝１１００（２進数）とビット表記する。
【００６１】
＜実施の形態の概要＞
実際の処理詳細を説明する前に、まずは、実施の形態の概要を、（非特許文献１）つまり従来技術２に開示されている従来方式との対比をしながら、説明する。
【００６２】
（非特許文献１）に開示の従来技術、つまり従来技術２においては、ランダム化８ビット逆元計算部８１（図１等）は、入力データＸ＝Ｍ（＋）Ｒに対して、乱数Ｒ及びｒを用いたランダム化逆元計算を行い、出力データＹ＝Ｍ＾（−１）（＋）Ｒを生成していた。ここで、Ｘは、本来のデータＭをランダムマスクＲでマスクされた値となり、ランダム化８ビット逆元計算部８１は、ＧＦ（（（２＾２）＾２）＾２）におけるＭの逆元Ｍ＾（−１）を求めて、この値がランダムマスクＲによってマスクされた形（Ｍ＾（−１）（＋）Ｒ）として出力していた。
【００６３】
本発明に係る実施の形態では、上記のランダム化８ビット逆元計算処理を、入力データＸ＝Ｍ（＋）Ｒに対して、乱数Ｒを用いたランダム化逆元計算により、出力データＹ＝Ｍ＾（−１）（＋）Ｒ＾（−１）を生成している。即ち、出力データのランダムマスク値が、従来技術２では、Ｒであったものが、本発明では、Ｒ＾（−１）となっている。このように、従来技術２と異なる出力データを計算する構成としたことで、後で述べるように、最大論理段数を従来技術よりも削減可能となった。
【００６４】
図８〜図３８は、実施の形態に係る暗号化装置１、および暗号化装置１の各部分をそれぞれ示す図である。
【００６５】
そして、図３８は、実施の形態に係る暗号化装置１の全体および各部分の間の包含関係を示す図である。以下では、適宜図３８を参照しつつ、図１〜図２３に示される暗号化装置１を説明する。
【００６６】
図３８に示されるように、暗号化装置１（図８）は、ランダム化８ビット逆元計算部１０１（図１３、図１４）を備える。暗号化装置１（図８）は、暗号化部１ａ（図８、図９）を備える。暗号化部１ａは、マスク処理部１０（図９）と、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘ（ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０）、ランダム化Ｒｏｕｎｄ＿１０ １３（図９、図１１））と、アンマスク処理部１４（図９）とを備える。なお、図３８においては、図８〜３７に示される暗号化装置１の各部分のうちの一部は捨象されている。
【００６７】
そして、図３８に示されるランダム化Ｒｏｕｎｄ＿ｔ１２Ｘ（図９及び図１０に示されるランダム化Ｒｏｕｎｄ＿ｎ１２、図９及び図１１に示されるランダム化Ｒｏｕｎｄ＿１０）は、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１０、図１１、図１２）を備え、このランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１２に示されるランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐ）を備え、さらにこのランダム化Ｓ−Ｂｏｘ１２１Ｘは、ランダム化８ビット逆元計算部１０１（図１３、図１４）を備える。
【００６８】
そして、このランダム化８ビット逆元計算部１０１（図３８、図１４等）は、図３８に示されるように、ランダム化入力データＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）が入力され、Ｒｔに基づいたＴ１（Ｒｔ）なるマスク値によりマスクされたこのランダム化入力データＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）から、ランダム化出力データＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）を算出し、算出したこのＯＤ８ｔを出力する。要するに、このランダム化８ビット逆元計算部１０１（図１３、図１４）が、Ｍ＝Ｔ１（Ｖ８ｔ）、Ｒ＝Ｔ１（Ｒｔ）とした、上記したような、入力データＸ＝Ｍ（＋）Ｒに対して、出力データＹ＝Ｍ＾（−１）（＋）Ｒ＾（−１）を生成する処理を行う。
【００６９】
本実施の形態に係る暗号化装置１（図３８、図８）は、このような、Ｘ＝Ｍ（＋）ＲからＹ＝Ｍ＾（−１）（＋）Ｒ＾（−１）を生成するランダム化８ビット逆元計算部１０１を備えており、最大論理段数を削減できる。
【００７０】
以下、そのような、暗号化装置１の処理詳細について説明する。
【００７１】
＜暗号化装置１＞
図８は、本発明の実施の形態における、暗号化装置１の構成を示したブロック図である。
【００７２】
暗号化装置１（図８）は、暗号化部１ａ（図９）と、ラウンド鍵生成部１ｂと、鍵保管部１ｃとを備える。
【００７３】
暗号化装置１（図８）は、暗号化装置１に入力される１２８ビットの平文Ｐ（１２８ビット）に対して、装置内部に保持する鍵Ｋ（１２８ビット）を用いて、ランダム化されたＡＥＳ暗号化処理（ＡＥＳ：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）を行い、暗号文Ｃ（１２８ビット）を出力する。暗号文Ｃは、平文Ｐに対して鍵Ｋを用いてＡＥＳ暗号化処理を行った結果と等しい。また、暗号化処理過程の暗号処理中間値は、装置内部で暗号化処理ごとにランダムに生成する乱数によってランダム化されているので、電力解析攻撃による鍵Ｋの解析は困難となっている。以下、暗号化装置１の処理手順について説明する。
【００７４】
なお、ＡＥＳ暗号は、より詳しくは、暗号化処理においてラウンドを繰り返す、いわゆる繰り返し暗号の代表的な構成法であるＦｅｉｓｔｅｌ構造と、ＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ  Ｓｔｒｕｃｔｕｒｅ）構造とのうちの、後者のＳＰＮ構造が採用された暗号である。
【００７５】
ここで、暗号化装置１は、例えば、ＩＣカードに設けられたものであってもよい。
【００７６】
鍵保管部１ｃは、暗号化装置１に事前に設定されている鍵Ｋを保管する。鍵Ｋは、暗号化装置１の製造時に設定されていてもよいし、暗号化装置１の製造後に、装置内で生成して鍵保管部１ｃに設定するようにしてもよい。平文Ｐが入力されると、暗号化装置１は、以下の処理を行う。
【００７７】
（１）鍵保管部１ｃは、保管する鍵Ｋをラウンド鍵生成部１ｂに入力する。
【００７８】
（２）ラウンド鍵生成部１ｂは、ＡＥＳ暗号方式のラウンド鍵生成処理に従って、鍵Ｋから、ラウンド鍵ＲＫ０〜ＲＫ１０（各１２８ビット）を生成し、暗号化部１ａに入力する。なお、ラウンド鍵生成処理は、（非特許文献２）に記載され公知であるから、ここでは詳細は説明しない。
【００７９】
（３）暗号化部１ａは、ラウンド鍵ＲＫ０〜ＲＫ１０を用いて、平文Ｐに対して後で述べる暗号化処理を行い、暗号文Ｃを生成して出力する。
【００８０】
次に、暗号化部１ａの処理について説明する。
【００８１】
＜暗号化部１ａ＞
図９は、暗号化部１ａの構成を示したブロック図である。
【００８２】
図示するように、暗号化部１ａ（図８、図３８）は、マスク処理部１０と、ＡｄｄＲｏｕｎｄＫｅｙ１１と、ランダム化Ｒｏｕｎｄ＿ｎ１２（図１０）と、ランダム化Ｒｏｕｎｄ＿１０ １３（図１１）と、アンマスク処理部１４と、乱数生成部１５と、乱数一時記憶部１６と、乱数更新部１７とを備える。
【００８３】
暗号化部１ａは、平文Ｐ（１２８ビット）に対して、ラウンド鍵ＲＫ０〜ＲＫ１０（１２８ビット×１１個）を用いて暗号化処理を行い、暗号文Ｃ（１２８ビット）を生成して出力する。暗号化部１ａは、入力されるラウンド鍵ＲＫ０〜ＲＫ１０のうち、ラウンド鍵ＲＫ０は、ＡｄｄＲｏｕｎｄＫｅｙ１１に入力し、ラウンド鍵ＲＫｎ（ｎ＝１〜９）は、ランダム化Ｒｏｕｎｄ＿ｎ１２（図１０）に入力し、ＲＫ１０はランダム化Ｒｏｕｎｄ＿１０  １３（図１１）に入力する。
【００８４】
暗号化部１ａは、以下の処理を行う。
【００８５】
（１）乱数生成部１５は、乱数Ｒ０（８ビット）をランダムに生成する。そして、乱数生成部１５は、生成した乱数Ｒ０を、乱数一時記憶部１６に、一旦記憶する。なお、乱数生成部１５は、一例としては、新しい平文Ｐが暗号化装置１に入力され、暗号化装置１が新たに暗号化の処理を開始するごとに、その開始に際して、新たに乱数Ｒ０を生成し、生成する乱数Ｒ０を記憶させるものであってもよい。
【００８６】
（２）マスク処理部１０は、乱数一時記憶部１６に記憶している乱数Ｒ０を用いて、平文Ｐに対して以下のような排他的論理和演算を行い、データＡ（１２８ビット）を求める。この処理により、平文Ｐは、ランダムマスク値Ｒ０によってマスクされる。
【００８７】
Ａ＝Ｐ（＋）（Ｒ０，Ｒ０，Ｒ０，…，Ｒ０）
【００８８】
ここで、（Ｒ０，Ｒ０，Ｒ０，…，Ｒ０）は、Ｒ０（８ビット）を１６個結合した１２８ビットデータを表す。なお、以下では、特に断りがなければ、８ビットデータＸを１６個結合した１２８ビットデータを（Ｘ，Ｘ，Ｘ，…，Ｘ）として表記するものとする。
【００８９】
なお、図８に示されるＰは、図３８では、記号Ｕにより示される。また、図８に示されるＣは、図３８では、記号Ｃにより示される。また、図９に示されるＡは、図３８においては、ＩＡと図示される。また、図９に示されるＢ、Ｄは、図３８では、記号ＩＡｔ（ｔ＝１〜９またはｔ＝１０）により示される。また、図９に示されるＥは、図３８では、記号ＯＡ１０＝ＯＡｔ（ｔ＝１０）により示される。
【００９０】
（３）乱数更新部１７は、乱数一時記憶部１６に記憶している乱数Ｒ０に、後で述べる乱数更新処理を行って、Ｒ１を生成し、乱数一時記憶部１６に記憶している乱数Ｒ０を、Ｒ１に更新する。
【００９１】
（４）ＡｄｄＲｏｕｎｄＫｅｙ１１は、上記の（２）で乱数生成部１５が求めた上記Ａに対して、以下のようなＲＫ０を用いた鍵加算処理を行い、Ｂ１を求める。これは、ＡＥＳ暗号アルゴリズム仕様で定められているＡｄｄＲｏｕｎｄＫｅｙ処理である。
【００９２】
Ｂ１＝Ａ（＋）ＲＫ０
【００９３】
（５）次に、ランダム化Ｒｏｕｎｄ＿ｎ１２が、ｎ＝１、２、３、…、９について、以下の処理を繰り返し実行する。
【００９４】
（５−１）ランダム化Ｒｏｕｎｄ＿ｎ１２は、ラウンド鍵ＲＫｎと、乱数一時記憶部１６に記憶する乱数Ｒｎを用いて、Ｂｎ（当該ランダム化Ｒｏｕｎｄ＿ｎ１２への入力データであるＢのうちでｎ番目のもの）に対して後で述べるランダム化Ｒｏｕｎｄ＿ｎ処理を行って、Ｂｎ＋１を生成する。そして、ランダム化Ｒｏｕｎｄ＿ｎ１２は、生成したＢ（ｎ＋１）を、ｎ＝９の場合、つまり、生成されるＢ（ｎ＋１）が、Ｂ（ｎ＋１）＝Ｂ１０の場合は、Ｄ＝Ｂ１０として、Ｄをランダム化Ｒｏｕｎｄ＿１０  １３に入力し、ｎ≠９の場合、つまりｎ＝１、２、…９であり、生成されるＢ（ｎ＋１）が、Ｂ２、Ｂ３、…、Ｂ９の何れかである場合は、そのＢ（ｎ＋１）を再びランダム化Ｒｏｕｎｄ＿ｎ１２に入力する。
【００９５】
（５−２）乱数更新部１７は、乱数一時記憶部１６に記憶する乱数Ｒｎに対して、後で述べる乱数更新処理を行って、Ｒｎ＋１を生成し、乱数一時記憶部１６に記憶している乱数ＲｎをＲｎ＋１に更新する。乱数更新部１７は、乱数生成部１５により生成される乱数Ｒ０から、乱数Ｒ１、乱数Ｒ２、…、乱数Ｒ１１を生成し、乱数一時記憶部１６に記憶される乱数を、生成する各乱数に更新することにより、それぞれその乱数を、マスク処理部１０、ランダム化Ｒｏｕｎｄ＿ｎ１２、ランダム化Ｒｏｕｎｄ＿１０ １３、アンマスク処理部１４のうちでその乱数に対応する構成へと、それぞれ、供給する。乱数更新部１７は、乱数一時記憶部１６を介して、乱数Ｒ０をマスク処理部１０に供給し、乱数Ｒ１〜Ｒ９を、ランダム化Ｒｏｕｎｄ＿ｎ１２に供給し、乱数Ｒ１０をランダム化Ｒｏｕｎｄ＿１０ １３に供給し、乱数Ｒ１１をアンマスク処理部１４に供給する。
【００９６】
（５−３）暗号化部１ａは、ｎ＝９の場合は、繰り返し処理のループを完了し、次のランダム化Ｒｏｕｎｄ＿１０  １３の処理に移行し、ｎ≠９の場合は、ｎの値を１加算し、再び、上記（５−１）〜（５−３）の処理を実行する。
【００９７】
（６）ランダム化Ｒｏｕｎｄ＿１０  １３は、ラウンド鍵ＲＫ１０と乱数一時記憶部１６に記憶している乱数Ｒ１０とを用いて、上記（５）の処理で得られる、ランダム化Ｒｏｕｎｄ＿１０  １３への入力データＤ（１２８ビット）に対して、後で述べるランダム化Ｒｏｕｎｄ＿１０処理を行い、データＥ（１２８ビット）を生成する。ランダム化Ｒｏｕｎｄ１０  １３は、データＥを、アンマスク処理部１４に入力する。
【００９８】
また、乱数更新部１７は、乱数一時記憶部１６に記憶する乱数Ｒ１０に対して、後で述べる乱数更新処理を行って、乱数一時記憶部１６に記憶している乱数Ｒ１０を乱数Ｒ１１に更新する。乱数更新部１７は、このＲ１１への更新により、アンマスク処理部１４に乱数Ｒ１１を供給する。
【００９９】
（７）アンマスク処理部１４は、乱数一時記憶部１６に記憶する乱数Ｒ１１を用いて、上記（６）で、ランダム化Ｒｏｕｎｄ＿１０から得られたデータＥに対して、以下のような排他的論理和演算を行い、暗号文Ｃ（１２８ビット）を生成する。この処理により、マスクされていたデータＥは、アンマスクされ（マスクの影響を除去され）、マスクのされていない暗号文Ｃが得られる。
【０１００】
Ｃ＝Ｅ（＋）Ｒ１１
【０１０１】
（８）暗号化部１ａは、上記（７）で得られた暗号文Ｃを、暗号化部１ａの出力データとして、出力する。
【０１０２】
次に、暗号化部１ａ（図９）の内部で使用されるランダム化Ｒｏｕｎｄ＿ｎ１２、ランダム化Ｒｏｕｎｄ＿１０  １３の詳細な構成について説明する。
【０１０３】
＜ランダム化Ｒｏｕｎｄ＿ｎ１２＞
図１０は、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９）の構成を示したブロック図である。
【０１０４】
図１０に示されるように、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０、図３８）は、ランダム化ＳｕｂＢｙｔｅｓ１２０と（図１２、図３８）、ＳｈｉｆｔＲｏｗｓ１２１と、ＭｉｘＣｏｌｕｍｎｓ１２２と、ＡｄｄＲｏｕｎｄＫｅｙ１２３とを備える。
【０１０５】
そして、ランダム化Ｒｏｕｎｄ＿ｎ１２は、乱数Ｒｎとラウンド鍵ＲＫｎ（ｎ＝１、２、…、９）を用いて、当該ランダム化Ｒｏｕｎｄ＿ｎ１２への入力データＸ（暗号化部１ａの処理説明（図９）におけるデータＢｎに対応）に対して、ランダム化Ｒｏｕｎｄ処理を行い、出力データＹ（暗号化部１ａの処理説明におけるデータＢｎ＋１（図９）に対応）を生成する。
【０１０６】
なお、ランダム化Ｒｏｕｎｄ＿ｎ１２が行う、ランダム化Ｒｏｕｎｄ＿ｎ処理は、マスク値（Ｒｎ，Ｒｎ，…，Ｒｎ）でマスクされている入力データＸ＝Ｍ（＋）（Ｒｎ，Ｒｎ，…，Ｒｎ）に対して、ＡＥＳ暗号アルゴリズム規格で規定されている１ラウンド処理を実行して、マスク値（Ｒｎ＋１，Ｒｎ＋１，…，Ｒｎ＋１）でマスクされたラウンド処理結果Ｙ＝Ｐ（＋）（Ｒｎ＋１，Ｒｎ＋１，…，Ｒｎ＋１）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されている１ラウンドの処理を行った結果と一致する。ここで、このＸは、図９の説明における、ランダム化Ｒｏｕｎｄ＿ｎ処理の入力データＢｎ（ｎ＝１、２、…、９）であり、また、このＹは、図９の説明における、出力データＢ（ｎ＋１）であり、Ｍ、Ｐは、それらＢｎ、Ｂｎ＋１からマスク値の影響を除去した本来の値（図３８に図示されるＶｔ，Ｖ（ｔ＋１））である。
【０１０７】
なお、図１０におけるＸは、図３８では、記号ＩＡｔ（ｔ＝１、２、…、９）により示され、Ｙは、記号ＯＢｔ（ｔ＝１、２、…、９）により示され、Ｒｎは、記号Ｒｔ（ｔ＝１、２、…、９）により示される。
【０１０８】
具体的には、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０）は、以下の処理を行う。
【０１０９】
（１）ランダム化Ｒｏｕｎｄ＿ｎ１２が備えるランダム化ＳｕｂＢｙｔｅｓ１２０（図１０、図１２）は、乱数一時記憶部１６から取得する乱数Ｒｎ（８ビット）を用いて、当該ランダム化Ｒｏｕｎｄ＿ｎへの入力データＸ（１２８ビット）に対して、後で述べるランダム化ＳｕｂＢｙｔｅｓ処理を行い、データＡ（図１０）を生成する。
【０１１０】
（２）ＳｈｉｆｔＲｏｗｓ１２１（図１０）は、上記（１）で生成される前記データＡに対して、ＡＥＳ暗号アルゴリズム規格で規定されているＳｈｉｆｔＲｏｗｓ処理を行い、データＢ（１２８ビット）を生成する。なお、ＳｈｉｆｔＲｏｗｓの詳細は、（非特許文献２）にて公知のため、詳しく説明しない。
【０１１１】
（３）次に、ＭｉｘＣｏｌｕｍｎｓ１２２（図１０）は、上記（２）で生成される前記データＢに対して、ＡＥＳ暗号アルゴリズム規格で規定されているＭｉｘＣｏｌｕｍｎｓ処理を行い、データＣ（１２８ビット）を生成する。なお、ＭｉｘＣｏｌｕｍｎｓの詳細は、（非特許文献２）にて公知のため、詳しく説明しない。
【０１１２】
（４）そして、ＡｄｄＲｏｕｎｄＫｅｙ１２３は、上記（３）で生成される前記データＣに対して、ラウンド鍵ＲＫｎを用いて、ＡＥＳ暗号アルゴリズム規格で規定されているＡｄｄＲｏｕｎｄＫｅｙ処理を行い、データＹ（１２８ビット）を生成する。そして、ＡｄｄＲｏｕｎｄＫｅｙ１２３は、生成したＹを、ランダム化Ｒｏｕｎｄ＿ｎ１２の出力データとして、出力する。なお、ＡｄｄＲｏｕｎｄＫｅｙの詳細は、（非特許文献２）にて公知のため、詳しく説明しない。
【０１１３】
なお、図１０のデータＡは、図３８では、記号ＯＢｔ（ｔ＝１、２、…、９）により示される。
【０１１４】
＜ランダム化Ｒｏｕｎｄ＿１０  １３＞
図１１は、ランダム化Ｒｏｕｎｄ＿１０  １３の構成を示したブロック図である。
【０１１５】
ランダム化Ｒｏｕｎｄ＿１０  １３（図９、図１１）は、ランダム化ＳｕｂＢｙｔｅｓ１３０（図１１、図１２）と、ＳｈｉｆｔＲｏｗｓ１３１と、ＡｄｄＲｏｕｎｄＫｅｙ１３２とを備える。
【０１１６】
そして、ランダム化Ｒｏｕｎｄ＿１０  １３は、図１１に示すように、ランダム化Ｒｏｕｎｄ＿ｎ１２から、ＭｉｘＣｏｌｕｍｎｓ１２２だけを取り除いた構成と等しい。これは、ＡＥＳ暗号アルゴリズムの仕様が、最終ラウンドだけ、ＭｉｘＣｏｌｕｍｎｓ処理を行わないことに対応する。それ以外は、ランダム化Ｒｏｕｎｄ＿ｎ１２と同じであるから、詳しい説明は省略する。
【０１１７】
なお、ランダム化Ｒｏｕｎｄ＿１０処理は、マスク値（Ｒ１０，Ｒ１０，…，Ｒ１０）でマスクされている入力データＸ＝Ｍ（＋）（Ｒ１０，Ｒ１０，…，Ｒ１０）に対して、ＡＥＳ暗号アルゴリズム規格で規定されている最終ラウンド処理を実行して、マスク値（Ｒ１１，Ｒ１１，…，Ｒ１１）でマスクされた最終ラウンド処理結果Ｙ＝Ｐ（＋）（Ｒ１１，Ｒ１１，…，Ｒ１１）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されている最終ラウンド処理を行った結果と一致する。
【０１１８】
なお、ここで、このＸは、図９の説明における、データＤであり、また、このＹは、図９の説明における、出力データＥ）であり、Ｍ、Ｐは、それらＤ、Ｅからマスク値の影響を除去した本来の値（図３８におけるＶ１０，Ｖ１１）である。
【０１１９】
他方、図１０のデータＡは、図３８では、記号ＯＢ１０＝ＯＢｔ（ｔ＝１０）により示される。
【０１２０】
次に、ランダム化Ｒｏｕｎｄ＿ｎ１２（図９、図１０）、ランダム化Ｒｏｕｎｄ＿１０  １３（図９、図１１）で用いられているランダム化ＳｕｂＢｙｔｅｓ１２０、１３０（図１２）の詳細について説明する。
【０１２１】
＜ランダム化ＳｕｂＢｙｔｅｓ１２０、１３０＞
図１２は、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（ランダム化ＳｕｂＢｙｔｅｓ１２０（図９、図１０）、ランダム化ＳｕｂＢｙｔｅｓ１３０（図９、図１１））の構成を示したブロック図である。例えば、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、ランダム化ＳｕｂＢｙｔｅｓ１２０であり、他方のランダム化ＳｕｂＢｙｔｅｓ１２０は、このランダム化ＳｕｂＢｙｔｅｓ１２０と同じ構成を有する。
【０１２２】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、乱数Ｒ（８ビット）を用いて、入力データＸ（１２８ビット）に対して、ランダム化Ｓ−Ｂｏｘ処理を行い、出力データＹ（１２８ビット）を生成する。ここでいう入力データＸは、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理説明（図１０）におけるデータＸに相当し、また、ランダム化Ｒｏｕｎｄ＿１０  １３の処理説明（図１１）におけるデータＸに相当する。他方、乱数Ｒは、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理説明（図１０）における乱数Ｒｎに相当し、ランダム化Ｒｏｕｎｄ＿１０  １３の処理説明（図１１）における乱数Ｒ１０に相当する。また、出力データＹは、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理説明（図１０）におけるデータＡに相当し、ランダム化Ｒｏｕｎｄ＿１０  １３（図１１）の処理説明におけるデータＡに相当する。
【０１２３】
なお、図１２におけるＸは、図３８では、記号ＩＢｔにより示され、Ｙは、記号ＯＢｔにより示され、Ｒは、Ｒｔにより示される。
【０１２４】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、ランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐを備える。
【０１２５】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（ランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐ）は、以下の処理を行う。
【０１２６】
（１）ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、入力データを、上位から８ビットずつに分割して、Ｘ［０］、Ｘ［１］、…、Ｘ［１５］（図１２参照）とする。
【０１２７】
（２）ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐは、分割されたＸ［０］、Ｘ［１］、…、Ｘ［１５］のそれぞれについて、乱数Ｒを用いたランダム化Ｓ−Ｂｏｘ処理を行い、それぞれ、Ｙ［０］、Ｙ［１］、…、Ｙ［１５］を生成する。この、ランダム化Ｓ−Ｂｏｘ処理の詳細は後で説明する。
【０１２８】
（３）そして、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは，生成されるＹ［０］、Ｙ［１］、…、Ｙ［１５］を、上位からこの順で連結して、１２８ビットデータＹとする。そして、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘは、このＹを、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘの出力データとして出力する。
【０１２９】
なお、ランダム化ＳｕｂＢｙｔｅｓ１２０、１３０の処理は、マスク値（Ｒ，Ｒ，…，Ｒ）でマスクされている入力データＸ＝Ｍ（＋）（Ｒ，Ｒ，…，Ｒ）に対して、ＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理を実行して、マスク値（Ｓ，Ｓ，…，Ｓ）でマスクされた処理結果Ｙ＝Ｐ（＋）（Ｓ，Ｓ，…，Ｓ）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理を行った結果と一致し、マスク値Ｓは、マスク値Ｒに対して乱数更新部１７で行われる乱数更新処理を行った結果と等しくなる。
【０１３０】
なお、このＭは、図３８においてＶｔとして図示され、Ｐは、Ｓ−ｂｏｘ（Ｖｔ）により示される。
【０１３１】
次に、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（ランダム化ＳｕｂＢｙｔｅｓ１２０、１３０）で用いられるランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの詳細について説明する。
【０１３２】
＜ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐ＞
図１３は、ランダム化Ｓ−Ｂｏｘ１２１Ｘ（ランダム化Ｓ−Ｂｏｘ１２０ａ〜ランダム化Ｓ−Ｂｏｘ１２０ｐ：図１２）の構成を示したブロック図である。
【０１３３】
ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１３、図１２）は、合成体変換部１００（数式１参照）と、ランダム化８ビット逆元計算部１０１（図１１、図３８）と、拡大体変換兼行列変換部１０２（数式２参照）と、排他的論理和部１０４と、合成体変換部１０３（数式１参照）とを備える。
【０１３４】
ランダム化Ｓ−Ｂｏｘ１２１Ｘは、乱数Ｒ（８ビット）を用いて、入力データＸ（８ビット）に対してランダム化Ｓ−Ｂｏｘ処理を行い、出力データＹ（８ビット）を求める処理である。ここでいう入力データＸは、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１２）の処理説明におけるデータＸ［０］、Ｘ［１］、…、Ｘ［１５］のいずれかに相当し、乱数Ｒは、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘの処理説明（図１２）における乱数Ｒに相当する。また、出力データＹは、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘの処理説明（図１２）におけるデータＹ［０］、Ｙ［１］、…、Ｙ［１５］のいずれかに相当する。
【０１３５】
なお、このＸは、図３８では、記号ＩＣ８ｔにより図示され、Ｙは、記号ＯＣ８ｔにより示され、Ｒは、記号Ｒｔにより示される。
【０１３６】
ランダム化Ｓ−Ｂｏｘ１２１Ｘは、以下の処理を行う。
【０１３７】
（１）合成体変換部１００は、Ｘ（８ビット）を上位から１ビットずつ分割して、Ｘ７、Ｘ６、…、Ｘ０とする。そして、合成体変換部１００は、以下の数式１の行列計算を行い、行列計算により求めたＡ７、Ａ６、…、Ａ０を、上位からこの順で結合して、合成体変換部１００の出力データＡ（８ビット）とする。なお、下記の行列計算は、ｍｏｄ  ２で行われるものとする。即ち、下記の行列計算においては、０＋０＝１＋１＝０であり、０＋１＝１＋０＝１である。
【０１３８】
【数１】
2008146482.tif 000045
【０１３９】
（２）そして、他方の合成体変換部１０３は、上記の（１）と同様にして、Ｒ（８ビット）を上位から１ビットずつ分割してから、数式１の行列計算を行って、Ｒ（８ビット）からＳ（８ビット）を生成する。
【０１４０】
（３）次に、ランダム化８ビット逆元計算部１０１は、上記（２）で生成された乱数Ｓ（８ビット）を用いて、上記（１）で生成された入力データＡ（８ビット）に対して、後で述べるランダム化８ビット逆元計算を行い、出力データＢ（８ビット）を生成する。
【０１４１】
（４）拡大体変換兼行列変換部１０２は、上記（３）で生成されたデータＢ（８ビット）に対して、下記の数式２の行列計算式に基づいて、先述した（１）と同様の方法で、つまり、上位から１ビットずつ分割して、行列計算を行って、データＣ（８ビット）を生成する。
【０１４２】
【数２】
2008146482.tif 000046
【０１４３】
（５）排他的論理和部１０４は、上記（４）で生成されたデータＣ（８ビット）と、定数０１１０００１１（２進数）とのビットごとの排他的論理和演算を行い、データＹ（８ビット）を生成する。
【０１４４】
ランダム化Ｓ−ｂｏｘ１２１Ｘは、上記（５）で生成されたこのＹを、ランダム化Ｓ−Ｂｏｘ１２１Ｘの出力データとして出力する。
【０１４５】
なお、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理は、マスク値（Ｒ，Ｒ，…，Ｒ）でマスクされている入力データＸ＝Ｍ（＋）（Ｒ，Ｒ，…，Ｒ）に対して、ＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理内のＳ−Ｂｏｘテーブル変換を行い、マスク値（Ｓ，Ｓ，…，Ｓ）でマスクされた処理結果Ｙ＝Ｐ（＋）（Ｓ，Ｓ，…，Ｓ）を生成する処理に他ならない。このとき、Ｐは、Ｍに対してＡＥＳ暗号アルゴリズム規格で規定されているＳｕｂＢｙｔｅｓ処理内のＳ−Ｂｏｘテーブル変換を行った結果と一致し、マスク値Ｓは、マスク値Ｒに対して乱数更新部１７で行われる乱数更新処理を行った結果と等しくなる。
【０１４６】
なお、このＭは、図３８では、記号Ｖ８ｔにより示され、Ｐは、Ｓ−ｂｏｘ（ｖ８ｔ）により示される。このＡは、図３８では、記号ＩＤ８ｔにより示され、Ｂは、記号ＯＤ８ｔにより示される。
【０１４７】
次に、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの内部でそれぞれ用いられるランダム化８ビット逆元計算部１０１の詳細について説明する。
【０１４８】
＜ランダム化８ビット逆元計算部１０１＞
図１４は、ランダム化８ビット逆元計算部１０１の構成を示すブロック図である。
【０１４９】
ランダム化８ビット逆元計算部１０１（図１３、図１４、図３８）は、１７乗計算部１１０（図１５）と、１７乗計算部１１２（図１５）と、４ビット補正項計算部１１１（図１６）と、１６乗計算部１１５（図１７）と、１６乗計算部１１７（図１７）と、４ビット出力計算部１１８（図１８）と、４ビット出力計算部１１９（図１８）と、４ビット逆元計算部１１６（図２１）と、ランダム化４ビット逆元計算部１１４（図２３）と、排他的論理和部１１３とを備える。
【０１５０】
ランダム化８ビット逆元計算部１０１（図１３、図１４）は、乱数Ｒ（８ビット）を用いて、入力データＸ（８ビット）に対してランダム化８ビット逆元計算処理を行い、出力データＹ（８ビット）を出力する。ここでいう入力データＸは、先述した、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理説明（図１３）におけるデータＡに相当し、乱数Ｒは、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理説明（図１３）における乱数Ｓに相当する。また、出力データＹは、ランダム化Ｓ−Ｂｏｘ１２０ａ〜１２０ｐの処理説明（図１３）におけるデータＢに相当する。
【０１５１】
なお、このＸは、図３８では、記号ＩＤ８ｔにより示され、Ｒは、記号ＲＤｔにより示され、Ｙは、記号ＯＤ８ｔにより示される。
【０１５２】
ランダム化８ビット逆元計算部１０１は、以下の処理を実行する。
【０１５３】
（１）ランダム化８ビット逆元計算部１０１は、まず、データＸ（８ビット）を上位から４ビットずつに分割し、Ｘ０（４ビット）、Ｘ１（４ビット）とする。そして、ランダム化８ビット逆元計算部１０１は、同様に、乱数Ｒ（８ビット）を上位から４ビットずつに分割し、Ｒ０（４ビット）、Ｒ１（４ビット）とする。そして、ランダム化８ビット逆元計算部１０１は、１７乗計算部１１０にＸ０とＸ１を、４ビット補正項計算部１１１にＸ０とＸ１とＲ０とＲ１を、１７乗計算部１１２にＲ０とＲ１をそれぞれ入力する。
【０１５４】
（２）そして、１７乗計算部１１０は、入力されるＸ０とＸ１に対して、後で述べる１７乗計算処理を行い、出力データＡ（４ビット）を生成する。同様に、他方の１７乗計算部１１２は、入力されるＲ０とＲ１に対して、１７乗計算処理を行い、出力データＣ（４ビット）を生成する。
【０１５５】
（３）他方、４ビット補正項計算部１１１は、入力されるＸ０、Ｘ１、Ｒ０、Ｒ１に対して、後で述べる４ビット補正項計算処理を行い、出力データＢ（４ビット）を生成する。
【０１５６】
（４）そして、排他的論理和部１１３は、（２）で生成されたデータＡと、（３）で生成されたデータＢの排他的論理和演算を行い、データＤ（８ビット）を生成する。
【０１５７】
（５）そして、ランダム化４ビット逆元計算部１１４は、上記（２）で生成されたデータＣ（４ビット）を用いて、上記（４）で生成されたデータＤに対して、後で述べるランダム化４ビット逆元計算処理を行い、データＥ（４ビット）を生成する。
【０１５８】
（６）また、１６乗計算部１１５は、ランダム化８ビット逆元計算部１０１に入力されるデータＸ（８ビット）に対して、後で述べる１６乗計算処理を行い、データＦ（８ビット）を生成する。そして、ランダム化８ビット逆元計算部１０１は、生成されるデータＦを、上位から４ビットずつに分割し、Ｆ０（４ビット）、Ｆ１（４ビット）とする。同様に、他方の１６乗計算部１１７は、ランダム化８ビット逆元計算部１０１に入力されるデータＲ（８ビット）に対して１６乗計算処理を行い、データＨを生成する。ランダム化８ビット逆元計算部１０１は、上記のデータＦの場合と同様、生成されるこのデータＨを、上位から４ビットずつに分割し、Ｈ０（４ビット）、Ｈ１（４ビット）とする。
【０１５９】
（７）他方、４ビット逆元計算部１１６は、上記（２）で、図１４の下側に図示される１７乗計算部１１２により生成されるデータＣ（４ビット）に対して、後で述べる４ビット逆元計算処理を行い、データＧ（４ビット）を生成する。
【０１６０】
（８）そして、４ビット出力計算部１１８は、上記（５）で生成されたデータＥ（４ビット）と、上記（７）で生成されたデータＧ（４ビット）と、上記（６）でデータＦから分割されたデータＦ０（４ビット）と、同じく上記（６）でデータＨから分割されたデータＨ０（４ビット）とに対して、後で述べる４ビット出力計算処理を行い、データＹ０（４ビット）を生成する。同様に、他方の４ビット出力計算部１１９は、データＥ（４ビット）と、データＧ（４ビット）と、データＦ１（４ビット）と、データＨ１（４ビット）とに対して、４ビット出力計算処理を行い、データＹ１（４ビット）を生成する。そして、ランダム化８ビット逆元計算部１０１は、こうして生成されるデータＹ０とＹ１を、上位からこの順で連結して８ビットデータＹとする。そして、ランダム化８ビット逆元計算部１０１は、連結されたデータＹを、ランダム化８ビット逆元計算部１０１の出力データとして出力する。
【０１６１】
なお、このようにして行われる、ランダム化８ビット逆元計算部１０１の処理は、マスク値Ｒでマスクされている入力データＸ＝Ｍ（＋）Ｒに対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の逆元計算を行い、マスク値Ｒ＾（−１）でマスクされた処理結果Ｙ＝Ｘ＾（−１）（＋）Ｒ＾（−１）を生成する処理に他ならない。このとき、Ｘ＾（−１）は、合成体ＧＦ（（（２＾２）＾２）＾２）におけるＸの逆元であり、マスク値Ｒ＾（−１）は、合成体ＧＦ（（（２＾２）＾２）＾２）におけるＲの逆元となる。
【０１６２】
次に、ランダム化８ビット逆元計算部１０１の内部で使用される、１７乗計算部１１０、１１２（図１５に示される１７乗計算部１１０Ｘ）、４ビット補正項計算部１１１（図１６）、１６乗計算部１１５、１１７（図１７に示される１６乗計算部１１５Ｘ）、４ビット出力計算部１１８、１１９（図１８に示される４ビット出力計算部１１８Ｘ）の詳細について順に説明する。
【０１６３】
＜１７乗計算部１１０、１１２＞
図１５は、１７乗計算部１１０Ｘを示す図である。
【０１６４】
１７乗計算部１１０Ｘ（図１４、図１５）は、４ビット乗算部１１０ｂ（図１９）と、４ビット乗算部１１０ｃ（図１９）と、４ビット乗算部１１０ｄ（図１９）と、排他的論理和部１１０ａと、排他的論理和部１１０ｅとを備える。
【０１６５】
そして、１７乗計算部１１０Ｘは、入力データＸ０（４ビット）、Ｘ１（４ビット）に対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１７乗計算処理を行い、データ処理結果Ｙ（４ビット）を生成する。このとき、入力データＸ０、Ｘ１を上位からこの順で連結した８ビットデータＸに対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１７乗計算を行った結果が、Ｙとなる。即ち
【０１６６】
Ｙ＝Ｘ＾（１７）  ｉｎ  ＧＦ（（（２＾２）＾２）＾２）
【０１６７】
である。このとき、Ｙ＾１５＝（Ｘ＾１７）＾１５＝Ｘ＾２５５となり、Ｘは、ＧＦ（（（２＾２）＾２）＾２）上の元であることから、Ｙ＾１５＝Ｘ＾２５５＝１である。即ち、Ｙの位数は１５となり、Ｙは、部分体ＧＦ（（２＾２）＾２）上の元となる。つまり、Ｙは、４ビットのデータとなる。
【０１６８】
また、ここでいう入力データＸ０、Ｘ１は、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＸ０、Ｘ１もしくはＲ０、Ｒ１に相当し、出力データＹは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＡもしくはＣのいずれかに相当する。
【０１６９】
ここで、１７乗計算部１１０Ｘは、部分体ＧＦ（（２＾２）＾２）上で以下の計算を行って、出力データＹを生成する。
【０１７０】
Ｙ＝１１００（２進数）×（Ｘ０＾２）＋Ｘ１×（Ｘ０＋Ｘ１）  ｉｎ  ＧＦ（（２＾２）＾２）
【０１７１】
ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１０ａ、１１０ｅ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１１０ｂ、１１０ｃ、１１０ｄ）の詳細は後で説明する（図１９）。
【０１７２】
＜４ビット補正項計算部１１１＞
図１６は、４ビット補正項計算部１１１の構成を示すブロック図である。
【０１７３】
４ビット補正項計算部１１１（図１４、図１６）は、４ビット乗算部１１１ａ（図１９）と、４ビット乗算部１１１ｂ（図１９）と、排他的論理和部１１１ｃとを備える。
【０１７４】
そして、４ビット補正項計算部１１１は、入力データＸ０（４ビット）、Ｘ１（４ビット）、Ｒ０（４ビット）、Ｒ１（４ビット）に対して、４ビット補正項計算処理を行い、出力データＢ（４ビット）を生成する。ここでいう入力データＸ０、Ｘ１、Ｒ０、Ｒ１は、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＸ０、Ｘ１、Ｒ０、Ｒ１にそれぞれ相当し、出力データＢは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＢに相当する。
【０１７５】
ここで、４ビット補正項計算部１１１は、部分体ＧＦ（（２＾２）＾２）上で以下の計算を行って、出力データＢを生成する。
【０１７６】
Ｂ＝Ｘ０×Ｒ１＋Ｘ１×Ｒ０  ｉｎ  ＧＦ（（２＾２）＾２）
【０１７７】
そして、ここに、ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１１ｃ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１１１ａ、１１１ｂ）の詳細は後で説明する（図１９）。
【０１７８】
＜１６乗計算部１１５、１１７＞
図１７は、１６乗計算部１１５Ｘ（１６乗計算部１１５（図１４）、１６乗計算部１１７（図１４））の構成を示すブロック図である。
【０１７９】
そして、１６乗計算部１１５Ｘは、入力データＸ（８ビット）に対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１６乗計算を行い、その計算結果をＹ（８ビット）として出力する。このとき、入力データＸに対して、合成体ＧＦ（（（２＾２）＾２）＾２）上の１６乗計算を行った結果が、Ｙとなる。即ち
【０１８０】
Ｙ＝Ｘ＾（１６）  ｉｎ  ＧＦ（（（２＾２）＾２）＾２）
【０１８１】
である。また、ここでいう入力データＸは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＸ、または、Ｒのいずれかに相当し、出力データＹは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）におけるデータＦまたはＨのいずれかに相当する。
【０１８２】
ここで、１６乗計算部１１５、１１７は、入力データＸを上位から４ビットずつ分割して、Ｘ０、Ｘ１とした上で、以下の計算をＧＦ（（２＾２）＾２）上で行い、Ｙ０、Ｙ１を求める。
【０１８３】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ０＋Ｘ１    ｉｎ  ＧＦ（（２＾２）＾２）
【０１８４】
そして、ここで、ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１５ａ）。そして、１６乗計算部１１５Ｘは、こうして求められたＹ０、Ｙ１をこの順で結合して８ビットデータＹとする。このＹが１６乗計算部１１５、１１７の出力データとなる。
【０１８５】
＜４ビット出力計算部１１８、１１９＞
図１８は、４ビット出力計算部１１８Ｘ（４ビット出力計算部１１８（図１４）、４ビット出力計算部１１９（図１４））の構成を示したブロック図である。
【０１８６】
４ビット出力計算部１１８Ｘは、４ビット乗算部１１８ａ（図１９）と、４ビット乗算部１１８ｂ（図１９）と、４ビット乗算部１１８ｄ（図１９）と、排他的論理和部１１８ｃと、排他的論理和部１１８ｅとを備える。
【０１８７】
そして、４ビット出力計算部１１８Ｘは、入力データＥ（４ビット）、Ｇ（４ビット）、Ｆ（４ビット）、Ｈ（４ビット）に対して、４ビット出力計算処理を行い、出力データＹを出力する。ここでいう入力データＥ、Ｇ、Ｆ、Ｈは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）においては、４ビット出力計算部１１８への入力データＥ、Ｇ、Ｆ０、Ｈ０にそれぞれ対応し、また、４ビット出力計算部１１９への入力データＥ、Ｇ、Ｆ１、Ｈ１にそれぞれ対応する。また、出力データＹは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）においては、４ビット出力計算部１１８の出力データＹ０に対応し、４ビット出力計算部１１９の出力データＹ１に対応する。４ビット出力計算部１１８、１１９は、ＧＦ（（２＾２）＾２）上で以下の計算を行い、Ｙを求めて、求められたＹを出力する。
【０１８８】
Ｙ＝Ｅ×Ｆ＋Ｇ×Ｆ＋Ｅ×Ｈ    ｉｎ  ＧＦ（（２＾２）＾２）
【０１８９】
ここで、ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１１８ｃ、１１８ｅ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１１８ａ、１１８ｂ、１１８ｄ）の詳細は後で説明する（図１９）。
【０１９０】
次に、これまで説明した各種処理で用いられている各４ビット乗算部の詳細、すなわち、図１５に示される４ビット乗算部１１０ｂおよび４ビット乗算部１１０ｃと、図１６に示される４ビット乗算部１１１ａおよび４ビット乗算部１１１ｂと、図１８に示される４ビット乗算部１１８ａ、４ビット乗算部１１８ｂ、及び４ビット乗算部１１８ｄとの詳細について説明する。なお、図３０に示される８ビット逆元計算部１７１が備える４ビット乗算部１７１ｄと、４ビット乗算部１７１ｅも同様である。なお、ここに、これら４ビット乗算部１７１ｄ等を有する、図３０に示される８ビット逆元計算部１７１は、図２９に示される乱数更新部１７（図１４参照）の一部である。
【０１９１】
＜４ビット乗算部２０＞
図１９は、４ビット乗算部２０の構成を示したブロック図である。
【０１９２】
ここでは、４ビット乗算部２０として説明するが、これまで説明した各種処理で用いられている、上記に列挙した４ビット乗算部は、すべてこれと同じ構成である。なお、この点は、上述した４ビット出力計算部１１８、４ビット出力計算部１１９が、いずれも図１８に示される４ビット出力計算部１１８Ｘと同じ構成であること等と同様である。
【０１９３】
４ビット乗算部２０は、２ビット乗算部２００（図１９）と、２ビット乗算部２０１（図１９）と、２ビット乗算部２０２（図１９）と、２ビット乗算部２０３（図１９）と、２ビット乗算部２０６（図１９）と、排他的論理和部２０４と、排他的論理和部２０５と、排他的論理和部２０７とを備える。
【０１９４】
そして、４ビット乗算部２０は、入力データＸ（４ビット）、Ｙ（４ビット）に対してＧＦ（（２＾２）＾２）上の乗算を行い、乗算結果Ｚ（４ビット）を出力する。このとき、
Ｚ＝Ｘ×Ｙ    ｉｎ  ＧＦ（（２＾２）＾２）
である。
【０１９５】
そして、４ビット乗算部２０は、入力データＸ、Ｙを、それぞれ上位から２ビットずつに分割して、Ｘ０（２ビット）、Ｘ１（２ビット）、及び、Ｙ０（２ビット）、Ｙ１（２ビット）とする。そして、ＧＦ（２＾２）上で以下の計算式を実行して、Ｚ０、Ｚ１を求める。
【０１９６】
Ｚ０＝Ｘ０×Ｙ１＋Ｘ１×Ｙ０＋Ｘ０×Ｙ０    ｉｎ  ＧＦ（２＾２）
Ｚ１＝１０（２進数）×Ｘ０×Ｙ０＋Ｘ１×Ｙ１    ｉｎ  ＧＦ（２＾２）
【０１９７】
そして、４ビット乗算部２０は、上記のＺ０、Ｚ１を上位からこの順で連結した４ビットデータＺを、４ビット乗算部２０の出力として出力する。
【０１９８】
ここで、ＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部２０４、２０５、２０７）。ＧＦ（２＾２）上の乗算（２ビット乗算部２００、２０１、２０２、２０３、２０６：図１９）の詳細を次に説明する。
【０１９９】
＜２ビット乗算部２１＞
図２０は、２ビット乗算部２１の構成を示したブロック図である。
【０２００】
ここでは、２ビット乗算部２１として説明するが、これまで説明した各種処理で用いられている２ビット乗算部は、すべてこれと同じ構成である。なお、図２１の２ビット乗算部１４３および２ビット乗算部１４４と、図２４の２ビット乗算部１５０ｂ、２ビット乗算部１５０ｃ、及び２ビット乗算部１５０ｄと、図２５の２ビット乗算部１５１ａおよび２ビット乗算部１５１ｂと、図２７の２ビット乗算部１５８ａ、２ビット乗算部１５８ｂ及び２ビット乗算部１５８ｄとについても、この図２０に示される２ビット乗算部２１と同じ構成を有する。
【０２０１】
２ビット乗算部２１は、論理積部２１０と、論理積部２１１と、論理積部２１２と、論理積部２１３と、排他的論理和部２１４と、排他的論理和部２１５と、排他的論理和部２１６とを備える。
【０２０２】
そして、２ビット乗算部２１は、入力データＸ（２ビット）、Ｙ（２ビット）に対してＧＦ（２＾２）上の乗算を行い、乗算結果Ｚ（２ビット）を出力する。このとき、
Ｚ＝Ｘ×Ｙ    ｉｎ  ＧＦ（２＾２）
である。
【０２０３】
そして、２ビット乗算部２１は、入力データＸ、Ｙを、それぞれ上位から１ビットずつに分割して、Ｘ０（１ビット）、Ｘ１（１ビット）、及び、Ｙ０（１ビット）、Ｙ１（１ビット）とする。そして、２ビット乗算部２１は、ＧＦ（２）上で以下の計算式を実行して、Ｚ０、Ｚ１を求める。
【０２０４】
Ｚ０＝Ｘ０×Ｙ１＋Ｘ１×Ｙ０＋Ｘ０×Ｙ０    ｉｎ  ＧＦ（２）
Ｚ１＝Ｘ０×Ｙ０＋Ｘ１×Ｙ１    ｉｎ  ＧＦ（２）
【０２０５】
そして、２ビット乗算部２１は、上記のＺ０、Ｚ１を上位からこの順で連結し、連結した２ビットデータＺを、２ビット乗算部２１の出力として出力する。
【０２０６】
ここで、ＧＦ（２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部２１４、２１５、２１６）。ＧＦ（２）上の乗算は、論理積となる（論理積部２１０、２１１、２１２、２１３）。
【０２０７】
次に、ランダム化８ビット逆元計算部１０１（図１４）で用いられる４ビット逆元計算部１１６の詳細について説明する。
【０２０８】
＜４ビット逆元計算部１１６＞
図２１は、４ビット逆元計算部１１６（図１４）の構成を示すブロック図である。なお、図３０の４ビット逆元計算部１７１ｃも、この４ビット逆元計算部１１６と同様のものである。
【０２０９】
４ビット逆元計算部１１６は、５乗計算部１４１（図２４）と、２ビット逆元計算部１４２（図２２）と、２ビット乗算部１４３（図２０）と、２ビット乗算部１４４（図２０）と、排他的論理和部１４０とを備える。
【０２１０】
そして、４ビット逆元計算部１１６は、入力データＸ（４ビット）に対して、ＧＦ（（２＾２）＾２）上の逆元計算を行い、計算結果である出力データＹ（４ビット）を生成する。このとき、
【０２１１】
Ｙ＝Ｘ＾（−１）    ｉｎ  ＧＦ（（２＾２）＾２）
【０２１２】
である。ここでいう入力データＸは、ランダム化８ビット逆元計算部１０１の処理説明（図１４）においては、４ビット逆元計算部１１６への入力データＣに対応し、出力データＹは、４ビット逆元計算部１１６の出力データＧに対応する。４ビット逆元計算部１１６は、以下の処理を行う。
【０２１３】
（１）まず、４ビット逆元計算部１１６は、入力データＸを上位から２ビットずつに分割して、Ｘ０、Ｘ１とする。そして、４ビット逆元計算部１１６は、分割したＸ０を、排他的論理和部１４０、５乗計算部１４１、２ビット乗算部１４３に入力する。また、４ビット逆元計算部１１６は、分割した他方のＸ１を、排他的論理和部１４０、５乗計算部１４１に入力する。
【０２１４】
（２）５乗計算部１４１は、入力されるＸ０、Ｘ１に対してＧＦ（（２＾２）＾２）上の５乗計算を行い、その結果Ａ（２ビット）を求める。ここで、Ｘ０、Ｘ１をこの順で結合したデータＸ（４ビット）をＧＦ（（２＾２）＾２）上で５乗した結果が、Ａとなる。即ち、
【０２１５】
Ａ＝Ｘ＾５    ｉｎ  ＧＦ（（２＾２）＾２）
【０２１６】
である。また、Ａ＾３＝Ｘ＾１５＝１    ｉｎ  ＧＦ（（２＾２）＾２）より、Ａの位数は、３であるから、Ａは、ＧＦ（２＾２）上の元でもある。従って、Ａは２ビットデータとなる。５乗計算部１４１の詳細については、後で説明する（図２４）。
【０２１７】
（３）そして、図２１の４ビット逆元計算部１１６が有する２ビット逆元計算部１４２は、上記（２）において５乗計算部１４１により求められる前記Ａ（２ビット）に対して、ＧＦ（２＾２）上の逆元計算を行い、データＢ（２ビット）を生成して、出力する。このとき、
【０２１８】
Ｂ＝Ａ＾（−１）    ｉｎ  ＧＦ（２＾２）
【０２１９】
である。２ビット逆元計算部１４２の詳細はこの後説明する（図２２）。
【０２２０】
（４）次に、以上の計算の結果に基づいて、図２１の４ビット逆元計算部１１６が有する２ビット乗算部１４３、２ビット乗算部１４４が、上記（３）で２ビット逆元計算部１４２により生成される前記Ｂ（２ビット）、及び、上記（１）で分割されたＸ０、Ｘ１から、それぞれ、以下の計算により、Ｙ０（２ビット）、Ｙ１（２ビット）を求める。
【０２２１】
Ｙ０＝Ｘ０×Ｂ    ｉｎ  ＧＦ（２＾２）
Ｙ１＝（Ｘ０＋Ｘ１）×Ｂ    ｉｎ  ＧＦ（２＾２）
【０２２２】
そして、４ビット逆元計算部１１６は、こうして求められた上記のＹ０、Ｙ１を上位からこの順で連結した４ビットデータＹを、４ビット逆元計算部１１６の出力として出力する。
【０２２３】
ここで、ＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１４０）。ＧＦ（２＾２）上の乗算（２ビット乗算部１４３、１４４）の詳細は既に説明した通りである（図２０の２ビット乗算部２１）。
【０２２４】
次に、このような図２１の４ビット逆元計算部１１６（図２１）で用いられる２ビット逆元計算部１４２の詳細について説明する。
【０２２５】
＜２ビット逆元計算部１４２＞
図２２は、２ビット逆元計算部１４２の構成を示すブロック図である。
【０２２６】
２ビット逆元計算部１４２は、排他的論理和部１４２ａを有する。
【０２２７】
そして、２ビット逆元計算部１４２は、入力データＸ（２ビット）に対してＧＦ（２＾２）上の逆元計算を行い、計算結果をＹ（２ビット）として出力する。このとき、
【０２２８】
Ｙ＝Ｘ＾（−１）    ｉｎ  ＧＦ（２＾２）
【０２２９】
となる。２ビット逆元計算部１４２は、Ｘの上位１ビット、下位１ビットをそれぞれＸ０、Ｘ１として分割して、以下の式により、Ｙ０、Ｙ１を求める。
【０２３０】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ１＋Ｘ０
【０２３１】
そして、Ｙ０、Ｙ１をこの順で結合した２ビットデータＹを、出力とする。
【０２３２】
次に、ランダム化８ビット逆元計算部１０１（図１４）の内部で用いられるランダム化４ビット逆元計算部１１４の詳細について説明する。
【０２３３】
＜ランダム化４ビット逆元計算部１１４＞
図２３は、ランダム化４ビット逆元計算部１１４（図１４）の構成を示すブロック図である。
【０２３４】
ランダム化４ビット逆元計算部１１４（図１４、図２３）は、５乗計算部１５０（図２４）と、５乗計算部１５２（図２４）と、２ビット補正項計算部１５１（図２５）と、４乗計算部１５５（図２６）と、４乗計算部１５７（図２６）と、２ビット出力計算部１５８（図２７）と、２ビット出力計算部１５９（図２７）と、ランダム化２ビット逆元計算部１５４（図２８）と、２ビット逆元計算部１５６と、排他的論理和部１５３とを備える。
【０２３５】
そして、ランダム化４ビット逆元計算部１１４は、乱数Ｒ（４ビット）を用いて、入力データＸ（４ビット）に対してランダム化４ビット逆元計算処理を行って、出力データＹ（４ビット）を生成する処理である。ここでいう入力データＸは、ランダム化８ビット逆元計算部１０１の説明（図１４）におけるランダム化４ビット逆元計算部１１４への入力データＤに相当し、乱数Ｒは、Ｃに相当する。また、出力データＹは、Ｅに相当する。ランダム化４ビット逆元計算部１１４は、ランダム化８ビット逆元計算部１０１と同様の計算処理を、ＧＦ（（２＾２）＾２）上で行っている。但し、ランダム化８ビット逆元計算部１０１では、１７乗計算部１１２の出力データＣをランダム化４ビット逆元計算部１１４にも入力していたが、ランダム化４ビット逆元計算部１１４はその出力Ｃをランダム化２ビット逆元計算部１５４には入力しない。また、各処理部に入力されるデータのデータサイズや、べき乗演算時のべき数などが異なる。上記を除けば、その処理手順はランダム化８ビット逆元計算部１０１と同じとなるため、ここでは詳しい説明を割愛する。
【０２３６】
なお、ランダム化４ビット逆元計算部１１４の処理は、マスク値Ｒでマスクされている入力データＸ＝Ｍ（＋）Ｒに対して、合成体ＧＦ（（２＾２）＾２）上の逆元計算を行い、マスク値Ｒ＾（−１）でマスクされた処理結果Ｙ＝Ｘ＾（−１）（＋）Ｒ＾（−１）を生成する処理に他ならない。このとき、Ｘ＾（−１）は、ＧＦ（（２＾２）＾２）におけるＸの逆元であり、マスク値Ｒ＾（−１）は、ＧＦ（（２＾２）＾２）におけるＲの逆元となる。
【０２３７】
＜５乗計算部１４１、１５０、１５２＞
図２４は、５乗計算部１４１Ｘ（５乗計算部１４１（図２１）、５乗計算部１５０（図２３）、５乗計算部１５２（図２３））の構成を示すブロック図である。
【０２３８】
５乗計算部１４１Ｘは、２ビット乗算部１５０ｂと、２ビット乗算部１５０ｃと、２ビット乗算部１５０ｄと、排他的論理和部１５０ａと、排他的論理和部１５０ｅとを備える。ここで、２ビット乗算部１５０ｂと、２ビット乗算部１５０ｃと、２ビット乗算部１５０ｄとは、それぞれ、図２０に示される２ビット乗算部２１と同じ構成のものである。
【０２３９】
そして、５乗計算部１４１Ｘ（５乗計算部１４１、１５０、１５２）は、入力データＸ０（２ビット）、Ｘ１（２ビット）に対してＧＦ（（２＾２）＾２）上の５乗計算処理を行って、出力データＹ（２ビット）を出力する。ここでいう入力データＸ０、Ｘ１は、４ビット逆元計算部１１６の説明（図２１）におけるＸ０、Ｘ１に相当し、ランダム化４ビット逆元計算部１１４の説明（図２３）における、Ｘ０、Ｘ１、及び、Ｒ０、Ｒ１に相当する。また、出力データＹは、４ビット逆元計算部１１６の説明（図２１）におけるＡに相当し、ランダム化４ビット逆元計算部１１４の説明（図２３）における、Ａ、及び、Ｃに相当する。
【０２４０】
また、出力データＹは、入力データＸ０、Ｘ１をこの順で結合した４ビットデータをＸとしたとき、
【０２４１】
Ｙ＝Ｘ＾５    ｉｎ  ＧＦ（（２＾２）＾２）
【０２４２】
となる。ここで、Ｙ＾３＝Ｘ＾１５＝１    ｉｎ  ＧＦ（（２＾２）＾２）であるから、Ｙの位数は、３であり、ＹはＧＦ（２＾２）上の元でもある。従って、Ｙは、２ビットのデータとなる。
【０２４３】
なお、５乗計算部１４１Ｘ（５乗計算部１４１（図２１）、５乗計算部１５０（図２３）、５乗計算部１５２（図２３））の処理の流れは、既に説明した１７乗計算部１１０Ｘ（図１５、１７乗計算部１１０、１７乗計算部１１２）と基本的には同じであるので、詳細な説明は割愛する。また、排他的論理和部１５０ａ、１５０ｅ、１１０ｅ（図２４）は、ビットごとの排他的論理和演算であり、２ビット乗算部１５０ｂ、２ビット乗算部１５０ｃ、２ビット乗算部１５０ｄ（図２４）の処理は、既に説明した２ビット乗算部２１（図２０）と同じである。
【０２４４】
＜２ビット補正項計算部１５１＞
図２５は、２ビット補正項計算部１５１（図２３）の構成を示すブロック図である。
【０２４５】
２ビット補正項計算部１５１は、２ビット乗算部１５１ａ（図２０）と、２ビット乗算部１５１ｂ（図２０）と、排他的論理和部１５１ｃとを備える。
【０２４６】
そして、２ビット補正項計算部１５１は、入力データＸ０（２ビット）、Ｘ１（２ビット）、Ｒ０（２ビット）、Ｒ１（２ビット）に対して補正項計算処理をＧＦ（（２＾２）＾２）上で行って、出力データＢ（２ビット）を出力する。ここでいう入力データＸ０、Ｘ１、Ｒ０、Ｒ１は、ランダム化４ビット逆元計算部１１４の説明（図２３）における、Ｘ０、Ｘ１、Ｒ０、Ｒ１に相当する。
【０２４７】
ここで、２ビット補正項計算部１５１の処理の流れは、既に説明した４ビット補正項計算部１１１（図１６）と基本的には同じであるので、詳細な説明は割愛する。また、排他的論理和部１５１ｃは、ビットごとの排他的論理和演算であり、２ビット乗算部１５１ａ、１５１ｂの処理は、既に説明した２ビット乗算部２１（図２０）と同じである。
【０２４８】
＜４乗計算部１５５、１５７＞
図２６は、４乗計算部１５５Ｘ（４乗計算部１５５、４乗計算部１５７：図２３）の構成を示すブロック図である。
【０２４９】
４乗計算部１５５Ｘは、排他的論理和部１５５ａを備える。
【０２５０】
そして、４乗計算部１５５Ｘは、入力データＸ（４ビット）に対して、合成体ＧＦ（（２＾２）＾２）上の４乗計算を行い、その計算結果をＹ（４ビット）として出力する。このとき、入力データＸに対して、合成体ＧＦ（（２＾２）＾２）上の４乗計算を行った結果が、Ｙとなる。即ち
【０２５１】
Ｙ＝Ｘ＾４  ｉｎ  ＧＦ（（２＾２）＾２）
【０２５２】
である。また、ここでいう入力データＸは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）におけるデータＸ、または、Ｒのいずれかに相当し、出力データＹは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）におけるデータＦまたはＨのいずれかに相当する。
【０２５３】
そして、４乗計算部１５５Ｘは、入力データＸを上位から２ビットずつ分割して、Ｘ０、Ｘ１とした上で、以下の計算をＧＦ（２＾２）上で行い、Ｙ０、Ｙ１を求める。
【０２５４】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ０＋Ｘ１    ｉｎ  ＧＦ（２＾２）
【０２５５】
ここでＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１５５ａ）。そして、４乗計算部１５５Ｘは、求められたＹ０、Ｙ１をこの順で結合して８ビットデータＹとする。このＹが４乗計算部１５５、１５７の出力データとなる。
【０２５６】
＜２ビット出力計算部１５８、１５９＞
図２７は、２ビット出力計算部１５８Ｘ（２ビット出力計算部１５８、２ビット出力計算部１５９：図２３）の構成を示したブロック図である。
【０２５７】
２ビット出力計算部１５８Ｘは、２ビット乗算部１５８ａ（図２０）と、２ビット乗算部１５８ｂ（図２０）と、２ビット乗算部１５８ｄ（図２０）と、排他的論理和部１５８ｃと、排他的論理和部１５８ｅとを備える。
【０２５８】
そして、２ビット出力計算部１５８Ｘは、このような各部分を用いて、入力データＥ（２ビット）、Ｇ（２ビット）、Ｆ（２ビット）、Ｈ（２ビット）に対して、２ビット出力計算処理を行い、出力データＹを出力する。ここでいう入力データＥ、Ｇ、Ｆ、Ｈは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）においては、２ビット出力計算部１５８への入力データＥ、Ｇ、Ｆ０、Ｈ０にそれぞれ対応し、また、２ビット出力計算部１５９への入力データＥ、Ｇ、Ｆ１、Ｈ１にそれぞれ対応する。また、出力データＹは、ランダム化４ビット逆元計算部１１４の処理説明（図２３）においては、２ビット出力計算部１５８の出力データＹ０に対応し、また、２ビット出力計算部１５９の出力データＹ１に対応する。２ビット出力計算部１５８Ｘは、ＧＦ（２＾２）上で以下の計算を行い、Ｙを求めて、Ｙを出力する。
【０２５９】
Ｙ＝Ｅ×Ｆ＋Ｇ×Ｆ＋Ｅ×Ｈ    ｉｎ  ＧＦ（２＾２）
【０２６０】
ここで、ＧＦ（２＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１５８ｃ、１５８ｅ）。ＧＦ（２＾２）上の乗算（２ビット乗算部１５８ａ、２ビット乗算部１５８ｂ、２ビット乗算部１５８ｄ）は、既に説明した２ビット乗算部２１（図２３）と同じである。
【０２６１】
＜ランダム化２ビット逆元計算部１５４＞
図２８は、ランダム化２ビット逆元計算部１５４の構成を示すブロック図である。
【０２６２】
ランダム化２ビット逆元計算部１５４は、排他的論理和部１５４ｃを備える。
【０２６３】
そして、ランダム化２ビット逆元計算部１５４は、この排他的論理和部１５４ｃを用いつつ、入力データＸ（２ビット）に対してランダム化２ビット逆元計算処理を行って、出力データＹ（２ビット）を生成する処理である。ここでいう入力データＸは、ランダム化４ビット逆元計算部１１４の説明（図２３）における、ランダム化２ビット逆元計算部１５４（図２３、図２８）への入力データＤに相当する。また、出力データＹは、Ｅに相当する。ランダム化２ビット逆元計算部１５４は、Ｘの上位１ビットをＸ０、下位１ビットをＸ１として、以下の式により、Ｙ０、Ｙ１を計算する。
【０２６４】
Ｙ０＝Ｘ０
Ｙ１＝Ｘ０＋Ｘ１    ｉｎ  ＧＦ（２＾２）
【０２６５】
ここに、ＧＦ（２＾２）上の加算は、排他的論理和演算（排他的論理和部１５４ｃ）である。そして、Ｙ０、Ｙ１を上位からこの順で結合したデータＹ（２ビット）を出力する。
【０２６６】
なお、ランダム化２ビット逆元計算部１５４の処理は、マスク値Ｒでマスクされている入力データＸ＝Ｍ（＋）Ｒに対して、合成体ＧＦ（２＾２）上の逆元計算を行い、マスク値Ｒ＾（−１）でマスクされた処理結果Ｙ＝Ｘ＾（−１）（＋）Ｒ＾（−１）を生成する処理に他ならない。このとき、Ｘ＾（−１）は、ＧＦ（２＾２）におけるＸの逆元であり、マスク値Ｒ＾（−１）は、ＧＦ（２＾２）におけるＲの逆元となる。
【０２６７】
次に、暗号化部１ａの内部で用いられる乱数更新部１７（図９）の詳細を説明する。先述の通り、乱数更新部１７（図９）は、乱数一時記憶部１６（図９、図３８）に記憶される乱数を更新する。
【０２６８】
＜乱数更新部１７＞
図２９は、乱数更新部１７の構成を示すブロック図である。
【０２６９】
乱数更新部１７は、合成体変換部１７０と、８ビット逆元計算部１７１と、拡大体変換兼行列変換部１７２とを備える。
【０２７０】
そして、乱数更新部１７は、入力乱数Ｘ（８ビット）に対して、乱数更新処理を行い、更新乱数Ｙ（８ビット）を出力データとして出力する。ここでいう、入力データＸは、暗号化部１ａの説明（図９）における、乱数更新部１７の入力乱数Ｒｎ（８ビット）に対応し、出力データＹは、暗号化部１ａの説明（図９）における、乱数更新部１７の出力乱数Ｒｎ＋１（８ビット）に対応する。乱数更新部１７は、以下の処理を行う。
【０２７１】
（１）まず、合成体変換部１７０は、入力データＸを上位から１ビットずつ分割して、Ｘ７、Ｘ６、…、Ｘ０として、先述した数式１の行列計算を行い、Ａ７、Ａ６、…、Ａ０を求める。そして、合成体変換部１７０は、Ａ７、Ａ６、…、Ａ０を上位からこの順に連結した８ビットデータをＡとする。
【０２７２】
（２）そして、次に、８ビット逆元計算部１７１は、上記（１）で生成された前記Ａに対して、ＧＦ（（（２＾２）＾２）＾２）上の逆元計算処理を行い、Ｂ（８ビット）を求める。このとき、
【０２７３】
Ｂ＝Ａ＾（−１）    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）
【０２７４】
となる。ＧＦ（（（２＾２）＾２）＾２）上の逆元計算処理の詳細については、後で説明する。
【０２７５】
（３）そして、拡大体変換兼行列変換部１７２は、上記（２）で計算されたＢを、上位から１ビットずつ分割して、Ｂ７、Ｂ６、…、Ｂ０として、先述した数式２の行列計算を行い、Ｙ７、Ｙ６、…、Ｙ０を求める。
【０２７６】
そして、拡大体変換兼行列変換部１７２は、上記のようにして求めたＹ７、Ｙ６、…、Ｙ０をこの順に連結した８ビットデータを、Ｙとして、乱数更新部１７の出力データとして出力する。
【０２７７】
次に、乱数更新部１７で用いる８ビット逆元計算部１７１の詳細について説明する。
【０２７８】
＜８ビット逆元計算部１７１＞
図３０は、８ビット逆元計算部１７１（図２９）の構成を示したブロック図である。
【０２７９】
８ビット逆元計算部１７１（図３０、図２９）は、１７乗計算部１７１ｂ（図１５）と、４ビット逆元計算部１７１ｃ（図２１）と、４ビット乗算部１７１ｄ（図１９）と、４ビット乗算部１７１ｅ（図１９）と、排他的論理和部１７１ａとを備える。
【０２８０】
そして、８ビット逆元計算部１７１は、入力データＸ（８ビット）に対して、ＧＦ（（（２＾２）＾２）＾２）上の逆元計算を行い、計算結果である出力データＹ（８ビット）を生成する。このとき、
【０２８１】
Ｙ＝Ｘ＾（−１）    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）
【０２８２】
である。ここでいう入力データＸは、乱数更新部１７の処理説明（図２９）においては、８ビット逆元計算部１７１への入力データＡに対応し、出力データＹは、８ビット逆元計算部１７１の出力データＢに対応する。８ビット逆元計算部１７１は、以下の処理を行う。
【０２８３】
（１）８ビット逆元計算部１７１は、入力データＸを上位から４ビットずつに分割して、Ｘ０、Ｘ１とする。そして、８ビット逆元計算部１７１は、分割したＸ０を、排他的論理和部１７１ａ、１７乗計算部１７１ｂ、４ビット乗算部１７１ｄに入力する。また、８ビット逆元計算部１７１は、分割したＸ１は、排他的論理和部１７１ａ、１７乗計算部１７１ｂに入力する。
【０２８４】
（２）そして、１７乗計算部１７１ｂは、当該１７乗計算部１７１ｂに入力されるＸ０、Ｘ１に対してＧＦ（（（２＾２）＾２）＾２）上の１７乗計算を行い、その結果Ａ（４ビット）を求める。ここで、Ｘ０、Ｘ１をこの順で結合したデータＸ（８ビット）をＧＦ（（（２＾２）＾２）＾２）上で１７乗した結果が、Ａとなる。即ち、
【０２８５】
Ａ＝Ｘ＾１７    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）
【０２８６】
である。また、Ａ＾１５＝Ｘ＾２５５＝１    ｉｎ  ＧＦ（（（２＾２）＾２）＾２）より、Ａの位数は、１５であるから、Ａは、ＧＦ（（２＾２）＾２）上の元でもある。従って、Ａは４ビットデータとなる。１７乗計算部１７１ｂの詳細については、既に説明した１７乗計算部１１０Ｘ（１７乗計算部１１０（図１６）、１７乗計算部１１２（図１６）：図１５）と同じである。
【０２８７】
（３）次に、４ビット逆元計算部１７１ｃ（図３０）は、上記（２）で生成された前記Ａ（４ビット）に対して、ＧＦ（（２＾２）＾２）上の逆元計算を行い、データＢ（４ビット）を生成して、出力する。このとき、
【０２８８】
Ｂ＝Ａ＾（−１）    ｉｎ  ＧＦ（（２＾２）＾２）
【０２８９】
である。４ビット逆元計算部１７１ｃの詳細は、既に説明した４ビット逆元計算部１１６（図２１）と同じである。
【０２９０】
（４）そして、８ビット逆元計算部１７１は、上記（３）で生成される前記Ｂ（４ビット）、及び、上記（１）で分割されたＸ０、Ｘ１から、以下の計算により、それぞれ４ビット乗算部１７１ｄ、４ビット乗算部１７１ｅによって、以下のＹ０（４ビット）、Ｙ１（４ビット）を求める。
【０２９１】
Ｙ０＝Ｘ０×Ｂ    ｉｎ  ＧＦ（（２＾２）＾２）
Ｙ１＝（Ｘ０＋Ｘ１）×Ｂ    ｉｎ  ＧＦ（（２＾２）＾２）
【０２９２】
そして、８ビット逆元計算部１７１は、上記のＹ０、Ｙ１を上位からこの順で連結した８ビットデータＹを、当該８ビット逆元計算部１７１の出力として出力する。
【０２９３】
ＧＦ（（２＾２）＾２）上の加算は、ビットごとの排他的論理和演算である（排他的論理和部１７１ａ）。ＧＦ（（２＾２）＾２）上の乗算（４ビット乗算部１７１ｄ、１７１ｅ）の詳細は既に説明した通りである（図１９の４ビット乗算部２０）。
【０２９４】
以上により、暗号化装置１の詳細動作が全て説明された。
【０２９５】
次に、ランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐ（図１３）が、ＡＥＳ暗号のＳ−ｂｏｘと互換性を保ちつつ、その処理途中のデータがマスクされていることについて説明する。
【０２９６】
＜ランダム化８ビット逆元計算部１０１の原理＞
ランダム化８ビット逆元計算部１０１（図１４）は、合成体ＧＦ（（（２＾２）＾２）＾２）上の元Ｘ＝Ｍ＋Ｒ（図３８におけるＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）、Ｍ＝Ｔ１（Ｖ８ｔ）、Ｒ＝Ｔ１（Ｒｔ））を入力として、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）（図３８におけるＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１））を出力する。ここで、Ｍ＾（−１）、Ｒ＾（−１）は、それぞれＧＦ（（（２＾２）＾２）＾２）におけるＭ、Ｒの逆元を表す。以下、そのことを説明する。
【０２９７】
１７乗計算部１１０（図１４、図１５）の出力値Ａは、拡大体の性質などを用いて、以下のようになる。
【０２９８】
Ａ＝Ｘ＾１７
＝（Ｍ＋Ｒ）＾１７
＝（Ｍ＋Ｒ）×（Ｍ＋Ｒ）＾１６
＝（Ｍ＋Ｒ）×（Ｍ＾１６＋Ｒ＾１６）
＝Ｍ＾１７＋Ｒ＾１７＋Ｍ＾１６×Ｒ＋Ｍ×Ｒ＾１６
【０２９９】
ここで、ＧＦ（（（２＾２）＾２）＾２）は、既約多項式ｘ＾２＋ｘ＋１１００（２進数）によりＧＦ（（２＾２）＾２）を２次拡大したものであるから、αをｘ＾２＋ｘ＋１１００（２進数）＝０の根とすると、Ｍ、Ｒは以下のように表すことができる。
【０３００】
Ｍ：  Ｍ０×α＋Ｍ１
Ｒ：  Ｒ０×α＋Ｒ１
【０３０１】
このとき、Ｍ＾１６×Ｒ＋Ｍ×Ｒ＾１６は、拡大体の性質などを用いると、以下のように計算できる。
【０３０２】
（Ｍ０×α＋Ｍ１）＾１６×（Ｒ０×α＋Ｒ１）＋（Ｍ０×α＋Ｍ１）×（Ｒ０×α＋Ｒ１）＾１６
＝｛Ｍ０×α＋（Ｍ０＋Ｍ１）｝×（Ｒ０×α＋Ｒ１）＋（Ｍ０×α＋Ｍ１）×｛Ｒ０×α＋（Ｒ０＋Ｒ１）｝
＝（Ｍ０＋Ｒ０）×Ｒ１＋（Ｍ１＋Ｒ１）×Ｒ０
【０３０３】
これは、図１４のランダム化８ビット逆元計算部１０１の処理において、Ｘ０×Ｒ１＋Ｘ１×Ｒ０に等しい。従って、
【０３０４】
Ａ＝Ｍ＾１７＋Ｒ＾１７＋Ｘ０×Ｒ１＋Ｘ１×Ｒ０
【０３０５】
と表すことができる。ところで、４ビット補正項計算部１１１（図１４、図１６）は、Ｂ＝Ｘ０×Ｒ１＋Ｘ１×Ｒ０を計算していることになるので、結局、ランダム化４ビット逆元計算部１１４（図１４、図２３）への入力データＤは、
【０３０６】
Ｄ＝Ａ＋Ｂ
＝Ｍ＾１７＋Ｒ＾１７
【０３０７】
となる。ランダム化４ビット逆元計算部１１４は、後で説明するように、入力Ｄ＝Ｍ＾１７＋Ｒ＾１７、Ｃ＝Ｒ＾１７に対して、出力Ｅ＝Ｍ＾（−１７）＋Ｒ＾（−１７）を出力する処理である。このとき、４ビット出力計算部１１８、１１９は、以下の計算を、上位４ビット、下位４ビットごとにそれぞれ分けて計算していることと同じである。
【０３０８】
Ｙ＝Ｅ×Ｆ＋Ｇ×Ｆ＋Ｈ×Ｅ
＝｛Ｍ＾（−１７）＋Ｒ＾（−１７）｝×（Ｍ＋Ｒ）＾１６＋Ｒ＾（−１７）×（Ｍ＋Ｒ）＾１６＋Ｒ＾１６×｛Ｍ＾（−１７）＋Ｒ＾（−１７）｝
【０３０９】
上記の式を計算すると、
Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）
となり、ランダム化８ビット逆元計算部１０１は、Ｘ＝Ｍ＋Ｒを、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換する処理であることがわかる。
【０３１０】
そして、このような、Ｘ＝Ｍ＋Ｒを、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換するランダム化８ビット逆元計算部１０１の一部分である、ランダム化４ビット逆元計算部１１４（図１４、図２３）は、上記と同等の処理をＧＦ（（２＾２）＾２）上で行っていることになるので、上と同様の説明が成り立つ。従って、入力Ｄ＝Ｍ＾１７＋Ｒ＾１７、とＣ＝Ｒ＾１７の入力に対しては、Ｅ＝Ｍ＾（−１７）＋Ｒ＾（−１７）を出力することがわかる。更に、ランダム化４ビット逆元計算部１１４についても、同様のことが言えることは、Ｘ、Ｒの全ての値の組み合わせについて、実際に計算を行うことで確かめることができる。
【０３１１】
以上のことより、ランダム化８ビット逆元計算部１０１は、合成体ＧＦ（（（２＾２）＾２）＾２）上の元Ｘ＝Ｍ＋Ｒを、Ｙ＝Ｍ＾（−１）＋Ｒ＾（−１）に変換する処理であることが説明される。
【０３１２】
＜ランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐの動作原理＞
次に、ランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐ（図１３、図１２）の動作原理について説明する。図１３において、Ｘ＝Ｍ＋Ｒ（図３８におけるＩＣ８ｔ＝Ｖ８ｔ＋Ｒｔ，Ｍ＝Ｖ８ｔ、Ｒ＝Ｒｔ）とすると、合成体変換部１００の出力は、Ａ＝Ｔ（Ｘ）＝Ｔ（Ｍ）＋Ｔ（Ｒ）（図３８におけるＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ））となる。ここで、Ｔ（Ｘ）（図３８におけるＴ１）は、ＧＦ（２＾８）上の元を、合成体ＧＦ（（（２＾２）＾２）＾２）上の元に変換した結果である。同様に、他方の合成体変換部１０３は、Ｒ（図３８におけるＲｔ）をＳ＝Ｔ（Ｒ）（図３８におけるＲＤｔ＝Ｔ１（Ｒｔ））に変換する。
【０３１３】
次に、先ほど説明したとおり、ランダム化８ビット逆元計算部１０１は、Ａ＝Ｔ（Ｍ）＋Ｔ（Ｒ）、Ｓ＝Ｔ（Ｒ）の入力から、Ｂ＝Ｔ（Ｍ）＾（−１）＋Ｔ（Ｒ）＾（−１）（図３８におけるＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）（−１））を生成する。次に、拡大体変換兼行列変換部１０２（図１３）は、合成体ＧＦ（（（２＾２）＾２）＾２）上の元を、ＧＦ（２＾８）上の元に変換した上で、ＡＥＳ暗号のＳ−ｂｏｘで定義されているＡｆｆｉｎｅ変換のうち、行列演算部分のみを行った結果を出力する。即ち、
【０３１４】
Ｃ＝Ｍａｔ（Ｍ＾（−１））＋Ｍａｔ（Ｒ＾（−１））
【０３１５】
が出力される（図３８におけるＭａｔ（Ｖ８ｔ＾（−１））＋Ｍａｔ（Ｒｔ＾（−１））。ここで、Ｍａｔ（Ｘ）は、Ｘに対して上記の行列演算、つまり、ＡＥＳ暗号のＳ−ｂｏｘで定義されているＡｆｆｉｎｅ変換のうちの行列演算を行った結果を表す。そして、排他的論理和部１０４（図１３）は、入力される上記Ｃと、定数０１１０００１１（２進数）とのＧＦ（２＾８）上の加算を行うが、この定数は、ＡＥＳ暗号のＳ−ｂｏｘで定義されているＡｆｆｉｎｅ変換で定義されている、定数加算の定数である。即ち、排他的論理和部１０４の出力結果Ｙは、
【０３１６】
Ｙ＝｛Ｍａｔ（Ｍ＾（−１））＋０１１０００１１｝＋Ｍａｔ（Ｒ＾（−１））
【０３１７】
となる（図３８におけるＭａｔ（Ｖ８ｔ＾（−１））＋０１１０００１１＋Ｍａｔ（Ｒｔ＾（−１））。上式の｛  ｝部分は、Ｍに対して、ＡＥＳ暗号のＳ−ｂｏｘ変換を行った結果に他ならず、
【０３１８】
Ｙ＝Ｓ−ｂｏｘ［Ｍ］＋Ｍａｔ（Ｒ＾（−１））
【０３１９】
と表すことができる（図３８におけるＳ−ｂｏｘ（Ｖ８ｔ）＋Ｍａｔ（Ｒｔ＾（−１）））。ここでＳ−ｂｏｘ［Ｘ］は、Ｘに対してＡＥＳ暗号のＳ−ｂｏｘ変換を行った結果を表す。
【０３２０】
＜暗号化装置１の動作原理＞
次に、暗号化装置１が、ＡＥＳ暗号アルゴリズムと互換性を保っていることを説明する。
【０３２１】
まず、図９において、平文データＰ（１２８ビット）は、乱数Ｒ０（８ビット）によって、マスクされる。マスク処理部１０による処理結果Ａは、Ａ＝Ｐ＋（Ｒ０，Ｒ０，…，Ｒ０）となる。次に、ＡｄｄＲｏｕｎｄＫｅｙ１１の処理結果により、Ｂ＝Ｐ＋ＲＫ０＋（Ｒ０，Ｒ０，…，Ｒ０）に変換される。ここで、Ｐ＋ＲＫ０は、マスクがかかっていないときのＡｄｄＲｏｕｎｄＫｅｙ処理結果であり、これをＭとすると、Ｂ＝Ｍ＋（Ｒ０，Ｒ０，…，Ｒ０）となる。次に、ｎ＝１〜９に対して、ランダム化Ｒｏｕｎｄ＿ｎ１２の処理が行われるが、それについては、図１０を参照して説明を行う。
【０３２２】
図１０において、入力Ｘは、マスクがかかっていないときのランダム化Ｒｏｕｎｄ＿ｎ１２の入力値（つまり本来の値）をＭとすると、Ｘ＝Ｍ＋（Ｒ０，Ｒ０，…，Ｒ０）と表せる。ランダム化ＳｕｂＢｙｔｅｓ１２０は、図１２に示すような、ランダム化Ｓ−ｂｏｘからなる処理である。今、Ｍを上位から８ビットずつに分割してＭ０、Ｍ１、…、Ｍ１５とすると、
【０３２３】
Ｘ＝（Ｍ０，Ｍ１，…，Ｍ１５）＋（Ｒ０，Ｒ０，…，Ｒ０）
【０３２４】
と表せる。ここで、先ほどのランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐの動作原理説明から、ランダム化ＳｕｂＢｙｔｅｓ１２０の出力Ｙは、Ｙ＝（Ｓ−ｂｏｘ［Ｍ０］，Ｓ−ｂｏｘ［Ｍ１］，…，Ｓ−ｂｏｘ［Ｍ１５］）＋（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）と表せる。即ち、
【０３２５】
Ｙ＝ＳｕｂＢｙｔｅｓ（Ｍ）＋（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）
【０３２６】
である。つまり、ランダム化ＳｕｂＢｙｔｅｓ１２０の出力データは、（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）でマスクをされていることになる。次に、ＳｈｉｆｔＲｏｗｓ１２１の出力、ＭｉｘＣｏｌｕｍｎ１２２の出力は、いずれもＡＥＳ暗号アルゴリズムで規定されているＳｈｉｆｔＲｏｗｓ処理、ＭｉｘＣｏｌｕｍｎ処理をそのまま実行することで、（Ｍａｔ［Ｒ０＾（−１）］，Ｍａｔ［Ｒ０＾（−１）］，…，Ｍａｔ［Ｒ０＾（−１）］）でマスクされたＳｈｉｆｔＲｏｗｓ処理結果、ＭｉｘＣｏｌｕｍｎ処理結果が得られることがわかる。従って、ランダム化Ｒｏｕｎｄ＿ｎ１２処理の入力値がＲでマスクをされていれば、その出力値は、Ｍａｔ［Ｒ０＾（−１）］でマスクされた状態で出力される。従って、Ｒ１＝Ｍａｔ［Ｒ０＾（−１）］として、ｎ＝１のランダム化Ｒｏｕｎｄ＿ｎ１２処理を実行すれば、Ｒ１でマスクされた状態の入力データは、Ｒ２＝Ｍａｔ［Ｒ１＾（−１）］でマスクされた状態の出力データが出力される。なお、Ｍａｔ［Ｒ０＾（−１）］、Ｍａｔ［Ｒ１＾（−１）］の処理は、図２９の乱数更新部処理に他ならない。以上のことをランダム化Ｒｏｕｎｄ＿１０  １３の処理まで繰り返せば、ランダム化Ｒｏｕｎｄ＿１０  １３（図９、図１１）の出力データは、平文Ｐに対してＡＥＳ暗号処理を行った結果の暗号文Ｃに対して、Ｒ１１＝Ｍａｔ［Ｒ１０＾（−１）］でマスクされた状態のデータが出力される。従って、アンマスク処理部１４において、Ｒ１１による排他的論理和処理を行うことで、暗号文Ｃ（図９）が得られる。
【０３２７】
また、これまでの動作原理の説明からも分かるとおり、暗号処理過程の中間データは、つねに、乱数Ｒ０もしくはＲ０から所定の演算により算出される値によってマスクされている。従って、暗号化装置１に対する電力解析攻撃による鍵の解析は困難である。
【０３２８】
図３８は、暗号化装置１および暗号化装置１が有する部分の間の包含関係と、それら全体、部分の間における入出力データを示す図である。図３８を参照して、上記の説明において示された、それら包含関係および入出力データを整理する。
【０３２９】
暗号化部１ａは（図９、図３１）、平文Ｕが入力され、暗号文Ｃを出力する。
【０３３０】
ここで、図３８に示されるＶｔ（ｔ＝１〜１１）の記号は、平文Ｕに対して、ラウンドｔまでの処理がされた中間データである。暗号化部１ａは、ラウンド（ｔ−１）までの処理により、このＶｔを乱数Ｒｔによりマスクしたランダム化出力データＯＡｔ＝Ｖｔ＋｛Ｒｔ、Ｒｔ、…、Ｒｔ｝を生成する。
【０３３１】
乱数一時記憶部１６（図９）は、乱数Ｒ０をマスク処理部１０に供給し、乱数Ｒ１〜乱数Ｒ１０を、ランダム化８ビット逆元計算部１０１を有するランダム化Ｓ−ｂｏｘ１２１Ｘに供給し、乱数Ｒ１１をアンマスク処理部１４に供給する。
【０３３２】
ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘ（図９、図１０、図１１）は、各ラウンドの処理において、それぞれ、ＩＡｔ＝Ｖｔ＋｛Ｒｔ，Ｒｔ，…，Ｒｔ｝（図９におけるＢ又はＤ、図１０および図１１におけるＸ）と、乱数Ｒｔ（図９のＲｎ、図１０のＲｎ，図１１のＲ１０）とが入力され、入力されたＩＡｔが示す本来の値たる中間値Ｖｔに対して第ｔラウンドの処理をした中間データＶ（ｔ＋１）を、乱数Ｒ（ｔ＋１）によりマスクしたＯＡｔ＝Ｖ(ｔ+１) + ｛Ｒ(ｔ+１)，Ｒ(ｔ+１)，・・・Ｒ(ｔ+１)｝を出力する。ここで、ランダム化出力データＯＡｔのマスク値の影響を除去した本来の値は、第ｔラウンドの処理がされた上記中間データＶである。
【０３３３】
ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１０、図１１、図１２）は、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘへの入力ＩＡｔであるＩＢｔ＝ＩＡｔ＝Ｖｔ＋｛Ｒｔ，Ｒｔ，…，Ｒｔ｝（図１０及び図１１のＸ、図１２のＸ）および乱数Ｒｔ（図１２のＲ、図１０のＲｎ，図１１のＲ１０）が入力され、第ｔラウンドのＳｕｂＢｙｔｅｓ処理がされたＯＢｔ＝Ｓ−ｂｏｘ（Ｖｔ）＋｛Ｒ（ｔ＋１），Ｒ（ｔ＋１），…，Ｒ（ｔ＋１）｝（図１０及び図１１のＡ、図１２のＹ）を出力する。
【０３３４】
ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１２、図１３）は、ランダム化ＳｕｂＢｙｔｅｓへの入力ＩＢｔが分割された８ビットＩＣ８ｔ＝ＩＢ８ｔ＝Ｖ８ｔ＋Ｒｔ（図１２に示されるＸ［０］、Ｘ［１］、…、又はＸ［１５］の何れか、図１３のＸ）および乱数Ｒｔ（図１３のＲ、図１２のＲ）が入力され、その８ビットに対して第ｔラウンドのＳ−Ｂｏｘ処理がされたＯＣ８ｔ＝Ｓ−ｂｏｘ（Ｖ８ｔ）＋Ｒ（ｔ＋１）（図１２のＹ［０］、Ｙ［１］、…、又はＹ［１５］の何れか、図１３のＹ）を出力する。
【０３３５】
そして、ランダム化８ビット逆元計算部１０１（図１３、図１４）は、数式１による行列計算（合成体変換部１００および合成体変換部１０３の説明を参照）が記号Ｔ１により示されたものとして、ランダム化Ｓ−Ｂｏｘに入力される上記ＩＣ８ｔに基づいたＩＤ８ｔ＝Ｔ１（ＩＣ８ｔ）＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）と、乱数一時記憶部１６の乱数Ｒｔに基づいたＲＤｔ＝Ｔ１（Ｒｔ）（図１３のＳ、図１４のＲ）とが入力されて、Ｍ＋ＰからＭ＾（−１）＋Ｐ＾（−１）への演算を、これら入力に基づいて行った結果であるＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）（図１３のＢ，図１４のＹ）を出力する。
【０３３６】
ここで、ランダム化Ｓ−Ｂｏｘ１２１Ｘ（図１３、図１２）は、このランダム化８ビット逆元計算部１０１の出力ＯＤ８ｔ＝Ｔ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）（図１３のＢ、図１４のＹ）に基づいて、拡大体変換兼行列変換部１０２および排他的論理和部１０４による計算をして、ＯＣ８ｔ＝｛Ｍａｔ（Ｖ８ｔ＾（−１））＋Ｍａｔ（Ｒｔ＾（−１））｝＋０１１０００１１＝｛Ｍａｔ（Ｖ８ｔ＾（−１））＋０１１０００１１｝＋Ｍａｔ（Ｒｔ＾（−１））＝Ｓ−ｂｏｘ（Ｖ８ｔ）＋Ｍａｔ（Ｒｔ＾（−１））＝Ｓ−ｂｏｘ（Ｖ８ｔ）＋Ｒ（ｔ＋１）を求め、求められたこのＯＣ８ｔを出力する（図１２のＹ［０］、Ｙ［１］、…、又はＹ［１５］の何れか、図１３のＹ）。
【０３３７】
そして、ランダム化ＳｕｂＢｙｔｅｓ１２０Ｘ（図１２、図１０、図１１）は、各ランダム化Ｓ−ｂｏｘ１２０Ｘ（ランダム化Ｓ−ｂｏｘ１２０ａ〜ランダム化Ｓ−ｂｏｘ１２０ｐ）により出力されるこのＯＣ８ｔを連結し、出力データＯＢｔ＝Ｓ−ｂｏｘ（Ｖｔ）＋｛Ｒ（ｔ＋１），Ｒ（ｔ＋１），…，Ｒ（ｔ＋１）｝を出力する（図１０及び図１１のＡ、図１２のＹ）。
【０３３８】
これにより、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘは、出力されるＯＢｔから、例えば、ＳｈｉｆｔＲｏｗｓ処理を行うなどして、ＯＡｔ＝Ｖ（ｔ＋１）＋｛Ｒ（ｔ＋１），Ｒ（ｔ＋１），…，Ｒ（ｔ＋１）｝を計算し、計算されたＯＡｔを、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘの次のラウンド、つまり第ｔ＋１ラウンドのランダム化入力データＩＡｔとして、ランダム化Ｒｏｕｎｄ＿ｔ１２Ｘに入力する。
【０３３９】
これにより、アンマスク処理部１４には、ｔ＝１０のときのランダム化Ｒｏｕｎｄ＿t１２Ｘにより，ＯＡｔ＝ＯＡ１０＝Ｖ１１＋｛Ｒ１１，Ｒ１１，…，Ｒ１１｝が入力され、また、乱数Ｒ１１が乱数一時記憶部１６から入力されて（図９のＥ、図１１のＹ）、入力されるこのＯＡ１０＝Ｖ１１＋｛Ｒ１１，Ｒ１１，…，Ｒ１１｝に対して乱数Ｒ１１での排他的論理和演算を行うことによって、暗号文Ｃ＝Ｖ１１を出力する。
【０３４０】
以上ようにして、鍵（ＲＫ０など）を用いて平文Ｕ（図３８）から暗号文Ｃ（図３８）を生成する暗号化装置１であって、乱数Ｒ０を生成する乱数生成部１５と、前記平文Ｕを受け付けて、前記乱数Ｒ０に依存して決まる予め定められた入力マスク値Ｔ１（Ｒｔ）が、前記平文Ｕに対して前記鍵（ＲＫ０など）によって予め定められた処理がされた入力データＴ１（Ｖ８ｔ）に対して加算されたランダム化入力データＴ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）を生成するランダム化入力データ生成部（マスク処理部１０（図９、図３８）、ＡｄｄＲｏｕｎｄＫｅｙ１１（図９）、および、ランダム化Ｒｏｕｎｄ＿ｎ１２における合成体変換部１００（図１３）、拡大体変換兼行列変換部１０２（図１３）、排他的論理和部１０４（図１３））と、前記ランダム化入力データ生成部により生成された前記ランダム化入力データＩＤ８ｔと、前記入力マスク値Ｔ１（Ｒｔ）＝ＲＤｔとを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値Ｔ１（Ｒｔ）＾（−１）が、前記入力データＴ１（Ｖ８ｔ）の当該第１の有限体における逆元Ｔ１（Ｖ８ｔ）＾（−１）に対して加算されたランダム化出力データＴ１（Ｖ８ｔ）＾（−１）＋Ｔ１（Ｒｔ）＾（−１）を生成するランダム化８ビット逆元計算部１０１と、前記ランダム化８ビット逆元計算部１０１により生成されたランダム化出力データＯＤ８１０（ｔ＝１０）を受け付けて、受け付けた当該ランダム化出力データから前記暗号文Ｃを生成する出力部（ランダム化Ｒｏｕｎｄ＿１０  １３における拡大体変換兼行列変換部１０２（図１３）および排他的論理和部１０４（図１３）と、ＳｈｉｆｔＲｏｗｓ１３１（図１１）と、ＡｄｄＲｏｕｎｄＫｅｙ１３２（図１１）と、アンマスク処理部１４（図９、図３８））と、を備えることを特徴とする暗号化装置１が構成される。
【０３４１】
そして、この暗号化装置１においては、前記ランダム化８ビット逆元計算部１０１は、前記ランダム化入力データＩＤ８ｔ（図１４のＸ）と前記入力マスク値（Ｔ１（Ｒｔ）、図１４のＲ）とに対して予め定められた第１のべき数（１７乗）によるべき乗計算を行い、第１のべき乗ランダム化入力データ（図１４のＡ）と第１のべき乗入力マスク値（図１４のＣ）とをそれぞれ各べき乗計算により生成する１７乗計算部１１０、１１２（図１４）と、前記ランダム化入力データ（図１４のＸ）と前記入力マスク値（図１４のＲ）とから、予め定められた補正データ（図１４のＢ）を生成する４ビット補正項計算部１１１（図１４、図１６）と、生成された前記補正データ（図１４のＢ）を、計算された前記第１のべき乗ランダム化入力データ（図１４のＡ）に加算して、副ランダム化入力データ（図１４のＤ）を生成する排他的論理和部１１３（図１４）と、前記副ランダム化入力データ（図１４のＤ）と前記第１のべき乗入力マスク値（図１４のＣ）とを受け付けて、当該第１のべき乗入力マスク値（図１４のＣ）の第２の有限体における逆元であるマスク値（Ｃ＾（−１））が、前記副ランダム化入力データ（図１４のＤ）の前記第２の有限体における逆元である出力データ（Ｄ＾（−１））に加算されたランダム化副出力データ（図１４のＥ＝Ｄ＾（−１）＋Ｃ＾（−１））を生成するランダム化４ビット逆元計算部１１４（図１４、図２３）と、前記ランダム化副出力データ（図１４のＥ）と、前記ランダム化入力データ（図１４のＸ）と、前記入力マスク値（図１４のＲ）と、前記第１のべき乗入力マスク値（図１４のＣ）とから、前記ランダム化出力データ（図１４のＹ）を生成するその他の部分とを備える。
【０３４２】
そして、ここで、その、「その他の部分」は、前記ランダム化入力データ（図１４のＸ）と、前記入力マスク値（図１４のＲ）とに対して予め定められた第２のべき数（１６乗）によるべき乗計算を行い、第２のべき乗ランダム化入力データ（図１４のＦ）と第２のべき乗入力マスク値（図１４のＨ）とを各べき乗計算によりそれぞれ生成する１６乗計算部１１５、１１７（図１４、図１７）と、前記第１のべき乗入力マスク値（図１４のＣ）に対して前記第２の有限体上の逆元計算を行い、前記第１のべき乗入力マスク値（図１４のＣ）の前記第２の有限体における逆元である逆元べき乗入力マスク値（図１４のＧ）を生成する４ビット逆元計算部１１６（図１５、図２１）と、前記ランダム化副出力データ（図１４のＥ）と、前記第２のべき乗ランダム化入力データ（図１４のＦ）と、前記第２のべき乗入力マスク値（図１４のＨ）と、前記逆元べき乗入力マスク値（図１４のＧ）とから、前記ランダム化出力データ（図１４のＹ）を生成するその他の部分（４ビット出力計算部１１８および４ビット出力計算部１１９）とを含む。
【０３４３】
また、この暗号化装置１は、前記平文Ｕに対してＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号の暗号化処理を行い、ＡＥＳ暗号の暗号文Ｃを生成し、前記入力データの逆元Ｔ１（Ｖ８ｔ）＾（−１）は、ＡＥＳ暗号のＳｂｏｘテーブルと等価である逆元計算およびアフィンのうちの逆元計算が前記入力データＴ１（Ｖ８ｔ）にされた計算結果である。
【０３４４】
このため、この暗号化装置１によれば、段数が少ない簡単な構成により、ＡＥＳ暗号の暗号化の逆元計算をでき、ひいては、ＡＥＳ暗号の暗号化の処理をできる。
【０３４５】
また、この暗号化装置１は、前記ランダム化８ビット逆元計算部１０１により用いられる前記入力マスク値ＲＤｔを生成するマスク値生成部（乱数更新部１７および合成体変換部１０３（図９、図１３、図２９））を更に備える。
【０３４６】
これにより、暗号化装置１内で入力マスク値が生成されて、システムの構成を簡単にできる。
【０３４７】
そして、この暗号化装置１は、前記マスク入力データ生成部は、前記平文Ｕから第１のランダム化入力データＩＤ８ｔ＝ＩＤ８１＝Ｔ１（Ｖ８１）＋Ｔ１（Ｒ１）を生成する第１部分（マスク処理部１０（図３８、図９）、ＡｄｄＲｏｕｎｄＫｅｙ１１（図９）、合成体変換部１００（図１３））と、第（ｔ−１）のランダム化出力データＯＤ８（ｔ−１）を受け付けて、第（ｔ−１）の出力マスク値ＲＤ（ｔ−１）＾（−１）＝Ｔ１（Ｒｔ）から決まる予め定められた第ｔの入力マスク値Ｔ１（Ｒｔ）＝Ｔ１（Ｍａｔ（Ｒｔ＾（−１）））が加算された第ｔのランダム化入力データＩＤ８ｔ＝Ｔ１（Ｖ８ｔ）＋Ｔ１（Ｒｔ）（２≦ｔ≦Ｊ）を生成する第２部分（拡大体変換兼行列変換部１０２（図１３）、排他的論理和部１０４（図１３）、ランダム化Ｒｏｕｎｄ＿ｎ１２におけるＳｈｉｆｔＲｏｗｓ１２１（図１０）、ＭｉｘＣｏｌｕｍｎｓ１２２（図１０）、ＡｄｄＲｏｕｎｄＫｅｙ１２３（図１０）、合成体変換部１００）とを備え、前記マスク値生成部は、生成される前記乱数Ｒ０から前記第１の入力マスク値ＲＤ１〜第Ｊの入力マスク値ＲＤＪを生成し（Ｊ＝１０）、ランダム化８ビット逆元計算部１０１は、前記第１部分により生成された前記第１のランダム化入力データＩＤ８１と、生成された前記第１の入力マスク値ＲＤ１とから前記第１のランダム化出力データＯＤ８１を生成すると共に、前記第２部分により生成された前記第ｔのランダム化入力データＩＤ８ｔ（２≦ｔ≦Ｊ）と、生成された前記第ｔの入力マスク値ＲＤｔとから前記第ｔのランダム化出力データＯＤ８ｔを生成する（２≦ｔ≦Ｊ）暗号化装置１である。
【０３４８】
なお、ここで、この暗号化装置１は、上記第１部分（マスク処理部１０（図３８、図９）、ＡｄｄＲｏｕｎｄＫｅｙ１１（図９）、合成体変換部１００（図１３））は、上記マスク値生成部から（乱数更新部１７から）、第１の入力マスク値ＲＤ１＝Ｔ１（Ｒ１）を特定する特定データＲ０を取得し、取得した特定データＲ０と前記平文Ｕとから、上記第１の入力マスク値ＲＤ１＝Ｔ１（Ｒ１）が加算された前記第１のランダム化入力データＩＤ８ｔ＝ＩＤ８１＝Ｔ１（Ｖ８１）＋Ｔ１（Ｒ１）を生成し、前記マスク値生成部は（乱数更新部１７は）、前記第Ｊの出力マスク値Ｔ１（Ｒ１０）＾（−１）を特定する特定データＲ１１を生成し、前記出力部は、生成された当該特定データＲ１１と、当該特定データＲ１１が特定する前記第Ｊの出力マスク値Ｔ１（Ｒ１０）＾（−１）が加算された第Ｊのランダム化出力データＯＤ８ｔとを受け付けて、それらから前記暗号文Ｃを生成する。
【０３４９】
なお、前記マスク値生成部は、値を保持し、前記乱数Ｒ０が生成されると、生成された乱数Ｒ０を保持する保持部（乱数一時記憶部１６（図９））と、予め定められた計算により前記第ｔの入力マスク値が算出される乱数Ｒｔを、保持される乱数Ｒ（ｔ−１）から生成し、生成された乱数Ｒｔを前記保持部に保持させる保持制御部（乱数更新部１７（図９））と、保持される前記乱数Ｒｔから、それぞれ、前記計算によって前記第ｔの入力マスク値を算出する（ｔ＝１、２、…、Ｊ）算出部（合成体変換部１０３（図１３））とを備える。
【０３５０】
これにより、乱数Ｒｔが保持されることにより、保持される乱数Ｒｔから、第（ｔ＋１）の入力マスク値が簡単な処理により算出され、簡単な処理によって各入力マスク値を算出することができる。
【０３５１】
なお、請求の範囲に記載の「乱数生成部」は、例えば、乱数生成部１５、乱数一時記憶部１６及び乱数更新部１７の全体に対応すると解してもよい。このように解する場合、請求の範囲に記載の「マスク値生成部」は、上記したように乱数更新部１７および合成体変換部１０３に対応するのでなく、合成体変換部１０３のみに対応すると考えてもよい。
【０３５２】
なお、このような暗号化装置１は、上記した各部分を実現する回路がそれぞれ設けられた集積回路を備えるものとしてもよく、この集積回路が、それら各部分を用いて上記した作用を働かせ、上記した方法を実行するものであってもよい。
【０３５３】
＜復号化装置３＞
暗号化装置１に対応する復号化装置３の構成を、図３１〜図３７に示す。これらの処理は、暗号化装置１の処理の逆変換処理であり、基本的な処理フローは、暗号化装置１で説明した内容と同じであるため、詳細説明は省略する。なお、図３６のランダム化ＩｎｖＳ−Ｂｏｘ３３１ａ〜３３１ｐの合成体変換兼逆行列変換部３００では、以下の行列演算式
【０３５４】
【数３】
2008146482.tif 000047
【０３５５】
を用いるものとし、同じ図３６に示される拡大体変換部３０２では、以下の行列演算式
【０３５６】
【数４】
2008146482.tif 000048
【０３５７】
を用いるものとする。
【０３５８】
これにより、鍵を用いて暗号文から復号文を生成する復号化装置３であって、乱数を生成する乱数生成部３５（図３２）と、前記暗号文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記暗号文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成する入力部（マスク処理部３０（図３２）、ＡｄｄＲｏｕｎｄＫｅｙ３１（図３２）、ＩｎｖＳｈｉｆｔＲｏｗｓ３２０（図３３）、図３６に示される排他的論理和部、ランダム化ＩｎｖＲｏｕｎｄ＿ｎ３２（図３２、図３３）が有する拡大体変換部３０２（図３６）、ＡｄｄＲｏｕｎｄＫｅｙ３２２（図３３）、ＩｎｖＭｉｘＣｏｌｕｍｎｓ３２３（図３３）、ランダム化ＩｎｖＲｏｕｎｄ＿０  ３３（図３４）が有するＩｎｖＳｈｉｆｔＲｏｗｓ３３０（図３４））と、前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、前記入力データの当該第１の有限体における逆元に対して加算されたランダム化出力データを生成する８ビットランダム化合成体逆元計算部３０１（図３６）と、前記８ビットランダム化合成体逆元計算部３０１により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記復号文を生成する出力部（ランダム化ＩｎｖＲｏｕｎｄ＿０  ３３（図３２、図３４）が有する拡大体変換部３０２（図３６）、ＡｄｄＲｏｕｎｄＫｅｙ３３２（図３４）、アンマスク処理部３４（図３２））と、を備えることを特徴とする復号化装置３が構成される。
【０３５９】
＜最大論理段数の見積もり＞
以上で説明した実施の形態における、ランダム化８ビット逆元計算部１０１（図１４、図１３）の最大論理段数を見積もる。ランダム化８ビット逆元計算部１０１を、回路で実現したときのクリティカルパスとその最大論理段数を見積もると以下のようになる。
【０３６０】
ランダム化８ビット逆元計算部１０１のクリティカルパスは、図１４において以下の通りとなる。
【０３６１】
１７乗計算部１１０  ⇒  排他的論理和部１１３  ⇒  ランダム化４ビット逆元計算部１１４  ⇒  ４ビット出力計算部１１８
【０３６２】
そして、このパスの途中にある４ビット出力計算部１１８のクリティカルパスは、以下の通りとなる（図１８）。
【０３６３】
４ビット乗算部１１８ａ  ⇒  排他的論理和部１１８ｃ  ⇒  排他的論理和部１１８ｅ
【０３６４】
また、図１４のパスの途中にあるランダム化４ビット逆元計算部１１４のクリティカルパスは、以下の通りとなる（図２３）。
【０３６５】
５乗計算部１５０  ⇒  排他的論理和部１５３  ⇒  ランダム化２ビット逆元計算部１５４  ⇒  ２ビット出力計算部１５８
【０３６６】
そして、この図２３に示される２ビット出力計算部１５８のクリティカルパスは、以下の通りとなる（図２７）。
【０３６７】
２ビット乗算部１５８ａ  ⇒  排他的論理和部１５８ｃ  ⇒  排他的論理和部１５８ｅ
【０３６８】
そして、先述の図２３のパスの途中にあるランダム化２ビット逆元計算部１５４のクリティカルパスは、以下の通りとなる（図２８）。
【０３６９】
排他的論理和部１５４ｃ
【０３７０】
以上より、ランダム化８ビット逆元計算部１０１（図１４）の最大論理段数は、以下の処理をシリアルに処理したときの論理段数になる。
【０３７１】
１７乗計算×１回
５乗計算×１回
４ビット乗算×１回
２ビット乗算×１回
排他的論理和演算×７回
【０３７２】
なお、ここに、上記「排他的論理和演算×７回」における「７回」は、次の計算、７＝１＋２＋１＋２＋１によるものである。即ち、従来技術２のランダム化８ビット逆元計算部８１（図１）よりも、排他的論理和演算が１１回も削減されており、最大論理段数の削減が実現されている。
【０３７３】
（変形例）
なお、本実施の形態では、電力解析攻撃対策の対象とする暗号を、ＡＥＳ暗号としているが、ＡＥＳ暗号だけに限らず、暗号処理の中に逆元演算が使われている、あるいは、暗号処理の中で使われているテーブル変換処理が、逆元演算に基づいて構成可能な暗号方式であれば適用可能である。そのような暗号方式としては、他にＩＳＯ／ＩＥＣ  １８０３３−３：２００５，“Ｉｎｆｏｒｍａｔｉｏｎ  ｔｅｃｈｎｏｌｏｇｙ  ――  Ｓｅｃｕｒｉｔｙ  ｔｅｃｈｎｉｑｕｅｓ  ――  Ｅｎｃｒｙｐｔｉｏｎ  ａｌｇｏｒｉｔｈｍｓ  ――  Ｐａｒｔ  ３：  Ｂｌｏｃｋ  ｃｉｐｈｅｒｓ”（非特許文献：３）に記載のＣａｍｅｌｌｉａ暗号がある。
【０３７４】
また、上記実施の形態は、ソフトウェアとして実装した場合であっても、変換テーブルを配列として保持する必要がなくなるので、従来技術同様コードサイズの節約が可能で、かつ、従来技術よりも暗号化処理時間の削減できるという効果がある。
【０３７５】
また、上記実施の形態では、全ての処理を演算回路によって実装した場合について説明しているが、これらの処理の一部を変換テーブルとして実装しても良い。例えば、ランダム化４ビット逆元計算部１１４の場合、４ビット×１６個の要素からなる配列Ｉｎｖ４［１６］として実装し、４ビット入力Ｘに対して、４ビット出力をＩｎｖ４［Ｘ］として出力すれば良い。
【０３７６】
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０３７７】
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０３７８】
（２）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０３７９】
（３）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０３８０】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０３８１】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０３８２】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０３８３】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０３８４】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０３８５】
（５）なお、前記マスク値生成部は、ランダム化８ビット逆元計算部１０１（図１４）が、ランダム化入力データからランダム化出力データを計算するのと並列に、当該計算で当該ランダム化８ビット逆元計算部１０１が用いるＲＤｔよりも後に当該ランダム化８ビット逆元計算部１０１が用いるＲＤ（ｔ＋１）等を生成するものであってもよい。こうすれば、ランダム化８ビット逆元計算部１０１は、当該ＲＤ（ｔ＋１）等を、遅滞なく利用開始でき、暗号化装置１が高速に動作するようにできる。
【０３８６】
（６）また、次の態様を採ってもよい。
【０３８７】
すなわち、コンピュータを用いて、平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成する暗号化処理プログラムであって、乱数を生成し、ランダム化入力データと入力マスク値を受け付けて第１の有限体上の逆元計算を行い、ランダム化出力データを出力し、前記ランダム化入力データは、入力マスク値と入力データとの加算によりマスクされた値であり、前記ランダム化出力データは、出力マスク値と出力データとの加算によりマスクされた値であり、前記入力マスク値は、前記乱数に依存して決まる値であり、前記出力データは、前記入力データの前記第１の有限体における逆元であり、前記出力マスク値は、前記入力マスク値の前記第１の有限体における逆元である情報処理を前記コンピュータに行わせること、を特徴とする暗号化処理プログラムの態様を採ってもよい。
【０３８８】
また、次の態様を採ってもよい。すなわち、コンピュータを用いて、鍵を用いて平文から暗号文を生成するためのコンピュータプログラムであって、乱数を生成する乱数生成機能と、前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成機能と、前記ランダム化入力データ生成機能により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成機能と、前記第１のランダム化逆元データ生成機能により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理機能と、を前記コンピュータに実現させるためのコンピュータプログラムの態様を採ってもよい。
【０３８９】
なお、これら暗号化処理プログラム、コンピュータプログラムは、それぞれ、互いに異なる処理を並列に実行するマルチプロセッサ等により実行されるものであってもよく、その場合においては、当該コンピュータプログラムは、ランダム化入力データからランダム化出力データが生成されるのと並列に、前記入力マスク値の生成を前記コンピュータに行わせるものであってもよい。
【０３９０】
（７）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０３９１】
本発明にかかる暗号化装置は、電力解析攻撃を阻止しつつ、従来技術よりも、暗号処理の処理量を削減するという特徴を有するので、高速処理あるいは低コストでの実現が求められる暗号化装置の実現に有用である。
【図面の簡単な説明】
【０３９２】
【図１】図１は、従来技術に係るランダム化８ビット逆元計算部８１の構成を示すブロック図である。
【図２】図２は、従来技術に係る４ビット補正項計算部８１１の構成を示すブロック図である。
【図３】図３は、従来技術に係る４ビット出力計算部８１６、８１７の構成を示すブロック図である。
【図４】図４は、従来技術に係るランダム化４ビット逆元計算部８１５の構成を示すブロック図である。
【図５】図５は、従来技術に係るランダム化２ビット補正項計算部８２１の構成を示すブロック図である。
【図６】図６は、従来技術に係る２ビット出力計算部８２６、８２７の構成を示すブロック図である。
【図７】図７は、従来技術に係るランダム化２ビット逆元計算部８２５の構成を示すブロック図である。
【図８】図８は、本発明の実施の形態に係る暗号化装置１の構成を示すブロック図である。
【図９】図９は、本発明の実施の形態に係る暗号化部１ａの構成を示すブロック図である。
【図１０】図１０は、本発明の実施の形態に係るランダム化Ｒｏｕｎｄ＿ｎ１２の構成を示すブロック図である。
【図１１】図１１は、本発明の実施の形態に係るランダム化Ｒｏｕｎｄ＿１０  １３の構成を示すブロック図である。
【図１２】図１２は、本発明の実施の形態に係るランダム化ＳｕｂＢｙｔｅｓ１２０、１３０の構成を示すブロック図である。
【図１３】図１３は、本発明の実施の形態に係るランダム化Ｓ−ｂｏｘ１２０ａ〜１２０ｐの構成を示すブロック図である。
【図１４】図１４は、本発明の実施の形態に係るランダム化８ビット逆元計算部１０１の構成を示すブロック図である。
【図１５】図１５は、本発明の実施の形態に係る１７乗計算部１１０、１１２の構成を示すブロック図である。
【図１６】図１６は、本発明の実施の形態に係る４ビット補正項計算部１１１の構成を示すブロック図である。
【図１７】図１７は、本発明の実施の形態に係る１６乗計算部１１５、１１７の構成を示すブロック図である。
【図１８】図１８は、本発明の実施の形態に係る４ビット出力計算部１１８、１１９の構成を示すブロック図である。
【図１９】図１９は、本発明の実施の形態に係る４ビット乗算部２０の構成を示すブロック図である。
【図２０】図２０は、本発明の実施の形態に係る２ビット乗算部２１の構成を示すブロック図である。
【図２１】図２１は、本発明の実施の形態に係る４ビット逆元計算部１１６の構成を示すブロック図である。
【図２２】図２２は、本発明の実施の形態に係る２ビット逆元計算部１４２の構成を示すブロック図である。
【図２３】図２３は、本発明の実施の形態に係るランダム化４ビット逆元計算部１１４の構成を示すブロック図である。
【図２４】図２４は、本発明の実施の形態に係る５乗計算部１４１、１５０、１５２の構成を示すブロック図である。
【図２５】図２５は、本発明の実施の形態に係る２ビット補正項計算部１５１の構成を示すブロック図である。
【図２６】図２６は、本発明の実施の形態に係る４乗計算部１５５、１５７の構成を示すブロック図である。
【図２７】図２７は、本発明の実施の形態に係る２ビット出力計算部１５８、１５９の構成を示すブロック図である。
【図２８】図２８は、本発明の実施の形態に係るランダム化２ビット逆元計算部１５４の構成を示すブロック図である。
【図２９】図２９は、本発明の実施の形態に係る乱数更新部１７の構成を示すブロック図である。
【図３０】図３０は、本発明の実施の形態に係る８ビット逆元計算部１７１の構成を示すブロック図である。
【図３１】図３１は、本発明の実施の形態に係る復号化装置３の構成を示すブロック図である。
【図３２】図３２は、本発明の実施の形態に係る復号化部３ａの構成を示すブロック図である。
【図３３】図３３は、本発明の実施の形態に係るランダム化ＩｎｖＲｏｕｎｄ＿ｎ  ３２の構成を示すブロック図である。
【図３４】図３４は、本発明の実施の形態に係るランダム化ＩｎｖＲｏｕｎｄ＿０  ３３の構成を示すブロック図である。
【図３５】図３５は、本発明の実施の形態に係るランダム化ＩｎｖＳｕｂＢｙｔｅｓ３３１の構成を示すブロック図である。
【図３６】図３６は、本発明の実施の形態に係るランダム化ＩｎｖＳ−Ｂｏｘ３３１ａ〜３３１ｐの構成を示すブロック図である。
【図３７】図３７は、本発明の実施の形態に係る乱数更新部３７の構成を示すブロック図である。
【図３８】図３８は、暗号化装置１および暗号化装置１が有する部分の間の包含関係と、それら全体および部分の間における入出力データを示す図である。
【符号の説明】
【０３９３】
１    暗号化装置
１ａ    暗号化部
１ｂ，３ｂ    ラウンド鍵生成部
１ｃ，３ｃ    鍵保管部
１０，３０    マスク処理部
１１，３１，１２３，１３２，３２２，３３２    ＡｄｄＲｏｕｎｄＫｅｙ
１２Ｘ    ランダム化Ｒｏｕｎｄ＿ｔ
１２    ランダム化Ｒｏｕｎｄ＿ｎ
１３    ランダム化Ｒｏｕｎｄ＿１０
１４，３４    アンマスク処理部
１５，３５    乱数生成部
１６，３６    乱数一時記憶部
１７，３７    乱数更新部
１００，１０３，１７０，３０３    合成体変換部
１０１    ランダム化８ビット逆元計算部
１０２，１７２    拡大体変換兼行列変換部
１０４，１１０ａ，１１０ｅ，１１１ｃ，１１３，１１５ａ，１１８ｃ，１１８ｅ，１４０，１４２ａ，１５０ａ，１５０ｅ，１５１ｃ，１５３，１５４ｃ，１５５ａ，１５８ｃ，１５８ｅ，１７１ａ，２０４，２０５，２０７，２１４，２１５，２１６    排他的論理和部
１１０Ｘ，１１０，１１２，１７１ｂ    １７乗計算部
２０，１１０ｂ，１１０ｃ，１１０ｄ，１１１ａ，１１１ｂ，１１８ａ，１１８ｂ，１１８ｄ，１７１ｄ，１７１ｅ    ４ビット乗算部
１１１    ４ビット補正項計算部
１１４    ランダム化４ビット逆元計算部
１１５Ｘ，１１５，１１７    １６乗計算部
１１６，１７１ｃ    ４ビット逆元計算部
１１８Ｘ，１１８，１１９    ４ビット出力計算部
１２０Ｘ，１２０，１３０    ランダム化ＳｕｂＢｙｔｅｓ
１２１Ｘ，１２０ａ，１２０ｂ，１２０ｃ，１２０ｐ    ランダム化Ｓ−Ｂｏｘ
１２１，１３１    ＳｈｉｆｔＲｏｗｓ
１２２    ＭｉｘＣｏｌｕｍｎｓ
１４１Ｘ，１４１，１５０，１５２    ５乗計算部
１４２，１５６    ２ビット逆元計算部
２１，１４３，１４４，１５０ｂ，１５０ｃ，１５０ｄ，１５１ａ，１５１ｂ，１５８ａ，１５８ｂ，１５８ｄ，２００，２０１，２０２，２０３，２０６    ２ビット乗算部
１５１    ２ビット補正項計算部
１５４    ランダム化２ビット逆元計算部
１５５Ｘ，１５５，１５７    ４乗計算部
１５８Ｘ，１５８，１５９    ２ビット出力計算部
１７１    ８ビット逆元計算部
２１０，２１１，２１２，２１３    論理積部
３    復号化装置
３ａ    復号化部
３２    ランダム化ＩｎｖＲｏｕｎｄ＿ｎ
３３    ランダム化ＩｎｖＲｏｕｎｄ＿０
３００，３７０    合成体変換兼逆行列変換部
３０１    ８ビットランダム化合成体逆元計算部
３０２，３７２    拡大体変換部
３２０，３３０    ＩｎｖＳｈｉｆｔＲｏｗｓ
３２１，３３１    ランダム化ＩｎｖＳｕｂＢｙｔｅｓ
３２３    ＩｎｖＭｉｘＣｏｌｕｍｎｓ
３３１ａ，３３１ｂ，３３１ｃ，３３１ｐ    ランダム化ＩｎｖＳ−Ｂｏｘ
３７１    ８ビット合成体逆元計算部
８１    ランダム化８ビット逆元計算部
８１０，８１２    １７乗計算部
８１１    ４ビット補正項計算部
８１５    ランダム化４ビット逆元計算部
８１６，８１７    ４ビット出力計算部
８１１ａ，８１１ｂ，８１６ａ，８１６ｂ，８１６ｃ，８１６ｄ    ４ビット乗算部
８２０，８２２    ５乗計算部
８２１    ２ビット補正項計算部
８２５    ランダム化２ビット逆元計算部
８２６，８２７    ２ビット出力計算部
８２１ａ，８２１ｂ，８２６ａ，８２６ｂ，８２６ｃ，８２６ｄ    ２ビット乗算部
８１１ｃ，８１１ｄ，８１３，８１４，８１６ｅ，８１６ｆ，８１６ｇ，８１６ｈ，８１６ｉ，８１６ｊ，８１８，８１９，８２１ｃ，８２１ｄ，８２３，８２４，８２５ａ，８２５ｂ，８２６ｅ，８２６ｆ，８２６ｇ，８２６ｈ，８２６ｉ，８２６ｊ，８２８，８２９    排他的論理和部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
鍵を用いて平文から暗号文を生成する暗号化装置であって、
乱数を生成する乱数生成部と、
前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、
前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、
を備えることを特徴とする暗号化装置。
【請求項２】
前記第１のランダム化逆元データ生成部は、
前記ランダム化入力データと前記入力マスク値とに対して予め定められた第１のべき数によるべき乗計算を行い、第１のべき乗ランダム化入力データと第１のべき乗入力マスク値とをそれぞれ各べき乗計算により生成する第１のべき乗計算部と、
前記ランダム化入力データと前記入力マスク値とから、予め定められた補正データを生成する補正データ生成部と、
生成された前記補正データを、計算された前記第１のべき乗ランダム化入力データに加算し、副ランダム化入力データを生成する加算部と、
前記副ランダム化入力データと前記第１のべき乗入力マスク値とを受け付けて、当該第１のべき乗入力マスク値の予め定められた第２の有限体における逆元であるマスク値が、前記副ランダム化入力データの当該第２の有限体における逆元に加算されたランダム化副出力データを生成する第２のランダム化逆元データ生成部と、
前記ランダム化副出力データと前記ランダム化入力データと前記入力マスク値と前記第１のべき乗入力マスク値とから、前記ランダム化出力データを生成するランダム化出力データ生成部と
を備えることを特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記ランダム化出力データ生成部は、
前記ランダム化入力データと前記入力マスク値とに対して予め定められた第２のべき数によるべき乗計算を行い、第２のべき乗ランダム化入力データと第２のべき乗入力マスク値とを各べき乗計算によってそれぞれ生成する第２のべき乗計算部と、
前記第１のべき乗入力マスク値に対して前記第２の有限体上の逆元計算を行い、当該第１のべき乗入力マスク値の前記第２の有限体における逆元である逆元べき乗入力マスク値を生成する逆元演算部と、
前記ランダム化副出力データと前記第２のべき乗ランダム化入力データと前記第２のべき乗入力マスク値と前記逆元べき乗入力マスク値とから前記ランダム化出力データを生成するランダム化出力データ生成部と
を備えることを特徴とする請求項２に記載の暗号化装置。
【請求項４】
当該暗号化装置は、前記平文に対してＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号の暗号化処理を行い、ＡＥＳ暗号の暗号文を生成し、
前記入力データの逆元は、ＡＥＳ暗号のＳｂｏｘテーブルと等価である逆元計算およびアフィンのうちの逆元計算が前記入力データにされた計算結果である、
ことを特徴とする請求項１に記載の暗号化装置。
【請求項５】
前記ランダム化入力データ生成部は、
前記平文から、第１の入力マスク値が加算された第１のランダム化入力データを生成する第１部分と、
前記第１のランダム化逆元データ生成部により生成された第（ｔ−１）のランダム化出力データを受け付けて、前記第（ｔ−１）の出力マスク値から決まる第ｔの入力マスク値が加算された第ｔのランダム化入力データ（２≦ｔ≦Ｊ、Ｊは２以上の予め定められた整数）を生成する第２部分とを備え、
当該暗号化装置は、前記乱数から前記第１〜第Ｊの入力マスク値を生成するマスク値生成部を更に備え、
前記第１のランダム化逆元データ生成部は、前記第１部分により生成された前記第１のランダム化入力データと、生成された前記第１の入力マスク値とから前記第１のランダム化出力データを生成すると共に、前記第２部分により生成された前記第ｔのランダム化入力データと、生成された前記第ｔの入力マスク値とから前記第ｔのランダム化出力データを生成し（２≦ｔ≦Ｊ）、
前記出力データ処理部は、生成された第Ｊのランダム化出力データから前記暗号文を生成する、
ことを特徴とする請求項１に記載の暗号化装置。
【請求項６】
鍵を用いて暗号文から復号文を生成する復号化装置であって、
乱数を生成する乱数生成部と、
前記暗号文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記暗号文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、
前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記復号文を生成する出力データ処理部と、
を備えることを特徴とする復号化装置。
【請求項７】
鍵を用いて平文から暗号文を生成する暗号化方法であって、
乱数を生成する乱数生成ステップと、
前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成ステップと、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成ステップと、
前記第１のランダム化逆元データ生成ステップで生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、
を備えることを特徴とする暗号化方法。
【請求項８】
鍵を用いて平文から暗号文を生成する集積回路であって、
乱数を生成する乱数生成部と、
前記平文を受け付けて、前記乱数に依存して決まる予め定められた入力マスク値が、前記平文に対して前記鍵によって予め定められた処理がされた入力データに対して加算されたランダム化入力データを生成するランダム化入力データ生成部と、
前記ランダム化入力データ生成部により生成された前記ランダム化入力データと、前記入力マスク値とを受け付けて、受け付けた前記入力マスク値の予め定められた第１の有限体における逆元である出力マスク値が、当該入力データの前記第１の有限体における逆元に対して加算されたランダム化出力データを生成する第１のランダム化逆元データ生成部と、
前記第１のランダム化逆元データ生成部により生成された前記ランダム化出力データを受け付けて、受け付けた当該ランダム化出力データから前記暗号文を生成する出力データ処理部と、
を備えることを特徴とする集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2008146482.tif 000049
【図２】
2008146482.tif 000050
【図３】
2008146482.tif 000051
【図４】
2008146482.tif 000052
【図５】
2008146482.tif 000053
【図６】
2008146482.tif 000054
【図７】
2008146482.tif 000055
【図８】
2008146482.tif 000056
【図９】
2008146482.tif 000057
【図１０】
2008146482.tif 000058
【図１１】
2008146482.tif 000059
【図１２】
2008146482.tif 000060
【図１３】
2008146482.tif 000061
【図１４】
2008146482.tif 000062
【図１５】
2008146482.tif 000063
【図１６】
2008146482.tif 000064
【図１７】
2008146482.tif 000065
【図１８】
2008146482.tif 000066
【図１９】
2008146482.tif 000067
【図２０】
2008146482.tif 000068
【図２１】
2008146482.tif 000069
【図２２】
2008146482.tif 000070
【図２３】
2008146482.tif 000071
【図２４】
2008146482.tif 000072
【図２５】
2008146482.tif 000073
【図２６】
2008146482.tif 000074
【図２７】
2008146482.tif 000075
【図２８】
2008146482.tif 000076
【図２９】
2008146482.tif 000077
【図３０】
2008146482.tif 000078
【図３１】
2008146482.tif 000079
【図３２】
2008146482.tif 000080
【図３３】
2008146482.tif 000081
【図３４】
2008146482.tif 000082
【図３５】
2008146482.tif 000083
【図３６】
2008146482.tif 000084
【図３７】
2008146482.tif 000085
【図３８】
2008146482.tif 000086
【国際調査報告】
2008146482.tif 000087
2008146482.tif 000088