基于環(huán)Zn上圓錐曲線的雙難題公鑰加密體制

近年來(lái),基于圓錐曲線密碼體制的研究引起了學(xué)者們的關(guān)注,那么今天,我們就在前人研究的基礎(chǔ)上提出了基于環(huán)Zn上圓錐曲線的雙密鑰公開(kāi)加密體制,從而實(shí)現(xiàn)了圓錐曲線上的基于大整數(shù)分解與圓錐曲線上的離散對(duì)數(shù)雙困難問(wèn)題的加密體制,并給出了數(shù)值模擬。

一、基于環(huán)Zn上圓錐曲線的相關(guān)知識(shí)

1、環(huán)Zn上的圓錐曲線

設(shè)Zn是一個(gè)模n的剩余類環(huán),定義環(huán)Zn上的圓錐曲線是同余方程:

基于環(huán)Zn上圓錐曲線的雙難題公鑰加密體制
在Zn上的解(x,y)的集,這里n=pq,p,q為兩個(gè)不同的奇素?cái)?shù),(a,n)=(b,n)=1。a是模p的二次非剩余,b是模q的二次非剩余,且p+1=2r,q+1=2s,其中r,s是素?cái)?shù),則曲線的階Nn=2rs,可以對(duì)圓錐曲線Cn(a,b)上的點(diǎn)定義一個(gè)加法運(yùn)算。圓錐曲線上的點(diǎn)的集合在該加法作用下構(gòu)成一個(gè)有限交換群,在此圓錐曲線上階為Nn=2rs的點(diǎn)G稱為基點(diǎn)。圓錐曲線上的離散對(duì)數(shù)問(wèn)題定義為:由基點(diǎn)G生成的群S={G,2G,NnG}

給定M,N∈S,求出整數(shù)e使得M=eN是非常困難的,稱為圓錐曲線上的離散對(duì)數(shù)問(wèn)題。

2、基于環(huán)Zn上圓錐曲線的RSA公鑰密碼體制

首先選定一條圓錐曲線:y2≡ax2-bx(modn)其中a,b∈Zn,(a,n)=(b,n)=1,n=pq,p,q為兩個(gè)不同的大素?cái)?shù),滿足(a/p)=-1,(a/q)=-1,且p+1=2r,q+1=2s,其中:r,s也為素?cái)?shù),令Nn=2rs,任取1<e<Nn,且(e,Nn)=1,計(jì)算ed=1(modNn)則:

(1)參數(shù)選擇

公鑰:e,n,a,b

私鑰:d,p,q

(2)加密算法

計(jì)算C=eP1(m)(modn)

(3)解密算法

dC=deP1(m)=(1+hNn)P1(m)=P1(m)

對(duì)P1(m)使用譯碼算法即得明文m。

3、基于環(huán)Zn上圓錐曲線的E1Gamal加密算法

首先選定一條圓錐曲線:y2≡ax2-bx(modn)其中a,b∈Zn,(a,n)=(b,n)=1,n=pq,p,q為兩個(gè)不同的大素?cái)?shù)滿足(a/p)=-1,(a/q)=-1,且p+1=2r,q+1=2s,其中:r,s也為素?cái)?shù),令Nn=2rs,選取G∈Cn(a,b),其階為Nn=2rs,即G為基點(diǎn)。任取1<e<Nn,計(jì)算Y=eG。

公開(kāi):n,a,b,G,Y

私鑰:e

加密算法:

任取k,計(jì)算C1=kG,C2=P1(m)⊕kY,密文C=(C1,C2)

解密算法:

計(jì)算C2⊕(-eC1)=P1(m),對(duì)P1(m)用譯碼算法得明文。

顯然,系統(tǒng)安全性基于圓錐曲線上計(jì)算離散對(duì)數(shù)的困難性。

二、基于環(huán)Zn上的圓錐曲線的雙密鑰公開(kāi)加密體制

首先選定一條圓錐曲線:Cn(a,b)y2≡ax2-bx(modn)其中a,b∈Zn,(a,n)=(b,n)=1,n=pq,p,q為兩個(gè)不同的大素?cái)?shù)滿足(a/p)=-1,(a/q)=-1。且p+1=2r,q+1=2s,其中:r,s也為素?cái)?shù),令Nn=2rs,選取G∈Cn(a,b),其階為Nn=2rs,即G為基點(diǎn)。任取1<x<Nn,計(jì)算Y=xG。再計(jì)算3×d≡1(modNn)。

