什麼是ECDSA?它在比特幣中如何運作?


ECDSA 是橢圓曲線數字簽名算法的縮寫。它是一種基於橢圓曲線的加密貨幣學方案,也稱為Cryptographic Elliptical Curves或ECC(英文縮寫)。

ECDSA 算法使用橢圓曲線和有限域作為對信息進行簽名的函數,以便第三方可以驗證其真實性。簽名者始終保持作為簽名創建者的排他性。

在比特幣的情況下,此簽名用於通過證明它是唯一可以創建該簽名的人來簽署BTC 的所有權轉讓。

等等

但是在我們詳細查看所有這些ECDSA 之前,有必要了解一下所有這些橢圓曲線是什麼。

誰創建了ECC?什麼時候創建的?

基於橢圓曲線的加密貨幣學概念是由數學家Neil Koblitz 和Victor S. Miller 於1985 年獨立提出的。

然而,直到2000 年代初,這個概念才被加密貨幣用於實際問題,當時互聯網提供商發現了它的用途。

ECC 如何用於加密貨幣?

加密貨幣學是加密貨幣數字簽名方案的基礎,它允許以去中心化的方式驗證兩方之間的交易。

以前使用了一種叫做RSA的加密貨幣方法,但是ECC比它有很大的優勢。

首先,ECC 使用的密鑰比RSA 的密鑰小得多。並且始終提供相同級別的安全性。

另一方面,雖然RSA 加密貨幣在互聯網上被廣泛使用,但ECC 的效率更高,這就是為什麼它被選擇用於加密貨幣,尤其是比特幣。

誰創建了ECDSA,何時創建?

ECDSA 的概念是在ECC 之後很久才引入的,特別是在1992 年。它的創造者是一位加拿大數學家和加密貨幣學家,是Scott Vanstone。

ECDSA 在比特幣中的目標是什麼?

我們知道,比特幣推動的技術重新詮釋了產權的概念。

當我們在更傳統的意義上談論這一點時,即擁有一所房子、一筆錢等,我們的意思是親自在物理上和合法地存儲該物品,或將其轉移到信託結構,例如銀行,以為我們做。

就比特幣而言,一切都不同了。BTC 不存儲在中心位置或本地,也沒有充當其託管人的結構。

比特幣互補地存在於區塊鏈中,存在於分佈在整個網絡中並存儲在相互連接的有序調用節點中的副本中。

因此,擁有比特幣意味著我們有能力通過在區塊鏈中創建一個交易記錄,將它們的控制權轉移給另一個用戶。

這要歸功於ECDSA 和密鑰對、公鑰和私鑰。

ECDSA 由兩個獨立的程序組成,一個用於簽名,另一個用於驗證。由於每個過程都由一個算法組成,該算法由幾個算術運算組成。

在簽名算法中我們使用私鑰,而在驗證算法中我們使用公鑰。

什麼是橢圓曲線?

代數中的橢圓曲線由具有以下格式的方程表示:

y² = x³ + ax + b

a = 0 和b = 7(在比特幣使用的版本中),它的形式如下:

比特幣橢圓曲線的一個方面

橢圓曲線很有用,因為它們有幾個屬性。

首先,橢圓曲線是群。組在數學中被定義,如果他們有:

閉包:如果a和b在G組,那麼a+b也在G組
結合性:(a + b) + c = a + (b + c)
標識元素:a + 0 = 0 + a = a
對於每個a 都有一個b 使得a + b = 0
僅對於阿貝爾群,交易所性:a + b = b + a

另一方面,橢圓曲線有自己特定的群定律:

單位元素是無窮遠處的點,0
點P 的倒數關於x 軸對稱
加法定義為:給定三個對齊且不同於零、P、Q 和R 的點,我們有P + Q + R = 0。這三個點的順序無關緊要,所以P + (Q + R) = 0, (P + Q) + R = 0, (P + R) + Q = 0,依此類推。這使我們能夠證明橢圓曲線是可交易所和結合的。

