Security

為什麼 secp256k1 曲線的生成點 G 通常顯示在 (y,-x) 象限中?

  • May 16, 2022

secp256k1 曲線的生成點 G 通常顯示在曲線與 y 軸相交處的下方。在 x=0 時,y=sqrt(7) 和 -sqrt(7),它們都是小於 3 的小數,但 G 是一個極大的整數。

如果它落在 y 軸交叉點下方的曲線上,則 x 座標必須小於 2,y 座標小於 3(或小於

$$ 2,3 $$%P 以上)。是這種情況還是我有什麼根本性的錯誤?

secp256k1 曲線由方程y 2 = x 3 + 7定義,座標 X 和 Y 在場GF(p)上,p=2 256 - 2 32 - 977,而不是實數場。該欄位由以p為模的整數組成。在這個領域,沒有“小”或“大”的概念,沒有“小數”的概念,也沒有“正”或“負”的概念。例如,數字-1115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,908,834,671,662代表相同的欄位元素。一個小,一個大;一個是負數,

此外,模數效應適用於所有算術運算。對於加法、減法和乘法,它只是意味著在執行正常的加法、減法或乘法之後減少模p 。但這還不是全部。除法是乘法的逆運算,所以a/b mod p真的是在問“欄位中x的什麼值滿足a = bx mod p?” 這與現實中的除法非常不同。同樣,平方根是平方的逆運算,所以√a實際上是在問“欄位中**x的什麼值滿足a = x 2 mod p?”。

7在這個領域沒有平方根。也就是說,不存在滿足x 2 mod p = 7的整數**x。因此,在 secp256k1 曲線上沒有 X 座標為0的點。1 3 + 7 = 8 does have a square root (namely, 29,896,722,852,569,046,015,560,700,294,576,055,776,214,335,159,245,303,116,488,692,907,525,646,231,534 ) so in principle it would have been possible to choose G to have X coordinate 1. It’s not known how the X and Y coordinate of G were chosen however, but presumably選擇了一個 X 座標,其中x 3 + 7確實有一個平方根mod p,然後選擇這些平方根之一作為 Y 座標。

更多閱讀:

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