簡述ECDSA算法

DSA算法是一種數(shù)字簽名算法,其原理是基于整數(shù)有限域離散對數(shù)難題。ECC算法是一種公鑰加密算法,基于橢圓曲線數(shù)學(xué)來實(shí)現(xiàn)安全性。而當(dāng)這兩種算法相結(jié)合,就會誕生出一種新的數(shù)字簽名算法——ECDSA算法。

ECDSA算法簡介

ECDSA算法的全稱為Elliptic Curve Digital Signature Algorithm,即橢圓曲線DSA。它是DSA算法應(yīng)用了橢圓曲線加密算法的變種。ECDSA算法和DSA算法一樣,無法用于數(shù)據(jù)加密。ECDSA算法主要應(yīng)用于數(shù)字簽名,以保障信息在傳遞和使用過程中的完整性、真實(shí)性和不可抵賴性。

ECDSA算法的整個簽名過程與DSA類似,不一樣的是簽名中采取的算法為ECC,最后簽名出來的值也是分為r和s兩個簽名值。橢圓曲線算法的原理很復(fù)雜,但是具有很好的公開密鑰算法特性,通過公鑰無法逆向獲得私鑰,可以有效提高數(shù)字簽名的安全性。

ECDSA算法

ECDSA算法簽名過程

生成過程

  1. 選擇一條橢圓曲線Ep(a,b),和基點(diǎn)G;
  2. 選擇私有密鑰k(k<n,n為G的階),利用基點(diǎn)G計(jì)算公開密鑰K=kG;
  3. 產(chǎn)生一個隨機(jī)整數(shù)r(r<n),計(jì)算點(diǎn)R=rG;
  4. 將原數(shù)據(jù)和點(diǎn)R的坐標(biāo)值x,y作為參數(shù),計(jì)算SHA256作為hash,即Hash=SHA1(原數(shù)據(jù),x,y);
  5. 計(jì)算s≡r - Hash * k (mod n);
  6. r和s作為簽名值,如果r和s其中一個為0,重新從第3步開始執(zhí)行。

ECDSA算法

驗(yàn)證過程

接收方在收到消息(m)和簽名值(r,s)后,進(jìn)行以下運(yùn)算:

  1. 計(jì)算:sG+H(m)P=(x1,y1), r1≡ x1 mod p。
  2. 驗(yàn)證等式:r1 ≡ r mod p。
  3. 如果等式成立,接受簽名,否則簽名無效。

ECDSA算法的優(yōu)缺點(diǎn)

ECDSA算法的優(yōu)點(diǎn)其實(shí)就是ECC算法的優(yōu)點(diǎn),它在實(shí)現(xiàn)相同安全性的條件下,所需要的密鑰更短,并且密鑰增長幅度也比較慢,計(jì)算量比較小,存儲空間占用也比較小,并且處理速度比較快。

而就像RSA算法的普及程度比ECC算法高一樣,ECDSA算法也具有同樣的問題。橢圓曲線原理復(fù)雜,在保證安全的同時,實(shí)現(xiàn)難度技術(shù)復(fù)雜。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。