ECC演算法簡析

2021-09-29 21:09:13 字數 3966 閱讀 1681

本文重在理清ecc演算法的來龍去脈,關於無窮遠點、攝影平面座標系、fp有限域、阿貝爾群等概念,要重點學習近世代數;關於**實現部分,本文暫未說明。

一、射影平面的引入

近世代數中的幾個小概念:

1關於無窮遠點,可以理解為平面上兩條平行線的交點;

2一組平行直線只有乙個無窮遠點;

3相交的兩條平行直線有不同的無窮遠點(易反正);

4平面上全體無窮遠點構成一條無窮遠直線;

5全體平常點和全體無窮遠點構成射影平面。

射影平面座標系是對笛卡爾平面直角座標系的擴充套件,能表示無窮遠點,同時向下相容笛

卡爾平面直角座標系中的平常點。

對於笛卡爾直角座標系中的平常點a(x,y),令x=x/z,y=y/z,z!=0,則點a在射影平面座標系中表示為a(x,y,z),z!=0。

直線在笛卡爾平面直角座標系中的方程為ax+by+c=0,帶入x=x/z,y=y/z,得出射影平面座標系中表示為ax+by+cz=0。

然後由兩直線ax+by+c1z=0,ax+by+c2z=0,c1!=c2,易得出z=0,即ax+by=0,所以無窮遠點在射影平面中用(x,y,0)來表示。

綜上,射影平面座標系中包括兩類點,一類是平常點(x,y,z),z!=0,另一類是無窮遠點(x,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,即曲線上所有點都可微。

橢圓曲線的形狀,並不是橢圓形。該方程與橢圓方程的相差甚遠,因為橢圓方程是二次的。該曲線之所以命名為橢圓曲線,是因為上述方程類似於計算橢圓周長的方程。

將x=x/y,y=y/z帶入後,得到橢圓曲線方程的所有平常點在笛卡爾座標系中的表示:

y2+a1xy+a3y=x3+a2x^2+a4x+a6

平常點(x,y)的斜率k=-fx(x,y)/fy(x,y)=(3x^2+2a2x+a4-a1y)/(2y+a1x+a3);

三、應用於加密

並不是所有的橢圓曲線都光滑和連續,例如y2z=x3+x2和y2z=x^3,在點(0,0,1)上不可微,沒有切線。

並不是所有光滑的橢圓曲線都適合加密,y2=x3+ax+b是一種簡單常用的適合用來加密的橢圓曲線。

另外,我們所說的橢圓曲線上的點包括兩部分,一部分(x,y)滿足y2=x3+ax+b,只是笛卡爾平面直角座標系中的平常點,還要再加乙個無窮遠點,才是一條完整的橢圓曲線。

再者,上面所說的(x,y)是定義在r上的,若要用來加密,還需把橢圓曲線離散化,即定義在有限域fp上面,還要建立起(x,y)之間關係,這個關係是加法運算。

四、有限域fp

橢圓曲線是連續的,並不適合用於加密;所以,我們必須把橢圓曲線變成離散的點,我

們要把橢圓曲線定義在有限域上。

下面,我們給出乙個有限域fp,這個域只有有限個元素。

fp中只有p(p為素數)個元素0,1,2 …… p-2,p-1;

fp 的加法(a+b)法則是 a+b≡c (mod p);

fp 的乘法(a×b)法則是  a×b≡c (mod p);

fp 的除法(a÷b)法則是  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。

對於橢圓曲線ep(a,b),p為質數,x,y∈[0,p-1]。選擇兩個小於p的非負整數a、b,滿足4a3+27b2≠0(mod p)

符合方程y2=x3+ax+b(mod p),滿足上述方程的所有點(x,y),再加上無窮遠點,構成一條橢圓曲線。

以y2=x3+x+1為例,記為e23(1,1),該橢圓曲線上的離散點為

四、橢圓曲線上點(x,y)的加法運算

我們最熟悉的加法是實數軸上的加法,3+4=7,1.2+68=69.2,2pi+3pi=5pi。

若要實現橢圓曲線上的加法,需要引入近世代數中的阿貝爾群。

阿貝爾群是一種代數結構,由乙個集合和二元運算組成,需要滿足封閉性、結合性、有單位元和逆元。

運算法則:任意取橢圓曲線上兩點p、q (若p、q兩點重合,則做p點的切線)做直線交於橢圓曲線的另一點r』,過r』做y軸的平行線交於r。我們規定p+q=r。

在加密中,加法運算主要使用p+p+…+p(m個相加)=2p+p+…+p=(m-1)p+p=mp。即m個相

同的點p相加。

以p+p+p=2p+p=3p為例,

計算過程不斷的重複做切線或連線兩點,然後再沿著y軸做平行線,取交點的過程。先

有p,做p的切線,然後有2p』,再有2p,再連線2p和p,有3p』,然後再有3p。

五、應用於加密後的橢圓曲線

1橢圓曲線ep(a,b)上的點的數目,稱為橢圓曲線ep(a,b)的階。

2對於橢圓曲線上一點p,如果存在最小的正整數n,使得數乘np=o∞,則將n稱為p的階,若n不存在,我們說p是無限階的。事實上,在有限域上定義的橢圓曲線上所有的點的階n都是存在的,具體證明詳見近世代數相關理論。

3對於kg=k,點g是ep(a,b)上的點,由加法定義,求點k相對容易,並且k也在ep(a,b)上。但是由k和g,去反推k非常困難,被稱為橢圓曲線上離散對數難題。

4描述乙個利用橢圓曲線進行加密通訊的過程:

(1)使用者a選定一條橢圓曲線ep(a,b),並取橢圓曲線上一點,作為基點g。

(2)使用者a選擇乙個私有金鑰k,並生成公開金鑰k=kg。

(3)使用者a將ep(a,b)和點k,g傳給使用者b。

(4)使用者b接到資訊後 ,將待傳輸的明文編碼到ep(a,b)上一點m(編碼方法很多,這裡不作討論),並產生乙個隨機整數r。

(5)使用者b計算點c1=m+rk;c2=rg。

(6)使用者b將c1、c2傳給使用者a。

(7)使用者a接到資訊後,計算c1-kc2,結果就是點m。

因為c1-kc2=m+rk-k(rg)=m+rk-r(kg)=m,再對點m進行解碼就可以得到明文。

在這個加密通訊中,使用者a的加密用的橢圓曲線、公鑰和基點,即ep(a,b)、k、g,使用者b的兩個返回值c1、c2,會在網路中傳輸,有可能被盜取,但是通過k、g 求k和通過c2、g求r,都是相對困難的。沒有k或r,就無法推算出m,沒有m,就無法解碼推出明文。

六、ecc公鑰演算法的破解難點分析

公開金鑰演算法總是要基於乙個數學上的難題,對於等式:

k=kg(其中 k,g為ep(a,b)上的點,k為小於n(n是點g的階)的整數)

不難發現,給定k和g,根據加法法則,計算k很容易;但給定k和g,求k就相對困難了。而且,p越大越困難,但p越大,計算速度會變慢,200位左右可以滿足一般安全要求,

比如居民二代身份證的加密演算法採用256位的ecc。

對於更嚴格的加密場合,把p取得相當大,n也相當大,要把n個解點逐一算出來,採用打表法來破解k,先認同這個思路姑且可行。但g這個基點是使用者隨意選取的,ep(a,b)上每個點都可能成為基點,破解者需要建立數不清的新錶,橢圓曲線上的g+g+…+g的計算過程很煩躁,離散點的跳躍也錯綜複雜,有e23(1,1)的p(3,10)為證

這就是橢圓曲線加密演算法的破解困難的數學依據,

位元幣系統選用的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,

n = 0xffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141,全是非常大的數字。

七、資料**

ecc橢圓曲線加密演算法原理,

ecc橢圓曲線詳解(有具體例項),

橢圓曲線演算法(ecc)學習(一),

cartographer演算法簡析

1 魯棒性好,尤其在沒有imu的輔助下,應對旋轉速度高的突然轉向,沒有出現建圖錯誤。由於採用了回環檢測,可以消除積累誤差,建圖效果比較穩定。3 介面封裝得很簡潔,給人的感覺是一款穩定,可靠,易用的軟體包。主要 1.1 real time loop closure in 2d lidar slam i...

簡析限流演算法

限流顧名思義是限制流量,限制流量的目的是為了保障服務穩定執行,避免服務被流量沖垮。當流量超出服務處理能力時,部分請求將會被限流元件攔截。被攔截的請求可能會被丟棄,如果是 c 端請求,那麼這個請求可能會被導向指定的錯誤頁上,而不是生硬的拒絕。這裡我們丟棄掉一部分請求,以保證大部分請求可以正常響應。如果...

KMP演算法簡析

首先,kmp演算法是解決字串匹配問題的演算法,即在主串 s 中查詢子串 t。我們從問題入手,要在主串中查詢子串,顯然可以是用蠻力法逐個遍歷,即從主串的第乙個字元開始和子串的第乙個字元比較,若相等則繼續比較後續字元,若果不相等,則從主串的下乙個的字元 子串的第乙個字元重新開始比較。如果在主串遍歷完之後...