JP2007334016A - データ暗号化装置及びデータ暗号化方法 - Google Patents

データ暗号化装置及びデータ暗号化方法 Download PDF

Info

Publication number
JP2007334016A
JP2007334016A JP2006165857A JP2006165857A JP2007334016A JP 2007334016 A JP2007334016 A JP 2007334016A JP 2006165857 A JP2006165857 A JP 2006165857A JP 2006165857 A JP2006165857 A JP 2006165857A JP 2007334016 A JP2007334016 A JP 2007334016A
Authority
JP
Japan
Prior art keywords
randomized
random number
intermediate value
multiplication
generating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006165857A
Other languages
English (en)
Inventor
Kaoru Yokota
薫 横田
Masao Nonaka
真佐男 野仲
Natsume Matsuzaki
なつめ 松崎
Yuichi Fuda
裕一 布田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006165857A priority Critical patent/JP2007334016A/ja
Publication of JP2007334016A publication Critical patent/JP2007334016A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】AES暗号に対する電力解析攻撃対策として、乗算を用いたマスキング法を用いると、特定の値に対してはマスク処理が有効に作用しないという問題があった。
【解決手段】暗号処理の中間値に対して、二つの乱数を生成し、乗算に基づくマスク処理と、加算に基づくマスク処理を組み合わせて行う。これにより、従来の乗算を用いたマスキング法の課題を解決しつつ、ランダム化変換テーブルを一時記憶するためのRAMを必要としないという従来法の利点を実現することが可能となる。
【選択図】図5

Description

本発明は、暗号処理を実行する際の電力消費量を計測することで、暗号モジュールに埋め込まれている暗号鍵を解析する攻撃方法に対して安全な暗号装置に関する。
近年、ハードウェアあるいはソフトウェアで実装された暗号モジュールが、暗号処理を行う際の副情報を手がかりにして、暗号鍵の解析を行う解読法が各種考案されている。例えば、タイミング攻撃と呼ばれる解析方法では、暗号モジュールが暗号処理に要する時間が、暗号処理に用いている暗号鍵の値により、わずかではあるが異なることを利用して、暗号鍵の解析を行う。即ち、タイミング攻撃においては、暗号処理を行う際の処理時間という副情報を利用して、暗号鍵の解読を行っている。そのような解読法の中でも、暗号処理を行う際の電力消費量を副情報として、解読を行う解読方法としては、Simple Power Analysis、やDifferential Power Analysisといった各種の方法が考案されている。これらの解読法は、近年、高性能な計測機器が安価で手に入るようになった背景もあって、ICカードのような暗号が実装された実際の製品に対しても解析が可能であることが報告されている。また、暗号処理を行う際に、暗号モジュールから発生する電磁波強度を副情報として解読する方法など数々の解析方法が考案されている。以下の記述では、暗号処理時における暗号モジュールの電力消費量を手がかりにして、暗号鍵を解析する解読方法を総称して、「電力解析攻撃」と呼ぶことにする。以下では、電力解析攻撃を例にして説明を行うが、本発明は、副情報を用いたその他の解析方法に対しても同様に有効であるとして説明することができる。即ち、本発明は、電力解析攻撃のみならず、暗号処理中に暗号モジュールから発生する副情報を利用して鍵の推定を行う解析方法であれば適用可能である。
電力解析攻撃は、暗号モジュールの電力消費量と暗号処理途中の中間値との間に相関があることを利用して、鍵の解析を行う。従って、電力解析攻撃に対する対策としては、暗号処理途中の中間値を、暗号モジュール内部で生成した乱数によってランダム化することで電力消費量と中間値との相関関係をわかりにくくすることが考えられる。このように、暗号処理の中間値をランダム化することを、中間値を「マスクする」と呼ぶ。また、中間値をマスクすることにより、電力解析攻撃による鍵解析を困難にする方法を総称して「マスキング法」と呼ぶ。
特許文献1に記載のマスキング法では、米国標準暗号DES(Data Encryption Standard)暗号に対するマスキング法が開示されている(従来技術1と呼ぶ)。
(従来技術1の概要)
従来技術1の方法によると、DES暗号で用いるデータ変換用テーブルSboxを、暗号モジュール内部で生成する乱数に基づいてランダム化を行いした、ランダム化Sboxテーブルを、暗号処理に先立って作成し、一時的に保管する。暗号処理には、このランダム化Sboxテーブルを用いることで、暗号処理の中間値はマスクされ、電力解析攻撃は困難になる。ここで、従来技術1においては、ランダム化Sboxテーブルを一時記憶するためのRAMが必要になる。従って、RAM容量に厳しい制約のある場合には、従来技術1は使用できないという問題がある。また、暗号モジュールをハードウェアで実装する場合には、一般にSboxテーブルは、論理回路で実装されることが多い。従って、ランダム化Sboxテーブルを作成することができないので、従来技術1は使用できないという問題がある。
(従来技術2の概要)
非特許文献1に記載のマスキング法では、米国次世代標準暗号AES(Advanced Encryption Standard)暗号に対するマスキング法が開示されている(従来技術2と呼ぶ)。従来技術2の方法では、暗号処理の中間値を、乗算を用いてマスクすることで、従来技術1の問題点を解決している。これは、AES暗号のSboxテーブルが、有限体GF(2^8)上の逆元計算(“X^Y”は、「XのY乗」を示す)と所定のアフィン変換を行う処理と等価であることを利用している。AES暗号のSboxテーブルの入力値Xが、ランダムマスク値RによってR・Xのように乗算を用いてマスクされているとする。このとき、逆元計算後の値は、R^(−1)・X^(−1)となるので、逆元計算後の値はR^(−1)で乗算マスクされていると見ることができる。但し、X^(−1)は、Xの逆元を表す。更に、R^(−1)・X^(−1)に対して、定数1との有限体上の加算を行った後にマスク値Rとの乗算を行うと
{R^(−1)・X^(−1)(+)1}・R=R^(−1)・R・X^(−1)(+)R
=1・X^(−1)(+)R=X^(−1)(+)R
となり、X^(−1)は、マスク値Rによる加算マスクがされた状態となる。ここで、(+)は、有限体上の加算を表す。上記の値に対して、所定のアフィン変換fを行うと、アフィン変換fの線形性から、
f(X^(−1)(+)R)=f(X^(−1))(+)f(R)
となり、f(X^(−1))は、f(R)による加算マスクがされた状態となる。ここで、f(X^(−1))は、GF(2^8)上の逆元計算X^(−1)にアフィン変換fを行った値である。上述したように、Sboxによるテーブル変換は、GF(2^8)上の逆元計算と所定のアフィン変換を行う処理と等価であるので、f(X^(−1))は、Xに対してSboxテーブル変換を行った結果の値に他ならない。よってしたがって、上記のようなマスク処理を行えば、通常のSboxテーブル変換の結果をf(R)で加算マスクした場合と同じ結果が得られる。したがって、AES暗号に対しては、ランダム化Sboxテーブルを用いなくても、マスキング法を適用することが可能となる。即ち、従来技術1で課題であった、ランダムSboxテーブルを作成すること処理は不要となり、更に、そのデータを一時記憶するためのRAMも不要となる。
このように、乗算演算を用いて中間値にマスクを行うマスキング法を、乗算マスキング法と呼ぶ。以下、従来技術2に開示される乗算マスキング法について簡単に説明する。
(AES暗号の概要)
最初に、AES(Advanced Encryption Standard)暗号(AES暗号の詳細は、非特許文献1を参照)のアルゴリズムについて簡単に説明する。図11は、AES暗号の処理概要を示すブロック図である。AES暗号は、128ビット、192ビット、256ビットの3種類の鍵サイズをサポートしているが、以下では、鍵サイズが128ビットの場合について説明を行う。また、AES暗号は、128ビットの鍵から、128ビット×11個のラウンド鍵K0〜K10を生成する鍵スケジュール部と呼ばれる処理部と、鍵スケジュール部で生成されたラウンド鍵を用いて、データ撹乱処理を行うデータ撹乱部とからなる。鍵スケジュール部の詳細は、鍵スケジュール部の説明は本発明の特徴部分との関連性が低いため、ここではその説明を、省略する。する。ここでは、以下では、鍵スケジュール部により、128ビットの鍵から、128ビット×11個のラウンド鍵が既に生成された後の、データ撹乱処理についてのみ説明する。
まず、128ビットの平文に対して、ラウンド鍵を用いたラウンド処理Round0〜9(10〜19)を、この順序で実行する。このとき、各ラウンド処理には、ラウンド鍵K0〜K9をこの順序で用いる。上記一連のラウンド処理を実行後、最後に、排他的論理和部191にて、ラウンド鍵K10との排他的論理和演算を行い、暗号文Cを生成する。
次に、ラウンド処理Round0〜9(10〜19)の詳細について説明する。ラウンド処理は、最初の9ラウンド分の処理Round0〜8(10〜18)と、最終のラウンド処理Round9(19)で処理内容が異なるため、分けて説明する。図12は、ラウンド処理Round0〜8(10〜18)の内容を示したブロック図である。まず、排他的論理和部100において、入力データ128ビットに対してラウンド鍵Kn(n=0〜8)との排他的論理和演算を行う。次に、バイト置換部BytePerm(101)にて、後で説明するテーブル変換処理を行う。そして、ShiftRow(102)及びMixColumn(103)という線形変換処理をこの順で行い、128ビットデータを出力する。続いて、ラウンド処理Round9(19)の説明を行う。図13は、ラウンド処理Round9(19)の処理内容を示したブロック図である。ラウンド処理Round9(19)は、ラウンド処理Round0〜8(10〜18)の構成から、MixColumn処理だけを取り除いた構成と同じであるから、具体的な処理説明は割愛する。なお、ShiftRowとMixColumnの処理は、非特許文献2に開示されるShiftRow、MixColumnの処理と同じであるためここでは説明しない。
次に、バイト置換部BytePerm(101及び191)の処理内容について説明する。図14は、その構成を示すブロック図である。まず、入力データ128ビットを、上位から8ビットずつに分割して、x0、x1、・・・、x15とする。次に、前記各8ビットデータに対してそれぞれ変換テーブルSboxを用いたテーブル変換を行い、y0、y1、・・・、y15を生成する。そして、それらを上位からy0、y1、・・・、y15の順序で結合して128ビットデータとし、出力データYとする。変換テーブルSboxは、8ビット×256個の要素Sbox[0]〜Sbox[255]からなる、配列データである。このとき、変換テーブルSboxを用いたテーブル変換とは、入力xに対して、出力yを、y=Sbox[x]とする変換である。すなわち、入力xを、xをインデックスとしてSboxのテーブルを引いた結果yに変換する。
(従来技術2の具体内容)
AES暗号に対して、従来技術2で開示される乗算マスキング法を適用した場合の構成について説明する。
図15は、AES暗号のバイト置換部BytePerm(図14参照)に、従来技術2で開示される乗算マスキング法を適用した場合の構成mBytePerm(30)を示すブロック図である。mBytePermは、元のBytePermが、128ビットの入力中間値Xに対してバイト置換を行って出力中間値Yを出力していたものに対して、128ビットのマスクされた入力中間値Xに対して、入力乱数Rを用いたランダム化バイト置換を行い、マスクされた出力中間値Y及び出力乱数Sを出力する。mbytePerm(30)では、まず、入力Xを上位から8ビットずつ分割して、x0、x1、・・・、x15とする。また、入力乱数Rも上位から8ビットずつ分割して、r0、r1、・・・、r15とする。次に、ランダム化テーブル変換部3000〜3015は、それぞれ、x0とr0、x1とr1、・・・、x15とr15を用いて、後で説明するランダム化テーブル変換処理を行い、y0とs0、y1とs1、・・・、y15とs15を生成する。そして、y0、y1、・・・、y15をこの順序で連結して128ビット出力Yとし、s0、s1、・・・、s15をこの順序で連結して128ビット出力乱数Sとする。
次に、ランダム化テーブル変換部mSbox(3000〜3015)の詳細について説明する。図16は、mSbox(3000〜3015)の内部構成を示したブロック図である。mSbox(3000〜3015)は、8ビットの入力値xに対して入力乱数rを用いてランダム化テーブル変換処理を行い、出力値yと出力乱数sを出力する。以下、その処理内容について説明する。まず、乗算部310において、入力値xと入力乱数rとの有限体GF(2^8)上の乗算を行う。ここで“X^Y”は、「XのY乗」を示す。次に、二乗算部311において、入力乱数rの二乗算(r^2)を行う。このときの二乗算もGF(2^8)上で行う。次に、排他的論理和部312にて、乗算部310の出力と二乗算部311の出力との排他的論理和演算を行う。そして、その結果に対して、逆元演算部Inv.(313)にて、GF(2^8)上の逆元計算を行う。即ち、逆元演算部313は、入力値Aに対して、以下の関係を満たすA^(−1)を求めて出力する。但し、“・”は、GF(2^8)上の乗算を表す。
A・A^(−1)=1
次に、排他的論理和部314にて、逆元計算部313の出力値と固定値“1”との排他的論理和演算を行う。そして、乗算部315にて、その結果と入力乱数rとのGF(2^8)上の乗算を行う。次に、前記の結果に対して、アフィン変換部Affine(316a)にて所定のアフィン変換を行い、その結果を出力値yとして出力する。また、入力乱数値rに対して、アフィン変換部316bにて、前記と同様のアフィン変換を行い、その結果を出力乱数値sとして出力する。AES暗号のSbox変換テーブルによるテーブル変換処理は、GF(2^8)上の逆元計算と所定のアフィン変換を、この順序で行う処理と等価であることが知られている。アフィン変換316a及び316bは、このアフィン変換と同一である。なお、アフィン変換の具体内容については、非特許文献2で開示されているためここでは説明しない。
従来技術2において、ランダム化テーブル変換部mSboxへの入力値xは、暗号処理の(マスクされていない)中間値d(マスクされていない)に対して、入力乱数rによってマスクされた値である。即ち、x=d(+)rである。従って、乗算部310の出力値は、(d(+)r)・r=d・r(+)r^2となる。排他的論理和部312の出力値は、d・r(+)r^2(+)r^2となるが、同じ値同士の排他的論理和が0になること、および、0と他の数値Aの排他的論理和の結果は常にAになることから、出力値は、d・rとなる。このとき、逆元計算部313の出力は、(d・r)^(−1)=d^(−1)・r^(−1)となり、排他的論理和部314の出力値は、d^(−1)・r^(−1)(+)1となるので、乗算部315の出力は、d^(−1)(+)rとなる。従って、アフィン変換部316aの出力値yは、y=f(d^(−1)(+)r)であるが、アフィン変換の線形性から、f(d^(−1))(+)f(r)と同値である。但し、f(X)は、Xに対して先ほど説明したアフィン変換を行った結果を表す。このとき、f(d^(−1))は、従来技術2の概要にて述べたように、入力値dに対してAES暗号のSbox変換テーブルによる変換を行った結果と等しい。また、f(r)は、前記の出力乱数sと等しい。即ち、出力値yは、Sbox変換処理の出力値を、sによってマスクした値と等しい。以上をまとめると、mSboxは、乱数rによってマスクされたSbox変換処理の入力値xを、乱数sによってマスクされたSbox変換処理の出力値yを計算する処理になる。
従来技術2の特徴は、Sbox変換テーブルを、逆元計算とアフィン変換にて実行することにより、従来技術1のようなランダム化変換テーブルを作成する必要がなくなる点である。これにより、ランダム化変換テーブルを一時記憶するためのRAMが不要になり、RAM容量に制約のある場合や、変換テーブルを論理回路で実装するような場合でも、使用可能なマスキング法が実現されている。
Elena Trichina,Domenico De Seta, and Lucia Germani,"Simplified Adaptive Multiplicative Masking for AES", Cryptographic Hardware and Embedded Systems−CHES 2002(LNCS2523)Springer, 2002. Federal Information ProcessingStandards Publication 197,「Specification for the ADVANCED ENCRYPTION STANDARD(AES)」,November 26,2001 米国特許第6295606号明細書
しかしながら、前記従来技術2においては、ある特定の中間値に対しては、マスクが行えないという課題を有していた。先ほど述べた通り、逆元計算部313への入力値は、d・rである。これは、元の中間値dに対して乱数rによって乗算によるマスクがされているということを意味する。このとき、もしも、dがゼロの場合には、乱数rがいかなる値であっても、d・r=0である。即ち、元の中間値がゼロの場合には、どのような乱数rであっても、「マスクがされていない」ことと同じであり、このことを利用したzero attackと呼ばれる攻撃方法が知られている。即ち、従来技術2は、zero attackと呼ばれる電力解析攻撃に対して十分な安全性を有していないという課題があった。
本発明は、従来技術2におけるランダム化変換テーブルの生成とそれを一時記憶するためのRAMを必要としない、という特徴は保持しつつ、前記従来技術2の安全性上の課題を解決するもので、ランダム化変換テーブルの生成とそれを一時記憶するためのRAMを必要とせず、かつ、zero attackも含めた電力解析攻撃を阻止できるような、暗号装置を提供することを目的とする。
前記従来の課題を解決するために、本発明の暗号装置は、平文に対して鍵に基づく所定の暗号処理を行い、第1の乱数を生成する第1乱数生成部と、第2の乱数を生成する第2乱数生成部と、前記平文を前記所定の暗号処理を行う過程の中間値に対して前記第1の乱数に基づく乗算を用いた第1のランダム化処理を行って第1ランダム化中間値を生成する第1ランダム化部と、前記第1ランダム化中間値に対して前記第2の乱数に基づく加算を用いた第2のランダム化処理を行って第2ランダム化中間値を生成する第2ランダム化部と、前記第2ランダム化中間値に対して第3の乱数と有限体上の逆元計算に基づくランダム化逆元計算処理を行って第3ランダム化中間値を生成する逆元計算部とからなることを特徴とする。
本発明の暗号装置によれば、第1の乱数と乗算に基づくマスク処理に加えて、第2の乱数と加算に基づくマスク処理を行うことで、特定の暗号処理中間値に対しては乗算によるマスク処理が十分に行えないという従来技術の課題を解決しつつ、ランダム化変換テーブルを一時記憶するためのRAMが不要という従来技術の利点を実現するという効果がある。
(実施の形態1)
以下、本発明の実施の形態について、図面を参照しながら説明する。
(本発明におけるAES暗号化処理手順の概要)
図1は、本発明の実施の形態における、AES暗号化処理手順を示したブロック図である。128ビットの平文Pは、128ビット×11個のラウンド鍵K0〜K10と乱数生成部24で生成する128ビットの乱数R0を元に、この後説明するデータ撹乱処理を行い、128ビットの暗号文Cを生成する。以下、その処理手順について説明する。
(1)乱数生成部24にて、128ビットの乱数R0を生成する。
(2)排他的論理和部20にて、平文Pと乱数R0との排他的論理和演算を行う。
(3)n=0〜9に対して以下の処理を繰り返し行う:ランダム化ラウンド処理部21a〜21jにて、乱数Rnとラウンド鍵Knを用いたランダム化ラウンド処理mRound0〜mRound9を行い、出力値と出力乱数Rn+1を求める。
(4)排他的論理和部22にて、ラウンド鍵K10との排他的論理和演算を行う。
(5)排他的論理和部23にて、乱数R10との排他的論理和演算を行う。
次に、ランダム化ラウンド処理部mRound0〜mRound9(21a〜21j)について説明を行うが、mRound0〜mRound8(21a〜21i)とmRound9(21j)とでは処理内容が異なるため、それぞれ分けて説明する。
(ランダム化ラウンド処理部21a〜21iの処理)
図2は、ランダム化ラウンド処理部mRound0〜mRound8(21a〜21i)の内部構成を示したブロック図である。mRound0〜mRound8は、128ビットの入力値Xに対して、128ビットのラウンド鍵Kn(n=0〜8)と128ビットの入力乱数Rn(n=0〜8)を用いて、ランダム化ラウンド処理を行い、128ビットの出力値Yと128ビットの出力乱数Rn+1を出力する。以下、その手順について説明する。
(1)排他的論理和部240にて、入力値Xとラウンド鍵Knとの排他的論理和演算を行い、128ビットデータAを求める。
(2)ランダム化バイト置換部mBytePerm(241)にて、前記データAに対して、入力乱数Rnを用いてランダム化バイト置換処理を行い128ビットデータB及び128ビット乱数Snを求める。ランダム化バイト置換処理の詳細については後で説明する。
(3)線形変換部242a及び243aにて、前記Bに対して、ShiftRow処理及び、MixColumn処理をこの順序で行い、128ビット出力値Yを求める。なお、ShiftRow及びMixColumnの処理内容は、非特許文献2にて開示されるAES暗号方式のShiftRow及びMixColumnと同一であるため、詳細は説明しない。
(4)線形変換部242b及び243bにて、前記Snに対して、ShiftRow処理及び、MixColumn処理をこの順序で行い、128ビット出力乱数Rn+1を求める。
(ランダム化ラウンド処理部21jの処理)
図3は、ランダム化ラウンド処理部mRound9(21j)の内部構成を示したブロック図である。その構成は、図2に示したランダム化ラウンド処理部mRound0〜mRound8(21a〜21i)の構成から、MixColumnを省いたものと同一であり、その処理も、mRound0〜mRound8から、MixColumnの処理を省いた内容と同じであるので、説明は省略する。
次に、ランダム化バイト置換mBytePermの処理詳細について説明する。
(ランダム化バイト置換241、251の処理)
図4は、ランダム化バイト置換mBytePerm(241、251)の内部構成を示したブロック図である。mBytePerm(241、251)は、128ビットの入力値Xに対して、128ビットの入力乱数Rnを用いて、ランダム化バイト置換処理を行い、128ビットの出力値Yと128ビットの出力乱数Snを生成する。以下、その処理手順について説明する。
(1)入力値Xを、上位から8ビットずつ分割して、x0、x1、・・・、x15とする。
(2)入力乱数Rnを、上位から8ビットずつ分割して、r0、r1、・・・、r15とする。
(3)ランダム化テーブル変換部mSbox(2600〜2615)にて、それぞれ前記x0とr0、x1とr1、・・・、x15とr15を用いてランダム化テーブル変換処理を行い、それぞれ8ビットのy0とs0、y1とs1、・・・、y15とs15を生成する。
(4)前記y0、y1、・・・、y15をこの順序で連結して128ビットの出力値Yとする。
(5)前記s0、s1、・・・、s15をこの順序で連結して128ビットの出力乱数Snとする。
次に、ランダム化テーブル変換部mSbox(2600〜2615)の処理内容について説明する。
(ランダム化テーブル変換部2600〜2615の処理)
図5は、ランダム化テーブル変換部mSbox(2600〜2615)の内部構成を示したブロック図である。mSbox(2600〜1615)は、8ビットの入力値x、8ビットの入力乱数r、及びmSboxの内部にある乱数生成部272において生成した8ビットの内部乱数tを用いてランダム化テーブル変換処理を行い、8ビットの出力値yと8ビットの出力乱数sを生成する。以下、その処理手順について説明する。なお、以下の説明において、有限体GF(2^8)上で行う乗算は、式の後に“over GF(2^8)”と表記するものとし、有限体の既約多項式は、AES暗号で使用している8次多項式x^8+x^4+x^3+x+1とする。また、定数保管部273は、前記既約多項式をバイナリで表現した9ビット定数値m=100011011を保管している。
(1)乗算部270にて、入力値xと入力乱数rとの乗算を行い、8ビットデータaを求める。即ち、a=x・r over GF(2^8)である。
(2)二乗算部271にて、入力乱数rの二乗算を行い、8ビットデータvを求める。即ち、v=r^2 over GF(2^8)である。
(3)乱数生成部272にて、2ビットの内部乱数tを生成する。
(4)リダクションなし乗算部274にて、前記内部乱数tと定数保管部273が保管する定数値mとの乗算を行い、データuを求める。このときの乗算は、GF(2^8)上の乗算とは、少し異なる計算方法を行う。GF(2^8)上の乗算A・Bを行う場合には、AとBを2進数で乗算を行った後、既約多項式のバイナリ値10011011による剰余計算を行った結果の8ビットを乗算結果とする。しかし、ここでの乗算は、2進数での乗算後の剰余計算(リダクション)は省略する。即ち、tとmとの2進数での乗算を行った結果の10ビット値をデータuとする。即ち、u=t・mである。
(5)排他的論理和部275にて、前記8ビットデータvと前記10ビットデータuとの排他的論理和演算を行い、10ビットデータwを生成する。即ち、w=u(+)vである。このとき、8ビットデータvの上位に2ビットの「00」を付けて10ビットとして、uとの排他的論理和演算を行うものとする。
(6)排他的論理和部276にて、前記8ビットデータaと前記10ビットデータwとの排他的論理和演算を行い、10ビットデータbを生成する。即ち、b=a(+)wである。このとき、8ビットデータaの上位に2ビットの「00」を付けて10ビットとして、wとの排他的論理和演算を行うものとする。
(7)ランダム化逆元計算部277にて、前記10ビットデータbに対して、ランダム化逆元計算テーブルInvTabを用いたテーブル変換処理を行い、10ビットデータcを生成する。ここで、ランダム化逆元計算テーブルInvTabは、10ビット×1024個の配列要素InvTab[0]〜InvTab[1023]からなるテーブルで、前記テーブルを用いたテーブル変換処理は、10ビット入力Xに対して10ビット出力Y=InvTab[X]を求める処理である。ランダム化逆元計算テーブルInvTabは、暗号モジュール実装時に作成され、ランダム化逆元計算部277に固定的なテーブルとして保管されている。その作成方法については、後で説明する。
(8)乗算部278にて、前記10ビットデータcと入力乱数rとの乗算を行い、8ビットデータdを求める。ここでの乗算は、cとrとの2進数での乗算を行い、その結果に対して既約多項式の9ビットバイナリ値10011011による剰余計算を行ったものを乗算結果dとする。即ち、d=c・r over GF(2^8)とする。
(9)アフィン変換部279a及び279bにて、それぞれ8ビットデータdと入力乱数rに対して前述のアフィン変換fを行い、その結果を出力値y及び出力乱数sとする。即ち、y=f(d)及びs=f(r)とする。
ここで、ランダム化逆元計算部277で用いるランダム化逆元計算テーブルInvTabの作成は以下の手順により行う。即ち、X=0〜1023に対して以下の(A)〜(D)の計算を行いInvTab[X]を算出する。
(A)Xを2進数として、既約多項式の9ビットバイナリ値10011011による剰余計算を行い、8ビット値Aを求める。
(B)前記Aに対するGF(2^8)上の逆元計算を行い、8ビット値Bを求める。即ち、A・A^(−1)=1を満たすGF(2^8)上の値、A^(−1)を求めて、これをBとする。
(C)2ビットの乱数pを生成して、前記Bに対して以下の計算を行い、10ビット値Cを求める。但し、計算は2進数として行う。
C=B(+)p・m
(D)前記10ビット値Cと固定値1との排他的論理和演算を行い、Dとする。即ち、D=C(+)1とする。
以上のようにして、InvTab[0]〜InvTab[1023]を求める。
(AES暗号処理との等価性)
以上で説明したマスク処理を行ったAES暗号処理が、元のAES暗号処理と等価であることを以下で説明する。
図1において、平文Pは、排他的論理和部20にて、乱数R0を用いて排他的論理和によるマスクが行われた状態でmRound0(21a)に入力される。
以下つまり、mRound0n(21a)には、R0nでマスクされた平文が入力された場合によるが、これが、mRound0nからは、Rn+11でマスクされた中間値が出力されることを示す。ここで、nは、0、1、2、・・・、8である。
図2において、入力Xが、Rnでマスクされた中間値であるとし、マスク前の中間値をMとして、X=M(+)Rnとする。このとき、排他的論理和部240での出力値Aは、A=M(+)Kn(+)Rnとなる。ここで、A、M、Kn、Rnをそれぞれ上位から8ビットずつ分割したものを、A[0]〜A[15]、M[0]〜M[15]、Kn[0]〜Kn[15]、Rn[0]〜Rn[15]とするする。このとき、図4において、xi=A[i]=M[i](+)Kn[i](+)Rn[i]であり、ri=Rn[i]である(i=0、1、・・・15)。次に、これらが、mSbox(2600〜2615)に入力されたとすると、図5において、乗算部270の出力a=x・rであり、排他的論理和部275の出力w=r^2(+)t・mである。よって、排他的論理和部276の出力は、b=x・r(+)r^2(+)t・mであるから、これに、xを前記xi、rを前記riとして値を代入するすると以下のようになる。
b=(M[i](+)Kn[i](+)Rn[i])・Rn[i](+)Rn[i1]^2(+)t・m
=(M[i](+)Kn[i])・Rn[i](+)Rn[i]・Rn[i](+)Rn[i]^2(+)t・m
=(M[i](+)Kn[i])・Rn[i](+)Rn[i]^2(+)Rn[i]^2(+)t・m
ここで、排他的論理和演算の性質から同じ値同士の演算結果は0となるので、Rn[i]^2(+)Rn[i]^2=0となる。さらに、排他的論理演算では、0と任意の値Xとの演算結果はXのままとなるので最終的にbは以下のようになる。
b=(M[i](+)Kn[i])・Rn[i](+)t・mとなる。
この値に対して、ランダム化逆元計算テーブルInvTabによるテーブル変換処理が行われるが、この処理は、先ほどのInvTabテーブルの作成方法として説明した、手順(A)〜(D)を実行することと同じである。このことより、前記bは、手順(A)により、定数mによる剰余計算が行われて、(M[i](+)Kn[i])・Rn[i]となり、更に手順(B)により、(M[i](+)Kn[i])^(−1)・Rn[i]^(−1)となり、手順(C)、(D)を経て以下の値dcとなる。
d c=(M[i](+)Kn[i])^(−1)・Rn[i]^(−1)(+)p・m(+)1
そして、乗算部278の出力結果dは、mによる剰余計算が行われることに注意すると、上記の式のうち、p・mの部分は0と等価であると見なせるので、dの値は以下のようになる。
d=((M[i](+)Kn[i])^(−1)・Rn[i]^(−1)(+)0(+)1)・Rn[i]
=(M[i](+)Kn[i])^(−1)・Rn[i]^(−1)(+)1)・Rn[i]
=(M[i](+)Kn[i])^(−1)・Rn[i]^(−1)・Rn[i](+)1・Rn[i]
=(M[i](+)Kn[i])^(−1)・1(+)Rn[i]
=(M[i](+)Kn[i])^(−1)(+)Rn[i]
ゆえに、アフィン変換279aの出力yは、
y=f((M[i](+)Kn[i])^(−1))(+)f(Rn[i])
となる。ここで、マスクを行わない場合のラウンド処理Roundへの入力値をM[i]としたときに、Sboxテーブル変換処理後の中間値は、f((M[i](+)Kn[i])^(−1))である。従って、yは、Sboxテーブル変換処理後の中間値にf(Rn[i])によって排他的論理和演算によるマスクを行った値に他ならない。このことより、図2において
B=BytePerm(M(+)Kn)(+)F(Rn)
となる。ここで、F(Rn)は、Rnを上位から8ビットずつアフィン変換fを施した結果を示し、BytePerm(X)は、Xに対してBytePerm処理を行った結果を表す。また、
Sn=F(Rn)
であることは、明らかである。そして、ShiftRow、MixColumnはいずれも線形変換であることから、
Y=MixColumn(ShiftRow(BytePerm(M(+)Kn)))(+)MixColumn(ShiftRow(F(Rn)))
Rn+1=MixColumn(ShiftRow(F(Rn)))
が成り立つ。ここで、ShiftRow(X)、MixColumn(X)は、それぞれ、Xに対してShiftRow、MixColumn処理を行った結果を表す。ゆえに、
Y=MixColumn(ShiftRow(BytePerm(M(+)Kn)))(+)Rn+1
となる。X=M(+)Rnであったことを考慮すると、上の式は、以下のことを示している。即ち、Rnでマスクされた中間値をランダム化ラウンド処理の入力とすると、Rn+1でマスクされた状態の中間値が出力される。なお、上記のことは、mRound0〜mRound8について成り立つことを示したが、mRound9についても、同様のことが言えることは明らかである。
以上のことを用いると、図1において以下のことが言える。まず、排他的論理和部20にて平文Pが、乱数R0によってマスクされてmRound0(21a)に入力される。乱数R0によってマスクされた平文Pは、mRound0(21a)から、乱数R1によってマスクされた中間値として出力され、mRound1(21b)に入力される。乱数R1によってマスクされた中間値は、mRound1(21b)から、乱数R2によってマスクされた中間値として出力され、mRound2(2121c)に入力される。以下、同様のことを繰り返すと、乱数R9によってマスクされた中間値は、mRound9(21j)から、乱数R10によってマスクされた中間値として出力される。そして、排他的論理和部22にてラウンド鍵K10との排他的論理和演算が行われ、排他的論理和部23にて、乱数R10との排他的論理和演算を行うことにより、乱数R10によるマスクの影響は取り除かれて、暗号文Cが生成される。ゆえに、マスク処理を行ったAES暗号化処理が、元のAES暗号処理と等価であることが示された。
(本発明におけるAES復号化処理手順の概要)
次に、以上で説明したマスク処理を行ったAES暗号化処理に対応するAES復号化処理について説明する。復号化処理は、基本的には、暗号化処理の各部の処理の逆変換処理を逆の順序で行えば良い。
図6は、本発明の実施の形態における、AES復号化処理手順を示したブロック図である。128ビットの暗号文Cは、128ビット×11個のラウンド鍵K0〜K10と乱数生成部34で生成する128ビットの乱数R10を元に、この後説明するデータ撹乱処理を行い、128ビットの平文Pを生成する。以下、その処理手順について説明する。
(1)乱数生成部34にて、128ビットの乱数R10を生成する。
(2)排他的論理和部30にて、暗号文Cと乱数R10との排他的論理和演算を行う。
(3)排他的論理和部31にて、ラウンド鍵K10との排他的論理和演算を行う。
(4)n=9〜0に対して以下の処理を繰り返し行う:ランダム化逆ラウンド処理部32j〜32aにて、乱数Rn+1とラウンド鍵Knを用いたランダム化ラウンド処理InvmRound9〜InvmRound0を行い、出力値と出力乱数Rnを求める。
(5)排他的論理和部33にて、乱数R0との排他的論理和演算を行う。
次に、ランダム化逆ラウンド処理部InvmRound0〜InvmRound9(32j〜32a)について説明を行うが、InvmRound0〜InvmRound8(32i〜32a)とInvmRound9(32j)とで処理内容が異なるため、それぞれ分けて説明する。
(ランダム化逆ラウンド処理部32a〜32iの処理)
図8は、ランダム化逆ラウンド処理部InvmRound0〜InvmRound8(32a〜32i)の内部構成を示したブロック図である。InvmRound0〜InvmRound8は、128ビットの入力値Yに対して、128ビットのラウンド鍵Kn(n=0〜8)と128ビットの入力乱数Rn+1(n=0〜8)を用いて、ランダム化逆ラウンド処理を行い、128ビットの出力値Xと128ビットの出力乱数Rnを出力する。以下、その手順について説明する。
(1)線形変換部350a及び351aにて、Yに対して、InvMixColumn処理及びInvShiftRow処理をこの順序で行い、128ビット値Aを求める。InvMixColumn処理及びInvShiftRow処理は、MixColumn処理及びShiftRow処理の逆変換に相当する処理であり、非特許文献2にて詳細が開示されているため、ここでは説明しない。
(2)線形変換部350b及び351bにて、Rn+1に対して、InvMixColumn処理及びInvShiftRow処理をこの順序で行い、128ビット値Snを求める。
(3)ランダム化逆バイト置換部InvmBytePerm(352)にて、前記データAに対して、入力乱数Rnを用いて逆ランダム化バイト置換処理を行い128ビットデータB及び128ビット出力乱数Rnを求める。ランダム化逆バイト置換処理の詳細については後で説明する。
(4)排他的論理和部353にて、前記Bとラウンド鍵Knとの排他的論理和演算を行い、128ビット出力データXを求める。
(ランダム化逆ラウンド処理部32jの処理)
図7は、ランダム化逆ラウンド処理部InvmRound9(32j)の内部構成を示したブロック図である。その構成は、図8に示すランダム化ラウンド処理部InvmRound0〜InvmRound8(32a〜32i)の構成から、InvMixColumnを省いたものと同一であるので、説明は省略する。
次に、ランダム化逆バイト置換InvmBytePermの処理詳細について説明する。
(ランダム化逆バイト置換341、352の処理)
図9は、ランダム化逆バイト置換InvmBytePerm(341、352)の内部構成を示したブロック図である。InvmBytePerm(341、352)は、128ビットの入力値Yに対して、128ビットの入力乱数Snを用いて、ランダム化逆バイト置換処理を行い、128ビットの出力値Xと128ビットの出力乱数Rnを生成する。以下、その処理手順について説明する。
(1)入力値Yを、上位から8ビットずつ分割して、y0、y1、・・・、y15とする。
(2)入力乱数Snを、上位から8ビットずつ分割して、s0、s1、・・・、s15とする。
(3)ランダム化逆テーブル変換部InvmSbox(3600〜3615)にて、それぞれ前記y0とs0、y1とs1、・・・、y15とs15を用いてランダム化逆テーブル変換処理を行い、それぞれ8ビットのx0とr0、x1とr1、・・・、x15とr15を生成する。
(4)前記x0、x1、・・・、x15をこの順序で連結して128ビットの出力値Xとする。
(5)前記r0、r1、・・・、r15をこの順序で連結して128ビットの出力乱数Rnとする。
次に、ランダム化逆テーブル変換部InvmSbox(3600〜3615)の処理内容について説明する。
(ランダム化逆テーブル変換部3600〜3615の処理)
図10は、ランダム化逆テーブル変換部InvmSbox(3600〜3615)の内部構成を示したブロック図である。InvmSbox(3600〜3615)は、8ビットの入力値y、8ビットの入力乱数s、及びInvmSboxの内部にある乱数生成部373において生成した8ビットの内部乱数tを用いてランダム化逆テーブル変換処理を行い、8ビットの出力値xと8ビットの出力乱数rを生成する。以下、その処理手順について説明する。なお、以下の説明において、有限体GF(2^8)上で行う乗算は、式の後に“over GF(2^8)”と表記するものとし、有限体の既約多項式は、AES暗号で使用している8次多項式x^8+x^4+x^3+x+1とする。また、定数保管部273は、前記既約多項式をバイナリで表現した9ビット定数値m=100011011を保管している。
(1)逆アフィン変換部370a及び370bにて、それぞれ入力データyと入力乱数sに対して逆アフィン変換invfを行い、d及び出力乱数rを求める。即ち、d=invf(y)及びr=f(s)とする。ここで、逆アフィン変換invfは、アフィン変換fの逆変換処理であり、詳細は非特許文献2にて開示されているため、ここでは説明しない。
(2)乗算部371にて、値dと出力乱数rとの乗算を行い、8ビットデータcを求める。即ち、c=d・r over GF(2^8)である。
(3)二乗算部372にて、出力乱数rの二乗算を行い、8ビットデータvを求める。即ち、v=r^2 over GF(2^8)である。
(4)乱数生成部373にて、2ビットの内部乱数tを生成する。
(5)リダクションなし乗算部375にて、前記内部乱数tと定数保管部374が保管する定数値mとの乗算を行い、データuを求める。このときの乗算は、GF(2^8)上の乗算とは、少し異なる計算方法を行う。GF(2^8)上の乗算A・Bを行う場合には、AとBを2進数で乗算を行った後、既約多項式のバイナリ値10011011による剰余計算を行った結果の8ビットを乗算結果とする。しかし、ここでの乗算は、2進数での乗算後の剰余計算(リダクション)は省略する。即ち、tとmとの2進数での乗算を行った結果の10ビット値をデータuとする。即ち、u=t・mである。
(6)排他的論理和部376にて、前記8ビットデータvと前記10ビットデータuとの排他的論理和演算を行い、10ビットデータwを生成する。即ち、w=u(+)vである。このとき、8ビットデータvの上位に2ビットの「00」を付けて10ビットとして、uとの排他的論理和演算を行うものとする。
(7)排他的論理和部376にて、前記8ビットデータcと前記10ビットデータwとの排他的論理和演算を行い、10ビットデータbを生成する。即ち、b=c(+)wである。このとき、8ビットデータcの上位に2ビットの「00」を付けて10ビットとして、wとの排他的論理和演算を行うものとする。
(8)ランダム化逆元計算部378にて、前記10ビットデータbに対して、ランダム化逆元計算テーブルInvTabを用いたテーブル変換処理を行い、10ビットデータaを生成する。ここで、ランダム化逆元計算テーブルInvTabは、10ビット×1024個の配列要素InvTab[0]〜InvTab[1023]からなるテーブルで、前記テーブルを用いたテーブル変換処理は、10ビット入力Xに対して10ビット出力Y=InvTab[X]を求める処理である。ランダム化逆元計算テーブルInvTabは、暗号モジュール実装時に作成され、ランダム化逆元計算部378に固定的なテーブルとして保管されている。その作成方法は、既に説明したとおりである。なお、(ランダム化されているか否かに関わらず)逆元の逆元を取ると元の値に戻るので、暗号化処理におけるランダム化逆元計算テーブルInvTabを用いた変換の逆変換は、同一のランダム化逆元計算テーブルInvTabを用いた変換と同じ変換になる。したがって、ここでは、逆変換処理として、暗号処理に用いたランダム化逆元計算テーブルInvTabと同一のランダム化逆元計算テーブルInvTabを用いた変換を行っている。
(9)乗算部379にて、前記10ビットデータaと入力乱数rとの乗算を行い、8ビット出力データxを求める。ここでの乗算は、aとrとの2進数での乗算を行い、その結果に対して既約多項式の9ビットバイナリ値10011011による剰余計算を行ったものを乗算結果xとする。即ち、x=a・r over GF(2^8)とする。
(zero attackに対する安全性)
以上で説明した実施の形態が、従来技術2において問題となっていたzero attackに対して安全性が向上していることを説明する。図5のmSbox(2600〜2615)の構成において、入力値xは、乱数rによって中間値gがマスクされた値と等しいことは既に説明したとおりである。即ち、x=g(+)rである。このとき、ランダム化逆元計算部277の入力値bは、b=g・r(+)m・tである。よって、たとえマスクをする前の中間値gがゼロであっても、内部乱数tの影響により、bの値は、ランダム化されている。また、ランダム化逆元計算部277の出力値cについても、c=g^(−1)・r^(−1)(+)m・pである。但し、pは、2ビットの乱数である。よって、cについても、たとえ中間値gがゼロであっても、内部乱数pの影響により、cの値は、ランダム化されている。以上のことから、本実施の形態は、従来技術2よりもzero attackに対する安全性が向上している。
なお、本実施の形態では、電力解析攻撃対策の対象とする暗号を、AES暗号としているが、AES暗号だけに限らず、変換テーブルが、乗算、逆元演算、アフィン変換のような線形変換のいずれかを組み合わせた処理と等価であるような暗号方式であれば適用可能である。そのような暗号方式としては、他にCamellia暗号(http://Zinfo.isl.ntt.co.jp/crypt/camellia/d1/01espec.pdfより仕様書が入手可能)がある。
また、本実施の形態において、ランダム化テーブル変換部及びランダム化逆テーブル変換部の内部で生成する内部乱数を2ビットとしているが、2ビットに限定されるものではない。
また、上記実施の形態では、暗号化処理および復号化処理の手順を中心に説明してきたが、本発明は、図中の各ブロックをそれぞれハードウェアとして実装した暗号化装置や復号化装置として実現することもできる。
(まとめ)
上記にて述べたように、本発明は、特定の中間値に対してはマスクを行うことができないマスキング(例えば、乗算マスキングなど)により中間値を隠蔽している暗号化装置および復号化装置について、安全性を向上させる発明である。
本発明では、上述したようなマスキングを行っている箇所に対して、上述した特定の中間値が与えられても影響を受けないような値によるマスキングを更に行うことで、上述した特定の中間値が与えられても、マスキングが行われていない状態の値が現れないようにしている。上記の実施の形態にて述べた例では、定数保管部273等が保持する定数と乱数との積を用いて、乗算マスキングの結果に加算マスキングを行うことで、特定の中間値については、zero attackによって乗算マスキングが無効化されても加算マスキングによって中間値を保護しているためzero attackによる鍵の解析は困難となる。
また、追加で行っているマスキングについても、正しい演算結果を得るためにいずれかのタイミングでマスキングの効果を消す必要があるが、演算の途中でマスキングの効果が消されてしまうと隠蔽されていない中間値そのものが現れてしまうため、中間値の保護が適切に行えない。そこで、本発明では、マスキングをかけた中間値がさらに異なる手法で隠蔽された後(上述した実施の形態では、ランダム化逆元変換)でしか打ち消されないような値(上記の実施の形態では、定数保管部内に保管しているm。剰余演算によりマスキングの効果が消される)を用いてマスキングを行うことで、隠蔽されていない状態の中間値が常に現れないようにしている。
以上にて述べたように、本発明は、暗号化装置および復号化装置などの、マスキングによって中間値を保護する必要がある装置に対して有用である。すなわち、これらの装置では処理に用いるテーブルサイズ等の削減のために、特定の値が入力された場合にマスキングの意味がなくなってしまうようなマスキング手法を取ることがあるが、本発明によればこのような場合でも中間値を適切に保護することができる。これにより、本発明では、テーブルサイズ等の削減と中間値の隠蔽を両立させた暗号化装置や復号化装置を提供することができる。
(変形例)
なお、本発明の上記実施の形態においては、上述の「特定の中間値に対してはマスクを行うことができないマスキング」を、乗算演算によるマスキング(乗算マスキング)としているが、本発明は、これに限定されるものではなく、乗算の代わりに除算演算によるマスキングの場合も本発明に含まれる。除算演算を用いたマスキングの場合も、乗算マスキングと同様に、マスクの対象データがゼロの場合には、マスクの値に関わらず、マスキングした結果の値も、ゼロとなってしまい、上述のzero attackが可能となる。
更になお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明にかかる暗号装置は、電力解析攻撃を阻止しつつ、従来技術よりも、暗号処理の処理量を削減するという特徴を有するので、高速処理あるいは低コストでの実現が求められる暗号装置の実現に有用である。
本発明の実施の形態に係るAES暗号処理手順を示すブロック図 本発明の実施の形態に係るランダム化ラウンド処理部21a〜21iの構成を示すブロック図 本発明の実施の形態に係るランダム化ラウンド処理部21jの構成を示すブロック図 本発明の実施の形態に係るランダム化バイト置換部241、251の構成を示すブロック図 本発明の実施の形態に係るランダム化テーブル変換部2600〜2615の構成を示すブロック図 本発明の実施の形態に係るAES復号化処理手順を示すブロック図 本発明の実施の形態に係るランダム化逆ラウンド処理部32jの構成を示すブロック図 本発明の実施の形態に係るランダム化逆ラウンド処理部32i〜32aの構成を示すブロック図 本発明の実施の形態に係るランダム化逆バイト置換部341、352の構成を示すブロック図 本発明の実施の形態に係るランダム化逆テーブル変換部3600〜3615の構成を示すブロック図 AES暗号の暗号化処理手順を示すブロック図 AES暗号のラウンド処理部10〜18の構成を示すブロック図 AES暗号のラウンド処理部19の構成を示すブロック図 AES暗号のバイト置換部101、191の構成を示すブロック図 従来技術に係るランダム化バイト置換部30の構成を示すブロック図 従来技術に係るランダム化テーブル変換部3000〜3015の構成を示すブロック図
符号の説明
20 排他的論理和部
21a〜21j ランダム化ラウンド処理部
240 排他的論理和部
241 ランダム化バイト置換部
242a,242b ShiftRow処理部
243a,243b MixColumn処理部
250 排他的論理和部
251 ランダム化バイト置換部
252a,252b ShiftRow部
270 乗算部
271 二乗算部
272 乱数生成部
273 定数保管部
274 乗算部
275 排他的論理和部
276 排他的論理和部
277 ランダム化逆元計算部
278 乗算部
279a,279b アフィン変換部
2600〜2615 ランダム化テーブル変換部

Claims (7)

  1. 平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成するデータ暗号化装置であって、
    第1の乱数を生成する第1乱数生成部と、
    第2の乱数を生成する第2乱数生成部と、
    前記平文を前記所定の暗号処理を行う過程の中間値に対して前記第1の乱数に基づく乗算を用いた第1のランダム化処理を行って第1ランダム化中間値を生成する第1ランダム化部と、
    前記第1ランダム化中間値に対して前記第2の乱数に基づく加算を用いた第2のランダム化処理を行って第2ランダム化中間値を生成する第2ランダム化部と、
    第3の乱数を生成する第3乱数生成部と、
    前記第2ランダム化中間値に対して第3の乱数と有限体上の乗算または除算に基づくランダム化乗除算処理を行って第3ランダム化中間値を生成するランダム化乗除算部と
    を備えることを特徴とするデータ暗号化装置。
  2. 請求項1において、前記第2ランダム化部は、
    前記有限体の既約多項式に基づいて決まる定数値を保管する既約多項式定数保管部と、
    前記定数値と前記第2の乱数との乗算を行ってランダム化定数データを生成する乗算部と、
    前記ランダム化定数データと前記第1ランダム化中間値に基づく加算を行う加算部とを備える
    ことを特徴とする請求項1に記載のデータ暗号化装置。
  3. 請求項2において、前記ランダム化乗除算部は、
    前記第2ランダム化中間値を前記有限体上の元に変換して第4ランダム化中間値とする第1変換部と、
    前記第4ランダム化中間値に対して前記有限体上の逆元を計算して第5ランダム化中間値とする逆元計算部と、
    前記第5ランダム化中間値と前記第3の乱数に基づいて前記第3ランダム化中間値を生成する第2変換部を備えること
    を特徴とする請求項2に記載のデータ暗号化装置。
  4. 請求項2において、前記ランダム化乗除算部は、
    ランダム化乗除算変換テーブルを保管するランダム化乗除算変換テーブル保管部と、
    前記ランダム化乗除算変換テーブルに基づいて前記第2ランダム化中間値を前記第3ランダム化中間値に変換するランダム化乗除算変換部とを備え、
    前記ランダム化乗除算変換テーブルは、
    入力データに対して、前記ランダム化乗除算処理と、前記第3の乱数に基づいた変換処理とを行い出力データとしたときの入力データと出力データの対応関係を表していること
    を特徴とする請求項2に記載のデータ暗号化装置。
  5. 平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成する集積回路であって、
    第1の乱数を生成する第1乱数生成部と、
    第2の乱数を生成する第2乱数生成部と、
    前記平文を前記所定の暗号処理を行う過程の中間値に対して前記第1の乱数に基づく乗算を用いた第1のランダム化処理を行って第1ランダム化中間値を生成する第1ランダム化部と、
    前記第1ランダム化中間値に対して前記第2の乱数に基づく加算を用いた第2のランダム化処理を行って第2ランダム化中間値を生成する第2ランダム化部と、
    第3の乱数を生成する第3乱数生成部と、
    前記第2ランダム化中間値に対して第3の乱数と有限体上の乗算または除算に基づくランダム化乗除算処理を行って第3ランダム化中間値を生成するランダム化乗除算部と
    を備えることを特徴とする集積回路。
  6. 平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成するデータ暗号化方法であって、
    第1の乱数を生成する第1乱数生成ステップと、
    第2の乱数を生成する第2乱数生成ステップと、
    前記平文を前記所定の暗号処理を行う過程の中間値に対して前記第1の乱数に基づく乗算を用いた第1のランダム化処理を行って第1ランダム化中間値を生成する第1ランダム化ステップと、
    前記第1ランダム化中間値に対して前記第2の乱数に基づく加算を用いた第2のランダム化処理を行って第2ランダム化中間値を生成する第2ランダム化ステップと、
    第3の乱数を生成する第3乱数生成ステップと、
    前記第2ランダム化中間値に対して第3の乱数と有限体上の乗算または除算に基づくランダム化乗除算処理を行って第3ランダム化中間値を生成するランダム化乗除算ステップと
    を含むことを特徴とするデータ暗号化方法。
  7. 平文に対して鍵に基づく所定の暗号処理を行い、暗号文を生成するデータ暗号化処理プログラムであって、
    第1の乱数を生成し、
    第2の乱数を生成し、
    前記平文を前記所定の暗号処理を行う過程の中間値に対して前記第1の乱数に基づく乗算を用いた第1のランダム化処理を行って第1ランダム化中間値を生成し、
    前記第1ランダム化中間値に対して前記第2の乱数に基づく加算を用いた第2のランダム化処理を行って第2ランダム化中間値を生成し、
    第3の乱数を生成し、
    前記第2ランダム化中間値に対して第3の乱数と有限体上の乗算または除算に基づくランダム化乗除算処理を行って第3ランダム化中間値を生成する
    ことを特徴とするデータ暗号化処理プログラム。
JP2006165857A 2006-06-15 2006-06-15 データ暗号化装置及びデータ暗号化方法 Pending JP2007334016A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006165857A JP2007334016A (ja) 2006-06-15 2006-06-15 データ暗号化装置及びデータ暗号化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006165857A JP2007334016A (ja) 2006-06-15 2006-06-15 データ暗号化装置及びデータ暗号化方法

Publications (1)

Publication Number Publication Date
JP2007334016A true JP2007334016A (ja) 2007-12-27

Family

ID=38933554

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006165857A Pending JP2007334016A (ja) 2006-06-15 2006-06-15 データ暗号化装置及びデータ暗号化方法

Country Status (1)

Country Link
JP (1) JP2007334016A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009244302A (ja) * 2008-03-28 2009-10-22 Toshiba Corp 暗号化装置、復号化装置、データ保護システム、データ保護方法、暗号化プログラム、復号化プログラム
JP2011175039A (ja) * 2010-02-23 2011-09-08 Toshiba Corp 暗号化装置および復号装置
KR101276683B1 (ko) 2009-08-21 2013-06-19 한국전자통신연구원 Seed 암호화 시스템의 f-함수 처리 장치 및 방법
JP2013186157A (ja) * 2012-03-06 2013-09-19 Toshiba Corp 暗号処理装置
US8615078B2 (en) 2009-08-21 2013-12-24 Electronics And Telecommunications Research Institute Method and apparatus for processing F-function in seed encryption system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009244302A (ja) * 2008-03-28 2009-10-22 Toshiba Corp 暗号化装置、復号化装置、データ保護システム、データ保護方法、暗号化プログラム、復号化プログラム
KR101276683B1 (ko) 2009-08-21 2013-06-19 한국전자통신연구원 Seed 암호화 시스템의 f-함수 처리 장치 및 방법
US8615078B2 (en) 2009-08-21 2013-12-24 Electronics And Telecommunications Research Institute Method and apparatus for processing F-function in seed encryption system
JP2011175039A (ja) * 2010-02-23 2011-09-08 Toshiba Corp 暗号化装置および復号装置
JP2013186157A (ja) * 2012-03-06 2013-09-19 Toshiba Corp 暗号処理装置

Similar Documents

Publication Publication Date Title
JP6345237B2 (ja) 平文データを暗号化するための方法および装置
US9515818B2 (en) Multi-block cryptographic operation
JP4823904B2 (ja) データ暗号化装置及びデータ暗号化方法
US9166789B2 (en) Cryptographic processing apparatus
CN102016871B (zh) 密码系统
US8010587B2 (en) Random number generator
US9288040B2 (en) Encryption device
JP2016505891A (ja) テーブルネットワークを有する計算装置
US11436946B2 (en) Encryption device, encryption method, decryption device, and decryption method
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
KR20170097509A (ko) 화이트 박스 암호화 기반의 연산 방법 및 그 방법을 수행하는 보안 단말
JP5652363B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JPWO2016067524A1 (ja) 認証付暗号化装置、認証付復号装置、認証付暗号システム、認証付暗号化方法、プログラム
JP2007334016A (ja) データ暗号化装置及びデータ暗号化方法
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
US8774402B2 (en) Encryption/decryption apparatus and method using AES rijndael algorithm
JP6194136B2 (ja) 疑似乱数生成装置及び疑似乱数生成プログラム
KR101440680B1 (ko) 중국인 나머지 정리에 기반한 준동형 암복호화 방법 및 이를 이용한 장치
KR102319699B1 (ko) 안티-인버전 함수를 이용한 화이트박스 암호 인코딩 장치 및 방법
JP2015022269A (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
KR101971001B1 (ko) 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
JP2005204128A (ja) 個別鍵生成装置及びプログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5965873B2 (ja) 暗号文生成装置、暗号文生成方法およびプログラム
JP4939305B2 (ja) 暗号/復号装置