ECC 數學基礎

2021-06-28 00:22:05 字數 4215 閱讀 4140

ecc,(橢圓曲線密碼體制),sun公司2023年贈送給了開源工程(現在sun的下場,真是噓唏不已)。ecc的數學基礎較前面幾種相比,還多了齊次方程的求解。

1. 數學基礎

關於ecc演算法本身更詳細的描寫,請google一篇檔案《ecc加密演算法入門介紹》,那裡面介紹的比以下更詳細,這裡面只挑一些主要的描述,(推薦兩本書:《近世代數基礎》《初等數論》)。

公鑰密碼體制根據其所依據的難題一般分為三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸為離散對數類。

橢圓曲線密碼體制**於對橢圓曲線的研究,所謂橢圓曲線指的是由韋爾斯特拉斯(weierstrass)方程,是乙個齊次方程:

y^2+a1xy+a3y=x^3+a2x^2+a4x+a6 (1)

所確定的平面曲線。其中係數ai(i=1,2,…,6)定義在某個域上,可以是有理數域、實數域、複數域,還可以是有限域gf(pr),橢圓曲線密碼體制中用到的橢圓曲線都是定義在有限域上的。

橢圓曲線上所有的點外加乙個叫做無窮遠點的特殊點構成的集合連同乙個定義的加法運算構成乙個abel群。在等式

mp=p+p+…+p=q (2)

中,已知m和點p求點q比較容易,反之已知點q和點p求m卻是相當困難的,這個問題稱為橢圓曲線上點群的離散對數問題。橢圓曲線密碼體制正是利用這個困難問題設計而來。

btw: 橢圓曲線的形狀,並不是橢圓的。只是因為橢圓曲線的描述方程,類似於計算乙個橢圓周長的方程(這個是從引數資料中讀出,沒有求證,有比較懂的童鞋可以告知一下),故得名。

1.1域和橢圓曲線

概述:給出有限域fq的描述及其元素的表示,q是乙個奇素數或者是2的方冪。當q是奇素數p時,要求p > 2^191;當q是2的方冪2^m時,要求m > 192且為素數。

素域fp:

1)當q是奇素數p時,素域fp中的元素用整數0;1;2; · · · ; p−1表示。

a) 加法單位元是整數0;

b) 乘法單位元是整數1;

c) 域元素的加法是整數的模p加法,即若a;b ∈ fp,則a+b = (a+b) mod p;

d) 域元素的乘法是

整數的模p乘法,即若a;b ∈ fp,則a · b = (a · b) mod p。

2)定義在fp(p是大於3的素數)上的橢圓曲線方程為:

y2=x3+ax+b, a;b ∈ fp,且(4a3+27b2) modp = 0。

橢圓曲線e(fp)定義為:

e(fq) = ∪,其中o是無窮遠點。

橢圓曲線e(fp)上的點的數目用#e(fq)表示,稱為橢圓曲線e(fp)的階。

如果橢圓曲線上一點p,存在最小的正整數n,使得數乘np=0∞,則將n稱為p的階,若n不存在,我們說p是無限階的。

事實上,在有限域上定義的橢圓曲線上所有的點的階n都是存在的(證明,請參考近世代數方面的書)

3)仿射座標表示:

e(fp)上的點按照下面的加法運算規則,構成乙個阿貝爾群:

a) o+o = o;

b) ∀p = (x;y) ∈ e(fp)\,p+o = o+p = p;

c) ∀p = (x;y) ∈ e(fp)\,p的逆元素−p = (x;−y),p+(−p) = o;

d)點p1 = (x1;y1) ∈ e(fp)\,p2 = (x2;y2) ∈ e(fp)\,p3 = (x3;y3) = p1+p2 = o,則

x3 = λ2−x1−x2 ;

y3 = λ(x1−x3)−y1;

其中λ = (y2−y1)/(x2−x1); 若x1 <> x2;

λ = (3x12+a)/(2y1); 若x1 = x2且p2 <> −p1。

二元擴域f2m:當q是2的方冪2m時,二元擴域f2m可以看成f2上的m維向量空間,其元素可用長度為m的位元串表示。

定義在f2m上的橢圓曲線方程為:

y2+xy = x3+ax2+b, a;b ∈ f2m,且b = 0。

接下來主要是介紹素域f

p上的演算法運用,二無擴域f2m後面不再介紹,有興趣的同學可以自己找些資料。

舉個簡單的例子

素域fp:以素域fp為計算例子,取素數p=19.

1) 素域f19,f19 =

2) f19中加法的示例:10;14 ∈f19,10+14=24,24mod19=5,則10+14=5。

3) f19中乘法的示例:7;8 ∈f19,7×8=56,56mod19=18,則7·8=18。

4) 13是f∗19的乙個生成元,則f∗19中元素可由13的方冪表示出來:

130= 1;131= 13;132= 17;133= 12;134= 4;135=14;136= 11;137=10;138=16;

139= 18,1310= 6;1311= 2;1312= 7;1313= 15;1314= 5;1315= 8;1316= 9;

1317= 3;1318= 1。

