Private-Key

比特幣橢圓曲線背後的數學原理是什麼?

  • February 26, 2021

我看過很多關於比特幣橢圓曲線背後數學的影片,但沒有一個顯示公鑰生成。他們只是定義了幾個步驟。我需要定義公鑰生成的橢圓曲線背後的完整數學。實際上,我想看到公鑰生成的視覺化,有人可以給我一個連結來解釋橢圓曲線背後的數學嗎?

我的理解是 k * n 乘以 G 等於公鑰,但我的問題保持不變。如果 kn 乘以 G(我們從點乘法和點加法中得到 G 的每個點),那麼每次 kG 乘法都會產生不同的值,那麼我們如何將它們結合起來得到公鑰?

在 ECDSA 中,私鑰是一個 256 位的標量數字。公鑰是secp256k1曲線上的一個橢圓曲線點。橢圓曲線是由一組點組成的阿貝爾群,這些點是從其基點G開始重複應用其組運算而產生的。分組操作是兩點相加。因此,從基點作為第一個元素開始,第二個元素是G+G,即 G 與自身相加。第三個元素是G+G+G等。列舉曲線的所有點需要 eons,因為組順序是115792089237316195423570985008687907852837564279074904382605163141518161494337

無論如何,要找到與私鑰k對應的公鑰Q,您必須從基點“走” k個生成器步驟。我們把這個橢圓曲線標量乘法寫成

Q = G+G+…+G [k-次] = kG

現在secp256k1被定義為

y² = x³ + 7 mod P

其中P

P = 2 256 - 2 32 - 2 9 - 2 8 - 2 7 - 2 6 - 2 4 - 1。

在 secp256k1 中,基點G(Gx,Gy),其中

G x = 55066263022277343669578718895168534326250603453777594175500187360389116729240

G y = 326705100207588169780830851305070431844712​​73380659243275938904335757337482424

兩點相加定義為

P + Q = R

(x p , y p ) + (x q , y q ) = (x r , y r )

結果是

x r = (y q - y p ) / (x q - x p ) - x p - x q

y r = ((y q - y p ) / (x q - x p )) × (x p - x r ) - y p

請注意,這些值僅限於 [mod P]。因此,使用您的私鑰k,您現在添加G k次。有一些推薦的捷徑,例如首先將k拆分為 2 的因子之和(例如 37 = 1 + 2 2 + 2 5),因為它會極大地加快您的計算速度。由於所涉及的數字很難手動跟踪,我建議使用軟體庫。


資料來源:

引用自:https://bitcoin.stackexchange.com/questions/102940