ECDSA簽名算法介紹
橢圓曲線數(shù)字簽名算法(ECDSA)是使用橢圓曲線密碼(ECC)對(duì)數(shù)字簽名算法(DSA)的模擬。與普通的離散對(duì)數(shù)問題(DLP)和大數(shù)分解問題(IFP)不同,橢圓曲線離散對(duì)數(shù)問題沒有亞指數(shù)時(shí)間的解決方法。因此橢圓曲線密碼的單位比特強(qiáng)度要高于其他公鑰體制。
數(shù)字簽名算法(DSA)在聯(lián)邦信息處理標(biāo)準(zhǔn)FIPS中有詳細(xì)論述,稱為數(shù)字簽名標(biāo)準(zhǔn)。它的安全性基于素域上的離散對(duì)數(shù)問題??梢钥醋魇菣E圓曲線對(duì)先前離散對(duì)數(shù)問題(DLP)的密碼系統(tǒng)的模擬,只是群元素由素域中的元素?cái)?shù)換為有限域上的橢圓曲線上的點(diǎn)。橢圓曲線離散對(duì)數(shù)問題遠(yuǎn)難于離散對(duì)數(shù)問題,單位比特強(qiáng)度要遠(yuǎn)高于傳統(tǒng)的離散對(duì)數(shù)系統(tǒng)。因此在使用較短的密鑰的情況下,ECC可以達(dá)到于DL系統(tǒng)相同的安全級(jí)別。這帶來的好處就是計(jì)算參數(shù)更小,密鑰更短,運(yùn)算速度更快,簽名也更加短小。
二、ECDSA原理ECDSA是ECC與DSA的結(jié)合,整個(gè)簽名過程與DSA類似,所不一樣的是簽名中采取的算法為ECC,最后簽名出來的值也是分為r,s。
簽名過程如下:
1、選擇一條橢圓曲線Ep(a,b),和基點(diǎn)G;
2、選擇私有密鑰k(k<n,n為G的階),利用基點(diǎn)G計(jì)算公開密鑰K=kG;
3、產(chǎn)生一個(gè)隨機(jī)整數(shù)r(r<n),計(jì)算點(diǎn)R=rG;
4、將原數(shù)據(jù)和點(diǎn)R的坐標(biāo)值x,y作為參數(shù),計(jì)算SHA1做為hash,即Hash=SHA1(原數(shù)據(jù),x,y);
5、計(jì)算s≡r - Hash * k (mod n)
6、r和s做為簽名值,如果r和s其中一個(gè)為0,重新從第3步開始執(zhí)行
驗(yàn)證過程如下:
1、接受方在收到消息(m)和簽名值(r,s)后,進(jìn)行以下運(yùn)算
2、計(jì)算:sG+H(m)P=(x1,y1), r1≡ x1 mod p。
3、驗(yàn)證等式:r1 ≡ r mod p。
4、如果等式成立,接受簽名,否則簽名無效。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。