當前位置:首頁 » 密碼管理 » ecc加密演算法

ecc加密演算法

發布時間: 2022-10-08 14:54:30

⑴ 什麼是RSA和ECC演算法

RSA(Rivest-Shamir-Adleman)加密演算法:它是第 一個既能用於數據加密也能用於數字簽名的演算法。比較易於理解和操作,是高強度非對稱加密系統,密鑰長度少則512位,多則2048位,非常難破解,安全系數是非常高的。ECC(Elliptic Curve Cryptosystems )加密演算法:橢圓曲線密碼體制,它同樣也是在數據位上額外的位存儲一個用數據加密的代碼。橢圓曲線其實可能比RSA更復雜,但其安全性比較高,離散對數問題對於計算機而言幾乎不可解。所以其位數不用太高,速度反而快些。如果想買該類型的證書,推薦國內的老品牌CA機構-天威誠信,旗下的vTrus SSL證書,該證書支持 SHA256 with RSA 2048 演算法/ECC 256 演算法。

⑵ 如何生成ECC演算法CSR文件

1.生成ECC演算法私鑰文件 openssl ecparam -genkey -name prime256v1 -out domain.key
2.生成ECC證書申請CSR文件 openssl req -new -sha265 -key domain.key -out domain_csr.txt
注意事項: ECC演算法加密強度有3個選項:prime256v1 /secp384r1/secp521r1,prime256v1 目前已經足夠安全,如無特殊需要請保持ECC演算法prime256v1 默認即可。 SHA256目前已經足夠安全,如無特殊需要請保持默認。

⑶ ECC橢圓曲線加密演算法(一)

btc address:
eth address:

隨著區塊鏈的大熱,橢圓曲線演算法也成了密碼學的熱門話題。在Bitcoin 生成地址 中使用到了橢圓曲線加密演算法。

橢圓曲線的一般表現形式:

橢圓曲線其實不是橢圓形的,而是下面的圖形:

Bitcoin使用了 secp256k1 這條特殊的橢圓曲線,公式是:

這個東西怎麼加密的呢?

19世紀挪威青年 尼爾斯·阿貝爾 從普通的代數運算中,抽象出了加群(也叫阿貝爾群或交換群),使得在加群中,實數的演算法和橢圓曲線的演算法得到了統一。是什麼意思呢?

我們在實數中,使用的加減乘除,同樣可以用在橢圓曲線中!
對的,橢圓曲線也可以有加法、乘法運算。

數學中的群是一個集合,我們為它定義了一個二元運算,我們稱之為「加法」,並用符號 + 表示。假定我們要操作的群用𝔾表示,要定義的 加法 必須遵循以下四個特性:

如果在增加第5個條件:
交換律:a + b = b + a

那麼,稱這個群為阿貝爾群。根據這個定義整數集是個阿貝爾群。

岔開一下話題, 伽羅瓦 阿貝爾 分別獨立的提出了群論,他們並稱為現代群論的創始人,可惜兩位天才都是英年早逝。

如上文所說,我們可以基於橢圓曲線定義一個群。具體地說:

在橢圓曲線上有 不重合且不對稱的 A 、B兩點,兩點與曲線相交於X點, X與 x軸 的對稱點為R,R即為 A+B 的結果。這就是橢圓曲線的加法定義。

因為橢圓曲線方程存在 項,因此橢圓曲線必然關於x軸對稱

曲線: ,
坐標:A=(2,5),B=(3,7)
A、B正好在曲線上,因為坐標滿足曲線公式


那如何找到相交的第三個點呢?

通過 A、B兩點確定直線方程,
設直線方程: ,m為直線的斜率

進一步得到c=1。

聯立方程:

X(-1,-1)的x坐標-1代入方式正好滿足方程,所以A、B兩點所在直線與曲線相交於 X(-1,-1),則點X的關於x軸的對稱點為R(-1,1),即A(2,5)+B(3,5)=R(-1,1)。

根據橢圓曲線的 群律(GROUP LAW) 公式,我們可以方便的計算R點。

曲線方程:
當A=(x1,y1),B=(x2,y2) ,R=A+B=(x3,y3),x1≠x2時,
, m是斜率
x3=
y3=m(x1-x3)-y1

A=(2,5), B=(3,7) , R=(-1,1) 符合上面的公式。

橢圓曲線加法符合交換律么?

先計算(A+B),在計算 A+B+C

先計算B+C, 在計算 B+C+A

看圖像,計算結果相同,大家手動算下吧。

那 A + A 呢, 怎麼計算呢?

當兩點重合時候,無法畫出 「過兩點的直線」,在這種情況下,
過A點做橢圓曲線的切線,交於X點,X點關於 x軸 的對稱點即為 2A ,這樣的計算稱為 「橢圓曲線上的二倍運算」。

下圖即為橢圓曲線乘法運算:

我們將在 ECC橢圓曲線加密演算法(二) 介紹有限域,橢圓曲線的離散對數問題,橢圓曲線加密就是應用了離散對數問題。

參考:

https://eng.paxos.com/blockchain-101-foundational-math
https://eng.paxos.com/blockchain-101-elliptic-curve-cryptography
https://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introction/

⑷ ECC 演算法簡介

與 RSA(Ron Rivest,Adi Shamir,Len Adleman 三位天才的名字)一樣,ECC(Elliptic Curves Cryptography,橢圓曲線加密)也屬於公開密鑰演算法。

一、從平行線談起

平行線,永不相交。沒有人懷疑把:)不過到了近代這個結論遭到了質疑。平行線會不會在很遠很遠的地方相交了?事實上沒有人見到過。所以「平行線,永不相交」只是假設(大家想想初中學習的平行公理,是沒有證明的)。

既然可以假設平行線永不相交,也可以假設平行線在很遠很遠的地方相交了。即平行線相交於無窮遠點P∞(請大家閉上眼睛,想像一下那個無窮遠點P∞,P∞是不是很虛幻,其實與其說數學鍛煉人的抽象能力,還不如說是鍛煉人的想像力)。

給個圖幫助理解一下:

直線上出現P∞點,所帶來的好處是所有的直線都相交了,且只有一個交點。這就把直線的平行與相交統一了。為與無窮遠點相區別把原來平面上的點叫做平常點。

以下是無窮遠點的幾個性質。

直線 L 上的無窮遠點只能有一個。(從定義可直接得出)

平面上一組相互平行的直線有公共的無窮遠點。(從定義可直接得出)

平面上任何相交的兩直線 L1、L2 有不同的無窮遠點。(否則 L1 和 L2 有公共的無窮遠點 P ,則 L1 和 L2 有兩個交點 A、P,故假設錯誤。)

平面上全體無窮遠點構成一條無窮遠直線。(自己想像一下這條直線吧)

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

二、射影平面坐標系

射影平面坐標系是對普通平面直角坐標系(就是我們初中學到的那個笛卡兒平面直角坐標系)的擴展。我們知道普通平面直角坐標系沒有為無窮遠點設計坐標,不能表示無窮遠點。為了表示無窮遠點,產生了射影平面坐標系,當然射影平面坐標系同樣能很好的表示舊有的平常點(數學也是「向下兼容」的)。

我們對普通平面直角坐標繫上的點A的坐標(x, y)做如下改造:

令 x=X/Z ,y=Y/Z(Z≠0);則 A 點可以表示為(X:Y:Z)。

變成了有三個參量的坐標點,這就對平面上的點建立了一個新的坐標體系。

例 2.1:求點(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)在新的坐標體系下的坐標。

我們也可以得到直線的方程 aX+bY+cZ=0(想想為什麼?提示:普通平面直角坐標系下直線一般方程是 ax+by+c=0)。

新的坐標體系能夠表示無窮遠點么?那要讓我們先想想無窮遠點在哪裡。根據上一節的知識,我們知道無窮遠點是兩條平行直線的交點。那麼,如何求兩條直線的交點坐標?這是初中的知識,就是將兩條直線對應的方程聯立求解。

平行直線的方程是:

aX+bY+c1Z =0;

aX+bY+c2Z =0  (c1≠c2); (為什麼?提示:可以從斜率考慮,因為平行線斜率相同);

將二方程聯立,求解。有

c2Z= c1Z= -(aX+bY)

∵c1≠c2

∴Z=0 

∴aX+bY=0

所以無窮遠點就是這種形式(X:Y:0)表示。注意,平常點 Z≠0,無窮遠點 Z=0,因此無窮遠直線對應的方程是 Z=0。

例 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 的坐標,都表示這個無窮遠點。

看來這個新的坐標體系能夠表示射影平面上所有的點,我們就把這個能夠表示射影平面上所有點的坐標體系叫做射影平面坐標系。

練習:

1、求點A(2,4) 在射影平面坐標系下的坐標。

2、求射影平面坐標系下點(4.5:3:0.5),在普通平面直角坐標系下的坐標。

3、求直線X+Y+Z=0上無窮遠點的坐標。

4、判斷:直線aX+bY+cZ=0上的無窮遠點 和 無窮遠直線與直線aX+bY=0的交點,是否是同一個點?

三、橢圓曲線

上一節,我們建立了射影平面坐標系,這一節我們將在這個坐標系下建立橢圓曲線方程。因為我們知道,坐標中的曲線是可以用方程來表示的(比如:單位圓方程是 x2+y2=1)。橢圓曲線是曲線,自然橢圓曲線也有方程。

橢圓曲線的定義:

一條橢圓曲線是在射影平面上滿足如下方程的所有點的集合,且曲線上的每個點都是非奇異(或光滑)的。

Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3                 [3-1]

定義詳解:

Y2Z+a1XYZ+a3YZ2 = X3+a2X2Z+a4XZ2+a6Z3 是 Weierstrass 方程(維爾斯特拉斯,Karl Theodor Wilhelm Weierstrass,1815-1897),是一個齊次方程。

橢圓曲線的形狀,並不是橢圓的。只是因為橢圓曲線的描述方程,類似於計算一個橢圓周長的方程(計算橢圓周長的方程,我沒有見過,而對橢圓線 積分 (設密度為1)是求不出來的),故得名。

我們來看看橢圓曲線是什麼樣的。

所謂「非奇異」或「光滑」的,在數學中是指曲線上任意一點的偏導數 Fx(x,y,z),Fy(x,y,z),Fz(x,y,z) 不能同時為0。如果你沒有學過高等數學,可以這樣理解這個詞,即滿足方程的任意一點都存在切線。下面兩個方程都不是橢圓曲線,盡管他們是方程 [3-1] 的形式,因為他們在(0:0:1)點處(即原點)沒有切線。

橢圓曲線上有一個無窮遠點O∞(0:1:0),因為這個點滿足方程[3-1]。

知道了橢圓曲線上的無窮遠點。我們就可以把橢圓曲線放到普通平面直角坐標繫上了。因為普通平面直角坐標系只比射影平面坐標系少無窮遠點。我們在普通平面直角坐標繫上,求出橢圓曲線上所有平常點組成的曲線方程,再加上無窮遠點O∞(0:1:0),不就構成橢圓曲線了么?

我們設 x=X/Z,y=Y/Z 代入方程 [3-1] 得到:

y2+a1xy+a3y = x3+a2x2+a4x+a6                            [3-2]

也就是說滿足方程 [3-2] 的光滑曲線加上一個無窮遠點O∞,組成了橢圓曲線。為了方便運算,表述,以及理解,今後論述橢圓曲線將主要使用 [3-2] 的形式。

本節的最後,我們談一下求橢圓曲線一點的切線斜率問題。由橢圓曲線的定義可以知道,橢圓曲線是光滑的,所以橢圓曲線上的平常點都有切線。而切線最重要的一個參數就是斜率 k 。

