---
# System prepended metadata

title: 基礎橢圓曲線
tags: [數讀]

---

---
tags: 數讀
---
# 基礎橢圓曲線
> [name=W_Ice_Tri] [time=Mon, June 20, 2022] [color=#1f1e33]
## 概要
[TOC]
## 定義
域$k$上的橢圓曲線可看成此方程再加上一無窮遠點
> 不定方程$y^2=x^3+ax+b, \ a,b\in k^2$
> $\Delta=-16(4a^3+27b^2)\neq0$

($\Delta\neq0$為避免重根)
啊原因可能是這種方程長得跟計算橢圓周長的方程很像
其實根本無關


橢圓曲線與一平行y軸的線之交點必有無窮遠點，定義為$P_\infty$
## 基礎性質
顯然曲線是光滑的，這毋庸置疑
![](https://i.imgur.com/Rk03gzQ.png =300x300)

橢圓曲線上取兩點，而這兩點所形成的直線與曲線必有第三個交點
(由一元三次方程與韋達定理可知)
小心有一些case要注意：
![](https://i.imgur.com/QxNxRrL.png =250x250)![](https://i.imgur.com/QkCzWlV.png =250x250)

![](https://i.imgur.com/HWr3G0S.png =250x250)![](https://i.imgur.com/35FyP5j.png =250x250)

如果我們有兩個點$P,Q$
做直線$PQ$交橢圓曲線於$R'$，記$R'$對$x$軸之對稱點$R$
則定義$P+Q=R$(這不是單純的加法喔)，且$P_\infty := 0$
順便定義$tP$為$P$的$t$倍點($tp=(t-1)p+p=p+p+p+...$)

左上：$A+B=C$
右上：$A+B=0$
左下：$A+A=B$
右下：$A+A=0$

這也是為什麼在前面要定義無窮遠點

另外，對於橢圓曲線與任一直線的三個交點$P,Q,R$
可推得$$P+Q+R=0$$注意到這個方程是對稱的，那麼就可以具體寫出$P+Q$的表達式

如果$P(x_p,y_p),Q(x_q,y_q),R(x_r,y_r)$
Case(1) : $P,Q$不重合
> $s=\dfrac{y_p-y_q}{x_p-x_q}$
> 
> $x_r=s^2-x_p-x_q$
> $y_r=y_p+s(x_r-x_p)$

Case(2) : $P,Q$重合
> $s=\dfrac{3x_p^2-a}{2y_p}$
> 
> $x_r=s^2-2x_p$
> $y_r=y_p+s(x_r-x_p)$

總而言之，橢圓曲線上有一個交換群結構，因此我們可以透過一個有理解生成新的有理解

與文章無關的例題們
例題1. 試證明$y^2=x^3-5$沒有正整數解
例題2. 試證明$y^2=x^3-1$只有整數解$(0,1)$
例題3. 試證明$x^4+y^4=z^4$沒有平凡整數解
例題4. 試求$y^2=x^3+6$的所有整數解
例題5. 試求$y^2=x^3-11$的所有整數解

## ECDSA加密

在運算方面數值大小一定得有限，所以考慮對整個橢圓曲線模質數$p$，那麼$P+Q+R=0$的運算也一樣模$p$，如果我們找的到一個點它可以生成出一個循環群，那麼就可以針對這個模$p$的橢圓曲線進行像是離散對數的加密。

所以我們的問題變成:給定一點$P$和另一點$T$，試求最小的$d$使得$dP=T$ (由循環群定義可知只需要求最小解，沒必要求所有解)

那麼大致說完加密的方式後，就來說明完整的加密解密過程。

1. 產生金鑰：選定$a$和$b$分別為橢圓曲線的係數(就是$y^2=x^3+ax+b$中的$a$與$b$)，$p$為質數，拿來模剛給定的橢圓曲線。再找一個循環群($G,·$)與其生成元$P$，若$G$的order為$q$，取一數$d$, $0<d<q$，算出$T=dP$

所以我們得到:公鑰：$(p,a,b,q,P,T)$，私鑰：$d$

2. 簽章：任取一數$e$，滿足$0<e<q$。計算$R=eP$，令$r=R$的$X$座標，並計算$s\equiv(h(x)+dr)e^{-1} \pmod q$，其中$h(x)$是雜湊(hash)函式。

所以我們得到:要傳送的訊息$x$與簽名$(R,s)$

3. 驗章：計算$w\equiv s^{-1}\pmod q$、$u\equiv wh(x) \pmod q$、$v\equiv wr\pmod q$、$A=uP+vT$，若$A$的$X$座標$\equiv r\pmod q$，則該簽章為合法的簽章，若不為$r$則該簽章不合法。

首先產生公私鑰的時候已經將公鑰$(p,a,b,q,P,T)$送出。

接下來的簽章是給一段文字$x$以及簽名$(R,s)$。

最後是驗證$(R,s)$確認訊息$x$是否是由原始發送公鑰的人所傳遞的。

最後的驗章證明:

易知$uP=\dfrac{h(x)eP}{h(x)+dr}$，$vT=\dfrac{erdP}{h(x)+dr}$，故$$A=uP+vT=\dfrac{e(h(x)+rd)P}{h(x)+dr}=eP=R$$

以上是橢圓加密簽章的過程與原理。

整體來說，其實完全了解橢圓曲線上的運算規則後，就可以看出加密背後離散對數加密的樣子，不過單純離散對數的加密其實計算上複雜度蠻高的，而橢圓曲線與模的概念套用下來就明顯降低許多複雜度。
## RSA,ECDSA比較
優點:
$RSA$:較易實踐，原理與加密過程簡單
$ECDSA$:計算速度快，而且不需要太長的$p$就會有很高的加密效果

缺點:
$RSA$:隨著$p,q$越大，解密計算時間就會相對$ECDSA$會花很多時間。
$ECDSA$:原理很難，牽涉到群論等內容，而且實作部分也較$RSA$複雜很多。