本发明涉及区块链和通信技术领域,特别涉及一种基于区块链密钥分发的数据安全共享系统及方法。
背景技术:
近年来,网络安全威胁日益突出,信息泄漏等事件频有发生,因此对信息加密以实现数据安全共享的策略广为应用。例如,当前医疗数据共享通常是通过对称加密隐私信息,使用医院内部系统、社交软件或共享文档来共享密钥和密文。但是,共享密钥和密文的过程仍会面临中间人攻击,因此依旧存在隐私泄漏的风险,难以实现真正的数据安全共享。可见,如何解决密钥分发共享的问题是实现数据安全共享数据的关键。
技术实现要素:
本发明的第一目的在于克服现有技术的缺点与不足,提供一种基于区块链密钥分发的数据安全共享系统,该系统可以提供更安全的密钥分发机制,为用户数据共享提供了安全保障,保证了数据的机密性和完整性。
本发明的第二目的在于提供一种基于区块链密钥分发的数据安全共享方法,该方法解决了数据共享过程中密钥分发的问题,实现多方安全共享数据,适合具有大规模用户节点参与的区块链网络。
本发明的第一目的通过下述技术方案实现:一种基于区块链密钥分发的数据安全共享系统,包括:客户端、服务器端和区块链平台,区块链平台连接客户端和服务器端,客户端和服务器端形成区块链网络,其中,
客户端作为区块链网络的从节点机,用于发起注册、用户数据上传和查询事件;
服务器端作为区块链网络的根节点机和主节点机,根节点机用于初始化区块链平台,并在初始化时向主节点机分发其秘密份额;
主节点机用于对根节点机发送的秘密份额进行验证和根据门限密码体制合作生成系统主密钥,用于对发起注册事件的用户进行身份审核,基于系统主密钥生成并分发对应的子密钥给合格用户,该子密钥用于加密待上传至区块链的用户数据和分发给有权查询的其他用户来解密查询到的区块链中的用户数据;
区块链平台部署有智能合约,用于根据从节点机发起的事件触发智能合约中对应的代码逻辑,从而操作区块链中的存储数据的状态。
优选的,区块链网络中具有至少一台根节点机、至少两台主节点机和至少三台从节点机,其中,根结点机和主节点机之间采用联盟链连接,不同从节点机之间采用公有链连接,联盟链对联盟内各个节点机进行开放,公有链对所有节点机开放,联盟链与公有链之间通过网络进行连接,并且联盟链中的根结点机和主节点机向从节点机发送广播消息。
优选的,发起事件的用户包括患者和医疗机构,用户数据为医疗隐私信息。
本发明的第二目的通过下述技术方案实现:一种基于区块链密钥分发的数据安全共享方法,包括如下步骤:
s1、根节点机初始化区块链平台,并在初始化时向主节点机分发其秘密份额;
s2、第i个主节点机xi先对其他t-1个主节点机向其发送的秘密份额进行验证,然后根据门限密码体制将通过验证的秘密份额合作生成系统主密钥;
s3、用户在从节点机发起注册事件,然后主节点机对用户进行身份审核,基于系统主密钥生成并分发对应的子密钥给合格用户;
s4、用户在从节点机发起上传用户数据事件,从节点机利用子密钥加密待上传的用户数据并发布到区块链平台,然后将其子密钥分发给有权查询其用户数据的其他用户;
s5、用户在从节点机发起查询用户数据事件,从节点机从区块链平台获取链上存储的加密用户数据,然后利用接收到的子密钥对其解密,得到用户数据。
优选的,在步骤s1中,根节点机生成并公开区块链平台的系统参数,完成区块链平台的初始化,具体如下:
s11、根节点机选取大素数k和阶为k的乘法循环群g,产生一个双线性映射群e:g×g→gt,e表示映射关系,gt表示两个群g进行乘积运算生成的值所映射的群;从群g内选取元素p和g,其中p,g是大素数,且p≥n+1,n表示区块链网络中主节点机数目;选取有限域gf(p);选取单向抗强碰撞hash函数h:{0,1}*→gt,h可隐藏明文信息,用于保证信息的机密性、完整性;
利用随机预言机生成随机数s∈zp,zp是p阶加法循环群;
令系统主密钥msk=s;
s12、假设区块链网络中参与系统主密钥分发的主节点机有n个,设定合作生成主密钥的门限值为t,t≤n,构造一个t-1阶多项式f(x):
f(x)=a0+a1x+a2x2+...+at-1xt-1;
其中,x是变量;a0,a1,...,at-1是gf(p)\{0}上均匀选取的随机数,gf(p)\{0}表示减去0元素的gf(p);
令a0=s,得到f(0)=s;
s13、公开区块链系统参数
s14、分配给每个主节点机对应序号和秘密份额,则第i个主节点机xi对应序号i,即xi=i,秘密份额为f(i)=a0+a1i+a2i2+...+at-1it-1,i∈[1,n];
s15、其他主节点机将自己的秘密份额发送给第i个主节点机。
更进一步的,在步骤s2中,验证过程具体如下:
第i个主节点机基于秘密份额f(i)以及系统参数
若满足上述式子,则验证通过;
若否,则说明秘密份额造假或者被攻击,需要其他主节点机重新发送其秘密份额。
更进一步的,门限密码体制是指:参与系统主密钥分发的n个主节点机为受信任的主节点机,在这n个主节点机中,仅当大于或等于t个主节点机可以凭借其秘密份额合作生成系统主密钥;
根据门限密码体制合作生成系统主密钥的具体过程如下:
当第i个主节点机收到其他t-1个主节点机j的秘密份额,保存并联合自身秘密份额合成系统主密钥msk,然后基于拉格朗日插值多项式
优选的,在步骤s3中,主节点机对用户进行身份审核,基于系统主密钥生成并分发对应的子密钥给合格用户,过程如下:
s31、从节点机在发起注册事件时,选择一个随机数
s32、主节点机审核用户身份信息是否有效和是否已注册,若用户身份信息有效且未注册,则审核通过,然后基于系统主密钥生成对应的子密钥skb=h(idb||wb)s,并分发给用户b所在的从节点机,s为利用随机预言机生成的随机数;
若用户身份信息无效或者已注册,则审核未通过,拒绝用户的注册事件;
s33、用户b验证接收到的密钥的合法性:
若子密钥满足式子e(skb,g)=e(h(idb||wb)s,gs),则接收该子密钥;
若子密钥不满足上述式子,则需要用户重新注册。
更进一步的,在步骤s4中,从节点机利用子密钥加密待上传的用户数据并发布到区块链平台,过程如下:
从节点机采用对称加密方案aes加密待上传的用户数据m,得到密文cb:
然后通过区块链平台将密文cb上链,并存储到区块链中。
更进一步的,在步骤s5中,从节点机利用接收到的子密钥对加密用户数据进行解密,得到用户数据m:
本发明相对于现有技术具有如下的优点及效果:
(1)本发明基于区块链密钥分发的数据安全共享系统,包括客户端、服务器端和区块链平台,区块链平台连接客户端和服务器端,客户端和服务器端形成区块链网络,其中,客户端作为区块链网络的从节点机,用于发起注册、用户数据上传和查询事件;服务器端作为区块链网络的根节点机和主节点机,根节点机用于初始化区块链平台,并在初始化时向主节点机分发其秘密份额;主节点机用于对根节点机发送的秘密份额进行验证和根据门限密码体制合作生成系统主密钥,用于对发起注册事件的用户进行身份审核,基于系统主密钥生成并分发对应的子密钥给合格用户,该子密钥用于加密待上传至区块链的用户数据和分发给有权查询的其他用户来解密查询到的区块链中的用户数据;区块链平台部署有智能合约,用于根据从节点机发起的事件触发智能合约中对应的代码逻辑,从而操作区块链中的存储数据的状态。本发明通过引入区块链技术、基于身份信息加密的密码体制、双线性映射函数性质以及门限加密方案,提供了基于区块链密钥分发机制的数据安全共享方案、系统,解决了数据共享过程中密钥分发的问题,从而实现数据安全多方共享,保证了数据的机密性、完整性,能够有效防止分发者欺诈、中间人攻击、身份假冒、被动窃听和消息重放等多种攻击。
(2)本发明系统发起事件的用户包括患者和医疗机构,因此可应用于医疗数据共享,降低现有医疗隐私信息共享时存在的隐私泄漏风险。
(3)本发明利用区块链信息加密、网络开放、去中心化以及不可篡改的特性,用户数据加密之后再通过区块链平台将密文上链,可以有效防止医疗数据被篡改,保证其完整性。
(3)本发明利用门限加密方案,可以防止单点失效和分发者欺骗问题,当且仅当节点数目满足门限值才可以恢复出系统主密钥,因此本发明方法可以提供更安全的密钥分发机制,为用户数据共享提供安全保障,适合具有大规模用户节点参与的区块链网络。
(4)本发明方法在用户注册时,基于用户身份信息和椭圆曲线密码体制的群签名方法来分发用户特有的子密钥,可以提高子密钥的安全等级。
(5)本发明方法还附加了对秘密份额的验证算法,允许主节点认证根结点分发的秘密份额和在合成主密钥时来自其他主节点的秘密份额的有效性,因此可以抵抗参与者和分发者的欺诈。
(6)本发明方法所用的对称密钥加密方案具有语义安全性,如果用户没有对应的解密密钥,就无法解密密文和从密文中获取任何信息,因此可以保证用户数据的机密性。
附图说明
图1是本发明基于区块链密钥分发的数据安全共享系统的交互示意图。
图2是本发明区块链网络的示意图。
图3是本发明基于区块链密钥分发的数据安全共享方法的流程示意图。
图4是图3方法中上传用户数据的流程示意图。
图5是图3方法中查询用户数据的流程示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
本实施例公开了一种基于区块链密钥分发的数据安全共享系统,如图1和图2所示,包括:客户端、服务器端和区块链平台,区块链平台连接客户端和服务器端,为用户提供了交互的接口和可视化界面。客户端和服务器端形成区块链网络。
其中,客户端作为区块链网络的从节点机,用于发起注册、用户数据上传和查询事件。
服务器端作为区块链网络的根节点机和主节点机。根节点机用于初始化区块链平台,并在初始化时向主节点机分发其秘密份额。
主节点机用于对根节点机发送的秘密份额进行验证和根据门限密码体制合作生成系统主密钥,用于对发起注册事件的用户进行身份审核,基于系统主密钥生成并分发对应的子密钥给合格用户。该子密钥用于加密待上传至区块链的用户数据和分发给有权查询的其他用户来解密查询到的区块链中的用户数据。
区块链平台部署有智能合约,用于根据从节点机发起的事件触发智能合约中对应的代码逻辑,从而操作区块链中的存储数据的状态。
在本实施例中,区块链网络中具有至少一台根节点机、至少两台主节点机和至少三台从节点机。如图2所示,根结点机和主节点机之间采用联盟链连接,不同从节点机之间采用公有链连接,联盟链对联盟内各个节点机进行开放,公有链对所有节点机开放,联盟链与公有链之间通过网络进行连接,并且联盟链中的根结点机和主节点机向从节点机发送广播消息。
本实施例系统可应用于医疗数据共享,其中,发起事件的用户包括患者和医疗机构,用户数据为医疗隐私信息。
本实施例还公开了一种基于区块链密钥分发的数据安全共享方法,该方法可应用于上述系统,如图3所示,包括如下步骤:
s1、根节点机初始化区块链平台,并在初始化时向主节点机分发其秘密份额。
其中,根节点机生成并公开区块链平台的系统参数,以完成区块链平台的初始化,具体如下:
s11、根节点机选取大素数k和阶为k的乘法循环群g,产生一个双线性映射群e:g×g→gt,e表示映射关系,gt表示两个群g进行乘积运算生成的值所映射的群;从群g内选取元素p和g,其中p,g是大素数,且p≥n+1,n表示区块链网络中主节点机数目;选取有限域gf(p);选取单向抗强碰撞hash函数h:{0,1}*→gt,h可隐藏明文信息,用于保证信息的机密性、完整性。
利用随机预言机生成随机数s∈zp,zp是p阶加法循环群。
令系统主密钥msk=s。
s12、假设区块链网络中参与系统主密钥分发的主节点机有n个,设定合作生成主密钥的门限值为t,t≤n,构造一个t-1阶多项式f(x):
f(x)=a0+a1x+a2x2+...+at-1xt-1;
其中,x是变量;a0,a1,...,at-1是gf(p)\{0}上均匀选取的随机数,gf(p)\{0}表示减去0元素的gf(p)。
令a0=s,得到f(0)=s。
s13、公开区块链系统参数
s14、分配给每个主节点机对应序号和秘密份额,则第i个主节点机xi对应序号i,即xi=i,秘密份额为f(i)=a0+a1i+a2i2+...+at-1it-1,i∈[1,n]。每个主节点机由此得到一个秘密份额。
s15、其他主节点机将自己的秘密份额发送给第i个主节点机,当第i个主节点机收到的秘密份额超过门限值t,即可合成系统主密钥。
本实施例所采用的密钥分发方法基于椭圆曲线问题难解性,映射群上的元素满足椭圆曲线运算,可以更好地抵抗攻击算法。
s2、第i个主节点机xi先对其他t-1个主节点机向其发送的秘密份额进行验证,然后根据门限密码体制将通过验证的秘密份额合作生成系统主密钥。
其中,验证过程具体如下:
第i个主节点机基于秘密份额f(i)以及系统参数
若满足上述式子,则验证通过;
若否,则说明秘密份额造假或者被攻击,需要其他主节点机重新发送其秘密份额。
门限密码体制是指:参与系统主密钥分发的n个主节点机为受信任的主节点机,在这n个主节点机中,仅当大于或等于t个主节点机可以凭借其秘密份额合作生成秘密信息,可以起到防止单点失效和分发者欺骗的作用。
根据门限密码体制合作生成系统主密钥的具体过程如下:
当第i个主节点机收到其他t-1个主节点机的秘密份额,保存并联合自身秘密份额合成系统主密钥msk,然后基于拉格朗日插值多项式
s3、用户在从节点机发起注册事件,然后主节点机对用户进行身份审核,基于系统主密钥生成并分发对应的子密钥给合格用户,子密钥可作为后续加密用户数据的对称密钥和作为发起查询事件时的身份验证凭据。
子密钥生成和分发过程如下:
s31、从节点机在发起注册事件时,选择一个随机数
s32、主节点机审核用户身份信息是否有效和是否已注册,若用户身份信息有效且未注册,则审核通过,然后基于系统主密钥生成对应的子密钥skb=h(idb||wb)s,并分发给用户b所在的从节点机;
若用户身份信息无效或者已注册,则审核未通过,拒绝用户的注册事件;
s33、用户b验证接收到的密钥的合法性:
若子密钥满足式子e(skb,g)=e(h(idb||wb)s,gs),则接收该子密钥;
若子密钥不满足上述式子,则需要用户重新注册。验证可以防止密钥生成和传输过程中受到中间人攻击、服务器端伪造。
s4、用户在从节点机发起上传用户数据事件,从节点机利用子密钥加密待上传的用户数据并发布到区块链平台,过程如下:
从节点机采用对称加密方案aes加密待上传的用户数据m,得到密文cb:
通过区块链平台将密文cb上链,并存储到区块链中;
然后将其子密钥分发给有权查询其用户数据的其他用户,方便这些授权用户查看用户数据。上述这一过程可参见图4。
s5、如图5所示,用户在从节点机发起查询用户数据事件,从节点机从区块链平台获取链上存储的加密用户数据,然后利用接收到的子密钥对其解密,得到用户数据m:
如上这种对称密钥加密方案具有语义安全性,如果用户没有对应的对称密钥,就无法解密密文和从密文中获取任何信息,因此可以保证隐私数据的机密性。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。