一种区块链密钥管理方法、多人共同签名方法及电子装置与流程

文档序号:22130395发布日期:2020-09-08 12:47阅读:288来源:国知局
一种区块链密钥管理方法、多人共同签名方法及电子装置与流程

本发明涉及信息安全技术和数据的加密管理方法技术领域,尤其涉及一种区块链密钥管理方法、多人共同签名方法及电子装置。



背景技术:

区块链最初是在比特币中引用的,它是比特币的核心支持技术,具有去中心化,不可否认和可追踪性的特征。这确保了比特币等货币可以在不受信任的网络中进行价值转移。同时通过设计基于区块链的各种智能合约,人们可以使区块链适用于医疗,金融技术等各个领域。随着应用场景数量的增加,作为一种开发技术的区块链涉及多个交易的操作。这使得区块链的应用结构复杂且规模巨大。不仅如此,这使区块链面临更多问题。例如智能合约漏洞和密钥安全问题。用户密钥(包括公私钥和文件加密密钥等)是区块链的核心,其安全性问题是公众最关注的问题。人们愿意将其数据存储在区块链中,以使数据难以篡改并易于与他人共享。由于区块链上的区块是公开的,并由所有参与者共享。当这些块涉及私人数据时,当区块链的许多应用都涉及隐私数据时,有必要使用用户的密钥对数据进行加密,以保护用户的隐私和数据完整性。这个问题的核心是如何为区块链建立可行的密钥管理方案。

现有的区块链密钥管理方法包括本地存储,离线存储和钱包存储。在本地存储中,密钥直接存储或加密存储在本地设备中。它很容易被攻击者读取和篡改,并且在物理设备损坏时无法恢复。在离线存储中,密钥存储在离线物理存储介质中,并且仍然需要网络,因此无法完全避免恶意软件入侵。钱包的类型分为冷钱包,本地钱包,在线钱包,多签名钱包和脱链钱包。但是,这些在安全性,易用性和成本方面存在一些不足之处。例如,在多签名钱包中,复杂的过程提高了安全性,但是极大地影响了易用性,并且相应的成本要高得多。同时,360信息安全部审计了钱包的安全风险。例如,不对核心代码进行强化,并记录用户的操作。它还总结了当前常见的钱包漏洞:托管钱包不仅破坏了区块链的去中心化,而且还恶意窃取了用户的密钥;受管钱包中存在后门攻击和单点故障的问题;门槛钱包使用门槛加密技术在多个设备中分配密钥,因此,需要多个设备来参与密钥的使用。这种方案在设计上存在一定的困难,并且算法高度复杂,无法扩展。

lei等提出了一种基于区块链的异构智能交通系统动态密钥管理方案(leia,cruickshankh,caoy,etal.blockchain-baseddynamickeymanagementforheterogeneousintelligenttransportationsystems[j].ieeeinternetofthingsjournal,2017,4(6):1832-1843.),该方案包括两个异构网络之间的密钥传递和动态密钥管理。他们发现,将区块链结构引入密钥管理方案可以提高密钥管理的效率和健壮性。但是此密钥管理方案的通用性受到限制,并且该密钥只能在特定环境中使用。mingxin等提出了一种基于隐私的基于区块链的iot分布式密钥管理方案(mam,shig,lif.privacy-orientedblockchain-baseddistributedkeymanagementarchitectureforhierarchicalaccesscontrolintheiotscenario[j].ieeeaccess,2019,7:34045-34059.),以实现分层访问控制。仿真结果表明,多区块链结构大大提高了系统性能,并且随着网络的发展,可扩展性非常好,但是这种方案的成本相对较大。

中国专利申请cn106548345a提出了一种使用阈值算法对区块链私钥进行分区的方法,以实现多方参与密钥的保存,从而在一定程度上提高了私钥保存的安全性。但是,一旦用户的移动设备证书和密码丢失,该用户的密钥将无法恢复或泄露。huawei等提出了一种用于健康区块链的高效密钥管理方案(zhaoh,baip,pengy,etal.efficientkeymanagementschemeforhealthblockchain[j].caaitransactionsonintelligencetechnology,2018,3(2):114-118.)。他们将区块链服务网络(bsn)与健康区块链合并,并使用bsn中的生物传感器节点来备份和还原健康区块链的密钥。但是在这种情况下,生物传感器节点容易受到篡改,从而可能导致用户密钥丢失。夏冬等提出了一种基于图像信息隐藏的能量区块链私钥存储算法(夏冬,韦早裕,徐科,等.基于图像信息隐藏的能源区块链私钥存储算法[j].电力系统及其自动化学报,2019,31(1):7-11.)。它们在水印信息中隐藏了能源区块链的私钥。由于其解决方案的复杂性,总体效率相对较差。kai等提出了一种密钥分层管理方法来保护大数据网络云中的密钥安全。但是在他的方案中,攻击者可以篡改用户的密钥(fank,lous,sur,etal.secureandprivatekeymanagementschemeinbigdatanetworking[j].peer-to-peernetworkingandapplications,2018,11(5):992-999.)。丢失密钥后就无法恢复密钥,也无法更新。一旦忘记了用户名和密码或泄露了用户名和密码,将对用户造成无法弥补的损失。junjun等提出了一种区块链命名数据网络密钥管理方案(louj,zhangq,qiz,etal.ablockchain-basedkeymanagementschemefornameddatanetworking[c]//20181stieeeinternationalconferenceonhotinformation-centricnetworking(hoticn).ieee,2018:141-146.)。他们使用区块链技术来管理命名数据网络(ndn)密钥,从而解决了站点之间的相互信任问题。但是,该解决方案没有考虑用户私钥的安全性,也没有说明用户私钥的存储方式。一旦攻击者获得了用户的私钥,攻击者便可以使用被盗的私钥来冒充合法用户进行签名或解密,并且危害可能是灾难性的。刘敬浩等提出了一种用于区块链的分布式公钥管理方案(刘敬浩,平鉴川,付晓梅.一种基于区块链的分布式公钥管理方案研究[j].信息网络安全,2018,18(8):25-33.)。在此方案中描述了密钥生成,查询,更新和注销过程。但是,由于忽略了用户私钥的管理,因此解决方案仍然不够全面。

albakri等提出了一种基于二进制多项式的密钥管理方案(albakria,harnl,maddumalam.polynomial-basedlightweightkeymanagementinapermissionedblockchain[c]//2019ieeeconferenceoncommunicationsandnetworksecurity(cns).ieee,2019:1-9.)。尽管此方案在某些情况下减少了事务开销,但是加密文件时的加密时间大于对称加密开销。huawei等设计了使用人类传感器网络的备份和健康区块链密钥恢复方案(zhangh,wangj,dingy.blockchain-baseddecentralizedandsecurekeylesssignatureschemeforsmartgrid[j].energy,2019,180:955-967.)。在该方案中,仅考虑用户数据的安全性,而忽略了生成生理数据密文的效率。hongwei等将区块链技术用于智能电网的密钥管理,并提出了一种基于联合区块链的分散式无密钥签名方案(zhangh,wangj,dingy.blockchain-baseddecentralizedandsecurekeylesssignatureschemeforsmartgrid[j].energy,2019,180:955-967.)。younchan等在区块链控制平面上提出了一种基于分组密钥的安全管理方案(jungy,peradillam,agultor.packetkey-basedend-to-endsecuritymanagementonablockchaincontrolplane[j].sensors,2019,19(10):2310.)。hyeongcheol等将量子电阻密码学应用于区块链的密钥管理系统,并提出了分布式pki系统qchain(anh,choir,kimk.blockchain-baseddecentralizedkeymanagementsystemwithquantumresistance[c]//internationalworkshoponinformationsecurityapplications.springer,cham,2018:229-240.)。尽管上述方案在某些情况下可以提高特定字段中密钥的安全性。但是,这些解决方案忽略了密钥恢复,撤消和更新的机制,因此这些解决方案是不完整的,这可能会对用户造成无法挽回的伤害。

综上所述,目前对区块链密钥安全性的研究仍处于起步阶段。与区块链有关的大多数密钥管理方案都使用区块链技术来解决特定领域中密钥管理困难的问题。对于区块链本身的密钥管理方案,涉及的工作很少,并且缺乏安全,有效的解决方案来管理区块链中的用户密钥。

yevgeniy等定义了函数gen和rep来构造模糊提取器(dodisy,reyzinl,smitha.fuzzyextractors:howtogeneratestrongkeysfrombiometricsandothernoisydata[c]//internationalconferenceonthetheoryandapplicationsofcryptographictechniques.springer,berlin,heidelberg,2004:523-540.)。同时,他们引入了模糊提取器的概念来描述从生物特征输入b中提取随机字符串u的过程,该方案为此申请提供了安全保证。

另外,在实际运用中,还存在很多的协同工作的场景。例如:在公司中的一些决策中需要投资经理、投资总监、财务等多人共同签名同意了,决策才能被执行。为了满足这些需求,现在基本都是采用多次签名的方法。但是在区块链中,多签针对不同的主链需要实现不同的智能合约,现在的链至少有一千多个,而且每个人写出的合约是不一样的,这些合约还都要经过安全认证,所以资金、人力成本都很大。另外,如果临时添加和删减签名数量就需要对合约进行修改,这也是很不方便的。故需要研究一种新的签名方案以解决上述问题,换句话讲,也是针对区块链研究一种新的密钥管理方法。1979年,shamir提出了基于插值公式的门限秘密共享方案(shamira.howtoshareasecret[j].communicationsoftheacm,1979,22(11):612-613.),在这种方案中,秘密的d被分为n个部分,因此可以轻松地从k个部分中重建d。随后,姚期智等首次提出了安全多方计算的概念(yaoac.protocolsforsecurecomputations[c]//23rdannualsymposiumonfoundationsofcomputerscience(sfcs1982).ieee,1982:160-164.)。近些年谢翔等和阿里分别采用安全多方计算实现区块链中的密钥管理,以解决多方签名和不同的链和智能合约的适配问题。但是在这些方案中,只是将要计算的秘密进行简单的拆分(例如秘密q拆分为a,b,c,并且q=a+b+c),故方案中安全性并不高,因此需要进一步开展安全多方计算在区块链密钥管理中的应用研究。



技术实现要素:

为解决上述技术问题,本发明公开一种区块链私钥管理方法、多人共同签名方法及电子装置,可以有效地保护区块链上的隐私信息和实现多方签名的区块链密钥管理。

本发明的技术方案如下:

一种区块链密钥存储方法,其步骤包括:

1)生成公私钥对及基于生物特征的身份公私钥对,将公钥及身份公钥文件存储到区块链网络,并依据公私钥对进行用户认证;

2)使用身份公钥对私钥加密得到私钥密文;

3)选取n个已认证用户对私钥密文进行多方安全计算,将得到的n个子私钥密文存储在区块链节点上,并使用身份公钥对子私钥密文存储在区块链节点的文件进行加密。

进一步地,使用椭圆曲线算法生成公私钥对。

进一步地,通过以下步骤生成身份公私钥对及身份公钥文件:

1)利用特征提取设备提取存储用户生物特征;

2)使用模糊提取器生成公开参数与秘密参数;

3)将秘密参数的哈希值作为身份私钥;

4)通过秘密参数的哈希值与椭圆曲线中的基点,得到身份公钥;

5)通过身份公钥与公开参数,得到身份公钥文件。

进一步地,通过挑战-响应协议进行用户认证,其步骤包括:

1)区块链各节点按照共识投票选出一个可靠协调者;

2)可靠协调者向存储用户发送一个挑战;

3)存储用户对挑战进行签名,并向可靠协调者发送一个响应;

4)可靠协调者使用公钥对收到的响应进行认证,以判断存储用户身份。

进一步地,通过以下步骤对用户公钥、身份公钥文件、子私钥密文及子私钥密文进行存储:

1)将用户公钥、身份公钥文件、子私钥密文及子私钥密文存储在数据所有者的链下数据库中;

2)将存储的各地址值返回至链上,并结合数据哈希、数据所有者一起存储在链上索引表中。

进一步地,链上索引表采用红黑树形式的文件存储树存储每一类数据;通过以下步骤检索数据:

1)通过哈希映射的文件检索类别,使用分区方法定位子分类账-文件存储树;

2)通过文件存储树查找数据的链下数据库地址、数据哈希和数据所有者;

3)从文件存储节点中读取数据所有者,验证访问者的身份;读取链下数据库地址,访问链下数据库中的相应数据;读取数据哈希,验证从链下数据库获取的数据是否被篡改。

进一步地,通过以下步骤得到各区块链节点是否正确获取子私钥密文:

1)将乘法群的一个p阶生成元为g=h(p-1)/qmodp,其中h为(1,p-1)中的随机数,p|(q-1),g>1),获得循环子群<g>;

2)计算集合其中t为恢复私钥需要的最少节点服务器数量,ri为在有限域中随机选取的一随机数,c为私钥密文,并将各子私钥密文与集合k发送至各区块链节点;

3)各区块链节点计算若成立,则子私钥密文被成功接收,其中θi为一区块链节点,ci子私钥密文。

进一步地,当子私钥密文存储在区块链节点上的时间达到一设定时长后,重新选取n个已认证用户对私钥密文进行多方安全计算,并将得到n个新子私钥密文存储在区块链节点上。

进一步地,存储用户生物特征发生变化时,通过以下步骤进行区块链用户私钥存储:

1)区块链各节点按照共识投票选出一个可靠协调者,可靠协调者利用待更换生物特征的用户身份公钥及挑战-响应协议验证用户是否拥有旧的身份私钥;

2)利用新的存储用户特征生成新的身份公私钥,将新的身份公钥上传到区块链网络中,并更新链上链下的存储数据;

3)利用旧的身份私钥对子私钥密文存储在区块链节点服务器文件进行解密,并对节点中存储的子私钥密文进行重构,使用旧的身份私钥对结果进行解密从而获得私钥;

4)利用新的身份公钥对私钥密文加密后,将n个新的子私钥密文存储在区块链节点上。

一种区块链密钥恢复方法,其步骤包括:

1)根据身份公钥文件与当前用户的生物特征,判断当前用户是否为存储用户;

2)若当前用户为存储用户,获取身份私钥,并使用身份私钥对通过上述方法得到的子私钥密文存储在区块链节点的文件进行解密;

3)从区块链节点获取t个子私钥密文,恢复私钥密文,并使用身份私钥对私钥密文解密,得到私钥;

其中,

进一步地,使用拉格朗日差值法恢复私钥密文。

一种多人共同签名方法,适用于使用上述方法的客户端作为签名发起端,其步骤包括:

1)区块链各节点按照共识投票选出一个可靠协调者;

2)可靠协调者采用上述方法,将发起端发送的多方签名私钥与签名秘密,分别分成若干份,发送至各已认证签名用户;

3)各已认证签名用户根据收到的签名子私钥与签名子秘密,进行签名,并将各子签名结果返回至可靠协调者;

4)可靠协调者对收到的若干子签名进行恢复,完成多人共同签名。

一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。

与现有技术相比,本发明具有以下优点:

1)本发明提出的区块链密钥管理方案显著提高了区块链密钥的安全性,并且本发明是正确、可行的。

2)在本发明提出的方案中,密钥的管理效率得到了提高。

3)通过实验,发现本发明提出的方案在文件上传(插入)、下载(查询)的时间开销是最优的,同时本发明在文件删除、修改方面也是最优的;在一般在实际使用中,本发明的时间开销会非常低,也甚至可以忽略。综上,与现有技术相比,本发明的性能在安全性、时间开销、空间开销上都是较为优秀的,且能为用户提供更加优质的服务。

4)本发明不光考虑了密钥生成、恢复、撤销和更新的流程,还可以:动态产生数据加密的工作密钥,加强了密码系统的可靠性;添加了链上链下协同存储以减轻区块链中存储的压力,利用brtree减少索引等操作的时间开销;还考虑了区块链场景中多方签名的情况,以满足用户的各种需求。

附图说明

图1是本发明实施例所述方法中区块链密钥管理方案架构图。

图2是本发明实施例所述方法中区块链密钥管理协议图。

图3是本发明实施例所述方法中区块链链上存储索引分类账结构及共享流程图。

图4是本发明实施例所述方法中区块链链上索引存储结构(检索)图。

图5是本发明实施例所述方法中文件上传(添加)算法图。

图6是本发明实施例所述方法中文件检索(下载)算法图。

图7是本发明实施例所述方法中用户私钥分散存储和恢复时序和状态转换图。

图8是本发明实施例所述方法中传统和基于smpc的区块链多方签名框架图。

图9是本发明实施例所述方法中多签密钥的生成和签名过程中加法运算的整体数据流向图。

图10是本发明实施例所述方法中上传(插入)时间开销与链中文件数量关系图。

图11是本发明实施例所述方法中下载(查询)时间开销与链中文件数量关系图。

图12是本发明实施例所述方法中用户私钥存储和恢复的时间开销与节点数量关系图。

图13是本发明实施例所述方法中多方签名方案时间开销与参与方数量关系图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下通过实施例对本发明作进一步详细说明。

本发明公开了一种融入特征加密和多方安全计算的区块链密钥管理方法,该方法由链上和链下两部分组成,链上包括链上索引表(链上存储分类账,又称分布式分类帐)、交易和智能合约,主要完成合约的执行和货币结算;链下完成密钥生成、数据加密和解密等操作;对用户密钥和文件进行链上链下协同存储;对链上用户密钥和文件的检索和存储;对用户私钥进行存储和恢复;针对区块链中多方签名场景,利用多方安全计算完成协同私钥存储和签名(解密);对用户的文件和密钥进行验证;对用户的密钥进行撤销和更新。

图1描述了本方法的主要框架,该框架由链上和链下两部分组成。由于公共链的基本属性,链上包括链上索引表、交易和智能合约。区块链上的存储空间有限,并且数据透明。因此敏感数据不应直接记录在区块链上。ipfs分布式存储系统(m.s.ali,k.dolui,f.antonelli."lotdataprivacyviablockchainsandipfs".internationalconferenceontheinternetofthings.acm,2017.)由于其可行性而被用作链组件。区块链上主要完成合约的执行和货币结算。为了提高密钥管理的效率,许多工作应在区块链下完成,例如密钥生成、数据加密和解密等。本发明融入了多方安全计算(smpc)技术以提供安全、高效的密钥恢复和多方签名等服务。在融入多方安全计算的密钥管理中,需要区块链各节点按照共识投票选出一个可靠的协调者(称为coordinator),用于连接链上和链下之间的消息交换,管理和监督密钥的流程(认证用户身份),以及协调存储过程中各节点之间的关系。实际上,coordinator不参与计算,在执行过程中保持零知识并只起到验证和通知的作用,因此coordinator的存在并不影响密钥的安全性。相反,coordinator完成了用户客户端的很多工作,简化了用户客户端的操作流程,使得用户体验性得到提高。

