首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于硬键推导和正规键推导的问题

关于硬键推导和正规键推导的问题
EN

Cryptography用户
提问于 2022-03-06 09:48:57
回答 1查看 129关注 0票数 1

我正在读安德烈亚斯的“精通比特币”一书第五章,以及这本细线比普-32。以下是我对这两个程序的一些理解:

k:私钥// K:公钥// i索引// c链码// H HMAC散列结果// Hleft哈希结果的前32位。椭圆曲线的// n阶数。椭圆曲线的// G起点

Normal密钥派生

案例1: parPrivkey -> childPrivkey (并由此而来,childPubkey)

代码语言:javascript
复制
H = HMAC(cpar, Kpar || ichild) 
=> kchild = (kpar + Hleft) mod n
=> Kchild = G*kchild = G*[ (kpar + Hleft) mod n)]

案例2: parPubkey -> childPubkey

代码语言:javascript
复制
H = HMAC(cpar, Kpar || ichild)
=> Kchild = G*Hleft + Kpar

Hardened密钥派生`

案例3: parPrivkey -> childPrivkey (并来自该childPubkey)

代码语言:javascript
复制
H = HMAC(cpar, kpar || ichild)
=> kchild = (kpar + Hleft) mod n
=> Kchild = G*kchild = G*[ (kpar + Hleft) mod n]

考虑到这三种方法,我有点困惑:

  1. 情况1和例2之间的生成方程有很细微的差别,所以我们只需把kchild = (kpar + Hleft) mod n乘以G就可以得到第二种情况。然而,由于最后有一个因子mod n,所以我无法判断案例1的Kchild是否与例2的D17有关。如果没有,那么生成公钥而不能使用发送给它的资金又有什么意义呢?
  2. 这与上面的问题无关,而是关于主私钥的生成:我已经读过,在获得根种子之后,种子被放入HMAC- the 512函数中,得到一个512位的散列,其中的前32个字节充当主私钥。所以我的问题是,既然HMAC函数接受了两个输入,即keytext,那么在这种情况下“关键”是什么?如果没有“键”,那么为什么不使用SHA-512哈希函数呢?

先谢谢你。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-03-06 10:41:00

尽管如此,由于在最后有一个因子,我不能告诉例1的Kchild是否会与例2的关联。

是的,案例1中的子私钥是在案例2中导出的公钥的秘密密钥。n是生成点G的顺序,因此它不会影响密钥的正确性。

由于HMAC函数接受两个输入,这是键和文本,什么是“键”在这种情况下?如果没有“键”,那么为什么不使用SHA-512哈希函数呢?

在种子的特定情况下,关键是“比特币种子”,并用作一种域分离--一种专门用于此目的的唯一字符串。

在BIP 32中HMAC的其他用途中,关键是“链码”,而文本/数据就像您在问题中写的那样。这个链码确保子键不仅是从父键派生出来的,而且还使用一些额外的熵,这些熵必须知道才能导出子键。所以你可以选择给出链码,如果你想让人们能够得到子密钥,或保密,使他们不能。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/98972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档