欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Montgomery的分段計算標(biāo)量乘方法與流程

文檔序號:12067792閱讀:423來源:國知局
一種基于Montgomery的分段計算標(biāo)量乘方法與流程

本發(fā)明涉及橢圓曲線密碼領(lǐng)域,尤其涉及一種基于Montgomery的分段計算標(biāo)量乘方法。



背景技術(shù):

1985年Koblitz和Miller分別獨立提出了橢圓曲線密碼體制(ECC),使用定義在有限域上的橢圓曲線上的點群來實現(xiàn)基于離散對數(shù)問題的密碼體制。由于其上的密鑰長度要比其他密碼體制的短,ECC逐漸被人們重視和應(yīng)用。標(biāo)量乘算法是ECC中最基本和最為耗費時間的算法,所以標(biāo)量乘的計算效率直接影響到ECC的效率。

1987年Montgomery提出一種能夠抵抗SPA攻擊的計算橢圓曲線標(biāo)量乘bP的快速算法。其基本思想是:將整數(shù)b二進制展開從左到右進行循環(huán)運算,在每一次循環(huán)中,進行一次點加和倍點運算。由于每次循環(huán)中運算模式與代價相同,算法能夠抵抗SPA攻擊,而每次點加和倍點運算僅需要計算x坐標(biāo),這使得其計算效率大大提升。1999年,Lopez J和Dahab R基于Montgomery的思想在二進制域上提出一種計算橢圓曲線標(biāo)量乘的新算法。通過使用一組新的點加和倍點計算公式,每次循環(huán)僅需要計算點的x坐標(biāo),而在算法的最后恢復(fù)y坐標(biāo)。

現(xiàn)在,二進制域上標(biāo)量乘算法,主流的軟件實現(xiàn)(如OpenSSL)都是使用Lopez J和Dahab R提出的思想進行橢圓曲線標(biāo)量乘算法,占用存儲空間大、安全性較差。因此,本發(fā)明提出一種基于Montgomery的分段安全計算標(biāo)量乘的方法。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提供了一種基于Montgomery分段安全的計算標(biāo)量乘方法,在Montgomery思想的基礎(chǔ)上進行二分段,并使用邊信道原子化和同時求逆,在保證安全性的同時提高了運算效率

為實現(xiàn)上述目的,本發(fā)明提供了一種基于Montgomery的分段計算標(biāo)量乘方法,該方法包括以下步驟:

根據(jù)橢圓曲線標(biāo)量bP,得到二分段橢圓曲線雙標(biāo)量kP+lQ;

根據(jù)從左到右二進制表示的k和l的取值,同時計算雙標(biāo)量kP+lQ,并在循環(huán)過程點加和倍點運算中,僅計算雙標(biāo)量kP+lQ的x坐標(biāo),循環(huán)結(jié)束后恢復(fù)雙標(biāo)量kP+lQ的y坐標(biāo);

根據(jù)邊信道原子化方法在所述雙標(biāo)量kP+lQ循環(huán)過程點加和倍點運算中,進行調(diào)度并引入偽操作,使循環(huán)過程中運算模式相同。

優(yōu)選地,橢圓曲線標(biāo)量bP的二分段處理具體包括:

設(shè)標(biāo)量b為b=(bn-1,bn-2,…,b0)2,若n為偶數(shù),令m=n/2;若n為奇數(shù),令m=(n+1)/2,并在b的最高位補零,即令bn=0。則此時b表示為b=(b2m-1,b2m-2,…,bm,…,b0)2,將b分為等長的兩段,前m位賦給l,后m位賦給k,則l=(lm-1,lm-2,…,l0)2=(b2m-1,b2m-2,…,bm)2,k=(km-1,km-2,…,k0)2=(bm-1,bm-2,…,b0)2

橢圓曲線標(biāo)量bP可轉(zhuǎn)化為:

bP=b2m-1*22m-1P+b2m-2*22m-2P+…+b0*20P

=(lm-1*2m-1+…+l0*20)2mP+(km-1*2m-1+…+k0*20)P

=kP+lQ

其中,Q=2mP。

