ECC橢圓曲線加密算法

簡介

  • 1.ECC英文全稱"Ellipese Curve Cryptography" 與傳統的基於大質數因子分解困難性的加密方法不一樣,ECC經過橢圓曲線方程式的性質產生密鑰.
  • 2.ECC164位的密鑰產生一個安全級,至關於RSA 1024位密鑰提供的保密強度,並且計算量級較小,處理速度更快,存儲空間和傳輸帶寬佔用較小.目前我國 居民二代身份證正在使用256位的橢圓曲線密碼,虛擬貨幣比特幣也選擇ECC做爲加密算法.
  • 3.橢圓曲線密碼學,是一種創建公開密鑰加密的算法,也就輸非對稱加密.相似的還有RSA,EIGamal算法等.ECC被公認爲在給定密鑰長度下最安全的加密算法.

公鑰加密

公鑰加密,也稱非對稱加密.是現代網絡安全或者網絡信任鏈的基礎.公鑰加密最大的特徵就是通訊雙方各有一對公私鑰,每一個人保存本身的私鑰,公開本身的公鑰.這樣作的好處是不怕通訊線路被竊聽,由於攻擊者拿到公鑰是沒法解出密文的.公私鑰的基本使用場景有兩種: 假設通訊雙方叫Tom(公鑰A,私鑰a)和Bob(公鑰B,私鑰b).html

  • 1.公鑰加密,私鑰解密
  • Tom寫了一封信,她不想讓別人知道,因而她用Bob的公鑰B對信的明文作了加密,密文爲m.以後發給了Bob.
  • Bob收到密文m,用本身的私鑰對密文解密,正確的讀出了信的內容.

整個過程當中,即便竊聽者拿到密文m,兩我的的公鑰A,B都沒什麼用,沒法解密出任何東西.事實上,只有擁有私鑰b的人,才能解密出這份信息.換個角度來講,每一個人均可以擁有Bob的公鑰B,也就是說,每一個人均可以創造一份只有Bob可使用或者說只對Bob有效的信息.算法

  • 2.私鑰加密,公鑰解密
  • Tom寫了一份公開聲明文件,她用本身的私鑰a對文件加了密,生成加密文件m,公佈在本身的網站中.
  • Bob下載了這份聲明文件,並用Tom的公鑰A進行解密,正確的讀出文件內容.

這裏主要的目的不是解密,而是對這份文件的來源驗證,證實它確定是由Tom發出的聲明.即便文件被惡意篡改,那麼此時再拿公鑰A解密,就是無效的,由此可證實信息被改動過了,並非Tom原來的文件.用這種方式使用公私鑰能夠證實信息的來源而且有不能否定的特性.安全

以上是使用公鑰加密算法的基礎場景,但事實上用上述方法進行通訊還遠遠不夠,例如須要提升加密速度,須要先對文件進行hash;再如不能抵禦中間人攻擊,(即獲取的公鑰不必定是正確的)須要引入證書.網絡

橢圓曲線

  • 1.一條橢圓曲線是在射影平面上知足威爾斯特拉斯方程(Weierstrass)全部點的集合:

威爾斯特拉斯方程

  • 橢圓曲線方程是一個齊次方程
  • 曲線上的每一個點都是非奇異的(光滑的),偏導數FX(X,Y,Z),FY(X,Y,Z),FZ(X,Y,Z)不一樣爲0.
  • 橢圓曲線的形狀並非橢圓的.只是由於橢圓曲線的描述方程,相似於計算一個橢圓周長的方程故得名.

通常來講,橢圓曲線能夠用下列方程式表示,a,b,c,d爲係數(a≠0,ax^3+bx^2+cx+d=0沒有重根)post

E:y^2=ax^3+bx^2+cx+d 例如,當a=1,b=0,c=-2,d=4時,所獲得的橢圓曲線爲:性能

E_1:y^2=x^3-2x+4 橢圓曲線下圖所示。網站

橢圓曲線的加法

羣是一種代數結構,由一個集合以及一個二元運算所組成,已知集合和運算(G,*)若是是羣則必須知足以下要求:編碼

  • 封閉性: ∀a,b∈G,a * b ∈ G
  • 綜合性: ∀a,b,c∈G ,有 (a * b) * c = a * (b * c)
  • 單位元: ョe∈G, ∀a ∈G,有e * a = a * e = a
  • 逆元: ∀a ∈G ,ョb∈G 使得 a * b = b * a = e 有一種特殊的羣叫阿貝爾羣,它除了上面的性質還知足交換律公理: a * b = b * a 在整數範圍內的加法運算就是一個阿貝爾羣(Z,+).
  • 封閉性: a和b是整數,那麼a+b確定是整數.
  • 結合性: (a+b)+c = a + (b + c)
  • 單位元: 0即爲單位元,由於對於全部整數a, a + 0 = 0 + a = a.
  • 逆元: a的逆元爲-a,由於a + (-a)=0,即單位元. 因此(Z,+)是阿貝爾羣.

定義橢圓曲線上的加法。 如今有橢圓曲線y^2 = x ^ 3 - x,曲線上的點P和Q。過P和Q作一條直線,交橢圓曲線爲點R',再過R'點作垂直於X軸的直線,交曲線另外一點爲R,定義P + Q = R。以下圖所示。加密

若P=Q,則爲過P點的切線交於橢圓曲線爲R'。以下圖所示。設計

這樣,稱R = 2P。相似的,3P = P + P + P = P + 2P = P + R。也就是說,當給定點P時,「已知數x求點xG的運算」不難,由於有加法的性質,運算起來能夠比較快。但反過來,「已知點xG求x的問題」則很是困難,由於只能遍歷每個x作運算。這就是橢圓曲線密碼中所利用的「橢圓曲線上的離散對數問題」。

要想使這個運算知足阿貝爾羣的性質,咱們還要引入一個無窮遠點O,能夠把它理解爲平行直線的交點(若是感受難以理解,請參考無窮遠點的定義),咱們把這個O點做爲單位元。(方便理解,你能夠當作全部平行於y軸的直線交於O點)。

橢圓曲線上的加法爲一個阿貝爾羣

橢圓曲線上的離散對數問題

橢圓曲線密碼利用了上述「運算」中的「橢圓曲線上的離散對數問題」的複雜度,就像RSA利用了「大數質因數分解」的複雜度,以及EIGamal密碼的Diffie-Hellman密鑰交換利用了「有限域上的離散對數問題」的複雜度同樣

橢圓曲線上的離散對數問題: 已知 橢圓曲線E 橢圓曲線E上一點G(基點) 橢圓曲線E上的一點xG(x倍的G) 求解 x 這個問題的難度保證了橢圓曲線密碼的安全性。

有限域上的橢圓曲線

橢圓曲線加密

考慮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+625G=M+2G=(3,28)+(27,27)=(6,12) C2=6G=(5,7)

6.Bob將C一、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的應用

ECDSA
比特幣系統選用的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相比要小得多

缺點

設計困難,實現複雜

若是序列號設計太短,那麼安全性並無想象中的完善

參考資料:

橢圓曲線加密算法

ECC橢圓曲線詳解(有具體實例)

相關文章
相關標籤/搜索