專利名稱:用于橢圓曲線上的點(diǎn)的通用計(jì)算方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于橢圓曲線上的一些點(diǎn)的通用計(jì)算方法和包括實(shí)現(xiàn)這種方法的裝置的電子組件。本發(fā)明特別適用于實(shí)現(xiàn)例如在芯片卡(chip card)內(nèi)的公開密鑰(public key)型的密碼算法(cryptographic algorithm)。
背景技術(shù):
橢圓曲線上的公開密鑰算法(Public key algorithm)允許實(shí)現(xiàn)保密、數(shù)字簽名、認(rèn)證等類型的密碼應(yīng)用。
特別是,這些公開密鑰算法很多用于芯片卡型的應(yīng)用,因?yàn)樗鼈兛梢圆捎锰幚頃r(shí)間相當(dāng)短的短密鑰,從而可以不需要用密碼處理器實(shí)現(xiàn),這就降低了實(shí)現(xiàn)它們的電子器件的生產(chǎn)成本。
為了定義可用于密碼技術(shù),存在各種參數(shù)化。一種經(jīng)常采用的參數(shù)化是所謂的Weierstrass參數(shù)化。然而,應(yīng)該注意的是,Weierstrass參數(shù)化是非常通用的,任何橢圓曲線可以歸為這種參數(shù)化。
對(duì)于記錄在案的來說,如果IK為一個(gè)域,所有滿足以下通用Weierstrass方程(式F1)的點(diǎn)(X,Y)∈1k×IKE/IKY2+a1×X×Y+a3×Y=X3+a2×X2+a4×X+a6其中ai∈1K和無窮遠(yuǎn)點(diǎn)0形成一條橢圓曲線E。在一個(gè)域上的任何橢圓曲線可以用這個(gè)形式表示。
所有的點(diǎn)(X,Y)和無窮遠(yuǎn)點(diǎn)0形成一個(gè)交換群(Abelian group),無窮遠(yuǎn)點(diǎn)0為零元(neutral element),群運(yùn)算為點(diǎn)的相加,標(biāo)為+,由眾所周知的割線和切線法則給出。在這個(gè)群內(nèi),數(shù)對(duì)(X,Y)(X為橫坐標(biāo),Y為縱坐標(biāo)軸)是域IK的元,形成橢圓曲線上的一個(gè)點(diǎn)P的仿射坐標(biāo)(affine coordinate)。
用仿射坐標(biāo)內(nèi)的數(shù)對(duì)(X,Y)表示的點(diǎn)P也可以用一般形式的射影坐標(biāo)(projective coordinate)(U,V,W)表示。
特別是,射影坐標(biāo)在對(duì)橢圓曲線上的點(diǎn)的求冪運(yùn)算中是令人感興趣的,因?yàn)樗鼈儾话ㄈ魏卧谶@個(gè)域內(nèi)的逆運(yùn)算。
點(diǎn)P可以用一般形式(U,V,W)的所謂Jacobi射影坐標(biāo)表示,(X,Y)與(U,V,W)的關(guān)系由下式表示x=U/W2;Y=V/W3(式F2)采用Jacobi坐標(biāo),橢圓曲線的Weierstrass方程就成為E/IKV2+a1UVW+a3VW3=U3+a2U2W2+a4UW4+a6W6點(diǎn)P也可以用一般形式(U,V,W)的所謂齊次射影坐標(biāo)表示,這樣,(X,Y)和(U,V,W)的關(guān)系由以下式表示X=U/W;Y=V/W (式F3)采用齊次坐標(biāo),橢圓曲線的Weierstrass方程就成為E/IKV2W+a1UVW+a3VW2=U3+a2U2W+a4UW2+a6W3(式F4)可以按照曲線定義的域的特征數(shù)將Weierstrass方程表達(dá)成簡(jiǎn)化形式。應(yīng)該說,在一個(gè)有限域內(nèi),域的元的數(shù)目始終可以表示為pn的形式,其中p為一個(gè)質(zhì)數(shù)。p是域的特征數(shù)。如果域不是有限的,這個(gè)特征數(shù)按慣例定義為等于零。
在域的特征數(shù)不為2和3的情況下,在仿射坐標(biāo)內(nèi)Weierstrass方程簡(jiǎn)化為E/IKY2=X3+a×X+b (式F5)其中a和b為橢圓曲線的參數(shù),IK的元。
在射影、Jacobi或者齊次坐標(biāo)內(nèi)Weierstrass參數(shù)化的情況下,當(dāng)然從這個(gè)在仿射坐標(biāo)內(nèi)的簡(jiǎn)化方程可以得出一些等效的公式表示。
如果域的特征數(shù)等于2,非超奇異曲線的Weierstrass方程在仿射坐標(biāo)內(nèi)可以簡(jiǎn)化為E/IKV2+XY=X3+a×X2+b(式F6)其中a和b為橢圓曲線的參數(shù),IK的元。
在射影、Jacobi或者齊次坐標(biāo)內(nèi)Weierstrass參數(shù)化的情況下,當(dāng)然從這個(gè)在仿射坐標(biāo)內(nèi)的簡(jiǎn)化方程可以得出一些如前面那樣的等效的公式表示。
按照定義橢圓曲線的參數(shù)化和按照用以執(zhí)行處理的坐標(biāo),可應(yīng)用各種點(diǎn)的相加、相減和加倍的公式。在許多為熟悉該技術(shù)的人員所知的參考文獻(xiàn)中都給出了這些公式。也應(yīng)注意的是,在射影坐標(biāo)的情況下,這些公式不是唯一的,因?yàn)槿缡紽2和F3所示,仿射坐標(biāo)內(nèi)的一個(gè)點(diǎn)具有幾個(gè)等效的射影表示。
在仿射坐標(biāo)內(nèi)的Weierstrass參數(shù)化給出的橢圓曲線E的例子中,這些公式如下。
這條曲線的點(diǎn)P1=(X1,Y1)的逆為具有坐標(biāo)(X1,Y1)的點(diǎn)-P1,其中Y1=-Y1-a1×X1-a3 (式F11)這條曲線的坐標(biāo)(X1,Y1)的點(diǎn)P1和坐標(biāo)(X2,Y2)的點(diǎn)P2的加法運(yùn)算在P1≠-P2的情況下給出具有坐標(biāo)(X3,Y3)的點(diǎn)P3=P1+P2,有X3=λ2+a1×λ-a2-X1-X2 (式F12)Y3=-(λ+a1)×X3-μ-a3(式F13)其中λ=(Y1-Y2)/(X1-X2),如果X1≠X2 (式F14)λ=(3X12+2×a2×X1+a4-a1×Y1)/(2Y1+a1×X1+a3),如果X1=X2(式F15)以及μ=Y(jié)1-λ×X1 (式F16)
式F14是兩個(gè)相異點(diǎn)相加的公式P3=P1+P2,而式F15是點(diǎn)加倍的公式P3=2×P1。
從這些在仿射坐標(biāo)內(nèi)的方程當(dāng)然可以得出在射影、Jacobi或齊次坐標(biāo)內(nèi)的等效公式表示。
在特征數(shù)不為2和3的域上Weierstrass參數(shù)化給出的橢圓曲線E的例子中,點(diǎn)的相加、相減和加倍的公式得到簡(jiǎn)化,因?yàn)檫@條曲線的方程本身簡(jiǎn)化為a1=a2=a3=0,a4=a,而a5=b。
在仿射坐標(biāo)內(nèi)的Weierstrass參數(shù)化的情況下,簡(jiǎn)化后的點(diǎn)的加、減和倍增的公式于是如下。
這條曲線E的一個(gè)點(diǎn)P1=(X1,Y1)的逆為點(diǎn)-P1=(X1,Y1),其中Y1=-Y1 (式F17)這條曲線的坐標(biāo)(X1,Y1)的點(diǎn)P1與坐標(biāo)(X2,Y2)的點(diǎn)P2的相加運(yùn)算在P1≠-P2的情況下給出點(diǎn)P3=P1+P2,其坐標(biāo)(X3,Y3)為X3=λ2-X1-X2Y3=λ×(X1-X3)-Y1其中λ=(Y1-Y2)/(X1-X2),如果P1≠P2 (式18)λ=(3×X12+a)/(2×Y1),如果P1=P2(式19)式18是兩個(gè)相異點(diǎn)相加的公式P3=P1+P2,而式19是點(diǎn)加倍的公式P3=2×P1。
定義在特征數(shù)為2的域上的非超奇異橢圓曲線的點(diǎn)的相加和加倍的簡(jiǎn)化公式以類似方式從通式(式F12至F16)通過假設(shè)a1=1,a3=a4=0,a2=a,以及a6=b得出。
點(diǎn)的相加或相減和倍增的運(yùn)算是橢圓曲線上的指數(shù)算法中所用的基本運(yùn)算給定一個(gè)屬于橢圓曲線E的點(diǎn)P1和一個(gè)預(yù)定數(shù)(一個(gè)整數(shù))d,點(diǎn)P1與數(shù)d的標(biāo)量相乘的結(jié)果為曲線E上的點(diǎn)P2,P2=d×P1=P1+P1+...+P1(d個(gè)P1相加)。因此一條橢圓曲線上的公開密鑰(Public key)密碼算法是基于在曲線上所選的一個(gè)點(diǎn)P1與一個(gè)預(yù)定數(shù)d(秘密密鑰(secret key))的標(biāo)量相乘。標(biāo)量相乘d×P1的結(jié)果是一個(gè)在這個(gè)橢圓曲線上的點(diǎn)P2。在一個(gè)按照E1 Gamal方法加密的應(yīng)用實(shí)例中,所得到的點(diǎn)P2是用來對(duì)消息加密的公開密鑰。
標(biāo)量相乘P2=d×P1的運(yùn)算可以用各種算法實(shí)現(xiàn)??梢粤信e其中的一些,諸如基于指數(shù)d的二進(jìn)制表示的加倍和相加算法,基于指數(shù)d的帶符號(hào)二進(jìn)制表示的相加-相減算法,滑窗算法(window algorithm)等。所有的這些算法都采用在橢圓曲線上定義的相加、相減和加倍公式。
然而,這些算法已證明是容易受到針對(duì)發(fā)現(xiàn)特別是秘密密鑰的值的攻擊。特別可以列舉的是隱蔽性信道攻擊,簡(jiǎn)單的或差分的。簡(jiǎn)單或差分的隱蔽性信道攻擊意味著以設(shè)備外界可測(cè)量的物理量為基礎(chǔ)的攻擊,通過直接分析(簡(jiǎn)單攻擊)或按照統(tǒng)計(jì)方法(差分攻擊)有可能發(fā)現(xiàn)在設(shè)備內(nèi)處理中所包含和處理的信息。這些攻擊因此可以發(fā)現(xiàn)機(jī)密的信息。在Paul Kocher的“密碼學(xué)進(jìn)展”(“Advances in Cryptology”,CRYPTO’99,Vol.1666 of Lecture Notes in Computer Science,pp.388-397,Springer-Verlag,1999))中特別揭示了這些攻擊。在為了達(dá)到這些目的可以利用的物理量中有執(zhí)行時(shí)間、電流消耗、用來執(zhí)行運(yùn)算的部分組件輻射的電磁場(chǎng)等。這些攻擊基于對(duì)一個(gè)比特的操作(即用一個(gè)特定的指令對(duì)它的處理)按照這個(gè)比特的值和/或按照這個(gè)指令會(huì)對(duì)所述的物理量有特定的影響。
在基于橢圓曲線的密碼系統(tǒng)中,這些攻擊與標(biāo)量相乘有關(guān)。
如果以在Weierstrass參數(shù)化的橢圓曲線上的標(biāo)量相乘算法為例,這種算法可以是易受簡(jiǎn)單型隱蔽性信道攻擊的,因?yàn)榧颖逗拖嗉拥幕具\(yùn)算本質(zhì)上是不同的,如以上面F14和F15或者F18和F19中對(duì)λ的計(jì)算所示。
因此,需要提供防止各種攻擊成功的對(duì)抗方法。也就是說,必須使標(biāo)量相乘算法安全可靠。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是實(shí)現(xiàn)一種對(duì)橢圓曲線的通用計(jì)算方法,廣義地說一種密碼方法,防止隱蔽性信道攻擊。
就此而言,本發(fā)明的目的是提供一種對(duì)由Weierstrass方程定義的橢圓曲線上的點(diǎn)的通用計(jì)算方法。按照本發(fā)明,用完全相同編程的計(jì)算裝置執(zhí)行點(diǎn)的相加運(yùn)算和點(diǎn)的加倍運(yùn)算。這種計(jì)算裝置特別包括一個(gè)中央處理單元和一個(gè)存儲(chǔ)器。
因此,采用本發(fā)明,一條橢圓曲線上的點(diǎn)的加倍和相加基本運(yùn)算是完全相同的,由完全相同的計(jì)算裝置執(zhí)行,具有相同的公式表示。因此不再能區(qū)別它們,特別是在簡(jiǎn)單隱蔽性信道攻擊的情況下。所以,按照本發(fā)明設(shè)計(jì)的通用計(jì)算方法防止了這樣的攻擊。
一般地說,對(duì)一條橢圓曲線上的點(diǎn)進(jìn)行標(biāo)量相乘的方法或采用按照本發(fā)明設(shè)計(jì)的通用計(jì)算方法的根據(jù)橢圓曲線的密碼方法以同樣的方式得到保護(hù)。
無論用仿射、射影、Jacobi還是齊次坐標(biāo)來執(zhí)行這些計(jì)算,這都是正確的。因此,用單個(gè)λ值來執(zhí)行點(diǎn)的相加或加倍。
按照一個(gè)通用實(shí)施例,為了執(zhí)行一個(gè)由第一仿射坐標(biāo)(X1,Y1)定義的第一點(diǎn)P1與一個(gè)由第二仿射坐標(biāo)(X2,Y2)定義的第二點(diǎn)P2的相加,將第一點(diǎn)P1的仿射坐標(biāo)和第二點(diǎn)P2的仿射坐標(biāo)分別存儲(chǔ)在存儲(chǔ)器的第一和第二寄存器內(nèi),第一點(diǎn)和第二點(diǎn)都屬于由以下類型的Weierstrass方程定義的橢圓曲線Y2+a1×X×Y+a3×Y=X3+a2×X2+a4×X+a6(X,Y)為曲線上的點(diǎn)的仿射坐標(biāo),而a1、a2、a3、a4、a5、a6為橢圓曲線的參數(shù),編程的計(jì)算裝置用下式計(jì)算定義一個(gè)作為加法結(jié)果的第三點(diǎn)P3的第三仿射坐標(biāo)(X3,Y3)X3=λ2+a1×λ-a2-X1-X2(式F12)Y3=-(λ+a1)×X3-μ-a3 (式F13)其中λ=(X12+X1×X2+X22+a2×X1+a2×X2+a4-a1×Y1)/(Y1+Y2+a1×X2+a3)(式F20)μ=Y(jié)1-λ×X1 (式F16)第二點(diǎn)不同于第一點(diǎn)P1的逆(-P1),第二點(diǎn)等于第一點(diǎn)或者不同于第一點(diǎn),然后,將第三仿射坐標(biāo)(X3,Y3)存儲(chǔ)在存儲(chǔ)器的第三寄存器內(nèi)。
在X1≠X2的情況下,也就是說在P1≠P2(名符其實(shí)的兩個(gè)不同的點(diǎn)的相加)的情況下,式F20定義的λ與式F14定義的現(xiàn)有技術(shù)的λ完全相同。同樣,在X1=X2(一個(gè)點(diǎn)的加倍操作)的情況下,也就是說在P1=P2(一個(gè)點(diǎn)的加倍)的情況下,式F20定義的λ與式F15定義的現(xiàn)有技術(shù)的λ完全相同。這將在下面在一個(gè)例子中更為精確地示出。
因此,在一條由Weierstrass參數(shù)化定義的橢圓曲線的情況下可以用同一個(gè)λ值執(zhí)行點(diǎn)的相加或加倍。
按照另一個(gè)實(shí)施例,為了執(zhí)行一個(gè)由第一仿射坐標(biāo)(X1,Y1)定義的第一點(diǎn)P1與一個(gè)由第二仿射坐標(biāo)(X2,Y2)定義的第二點(diǎn)P2的相加,將第一點(diǎn)P1的仿射坐標(biāo)和第二點(diǎn)P2的仿射坐標(biāo)分別存儲(chǔ)在存儲(chǔ)器的第一和第二寄存器內(nèi),第一點(diǎn)和第二點(diǎn)都屬于由以下類型的簡(jiǎn)化Weierstrass方程定義的在特征數(shù)不為2或3的域上的橢圓曲線Y2=X3+a×X+b,(X,Y)為曲線上的點(diǎn)的仿射坐標(biāo),而a、b為橢圓曲線的參數(shù),編程的計(jì)算裝置用下式計(jì)算定義一個(gè)作為相加結(jié)果的第三點(diǎn)P3的第三仿射坐標(biāo)(X3,Y3)X3=λ2-X1-X2Y3=λ×(X1-X3)-Y1其中λ=(X12+X1×X2+X22+a)/(Y1+Y2)(式F21)第二點(diǎn)不同于第一點(diǎn)P1的逆(-P1),第二點(diǎn)等于第一點(diǎn)或者不同于第一點(diǎn),然后,將第三仿射坐標(biāo)(X3,Y3)存儲(chǔ)在存儲(chǔ)器的第三寄存器內(nèi)。
在由簡(jiǎn)化的Weierstrass參數(shù)化定義的在特征數(shù)不為2和3的域上的橢圓曲線的情況下,在這里也是可以用同一個(gè)λ值執(zhí)行點(diǎn)的相加或加倍。
按照另一個(gè)實(shí)施例,為了執(zhí)行一個(gè)由第一仿射坐標(biāo)(X1,Y1)定義的第一點(diǎn)P1與一個(gè)由第二仿射坐標(biāo)(X2,Y2)定義的第二點(diǎn)P2的相加,將第一點(diǎn)P1的仿射坐標(biāo)和第二點(diǎn)P2的仿射坐標(biāo)分別存儲(chǔ)在存儲(chǔ)器(6,8)的第一和第二寄存器內(nèi),第一點(diǎn)和第二點(diǎn)都屬于由以下類型的簡(jiǎn)化Weierstrass方程定義的在特征數(shù)為2的域上的非超奇異橢圓曲線Y2+XY=X3+a×X2+b,(X,Y)為曲線上的點(diǎn)的仿射坐標(biāo),而a、b為橢圓曲線的參數(shù),編程的計(jì)算裝置用下式計(jì)算定義一個(gè)作為加法結(jié)果的第三點(diǎn)P3的第三仿射坐標(biāo)(X3,Y3)X3=λ2+λ+a+X1+X2Y3=λ×(X1+X3)+X3+Y1其中λ=(X12+X1×X2+X22+aX1+aX2+Y1)/(Y1+Y2+X2)(式F22)第二點(diǎn)不同于第一點(diǎn)P1的逆(-P1),第二點(diǎn)等于第一點(diǎn)或者不同于第一點(diǎn),然后,將第三仿射坐標(biāo)(X3,Y3)存儲(chǔ)在存儲(chǔ)器的第三寄存器內(nèi)。
在特征數(shù)等于2的域上的非超奇異橢圓曲線情況下,在這里也是可以用同一個(gè)λ值執(zhí)行點(diǎn)的相加或加倍。
如剛才所看到的那樣,按照本發(fā)明設(shè)計(jì)的計(jì)算方法可以用同一個(gè)公式表示執(zhí)行對(duì)屬于橢圓曲線的點(diǎn)的相加或加倍運(yùn)算。
一般地說,按照本發(fā)明設(shè)計(jì)的方法可用于對(duì)一條橢圓曲線上的點(diǎn)的全局標(biāo)量相乘計(jì)算方法和/或用于密碼方法。
本發(fā)明的另一個(gè)目的是提供一種包括編程的計(jì)算裝置的電子組件,計(jì)算裝置特別是包括一個(gè)中央處理單元和一個(gè)存儲(chǔ)器,用來實(shí)現(xiàn)一種如上面所說明的執(zhí)行在一條橢圓曲線上的點(diǎn)的相加或加倍的通用計(jì)算方法。所述電子組件可以包括對(duì)用如上面所說明的通用計(jì)算方法的密碼算法的全局使用。
最后,本發(fā)明的另一個(gè)目的是提供一種包括一個(gè)如上所述的電子組件的芯片卡。
從以下結(jié)合一個(gè)附圖對(duì)本發(fā)明的純粹用來說明一些具體實(shí)施例的說明中可以更清楚地理解本發(fā)明和本發(fā)明的優(yōu)點(diǎn)。這個(gè)附圖以方框圖形式示出了能執(zhí)行密碼計(jì)算的電子設(shè)備1。
圖1為一個(gè)結(jié)合入一個(gè)芯片卡的編程的計(jì)算裝置。
具體實(shí)施例方式
在下面的這些例子中,如圖1所示,設(shè)備1是一個(gè)用來執(zhí)行密碼程序的芯片卡。為此,設(shè)備1組合在一個(gè)芯片卡編程的計(jì)算裝置內(nèi),這個(gè)計(jì)算裝置由一個(gè)中央處理單元2和與之連接的一系列存儲(chǔ)器組成,這些存儲(chǔ)器包括一個(gè)只以讀出模式可接入的存儲(chǔ)器4,例如掩模只讀存儲(chǔ)器(掩模ROM),電子可重編程的存儲(chǔ)器6,例如EEPROM(電可擦可編程序只讀存儲(chǔ)器),以及一個(gè)以讀、寫模式可接入的工作存儲(chǔ)器8,例如RAM(隨機(jī)存取存儲(chǔ)器)。這個(gè)存儲(chǔ)器特別是包括由設(shè)備1使用的一些計(jì)算寄存器。
與指數(shù)算法相應(yīng)的可執(zhí)行碼包含在程序存儲(chǔ)器內(nèi)。這個(gè)碼實(shí)際上可以包含在只以讀模式可接入的存儲(chǔ)器4內(nèi)和/或包含在可重寫的存儲(chǔ)器6內(nèi)。
中央處理單元2與一個(gè)提供與外界信號(hào)交換和為芯片供電的通信接口10連接。這個(gè)接口可以包括一些用來與一個(gè)讀出器“接觸”連接和/或在所謂“不接觸”卡的情況下與天線連接的卡上引線。
設(shè)備1的功能之一是對(duì)發(fā)送給外界或從外界接收到的機(jī)密消息M加密或解密。這個(gè)消息可以涉及例如個(gè)人代碼、醫(yī)學(xué)信息、對(duì)銀行或商業(yè)事務(wù)的兼容性、接入某些限制業(yè)務(wù)的授權(quán)等。另一個(gè)功能是計(jì)算或校驗(yàn)數(shù)字信號(hào)。
為了完成這些功能,中央處理單元2根據(jù)存儲(chǔ)在掩模ROM 4和/或EEPROM 6一些部分內(nèi)的編程數(shù)據(jù)執(zhí)行密碼算法。
在這里所用的算法是一種在Weierstrass參數(shù)化橢圓曲線上的公開密鑰算法。確切地說,在這里所涉及的是這種算法的使在仿射坐標(biāo)內(nèi)的基本運(yùn)算(即點(diǎn)的相加或者加倍運(yùn)算)得以執(zhí)行的部分。
在第一個(gè)例子中,橢圓曲線是在特征數(shù)嚴(yán)格大于3的域上的曲線,其方程用a、b?IK表示為E/IKY2=X3+a×X+b在求冪計(jì)算設(shè)備1進(jìn)行相加操作的計(jì)算時(shí),中央處理單元2首先存儲(chǔ)橢圓曲線的兩個(gè)需相加的點(diǎn)P1、P2的坐標(biāo)(X1,Y1)、(X2,Y2)。在這里可以認(rèn)為點(diǎn)P2不同于作為點(diǎn)P1的逆的點(diǎn)(-P1)。
中央處理單元2然后按照下式計(jì)算出一個(gè)中間變量xλ=(X12+X1×X2+X22+a)/(Y1+Y2)(式F21)中央處理單元將這個(gè)變量λ存儲(chǔ)在工作存儲(chǔ)器8的一個(gè)寄存器內(nèi),然后計(jì)算作為點(diǎn)P1與點(diǎn)P2相加的結(jié)果的點(diǎn)P3的坐標(biāo)(X3,Y3)X3=λ2-X1-X2Y3=λ×(X1-X3)-Y1坐標(biāo)(X3,Y3)最終存儲(chǔ)在工作存儲(chǔ)器8的其他寄存器內(nèi),以便在別處使用,例如用于加密算法的其余部分。
也是在這個(gè)例子中,在X1≠X2的情況下,也就是說在P1≠P2(名符其實(shí)的兩個(gè)不同的點(diǎn)的相加)的情況下,式F21定義的λ與式F18定義的現(xiàn)有技術(shù)的λ完全相同。
這是因?yàn)?,根?jù)式F18,λ=(Y1-Y2)/(X1-X2),如果X1≠X2,即有λ=(Y1-Y2)/(X1-X2)=[(Y1-Y2)(Y1-Y2)]/[(X1-X2)(Y1-Y2)]=(Y12-Y22)/[(X1-X2)(Y1+Y2)]由于在這個(gè)例子中Y2=-Y2(式F17),因此得出λ=(X13+a×X1-X23-a×X2)/[(X1-X2)(Y1+Y2)]
由于對(duì)于在這個(gè)例子中所考慮的橢圓曲線上的具有坐標(biāo)(Xi,Yi)的點(diǎn)Pi,有Yi2=Xi3+a×Xi+b,因此給出λ=(X12+X1×X2+X22+a)/(Y1+Y2),即為式F21。
同樣,在X1=X2(一個(gè)點(diǎn)的加倍操作)的情況下,也就是說在P1=P2的情況下,式F21定義的λ與式F19定義的現(xiàn)有技術(shù)的λ完全相同。這是因?yàn)楦鶕?jù)式F21,取X1=X2和Y1=Y(jié)2,就可得出λ=(3×X12+a)/(2×Y1) (式F16)因此,在特征嚴(yán)格大于3和由一個(gè)簡(jiǎn)化Weierstrass參數(shù)化定義的橢圓曲線的情況下,可以用同一個(gè)λ值執(zhí)行點(diǎn)的相加或加倍。
在第二個(gè)例子中,橢圓曲線是一條在特征數(shù)為2的域上的非超奇異曲線,其方程用a、b?IK表示為E/IKY2+XY=X3+a×X2+b正象在上個(gè)例子中那樣,在求冪計(jì)算設(shè)備1進(jìn)行相加運(yùn)算的計(jì)算時(shí),中央處理單元2首先存儲(chǔ)橢圓曲線的兩個(gè)需相加的點(diǎn)P1、P2的坐標(biāo)(X1,Y1)、(X2,Y2)。在那里也可以認(rèn)為點(diǎn)P2不同于作為點(diǎn)P1的逆的點(diǎn)(-P1)。
中央處理單元2然后按照下式計(jì)算出一個(gè)中間變量λλ=(X12+X1×X2+X22+aX1+aX2+Y1)/(Y1+Y2+X2) (式F22)中央處理單元將這個(gè)變量λ存儲(chǔ)在工作存儲(chǔ)器8的一個(gè)寄存器內(nèi),然后計(jì)算作為點(diǎn)P1與點(diǎn)P2相加的結(jié)果的點(diǎn)P3的坐標(biāo)(X3,Y3)X3=λ2+λ+a+X1+X2Y3=λ×(X1+X3)+X3+Y1
坐標(biāo)(X3,Y3)最終存儲(chǔ)在工作存儲(chǔ)器8的其他寄存器內(nèi),以便在別處使用。
也是在這個(gè)例子中,在X1≠X2的情況下,也就是說在P1≠P2(名符其實(shí)的兩個(gè)不同的點(diǎn)的相加)的情況下,式F21定義的λ與式F18定義的現(xiàn)有技術(shù)的λ完全相同。
在特征數(shù)等于2和由Weierstrass參數(shù)化定義的橢圓曲線的情況下,也可以用同一個(gè)λ值執(zhí)行點(diǎn)的相加或加倍。
應(yīng)指出的是,在所有上面所說明的這些例子中,都使用仿射坐標(biāo)。然而,使用射影、齊次或Jacobi坐標(biāo)也完全是可行的。只是要確保在使用時(shí)將這些公式改寫成射影形式。
為此,作為一個(gè)例子在X3和Y3的λ中,仿射坐標(biāo)Xi、Yi將作如下替換*在Jacobi射影坐標(biāo)內(nèi)Xi=Ui/Wi2,Yi=Vi/Wi3;*在齊次射影坐標(biāo)內(nèi)Xi=Ui/Wi,Yi=Vi/Wi。
權(quán)利要求
1.一種其間對(duì)在由一個(gè)Weierstrass方程定義的橢圓曲線上的點(diǎn)執(zhí)行通用計(jì)算操作的密碼方法,其特征是用完全相同編程的計(jì)算裝置執(zhí)行點(diǎn)的相加運(yùn)算和點(diǎn)的加倍運(yùn)算,所述計(jì)算裝置特別包括一個(gè)中央處理單元(2)和一個(gè)與之配合的存儲(chǔ)器(4,6,8)。
2.一種按照權(quán)利要求1所述的方法,其特征是為了執(zhí)行一個(gè)由第一仿射坐標(biāo)(X1,Y1)定義的第一點(diǎn)P1與一個(gè)由第二仿射坐標(biāo)(X2,Y2)定義的第二點(diǎn)P2的相加,將第一點(diǎn)P1的仿射坐標(biāo)和第二點(diǎn)P2的仿射坐標(biāo)分別存儲(chǔ)在存儲(chǔ)器(4,6,8)的第一和第二寄存器內(nèi),第一點(diǎn)和第二點(diǎn)都屬于由以下類型的Weierstrass方程定義的橢圓曲線Y2+a1×X×Y+a3×Y=X3+a2×X2+a4×X+a6(X,Y)為曲線上的點(diǎn)的仿射坐標(biāo),而a1、a2、a3、a4、a5、a6為這條橢圓曲線的參數(shù),所述編程的計(jì)算裝置用下式計(jì)算定義一個(gè)作為加法結(jié)果的第三點(diǎn)P3的第三仿射坐標(biāo)(X3,Y3)X3=λ2+a1×λ-a2-X1-X2Y3=-(λ+a1)×X3-μ-a3其中λ=(X12+X1×X2+X22+a2×X1+a2×X2+a4-a1×Y1)/(Y1+Y2+a1×X2+a3)μ=Y(jié)1-λ×X1第二點(diǎn)不同于第一點(diǎn)P1的逆(-P1),第二點(diǎn)等于第一點(diǎn)或者不同于第一點(diǎn),然后,將第三仿射坐標(biāo)(X3,Y3)存儲(chǔ)在存儲(chǔ)器(6,8)的第三寄存器內(nèi)。
3.一種按照權(quán)利要求1所述的方法,其特征是為了執(zhí)行一個(gè)由第一仿射坐標(biāo)(X1,Y1)定義的第一點(diǎn)P1與一個(gè)由第二仿射坐標(biāo)(X2,Y2)定義的第二點(diǎn)P2的相加,第一點(diǎn)P1的仿射坐標(biāo)和第二點(diǎn)P3的仿射坐標(biāo)分別存儲(chǔ)在存儲(chǔ)器(4,6,8)的第一和第二寄存器內(nèi),第一點(diǎn)和第二點(diǎn)都屬于由以下類型的Weierstrass方程定義的在特征數(shù)不為2或3的域上的橢圓曲線Y2=X3+a×X+b(X,Y)為曲線上的點(diǎn)的仿射坐標(biāo),而a、b為橢圓曲線的參數(shù),所述編程的計(jì)算裝置用下式計(jì)算定義一個(gè)作為加法結(jié)果的第三點(diǎn)P3的第三仿射坐標(biāo)(X3,Y3)X3=λ2-X1-X2Y3=λ×(X1-X3)-Y1其中λ=(X12+X1×X2+X22+a)/(Y1+Y2)第二點(diǎn)不同于第一點(diǎn)P1的逆(-P1),第二點(diǎn)等于第一點(diǎn)或者不同于第一點(diǎn),然后,將第三仿射坐標(biāo)(X3,Y3)存儲(chǔ)在存儲(chǔ)器(6,8)的第三寄存器內(nèi)。
4.一種按照權(quán)利要求1所述的方法,其特征是為了執(zhí)行一個(gè)由第一仿射坐標(biāo)(X1,Y1)定義的第一點(diǎn)P1與一個(gè)由第二仿射坐標(biāo)(X2,Y2)定義的第二點(diǎn)P2的相加,將第一點(diǎn)P1的仿射坐標(biāo)和第二點(diǎn)P2的仿射坐標(biāo)分別存儲(chǔ)在存儲(chǔ)器(6,8)的第一和第二寄存器內(nèi),第一點(diǎn)和第二點(diǎn)都屬于由以下類型的簡(jiǎn)化Weierstrass方程定義的在特征數(shù)不為2或3的域上的橢圓曲線Y2+XY=X3+a×X2+b(X,Y)為曲線上的點(diǎn)的仿射坐標(biāo),而a、b為橢圓曲線的參數(shù),所述編程的計(jì)算裝置用下式計(jì)算定義一個(gè)作為加法結(jié)果的第三點(diǎn)P3的第三仿射坐標(biāo)(X3,Y3)X3=λ2+λ+a+X1+X2Y3=λ×(X1+X3)+X3+Y1其中λ=(X12+X1×X2+X22+aX1+aX2+Y1)/(Y1+Y2+X2)第二點(diǎn)不同于第一點(diǎn)P1的逆(-P1),第二點(diǎn)等于第一點(diǎn)或者不同于第一點(diǎn),然后,將第三仿射坐標(biāo)(X3,Y3)存儲(chǔ)在存儲(chǔ)器(6,8)的第三寄存器內(nèi)。
5.一種按照權(quán)利要求1至4中的一個(gè)權(quán)利要求所述的方法,其特征是所述第一點(diǎn)、第二點(diǎn)和第三點(diǎn)都在由射影坐標(biāo)定義的橢圓曲線上。
6.一種按照權(quán)利要求5所述的方法,其特征是所述第一點(diǎn)、第二點(diǎn)和第三點(diǎn)都在由Jacobi射影坐標(biāo)定義的橢圓曲線上。
7.一種按照權(quán)利要求5所述的方法,其特征是所述第一點(diǎn)、第二點(diǎn)和第三點(diǎn)都在由齊次射影坐標(biāo)定義的橢圓曲線上。
8.一種按照權(quán)利要求1至7中的一個(gè)權(quán)利要求所述的方法,在所述方法期間執(zhí)行對(duì)橢圓曲線上的點(diǎn)的標(biāo)量相乘運(yùn)算。
9.一種包括編程成實(shí)現(xiàn)按照權(quán)利要求1至7中的一個(gè)權(quán)利要求所述的方法的計(jì)算裝置的電子組件,所述計(jì)算裝置特別包括一個(gè)中央處理單元(2)和一個(gè)與之配合的存儲(chǔ)器(4,6,8)。
10.一種電子組件,所述電子組件包括實(shí)現(xiàn)一種采用按照權(quán)利要求1至7中的一個(gè)權(quán)利要求所述的方法的密碼算法的裝置。
11.一種芯片卡,所述芯片卡包括一個(gè)按照權(quán)利要求10所述的電子組件。
全文摘要
本發(fā)明提出了一個(gè)用于由Weierstrass方程定義的橢圓曲線上的點(diǎn)的通用計(jì)算方法。按照本發(fā)明,可以用完全相同編程的計(jì)算裝置來執(zhí)行涉及點(diǎn)的相加的運(yùn)算和涉及點(diǎn)的加倍的運(yùn)算。計(jì)算裝置特別是包括一個(gè)中央處理單元(2)和一個(gè)與之連接的存儲(chǔ)單元(4,6,8)。所述發(fā)明可以用于例如芯片卡內(nèi)的密碼計(jì)算。
文檔編號(hào)G06F7/72GK1571952SQ02820507
公開日2005年1月26日 申請(qǐng)日期2002年7月31日 優(yōu)先權(quán)日2001年8月17日
發(fā)明者M·若耶 申請(qǐng)人:格姆普拉斯公司