ECC演算法介紹

2021-06-05 00:50:57 字數 1859 閱讀 3194

ecc(elliptic curves cryptography)加密演算法是一種公鑰加密演算法,與主流的rsa演算法相比,ecc演算法可以使用較短的金鑰達到相同的安全程度。近年來,人們對ecc的認識已經不再處於研究階段,開始逐步進入實際應用,如國家密碼管理局頒布的sm2演算法就是基於ecc演算法的。下面我們來認識一下ecc的工作原理。

定義在引入橢圓曲線之前,不得不提到一種新的座標系-------射影平面座標系,它是對笛卡爾直角座標系的擴充套件,增加了無窮遠點的概念。在此座標系下,兩條平行的直線是有交點的,而交點就是無窮遠點。兩者的變換關係為:

笛卡爾座標系中的點a(x,y),令x=x/z,y=y/z,則射影平面座標系下的點a的座標為(x,y,z),如點(2,3)就轉換為(2z,3z,z)。

橢圓曲線定義:一條橢圓曲線在射影平面上滿足方程:y2z+a1xyz+a3yz2=x3+a2x2z+a4xz2+a6z3的所有點的集合,且曲線上每個點都是非奇異的。

該方程有名維爾維斯特拉斯方程,橢圓曲線的形狀不是橢圓,只是因為其描述的方程類似於計算乙個橢圓周長的方程。轉換到笛卡爾座標系下的方程為:

y2+a1xy+a3y = x3+a2x2+a4x+a6

加法法則

運算法則:任意取橢圓曲線上兩點p、q (若p、q兩點重合,則做p點的切線)做直線交於橢圓曲線的另一點r』,過r』做y軸的平行線交於r。我們規定p+q=r。(如圖) 

下面,我們利用p、q點的座標(x1,y1),(x2,y2),求出r=p+q的座標(x4,y4)。

p,q,r'共線,設為y=kx+b,

若p≠q,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;

定義在有限域fp中定義乙個橢圓曲線,常用y2=x3+ax+b

fp中只有p個元素,p為素數

fp中,a+b≡c (mod p),a×b≡c (mod p),a/b≡c (mod p)

4a3+27b2≠0 (mod p)  a,b是小於p的非負整數

x,y屬於0到p-1間的證書,曲線標記為ep(a,b)

橢圓曲線難題

k=kg,其中k,g為ep(a,b)上的點,k為小於n的整數,n是點g的階,給定k和g,計算k容易,但是給定k和g,求k就很難了!

因此,設k為公鑰,k為私鑰,g為基點。

加密過程

a選定一條橢圓曲線ep(a,b),並取曲線上一點作為基點g

a選擇乙個私鑰k,並生成公鑰k=kg

a將ep(a,b)和k,g傳送給b

b收到後將明文編碼到ep(a,b)上一點m,並產生乙個隨機數r

b計算點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。

簽名驗籤流程

a選定一條橢圓曲線ep(a,b),並取曲線上一點作為基點g

a選擇乙個私鑰k,並生成公鑰k=kg

a產生乙個隨機數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,則驗籤成功。

以上加解密和簽名驗籤流程只是乙個例子,具體應用時可以利用k=kg這一特性變幻出多種加解密方式。

橢圓曲線ECC加密演算法入門介紹

前言 同rsa ron rivest,adi shamir,len adleman三位天才的名字 一樣,ecc elliptic curves cryptography,橢圓曲線密碼編碼學 也屬於公開金鑰演算法。目前,國內詳細介紹ecc的公開文獻並不多 反正我沒有找到 有一些簡介,也是泛泛而談,看完...

ECC演算法簡析

本文重在理清ecc演算法的來龍去脈,關於無窮遠點 攝影平面座標系 fp有限域 阿貝爾群等概念,要重點學習近世代數 關於 實現部分,本文暫未說明。一 射影平面的引入 近世代數中的幾個小概念 1關於無窮遠點,可以理解為平面上兩條平行線的交點 2一組平行直線只有乙個無窮遠點 3相交的兩條平行直線有不同的無...

解讀ECC加密演算法

ecc是 ellipticcurves cryptography 的縮寫,意為橢圓曲線密碼編碼學。和 rsa演算法一樣,ecc演算法也屬於公開金鑰演算法。最初由 koblitz 和miller 兩人於1985 年提出,其數學基礎是利用橢圓曲線上的有理點構成 abel 加法群上橢圓離散對數的計算困難性...