橢圓曲線密碼系統是一種公開金鑰系統,利用基礎於有限場 (finite field) 的橢圓 曲 線 , 其 通 用 格 式 為y2 +a xy1 +a y3 =x3 +a x2 2 +a x4 +a6 , 也 稱 為 通 用 Weierstrass 方程式 ﹙generalized Weierstrass equation﹚ ,滿足曲線方程的所有點 及一個無窮遠點 (point at infinity) 所成的集合,形成一個加法群 (additive group) 。橢圓曲線上的點能夠進行兩點間的加法,以幾合的角度來看,我們想 算出通過這兩點的直線,並與橢圓曲線相交於第三點,再將此點對 x 鏡射,即可 得到結果。顯示各種可能的加法,P+Q=R,若 P 不等於 Q,,P=Q 及 P=-Q 三種 情形,若橢圓曲線上的三點共線,則三點相加的和即為無窮遠點。
P
Q
R
-R=R' P=Q
R=2P
-R P=(x,y)
-P=(x,-y)
圖1:橢圓曲線加法運算
假設 p> 是一個質數,基礎於大小為 p 的有限體之橢圓曲線可以記為GF p3 ( ) , 其方程式寫做y2 =x3 +ax + ,其中a b GF pb , ∈ ( )且 a4 3 +27b2 ≠ 0 (mod ) ,p 則存在一群 x y( , ) 的有序對,其 x ,y 皆屬於GF p( ) 且滿足曲線方程式,加上定義 的無窮遠點,這些點形成可交換群(abelian group)。假設欲相加在曲線四的兩點:
p p
P =( , )x y 和Q =( ,x yQ Q),首先我們先計算通過P 、Q 兩點直線的斜率λ,則
P Q P Q
P +Q =(x + ,y + )為:
P Q p Q
橢圓曲線密碼系統基礎於一些難題:假設G 是一個橢圓曲線加法群,是由 ( )q
P ∈E F 產生出來並且P 的 order 為q ,Q 為曲線上除了P 以外的點。
橢圓曲線離對數問題 (ECDLP) :
鐺定P 、Q ∈ ,求得一個整數G a ∈ Ζq*滿足Q=aP
計算 Diffie-Hellman 問題 (CDHP) :
給定P ,aP ,bP ∈G,a b ∈ Ζ, q*,求得abP
決定 Diffie-Hellman 問題 (DDHP) :
給定P ,aP ,bP ,cP ∈G,a b c ∈ Ζ, , *q, 決定是否c =ab
2.1.1 Divisor 理論[27][28]
假設f 是一個非零的有理函數﹙rational function﹚,而且點P ∈E,若f P( )= 則0 說f 在P 點有個 zero;若 f P( ) = ∞ 則說 f 在P 點有個 pole,而 divisor 就是用來 了解有理函數的zeros 和 poles,同時也能提供在橢圓曲線上的有理函數,其上發 生zero 或是 pole 的點和這些點的次數﹙order﹚,divisor D 可以定義為橢圓曲線E 上點的formal sum: p
p E
D n P( )
∈
=∑ ,其中n 皮表點P 的 zero 或 pole 的特性與其p
對應的次數。若np >0則代表點P 為 zero,若np <0,則代表點P 為 pole。例 如:若P ,Q ,R∈E ,D1 =1( )P +2( ) 5( )Q − R 代表divisor 在P ,Q 有 zero,且在 R有 pole,P ,Q ,R的次數分別為1, 2 , 5 。 D2 =7( )P + −2( 2 ) 2( )P − O 則是代表 在P ,−2P有 zero,且在O 有 pole,P ,−2P,O 的次數分別為7,2 ,2 。要注意的 是,括號是用來分開次數與特定點,例如2( ) 指的是在點P P 有個 zero 且次數為 2,而 P(2 ) 指的是在點2 有個 zero 且次數為1 P
在E 上的一群divisors組成可交換群,記為Div E( ) ,並有下列的加法特性:若
一個principal divisor p
p E
點 p
p E
P n P E
∈
=∑ ∈ 使得D ∼( ) ( )P − O 。換句話說,D 永遠可以寫成 canonical 形式:D =( ) ( )P − O +div f( ),其中f 為有理函式。
最後要介紹的是如何相加兩個canonical 形式的 divisor,使得結果任為 canonical 形式。這個過程提供了一個在給定divisorD 的悄況下,找尋有理函數 f 的方法,
使 得 div f( ) =D 。 假 設 D1 , D2 ∈Div E( ) , 且 D1 =( ) ( )P1 − O +div f( )1 、 D2 =( ) ( )P2 − O +div f( )2 ,P1 +P2 = ,假設P3 hP P1, 2( , ) =x y ay+bx + 為通過Pc 1或 P2 的 直 線 , h x yP3( , ) = +x d 為 垂 直 通 過 P3 的 直 線 。 接 著 我 們 有
div h( P P1, 2)=( )P1 +( )P2 + −( P3)−3( )O ,因為P1,P2, P− 在直線3 hP P1,2( , )上,所以x y 為 zeros ,而div h( P3)=( )P3 + −( P3) 2( )− O , 因 為P3 和− 在直線P3 hP3 。 所 以 divisorD1,D2的加法寫做:
P P P
P P P
D D P P O div f f
P O div f f div h div h P O div f f h h
1 2 3
1 2 3
1 2 1 2 1 2
3 1 2 ,
3 1 2 ,
( ) ( ) 2( ) ( )
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( / )
+ = + − +
= − + + −
= − +
上式將用於Weil pairing 的計算。
圖2:橢圓曲線的加法律
2.1.2 Weil Pairing 和 Miller 演算法
Weil 對為一線性映射函數,由一個群對應到另一群,而定義域 (G ) 通常為定義1 在大質數上的加法群,群上的點都符合橢圓曲線方程式,我們假設其生成元素 (generator) 為P ,而對應域 (G ) 通常為定義在大質數上的乘法群。我們假設在2 這G 和1 G 的離散對數問題是困難的。 2
給 定 一 個 基 礎 於 有 限 體K 的 橢 圓 曲 線 E , 假 設 m 和 k 的 characteristic char K( ) [29]互質。例如:char GF p( ( )) = 、p char GF( (2 ))n = 。Weil pairing 為2 一個函數對應關係:
e E m: [ ]×E m[ ]→Um
其中E m[ ]={ |P mP =O P, ∈E},稱為 m-torsion 群,U 是在K 中1的m 次方m 根,而K 為K 的 algebraic closure[29]。Weil pairing e P Q( , ) 的計算定義如下:給 定兩個 m-torsion 的點 P , Q∈E m[ ],存在 divisorD ,P DQ ∈Div E0( ),使得
DP ∼( ) ( )P − O , DQ ∼( ) ( )Q − O , 任 意 選 擇 兩 點 T 和 U , 並 指 定 DP =(P +T) ( )− T 、DQ ∼( ) ( )Q − O 。因為mP =mQ = ,概據定理,O mD 及P mD 為 principal divisor , 且 存 在 有 理 函 數Q f 和P f , 其 中Q div f( ) =P mDP ,
Q Q
div f( ) =mD , 假 設 D 和P D 有 完 全 不 一 樣 的 support , 也 就 是 說Q
P Q
supp D( )∩supp D( )=φ,則 P Q
Q P
e P Q f D
f D ( ) ( , )
( )
= 。■
第一個計算e P Q( , ) 的演算法為 Miller 演算法[30],我們將步驟說明如下:
輸入:P ,Q ∈E m[ ] 輸出:e P Q( , )
步 驟 一 : 任 意 選 擇 兩 點T 和 U , 滿 足 P+T T Q, , +U U, 皆 不 同 , 並 指 定
DP =(P +T) ( )− T 、DQ ∼( ) ( )Q − O
步驟二:計算f QP( +U f U f P), ( ), (P Q +T f T), ( )Q ,其中f ,P f 滿足Q div f( ) =P mDP,
Q Q
div f( ) =mD
步驟三:計算 P Q P Q
Q P Q P
f D f Q U f T e P Q
f D f P T f U ( ) ( ) ( ) ( , )
( ) ( ) ( )
= = +
+ ■
我們列舉Weil 雙線性映射函數e G: 1×G1 →G2,滿足下列特性:
一、 雙線性 (Bilinearity) :∀P Q R G, , ∈ 1, (e P+R Q, )=e P Q e R Q( , ) ( , )且 ( , ) ( , ) ( , )
e P+Q R =e P R e Q R
二、 不退化性 (Non-degeneracy) : ∃P Q, ∈G1, ( , )e P Q ≠ 1
三、 可計算性 (Computability) :∀P Q, ∈G1,計算 ( , )e P Q ab是多項式時間 (Polynomial Time) 可完成。
以下說明雙線性密碼系統所基硬的難題:
雙線性 Diffie-Hellman 問題 (BDHP) :
給定 P aP bP cP, , , , a b c ∈ Ζ, , *p, 計算出d ∈G2,使得d =e P P( , )abc ∈G2