例 3.1:求橢圓曲線方程 y2+a1xy+a3y=x3+a2x2+a4x+a6上,平常點 A(x,y) 的切線的斜率 k 。

解:



F(x,y)= y2+a1xy+a3y-x3-a2x2-a4x-a6

求偏導數

Fx(x,y)= a1y-3x2-2a2x-a4

Fy(x,y)= 2y+a1x+a3

則導數為:

f'(x)=- Fx(x,y)/ Fy(x,y)=-( a1y-3x2-2a2x-a4)/(2y+a1x +a3) = (3x2+2a2x+a4-a1y) /(2y+a1x +a3)

所以

k=(3x2+2a2x+a4-a1y) /(2y+a1x +a3)             [3-3]

看不懂解題過程沒有關系,記住結論[3-3]就可以了。

練習:      

1、將給出圖例的橢圓曲線方程Y2Z=X3-XZ2 和Y2Z=X3+XZ2+Z3轉換成普通平面直角坐標繫上的方程。

四、橢圓曲線上的加法

上一節,我們已經看到了橢圓曲線的圖象,但點與點之間好象沒有什麼聯系。我們能不能建立一個類似於在實數軸上加法的運演算法則呢?天才的數學家找到了這一運演算法則

自從近世紀代數學引入了群、環、域的概念,使得代數運算達到了高度的統一。比如數學家總結了普通加法的主要特徵,提出了加群(也叫交換群,或 Abel(阿貝爾)群),在加群的眼中。實數的加法和橢圓曲線的上的加法沒有什麼區別。這也許就是數學抽象把。關於群以及加群的具體概念請參考近世代數方面的數學書。

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

法則詳解:

這里的 + 不是實數中普通的加法,而是從普通加法中抽象出來的加法,他具備普通加法的一些性質,但具體的運演算法則顯然與普通加法不同。

根據這個法則,可以知道橢圓曲線無窮遠點 O∞ 與橢圓曲線上一點 P 的連線交於 P』,過 P』 作 y 軸的平行線交於 P,所以有 無窮遠點 O∞ + P = P 。這樣,無窮遠點 O∞ 的作用與普通加法中零的作用相當(0+2=2),我們把無窮遠點 O∞ 稱為零元。同時我們把 P』 稱為 P 的負元(簡稱,負P;記作,-P)。(參見下圖)

根據這個法則,可以得到如下結論 :如果橢圓曲線上的三個點 A、B、C,處於同一條直線上,那麼他們的和等於零元,即 A+B+C= O∞

k 個相同的點 P 相加,我們記作 kP。如下圖:P+P+P = 2P+P = 3P。

下面,我們利用 P、Q點的坐標 (x1,y1),(x2,y2),求出 R=P+Q 的坐標 (x4,y4)。

例 4.1:求橢圓曲線方程 y2+a1xy+a3y=x3+a2x2+a4x+a6 上,平常點 P(x1,y1),Q(x2,y2) 的和 R(x4,y4) 的坐標。

解:

(1)先求點 -R(x3,y3)

因為 P, Q, -R 三點共線,故設共線方程為

y=kx+b

其中,若 P≠Q (P,Q兩點不重合),則直線斜率

k=(y1-y2)/(x1-x2)

若 P=Q (P,Q兩點重合),則直線為橢圓曲線的切線,

故由例 3.1 可知:

k=(3x2+2a2x+a4 -a1y) /(2y+a1x+a3)

因此 P, Q, -R 三點的坐標值就是以下方程組的解:

y2+a1xy+a3y=x3+a2x2+a4x+a6                                   [1]

y=(kx+b)                                                                      [2]

將 [2] 代入[1] 有

(kx+b)2+a1x(kx+b)+a3(kx+b) =x3+a2x2+a4x+a6        [3]

對 [3] 化為一般方程,根據三次方程根與系數關系(若方程x³+ax²+bx+c=0 的三個根是 x1、x2、x3,則: x1+x2+x3=-a,x1x2+x2x3+x3x1=b,x1x2x2=-c)

