橢圓曲線

前幾天 NSA 宣佈了用於密鑰協商和數字簽名的新標準,爲 ECDH、ECDAS 和 ECMQV
以前一直沒有仔細看過 EC 方面的東西,現在看來需要學習一下了,所以寫了一些。


ECDLP = Elliptic Curve Discrete Logarithm Problem


這三種都是以EC,也就是橢圓曲線爲基礎的算法,具體來說,是有限域上的橢圓曲線,其安全性依賴於:要求出在這個有限域上的橢圓曲線的離散對數非常困難


有限域相關的數學主要涉及到羣、環、域的概念以及密碼學上使用的兩個特殊的有限域


(早就忘光了....複習一下....^^!)


羣:如果滿足以下條件的一個不空集合 G 對於一個稱爲乘法的運算構成一個羣:
- G 對於乘法來說是封閉的
- 對於任意的 a, b, c,滿足結合率 a(bc) = (ab)c
- 至少存在一個左單元 e,對於任意 a 有 ea = a
- 對於任意a,至少存在一個 a-1,有 aa-1 = e


-- 如果對於任意 ab = ba,那麼稱爲交換羣
-- 如果G 裏面的每一個元素,都可以由 G 的某一個固定元素 a 的乘方來得到,那麼 G 是一個循環羣,G = (a),a 稱爲 G 的一個生成元


環:滿足以下條件的集合 R 構成一個環:
- R 對於一種稱爲加法的運算構成一個交換羣
- R 對於一種稱爲乘法的運算是封閉的
- 對於乘法運算,滿足結合率 a(bc) = (abc)
- 對於加法和乘法運算,滿足分配率 a(b + c) = ab + ac, (b + c)a = ba + ca


-- 含有單位元的環:R內含有乘法單位元 e,使得 ae = ea = a
-- ab = ba 的環稱爲交換環
-- 含有單位元而無零因子的交換環稱爲整環(零因子:a != 0, b!= 0, ab = 0,則 a, b 分別爲這個環的左右零因子)
-- 如果一個環的非零元素全體對於乘法形成一個羣,那麼稱爲除環


域:一個交換除環稱爲一個域 F


有限域 :Galois field GF


GF 中元素的個數爲一個素數,或者一個素數的冪,則記爲 GF(P) 或 GFpn


由域的定義可知:對於加法和乘法,有限域中滿足交換率、結合率、分配率


橢圓曲線密碼中使用的是兩個特殊的有限域:Fp, F2m


Fp:
- p 爲奇素數
- 擁有 p 個元素的素數有限域
- 域中的元素表現爲如下的整數 {0, 1, ..., p-1}
- 這個域上的加法定義爲:
a + b = r (mod p)
單位元爲0
- 這個域上的乘法定義爲:
a*b = r (mod p)
單位元爲1
- 減法和除法分別定義爲和逆元的加法和乘法:
a + (-a) = 0 (mod p)
a * a -1 = 1 (mode p)


F2m:
- 元素數目爲 2m
- 裏面的元素是多項式,可以表示爲:am-1xm-1 + am-2xm-2 + ... + a1x + a0 : ai = {0, 1}
- 加法定義很簡單,就是各項係數相加,取 2 的模
ri = ai + bi (mod 2)
單位元爲0
- 乘法定義比較複雜,需要定義一個不可約多項式 f(x),兩個元素相乘的結果先對這個多項式取模(結果的次數要小於 f(x))
然後各項係數再對 2 取模,例如:
GF(23) 中,取 f(x) = x3 + x + 1
則:(x2 + x + 1) * (x2 + x) = x4 + 2x3 + 2x2 + x
對 x3 + x + 1,取模,得:x2 - 2x - 2,係數分別取模,得 x2
單位元爲1
- 這些多項式一般都表示爲 (1101)這樣的形式,也就是各個係數
- 減法和除法分別定義爲和逆元的加法和乘法:
a + (-a) = 0 (mod p)
a * a -1 = 1 (mode p)


