周利峰,殷新春 ,2,宁建廷
1(扬州大学 信息工程学院,江苏 扬州 225127)
2(扬州大学 广陵学院,江苏 扬州 225128)
3(福建师范大学 计算机与网络空间安全学院,福州 350007)
4(中国科学院 信息工程研究所 信息安全国家重点实验室,北京 100093)
随着物联网技术的快速的发展,电子医疗为人们提供了更加高质量的现代化医疗服务[1,2].在无线医疗传感器网络(Wireless Medical Sensor Networks,WMSNs)系统中,可穿戴传感器设备或嵌入患者体内的医疗传感器节点能够定期收集病人的医疗数据,然后将此数据传输给专业的医生进行诊断与治疗.但是,在WMSNs系统中,病人的医疗数据是通过不安全的无线信道进行传输,攻击者能够轻易的窃听、篡改和伪造病人的医疗数据[3-6].因此,需要无证书聚合签名技术来保证消息的完整性和认证性.与此同时,如果在医疗数据传输的过程中泄露了病人的真实身份,可能会导致严重的隐私问题[7,8].而使用身份匿名技术可以将用户数据与身份信息的分离,从而达到保护病人身份隐私的作用.
近年来,国内外的很多学者为了解决WMSNs中的安全通信和身份隐私问题,提出了各自的无证书聚合签名方案.在2018年,Kumar等人[9]设计了一种适用于WMSNs基于双线性配对的无证书聚合签名方案.不久之后,Wu等人[10]指出Kumar等人[9]的方案不能抵抗恶意的医疗服务器(Medical Server,MS)攻击并且无法实现身份匿名.为了实现医疗数据高效的验证和身份隐私保护,Liu等人[11]设计了一种支持匿名的基于双线性配对的无证书批量认证方案,并声称他们的方案能够一次性安全的认证所有的医疗数据.但是,Zhang等人[12]指出了Liu等人[11]的方案不能抵抗恶意参与者攻击和恶意数据中心攻击.
为了减少计算开销,Gayathri等人[13]设计了一种无双线性配对的匿名的无证书聚合签名方案.然而,Liu等人[14]证明了Gayathri等人[13]的方案无法抵抗恶意MS攻击和公钥替换攻击.此外,Liu等人[14]设计了一种改进方案,并声称该方案能够抵抗恶意的MS和公钥替换攻击.之后,Zhan等人[15]对Liu等人[14]的改进方案进行了分析,并指出Liu等人[14]的改进方案无法抵抗恶意的MS攻击.由于在文献[9-15]中提出的方案都是将医疗数据存储在医疗服务器上的,而对集中式服务器的高度依赖往往会带来严重的信任问题[16].
为了同时解决在WMSNs中的数据安全通信、身份隐私、计算效率、去中心化存储等挑战性问题,本文提出一种适用于无线医疗传感器网络的基于区块链的无证书聚合签名方案,并且该方案在随机预言模型下对选择消息攻击具有不可伪造性,本文具体的贡献如下:
1)本文方案不使用计算效率较低的双线性对运算,且能满足消息的完整性、认证性、匿名性、可追踪性等安全需求.
2)通过智能合约技术可以在不需要知道传感器节点的真实身份情况下实现在许可链上的医疗传感器节点的身份来源认证.
3)基于DHT分布式存储机制与区块链技术实现了医疗数据的链上-链下存储,不仅避免了集中式医疗服务器所导致的信用问题,还可以通过区块链上的矿工来控制其他实体对医疗数据的访问,大大降低了医疗数据被泄露的风险.
4)性能分析表明,与其他无证书聚合签名方案[9,13,23,24]相比,本文方案有更低的通信和计算开销.
本文方案的系统模型包含6个实体:密钥生成中心(Key Generation Center,KGC)、医疗传感器节点(Medical Sensor Node,MSN)、签名聚合器(Signature Aggregator,SA)、区块链(Blockchain)、分布式哈希表(Distributed Hash Table,DHT)和医生(Doctor),具体的系统模型如图1所示.这些实体都通过智能合约相互连接.
图1 无线医疗传感器网络的系统模型图
1)KGC:负责生成系统参数,并为医疗传感器节点MSN生成相应的信用标识l1以及分发部分私钥.此外,它可作为一个权威的监管者,承担数据的监管工作,并能够在必要的时候,追踪医疗传感器节点的真实身份.
2)MSN:负责定期收集的病人的医疗数据,并生成相应的签名,最后通过公共信道将签名发送给SA.
3)SA:负责对各个传感器生成的单个签名进行验证,并在验证通过后进行聚合,最后将聚合签名通过安全信道发送到区块链.
4)Blockchain:负责交易信息和聚合签名的验证,在验证通过后,将交易信息存储至区块链上.最后将聚合签名通过安全信道发送到DHT.
5)DHT:负责存储病人的医疗数据.
6)Doctor:在授予访问权限后,根据病人的医疗数据,给出相应的诊断结果.
2.3.1 基于DHT的分布式存储机制
分布式哈希表是一种分布式存储方法,DHT能够在不需要中心服务器的情况下,让每个节点负责一小部分数据的存储,从而实现DHT的寻址和存储[17].本文将MSN的假身份、时间戳、信用标识和医疗数据的存储地址等信息存储至区块链中,保证了链上数据的不可篡改性,同时将医疗数据存储在DHT中,很好地实现了存储可拓展性和去中心化存储机制.而当外部实体向DHT请求访问医疗数据时,需要由区块链中的矿工决定是否授予请求者的访问权限.
2.3.2 共识机制
在本文中采用的是改进的授权拜占庭容错(Delegated Byzantine Fault Tolerant,DBFT)协议.在这个机制中,从矿工中选择一个领导者为新交易生成一个新的候选块,然后将候选块广播给其他矿工.如果超过2/3的矿工成功验证候选块,该候选块将被链接到区块链.同时通过聚合签名技术对DBFT的共识过程进行优化,大大地降低了区块链系统中签名的空间复杂度[18].
2.3.3 信任管理机制
当攻击者捕获了一些传感器节点后,可能会发起对聚合器的分布式拒绝服务(Distributed Denial of Service,DDoS)攻击.信任管理组件运行在许可区块链上,主动检测受到损害的传感器节点.在同一个基于信誉的信任模型的集群中,每个传感器节点都将监控其邻居节点的行为,并更新邻居节点的信誉值[19].如果节点信誉值低于阈值,那么该节点将会脱链.
2.3.4 智能合约
智能合约是一种允许在没有第三方参与的情况下,以代码方式验证或执行合同的计算机协议[20].在本文方案中,智能合约在不需要医疗传感器节点的真实身份的情况下就可以实现对传感器医疗节点身份来源认证,筛选出合法的节点来对消息进行签名操作,提高了方案的安全性.
1)匿名性:无线医疗传感器网络中除了KGC和MSN自身,其他实体都无法知道MSN的真实身份.
2)消息完整性:医生能够确保所接收到的消息是未受到篡改的.
3)消息认证性:医生能够确保所接收到的消息来源是可靠的.
4)可追踪性:KGC能够根据假身份跟踪出医疗传感器节点的真实身份.
本文所用的符号如表1所示.
表1 本文方案使用的符号说明
3.2.1 系统初始化算法
3.2.2 秘密值生成算法
输入RIDi和params,MSN计算医疗传感器节点的秘密值和假身份的步骤如下所述:
2)计算PIDi=RIDi⨁H(xiPpub,Ti),其中Ti是对应的MSN的假身份有效时间.
3)创建访问控制列表ACL,存储指定的医生的身份.只有这些指定的医生可以访问医疗数据.
4)将(PIDi,Xi)通过公共信道发送至KGC,并申请部分私钥.
3.2.3 部分私钥生成算法
输入params,信用标识li,系统主密钥s和医疗传感器节点假身份PIDi,KGC计算医疗传感器节点的部分私钥的步骤如下所述:
1)计算RIDi=PIDi⊕H(Xis,Ti)来验证假身份是否已注册.若尚未注册,KGC将每个MSN的假身份所对应的信用标识li标记为“0”,并拒绝生成部分私钥;若已经注册,则将每个MSN的假身份所对应的信用标识li标记为“1”,并继续执行以下操作.
3)计算hi=H1(Ri,PIDi,Ppub)和di=(ri+shi)modq,并(Ri,di)将通过安全信道传输给对应的MSN.
3.2.4 公/私钥对生成算法
输入部分私钥di以及秘密值xi,MSN设置公私钥对的具体步骤如下所述:
1)验证等式diP=Ri+hiPpub是否成立,若成立,那么MSN接受部分私钥di;否则,重新申请部分私钥.
2)将PKi=(Xi,Ri)设置为公钥.
3)将SKi=(xi,di)设置为私钥.
3.2.5 节点身份来源验证算法
输入MSN的假身份PIDi,私钥SKi以及系统主公钥Ppub.区块链在有效的时间内ti发布感知任务,需要加入任务的MSN需要先完成智能合约的身份来源认证.MSN与智能合约具体的交互过程如下所述:
2)智能合约验证等式QiP=Ai+(Ri+Ppub+Xi)zi是否成立.若等式成立,则将MSN加入该感知任务;否则,MSN会并被智能合约拒绝加入该感知任务.
3.2.6 签名算法
输入消息mi,
2)计算ui=H3(mi,PIDi,ti,PKi,li,Yi,ACL),vi=H4(mi,PIDi,ti,Ppub,li,Yi,ACL).
3)计算ωi=(yi+xiui+divi)modq.
4)设置σi=(Yi,ωi)作为mi‖ti上的签名,并将<σi,mi,ti,PIDi,PKi>通过公共信道发送给SA.
3.2.7 验证算法
输入签名σi=(Yi,ωi),消息mi,params,时间戳ti,公钥PKi,访问控制列表ACL和
1)计算ui=H4(mi,PIDi,ti,Ppub,li,Yi,ACL),ui=H3(mi,PIDi,ti,PKi,li,Yi,ACL)和hi=H2(Ri,PIDi,Ppub).
2)验证等式ωiP=Yi+Xiui+vi(Ri+hiPpub)是否成立,若等式成立,SA接收签名;否则,拒绝接收签名.
3.2.8 聚合签名算法
输入在mi‖ti上的多个签名σi=(Yi,ωi),其中1≤i≤n,SA生成聚合签名的具体步骤如下所述:
2)输出聚合签名σ=(Y1,Y2,…,Yn,ω),SA将聚合签名σ通过公共信道发送到区块链,并同时向区块链发布一个交易TA,其中包括医疗传感器节点的假身份PIDi,信用标识li,访问控制列表ACL,时间戳ti等信息.
3.2.9 聚合签名验证算法
输入聚合签名σ=(Y1,Y2,…,Yn,ω),消息mi,公钥PKi,params,时间戳ti,访问控制列表ACL以及
1)验证交易TA是否合法,若不合法,拒绝验证聚合签名;若合法则继续执行以下操作.
2)计算vi=H4(mi,PIDi,ti,Ppub,li,Yi,ACL),ui=H3(mi,PIDi,ti,PKi,li,Yi,ACL),hi=H2(Ri,PIDi,Ppub).
3.2.10 数据访问
由于本文的WMSNs系统是许可链上的,在Fabric中,只有通过身份认证的节点才可以加入.因此,只有加入许可链的医生才能够查看链上的病人的身份信息.当医生加入许可链后,能够通过区块链的每个区块的哈希摘要值进行检索,最后访问到存储在链上的病人的信息(假身份,信用标识,医疗数据的存储索引等).此外,由于每个医疗传感器节点会创建一个访问控制列表ACL,表中存储的是医疗传感器节点允许访问医疗数据的医生的身份.如果医生要访问存储在DHT中的医疗数据,首先需要向区块链发布一个交易TB,其中包括传感器节点的假身份,医生的身份,数据存储的地址.矿工首先验证交易TB是否合法,如果验证不通过,医生将无法获得访问的权限;如果验证通过,区块链中的矿工再验证请求医疗数据的医生的身份是否属于访问控制列表ACL.如果在列表中有该医生的身份,则将TB写入新块,并且医生获得访问DHT中医疗数据的权限,并通过医疗数据的存储地址,假身份PIDi和时间戳ti进行检索.当医生在DHT中找到相应的病人的医疗数据,可以对其提出相应的诊断方案.在该方案中,只有通过访问控制的交易才能写入块,如果未经授权的医生试图访问医疗数据,它无法通过区块链的验证.此外,ACL由医疗传感器节点自己决定,任何人都不能修改它.因此,没有医疗传感器节点的许可,任何实体都不能访问医疗数据,从而很好地实现了对敏感医疗数据的保护.
本文方案的正确性通过以下的等式得到保证.
1)智能合约通过以下等式确保MSN的身份来源是否合法:
QiP=aiP+(ri+shi+xi)ziP
=Ai+(Ri+hisP+xiP)zi
=Ai+(Ri+hiPpub+xiP)zi
=Ai+(Ri+hiPpub+Xi)zi
2)区块链通过以下步骤确保聚合签名是否有效:
本文考虑了系统中存在的两类攻击者,即为恶意的MSN和恶意的KGC[21].恶意的MSN可以替换任意MSN的公钥,但是不可以访问系统主密钥.恶意的KGC可以访问系统主密钥,但是不可以替换任意MSN的公钥.
初始化阶段:CΙ执行系统初始化算法生成params和s.CΙ发送params给恶意的MSN,并秘密保存s.
查询阶段:在查询阶段,允许恶意的MSN对H,H1,H2,H3,H4进行查询.
•公钥查询:CⅠ创建一个空的列表list7.当接受到来自恶意的MSN关于用户PIDi的公钥查询查询时,如果在列表list7中存在元组(Xi,Ri,PIDi),则CⅠ将(Xi,Ri)返回给恶意的MSN;否则,执行CⅠ以下步骤:
为了成功伪造签名,CⅠ的输出需要满足以下条件:
1)T1:CⅠ从未中止过伪造签名的过程.
初始化阶段:CⅡ执行系统初始化算法生成params和s.CⅡ发送params和s给恶意的KGC.
查询阶段:在查询阶段,允许恶意的KGC对H,H1,H2,H3,H4进行查询.
•公钥查询:CⅡ创建一个空的列表list7.当接受到来自恶意的KGC关于用户PIDi的公钥查询查询时,如果在列表list7中存在元组(Xi,Ri,PIDi),则CⅡ将(Xi,Ri)返回给恶意的KGC;否则,执行CⅡ以下步骤:
为了成功伪造签名,CⅡ的输出需要满足以下条件:
1)T1:CⅡ从未中止过伪造签名的过程.
1)消息认证性和完整性:根据定理1和定理2,如果不能解决ECDLP的困难性问题,任何攻击者都不能伪造有效的签名.因此,本文的方案具有消息认证性与完整性.
2)匿名性:在医疗数据通信过程中,使用的是医疗传感器节点MSN的假身份PIDi=RIDi⨁H(xiPpub,Ti),攻击者无法通过假身份来识别出医疗传感器节点的真实身份,因此本文方案具有匿名性.
3)可追踪性:KGC可作为一个监管机构,对整个数据传输过程进行监管,若发现恶意的数据源或信誉值低于阈值且脱链的医疗传感器节点,区块链可以协助KGC向各个区块进行广播发现恶意数据消息.此外,在必要的时候,KGC能够快速跟踪在有效时间Ti内恶意的MSN的真实身份,具体操作如下所述:
a)计算xiPpub=xiPs=Xis.
b)计算RIDi=PIDi⨁H(Xis,Ti).
表2 基本运算时间所需消耗
如表3所示,本文方案与文献[9,13,23,24]中的方案进行了对比.由于在文献[9,23,24]中的方案都使用双线性对运算和映射到点的哈希运算,这使得他们方案在签名和验证阶段的效率大大降低.而本文方案是基于无双线性配对运算且未使用到映射到点的哈希运算,因此,本文方案总共所需的时间消耗是5Tm+3Ta=2.2154ms.此外,本文方案比Kumar等人[9]方案节省93.2%计算时间,比Gayathri等人方案[13]节省了28.5%计算时间,比Wu等人方案[23]节省91.9%计算时间,比Shen等人方案[24]节省了92.9%计算时间.因此,本方案和其他相关的方案[9,13,23,24]相比,本文的方案具有更高的计算效率.
表3 计算开销对比
表4 通信开销和安全性对比
假设n=100,即有100个签名进行聚合.Kumar等人[9]的方案聚合签名长度需要206848bits,Gayathri等人[13]的方案聚合签名长度需要800bits,比Wu等人[23]的方案聚合签名长度需要103424bits,比Shen等人[24]的方案聚合签名长度103424bits,而本文方案聚合签名的长度只需要32160bits.因此,本文方案聚合签名的通信开销比Kumar等人[9]的方案降低了84.46%,比Wu等人[23]的方案降低了68.91%,比Shen等人[24]的方案降低了68.91%.所以,本文方案的聚合签名的通信开销远远低于文献[9,23,24]中的方案.
在安全性方面,如表4所示,文献[9]的方案既无法抵抗恶意的MS的攻击[10],也无法实现匿名性和可追踪性.文献[13]中的方案虽然能够实现匿名性和可追踪性,但是无法抵抗恶意的MS攻击和公钥替换攻击[14].文献[23,24]中提出的方案虽然是安全的,但是无法实现匿名性和可追踪性等安全需求.虽然Gayathri等人[13]的方案中的聚合签名的的通信开销低于我们的方案,但是,由文献[14]可知,很显然Gayathri等人[13]的方案无法抵抗恶意的MS攻击和公钥替换攻击.总的来说,本文提出的方案能够以相对较高的效率满足WMSNs系统中的所需的所有的安全需求.因此,本文提出的方案能够很好的适应于WMSNs系统.
本文提出一种适用于WMSNs的基于区块链的无证书聚合签名方案,该方案无需依赖集中式的医疗服务器,采用基于分布式哈希表的存储机制实现链上-链下的方式存储医疗数据,不仅实现了去中心化存储而且提高了数据的安全性.同时,通过智能合约技术可以在不需要真实身份的情况下实现对医疗传感器节点的身份来源认证.此外,本文方案在随机预言模型下具有不可伪造性,并同时满足完整性、认证性、匿名性、可追踪性等安全需求.性能分析表明,本文方案与其他无证书签名方案相比,有较高的计算效率.