公鑰:n,G,Y,3

私鑰:x,d,Nn

所謂雙密鑰就是指d和x,分別是基于大整數(shù)分解難題與圓錐曲線離散對(duì)數(shù)難題的密鑰。其中解密密鑰d與RSA中的解密密鑰相似,而RSA體制中的公鑰這里用常數(shù)3代替,當(dāng)然這里公開(kāi)鑰值也不一定是3,可以根據(jù)情況選取,只要保證是個(gè)小常數(shù),從而節(jié)省系統(tǒng)開(kāi)銷。

具體加密過(guò)程通信雙方首先要共享一個(gè)會(huì)話密鑰:設(shè)KAB為用戶A,B之間進(jìn)行通信對(duì)話的公開(kāi)密鑰(會(huì)話密鑰),若A為通信發(fā)起者,則A取B的公鑰(nB,GB,YB,3),用戶B保存自己的私鑰(xB,dB,NnB),用戶A隨機(jī)地選擇一個(gè)數(shù)k,1<k<n/2,并依下列各式計(jì)算出KAB,ZA,C:

KAB=kY;

ZA=kG;

C=3ZA。

然后,將C值傳送給用戶B,用戶B收到C值后,再用私鑰xB和dB計(jì)算出ZA和KA:

ZA=dBC=3dBZA=(1+hNn)ZA=ZA0;

KAB=xBZA。

加密方法:

設(shè)用戶A向用戶B傳送需加密的明文序列為{m1,m2,mi},先將明文序列嵌入圓錐曲線的點(diǎn)P1(mi),A用戶用會(huì)話密鑰KAB通過(guò)下面的方法對(duì)生成的明文數(shù)據(jù)塊mi加密的一對(duì)密鑰Ki,1和Ki,2:

Ki,1=Ki-1,1⊕KAB=iKAB=P1(ki);

(K0,1=1)Ki,2=kiG;

加密過(guò)程:

i=3P1(mi)⊕Ki,2;

解密方法:

用戶B用自己的私鑰按上文描述的方法計(jì)算出會(huì)話密鑰KAB,再用KAB計(jì)算出Ki,1和Ki,2。

解密過(guò)程:

P1(mi)=dB(Ci,Ki,2)。

譯碼算法得mi。

三、基于環(huán)Zn上的圓錐曲線的雙密鑰公開(kāi)加密體制的數(shù)值模擬

首先B選定一條圓錐曲線:Cn(2,1)y2≡2x2-x(mod65),即a=2,b=1,n=65,p=5,q=13,r=(p+1)/2=3,s=(q+1)/2=7,Nn=2rs=42,G=P1(2)=(32,64),取x=11,Y=xG=11G=P1(58)。

5×d≡1(mod42)

公鑰:n=65,G=P1(2);Y=P1(58),5

私鑰:x=11,d=17,Nn=42。

用戶A為通信發(fā)起者,其隨機(jī)選取k=5,計(jì)算出KAB,ZA,C:

KAB=5P1(58)=P1(37);

ZA=5P1(2)=P1(3);

C=5P1(3)=P1(32)。

用戶A將C值發(fā)給用B,B通過(guò)私鑰計(jì)算出的KAB:

ZA=17P1(32)=P1(3);

KAB=11P1(3)=P1(37)。

設(shè)用戶A向用戶B傳送需加密的明文序列為{m1=24,m2=18},先將明文序列嵌入圓錐曲線的點(diǎn), P1 (24),P1 (18),A用戶用會(huì)話密鑰KAB通過(guò)下面的方法對(duì)生成的明文數(shù)據(jù)塊m1, m2加密的一對(duì)密鑰K1,1,K2,1和K1,2,K2,2:

K1,1=KAB=P1(37),K1,2=37G=37P1(2)=P1(62);

K2,1=2P1(37)=P1(44),K2,2=44G=44P1(2)=P1(34);

加密過(guò)程:

C1=5P1(24)⊕P1(62)=P1(36)⊕P1(62)=P1(48)

C2=5P1(18)⊕P1(34)=P1(22)⊕P1(34)=P1(25)

傳送(C1,C2)

解密過(guò)程:

用戶B同樣通過(guò)會(huì)話密鑰KAB計(jì)算出加密的密鑰,從而進(jìn)行解密。

