一种数据保护方法、装置、设备和存储介质与流程

文档序号:22546327发布日期:2020-10-17 02:16阅读:163来源:国知局
一种数据保护方法、装置、设备和存储介质与流程

本申请实施例涉及区块链技术,涉及但不限于一种数据保护方法、装置、设备和存储介质。



背景技术:

相关技术为了保护区块链中的数据隐私,在对数据加密时可以使用对称加密,非对称加密机制等,但加密过程中使用同一个密钥,一旦密钥泄露,就会给全部的隐私数据造成巨大的威胁。例如:相关技术中的无证书公钥体制(certificatelesspublickeycryptography,clpkc)是一种基于椭圆曲线的,不使用双线对运算的无证书公钥密码体制,虽然该密码体制综合了证书颁发机构(certificateauthority,ca)和基于标识的密码体系(identity-basedcryptograph,ibc)的优点,采用新的密钥生成方式,对用户密钥进行分配和管理。但缺点是:在clpkc算法中用户每次只能申请一对密钥。



技术实现要素:

有鉴于此,本申请实施例提供一种数据保护方法、装置、设备和存储介质。

本申请实施例的技术方案是这样实现的:

第一方面,本申请实施例提供一种数据保护方法,所述方法包括:

获取待保护数据;从特定密钥集合中选择一对目标密钥,其中,所述密钥集合包括与n个第一身份中每一第一身份对应的m对密钥,所述n个第一身份是通过一个第二身份生成的,m和n均为大于等于1的整数;所述第二身份的隐私等级比所述第一身份的隐私等级高;采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

第二方面,本申请实施例提供一种数据保护装置,所述装置包括:

获取模块,用于获取待保护数据;选择模块,用于从特定密钥集合中选择一对目标密钥,其中,所述密钥集合包括与n个第一身份中每一第一身份对应的m对密钥,所述n个第一身份是通过一个第二身份生成的,m和n均为大于等于1的整数;所述第二身份的隐私等级比所述第一身份的隐私等级高;加密模块,用于采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

第三方面,本申请实施例提供一种数据保护设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。

本申请实施例提供的一种数据保护的方法、装置、设备和存储介质,首先获取待保护的数据,然后从特定密钥集合中选择一对目标密钥,最后采用目标密钥对待保护数据进行加密,得到加密数据。这样,可以启用不同的身份对应的不同密钥对传输信息进行加密,可以支持一次一密,甚至支持一次一身份一密,有效防止了窃听者借助大数据技术分析关联交易并探测隐私的可能。

附图说明

图1为本申请实施例提供的一种数据保护方法的实现流程示意图;

图2a为本申请实施例提供的另一种数据保护方法的实现流程示意图;

图2b是本申请实施例提供的数据保护方法应用于区块链系统的一个可选的结构示意图;

图2c是本申请实施例提供的区块结构的一个可选的示意图;

图3为本申请实施例提供的再一种数据保护方法的实现流程示意图;

图4a为本申请实施例提供的一种密钥生成方法实现流程示意图;

图4b为本申请实施例提供的一种密钥签名方法实现流程示意图;

图5为本申请实施例提供的数据保护装置的组成结构示意图;

图6为本申请实施例提供的数据保护设备的一种硬件实体示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

应当理解,此处所描述的一些实施例仅仅用以解释本申请的技术方案,并不用于限定本申请的技术范围。

本申请实施例提供的一种数据保护方法,参照图1所示,执行以下步骤:

步骤101、获取待保护数据;

这里,待保护的数据可以是区块链上的数据。区块链技术是一种及其巧妙的分布式账本和点对点传输技术,具有分布式、不可篡改等特性。为了实现区块链中的数据隐私,需要对数据进行保护。首先就要在区块链上获取待保护的数据。

步骤102、从特定密钥集合中选择一对目标密钥,其中,所述密钥集合包括与n个第一身份中每一第一身份对应的m对密钥,所述n个第一身份是通过一个第二身份生成的,m和n均为大于等于1的整数;所述第二身份的隐私等级比所述第一身份的隐私等级高;

这里,特定密钥集合可以是每个用户为了加密数据设置的密钥集合。特定密钥集合里面包括与n个第一身份中每一第一身份对应的m对密钥,n个第一身份是通过一个第二身份生成的。第二身份的隐私等级比第一身份的隐私等级高,第二身份可以是用户的真实身份,第一身份为利用用户的真实身份派生出n个匿名身份,每个匿名身份可以对应m对密钥,这样特定密钥集合中就包括n*m对密钥。

步骤103、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

从特定密钥集合中n*m对密钥中选择一对目标密钥对待保护数据进行加密,可以得到经过目标密钥加密的数据。

