基于橢圓曲線加密算法的數(shù)字簽名技術

數(shù)字簽名用于鑒定簽名人的身份以及對一項電子數(shù)據(jù)內容的認可。它還能驗證出文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完整性、真實性和不可抵賴性。下面我將給大家介紹一種基于橢圓曲線加密算法的數(shù)字簽名技術。

基于橢圓曲線加密算法的數(shù)字簽名

1、基于橢圓曲線加密算法數(shù)字簽名的原理

(1)生成密鑰對

首先,需要確定加密算法的公鑰與私鑰。選擇一條橢圓曲線E(a,b,p值給定),在E上選取一個周期很大的點P=(Xp,Yp),它的周期為一個很大的素數(shù)n。在橢圓曲線密碼體制中,具體的曲線E及點P和它的周期n都是公開信息。給定參數(shù)(p,E,P,n)以后,選擇d∈R[1,n-1]。計算Q=dP,返回(Q,d),其中,Q為公鑰,d為私鑰。

(2)加密算法

確定了橢圓曲線加密算法的公鑰與私鑰以后,就可以進行加密了。加密算法如下:

首先,確定參數(shù)組(p,E,P,n),公鑰Q,明文m;然后,將明文m表示為橢圓曲線E上的點M;選擇k∈R[1,n-1],計算C1=kP,C2=M+kQ。(C1,C2)就是明文文件加密后的密文。

(3)解密算法

收到密文文件以后,可以對密文進行解密,解密算法如下:

首先,確定參數(shù)組(p,E,P,n),私鑰d,密文(C1,C2);然后,計算M=C2-dC1,并從點M中取出明文m。

2、基于橢圓曲線加密算法數(shù)字簽名過程

(1)簽名過程

假如現(xiàn)在A想給簽署一份文件,為確認這份文件確實是A簽署的,可以先對這份文件進行數(shù)字簽名。用橢圓曲線加密算法的數(shù)字簽名過程如下:

a、對明文使用HASH加密算法,得到明文的數(shù)據(jù)摘要。(大多時候,明文的信息都比較長,如果直接用橢圓曲線加密算法加密,加密的速度會比較慢,而且耗費系統(tǒng)資源。這時候,可使用HASH函數(shù),使用MD5或者SHA算法生成數(shù)據(jù)摘要。這樣做的優(yōu)點是:輸出較短,一般是128位;抗逆向攻擊;抗碰撞攻擊);

b、對數(shù)據(jù)摘要進行加密,使用A的私鑰進行橢圓曲線算法加密,得到數(shù)據(jù)摘要的密文;

c、將明文和加密后的摘要同時進行DES加密,將密文送給B。數(shù)字簽名過程,如圖所示:

基于橢圓曲線加密算法的數(shù)字簽名技術

 

(2)驗證過程

B收到A發(fā)來的密文后,為了驗證密文確實是A發(fā)送的,可以對密文進行驗證,驗證過程如下:

a、對密文進行DES解密,得到明文和A用橢圓曲線算法機密后的摘要;

b、對明文使用HASH算法,得到明文的數(shù)據(jù)摘要;

c、使用A的公鑰對A加密的數(shù)據(jù)摘要進行解密,得到數(shù)據(jù)摘要;

d、將b和c得到的數(shù)據(jù)摘要進行比較,如果相同,則說明該密文確實是A發(fā)送的,如不同,,則說明該密文不是A發(fā)送的。

基于橢圓曲線加密算法的數(shù)字簽名技術

?

小知識之橢圓曲線加密算法

橢圓曲線加密算法是一種公鑰加密算法,與主流的RSA算法相比,橢圓曲線加密算法可以使用較短的密鑰達到相同的安全程度。