Public-Key

是否每個私鑰都有兩個公鑰(即 Y 和否定的 Y?)(secp256k1)

  • August 6, 2021

給定一個私鑰 Z 乘以生成點 G 得到一個公鑰 P 滿足 x^3 + 7 是一個正方形,是否可以肯定地說 (x,y) 是一個有效點/公鑰,或者 (x,曲線 p - y) 是一個有效的公鑰,因此恢復一個只有 X 座標的公鑰可以(假設 x^3 + 7 是一個正方形)是 Y 座標?

如果是這樣,如果 x^3 + 7 是平方的,那麼錢包會優先生成什麼?偶數或奇數?

我假設 Y 將是標準的,無論它是否是奇數,但我正在研究幾個假設 Y 是偶數的實現,並且如果 Y 最初是奇數,它將(曲線 P - Y)?

只是想知道我是否正確理解這一點。我是否缺少一個明顯的術語,或者我完全誤解了這一點?

給定一個私鑰 Z 乘以生成點 G 得到一個公鑰 P 滿足 x^3 + 7 是一個正方形,是否可以肯定地說 (x,y) 是一個有效點/公鑰,或者 (x,曲線 p - y) 是一個有效的公鑰,因此恢復一個只有 X 座標的公鑰可以(假設 x^3 + 7 是一個正方形)是 Y 座標?

當*(x, y) ∈ E* , 其中E = {(x,y) : x 2 = y 3 + 7 (mod p)} (secp256k1 曲線), 那麼確實*(x,-y (mod p)) = (x,py) ∈ E也是如此。這很容易通過將y’ = py*代入等式中看出。

然而,這並沒有說明相應的私鑰。實際上,如果P = (x,y) = qG其中G是生成器(或者換一種說法,q是對應於公鑰點P的私鑰),那麼它認為*-P = (x,-y mod p) = ((-q) mod n)G*。換句話說,否定一個點的 Y 座標對應於否定私鑰(模n,曲線的順序,它不同於p,定義曲線的座標域的大小)。

由於p是奇數,因此*(x,y)(x,py)的 Y 座標具有不同的奇偶性;一個是奇數,另一個是偶數。此外,一個將在[0..(p-1)/2]範圍內,另一個將在[(p+1)/2..p-1]*範圍內。這兩者之間有更多可能的決勝局;包括一個基於二次剩餘性的(我不會在這裡討論,因為它會讓我們走得太遠)。

就 ECDSA 而言,它們是不同的公鑰和私鑰。每個私鑰都有一個與之對應的公鑰,因為公鑰(通常)被編碼為 1 個字節(指示 Y 是偶數還是奇數)加上 32 個字節(對於完整的 X 座標)。

在 BIP340(即將在比特幣上啟動的橢圓曲線 Schnorr 簽名方案)以及 Taproot 軟分叉(BIP341)中,情況有所不同。在 BIP340 中,公鑰僅包含 32 字節的 X 座標,出於計算目的,使用隱式偶數 Y 座標。這意味著確實有兩個私鑰對應於這樣的“x-only”公鑰;qnq

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