專利名稱:運(yùn)用橢圓曲線加密算法的數(shù)字簽名方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種保密或安全通信的數(shù)字簽名方法,具體地說(shuō),是一種運(yùn)用橢圓曲線加密算法的數(shù)字簽名方法。
信息傳遞過(guò)程中的保密和安全問(wèn)題現(xiàn)今尤為各國(guó)政府、企事業(yè)單位、乃至個(gè)人所關(guān)注。在一個(gè)系統(tǒng)內(nèi)(一家銀行或整個(gè)銀行系統(tǒng)里),有許多用戶(個(gè)銀行分行),用戶之間發(fā)送信息或開(kāi)出支票,匯票等,問(wèn)題是怎樣確保用戶發(fā)出的信息或開(kāi)出的支票、匯票不被人破譯、修改、偽造,只能被特定的接收方解密或識(shí)別,這是一項(xiàng)有革命意義的數(shù)學(xué)技術(shù),是確保信息安全的核心問(wèn)題。為此,在國(guó)際上公鑰密碼的研究方興未艾,并由此產(chǎn)生了許多數(shù)字簽名方法。美國(guó)國(guó)家標(biāo)準(zhǔn)局于1994年公布了“數(shù)字簽名標(biāo)準(zhǔn)”-DSS。該標(biāo)準(zhǔn)采用了模為512-1024位的大素?cái)?shù),運(yùn)算速度慢。另外,DSS對(duì)發(fā)送的明文不加密,是一個(gè)單純的簽名方法?,F(xiàn)今網(wǎng)絡(luò)通信中發(fā)送的明文也需要加密。類似于DSS的簽名方法就無(wú)法使用。CN1177872A公開(kāi)了一種用于實(shí)現(xiàn)具有消息附錄的數(shù)字簽名方法,采用一散列函數(shù)以減少簽名長(zhǎng)度,保密程度不夠理想。CN1197248A公開(kāi)了一種數(shù)字簽名方法。該方法中需要采用簽名黑匣子硬件,實(shí)施起來(lái)比較困難。EP0807908A2披露了一種將橢圓曲線應(yīng)用于簽名體制上的方法,但該方法中選用的模數(shù)極小,因而只限用于智能卡。
本發(fā)明的目的是提供一種運(yùn)用橢圓曲線加密算法的數(shù)字簽名方法,簡(jiǎn)稱ECSC。它不僅可以縮短簽名和認(rèn)證所用時(shí)間,具有很高的安全性,同時(shí)還具有向前保密性和不可抵賴特性,而且應(yīng)用范圍廣泛。
本發(fā)明的目的是這樣實(shí)現(xiàn)的,本發(fā)明是一種運(yùn)用橢圓曲線加密算法的保密或安全通信的數(shù)字簽名方法,它是以橢圓曲線公鑰加密算法為主體,輔以哈希函數(shù)及對(duì)稱加密算法而構(gòu)成的一種數(shù)字簽名方法,其具體操作步驟如下假定發(fā)信者A要給收信者B發(fā)送信息,A既希望保護(hù)自己的發(fā)送信息的安全,同時(shí)又希望若有其他人冒充自己給B發(fā)送信息,B都會(huì)給予否認(rèn);另一方面,B希望確認(rèn)自己收到的信息是從A而來(lái),而且如果確實(shí)是A發(fā)送的信息,則A以后不能否認(rèn);另外為了安全性更好,A希望就算自己的私有密鑰萬(wàn)一丟失,自己以前發(fā)送給B的信息也不會(huì)被破譯,具體的加密步驟是1.加密系統(tǒng)的設(shè)立,記使用射影坐標(biāo)時(shí),在有限域 上橢圓曲線的Weier-strass方程是Ey2+a1xy+a3y=x3+a2x2+a4x+a6E在有限域 上的解集是 ,其中包括無(wú)窮遠(yuǎn)點(diǎn)0,先找到一個(gè)大素?cái)?shù)n,我們?nèi)為160位,即2159≤n<2160,或更大位數(shù)的素?cái)?shù),設(shè) 的秩為 讓P是E的秩為n的基點(diǎn),用戶A的私有密鑰是a,a的范圍是1<a<n,公有密鑰是 ,用戶B的私有密鑰是b,b的范圍是1<b<n,公有密鑰是 h是一個(gè)輸出至少160位的哈希函數(shù);ENC是一個(gè)對(duì)稱加密系統(tǒng);2.A的做法如下
(a)首先檢查B的公鑰,確認(rèn)B的身份,如果確認(rèn)無(wú)誤,執(zhí)行下一步;(b)隨機(jī)選擇一個(gè)整數(shù)x,計(jì)算
,然后計(jì)算k=h(xk1);]]>(c)計(jì)算
和s=ae+x-k(mod n)以及R=xP;(d)利用對(duì)稱性分組密碼進(jìn)行加密運(yùn)算C=ENCk(s‖M);(e)將(R,C)傳送給B,(s,R)是A在明文M上的簽名;3.B進(jìn)行如下操作(a)首先檢查A的公鑰,確認(rèn)A的身份,如果確認(rèn)無(wú)誤,執(zhí)行下一步;(b)計(jì)算
和
(c)解密運(yùn)算(s‖M)=ENCk(C);(d)計(jì)算
U=(s+k)P和V=-eQa;(e)檢驗(yàn)U+V=R(modP)成立與否來(lái)確定是否認(rèn)可簽名,接受信息。
本方法中用到的哈希函數(shù)可以采用Md5哈希函數(shù),而對(duì)稱性分組加密算法可以采用下面的算法設(shè)h是一個(gè)安全哈希函數(shù),輸出為160位,密鑰k也是160位,讓m=m1‖m2‖…‖ms是明文,這里mi是m的分段,每一個(gè)mi是160位,如果最后的ms不足160位,則補(bǔ)上適當(dāng)?shù)?使得它也是160位,其中加密步驟如下1.計(jì)算k11=h(k)和k12=h(k‖k11),以及c11=m1+k11(mod 2160)和m=c11k12;2.計(jì)算k21=h(k‖k12)和k22=h(k‖k21),以及c21=m2+k21(mod 2160和c2=c21k22;3.第i步計(jì)算ki1=h(k‖k(i-1)2)和ki2=h(k‖ki1),以及ci1=mi+ki1(mod 2160)和ci=ci1ki2;4.輸出密文c=c1‖c2…‖cs;其中解密步驟如下1.計(jì)算k11=h(k)和k12=h(k‖k11),以及c11=c1k12和m1=c11-k11(mod 2160);2.計(jì)算k21=h(k‖k12)和k22=h(k‖k21),以及c21=c2k22和m2=c11-k21(mod 2160);3.第i步計(jì)算ki1=h(k‖k(i-1)2)和ki2=h(k‖ki1),以及ci1=ciki和mi=ci1-ki1(mod 2160);4.輸出明文m=m1‖m2‖…‖ms。
本發(fā)明與現(xiàn)有技術(shù)相比,具有的優(yōu)點(diǎn)是本方法是一種安全性很高的數(shù)字簽名方法。它的主體部分是橢圓曲線加密算法,這是最近新興起的公鑰密碼,它的攻擊難度與解決數(shù)論中的離散對(duì)數(shù)問(wèn)題相比,難度更大,因?yàn)樗峁┝艘环N構(gòu)造“元素”和“組合法則”以產(chǎn)生群的方法。這些群有足夠好的性質(zhì)來(lái)建立加密算法,但又缺乏便利于密碼分析學(xué)家進(jìn)行密碼分析的某些性質(zhì)。在EP0807908A2中顯示,對(duì)于模n是155位的橢圓曲線加密算法產(chǎn)生的安全性相當(dāng)于DSS的模p是512位時(shí)產(chǎn)生的安全性。橢圓曲線加密算法的數(shù)字簽名方法是乘法運(yùn)算,采用離散對(duì)數(shù)的數(shù)字簽名方法是指數(shù)運(yùn)算,而一般的數(shù)字簽名方法都采用離散對(duì)數(shù)算法,如美國(guó)國(guó)家標(biāo)準(zhǔn)局公布的“數(shù)字簽名標(biāo)準(zhǔn)”DSS。眾所周知,在計(jì)算機(jī)的運(yùn)算中,指數(shù)運(yùn)算比乘法運(yùn)算慢,而橢圓曲線的算法恰好把大素?cái)?shù)的指數(shù)運(yùn)算轉(zhuǎn)化為基點(diǎn)的數(shù)乘運(yùn)算,而且模n又比DSS的模p的位數(shù)小的多,這就大大加快了加密和解密速度,節(jié)約了時(shí)間。還有就是橢圓曲線算法可以更容易找到合適的密鑰,使得保密性更強(qiáng)。
所謂完全向前保密性,就是說(shuō)當(dāng)簽名者不慎泄露了他的私有密鑰時(shí),攻擊者也不能得到簽名者過(guò)去傳送的信息。我們提出的ECSC里把私有密鑰a加入方程而保證了完全向前保密性。如果發(fā)信者A不慎泄露了他的密鑰a,那么除了收信者B之外沒(méi)有人能知道過(guò)去的明文,因?yàn)椴荒軓募尤胨接忻荑€k的簽名方程里解出x。
所謂不可抵賴特性是指發(fā)信者A不能否認(rèn)所送出的收信方B收到的信息。如果B泄露了加密密鑰k,則整個(gè)簽名方法等價(jià)于Schnorr方案,而此方案是具有不可抵賴特性的,所以ECSC也具有不可抵賴特性。
由于本發(fā)明方法選用的模數(shù)范圍大,只要大于160位即可,因而可以用于網(wǎng)絡(luò)通信、電子商務(wù)(網(wǎng)上交易)、票據(jù)、證件以及信息發(fā)送者的身份驗(yàn)證等諸多信息傳遞領(lǐng)域中的防偽。
實(shí)施例1當(dāng)本方法用于網(wǎng)絡(luò)通信時(shí),假定發(fā)信者A想發(fā)送給收信者B一個(gè)保密的信息,并且要讓B確認(rèn)是A發(fā)送的。這時(shí)想發(fā)送的信息就是明文M,本方法中,發(fā)信者A和收信者B共同選擇一條橢圓曲線,這里我們給出一條橢圓曲線如下Ey2=x3+ax+b mod p其中a=77494639571290531462578212865140825277116269095458281742933794523316333051796=AB5469616E6D65694475616E64596F6E67636875616E4368656E7FFFFFFFFF94b=49336367977963216130290588492811183123976575047168832523116113737231920217819=6D13650B907BEDBF2C339E4D42812E6D
735336FF1D86814BC8DC0E49D4873EDBp=77494639571290531462578212865140825277116269095458281742933794523316333051799=AB5469616E6D65694475616E64596F6E67636875616E4368656E7FFFFFFFFF97橢圓曲線E的階為n=77494639571290531462578212865140825276923921136834765605181364151552442466917=AB5469616E6D65694475616E64596F6DD6AE89E94419C337C8D1AC2EBE918265它是一個(gè)素?cái)?shù)。
階為n的基點(diǎn)P取為P=(x,y)其中x=36198559909584908674601041265995975036611227154082760073807077671546888474733=5007A8AAA0687F823CB5F465D4C66C6564812DBAC40F33315E57C68E314D506Dy=57576069153006727155587661156400200991963501079268882610008601301935590635105=7F4AE67A58ED26CE2F12857436390748911D5D9A28501B4668A83B09B8027661發(fā)信者A與收信者B分別選取a∈Zp和b∈Zp作為自己的保密私有密鑰,而Qa=aP與Qb=bp分別作為A和B的公鑰并公開(kāi)。A嚴(yán)格按照本方法的步驟進(jìn)行操作,按照本方法的步驟最后發(fā)送密文和簽名。B在收到后進(jìn)行驗(yàn)證簽名,同時(shí)對(duì)信息解密。如果簽名正確,則確認(rèn)收到的信息是由A發(fā)送的,再處理解密后的信息。
實(shí)施例2當(dāng)本方法用于電子商務(wù)(網(wǎng)上交易)時(shí),簡(jiǎn)化的網(wǎng)上購(gòu)物過(guò)程如下假定A是購(gòu)物者,這時(shí)A發(fā)送的信息是有關(guān)自己的信用卡或其他能支付貨幣方式的信息。這個(gè)信息發(fā)送到A購(gòu)物所在商店或其它消費(fèi)場(chǎng)所,它們需要把此信息轉(zhuǎn)發(fā)給B。假設(shè)B是一個(gè)銀行,它對(duì)A發(fā)送的信息進(jìn)行驗(yàn)證,如果確認(rèn)無(wú)誤,就把A應(yīng)支付的貨幣金額劃到A購(gòu)物所在商店或其它消費(fèi)場(chǎng)所,完成網(wǎng)上交易。其中具體的信息發(fā)送和驗(yàn)證過(guò)程與實(shí)施例1相同。只不過(guò)具體的實(shí)際網(wǎng)上購(gòu)物還需要信用卡公司和電子商務(wù)服務(wù)器的協(xié)助。
實(shí)施例3當(dāng)本方法用于支票或匯票時(shí),假定A是付款方,C是收款方,B是付款行。A簽署支票時(shí),把有關(guān)支票或匯票的付款方、匯款方、收款方、付款數(shù)額,付款日期和防止支票丟失被他人冒領(lǐng)而設(shè)立的提款密碼等作為明文信息M,進(jìn)行加密和簽名過(guò)程,其具體操作與實(shí)施例1相同,并把最后得到的密文和簽名轉(zhuǎn)換成數(shù)碼串,或條形碼與二維圖象碼,打印在支票上。C拿到支票后,到付款行B處取款。B先從支票上讀出數(shù)碼串,或條形碼與二維圖象碼,然后轉(zhuǎn)換成密文與簽名,再以相應(yīng)的步驟進(jìn)行確認(rèn)和付款工作。
權(quán)利要求
1.一種運(yùn)用橢圓曲線加密算法的保密或安全通信的數(shù)字簽名方法,其特征在于它是以橢圓曲線公鑰加密算法為主體,輔以哈希函數(shù)及對(duì)稱加密算法而構(gòu)成的一種數(shù)字簽名方法,其具體操作步驟如下假定發(fā)信者A要給收信者B發(fā)送信息,A既希望保護(hù)自己的發(fā)送信息的安全,同時(shí)又希望若有其他人冒充自己給B發(fā)送信息,B都會(huì)給予否認(rèn);另一方面,B希望確認(rèn)自己收到的信息是從A而來(lái),而且如果確實(shí)是A發(fā)送的信息,則A以后不能否認(rèn);另外為了安全性更好,A希望就算自己的私有密鑰萬(wàn)一丟失,自己以前發(fā)送給B的信息也不會(huì)被破譯,具體的加密步驟是(a)加密系統(tǒng)的設(shè)立,記使用射影坐標(biāo)時(shí),在有限域
上橢圓曲線的Weierstrass方程是Ey2+a1xy+a3y=x3+a2x2+a4x+a6E在有限域
上的解集是
,其中包括無(wú)窮遠(yuǎn)點(diǎn)0,先找到一個(gè)大素?cái)?shù)n,我們?nèi)為160位,即2159≤n<2160,或更大位數(shù)的素?cái)?shù),設(shè)
的秩為
讓P是E的秩為n的基點(diǎn),用戶A的私有密鑰是a,a的范圍是1<a<n,公有密鑰是
用戶B的私有密鑰是b,b的范圍是1<b<n公有密鑰是
;h是一個(gè)輸出至少160位的哈希函數(shù);ENC是一個(gè)對(duì)稱加密系統(tǒng);(b)A的做法如下i.首先檢查B的公鑰,確認(rèn)B的身份,如果確認(rèn)無(wú)誤,執(zhí)行下一步;ii.隨機(jī)選擇一個(gè)整數(shù)x,計(jì)算
,然后計(jì)算k=h(xk1);]]>iii.計(jì)算
和s=ae+x-k(mod n)以及R=xP;iv.利用對(duì)稱性分組密碼進(jìn)行加密運(yùn)算C=ENCk(s‖M);v.將(R,C)傳送給B,(s,R)是A在明文M上的簽名;(c)B進(jìn)行如下操作i.首先檢查A的公鑰,確認(rèn)A的身份,如果確認(rèn)無(wú)誤,執(zhí)行下一步;ii.計(jì)算
和
iii.解密運(yùn)算(s‖M)=ENCk(C);iv.計(jì)算
U=(s+k)P和V=-eQa;v.檢驗(yàn)U+V=R(modP)成立與否來(lái)確定是否認(rèn)可簽名,接受信息。
2.根據(jù)權(quán)利要求1所述的運(yùn)用橢圓曲線加密算法的保密或安全通信的數(shù)字簽名方法,其特征在于本方法中用到的哈希函數(shù)采用Md5哈希函數(shù),而對(duì)稱性分組加密算法可以采用下面的算法設(shè)h是一個(gè)安全哈希函數(shù),輸出為160位,密鑰k也是160位,讓m=m1‖m2‖…‖ms是明文,這里mi是m的分段,每一個(gè)mi是160位,如果最后的ms不足160位,則補(bǔ)上適當(dāng)?shù)?使得它也是160位,其中加密步驟如下(a)計(jì)算k11=h(k)和k12=h(k‖k11),以及c11=m1+k11(mod 2160)和c1=c11k12;(b)計(jì)算k21=h(k‖k12)和k22=h(k‖k21),以及c21=m2+k21(mod 2160)和c2=c21k22;(c)第i步計(jì)算ki1=h(k‖k(i-1)2)和ki2=h(k‖ki1),以及ci1=mi+ki1(mod 2160)和ci=cilki2;(d)輸出密文c=c1‖c2‖…‖c3;其中解密步驟如下(a)計(jì)算k11=h(k)和k12=h(k‖k11),以及c11=c1k12和m1=c11-k11(mod 2160);(b)計(jì)算k21=h(k‖k12)和k22=h(k‖k21),以及c21=c2k22和m2=c21-k21(mod 2160);(c)第i步計(jì)算ki1=h(k‖k(i-1)2)和ki2=h(k‖ki1),以及ci1=ciki2和mi=ci1-ki1(mod 2160);(d)輸出明文m=m1‖m2‖…‖ms。
全文摘要
本發(fā)明屬于一種保密或安全通信的數(shù)字簽名方法,它采用橢圓曲線公鑰加密算法為主體部分,輔以哈希函數(shù)及對(duì)稱加密算法,具有縮短簽名和認(rèn)證所用的時(shí)間,高度安全性,向前保密性和不可抵賴等特性,可以用于網(wǎng)絡(luò)通信、電子商務(wù)、票據(jù)、證件以及信息發(fā)送者的身份驗(yàn)證等諸多信息傳遞領(lǐng)域中的防偽。
文檔編號(hào)H04L9/32GK1264974SQ9912528
公開(kāi)日2000年8月30日 申請(qǐng)日期1999年12月1日 優(yōu)先權(quán)日1999年12月1日
發(fā)明者陳永川 申請(qǐng)人:陳永川