阅读字号
256 位 ECDSA 以及比特币密钥的安全性是 128 位,这意味着什么?我的意思是,如果我在椭圆曲线上有大约 2^256 个可能的点(因此可能是公钥),因此也有私钥,那么是否需要大约 2^256 次计算才能找到公钥(或者如果提前获得密钥,则需要稍微少一些)?由此看来,安全性大约是 256 位?
如果穷举搜索是确定给定公钥的私钥的唯一方法,那么您是对的。然而事实并非如此。 现有的算法可以通过大约 √n 次操作来完成此操作(如果曲线上的点数为 n)。它们也很实用(除了需要大量的计算之外):例如,它们不需要太多内存。具体来说,Pollard 的 rho 或袋鼠算法的变体可以是用于求解椭圆曲线上的离散对数。
如果安全性是 128 位,那么为什么我们还要有 512 位种子呢?我的意思是,为什么不是 128 位,因为额外的位并不能提高安全性?
保守安全。种子的熵小于 128 位肯定会对安全性产生不利影响,而超过 256 位则不太可能有帮助。 BIP32 是现在几乎普遍用于密钥派生的标准,它使用 256 位密钥 + 256 位附加“链码”作为主密钥。回想起来,这可能有些过头了(免责声明:我是 BIP32 的作者,我当然对密码学了解不多)那时和现在一样),但它也相对便宜,因为人类很少观察到主钥匙。 虽然单个密钥的安全性确实永远不会超过 2128,但对于种子来说却并非如此。拥有更多熵的种子确实意味着,即使有一台可以执行 2128 次计算的机器,也无法仅计算钱包中的所有密钥。这是使主密钥和种子变得更大的直觉,但是再说一遍,这太过分了。