基于秘密共享技术的区块链密钥托管和恢复方法、装置与流程

文档序号:13534140阅读:666来源:国知局
基于秘密共享技术的区块链密钥托管和恢复方法、装置与流程

本发明涉及区块链技术,特别涉及一种利用秘密共享技术来完善现有区块链技术上密钥管理的区块链密钥托管和恢复方法、装置。



背景技术:

区块链技术是起源于比特币的去中心化分布式账本技术,其通过技术背书而非中心化信用机构来促成交易,具有去中心化、无须中心信任、不可篡改和加密安全等特点。节点作为区块链系统的参与者,分别维护一份数据副本。节点通过共识算法,保持备份数据库数据的一致性。区块链系统中每一个账户由地址(公钥)和私钥组成。用户通过使用私钥来控制账户中的资产,私钥是唯一证明用户身份的数据,用户的核心资产只能通过私钥进行控制,只有经过私钥的签名才能实现交易的确认,所以关于区块链私钥的保护尤为重要。

若私钥以文件形式直接存放在用户硬盘中,此种方式中,私钥的存储和使用的安全性和便捷性都有所欠缺。首先是安全性,私钥容易被窃取,私钥一旦被窃取意味着所有权的窃取。国家gb/t25065-2010《信息安全技术公钥基础设施签名生成应用程序的安全要求》中明确规定:以文件证书形式存放是不安全的,更不能存放在硬、软盘中。其次可能被损坏,私钥一旦损坏就意味着区块链上所有权的丢失。因此必须有一定的措施和技术对密钥的存储和使用进行规范。

在现有的区块链系统中,密钥的存储和使用有四种主流方法:平台托管、本地客户端、电子钱包以及离线冷存储。而这四种方法中,只有平台托管方法能将用户的私钥在核心节点处进行备份,当用户密钥丢失或者死亡,需要委托核心节点找回私钥,从而提供密钥恢复服务。该方法虽然能解决找回私钥的需求,但是赋予了核心节点过大的权利,不能满足客户需求,被委托方实际能完全控制账户,甚至可以进行违背委托方意愿的操作。

综上所述,现有区块链系统中密钥的存储和使用存在以下问题:安全性低、用户密钥丢失不易恢复,或者由于解决找回私钥的需求而在存储过程中又带来新的安全问题。



技术实现要素:

本发明的目的在于提供一种基于秘密共享技术的区块链密钥托管和恢复方法,以解决现有技术中安全性低、用户密钥丢失不易恢复,或者由于解决找回私钥的需求而在存储过程中又带来新的安全问题。

一种基于秘密共享技术的区块链密钥托管和恢复方法,包括以下步骤:

(一)发布阶段

a1:用户将私钥sk1利用(t,n)秘密共享的方式进行分组,n为私钥拆分共享秘密的碎片数,t为恢复私钥的最小碎片数,2≤t≤n;

a2:使用包含用户识别信息在内的信息作为私钥保护的密钥,后利用所述密钥将私钥进行分组加密;

a3:将包含加密后密文在内的秘密串信息分散存储在区块链或者分别发送给可信任节点进行托管存储;

(二)密钥恢复阶段

当用户发现自己的私钥丢失时,发出密钥恢复请求,根据密钥的秘密串存储方式,选择从可信任节点或区块链上获取至少t个秘密串,并提取秘密串中的内容,解密并进行重组,从而恢复私钥。

一种基于秘密共享技术的区块链密钥托管和恢复的装置,其中,包括收发单元和处理单元,

处理单元:用于在托管阶段将私钥sk1利用(t,n)秘密共享的方式进行分组;

并用于使用包含用户识别信息在内的信息作为私钥保护的密钥,后利用所述密钥将私钥进行分组加密;

并用于在秘密恢复阶段,提取秘密串中的内容,解密并进行重组以恢复私钥;

收发单元:用于在托管阶段包含加密后密文在内的秘密串信息分散存储在区块链系统或者分别发送给可信任节点进行托管存储;用于在密钥恢复阶段,选择从可信任节点或区块链上获取至少t个秘密串。