所以

-(x1+x2+x3)=a2-ka1-k2

x3=k2+ka1+a2+x1+x2    --------------------- 求出點 -R 的橫坐標

因為

k=(y1-y3)/(x1-x3)



y3=y1-k(x1-x3)    ------------------------------ 求出點 -R 的縱坐標

(2)利用 -R 求 R

顯然有

x4=x3=k2+ka1+a2+x1+x2   -------------- 求出點 R 的橫坐標

而 y3 y4 為 x=x4 時 方程 y2+a1xy+a3y=x3+a2x2+a4x+a6 的解化為一般方程 y2+(a1x+a3)y-(x3+a2x2+a4x+a6)=0 , 根據二次方程根與系數關系(如果方程 ax²+bx+c=0 的兩根為 x1、x2,那麼 x1+x2=-b/a,x1x2=c/a)

得:

-(a1x+a3)=y3+y4



y4=-y3-(a1x+a3)=k(x1-x4)-y1-(a1x4+a3)   ----- 求出點 R 的縱坐標

即:

x4=k2+ka1+a2+x1+x2

y4=k(x1-x4)-y1-a1x4-a3

本節的最後,提醒大家注意一點,以前提供的圖像可能會給大家產生一種錯覺,即橢圓曲線是關於 x 軸對稱的。事實上,橢圓曲線並不一定關於 x 軸對稱。如下圖的 y2-xy=x3+1

五、密碼學中的橢圓曲線

我們現在基本上對橢圓曲線有了初步的認識,這是值得高興的。但請大家注意,前面學到的橢圓曲線是連續的,並不適合用於加密。所以,我們必須把橢圓曲線變成離散的點。

讓我們想一想,為什麼橢圓曲線為什麼連續?是因為橢圓曲線上點的坐標,是實數的(也就是說前面講到的橢圓曲線是定義在實數域上的),實數是連續的,導致了曲線的連續。因此,我們要把橢圓曲線定義在有限域上(顧名思義,有限域是一種只有由有限個元素組成的域)。

域的概念是從我們的有理數,實數的運算中抽象出來的,嚴格的定義請參考近世代數方面的數。簡單的說,域中的元素同有理數一樣,有自己得加法、乘法、除法、單位元(1),零元(0),並滿足交換率、分配率。

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

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

Fp 的加法(a+b)法則是 a+b≡c (mod p) ,即 (a+c)÷p 的余數和 c÷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。

同時,並不是所有的橢圓曲線都適合加密。y2=x3+ax+b是一類可以用來加密的橢圓曲線,也是最為簡單的一類。下面我們就把 y2=x3+ax+b 這條曲線定義在 Fp 上:

選擇兩個滿足下列條件的小於 p ( p 為素數) 的非負整數 a、b

4a3+27b2≠0  (mod p)

則滿足下列方程的所有點 (x,y),再加上 無窮遠點 O∞ ,構成一條橢圓曲線。

y2=x3+ax+b  (mod p)

其中 x,y 屬於 0 到 p-1 間的整數,並將這條橢圓曲線記為 Ep(a,b)。

我們看一下 y2=x3+x+1  (mod 23) 的圖像

是不是覺得不可思議?橢圓曲線,怎麼變成了這般模樣,成了一個一個離散的點?橢圓曲線在不同的數域中會呈現出不同的樣子,但其本質仍是一條橢圓曲線。舉一個不太恰當的例子,好比是水,在常溫下,是液體;到了零下,水就變成冰,成了固體;而溫度上升到一網路,水又變成了水蒸氣。但其本質仍是 H2O。

Fp上的橢圓曲線同樣有加法,但已經不能給以幾何意義的解釋。不過,加法法則和實數域上的差不多,請讀者自行對比。

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

2. P(x,y) 的負元是 (x,-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)/2y1 

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

例 5.1:已知 E23(1,1) 上兩點 P(3,10),Q(9,7),求 (1)-P,(2)P+Q,(3) 2P。

解:

(1)  –P的值為(3,-10)

