secp256k1

时间:2018-08-23 21:30:13

标签: security cryptography bitcoin elliptic-curve

为了确定地从现有密钥中生成新的secp256k1密钥,仅从旧密钥中获取sha256结果并将其用作熵以生成新的secp256k1密钥是否安全?使用此方法,只要具有oldPrivKeyHex,就可以获取派生密钥。

  const ec = new EC('secp256k1');
  const keyHash = shajs('sha256')
    .update(oldPrivKeyHex)
    .digest();
  var newKey = ec.genKeyPair({ entropy: keyHash });

lib src: https://github.com/indutny/elliptic

1 个答案:

答案 0 :(得分:0)

有可能,但我会做不同的事情。我会在其他键(甚至更好的是键派生函数或KDF的结果)上使用哈希,然后将其直接用于fromPrivate方法或将KeyPair构造函数与私钥作为参数。

原因是尚未精确指定随机数生成器。如果处理随机数生成时发生任何事情,那么您可能会突然得到一个不同的密钥。

KDF或哈希方法将已经确保熵被压缩,因此不再需要随机数生成器。我当然宁愿使用SHA-512或SHA-256(按此顺序),而不是使用提供少于256位的哈希算法。