本申请实施例,首先获取待保护的数据,然后从特定密钥集合中选择一对目标密钥,最后采用目标密钥对待保护数据进行加密,得到加密数据。这样,可以启用不同的身份对应的不同密钥对传输信息进行加密,可以支持一次一密,甚至支持一次一身份一密,有效防止了窃听者借助大数据技术分析关联交易并探测隐私的可能。

本申请实施例提供的一种数据保护方法,参照图2a所示,执行以下步骤:

步骤201、获取待保护数据;

步骤202、根据所述第二身份获取所述第二身份的n个所述第一身份;

这里,第二身份可以是用户的实名身份,第一身份是根据用户的实名身份得到的实名身份对应的匿名身份。

步骤203、获取n个所述第一身份中每一所述第一身份对应的m对密钥,得到所述特定密钥集合;

这个,先获取每个匿名身份对应的m对密钥,由于有n个匿名身份,所以得到的特定密钥集合中包括n*m对密钥。

步骤204、从n个所述第一身份中选择第ni个所述第一身份作为目标第一身份,其中,i为大于等于1小于等于n的整数;

先用n个匿名身份中选择第ni个匿名身份作为目标第一身份。

步骤205、从所述目标第一身份对应的m对密钥中选择第mi对密钥,作为所述目标密钥,其中,所述目标密钥包括目标私钥和目标公钥;

选好了目标第一身份后,再从目标第一身份对应的m对密钥中选择第mi对密钥,作为所述目标密钥。

步骤206、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

本申请实施例,描述了从特定密钥集合中选择目标密钥的过程,先选择目标身份,再根据目标身份对应的m对密钥选择目标密钥。这样,用户在实际应用中可以自主选择用哪个身份进行事务触发,即用哪个身份进行数据保护。可以支持一次一密,甚至支持一次一身份一密,这样有效防止了窃听者借助大数据技术分析关联交易并探测隐私的可能。

区块链技术是一种分布式账本和点对点传输技术,具有分布式、不可篡改等特性。以超级账本为代表的联盟链相对于公链提供了更高的吞吐性能,其数据安全完全依赖基于公钥基础设施(publickeyinfrastructure,pki)的证书机制,但基于pki体系中的证书机制,存在传输复杂管理复杂的问题。同时证书带来了传输效率低下和身份隐私泄露问题。目前实现区块链中的数据隐私,一般可以使用对称加密,非对称加密机制等,但加密过程中使用同一个密钥,一旦密钥泄露,就会给全部的隐私数据造成巨大的威胁。

本申请实施例涉及的数据保护方法也可以应用于区块链系统的分布式系统201,参见图2b,图2b是本申请实施例提供的数据保护方法应用于区块链系统的一个可选的结构示意图,其中,所述分布式系统201可以是由多个节点202(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端203形成的分布式节点,节点之间形成组成的点对点(p2p,peertopeer)网络,p2p协议是一个运行在传输控制协议(tcp,transmissioncontrolprotocol)之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。

参见图2b示出的区块链系统中各节点的功能,下面对区块链系统中各节点涉及的功能进行详细介绍:

1)路由,节点具有的基本功能,用于支持节点之间的通信。节点除具有路由功能外,还可以具有以下功能:

2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。例如,应用实现的业务包括:2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。

3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。

