橢圓曲線加密(ECC)elliptic curves cryptography

前言

ECC英文全稱"Ellipse Curve Cryptography"

與傳統的基於大質數因子分解困難性的加密方法不同,ECC通過橢圓曲線方程式的性質產生密鑰

ECC164位的密鑰產生一個安全級,相當於RSA 1024位密鑰提供的保密強度,而且計算量較小,處理速度更快,存儲空間和傳輸帶寬佔用較少。目前我國居民二代身份證正在使用 256 位的橢圓曲線密碼,虛擬貨幣比特幣也選擇ECC作爲加密算法。

從射影平面講起

古希臘數學家歐幾里得的《幾何原本》提出了五條公設。

  • 1.由任意一點到任意一點可作直線。

  • 2.一條有限直線可以繼續延長。

  • 3.以任意點爲心及任意的距離可以畫圓。

  • 4.凡直角都相等。

  • 5.同一平面內一條直線a和另外兩條直線b.c相交,若在a某一側的兩個內角的和小於兩直角,則b.c兩直線經無限延長後在該側相交。

《幾何原本》只有在第29個命題

一條直線與兩條平行直線相交,則所成的內錯角相等,同位角相等,且同旁內角之和等於兩直角

中纔用到第五公設,即《幾何原本》中可不依靠第五公設而推出前28命題。因此,一些數學家提出,第五公設能不能不作爲公設,而作爲定理?能不能依靠前四個公設來證明第五公設?這就是幾何發展史上最著名的,爭論了長達兩千多年的關於“平行線理論”的討論

1820年代,俄國喀山大學羅巴切夫斯基用“至少可以找到兩條相異的直線,且都通過P點,並不與直線R相交”代替第五公設,然後與歐氏幾何的前四個公設結合成一個公理系統,他經過細緻深入的推理過程中,得出了一個又一個在直覺上匪夷所思,但在邏輯上毫無矛盾的幾何體系。

這種幾何學被稱爲羅巴切夫斯基幾何,簡稱羅氏幾何。從羅氏幾何學中,可以得出這樣一個結論:邏輯上不矛盾的一些公理都有可能提供一種幾何學。現存非歐幾何的類型可以概括如下:

1.堅持第五公設,引出歐幾里得幾何。

2.“可以引最少兩條平行線”爲公設,羅氏幾何(雙曲幾何)。

3.“一條平行線也不能引”爲公設,黎曼幾何(橢圓幾何)

左:雙曲幾何,即羅氏幾何;中:歐幾里德幾何;右:橢圓幾何,即黎曼幾何

瞭解非歐式幾何,就可以理解平行線的交點。

定義平行線相交於無窮遠點P∞,使平面上所有直線都統一爲有唯一的交點

性質:

  • 1.一條直線只有一個無窮遠點;一對平行線有公共的無窮遠點

  • 2.任何兩條不平行的直線有不同的無窮遠點(否則會造成有兩個交點)

  • 3.平面上全體無窮遠點構成一條無窮遠直線

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

射影平面點的定義
對普通平面上點(x,y),令x=X/Z,y=Y/Z,Z≠0,則投影爲射影平面上的點(X:Y:Z)

求點(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)在新的座標體系下的座標