橢圓曲線的屬性示例

上面的方程也給了我們一個方程來添加兩個點併計算第三個點。正如我們已經說過的,我們知道當一條線通過曲線上的兩個點時,它將通過第三個點。我們知道:

P + Q + R = 0

然後

P + Q = R

我們知道-R 是在x 軸上反射的點R 的倒數。

橢圓曲線上的反射點示例

在P 與曲線相切的情況下,則只有2 個截點。

橢圓曲線中與曲線相切的點的示例

由於P 與曲線相切,因此我們有P = Q,因此P + P = -R,從上面的等式中獲得。或者什麼是2P = -R 時的水。這被稱為橢圓曲線的點加倍。

什麼是有限域?

有限域,顧名思義,是一組有限數。實數是無限數的群,而由(3, 96, 235, 1,891, 15) 組成的群是有限群。

一組更有趣和有用的數字是模p 的整數集,其中p 是素數。模數就像時鐘上的加法或其餘部分的數學。

例如,模12 就像在時鐘周圍相加,因此模12 = 5 時1 + 4,但模12 = 4 時1 + 15。其原因可在時鐘中找到。1 + 15 = 16 並且16 是12 之後的4 小時。或者我們可以用餘數在數學上看到它。16/12 = 1,餘數為4。

有限域如何與曲線結合?

當我們結合有限域和橢圓曲線時,我們就獲得了加密貨幣學的魔力。因此橢圓曲線的方程轉換如下:

橢圓曲線結合有限域

基本上,我們將P 的模數添加到我們之前看到的等式的末尾。

如果我們在橢圓曲線上畫一個有限域,我們會得到以下例子:

橢圓曲線上的有限場圖

在這裡我們可以看到點是按照某條線對稱的,也就是說我們仍然可以進行點求和P + Q = -R,這裡我們畫一條連接P、Q和R的線,並在x上反射R軸找到-R。

在有限域中,一條線看起來與我們在無限域中看到的非常不同。這就像那些我們穿過屏幕頂部回到底部的視頻遊戲。

這是因為當數字超過有限域的模數時,它返回並繼續到模數的其餘部分的值。

下面是一張圖,其中P、Q 和R 通過一條線連接。

連接點的無限線示例

由於橢圓曲線上的有限域仍然是一個群,我們保留了我們之前看到的一個數學群的所有屬性。

標量乘法和順序

如果我們還記得我們之前講過的內容,我們知道通過橢圓曲線上兩點的直線也將通過第三個點,計算該點的方程為P + Q = -R(點相加)。

此外,如果P 與橢圓曲線相切,則P = Q 且P + P = -R 或2P = -R(點數加倍)。

點的添加和點的重複允許我們定義橢圓曲線的標量乘法,使得xP = R 其中x 是一個轉義點,P 是曲線的切點,R 是將P 加到相同的點上得到的點x 次。例如:

11P = R
P + 10P = R
P + 2(5P) = R
P + 2(P + 4P) = R
P + 2(P + 2(2P)) = R

在這個例子中,我們取點P 並添加點P 得到新的點F。

P + 2(P + (2F)) = R

我們取點F 並添加F 以獲得新的點C。

P + 2(P + C) = R

將P 和C 相加得到D 點。

P + 2(D) = R

將D 點與D 點相加得到E 點。

P + E = R

因此我們將點P 和點E 相加得到R。這樣我們就可以看到點的相加和點的重複如何讓我們計算xP = R 的標量乘法。

有限域上的橢圓曲線具有相同的性質。我們可以不斷地將P 加到自身上,從而創建標量乘法。

回到我們用於模運算的時鐘示例。一遍又一遍地向自身添加P 類似於在時鐘上移動P。最後,我們將回到起點,不斷地通過相同的點。

我們看到一個使用等式的例子:

y² = x³ + ax + b (mod 97)

