密钥导出方法技术

技术编号:38403434 阅读:9 留言:0更新日期:2023-08-07 11:14
一种导出分层密钥结构的密钥的计算机实现的方法,其中所述方法由第一方执行并且包括:生成目标子密钥的目标索引,其中所述目标索引是基于将至少一个目标消息输入第一哈希函数的第一结果生成的;以及,基于a)所述层次结构中的先前层级的父密钥、以及b)将至少i)所述父密钥和ii)所述目标索引输入第二哈希函数的第二结果,导出密钥结构的层次结构中的一个层级的所述目标子密钥。层级的所述目标子密钥。层级的所述目标子密钥。

【技术实现步骤摘要】
【国外来华专利技术】密钥导出方法


[0001]本公开涉及一种从外部状态导出分层密钥结构的子密钥(例如,私钥)的方法。例如,密钥可以用于对区块链事务进行签名和/或生成区块链地址。

技术介绍

[0002]在区块链技术环境中,“钱包应用程序”或仅仅是“钱包”通常是指一种应用程序,除了其他方面,该应用程序被配置为存储特定方拥有的密钥(即,公钥和/或私钥)的集合。
[0003]为了维护公共区块链的隐私,建议避免重复使用从私钥导出的公钥。这可能导致钱包成为随机生成的私钥的集合,需要安全存储并经常备份这些随机生成的私钥,以确保密钥不会丢失或被盗。通过避免重复使用密钥,这种类型的钱包会很快产生“密钥包”问题。
[0004]分层确定性(hierarchical deterministic,HD)钱包的专利技术是为了提高密钥存储和重新生成的效率,从而解决该密钥包问题。HD钱包在隐私方面带来了额外的好处,并且能够与不同的系统或子系统共享钱包的分支。这种类型的钱包可以从单个随机种子生成许多密钥,是目前最常用的区块链钱包类型。
[0005]钱包实现方式通常遵循比特币改进提案32(BIP32),该提案描述了如何从父密钥导出多个子密钥。一些实现方式还使用BIP44,该提案定义了钱包内各分支的用途。在一种HD钱包实现方式中,主私钥是从随机种子中导出的。该主私钥用于导出数代密钥(子代、孙代等)。
[0006]图4示出了HD钱包中出现的所得树状结构。该数据结构是一种强大的机制,用于管理钱包的安全性及其在恢复期间回收资金的能力。根据该实现方式,用户(即,钱包所有者)或观察者可以在没有对应私钥的情况下创建一系列公钥。由于需要存储的秘密较少,因此泄露的风险也较低。此外,如果密钥丢失,可以通过种子密钥恢复。
[0007]用于从父密钥导出子密钥的等式取决于所述父密钥的公钥或私钥是否会用作导出函数的输入;使用父私钥会生成“增强”子密钥,而使用父公钥会生成“普通”(即,非增强,符合BIP32术语)子密钥。
[0008]子密钥是使用子密钥导出(child key derivation,CKD)函数生成的。CKD函数的特定形式取决于特定的钱包实现方式,但子密钥通常基于父密钥和索引。索引使父密钥能够生成多个子密钥,即,一个父密钥可以有多个子密钥。通常,索引取序列中的值,父密钥的第一子密钥取序列中的第一个值(例如,0),父密钥的第二子密钥取序列中的下一个值(例如,1),依此类推。
[0009]应当注意的是,在撰写本文时,如果只知道父公钥和链码,则不可能导出增强子公钥。请求向普通子密钥支付意味着接收者可以只给出父公钥(和链码),而发送者可以通过导出多个普通(即,非增强)子密钥来发送支付。这样,资金接收者就不需要明确地将每个地址提供给发送者。这确保可以发送多个支付,同时最大限度地减少相同双方之间的通信,并增强在公共区块链上处理事务时的隐私。
[0010]普通子私钥sk
i
的等式为:
[0011]sk
i
=sk
par
+HMAC512
L
(c
par
,pk
par
||index),
ꢀꢀꢀ
(1)
[0012]增强子私钥sk

i
的等式为:
[0013]sk

i
=sk
par
+HMAC512
L
(c
par
,sk
par
||index

),
ꢀꢀꢀ
(2)
[0014]其中
[0015]·
sk
par
是父密钥的私钥,
[0016]·
pk
par
是父密钥的公钥,
[0017]·
HMAC512
L
(

)是使用SHA512哈希函数的HMAC函数结果的左侧32个字节,
[0018]·
c
par
是父密钥的链码,定义为c
par
=HMAC

SHA512
R
(c
grandparent
,P
grandparent
||index
par
),
[0019]·
索引是子密钥的计数器,每次计算新的子密钥时都会增加该计数器,其是从0开始的。按照惯例,对于普通密钥,0≤索引<2
31
;对于增强密钥,2
31
≤索引

<2
32


技术实现思路

[0020]可以使用一种称为“本福特钱包Benford

