Private-Key
SECP256K1 私鑰的最小值
我一直在研究橢圓曲線密碼學,特別是用於比特幣和乙太坊的 SECP256K1 規範。所以我知道生成器點 G 是根據規範固定的,並且 256 位私鑰 (privKey) 是(理想情況下)真正從 1 到 1.157920892373162e+77 隨機選擇的。公鑰 (pubKey) 是從私鑰派生的,因此公鑰是 privKey*G,其中包括點加法和點倍增操作。
現在我似乎還沒有弄清楚的是,有一個固定的入口點 G,任何對手都需要從它開始嘗試從公鑰中破譯私鑰(假設不使用部分彩虹值表)。
那麼這是否意味著私鑰的最大值,即離計算最遠的步數(即 1.157920892373162e+77)是最安全的?
因此,低於某個門檻值的私鑰是否會被視為已洩露,例如,例如 0-1000 範圍內的私鑰?
我覺得我在這裡缺少一些東西,感謝您的幫助!
如果人們通常會更頻繁地選擇較小的整數作為私鑰而不是較大的整數,那麼攻擊者從較小的整數開始將是一個很好的策略。
然而,相反的情況也成立。如果人們更頻繁地選擇更大的數字,那麼攻擊者最好從最後開始並向後工作。
在實踐中,不存在這種偏見。只要人們使用適當的適當隨機數生成,每個整數都與其他整數一樣可能,攻擊者嘗試的順序無關緊要。無論如何,他平均需要經過一半的私鑰範圍。
所以不,沒有最低數量開始。是的,您選擇 1 到 1000 之間的數字的機會非常小。但同樣,您有相同的機會選擇 76136428194729137 和 76136428194730136 之間的數字。攻擊者沒有理由認為您更有可能選擇 1 之間的數字和 1000,那麼攻擊者為什麼要從頭開始呢?
此外,只要攻擊者擁有公鑰,就會存在更快(但仍然完全不可行)的算法來找到私鑰。這些算法本質上是以隨機順序執行的,所以沒關係。