一种抗丢失且云端可干预的密钥存储方法技术

技术编号:27776043 阅读:17 留言:0更新日期:2021-03-23 13:15
本发明专利技术涉及一种抗丢失且云端可干预的密钥存储方法,其特征在于,具体包括以下步骤:步骤1、主客户端生成自己的公私钥对<publickey,privatekey>;步骤2、主客户端将私钥privatekey拆分成Head和Body两部分,并将Head部分上传云端保存;云端则建立主客户端的公钥与私钥Head部分匹配关系的数据库;步骤3、主客户端将私钥的body部分拆分成N份,然后将N个影子shadow分发给N个辅助客户端,并规定只要有t个辅助客户端贡献出自己保存的影子shadow,才能够将Body恢复出来。本发明专利技术解决了云端存储密钥,云端责任和风险过大的问题,也解决了客户端存储密钥容易丢失的问题。

【技术实现步骤摘要】
一种抗丢失且云端可干预的密钥存储方法
本专利技术属于转账安全
,具体涉及一种抗丢失且云端可干预的密钥存储方法。
技术介绍
2008年中本聪发表了著名论文《Bitcoin:APeer-to-PeerElectronicCashSystem》,标志着区块链技术的正式诞生。为了支持DAPP应用,VitalikButerin于2013年发表了以太坊初版白皮书,引入了智能合约的概念。此后又诞生了EoS、NEO等著名公链平台,以及Fabric等联盟链平台。这些平台的发展也催生了DApp应用的繁荣。早期的DApp是直接在在公链上开发,后来逐渐采用重云端轻客户端的BaaS架构,云端将区块链技术封装成BaaS服务输出给各个DApp。在BaaS架构中存在一个密钥存储的问题。根据非对称密码学,可以随意生成一对<publickey,privatekey>密钥对。这个publickey在经过一些简单的转换之后就是地址,而Privatekey则是极端重要的,因为这个地址里面的数字资产全靠privatekey保护,如果privatekey被窃取则盗贼完全可以将这个地址中的资产转走,如果privatekey丢失,则这个地址中的资产也就再也无法使用相当于丢失了。所以privatekey的存储和保护是极端重要的一个问题。privatekey存储目前较为流行的有两种方式:一种是存储在云端,一种是存储在客户端。图1所示为私钥在云端存储的系统框架;如果采用该种方式,将每个DApp注册用户的priavetkey全部存储在云端。则需要在云端建设维护如表1所示的数据库:表1DApp用户id(即publickey)用户私钥(即privatekey)dapp1id1_1privatekey1_1dapp1id1_2privatekey1_2………………dapp2id2_1privatekey2_1dapp2id2_2privatekey2_2………………如图2所示的该方案的具体工作流程为:客户端需要执行转账操作时,需要先向云端请求私钥,当客户端接收到云端发还的私钥后,执行转账操作,私钥使用完毕,进行销毁。采用该种方法(云端存储私钥),云端是要承担极大的责任冒极大的风险的,因为这相当于将所有用户的所有资产都交给了云端保存,如果一旦出现云端被黑客攻破导致私钥泄露,会造成所有用户的财产损失,这个损失云端是承担不起的,因此不建议采用。如图3所示的私钥在客户端存储的系统框架,如果将私钥存储在客户端,的确可以降低云端的风险减轻云端的责任,但是一般客户都不是专业人士,在使用dapp的过程中是很容易因为粗心大意造成私钥的丢失或者损坏或者泄露,云端又没有这个私钥备份,一旦损坏丢失则用户的资产也就丢失了。而且还有个缺陷就是云端无法干预用户,在用户执行包括转账等所有操作时云端都无法进行任何干预。另外客户端将私钥作为常量长期保存也是不安全的,可能被黑客或其他势力窃走。因此,需要一种私钥的妥善存储方法,能够降低云端的风险,且能够做到对于普通用户来说,既不易丢失,又可以由云端进行干预。
技术实现思路
本专利技术为解决上述技术问题,提供了一种抗丢失且云端可干预的密钥存储方法。为了实现上述目的,本专利技术采取的技术方案如下:一种抗丢失且云端可干预的密钥存储方法,具体包括以下步骤:步骤1、主客户端利用密钥生成算法生成自己的公私钥对<publickey,privatekey>;步骤2、主客户端采用秘密拆分技术将私钥privatekey拆分成Head和Body两部分,并将Head部分上传云端保存;云端则建立主客户端的公钥与私钥Head部分匹配关系的数据库;步骤3、主客户端采用门限秘密共享技术将私钥的body部分拆分成N份影子shadow,分别为shadow1、shadow2、shadow3、······、shadowN-1、shadowN;然后将N个影子shadow分发给N个辅助客户端,并规定只要有t个辅助客户端贡献出自己保存的影子shadow,t≤N,才能够将Body恢复出来。进一步的,步骤1所述的密钥生成算法为椭圆曲线生成算法,具体如下:给定大素数p及其伽罗华域GF(p),定义在这个域上的椭圆曲线E:y2≡x3+ax+bmodp,并规定x∈GF(p),y∈GF(p),a∈GF(p),b∈GF(p),则上面会有离散的有限个点,加上无穷远点θ=(∞,∞),则构成集合在这个点的集合上定义椭圆曲线的点加运算+,则构成一个循环群,群的阶为n,n必须是一个大素数;点G是这个椭圆曲线上点循环群的生成元;是由素数n诱导出的缩剩余类循环乘群;则密钥生成算法为:步骤A、任意选取随机数则d就是私钥privatekey;步骤B、计算点Q=dG,则点Q即为公钥publickey。进一步的,步骤2所述秘密拆分技术能够将256bit的privatekey拆分成256bit的Head部分和256bit的Body部分,具体方法如下:步骤a、主客户端生成一个256bit的随机数,这个随机数就是Head部分;步骤b、主客户端根据Head和privatekey计算出Body;公式为:Body=privatekey^Head;^是按位异或运算。进一步的,步骤3中所述门限秘密共享技术,具体如下:步骤1)、首先主客户端根据自己的需要选定N和t,其中N表示他愿意给多少个辅助客户端分发影子shadow,t表示要想恢复出Body至少需要多少个影子shadow;步骤2)、然后选定大素数p及其伽罗华域GF(p),其上有相应的缩剩余类循环乘群任意选取随机数记M=Body,构造二元一次同余方程y=(at-1xt-1+at-2xt-2+······+a2x2+a1x1+M)modP,这个方程将决定二维平面上的一条曲线;步骤3)、在这条曲线上任意选取N个点(x1,y1),(x2,y2),······,(xN,yN),使得1≤i≤N;然后将at-1,at-2,······,a2,a1丢弃,同时将(x1,y1)作为第一份影子shadow1发给辅助客户端1,将(x2,y2)作为第二份影子shadow2发给辅助客户端2,······,将(xN,yN)作为第N份影子shadowN发给辅助客户端N,这样就完成了门限秘密共享算法,将秘密M分享给了N个辅助客户端。进一步的,还包括步骤4、主客户端需要使用私钥时,启动机制工作流程,恢复私钥即可。更进一步的,所述机制工作流程,具体包括如下步骤:步骤(1)、主客户端向他分发shadow的所有的N个辅助客户端广播,请求影子shadow;步本文档来自技高网
...

【技术保护点】
1.一种抗丢失且云端可干预的密钥存储方法,其特征在于,具体包括以下步骤:/n步骤1、主客户端利用密钥生成算法生成自己的公私钥对<publickey,privatekey>;/n步骤2、主客户端采用秘密拆分技术将私钥privatekey拆分成Head和Body两部分,并将Head部分上传云端保存;云端则建立主客户端的公钥与私钥Head部分匹配关系的数据库;/n步骤3、主客户端采用门限秘密共享技术将私钥的body部分拆分成N份影子shadow,分别为shadow1、shadow2、shadow3、······、shadowN-1、shadowN;然后将N个影子shadow分发给N个辅助客户端,并规定只要有t个辅助客户端贡献出自己保存的影子shadow,t≤N,才能够将Body恢复出来。/n

【技术特征摘要】
1.一种抗丢失且云端可干预的密钥存储方法,其特征在于,具体包括以下步骤:
步骤1、主客户端利用密钥生成算法生成自己的公私钥对<publickey,privatekey>;
步骤2、主客户端采用秘密拆分技术将私钥privatekey拆分成Head和Body两部分,并将Head部分上传云端保存;云端则建立主客户端的公钥与私钥Head部分匹配关系的数据库;
步骤3、主客户端采用门限秘密共享技术将私钥的body部分拆分成N份影子shadow,分别为shadow1、shadow2、shadow3、······、shadowN-1、shadowN;然后将N个影子shadow分发给N个辅助客户端,并规定只要有t个辅助客户端贡献出自己保存的影子shadow,t≤N,才能够将Body恢复出来。


2.根据权利要求1所述的一种抗丢失且云端可干预的密钥存储方法,其特征在于,步骤1所述的密钥生成算法为椭圆曲线生成算法,具体如下:
给定大素数p及其伽罗华域GF(p),定义在这个域上的椭圆曲线E:y2≡x3+ax+bmodp,并规定x∈GF(p),y∈GF(p),a∈GF(p),b∈GF(p),则上面会有离散的有限个点,加上无穷远点θ=(∞,∞),则构成集合

在这个点的集合上定义椭圆曲线的点加运算+,则构成一个循环群,群的阶为n,n必须是一个大素数;
点G是这个椭圆曲线上点循环群的生成元;是由素数n诱导出的缩剩余类循环乘群;
则密钥生成算法为:
步骤A、任意选取随机数则d就是私钥privatekey;
步骤B、计算点Q=dG,则点Q即为公钥publickey。


3.根据权利要求1所述的一种抗丢失且云端可干预的密钥存储方法,其特征在于,步骤2所述秘密拆分技术能够将256bit的privatekey拆分成256bit的Head部分和256bit的Body部分,具体方法如下:
步骤a、主客户端生成一个256bit的随机数,这个随机数就是Head部分;
步骤b、主客户端根据Head和privatekey计算出Body;公式为:Body=privatekey^Head;^是按位异或运算。


4.根据权利要求1所述的一种抗丢失且云端可干预的密钥存储方法,其特征在于,步骤3中所述门限秘密共享技术,具体如下:
步骤1)、首先主客户端根据自己的需要选定N和t,其中N表示他愿意给多少个辅助客户端分发影子shadow,t表示要想恢复出Body至少需要多少个影子shadow;
步骤2)、然后选定大素数p及其伽罗华域GF(p),其上有相应的缩剩余类循环乘群任意选取随机数记M=Body,构造二元一次同余方程y=(at-1xt-1+at-2xt-2+······+a2x2+a1x1+M...

【专利技术属性】
技术研发人员:周凡赵瑞郭世江
申请(专利权)人:云控蜂核北京科技有限公司
类型:发明
国别省市:北京;11

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

1