橢圓曲線 E :
- 任意域上的橢圓曲線可以用齊次座標的形式表示爲:
Y2Z + a1XYZ + a3YZ2 = X3 + a2X2Z + a4XZ2 + a6Z3
- 這個曲線上有無窮遠點 (0:1:0),用 O 表示,這裏也是齊次座標形式
- 實域上的橢圓曲線爲:
y2 + a1xy + a3y = x3 + a2x2 + a4x + a6
- 實域 R 上橢圓曲線的點的加法:
-- 設L 爲一條直線因爲橢圓曲線的方程是三次的,所以L可與E在P2(R)恰有三個交點記爲P,Q,R
如果 L 與 E 相切那麼 P, Q, R 可以不是相異的
按照如下方式定義加法:
設P,Q 屬於E L 爲聯接 P,Q 的直線若 P = Q 則L取過 P 點的切線,
設 R 爲 L 與 E 的另一個交點再取連接 R 與 O 的直線 L,則L 與 E 的另一個交點定義爲 P + Q
-- 由於無窮遠點爲 (0:1:0),所以任意一個點 (X:Y:Z)和這個點連接的直線 (aX + bY + cZ = 0) 都有:
bY = 0 => aX + cZ = 0
所以這條直線上的點 x 都相同,是不是可以推出???(對嗎?):
如果兩個點P, Q 屬於 E 且 xp = xq,那麼 P + Q = O,即 P = -Q
-- 如果 E 上的 P Q R 三點共線,那麼 (P + Q) + R = O
P + O = P
P + Q = Q + P
-P 存在,且 P+(-P) = O
(P + Q) + R = P + (Q + R)
所以
E 對 + 構成一個交換羣,注意,這裏 + 就是羣中的"乘法"


Fp 上的橢圓曲線: y2 = x3 + ax + b (mod p)
- (4a3 + 27b2) != 0,否則曲線會退化,導致某些點的逆元不存在(Why?)
- 點的數目爲 #E(Fp),具體範圍由 Hass 定理確定
- P = (x, y),則 -P = (x, -y)
這時候,P + (-P) = O
- (x1, y1) + (x2, y2) = (x3, y3); x1 != x2 這時候:
x3 = A - x1 - x2 (mod p)
y3 = A * (x1 - x3) - y1 (mod p)
A = (y2 - y1) / (x2 - x1) (mod p)
- (x1, y1) + (x1, y1) = (x3, y3),則:
x3 = A2 - 2 * x1 (mod p)
y3 = A * (x1 - x3) - y1 (mod p)
A = (3 * x12 + a) / (2 * y1) (mod p)


F2m 上的橢圓曲線: y2 +xy = x3 + ax2 + b
- b != 0
- 點的數目爲 #E(Fp),具體範圍由 Hass 定理確定
- P = (x, y),則 -P = (x, x + y)
這時候,P + (-P) = O
- (x1, y1) + (x2, y2) = (x3, y3); x1 != x2 這時候
x3 = A2 + A + x1 + x2 + a
y3 = A * (x1 + x3) + x3 + y1
A = (y1 + y2) / (x1 + x2)
- (x1, y1) + (x1, y1) = (x3, y3),則:
x3 = A2 + A + a
y3 = x12 + (A + 1) * x3
A = x1 + (y1 / x1)


有限域上的橢圓曲線上的離散對數:
- 已知 E(Fp) 和 E(F2m) 構成了交換羣
設 P 屬於這個羣,如果 P 的週期很大,也就是 t * P = O, t 很大
那麼對於 Q = mP
定義:
m = logpQ
這就是橢圓曲線的點形成的羣的離散對數


我們知道,DH、DSA 和 MQV 實際上都是基於有限域的離散對數問題,只不過他們是基於 Fp* 上的乘法

所以,只需要類比一下,就可以利用有限域的橢圓曲線上的離散對數問題來進行密鑰協商和數字簽名了


來源:http://blog.sina.com.cn/s/blog_4e0af14201000a6u.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章