Cryptography

比特幣使用的secp256k1曲線中的生成點G是如何選擇的?

  • April 2, 2022

比特幣中使用的 secp256k1 曲線中的生成點 G 是一個已知常數:

Gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
Gy = 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8

這一點是如何確定或選擇的?我知道它需要是一個大階的點(G 就是這種情況),但除此之外,它是隨機選擇的,還是以某種方式確定性地派生的?

我們不知道。曲線(和相應的secp256k1生成器)由 Certicom 的人員定義和標準化。我知道人們已經詢問過它的起源,但似乎那些參與其中的人已經不在了。

然而,有一個不尋常的屬性可能會暗示它是如何構造的。如果該點乘以 2 的乘法倒數(因此有效地撤消了加倍操作),則得到 X 座標為 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63 的點,這是一個不可思議的小數字(大小僅為 166 位)。也許生成器是通過對一些簡單的輸入進行散列,通過一個 160 位散列函式提供給它,以 0x3b 為前綴,將結果作為 X 座標構造點,然後將其加倍來構造的。

也就是說,據信生成器的選擇與僅使用一個生成器的方案的安全屬性無關(如 ECDSA、BIP340 Schnorr 簽名、ECDH 等)。

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