ECC密碼編譯演算法入門介紹

來源:互聯網
上載者:User
加密|演算法 ECC密碼編譯演算法入門介紹


前言

同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一樣,ECC(Elliptic Curves Cryptography,橢圓曲線密碼編碼學)也屬於公開密鑰演算法。目前,國內詳細介紹ECC的公開文獻並不多(反正我沒有找到)。有一些簡介,也是泛泛而談,看完後依然理解不了ECC的實質(可能我理解力太差)。前些天我從國外網站找到些材料,看完後對ECC似乎懵懂了。於是我想把我對ECC的認識整理一下,與大家分享。當然ECC博大精深,我的認識還很膚淺,文章中錯誤一定不少,歡迎各路高手批評指正,小弟我洗耳恭聽,並及時改正。文章將採用連載的方式,我寫好一點就貼出來一點。本文主要側重理論,代碼實現暫不涉及。這就要求你要有一點數學功底。最好你能理解RSA演算法,對公開密鑰演算法有一個瞭解。《近世代數基礎》《初等數論》之類的書,最好您先翻一下,這對您理解本文是有協助的。別怕,我盡量會把語言通俗些,希望本文能成為學習ECC的敲門磚。

一、從平行線談起。

平行線,永不相交。沒有人懷疑把:)不過到了近代這個結論遭到了質疑。平行線會不會在很遠很遠的地方相交了?事實上沒有人見到過。所以“平行線,永不相交”只是假設(大家想想初中學習的平行公理,是沒有證明的)。既然可以假設平行線永不相交,也可以假設平行線在很遠很遠的地方相交了。即平行線相交於無窮遠點P∞(請大家閉上眼睛,想象一下那個無窮遠點P∞,P∞是不是很虛幻,其實與其說數學鍛煉人的抽象能力,還不如說是鍛煉人的想象力)。給個圖協助理解一下:



直線上出現P∞點,所帶來的好處是所有的直線都相交了,且只有一個交點。這就把直線的平行與相交統一了。為與無窮遠點相區別把原來平面上的點叫做平常點。
以下是無窮遠點的幾個性質。

▲直線L上的無窮遠點只能有一個。(從定義可直接得出)

▲平面上一組相互平行的直線有公用的無窮遠點。(從定義可直接得出)

▲ 平面上任何相交的兩直線L1,L2有不同的無窮遠點。(否則L1和L2有公用的無窮遠點P,則L1和L2有兩個交點A、P,故假設錯誤。)

▲平面上全體無窮遠點構成一條無窮遠直線。(自己想象一下這條直線吧)

▲平面上全體無窮遠點與全體平常點構成射影平面。

二、射影平面座標系統

射影平面座標系統是對普通平面直角座標系(就是我們初中學到的那個笛卡兒平面直角座標系)的擴充。我們知道普通平面直角座標系沒有為無窮遠點設計座標,不能表示無窮遠點。為了表示無窮遠點,產生了射影平面座標系統,當然射影平面座標系統同樣能很好的表示舊有的平常點(數學也是“向下相容”的)。



我們對普通平面直角座標繫上的點A的座標(x,y)做如下改造:

令x=X/Z ,y=Y/Z(Z≠0);則A點可以表示為(X:Y:Z)。

變成了有三個參量的座標點,這就對平面上的點建立了一個新的座標體系。

例2.1:求點(1,2)在新的座標體系下的座標。

解:∵X/Z=1 ,Y/Z=2(Z≠0)∴X=Z,Y=2Z ∴座標為(Z:2Z:Z),Z≠0。即(1:2:1)(2:4:2)(1.2:2.4:1.2)等形如(Z:2Z:Z),Z≠0的座標,都是(1,2)在新的座標體系下的座標。

我們也可以得到直線的方程aX+bY+cZ=0(想想為什嗎?提示:普通平面直角座標系下直線一般方程是ax+by+c=0)。新的座標體系能夠表示無窮遠點嗎?那要讓我們先想想無窮遠點在哪裡。根據上一節的知識,我們知道無窮遠點是兩條平行直線的交點。那麼,如何求兩條直線的交點座標?這是初中的知識,就是將兩條直線對應的方程聯立求解。平行直線的方程是:

aX+bY+c1Z =0; aX+bY+c2Z =0 (c1≠c2);

(為什嗎?提示:可以從斜率考慮,因為平行線斜率相同);

將二方程聯立,求解。有c2Z= c1Z= -(aX+bY),∵c1≠c2 ∴Z=0 ∴aX+bY=0;
所以無窮遠點就是這種形式(X:Y:0)表示。注意,平常點Z≠0,無窮遠點Z=0,因此無窮遠直線對應的方程是Z=0。

例2.2:求平行線L1:X+2Y+3Z=0 與L2:X+2Y+Z=0 相交的無窮遠點。
解:因為L1∥L2 所以有Z=0, X+2Y=0;所以座標為(-2Y:Y:0),Y≠0。即(-2:1:0)(-4:2:0)(-2.4:1.2:0)等形如(-2Y:Y:0),Y≠0的座標,都表示這個無窮遠點。

