Security
私鑰生成疑問
我讀到私鑰pk必須是 1 和n之間的任意數字,其中n幾乎是 10^77。由於pk的函式實際上是用作乘以生成點G的標量,為什麼它必須嚴格小於n?
我認為這是因為 secp256k 背後的數學:在一個 order -n組中,如果我乘以 xa 數字A(其中 x > n),則相當於將相同的數字A乘以 y,其中 y = x % n . 因此 y 將遠小於 x,從而使A更容易被發現。這個論點正確嗎?
沒錯,沒有嚴格要求私鑰嚴格小於組序。
但是,要求生成的公鑰是統一的,這意味著 (x % n) 必須均勻分佈在 1 和 n-1 之間(或至少不可區分地接近均勻)。實現這一點的最簡單方法是說必須直接在其邊界之間統一選擇私鑰。但是,您也可以說您在 1 到 1337*n-1 之間統一選擇一個私鑰(n 的倍數除外)。
詳細說明“難以區分接近均勻”:特別是對於 secp256k1 曲線(用於比特幣的簽名),曲線階非常接近 2^256,通常你不會生成一個 256 位的數字是 >= n。然而,並非所有橢圓曲線都是如此,並且偏向私鑰實際上會威脅到安全性。