在本方法中,由于区块链上存储的内容有限,为了减轻对区块链的压力,数据密文、公钥数据和智能合约代码等内容存储在链下数据库当中,链上存储分类账中记录数据的链下数据库存储位置、数据哈希和所有者信息。同时为了提高链上操作的效率(增删改查),采用红黑树的形式存储记录进行存储。当用户退出本地客户端后,本地客户端会清理所有存在明文密钥和明文文件以保证安全。当用户重新登录后,可利用多方安全计算方案进行多方恢复。同时对于其余需要的信息,如果本地没有则可以从区块链网络中进行下载。除此之外,本发明还提供了密钥撤销和更新等服务。总体来说,本发明可以提高密钥管理效率以及确保用户在区块链网络中的数据隐私安全。

表1方案中的符号说明

图2很直观地反应了本发明提出的区块链密钥管理协议图(图中符号的说明可详见表1),展示了此方案的密钥结构以及相应的一些密钥操作。用户在刚注册系统时,需要利用其生物特征生成文件以及利用椭圆曲线算法生成公私钥,并将私钥进行多方存储。当私钥不在时,可对私钥进行多方恢复。为了考虑多方签名的场景,再次利用多方安全计算对多方签名私钥进行多方保管,基于多方安全计算的加法和乘法同态特性进行签名和解密操作。在对文件操作时,可能需要频繁对文件进行加解密,同时文件可能很大,所以在安全性得到保证的情况下使用对称加密(即使用文件加密密钥对文件进行加密,再用用户公钥对文件加密密钥进行加密)可以显著提高文件共享等操作效率。

链上链下协同存储架构:

对区块链密钥管理过程中文件信息进行分类,如用户公钥、storagenodes文件、文件(文件密文和文件加密密钥密文)、多签子密钥、身份公钥文件等,并对外公布分类。由于区块链的透明特性,链上的内容对链上用户都可见,所以存储到区块链上的需要公开的信息(用户公钥、身份公钥和多方签名公钥)可以明文形式存储,而无需公开的数据应都为密文形式存储。数据库中存储加密过后的文件,之后将存储的地址值返回至链上,并结合存储数据的哈希(用于验证数据是否被篡改)、所有者(对访问者身份进行认证,提高方案的安全性)一起存储在索引表中。在对区块链中存储的文件进行操作时(增、删、改、查)都需要进行身份审核,身份审核后方可执行后续操作。身份认证中需要注意的一点是:因为在恢复私钥时,需要查询storagenodes文件,但是此时用户没有私钥,所以无法正常验证。此时可以根据所有者先查询身份公钥,利用身份公钥核实用户的身份。具体步骤可详见下述用户恢复私钥过程。

图3展示了链上存储索引分类账结构以及部分数据共享的流程。链上索引表中对于每一类文件的检索采用红黑树形式进行存储(白色节点表示红黑树的红色节点),具体可见下述链上文件检索和存储部分。在数据共享阶段:如果文件在本地,则直接使用接收者的公钥进行加密而后发送给接收者,接收者利用自身私钥解密获取文件明文。如果文件存储于区块链当中,则使用重加密方案进行文件共享,即用户自己访问(身份认证成功之后)链上存储索引分类账找到存储于链下数据库的地址,然后根据地址访问链下数据库得到上传文件(文件密文和文件加密密钥的密文)。然后利用自身的私钥对文件加密密钥密文进行解密,而后利用接收者的公钥再进行加密与文件密文重新拼接并发送给接收者。接收者收到改上传文件后,用自身私钥对文件加密密钥密文进行解密获得文件加密密钥,然后再对文件进行解密从而完成共享操作。当然方案中也可利用代理重加密机制来保证在不将用户私钥直接暴露给查询者的前提下对数据进行共享。即用户会产生对应于用户自己到文件接收者的代理重加密密钥,并将重加密密钥发送给链上的可信节点coordinator。coordinator根据分享的上传文件中的文件加密密钥密文和重加密密钥完成重加密操作并将新的密文数据传送给接收者,接收者利用自己的私钥完成相关解密从而完成共亨操作。

链上文件检索和存储:

由于区块链上内存比较特殊,并对时间消耗要求比较严格,同时链上操作一般可分为查找、增加、删除、修改四类,涉及最多的是查找。为了提高查找等操作的效率,链上索引表使用红黑树rbtree的形式存储。图4展示了链上索引表的存储结构(白色节点表示红色节点),相应内容和注意点如下:

1)文件检索类别是一个哈希映射,它使用分区方法来定位子分类账-文件存储树。

2)文件存储树是一个红黑树,包含许多文件存储节点。它提供了有效的搜索、插入、删除等操作,用于快速查找文件存储信息(链下存储地址、数据哈希和数据所有者)。

3)从文件存储节点中读取数据所有者,用于验证访问者的身份,验证成功后方可执行后续操作(当然数据创建者可以添加其余的可信访问者),此步骤提高了数据的安全性;读取存储位置,进而访问链下数据库读取文件密文;读取数据哈希,可以验证从链下数据库存储下载的文件是否被篡改。

采用红黑树的操作使得能够以o(log2(n))的时间复杂度进行搜索、插入、删除操作,并且任何不平衡都会在3次旋转之内解决。下面展示了文件添加(图5)、检索(下载)(图6),算法中对红黑树操作的部分进行了简写,相应内容可见红黑树的基本算法。

多方安全计算:

先使用用户的特征信息获取公私钥对,加密用户的私钥信息,然后再进行多方秘密安全存储。

多方安全计算是n个参与者p1,p2,…,pn,需要共同执行某一个计算任务

f(x1,x2,…,xn)=(y1,y2,…,yn)

每一方pi只能得到自己的输入xi,并且只能计算得到自己的输出yi。若参与方的总数为n,诚实的参数方的个数为t。安全多方计算能够提供完整、安全和可信的计算结果的条件为t≥2n/3。

由于存储到单一的服务器上,会容易导致秘密被窃取和破坏。所以引入多方安全计算来保证私钥的存储安全性。

定理1(同态性)shamir秘密分享具有加性同态和部分乘法同态。具体来说,如果使用多个(t,n)-shamir秘密分享算法来分享多个秘密值,那么不同秘密值的分片相加就是对应秘密值和的分片。并且在此过程中门限值始终为t,即分片和所对应的秘密分享的门限值仍然为t。如果d个(t,n)-shamir秘密分享算法分享多个秘密值。当且仅当d(t-1)≤n-1时,这些秘密值的分段乘积仍是对应秘密值的乘积的分段。

证明:shamir秘密分享的加法同态的证明过程可详见文献1[benalohjc.secretsharinghomomorphisms:keepingsharesofasecretsecret[c]//conferenceonthetheoryandapplicationofcryptographictechniques.springer,berlin,heidelberg,1986:251-260.],乘法同态性的证明过程详见文献2[barkolo,ishaiy,weinrebe.ond-multiplicativesecretsharing[j].journalofcryptology,2010,23(4):580-593.]。

定理2若模糊提取器提取的生物特征w'和原始生物特征w的distance(w,w')<t,则前后生成的秘密参数r'=r,即模糊提取值相同。其中distance()为相似度距离函数,t为模糊提取器规定好的错误极限值。

证明:定理证明过程见文献[刘影.基于生物特征的身份认证研究与设计[d].西南交通大学,2006.]。

私钥存储及恢复的过程:

由于用户私钥的重要性,故利用(t,n)-shamir门限可验证秘密共享方法将用户私钥加密分散成多个“碎片”,分别存储在多个可信赖的区块链节点中。任何一个节点都无法独立根据自己的“碎片”恢复出用户密钥原文。但是如果同时获得至少t个节点中的“碎片”,就可以重构出分享的秘密。为了防止多节点“合谋”或多节点被恶意攻击者攻击导致用户的秘密泄露,本方案采取了两种措施:1)用户可设定“碎片”的刷新时间,每过一段时间,会对分享的秘密进行重新分片,以防止攻击者逐个对节点中的“碎片”进行获得,这可以大大降低攻击者准确、有效地获得t个“碎片”,从而显著提高用户密钥的安全性。例如:n=3,t=2,刷新时间为trefresh,私钥sk被分为sk1,sk2,sk3,并分别存到3个节点。trefresh之后,私钥sk被分为sk1',sk2',sk3',并刷新3个节点上的值。如果攻击者在trefresh之内,获取到sk1。在trefresh之后获取到sk2'。攻击者虽然得到了这两个“碎片”,但是无法正确重构出分享的私钥sk;2)用户在分享私钥之前先利用其生物特征进行加密。即使攻击者在trefresh时间内获得了t个“碎片”,并对碎片进行了重构,也仅仅只是得到了私钥的密文,用户的私钥还是安全的。图7展示了用户密钥在分散存储和恢复过程中的时序和状态转换。用户私钥在分散存储过程中要经历两个阶段:初始化阶段,对私钥存储方进行身份验证,初始化存储环境并对存储的数据进行初始化;秘密分享阶段,存储方将私钥加密后进行秘密分发给可信存储节点。用户私钥在恢复过程中要经历两个阶段:初始化阶段,对私钥恢复方进行身份验证,启动存储环境;秘密重构阶段,存储方收集存储节点的秘密进行重构,并将重构结果进行解密获得私钥。

当用户产生私钥时,会将私钥分散加密存储在可信赖的区块链节点上,以便口令恢复时使用。

具体的私钥分散存储过程如下:

初始化:此阶段是私钥存储的第一个阶段。该阶段主要进行以下四个操作:

(1)如果用户第一次创建账户,则需完成身份注册。具体过程为:用户利用特征提取设备提取其生物特征w(包括指纹、虹膜等),再使用现有的模糊提取器生成公开参数pub和秘密参数r,公式为:gen(w)→(pub,r)。将秘密参数r的哈希值作为用户的身份私钥skid=h(r)。生成用户身份公私钥对(skid,pkid)=(h(r),h(r)·g),并将用户身份公钥文件file_idpk=(pkid,pub)发布存储到区块链网络中(存储过程详见上述链上文件存储部分)。若之前已完成身份注册,则直接从区块链网络下载用户身份公钥文件file_idpk=(pkid,pub)。

(2)为了实现高效快速的认证机制,采用标准的挑战-响应协议对用户进行身份认证。通过secp256kl椭圆曲线派生公私钥对,验证方通过智能合约查询公钥,进而获取该用户的地址。接着用户使用自身的私钥和椭圆曲线数字签名算法生成签名,并发送给验证方;验证方证明地址所有权,从而对用户的身份进行认证。具体过程为:验证者coordinator向用户发送一个挑战(challenge),用户使用私钥对challenge进行签名并向coordinator发送响应(response)。coordinator使用用户的公钥对收到的response进行认证,从而认证用户身份。

(3)coordinator对可信存储节点进行征集。coordinator征集的节点数m不是一个定值,m根据需要进行变动。为了防止部分节点在后续的操作中出现问题,所以最好留出一定的冗余节点以备不时之需。对于后续使用的(t,n)门限秘密共享方法来说,m应满足m≥n≥t。coordinator征集完节点后将计算节点的信息存入公共存储区的“trustednodes”文件中。

(4)对执行环境和数据进行初始化。coordinator连接trustednodes文件,读取列表中的可信节点信息,启动n个计算节点的守护进程。同时计算(t,n)-shamir门限秘密共享中的门限值并设置秘密刷新周期trefresh。

当全部完成上面四个操作后,coordinator通知用户进入秘密分享阶段。

秘密分享:初始化完成后,用户准备秘密进行分发存储。秘密分享阶段需要进行以下操作:

(5)使用用户身份公钥pkid对用户私钥sk加密得到私钥密文c,其中

(6)用户客户端根据密文c生成n个共享值c→{c1,…,cn},其中n≥1。生成的过程为:在有限域fp中,随机选取t-1个随机数(r1,r2,…,rt-1),构建多项式方程对于具有标识θi的可信节点pi(其中i∈[1,n])所获得的共享子秘密为(θi,ci),其中ci=fc(θi)。

(7)为了保证秘密分享和重构过程中的抗攻击性,进一步引入可验证秘密共享机制以验证秘密的正确性。可验证秘密共享机制的安全性可以规约到离散对数难题,所以该机制的安全性是可以保证的。取乘法群的一个p阶生成元为g=h(p-1)/qmodp(其中h为(1,p-1)中的随机数,p|(q-1),g>1)获得循环子群<g>,求出集合为了计算节点可对秘密进行验证,需将集合k发送给信任的节点。

(8)各可信节点pi(i∈[1,n])接收共享子秘密(θi,ci)和集合k。然后子秘密进行验证,看是否满足等式若等式成立,则子秘密被成功接收。上面说过,成功接收子秘密的节点数必须大于等于t。coordinator将成功接收秘密的节点和存储信息存入storagenodes文件中,并利用用户身份公钥将此文件加密存储到区块链网络中(由于coordinator会发生变化,为了安全和方便后续操作,将用户设为文件所有者)。

