JP2006517036A - マスクされたデータを操作する装置及び方法 - Google Patents
マスクされたデータを操作する装置及び方法 Download PDFInfo
- Publication number
- JP2006517036A JP2006517036A JP2006502631A JP2006502631A JP2006517036A JP 2006517036 A JP2006517036 A JP 2006517036A JP 2006502631 A JP2006502631 A JP 2006502631A JP 2006502631 A JP2006502631 A JP 2006502631A JP 2006517036 A JP2006517036 A JP 2006517036A
- Authority
- JP
- Japan
- Prior art keywords
- data
- mask
- representation
- output
- input
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7209—Calculation via subfield, i.e. the subfield being GF(q) with q a prime power, e.g. GF ((2**m)**n) via GF(2**m)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
Abstract
本発明の実施形態は、有限体における第1表現のマスクされたデータを該有限体における第2表現の変換済みデータに変換し、該変換済みデータを操作してマスクされた操作済みデータを取得することによって、データを操作するための方法及び装置を提供する。
Description
本発明は、一般に、有限体における計算に関し、より具体的には、有限体におけるマスクされたデータの操作に関する。
データ操作アルゴリズムは、有限体のデータ要素に逆演算を行うことを含む場合がある。例えば、次世代暗号化標準(AES)は、ラインダール・ブロック暗号アルゴリズム(「ラインダール・アルゴリズム」)を提供するが、これは、例えばバイト、xといったベクトルを含む入力データに関するByteSubビット・レベル演算を含む。ByteSub演算は、暗号化モード及び復号化モードを含む。暗号化モードは、逆演算及びアフィン変換を含み、例えば、A及びbを所定のパラメータとすると、xはAx-1+bに変換される。復号化モードは、アフィン変換と、それに続く逆演算とを含み、例えば、xは(A-1(x+b))-1に変換される。AESによれば、逆演算はガロア体GF(28)全体にわたって行われる。ガロア体は、簡約多項式p(t)=t8+t4+t3+1を用いて、多項式形式で表現される。
GF(28)において逆演算を実装する他の既知のブロック暗号アルゴリズムが存在する。これらのアルゴリズムは、例えば、K.Aokiらによって「Specification of Camellia−a 128−bit Block Cipher」、http://info.isl.ntt.co.jp/camellia/において説明されるCamelia暗号アルゴリズムと、C.H.Leeによって「Zodiac: Block Cipher Proposal」、http://www.safedigm.com/productpds/download/Safedigm_Zodiac.pdfにおいて説明されるZodiac暗号アルゴリズムとを含む。
電力差分解析(DPA)攻撃は、データ操作アルゴリズムの入力と出力との間の関係を用いて、そのアルゴリズムによって実装される秘密鍵を解明することができる。例えばAESアルゴリズムといった操作アルゴリズムをDPA攻撃から保護するために、アルゴリズムを実行する前に、Rで表されるランダム入力マスクを、例えばGF(2)全体にわたって入力ベクトル(例えばバイト)xに加えて、マスクされたデータを取得することができる。ランダム・マスクは、xの長さと等しいビット長を有するランダム・ベクトルを含むことができる。したがって、アルゴリズムは、xではなく和の値x+Rに関して実行され、その結果、攻撃者は、アルゴリズムへの実際の入力値を知ることができない。
アルゴリズムのマスクされていない出力を使用できるようにするために、例えばマスクされたデータに関してアルゴリズムを実行した後で、該マスクを除去することが必要な場合がある。
Trichina, E.らによる「Simplified Adaptive Multiplicative Masking for AES and its Securized Implementation」、CHES2002、において説明される方法は、マスクされた入力ベクトルx+RにRを乗じてxR+R2を取得するステップと、R2をその結果に加えてXRを取得するステップと、XRを逆数にしてX-1R-1を取得するステップと、1をX-1R-1に加えてX-1R-1+1を取得するステップと、Rをその結果に乗じてX-1+Rを取得するステップとを含む。
Trichina, E.らによって説明される方法を用いてAESデータのマスクされた逆演算を行うには、GF(28)全体にわたって、2回の乗算と、1回の平方と、2回の加算とが必要である。こうした逆演算のハードウェア実装は、相対的に複雑であり、及び/又は、電力消費が大きいものとなる場合がある。例えば、ハードウェア実装は、256バイトの大きさを持つ平方ルックアップテーブル(LUT)と、GF(28)における乗算のための2つの乗算回路とを用いることが必要な場合がある。
本発明の実施形態は、マスクされた入力データを第2表現に変換し、第1表現の演算と等価の演算を第2表現で実行して、マスクされた操作済みデータを取得することによって、有限体の第1表現で与えられるマスクされたデータを効率的に操作するための、例えば第1表現で与えられるマスクされた入力データの反転を実行するための方法及び装置を提供する。
本発明の実施形態によれば、マスクされたデータを操作する方法は、第1表現のマスクされた入力データを有限体における第2表現の変換済みデータに変換し、該変換済みデータを操作して、マスクされた操作済みデータを取得するステップを含むことができる。
幾つかの実施形態によれば、本方法はまた、マスクされた入力データの入力マスクを、第2表現の更新済みマスクに変換するステップを含むことができる。変換済みデータを操作するステップは、更新済みマスクを用いて該変換済みデータを操作するステップを含むことができる。
本発明の実施形態によれば、入力データを変換することにより、更新済みマスクによってマスクされた状態の変換済みデータを得ることができる。変換済みデータを操作することにより、更新済みマスクによってマスクされた状態の操作済みデータを得ることができる。
本発明の幾つかの実施形態によれば、変換済みデータを操作するステップは、第1表現の少なくとも1つの所望の演算と等価の少なくとも1つの演算を行うステップを含むことができる。
幾つかの例示的な実施形態によれば、変換済みデータを操作するステップは、該変換済みデータに更新済みマスクを乗じて第1中間データを取得し、該第1中間データに該更新済みマスクの平方を加えて第2中間データを取得し、該第2中間データを反転して第3中間データを取得し、該第3中間データに単位データ・ビットを加えて第4中間データを取得し、該第4中間データに該更新済みマスクを乗じて第2表現のマスクされた反転データを取得するステップを含むことができる。
本発明の幾つかの実施形態によれば、本方法は、操作済みデータを逆変換して、第1表現の逆変換済みデータを取得するステップを含むことができる。操作済みデータを逆変換することにより、入力マスクの線形変換によってマスクされた状態の逆変換済みデータを得ることができる。
本発明の幾つかの実施形態によれば、有限体はガロア体(GF)を含むことができる。
幾つかの例示的な実施形態によれば、第1表現はGF(22s)を含むことができ、第2表現はGF((2s)2)を含むことができる。これらの実施形態の幾つかによれば、sは4と等しいものとすることができ、すなわち、第1表現はGF(28)を含むことができ、第2表現はGF((24)2)を含むことができる。
本発明の幾つかの実施形態によれば、マスクされた入力データを操作するための装置は、第1表現のマスクされた入力データを第2表現の変換済みデータに変換する変換ブロックを含むことができる。変換ブロックは、マスクされた入力データの入力マスクを更新済みマスクに変換することもできる。この装置はまた、第2表現の変換済みデータを操作する操作ブロックと、操作済みデータを変換して第1表現の逆変換済みデータにする逆変換ブロックとを含む。操作ブロックは、第2表現の変換済みデータを反転する反転ブロックを含むことができる。逆変換済みデータは、入力マスクのアフィン変換によってマスクすることができる。
本発明の例示的な実施形態によれば、変換ブロックは、第1表現のマスクされた入力データを変換して、対応する第2表現の変換済みデータにする入力変換モジュールを含むことができる。変換ブロックは、入力マスクを変換して更新済みマスクにするマスク変換モジュールを含むこともできる。幾つかの実施形態によれば、マスク変換モジュールによって行われる入力マスクの変換は、入力変換モジュールによって行われる変換と関連させることができる。
例示的な実施形態によれば、反転ブロックは、入力変換モジュールの出力とマスク変換モジュールの出力とを乗算する第1乗算器と、該マスク変換モジュールの出力の平方を与える平方モジュールとを含むことができる。反転ブロックはまた、平方モジュールの出力を第1乗算器の出力に加える第1加算器と、該第1加算器の出力がゼロでない場合にはゼロ出力値を与えるゼロ検出器と、該ゼロ検出器の出力とマスク変換モジュールの出力との論理ANDに対応する出力を与えるANDゲートとを含むことができる。反転ブロックはさらに、ANDゲートの出力を第1加算器の出力に加える第2加算器と、該第2加算器の出力を反転する反転モジュールと、該反転モジュールの出力に単位値を加える第3加算器と、該第2加算器の出力を用いてマスク変換モジュールの出力を乗算する第2乗算器と、該第2乗算器の出力をANDゲートの出力に加える第4加算器とを含むことができる。
本発明の例示的な実施形態によれば、逆変換ブロックは、第2表現の操作済みデータを逆変換して、対応する第1表現の逆変換済みデータにする出力逆変換モジュールを含むことができる。逆変換ブロックは、更新済みマスクを逆変換するマスク逆変換モジュールを含むこともできる。幾つかの実施形態によれば、マスク逆変換モジュールによって行われる更新済みマスクの逆変換は、出力逆変換モジュールによって行われる変換と関連させることができる。
発明と考えられる対象は、特許請求の範囲において具体的に指摘され、厳密に請求される。しかしながら、本発明は、作動の機構及び方法のいずれに関しても、その目的、特徴、及び利点と併せて、添付図面と共に読んだときに以下の詳細な説明を参照することによって最も良く理解されることになる。
図に示される要素は、説明を簡単かつ明確にするために、必ずしも正確に又は縮尺通りに描かれていないことが分かるであろう。例えば、要素の幾つかの寸法は、明確にするために他の要素に対して強調される場合があるか、又は、幾つかの物理コンポーネントが、1つの要素に含まれる場合がある。さらに、適切であると考えられる場合には、対応する要素又は類似の要素を示すために、参照番号が図面間で繰り返されることがある。これらの図面は、本発明の実施形態の例を提示するものであり、本発明の範囲を制限することを意図していないことが分かるであろう。
以下の詳細な説明においては、本発明が完全に理解されるように、多くの具体的な詳細が記載される。しかしながら、当業者であれば、本発明は、それらの具体的な詳細なしに実施できることが分かるであろう。他の場合においては、本発明を分かり難くしないように、周知の方法、手順、及び要素を詳細に説明していない。
以下の詳細な説明においては、GF(22s)という表記は、モジュロp(t)を取るGF(2)上の複数の多項式で構成されるGF(2)の拡大体としての位数22sのガロア体(GF)表現を指し、ここでp(t)は、GF(2)上の2s次既約多項式である。多項式は、2sビットの文字列によって、GF(22s)表現で表すこともできる。GF(22s)表現の要素uは、2s桁の2進数u=[u2s-1u2s-2...u1u0]によって定めることができ、ここでuiは、対応する多項式、例えばu2s-1t2s-1+u2s-2t2s-2+...u1t+u0におけるtiの係数である。
GF((2s)2)という表記は、モジュロr(t)を取るGF(2s)上の複数の多項式で構成されるGF(2s)の拡大体としての位数22sのGF表現を指し、ここでr(t)は、GF(2s)上の2次既約多項式、すなわち、α及びβがGF(2s)の要素である場合のr(t)=t2+αt+βである。GF(2s)は、モジュロq(t)を取るGF(2)上の複数の多項式で構成されるGF(2)の拡大体として表現され、ここでq(t)は、GF(2)上の2次既約多項式である。GF((2s)2)表現の要素zは、線形多項式z<m>t+z<l>を表す2s桁の二進数z=[z2s-1z2s-2...z1z0]によって定めることができ、ここでz<m>=[z2s-1...zs+1zs]及びz<l>=[zs-1...z1z0]は、モジュロq(t)を取る多項式によって表されるGF(2s)の要素である。
ここで説明される本発明の幾つかの例示的な実施形態は、データを、有限体、例えばGFの2元体表現、例えばGF(22s)表現で参照することができる。しかしながら、当業者であれば、本発明の実施形態は、他のいずれかの表現のデータ、例えばg及びhがいずれかの所望の値を有するGF(gh)表現のデータについて、実施できることが分かるであろう。
所定の有限体のベクトルxを含む入力データをマスクすることは、該所定の有限体からランダムに選択される要素であるRで示される入力ランダム・マスクをxに加えること、すなわち、マスクされた入力データ、例えばx+Rを取得することを含む。
本発明の幾つかの実施形態にしたがってマスクされたデータを操作する方法のフローチャートを概略的に示す図1を参照する。
ブロック102に示されるように、本方法は、例えば入力データ及び入力ランダム・マスクの組み合わせを含む、例えばGFといった所定の有限体における第1表現のマスクされた入力データを、例えば詳細に後述されるように該第1表現のマスクされた入力データに変換演算子を適用することによって変換し、所定の有限体における第2表現のマスクされた変換済みデータにすることを含むことができる。
ブロック104に示されるように、本方法は、第1表現の入力ランダム・マスクを、詳細に後述されるように第2表現の更新済みマスクに変換することを含むことができる。
ブロック106に示されるように、本方法はまた、例えば更新済みマスクを用いて変換済みデータを操作し、詳細に後述されるように第2表現のマスクされた操作済みデータを取得することを含むことができる。
ブロック108に示されるように、本方法はさらに、逆変換演算子を適用することによって操作済みデータを逆変換して第1表現に戻し、詳細に後述されるように第1表現のマスクされた逆変換済みデータを取得することを含むことができる。
ブロック109に示されるように、本方法はまた、例えば後述のように、マスクされた逆変換済みデータのマスクを取ることを含むことができる。
ブロック101に示されるように、本方法はまた、例えば後述のように、入力ランダム・マスクを生成することを含むことができる。
ブロック103に示されるように、本方法はまた、例えば当該技術分野で知られるように入力マスクを入力データに加えることによって、例えば入力マスクを用いて入力データをマスクし、マスクされた入力データを取得することを含むことができる。
本発明の幾つかの実施形態によれば、変換演算子は、第1表現のデータを対応する第2表現のデータに変換するためのいずれかの適切な演算子を含むことができる。幾つかの例示的な実施形態によれば、変換演算子は、例えば、2003年8月6日に出願され、本発明の出願人に譲渡され、開示が引用によりここに組み入れられる「Method and device of manipulating data in Finite Field」という名称の国際特許出願PCT/IL03/00647号において説明されるように、所望の変換に対応する表現変換行列を含むことができる。本発明の幾つかの例示的な実施形態によれば、変換演算子は、後述のように、表現変換行列と、例えば復号化アフィン変換又は暗号化アフィン変換といったアフィン変換との組み合わせを含むことができる。
当該技術分野において知られているように、同じ大きさのいずれか2つの有限体は同型であるため、所定の有限体、例えばGF(2n)の、それぞれRep1及びRep2と表される2つの表現の間に、同型が存在することになる。2つの表現の各々はGF(2)上のn次元の線形空間とすることができ、各々の同型は該表現間の線形変換とすることができる。したがって、本発明の幾つかの実施形態の一部として、例えば行列乗算によりRep1の要素をRep2の対応する要素に変換するために、n×n二進表現変換行列Mを計算することができる。2つの体表現の間の変換は可逆的であるため、各々の表現変換について、表現変換逆行列M-1が存在することができる。根nを持つ既約多項式p0がRep1を表すものとすることができる。p0の各々の根は、GF(2n)の生成器であり、体の同型の下でも不変である。したがって、各々の体の拡大について、n個の対応する表現変換行列が存在する。GF(2n)の乗法群は巡回群であるため、表現Rep1及びRep2の対応するそれぞれの生成器の組は、Rep1とRep2との間の同型を独自のものとして定めることができる。したがって、Rep1の生成器ベクトルr1及びRep2の生成器ベクトルr2について、対応する表現変換行列Mは、Mr1=r2を満足しなければならない。(ri)kは、表現Repiの要素(r1)kを生成するために、表現Repiの体生成器riをk乗することを示し、表現Rep1の体要素(r1)kは、GF(2)上のn次元線形空間におけるベクトルとして扱うことができ、表現変換行列Mを乗じてM(r1)kを与えることができるものとすると、2つの体表現が同型であり、r1及びr2がGF(2n)の生成器であるため、Mはあらゆるk(k=1...2n)について以下の方程式系、
M(r1)k=(r2)k (1)
を満足しなければならない。
M(r1)k=(r2)k (1)
を満足しなければならない。
方程式系1は2n線形方程式を含み、それを解いて、生成器r1及びr2の組に対応する表現変換行列Mを求めることができる。方程式系1は、計算数を減らすために無視することができる冗長方程式を含むことがある。例えば、最初のn個の方程式のみを用いて、1つの表現変換行列を与えることができる。生成器r1及びr2の異なる組を用いる方程式系1の解によって、別の表現変換行列を与えることができる。したがって、各々がr1の「像」を定めるRep2のn個の異なる生成器に対応するn個の異なる方程式系が存在し、それによって、Rep1からRep2へのn個の異なる表現変換行列が与えられることになる。
本発明の例示的な実施形態においては、GF(28)上の既約多項式、例えばp(t)=t8+t4+t3+t+1の各々の根は、GF(28)体の生成器とすることができる。したがって、既約多項式の8つの根にそれぞれ対応する8つの可能な表現変換行列を、GF(28)の各々の拡大体について計算することができる。GF(2)上のGF(24)の多項式表現は、GF(24)上の3つの既約簡約多項式、例えば1+t+t4、1+t3+t4、1+t+t2+t3+t4の各々によって定めることができる。GF(28)におけるGF(24)の1つ又はそれ以上の多項式表現の体拡大は、既約拡大多項式、例えばβ及びαがGF(24)の要素でありGF(24)上で既約であるようなt2+αt+β型の多項式を用いて、計算することができる。本発明の例示的な実施形態によれば、t2+αt+β形式の120個の可能な既約拡大多項式を与える15個の異なるβ値及び8個の異なるα値が存在する。3個の異なる簡約多項式及び120個の既約拡大多項式によって、GF(2)の拡大体としてGF(28)の360個の異なるGF((24)2)表現が得られる。したがって、これらの例示的な実施形態によれば、360個の体拡大に対応して、2880個の可能な表現変換行列が存在することになる。本発明の幾つかの実施形態によれば、可能な表現変換行列の各々は、標準的なAES表現から、GF(24)の異なる拡大に対応するGF(28)の異なるGF((24)2)表現への変換を可能にする。したがって、表現変換行列Mは、例えば選択されたMに対応するハードウェア実装の複雑性といったいずれかの所望の基準に従って、あらかじめ選択することができる。
第1表現のベクトルxを含む入力データは、表現変換、例えば表現変換行列Mを適用することによって、第2表現に変換することができる。第2表現のT(x)で表される演算x>x-1を、変換済みデータ、例えばM・xに対して実行することができる。表現変換の逆数、例えばM-1を適用することによって、操作済みデータを第1表現に戻す逆変換F(x)を取得することができる。したがって、本発明の例示的な実施形態によれば、以下の非線形方程式、
F(x)=M-1・T(M・x) (2)
によって、F(x)及びT(M・x)を与えることができる。
F(x)=M-1・T(M・x) (2)
によって、F(x)及びT(M・x)を与えることができる。
本発明の例示的な実施形態によれば、第1表現のマスクされた入力データx+Rは、第2表現の変換済みデータMx+MRに変換することができる。上述のように、第1表現と第2表現との間の変換は反転可能な変換であるため、表現変換行列Mは正則行列である。したがって、MRは、Rに対応して、有限体のいずれかの非ゼロ値を取ることができる。したがってまた、変換済みデータMx+MRは、マスクが更新済みマスク、例えばMRを含むものとした場合、マスクされた変換済みデータを含むことができる。
本発明の例示的な実施形態によれば、入力マスクRは非ゼロ値を取ることができる。非ゼロのランダム・マスクを取得するために、例えば後述するようないずれかの適切な非ゼロのランダム・マスク生成器を実装することができる。
本発明の幾つかの例示的な実施形態によれば、変換済みデータを操作することは、例えば後述するように変換済みデータを反転することを含むことができる。変換済みデータを反転することは、例えば後述するように、更新済みマスクを用いることを含むことができる。
本発明の例示的な実施形態によれば、マスクされた変換済みデータを反転することは、変換済みデータ、例えばMx+MRに更新済みマスクMRを乗じて、第1中間データ、例えばMxMR+(MR)2を取得することを含むことができる。マスクされた変換済みデータを反転することはまた、更新済みマスクの平方、例えば(MR)2を第1中間データに加えて、第2中間データ、例えばMxMRを取得することを含むことができる。変換済みデータを反転することはさらに、第2中間データMx+MRを反転して、第3中間データ、例えば(MxMR)-1を取得することを含むことができる。変換済みデータを反転することはさらに、単位データ・ビットすなわち1を第3中間データに加えて、第4中間データ、例えば(MxMR)-1+1を取得することを含むことができる。変換済みデータを反転することはさらに、第4中間データに更新済みマスクMRを乗じて、第2表現のマスクされた反転済みデータ、例えば(Mx)-1+MRを取得することを含むことができる。加算、乗算、及び/又は反転といった演算の少なくとも幾つかは、第2表現で行うことができる。第2表現の演算は、例えば後述のように、いずれかの適切な回路及び/又はルックアップテーブル(LUT)によって実装することができる。
本発明の幾つかの実施形態によれば、逆変換演算子は、第2表現のデータを逆変換して、対応する第1表現のデータに戻すためのいずれかの適切な演算子を含むことができる。本発明の例示的な実施形態によれば、逆変換演算子は、上述のように、行列M-1による乗算を含むことができる。逆変換演算子を適用した結果は、方程式2、例えばM-1[(Mx)-1]=x-1に従って計算できることが分かるであろう。したがって、第1表現のマスクされた反転済みデータ、例えばx-1+Rは、第2表現のマスクされた反転済みデータ、例えば(Mx)-1+MRに逆変換演算子を適用することによって取得することができる。本発明の幾つかの例示的な実施形態によれば、逆変換演算子は、行列M-1と、例えば後述のようなアフィン変換、例えば復号化アフィン変換又は暗号化アフィン変換との組み合わせを含むことができる。
図2を参照すると、本発明の幾つかの例示的な実施形態にしたがって、マスクされたデータを操作するための装置200の回路実装が概略的に示される。
本発明の例示的な実施形態によれば、装置200は、第1表現のマスクされた入力データを対応する第2表現のマスクされたデータに変換する変換ブロック202を含むことができる。ブロック202は、マスクRを第2表現の更新済みマスクに変換するように構成することもできる。装置200はまた、第2表現の変換済みデータを操作、例えば反転する操作ブロック、例えば反転ブロック204と、操作済みデータを逆変換して第1表現の逆変換済みデータにする逆変換ブロック206とを含むことができる。
本発明の例示的な実施形態によれば、ブロック202は、第1表現のマスクされた入力データx+Rを対応する第2表現の変換済みデータに変換する入力変換モジュール208を含むことができる。ブロック202はまた、入力マスクRを更新済みマスクに変換するマスク変換モジュール210を含むことができる。変換済みのマスクされたデータに関連する更新済みマスクを取得するために、モジュール210によって行われるマスクの変換を、例えば後述のように、モジュール208によって行われる変換と関連させることができる。モジュール208及び/又はモジュール210は、例えば後述のように、第1表現のデータを変換して対応する第2表現のデータにするいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。当業者であれば、本発明の幾つかの他の実施形態にしたがって、モジュール208及び210を、例えばマスクされた入力データ及び入力マスクを逐次的に変換する1つの複合変換モジュールの形で実装できることが分かるであろう。
本発明の例示的な実施形態によれば、ブロック204は、モジュール208の出力226及びモジュール210の出力228と関連する第1乗算器212を含むことができる。ブロック204はまた、出力228と関連する平方モジュール214と、該モジュール214の出力230及び乗算器212の出力232と関連する第1加算器216とを含むことができる。ブロック204はさらに、加算器216の出力234と関連する反転モジュール218と、モジュール218の出力236と関連し、単位値すなわち値1を持つ信号を受信する入力240を有する第2加算器220とを含むことができる。ブロック204はさらに、出力228及び加算器220の出力242と関連する第2乗算器222を含むことができる。乗算器212及び/又は乗算器222は、例えば後述のように、第2表現を用いて第1表現の2つの要素を乗じるいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。ユニット214は、例えば後述のように、第2表現を用いて第1表現の1つの要素の平方を与えるいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。反転モジュール218は、例えば後述のように、第2表現を用いて第1表現のデータを反転するいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。加算器216及び220は、2つの要素の加算を実施するいずれかのソフトウェア及び/又はハードウェアを含むことができる。例えば、加算器216及び/又は加算器220は、当該技術分野において知られているように、XORゲートを含むことができる。
本発明の例示的な実施形態によれば、ブロック206は、ブロック204の出力243と関連する逆変換モジュール224を含むことができる。モジュール224は、例えば後述のように、第2表現のデータを逆変換して対応する第1表現の逆変換済みデータにするいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。
本発明の例示的な実施形態によれば、モジュール208、210、及び/又は224は、それぞれ、Mによる乗算、Mによる乗算、及びM-1による乗算を実行する、例えば後述のような乗算器を含むことができる。したがって、出力226はMx+MRに対応する値を取ることができ、出力228はMRに対応する値を取ることができる。したがって、出力243は(Mx)-1+MRに対応する値を取ることができ、ブロック206の出力244は、x-1+Rに対応する値を取ることができる。この実施形態によれば、ブロック202及び204の出力は、更新済みマスクMRによってマスクすることができ、ブロック206の出力は、入力マスクRによってマスクすることができる。このように、ブロック202、204、及び206の出力は、入力マスク又は更新済みマスクのいずれかによってマスクできることが分かるであろう。
例示的な実施形態によれば、装置200は、少なくとも2つのXORゲート216及び220と、第2表現の2つの乗算回路212及び222と、第2表現の1つの平方回路又はLUT214と、例えば後述のように、n×nビット行列、例えばMにベクトルを乗じるための3つの乗算回路208、210、及び224とを含むことができる。
当業者であれば、本発明の実施形態にしたがってマスクされたデータを操作するための装置、例えば装置200のハードウェア実装を、従来型のマスク反転装置と比べてより単純なものにし、したがってより小型にできることが分かるであろう。例えば、第1表現がGF(22s)表現を含み、第2表現がGF((2s)2)表現を含む場合には、第2表現の平方LUTは、2ssビットを含むことができる。本発明の実施形態によれば、平方LUTのビットサイズは、第1表現の平方LUTのビットサイズ、例えば22s+1sと比べて、より小さなものとすることができる。さらに、従来型のマスク反転装置は、第1表現の乗算を行う乗算回路を実装することが必要な場合がある。これらの回路は、本発明の実施形態によって実装される乗算器と比べてより複雑な場合がある。
幾つかの例示的な実施形態によれば、上述の方法及び/又は装置は、後述のように、例えばマスクされたAES S−box暗号化/復号化演算を行うことによって、マスクされた入力データx+Rを暗号化及び/又は復号化するために、実装することができる。
分かりやすくするために、本発明の幾つかの実施形態の説明の一部として、データを暗号化する装置及び/又は方法に対して言及する場合があるが、本発明の範囲はこの点に限定されるものではない。本発明のさらなる実施形態は、データを復号化する装置及び/又は方法を参照して説明することができる。しかしながら、当業者であれば、暗号化装置、復号化装置、及び/又は、暗号化と復号化の両方を組み合わせた装置を実装するために、ここで説明される本発明の方法及び/又は装置をどのように修正し、及び/又は、適用すべきかが明らかであろう。特に指定のない限り、ここで説明される方法及び装置の原理は、いずれかのこうした修正及び/又は適用と併せて実装されるように意図される。
本発明の幾つかの例示的な実施形態においては、sは4に等しい。これらの実施形態は、GF(28)表現のデータをGF((24)2)表現に変換するのに有用である。
分かりやすくするために、本発明の幾つかの実施形態の説明は、sが4に等しい、すなわちGF(28)表現のデータをGF((24)2)表現に変換するための方法及び/又は装置に関するものであるが、本発明の範囲はこの点に限定されるものではない。しかしながら、当業者であれば、他のいずれかの適切なsの値について、ここで説明される方法及び/又は装置をどのように適宜に修正すべきかが明らかであろう。
本発明の幾つかの実施形態の説明の一部として、本方法及び/又は装置は、様々な組み合わせ及び形態で実装することができる。本発明の例示的な実施形態によれば、暗号化を行う暗号化ブロック、及び/又は、復号化を行う復号化ブロックは、例えばスマートカードに用いることができるタイプの組み込み電気回路に実装することができる。AES GF(28)表現からGF((24)2)に、及びGF((24)2)からGF(28)に、データを変換するために用いることができる変換演算子は、例えばスマートカードに事前プログラムすることができる。付加的又は代替的に、他の構成を用いることができる。
従来型のAES S−boxは、以下の方程式、
に従ってアフィン変換を行うことができ、ここで、当該技術分野において知られているように、sbox[x]は暗号化に関する変換を表し、sbox-1[x]は復号化に関する変換を表し、A及びbはAES S−boxパラメータ行列である。
に従ってアフィン変換を行うことができ、ここで、当該技術分野において知られているように、sbox[x]は暗号化に関する変換を表し、sbox-1[x]は復号化に関する変換を表し、A及びbはAES S−boxパラメータ行列である。
したがって、本発明の実施形態によれば、方程式2をそれぞれ方程式3及び4に代入し、両方程式においてxを(x+R)と置き換えることによって、マスクされたデータx+Rを第2表現に変換し、第2表現で演算を行い、得られたデータを対応する第1表現、例えばAES表現に逆変換するための以下の修正方程式を取得することができる。
本発明の幾つかの実施形態に従って、変換回路又はソフトウェアは、表現変換行列Mを実装する回路を含むことができる。こうした実施形態の幾つかによれば、表現変換行列Mを実装する回路又はソフトウェアは、線形変換例えばAを実装する回路又はソフトウェアと組み合わせことができる。本発明のさらなる実施形態によれば、変換回路又はソフトウェアは、それぞれAM-1、MA-1、M、及びM-1によって乗算するための、例えば後述のような4つの乗算モジュールを含むことができる。このように、変換回路は、アフィン変換、例えばAによる乗算及び/又はbの加算の適用と、所定の表現変換、例えばMによる乗算の適用との組み合わせで構成することができる。こうした演算モジュールの使用により、変換回路の効率を向上させることができる。
行列乗算のハードウェア実装は、当該技術分野において知られているように、いずれかの行列乗算のハードウェア実装を含むことができる。例えば、i=1...nであり、Dが固定されたn×nの二値行列であるとすると、y=Dxによって定められるブロックyの値yiは、以下の方程式、
を用いて計算することができる。
を用いて計算することができる。
このように、yの値は、方程式7を用いて計算することができる。これは、行Diのどの要素が非ゼロであるかを求め、対応するxjの値のXOR演算を行うことによって、達成することができる。
本発明の例示的な実施形態によれば、AES演算と等価の演算、例えば、逆演算、加算演算、及び/又は乗算演算は、後述のように、第2表現、例えばGF((24)2)表現で定めることができる。
GF(28)の要素xは、八桁の二進数x=[x7x6x5x4x3x2x1x0]によって定めることができ、GF(24)の要素zは、四桁の二進数z=[z3z2z1z0]によって定めることができる。
当該技術分野において知られているように、GF(24)は、GF(2)上の簡約多項式によって定められる多項式表現を持つことができ、例えばz=[z3z2z1z0]は、多項式z0+z1t+z2t2+z3t3によって表すことができる。GFにおける要素の乗算は、該要素を表す多項式を乗算し、その結果のモジュロを簡約多項式に約分することによって定めることができる。
本発明の実施形態によれば、GF(28)のビット・オクテットz=[z7z6z5z4z3z2z1z0]は、線形多項式z<m>t+z<l>と相似のものとすることができ、ここで、z<m>=[z7z6z5z4]及びz<l>=[z3z2z1z0]はGF(24)の要素である。したがって、第2表現は、GF(24)の要素z<m>及びz<l>を含むことができる。
本発明の幾つかの実施形態の一部として、第2表現の乗算演算及び加算演算は、GF(24)における演算に関して定めることができる。以下に与えられるのは、GF(24)上の演算に関する、第2表現の乗算及び加算の1つの可能な定義である。本発明の幾つかの実施形態の一部として、他の定義を用いることもできることが分かるであろう。
第1表現の2つの要素、例えばa,d∈GF(28)の、第2表現での加算及び減算は、当該技術分野において知られているように、該2つの要素のビット単位のXORとして定めることができる。2つの要素a及びdの積は、多項式の積(a<m>t+a<l>)×(d<m>t+d<l>)mod(t2+αt+β)として定めることができ、ここで多項式の係数の乗算及び加算は、所与の表現を用いるGF(24)上の演算によって定めることができる。したがって、要素a及びdの積は、以下の方程式、
(a<m>t+a<l>)×(d<m>t+d<l>)(mod t2+αt+β)=
(a<l>d<m>−a<m>d<m>α+a<m>d<l>)t−a<m>d<m>β+a<l>d<l>≡r<m>t+r<l> (8)
を用いて計算することができ、ここで、
(a<l>d<m>−a<m>d<m>α+a<m>d<l>)≡r<m>≡[r7r6r5r4]
a<m>d<m>β+a<l>d<l>≡r<l>≡[r3r2r1r0] (9)
である。
(a<m>t+a<l>)×(d<m>t+d<l>)(mod t2+αt+β)=
(a<l>d<m>−a<m>d<m>α+a<m>d<l>)t−a<m>d<m>β+a<l>d<l>≡r<m>t+r<l> (8)
を用いて計算することができ、ここで、
(a<l>d<m>−a<m>d<m>α+a<m>d<l>)≡r<m>≡[r7r6r5r4]
a<m>d<m>β+a<l>d<l>≡r<l>≡[r3r2r1r0] (9)
である。
したがって、AES表現すなわちGF(28)表現の要素a及びdの積は、r=[r7r6r5r4r3r2r1r0]と定めることができる。このように、AES表現の要素a及びdの積は、例えば方程式の組9に従い、GF(24)上の一連の加算演算及び乗算演算を用いて計算することができる。当業者であれば、GF(24)においてマイナス記号とプラス記号とは置換可能であることが分かるであろう。したがって、方程式の組9の第1式のマイナス記号は、例えば後述のように、プラス記号と置き換えることができる。
図3Aを参照すると、本発明の幾つかの例示的な実施形態にしたがって、乗算器302の回路実装が概略的に示される。
乗算器302は、2つのGF(24)要素を乗じるための乗算ユニット304、306、及び316と、2つのGF(24)要素を乗じ、該2つの要素の積にβを乗じるためのβ乗算ユニット308とを含むことができる。ユニット304、306、308、及び316は、例えば後述のように、2つのGF(24)要素の乗算を行うためのいずれかの適切なLUT及び/又は回路を含むことができる。当該技術分野において知られているように、乗算器302はまた、XORゲート310、312、及び314を含むことができる。
AES表現の要素aの平方は、方程式の組9にa=dを代入することによって計算することができる。例えば上述のように方程式の組9の第1式のマイナス記号をプラス記号で置き換えた場合には、以下の方程式の組、
2a<l>a<m>+a<m> 2α≡r<m>≡[r7r6r5r4]
a<m> 2β+a<l> 2≡r<l>≡[r3r2r1r0] (10)
を用いることができる。
2a<l>a<m>+a<m> 2α≡r<m>≡[r7r6r5r4]
a<m> 2β+a<l> 2≡r<l>≡[r3r2r1r0] (10)
を用いることができる。
図3Bを参照すると、本発明の幾つかの例示的な実施形態にしたがって、平方ユニット320の回路実装が概略的に示される。
平方ユニット320は、GF(24)要素の平方に対応する値をそれぞれが含むLUT322及び324と、GF(24)要素の平方にβを乗じたものに対応する値を含むLUT326とを含むことができる。LUT322、324、及び326は、例えば後述のように、いずれかの適切なLUTを含むことができる。平方ユニット320はまた、当該技術分野において知られているXORゲート328を含むことができる。
データ要素(x<m>x+x<l>)x=(a<m>t+a<l>)の逆数x-1=(c<m>t+c<l>)を求めるには、以下の方程式の組、
0x+1=(c<m>t+c<l>)×(a<m>t+a<l>)=
0x+1=(c<m>t+c<l>)×(a<m>t+a<l>)mod(t2+αt+β)=
0x+1=(c<m>a<m>α+c<m>a<l>+c<l>a<m>)t+c<l>a<l>+c<m>a<m>β (11)
を解くことが必要になる。
0x+1=(c<m>t+c<l>)×(a<m>t+a<l>)=
0x+1=(c<m>t+c<l>)×(a<m>t+a<l>)mod(t2+αt+β)=
0x+1=(c<m>a<m>α+c<m>a<l>+c<l>a<m>)t+c<l>a<l>+c<m>a<m>β (11)
を解くことが必要になる。
方程式の組11は、GF(2)上の以下の線形方程式系、
c<m>=a<m>(a2 <m>β+a2 <l>+a<l>a<m>α)-1
c<l>=(a<l>+a<m>α)(a2 <m>β+a2 <l>+a<l>a<m>α)-1 (12)
に変換することができる。
c<m>=a<m>(a2 <m>β+a2 <l>+a<l>a<m>α)-1
c<l>=(a<l>+a<m>α)(a2 <m>β+a2 <l>+a<l>a<m>α)-1 (12)
に変換することができる。
したがって、データ要素xの逆数x-1を計算するために、上述のように、C<m>及びC<l>の値を計算することができる。このように、AES表現の要素xの逆数は、方程式の組12に従って、GF(24)上の一連の加算演算、乗算演算、平方演算、及び逆演算を用いて計算することができる。
図3Cを参照すると、本発明の幾つかの例示的な実施形態にしたがって、反転モジュール330の回路実装が概略的に示される。
反転モジュール330は、例えば後述のように、2つのGF(24)要素を乗じるための乗算ユニット334、342、及び346を含むことができる。モジュール330はまた、例えば後述のように、GF(24)要素の平方に対応する値を含む平方LUT331と、GF(24)要素の平方にβを乗じたもの対応する値を含むβ平方LUT332とを含むことができる。モジュール330はさらに、例えば後述のように、GF(24)要素の逆数に対応する値を含む反転LUT344を含むことができる。モジュール330はまた、当該技術分野において知られているように、XORゲート340及び338を含むことができる。
本発明の実施形態によれば、GF(24)上の乗算は、後述のように、GF(24)乗算器を定め、各々の場合について適切な乗算器を選択することによって、より効率的に行うことができる。
これらの例示的な実施形態によれば、GF(24)の2つの要素、例えばa=[a3,a2,a1,a0]及びd=[d3,d2,d1,d0]の、GF(24)上の乗算a×d=[a3,a2,a1,a0]×[d3,d2,d1,d0]は、例えば上述のように、所与の簡約多項式について、一連のビット単位の演算、例えば加算(XOR)及び乗算(AND)として定めることができる。したがって、例えば、2つの要素の乗算の解は、以下のようになる。
簡約多項式:t4+t+1
[a3,a2,a1,a0]*[d3,d2,d1,d0]=
[a1d2+a3d3+a3d0+a2d1+a0d3,a2d3+a0d2+a3d3+a2d0+a1d1+d2a3,a1d3+d2a3+a0d1+a2d2+a2d3+a1d0+a3d1,a0d0+a1d3+a2d2+a3d1]
簡約多項式:t4+t3+1
[a3,a2,a1,a0]*[d3,d2,d1,d0]=
[a0d3+a1d3+a3d2+a2d3+a3d1+a2d1+a1d2+a3d3+a3d0+a2d2,a0d2+a3d3+a1d1+a2d0,a0d1+a3d2+a3d3+a1d0+a2d3,a1d3+a0d0+a2d3+a3d2+a2d2+a3d1+a3d3]
簡約多項式:t4+t3+t2+t+1
[a3,a2,a1,a0]*[d3,d2,d1,d0]=
[a2d1+a3d0+a3d1+a1d2+a1d3+a2d2+a0d3,a3d1+a2d2+a1d1+a2d0+a0d2+a1d3,a0d1+a1d3+a1d0+a3d1+a3d3+a2d2,a3d2+a1d3+a0d0+a2d3+a2d2+a3d1]
簡約多項式:t4+t+1
[a3,a2,a1,a0]*[d3,d2,d1,d0]=
[a1d2+a3d3+a3d0+a2d1+a0d3,a2d3+a0d2+a3d3+a2d0+a1d1+d2a3,a1d3+d2a3+a0d1+a2d2+a2d3+a1d0+a3d1,a0d0+a1d3+a2d2+a3d1]
簡約多項式:t4+t3+1
[a3,a2,a1,a0]*[d3,d2,d1,d0]=
[a0d3+a1d3+a3d2+a2d3+a3d1+a2d1+a1d2+a3d3+a3d0+a2d2,a0d2+a3d3+a1d1+a2d0,a0d1+a3d2+a3d3+a1d0+a2d3,a1d3+a0d0+a2d3+a3d2+a2d2+a3d1+a3d3]
簡約多項式:t4+t3+t2+t+1
[a3,a2,a1,a0]*[d3,d2,d1,d0]=
[a2d1+a3d0+a3d1+a1d2+a1d3+a2d2+a0d3,a3d1+a2d2+a1d1+a2d0+a0d2+a1d3,a0d1+a1d3+a1d0+a3d1+a3d3+a2d2,a3d2+a1d3+a0d0+a2d3+a2d2+a3d1]
解の各々における要素の乗算の幾つかは、2つ又はそれ以上の出力ビットについて類似となる場合があることに注意されたい。例えば、上に挙げた解の中に二度現れる式a1d3+a2d2+a3d1は、ハードウェア要件を最小にするために、例えばXORゲート及びANDゲートを用いて一度だけ計算することができる。当業者であれば、上述の3つの二次簡約多項式の各々を使用する、GF(24)における2つの要素の乗算の解を用いて、二次簡約多項式の各々についてGF(24)乗算器を構成できることが分かるであろう。こうした乗算器は、当該技術分野において知られているハードウェア及び/又はソフトウェアに実装することができる。所与の表現変換行列について、適切なGF(24)乗算器を構成することができる。上述のように、各々の表現変換行列は、拡大多項式と組み合わせて、GF(24)上の3つの既約簡約多項式のうちの1つによって定めることができるため、GF(24)乗算器はあらかじめ決定することができる。当業者であれば、本発明の例示的な実施形態にしたがって、付加的に又は代替的にGF(24)乗算器の他の適切な実装を使用できることが分かるであろう。
GF(24)において、INVと表示される反転と、SQRと表示される平方とは、例えば、16ニブルといった8バイトのサイズを各々が持つ比較的小さな2つの個別のルックアップテーブル(LUT)によって実装することができる。本発明の幾つかの実施形態によれば、係数βはあらかじめ決定することができる。したがって、要素g∈GF(24)についての値β×g2を、βSQRと表示することができる8バイトLUTに格納し、方程式の組12を計算するのに必要な計算の組から1つの乗算をなくすようにすることができる。代替的な実施形態によれば、GF(24)のSQR、INV、及び/又はβSQRは、当該技術分野において知られているように、いずれかの適切な回路によって実装することができる。例えば、上述のように、2つの要素の乗算の解にa=dを代入することによって、SQR回路を実装することができる。したがって、例えば、SQR回路は、α=1について以下の解を実装することができる。
簡約多項式:t4+t+1
[a3,a2,a1,a0]2=[a3,a1+a3,a2,a0+a2]
簡約多項式:t4+t3+1
[a3,a2,a1,a0]2=[a2+a3,a1+a3,a3,a0+a2+a3]
簡約多項式:t4+t3+t2+t+1
[a3,a2,a1,a0]2=[a2,a1+a2,a2+a3,a0+a2]
簡約多項式:t4+t+1
[a3,a2,a1,a0]2=[a3,a1+a3,a2,a0+a2]
簡約多項式:t4+t3+1
[a3,a2,a1,a0]2=[a2+a3,a1+a3,a3,a0+a2+a3]
簡約多項式:t4+t3+t2+t+1
[a3,a2,a1,a0]2=[a2,a1+a2,a2+a3,a0+a2]
本発明の実施形態の回路実装は、対応するLUT実装よりコンパクトにできることに留意されたい。しかしながら、幾つかのS−box実装において、LUTがより効率的なデータ処理を提供することができる。
図4を参照すると、本発明の幾つかの例示的な実施形態にしたがって、マスクされたデータを暗号化/復号化するのためのAES互換装置400の回路実装を概略的に示す。
本発明の例示的な実施形態によれば、装置400は、入力変換ブロック412と、操作ブロック、例えば反転ブロック414と、出力逆変換ブロック416とを含むことができる。装置400は、後述のように、暗号化演算モード及び/又は復号化演算モードを持つことができる。
本発明の例示的な実施形態によれば、ブロック412は、GF(28)表現などのAES表現の、例えばx+Rの32ビット列ベクトルに対応するマスクされた入力データ信号438を受信し、このデータをGF((24)2)表現のデータに変換するための入力変換モジュール418を含むことができる。復号化演算モードにおいては、変換モジュール418は、例えば上記の方程式6に従って、x+Rに復号化アフィン変換を適用することもできる。したがって、例えば、モジュール418の出力信号440は、xt+Rtの値に対応する値を持つことができ、ここで、暗号化演算モードではxt=Mx及びRt=MRであり、復号化演算モードではxt=MA-1x+MA-1b及びRt=MA-1Rである。
ブロック412はまた、入力マスクRを更新済みマスクに変換するマスク変換モジュール420を含むことができる。マスクされた変換済みデータに対応する更新済みマスクを取得するために、モジュール420によって行われるマスクの変換は、モジュール418によって行われる線形変換に対応する線形変換を含むことができる。例えば、暗号化演算モードにおいては、変換モジュール420は、RにMを乗じてMRを取得することができる。復号化演算モードにおいては、変換モジュール420は、RにMA-1を乗じてMA-1Rを取得することができる。
モジュール418及び/又はモジュール420は、第1表現のデータを対応する第2表現のデータに変換し、及び/又は、例えば後述のようにアフィン変換を行うためのいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。
図5Aを参照すると、本発明の幾つかの例示的な実施形態にしたがって、入力変換モジュール500の回路実装が概略的に示される。
例示的な実施形態によれば、モジュール500は、x+RとMとの乗算を実施する乗算器506を含むことができる。モジュール500はまた、x+RとbとのXOR演算を実施するXORゲート508と、XORゲート508の出力518とMA-1との乗算を実施する乗算器510とを含むことができる。乗算器506及び/又は510は、例えば上述のように、n×n行列にベクトルを乗じるためのいずれかの適切な乗算器を含むことができる。モジュール500はまた、例えば乗算器506の出力信号514と乗算器510の出力信号516とを選択することによって、暗号化演算モードと復号化演算モードとの間で選択を行う、当該技術分野で既知のマルチプレクサ512を含むことができる。
図5Bを参照すると、本発明の幾つかの例示的な実施形態にしたがって、マスク変換モジュール530の回路実装が概略的に示される。
例示的な実施形態によれば、モジュール530は、RとMとの乗算を実施する乗算器532を含むことができる。モジュール530はまた、RとMA-1との乗算を実施する乗算器534を含むことができる。乗算器532及び/又は534は、例えば上述のように、n×n行列にベクトルを乗じるためのいずれかの適切な乗算器を含むことができる。モジュール530はまた、例えば乗算器532の出力信号533と乗算器534の出力信号535とを選択することによって、暗号化演算モードと復号化演算モードとの間で選択を行う、当該技術分野で既知のマルチプレクサ536を含むことができる。
再び図4を参照すると、反転ブロック414は、第2表現の変換済みデータを反転するいずれかの回路及び/又はLUT、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。
本発明の例示的な実施形態によれば、ブロック414は、信号440及び信号442を受信し、例えば値(xt+Rt)Rtに対応する信号471を与えるための第1乗算器470を含むことができる。ブロック414はまた、信号442を受信し、例えばRt 2の値に対応する信号473を与える平方ユニット472と、信号471及び信号473を受信し、例えばxtRtの値に対応する信号475を与える第1加算器474とを含むことができる。ブロック414はさらに、信号475を受信して、例えば、xtRt?0の場合にはゼロ値を持ち、xtRt=0の場合には非ゼロ値、例えば1を持つ信号を与えるためのゼロ検出(ZD)モジュール480を含むことができる。ブロック414はまた、信号442及び信号481を受信して信号483を与えるための、例えば当該技術分野で既知のANDゲート482を含むことができる。例えば、信号483は、xtRt?0の場合にはゼロ値を持ち、xtRt=0の場合には非ゼロ値、例えばRtを持つことができる。ブロック414はさらに、信号475及び信号483を受信して、例えば、xtRt?0の場合にはxtRtの値に対応し、xtRt=0の場合にはRtの値に対応する信号485を与えるための第2加算器476を含むことができる。ブロック414はさらに、信号485を受信して、例えば、xtRt?0の場合には(xtRt)-1の値に対応し、xtRt=0の場合にはRt -1の値に対応する信号487を与えるための反転モジュール478と、信号487及び単位値すなわち値1を持つ信号を受信して、例えば、xtRt?0の場合は(xtRt)-1+1の値に対応し、xtRt=0の場合にはRt -1+1の値に対応する信号489を与えるための第3加算器479とを含むことができる。ブロック414はさらに、信号442及び信号489を受信し、例えば、xtRt?0の場合にはxt -1+Rtの値に対応し、xtRt=0の場合には1+Rtの値に対応する信号491を与えるための第2乗算器486を含むことができる。ブロック414はさらに、信号491及び483を受信し、例えば、xtRt?0の場合にはxt -1+Rtの値に対応し、xtRt=0の場合にはRtの値に対応する信号444を与えるための第4加算器484を含むことができる。乗算器470及び/又は乗算器486は、例えば上述のように、第2表現を用いて第1表現の2つの要素を乗じるいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。ユニット472は、例えば上述のように、第2表現を用いて第1表現の2つの要素を平方するいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。反転モジュール478は、例えば上述のように、第2表現を用いて第1表現のデータを反転するいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。加算器474、加算器476、加算器479、及び/又は加算器484は、2つの要素の加算を実行するいずれかのソフトウェア及び/又はハードウェアを含むことができる。例えば、加算器474、加算器476、加算器479、及び/又は加算器484は、当該技術分野で既知のXORゲートを含むことができる。モジュール480は、例えば、信号481の論理NOTと、それに続く論理ANDとを実行するいずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。
これらの例示的な実施形態によれば、反転モジュール478への入力すなわち信号485は、例えばxtRt=0であってもRt?0であるため、非ゼロ値を持つ。したがって、ゼロ入力、すなわちxt=0は、例えば反転モジュールへの入力がゼロではないマスク値、例えばRtを持つように、ブロック414によってマスクされる。
したがって、当業者であれば、反転ブロック414を実装して、AES装置上での、例えばゼロ入力を用いるDPA攻撃を阻止できることが分かるであろう。
本発明の他の実施形態によれば、ブロック414は、他のいずれかの適切な構成、例えば図2を参照して上述したような反転ブロック204の構成に類似の構成を含むことができる。
上述の例示的な実施形態によれば、信号444は、例えば、上述のように、暗号化演算モードにおける(MX)-1+MR)に対応する値と、復号化演算モートにおける((MA)-1(x+b)-1+MA-1R)に対応する値とを持つことができる。
本発明の例示的な実施形態によれば、ブロック416は、第2表現、例えばGF((24)2)表現のブロック414の出力、例えば信号444を受信し、このデータを逆変換して、例えばGF(28)といった第1表現の逆変換済みデータにするための出力逆変換モジュール424を含むことができる。暗号化演算モードにおいては、変換モジュール424は、例えば上記の方程式7に従って暗号化アフィン変換を適用することもできる。したがって、例えば、モジュール424の出力信号434はx’+R’に対応する値を持つことができ、ここで、暗号化演算モードにおいてはx’=Ax-1+b及びR’=ARであり、復号化演算モードにおいてはx’=A-1(x+b)-1及びR’=A-1Rである。これらの実施形態によれば、R’はマスクRの標準的な線形変換に対応するものとすることができるため、R’をマスクとして用いることができる。
ブロック416はまた、更新済みマスクを逆変換するマスク逆変換モジュール422を含むことができる。データの逆変換に対応して更新済みマスクを逆変換するために、モジュール422によって行われる逆変換は、モジュール420によって行われる線形変換に対応する線形変換を含むことができる。例えば、復号化演算モードにおいては、逆変換モジュール422は、A-1MRにM-1を乗じてA-1Rを取得することができる。暗号化演算モードにおいては、逆変換モジュール422は、MRにAM-1を乗じてARを取得することができる。したがって、出力マスク信号432は、R’に対応する値を含むことができる。モジュール422及び/又は424は、第1表現のデータを対応する第2表現のデータに変換し、及び/又は、例えば後述のようなアフィン変換を行うための、いずれかの回路、ルックアップテーブル(LUT)、及び/又は、いずれかの適切なハードウェア及び/又はソフトウェアを含むことができる。
図6Aを参照すると、本発明の幾つかの例示的な実施形態にしたがって、出力逆変換モジュール600の回路実装が概略的に示される。
例示的な実施形態によれば、モジュール600は、操作済みデータ、例えば信号444とM-1との乗算を実行する乗算器602を含むことができる。モジュール600はまた、操作済みデータとAM-1との乗算を実行する乗算器604と、乗算器604の出力とbとのXOR演算を実行するXORゲート606とを含むことができる。乗算器602及び/又は604は、例えば上述のように、n×n行列にベクトルを乗じるためのいずれかの適切な乗算器を含むことができる。モジュール600はまた、例えば乗算器602の出力信号614と乗算器606の出力信号616とを選択することによって、暗号化演算モードと復号化演算モードとの間で選択を行う、当該技術分野で既知のマルチプレクサ608を含むことができる。
図6Bを参照すると、本発明の幾つかの例示的な実施形態にしたがって、マスク逆変換モジュール630の回路実装が概略的に示される。
例示的な実施形態によれば、モジュール630は、更新済みマスク、例えば信号442とAM-1との乗算を実行する乗算器632を含むことができる。モジュール630はまた、更新済みマスクとM-1との乗算を実行する乗算器634を含むことができる。乗算器632及び/又は634は、例えば上述のように、n×n行列にベクトルを乗じるためのいずれかの適切な乗算器を含むことができる。モジュール630はまた、乗算器632の出力信号633と乗算器634の出力信号635とを選択することによって、暗号化演算モードと復号化演算モードとの間で選択を行う、当該技術分野で既知のマルチプレクサ636を含むことができる。
再び図4を参照すると、装置400はまた、信号434に関する列混合演算に対応する信号456を与える列混合モジュール455を含むことができる。列混合演算は、当該技術分野において知られているように、例えば32ビット列ベクトルx’+R’を含む信号434とラインダール列混合行列とを乗じることを含むことができる。例えば、列混合演算は、以下のように、すなわち、
として計算することができ、ここで、x’1+R’1,x’2+R’2,x’3+R’3,及びx’4+R’4は、列ベクトルx’+R’のマスクされたデータ要素である。
として計算することができ、ここで、x’1+R’1,x’2+R’2,x’3+R’3,及びx’4+R’4は、列ベクトルx’+R’のマスクされたデータ要素である。
当業者であれば、R’1、R’2、R’3、及びR’4は、Rのそれぞれの要素、例えばR1、R2、R3、及びR4の線形変換に対応するため、ベクトル(R’1、R’2、R’3、R’4)の全ての要素は、非ゼロの値、すなわちR’1?0、R’2?0、R’3?0、及びR’4?0であることが分かるであろう。しかしながら、ベクトル(R’1、R’2、R’3、R’4)とラインダール列混合行列との積は、ゼロ値を持つこともある。このことは、後のAESラウンドのマスクを歪めるという望ましくない結果をもたらすことがある。本発明の幾つかの例示的な実施形態によれば、この潜在的な問題を防止するために、RのR1、R2、R3、及びR4は、あらかじめ設定された等しい値、すなわちR1=R2=R3=R4を持つものとすることができる。当業者であれば、あらかじめ設定された等しい値R1=R2=R3=R4によって、ベクトル(R’1、R’2、R’3、R’4)とラインダール列混合行列との積が常に非ゼロであることを保証できることが分かるであろう。本発明の実施形態にしたがって、あらかじめ設定された他の値を用いて、ラインダール列混合乗算の結果が非ゼロになることを保証することもできる。
AESラウンドはまた、当該技術分野において知られているように、行シフト演算の実行を含むことができる。行シフト演算は、当該技術分野において知られているように、マスクされたデータの4つの列を表す4×4データ行列の各行の要素間におけるシフトを含むことができる。データ行列は、k=1...16としたときの和X’k+R’kに各々が対応する16個の要素を含むことができる。本発明の幾つかの例示的な実施形態によれば、Rの16個の要素全ては、後に続くラウンドのマスクが歪まないことを保証するために、あらかじめ設定された等しい値、すなわちR1=R2=...=R16を持つものとすることができる。本発明の実施形態にしたがって、あらかじめ設定された他の値を用いて、ラインダール行混合乗算の結果が非ゼロであることを保証することもできる。当業者であれば、上述のようにマスクRの16個の要素全てをあらかじめ設定しても、DPA攻撃に必要な総当りに対して比較的軽微な影響しか与えないことが分かるであろう。
したがって、本発明の例示的な実施形態によれば、信号432の値は、信号432に関して行われる列混合演算に応じて更新されることはない。
本発明の幾つかの例示的な実施形態によれば、装置400はさらに、例えば最終AESラウンド後に、マスクされた逆変換済みデータのマスクを取るためのマスク除去モジュール460を含むことができる。例示的な実施形態によれば、モジュール460は、信号456に対応する第1入力と第2入力との和に対応する出力信号464を与えるXORゲート462を含むことができる。最終AESラウンド後に、ゲート462の第2入力を信号432と関連させることができる。したがって、更新済みマスクの値は、最後のラウンド後に、マスクされた逆変換済みデータとXORを取ることができ、その結果、操作済みデータからマスクが除去される。
本発明の幾つかの例示的な実施形態によれば、出力信号464はR’によってマスクされるため、マスクR’は、後述のように、後続のAESラウンドにおける入力マスクとして用いることができる。
本発明の幾つかの例示的な実施形態によれば、装置400はさらに、後述のように、後続のAESラウンドにおける新たなマスクを用いることが可能なマスク入力モジュール450を含むことができる。モジュールは、以前のAESラウンドの信号465の値、例えばx’’+R’に対応する第1入力と、ランダム・マスク信号452の値、例えばRに対応する第2入力との和を与える第1XORゲート428を含むことができる。したがって、例えば、XORゲート428の出力信号454は、x’’+R’+Rの値に対応するものとすることができる。構成450はまた、信号454と信号432との和に対応する信号438をブロック412に与える第2XORゲート426を含むことができる。したがって、信号438は、x’’+Rに対応する値を持つことができる。
当業者であれば、構成450の各XORゲートの入力及び出力は、マスク、すなわちR及び/又はR’を含むことができることが分かるであろう。
本発明の例示的な実施形態によれば、装置400によって実装される表現変換行列Mは、後述のように、例えば装置400を実装するための最小回路面積といった所望の最適化基準に基づいて、あらかじめ決定することができる。
本発明の例示的な実施形態によれば、1組の回路、例えばα=1のときの192個の可能な変換行列に対応する192個の回路を作成して、装置400を実装することができる。例えば、回路の各々は、シノプシス社から入手可能なDC Shell 2001.08−sp1(DC Expert)を用いて合成することができる。ターゲット・ライブラリTSMC 0.18μ(SAAG−X Artisane)を用いることができる。例えば12nSecから6nSecまでの範囲の伝搬遅延時間といった様々なタイミングについて、合成を行うことができる。これらのパラメータにより、例えば3ナノ秒のマージンといったマージンを加えることによって、例えば66.7MHzから111MHzまでの範囲の、それぞれ異なる周波数を用いることが可能になる。合成の結果に応じて、表現変換行列[01 0c 50 ed 42 35 67 92]が実装される場合には、従来のAES装置の回路面積と比較して約45%の回路面積削減を達成することができる。
本発明の例示的な実施形態によれば、例えば後述のように、ランダム・ビット生成器を実装して、非ゼロのマスクRを生成することができる。しかしながら、当業者であれば、他のいずれかの適切な装置及び/又は方法を実装して、非ゼロのマスクRを生成できることが分かるであろう。
本発明の例示的な実施形態によれば、ランダム・ビット生成器を用いて、vビットを有する非ゼロのマスクRを生成することができ、ここで、vは2のべき乗、例えばv=8である。この生成器は、log(v)+v−1ビットを生成することができる。初めのlog(v)ビットは、0?w<vである第1の数wを定めるのに用いることができる。残りのv−1ビットは、第2の数pを定めるのに用いることができる。vビット・マスクは、Rのw番目のビットの値を1に設定し、Rの他のv−1ビットをpのv−1ビットと置き換えることによって、生成することができる。例えば、v=8の場合には、ランダム・ビット生成器は、log8+8−1=10のランダム・ビット、例えば1011100101を生成することができる。したがって、w=1012=5、p=1100101、R=11100101である。
当業者であれば、マスクのw番目のビットにおいて1の値は常に置き換えられるため、上述の方法は非ゼロのマスクを提供できることが分かるであろう。さらに、上述の方法を実施して、可能な非ゼロvビット・マスクのいずれか1つを提供することができる。さらに、上述の方法を実装するマスク生成器によって、等しいハミング重みを持つマスクを等しい確率で生成することができる。以前にマスクが生成された場合に特定のマスクを生成することに対応する条件付きエントロピー値は、例えば以下のように、
として計算することができる。
として計算することができる。
したがって、上述の方法を実施して、例えばv=8の場合には約7.90244といった比較的高いエントロピー値を与えることができる。
当業者であれば、本発明は、添付図面を参照して本明細書で示され、説明された本発明の例示的な実施形態に限定されるものではないことが分かるであろう。本発明の幾つかの特徴が示され、説明されたが、当業者であれば、多くの修正、置換、変更、及び均等物を想定できるであろう。したがって、特許請求の範囲は、本発明の真の精神内にあるものとして、そうした修正及び変更の全てに及ぶことが意図されているものと理解すべきである。
Claims (46)
- データを操作する方法であって、
有限体における第1表現のマスクされた入力データを、前記有限体における第2表現の変換済みデータに変換し、
前記変換済みデータを操作して、マスクされた操作済みデータを取得する、
ステップを含むことを特徴とする方法。 - 前記マスクされた入力データの入力マスクを、前記第2表現の更新済みマスクに変換するステップを含むことを特徴とする、請求項1に記載の方法。
- 前記マスクされた入力データを変換するステップが、アフィン変換を行うステップを含むことを特徴とする、請求項2に記載の方法。
- 前記アフィン変換が線形変換からなり、前記入力マスクを変換するステップが、前記線形変換を行うステップを含むことを特徴とする、請求項3に記載の方法。
- 前記変換済みデータを操作するステップが、前記更新済みマスクを用いて該変換済みデータを操作するステップを含むことを特徴とする、請求項2から請求項4までのいずれか1つの請求項に記載の方法。
- 前記マスクされた入力データを変換するステップにより、前記更新済みマスクによってマスクされた状態の前記変換済みデータを得ることを特徴とする、請求項2から請求項5までのいずれか1つの請求項に記載の方法。
- 前記変換済みデータを操作するステップにより、前記更新済みマスクによってマスクされた状態の前記操作済みデータを得ることを特徴とする、請求項2から請求項6までのいずれか1つの請求項に記載の方法。
- 前記変換済みデータを操作するステップが、
前記変換済みデータに前記更新済みマスクを乗じて第1中間データを取得し、
前記第1中間データに前記更新済みマスクの平方を加えて第2中間データを取得し、
前記第2中間データを反転して第3中間データを取得し、
前記第3中間データに単位データ・ビットを加えて第4中間データを取得し、
前記第4中間データに前記更新済みマスクを乗じて前記第2表現のマスクされた反転済みデータを取得する、
ステップを含むことを特徴とする、請求項2から請求項7までのいずれか1つの請求項に記載の方法。 - 前記操作済みデータを逆変換して、前記第1表現のマスクされた逆変換済みデータを取得するステップを含むことを特徴とする、請求項1から請求項8までのいずれか1つの請求項に記載の方法。
- 前記操作済みデータを逆変換することにより、前記入力マスクの線形変換によってマスクされた状態の前記逆変換済みデータを得ることを特徴とする、請求項9に記載の方法。
- 前記マスクされた逆変換済みデータのマスクを取るステップを含むことを特徴とする、請求項9又は請求項10に記載の方法。
- 前記更新済みマスクを逆変換するステップを含むことを特徴とする、請求項9から請求項11までのいずれか1つの請求項に記載の方法。
- 前記操作済みデータを逆変換するステップが、アフィン変換を行うステップを含むことを特徴とする、請求項9から請求項12までのいずれか1つの請求項に記載の方法。
- 前記更新済みマスクを逆変換するステップを含み、前記アフィン変換が線形変換からなり、該更新済みマスクを逆変換するステップが、前記線形変換を行うステップを含むことを特徴とする、請求項13に記載の方法。
- 前記変換済みデータを操作するステップが、前記第1表現の少なくとも1つの所望の演算と等価の少なくとも1つの演算を行うステップを含むことを特徴とする、請求項1から請求項14までのいずれか1つの請求項に記載の方法。
- 前記少なくとも1つの演算が逆演算であることを特徴とする、請求項15に記載の方法。
- 前記有限体がガロア体であることを特徴とする、請求項1から請求項16までのいずれか1つの請求項に記載の方法。
- 前記有限体がGF(gh)であることを特徴とする、請求項17に記載の方法。
- gが2に等しいことを特徴とする、請求項18に記載の方法。
- 前記第1表現がGF(22s)であり、第2表現がGF((2s)2)であることを特徴とする、請求項19に記載の方法。
- sが4に等しいことを特徴とする、請求項20に記載の方法。
- 前記マスクされた入力データを与えるために、前記入力マスクを用いて入力データをマスクするステップを含むことを特徴とする、請求項2から請求項21までのいずれか1つの請求項に記載の方法。
- 前記入力マスクを生成するステップを含むことを特徴とする、請求項2から請求項22までのいずれか1つの請求項に記載の方法。
- log(v)ビットの第1の組とv−1ビットの第2の組とを生成し、
前記ビットの第1の組に基づいて数wを定め、
前記入力マスクのw番目のビットの値を1に設定し、
前記入力マスクのv−1ビットを前記第2の組のv−1ビットとそれぞれ置き換える、
ステップを含むことを特徴とする、請求項23に記載の方法。 - 前記入力マスクの少なくとも幾つかのビットが、あらかじめ設定された値を持つことを特徴とする、請求項2から請求項24までのいずれか1つの請求項に記載の方法。
- データを操作するための装置であって、
有限体における第1表現のマスクされた入力データを、前記有限体における第2表現の変換済みデータに変換する変換ブロックと、
前記変換済みデータを操作して、マスクされた操作済みデータを取得する操作ブロックと、
を含むことを特徴とする装置。 - 前記変換ブロックが、前記マスクされた入力データの入力マスクを前記第2表現の更新済みマスクに変換することを特徴とする、請求項26に記載の装置。
- 前記変換ブロックが、
前記第1表現の前記マスクされた入力データを前記変換済みデータに変換する入力変換モジュールと、
前記入力マスクを前記更新済みマスクに変換するマスク変換モジュールと、
を含むことを特徴とする、請求項27に記載の装置。 - 前記入力変換モジュールが、前記マスクされた入力データに表現変換行列を乗じる乗算器を含み、前記マスク変換モジュールが、前記入力マスクに前記表現変換行列を乗じる乗算器を含むことを特徴とする、請求項28に記載の装置。
- 前記入力変換モジュールが、前記マスクされた入力データにアフィン変換を行うようになったことを特徴とする、請求項29に記載の装置。
- 前記マスク変換モジュールが、前記アフィン変換に対応する線形変換を前記マスクに行うようになったことを特徴とする、請求項30に記載の装置。
- 前記操作ブロックが、前記第1表現の少なくとも1つの所望の演算と等価の少なくとも1つの演算を行うことを特徴とする、請求項26から請求項31までのいずれか1つの請求項に記載の装置。
- 前記操作ブロックが、前記第2表現の前記変換済みデータを反転して、マスクされた反転済みデータを与える反転ブロックを含むことを特徴とする、請求項32に記載の装置。
- 前記操作ブロックが、
前記入力変換モジュールの出力と前記マスク変換モジュールの出力とを乗算する第1乗算器と、
前記マスク変換モジュールの出力の平方を与える平方モジュールと、
前記第1乗算器の出力に前記平方モジュールの出力を加える第1加算器と、
前記第1加算器の出力がゼロでない場合にはゼロ出力値を与えるゼロ検出器と、
前記ゼロ検出器の出力と前記マスク変換モジュールの出力との論理ANDに対応する出力を与えるANDゲートと
前記ANDゲートの出力を前記第1加算器の出力に加える第2加算器と、
前記第2加算器の出力を反転する反転モジュールと、
前記反転モジュールの出力に単位値を加える第3加算器と、
前記マスク変換モジュールの出力と前記第2加算器の出力とを乗算する第2乗算器と、
前記ANDゲートの出力に前記第2乗算器の出力を加える第4加算器と、
を含むことを特徴とする、請求項28から請求項33までのいずれか1つの請求項に記載の装置。 - 前記操作ブロックが、
前記入力変換モジュールの出力と前記マスク変換モジュールの出力とを乗算する第1乗算器と、
前記マスク変換モジュールの出力の平方を与える平方モジュールと、
前記第1乗算器の出力に前記平方モジュールの出力を加える第1加算器と、
前記第1加算器の出力を反転する反転モジュールと、
前記反転モジュールの出力に単位値を加える第2加算器と、
前記マスク変換モジュールの出力と前記第2加算器の出力とを乗算する第2乗算器と、
を含むことを特徴とする、請求項28から請求項33までのいずれか1つの請求項に記載の装置。 - 前記操作済みデータを逆変換して、前記第1表現のマスクされた逆変換済みデータを取得する逆変換ブロックを含むことを特徴とする、請求項26から請求項35までのいずれか1つの請求項に記載の装置。
- 前記操作済みデータを逆変換して、前記第1表現のマスクされた逆変換済みデータを取得する逆変換ブロックを含み、前記逆変換ブロックが、
前記操作済みデータを前記第1表現に逆変換する出力逆変換モジュールと、
前記更新済みマスクを逆変換するマスク逆変換モジュールと、
を含むことを特徴とする、請求項27から請求項35までのいずれか1つの請求項に記載の装置。 - 前記出力逆変換モジュールが、前記操作済みデータにアフィン変換を行うようになったことを特徴とする、請求項37に記載の装置。
- 前記マスク逆変換モジュールが、前記アフィン変換に対応する線形変換を前記更新済みマスクに行うようになったことを特徴とする、請求項38に記載の装置。
- 前記マスクされた逆変換済みデータのマスクを取るマスク除去モジュールを含むことを特徴とする、請求項36から請求項39までのいずれか1つの請求項に記載の装置。
- 前記入力マスクを生成するマスク生成器を含むことを特徴とする、請求項27から請求項40までのいずれか1つの請求項に記載の装置。
- 前記マスク生成器が、log(v)ビットの第1の組とv−1ビットの第2の組とを生成し、前記ビットの第1の組に基づいて数wを定め、前記入力マスクのw番目のビットの値を1に設定し、該入力マスクのv−1ビットを前記第2の組のv−1ビットとそれぞれ置き換えることができることを特徴とする、請求項41に記載の装置。
- 前記入力マスクの少なくとも幾つかのビットが、あらかじめ設定された値を持つことを特徴とする、請求項27から請求項42までのいずれか1つの請求項に記載の装置。
- vビットを持つ非ゼロマスクを生成する方法であって、
log(v)ビットの第1の組とv−1ビットの第2の組とを生成し、
前記ビットの第1の組に基づいて数wを定め、
前記マスクのw番目のビットの値を1に設定し、
前記マスクのv−1ビットを前記第2の組のv−1ビットとそれぞれ置き換える、
ステップを含むことを特徴とする方法。 - データを暗号化する方法であって、
有限体における第1表現のマスクされた入力データを、前記有限体における第2表現の変換済みデータに変換し、
前記マスクされた入力データの入力マスクを、前記第2表現の更新済みマスクに変換し、
前記第1表現の所望の暗号化演算と等価の少なくとも1つの演算を行うことにより、前記更新済みマスクを用いて前記変換済みデータを操作して、操作済みデータを取得し、
前記操作済みデータを逆変換して、前記第1表現の操作済みデータを取得する、
ステップを含むことを特徴とする方法。 - データを復号化する方法であって、
有限体における第1表現のマスクされた入力データを、前記有限体における第2表現の変換済みデータに変換し、
前記マスクされた入力データの入力マスクを、前記第2表現の更新済みマスクに変換し、
前記第1表現の所望の復号化演算と等価の少なくとも1つの演算を行うことにより、前記更新済みマスクを用いて前記変換済みデータを操作して、操作済みデータを取得し、
前記操作済みデータを逆変換して、前記第1表現の操作済みデータを取得する、
ステップを含むことを特徴とする方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US44524703P | 2003-02-06 | 2003-02-06 | |
PCT/IL2004/000116 WO2004070510A2 (en) | 2003-02-06 | 2004-02-05 | Device and method of manipulating masked data |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006517036A true JP2006517036A (ja) | 2006-07-13 |
Family
ID=32850978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006502631A Pending JP2006517036A (ja) | 2003-02-06 | 2004-02-05 | マスクされたデータを操作する装置及び方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1595357A4 (ja) |
JP (1) | JP2006517036A (ja) |
WO (1) | WO2004070510A2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007235913A (ja) * | 2006-01-31 | 2007-09-13 | Dainippon Printing Co Ltd | 暗号演算処理方法および暗号演算処理装置 |
JP2008502931A (ja) * | 2004-06-18 | 2008-01-31 | サジェム・デュフェンス・セキュリート | 暗号計算を実行するための方法及び装置 |
JP2008299330A (ja) * | 2007-05-31 | 2008-12-11 | Harris Corp | 閉ガロア体組合せ |
WO2010067827A1 (ja) * | 2008-12-09 | 2010-06-17 | 株式会社 東芝 | 暗号処理装置及び演算方法 |
JP2011528810A (ja) * | 2008-07-21 | 2011-11-24 | シーメンス アクチエンゲゼルシヤフト | 標数2の乗算を実現するための方法およびプロセッサ装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005024609A1 (de) * | 2005-05-25 | 2006-11-30 | Siemens Ag | Bestimmung einer modularen Inversen |
US8504845B2 (en) | 2011-03-30 | 2013-08-06 | Apple Inc. | Protecting states of a cryptographic process using group automorphisms |
FR3111440B1 (fr) * | 2020-06-16 | 2024-02-16 | St Microelectronics Rousset | Protection d'un algorithme de chiffrement |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100296958B1 (ko) * | 1998-05-06 | 2001-09-22 | 이석우 | 블록 데이터 암호화 장치 |
CA2327911A1 (en) * | 2000-12-08 | 2002-06-08 | Cloakware Corporation | Obscuring functions in computer software |
DE60202495D1 (de) * | 2001-03-27 | 2005-02-10 | Amphion Semiconductor Ltd | Vorrichtung zur wählbaren Ver- bzw. Entschlüsselung von Daten |
US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
-
2004
- 2004-02-05 EP EP04708426A patent/EP1595357A4/en not_active Withdrawn
- 2004-02-05 JP JP2006502631A patent/JP2006517036A/ja active Pending
- 2004-02-05 WO PCT/IL2004/000116 patent/WO2004070510A2/en not_active Application Discontinuation
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008502931A (ja) * | 2004-06-18 | 2008-01-31 | サジェム・デュフェンス・セキュリート | 暗号計算を実行するための方法及び装置 |
JP4828526B2 (ja) * | 2004-06-18 | 2011-11-30 | モルフォ | 暗号計算を実行するための方法及び装置 |
JP2007235913A (ja) * | 2006-01-31 | 2007-09-13 | Dainippon Printing Co Ltd | 暗号演算処理方法および暗号演算処理装置 |
JP2008299330A (ja) * | 2007-05-31 | 2008-12-11 | Harris Corp | 閉ガロア体組合せ |
JP2011528810A (ja) * | 2008-07-21 | 2011-11-24 | シーメンス アクチエンゲゼルシヤフト | 標数2の乗算を実現するための方法およびプロセッサ装置 |
US8732227B2 (en) | 2008-07-21 | 2014-05-20 | Siemens Aktiengesellschaft | Method and processor unit for implementing a characteristic-2-multiplication |
WO2010067827A1 (ja) * | 2008-12-09 | 2010-06-17 | 株式会社 東芝 | 暗号処理装置及び演算方法 |
JP2010141430A (ja) * | 2008-12-09 | 2010-06-24 | Toshiba Corp | 暗号処理装置及び演算方法 |
US8817975B2 (en) | 2008-12-09 | 2014-08-26 | Kabushiki Kaisha Toshiba | Cryptographic processing apparatus and operation method |
Also Published As
Publication number | Publication date |
---|---|
WO2004070510A3 (en) | 2004-10-21 |
EP1595357A4 (en) | 2006-03-01 |
EP1595357A2 (en) | 2005-11-16 |
WO2004070510A2 (en) | 2004-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2723319C (en) | A closed galois field cryptographic system | |
KR100610367B1 (ko) | 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치 | |
CA2632857C (en) | Closed galois field combination | |
US5142579A (en) | Public key cryptographic system and method | |
KR101187854B1 (ko) | 보안성을 향상시키는 순열 데이터 변환 | |
US20060093136A1 (en) | Implementation of a switch-box using a subfield method | |
JP2005215688A (ja) | S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法 | |
JPH10240500A (ja) | 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム | |
JP2006517036A (ja) | マスクされたデータを操作する装置及び方法 | |
US6961427B1 (en) | Methods and apparatus for keystream generation | |
Mihalkovich et al. | MPF based symmetric cipher performance comparison to AES and TDES | |
Venkatesha et al. | AES based algorithm for image encryption and decryption | |
KR101131167B1 (ko) | 스트림 암호를 위한 키수열 발생 방법 및 장치. 블록 암호를 위한 S-box 및 상기 S-box에서의 치환 방법 | |
Abdul-Karim et al. | High Throughput and Fully Pipelined FPGA Implementation of AES-192 Algorithm | |
KR100756435B1 (ko) | 키스트림 생성방법 및 장치 | |
Tamilselvi et al. | A novel based mix-column architecture for AES-128 bit algorithm | |
Faragallah et al. | Improved RC6 block cipher based on data dependent rotations | |
JP2005534973A (ja) | 有限体内でデータを操作する方法および装置 | |
Siddavaatam et al. | An adaptive security framework with extensible computational complexity for cipher systems | |
JPH0629969A (ja) | 非線形回路を用いた乱数発生回路 | |
KR100200531B1 (ko) | 암호화 방법 및 시스템 | |
Siddavaatam et al. | A novel architecture with scalable security having expandable computational complexity for stream ciphers | |
Krulikovskyi et al. | Ukrainian National Encryption Standards for FPGA Based Embedded Systems | |
Zbitnev et al. | Probabilistic block cipher | |
JP2022056275A (ja) | 暗号復号システム、暗号復号方法、及び暗号復号用プログラム |