(2)  k=(7-10)/(9-3)=-1/2

2 的乘法逆元為 12, 因為 2*12≡1 (mod 23)

k≡-1*12 (mod 23)

故 k=11

x=112-3-9=109≡17 (mod 23)

y=11[3-(-6)]-10=89≡20 (mod 23)

故 P+Q 的坐標為 (17,20)

3)  k=[3(32)+1]/(2*10)=1/4≡6 (mod 23)

x=62-3-3=30≡20 (mod 23)

y=6(3-7)-10=-34≡12 (mod 23)

故 2P 的坐標為 (7,12)

最後,我們講一下橢圓曲線上的點的階。如果橢圓曲線上一點 P,存在最小的正整數 n,使得數乘 nP=O∞,則將 n 稱為 P 的階,若 n 不存在,我們說 P 是無限階的。 事實上,在有限域上定義的橢圓曲線上所有的點的階 n 都是存在的(證明,請參考近世代數方面的書)

練習:

1. 求出 E11(1,6) 上所有的點。

2.已知 E11(1,6) 上一點 G(2,7),求 2G 到 13G 所有的值。

六、橢圓曲線上簡單的加密/解密

公開密鑰演算法總是要基於一個數學上的難題。比如 RSA 依據的是:給定兩個素數 p、q 很容易相乘得到 n,而對 n 進行因式分解卻相對困難。那橢圓曲線上有什麼難題呢?

考慮如下等式:

K=kG     [其中 K, G為 Ep(a,b) 上的點,k 為小於 n(n 是點 G 的階)的整數]

不難發現,給定 k 和 G,根據加法法則,計算 K 很容易;但給定 K 和 G,求 k 就相對困難了。這就是橢圓曲線加密演算法採用的難題。我們把點 G 稱為基點(base point),k(key point)就是私有密鑰。

現在我們描述一個利用橢圓曲線進行加密通信的過程:

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(random)。

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 進行解碼就可以得到明文。

在這個加密通信中,如果有一個偷窺者 H ,他只能看到 Ep(a,b)、K、G、C1、C2 而通過 K、G 求 k 或通過 C2、G 求 r 都是相對困難的。因此,H 無法得到 A、B 間傳送的明文信息。

密碼學中,描述一條 Fp 上的橢圓曲線,常用到六個參量:

T=(p,a,b,G,n,h)

p 、a 、b 用來確定一條橢圓曲線,G 為基點,n 為點 G 的階,h 是橢圓曲線上所有點的個數 m 與 n 相除的整數部分。這幾個參量取值的選擇,直接影響了加密的安全性。參量值一般要求滿足以下幾個條件:

1、p 當然越大越安全,但越大,計算速度會變慢,200 位左右可以滿足一般安全要求;

2、p≠n×h;

3、pt≠1 (mod n),1≤t<20;

4、4a3+27b2≠0 (mod p);

5、n 為素數;

6、h≤4。

七、橢圓曲線簽名在軟體保護的應用

我們知道將公開密鑰演算法作為軟體注冊演算法的好處是:黑客很難通過跟蹤驗證演算法得到注冊機。下面,將簡介一種利用 Fp(a,b) 橢圓曲線進行軟體注冊的方法。

軟體作者按如下方法製作注冊機(也可稱為簽名過程)

1、選擇一條橢圓曲線 Ep(a,b) 和基點 G;

2、選擇私有密鑰 k;

3、產生一個隨機整數 r ;

4、將用戶名和點 R 的坐標值 x,y 作為參數,計算 SHA(Secure Hash Algorithm 安全散列演算法,類似於 MD5)值,即 Hash=SHA(username,x,y);

5、計算 sn≡r - Hash * k (mod n)

6、將 sn 和 Hash 作為用戶名 username 的序列號

軟體驗證過程如下:(軟體中存有橢圓曲線 Ep(a,b) 和基點 G 以及公開密鑰 K)

1、從用戶輸入的序列號中,提取 sn 以及 Hash;

