本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種點(diǎn)對(duì)點(diǎn)的橢圓曲線數(shù)字簽名算法(ECDSA)。本發(fā)明還涉及一種基于所述改進(jìn)的橢圓曲線數(shù)字簽名算法的驗(yàn)簽方法。
背景技術(shù):
1、橢圓曲線數(shù)字簽名算法理論介紹
數(shù)字簽名對(duì)應(yīng)于手寫簽名的數(shù)字化,可以提供數(shù)據(jù)來源認(rèn)證、具有數(shù)據(jù)完整性及不可否認(rèn)性的特點(diǎn)。橢圓曲線數(shù)字簽名算法就是數(shù)字簽名的橢圓曲線版本。ECDSA具體流程如下:
輸入?yún)?shù)組D=(q,F(xiàn)R,S,a,b,P,n,h),私鑰d,消息m。
輸出簽名對(duì)(r,s)
a、隨機(jī)選擇k∈[1,n-1];
b運(yùn)算kP=(x1,y1),之后把x1轉(zhuǎn)化為整數(shù);
c、計(jì)算r=x1mod n,如果r=0,那么跳回步驟a;
d計(jì)算e=H(m),其中,H(x)為哈希函數(shù);
e、計(jì)算s=k-1(e+dr)mod n,如果s=0,那么跳回步驟a;
f、輸出簽名對(duì)(r,s)。
那么得到這個(gè)簽名對(duì)的其他用戶就可以通過公鑰與簽名對(duì)(r,s)判定是否為確定用戶的簽名了。驗(yàn)證簽名的具體流程如下:
輸入?yún)?shù)組D=(q,F(xiàn)R,S,a,b,P,n,h),公鑰Q,消息m,簽名對(duì)(r,s)。
A、確定r∈[1,n-1],s∈[1,n-1],否則驗(yàn)簽失?。?/p>
B、計(jì)算e=H(m),其中,H(x)為哈希函數(shù)
C、計(jì)算w=s-1mod n;
D、計(jì)算u1=ew mod n,u2=rw mod n;
E、計(jì)算X=u1P+u2Q,若X為無窮遠(yuǎn)點(diǎn),則簽名失??;
F、X=(x1,y1)之后把X1轉(zhuǎn)化為整數(shù);
G、如果X1與r相等,則驗(yàn)簽成功,否則驗(yàn)簽失敗。
2、黑手黨問題
Alice在Bob的餐廳——一家黑手黨擁有的餐廳吃飯,Carol在Dave的商場——一家高檔珠寶店買東西,Bob和Carol都是黑手黨成員,并且他們可以通過一條秘密通道通信,而Alice和Dave都不知道這個(gè)騙局。
當(dāng)Alice在Bob的餐廳吃飯后,準(zhǔn)備買單并向Bob驗(yàn)明身份時(shí),Bob通知Carol開始這場騙局,Carol也向Dave購買寶石并準(zhǔn)備驗(yàn)明身份,這樣,當(dāng)Alice對(duì)Bob的賬單進(jìn)行數(shù)字簽名后,Bob將Alice的數(shù)字簽名再傳給Carol,Carol就可以利用Alice的數(shù)字簽名與Dave進(jìn)行交易,進(jìn)而言之,Alice給黑手黨購買了寶石。
因此如果對(duì)數(shù)字簽名進(jìn)行改進(jìn),并將數(shù)字簽名引入ID(身份標(biāo)實(shí)),那么黑手黨就無法冒充Alice,因?yàn)锳lice在Bob的餐廳進(jìn)行的簽名是Alice與Bob,而Carol在Dave的商場需要的簽名ID是Carol和Dave的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種點(diǎn)對(duì)點(diǎn)的橢圓曲線數(shù)字簽名算法,可以有效解決點(diǎn)對(duì)點(diǎn)簽名的問題;同時(shí)相對(duì)于傳統(tǒng)橢圓曲線簽名方法保證在其他的節(jié)點(diǎn)ID無法實(shí)現(xiàn)中間人攻擊。
為解決上述技術(shù)問題,本發(fā)明點(diǎn)對(duì)點(diǎn)的橢圓曲線數(shù)字簽名算法,包括如下步驟:
輸入?yún)?shù)組D=(IDA,IDB,q,F(xiàn)R,S,a,b,P,n,h),私鑰d,公鑰Q,消息m,其中,IDA,IDB分別是交易雙方的ID;
輸出簽名對(duì)(r,s);
步驟(1),計(jì)算t=Hash(IDA||IDB||count)mod n,count=0x00000001,如果t=0,那么count++,重新計(jì)算t;
步驟(2),隨機(jī)選擇k∈[1,n-1];
步驟(3),運(yùn)算kP=(x1,y1),之后把x1轉(zhuǎn)化為整數(shù);
步驟(4),計(jì)算r=x1mod n,如果r=0,那么跳回步驟(2);
步驟(5),計(jì)算e=H(m),其中,H(x)為哈希函數(shù);
步驟(6),計(jì)算s=k-1t(e+dr)mod n,如果s=0,那么跳回步驟(2)獲取隨機(jī)數(shù);
步驟(7),輸出簽名對(duì)(r,s)。
基于上述改進(jìn)的橢圓曲線數(shù)字簽名算法的驗(yàn)簽方法,包括如下步驟:
輸入?yún)?shù)組D=(IDA,IDB,q,F(xiàn)R,S,a,b,P,n,h),消息m,簽名對(duì)(r,s),其中,IDA,IDB分別是交易雙方的ID;
步驟(1),計(jì)算t=Hash(IDA||IDB||count)mod n,count=0x00000001,如果t=0,那么count++,重新計(jì)算t;
步驟(2),確定r∈[1,n-1],s∈[1,n-1],否則驗(yàn)簽失??;
步驟(3),計(jì)算e=H(m),其中,H(x)為哈希函數(shù);
步驟(4),計(jì)算w=s-1mod n;
步驟(5),計(jì)算u1=tew mod n,u2=trw mod n;
步驟(6),計(jì)算X=u1P+u2Q,若X為無窮遠(yuǎn)點(diǎn),則簽名失?。?/p>
步驟(7),X=(x1,y1),之后把x1轉(zhuǎn)化為整數(shù);
步驟(8),如果x1與r相等,則驗(yàn)簽成功,否則驗(yàn)簽失敗。
在這種情況下,因?yàn)樵诓煌琁D下,t是不同的,假設(shè)A對(duì)B的賬單進(jìn)行數(shù)字簽名時(shí),t=t1。C向B提供數(shù)字簽名的t=t2(t1≠t2),C驗(yàn)簽時(shí)t=t2,所以A的數(shù)字簽名(t=t1)是無法通過C驗(yàn)簽。這樣中間人就無法使用A的金錢給他們買單了。
與傳統(tǒng)的橢圓曲線簽名相比,本發(fā)明可以解決中間人冒充簽名的行為。如果某人簽名必須加上交易雙方的ID,其他人若想冒充此人的簽名就是不可能的。從這點(diǎn)出發(fā),使得ECDSA簽名不能由其他人再次冒用。
附圖說明
下面結(jié)合附圖與具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明:
圖1是改進(jìn)的橢圓曲線數(shù)字簽名算法流程圖;
圖2是與所述改進(jìn)的橢圓曲線數(shù)字簽名算法相應(yīng)的驗(yàn)簽流程圖。
具體實(shí)施方式
圖1提供了以下流程來說明本發(fā)明的具體實(shí)施細(xì)節(jié)。
美國國家標(biāo)準(zhǔn)技術(shù)研究院(NIST)推薦了5套參數(shù)用于素?cái)?shù)域的橢圓曲線密碼。本實(shí)施例中采用其中的一套參數(shù),具體如下:
在有限域Fp中,有橢圓曲線E,其定義如下:
E:y2=x3+ax2+b
其中:
p=0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;
a=0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC;
b=0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b。
基點(diǎn)P的坐標(biāo)為,
[0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296,
0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5]
基點(diǎn)的階n為,
0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551。
假設(shè)私鑰d為
d=0x2CA1411A41B17B24CC8C3B089CFD033F1920202A6C0DE8ABB97DF1498D50D2C8。
假設(shè)IDA為0x61626364
假設(shè)IDB為0x65666768
計(jì)算t為
0x832F0D3EDF2E5CC121986AE425247B4379B47B3A1D83D5D171013910D8DE7E49。
步驟一,隨機(jī)選擇k∈[1,n-1];
k=0xA0640D4957F27D091AB1AEBC69949D96E5AC2BB283ED5284A5674758B12F08DF。
步驟二,運(yùn)算kP=(x1,y1);
kP的坐標(biāo)為,
[0xD73CD3722BAE6CC0B39065BB4003D8ECE1EF2F7A8A55BFD677234B0B3B902650,
0x7FB6E56C2A703DD7E7E9557EAD184588AB38066718EE4B808CD18DDD825D8866]。
步驟三,計(jì)算r=x1mod n,如果r=0,那么跳回步驟一;
r=0xD73CD3722BAE6CC0B39065BB4003D8ECEIEF2F7A8A55BFD677234B0B3B902650。
步驟四,計(jì)算e=H(m),其中,H(x)為哈希函數(shù);
假設(shè)e為,
e=0x1BD4ED430B0F384B4E8D458EFF1A8A553286D7AC21CB2F6806172EF5F94A06AD。
步驟五,計(jì)算s=tk-1(e+dr)mod n;
s=0x3BC8BB9E6F20285CC8E6C3D478F238A22256DFA025B028AA11D4DC642C77D0BC。
步驟六,輸出簽名對(duì)(r,s)。
結(jié)合圖2所示,驗(yàn)簽示例如下:
步驟一,計(jì)算e=H(m),其中,H(x)為哈希函數(shù)。
e和簽名一樣,
e=0x1BD4ED430B0F384B4E8D458EFF1A8A553286D7AC21CB2F6806172EF5F94A06AD。
步驟二,計(jì)算w=s-1mod n;
w=0x5D68908FF534F2C8F150412D11E9CF0A09FEAEDE0C3A727B4A056ADF9222C89C。
步驟三,計(jì)算u1=tew mod n,u2=trw mod n;
u1=0x4230443019AF06D9B2BEB55EBEAEF17537567CB205F87CFD3C6F79D5978837CC;
u2=0xD73CD3722BAE6CC0B39065BB4003D8ECE1EF2F7A8A55BFD677234B0B3B902650。
步驟四,計(jì)算X=u1P+u2Q,若X為無窮遠(yuǎn)點(diǎn),則簽名失敗。
點(diǎn)X的坐標(biāo)為,
[0xD73CD3722BAE6CC0B39065BB4003D8ECE1EF2F7A8A55BFD677234B0B3B902650,
0x7FB6E56C2A703DD7E7E9557EAD184588AB38066718EE4B808CD18DDD825D8866]
因?yàn)閄的橫坐標(biāo)與r相等,所以驗(yàn)簽成功。
以上通過實(shí)施例,對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,但本發(fā)明的保護(hù)范圍不限于所述的實(shí)施例。在不脫離本發(fā)明原理的情況下,本領(lǐng)域技術(shù)人員還可做出許多變形和改進(jìn),這些也應(yīng)視為本發(fā)明的保護(hù)范圍。