摘 要:采用Java提供的大數操作,對素數域上橢圓曲線進行深入分析,以國際上相關的研究和算法實現工作為基礎,采用數學建模和面向對象的思想,根據橢圓曲線密碼體制,實現素數域橢圓曲線加密系統,給出詳細的設計,并分析了其中的關鍵算法。針對Java在網絡上的廣泛應用,將其應用于網絡驗證,保護網絡應用系統的安全。關鍵詞:橢圓曲線; 密碼體制; 倍點; 數字簽名; 面向對象
中圖分類號:TN919-34; TP3097文獻標識碼:A
文章編號:1004-373X(2010)17-0117-04
Research and Application of Elliptic Curve Cryptosystem
LI Ming-xin, ZENG Xiao-ping, KANG Feng
(Department of Computer Engineering, Chengdu Aeronautic Vocational and Technical College, Chengdu 610021, China)
Abstract: The elliptic curve over prime finite field is analyzed deeply by using big integer provided by Java. Using mathematics modeling and object oriented method, according to EC public key encrypt theme, the elliptic curve encrypt system over prime finite field is achieved based on international relevant research and algorithms. Some important algorithms and detailed design of the system is proposed. In view of the wide application of Java in network, this cryptosystem is applied to network authentication for protecting the security of the system information.Keywords: elliptic curve; cryptosystem; point multiplying; digital signature; object-oriented
0 引 言
橢圓曲線密碼系統是由Neal Koblitz和Victor Miller在1985年分別獨立提出的,橢圓曲線密碼系統在同等的安全級別下密鑰最短,特別適用于計算能力較弱,存儲空間較小,帶寬較小的環境。同時,橢圓曲線資源豐富,同一個有限域上存在著大量不同的橢圓曲線,這為安全性增加了額外的保證,也為軟、硬件實現帶來方便。由于受美國安全出口限制,與Java開發包中橢圓曲線相關的API中提供的密鑰長度達不到保障數據的安全,Java語言具有很好的跨平臺性,所以本系統采用Java開發,并將其應用到網絡傳輸中。
1 橢圓曲線及相關定義
定義1 韋爾斯特拉斯(Weierstrass)方程:
y2+axy+by=x3+cx2+dx+e(1)
所確定光滑平面曲線稱為橢圓曲線,記為E,其中a,b,c,d,e∈Fp;Fp為有限域。滿足式(1) 的(x,y) 稱為Fp域上的點。此外,橢圓曲線還定義一個特殊的無窮點O。
設p是一個大于3的奇素數,參數a,b滿足4a3+27b2≠0(mod p),那么有限素數域Fp上的橢圓曲線可以定義為:
E: y2≡x3+ax+b(mod p)(2)
素數域上Fp的橢圓曲線參數是一個六元組,它們是T={p,a,b,G,n,h},其中p,a,b用來確定一條橢圓曲線;G=(xG,yG)為橢圓曲線的基點;素數n為G的階,n即為#E(Ep),可以利用Hasse[1]定理來計算橢圓曲線的階:……p>