橢圓曲線加密算法原理解析(ECC)

前言

隨着計算機性能的提高,市面上的加密技術愈來愈不安全,1024位的RSA私鑰加密已經能夠破解,目前有效的手段只是將1024位換成2048位,但隨着技術的進步,RSA算法的破解難度會愈來愈低,所以須要用更安全的加密算法來代替,下面咱們來介紹更爲安全的ECC公鑰加密算法
什麼是ECC
ECC是Elliptic Curve Cryptography(橢圓曲線密碼學)的縮寫,是一種基於橢圓曲線數學的公開密鑰加密算法,其本質是利用離散對數問題實現加密。
ECC的主要優點,是在使用更小的密鑰的同時,提供更快的性能和更高等級的安全。
什麼是橢圓曲線
Wolfram MathWorld(線上數學百科全書,http://mathworld.wolfram.com) 給出了很是精準的定義:
一條橢圓曲線就是一組被 y^2 = x^3 + ax + b 定義的且知足 4a^3 + 27b^2 ≠ 0 的點集。
4a^3 + 27b^2 ≠ 0 這個限定條件是爲了保證曲線不包含奇點(在數學中是指曲線上任意一點都存在切線)。
橢圓曲線示例圖:算法

clipboard.png

不一樣的橢圓曲線對應不一樣的形狀(b=1,a從2到-3)

clipboard.png

左(帶銳點):y^2 = x^3
     右(曲線自交):y^2 = x^3 -3x + 2
      都不是有效的橢圓曲線

關於阿貝爾羣(abelian group)

阿貝爾羣的概念是抽象代數的基本概念之一,是一種代數結構,由一個集合以及一個二元運算所組成。
若是一個集合或者運算是羣的話,就必須知足如下條件(+ 表示二元運算):
一、封閉性(closure),若是a和b被包含於羣,那麼a+b也必定是羣的元素;
二、結合律(associativity);
三、存在一個單位元(identity element)0,0與任意元素運算不改變其值的元素,即 a+0 = 0+a = a;
四、每一個元素都存在一個逆元(inverse);
五、交換律(commutativity),即 a+b = b+a;安全

橢圓曲線中的阿貝爾羣


咱們能夠在橢圓曲線上定義一個羣:
一、羣中的元素就是橢圓曲線上的點;
二、單位元就是無窮處的點0;
三、相反數P,是關於X軸對稱的另外一邊的點;
四、二元運算規則定義以下:取一條直線上的三點(這條直線和橢圓曲線相交的三點),P, Q, R(皆非零),他們的總和等於0,
P+Q+R=0。網絡

clipboard.png
若是P, Q, R在一條直線上的話,他們知足:ide

P+(Q+R)=Q+(P+R)=R+(P+Q)=⋯=0。

當P,Q點爲同一點時,P=Q,知足: 性能

clipboard.png
這樣,咱們能夠直觀的證實:+運算符是符合交換律和結合律的,這是一個阿貝爾羣。
由於阿貝爾羣知足交換律和結合律,因此點P和點-R的二元運算結果必會在曲線上,即P+P+P的結果必會在曲線上的另外一點Q,
以此類推,能夠得出得出:區塊鏈

Q=kP(k個相同的點P進行二元運算(數乘),記作kP)

離散對數問題

前文中有提到離散對數問題,咱們熟悉的RSA算法,是基於大數的質因數分解,即對兩個質數相乘容易,而將其合數分解很難的這個特色進行加密。
而ECC算法是在有限域Fp定義公式:Q=kP,已知大數k和點P的狀況下,很容易求點Q,可是已知的點P、點Q,卻很難求得k,這就是經典的離散對數問題,ECC算法正是利用該特色進行加密,點Q爲公鑰,大數k爲私鑰,點P爲基點,和RSA最大的實際區別,主要是密鑰長度編碼

橢圓曲線加密算法原理

描述一條Fp上的橢圓曲線,經常使用到六個參量:T=(p,a,b,n,x,y)。
(p 、a 、b) 用來肯定一條橢圓曲線,p爲素數域內點的個數,a和b是其內的兩個大數;
x,y爲G基點的座標,也是兩個大數;
n爲點G基點的階;
以上六個量就能夠描述一條橢圓曲線,有時候咱們還會用到h(橢圓曲線上全部點的個數p與n相除的整數部分)。
如今咱們描述一個利用橢圓曲線進行加密通訊的過程:
一、選定一條橢圓曲線 Ep(a,b) 並取橢圓曲線上一點,做爲基點P。
二、選擇一個大數k做爲私鑰,並生成公鑰 Q=kP。
三、將 Ep(a,b) 和點Q、P傳給用戶。
四、用戶接到信息後 ,將待傳輸的明文編碼到Ep(a,b)上的一點M,併產生一個隨機整數r。
五、公鑰加密(密文C是一個點對):
C={rP, M+rQ}
六、私鑰解密(M + rQ - k(rP) ,解密結果就是點M),公式以下:加密

M + rQ - k(rP) = M + r(kP) - k(rP) = M

七、對點M進行解碼就能夠獲得明文
假設在加密過程當中,有一個第三者H,H只能知道橢圓曲線 Ep(a,b)、公鑰Q、基點P、密文點C,而經過公鑰Q、基點P求私鑰k或者經過密文點C、基點P求隨機數r都是很是困難的,所以得以保證數據傳輸的安全。spa

ECC應用

由於在安全性、加解密性能、網絡消耗方面有較大優點,ECC加密算法大有取代RSA成爲下一代主流加密算法的趨勢。現在ECC應用範圍很廣,在TLS、區塊鏈(比特幣、以太坊等等)、SM2國密算法、證書、銀行政府機構等許多方面都有大量應用。3d

相關文章
相關標籤/搜索