本发明的核心在于将现有的秘密共享技术首次应用到区块链场景来实现私钥保管和恢复的安全性问题。首先,秘密共享技术的引入,使得用户可以将私钥的密文分组备份在不同的核心节点处,分散中心节点权限,阻止秘密过于集中,分散密钥被恢复的风险,并容忍入侵。而且,可以根据安全性的要求,设定合适的t值,来提高其可靠性。其次,私钥加密技术的引入,使得即使核心节点共谋,恢复出用户私钥的密文内容,也无法知道钥的真实内容,私钥的备份和恢复更加安全,保护用户权益。

附图说明

图1为秘密共享的一种原理图;

图2为一种基于秘密共享技术的区块链密钥托管和恢复方法流程序图;

图3为发布阶段的一种实现流程示例图;

图4为恢复阶段的一种实现流程示例图。

具体实施方式

本发明实施例所提供的技术方案适用于绝大部分区块链系统,区块链系统是一种无中心的网络系统,最常见的便是比特币网络系统。比特币系统由多个终端组成,在该系统中并不存在中心服务器或具有类似功能的设备,系统中的每一终端都是“平等”的,都可以构建、发送和接收交易信息。若一个终端欲加入比特币网络。终端在比特币系统中存在一个独一无二的地址。这个地址可以由用户自行输入一串字符后由比特币软件生成,终端之间进行比特币交易时,交易信息中便携带着交易目标的地址信息。根据交易目标的地址信息,比特币网络系统采取中继式转发模式传输交易信息,即当一个系统节点接收到一个交易信息后,根据交易信息中的交易目标的地址信息判断是否是自己的地址信息,若不是,则向邻近的系统节点广播该交易信息。比特币网络系统只是一种较为常见的区块链系统,除了比特币系统外,如以太坊等其它数字货币系统也都具有类似的原理和特点,应包括在本发明实例之中。

本发明的核心点在于:本发明利用秘密共享技术提供区块链系统中用户密钥恢复机制。考虑区块链系统中任一用户节点,其通过此密钥恢复机制能安全的恢复丢失的私钥。该机制分为两个阶段:发布阶段和密钥恢复阶段。在发布阶段中,用户在本地通过秘密分享的方式对自身私钥进行分组加密后,得到密文组,之后有两种可选方案:将密文组分散存储在区块链,或是对密文组分别进行数字签名后,将签名和对应的密文组分别发送给可信任节点。在密钥恢复阶段,当用户发现自己的私钥丢失时,发出密钥恢复请求,并根据发布阶段选择的托管方案,从可信任节点或是区块链上分别取得密文片段及相关参数,用户在本地进行解密,从而恢复密钥。此方法的加密密钥只有用户自己知道,并且秘密共享方法的引入分散了密钥托管节点的权利,单一的节点没办法恢复出完整的私钥密文,使得任何其余节点无法得到密文中用户的私钥,以此保障用户委托私钥的安全性。也就是说,本发明使用加密技术与秘密共享技术共同作用,用户私钥除了用户自身不会被其它方获知,保证私钥的备份和恢复更加安全。

本申请人先介绍秘密共享技术。共享是一种将秘密分割存储的密码技术,目的是阻止秘密过于集中,以达到分散风险和容忍入侵的目的,是信息安全和数据保密中的重要手段。其中的(t,n)秘密共享方式如图1所示,其主要流程如下描述:

1.秘密s被拆分为n个碎片的共享秘密

2.在碎片分发阶段,将次n个秘密碎片分别发送给n个参与者

3.在秘密重构阶段,利用任意t(2≤t≤n)个或更多个共享碎片就可以恢复秘密,而任何t-1或更少的共享碎片是不能得到关于秘密s的任何有用信息。

此秘密共享方式具有强健性,暴露一个碎片或多到t-1碎片都不会危及密钥,且少于t-1个用户不可能共谋得到密钥,同时若一个碎片被丢失或损坏,还可恢复密钥。根据t和n的选择,可权衡安全性和可靠性。若选择较大的t,能提供高安全性,但可靠性较低;而选择较小的t,能提供高可靠性,但相对来说,安全性就较低。

本发明的核心在于将现有的秘密共享技术首次应用到区块链场景来实现私钥保管和恢复的安全性问题。

请参阅图2,一种基于秘密共享技术的区块链密钥托管和恢复方法流程图。它包括发布阶段和密钥恢复阶段。

s10:发布阶段

s110:用户将私钥sk1利用(t,n)秘密共享的方式进行分组,n为私钥拆分共享秘密的碎片数,t为恢复私钥的最小碎片数,2≤t≤n;