優(yōu)選地,得到二分段橢圓曲線雙標(biāo)量kP+lQ還包括:在點P固定的情況下,預(yù)計算Q、P+Q、P-Q存放在存儲器中,用于提高計算速度。

優(yōu)選地,雙標(biāo)量kP+lQ循環(huán)過程中,將計算T0,T1,T2的公式進行歸納的簡化,根據(jù)(ki,li,ki-1,li-1)的取值循環(huán)計算T[i],得到T0[1],T1[1],T2[1]。

優(yōu)選地,邊信道原子化方法具體包括:每次邊信道原子化循環(huán)后,使用同時進行求逆運算的技巧減少二進制域中求逆運算,用于提高算法效率。

本發(fā)明實施例實現(xiàn)了一種基于Montgomery的分段計算標(biāo)量乘方法,在二進制域上計算橢圓曲線標(biāo)量乘bP時,對標(biāo)量b的二進制表示進行等長二分段,將計算標(biāo)量乘bP轉(zhuǎn)化為計算雙標(biāo)量乘kP+lQ的形式,并在原子化計算kP+lQ每次循環(huán)中的操作,進行合理的調(diào)度、適當(dāng)?shù)囊雮尾僮?。本發(fā)明通過犧牲少量存儲空間,提高了標(biāo)量乘算法的運算效率,采用原子化思想合理調(diào)度和偽操作的應(yīng)用,保證算法的安全性,使其能夠抵抗簡單能量分析攻擊。

附圖說明

圖1為本發(fā)明實施例提供的一種基于Montgomery的分段計算標(biāo)量乘方法流程圖;

圖2為本發(fā)明實施例提供的一種基于Montgomery的分段計算標(biāo)量乘方法示意圖;

圖3為本發(fā)明實施例提供的標(biāo)量分段方法流程圖;

圖4為本發(fā)明實施例提供的計算雙標(biāo)量kP+lQ方法流程圖;

圖5為本發(fā)明實施例提供的循環(huán)中運算模式調(diào)度方法示意圖。

具體實施方式

下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細(xì)描述。

圖1為本發(fā)明實施例提供的一種基于Montgomery的分段計算標(biāo)量乘方法流程圖。如圖1所示,該方法包括:

S101、根據(jù)橢圓曲線標(biāo)量bP,得到二分段橢圓曲線雙標(biāo)量kP+lQ;

具體地,橢圓曲線標(biāo)量bP的二分段處理具體包括:設(shè)標(biāo)量b為b=(bn-1,bn-2,…,b0)2,若n為偶數(shù),令m=n/2;若n為奇數(shù),令m=(n+1)/2,并在b的最高位補零,即令bn=0。則此時b表示為b=(b2m-1,b2m-2,…,bm,…,b0)2,將b分為等長的兩段,前m位賦給l,后m位賦給k,則l=(lm-1,lm-2,…,l0)2=(b2m-1,b2m-2,…,bm)2,k=(km-1,km-2,…,k0)2=(bm-1,bm-2,…,b0)2。

橢圓曲線標(biāo)量bP可轉(zhuǎn)化為:

bP=b2m-1*22m-1P+b2m-2*22m-2P+…+b0*20P

=(lm-1*2m-1+…+l0*20)2mP+(km-1*2m-1+…+k0*20)P

=kP+lQ

其中,Q=2mP。

進一步地,在點P固定的情況下,預(yù)計算Q、P+Q、P-Q存放在存儲器中,用于提高計算速度。

S102、根據(jù)從左到右二進制表示的k和l的取值,同時計算雙標(biāo)量kP+lQ,并在循環(huán)過程點加和倍點運算中,僅計算雙標(biāo)量kP+lQ的x坐標(biāo),循環(huán)結(jié)束后恢復(fù)雙標(biāo)量kP+lQ的y坐標(biāo);

具體地,雙標(biāo)量kP+lQ循環(huán)過程中,將計算T0,T1,T2的公式進行歸納的簡化,根據(jù)(ki,li,ki-1,li-1)的取值循環(huán)計算T[i],得到T0[1],T1[1],T2[1]。

S103、根據(jù)邊信道原子化方法在雙標(biāo)量kP+lQ循環(huán)過程點加和倍點運算中,進行調(diào)度并引入偽操作,使循環(huán)過程中運算模式相同。

