COMIC CLASSROOM

安全基礎第 4 / 9 課

ECC 橢圓曲線漫畫小教室:從曲線、有限體到公私鑰

不從協定縮寫開始,而是沿著 ECC 的誕生、橢圓曲線、點加法、Galois Field 與離散對數,一步步看懂私鑰為什麼是數字、公鑰為什麼是點。

14 分鐘

先用一句話抓住這篇

不從協定縮寫開始,而是沿著 ECC 的誕生、橢圓曲線、點加法、Galois Field 與離散對數,一步步看懂私鑰為什麼是數字、公鑰為什麼是點。

先把這篇當成一張閱讀地圖:上方摘要說明問題,圖片先建立直覺,下面文字再補上真正的技術取捨。

如果第一次讀覺得名詞很多,可以先記住比喻與結論;第二次再回頭看名詞,會順很多。

RSA 保護的是能幫助重建私鑰的因數資料。ECC 則保護一個祕密整數:從公開起點 G 出發,依曲線的點加法累積 k 次,得到公開點 Q。適當參數下,知道 G 與 k,算 Q 很快;只知道 G 與 Q,要找回 k 就困難得多。這個差異是 ECC 用來建立公私鑰分工的基礎。

這一課從曲線上的點開始,逐步建立點加法與有限體除法,再看祕密整數如何變成公開點。全程使用可手算的 GF(17)。文末也能操作同一組點,檢查 2G=(6,3) 與 19G=𝒪。群很小,任何人都能窮舉,因此完全不安全;它讓我們看清楚運算規則,還不是完整協定。

1. 已經有 RSA,為什麼還要另一條路?

ECC 漫畫小教室第 1 頁:從 RSA 的因數分解難題走向橢圓曲線離散對數,並比較相同安全強度下的金鑰尺寸
圖 1:ECC 不是縮小版 RSA;它改走另一種數學難題,讓短得多的金鑰也能提供很高的安全強度。

先把時間拉回 1985 年

公開金鑰密碼的想法已經存在,RSA 也已成為重要方法。可是密碼學家仍在找別的「單向道路」:有沒有一種運算,正向很快,知道結果後卻很難把祕密找回來?Victor Miller 與 Neal Koblitz 在 1985 年分別提出,把橢圓曲線上的點組拿來建構密碼系統。兩人的工作彼此獨立,後來成為 ECC 的起點。[1][2]

RSA 的安全直覺連到整數分解:已知巨大乘積,要找回質因數很難。ECC 的核心是橢圓曲線離散對數:已知起點 G 與終點 Q=kG,要找回走了幾次的 k 很難。兩種難題都能支撐公開與私密資訊的不對稱,但運算與攻擊方法要分開分析。

短金鑰不是魔法壓縮

在 NIST 的傳統安全強度對照裡,約 128-bit 的安全強度可對應到 3072-bit 的 RSA 類整數分解金鑰,或約 256–383-bit 的橢圓曲線金鑰。這是在已知攻擊模型下,相近安全強度所需的參數尺寸。實際速度與成本還取決於曲線、實作與協定;尺寸較短,不能直接推得每個 ECC 系統都更快或更省。[4]

因此 ECC 常出現在智慧卡、行動裝置與各種在意頻寬、儲存或運算成本的系統裡。不過我們先不急著談產品。下一步只問一個更基本的問題:名字裡的「橢圓曲線」,到底是不是橢圓?

2. 橢圓曲線為什麼不是橢圓?

ECC 漫畫小教室第 2 頁:比較橢圓與橢圓曲線,介紹 y 平方等於 x 三次方加 ax 加 b 以及非奇異條件
圖 2:名稱來自數學史,不是外形。ECC 使用的是三次方程式所描出的點集合。

看到「elliptic curve」,很多人會先畫一顆橢圓。這個直覺很自然,卻不是這裡的意思。橢圓曲線常寫成 y²=x³+ax+b;右邊有 x³,圖形可能像兩條彎曲的道路,也可能分成不同形狀,並不等於橢圓方程式。

名稱的歷史和橢圓積分有關。早期數學家研究橢圓弧長時遇到一類積分,後來和這些三次曲線建立了深刻關係;「elliptic」就這樣留在名字裡。先認得橢圓曲線是一組滿足特定方程式的點;曲線的名稱不代表它有橢圓的外形。

不是每一組 a、b 都能用

我們還要求曲線沒有尖點,也不能自己交叉。對 y²=x³+ax+b 而言,常用 4a³+27b²≠0 表示它是非奇異曲線。若條件失敗,某些點的切線或加法會失去良好定義,後面想建立的群結構也跟著壞掉。

本課選 y²=x³+2x+2。先把它當成實數平面上的曲線,讓眼睛看懂幾何;第 7、8 頁才把同一個方程式搬進 GF(17)。這個順序很重要:先有畫面,再把畫面翻譯成有限體計算。

3. 曲線上的「成員」有哪些?

ECC 漫畫小教室第 3 頁:檢查點是否在曲線上,說明上下對稱與無窮遠點 O
圖 3:曲線群不只包含看得見的座標點,還要加入一個特殊的無窮遠點 𝒪。

一個點 P=(x,y) 是不是曲線成員,不靠目測,要把座標代回方程式。以本課曲線為例,若左右兩邊相等,點就在曲線上;若不相等,再接近那條線也不算。

方程式左邊是 y²,所以 y 與 −y 平方後相同。只要 (x,y) 在曲線上,(x,−y) 通常也在;圖形因此對 x 軸上下對稱。這個「上下成對」稍後會變成取負點的規則。

為什麼要多放一個看不見的點?

數學家加入無窮遠點 𝒪,讓每次點加法都有答案。它扮演零的角色:P+𝒪=P。而 P 與它的上下鏡像 −P 相加時,答案就是 𝒪。

這聽起來像刻意補洞,其實是很有用的統一。普通整數有 0,讓加法能完整運作;曲線點也需要自己的單位元素。等我們開始反覆相加,𝒪 會成為一圈走完後回到的起點。

4. 兩個點怎麼相加?

ECC 漫畫小教室第 4 頁:以割線穿過 P、Q 和第三交點,再對 x 軸反射得到 P 加 Q
圖 4:畫線、找第三個交點、再反射,是記住點加法最直觀的方式。

在平面上選兩個不同點 P 與 Q。先畫一條穿過它們的直線;對非奇異三次曲線來說,這條線還會遇到第三個交點 R′。最後把 R′ 對 x 軸反射,得到 R,我們便定義 P+Q=R。

為什麼答案不是第三個交點本身?因為加上反射後,規則能和無窮遠點、負點一起形成乾淨的加法系統。像 P+(−P)=𝒪 這類關係,也會自然落進同一張圖。

把圖翻譯成算式

在實數上,先求割線斜率 λ=(y_Q−y_P)/(x_Q−x_P),再算 x_R=λ²−x_P−x_Q 與 y_R=λ(x_P−x_R)−y_P。公式看起來多了,但每一項都能在圖上找到:斜率描述那條線,新 x 找第三個交點的位置,新 y 完成反射。

此時我們仍在實數世界。把幾何規則記牢後,搬進有限體時就算看不見連續曲線,也知道每一步是在模仿哪個動作。

5. 為什麼這套加法值得信任?

ECC 漫畫小教室第 5 頁:整理閉合、單位元素、反元素與結合律四個群性質
圖 5:點加法不是只靠漂亮圖形;它讓曲線上的點形成一個可以穩定反覆運算的群。

密碼系統需要的不只是「算一次好像有答案」,而是能一次又一次組合,結果仍然可預測。曲線點加法有四個重要性質:兩點相加仍回到群裡;𝒪 不改變任何點;每個點都有能把它帶回 𝒪 的反元素;先加哪一組,最後結果相同。

最後一項叫結合律:(P+Q)+R=P+(Q+R)。它讓我們可以放心寫 P+Q+R,不必每次都標括號。點加法在這裡也可交換,所以 P+Q=Q+P;整組點形成 Abelian group。

群不是密碼,卻是密碼的舞台

群本身不會自動帶來安全性。它提供的是一套封閉、可組合的動作,讓「把同一個點加很多次」有清楚定義。安全性還要看群的大小、基點的階、曲線選擇,以及目前已知的反向演算法。

漫畫先花一整頁整理規則,讓後面的 kG 有所依據。這個符號表示用群的四個性質支撐起來的重複加法,並非突然多出一套運算。

6. 同一個點和自己相加怎麼辦?

ECC 漫畫小教室第 6 頁:用 P 點的切線代替割線,得到點倍加 2P,並說明不是座標乘二
圖 6:2P 是 P+P 的群運算結果,不是把 x、y 座標各乘以二。

若 P 與 Q 是同一點,兩點之間沒有唯一割線。我們仍能定義加法:讓 Q 沿著曲線靠近 P,兩點的割線在極限下變成 P 的切線。切線遇到第三點後照樣反射,就得到 2P。

在實數曲線上,倍加斜率改成 λ=(3x_P²+a)/(2y_P)。後面的座標公式仍沿用點加法。若 y_P=0,切線垂直,結果定義為 𝒪。

最容易犯的錯,是把 2P 看成 (2x_P,2y_P)。數字 2 在這裡數的是「做幾次點加法」,不是放大座標。這個差別正是下一個關鍵符號 kG 的基礎。

到目前為止,圖形都畫在連續的實數平面上。電腦真正使用 ECC 時,座標不會在無限精細的實數間飄動;我們需要一個有限、能精確計算的世界。

7. Galois Field 有限,為什麼還能做除法?

ECC 漫畫小教室第 7 頁:以 GF(17) 的 0 到 16、模 17 繞回與乘法反元素解釋有限體
圖 7:有限體不只是「算完取餘數」;每個非零元素都必須找得到乘法反元素。

GF(17) 只有 0,1,2,…,16 這 17 個元素。算到 17 以上就繞回來,所以 15+5=20 在這裡寫成 15+5≡3 (mod 17)。計算保留除以 17 的餘數,沒有四捨五入。

Galois Field 的中文常叫「伽羅瓦體」或「有限體」。關鍵字是「體」:加、減、乘,以及除以非零元素,都能在同一組元素裡完成。加減乘容易理解;真正特別的是除法。

除法藏在反元素裡

在 GF(17) 中,5 的乘法反元素是 7,因為 5×7=35≡1 (mod 17)。所以「除以 5」可以改寫成「乘以 7」。我們在 0 到 16 之間找一個能乘回 1 的元素,不把 5.0 按進計算機做普通小數除法。

17 是質數,因此每個非零元素都有這樣的反元素;0 仍然不能當除數。更一般的有限體也可以有 pⁿ 個元素,但本課只使用最容易手算的質數體 GF(p)。

這一步回答了點加法公式裡的「除」如何在有限世界完成:乘上分母的模反元素,全程不用浮點小數。

工程師延伸:GF(p) 只是有限體的一種

有限體的元素個數可以是 p^m,其中 p 是質數、m 是正整數。質數體 GF(p) 直接用整數對 p 取模;二元擴張體 GF(2^m) 則把元素看成 GF(2) 上的多項式,再對不可約多項式取模。兩者都能承載橢圓曲線,但元素運算與硬體實作取捨不同。

8. 搬進 GF(17) 後,曲線去哪裡了?

ECC 漫畫小教室第 8 頁:把 y 平方等於 x 三次方加 2x 加 2 搬入 GF(17),驗證 G 等於 5 逗號 1,並得到離散點群
圖 8:同一條方程式進入 GF(17) 後,不再是一條連續線,而是有限個通過方程式檢查的座標點。

現在把 y²=x³+2x+2 的 x、y 都限制在 0 到 16,而且每一步都取 mod 17。畫面不再有能一路描下去的曲線,只剩散落在格點上的答案。

拿 G=(5,1) 來檢查。左邊是 1²=1;右邊是 5³+2×5+2=137,而 137≡1 (mod 17)。兩邊餘數相同,所以 G 是群裡的點。

把所有 x 都試過,本課曲線共有 18 個普通座標點;再加上無窮遠點 𝒪,一共 19 個群元素。這個數字很小,因此稍後甚至能把整圈走完。

幾何沒有消失,只是不再負責量距離

我們仍用「割線、第三交點、反射」記住規則,但真正計算斜率時,分母要換成模反元素,算完 x、y 也都回到 GF(17)。幾何提供直覺,有限體算術才是精確的機器。

所以別在離散點圖上硬找一條連續直線。它是一張記憶圖,不是尺規作圖;答案要由有限體公式決定。

9. kG 為什麼叫純量乘法?

ECC 漫畫小教室第 9 頁:以 G 等於 5 逗號 1 計算 2G 等於 6 逗號 3,並沿群走到 19G 等於無窮遠點
圖 9:kG 表示把 G 用點加法累積 k 次;在本課的小群裡,走 19 步會回到 𝒪。

kG 的意思很樸素:G+G+⋯+G,一共有 k 個 G。k 是普通整數,G 是曲線點,所以這個動作叫 scalar multiplication。名稱裡雖然有 multiplication,底層搭起來的仍是點加法。

來手算一次倍加。對 G=(5,1),斜率是 λ≡(3×5²+2)×(2×1)⁻¹ (mod 17)。2⁻¹≡9,而 3×25+2=77≡9,因此 λ≡9×9≡13。再把斜率代回去:x_{2G}≡13²−5−5≡6,y_{2G}≡13(5−6)−1≡3,所以 2G=(6,3)。

再走一次普通點加法,把 2G=(6,3) 加上 G=(5,1)。斜率是 λ≡(1−3)/(5−6)≡2;接著 x_{3G}≡2²−6−5≡10、y_{3G}≡2(6−10)−3≡6,得到 3G=(10,6)。繼續走會有 4G=(3,1) 與 7G=(0,6)。每一步仍然落在曲線點群裡;到 19G 時回到 𝒪,我們便說 G 的階是 19。

電腦不會傻傻加 k 次

若 k 很大,逐次相加太慢。實作會用 double-and-add 一類方法:像二進位快速冪那樣,反覆倍加並在需要時加上 G。正向計算因此很有效率。

但請再次避開座標倍增的陷阱:kG 不等於 (kx_G,ky_G)。移動路線由曲線群規則決定,不是沿平面直線把座標放大。

工程師延伸:把玩具子群完整走一圈

對 E: y²=x³+2x+2 over GF(17),G=(5,1) 會生成一個階為 19 的群。序列從 2G=(6,3)、3G=(10,6)、4G=(3,1)、5G=(9,16)、6G=(16,13)、7G=(0,6) 一路走到 18G=(5,16)=−G,最後 19G=𝒪。這個極小質數階刻意把 cofactor 的支線從主課拿掉。

10. ECC 的單向迷宮難在哪裡?

ECC 漫畫小教室第 10 頁:比較已知 k 計算 Q 等於 kG 的正向道路,以及已知 G 與 Q 回推 k 的橢圓曲線離散對數難題
圖 10:知道 k 時,Q=kG 很好算;只看到 G 與 Q,要倒推 k 才是 ECC 想利用的難題。

在玩具曲線上,若 k=7,從 G=(5,1) 算到 Q=7G=(0,6) 很直接。反過來,只給你 G 與 Q,問「哪個 k 讓 Q=kG?」這就是橢圓曲線離散對數問題。

我們的群只有 19 個元素,從 1G 開始全部試一遍就能抓到 7,因此沒有任何安全性。真實系統選擇大得不可枚舉、結構也經過審查的曲線與子群,讓目前已知的通用攻擊需要不切實際的資源。NIST SP 800-186 列出的推薦曲線與使用條件,就是實務上不該自行發明參數的原因之一。[3]

「很難」是工程判斷,不是永恆保證

密碼學不會只說「看起來亂,所以安全」。曲線大小、基點的階、cofactor、點驗證與實作方式都會影響結果;研究者也持續尋找更好的演算法。所謂安全強度,是在已知攻擊、計算資源與威脅模型下的判斷。

RSA 的難題與整數分解相連,ECC 的難題與橢圓曲線離散對數相連。兩者都能做出單向感,卻不能因為都有公鑰、私鑰就混成同一套數學。

工程師延伸:選曲線本身就是安全邊界

只記「離散對數很難」還不夠。實際系統必須說清楚有限體、曲線、子群、基點、階、cofactor、編碼與點驗證規則,也要處理旁通道與無效點輸入。審查過的標準與函式庫,價值之一就是把這些決策固定下來,不讓應用程式臨時發明參數。

11. 私鑰為什麼是數字,公鑰卻是點?

ECC 漫畫小教室第 11 頁:先公開有限體、曲線、基點與階,再選私密整數 d 並計算公開點 Q 等於 dG
圖 11:共同舞台可以公開;真正要保護的是隨機選出的私密純量 d,而公鑰是正向計算得到的點 Q=dG。

一組 ECC 金鑰先需要大家同意數學舞台:使用哪個有限體、哪條曲線、哪個基點 G,以及 G 所在子群的階 n。這些 domain parameters 可以公開;知道舞台不等於知道誰的私鑰。

接著從 1 到 n−1 之間可靠地隨機選一個整數 d。這個 d 就是私鑰。教材選 d=7 只是為了接上前頁;真實私鑰若可預測、重複或亂數品質差,再漂亮的曲線也救不了它。

公鑰則由 Q=dG 算出。本例是 Q=7G=(0,6)。d 是數字,Q 是點,兩者的型態本來就不同。公開 Q 之後,別人可以看到 G 與 Q,卻不該能有效率地求回 d。

到這裡先停下來

一對金鑰本身還不是完整的通訊或簽章流程。真正使用時,還需要定義資料格式、點驗證、亂數或 nonce、雜湊、錯誤處理與身分信任等規則。這些內容值得各自上一堂課,硬塞進這 12 頁只會讓初學者把地基和應用混在一起。

所以本單元的終點很克制:你現在應該看得懂 d 如何變成 Q=dG,也知道為什麼反向不容易。至於這對金鑰如何參與合作或驗證,留給下一單元。

12. 把 ECC 的骨架重新走一遍

ECC 漫畫小教室第 12 頁:從 1985 年起源、實數曲線、有限體、點加法、純量乘法走到私鑰 d 與公鑰 Q
圖 12:ECC 的骨架只有四層:另一條公開金鑰道路、有限體上的曲線點群、重複點加法,以及數字私鑰與點公鑰。

故事從 1985 年開始。Miller 與 Koblitz 看見橢圓曲線點群也能提供公開方向容易、反向困難的運算。ECC 因此是另一個建立公開金鑰不對稱性的數學家族,不能用「更短的 RSA 公式」解釋。

先在實數上看 y²=x³+ax+b,用割線、第三交點與反射理解點加法;兩點重合時改用切線。接著把座標與四則運算搬入 GF(p),連續曲線變成有限個離散點,除法則變成乘上模反元素。

在點群裡反覆加 G,得到 G、2G、3G…kG。電腦可以用倍加與加法快速求出 Q=kG;只拿到 G 與 Q,要倒推 k,則落入橢圓曲線離散對數難題。

最後把 k 換成金鑰語言:私鑰是祕密整數 d,公鑰是曲線點 Q=dG。本課的 GF(17)、G=(5,1)、d=7 都只是透明教具;真實系統必須使用經過審查的曲線、參數與函式庫。

五點帶走

  1. 橢圓曲線不是橢圓;它是滿足三次方程式的一組點。
  2. 曲線點加法由割線、第三交點與反射建立,倍加則使用切線。
  3. GF(p) 是有限體,不只是取餘數;每個非零元素都有乘法反元素。
  4. kG 是重複點加法,不是把座標乘以 k;正向容易、反向離散對數困難。
  5. ECC 私鑰是祕密整數 d,公鑰是點 Q=dG;有了 key pair,還不等於已經有完整協定。

下一單元再回答:兩個人如何使用公開的曲線點,完成合作或驗證?

References

  1. Victor S. Miller, “Use of Elliptic Curves in Cryptography,” CRYPTO ’85:以橢圓曲線群建構密碼系統的早期獨立提案。
  2. Neal Koblitz, “Elliptic Curve Cryptosystems,” Mathematics of Computation 48(177), 1987:1985 年投稿的另一項獨立 ECC 提案與運算討論。
  3. NIST SP 800-186, Recommendations for Discrete Logarithm-based Cryptography: Elliptic Curve Domain Parameters:推薦曲線、domain parameters 與使用條件。
  4. NIST SP 800-57 Part 1 Rev. 5:金鑰管理建議與不同演算法/金鑰尺寸的安全強度對照。

沿 GF(17) 的點群走一圈

先設定 k=2,核對 2G=(6,3)。再設定 19,逐步查看點如何回到無窮遠點 𝒪。最後改成 20,預測結果再比對:群的週期讓你回到 G。

使用 y²=x³+2x+2、G=(5,1)、mod 17 的玩具群。每一步真的計算有限體點加法;19 個元素容易窮舉,不能保護金鑰。

學習指南

安全基礎

0 / 9

查看課程大綱 → · 進度只計入已發布課程

先備知識

  • 只需基本代數與餘數概念,不要求橢圓曲線密碼學基礎

我學會了什麼

  • 說明 ECC 為什麼是另一條公開金鑰路線,而不是縮小版 RSA
  • 用割線、反射與切線幾何解釋點加法與倍加
  • 說明 GF(p) 為什麼能對非零元素做除法
  • 在 GF(17) 的玩具曲線上驗算純量乘法
  • 辨認私密純量 d 與公開點 Q = dG,且不提前混入協定層

本課術語

查看術語字典 →

延伸閱讀

課後小測驗

1. 關於橢圓曲線,哪一個說法正確?
2. 𝒪 扮演什麼角色?
3. 為什麼在 GF(17) 裡可以除以 5?
4. 7G 代表什麼?
5. 在 Q = dG 裡,哪一個值是私鑰?

讀到這裡,辛苦了。

把概念帶走,比把術語背走更重要。

#ECC#橢圓曲線密碼學#Elliptic Curve#Galois Field#有限體#GF(p)#點加法#純量乘法#離散對數#公鑰#私鑰#密碼學#漫畫小教室