4)共识(consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(pow,proofofwork)、权益证明(pos,proofofstake)、股份授权证明(dpos,delegatedproof-of-stake)、消逝时间量证明(poet,proofofelapsedtime)等。

参见图2c,图2c是本申请实施例提供的区块结构(blockstructure)的一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

本申请实施例提供的一种数据保护方法,执行以下步骤:

步骤211、在确认区块链上不存在所述第二身份的情况下,生成用户公开参数;

这里,密钥生成中心(keygenerationcenter,kgc)维护一条身份链,将kgc以表格形式存储用户的身份信息,即将kgc的系统参数每个用户的公开参数录在区块链上。如果确认区块链上不存在所述第二身份的情况下,需要生成用户公开参数。

步骤212、将所述密钥系统公开参数和所述用户公开参数记录到所述区块链上;所述密钥系统公开参数包括椭圆曲线参数、哈希函数、系统公钥;

系统建立时,先设

e:y2=x3+ax+b(1);

公式(1)为有限域fq上的椭圆曲线,n为素数,m≥1为正整数,g是e上的一个n阶基点;

h0(),h1()…hm()(2);

以上公式(2)是一组{0,1}*→[1,n-1]的hash函数;

kgc随机选择m个私密值作为系统主私钥,

p1=s1g,…pm=smg(3);

公式(3)为系统公钥;

密钥系统公开参数为公式(4)

根据公式(4),密钥系统公开参数包括椭圆曲线参数、哈希函数、系统公钥。将密钥系统公开参数记录在区块链上。

步骤213、根据所述密钥系统公开参数和所述用户公开参数,生成所述特定密钥集合;

步骤214、获取待保护数据;

步骤215、从特定密钥集合中选择一对目标密钥;

步骤216、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

本申请实施例,描述了在确认区块链上不存在所述第二身份的情况下,生成用户公开参数,并将密钥系统公开参数和用户公开参数记录到所述区块链上,根据所述密钥系统公开参数和所述用户公开参数,生成所述特定密钥集合。这样,将将密钥系统公开参数和用户公开参数记录到所述区块链上,有利用系统维护密钥系统公开参数和用户公开参数,方便用户生成密钥使用,也方便在验证签名时需要使用用户公开参数进行验证。

本申请实施例提供的一种数据保护方法,执行以下步骤:

步骤221、在确认区块链上不存在所述第二身份的情况下,生成用户公开参数;所述用户公开参数包括n个所述第一身份和n*m个部分密钥对;

生成n个所述第一身份,包括:

步骤222、根据随机生成的种子密钥,利用密钥派生函数获得身份初始值和密钥初始值;所述种子密钥是有限域上的随机数;

步骤223、根据所述第二身份、所述身份初始值和要衍生出所述第一身份的数量n,得到n个所述第一身份;

生成所述n*m个部分密钥对,包括:

步骤224、随机选择一个有效的秘密值,其中,所述秘密值是有限域上的随机数;

步骤225、根据所述秘密值、每一所述第一身份对应的密钥对的数量m、所述n个第一身份和所述密钥初始值,得到n*m个部分公钥;

步骤226、根据所述n个第一身份、所述n*m个部分公钥和所述密钥初始值,得到n*m个部分私钥;

步骤227、根据所述n*m个部分公钥和所述n*m个部分私钥,形成所述n*m个部分密钥对。

步骤228、将所述密钥系统公开参数和所述用户公开参数记录到所述区块链上;所述密钥系统公开参数包括椭圆曲线参数、哈希函数、系统公钥;

步骤229、根据所述密钥系统公开参数和所述用户公开参数,生成所述特定密钥集合;

步骤230、获取待保护数据;

步骤231、从特定密钥集合中选择一对目标密钥;

步骤232、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

本申请实施例,描述了如何生成用户公共参数,用户公共参数包括n个第一身份和n*m个部分密钥对,有利用系统维护用户公开参数,方便用户生成密钥使用,也方便在验证签名时需要使用用户公开参数进行验证。

本申请实施例提供的一种数据保护方法,执行以下步骤:

步骤241、在确认区块链上不存在所述第二身份的情况下,生成用户公开参数;所述用户公开参数包括n个所述第一身份和n*m个部分密钥对;

生成n个所述第一身份,包括:

步骤242、根据随机生成的种子密钥,利用密钥派生函数获得身份初始值和密钥初始值;所述种子密钥是有限域上的随机数;

标识为ida的用户随机选择私密值检验若xa=0,则重新选择xa;

根据公式(5)计算xa:

xa=xag(5);

发送(ida,xa,n,m)至kgc;

kgc在收到(ida,xa,n,m)后,首先会检验用户ida身份的合法性。其次随机选择作为密钥派生算法中的种子密钥。

根据公式(6)计算密钥派生函数:

kdf=sha512(seed)(6);

令kdf的左256比特用作身份初始值,即派生身份索引idindex,右256比特用作密钥初始值,即派生密钥索引keyindex。

其中,安全散列算法(securehashalgorithm,sha)是美国国家安全局设计,美国国家标准与技术研究院发布的一系列密码散列函数;

密钥派生函数kdf的作用是从一个共享的秘密比特串中派生出密钥数据。也就是将一个输入比特串转换成特定长度的输出比特串,转换过程中使用了密码杂凑函数(也就是摘要函数)。密钥派生函数在椭圆曲线公钥加解密与密钥协商等密码运算场景都有应用。

步骤243、根据所述第二身份、所述身份初始值和要衍生出所述第一身份的数量n,得到n个所述第一身份;

根据公式(7)确定身份初始值:

idindex0=idindex(7);

根据用户申请的匿名身份数量和公式(8)计算得到n个第一身份索引:

idindexj=idindexj-1+1,j=1,2,…,n(8);

根据公式(9)确定n个第一身份:

生成所述n*m个部分密钥对,包括:

步骤244、随机选择一个有效的秘密值,其中,所述秘密值是有限域上的随机数;

标识为ida的用户随机选择私密值检验若xa=0,则重新选择xa。

步骤245、根据每一所述第一身份对应的密钥对的数量m和所述密钥初始值,得到m个密钥索引;

根据公式(10)确定密钥初始值:

keyindex0=keyindex(10);

根据用户申请的密钥对数量和公式(11)计算得到m个密钥索引:

keyindexk=keyindexk-1+1(11);

其中k=1,2,…,m。

步骤246、根据所述m个密钥索引和所述n个第一身份,利用哈希运算消息认证码运算,得到n*m个第一生成系数;

根据公式(12)得到n*m个第一生成系数:

hmac是密钥相关的哈希运算消息认证码(hash-basedmessageauthenticationcode,hmac)的缩写,由h.krawezyk,m.bellare,r.canetti于1996年提出的一种基于hash函数和密钥进行消息认证的方法,并于1997年作为rfc2104被公布,并在ipsec和其他网络协议(如ssl)中得以广泛应用,现在已经成为事实上的internet安全标准。它可以与任何迭代散列函数捆绑使用。

步骤247、确定第一椭圆点和n*m个第二椭圆点,所述第一椭圆点为所述秘密值与所述椭圆曲线参数中的基点点乘得到的点,n*m个所述第二椭圆点包括所述n*m个第一生成系数中每一第一生成系数与所述椭圆曲线参数中的基点点乘得到的点;

根据公式(13),第一椭圆点为所述秘密值与所述椭圆曲线参数中的基点点乘得到的点:

xa=xag(13);

n*m个所述第二椭圆点包括所述n*m个第一生成系数中每一第一生成系数与所述椭圆曲线参数中的基点点乘得到的点

步骤248、将所述第一椭圆点与所述每一第二椭圆点的累加和,作为n*m个部分公钥中的每一所述部分公钥;

根据公式(14),计算派生部分公钥:

步骤249、根据所述n*m个部分公钥和所述n个第一身份,利用所述哈希函数获得n*m个第二生成系数;

根据公式(15),计算n*m个第二生成系数:

步骤250、根据所述n*m个第二生成系数中每一所述第二生成系数、所述第一生成系数和所述私密值,利用所述椭圆曲线进行数乘运算,得到n*m个部分私钥。

根据公式(16),计算n*m个部分私钥:

其中

步骤251、根据所述n*m个部分公钥和所述n*m个部分私钥,形成所述n*m个部分密钥对;

步骤252、将所述密钥系统公开参数和所述用户公开参数记录到所述区块链上;所述密钥系统公开参数包括椭圆曲线参数、哈希函数、系统公钥;

发给用户ida且作为用户部分公开参数发布。

步骤253、根据所述密钥系统公开参数和所述用户公开参数,生成所述特定密钥集合;

步骤254、获取待保护数据;

步骤255、从特定密钥集合中选择一对目标密钥;

步骤256、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

本申请实施例,描述了如何根据秘密值、每一第一身份对应的密钥对的数量m、n个第一身份和所述密钥初始值,得到n*m个部分公钥,和如何根据n个第一身份、n*m个部分公钥和密钥初始值,得到n*m个部分私钥。使用实施例中提供的方法获取n*m个部分公钥和n*m个部分私钥,作为用户公共参数公布在区块链上,有利用系统维护用户公开参数,方便用户生成密钥使用,也方便在验证签名时需要使用用户公开参数进行验证。

本申请实施例提供的一种数据保护方法,执行以下步骤:

步骤261、在确认区块链上不存在所述第二身份的情况下,生成用户公开参数;

步骤262、将所述密钥系统公开参数和所述用户公开参数记录到所述区块链上;所述密钥系统公开参数包括椭圆曲线参数、哈希函数、系统公钥;

步骤263、根据n*m个所述部分私钥、第二生成系数和秘密值生成n*m个目标私钥;

根据公式(17),计算得到n*m个目标私钥:

步骤264、将所述n*m个目标私钥中的每一所述目标私钥与所述椭圆曲线的基点相乘,得到n*m个初始公钥;

根据公式(18),计算得到n*m个初始公钥:

步骤265、在根据所述第二生成系数和每一所述初始公钥对应的部分公钥,利用所述椭圆曲线进行点乘运算验证所述初始公钥成立的情况下,将对应的初始公钥确定为目标公钥;

根据公式(19)验证初始公钥:

若公式(19)成立,设置为用户完整密钥对。

步骤266、获取每一所述目标公钥和对应的目标私钥,生成所述特定密钥集合;

步骤267、获取待保护数据;

步骤268、从特定密钥集合中选择一对目标密钥;

步骤269、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

本申请实施例,描述了如何生成目标私钥和初始公钥,在生成初始公钥后使用椭圆曲线进行点乘运算验证初始公钥,最后确定目标私钥和目标公钥,这样,经过验证的目标密钥对可以有效防止kgc作恶,即kgc被病毒或黑客控制后修改生成密钥的参数。

本申请实施例提供的一种数据保护方法,参照图3所示,执行以下步骤:

步骤301、将所述密钥系统公开参数记录到所述区块链上;所述密钥系统公开参数包括椭圆曲线参数、哈希函数、系统公钥;

步骤302、当确认所述区块链上存在所述第二身份时,从所述区块链上获取所述第二身份对应的用户公开参数;

步骤303、根据所述密钥系统公开参数和所述用户公开参数,生成所述特定密钥集合;

步骤304、获取待保护数据;

步骤305、从特定密钥集合中选择一对目标密钥;

步骤306、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

本申请实施例,描述了当确认区块链上存在所述第二身份时,从区块链上获取所述第二身份对应的用户公开参数,这样,将第二身份放在区块链上维护,kgc维护一条身份链,将kgc以表格形式存储用户的身份信息,即将kgc的系统参数每个用户的公开参数录在区块链上,可以有效地提高了传输效率,降低了联盟区块链的计算开销。

本申请实施例提供的一种数据保护方法,执行以下步骤:

步骤311、获取待保护数据;

步骤312、从特定密钥集合中选择一对目标密钥;

采用所述目标密钥对所述待保护数据进行加密,得到加密数据;

步骤313、根据所述目标第一身份和所述目标私钥密钥对所述待保护数据进行签名;

步骤314、选择目标第一身份和目标私钥密钥对待保护数据进行签名,例如可以利用无证书体制生成的密钥根据需求选择中的任意匿名身份及密钥对消息进行标准椭圆曲线数字签名算法(ellipticcurvedigitalsignaturealgorithm,ecdsa)签名,过程如下:

节点ida随机选取k(k<n,n为g的阶),根据公式(20)计算k:

k=kg=(x1,y1)(20);

根据公式(21)得到r:

r=x1modn(21);

参考公式(22),节点选择及密钥对消息进行签名:

根据公式(23),得到最后的签名:

步骤315、当根据所述第二生成系数和第mi对所述密钥对应的部分公钥利用所述椭圆曲线进行点乘运算验证对应的目标公钥满足要求时,对所述签名进行验证。

验证签名时由于节点公钥具有自证性,所以不需要使用数字证书。公钥自证性是指其他人通过签名标识和部分公钥计算实际公钥的过程,隐含了对节点密钥的认证,只有标识的节点才具有与对应的私钥验证者收到签名σ及消息后进行验签,过程如下:

使用公式(19),根据签名标识和部分公钥计算节点公钥:

根据公式(24)、(25)和(26)计算w、u1和u2:

w=s-1modn(24);

u1=[h(m)w]modn(25);

u2=[rw]mod(26);

根据公式(27)计算:

根据公式(28)计算:

v=x0modn(28);

验证公式(29)是否成立:

v=r(29);

当公式(29)成立时,验签成功;不成立时,验签不成功。

本申请实施例,描述了在使用目标密钥对对待保护数据进行签名和验签的过程中,使用椭圆曲线进行点乘运算验证对应的目标公钥满足要求时,对所述签名进行验证。这样,在验证签名时,通过签名标识和部分公钥计算实际公钥的过程,隐含了对节点密钥的认证。

本申请实施例提供的一种数据保护方法,执行以下步骤:

步骤321、获取待保护数据;

步骤322、获取待保护数据的秘密等级;

这里,可以根据待保护数据的保密要求确定秘密等级。例如:保密要求越高的数据秘密等级越高。

步骤323、在所述秘密等级满足特定的第一条件的情况下,从所述特定密钥集合中选择一对所述目标密钥。

当保密等级要求高时,需要在n个第一身份名下的m对密钥集合中选择一对密钥进行保护。因为将第二身份匿名为n个第一身份本身就是一次保密,这样经过两次保密操作,密钥可以保护的数据等级高。

步骤324、在所述秘密等级不满足特定的第一条件的情况下,确定根据所述第二身份生成的p个目标密钥;

如果数据的保护等级要求不高,可以不经过第二身份匿名n个第一身份的过程。直接根据第二身份生成p个目标密钥。

步骤325、从所述p个目标密钥对中选择一对所述目标密钥,其中,p为大于等于1的整数;

步骤326、采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

本申请实施例,描述了根据待保护数据的保密等级获取不同的密钥进行保护。这样,在区块链系统中可以实现分层级的隐私保护机制,即为防止利用同一个密钥加密敏感数据带来的安全隐患,用户可以利用一个匿名身份id对应的不同密钥加密不同数据,甚至可以选择使用不同匿名身份id加密不同数据,从而实现对数据的一次一密保护。

相关技术中无证书公钥体制(certificatelesspublickeycryptography,clpkc)是一种基于椭圆曲线的、不使用双线对运算的无证书公钥密码体制,虽然该密码体制综合了证书颁发机构(certificateauthority,ca)、基于标识的密码体系(identity-basedcryptograph,ibc)的优点,采用新的密钥生成方式,对用户密钥进行分配和管理。但缺点是:在clpkc算法中用户每次只能申请一对密钥。

本申请提出一种密钥派生的可控轻量级安全无证书签名(certificatelesssign2,cls2)算法。

图4a为本申请实施例提供的一种密钥生成方法实现流程示意图,如图4a示,工作流程描述如下:

步骤s401、标识为ida的用户侧启动任务;

步骤s402、随机选择有效私密值,

在有限模n乘法群中随机选择有效私密值;

步骤s403、标识为ida的用户随机选择私密值检验若xa=0,则重新选择xa;

步骤s404、将椭圆曲线的基点与有效私密值相乘待使用的用户私密点;

如以下公式(13)所示:

xa=xag(13);

将得到的用户标识、用户私密点、匿名用户数量n和每一匿名用户申请的密钥对数m发送给密钥生成中心;

步骤s405、密钥生成中心(keygenerationcenter,kgc)开始启动;

步骤s406、在有限模n乘法群中随机选择m个私密值作为系统主私钥,得到系统公钥和系统公开参数;

密钥生成中心(keygenerationcenter,kgc)随机选择m个私密值作为系统主私钥。

步骤s407、将椭圆曲线的基点和m个主私钥分别相乘得到m个系统公钥;

p1=s1g,…pm=smg(3);

公式(3)为系统公钥。

在区块链上公开系统公开参数,其中,系统公开参数包括椭圆曲线、椭圆曲线的基点、基点的阶数、m个哈希函数,m个系统公钥;

公开参数记录区块链上之后,相当于公开了,在后续算法中,如完整密钥生成算法和验签算法中用到直接在链上查询即可。

密钥系统公开参数为公式(4)

步骤s407、密钥生成中心在有限模n乘法群中随机选择种子密钥,并获取实名身份标识,根据种子密钥,利用安全散列算法得到密钥派生函数;取密钥派生函数左256比特用作派生身份索引idindex,,右256比特用作派生密钥索引keyindex

密钥生成中心随机选择作为密钥派生算法中的种子密钥,用于计算派生身份初始索引及派生密钥初始索引。

步骤s408、根据实名身份标识、匿名用户数量n和派生身份初始索引,获得n个派生的匿名身份;

根据公式(7)确定身份初始值:

idindex0=idindex(7);

根据用户申请的匿名身份数量和公式(8)计算得到n个第一身份索引:

idindexj=idindexj-1+1,j=1,2,…,n(8)。

步骤s409、根据每一匿名用户申请的密钥对数m和派生密钥初始索引,获得m个派生的密钥索引;

根据公式(10)确定密钥初始值:

keyindex0=keyindex(10);

根据用户申请的密钥对数量和公式(11)计算得到m个密钥索引:

keyindexk=keyindexk-1+1(11);

其中k=1,2,…,m。

步骤s410、根据用户私密点、n个派生的匿名身份和m个派生的密钥索引,经过哈希运算消息认证码得到n*m个派生部分公钥;

根据公式(12)得到n*m个第一生成系数:

根据公式(14),计算派生部分公钥:

根据n*m个派生部分公钥和n个派生的匿名身份得到部分私钥,将n*m个派生部分公钥、n*m个派生部分私钥和n个派生的匿名身份发送给用户,并发布在区块链上;

根据公式(16),计算n*m个部分私钥:

其中

发给用户ida且作为用户部分公开参数发布在区块链上。

为保证系统安全,kgc保存seed与ida的对应关系,如果后续需要做监管或者审计,kgc只需根据存储的种子密钥及用户ida就可以重新计算kgc以表格形式存储所颁发节点的身份信息,包括所有kgc的系统公开参数及每个用户的公开参数。为了确保身份的唯一性,kgc维护一条身份链,在生成部分公钥之前检验该区块链分类帐本上是否已经存在该身份信息。

步骤s411、用户侧接收到n*m个派生部分公钥、n*m个派生部分私钥和n个派生的匿名身份,利用n*m个派生部分私钥与用户秘密值生成的n*m个完整私钥;

步骤s412、将n*m个完整私钥分别乘以椭圆基点得到n*m个完整公钥;

根据公式(18),计算得到n*m个初始公钥:

根据公式(19)验证初始公钥:

若公式(19)成立,则设置为用户完整密钥对。

图4b为本申请实施例提供的一种密钥签名方法实现流程示意图,如图4b示,工作流程描述如下:

步骤s421、获取签名者ida;

步骤s422、节点利用无证书体制生成的密钥根据自己的需求选择ida中的任意匿名身份及密钥对签名消息进行标准ecdsa签名;

具体过程如下:

节点ida随机选取k(k<n,n为g的阶),根据公式(20)计算k:

k=kg=(x1,y1)(20);

根据公式(21)得到r:

r=x1modn(21);

步骤s423、计算s,完成签名;

参考公式(22),节点选择及密钥对消息进行签名:

根据公式(23),得到最后的签名:

步骤s424、验签者开始验签;

在cls2中验证签名时由于节点公钥具有自证性,所以不需要使用数字证书。公钥自证性是指其他人通过签名标识和部分公钥计算实际公钥的过程,隐含了对节点密钥的认证,只有标识的节点才具有与对应的私钥验证者收到签名σ及消息后进行验签。

步骤s425、获取r和s;

步骤s426、根据签名标识部分公钥计算节点公钥,并验证签名是否成功。

使用公式(19),根据签名标识和部分公钥算节点公钥:

根据公式(24)、(25)和(26)计算w、u1和u2:

w=s-1modn(24);

u1=[h(m)w]modn(25);

u2=[rw]mod(26);

根据公式(27)计算:

根据公式(28)计算:

v=x0modn(28);

验证公式(29)是否成立:

v=r(29)。

当公式(29)成立时,验签成功;不成立时,验签不成功。

密钥生成方法和密钥签名方法实施例达到的效果是:有效地提高了传输效率,降低了联盟区块链的计算开销,不仅实现了轻量级无证书可信传输,显著提升了传输效率并降低了节点的计算开销;身份隐私实现可控匿名,可控匿名是用户在实际应用中可以自主选择用哪个身份进行事务触发。当选择真实id时,发起的事务就是实名的,否则就是匿名的,从而实现了可控匿名的性质。数据隐私实现分层级控制,对数据的分层级的隐私保护机制是,区块链中的节点可以启用不同的身份和密钥应对传输信息进行加密:对于安全要求高的隐私数据,可以支持一次一密,甚至支持一次一身份一密,即对包含的签名身份也只是单次有效,这样有效防止了窃听者借助大数据技术分析关联交易并探测隐私的可能。

基于前述的实施例,本申请实施例提供一种数据保护装置,该装置包括所包括的各模块、以及各模块所包括的各子模块,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)或现场可编程门阵列(fpga)等。

