橢圓曲線加密也是一種公鑰加密演算法,和RSA與離散對數一樣,它也是基於一個數學求解的難題,並且它的難度比RSA和離散對數都要大,它基於的數字難題就是求取定義在橢圓曲線上的離散對數的求取難題,對於這個難題的描述比大數分解和離散對數要稍微複雜一些,不過它也還算比較形象,理解起來也不難,如果有公式恐懼的直接看文字也能明白大致的意思。

1、定義在實數域上的橢圓曲線

曲線方程是:y2=x3+ax+b4a3+27b20
曲線形狀是:
這裡寫圖片描述
一個橢圓曲線群指的就是由曲線上的點和無窮遠點O組成的集合。
這個群是一個加法群,這個加法群是這樣定義的:
對於橢圓曲線上不同的兩點PQ,則有P+Q=R,它表示為一條通過PQ的直線與橢圓曲線相交於一點R,R關於X軸對稱的點即為R,如下圖所示:
這裡寫圖片描述
對於曲線上的任意一點P,有P+(P)=OO是無窮遠點。如果P點的座標是(x,y),那麼P點的座標是(x,y),如下圖所示(下圖也是一種橢圓曲線):
這裡寫圖片描述
對於橢圓曲線上的任意一點P,有P+P=2P=R,相對於在P點做一條切線,切線與曲線相交於一點,然後取橢圓曲線上關於該交點的對稱點,如下圖所示:
這裡寫圖片描述
特別的,對於點P,如果y=0,那麼交點在無窮遠點,則有2P=O,如下圖所示:
這裡寫圖片描述
上面的幾條運演算法則定義了橢圓曲線的加法,依據這個加法現在就可以說明一下橢圓曲線加密所利用的數學難題:
對於橢圓曲線上的點P,其中y0,也就是縱座標不能於0,依據前面定義的加法的計演算法則,給定一個整數n,很容易求出Q=nP,也就是nP相加,但是在已知了PQ的條件下求取n則是一個很難的問題。
前面給出了實數域上橢圓曲線的加法的定義,利用一定的平面解析幾何的方法就可以得到加法的計算公式:
如果P=(xP,yP)Q=(xQ,yQ)不是互反的,也就是不是橫座標相等,縱座標相反,那麼求取P+Q=R,R=(xR,yR)的演算法是:
s=yPyQxPxQ,可以看出s就是直線的斜率
xR=s2xPxQ,yR=yP+s(xPxR)
求取R=2P的公式是(這個是針對P=(xP,yP),且yP0):
s=3xp2+a2yp
xR=s22xP,yR=yP+s(xPxR)

2、定義在FP域和F2m域上的橢圓曲線

相關文章