ecc椭圆加密算法c语言,ECC算法介绍 - 椭圆曲线加密算法 - 中国数字证书CHINASSL
ECC(Elliptic Curves Cryptography)加密算法是一種公鑰加密算法,與主流的RSA算法相比,ECC算法可以使用較短的密鑰達(dá)到相同的安全程度。近年來,人們對ECC的認(rèn)識已經(jīng)不再處于研究階段,開始逐步進(jìn)入實(shí)際應(yīng)用,如國家密碼管理局頒布的SM2算法就是基于ECC算法的。下面我們來認(rèn)識一下ECC的工作原理。
橢圓曲線
定義
在引入橢圓曲線之前,不得不提到一種新的坐標(biāo)系-------射影平面坐標(biāo)系,它是對笛卡爾直角坐標(biāo)系的擴(kuò)展,增加了無窮遠(yuǎn)點(diǎn)的概念。在此坐標(biāo)系下,兩條平行的直線是有交點(diǎn)的,而交點(diǎn)就是無窮遠(yuǎn)點(diǎn)。兩者的變換關(guān)系為:
笛卡爾坐標(biāo)系中的點(diǎn)a(x,y),令x=X/Z,y=Y/Z,則射影平面坐標(biāo)系下的點(diǎn)a的坐標(biāo)為(X,Y,Z),如點(diǎn)(2,3)就轉(zhuǎn)換為(2Z,3Z,Z)。
橢圓曲線定義:一條橢圓曲線在射影平面上滿足方程:Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3的所有點(diǎn)的集合,且曲線上每個點(diǎn)都是非奇異的。
該方程有名維爾維斯特拉斯方程,橢圓曲線的形狀不是橢圓,只是因?yàn)槠涿枋龅姆匠填愃朴谟嬎阋粋€橢圓周長的方程。轉(zhuǎn)換到笛卡爾坐標(biāo)系下的方程為:
y2+a1xy+a3y = x3+a2x2+a4x+a6
加法法則
運(yùn)算法則:任意取橢圓曲線上兩點(diǎn)P、Q (若P、Q兩點(diǎn)重合,則做P點(diǎn)的切線)做直線交于橢圓曲線的另一點(diǎn)R’,過R’做y軸的平行線交于R。我們規(guī)定P+Q=R。(如圖)
此處+不是簡單的實(shí)數(shù)相加,是抽象出來的
O∞+P=P,O∞為零元
曲線上三個點(diǎn)A,B,C處于一條直線上,則A+B+C=O∞
下面,我們利用P、Q點(diǎn)的坐標(biāo)(x1,y1),(x2,y2),求出R=P+Q的坐標(biāo)(x4,y4)。
P,Q,R'共線,設(shè)為y=kx+b,
若P≠Q(mào),k=(y1-y2)/(x1-x2)
若P=Q,k=(3x2+2a2x+a4?-a1y) /(2y+a1x+a3)
解方程組得到:
x4=k2+ka1-a2-x1-x2;
y4=k(x1-x4)-y1-a1x4-a3;
密碼學(xué)中的橢圓曲線
定義
在有限域Fp中定義一個橢圓曲線,常用y2=x3+ax+b
Fp中只有p個元素,p為素數(shù)
Fp中,a+b≡c (mod p),a×b≡c (mod p),a/b≡c (mod p)
4a3+27b2≠0 (mod p)? a,b是小于p的非負(fù)整數(shù)
x,y屬于0到p-1間的證書,曲線標(biāo)記為Ep(a,b)
階:橢圓曲線上一點(diǎn)P,存在正整數(shù)n,使得nP=O∞,則n為P的階,若n不存在,則P是無限階的,有限域上定義的橢圓曲線上所有點(diǎn)的階都存在。
橢圓曲線難題
K=kG,其中K,G為Ep(a,b)上的點(diǎn),k為小于n的整數(shù),n是點(diǎn)G的階,給定k和G,計算K容易,但是給定K和G,求k就很難了!
因此,設(shè)K為公鑰,k為私鑰,G為基點(diǎn)。
加密過程
A選定一條橢圓曲線Ep(a,b),并取曲線上一點(diǎn)作為基點(diǎn)G
A選擇一個私鑰k,并生成公鑰K=kG
A將Ep(a,b)和k,G發(fā)送給B
B收到后將明文編碼到Ep(a,b)上一點(diǎn)M,并產(chǎn)生一個隨機(jī)數(shù)r
B計算點(diǎn)C1=M+rK,C2=rG
B將C1,C2傳給A
A計算C1-kC2=M+rkG-krG=M
A對M解碼得到明文
攻擊者只能得到Ep(a,b),G,K,C1,C2,沒有k就無法得到M。
簽名驗(yàn)簽流程
A選定一條橢圓曲線Ep(a,b),并取曲線上一點(diǎn)作為基點(diǎn)G
A選擇一個私鑰k,并生成公鑰K=kG
A產(chǎn)生一個隨機(jī)數(shù)r,計算R(x,y)=rG
A計算Hash=SHA(M),M‘=M(modp)
A計算S=(Hash+M'k)/r(modp)
B獲得S和M',Ep(a,b),K,R(x,y)
B計算Hash=SHA(M),M'=M(modp)
B計算R'=(Hash*G+M'*K)/S=(Hash*G+M'*kG)*r/(Hash+M'k)=rG=R(x,y),若R'=R,則驗(yàn)簽成功。
以上加解密和簽名驗(yàn)簽流程只是一個例子,具體應(yīng)用時可以利用K=kG這一特性變幻出多種加解密方式。
總結(jié)
以上是生活随笔為你收集整理的ecc椭圆加密算法c语言,ECC算法介绍 - 椭圆曲线加密算法 - 中国数字证书CHINASSL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 毕业设计 单片机交通安全车辆测速系统 -
- 下一篇: Asciidoc 的嵌入式链接写法