- A+
在签名算法中重用相同的k值会导致私钥的暴露!
如果在两个不同的交易中,在签名算法中使用相同的值k,则私钥可以被计算并暴露给世界!
重用k值的最常见原因是未正确初始化的随机数生成器。
为了避免这个漏洞,业界最佳实践不是用熵播种的随机数生成器生成k值,而是使用交易数据本身播种的确定性随机进程。这确保每个交易产生不同的k值。在互联网工程任务组(Internet Engineering Task Force)发布的RFC 6979中定义了 k 值的确定性初始化的行业标准算法。
如果你正在实现一种用于在比特币中签署交易的算法,则必须使用RFC 6979或类似的确定性随机算法来确保为每个交易生成不同的 k 值。