2、計算點 R≡sn*G+Hash*K ( mod p ),如果 sn、Hash 正確,其值等於軟體作者簽名過程中點 R(x,y) 的坐標,

因為 sn≡r-Hash*k (mod n)

所以 sn*G+Hash*K=(r-Hash*k)*G+Hash*K=rG-Hash*kG+Hash*K=rG-Hash*K+Hash*K=rG=R;

3、將用戶名和點 R 的坐標值 x,y 作為參數,計算 H=SHA(username,x,y);

4、如果 H=Hash 則注冊成功,如果 H≠Hash ,則注冊失敗(為什麼?提示注意點 R 與 Hash 的關聯性)。

簡單對比一下兩個過程:

作者簽名用到了:橢圓曲線 Ep(a,b),基點 G,私有密鑰 k,及隨機數 r。

軟體驗證用到了:橢圓曲線 Ep(a,b),基點 G,公開密鑰 K。

黑客要想製作注冊機,只能通過軟體中的 Ep(a,b),點 G,公開密鑰 K ,並利用 K=kG 這個關系獲得 k 才可以,而求 k 是很困難的。

練習:

下面也是一種常於軟體保護的注冊演算法,請認真閱讀,並試回答簽名過程與驗證過程都用到了那些參數,黑客想製作注冊機,應該如何做。

軟體作者按如下方法製作注冊機(也可稱為簽名過程)

1、選擇一條橢圓曲線 Ep(a,b),和基點 G;

2、選擇私有密鑰 k;

3、產生一個隨機整數 r;

4、將用戶名作為參數,計算 Hash=SHA(username);

5、計算 x』=x  (mod n)

6、計算 sn≡(Hash+x』*k)/r (mod n)

7、將 sn 和 x』 作為用戶名 username 的序列號

軟體驗證過程如下:(軟體中存有橢圓曲線 Ep(a,b) 和基點 G 以及公開密鑰 K)

1、從用戶輸入的序列號中,提取 sn 以及 x』;

2、將用戶名作為參數,計算 Hash=SHA(username);

3、計算 R=(Hash*G+x』*K)/sn,如果 sn、Hash 正確,其值等於軟體作者簽名過程中點 R(x,y)

因為 sn≡(Hash+x』*k)/r (mod n)

所以 (Hash*G+x』*K)/sn=(Hash*G+x』*K)/[(Hash+x』*k)/r]=(Hash*G+x』*K)/[(Hash*G+x』*k*G)/(rG)]=rG*[(Hash*G+x』*K)/(Hash*G+x』*K)]=rG=R (mod p)

4、v≡x (mod n)

5、如果 v=x』 則注冊成功。如果 v≠x』 ,則注冊失敗。

主要參考文獻

張禾瑞,《近世代數基礎》,高等 教育 出版社,1978

閔嗣鶴 嚴士健,《初等數論》,高等教育出版社,1982

段雲所,《網路信息安全》第三講,北大計算機系

Michael Rosing ,chapter5《Implementing Elliptic Curve Cryptography》,Softbound,1998

《SEC 1: Elliptic Curve Cryptography》,Certicom Corp.,2000

《IEEE P1363a / D9》,2001

⑸ ecc 加密演算法一定要用到大數庫嗎

橢圓加密演算法(ECC)是一種公鑰加密體制,最初由Koblitz和Miller兩人於1985年提出,其數學基礎是利用橢圓曲線上的有理點構成Abel加法群上橢圓離散對數的計算困難性。

這個東西加密和解密都是有現成的演算法的,我估計你說用到大資料庫是沒有密碼的情況,用暴力解破的方法,那個的確是需要用到大數據做枚舉的測試解密。

⑹ 什麼是網路密碼

網路密碼是一種用來混淆的技術,使用者希望將正常的(可識別的)信息轉變為無法識別的信息。但這種無法識別的信息部分是可以再加工並恢復和破解的。密碼在中文裡是「口令」(password)的通稱。