图5为本申请实施例提供的数据保护装置的组成结构示意图,如图5所示,所述数据保护装置500包括获取模块501、选择模块502和加密模块503,其中:

获取模块501,用于获取待保护数据;

选择模块502,用于从特定密钥集合中选择一对目标密钥,其中,所述密钥集合包括与n个第一身份中每一第一身份对应的m对密钥,所述n个第一身份是通过一个第二身份生成的,m和n均为大于等于1的整数;所述第二身份的隐私等级比所述第一身份的隐私等级高;

加密模块503,用于采用所述目标密钥对所述待保护数据进行加密,得到加密数据。

在一些实施例中,所述数据保护装置还包括第一获取模块和第一得到模块,其中,所述第一获取模块,用于根据所述第二身份获取所述第二身份的n个所述第一身份;所述第一得到模块,用于获取n个所述第一身份中每一所述第一身份对应的m对密钥,得到所述特定密钥集合。

在一些实施例中,所述选择模块包括第一选择子模块和第二选择子模块,其中,所述第一选择子模块,用于从n个所述第一身份中选择第ni个所述第一身份作为目标第一身份,其中,i为大于等于1小于等于n的整数;所述第二选择子模块,用于从所述目标第一身份对应的m对密钥中选择第mi对密钥,作为所述目标密钥,其中,所述目标密钥包括目标私钥和目标公钥。

