宋佳倩
摘 要 本論文描述了橢圓曲線密碼體制,論述了ECC橢圓曲線的概念以及基于ECC的加密、解密技術和基于橢圓曲線的數(shù)字簽名算法。最后,采用ECDSA算法,通過編程簡單實現(xiàn)電子政務系統(tǒng)的部分功能。
關鍵詞 數(shù)字簽名;電子政務;橢圓曲線數(shù)字簽名
中圖分類號:TP399 文獻標識碼:A 文章編號:1671-7597(2014)19-0058-01
1 橢圓曲線密碼體制
1.1 橢圓曲線的概念
橢圓曲線是在射影平面上滿足方程Y2Z+a1XYZ+a3YZ2=X3+
1)選取ECDSA域參數(shù)。2)產生密鑰對。3)生成ECDSA簽名。4)驗證ECDSA簽名。
3.2 ECDSA的安全性分析
ECDSA算法是通過ECC來實現(xiàn)的,故可以用ECC的安全性來形容ECDSA的安全性。所謂安全性即算法本身的抗攻擊強度,在此以RSA算法的安全性作為比對。增加RSA的密鑰長度,其解密速率將大幅度降低,且對硬件的實現(xiàn)也造成了一定的困難。而在同等密鑰長度的條件下,ECC的安全性就要高得多,這也使得ECC只需使用較短的密鑰即可保證算法的安全性。
4 系統(tǒng)的具體實現(xiàn)
4.1 基本流程
ECDSA的基本流程如圖2所示。
圖2 ECDSA的生成和驗證
4.2 ECDSA算法的實現(xiàn)
首先調用int privateKey = rand()隨機生成私鑰,在此上調用Point publicKey = privateKey * mEncoder.GetGPoint()生成公鑰。其中GetGPoint()函數(shù)是用來取G點的函數(shù)。
4.3 文件的簽名操作
1)計算SHA1值:
int SHA1Reset(SHA1Context *context);//初始化,計算新sha1消息摘要
void SHA1ProcessMessageBlock(SHA1Context *context);
2)產生簽名:
Int k(rand() % 128);//隨機產生私鑰
Point p = k.i() * GetGPoint(); //根據(jù)私鑰計算公鑰
tmp[i + SHA1HashSize] = s.i();//計算(r,s)
4.4 簽名的驗證
Int r = Int((unsigned char)sig[i]);//從簽名中獲取r
Int s = Int((unsigned char)sig[i + SHA1HashSize]);//從簽名中獲取s
Int e = Int(sha1[i]);得到sha1值
if (x.x() == 0 || x.x() != r)return false;//r=0或者v不等于r,返回非法簽名
5 結束語
橢圓曲線密碼體制可使通信系統(tǒng)安全性提高,簽名方案可以同時完成數(shù)字簽名和公鑰加密。本文提出的以橢圓曲線為基礎的數(shù)字簽名方案,能夠實現(xiàn)收發(fā)雙方的相互認證;當雙方發(fā)生爭議時,可由仲裁者去仲裁,這在通信應用場合中有一定實用價值。
參考文獻
[1]張先紅.數(shù)字簽名原理及技術[M].北京:機械工業(yè)出版社,2004.
[2]曹莉,劉志鏡.橢圓曲線密碼體制與電子政務[J].計算機安全,2005.
[3]楊義先,孫偉.現(xiàn)代密碼新理論[M].北京:科學出版社,2002.
[4]于海峰.政府信息化建設中的信息安全管理[J].計算機世界,2001.
[5]胡道元.Intranet網絡技術及應用[M].北京:清華大學出版社,1998.
[6]于慧龍,解玲.基于保護輪廓的數(shù)據(jù)庫系統(tǒng)安全性[J].信息網絡安全,2002.
[7]Chicurel M .C ell Migration Research is on the Move[J].Science, 2002.
[8]牛少彰,崔寶江,李劍.信息安全概論[M].北京:北京郵電大學出版社,2004.
[9]江翔,袁輝.Visual C++實踐與提高網絡編程篇[M].北京:中國鐵道出版社,2001.endprint