密碼是按特定法則編成,用以對通信雙方的信息進行明密變換的符號。

換而言之,密碼是隱蔽了真實內容的符號序列。就是把用公開的、標準的信息編碼表示的信息通過一種變換手段,將其變為除通信雙方以外其他人所不能讀懂的信息編碼,這種獨特的信息編碼就是密碼。

(6)ecc加密演算法擴展閱讀

加密方法

1、RSA演算法

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。

2、ECC加密法

ECC演算法也是一個能同時用於加密和數字簽名的演算法,也易於理解和操作。同RSA演算法是一樣是非對稱密碼演算法使用其中一個加密,用另一個才能解密。

3、四方密碼

四方密碼用4個5×5的矩陣來加密。每個矩陣都有25個字母(通常會取消Q或將I,J視作同一樣,或改進為6×6的矩陣,加入10個數字)。

首先選擇兩個英文字作密匙,例如example和keyword。對於每一個密匙,將重復出現的字母去除,即example要轉成exampl,然後將每個字母順序放入矩陣,再將餘下的字母順序放入矩陣,便得出加密矩陣。

⑺ 什麼是ECC加密演算法

ECC(Elliptic Curve Cryptosystems )橢圓曲線密碼體制,美國SUN公司開發的,它的體制根據其所依據的難題一般分為三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸為離散對數類,是目前已知的公鑰體制中,對每比特所提供加密強度最高的一種體制,如果你能理解RSA演算法,也算是對ECC有大概的了解,建議你去買些相關書籍看看。

⑻ SSL證書是選擇ECC演算法加密好還是RSA演算法好呢

ECC演算法更安全一些。

RSA演算法相比,ECC演算法擁有哪些優勢:

  1. 更適合於移動互聯網:ECC加密演算法的密鑰長度很短(256位),意味著佔用更少的存儲空間,更低的CPU開銷和佔用更少的帶寬。隨著越來越多的用戶使用移動設備來完成各種網上活動,ECC加密演算法為移動互聯網安全提供更好的客戶體驗。
  2. 更好的安全性:ECC加密演算法提供更強的保護,比目前的其他加密演算法能更好的防止攻擊,使你的網站和基礎設施比用傳統的加密方法更安全,為移動互聯網安全提供更好的保障。

  3. 更好的性能: ECC加密演算法需要較短的密鑰長度來提供更好的安全,例如,256位的ECC密鑰加密強度等同於3072位RSA密鑰的水平(目前普通使用的RSA密鑰長度是2048位)。其結果是你以更低的計算能力代價得到了更高的安全性。經國外有關權威機構測試,在Apache和IIS伺服器採用ECC演算法,Web伺服器響應時間比RSA快十幾倍。

  4. 更大的IT投資回報:ECC可幫助保護您的基礎設施的投資,提供更高的安全性,並快速處理爆炸增長的移動設備的安全連接。 ECC的密鑰長度增加速度比其他的加密方法都慢(一般按128位增長,而 RSA則是倍數增長,如:1024 –2048--4096),將延長您現有硬體的使用壽命,讓您的投資帶來更大的回報。

應用說明:如果對瀏覽器信任沒有要求,可以選擇ECC證書,如果存在較低的瀏覽器使用那麼必須採用RSA證書。

熱點內容
win7c盤加密 發布:2025-05-14 15:04:49 瀏覽:510
dm碼編程 發布:2025-05-14 15:03:56 瀏覽:404
apache加密 發布:2025-05-14 14:49:13 瀏覽:969
安卓什麼軟體蘋果不能用 發布:2025-05-14 14:49:03 瀏覽:771
jsoupjava 發布:2025-05-14 14:38:00 瀏覽:887
影豹選哪個配置最好 發布:2025-05-14 14:28:50 瀏覽:255
定期預演算法的 發布:2025-05-14 14:24:08 瀏覽:894
interbase資料庫 發布:2025-05-14 13:49:50 瀏覽:691
微商海報源碼 發布:2025-05-14 13:49:42 瀏覽:347
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:611