(9)当达到刷新trefresh周期,客户端重新执行上述分散存储过程以刷新可信存储节点中的“碎片”。

当用户恢复私钥时,会将之前存在区块链节点当中的“碎片”下载到本地客户端,然后进行恢复。私钥恢复的过程如下:

初始化:和存储相同,需要完成认证、前期的环境部署工作。此阶段需要进行以下操作:

(1)用户从区块链网络中下载用户身份公钥文件file_idpk=(pkid,pub)(文件下载过程可参考图6中所述的文件检索算法),然后利用特征提取设备提取其生物特征w'和公开参数pub还原秘密参数r',公式为rep(pub,w')→r'。由定理2,生物特征w'应和原始生物特征w满足关系式distance(w,w')<t。根据得到的秘密参数r',计算相应的哈希值得到身份私钥skid'=h(r')。

(2)对用户进行身份认证。由于此时用户没有椭圆曲线私钥,所以无法完全按照上述的身份验证方法进行认证,需要对认证方法进行一定的修改,即将用户的椭圆曲线公私钥替换为身份公私钥。

(3)用户从区块链网络中下载storagenodes文件,并利用身份私钥进行解密。

(4)用于从之前可信赖的区块链节点中选择至少t个节点(下面还原密钥选择t个节点),并利用coordinator的身份公钥加密节点信息发送给coordinator。coordinator解密之后启动t个节点的守护进程,并通知这些节点进入秘密重构阶段。

秘密重构:秘密重构是私钥恢复的最后一个阶段。秘密重构是合约执行的最后一个阶段。

(5)用户根据storagenodes文件通过区块链客户端下载相应节点上的“碎片”(θi,ci)。

(6)客户端运用拉格朗日(lagrange)插值法从t个“碎片”中恢复出结果c=reconstruct((θ1,c1),…,(θt,ct))。恢复过程如下:先恢复出多项式方程然后恢复出秘密

(7)由于c是用户私钥的密文,故需进一步解密。用户利用自身的身份私钥skid'对私钥密文c进行解密得到用户密钥由于w'和w满足distance(w,w')<t,r'=r,skprotect'=skprotect并且ski'=ski,则sk'=sk。

协同私钥存储、签名(解密)的过程:

图8展示了传统和基于smpc的区块链多方签名框架的不同。本发明的基于smpc的门限签名与合约模块是完全解耦的,即签名数量唯一,可以适配不同的链和智能合约。它只要区别签名算法,只要签名算法是区块链支持的(椭圆曲线数字签名(ecdsa)、schnorr、bls),它就能很好地衔接。基于smpc的密钥管理可以做到“多链友好”,这也是其的一大优势。本发明为了应对多签的情况,在上述利用多方安全计算方法存储私钥的基础上进行了改进,即将签名的密钥进行门限分割,分割的数量取决于签名的人数。这样不管签名人数有多少,最终的签名数量只有一个,而且本发明提出的基于smpc的门限签名方案在签名的过程当中,并不会对签名私钥进行恢复,由此使得签名的安全性大大提高。另外和上述私钥存储相同的是,本方法也增加了定时刷新,在一定周期对签名人手中的“碎片”私钥进行刷新。此方案的正确性依靠(t,n)门限秘密共享方案的加法同态和部分乘法同态,所以方案的计算结果是正确的。

在下述过程叙述中,有些过程和上述私钥存储内容重复,所以不再重新叙述,故进行了简写。多签密钥产生具体的过程如下:

(1)(假设在多方签名前未生成过多签密钥)在多方签名前,参与方需要通知coordinator产生一个多签公私钥对,coordinator利用椭圆曲线等密钥创建方法创建用于签名的真实公私钥对gen()→(skmultiple,pkmultiple),其中公钥发布到区块链网络中用于后面对签名进行验证。对于私钥,需要进一步“分割”。

(2)对各个签名方进行身份认证,具体认证过程与私钥存储初始化阶段步骤(2)中的方法相同。

(3)采用(t,n)门限秘密分享方法对私钥skmultiple进行分割,其中t是签名方的数量,在一般情况下不需要“碎片”冗余,即n=t。coordinator根据私钥skmultiple生成t个共享值skmultiple→{skmultiple_1,…,skmultiple_t},其中t≥1。生成的过程为:在fp中,随机选取t-1个随机数(r1,r2,…,rt-1),构建多项式方程对于具有标识θi的签名方(其中i∈[1,t])所获得的子秘密为(θi,skmultiple_i),其中skmultiple_i=fsk(θi)。同时,为了便于进行验证,这里也引入了可验证的秘密分享。取乘法群的一个p阶生成元为g=h(p-1)/qmodp(其中h为(1,p-1)中的随机数,p|(q-1),g>1)获得循环子群<g>,求出集合随后,coordinator利用各签名方的公钥对相应的子密钥进行加密,并将加密结果和集合k发送给签名方。

(4)各签名方在成功收到子私钥密文和集合k后。首先利用自己的私钥对密文进行解密,以获得子秘密(θi,skmultiple_i)。然后结合k验证是否满足式子判断接收的正确性,并将验证结果反馈给coordinator。若coordinator收到错误反馈,则对相应的秘密重新分享。如果coordinator收到所有签名方的正确接收反馈后,则多签密钥产生完成。各签名方可以利用自身的公钥将多签子私钥加密存储在区块链网络中,也可以利用分散存储方法(相对耗时,但是安全性高)。

每经过一定时间,coordinator会重复私钥恢复和上述工作将各签名方手中的多签子密钥进行重构和重新分割派发。

图9多签密钥的生成和签名过程中加法运算的整体数据流向图。当需要执行多签时,执行如下过程:

(1)用户端发起签名,将需要签名的秘密k发送给coordinator,然后coordinator通知各参与方进行签名。在执行下述过程之前,各参与方需要确保拥有各自的多签子密钥skmultiple_i(若本地没有可在区块链网络中下载)。

(2)利用多方安全计算对签名进行计算。coordinator根据秘密k生成t个共享值k→{k1,…,kt},其中t≥1。生成过程和上述的生成过程相同,但是式中的随机变量分别为r'。则共享的子秘密分别为(θi,ki),i∈[1,n]。同时也生成集合一起发送给各签名方。

(3)各签名方在接收到子秘密(θi,ki)和集合p后进行正确性验证。验证需要满足的式子为接收成功后,各自进行安全计算fi=ki+skmultiple_imodp。各签名方在安全计算完之后将结果(θi,fi)发送给重构方coordinator。

(4)重构方coordinator从t个签名方接收正确的结果(θi,fi),i∈[1,t]。接着运用lagrange插值法恢复出计算总结果s=reconstruct((θ1,f1),…,(θt,ft))。恢复过程如下:先恢复出多项式方程然后恢复出由于shamir方案还具有部分乘法同态,所以可以进行乘法运算,乘法过程可见文献2。进而可以进行加减混合运算,就可以完成签名和解密。例如以签名方法schnorr为例,计算sig(m)=(e,s),其中e=h(r||m)直接可以计算,s=k+xemodp利用多方安全计算进行计算,就生成了签名sig(m)=(e,s),在此过程中并没有对真正的多签私钥进行恢复,所以多签私钥是安全的。在解密操作中也是按照上述的操作进行运算的,加密操作直接由多方签名公钥进行运算。故此方案可以满足用户的需求,提供准确、安全的服务。

密钥和文件验证:

由于本发明提出的区块链的密钥管理方案中包含用户私钥、文件加密密钥、多签子密钥等不同种类的密钥,密文信息能否正确解密取决于密钥和文件密文的真实性。为了确保密钥和文件密文的真实性,用户可以通过以下方法进行验证:

(1)在私钥分散存储、多方签名等过程当中,由于采用了可验证的秘密分享,所以节点收到消息后可以对式子进行验证,从而判断收到的秘密的真实性。

(2)对于在区块链当中存储的密钥、文件等数据,可以在文件从链下数据库下载后,结合链上索引表当中的数据哈希对下载的数据进行哈希比对,从而判断下载数据的真实性(如果两者相同,则证明该密钥或文件为真,否则为假(被篡改,此时可通过其余节点对数据进行恢复))。

(2)对密钥和文件进行真实性验证还可以通过签名的方法。在内容发送之前,使用发送者的私钥对相应内容进行签名,生成签名摘要。当接收者收到消息时,利用发送者的公钥对签名进行验证,从而判断密钥或文件是否被篡改。

密钥撤销和更新:

本发明提出的区块链的密钥管理方案中还应考虑这样的情况:当用户的私钥、文件加密密钥、多签子密钥泄露时,攻击者将使用密钥对加密的内容进行查看,或者使用私钥对虚假内容执行签名,这将导致更多的错误内容传播。因此本发明中有必要为密钥设计撤销和更新机制。由于在区块链中每个块包含前一个块的哈希值。共识机制确保可以在没有授权的情况下识别和记录交易信息,因此已经写入区块链的数据无法更改,这意味着用户无法对区块链中的内容进行实际删除,只能将最新的状态和信息进行重新写入。为了提高检索和存储效率而在链上索引表中,所列内容为最新密钥或文件的版本和状态。

对于用户的特征更新时,由于特征改变时,直接影响身份公私钥,间接影响私钥的恢复。故用户特征的更新较为麻烦。用户特征更新流程如下:

(1)用户提出更换特征请求,coordinator利用待更换特征的用户身份公钥和挑战-响应协议验证用户身份,即看用户是否拥有相应的身份私钥。具体的挑战-响应验证过程和前面类似,故不再此重新叙述。

(2)利用新的用户特征生成新的身份公私钥,将新的身份公钥文件上传到区块链网络中(链上索引表根据用户的公钥查询相应的身份公钥位置,将文件存储节点(更新数据哈希)和链下数据库中的数据进行替换)。

(3)从链上索引表查询旧的storagenodes文件,利用旧的身份私钥进行解密后。根据storagenodes文件对节点中存储的“碎片”进行重构,并用旧的身份私钥对结果进行解密从而获得私钥。再利用新的身份公钥进行加密后重新进行分散存储并得到新的storagenodes文件。使用新生成的身份公钥对其加密并对区块链链上索引表和链下数据库中的数据进行替换。

用户公私钥的更新流程如下:

(1)利用椭圆曲线算法生成新的公私钥对,在链上索引表查询旧的公钥位置,对文件存储节点值和链下数据库中的数据进行替换。

(2)从链上索引表查询多签子密钥的位置并从链下数据库下载多签子密钥密文。接着利用旧的私钥进行解密,利用新的公钥进行加密,并对链上索引表、链下数据库数据进行替换。

(3)利用相同方法对链上索引表和链下数据库的数据(上传文件和其余使用旧公钥加密的文件对应的)进行替换。

(4)通知coordinator对新私钥重新进行分散存储,并修改storagenodes文件对应的链上索引表和链下数据库的数据。

多签密钥公私钥对的更新流程如下:

(1)重新生成新的多签密钥公私钥对,在链上索引表查询旧的多签公钥位置,对文件存储节点值和链下数据库中的数据进行替换。

(2)将多签私钥进行分割,重新发送给各参与方。各参与方对旧的多签子密钥对应的链上索引表和链下数据库的数据进行替换。

(3)重新对链上索引表和链下数据库的数据(使用旧多签公钥加密的文件对应的)进行替换。若之前有的文件还须使用,各参与再使用新的多签子密钥进行重新签名。

文件加密密钥的更新流程如下:

(1)重新生成文件的加密密钥,通过链上索引表从链下数据库中下载旧的上传文件,利用私钥对旧的文件加密密钥进行解密,并进一步对文件密文进行解密获得文件明文。然后使用新的加密密钥对文件进行重新加密,并利用用户公钥对新的文件加密密钥进行加密,合成上传文件,对链上索引表中的文件存储节点值和链下数据库中的数据进行替换。

(2)如果旧的文件加密密钥对应的文件密文在本地客户端,先使用旧的文件加密密钥进行解密,然后再使用新生成的文件加密密钥进行重新加密。

需要注意的是按照上面介绍的更新顺序,如果上面的密钥信息发生泄漏时,下面密钥所加密的密钥的信息也会变得不安全。所以在更新上面密钥时需要将该密钥下面的全部密钥进行更新,具体更新流程参考上面的描述。

分析与评估:

安全性分析:

本发明提出的区块链密钥管理方案显着提高了区块链密钥的安全性。具体来说:首先,本发明形式上采用分层管理,下层密钥由上层密钥加密,由此保证所有密钥的安全。由于最上层密钥为用户的身份密钥,所以用户直接确定密钥的安全性,并间接确定系统的安全性。第二,当用户将文件上传到区块链节点时,该文件首先通过文件加密密钥加密,然后再上传到区块链节点。由于在此过程中,密文数据既用于传输又用于存储,因此攻击者只能获取密文数据。因为只有用户自己可以解密文件密钥密文,所以区块链上的其他用户无法获取文件明文,也就无法获取有价值的信息。同时,由于区块链去中心化,防篡改和高透明度,文件的密文存储在区块链节点上可以防止攻击者篡改,因此文件内容非常安全。第三,文件与文件加密密钥为一一对应,这可防止恶意用户知道文件的多组密文和明文以破解文件加密密钥。第四,密钥恢复和多方签名中引入了可验证的秘密共享,即可以验证共享的秘密和计算结果以确保正确性。因此,本发明保证了用户私钥的私密性和计算结果的正确性。第五,协调节点coordinator在此方案的整个过程中都保持零知识,不参与计算,仅扮演验证和通知的角色。因此在此方案中,密钥管理不依赖于受信任的第三方。第六,在文件检索时首先根据所有者信息对用户身份进行认证通过后方可对数据进行增删改查操作。最后,在定理1、2中显示了秘密共享方案的同态性和模糊提取特征方法用于加解密的正确性。因此本发明是可行的,并保持较高的安全性。

效率分析:

在本发明提出的方案中,密钥的管理效率得到了提高。具体来说:首先,文件由文件加密密钥通过对称加密算法进行加密。相比较于现有区块链对文件的非对称加密方式,本方法更有效,更快并且消耗更少的资源。第二,本发明采用链上和链下的协作方式,在保证用户隐私安全的前提下,充分利用计算资源来提高运营效率。并且在区块链中使用pbft一致性算法,该算法每秒可处理数千个事务。第三,链上索引表采用红黑树的方式对索引数据进行存储。众所周知,采用红黑树的操作使得能够以o(log2(n))的时间复杂度进行搜索、插入、修改、删除操作,并且任何不平衡都会在3次旋转之内解决,所以在效率方面要优于平衡二叉树。总而言之,本发明在密钥管理和文件共享方面都保持了一个较高的效率。

实验性能评估:

通过利用python语言实现了本发明提出的方案,程序运行环境是windows10,intel(r)core(tm)i5-4200h2.80ghz和12gbram。在实验中,链下数据库的存储信息的速率为10m/s(10kb/ms),下载速率为20m/s(20kb/ms),存储文件的大小为10kb。图10显示了本发明提出的方案和未使用rbtree的链上链下存储方案中每上传(插入)一个文件的时间开销随链中文件数量增多的变化情况。图中可分为两部分,一部分为链上索引表中的时间开销,另一部分为链上和链下总共的时间开销。从图中可以看到本发明提出的方案在链上索引表中的时间开销较为稳定且小于0.25ms(几乎可以忽略),总时间开销(基本取决于文件在数据库的存储时间开销)也较为稳定且小于1.5ms(非常低)。而未采用rbtree的链上链下存储方案随着链中文件数目的增多,链上索引表中的时间开销也在不断增大且高于本发明的链上时间开销。在文件上传总时间开销中,本发明的时间开销要低于未采用rbtree的链上链下存储方案的时间开销。图11显示了本发明提出的方案和未使用rbtree的链上链下存储方案中每下载(查询)一个文件的时间开销随链中文件数量增多的变化情况(搜索的文件的耗时均是所有情况中最大的)。图中也可分为两部分,一部分为链上索引表中的时间开销,另一部分为链上和链下总共的时间开销。从图中可以看到本发明提出的方案在链上索引表中的时间开销较为稳定且在0.1ms左右(几乎可以忽略),总时间开销(基本取决于文件在数据库的下载时间开销)也较为稳定且在1.1ms左右(非常低)。而未采用rbtree的链上链下存储方案随着链中文件数目的增多,链上索引表中的时间开销也在不断增大且高于本发明的链上时间开销。在文件下载总时间开销中,本发明的时间开销要低于未采用rbtree的链上链下存储方案的时间开销。故本发明在文件上传(插入)、下载(查询)的时间开销是最优的,同时本发明在文件删除、修改方面也是最优的。

图12显示了本发明提出的方案中用户私钥存储和恢复的时间开销随分散节点数量增加的变化情况。从图中可以看出本发明中用户私钥存储和恢复的时间开销随着分散节点数量的增多而增加,这也是符合实际的。当分散节点增加50时,用户私钥的分散存储时长才为3ms左右(几乎可以忽略),用户私钥恢复的时长为2ms左右(也几乎可以忽略),然而一般在实际使用中,分散节点的数量一般为10到30,因此时间开销会非常低,甚至可以忽略,同时方案的安全性会提升很多。图13显示了本发明提出的方案中多方签名密钥分发和签名的时间开销随参与方数量增加的变化情况。从图中可以看出本发明中多方签名密钥分发和签名的时间开销随着参与方数量的增多而增加,这也是符合实际的。当分散节点增加50时,多方签名密钥分发时长才为2.5ms左右(几乎可以忽略),多方签名方案的签名时长为3.5ms左右(也几乎可以忽略),然而一般在实际使用中,参与方的数量一般为10左右,因此时间开销会非常低,也甚至可以忽略,同时方案的安全性也会提升很多且满足用户、区块链(智能合约)对多方签名的需求。

综上所述,本发明的性能在安全性、时间开销、空间开销上都是较为优秀的,且能为用户提供更加优质的服务。

方案对比分析:

在传统的区块链密钥管理方案中只考虑了密钥的生成,而没有考虑密钥的其余操作。文献3[郑丽娟.区块链密钥分层管理方法:中国,cn110300112a[p].2019-10-01.]提出的方案考虑了密钥生成、恢复、撤销和更新的流程,还利用区块链、密钥分层技术提高密钥管理的安全性和效率。本发明不光考虑了上述问题,可以动态产生数据加密的工作密钥,加强了密码系统的可靠性,还添加了链上链下协同存储以减轻区块链中存储的压力,利用brtree减少索引等操作的时间开销,考虑了区块链场景中多方签名的情况。同时在本发明提出的方案中,因为使用较多的密钥常常更换,使得破译的难度增大。在本发明中,在解决密钥管理问题的同时使用区块链技术,通过分布式数据存储和共识机制确保数据可以被跟踪并且不容易被篡改。本发明提出的密钥管理方案与其它文献提出的方案功能对比如下表2所示。

表2密钥管理方案功能对比

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。

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