JP4682852B2 - 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム - Google Patents
暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Download PDFInfo
- Publication number
- JP4682852B2 JP4682852B2 JP2006007105A JP2006007105A JP4682852B2 JP 4682852 B2 JP4682852 B2 JP 4682852B2 JP 2006007105 A JP2006007105 A JP 2006007105A JP 2006007105 A JP2006007105 A JP 2006007105A JP 4682852 B2 JP4682852 B2 JP 4682852B2
- Authority
- JP
- Japan
- Prior art keywords
- scalar
- calculation
- jrf
- scalar value
- cryptographic processing
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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
- G06F7/725—Finite field arithmetic over elliptic curves
-
- 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/7261—Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/4824—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices using signed-digit representation
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
点Pと点Pの加算P+P=2Pを「点の2倍算」
と呼ぶ。
また、点Pをk回加算した点P+P+…+P=kPを求める演算を「点のスカラー倍算」と呼ぶ。なお、楕円曲線暗号上の演算に関しては、例えば非特許文献1に記されている。
点のスカラー倍同時計算のアルゴリズムは、スカラー量k,lについて、それぞれ、
k=(kn・・・k0)2、
l=(ln・・・l0)2、
とした2進表現として、以下のようなアルゴリズムを適用して実行される。
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n−1 downto 0 do
T←2T
If (ki,li)≠(0,0) then
T←T+(kiP+liQ)
4.Return T
T←2Tの点の2倍算は全てのiに対して行なうのに対して、
T←T+(kiP+liQ)の点の加算は(ki,li)≠(0,0)の場合にのみ行なう。従って、攻撃者は(ki,li)=(0,0)であるか否かについて、消費電力波形を見ることにより判別することができる。また、上記の[点のスカラー倍同時計算アルゴリズム]においては、ステップ1においてP+Qの点の加算を行なうという前計算が必要となる。
D. Hankerson, J.L. Hernandez, and A. Menezes, "Software Implementation of Elliptic Curve Cryptography over Binary Fields", Cryptographic Hardware and Embedded Systems - CHES 2000, LNCS 1965, pp.1-24, Springer-Verlag, 2000. J.-S. Coron, "Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems",Cryptographic Hardware and Embedded Systems - CHES'99, LNCS 1965, pp.292-302, Springer-Verlag, 1999.
楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D1,D2、およびスカラー値k,lに基づくスカラー倍加算:kD1+lD2、
いずれかのスカラー倍加算演算を実行する暗号処理装置であり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(ki,li)、ただしi=0〜n、の全てを、
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成するスカラー値制御部と、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する演算実行部と、
を有することを特徴とする暗号処理装置にある。
(ki,li)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成する処理を実行する構成であり、
前記演算実行部は、前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行する構成であることを特徴とする。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)を選択し、スカラー倍加算:kP+lQ、またはkD1+lD2 の計算に際して、kPとlQ、またはkD 1 とlD 2 を同時に計算する同時計算手法を適用した演算を実行する構成であることを特徴とする。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)のすべてについて、
T←(k n P+l n Q)、または、T←k n D 1 +l n D 2 、
上記Tの算出処理を同じ計算アルゴリズムに従って実行する構成であることを特徴とする。
楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D1,D2、およびスカラー値k,lに基づくスカラー倍加算:kD1+lD2、
いずれかのスカラー倍加算演算を、暗号処理装置において実行する暗号処理方法であり、
スカラー値制御部における実行ステップであり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(ki,li)、ただしi=0〜n、の全てを、
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成するスカラー値制御ステップと、
演算実行部における実行ステップであり、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する演算実行ステップと、
を有することを特徴とする暗号処理方法にある。
(ki,li)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成する処理を実行するステップであり、
前記演算実行ステップは、
前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行するステップであることを特徴とする。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)を選択し、スカラー倍加算:kP+lQ、またはkD1+lD2 の計算に際して、kPとlQ、またはkD 1 とlD 2 を同時に計算する同時計算手法を適用した演算を実行するステップであることを特徴とする。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)のすべてについて、
T←(k n P+l n Q)、または、T←k n D 1 +l n D 2 、
上記Tの算出処理を同じ計算アルゴリズムに従って実行するステップであることを特徴とする。
楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D1,D2、およびスカラー値k,lに基づくスカラー倍加算:kD1+lD2、
いずれかのスカラー倍加算演算を、暗号処理装置において実行させるコンピュータ・プログラムであり、
スカラー値制御部において実行させるステップであり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(ki,li)、ただしi=0〜n、の全てを、
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成するスカラー値制御ステップと、
演算実行部において実行させるステップであり、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する演算実行ステップと、
を実行させることを特徴とするコンピュータ・プログラムにある。
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成し、このJRF表現のスカラー値を適用してスカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する構成としたので、(ki,li)のすべての組み合わせにおいて同一の演算処理シーケンスを実行可能となり、ビットの組み合わせに応じた処理の差異がなくなり電力解析に対する耐性が向上し、また、P+QやD1+D2の事前計算の省略が可能となり演算処理の高速化が実現される。
(1)楕円曲線暗号、および超楕円曲線暗号の概要
(2)本発明の暗号処理装置の具体的構成および処理例
(3)暗号処理装置の構成例
本発明は、楕円曲線暗号や、楕円曲線暗号を一般化した方式として知られる超楕円曲線暗号におけるスカラー倍点の加算点kP+lQの算出の高速化を実現し、さらに、単純電力解析(Simple Power Analysis,SPA)などの攻撃に対する耐性を持つスカラー倍点の加算点の計算を実現する。まず、楕円曲線暗号、および超楕円曲線暗号の概要について説明する。
y2+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、高々、次数gの多項式(pが奇素数の場合はh=0)、f(x)は、次数2g+1のmonic多項式である。
以下、本発明の暗号処理装置の具体的構成および処理例について説明する。図1を参照して、本発明の暗号処理装置における楕円曲線暗号におけるスカラー倍点の加算点kP+lQ、または超楕円曲線暗号における因子D1,D2についてのスカラー倍因子の加算因子kD1+lD2の算出を行なう暗号処理部100の構成例について説明する。なお、
P,Qは、楕円曲線上の2点、
D1,D2は、超楕円曲線における点の形式的和である因子(divisor)、
k,lは、スカラー量、
である。
(ki,li)=(0,±1)または(±1,0)
を満たす0,1,−1の数列k=〈kn・・・k0〉,l=〈ln・・・l0〉で表現する。
k=(kn・・・k0)2、
l=(ln・・・l0)2、
とした2進表現として、以下のアルゴリズムを適用してkP+lQの算出が実行されていた。
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n−1 downto 0 do
T←2T
If (ki,li)≠(0,0) then
T←T+(kiP+liQ)
4.Return T
k=(kn・・・k0)2、
l=(ln・・・l0)2、
とした2進表現、すなわち、
(ki,li)=(0,0)または(0,1)または(1,0)または(1,1)
の2進表現を設定して、上記の[点のスカラー倍同時計算のアルゴリズム]を実行していた。
(ki,li)=(0,±1)または(±1,0)
を満たすように、スカラー値kおよびlをそれぞれ0,1,−1の数列とした拡張2進表現に変換する。この拡張2進表現を、
k=〈kn・・・k0〉,
l=〈ln・・・l0〉
として示す。
(ki,li)=(0,±1)または(±1,0)
の条件を満たすように設定する。
この条件を満足するk,lの表現を、以下では、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)と呼ぶ。
(a)スカラー値kが偶数、スカラー値lが奇数、または、
(b)スカラー値kが奇数、スカラー値lが偶数、
上記(a),(b)いずれかの場合に、
(ki,li)=(0,±1)または(±1,0)
を満たす0,1,−1の数列k=〈kn・・・k0〉,l=〈ln・・・l0〉で表現し、これを図1に示す演算実行部102に入力し、演算実行部102は、前述の[点のスカラー倍同時計算のアルゴリズム]に従って、点のスカラー倍加算点kP+lQの算出を実行する。
[点のスカラー倍同時計算のアルゴリズム]
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n−1 downto 0 do
T←2T
If (ki,li)≠(0,0) then
T←T+(kiP+liQ)
4.Return T
(ki,li)=(0,±1)または(±1,0)
の設定であるので、上記のアルゴリズムにおけるステップ3の処理において、
(ki,li)=(0,0)となることはなく、すべての(ki,li)について、ステップ3では、
T←2T
T←T+(kiP+liQ)
これらの処理を実行することになる。すなわち、全ての(i)すなわち拡張2進表現のなされたk,lの各ビットについて、すべて同一の処理が実行される。
T←T+(kiP+liQ)
この算出処理において、
(ki,li)=(0,±1)または(±1,0)
の設定であるので、
T←T+(kiP+liQ)
における(kiP+liQ)の計算では、
(0*P)+((+1)*Q)=Q
(0*P)+((−1)*Q)=−Q
((+1)*P)+(0*Q)=P
((−1)*P)+(0*Q)=−P
上記4種類の計算のみが発生することになり、結果として、P,−P,Q,−Qの4つの値を算出するのみでよい。
1.Compute P+Q
この計算処理ステップが、省略可能となることを意味する。
このステップ1の[P+Q]の算出処理は、[P+Q]の値を事前に算出することで、ステップ3において、P+Qを算出する必要が発生した場合に、算出済みの値を適用可能とするための算出ステップである。従来のシーケンスでは、ステップ3における処理、すなわち、
T←T+(kiP+liQ)
この算出処理において、
(ki,li)=(1,1)
の組み合わせが発生することがあり、この組み合わせが発生した場合に、ステップ1での事前計算値を適用する設定としていた。
(ki,li)=(0,±1)または(±1,0)
の設定であるので、
T←T+(kiP+liQ)
における(kiP+liQ)の計算では、P,−P,Q,−Qの4つの値のみが発生し、P+Qを算出する処理が必要なビットの組み合わせ(ki,li)=(1,1)は発生しない。この結果、ステップ1での[P+Q]の事前計算処理が不要となり、処理ステップを1つ削減することが可能となり、演算の高速化が実現される。
(ki,li)=(0,±1)または(±1,0)
のジョイント・レギュラーフォーム(JRF:Joint Regular Form)に表現を設定して、[点のスカラー倍同時計算のアルゴリズム]を実行させることで、[点のスカラー倍同時計算のアルゴリズム]において、
(a)ステップ3の処理が、(ki,li)のすべての組み合わせにおいて、すべて同一の処理として実行される。
(b)ステップ1の処理が省略できる。
上記(a),(b)が実現されることになり、電力解析に対する耐性が向上し、演算の高速化が図られることになる。
(ki,li)=(0,±1)または(±1,0)
上記のジョイント・レギュラーフォーム(JRF:Joint Regular Form)に表現を設定して、演算実行部102に出力して、上述の[点のスカラー倍同時計算のアルゴリズム]を実行させる。
(k,l)=(52,39)
である場合、k,およびlを(0,+1,−1)の拡張2進表現に設定するともに、
(ki,li)=(0,±1)または(±1,0)
の関係となるジョイント・レギュラーフォーム(JRF:Joint Regular Form)に表現を設定すると、
k=52=<1,0,−1,0,1,0,0>
l=39=<0,1,0,1,0,−1,1>
となる。
(k0,l0),・・・,(kn,ln)と下位から生成する方法について説明する。
k=(kn・・・k0)2、
l=(ln・・・l0)2、
とする。スカラー値制御部101は、この2進表現に基づいて、スカラー値k,lのジョイント・レギュラーフォーム(JRF:Joint Regular Form)を生成する。
(k0,l0)=(0,1)、または、
(k0,l0)=(1,0)
である。
(k1,l1)=(0,1)または(1,0)の場合には変換を行なわない。すなわち、ジョイント・レギュラーフォーム(JRF)の条件である、
(ki,li)=(0,±1)または(±1,0)
この条件を満足するので、2進表現の(k1,l1)をそのまま、JRFにおける(k1,l1)とする。
(k1,l1)=(0,0)である場合は、ジョイント・レギュラーフォーム(JRF)の条件である、
(ki,li)=(0,±1)または(±1,0)
この条件を満足していないので、表現を変更する。この場合、スカラー値制御部101は、スカラー値kの2進表現の最下位ビットk0の値に応じて、スカラー値k,lの2進表現の最下位ビットおよび最下位から2番目のビット、[k1,k0]と、[l1,l0]を以下のように変換して、JRFにおける(k1,l1)および(k0,l0)を設定する。
(k1,l1)=(0,0)、
(k0,l0)=(1,0)のときは、
2進表現[k1,k0]=[0,1]→JRF表現[k1,k0]=[1,−1]
2進表現[l1,l0]=[0,0]→JRF表現[l1,l0]=[0,0]
とする変換処理を実行して、k,lのJRF表現を設定する。
(k1,l1)=(0,0)、
(k0,l0)=(0,1)のときは、
2進表現[k1,k0]=[0,0]→JRF表現[k1,k0]=[0,0]
2進表現[l1,l0]=[0,1]→JRF表現[l1,l0]=[1,−1]
とする変換処理を実行して、k,lのJRF表現を設定する。
(k1,l1)=(1,1)である場合も、ジョイント・レギュラーフォーム(JRF)の条件である、
(ki,li)=(0,±1)または(±1,0)
この条件を満足していないので、表現を変更する。この場合、スカラー値制御部101は、スカラー値kの2進表現の最下位ビットk0の値に応じて、スカラー値k,lの2進表現の最下位ビットおよび最下位から2番目のビット、[k1,k0]と、[l1,l0]を以下のように変換して、JRFにおける(k1,l1)および(k0,l0)を設定する。
(k1,l1)=(1,1)、
(k0,l0)=(1,0)のときは、
2進表現[k1,k0]=[1,1]→JRF表現[k1,k0]=[0,−1]
2進表現[l1,l0]=[1,0]→JRF表現[l1,l0]=[1,0]
とし、さらに、kの2進表現の上位ビットk2に(+1)を繰り越す。この変換処理を実行して、k,lのJRF表現を設定する。
(k1,l1)=(1,1)、
(k0,l0)=(0,1)のときは、
2進表現[k1,k0]=[1,0]→JRF表現[k1,k0]=[1,0]
2進表現[l1,l0]=[1,1]→JRF表現[l1,l0]=[0,−1]
とし、さらに、lの2進表現の上位ビットl2に(+1)を繰り越す。この変換処理を実行して、k,lのJRF表現を設定する。
(k1,l1)=(0,0),(0,1),(1,0),(1,1)
これらの全ての場合に、
(k0,l0)=(0,±1)または(±1,0)と、
(k1,l1)=(0,1)または(1,0)
の組み合わせに設定されることになり、ジョイント・レギュラーフォーム(JRF)の条件である、
(ki,li)=(0,±1)または(±1,0)
この条件を満足させることが可能となる。
(k2,l2)=(0,0)または(1,1)の場合には、
(k1,l1)に応じて、上述と同様の変換を行なう。
この処理を、スカラー値k,lの2進表現、すなわち、
k=(kn・・・k0)2、
l=(ln・・・l0)2、
これらの2進表現の下位から上位に向けて、順次、実行する。この処理を実行することにより、スカラー値k,lを、
(ki,li)=(0,±1)または(±1,0)
を満たす0,1,−1の数列、
k=〈kn・・・k0〉,
l=〈ln・・・l0〉
で表現することが可能になる。
スカラー値k,lの2進表現を、
k=(kn・・・k0)2、
l=(ln・・・l0)2、
としたとき、
スカラー値制御部101は、この2進表現に基づいて、スカラー値k,lのジョイント・レギュラーフォーム(JRF:Joint Regular Form)を、k,lの2進表現の下位ビットから順次、生成する。
(1)(ki,li)=(1,0)の場合、
(ki,li)を、変更せず、そのまま、JRF表現として適用
(2)(ki,li)=(0,1)の場合、
(ki,li)を、変更せず、そのまま、JRF表現として適用
(3a)(ki−1,li−1)=(1,0)の場合、
(ki,ki−1)=[0,1]→JRF<1,−1>
(li,li−1)=[0,0]→JRF<0,0>
これらの表現に変更して、JRF表現を設定する。
(3b)(ki−1,li−1)=(0,1)の場合、
(ki,ki−1)=[0,0]→JRF<0,0>
(li,li−1)=[0,1]→JRF<1,−1>
これらの表現に変更して、JRF表現を設定する。
(4a)(ki−1,li−1)=(1,0)の場合、
(ki,ki−1)=[1,1]→JRF<0,−1>
(li,li−1)=[1,0]→JRF<1,0>
これらの表現に変更して、JRF表現を設定する。
(4b)(ki−1,li−1)=(0,1)の場合、
(ki,ki−1)=[1,0]→JRF<1,0>
(li,li−1)=[1,1]→JRF<0,−1>
これらの表現に変更して、JRF表現を設定する。
i←0,si←k,ti←l
の初期設定を実行する。
iは、k,lの2進表現としてのビット位置を示す変数i(i=0〜n)に相当する。
ki←simod2
li←timod2
(ki,li)=(0,0)
であるか否かを判定する。
(ki,li)=(0,0)
と判定された場合には、次に、ステップS105に進み、
ki−1=1であるか否かを判定する。
ki−1=1であると判定された場合は、ステップS106に進み、
ki←1
ki−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[ki,ki−1]をJRF表現として<1,−1>として設定する。この処理は、図2における(3a)の処理に相当する。
ki−1=1でないと判定された場合は、ステップS107に進み、
li←1
li−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[li,li−1]をJRF表現として<1,−1>として設定する。この処理は、図2における(3b)の処理に相当する。
si+1←si/2
ti+1←ti/2
これらの処理は、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。
(ki,li)=(0,0)
でないと判定された場合には、次に、ステップS109に進み、
(ki,li)=(1,1)
であるか否かを判定する。
(ki,li)=(1,1)
であると判定された場合には、次に、ステップS110に進み、
ki−1=1であるか否かを判定する。
ki−1=1であると判定された場合は、ステップS111に進み、
ki←0
ki−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[ki,ki−1]をJRF表現として<0,−1>として設定する。さらに、スカラー値k,lに相当するsi,tiの更新処理として、以下の処理を行なう。
si+1←(si+1)/2
ti+1←(ti−1)/2
これらの処理は、kの2進表現の上位ビットki+1に(+1)を繰り越すとともに、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(4a)の処理に相当する。
ki−1=1でないと判定された場合は、ステップS112に進み、
li←0
li−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[li,li−1]をJRF表現として<0,−1>として設定する。さらに、スカラー値k,lに相当するsi,tiの更新処理として、以下の処理を行なう。
si+1←(si−1)/2
ti+1←(ti+1)/2
これらの処理は、lの2進表現の上位ビットli+1に(+1)を繰り越すとともに、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(4b)の処理に相当する。
(ki,li)=(1,1)
でないと判定された場合には、次に、ステップS113に進み、スカラー値k,lに相当するsi,tiの更新処理として、以下の処理を行なう。
si+1←(si−ki)/2
ti+1←(ti−li)/2
これらの処理は、2進表現としての(ki,li)をそのままJRF表現として利用し、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(1),(2)の処理に相当する。
si+1>0、または、
ti+1>0
が成立するか否かを判定する。これは、JRF表現への変換の済んでいない2進表現の上位ビットが存在するか否かを判定する処理である。ステップS114において、
si+1>0、または、
ti+1>0
が成立すると判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在することを意味するので、ステップS115において、変数iを更新、すなわち、
i←i+1
を実行して、ステップS103に戻り、同様の処理を繰り返し実行する。
si+1>0、または、
ti+1>0
が成立しないと判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在しないことを意味するので、ステップS116に進み、最終的に設定された変数iをnとする処理、すなわち、
n←i
この更新処理を実行し、ステップS117において、スカラー値k,lのJRF表現として、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を出力する。
スカラー値k,lの2進表現、すなわち、
k=(kn・・・k0)2、
l=(ln・・・l0)2、
これらの2進表現を、拡張2進表現、すなわち、すべてのビットを0,または+1,または−1で表現し、かつ、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(ki,li)=(0,±1)または(±1,0)
を満足するJRF表現としての、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成し、演算実行部102に出力する。演算実行部102では、スカラー値制御部101から入力するスカラー値k,lのJRF表現としての、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
これらのスカラー値に基づいて、先に説明した[点のスカラー倍同時計算のアルゴリズム]を実行する。この処理によって、[点のスカラー倍同時計算のアルゴリズム]において、
(a)(ki,li)のすべての組み合わせにおいて、すべて同一の演算処理が実行される。
(b)P+Qの演算処理が省略できる。
上記(a),(b)が実現されることになり、電力解析に対する耐性が向上し、演算の高速化が図られることになる。
1.i←0,si←k,ti←lと入力する。
2.si,tiの最下位ビットをそれぞれki,liとする。
3.(ki,li)=(0,0)の場合には、次のようにする。
ki−1=1の場合には、ki←1,ki−1←−1と変換する。
ki−1=0の場合には、li←1,li−1←−1と変換する。
si+1←si/2,ti+1←ti/2とする。
4.(ki,li)=(1,1)の場合には、次のようにする。
ki−1=1の場合には、ki←0,ki−1←−1と変換し、
si+1←(si+1)/2,ti+1←(ti−1)/2とする。
ki−1=0の場合には、li←0,li−1←−1と変換し、
si+1←(si−1)/2,ti+1←(ti+1)/2とする。
5.上記3,4以外の場合、つまり、
(ki,li)=(0,1)または(1,0)の場合は、
si+1←(si−ki)/2,ti+1←(ti−li)/2とする。
6.si+1>0またはti+1>0であれば、
i←i+1として、2.に戻る。そうでなければ、n←iとして、
〈kn・・・k0〉,〈ln・・・l0〉を出力する。
i←0,s←k,t←l
の初期設定を実行する。
iは、k,lの2進表現としてのビット位置を示す変数i(i=0〜n)に相当する。
次に、ステップS203において、スカラー値k,lに相当するs,tの各々の最下位ビットki,liを算出する。ki,liは、以下の式によって算出される。
ki←smod2
li←tmod2
(ki,li)=(0,0)
であるか否かを判定する。
(ki,li)=(0,0)
と判定された場合には、次に、ステップS205に進み、
ki←ki−1
ki−1←−ki−1
li←li−1
li−1←−li−1
これらの設定を行う。すなわち、2進表現に基づくスカラー値[ki,ki−1]を、JRF表現として<ki−1,−ki−1>として設定し、[li,li−1]を、JRF表現として<li−1,−li−1>として設定する。この処理は、図2における(3a)(3b)の処理に相当する。
s←s/2
t←t/2
これらの処理は、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。
(ki,li)=(0,0)
でないと判定された場合には、次に、ステップS206に進み、
(ki,li)=(1,1)
であるか否かを判定する。
(ki,li)=(1,1)
であると判定された場合には、次に、ステップS207に進み、
ki←1−ki−1
ki−1←−ki−1
li←1−li−1
li−1←−li−1
これらの設定を行う。すなわち、2進表現に基づくスカラー値[ki,ki−1]を、JRF表現として<1−ki−1,−ki−1>として設定し、[li,li−1]を、JRF表現として<1−li−1,−li−1>として設定する。この処理は、図2における(4a)(4b)の処理に相当する。
s←(s−2ki+1)/2
t←(t−li)/2
これらの処理は、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。
(ki,li)=(1,1)
でないと判定された場合には、次に、ステップS208に進み、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
s←(s−ki)/2
t←(t−li)/2
これらの処理は、2進表現としての(ki,li)をそのままJRF表現として利用し、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(1),(2)の処理に相当する。
s>0、または、
t>0
が成立するか否かを判定する。これは、JRF表現への変換の済んでいない2進表現の上位ビットが存在するか否かを判定する処理である。ステップS209において、
s>0、または、
t>0
が成立すると判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在することを意味するので、ステップS210において、変数iを更新、すなわち、
i←i+1
を実行して、ステップS203に戻り、同様の処理を繰り返し実行する。
s>0、または、
t>0
が成立しないと判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在しないことを意味するので、ステップS211に進み、最終的に設定された変数iをnとする処理、すなわち、
n←i
この更新処理を実行し、ステップS212において、スカラー値k,lのJRF表現として、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を出力する。
スカラー値k,lの2進表現、すなわち、
k=(kn・・・k0)2、
l=(ln・・・l0)2、
これらの2進表現を、拡張2進表現、すなわち、すべてのビットを0,または+1,または−1で表現し、かつ、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(ki,li)=(0,±1)または(±1,0)
を満足するJRF表現としての、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成し、演算実行部102に出力する。演算実行部102では、スカラー値制御部101から入力するスカラー値k,lのJRF表現としての、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
これらのスカラー値に基づいて、先に説明した[点のスカラー倍同時計算のアルゴリズム]を実行する。この処理によって、[点のスカラー倍同時計算のアルゴリズム]において、
(a)(ki,li)のすべての組み合わせにおいて、すべて同一の演算処理が実行される。
(b)P+Qの演算処理が省略できる。
上記(a),(b)が実現されることになり、電力解析に対する耐性が向上し、演算の高速化が図られることになる。
1.i←0,s←k,t←lと入力する。
2.s,tの最下位ビットをそれぞれki,liとする。
3.(ki,li)=(0,0)の場合には、
ki←ki−1,ki−1←−ki−1,
li←li−1,li−1←−li−1,
s←s/2,
t←t/2
とする。
4.(ki,li)=(0,0)の場合には、
ki←1−ki−1,ki−1←−ki−1,
li←1−li−1,li−1←−li−1,
s←(s−2ki+1)/2,
t←(t−2li+1)/2
とする。
5.上記3,4以外の場合には、
s←(s−ki)/2,
t←(t−li)/2
とする。
6.s>0またはt>0であれば、
i←i+1として2.に戻る。そうでなければ、n←iとして、
〈kn・・・k0〉,〈ln・・・l0〉を出力する。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
これらのスカラー値を入力して、点のスカラー倍加算点[kP+lQ]を算出する。基本的には、先に説明した[点のスカラー倍同時計算のアルゴリズム]を実行することになるが、先に説明したように、
(a)(ki,li)のすべての組み合わせにおいて、すべて同一の演算処理が実行される。
(b)P+Qの演算処理が省略できる。
上記(a),(b)が実現され、従来の演算アルゴリズムと異なるアルゴリズムとなる。図5に示すフローを参照して本発明の[点のスカラー倍同時計算のアルゴリズム]について説明する。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
に変換する。この処理は、図1に示すスカラー値制御部101において実行される処理であり、先に、図3を参照して説明した[アルゴリズム1]、または、図4を参照して説明した[アルゴリズム2]に従って実行される。
[点のスカラー倍同時計算のアルゴリズム]
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n−1 downto 0 do
T←2T
If (ki,li)≠(0,0) then
T←T+(kiP+liQ)
4.Return T
この処理を基本としているが、複数の変更点を有する。
T←(knP+lnQ)
i←n−1
とする。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ2に相当する処理として実行される。iは、JRF表現としての
k=<kn,・・・k0>、
l=<ln,・・・l0>、
のビット位置を示す変数として利用される。
i≧0
が成立するか否かが判定される。i≧0が成立しない場合は、kP+lQの算出処理が終了したことを意味する。
T←2T
とし、さらに、ステップS306において、
T←T+(kiP+liQ)
とする処理を実行する。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ3に相当する処理として実行される。
If (ki,li)≠(0,0) then
T←T+(kiP+liQ)
この処理が、本発明に従った処理では、全ての(ki,li)の組み合わせにおいて実行される。この処理の結果、電力解析ビット値の解析を困難化することが可能となる。
i←i+1
を実行し、ステップS304以下を繰り返し実行する。
最終的に、ステップS304において、
i≧0
が成立しないと判定されると、kP+lQの算出処理が終了したと判定し、ステップS308において、T=kP+lQを出力して処理を終了する。
1.k,lをJRFで表現し、
〈kn・・・k0〉,
〈ln・・・l0〉
を出力する。
2.T←(knP+lnQ),
i←n−1
とする。
3.i≧0でなければ、Tを出力し終了する。
4.T←2Tを点の2倍算を用いて計算する。
5.T←T+(kiP+liQ)を点の加算を用いて計算する。
6.i←n−1とし、3.に戻る。
kが偶数で、lが奇数、または、
kが奇数で、lが偶数、
これらのいずれかの場合を前提としている処理である。これは、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(ki,li)=(0,±1)または(±1,0)
を満足するための必須要件となるからである。
(ki,li)=(0,±1)または(±1,0)
を満足するJRF表現が設定できない。このため、ステップS404,S405において、フラグの設定およびスカラー値の調整を実行する。すなわち、ステップS404において、スカラー値の調整が実行されることを示すフラグ[1]を設定する。これは、例えば暗号処理部100のアクセス可能なメモリに、kP+lQの処理データに対応するフラグとして設定する。
(ki,li)=(0,±1)または(±1,0)
を満足するJRF表現が設定可能となる。
(ki,li)=(0,±1)または(±1,0)
を満足するJRF表現が設定可能であり、ステップS403において、スカラー値の調整が実行されていないことを示すフラグ[0]を設定する。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
に変換する。この処理は、図1に示すスカラー値制御部101において実行される処理であり、先に、図3を参照して説明した[アルゴリズム1]、または、図4を参照して説明した[アルゴリズム2]に従って実行される。
T←(knP+lnQ)
i←n−1
とする。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ2に相当する処理として実行される。iは、JRF表現としての
k=<kn,・・・k0>、
l=<ln,・・・l0>、
のビット位置を示す変数として利用される。なお、このアルゴリズムにおいても、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ1の[Compute P+Q]の算出処理が省略される。
i≧0
が成立するか否かが判定される。i≧0が成立しない場合は、kP+lQの算出処理が終了したことを意味する。
T←2T
とし、さらに、ステップS410において、
T←T+(kiP+liQ)
とする処理を実行する。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ3に相当する処理として実行される。本処理例でも、先に図5を参照して説明したアルゴリズム3と同様、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ3では、(ki,li)の値に基づく選択的な処理として実行されていた処理、すなわち、
If (ki,li)≠(0,0) then
T←T+(kiP+liQ)
この処理が、本アルゴリズム4では、全ての(ki,li)の組み合わせにおいて実行される。この処理の結果、電力解析ビット値の解析を困難化することが可能となる。
i←i+1
を実行し、ステップS408以下を繰り返し実行する。
最終的に、ステップS408において、
i≧0
が成立しないと判定されると、kP+lQの算出処理が終了したと判定し、ステップS412において、設定済みのフラグの判定がなされる。フラグに[1]が設定されている場合は、演算実行部において算出したT=kP+lQの算出に適用したスカラー値[k]は、入力されたスカラー値ではなく、ステップS405において、k←k+1の処理で更新されたスカラー値であると判定し、ステップS413において、補正計算として、
T←T−P
の補正計算を実行する。この補正計算の後、ステップS414において、計算結果として、
T=kP+lQ
を出力して処理を終了する。
T=kP+lQ
を出力して処理を終了する。
1.k,lの偶奇が同じであれば、
k←k+1,
flag←1
とする。そうでなければ、
flag←0とする。
2.k,lをJRFで表現し、
〈kn・・・k0〉,
〈ln・・・k0〉
を出力する。
3.T←(knP+lnQ),
i←n−1とする。
4.i≧0でなければ、8.に進む。
5.T←2Tを点の2倍算を用いて計算する。
6.T←T+(kiP+liQ)を点の加算を用いて計算する。
7.i←n−1とし、3.に戻る。
8.flag=1であれば,T←T−Pとする。
Tを出力する。
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成する処理を実行するスカラー値制御部であり、図1に示す演算実行部102は、スカラー値制御部101の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する。
(ki,li)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成する処理を実行し、演算実行部102は、変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行する構成を持つ。
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)を選択し、スカラー倍加算:kP+lQ、またはkD1+lD2を同時に計算する同時計算手法を適用した演算を実行する構成であり、JRF表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)のすべてについて、同一の計算シーケンスを適用した演算処理を実行し、また演算処理において、加算点:P+Q、または加算因子:D1+D2の算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する。
最後に、上述の暗号処理を実行するデバイスとしてのICモジュール200の構成例を図7に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図7に示すICモジュール200は、これら様々な機器に構成することが可能である。
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成し、このJRF表現のスカラー値を適用してスカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する構成としたので、(ki,li)のすべての組み合わせにおいて同一の演算処理シーケンスを実行可能となり、ビットの組み合わせに応じた処理の差異がなくなり電力解析に対する耐性が向上し、また、P+QやD1+D2の事前計算の省略が可能となり演算処理の高速化が実現される。
101 スカラー値制御部
102 演算実行部
200 ICモジュール
201 CPU(Central Processing Unit)
202 メモリ
203 暗号処理部
204 乱数発生器
205 送受信部
Claims (11)
- 楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D1,D2、およびスカラー値k,lに基づくスカラー倍加算:kD1+lD2、
いずれかのスカラー倍加算演算を実行する暗号処理装置であり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(ki,li)、ただしi=0〜n、の全てを、
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成するスカラー値制御部と、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する演算実行部と、
を有することを特徴とする暗号処理装置。 - 前記スカラー値制御部は、
スカラー値k,lが、両者とも偶数、または両者とも奇数である場合、いずれか一方のスカラー値の値を変更して、偶数と奇数の組み合わせに設定し、変更したスカラー値k,lについて、対応ビット位置のビットの組み合わせ(ki,li)が、
(ki,li)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成する処理を実行する構成であり、
前記演算実行部は、
前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。 - 前記演算実行部は、
前記JRF表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)を選択し、スカラー倍加算:kP+lQ、またはkD1+lD2 の計算に際して、kPとlQ、またはkD 1 とlD 2 を同時に計算する同時計算手法を適用した演算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。 - 前記演算実行部は、
前記JRF表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)のすべてについて、
T←(k n P+l n Q)、または、T←k n D 1 +l n D 2 、
上記Tの算出処理を同じ計算アルゴリズムに従って実行する構成であることを特徴とする請求項3に記載の暗号処理装置。 - 前記演算実行部は、
演算処理において、加算点:P+Q、または加算因子:D1+D2の算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する構成であることを特徴とする請求項3に記載の暗号処理装置。 - 楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D1,D2、およびスカラー値k,lに基づくスカラー倍加算:kD1+lD2、
いずれかのスカラー倍加算演算を、暗号処理装置において実行する暗号処理方法であり、
スカラー値制御部における実行ステップであり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(ki,li)、ただしi=0〜n、の全てを、
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成するスカラー値制御ステップと、
演算実行部における実行ステップであり、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する演算実行ステップと、
を有することを特徴とする暗号処理方法。 - 前記スカラー値制御ステップは、
スカラー値k,lが、両者とも偶数、または両者とも奇数である場合、いずれか一方のスカラー値の値を変更して、偶数と奇数の組み合わせに設定し、変更したスカラー値k,lについて、対応ビット位置のビットの組み合わせ(ki,li)が、
(ki,li)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成する処理を実行するステップであり、
前記演算実行ステップは、
前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行するステップであることを特徴とする請求項6に記載の暗号処理方法。 - 前記演算実行ステップは、
前記JRF表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)を選択し、スカラー倍加算:kP+lQ、またはkD1+lD2 の計算に際して、kPとlQ、またはkD 1 とlD 2 を同時に計算する同時計算手法を適用した演算を実行するステップであることを特徴とする請求項6に記載の暗号処理方法。 - 前記演算実行ステップは、
前記JRF表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
の対応ビット(ki,li)のすべてについて、
T←(k n P+l n Q)、または、T←k n D 1 +l n D 2 、
上記Tの算出処理を同じ計算アルゴリズムに従って実行するステップであることを特徴とする請求項8に記載の暗号処理方法。 - 前記演算実行ステップは、
演算処理において、加算点:P+Q、または加算因子:D1+D2の算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行するステップであることを特徴とする請求項8に記載の暗号処理方法。 - 楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D1,D2、およびスカラー値k,lに基づくスカラー倍加算:kD1+lD2、
いずれかのスカラー倍加算演算を、暗号処理装置において実行させるコンピュータ・プログラムであり、
スカラー値制御部において実行させるステップであり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(ki,li)、ただしi=0〜n、の全てを、
(ki,li)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<kn,・・・k0>、
l=<ln,・・・l0>、
を生成するスカラー値制御ステップと、
演算実行部において実行させるステップであり、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD1+lD2の演算処理を実行する演算実行ステップと、
を実行させることを特徴とするコンピュータ・プログラム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006007105A JP4682852B2 (ja) | 2006-01-16 | 2006-01-16 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
KR1020070003225A KR101269737B1 (ko) | 2006-01-16 | 2007-01-11 | 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 |
US11/653,182 US7835517B2 (en) | 2006-01-16 | 2007-01-12 | Encryption processing apparatus, encryption processing method, and computer program |
DE602007001538T DE602007001538D1 (de) | 2006-01-16 | 2007-01-16 | Verschlüsselungsverarbeitungsvorrichtung, Verschlüsselungsverarbeitungsverfahren und Computerprogramm |
EP07100626A EP1808762B1 (en) | 2006-01-16 | 2007-01-16 | Encryption processing apparatus, encryption processing method, and computer program |
CN2007100017341A CN101005350B (zh) | 2006-01-16 | 2007-01-16 | 加密处理设备和加密处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006007105A JP4682852B2 (ja) | 2006-01-16 | 2006-01-16 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007187958A JP2007187958A (ja) | 2007-07-26 |
JP4682852B2 true JP4682852B2 (ja) | 2011-05-11 |
Family
ID=38002237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006007105A Expired - Fee Related JP4682852B2 (ja) | 2006-01-16 | 2006-01-16 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US7835517B2 (ja) |
EP (1) | EP1808762B1 (ja) |
JP (1) | JP4682852B2 (ja) |
KR (1) | KR101269737B1 (ja) |
CN (1) | CN101005350B (ja) |
DE (1) | DE602007001538D1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7961872B2 (en) * | 2006-12-04 | 2011-06-14 | Lsi Corporation | Flexible hardware architecture for ECC/HECC based cryptography |
CA2593723C (en) * | 2007-06-27 | 2016-04-19 | Certicom Corp. | Multi-dimensional montgomery ladders for elliptic curves |
KR100965813B1 (ko) * | 2007-12-28 | 2010-06-24 | 경원대학교 산학협력단 | 유비쿼터스 환경에서 안전한 메시지 전송을 위한타원곡선기반의 rfid 암호 방법 |
JP5094882B2 (ja) * | 2008-01-18 | 2012-12-12 | 三菱電機株式会社 | 暗号パラメータ設定装置及び鍵生成装置及び暗号システム及びプログラム及び暗号パラメータ設定方法及び鍵生成方法 |
JP5446678B2 (ja) * | 2009-09-29 | 2014-03-19 | 富士通株式会社 | 楕円曲線暗号演算装置及び方法 |
US9400636B2 (en) * | 2011-02-11 | 2016-07-26 | Infineon Technologies Ag | Apparatus and method for calculating a result in a scalar multiplication |
FR3024808B1 (fr) * | 2014-08-05 | 2016-07-29 | Inside Secure | Procede de cryptographie sur courbe elliptique comprenant une detection d’erreur |
CN104486074B (zh) * | 2014-12-12 | 2017-06-23 | 湘潭大学 | 用于嵌入式设备的椭圆曲线加密方法和解密方法 |
CN104786986A (zh) * | 2015-03-25 | 2015-07-22 | 王方圆 | 新型滚码汽车防盗器 |
WO2018145191A1 (en) * | 2017-02-13 | 2018-08-16 | Infosec Global Inc. | System and method for optimized elliptic curve cryptography operations |
CN107241198A (zh) * | 2017-08-01 | 2017-10-10 | 北京智慧云测科技有限公司 | 一种椭圆曲线算法的安全性评估方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003263110A (ja) * | 2002-03-08 | 2003-09-19 | Nippon Telegr & Teleph Corp <Ntt> | 楕円曲線上の有理点群の部分群の元生成装置、そのプログラム及び記録媒体 |
JP2004205870A (ja) * | 2002-12-26 | 2004-07-22 | Hitachi Ltd | 超楕円曲線スカラー倍演算方法及び装置 |
JP2005258228A (ja) * | 2004-03-12 | 2005-09-22 | Sony Corp | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2791497B1 (fr) * | 1999-03-26 | 2001-05-18 | Gemplus Card Int | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique |
JP2003098962A (ja) * | 2001-09-20 | 2003-04-04 | Hitachi Ltd | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 |
FR2811168B1 (fr) * | 2000-06-30 | 2002-11-15 | Gemplus Card Int | Procede de conversion de la representation binaire d'un nombre dans une representation binaire signee |
JP3820909B2 (ja) * | 2001-04-24 | 2006-09-13 | ソニー株式会社 | 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム |
JP4034585B2 (ja) * | 2002-01-28 | 2008-01-16 | 松下電器産業株式会社 | 楕円曲線演算装置及び楕円曲線演算方法 |
ATE352830T1 (de) * | 2002-10-26 | 2007-02-15 | Additional Director Ipr Defenc | Verfahren zur elliptische-kurven-verschlüsselung |
US7555122B2 (en) * | 2002-12-04 | 2009-06-30 | Wired Communications LLC | Method for elliptic curve point multiplication |
EP1548687B1 (en) * | 2002-12-18 | 2013-01-09 | Fujitsu Limited | Tamper-resistant elliptical curve encryption using secret key |
JP2006145945A (ja) * | 2004-11-22 | 2006-06-08 | Sony Corp | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム |
US7602907B2 (en) * | 2005-07-01 | 2009-10-13 | Microsoft Corporation | Elliptic curve point multiplication |
US8913739B2 (en) * | 2005-10-18 | 2014-12-16 | Telecom Italia S.P.A. | Method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems |
US8243920B2 (en) * | 2005-10-28 | 2012-08-14 | Telecom Italia S.P.A. | Method for scalar multiplication in elliptic curve groups over binary polynomial fields for side-channel attack-resistant cryptosystems |
-
2006
- 2006-01-16 JP JP2006007105A patent/JP4682852B2/ja not_active Expired - Fee Related
-
2007
- 2007-01-11 KR KR1020070003225A patent/KR101269737B1/ko not_active IP Right Cessation
- 2007-01-12 US US11/653,182 patent/US7835517B2/en not_active Expired - Fee Related
- 2007-01-16 EP EP07100626A patent/EP1808762B1/en not_active Expired - Fee Related
- 2007-01-16 CN CN2007100017341A patent/CN101005350B/zh not_active Expired - Fee Related
- 2007-01-16 DE DE602007001538T patent/DE602007001538D1/de active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003263110A (ja) * | 2002-03-08 | 2003-09-19 | Nippon Telegr & Teleph Corp <Ntt> | 楕円曲線上の有理点群の部分群の元生成装置、そのプログラム及び記録媒体 |
JP2004205870A (ja) * | 2002-12-26 | 2004-07-22 | Hitachi Ltd | 超楕円曲線スカラー倍演算方法及び装置 |
JP2005258228A (ja) * | 2004-03-12 | 2005-09-22 | Sony Corp | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム |
Also Published As
Publication number | Publication date |
---|---|
EP1808762B1 (en) | 2009-07-15 |
KR101269737B1 (ko) | 2013-05-30 |
DE602007001538D1 (de) | 2009-08-27 |
KR20070076440A (ko) | 2007-07-24 |
CN101005350B (zh) | 2011-04-06 |
US7835517B2 (en) | 2010-11-16 |
CN101005350A (zh) | 2007-07-25 |
US20070211894A1 (en) | 2007-09-13 |
EP1808762A1 (en) | 2007-07-18 |
JP2007187958A (ja) | 2007-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4682852B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
KR101154695B1 (ko) | 암호 처리 연산 장치 | |
JP4668931B2 (ja) | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 | |
US7379546B2 (en) | Method for XZ-elliptic curve cryptography | |
KR20020025630A (ko) | 비밀 정보의 처리 장치, 프로그램 또는 시스템 | |
US8102998B2 (en) | Method for elliptic curve scalar multiplication using parameterized projective coordinates | |
JP4513752B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
KR101019242B1 (ko) | 확장된 몽고메리 레더를 이용한 스칼라 곱셈 방법 | |
JP2003098962A (ja) | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 | |
US8014520B2 (en) | Exponentiation ladder for cryptography | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
Vijayakumar et al. | Comparative study of hyperelliptic curve cryptosystem over prime field and its survey | |
US7177422B2 (en) | Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program | |
US20160072622A1 (en) | Method and apparatus for scalar multiplication secure against differential power attacks | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
Iyengar | Novel elliptic curve scalar multiplication algorithms for faster and safer public-key cryptosystems | |
Al-Haija et al. | Cost-effective design for binary Edwards elliptic curves crypto-processor over GF (2N) using parallel multipliers and architectures | |
JP2006235416A (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
Shankar et al. | Cryptography with fast point multiplication by using ASCII codes and its implementation | |
Liu et al. | A novel elliptic curve scalar multiplication algorithm against power analysis | |
Dhanda et al. | Elliptic Curve Cryptography: A Software Implementation | |
JP2004053814A (ja) | 楕円曲線暗号装置及び楕円曲線暗号演算方法 | |
Kocabas et al. | Hardware implementations of ECC over a binary Edwards curve | |
JP2007212768A (ja) | 楕円曲線暗号における事前計算テーブル作成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100518 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100709 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110111 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110124 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140218 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140218 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |