- 公鑰密碼的基礎
- ECC 引入
- Principle
- 橢圓曲線加密演算法的安全性如何?
- Reference:
公鑰密碼的基礎
以下是公鑰密碼學一些關鍵點,
公鑰可以傳送給任何人,它是公開的。
必須保護好私鑰。如果中間方獲得私鑰,他們就能解密私信。
計算機可以使用公鑰快速加密訊息,使用私鑰快速解密訊息。如果沒有私鑰,計算機需要很長一段時間(數百萬年)才能暴力破解加密訊息。
公鑰密碼學原理:陷門函式
對於所有公鑰密碼學演算法來說,最關鍵的是它們都有自己獨特的陷門函式(Trapdoor Function)。陷門函式是一種只能單向計算,至少是隻在一個方向上易於計算的函式。(如果使用現代計算機從另一個方向暴力破解,需要數百萬年時間。)
非陷門函式的例子:A + B = C
已知 A 和 B,我就能計算出 C 。問題在於,在已知 B 和 C 的情況下,我也能計算出 A 。這就是非陷門函式。
陷門函式演示流程:
“I love Fox and Friends” + Public Key = “s80s1s9sadjds9s”
已知 “I love Fox and Friends” 和公鑰,我可以計算出 “s80s1s9sadjds9s” ,但是已知 “s80s1s9sadjds9s” 和公鑰,我無法計算出 “I love Fox and Friends” 。
在 RSA 演算法中,陷門函式取決於將一個巨大的數分解成質因數的難易程度。
公鑰:944,871,836,856,449,473
私鑰:961,748,941 和 982,451,653
在上述例子中,公鑰是一個很大的數,私鑰是公鑰的兩個質因數。這是一個很好的例子,因為將私鑰中的數相乘,很容易就能算出公鑰,但是你只有公鑰的話,需要很長時間才能使用計算機算出私鑰。
注:在真正的密碼學實踐中,私鑰的長度必須超過 200 位才能被視為是安全的。
ECC 引入
橢圓曲線公鑰密碼演算法簡稱ECC,ECC 與 RSA 的用途相同。
ECC 會生成一個公鑰和私鑰,允許雙方安全通訊。
不過,ECC 相比 RSA 有一大優勢。一個 256 位的 ECC 金鑰與一個 3072 位的 RSA 金鑰安全性相同。也就是說,在資源有限的系統(如智慧手機、嵌入式計算機和加密貨幣網路)中,ECC 金鑰需佔用的硬碟空間和頻寬是 RSA 金鑰的 10% 不到。
Principle
ECC 與 RSA 的主要區別在於陷門函式。
ECC 的陷門函式類似於數學版的檯球遊戲。我們先在曲線上找到一個特定的點,然後使用函式(通常稱為點函式)在曲線上找到一個新的點,接著重複使用點函式,在曲線上不斷跳躍,直到找到最後一個點為止。我們來看一下該演算法的具體步驟:
橢圓曲線公鑰密碼演算法原理:
從 A 點開始:A dot B = -C(從 A 點至 B 點畫一條直線,與曲線相交於 -C 點)-C 點經過 X 軸反射到曲線上的 C 點A dot C = -D (從 A 點至 C 點畫一條直線,與曲線相交於 -D 點)-D 點經過 X 軸反射到曲線上的 D 點A dot D = -E (在 A 點至 D 點畫一條直線,與曲線相交於 -E 點)-E 點經過 X 軸反射到曲線上的 E 點。
這是一個很棒的陷門函式,因為如果你知道起點(A)在哪裡,以及到達終點(E)需要經歷多少次跳躍,很容易就能找到終點。但是,如果你只知道起點 A 和終點 E 在哪裡,幾乎不可能知道中間經歷了幾次跳躍。
公鑰: 起點 A 、終點 E
私鑰: 從 A 點至 E 點需要經歷幾次跳躍
如果轉化為加密演算法?如何建立公鑰和私鑰?如何用它們來加密資料?
TODO。。。
橢圓曲線加密演算法的安全性如何?
雖然 RSA 加密演算法具有極高的安全性,但 ECC 可以說是更勝一籌。
理論上,量子計算機或可有效解決 RSA 所依賴的因數分解問題,從而破解 RSA。 這種情況是否會很快成真,是一個很有爭議的問題。 但我們可以肯定地說,考慮到 ECC 的複雜性,與 RSA 相比,它更能抵抗量子計算攻擊。
有多大的抵抗能力? 荷蘭數學家 Arjen Lenstra 在與他人合著的一篇研究論文中,將破解加密演算法與燒水進行比較。 基本概念是計算出破解一個特定的加密演算法需要多少能量,然後計算這些能量可以煮沸多少水。 透過這樣的類比,破解一個 228 位 RSA 金鑰所需的能量比煮沸一茶匙水所需的能量還少,但破解一個 228 位 ECC 金鑰所消耗的能量可以煮沸地球上所有的水。 要達到相同的安全級別,RSA 金鑰的長度需要達到 2380 位。
Reference:
https://www.panewslab.com/zh/articledetails/D55038644.html
https://www.keepersecurity.com/blog/zh-hans/2023/06/07/what-is-elliptic-curve-cryptography/