s120:使用包含用户识别信息在内的信息作为私钥保护的密钥,后利用所述密钥将私钥进行分组加密;

s130:将包含加密后密文在内的秘密串信息分散存储在区块链或者分别发送给可信任节点进行托管存储;

s20:密钥恢复阶段

s210:当用户发现自己的私钥丢失时,发出密钥恢复请求,根据密钥的秘密串存储方式,选择从可信任节点或区块链上获取至少t个秘密串,并提取秘密串中的内容,解密并进行重组,从而恢复私钥。

本发明有以下优势:首先,用户不需要将私钥完全备份给任何核心或中心节点,可以防止其权限过大。其次,秘密共享技术的引入,使得用户可以将私钥的密文分组备份在不同的核心节点处,分散中心节点权限,阻止秘密过于集中,分散密钥被恢复的风险,并容忍入侵。最后,私钥加密技术的引入,使得即使核心节点共谋,恢复出用户私钥的密文内容,也无法知道私钥的真实内容,私钥的备份和恢复更加安全,保护用户权益。

实例1

密钥恢复方案分为发布阶段和密钥恢复阶段。考虑系统中任一普通用户节点身份,详细过程如下:

发布阶段:用户将自己分组加密后的私钥密文组及用户生物信息和/或口令形成的公钥信息等分散存储到区块链,以托管加密私钥,具体流程如图3:

1.用户生成椭圆曲线上的公私钥对(sk1,pk1)=(x,x·g),其中g为生成元。当然,公私钥对的生成也可以采用其它现有的算法。

2.将sk1进行(t,n)的秘密共享,分解为sk1→(sk11,sk12,.....,sk1n),其中1≤t≤n,即将sk1拆分为n个碎片的共享秘密,利用任意t个及t个以上的共享碎片就可以恢复sk1;

3.用户利用其生物特征b(可包括指纹、虹膜、掌纹掌脉、脸型等),使用现有的模糊提取器或其它现有的算法来生成参数公开参数p和秘密参数r,公式为:gen(b)→(p,r)

4.用户可选方案有两种,方案一为单独将秘密参数r的哈希值作为用户私钥保护的私钥,生成用户的私钥保护公私钥对:(sk2,pk2)=(h(r),h(r)·g);其中h()表示哈希值的计算函数;方案二为将r和接收用户输入的用户口令pw一起计算哈希值,作为用户私钥保护的私钥,生成用户的私钥保护的公私钥对:(sk2,pk2)=(h(r,pw),h(r,pw)·g)

5.使用pk2对由秘密共享后拆分后的sk1进行分组加密,得到密文组c,记为(c1,c2,....,cn),其中enc(pk2,sk1i)=ci。特殊的,当n=1时,加密方案为对sk1进行整体加密,是分组加密的特殊形式

6.用户将参数p,ci以及pk2进行分组打包,分为n个秘密串,记为((p,c1,pk2),(p,c2,pk2),....(p,cn,pk2))

7.用户将((p,c1,pk2),(p,c2,pk2),....(p,cn,pk2))同步到区块链上,并分散进行存储。用户发布私钥成功。

恢复阶段:当用户发现自己的私钥丢失时,发出密钥恢复请求,根据密钥的秘密串存储方式,选择从区块链上获取至少t个秘密串,并提取秘密串中的内容,在本地解密用户私钥,并进行重组,从而恢复私钥,具体流程如图4。

1.用户请求恢复私钥,向区块链发出私钥恢复请求;

2.在区块链上至少获取t个秘密串,从而得到(p,ci,pk2),其中ci对应得到的t个秘密串中任一密文碎片;

3.利用公开参数p以及用户生物指纹b′还原rep(p,b′)→r′。由模糊提取器的概念,若生物特征b′和原始生物特征b的distance(b,b′)<θ,则前后生成的r′=r,即模糊提取值相同;其中distance()为相似度距离函数,θ为一提前规定好的数值,使得前后两生物特征的相似度距离必须小于此数值。

4.用户根据之前是否选择加入口令pw验证的方案,若没有使用口令pw,则用户利用r′,还原私钥保护的私钥sk2,对密文ci进行解密,从而得到私钥sk1i;若使用口令pw,则用户利用r′以及pw,还原私钥保护的私钥sk2,对密文ci进行解密,得到私钥sk1i

5.根据得到的t个私钥sk1i,恢复sk1,密钥恢复成功。