(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

橢圓曲線

一條橢圓曲線是在射影平面上滿足威爾斯特拉斯方程(Weierstrass)所有點的集合

Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3

  • 1橢圓曲線方程是一個齊次方程

  • 2曲線上的每個點都必須是非奇異的(光滑的),偏導數FX(X,Y,Z)、FY(X,Y,Z)、FZ(X,Y,Z)不同爲0

  • 3圓曲線的形狀,並不是橢圓的。只是因爲橢圓曲線的描述方程,類似於計算一個橢圓周長的方程故得名

橢圓曲線示例

非橢圓曲線示例

這兩個方程都不是橢圓曲線,因爲他們在(0:0:1)點處(即原點)沒有切線,不滿足橢圓曲線每個點都必須是非奇異的(光滑的),

橢圓曲線普通方程

橢圓曲線普通方程:

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

無窮遠點 (0, Y, 0)
平常點(x,y)斜率k:

Fx(x,y)=a1y3x22a2xa4Fy(x,y)=2y+a1x+a3Fx(x,y)=a1y−3x2−2a2x−a4Fy(x,y)=2y+a1x+a3

k=Fx(x,y)Fy(x,y)=3x2+2a2x+a4a1y2y+a1x+a3k=−Fx(x,y)Fy(x,y)=3x2+2a2x+a4−a1y2y+a1x+a3

橢圓曲線阿貝爾羣

我們已經看到了橢圓曲線的圖象,但點與點之間好象沒有什麼聯繫。我們能不能建立一個類似於在實數軸上加法的運算法則呢?這就要定義橢圓曲線的加法羣,這裏需要用到近世代數中阿貝爾羣。

在數學中,羣是一種代數結構,由一個集合以及一個二元運算所組成。已知集合和運算(G,*)如果是羣則必須滿足如下要求

  • 封閉性:∀a,b∈G,a*b ∈ G

  • 結合性: ∀a,b,c∈G ,有 (ab)c = a* (b*c)

  • 單位元:ョe∈G, ∀a ∈G,有ea = ae = a

  • 逆元: ∀a ∈G ,ョb∈G 使得 ab = ba = e

阿貝爾羣除了上面的性質還滿足交換律公理(ab)c = a* (b*c)

同樣在橢圓曲線也可以定義阿貝爾羣。

任意取橢圓曲線上兩點P、Q(若P、Q兩點重合,則作P點的切線),作直線交於橢圓曲線的另一點R',過R'做y軸的平行線交於R,定義P+Q=R。這樣,加法的和也在橢圓曲線上,並同樣具備加法的交換律、結合律

同點加法

若有k個相同的點P相加,記作kP

P+P+P=2P+P=3P

有限域橢圓曲線

橢圓曲線是連續的,並不適合用於加密;所以,我們必須把橢圓曲線變成離散的點,我們要把橢圓曲線定義在有限域上。
我們給出一個有限域Fp

  • Fp中有p(p爲質數)個元素0,1,2,…, p-2,p-1

  • Fp的加法是a+b≡c(mod p)

  • Fp的乘法是a×b≡c(mod p)

  • Fp的除法是a÷b≡c(mod p),即 a×b^(-1)≡c (mod p),b-1也是一個0到p-1之間的整數,但滿足b×b-1≡1 (mod p)

  • Fp的單位元是1,零元是 0

  • Fp域內運算滿足交換律、結合律、分配律

橢圓曲線Ep(a,b),p爲質數,x,y∈[0,p-1]

y2=x3+ax+b(modp)y2=x3+ax+b(modp)

選擇兩個滿足下列約束條件的小於p的非負整數a、b

4a3+27b20(modp)4a3+27b2≠0(modp)

Fp上的橢圓曲線同樣有加法

  • 1.無窮遠點 O∞是零元,有O∞+ O∞= O∞,O∞+P=P

  • 2.P(x,y)的負元是 (x,-y mod p)= (x,p-y) ,有P+(-P)= O∞

  • 3.P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下關係:

x3≡k2-x1-x2(mod p)

y3≡k(x1-x3)-y1(mod p)

若P=Q 則 k=(3x2+a)/2y1mod p

若P≠Q,則k=(y2-y1)/(x2-x1) mod p

例題橢圓曲線已知E23(1,1)上兩點P(3,10),Q(9,7),求(1)-P,(2)P+Q,(3) 2P

(1)P=(3,10mod23)=(3,13)(2)k=71093=21mod23221=1mod2321=12k=12mod23=11P+Q=(11239mod23,11×(3(6))mod23)=(17,20)(3)k=3×32+12×10mod23=751mod23551=1mod2351=14k=714mod23=62P=(6233mod23,6×(37)mod23)=(7,12)(1)−P=(3,−10mod23)=(3,13)(2)k=7−109−3=−2−1mod232⋅2−1=1mod23⇒2−1=12k=−12mod23=11P+Q=(112−3−9mod23,11×(3−(−6))mod23)=(17,20)(3)k=3×32+12×10mod23=7⋅5−1mod235⋅5−1=1mod23⇒5−1=14k=7⋅14mod23=62P=(62−3−3mod23,6×(3−7)mod23)=(7,12)

有限域橢圓曲線點的階

如果橢圓曲線上一點P,存在最小的正整數n使得數乘nP=O∞ ,則將n稱爲P的階
若n不存在,則P是無限階的

計算可得27P=-P=(3,13)

所以28P=O ∞ P的階爲28

這些點做成了一個循環阿貝爾羣,其中生成元爲P,階數爲29。顯然點的分佈與順序都是雜亂無章

橢圓曲線加密

考慮K=kG ,其中K、G爲橢圓曲線Ep(a,b)上的點,n爲G的階(nG=O∞ ),k爲小於n的整數。則給定k和G,根據加法法則,計算K很容易但反過來,給定K和G,求k就非常困難。因爲實際使用中的ECC原則上把p取得相當大,n也相當大,要把n個解點逐一算出來列成上表是不可能的。這就是橢圓曲線加密算法的數學依據

點G稱爲基點(base point)

k(k<n)爲私有密鑰(privte key)

K爲公開密鑰(public key)

ECC保密通信算法

  • 1.Alice選定一條橢圓曲線E,並取橢圓曲線上一點作爲基點G 假設選定E29(4,20),基點G(13,23) , 基點G的階數n=37

  • 2.Alice選擇一個私有密鑰k(k<n),並生成公開密鑰K=kG 比如25, K= kG = 25G = (14,6)

  • 3.Alice將E和點K、G傳給Bob

  • 4.Bob收到信息後,將待傳輸的明文編碼到上的一點M(編碼方法略),併產生一個隨機整數r(r<n,n爲G的階數) 假設r=6 要加密的信息爲3,因爲M也要在E29(4,20) 所以M=(3,28)

  • 5.Bob計算點C1=M+rK和C2=rG C1= M+6K= M+6*25*G=M+2G=(3,28)+(27,27)=(6,12) C2=6G=(5,7)

  • 6.Bob將C1、C2傳給Alice

  • 7.Alice收到信息後,計算C1-kC2,結果就應該是點M C1-kC2 =(6,12)-25C2 =(6,12)-25*6G =(6,12)-2G =(6,12)-(27,27) =(6,12)+(27,2) =(3,28)

數學原來上能解密是因爲:C1-kC2=M+rK-krG=M+rkG-krG-M

ECC技術要求

通常將Fp上的一條橢圓曲線描述爲T=(p,a,b,G,n,h)p、a、b確定一條橢圓曲線(p爲質數,(mod p)運算)G爲基點,n爲點G的階,h是橢圓曲線上所有點的個數m與n相除的商的整數部分

參量選擇要求:

  • p越大安全性越好,但會導致計算速度變慢
  • 200-bit左右可滿足一般安全要求
  • n應爲質數
  • h≤4;p≠n×h ;pt≠1(mod n) (1≤t<20)
  • 4a3+27b2≠0 (mod p)

ECC的應用

比特幣系統選用的secp256k1中,參數爲

p = 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F= 2^256 − 2^32 − 2^9 − 2^8 − 2^7 − 2^6 − 2^4 − 1

a = 0, b = 7

G=(0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8)

n = 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

h = 01

ECC vs. RSA - 優缺點

優點

  • 安全性能更高

  • 160位ECC與1024位RSA、DSA有相同的安全強度

  • 處理速度更快

  • 在私鑰的處理速度上,ECC遠 比RSA、DSA快得多

  • 帶寬要求更低

  • 存儲空間更小

  • ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多

缺點

  • 設計困難,實現複雜

  • 如果序列號設計過短,那麼安全性並沒有想象中的完善

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章