董婉婷
(济宁市第一人民医院,山东济宁 272011)
当前,医院对信息安全的要求逐渐提高,对患者个人隐私数据保护的需求也越来越多。因此,需要关注如何更好地利用便捷的互联网进行医疗服务,且还能够防止医疗信息系统受到攻击和窃取[1]。随着区块链和云计算的推广,相关技术在医疗卫生服务领域也得到了迅速发展,包括医疗信息化、移动医疗、医疗电子商务、可穿戴设备、在线医疗服务等。区块链以点对点的方式连接参与者,而参与者通过共识机制和智能合约共同维护同一系统,并实现较为灵活的合作模式[2-3]。
在传统的加密方法中,客户端首先下载并解密本地加密的文本数据。在发送到指定客户机前,客户机将使用公钥对数据进行加密。指定客户机能够对数据进行解密,但这需要大量的网络开销和操作成本,且还占用了客户机有限的内存,从而使其成本成倍增加[4]。Rivest Shamir Adelman(RSA)是一种基于私钥的算法,该算法用于为电子邮件、Web 和ATM机传输安全数据。在RSA 算法中,公钥的加密是已知的,而私钥的解密是秘密的。因此,文本的加密和解密主要是基于密钥中需要分解质数的数量[5-6]的。随着智能医疗的普及,医疗机构可以将数据存储在云端,以节省设备成本。为了数据安全和保护患者的个人隐私,一些医疗机构需要事先对数据进行加密,形成密文。此外,还需要经常与其他医疗机构共享某些密文,并防止他人破解该数据密文。
基于上述内容,该文提出了在区块链与云计算中,将区块链的去中心化和防篡改与分布式云计算节点相结合[7-9],同时利用基于Mersenne 质数的改进RSA 算法进行加密的解决方案。其能够帮助卫生机构以较低的成本对患者数据进行保护,并实现医疗机构之间的数据交互。
传统的医疗数据访问控制技术,建立并实现了一种可靠的服务器安全访问策略,但其难以适应现代分布式的网络环境。而区块链通过分布式数据存储、可靠的点对点传输、共识机制以及加密算法,带来了新的解决思路[10-11]。传统的ABE 机制既不能完全保证数据的机密性,也无法有效防止冲突攻击且未能满足属性撤销所带来的巨大计算开销[12-13]。将区块链应用于云计算,利用区块链的安全机制提升云计算的安全存储和性能是一个重要的研究核心。区块链与云计算的融合,再加上适当的安全策略,即可解决数据共享与隐私之间的矛盾[14-16]。
当云医院与其他医院进行共享数据授权时,需要获取其他医院的公钥。因此其应为每个用户生成相应的密钥,然后将该密钥发送到云。当用户请求访问这些数据资源时,云会在验证身份认证与授权认证后,根据用户的公钥返回数据的加密文本,并与相应的密钥、密文进行解密,从而得到相应数据的原始明文资源。
云需要为每个授权用户生成一个重新加密的密文,而未授权用户则无法获得其他用户重新加密密文的权利。即使未经授权的用户获得了重新加密的密文,其也无法解密相应的明文数据。将ABE 应用于代理重加密时,可以同时授权多个具有同一组属性的用户。
如图1 所示,代理重加密过程减轻了医院A 的负担,其只需生成代理密钥;而具体医疗数据的传输、加密转换、文件存储均由云服务提供商完成。代理重加密能够实现密文医疗数据在云中的共享,且不会泄露数据所有者的解密密钥。该数据仅存储一次,但却能够共享多次,而为了控制权限只需生成共享密钥即可。
该文采用Paillier 同态的代理重加密和RSA 算法来防止共享医疗数据的泄漏。若加密函数仅满足加法同态,则只能进行加法和减法运算;若一个加密函数仅满足乘法同态,则其只能执行乘法和除法运算。因此Paillier 算法与加法同态,RSA 算法与乘法同态。在不可信的云存储中,当数据的机密性无法保证时,代理重加密部分用于重加密和授权。在第三方不可信的开放环境下,能够保证云存储中敏感数据的机密性。在同态加密中,私钥加密医疗数据,仅有客户端才具有公钥。在使用代理重加密生成的密钥中,即使恶意攻击者获得其中一个密钥,其仍需另一个不同的密钥才可进行解密。若攻击者获得所有加密数据,其也无法解密并获取客户端和服务器之间的原始明文数据,从而也确保了即使是处理器也无法访问数据的信息。该文使用基于Mersenne 质数的改进RSA 重加密算法进行加密,从中央认证中心输出公钥和密钥对、中心主密钥、系统公钥和公共参数的具体实施步骤如下:
1)生成一对公钥和私钥。医院A 和医院B 分别请求云服务提供商生成其公钥与私钥。在提供商分别为二者生成一对公钥和私钥后,云服务提供商将秘钥返回给医院A 及医院B。
2)随机选取三个相对较大且相互独立的质数p、q和h进行组合,使得下列组合互质,即如式(1)所示:
3)计算p、q和h的公共模数n=p·q·h,并选择整数e(1 <e<φ(n)),使得e和φ(n) 互为质数,从而有式(2)-(4)所示的数理关系:
式中,m是要加密的信息,即明文;c为加密后的信息,即密文。
4)随机选取η,使得
5)利用式(4)计算模反元素的存在性,从n中因式分解出η对应参数的γ,计算方法为:
L定义为:
6)得出公钥(n,η)和私钥(λ,γ)。
7)生成加密文件。医院A 首先使用RSA 来计算并加密数据,以生成加密文件c1。然后医院A 根据第二层进行加密,用其公钥对RSA 的密钥进行加密,以生成加密文件c2。最终医院A 将两个加密文件上传到服务器。
8)使加密的信息m∈Zn。
9)随机选取r并使得
10)计算密文。
11)构造代理重加密密钥。
医院A 向云服务提供商请求医院B 的公钥,提供商将医院B 的公钥返回给医院A。医院A 再使用医院B 的公钥和自己的私钥生成重加密密钥,然后医院A 将新生成的重加密密钥上传到服务器。
12)计算公钥和私钥。
13)Paillier 算法生成重新加密的密文,并将公钥发送到云计算服务器。对于给定的公钥和第二层密文,该算法可以使用重加密密钥生成公钥的第一层密文。服务器使用医院A 上传的重加密密钥和密文进行代理重加密计算,从而生成新的密文。
14)医院B 请求数据并解密。医院B 请求云服务器解密数据和相应的密文,云服务器将重新加密的文本发送到医院B。医院B 解密密文,并得到密钥。然后使用RSA 进行解密,从而得到原始明文数据。
16)计算信息的方法如式(7)所示:
该文通过使用某医院患者常规体检的数据来对整个方案进行模拟实验,以讨论影响该方案可靠性的因素,其数据是一个25 维向量。为了完成每个加密任务τ,加密任务ρT的处理器将首先接收一个25维医学数据向量。然后该处理器对向量中的每个元素进行加密,并将加密结果发送到其所在的云节点ENT。由于该方案在云计算方面采用了Hadoop 和Spark 框架,因此具有更优的存储和计算能力,可及时响应用户的请求,并完成用户的上传、计算、下载操作,以达到动态共享和患者隐私保护的目的。
对于每个云端用户,其可靠性被初始化为0.5,而根据上文所述,用户的可靠性随着数据准确性的提高而增强。
参数γ的不同值对可靠性的影响可以从n增加时用户可靠性的变化中反映出来,n表示客户端要实现的加密任务数。如图2 所示,若用户端能够不断地提供正确的数据,则γ决定其可靠性收敛到1的速度,且γ值越大,其可靠性收敛到1 的速度越快;但当γ值较大时,容易受到内部与外部的攻击。因此,通常设置γ∈[2,3]。
当步长为0.05 时,η的值从初始值0.03 变为0.28,如图3 所示。η决定了可靠性收敛到0 的速度,且η的值不能较大;否则,由于各种意外因素,当产生错误数据时,可靠性会急剧下降,因此应避免这种情况。此外,η的值也不能较小;否则,其将对不可靠情形给予过少的惩罚,并导致进一步的恶意攻击。γ和η的值应满足exp{-γ} <1-exp(-η)的要求,该文将其设置为η=0.13。
为了分析更新参数u、v对可靠性的影响,该文设置了包含100 个加密任务的场景。这100 个用户端需要处理100 个加密任务。在初始阶段,处理加密任务的每个用户端的初始可靠性为0.5。在所有加密处理中,假设存在10 个不可靠的用户端,则设置λ=0.15。
在分析参数u对可靠性更新的影响时,随机选取一个正常的用户端,观察可靠性随任务数n的变化。这里,u的值包括5、20、50、80 和100。对于每个u值,进行100 次实验。总结当n从1 增加到100 时,可靠性的平均值变化,如图4 所示。从图中可知,u的值越小,可靠性收敛到1 的速度越快。更新可靠性时,u值越小则exp{-u·di-γ}值越大,在给出一个合适的数据后,可靠性就越高。而当u为0 时,可靠性的增加完全由γ决定。因此,u值不能过小;否则,容易造成潜在的安全风险,通常设置为u∈[50,100]。
同时,该文还分析了v对可靠性更新的影响,v值为0.001、0.005、0.01、0.05 和0.1。需要注意的是,v比u的值小得多,而这正是因为同类用户的数据差通常较为接近。如图5 所示,图中v的值越大,可靠性收敛到0 的速度越快,而当v接近0 时,可靠性的降低由参数η决定。为了避免由于偶尔提供少量错误数据而导致用户可靠性下降过多,因此v值不能过小,通常设置为v∈[0.005,0.01]。
模拟实验讨论了方案中关键参数对方案可靠性的影响,同时给出了方案参数的合理范围,并验证了所提出方案的可靠性。
区块链是一种全新的分散分布式数据库,其是一系列采用密码方法的数据块。该文结合代理重加密和基于属性的加密两种加密方法,构建了基于区块链的云计算关键技术解决方案,并应用于分布式医疗数据的安全与隐私保护。其不仅可以实现云数据的完整性测试,还能够实现更广泛的安全加密计算。智能医院只需向云服务器提供代理密钥,云服务器即可将医疗数据转换为指定格式的加密文本。固定用户端可以随时使用其私钥访问这些共享数据资源,且无需下载。由于医疗数据较容易获取、被垄断、篡改且难以共享,若第三方不值得信任,则无法实现安全共享和存储分布式、分散、可跟踪和不可更改的医疗数据的目的。在未来将考虑改进共识机制,研究如何实现云数据的细粒度控制,以及如何减少冗余数据的存储开销,从而使区块链的性能可满足智能医院的更多需求。