A. SSL證書是選擇ECC演算法加密好還是RSA演算法好呢
ECC演算法更安全一些。
RSA演算法相比,ECC演算法擁有哪些優勢:
更好的安全性:ECC加密演算法提供更強的保護,比目前的其他加密演算法能更好的防止攻擊,使你的網站和基礎設施比用傳統的加密方法更安全,為移動互聯網安全提供更好的保障。
更好的性能: ECC加密演算法需要較短的密鑰長度來提供更好的安全,例如,256位的ECC密鑰加密強度等同於3072位RSA密鑰的水平(目前普通使用的RSA密鑰長度是2048位)。其結果是你以更低的計算能力代價得到了更高的安全性。經國外有關權威機構測試,在Apache和IIS伺服器採用ECC演算法,Web伺服器響應時間比RSA快十幾倍。
更大的IT投資回報:ECC可幫助保護您的基礎設施的投資,提供更高的安全性,並快速處理爆炸增長的移動設備的安全連接。 ECC的密鑰長度增加速度比其他的加密方法都慢(一般按128位增長,而 RSA則是倍數增長,如:1024 –2048--4096),將延長您現有硬體的使用壽命,讓您的投資帶來更大的回報。
應用說明:如果對瀏覽器信任沒有要求,可以選擇ECC證書,如果存在較低的瀏覽器使用那麼必須採用RSA證書。
B. 什麼是RSA和ECC演算法
RSA(Rivest-Shamir-Adleman)加密演算法:它是第 一個既能用於數據加密也能用於數字簽名的演算法。比較易於理解和操作,是高強度非對稱加密系統,密鑰長度少則512位,多則2048位,非常難破解,安全系數是非常高的。ECC(Elliptic Curve Cryptosystems )加密演算法:橢圓曲線密碼體制,它同樣也是在數據位上額外的位存儲一個用數據加密的代碼。橢圓曲線其實可能比RSA更復雜,但其安全性比較高,離散對數問題對於計算機而言幾乎不可解。所以其位數不用太高,速度反而快些。如果想買該類型的證書,推薦國內的老品牌CA機構-天威誠信,旗下的vTrus SSL證書,該證書支持 SHA256 with RSA 2048 演算法/ECC 256 演算法。
C. 誰能簡要闡述RSA與ECC演算法的異同
通信網路特別是互聯網的高速發展使得信息安全這個問題受到人們的普遍關注。在信息安全演算法中,RSA方法的優點主要是原理簡單、易於使用。但是,隨著分解大整數方法的完善、計算機速度的提高以及計算機網路的發展,作為RSA加解密安全保障的大整數要求越來越大。為保證RSA使用的安全性,密鑰的位數不斷增加,目前一般認為RSA需要1024位以上的字長才具有安全保障。但是,密鑰長度的增加導致加解密的速度大大降低,硬體實現也變得越來越復雜,這給使用RSA的應用帶來了極大的負擔(尤其是進行大量安全交易的電子商務),從而使其應用范圍日益受到制約。
ECC演算法只需採用較短的密鑰就可以達到和RSA演算法相同的加密強度,它的數論基礎是有限域上的橢圓曲線離散對數問題,現在還沒有針對這個難題的亞指數時間演算法,因此,ECC演算法具有每比特最高的安全強度。由於智能卡在CPU處理能力和RAM大小上受限,採用一種運算量小同時能提供高加密強度的公鑰密碼機制對於實現數字簽名應用非常關鍵。ECC在這方面具有明顯優勢,160位ECC演算法的安全性相當於1024位的RSA演算法,而210位的ECC則相當於2048位的RSA。相信ECC技術在信息安全領域中的應用將會越來越廣泛。
D. 簡要闡述RSA與ECC演算法的異同
都是非對稱密碼體系的代表
本質上最大的區別 就是RSA基於的單向陷門函數是 大數分解
ECC基於的是橢圓曲線上的 離散對數 問題
還有一個ECC在性能方面比RSA要好點
E. 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
F. 橢圓加密演算法的公鑰密碼系統的加密演算法ECC與RSA的對比
第六屆國際密碼學會議對應用於公鑰密碼系統的加密演算法推薦了兩種:基於大整數因子分解問題(IFP)的RSA演算法和基於橢圓曲線上離散對數計算問題(ECDLP)的ECC演算法。RSA演算法的特點之一是數學原理簡單、在工程應用中比較易於實現,但它的單位安全強度相對較低。目前用國際上公認的對於RSA演算法最有效的攻擊方法--一般數域篩(NFS)方法去破譯和攻擊RSA演算法,它的破譯或求解難度是亞指數級的。ECC演算法的數學理論非常深奧和復雜,在工程應用中比較難於實現,但它的單位安全強度相對較高。用國際上公認的對於ECC演算法最有效的攻擊方法--Pollard rho方法去破譯和攻擊ECC演算法,它的破譯或求解難度基本上是指數級的。正是由於RSA演算法和ECC演算法這一明顯不同,使得ECC演算法的單位安全強度高於RSA演算法,也就是說,要達到同樣的安全強度,ECC演算法所需的密鑰長度遠比RSA演算法低(見表1和圖1)。這就有效地解決了為了提高安全強度必須增加密鑰長度所帶來的工程實現難度的問題.
G. 什麼是ECC加密演算法
ECC(Elliptic Curve Cryptosystems )橢圓曲線密碼體制,美國SUN公司開發的,它的體制根據其所依據的難題一般分為三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸為離散對數類,是目前已知的公鑰體制中,對每比特所提供加密強度最高的一種體制,如果你能理解RSA演算法,也算是對ECC有大概的了解,建議你去買些相關書籍看看。
H. 什麼是ECC技術
ECC是「Error Checking and Correcting」的簡寫,中文名稱是「錯誤檢查和糾正」。ECC是一種能夠實現「錯誤檢查和糾正」的技術,ECC內存就是應用了這種技術的內存,一般多應用在伺服器及圖形工作站上,這將使整個電腦系統在工作時更趨於安全穩定。
要了解ECC技術,就不能不提到Parity(奇偶校驗)。在ECC技術出現之前,內存中應用最多的是另外一種技術,就是Parity(奇偶校驗)。我們知道,在數字電路中,最小的數據單位就是叫「比特(bit)」,也叫數據「位」,「比特」也是內存中的最小單位,它是通過「1」和「0」來表示數據高、低電平信號的。在數字電路中8個連續的比特是一個位元組(byte),在內存中不帶「奇偶校驗」的內存中的每個位元組只有8位,若它的某一位存儲出了錯誤,就會使其中存儲的相應數據發生改變而導致應用程序發生錯誤。而帶有「奇偶校驗」的內存在每一位元組(8位)外又額外增加了一位用來進行錯誤檢測。比如一個位元組中存儲了某一數值(1、0、1、0、1、0、1、1),把這每一位相加起來(1+0+1+0+1+0+1+1=5)。若其結果是奇數,對於偶校驗,校驗位就定義為1,反之則為0;對於奇校驗,則相反。當CPU返回讀取存儲的數據時,它會再次相加前8位中存儲的數據,計算結果是否與校驗位相一致。當CPU發現二者不同時就作出視圖糾正這些錯誤,但Parity有個缺點,當內存查到某個數據位有錯誤時,卻並不一定能確定在哪一個位,也就不一定能修正錯誤,所以帶有奇偶校驗的內存的主要功能僅僅是「發現錯誤」,並能糾正部分簡單的錯誤。
通過上面的分析我們知道Parity內存是通過在原來數據位的基礎上增加一個數據位來檢查當前8位數據的正確性,但隨著數據位的增加Parity用來檢驗的數據位也成倍增加,就是說當數據位為16位時它需要增加2位用於檢查,當數據位為32位時則需增加4位,依此類推。特別是當數據量非常大時,數據出錯的幾率也就越大,對於只能糾正簡單錯誤的奇偶檢驗的方法就顯得力不從心了,正是基於這樣一種情況,一種新的內存技術應允而生了,這就是ECC(錯誤檢查和糾正),這種技術也是在原來的數據位上外加校驗位來實現的。不同的是兩者增加的方法不一樣,這也就導致了兩者的主要功能不太一樣。它與Parity不同的是如果數據位是8位,則需要增加5位來進行ECC錯誤檢查和糾正,數據位每增加一倍,ECC只增加一位檢驗位,也就是說當數據位為16位時ECC位為6位,32位時ECC位為7位,數據位為64位時ECC位為8位,依此類推,數據位每增加一倍,ECC位只增加一位。總之,在內存中ECC能夠容許錯誤,並可以將錯誤更正,使系統得以持續正常的操作,不致因錯誤而中斷,且ECC具有自動更正的能力,可以將Parity無法檢查出來的錯誤位查出並將錯誤修正。
2 ECC(Elliptic Curve Cryptosystems )橢圓曲線密碼體制
2002年,美國SUN公司將其開發的橢圓加密技術贈送給開放源代碼工程
公鑰密碼體制根據其所依據的難題一般分為三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸為離散對數類。
橢圓曲線密碼體制來源於對橢圓曲線的研究,所謂橢圓曲線指的是由韋爾斯特拉斯(Weierstrass)方程:
y2+a1xy+a3y=x3+a2x2+a4x+a6 (1)
所確定的平面曲線。其中系數ai(I=1,2,…,6)定義在某個域上,可以是有理數域、實數域、復數域,還可以是有限域GF(pr),橢圓曲線密碼體制中用到的橢圓曲線都是定義在有限域上的。
橢圓曲線上所有的點外加一個叫做無窮遠點的特殊點構成的集合連同一個定義的加法運算構成一個Abel群。在等式
mP=P+P+…+P=Q (2)
中,已知m和點P求點Q比較容易,反之已知點Q和點P求m卻是相當困難的,這個問題稱為橢圓曲線上點群的離散對數問題。橢圓曲線密碼體制正是利用這個困難問題設計而來。橢圓曲線應用到密碼學上最早是由Neal Koblitz 和Victor Miller在1985年分別獨立提出的。
橢圓曲線密碼體制是目前已知的公鑰體制中,對每比特所提供加密強度最高的一種體制。解橢圓曲線上的離散對數問題的最好演算法是Pollard rho方法,其時間復雜度為,是完全指數階的。其中n為等式(2)中m的二進製表示的位數。當n=234, 約為2117,需要1.6x1023 MIPS 年的時間。而我們熟知的RSA所利用的是大整數分解的困難問題,目前對於一般情況下的因數分解的最好演算法的時間復雜度是子指數階的,當n=2048時,需要2x1020MIPS年的時間。也就是說當RSA的密鑰使用2048位時,ECC的密鑰使用234位所獲得的安全強度還高出許多。它們之間的密鑰長度卻相差達9倍,當ECC的密鑰更大時它們之間差距將更大。更ECC密鑰短的優點是非常明顯的,隨加密強度的提高,密鑰長度變化不大。
德國、日本、法國、美國、加拿大等國的很多密碼學研究小組及一些公司實現了橢圓曲線密碼體制,我國也有一些密碼學者做了這方面的工作。許多標准化組織已經或正在制定關於橢圓曲線的標准,同時也有許多的廠商已經或正在開發基於橢圓曲線的產品。對於橢圓曲線密碼的研究也是方興未艾,從ASIACRYPTO』98上專門開辟了ECC的欄目可見一斑。
在橢圓曲線密碼體制的標准化方面,IEEE、ANSI、ISO、IETF、ATM等都作了大量的工作,它們所開發的橢圓曲線標準的文檔有:IEEE P1363 P1363a、ANSI X9.62 X9.63、 ISO/IEC14888等。
2003年5月12日中國頒布的無線區域網國家標准 GB15629.11 中,包含了全新的WAPI(WLAN Authentication and Privacy Infrastructure)安全機制,能為用戶的WLAN系統提供全面的安全保護。這種安全機制由 WAI和WPI兩部分組成,分別實現對用戶身份的鑒別和對傳輸的數據加密。WAI採用公開密鑰密碼體制,利用證書來對WLAN系統中的用戶和AP進行認證。證書裡麵包含有證書頒發者(ASU)的公鑰和簽名以及證書持有者的公鑰和簽名,這里的簽名採用的就是橢圓曲線ECC演算法。
加拿大Certicom公司是國際上最著名的ECC密碼技術公司,已授權300多家企業使用ECC密碼技術,包括Cisco 系統有限公司、摩托羅拉、Palm等企業。Microsoft將Certicom公司的VPN嵌入微軟視窗移動2003系統中。
ECC :engine control center發動機控制中心,主要適用於民航
ECC :ERP Central Componet, 企業資源計劃核心組件(參考資源SAP教程)
3 ECC: Embedded Control Channel 嵌入控制信道
SDH網路中的ECC是傳送操作、管理和維護(OAMP)信息的邏輯信道。它以SDH中的數據通信信道(DCC)作為其物理通路。SDH ECC 協議棧是以OSI參考模型為基礎的,協議的設計方法與當前管理系統的面向對象是一致的。ECC協 議棧的應用層包含公共管理信息服務單元(CMISE),還包含支持CMICE的遠程操作服務單元(ROSE)和聯系控制服務單元(ACSE)。表示層、會 話層和傳送層提供支持ROSE和ACSE所需的面向連接的服務。其中傳送層還包括附加協議單元,使得在由無連接網路層協議(CLNP)操作時可提供連接模 式服務。數據鏈路層採用Q.920和Q.921中所規定的D信道鏈路接入程序(LAPD),物理通路採用SDH DCC。