实例2

发布阶段:用户将自己分组加密后的私钥密文组及用户生物信息和/或口令形成的公钥信息等存储到可信任节点,以托管加密私钥。可任何节点可以预先在区块链系统中进行定义。

1.用户生成椭圆曲线上的公私钥对(sk1,pk1)=(x,x·g),其中g为生成元。当然,公私钥对的生成也可以采用其它现有的算法。

2.将sk1进行(t,n)的秘密共享,分解为sk1→(sk11,sk12,.....,sk1n),其中1≤t≤n,即将sk1拆分为n个碎片的共享秘密,利用任意t个及t个以上的共享碎片就可以恢复sk1;

3.用户利用其生物特征b(可包括指纹、虹膜、掌纹掌脉、脸型等),使用现有的模糊提取器或其它现有的算法来生成参数公开参数p和秘密参数r,公式为:gen(b)→(p,r)

4.用户可选方案有两种,方案一为单独将秘密参数r的哈希值作为用户私钥保护的私钥,生成用户的私钥保护公私钥对:(sk2,pk2)=(h(r),h(r)·g);方案二为将r和接收用户输入的用户口令pw一起计算哈希值,作为用户私钥保护的私钥,生成用户的私钥保护的公私钥对:(sk2,pk2)=(h(r,pw),h(r,pw)·g)

5.使用pk2对由秘密共享后拆分后的sk1进行分组加密,得到密文组c,记为(c1,c2,....,cn),其中enc(pk2,sk1i)=ci。特殊的,当n=1时,加密方案为对sk1进行整体加密,是分组加密的特殊形式

6.用户将参数p,ci以及pk2进行分组打包,分为n个秘密串,记为((p,c1,pk2),(p,c2,pk2),....(p,cn,pk2))

7.用户利用私钥保护的私钥sk2对每一秘密串(p,ci,pk2)进行签名并将签名si和对应的(p,ci,pk2)随机或按照预先设定的分发算法分别发送给区块链上的可信任节点进行存储。

恢复阶段:当用户发现自己的私钥丢失时,发出密钥恢复请求,根据密钥的秘密串存储方式,选择从可信任节点获取t个秘密串,并提取秘密串中的内容,在本地解密用户私钥,并进行重组,从而恢复私钥。

1.用户请求恢复私钥,向区块链发出私钥恢复请求;

2.先通过用户私钥保护的公钥pk2进行数字签名的身份认证,身份认证通过,则得到秘密串,向可信任节点获取t个秘密串,获得t个秘密串(p,ci,pk2).其中ci对应得到的t个秘密串中的任一密文碎片;

3.利用公开参数p以及用户生物指纹b′还原rep(p,b′)→r′。由模糊提取器的概念,若生物特征b′和原始生物特征b的distance(b,b′)<θ,则前后生成的r′=r,即模糊提取值相同;

4.用户根据之前是否选择加入口令pw验证的方案,若没有使用口令pw,则用户利用r′,还原私钥保护的私钥sk2,对密文ci进行解密,从而得到私钥sk1i;若使用口令pw,则用户利用r′以及pw,还原私钥保护的私钥sk2,对密文ci进行解密,得到私钥sk1i

5.根据得到的t个私钥sk1i,恢复sk1,密钥恢复成功。

一种基于秘密共享技术的区块链密钥托管和恢复的装置,其中,包括收发单元和处理单元,

处理单元:用于在托管阶段将私钥sk1利用(t,n)秘密共享的方式进行分组;

并用于使用包含用户识别信息在内的信息作为私钥保护的密钥,后利用所述密钥将私钥进行分组加密;

并用于在秘密恢复阶段,提取秘密串中的内容,解密并进行重组以恢复私钥;

收发单元:用于在托管阶段包含加密后密文在内的秘密串信息分散存储在区块链系统或者分别发送给可信任节点进行托管存储;用于在密钥恢复阶段,选择从可信任节点或区块链上获取至少t个秘密串。

本发明是参照根据本发明实施例的方法、设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框架图中的每一个流程和/或方框、以及流程序图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算器、专用计算机、嵌入式处理机或其它可编程序数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程序数据处理设备的处理器执行的指令产生用于实现上述流程图一个流程或多个流程序指令的功能。

本发明虽然以较佳实施例公开如上,但其并不是用来限定权利要求,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1