如果我們選擇點P = (3, 6),我們可以通過P 的標量乘法來了解我們將P 加到自身上多少次才能回到點(3, 6)。

橢圓曲線中標量乘法的示例

我們可以看到,對於P = (3,6),需要5P 才能返回到同一點(3,6)。這意味著P = (3,6) 有效,6P、11P、16P 等也有效。

從前面的例子中理解的有趣點是計算由點P 生成的子群的階。 P 的階被定義為最小正整數n 使得nP = 0。所以在我們的例子中,子群的階基於點P 是5,這意味著5P = 0。點P 沒有更小的正標量乘數導致點0。

將所有這些放在一起,我們的示例定義了以下內容:

有限域的第一個模塊= 97
上面描述的橢圓曲線,其中a = 2 和b = 3
一個隨機點P = (3,6),稱為基點
子群的階(基於P的循環點集)=5
ECDSA 如何處理比特幣?

對於比特幣,我們有以下參數:

質數模數:2²⁵⁶ – 2³² – 2⁹ – 2⁸ – 2⁷ – 2⁶ – 2⁴ – 1 → 是一個非常大的數,大致相當於Cosmos中的所有Atom。它也以十六進製表示為:FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
橢圓曲線,其中a = 0 且b = 7
Punto base P en 十六進制: 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 504B4B4B8D7FFC8504B4B7FDC80000000000000000000000000000000000000000000000000000000000000029BFCDB 2DCE28D9 59F2815B 16F81798
十六進制順序:FFFFFFFF FFFFFFFF FFFFFFFF BAAEDCE6 AF48A03B BFD25E8C D0364141

這些數字不是隨機選擇的。這些是目前由高效加密貨幣學標準組織(SEC) 組織提出的加密貨幣標準,比特幣使用的是secp256k1 標準。

因此,比特幣私鑰只是在1 和上面的順序之間選擇的一個隨機數。從此你可以推導出公鑰,這一切都歸功於以下公式:

公鑰=私鑰*基點

這只是在基點P 與你的私鑰相乘處執行標量乘法,與我們在上面描述的標量乘法相同,xP = R。

在上面的示例中,我們展示了x = 11 並使用點的加倍和添加點來計算11P = R。

這個例子和比特幣的區別在於,比特幣使用了非常大的十六進制數,但是使用點複製和點求和的過程是一樣的。

一旦我們選擇了私鑰並將其乘以基點P,我們就會在有限域/橢圓曲線中得到一個新點(x, y)。那是我們的公鑰。

使用私鑰並乘以基點得到公鑰在計算上很容易,但從公鑰開始反向計算私鑰在計算上很困難。等式是一種方式。

ECDSA 的缺點

ECDSA 是當前簽署比特幣交易的方法,本身不支持多重簽名,因此必須使用Pay-to-Script-Hash (P2SH) 智能合約來實現。

這個看似隨機的數字決定了硬幣的所有權。在消費時,持有者同時打開腳本和解密哈希的密鑰。

然後,每個用戶都可以使用原始哈希來驗證腳本的真實性並滿足交易條件。

但是,同時,用戶必須披露交易的所有條件,包括尚未滿足的條件。例如,如果我們和我們的朋友簽署交易,或者只有我們的朋友在一周結束時簽署,或者只有我們這樣做,則可以使用硬幣。

這種模式的第一個問題是缺乏隱私。對於P2SH 交易,地址必須以數字3 開頭。這使鏈分析師有機會識別網絡上的所有P2SH 交易並確定多重簽名中涉及的地址。

第二個問題是必須處理的大量數據,因為P2SH 需要知道多重簽名中所有參與者的公鑰。

Schnorr 簽名方案和Taproot 技術解決了這些問題。

資訊來源:由0x資訊編譯自CRIPTOTARIO。版權歸作者Criptotario所有,未經許可,不得轉載

Total
0
Shares
Related Posts