在一些实施例中,所述数据保护装置还用于生成所述特定密钥集合,所述数据保护装置还包括第一生成模块、记录模块和第二生成模块,其中,所述第一生成模块,用于在确认区块链上不存在所述第二身份的情况下,生成用户公开参数;所述记录模块,用于将所述密钥系统公开参数和所述用户公开参数记录到所述区块链上;所述密钥系统公开参数包括椭圆曲线参数、哈希函数、系统公钥;所述第二生成模块,用于根据所述密钥系统公开参数和所述用户公开参数,生成所述特定密钥集合。

在一些实施例中,所述用户公开参数包括n个所述第一身份和n*m个部分密钥对,所述数据保护装置还包括第三生成模块和第四生成模块,其中,所述第三生成模块,用于生成n个所述第一身份;所述第三生成模块包括第一获得子模块和第一得到子模块,其中,所述第一获得子模块,用于根据随机生成的种子密钥,利用密钥派生函数获得身份初始值和密钥初始值;所述种子密钥是有限域上的随机数;所述第一得到子模块,用于根据所述第二身份、所述身份初始值和要衍生出所述第一身份的数量n,得到n个所述第一身份。所述第四生成模块,用于生成所述n*m个部分密钥对;所述第四生成模块包括第一选择子模块、第二得到子模块、第三得到子模块和形成子模块,其中,所述第一选择子模块,用于随机选择一个有效的秘密值,其中,所述秘密值是有限域上的随机数;所述第二得到子模块,用于根据所述秘密值、每一所述第一身份对应的密钥对的数量m、所述n个第一身份和所述密钥初始值,得到n*m个部分公钥;所述第三得到子模块,用于根据所述n个第一身份、所述n*m个部分公钥和所述密钥初始值,得到n*m个部分私钥;所述形成子模块,用于根据所述n*m个部分公钥和所述n*m个部分私钥,形成所述n*m个部分密钥对。

