Public-Key

secp256k1 中總帳戶的加密限制

  • October 30, 2020

考慮到生日攻擊和所有這些,使用 256 位橢圓曲線密碼學,讓我們以比特幣使用的 secp256k1 為例,安全賬戶的最大數量是多少?它不是 $ 2^{256} $ 從那時起,每當您生成一個隨機數時,您都會找到一個使用過的帳戶。

生日悖論等等,secp256k1 實際支持的帳戶數量上限是多少?

上限實際上取決於您的風險。生日攻擊的 50% 機率是一個太大的風險,不能依賴。讓我們看一些數字,假設總點數是 $ 2^{256} $ 這不是很接近*。假設密鑰是隨機建構的,就像拋硬幣一樣。

我們將使用這樣一個事實,即均勻隨機選擇的碰撞機率 $ k $ 集合中的元素 $ n $ 元素可以近似為 $ (2^{k})^2/2^{n}/2=2^{2k-n-1} $

  • 考慮 $ 2^{100} $ 有碰撞機率的私鑰

$$ (2^{100})^2/2^{256}/2 = 2^{200 - 256 - 1} = 1/2^{57}. $$不會發生 $ \times 2^{-40} $ 執行攻擊的機率仍然很低。

  • 考慮 $ 2^{90} $ 有碰撞機率的私鑰

$$ (2^{90})^2/2^{256}/2 = 2^{180 - 256 - 1} = 1/2^{77}. $$不會發生 $ \times 2^{-20} $

  • 考慮 $ 2^{80} $ 有碰撞機率的私鑰

$$ (2^{80})^2/2^{256}/2 = 2^{160 - 256 - 1} = 1/2^{97}. $$不會發生

  • 考慮 $ 2^{70} $ 有碰撞機率的私鑰

$$ (2^{70})^2/2^{256}/2 = 2^{140 - 256 - 1} = 1/2^{117}. $$不會發生 $ \times 2^{20} $

  • 考慮 $ 2^{60} $ 有碰撞機率的私鑰

$$ (2^{60})^2/2^{256}/2 = 2^{120 - 256 - 1} = 1/2^{137}. $$不會發生 $ \times 2^{40} $

  • 考慮 $ 2^{50} $ 有碰撞機率的私鑰

$$ (2^{50})^2/2^{256}/2 = 2^{100 - 256 - 1} = 1/2^{157}. $$不會發生 $ \times 2^{60} $

  • 考慮 $ 2^{40} $ 有碰撞機率的私鑰

$$ (2^{40})^2/2^{256}/2 = 2^{80 - 256 - 1} = 1/2^{177}. $$不會發生 $ \times 2^{80} $

其實沒必要看低於 $ 2^{70} $ 因為發生的可能性已經很小了。當它在附近 $ 1/2^{100} $ 我們只是說它不會發生。同理,不用看 $ 2^{80} $ 因為通常情況下,不需要那麼多使用者。這也表明,如果一個實體試圖隨機猜測私鑰,將會失敗。

在一個實體決定攻擊所有實體的情況下 $ t $ 目標比找到第一個目標的成本 $ t $ target並不比 DLOG 便宜

*基點的順序為 =FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

引用自:https://crypto.stackexchange.com/questions/85861