羣G(group)是指由一個集合和一個二元運算 \(*\) (這裏的 \(*\) 不是指乘法)構成的代數系,含有如下四個性質html
對於任意G中的兩個元素,\(a\) 和 \(b\),\(a*b\) 也是 \(G\) 中的一個元素。算法
對於羣中的每一個元素 \(a\) 都知足 \(a*e=e*a\)spa
對於羣中每一個元素 \(a\) 都知足 \(a*a^{-1}=a^{-1}*a=e\)3d
對於羣中任意元素,\(a,b,c\) 都知足 \((a*b)*c=a*(b*c)\)htm
若是 \(G\) 知足交換律,則稱羣 \(G\) 爲交換羣或者阿貝爾羣。blog
舉個例子,整數集 \(Z\) 就是一個具備加法運算的羣,也是阿貝爾羣,\(0\) 位單位元,每一個元素\(a\) 都有逆元 \(-a\),加法運算知足結合律。而整數集 \(Z\) 就不是一個具備乘法運算的羣,由於元素 \(0\) 沒有逆元。get
容易證實,每一個羣中的單位元都是惟一的,同時,羣中每一個元素的逆元也是惟一的,而且一個元素的逆元的逆元是該元素自己。\((a^{-1})^{-1}=a\)。數學
每當羣中運算用於同一個元素與其自身相運算兩次或屢次時,能夠採用指數運算來表示。這樣就有 \(a^2=a*a\) ,\(a^{n}=a* a \ldots * a\),也就是說在整數集的加法運算下,\(a^2=a+a\),只是這不符合你們的習慣。it
域 \(F\) 是一個含有至少兩個元素的集合,含有兩個二元運算稱爲加法和乘法(並不必定是咱們一般意義上的加法和乘法),並知足如下性質:class
若域中元素個數有限,則稱 \(F\) 爲有限域。並記做 \(F_q\) 或 \(GF(q)\) ,其中 \(q\) 爲該有限域的元素個數,也叫作有限域的階數。
例如,設 \(p\) 爲素數,對於非空集合\(F=\{0,1, ...,p-1\}\),在模 \(p\) 的狀況下作加法和乘法運算,定義運算規則爲:
\[ a\oplus b=a+b=r\left( mod\ p\right),a,b,r \in F\\ a\otimes b=a\times b=s\left( mod\ p\right),a,b,s \in F \]
\(F\)關於加法構成交換羣,加法單位元爲\(0\);\(F\) 中全體非零元對乘法構成交換羣,乘法單位元爲1;分配率也成立。故 \(F\) 在定義的加法和乘法運算下構成有限域,用 \(GF(p)\) 或\(F_p\)表示。
例如,\(GF(2)\), 域中元素只有\(0,1\).域中運算爲:\(1+1=0,1+0=1,0+1=1,0+0=0,1*1=1,1*0=0,0*1=0,0*0=0\).
數學家已經證實(好厲害喲),一個有限域 \(GF(k)\),其 \(k\) 必爲 \(p\) 或者 \(p^m\) ( \(p\) 爲素數),其它的 \(k\) 將不能構成有限域。 \(p^m\) ( \(p\) 爲素數)的徹底剩餘集的每個元素,可使用 \(m\) 位的 \(p\) 進制數來表示,並進而可使用多項式來表示。
令 \(a∈GF(p^m)\) ,則 \(a\) 可表示成以下次數爲 \(m-1\) 的多項式
其中的係數 \(a_i\) 爲模 \(p\) 的整數,\(x=p\),該表達式實質上是把一個整數用 \(m\) 位的 \(p\) 進制數來表示,係數 \(a_i\) 就是每一位的具體數字。
例如:在 \(GF(3^3)\) ,即\(GF(27)\)中,\(a=2x^2+x+2\)
表示成三位三進制數212,轉換成十進制數爲 \(2×3^2+1×3^1+2=23\)
實質就是在 \(P\) 進制下的運算。
\[ a=a_{m-1}x^{m-1}+a_{m-2}x^{m-2}+...+a_1x+a_0, b=b_{m-1}x^{m-1}+b_{m-2}x^{m-2}+...+b_1x+b_0\\ c=a+b=c_{m-1}x^{m-1}+c_{m-2}x^{m-2}+...+c_1x+c_0\\ c_i=a_i+b_i (mod\ p), 0\leq i\leq m-1 \]
舉例:在\(GF(3^3)\)中,若\(a=2x^2+x+2,b=2x^2+2x+2\)
則有 \(c=a+b=x^2+1\)
在有限域內,作減法,就是須要注意,對負數取模(模數爲正時),結果必定是正的。
舉例:在\(GF(3^{3})\)中,若 \(a=2x^2+x+2\),\(b=2x^2+2x+2\)
則有 \(c=a-b=2x\)
在\(GF(3^{3})\)中,若 \(a=2x^2+x+2\),\(b=2x^2+2x+2\),求 \(ab\) 的過程以下
得 \(d=ab=x^4+x^2+1\)
計算過程當中沒有進位一說,每一步都進取模操做。
求\(x^4+x^2+1\), 除以\(x^3+2x+1\)
\(x^4+x^2+1——10101\)
\(x^3+2x+1——1021\)
兩者相除,獲得的餘數爲\(221\),則計算結果爲\(2x^2+2x+1\)。
和乘法相相似,計算過程當中也沒有借位一說,出現負數就進行取模。
橢圓曲線是形如的方程的解集,這種方程式被叫作\(Weierstrass\)方程。例如:
橢圓曲線的一個特色是可以用橢圓曲線上的兩個點「相加」生成第三個點。
之因此用「相加」來表示,是由於這個操做在某些方面相似於加法操做。用幾何學來描述「相加」操做,設 \(P\) 和 \(Q\)爲橢圓曲線 \(E\) 上的兩個點,若經過\(P,Q\)兩點的直線交 \(E\) 於 \(R\) ,若 \(R'\) 爲 \(R\) 關於 \(x\) 軸的對稱點,則記 $ P\oplus Q=R' $。
例如:
設橢圓曲線E爲 ,點P爲(7,16),點Q爲(1,2)。
由兩點能夠得出直線L:,爲獲得E和L的交點,咱們計算
咱們須要獲得方程式的根,因爲咱們已經知道X=7和X=1,因此有
從而獲得
那麼當咱們想要獲得 \(P\oplus P\) 時,應該怎麼作呢?
設 \(P\) 爲橢圓曲線 \(E\) 上的兩個點,若經過\(P\) 的一條切線交 \(E\) 於 \(R\),若 \(R'\) 爲 \(R\) 關於 \(x\) 軸的對稱點 ,則記 $2P = P\oplus P=R' $。
例如:
設橢圓曲線爲,點P爲(7,16) 。計算 \(P\oplus P\) 。
經過隱式微分方程求解:
因爲P=(7,16),獲得斜率,因此
注意P的X軸座標X=7爲3次多項式的2重根,獲得
固然橢圓曲線上的「相加法則」也存在着一個潛在的問題。若是咱們嘗試作\(P=(a,b)\)點關於x軸的對稱點\(P’=(a,-b)\)。那麼經過\(P\)和\(P’\)的直線\(L\)是垂直線\(x=a\),這條線與\(E\)的交點只有\(P\)和\(P’\)。
基於 \(P\oplus P'\) ,有一種解決辦法就是創造一個額外的點\(O\) (無窮遠處),這個點不存在在XY平面中,可是咱們假設它存在在每一垂直線上。因此有\(P\oplus P'=O\),從而能夠得出\(P\oplus O=P'\),因此\(O\)在橢圓曲線加法中至關於零。
橢圓曲線E爲\(Weierstrass\)方程的全部解以及點\(O\)所構成的集合,其中常量A和B知足:
\(4A^3+27B^2\neq 0\),書上沒有證實,這個俺不會,就跟一元二次方程裏的\(\Delta = b^2-4ac\) 同樣,數學家證實過了。
類似的,連加能夠表示爲點與整數的乘積:
定義中 \(\Delta _E=4A^3+27B^2\) 叫作 \(E\) 的判別式。\(\Delta _E\neq 0\) 等價於3次多項式 \(X^3+AX+B\) 沒有重複根。咱們能夠把多項式改爲 \(X^3+AX+B=(X-e_1)(X-e_2)(X-e_3)\) ,那麼\(4A^3+27B^2\neq 0\),當且僅當\(e_一、e_二、e_3\)互不相等。
橢圓曲線E上的加法知足如下性質:
存在單位元:\(P+O=O+P=P\)
可逆:\(P+(-P)=O\)
知足結合律:\((P+Q)+R=P+(Q+R)\)
知足交換律:\(P+Q=Q+P\)
橢圓曲線加法算法:
設橢圓曲線\(E:Y^2=X^3+AX+B\)上兩點爲\(P_1\)和\(P_2\):
(a) 若是\(P_1=O\),則\(P_1+P_2=P_2\)。
(b) 不然,若是\(P_2=O\),則\(P_1+P_2=P_1\)。
(c) 不然,記\(P_1=(x_1,y_1)\),\(P_2=(x_2,y_2)\)。
(d) 若是\(x_1=x_2\)且\(y_1=-y_2\),則\(P_1+P_2=O\)。
(e) 不然,定義
並設
則\(P_1+P_2=(x_3,y_3)\)
這個書上有證實,這個俺會了,可是不想寫。
爲了將橢圓曲線應用到密碼學中,須要這樣一種橢圓曲線,其上的點的座標在有限域\(F_p\)中。咱們定義一種在有限域\(F_p(p>3)\)上的橢圓曲線:
\(E:Y^2=X^3+AX+B,A,B∈F_p\) ,其判別式知足\(4A^3+27B^2(mod\ p)\neq\ 0\)。記爲:\(E_p(A,B)\)
\(E\)上的點的座標在\(F_p\)中記爲:
例如:
域\(F_{13}\)上的橢圓曲線\(E:Y^2=X^3+3X+8\)。
咱們將全部可能的\(X=0,1,2,…,12\)代入\(X^3+3X+8\)並檢查哪些值是模\(13\)的二次剩餘。例如,將\(X=0\)代入,獲得\(8\),而\(8\)不是模\(13\)的二次剩餘;再將\(X=1\)代入,獲得\(12\),因爲\(5^2≡12(mod\ 13)\)和\(8^2≡12(mod\ 13)\),因此\((1,5)\)和\((1,8)\)在\(E(F_{13})\)中。依此計算最終獲得:
設\(E\)是\(F_p\)上的橢圓曲線,\(P\)和\(Q\)是\(E(F_p)\)中的點。
(a). 對\(P\)和\(Q\)應用橢圓曲線加法算法(定理2)能夠獲得一個\(E(F_p)\)中的點,記爲\(P+Q\)。
(b). \(E(F_p)\)上的加法知足定理1列舉的全部性質。也就是說,加法使\(E(F_p)\)成爲一個有限羣。
證實:
定理2 (e)的公式是經過將過P和Q直線的方程代入E求解X而導出的,從而加法的結果必然是E上的點,也就是方程所定義的E的解,因此(a)爲真;對於(b),存在單位元由加法算法的步驟(a)和(b)獲得,可逆由加法算法的步驟(d)獲得,知足交換律很容易獲得,由於能夠很簡單的驗證:若是將兩點交換,加法算法會獲得相同的結果。但知足結合律不是很容易說明。能夠經過加法算法公式直接驗證,但要考慮不少特殊狀況。
例如:
域\(F_{13}\)上的橢圓曲線\(E:Y^2=X^3+3X+8\)。咱們使用加法算法(定理2)在\(E(F_{13})\)中將\(P=(9,7)\)和\(Q=(1,8)\)兩點相加。根據算法步驟(e)首先計算
注意全部的計算都在域\(F_{13}\)上,因此\(-8\ mod\ 13=5\)且\(1/5=5^{-1}=8\) (數論倒數)。下一步咱們計算
最後,根據加法算法咱們計算
這樣就獲得
類似地,咱們可使用加法算法將\(P=(9,7)\)自身相加。注意全部的計算都在域\(F_{13}\)上,咱們獲得
因此在域\(F_{13}\)上\(P+P=(9,7)+(9,7)=(9,6)\)。類似地,咱們計算\(E(F_{13})\)上每一對點的和。計算結果以下表: