无线体域网(wireless body area network,WBAN)是以人体为中心的小型网络[1].WBAN通过在人体的皮肤表面、衣物、人体周围嵌入的传感器节点收集人体生理信息.WBAN收集的人体血压、心电、体温、脑电波甚至血液参数等各种信息,被视为个人敏感数据[2],这些数据被医院、学校、政府部门、疾病研究机构等许多行业使用.随着WBAN的发展,WBAN产生了大量的数据,但WBAN节点的存储能力有限,将WBAN数据上传到云服务器存储可以解决WBAN不能存储大量数据的问题[3-4].
WBAN数据上传到云存储服务器时,数据被多用户共享,数据不再是本地存储和计算,完全受控于云服务器,使得存储在云服务器上的数据面临着以下严重的安全挑战.
1) 数据在上传到云服务器的过程中,可能受到恶意的拦截和篡改.
2) 人体参数的各项数据通常具有隐私性,数据存储在云上时,需要保证数据对云存储服务商的不可见,否则云存储服务商可能会对数据恶意传播,数据隐私性将遭到破坏.
3) 假设云存储服务商不可信,可能由于自身利益等原因,对云服务器上使用频率低的数据进行修改和删除,使数据的完整性遭到破坏.
4) 对于未授权的机构要避免其访问数据.云存储数据由于多方共享,授权的不同机构对数据处理有着不同的要求,如何多方协调处理数据,避免单独机构在未经多方同意的情况下修改数据也是当前面临的重要问题之一.
区块链技术革命性地解决了“拜占庭将军问题”,具有不可更改、不可伪造、完全可追溯的安全特性,实现了一种无信任的共识网络系统[5-6].区块链系统一般由应用层、合约层、激励层、共识层、网络层、数据层等5个部分组成[7].区块链技术具有分布式存储和共识机制,对于解决访问控制和完整性验证两方面的安全问题都具有优势.
1 基于区块链技术的访问控制方法针对数据的访问控制问题,基于区块链技术设计了如图 1所示的访问控制框架.框架中有数据上传者(DUP)、数据访问者(DAP)、数据操作授权中心(DAAC)、区块链网络(BCN)、云存储服务商(CSSP)等5种角色.BCN逻辑上是由集合U={U1,U2,U3,…,Un}构成的区块链网络;物理上,Ui是已经被DAAC授予云存储服务的用户节点,Ui使用区块链存储访问请求,Ui具有DUP和DAP的双重身份,能够进行数据上传和访问,Ui可提出访问请求、进行访问控制和验证BCN对访问请求的控制结果.
在本框架中,各节点密钥的生成及签名方式,采用无可信中心的数字签名方法[8].密钥生成首先需要进行数据初始化,H为一个单向哈希函数,(P, P′)为两个安全的大素数,g为GF(P)阶,为P′的生成元,2511 < P < 2512.Q为P′-1的素因子,α为GF(P′)上的阶为Q的生成元,2159 < Q < 2160,BCN用户节点集合U={U1, U2, U3, …, Un}.随后进行各节点密钥生成,对于用户节点Ui,i∈[1, n],Idi为Ui的唯一标识号, Idi∈[1, Q-1],Idi对BCN的用户节点公开.集合U中的每个用户节点构造fi(x)=(a0+a1×x+…+an/2+1×xn/2+1) mod Q,fi(x)为n/2+1次多项式,其中0 < ak < Q,k=0, 1, 2, n/2+1,ak由Ui秘密保存,私钥SKi=αfi(0)=a0,公钥PKi=gαfi(0)modP,群公钥y=gαf1(0)×αf2(0)×…×αfn(0)modP.Ui为其他的用户成员Uj计算vijyji,vij≡αfi(Idj)modP′,yji≡gvijmodP,Ui将计算的vij和yji公开发送到BCN的其他用户节点.
各节点收到访问请求时,生成子签名,Uj发送访问请求O到BCN,BCN的用户节点Ui查看访问请求O,生成随机数di,并计算ri=αdi,发送ri到BCN,表示同意此访问请求.同意访问请求O的用户节点构成集合U={U1, U2, U3, …, Uw},如果w≥n/2+1表示BCN中超过50%的节点同意此访问请求.同意访问请求O的节点Ui利用自己的密钥SKi和各个节点收到的αfj(Idi)来生成子签名,子签名si如式(1)所示:
(1) |
Ui生成子签名后,选取随机数ki,满足gcd(ki, P′)=1,并计算zi,si′,zi=gkimodP,si′=ki-1(si-αfi(0)×zi)modP′,此时Ui可将消息{O, si, ri, zi, si′}发送给Uj.Uj收到各节点发来的子签名后,计算(R, S),式(2)计算R,式(3)计算S.
(2) |
(3) |
此时Uj生成自己对访问请求O的数字签名,Uj在区间[1, P-1]生成随机数ej,计算lj,zj,lj=gejmodP, zj=(αfj(0)×O′-ej×lj)mod(P-1),其中zi∈[1, P-2],O′=H(O).随后BCN各节点可通过gS≡y(O′)n/2+1×RmodP验证群签名的真实性,验证成功,则将访问请求存储到自己的区块中.
BCN中的共识机制是通过改进Raft算法实现的.首先通过心跳机制交互信息选取出记账人(Leader节点),记账人随后通过区块链长度和区块链中最后一个区块的哈希值进行一致性判断,如果不相同,则进行区块补充, 最终使得各节点区块链达到一致.Leader节点使得BCN中各个节点的区块链达到一致后,当添加区块时,需要BCN各节点利用区块的哈希值对区块进行验证,如果BCN中大部分节点区块验证成功,则将区块记录.Leader节点随后将区块发送至云存储服务器.
在本文设计的框架中,BCN中各节点均可对请求进行投票,协同控制请求的有效性,并且通过区块记录请求.BCN中通过改进的Raft算法,使得各节点的区块链一致,随后对区块的真实性进行验证,保证了上传到云存储服务中的区块是真实可信的.
2 基于区块链技术的完整性验证 2.1 区块的数据结构设计WBAN数据上传到CSSP进行存储,WBAN感知数据的存储格式举例如表 1所示.体温、血氧、心率这些信息是BCN用户节点在某一时刻收集的,数据D表示为(数据号,用户号,体温,血氧,心率).
CSSP存储WBAN数据是通过数组节点之间数据号的间隔为M的有序数组和Merkle树相结合的方式.有序数组每个位置对应1棵Merkle树,添加数据时只需修改数组节点对应的Merkle树即可; 有序数组节点存储的是(数据号,Merkle树根节点指针),M表示Merkle树存储叶子节点数量的上限.Mekle树节点分为内部节点和叶子节点,内部节点使用的哈希算法为MD5,叶子节点使用的哈希算法为同态哈希算法.内部节点包含的信息是(R,哈希值),叶子节点包含的信息是(R,哈希值,加密数据D′),叶子节点的R为(D′的数据号-对应有序数组节点数据号),内部节点的R为子节点中较大的R.叶子节点同态哈希值是使用文献[9]的同态哈希算法计算的.
数据D(数据号,用户号,体温,血氧,心率)经过SHK加密后为数据D′(数据号,用户号,SHK(体温),SHK(血氧),SHK(心率)),SHK为BCN各节点使用的数据共享密钥用来加密数据,数据D′的数据部分SHK(体温),SHK(血氧),SHK(心率),这三项数据可通过1×m的矩阵FD表示,由于数据号、用户号作为主要唯一标识,不对其进行加密,所以初始化m=3,FD表示如式(4)所示:
(4) |
其中,修改请求X(数据号,SHK(血压),SHK(体温),SHK(心率))的数据部分可通过矩阵FX表示,如式(5)所示:
(5) |
当CSSP处理修改请求X时,根据X中的数据号找到加密数据D′后,计算D′+X=D″,数据部分相加如式(6)所示:
(6) |
可证明得到hK(FD+FX)=hK(FD)×hK(FX),即算法满足乘法同态,其中K为同态哈希密钥.当CSSP设置M为4时,存储结构如图 2所示.
区块链由区块链式连接而成.区块头部分包含父哈希——上一区块哈希值;时间戳——区块确实存在某一时刻;Merkle树根节点哈希——区块中的Merkle树经过运算得到的根节点哈希值;当前区块哈希——MD5(父哈希+时间戳+Merkle树根节点哈希).每次区块生成时,首先将上一个区块的哈希作为父哈希,然后计算当前区块哈希,通过父哈希与上一个区块相连,形成链式结构.
区块体包含Merkle树——当要将区块加入到区块链中时,通过哈希表中存储的访问请求生成Merkle树;哈希表——访问请求经过BCN验证成功后将被放入到区块的哈希表;认证路径数组——Merkle树叶子节点的认证路径的二维数组表示.Merkle树的叶子节点存储访问请求.初始区块被称为创世区块,即每个BCN用户节点区块链的第一个区块.其中Merkle树为空,父哈希值为空,时间戳为BCN统一规定的时间,哈希值为MD5算法处理时间戳后得到的哈希值.区块链结构如图 3所示.
针对BCN的区块结构和CSSP存储WBAN数据的存储结构,利用同态哈希算法的同态特性对上传到CSSP的WBAN数据进行完整性验证.本文中,由于BCN用户节点均存储访问请求,BCN用户节点不需要委托可信第三方,即可对数据进行完整性验证,同时支持数据的动态操作.
1) 数据完整性验证模型.数据完整性验证模型中的角色有上传节点Uj使用密钥SHK加密数据,使用同态哈希密钥K生成加密数据的哈希值,BCN验证节点Ui随机选取数据号,进行数据验证,CSSP存储加密数据,BCN节点Uk返回认证路径,保证修改请求的可靠性.数据验证模型如图 4所示.
2) 数据完整性验证方案.数据完整性验证方案由生成密钥(KeyGen),标签生成(TagBlock),挑战(Challenge),证据生成(ProofGen)和证据验证(Verify)5部分组成,说明如下:
① 密钥生成阶段:密钥生成算法DAAC采用同态加密算法Paillier完成对密钥(PHK,SHK)的生成;
② 标签生成阶段:数据上传时,上传节点对加密后的数据D′进行同态哈希运算,生成标签hK(D′).云存储服务器对数据进行存储,生成标签PD(PD1,PD2,PD3,…),PD为在CSSP存储结构中数据D′的Merkle树的认证路径.BCN用户节点Uk存储修改请求X时,生成标签hK(X),PX(PX1,PX2,PX3,…),PX为修改请求X在区块结构的Merkle树中的认证路径;
③ 挑战阶段:验证节点Ui选取数据号NM,并发送NM到数据上传节点Uj,Uk,CSSP;
④ 证据生成阶段:CSSP收到NM后,查找标签PD(PD1, PD2, PD3, …),将PD发回到Ui,上传节点Uj收到NM后,查找标签hK(D′),将hK(D′)发回给Ui,BCN用户节点Uik收到NM时,查找修改请求数据号为NM认证路径PX,发送PX到Ui;
⑤ 证据验证阶段:验证节点Ui收到PX后,Uk可验证查找的标签hK(X)是否可靠.假设PX是3维向量(PX1, PX2, PX3),PX3为区块中Merkle树根哈希,通过式(7)验证PX是否正确.
(7) |
如果式(7)成立,说明Ui查找的请求标签hK(X)正确,随后对数据完整性进行验证,假设PD是三维向量(PD1, PD2, PD3),PD3为CSSP存储结构中Merkle树根哈希,通过式(8)可对数据完整性进行验证.
(8) |
如果式(8)成立,说明CSSP存储的数据没有被恶意篡改,数据完整.
3 实验与结果分析本文设计的框架主要是保证BCN用户节点能够协同控制对云存储数据的访问,保证云存储数据的安全.下面针对框架的访问控制能力进行实验和安全分析,并对本文提出的数据完整性验证方案进行评估.
3.1 实验环境与实验数据 3.1.1 实验环境本文的编程软件主要使用了Pycharm,以Linux系统为平台,通过Docker容器模拟分布式环境的搭建,编程语言采用Python,通过Redis数据库进行数据存储.
3.1.2 实验数据本文的实验数据集使用的是已经脱敏的北京市某医院通过WBAN采集的病人生理信息数据,其数据构成如表 2所示.
表 2所示的是部分病人的身体信息,由于这些数据只是单点采集,而本文讨论的是多个节点收集的WBAN感知数据的云存储,所以针对分布式的环境对数据格式进行了调整(格式见表 1),其中用户号表示收集、使用数据节点节点号,数据号为数据在云存储中的唯一表示.
3.2 访问控制安全性分析及实验数据隐私性:BCN各节点将数据上传到CSSP时,利用共享密钥SHK对数据进行加密,保证数据对CSSP不可见.
抗单点安全:本文设计的框架保证了BCN用户节点提出的访问请求被多个BCN用户节点的协同控制,通过无可信中心的门限签名方法实现了控制权限的分配,访问请求只有通过BCN网络中大多数节点的同意才能被CSSP处理.
问责机制:BCN用户节点提出访问请求时需要进行数字签名,访问请求经过多数BCN用户节点同意后,需要将访问请求和数字签名一起存储到区块中.通过数字签名可以知道BCN网络中的哪个用户节点提出的访问请求.
区块验证:BCN采用改进的Raft算法,Leader节点维护BCN各用户节点区块链的一致,如果Leader节点伪造访问请求,则区块无法通过BCN其他用户节点的验证,验证失败,Leader节点自动放弃记账权.区块验证保证了BCN网络中Leader节点无法伪造访问请求,BCN用户节点验证区块的基础是节点区块链长度保持一致,图 5为BCN在选举出Leader节点后,BCN各节点区块链长度随着时间的变化情况.
图 5表明在Leader选举后的100 ms内,就能保证BCN各节点区块链的一致.BCN节点区块链长度一致,说明各节点均参与了访问控制.结果表明,设计的框架能够有效地保证数据的隐私性、访问请求的合理性,恶意的访问请求和未授权的访问请求均不能对云存储的数据加以访问,并且方便了追踪问责.
3.3 数据完整性验证实验在数据完整性验证的实验中,选取了多个节点对多条数据进行完整性验证,并对完整性验证结果进行统计.图 6是BCN用户节点对随机选取数据号进行完整性验证的结果,其中圆形节点表示验证成功,菱形节点表示验证失败.实验结果表明,不同BCN用户节点对数据的完整性验证结果一致,表明完整性验证方案支持各用户均能进行完整性验证.
针对WBAN数据存储在云服务器中存在的诸多安全问题,本文设计了基于区块链技术的访问控制框架,限制了多用户对云存储中WBAN感知数据的访问,之后在框架的基础上提出了数据完整性验证方案.最后,对框架的安全性进行了实验和分析,并对所提出的数据完整性验证方案进行了实验评估,实验分析结果表明了方案的正确性、可行性,具有一定的理论和实用价值.
[1] |
Rahman A F A, Ahmad R, Ramli S N.Forensics readiness for wireless body area network (WBAN) system[C]//Proceedings of International Conference on Advanced Communication Technology.Piscataway: IEEE, 2014: 177-180.
|
[2] |
Kim Y, Lee S S, Lee S K. Coexistence of ZigBee-based WBAN and WiFi for health telemonitoring systems[J]. IEEE Journal of Biomedical & Health Informatics, 2015, 20(1): 222-230. |
[3] |
He D, Zeadally S, Wu L. Certificateless public auditing scheme for cloud-assisted wireless body area networks[J]. IEEE Systems Journal, 2018, 12(1): 64-73. |
[4] |
Li S, Hong Z, Jie C.Public auditing scheme for cloud-based wireless body area network[C]//Proceedings of IEEE/ACM International Conference on Utility & Cloud Computing.Piscataway: IEEE, 2017: 375-381.
|
[5] |
谢辉, 王健. 区块链技术及其应用研究[J]. 信息网络安全, 2016(9): 192-195. (Xie Hui, Wang Jian. Study on block chain technology and its application[J]. Network Security, 2016(9): 192-195. DOI:10.3969/j.issn.1671-1122.2016.09.038) |
[6] |
George P, Ilya S.Mechanising blockchain consensus[C]//Proceedings of 7th ACM SIGPLAN International Conference on Certified Programs and Proofs.New York: ACM, 2018: 78-90.
|
[7] |
袁勇, 王飞跃. 区块链技术发展现状与展望[J]. 自动化学报, 2016, 42(4): 481-494. (Yuan Yong, Wang Fei-yue. Blockchain:the state of the art and future trends[J]. Acta Automatica Sinica, 2016, 42(4): 481-494.) |
[8] |
Krohn M N, Freedman M J, David M.On-the-fly verification of rateless erasure codes for efficient content distribution[C]//Proceedings of IEEE Symposium on Security & Privacy.Piscataway: IEEE, 2004: 226-240.
|
[9] |
Tsai T T, Tseng Y M, Hung Y H, et al.Cryptanalysis and improvement of a provable data possession scheme in public cloud storage[C]//Proceedings of Third International Conference on Computing Measurement Control & Sensor Network.Piscataway: IEEE, 2017: 56-59.
|