看來這個新的座標體系能夠表示射影平面上所有的點,我們就把這個能夠表示射影平面上所有點的座標體系叫做射影平面座標系統。


練習:
1、求點A(2,4) 在射影平面座標系統下的座標。
2、求射影平面座標系統下點(4.5:3:0.5),在普通平面直角座標系下的座標。
3、求直線X+Y+Z=0上無窮遠點的座標。
4、判斷:直線aX+bY+cZ=0上的無窮遠點 和 無窮遠直線與直線aX+bY=0的交點,是否是同一個點?


三、橢圓曲線

上一節,我們建立了射影平面座標系統,這一節我們將在這個座標系下建立橢圓曲線方程。因為我們知道,座標中的曲線是可以用方程來表示的(比如:單位圓方程是x2+y2=1)。橢圓曲線是曲線,自然橢圓曲線也有方程。

橢圓曲線的定義:
一條橢圓曲線是在射影平面上滿足方程
Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3 ----------------[3-1]
的所有點的集合,且曲線上的每個點都是非奇異(或光滑)的。

定義詳解:

▲ Y2Z+a1XYZ+a3YZ2 = X3+a2X2Z+a4XZ2+a6Z3是Weierstrass方程(維爾斯特拉斯,Karl Theodor Wilhelm Weierstrass,1815-1897),是一個齊次方程。

▲ 橢圓曲線的形狀,並不是橢圓的。只是因為橢圓曲線的描述方程,類似於計算一個橢圓周長的方程(計算橢圓周長的方程,我沒有見過,而對橢圓線積分(設密度為1)是求不出來的。誰知道這個方程,請告訴我呀^_^),故得名。

我們來看看橢圓曲線是什麼樣的。





▲ 所謂“非奇異”或“光滑”的,在數學中是指曲線上任意一點的偏導數Fx(x,y,z),Fy(x,y,z),Fz(x,y,z)不能同時為0。如果你沒有學過高等數學,可以這樣理解這個詞,即滿足方程的任意一點都存在切線。

下面兩個方程都不是橢圓曲線,儘管他們是方程[3-1]的形式。




因為他們在(0:0:1)點處(即原點)沒有切線。

▲橢圓曲線上有一個無窮遠點O∞(0:1:0),因為這個點滿足方程[3-1]。

知道了橢圓曲線上的無窮遠點。我們就可以把橢圓曲線放到普通平面直角座標繫上了。因為普通平面直角座標系只比射影平面座標系統少無窮遠點。我們在普通平面直角座標繫上,求出橢圓曲線上所有平常點組成的曲線方程,再加上無窮遠點O∞(0:1:0),不就構成橢圓曲線了嗎?

我們設x=X/Z ,y=Y/Z代入方程[3-1]得到:
y2+a1xy+a3y = x3+a2x2+a4x+a6 -------------------------[3-2]

也就是說滿足方程[3-2]的光滑曲線加上一個無窮遠點O∞,組成了橢圓曲線。為了方便運算,表述,以及理解,今後論述橢圓曲線將主要使用[3-2]的形式。

本節的最後,我們談一下求橢圓曲線一點的切線斜率問題。
由橢圓曲線的定義可以知道,橢圓曲線是光滑的,所以橢圓曲線上的平常點都有切線。而切線最重要的一個參數就是斜率k。

例3.1:求橢圓曲線方程y2+a1xy+a3y=x3+a2x2+a4x+a6上,平常點A(x,y)的切線的斜率k。
解:令F(x,y)= y2+a1xy+a3y-x3-a2x2-a4x-a6
求偏導數
Fx(x,y)= a1y-3x2-2a2x-a4
Fy(x,y)= 2y+a1x +a3
則導數為:f'(x)=- Fx(x,y)/ Fy(x,y)=-( a1y-3x2-2a2x-a4)/(2y+a1x +a3)
= (3x2+2a2x+a4-a1y) /(2y+a1x +a3)
所以k=(3x2+2a2x+a4-a1y) /(2y+a1x +a3) ------------------------[3-3]

看不懂解題過程沒有關係,記住結論[3-3]就可以了。


練習:
1、將給出圖例的橢圓曲線方程Y2Z=X3-XZ2 和Y2Z=X3+XZ2+Z3轉換成普通平面直角座標繫上的方程。


四、橢圓曲線上的加法

上一節,我們已經看到了橢圓曲線的圖象,但點與點之間好象沒有什麼聯絡。我們能不能建立一個類似於在實數軸上加法的運演算法則呢?天才的數學家找到了這一運演算法則

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
自從近世紀代數學引入了群、環、域的概念,使得代數運算達到了高度的統一。比如數學家總結了普通加法的主要特徵,提出了加群(也叫交換群,或Abel(阿貝爾)群),在加群的眼中。實數的加法和橢圓曲線的上的加法沒有什麼區別。這也許就是數學抽象把:)。關於群以及加群的具體概念請參考近世代數方面的數學書。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

運演算法則:任意取橢圓曲線上兩點P、



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。