橢圓曲線密碼體制 ECC 簡介

2021-09-08 05:07:38 字數 2822 閱讀 8587

簡單的說橢圓曲線並不是橢圓,之所以稱為橢圓曲線是因為他們是用三次方程來表示,並且該方程與計算橢圓周長的方程相似。

對密碼學比較有意義的是基於素數域gf(p)和基於二進位制域(gf(2^m))上的橢圓曲線。

下面重點介紹基於gf(p)上的橢圓曲線:

y^2 º x^3 + a*x + b(modp)

其中p是素數,a和b滿足:4a^3 + 27b^2 (mod p) ¹ 0

滿足上述方程的整數對(x, y), 就叫橢圓曲線上的點。

素數域

其實域就是乙個集合,在其上面進行加,減,乘,除運算而封閉。比如有理數集合,實數集合,複數集合,這些都是無限域,在密碼學中沒有什麼實際意義,所以考慮與整數有關的域,對密碼學有實際意義。

研究最多的就是素數域gf(p)。我的理解就是乙個素數p,在集合[0…p-1]上定義乙個模加,乙個模乘,就構成了乙個有限素數域,比如取p = 5,定義如下模加, 模乘:

模加 模乘

下面以連續的橢圓曲線為例介紹一下橢圓曲線上

的點的運算規則

橢圓曲線上點的加法定義

對於橢圓曲線上的任意兩點p(x1, y1),

q(x2, y2),r = (x3, y3), 其中r = p+q

具體描述如下:

x3 = k^2 – x1 – x2(modp)

y3 = k(x1-x3) – y1 (modp)

其中當p不等於q時

k = (y2 – y1)/(x2 – x1) (modp)

當p等於q時

k = (3*x1^2 + a)/2*y1 (modp)

零元

對橢圓曲線上的任意一點p(x1, y1), 有

p + o = o + p = p

如右圖負元

-p = (x1, -y1)

p – p = o

o = -o

其中o為無窮遠點,一條與y軸平行的直線

只有乙個無窮點o

純量乘法

kp = p+p+p+…+p  k個p相加

基於gf(p)上的橢圓曲線舉例

p = 23, a = 1, b = 0

方程:y^2 = x^3 + x(mod23)

橢圓曲線上的點:

(0,0) (1,5) (1,18) (9,5) (9,18) (11,10) (11,13) (13,5)

(13,18) (15,3) (15,20) (16,8) (16,15) (17,10) (17,13) (18,10)

(18,13) (19,1) (19,22) (20,4) (20,19) (21,6) (21,17)

和無窮遠點o構成橢圓曲線上的加法群

其點運算規則和上面講到的連續橢圓曲線

上的運算規則是相同的

公鑰密碼演算法總要基於乙個數學難題,比如rsa的依據是給定兩個數p, q很容易相乘得到n, 而對n進行因式分解則相對困難的多。橢圓曲線密碼體制(ecc)採用的數學難題則是求橢圓曲線加法群的離散對數問題,具體描述如下:

q = kg

其中q為橢圓曲線上的點, g為橢圓曲線上的基點,k 為小於n的整數,n為g的階即, ng = o

根據上節提到的純量乘法知道k, g不難求出q, 但是給定q, g求k就相對困難了,這就叫橢圓曲線加法群上的離散對數問題。

上述整數k,就是ecc私鑰, q為公鑰, 可以利用此金鑰對進行加密,解密,簽名,驗證等公私鑰運算。

根據上節提到的純量乘法知道k, g不難求出q, 但是給定q, g求k就相對困難了,這就叫橢圓曲線加法群上的離散對數問題。

上述整數k,就是ecc私鑰, q為公鑰, 可以利用此金鑰對進行加密,解密,簽名,驗證等公私鑰運算。

下面簡單介紹一下基於gf(p)的橢圓曲線數字簽名演算法(ecdsa)

預備資料: h(待簽名hash值),公鑰q,私鑰d

簽名過程:

1. 選取乙個隨機數k;

2. 計算k = kmodn, 如果k =0返回第1步重新選取;

3. 計算kg = (x1, y1);

4. 計算r = x1mondn;

5. 如果r = 0返回第2步;

6. 計算s = k^-1*(h+ dr )modn;

7. 如果s = 0, 返回第2步;

其中(r, s)為簽名結果。

驗證過程:

1. 驗證1=2. 驗證1=3. 計算c = s^-1modn

4. 計算u1 = e』*c modn, u2 = r*c mon n

5. 計算u1*g+u2*q = (x1, y1), 如果(x1, y1)為o 返回false

6. 計算v = x1modn;

7. 如果r != v 返回false

8. 返回true

橢圓曲線加密技術(ecc)是建立在單向函式(橢圓曲線離散對數)得基礎上,由於它比ras使用得離散對數要複雜得多。而且該單向函式比rsa得要難。

如160位ecc與1024位rsa有相同的安全強度。而210位ecc則與2048bitrsa具有相同的安全強度

計算量小,處理速度快雖然在rsa中可以通過選取較小的公鑰(可以小到3)的方法提高公鑰處理速度,即提高加密和簽名驗證的速度,使其在加密和簽名驗證速度上與ecc有可比性,但在私鑰的處理速度上(解密和簽名),ecc遠比rsa、dsa快得多。因此ecc總的速度比rsa、dsa要快得多。

儲存空間占用小ecc的金鑰尺寸和系統引數與rsa、dsa相比要小得多,意味著它所佔的存貯空間要小

橢圓曲線密碼體制 ECC 簡介

簡單的說橢圓曲線並不是橢圓,之所以稱為橢圓曲線是因為他們是用三次方程來表示,並且該方程與計算橢圓周長的方程相似。對密碼學比較有意義的是基於素數域gf p 和基於二進位制域 gf 2 m 上的橢圓曲線。下面重點介紹基於gf p 上的橢圓曲線 y 2 x 3 a x b modp 其中p是素數,a和b滿...

ECC橢圓曲線加密

rust實現 注 本博文是sec1 v2中描述的橢圓加密標準 參考資料 1 目錄加密元件 金鑰生成 diffie hellman原根 mqv原根 簽名方案 加密和金鑰傳輸方案 金鑰協商方案 參考資料 記有一串二進位制位表示的資料 b b 0 b 1 dots b 那麼按如下規則轉為八位組 八位組 轉...

現代密碼學之橢圓曲線ECC

橢圓曲線乘法 橢圓曲線結合 elgamal cryptosystem計算例子展示 手算帶步驟 判斷乙個橢圓曲線上有幾個點 reference ecc是由victor miller and neal koblitz1985引入的。對於dsa,rsa,我們需要很大的金鑰長度,而ecc只需要特別餓小的金鑰...