第二章 背景知識
2.2 橢圓曲線密碼學
橢圓曲線密碼系統近年來逐漸被廣泛的使用,主要是系統可以使 用較短的金鑰長度,達到與 RSA 密碼系統相同等級的安全強度,讓擁 有相同安全強度的橢圓曲線密碼系統較 RSA 密碼系統其計算複雜度 相對來的小。橢圓曲線的相關研究已經有一段時間,在西元 1985 年,
由 Victor Miller 和 Neal Koblitz 兩人提出橢圓曲線的公開金鑰密碼系統,
而橢圓曲線要使用在密碼系統上,頇利用基礎於有限場(finite field)之 上,其通用格是為
y
2 axy by x
3 cx
2 dx e
,也稱之為 Weierstrass 方程式(generalized Weierstrass equation),橢圓曲線之所以可以用在密 碼系統上,主要是基於橢圓曲線密碼上離散對數問題(Elliptic Curve Discrete Logarithm Problem,ECDLP),因此我們將收集滿足此方程式的 所有點及一個無窮遠點(point at infinity)的集合所形成的一個加法群 (additive group)。8
圖 2.1 [11]
圖 2.2 [11]
橢圓曲線上的點能夠進行點跟點之間的加法,以幾何觀點來看,一條 直線交於橢圓曲線上至多三點,所以有以下四種情況:
1. 如果三點都位於橢圓曲線跟直線的交點上,則這三點的總合為 O,
其中 O 我們定義為無窮遠點(point at infinity)。
9 為無窮遠點(point at infinity)。
假設有一個質數 p>3,在有限體大小為 p 之橢圓曲線上我們可以記為 (point at infinity),可形成交換群(abelian group)。根據橢圓曲線上的點 運算,可以定義出點運算的公式如下:
10 且都滿足此曲線方程式,加上無窮遠點(point at infinity),可形成交換 群(abelian group)。根據橢圓曲線上的點運算,可以定義出點運算的 次方運算相對應到橢圓曲線加法群中的純量乘法(scalar multiplication)
11
運算,當 k 為一個正整數且
P GF ( p )
,若kP O
,則 k 稱之為 P 的級數(order),通常我們會找一個級數大於 2160的基點,因為安全強 度上相對於 RSA 密碼系統的 1024 位元金鑰,所以我們可以利用純量 乘法(scalar multiplication)的運算來架構橢圓曲密碼系統的基礎。2.2.1 Pairing 的背景基礎[13]
有興趣可以參考 Elliptic Curves Number Theory and Cryptography [13],
而我們的實作只需要利用 pairing 的特性,來達到我們所要的加解密
~
計算是可以在多項式(Polynomial Time) 時間內完成。2. 雙線性(Bilinearity):對於所有屬於 G1上的三點 P、Q、R,使得
12 純量乘法(scalar multiplication)運算,所以我們也可以將 Diffie-Hellman 上的問題對應到橢圓曲線上,我們稱這個問題為雙線性 Diffie-Hellman 問題,簡稱為 BDHP,給定
P
,aP
,bP
,cP
,任意從Z
*p中挑選出a
、b
和c
, 對任何一個機率的多項式時間演算法(probabilistic polynomial time algorithm)A
,要計算出d G
2,使得 2PBC (Pairing-Based Cryptography)的函式庫是一個免費 C 的函式庫 (released under the GNU Lesser General Public License)[7],由史丹佛大 學所開發,它提供了七種不同型態的 pairing 供大家使用。其中包括 有 Type A、B、C …、G。而我們的系統是則是 Type A,因此以下我們 將介紹 Type A 的 pairing 型態。
Type A:
Type A 的型態建構在橢圓曲線方程式為
y
2 x
3 x
的場(field )13
上,而