第二章、 文獻探討
2.5 應用橢圓曲線於數位簽章與 Diffie-Hellman 金鑰交換機制
2.5.1 橢圓曲線密碼學
橢圓曲線密碼系統是由 Neil Koblitz(Koblitz, 1985)和 Victor Miller(Miller, 1985)兩位學者分別於 1985 年首先提出[4][10],大多數的橢圓曲線密碼系統是在 模
p
或F
2n下運算。此密碼系統仍是存有 RSA 或 ElGamal 常見的弱點(e.g. 同模 數攻擊、低指數攻擊)。RSA 與 ElGamal 系統中需要使用長度為 1024 位元的模數,才能達到足夠的安全等級,而 ECC 只需使用長度為 160 位元的模數即可,且傳 送密文或簽章所需頻寬(bandwidth)較少,並已正式列入 IEEE 1363 標準。
ECC 類似於RSA,但並非某家公司的專利品,可以自由發展,也不受任何 國家的規定管制。此外ECC 也沒有“adaptive chosen-message attack”。橢圓曲 線密碼系統的安全性是建立於解橢圓曲線離散對數問題之困難度,來保障系統的 安全性。橢圓曲線密碼系統其最大優點為可用較其他系統短的位元數,例如橢圓 曲線密碼系統金鑰長度為160 位元,其他著名的系統如RSA 用的金鑰長度為 1024 位元,二者的安全度是相等的,因此在相同的安全強度下,ECC 系統速度 比RSA 系統快上數倍,同時可節約金鑰儲存空間,它們之間金鑰長度的比較見 下表。
表 1、
破解比較表在相同的安全強度下,ECC的金鑰長度與RSA 的金鑰長度比較,如下表所 示。從中可見ECC 的金鑰長度或數位簽章的長度遠比RSA小。隨著加解密演算 法由DES/Triple-DES 改進為AES,且128 位元金鑰到256 位元金鑰AES 的安全 性為2128至2256,相同安全性的RSA金鑰長度需3072位元到15360位元,但ECC僅需 256位元到512 位元。若RSA 或ECC 是用做金鑰交換來保護256 位元金鑰的 AES 時,RSA 應該用15360 位元的公開金鑰,而對應的ECC僅需使用512位元 金鑰。所以無論從增快執行速度或節省空間的角度,我們可見ECC是優於RSA。
1024 2048 3072 7680 15360
ECC 長度 (Bytes)
161 224 256 384 512
金鑰長度比 6 : 1 9 : 1 12 : 1 20 : 1 30 :1 橢圓曲線的通用格式為 y2
+ a
1xy + a
3y = x
3+ a
2x
2+ a
4x + a
6。用於密碼學技 術的橢圓曲線是由滿足上述方程式的所有點(x, y)及一個無限遠點(point atinfinity) O所形成的集合,其中座標x與y屬於某個有限體(finite field)。
橢圓曲線所分佈之有限體 (finite field),為GF(q) ,其中q = pm為質數的次 冪,m 為正整數。橢圓曲線方程式之型式為y2= x3+ ax + b mod p 與y2+ xy = x3+
ax + b mod 2
m兩種,但這都是已經經過許多化簡上述通用方程式之後所 到的結果。密碼學的橢圓曲線是由滿足該方程式的所有點(x, y)及一個無限遠點(Point at infinity)O 所形成的集合,座標x 與y 屬於某個有限體(finite field)。目前軟硬體 具體實現的有限體為質數體(Prime field,GF(p))、二元體(Binary field,GF(2n))、
最佳擴展體(Optimal extension field,GF (pn))等三種(Bailey and Paar, 2001)。
橢圓曲線上的點可進行兩點間之加法(Menezes, 1993; Silverman and Tate, 1992)。幾何上,如果要計算相異兩點P 與Q 的和,則先找出通過這兩點的直線,
然後找出這條直線與橢圓曲線相交的第三點(-R),再將此點對x 軸做鏡射得到和 (R),如圖一所示。如果橢圓曲線上的某兩點共線的話,兩點相加之和就是O。
圖 20、橢圓曲線圖
若P = (x1, y1)與Q = (x2, y2)為橢圓曲線上的任意兩點,而P≠ O≠ Q,且選取質數 體,此時橢圓曲線方程式為 :
y2= x3+ ax + b
(1)
兩點加法的運算規則如下所示:
1. P + O= O+ P= P
2. P + (-P) = (X1+Y2) + (X1+(-Y2)) = O
3. P + Q = R = (X3,Y3)
Y2-Y1/X2-X1 if P≠ Q X
3
=λ
2-X1-X2,Y3=λ
(X1-X3) - Y1,λ
=3X12
+a/2Y1 if P = Q 如果選擇二元體,則橢圓曲線方程式為:
Y2+ XY = X3+ aX2+ b
(2)
而上述公式(3)的加法規則3 必須改為:P + Q = (X3,Y3)
λ
2+ λ +
X1+ X2+ a if P≠ Q X3 =λ
2+ λ
+ a if P = QY3=
λ ( X
1+ X
3) + X
3+ Y
1Y2+Y1/X2+X1 if P≠ Q
λ
=X1+ X1/Y1 if P = Q
上下兩個公式的計算(加法、減法、乘法、除法/反元素)必須在相關的有限體 進行,若選取質數體時僅需進行模算術(Modular arithmetic),若選取二元體則需 進行多項式算術(Polynomial arithmetic)。點乘法計算k‧P 為橢圓曲線密碼系統 的基礎,其中k 為正整數,而P 為橢圓曲線上的一個點:
一共K個P
K ‧ P = P‧P‧P‧P‧P… ‧P
如果n‧P= O 則n 為點P 的級數(order)。在合適的橢圓曲線上,可以找到 一個級數n > 2160的基點(Base point) G,而此橢圓曲線系統參數基點G 可公開;
另隨機選取小於n 的正整數d 當作私密金鑰計算Q = d‧G 為對應的公開金鑰。
點乘法的計算如果直接做k 個點相加,則需要執行k-1 次加法運算,效率不佳,
目前已有許多可以加速點乘法計算的演算法。
橢圓曲線密碼系統的實現必須考慮下列因素:
1. 有限體的選擇 2. 橢圓曲線的挑選
3. 有限體元素的運算(加法、減法、乘法、除法/反元素) 4. 橢圓曲線點的運算(加法、減法、乘法)