具體地,每次邊信道原子化循環(huán)后,使用同時進行求逆運算的技巧減少二進制域中求逆運算,用于提高算法效率。

圖2為本發(fā)明實施例提供的一種基于Montgomery的分段計算標(biāo)量乘方法示意圖。如圖2所示,開始計算,輸入輸入標(biāo)量b,b=(bn-1,bn-2,…,b0)2輸入橢圓曲線上點PEM。如圖3所示,設(shè)標(biāo)量b為b=(bn-1,bn-2,…,b0)2,若n為偶數(shù),令m=n/2;若n為奇數(shù),令m=(n+1)/2,并在b的最高位補零即令bn=0。則此時b可表示為b=(b2m-1,b2m-2,…,bm,…,b0)2。

將b分為等長的兩段,前m位賦給l,后m位賦給k:

l=(lm-1,lm-2,…,l0)2=(b2m-1,b2m-2,…,bm)2,k=(km-1,km-2,…,k0)2=(bm-1,bm-2,…,b0)2。

所以計算標(biāo)量乘bP可轉(zhuǎn)化為:

bP=b2m-1*22m-1P+b2m-2*22m-2P+…+b0*20P

=(lm-1*2m-1+…+l0*20)2mP+(km-1*2m-1+…+k0*20)P

=kP+lQ(Q=2mP)

至此,將計算標(biāo)量乘bP轉(zhuǎn)化為計算雙標(biāo)量乘kP+lQ(Q=2mP)。在點P固定的情況下,可以預(yù)計算Q、P+Q、P-Q存放在存儲器中以提高計算速度。

在計算kP+lQ時參考了Toru提出的同時計算kP+lQ的方法,并對算法進行了相應(yīng)的改進。在算法的最后增加點V(V=W+Q)的計算為恢復(fù)W的y坐標(biāo)做準(zhǔn)備;同時對循環(huán)中計算T0,T1,T2的公式進行了歸納的簡化表示,將原來循環(huán)中16種情況,以(ki,ki-1)的不同歸納為4種,簡化了算法的表示。

詳細(xì)的算法表述如下:

首先令mi=(kn-1…ki)2,ni=(ln-1…li)2,定義數(shù)組T[i]形式如下:

公式中減號表示去掉某一項的含義,即將miP+niQ,miP+(ni+1)Q,(mi+1)P+niQ,(mi+1)P+(ni+1)Q四項中去掉某一項(mi+1-ki-1)P+(ni+1-li-1)Q后剩余三項按順序依次賦給T0[i],T1[i],T2[i]。

可以證明當(dāng)(ki,li,ki-1,li-1)取不同值,T[i]中的每一項值都可以從T[i+1]中計算得出。例如當(dāng)(ki,li,ki-1,li-1)=(0,0,0,0)時:T0[i]=2T0[i+1];T1[i]=T1[i+1]+T0[i+1];T2[i]=T2[i+1]+T0[i+1]。

因此由(kn-1,ln-1)的值初始化T[i]后,i取值從n-1減少到1,根據(jù)(ki,li,ki-1,li-1)的取值循環(huán)計算T[i],求出T0[1],T1[1],T2[1]。最后根據(jù)(k0,l0)的取值計算T0[0]即m0P+n0Q=kP+lQ。如圖4所示,圖中形如Tc[i]=Ta+Tb(R)表達式表示Tc[i]=Ta[i+1]+Tb[i+1]且Ta[i+1]-Tb[i+1]=R。

從算法中可以看出,循環(huán)中計算點加時,兩個點的差值均為已知點(P、Q、P+Q或P-Q)。因此循環(huán)中可以利用Lopez J和Dahab R提出的僅計算x坐標(biāo)的公式計算,在算法最后一步恢復(fù)y坐標(biāo)。

在仿射坐標(biāo)系下令P0=(x0,y0)和P1=(x1,y1)為橢圓曲線上點,P2=(x2,y2)=P1+P0P=(x,y)=P1-P0。則Lopez J和Dahab R提出的點加和倍點計算公式如下:

點加:P2=(x2,y2)=P1+P0(P1≠P0)

倍點:P2=(x2,y2)=2P0

恢復(fù)y坐標(biāo)的公式為:

y0=(x0+x){(x0+x)(x1+x)+x2+y}/x+y

使用邊信道原子化的方法,對上述算法中每次循環(huán)中點加和倍點運算步驟進行合理的調(diào)度并適當(dāng)?shù)囊雮尾僮?dummy)使點加和倍點運算模式相同,達到能夠抵抗SPA攻擊的目的。使用同時求逆運算的技巧減少算法的求逆過程,即將計算a-1,b-1,c-1轉(zhuǎn)化為a-1=(abc)-1·bc,b-1=(abc)-1·ac,c-1=(abc)-1·ab。這樣就將原來域運算中的3次求逆轉(zhuǎn)化為1次求逆和7次點乘,減少了算法中求逆運算。當(dāng)I>3.5M時,此方法較直接計算a-1,b-1,c-1有更高的效率。

圖5為本發(fā)明實施例提供的循環(huán)中運算模式調(diào)度方法示意圖。如圖5所示,計算分段后得到的雙標(biāo)量乘kP+lQ每次循環(huán)中都要進行三次點加(3A)或兩次點加一次倍點(2A+D)的運算。因此二進制域中,使用邊信道原子化方法和同時求逆運算技巧統(tǒng)一3A和2A+D運算模式的調(diào)度方法。

最后分析本發(fā)明一種基于Montgomery的分段計算標(biāo)量乘方法時間復(fù)雜度(用M表示乘法運算,S表示平方運算,I表示求逆運算)。在一個例子中,算法第3步循環(huán)每次運算所用的時間為是I+10M+4S,算法2、4、5步所用時間共為4I+6M+4S故此算法總的時間為:(m-1)(I+10M+4S)+(4I+6M+4S)。而使用Montgomery算法二進制域仿射坐標(biāo)系下直接計算bP所用的時間是:4m(I+M+S)+(I+4M+2S)。當(dāng)選用域乘法效率不是特別低的情況下,I/M>8。這里使用一種通用假設(shè)S/M=0.8,I/M=8,使用本發(fā)明方法計算比常用Montgomery方法計算的時間減少了約45%。并且由于循環(huán)中每次計算模式相同,故可以抵抗SPA攻擊,保證算法安全性。

本發(fā)明一種基于Montgomery的分段計算標(biāo)量乘方法,在二進制域上計算橢圓曲線標(biāo)量乘bP時,對大數(shù)標(biāo)量b的二進制表示進行等長二分段,將計算標(biāo)量乘bP轉(zhuǎn)化為計算雙標(biāo)量乘kP+lQ的形式;計算雙標(biāo)量乘kP+lQ時,采用基于Montgomery思想的同時計算kP和lQ的方法,預(yù)計算點Q、P+Q和P-Q,將k和l進行二進制表示,采用從左到右的方法,根據(jù)k和l每一位的取值同時計算kP+lQ,循環(huán)中仿照Montgomery思想每次點加和倍點運算僅需要計算點x坐標(biāo),算法的最后恢復(fù)y坐標(biāo),保證方法的快速性;原子化計算kP+lQ每次循環(huán)中的操作,進行合理的調(diào)度并適當(dāng)?shù)囊雮尾僮?,使得每次循環(huán)中運算模式相同,進一步使用同時求逆運算減少二進制域中求逆運算,在保證可以抵抗簡單能量分析攻擊(SPA)的同時進一步提高方法的效率。

以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
离岛区| 赣州市| 怀集县| 安康市| 修武县| 蒙山县| 兰溪市| 施甸县| 陇川县| 叶城县| 绿春县| 大关县| 旅游| 浦江县| 固安县| 阿克苏市| 石渠县| 巩留县| 宿州市| 托克逊县| 建昌县| 潜山县| 光泽县| 和平区| 慈利县| 拜泉县| 泰和县| 平果县| 芦溪县| 平江县| 澄迈县| 沛县| 横山县| 句容市| 喜德县| 武定县| 福清市| 宣城市| 商丘市| 安宁市| 龙岩市|