s wallet”的协议(请参见https://nchain.com/2019/10/22/benfords

wallet/和英国专利申请GB 1913667.0)来提高隐私性,其背后的理念是将事务的输出分割为多个输出,其中在这些输出的足够大的数据集中,值的分割将遵循本福特定律。所述钱包的目的是混淆一个支付的全部价值,以便隐藏相同数额的定期支付。然而,为了能够向审计者证明该支付的全部价值,本福特钱包描述了以这种方式接收支付的公钥的计算中包括的外部数据,例如费用清单(invoice)。这意味着必须存储与费用清单相关的数据,并且会重新引入密钥包问题。
[0021]因此,需要将外部数据结合到子密钥的导出中,而不会重新引入密钥包问题。
[0022]根据本文公开的一个方面,提供了一种导出分层密钥结构的密钥的计算机实现的方法,其中所述密钥结构包括多层级层次结构,所述多层级层次结构包括主层级以及一个或多个子层级,其中所述主层级包括主密钥,每个子层级包括一个或多个子密钥,给定层级的每个相应子密钥链接到先前层级的一个密钥,其中所述先前层级的所述一个密钥是所述相应子密钥的相应父密钥,并且其中所述方法由第一方执行并且包括:生成目标子密钥的目标索引,其中所述目标索引是基于将至少一个目标消息输入第一哈希函数的第一结果生成的;以及,基于如下内容导出所述层次结构中某一层级的所述目标子密钥:a)所述层次结构中的先前层级的父密钥、和b)第二结果,其中所述第二结果是将至少i)所述父密钥和ii)所述目标索引输入第二哈希函数的结果。
[0023]本申请的专利技术人已经意识到,将子密钥链接到外部数据是有利的。外部数据在下文中通常称为“消息”,但该消息不一定是一方或多方之间通信意义上的消息(例如,电子邮件),尽管并不排除这种情况。通常,消息可以是用户或机器生成的任何类型的数据项。消息用于生成索引,而索引又用于导出子密钥。也就是说,本专利技术的实施例改变了索引的性质——索引现在基于消息的哈希,而不是取序列中的下一个未使用的值。
[0024]现在,外部数据可以包括在子密钥的导出中,这样就可以向第三方(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种导出分层密钥结构的密钥的计算机实现的方法,其中所述密钥结构包括多层级层次结构,所述多层级层次结构包括主层级以及一个或多个子层级,其中所述主层级包括主密钥,每个子层级包括一个或多个子密钥,给定层级的每个相应子密钥链接到先前层级的一个密钥,其中所述先前层级的所述一个密钥是所述相应子密钥的相应父密钥,并且其中所述方法由第一方执行并且包括:生成目标子密钥的目标索引,其中所述目标索引是基于将至少一个目标消息输入第一哈希函数的第一结果生成的;以及基于a)所述层次结构中的先前层级的父密钥、以及b)将至少i)所述父密钥和ii)所述目标索引输入第二哈希函数的第二结果,导出所述层次结构中的一个层级的所述目标子密钥。2.根据权利要求1所述的方法,其中所述目标子密钥基于所述第二结果的第一部分。3.根据权利要求2所述的方法,所述方法包括:生成所述目标子密钥的目标链码,其中所述目标链码基于所述第二结果的第二部分。4.根据前述任一项权利要求所述的方法,其中所述目标子密钥是通过将iii)所述父密钥的相应链码输入所述第二哈希函数而导出的。5.根据前述任一项权利要求所述的方法,其中所述第二哈希函数是HMAC函数。6.根据前述任一项权利要求所述的方法,其中所述父密钥是私钥,并且其中所述目标子密钥是私钥。7.根据权利要求6所述的方法,其中输入至所述第二哈希函数的所述父密钥是对应于所述父密钥的公钥。8.根据权利要求6或7所述的方法,所述方法包括:生成对应于所述目标子密钥的目标公钥。9.根据权利要求1至5中任一项所述的方法,其中所述父密钥是公钥,其中所述目标子密钥是公钥,并且其中所述目标子密钥是基于与所述第二结果对应的公钥导出的。10.根据前述任一项权利要求所述的方法,所述方法包括以下各项中的任何一项或多项:生成包括锁定到所述目标子密钥的输出的区块链事务,并将所述区块链事务发送到区块链网络和/或第二方;基于所述目标子密钥计算目标区块链地址,并将所述目标区块链地址发送至所述第二方;和/或将所述目标子密钥发送至所述第二方,以生成所述目标区块链地址。11.根据权利要求10所述的方法,其中所述区块链包括区块链事务,所述区块链事务包括发送到所述目标区块链地址的输出,并且其中所述方法包括:导出一系列候选子密钥和对应候选区块链地址,其中每个候选子密钥是基于所述父密钥以及b)将至少i)所述父密钥和ii)相应候选索引输入第二哈希函数的第二结果而导出的,其中所述相应候选索引是所述索引可以取的一系列可能值中的相应值、并且对于每个候选子密钥来说是不同的;标识包含发送到所述候选区块链地址中的至少一个候选区块链地址的输出的区块链事务;以及
基于所述标识,确定所述目标子密钥是具有所述对应候选区块链地址的所述候选子密钥,所标识的区块链事务的所述输出锁定到所述对应候选区块链地址。12.根据权利要求10所述的方法,其中所述区块链包括区块链事务,所述区块链事务包括发送到所述目标区块链地址的输出,并且其中所述方法包括:使用所述目标区块链地址来标识所述区块链事务。13.根据前述任一项权利要求所述的方法,其中所述目标子密钥是公钥,并且其中所述方法包括:使用所述目标子密钥对消息进行加密;或者,其中所述目标子密钥是私钥,并且其中所述方法包括:使用所述目标子密钥对已经使用对应公钥加密的消息进行解密。14.根据前述任一项权利要求所述的方法,所述方法包括:通过至少将所述父密钥、和所述目标消息提供给第三方,来证明所述目标子密钥与所述消息之间的链接。15.根据前述任一项权利要求所述的方法,其中所述目标消息包括认证机构颁发的...

【专利技术属性】
技术研发人员:克洛伊
申请(专利权)人:区块链许可股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1