在一些实施例中,所述第二得到子模块包括第一得到单元、第二得到单元、确定单元和累加和单元,其中,所述第一得到单元,用于根据每一所述第一身份对应的密钥对的数量m和所述密钥初始值,得到m个密钥索引;所述第二得到单元,用于根据所述m个密钥索引和所述n个第一身份,利用哈希运算消息认证码运算,得到n*m个第一生成系数;所述确定单元,用于确定第一椭圆点和n*m个第二椭圆点,所述第一椭圆点为所述秘密值与所述椭圆曲线参数中的基点点乘得到的点,n*m个所述第二椭圆点包括所述n*m个第一生成系数中每一第一生成系数与所述椭圆曲线参数中的基点点乘得到的点;所述累加和单元,用于将所述第一椭圆点与所述每一第二椭圆点的累加和,作为n*m个部分公钥中的每一所述部分公钥。

在一些实施例中,所述第二生成模块包括第五生成子模块、第四得到子模块、第一确定子模块和第六生成子模块,其中所述第五生成子模块,用于根据n*m个所述部分私钥、第二生成系数和秘密值生成n*m个目标私钥;所述第四得到子模块,用于将所述n*m个目标私钥中的每一所述目标私钥与所述椭圆曲线的基点相乘,得到n*m个初始公钥;所述第一确定子模块,用于在根据所述第二生成系数和每一所述初始公钥对应的部分公钥,利用所述椭圆曲线进行点乘运算验证所述初始公钥成立的情况下,将对应的初始公钥确定为目标公钥;所述第六生成子模块,用于获取每一所述目标公钥和对应的目标私钥,生成所述特定密钥集合。

