Ecdsa

為什麼 r 和 s 以 N 為模?(不是 P)

  • August 20, 2015

正如 Peter Wuille在這裡提到的,ECDSA 簽名值 (r, s) 是模數N(例如驗證 ECDSA 簽名,其中u1 = z * w % N),而比特幣中 ECDSA 的其餘功能似乎是模數**P**。

為什麼會這樣?

好問題!這裡有兩個概念。有限域 Fp,以及由 secp256k1 定義的 EC 群。

在 Fp 中,元素只是以 p 為模的數字。加法、減法、乘法和除法都是為這個有限域定義的。

然而,在 EC 組中,每個元素都是 Fp 中的一對元素,例如(f1, f2). 您可以對這些對進行加減運算以得到不同的對,但加減法與 Fp 元素的加減法幾乎沒有關係(從技術上講,它在後台使用了這些操作,但不是直接加法。那會很漂亮如果(f1, f2)+(g1, g2)剛剛給了你,那麼無聊(f1+g1, f2+g2))。

另請注意,由於這些對是數學組,而不是欄位,因此無法將兩對相乘。您之前可能已經看過語法k*G,但這只是將G自身k時間相加的簡寫,它k是一個整數,而不是 secp256k1 定義的 EC 組的另一個元素。

此外,如果您查看ECDSA 算法,您會發現這裡的最終元素是 (r, s),但僅僅因為它是一對並不意味著它是存在於 secp256k1 曲線上的一對!這是算法定義的一對整數 mod n(曲線階數),而不是曲線上的一個點。

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