專利名稱:運用Montgomery型橢圓曲線的數(shù)字簽名認證方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種運用Montgomery型橢圓曲線的數(shù)字簽名認證方法,在有限的資 源條件下建立通信連接時,能夠快速實現(xiàn)安全數(shù)字簽名及其認證的方法。
背景技術(shù):
隨著電子簽名法在世界范圍內(nèi)的發(fā)展使得數(shù)字簽名的基礎(chǔ)設(shè)施不斷地發(fā)展,有效 的實現(xiàn)公鑰密碼系統(tǒng)(如數(shù)字簽名)變得越來越重要。數(shù)字簽名是通過某種密碼運算對 要傳輸?shù)男畔⑦M行處理生成用以確認信息來源以及核實信息是否發(fā)生變化的數(shù)字串,這種 電子式的簽名還可進行技術(shù)驗證,其驗證的準確度比一般手工簽名和圖章的驗證準確度更 高。數(shù)字簽名是目前電子商務(wù)、電子政務(wù)中應(yīng)用最普遍、技術(shù)最成熟、可操作性最強的一種 電子簽名方法。數(shù)字簽名認證方法可以通過規(guī)范程序和科學方法來鑒定簽名人的身份、驗 證傳輸文件有無被竄改、鑒定電子數(shù)據(jù)內(nèi)容,以確保傳輸文件的完整性、真實性和不可抵賴 性。數(shù)字簽名的應(yīng)用范圍十分廣泛,凡是需要對用戶的身份進行判斷的情況都可以使用,比 如加密信件、商務(wù)信函、定貨購買系統(tǒng)、遠程金融交易、自動模式處理等,同時,保障電子數(shù) 據(jù)交換(EDI)安全性的應(yīng)用是一個突破性的進展。 1985年Neal Koblitz和Victor Miller提出了橢圓曲線密碼(ECC),由于橢圓曲 線的安全性高、占用帶寬小、計算復雜度高等眾多優(yōu)勢,能夠充分地保證各種通信網(wǎng)絡(luò)的安 全,所以對這一密碼體制的研究和實現(xiàn)迅速普及。橢圓曲線數(shù)字簽名算法(ECDSA)是橢圓 曲線密碼體制的重要組成部分,它由簽名的產(chǎn)生和簽名的認證兩部分組成。其中在ECDSA 的仿真計算中,影響計算速度的關(guān)鍵是橢圓曲線中倍點運算。所以,如何設(shè)計出適合快速認
證算法,其中的關(guān)鍵是降低模乘。對于Weierstrass橢圓曲線計算倍點,最常用標量乘法為 NAF滑動窗口法,為了減少預計算量,窗口應(yīng)由NAF的最左邊向右移動,直到所在二進制表 示對應(yīng)的數(shù)為奇數(shù)才進行操作。另外,由于橢圓曲線群是特殊的Abel群,所以兩點相加和 兩點相減所需要的計算量相同。對于Weierstrass型橢圓曲線上的點加運算,在射影坐標 下由于計算Y坐標,所以點加的計算量為12M+2S(M表示為乘法,S為平方,I為求逆),倍點 所需要的計算量為7M+3S。在傳統(tǒng)的ECDSA算法中,在計算Oq,y》=UlG+u2Q時,首先分別 計算多倍點i^G和u2Q,然后再計算UlG+u2Q的點加運算,最后再進行驗證運算,因此,驗證簽 名所用時間常用是簽名產(chǎn)生所用時間的兩倍。根據(jù)傳統(tǒng)ECDSA的缺陷,本發(fā)明在改進ECDSA 算法中應(yīng)盡量避免(Xl, y》=11^+1129的運算,在通信傳輸和Montgomery型橢圓曲線倍點 運算中作出必要的改進。 1987年,Montgomery引入了 Montgomery型橢圓曲線,與傳統(tǒng)的Weierstrass型 ECC曲線相比,它具有下列優(yōu)點(l)更快的模乘計算速度;(2)不需要預計算,可以在存儲 空間有限的條件下實現(xiàn);(3)可以并行計算,提高計算速度;(4)能夠有效的抵抗時間攻擊 和能量攻擊,因此在ECC密碼體系中,加快ECDSA的簽名認證速度,同時減少簽名與認證之 間的運算差距,具有一定優(yōu)勢。 然而,對于模運算,模乘和模冪運算是兩種相對于模加和模減運算計算度比較大的運算,由于在ECDSA中,存在必要的模逆運算,不可避免要牽涉到模冪運算。對于大整數(shù) 模冪乘運算M6 mod n,例如,通常的算法是將指數(shù)e 二進制化來實現(xiàn)的,即將指數(shù)e表示成
二進制形式e = I>'2'ei G {0,1}, i = 0,1,2…k-l,之后再進行一系列迭代運算 1)設(shè)e = ek—a—2-" ; 2)置變量c = 1 ; 3) for j = k-1 to 0 st印-l c = c2 mod n if e丄=1 then c = c*m mod n ; 4)c即為所求。
發(fā)明內(nèi)容
鑒于以上所述現(xiàn)有技術(shù)存在的問題和不足,本發(fā)明的目的在于提供一種運用 Montgomery型橢圓曲線的數(shù)字簽名認證方法,它在簽名和簽名認證過程中能減少后續(xù)步驟 的運算,避免異步運算,縮短簽名運算時間,提高運算速度,能有效抵抗時間攻擊和能量攻 擊,提高橢圓曲線密碼實現(xiàn)效率。 為達到上述目的,解決現(xiàn)有技術(shù)存在的問題,本發(fā)明所采用的技術(shù)方案是上述運 用Montgomery型橢圓曲線的數(shù)字簽名認證方法,其具體步驟如下
(1)定義橢圓曲線域參數(shù)D:
D = (F, a, b, p), 其中,F(xiàn)表示有限域GF(pn), a, b G GF(pn) , P表示一個基點,能(GF(p11)為橢圓曲 線的階; (2)建立用戶A和用戶B之間通信鏈路; (3)用戶A采用ECDSA算法對消息M簽名發(fā)送給用戶B ; (4)用戶B驗證(r,s)用戶A發(fā)送的消息M的簽名是否是有效簽名。
上述步驟(1)所述的定義橢圓曲線域參數(shù)D :其步驟如下 11、建立素數(shù)域,建立ECC計算平臺; 12、建立橢圓曲線方程,利用窮舉法和數(shù)論中二次剩余項充要條件具體求取素數(shù) 域中曲線的階數(shù),即count =能(Fp); 13、在計算出素數(shù)域的橢圓曲線的階后,利用Weil定理、Hasse定理以及數(shù)論部分 知識,求取在擴域中的Pn的橢圓曲線的階數(shù); 上述步驟(3)所述的用戶A采用ECDSA算法對消息M簽名發(fā)送給用戶B,其具體步 驟如下 31、在區(qū)間[1, n-1]上生成一個隨機數(shù)k, kA ; 32、計算kG = (x" y》和r = Xl mod p,,其中yi不計算; 33、計算k—1 mod ; 34、計算e = MD5 (m); 35、計算s = k—、e+kAr)mod p,,若s = O,則轉(zhuǎn)步驟31,否則轉(zhuǎn)步驟36 ;
36、用戶A對消息m的簽字是(r, s),則用戶A將(m | | r | | s | | kA)傳給用戶B ;
上述步驟(4)所述的用戶B驗證(r, s)用戶A發(fā)送的消息M的簽名是否是有效簽 名,其簽名認證步驟如下 41、驗證(r,s)是否是整數(shù),若是[l,Pln]上的整數(shù),則轉(zhuǎn)步驟2,若不是,則丟棄該
簽名,結(jié)束驗證; 42、計算e = MD5 (m); 43、計算w = s—1 mod p,, u丄=ew mod p,,
u2 = rw mod p,, a = (1^+112*、) mod ;
44、在Montgomery曲線上計算a*G的倍點運算;
45、計算v = mod ; 46、檢驗v = r是否成立,若v = r成立,則用戶B接受該簽字,簽名有效,接受信 息;否則拒絕接受該簽字,拒絕接受信息。 本發(fā)明的運用Montgomery型橢圓曲線的數(shù)字簽名認證方法與已有技術(shù)相比較, 具有如下顯而易見的突出實質(zhì)性特點和顯著優(yōu)點該方法能夠避免現(xiàn)有技術(shù)通常的算法 中直接計算(Xl, y》=11^+1!29,它的驗證簽名算法的時間遠遠比產(chǎn)生簽名算法的時間長, 用a = (Ul+U2*kA)mod p,代替(Xl, y》=u^+i^Q運算直接參與點乘運算,同時引入模運 算,使得在求歐拉函數(shù)時只需進行一次模冪運算, 一次模除運算, 一次模減運算,然后將 快速Montgomery運算和Montgomery曲線特性相結(jié)合,能夠減少后續(xù)步驟的運算(即在 Montgomery型曲線上的快速點乘計算)。實驗結(jié)果表明,這種方法雖然加大信道的傳輸容 量,但是避免了 0q,y》二i^G+i^Q異步運算,使驗證簽名運算時間降低為產(chǎn)生簽名運算時 間約為1. 1倍,減少約45%,縮短簽名運算時間,提高運算速度,能有效抵抗時間攻擊和能 量攻擊,其算法提高了橢圓曲線密碼實現(xiàn)效率。
圖1為本發(fā)明的運用Montgomery型橢圓曲線的數(shù)字簽名認證方法流程圖;
圖2為本發(fā)明中的小數(shù)模為3時兩種驗證簽名算法認證與生成簽名時間比例對比 圖,其中縱坐標為驗證簽名時間與產(chǎn)生簽名時間的比例,橫坐標為文件大小,橫虛線表示現(xiàn) 有最好的驗證簽名時間與產(chǎn)生簽名時間比例,斜細線表示本發(fā)明算法驗證簽名時間與產(chǎn)生 簽名時間比例。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的運用Montgomery型橢圓曲線數(shù)字簽名認證方法作進一 步詳細的說明。 本發(fā)明的運用Montgomery型橢圓曲線的數(shù)字簽名認證方法的簽名流程步驟如 下 (1)定義橢圓曲線域參數(shù)D:首先,要給出橢圓曲線域參數(shù),定義一條橢圓曲線和 一個基點,進而確定曲線上的各點運算。在ECDSA過程,定義橢圓曲線域參數(shù)D為
D = (F, a, b, p), 其中,F(xiàn)表示有限域GF(pn) , a, b G GF(pn) , P表示一個基點,能(GF(p11)為橢圓曲 線的階,其具體求取是利用Weil定理,步驟如下
11、建立素數(shù)域F,建立ECC計算平臺; 12、建立橢圓曲線方程,利用窮舉法和數(shù)論中二次剩余項充要條件具體求取素數(shù) 域中曲線的階,即count =能(Fp); 13、在計算出素數(shù)域的橢圓曲線的階以后,利用Weil定理、Hasse定理以及數(shù) 論部分知識,求取在擴域中的pn的橢圓曲線的階首先根據(jù)Weil定理,首先計算A = p+l-能(Fp),同時程序記入此值;隨后建立二次方程f-AX+p = 0,同時利用二次方程的 萬能求根公式求取此方程Xl和x2,并記入兩個根值;最后利用Weil定理求取擴域的階
+x2"),完成對擴域階的計算; (2)建立用戶A和用戶B之間通信鏈路當兩個任意用戶A和B需要進行數(shù)字簽 名時,建立用戶A和B之間通信鏈路,如圖1所示; (3)用戶A采用ECDSA算法對消息M簽名發(fā)送給用戶B,如圖1所示,其數(shù)字簽名 步驟如下 31、在區(qū)間[1, n-1]上生成一個隨機數(shù)k, kA 32、計算kG = (x" y》和r = Xl mod p,,其中,yi不計算, 33、計算k—1 mod 34、計算e = MD5(m) 35、計算s = k—乂e+kAr)mod p,,若s = O,則轉(zhuǎn)步驟31 ;若s ^ O,則轉(zhuǎn)步驟36 ;
36、用戶A對消息m的簽字是(r, s),則用戶A將(m | r | | s | | kA)傳給用戶B ;
(4)用戶B接收到信息M后,驗證(r, s)是用戶A發(fā)送的消息M的簽名是否是有 效簽名,如圖1所示,步驟如下 41、驗證r, s是否是[1, Pln]上的整數(shù),若是[1, Pln]上的整數(shù),則轉(zhuǎn)步驟2,若不
是,則丟棄該簽名,結(jié)束驗證; 42、計算e = MD5 (m); 43、計算w = s—丄mod p,, u丄=ew mod p,, u2 = rw mod p,, a = (1^+112*、) mod ; 44、在Montgomery曲線上計算a*G的倍點運算; 45、計算v二^ mod Pln其運算速度隨著的Pln的增長,算法的計算時間不會成幾 何倍數(shù)成長,而增長趨勢比較緩慢,對于Pln具有比較好的免疫性; 46、驗證用戶A發(fā)送的消息M的簽名是否是有效簽名,檢驗v = r是否成立,若v =r成立,則用戶B接受該簽字,簽名有效,接受信息,否則拒絕接受該簽字,拒絕接受信息。
如圖2所示,圖2是小數(shù)模為3時兩種簽名算法認證與生成簽名時間比例對比圖, 實驗結(jié)果表明,這種方法雖然加大信道的傳輸容量,但是避免了 (Xl,y》二i^G+i^Q異步運 算使驗證簽名運算時間降低為產(chǎn)生簽名運算時間約為1. 1倍,減少約45%,縮短簽名運算 時間。
權(quán)利要求
一種運用Montgomery型橢圓曲線的數(shù)字簽名認證方法,其特征在于該方法具體步驟如下(1)定義橢圓曲線域參數(shù)DD=(F,a,b,p),其中,F(xiàn)表示有限域GF(pn),a,b∈GF(pn),P表示一個基點,#E(GF(pn)為橢圓曲線的階;(2)建立用戶A和用戶B之間通信鏈路;(3)用戶A采用ECDSA算法對消息M簽名發(fā)送給用戶B;(4)用戶B驗證(r,s)用戶A發(fā)送的消息M的簽名是否是有效簽名。
2. 根據(jù)權(quán)利要求1所述的運用Montgomery型橢圓曲線的數(shù)字簽名認證方法,其特征在 于,上述步驟(1)所述的定義橢圓曲線域參數(shù)D :其步驟如下·11、 建立素數(shù)域,建立ECC計算平臺;·12、 建立橢圓曲線方程,利用窮舉法和數(shù)論中二次剩余項充要條件具體求取素數(shù)域中 曲線的階數(shù),即count =能(Fp);·13、 在計算出素數(shù)域的橢圓曲線的階后,利用Weil定理、Hasse定理以及數(shù)論部分知 識,求取在擴域中的Pn的橢圓曲線的階數(shù)。
3. 根據(jù)權(quán)利要求2所述的運用Montgomery型橢圓曲線的數(shù)字簽名認證方法,其特征在 于,上述步驟(3)所述的用戶A采用ECDSA算法對消息M簽名發(fā)送給用戶B,其具體步驟如 下·31、 在區(qū)間[1, n-1]上生成一個隨機數(shù)k, kA ;·32、 計算kG = (Xl, y》和r = Xlm0dPln其中,yi不計算;·33、 計算k—1 mod ;·34、 計算e = MD5(m);·35、 計算s = k—乂e+kAr)mod p,,若s = 0,則轉(zhuǎn)步驟31,否則轉(zhuǎn)步驟36 ;·36、 用戶A對消息m的簽字是(r,s),則用戶A將(m| |r| |s| KA)傳給用戶B。
4. 根據(jù)權(quán)利要求1或2或3是所述的運用Montgomery型橢圓曲線的數(shù)字簽名認證方 法,其特征在于,上述步驟4所述的用戶B驗證(r,s)用戶A發(fā)送的消息M的簽名是否是有 效簽名,其具體認證步驟如下·41、 驗證(r, s)是否是整數(shù),若是[1, Pln]上的整數(shù),則轉(zhuǎn)步驟2,若不是,則丟棄該簽 名,結(jié)束驗證;·42、 計算e = MD5(m);·43、 計算w = s丄modp,, u丄=ewmodp,, u2 = rwmodp丄n, a = (1^+112*、) mod ;·44、 在Montgomery曲線上計算a*G的倍點運算;·45、 計算v = x丄mod ;·46、 檢驗v = r是否成立,若v = r成立,則用戶B接受該簽字,簽名有效,接受信息;否 則拒絕接受該簽字,拒絕接受信息。
全文摘要
本發(fā)明公開了一種運用Montgomery型橢圓曲線的數(shù)字簽名認證方法,其步驟如下1、定義橢圓曲線域參數(shù)DD=(F,a,b,p),其中,F(xiàn)表示有限域GF(pn),a,b∈GF(pn),P表示一個基點,#E(GF(pn)為橢圓曲線的階;2、建立用戶A和用戶B之間通信鏈路3、用戶A采用ECDSA算法對消息M簽名發(fā)送給用戶B;4、用戶B驗證(r,s)用戶A發(fā)送的消息M的簽名是否是有效簽名,若v=r成立,簽名有效,接受信息。該方法能夠用a=(u1+u2*kA)modp1n代替(x1,y1)=u1G+u2Q運算直接參與點乘運算,然后將快速Montgomery運算和Montgomery曲線特性相結(jié)合,能夠減少后續(xù)步驟的運算,實驗結(jié)果表明,這種方法雖然加大信道的傳輸容量,但是避免了(x1,y1)=u1G+u2Q異步運算,使驗證簽名運算時間降低為產(chǎn)生簽名運算時間約為1.1倍,縮短簽名運算時間,提高運算速度,能有效抵抗時間攻擊和能量攻擊。
文檔編號H04L9/32GK101753306SQ20091020053
公開日2010年6月23日 申請日期2009年12月22日 優(yōu)先權(quán)日2009年12月22日
發(fā)明者劉禮黎, 時向勇, 朱美麗, 王潮 申請人:上海大學