發布成功
贊賞金額:
支付金額:5元
支付方式:
贊賞成功!
你的贊賞是對作者最大的肯定~?
橢圓曲線加密是一種目前已知的所有公鑰密碼體制中能夠提供最高比特強度的一種公鑰體制。在FPGA實現橢圓曲線加密系統時,基于GF(2)的多項式有限域中的乘法、求逆運算是其中的兩大難點。本文提供了一種橢圓曲線加密的FPGA實現的結構,著重討論了基于GF(2)的多項式有限域中的乘法、求逆運算的實現,并與軟件實現的性能進行了比較。
加密的安全性
從數論的角度來說,任何公鑰密碼系統都建立在一個NP(無法處理的問題)的基礎上,即對于特定的問題,沒有辦法找到一個多項式時間算法求解該問題。一般求解此類問題的算法都是指數時間或者亞指數時間,例如現在常用的RSA算法就是基于大整數因式分解問題的難解性。經過近三十多年的研究,RSA算法雖然并不存在多項式時間的算法,但是可以找到亞指數時間的算法,目前其密鑰長度必須大于1024位才能保證信息傳遞的安全,而橢圓曲線加密系統 (EllipTIc Curve Cryptosystem—ECC) 是目前已知的所有公鑰密碼體制中能夠提供最高比特強度 (Strength-Per-Bit) 的一種公鑰體制,只需要160的密鑰就可以達到1024位RSA算法提供的安全等級。其根據是有限域上的橢圓曲線上的點群中的離散對數問題(ECDLP),許多密碼專家認為它是指數級的難度。因此對于橢圓曲線加密系統來說,這一點從計算量、處理速度、存儲空間和通信帶寬等角度分析,橢圓曲線加密系統都有很大的優勢。IEEE已經制定的公鑰加密算法標準P1363就是基于ECC算法的。現在密碼學界普遍認為它將替代RSA成為通用的公鑰密碼算法,目前已成為研究的熱點,是很有前途的研究方向。
圖1 點算法實現
圖2 密鑰、數據交換
圖3 橢圓曲線加密系統結構圖
圖4 橢圓曲線加密系統FPGA電路模塊框圖
橢圓曲線加密體制
橢圓曲線
引進Non-supersingular橢圓曲線Weierstrass方程E:Y2+XY=X3+aX2+c其中a,c∈GF(2k),c≠0。為簡化以后的運算,引進z使X=x/z;Y=y/z,則橢圓曲線方程化為E:y2z+xyz=x3+ax2z+cz3,定義(x, y, z)=λ(x, y, z)。可以看出當z≠0,(X, Y)和(x, y, z)相對應,當z=0可以理解為沿y軸趨向無窮遠,定義為無窮遠點O。則橢圓曲線上所有的點外加無窮遠點構成的集合構成一個Abel群,O是單位元(零元)。在橢圓曲線E上定義了兩種點運算:點運算和點運算。
1) 橢圓曲線上點運算定義為:設P=( x1, y1, 1)∈E,Q=( x2, y2, 1) ∈E,-P=( x1, y1+ x1, 1), 當Q≠-P時 PQ=(x3, y3, z3) 則
當P≠Q時:
其中A=(x2z1+x1),B=(y2z1+y1), C=A+B,D=A2(A+a2z1)z1BC
當P=Q時:
其中
2) 橢圓曲線上的點運算定義為:設P=(x1, y1, 1)∈E,(ltlt-1...l0)2是整數l的二進制表示形式,lP=PPAP=Q且Q∈E。
利用上面的點運算,得點算法實現如圖1所示。定義l=logpQ,若P的周期很大,則利用l、P求Q是比較容易的,但利用P、Q求l是很難處理的,這就是ECDLP,橢圓曲線加密就是建立在這個難題之上。
加密體制
在Diffe-Hellman公鑰系統體制中,具體的橢圓曲線、曲線上點P及P的周期大素數N都是公開信息。
A和B要進行通訊,首先得到橢圓曲線E、點P及素數N。然后用戶A將[1,N-1]中隨機選取的整數a作為私鑰,A將KpubA=aP作為自己的公鑰傳送給用戶B,與此同時B將 [1,N-1]中隨機選取的整數b作為私鑰,并將KpubB=bP作為自己的公鑰傳送給A。A、B各自將自己的私鑰點乘于對方傳過來的公鑰得到KAB,這樣就完成了密鑰的交換過程。當用戶A需要將待傳數據m傳送給用戶B時,A利用m和KAB生成Em,當用戶B得到Em后,利用密鑰交換過程自己生成的KAB和從用戶A處得到的加密數據Em生成數據m。