P1(m1)=d(C1,K1,2)=17(P1(48),P1(62))=17P1(36)=P1(24);

P1(m2)=d(C2,K2,2)=17(P1(25),P1(34))=17P1(22)=P1(18)。

通過(guò)明文譯碼算法得到明文m1=24,m2=18。

四、基于環(huán)Zn上圓錐曲線的雙難題公鑰加密體制安全性與性能分析

1、安全性分析

從會(huì)話密鑰KAB的計(jì)算過(guò)程可以看出,用戶B要得到KAB必須要用的密鑰dB和xB,而求解它們分別是大整數(shù)分解困難問(wèn)題與圓錐曲線上的離散對(duì)數(shù)難題。攻擊者即使成功分解了大整數(shù),從而得到密鑰dB,但也只能得到ZA,要想計(jì)算出KAB還需要計(jì)算xB,這是一個(gè)圓錐曲線上的計(jì)算離散對(duì)數(shù)的難題。反過(guò)來(lái)攻擊者若能夠得到xB,無(wú)法解密C,還需要得到dB,而這是一個(gè)求解大整數(shù)分解難題。所以本體制是一個(gè)基于雙難題的密碼體制,攻擊者必須同時(shí)攻克雙難題,才能破解本系統(tǒng),這使本系統(tǒng)有較高的安全性。

為了提高系統(tǒng)效率,在文件加密中使用了小常數(shù)作為公鑰,在有限域上雙密鑰公開(kāi)加密體制會(huì)受到小加密指數(shù)的算法攻擊,使系統(tǒng)存在安全隱患,基于大整數(shù)分解困難問(wèn)題的安全性存在漏洞。而由于圓錐曲線上的RSA體制能夠抵抗小加密指數(shù)攻擊,因此本文提出的在圓錐曲線上的雙密鑰公開(kāi)加密體制可以抵抗小加密指數(shù)的攻擊,使本體制在保持效率的同時(shí)具有更好的安全性。

本體制在加密與解密過(guò)程中對(duì)會(huì)話密鑰進(jìn)行了迭代計(jì)算,并對(duì)明文的加密采用了分組加密,使同樣的明文可以對(duì)應(yīng)不同的密文,從而使安全性有了一定的提高。

2、性能分析

在本體制中,對(duì)于一個(gè)數(shù)據(jù)塊mi的加密,需要用到一個(gè)圓錐曲線上點(diǎn)的倍乘運(yùn)算,但由于其倍數(shù)為小常數(shù)(為3),故此運(yùn)算量可以忽略。對(duì)于解密數(shù)據(jù)塊Ci,需要兩次圓錐曲線上的倍乘運(yùn)算,這個(gè)運(yùn)算量相當(dāng)于圓錐曲線上的RSA或ElGamal的單個(gè)運(yùn)算量。同時(shí),由于圓錐曲線中明文嵌入、階的計(jì)算及點(diǎn)的運(yùn)算都比較容易,特別是在群(Cn(a,b),⊕)中逆元計(jì)算十分容易,以及在引進(jìn)標(biāo)準(zhǔn)二進(jìn)制計(jì)算群元素的情況下,比著名的“平方-和-乘法”算法節(jié)約1/4計(jì)算量。這使本體制易于實(shí)現(xiàn)。

本文將雙密鑰公開(kāi)加密體制在圓錐曲線上進(jìn)行了模擬,從而實(shí)現(xiàn)了圓錐曲線上的基于大整數(shù)分解困難與圓錐曲線上的離散對(duì)數(shù)困難問(wèn)題的加密體制,并進(jìn)行數(shù)值模擬,分析了該體制的安全性與效率,與原有體制相比,本體制在保證原有效率的同時(shí)還能夠抵抗小加密指數(shù)攻擊,從而提高了系統(tǒng)的安全性。而且圓錐曲線上的各種運(yùn)算比較容易,使本體制易于實(shí)現(xiàn),具有一定應(yīng)用價(jià)值。

小知識(shí)之圓錐曲線

圓錐曲線包括橢圓,雙曲線,拋物線。其統(tǒng)一定義:到定點(diǎn)的距離與到定直線的距離的比e是常數(shù)的點(diǎn)的軌跡叫做圓錐曲線。當(dāng)0<e1時(shí)為雙曲線。