在一些实施例中,所述数据保护装置还用于生成所述特定密钥集合,所述数据保护装置还包括第二获取模块,其中,所述第二获取模块,用于当确认所述区块链上存在所述第二身份时,从所述区块链上获取所述第二身份对应的用户公开参数。

在一些实施例中,所述数据保护装置还包括签名模块和验证模块,其中,所述签名模块,用于根据所述目标第一身份和所述目标私钥密钥对所述待保护数据进行签名;所述验证模块,用于当根据所述第二生成系数和第mi对所述密钥对应的部分公钥利用所述椭圆曲线进行点乘运算验证对应的目标公钥满足要求时,对所述签名进行验证。

在一些实施例中,所述选择模块包括第一获取子模块和第一选择子模块,其中,所述第一获取子模块,用于获取待保护数据的秘密等级;所述第一选择子模块,用于在所述秘密等级满足特定的第一条件的情况下,从所述特定密钥集合中选择一对所述目标密钥。

在一些实施例中,所述选择模块还包括第二确定子模块和第二选择子模块,其中所述第二确定子模块,用于在所述秘密等级不满足特定的第一条件的情况下,确定根据所述第二身份生成的p个目标密钥;所述第二选择子模块,用于从所述p个目标密钥对中选择一对所述目标密钥,其中,p为大于等于1的整数。

以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据保护方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得数据保护设备(可以是平板电脑、台式机、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

对应地,本申请实施例提供一种数据保护设备,图6为本申请实施例数据保护设备的一种硬件实体示意图,如图6所示,该数据保护设备600的硬件实体包括:包括存储器601和处理器602,所述存储器601存储有可在处理器602上运行的计算机程序,所述处理器602执行所述程序时实现上述实施例中提供的数据保护方法中的步骤。

存储器601配置为存储由处理器602可执行的指令和应用,还可以缓存待处理器602以及数据保护设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(randomaccessmemory,ram)实现。

对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的数据保护方法中的步骤。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得数据保护设备(可以是平板电脑、笔记本电脑、台式计算机、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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