橢圓曲線密碼學(ECC)

橢圓曲線密碼學 Elliptic Curve Cryptography (ECC)

特色優點

  • 最早開始發展於1980年中期
  • 與 RSA 和離散對數相同的安全級別
  • 更少的計算量
  • 更短的簽名(signatures)和密鑰(keys)
  • trap-door function
  • 在同安全級別下,與RSA相比加密可以更快地使用短公鑰

ECC 應用

  • TLS/SSL 數位憑證
  • 基於身份加密
  • 區塊鏈數位簽名
  • 序號產生驗證

原理觀念

Ellipse in \(R^2\)

所有點都會分布滿足於 \(ax^2+b^2=c\)

Elliptic curve (non-singular)

橢圓曲線必須滿足下列方程式

\[\begin{align} y^2 = x^3+ax+b \label{eq1} \\ 4a^3+27^2 \neq 0 \label{eq2}\\ \end{align}\]

其中\(4a^3+27^2 \neq 0\)是為了確保\(x^3+ax+b = 0\) 有相異的三個根
together with an imaginary point of infinity O

而在ECC裡,必須嚴格滿足\((x,y) \in \mathbb{Z}_p\)且下列方程式 ( Weierstrass function)

\[\begin{equation} \label{eq3} \begin{aligned} y^2 = x^3+ax+b \mod p \\ 4a^3+27^2 \neq 0 \mod p \\ \end{aligned} \end{equation}\]

Abelian group over \(\epsilon\) (群組規則)

Case 1:\(x_1 \neq x_2\)

畫一條通過兩點P\((x_1,y_2)\)、Q\((x_2,y_2)\)直線L,此時會找到直線與橢圓曲線的交點R'\((x_3,y_3)\)
再透過R'以x軸為對稱軸會找一個R,這個即為所求。
公式化的話可以寫成:

\[\begin{align} P+Q=R \nonumber \\ R'(x_3,y_3) \nonumber \\ x_3= \lambda ^2-x_1-x_2 \nonumber \\ y_3= \lambda (x_1-x_3)-y_1 \nonumber \\ \lambda=\frac{y_2-y_1}{x_2-x_1} \nonumber \\ \end{align}\]

這裡的\(\lambda\)為L斜率

Case 2:\(x_1 = x_2\),\(y_1 \neq y_2\)

此時P跟Q會對稱於X軸,也就是P+Q=O
(O為無窮遠的虛點)

(source:羊小咩,Day 24. 非對稱式加密演算法)
Case 2:\(x_1 = x_2\),\(y_1 = y_2\)

也就是兩點重和的時候,如果\(y_1=0\)就會跟case2一樣。
P+P點則是將橢圓曲線在 P 點的切線,與橢圓曲線的交點,交點關於x軸對稱位置的點。
這時L直線的斜率就會變為\(\lambda=\frac{dx}{dy}=\frac{3x^2_1+a}{2y_1}\)

講到這裡一定會覺得這樣很簡單,為何能安全性層級可以這麼高的疑問。
那是因為平常應用時會講橢圓曲線給離散化(如下圖)

Continuous vs. Discrete elliptic curves

在離散有限域超過範圍時,超過的的點就從下面的對稱點往上面直到相交第三點為止

(source:羊小咩,Day 24. 非對稱式加密演算法)

橢圓曲線迪菲-赫爾曼金鑰交換Elliptic Curve Diffie–Hellman key Exchange(ECDH)

  • p參數
  • G生成數字
  • N生成G的順序
  • H餘因子

一開始G的斜率等於s這個公式帶入得到為13
\(x_2G\) 為2Gx的斜率
\(y_2G\) 為2Gy的斜率

N=19 有十九個點
此時我們可以透過19個點組成這個曲線生成出點(5, 1) 餘因子為 1


參考資料

  1. https://ithelp.ithome.com.tw/articles/10251031
  2. https://youtu.be/F3zzNa42-tQ