基本代數概念與有限域下的橢圓曲線【密碼學筆記】

羣G(group)是指由一個集合和一個二元運算 \(*\) (這裏的 \(*\) 不是指乘法)構成的代數系,含有如下四個性質html

  • 羣在 \(*\) 下的運算是封閉的

對於任意G中的兩個元素,\(a\)\(b\)\(a*b\) 也是 \(G\) 中的一個元素。算法

  • 羣中有一個元素 \(e\),稱爲單位元

對於羣中的每一個元素 \(a\) 都知足 \(a*e=e*a\)spa

  • 羣中每一個元素都有逆元,記做\(a^{-1}\)

對於羣中每一個元素 \(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

  1. 集合 \(F\) 在加法下是一個阿貝爾羣
  2. 集合 \(F\) 在乘法下是封閉的,且域中全部非零元素構成的集合在乘法下是一個阿貝爾羣
  3. 對於集合F中全部的\(a,b,c\),分配率 \((a+b)c=ac+bc\) 都成立。

有限域

若域中元素個數有限,則稱 \(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知足:

  1. \(4A^3+27B^2\neq 0\),書上沒有證實,這個俺不會,就跟一元二次方程裏的\(\Delta = b^2-4ac\) 同樣,數學家證實過了。

  2. \(P,Q\)爲橢圓曲線\(E\)上的兩個點,直線\(L\)\(P\)\(Q\)兩點,或爲當\(P=Q\)時在\(P\)點的切線。這時\(L\)\(E\)\(P,Q,R\)三個交點,同時認爲\(O\)位於每一垂直線上。設\(R=(a,b)\)\(P\)\(Q\)的和被定義爲\(R\)關於\(x\)軸的對稱點\(R’=(a,-b)\),寫成 \(P\oplus Q\)\(P+Q\)
  3. 進一步,若\(P=(a,b)\),那麼\(P\)點的反射點爲 \(\ominus P=(a,-b)\),或寫成\(-P\),咱們定義 \(P\ominus Q\)\(P-Q\)\(P\oplus (\ominus Q)\)
  4. 類似的,連加能夠表示爲點與整數的乘積:

定義中 \(\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\)互不相等。

定理1:

橢圓曲線E上的加法知足如下性質:

  1. 存在單位元:\(P+O=O+P=P\)

  2. 可逆:\(P+(-P)=O\)

  3. 知足結合律:\((P+Q)+R=P+(Q+R)\)

  4. 知足交換律:\(P+Q=Q+P\)

定理2:

橢圓曲線加法算法:
設橢圓曲線\(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})\)中。依此計算最終獲得:

定理3

\(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})\)上每一對點的和。計算結果以下表:

相關文章
相關標籤/搜索