注:記f∗p是由fp中所有非零元構成的乘法群,由於f∗p是迴圈群,所以在fp中至少存在乙個元素g,使得fp中任一非零元都可以由g的乙個方冪表示,稱g為f∗p的生成元(或本原元),即f∗p =。設a = gi∈ f∗p,其中0 ≤ i ≤ p−2,則a的乘法逆元為:a−1= gp−1−i。

e(fp)階與仿射座標表示:

f19上橢圓曲線方程:y2 = x3+x+1,其中a = 1,b = 1。則f19上曲線的點為:

(0,1), (0,18), (2,7), (2,12), (5,6), (5,13), (7,3), (7,16), (9,6), (9,13), (10,2), (10,17), (13,8), (13,11), (14,2),(14,17), (15,3), (15,16), (16,3), (16,16),

則e(f19)有21個點(包括無窮遠點0)。

a) 取p1 = (10;2),p2 =

(9;6),計算p3 = p1 +p2:

λ= (y2 −y1)/(x2 −x1)= (6−2)/(9−10)= 4/−1= −4 ≡ 15 (mod19);

x3 = λ2−x1−x2 =152-10-9 = 225−10−9 ≡ 16−10−9 = −3 ≡ 16 (mod19);

y3 = λ(x1−x3)−y1= 15×(10−16)−2 = 15×(−6)−2 ≡ 3 (mod19),

所以p3 = (16;3)。

b)取p1 = (10;2),計算[2]p1:

λ= (3x12+a)/(2y1) = (3×102+1)/2×2= 4= 4 (mod19);

x3 =λ2−x1−x2 =42−10−10 = −4 ≡ 15 (mod19),

y3=λ(x1−x3)−y1= 4×(10−15)−2 = −22 ≡ 16 (mod19),

所以[2]p1 = (15;16)。

橢圓曲線多倍點運算:

設p是橢圓曲線e上階為n的點,k為正整數,p的k倍點為q,即

q = [k]p = p+p+· · ·+p (k個p點)

安全性分析:

安全主要是依靠橢圓曲線離散對數求解方法問題(ecdlp)。

已知橢圓曲線e(fq),階為n的點p ∈ e(fq)及q ∈ ⟨p⟩,橢圓曲線離散對數問題是指確定整數k ∈[0;n−1],使得q = [k]p成立。

1) pohlig-hellman方法:設l是n的最大素因子,則演算法複雜度為o(l1=2);

2) bsgs方法:時間複雜度與空間複雜度均為(πn=2)1=2;

3)pollard方法:演算法複雜度為(πn=2)1=2;

4) 並行pollard方法:設r為並行處理器個數,演算法複雜度降至(πn=2)1=2=r; 5) mov-方法:把超奇異橢圓曲線及具有相似性質的曲線的ecdlp降到fq的小擴域上的離散對數問題(亞指數級計算複雜度演算法);

6) 異常曲線離散對數求解方法:對異常曲線(#e(fp) = p的曲線)的有效攻擊方法(多項式級計算複雜度演算法);

7) ghs-方法:利用weil下降技術求解擴張次數為合數的二元擴域上橢圓曲線離散對數問題,將ecdlp轉化為超橢圓曲線離散對數問題,而求解高虧格的超橢圓曲線離散對數存在亞指數級計算複雜度演算法。

對於一般曲線的離散對數問題,目前的求解方法都為指數級計算複雜度,未發現有效的亞指數級計算複雜度的一般攻擊方法;而對於某些特殊曲線的離散對數問題,存在多項式級計算複雜度或者亞指數級計算複雜度演算法。

選擇曲線時,應避免使用易受上述方法攻擊的密碼學意義上的弱橢圓曲線。

btw:弱橢圓曲線,若某橢圓曲線存在優於n1=2級(n是基點的階)計算複雜度的攻擊方法,則稱此曲線為弱橢圓曲線。fq上的超奇異曲線(有限域fq的特徵整除q+1−#e(fq))和fp上的異常(anomalous)曲線(#e(fq) =p)都是弱橢圓曲線。

ECC演算法介紹

ecc elliptic curves cryptography 加密演算法是一種公鑰加密演算法,與主流的rsa演算法相比,ecc演算法可以使用較短的金鑰達到相同的安全程度。近年來,人們對ecc的認識已經不再處於研究階段,開始逐步進入實際應用,如國家密碼管理局頒布的sm2演算法就是基於ecc演算法的...

ECC相關概念

乙個域的元素是有限的,稱為有限域。有限域中元素的個數被稱為有限域的階。有限域fq上的橢圓曲線是由點組成的集合。在仿射座標系下,橢圓曲線上點p 非無窮遠點 的座標 表示為p xp,yp 其中xp,yp為滿足一定方程的域元素,分別稱為點p的x座標和y座標。定義在fp p是大於3的素數 上的橢圓曲線方程為...

ECC簽名驗證過程

簽名過程 ecc首先初始化,生成公私鑰對。根據ecc 簽名 驗證演算法,連同id 一起進行 摘要 運算的資料還有橢圓曲線引數和簽名者的公鑰,因此應先執行 ecc initialize ecc genkeypair 或ecc loadpubkey。然後是帶引數id 的摘要演算法 sch 的初始化.這個...