0 引言
在21世纪医疗领域,电子病历(Electronic Medical Records,EMRs)已经取代传统的纸质病历,成为病患管理的关键工具。电子病历的引入有效地解决了存储、查询、数据共享以及医疗错误等方面的问题,为患者提供了更全面的诊断信息
[1]。然而,当前的电子病历系统面临着数据安全和共享方面的多重挑战。传统的存储和共享方式存在着数据泄露、篡改和未经授权访问的风险,这不仅可能导致个人身份信息的泄露,还可能对患者的隐私和安全构成威胁。此外,医疗机构之间的数据共享也面临着隐私保护和数据一致性的问题。目前存在的一些电子病历系统方案设计复杂,实施起来较为困难。
为解决这些问题,区块链技术作为一种新兴的分布式账本技术,在医疗领域得到了广泛的应用。区块链以其去中心化、不可篡改和匿名性等特点,为电子病历提供了平台支持,并提供了多种解决方案来应对电子病历系统中的数据安全和共享问题
[2]。薛腾飞等
[3]提出了一种基于区块链的医疗数据共享模型,该模型通过代理重加密的方式实现了数据安全共享。毕娅等
[4]通过双链结构实现了医疗数据的安全共享,文献[
5]采取了一种无证书的基于身份和类型的加密方式,利用 DPOS(Delegated Proof of Stake, 委托权益证明)共识算法选取代理节点,以此来抵抗身份伪装或者重放攻击,从而保证数据的安全。周正强等
[6]提出了一种基于联盟链的医疗数据共享模型,该模型通过云存储器存储加密数据,利用联盟链存储数据的元数据,并通过属性加密技术实现数据的安全共享。文献[
7]则采用智能合约的方式实现对病历数据的访问控制。
然而,尽管区块链技术在解决电子病历系统中的安全和共享问题上具有潜力,但仍存在一些挑战。首先,传统的公钥密码体制中,需要通过第三方机构(如证书颁发机构)签发数字证书来验证公钥的真实性,这增加了系统的复杂性和成本。其次,现有的加密算法可能存在着密钥过长、加解密效率低下等问题,不太适用于医疗领域中对实时性和效率要求较高的场景。
因此,为了克服这些问题,本文提出了一种基于联盟链和商密九号算法的安全可共享电子病历方案。商密九号算法(简称SM9)是一种基于双线性对的标识密码体制,与传统公钥密码体制不同,它避免了需要CA(Certificate Authority)中心签发数字证书的过程,降低了系统的复杂性和成本
[8]。同时,SM9算法具有密钥短、高安全性和高效的加解密特性,非常适用于医疗领域的电子病历数据和患者身份信息的保护
[9-18]。此外,本方案利用星际文件系统(InterPlanetary File System,IPFS)进行文件存储,通过联盟链存储索引,形成了“链下存储,链上索引”的轻量化存储模式,并通过SM9算法加密序列密钥实现了安全共享。
本文工作安排如下:第1节介绍准备工作;第2节描述本系统方案的具体设计过程;第3节是对系统方案的功能和效率分析;第4节总结和展望。
1 准备工作
1.1 双线性映射
定义:令和为两个阶为素数的乘法循环群,定义一个双线性映射满足以下性质:
1) 双线性: 对于任意和成立;
2) 非退化性: 存在,使得;
3) 可计算性: 对于任意的,存在有效的算法计算。
1.2 SM9算法
SM9算法是一种基于双线性对的国密标识密码算法,利用用户标识(如手机号、邮箱号码等)生成密钥对,无需传统PKI(Public Key Infrastructure)体系中的密钥库和CA证书中心签发证书,从而大大降低了计算成本。SM9算法基于双线性对,具有高安全性和较短的密钥长度,加解密和签名速度快,因此,SM9算法在数字签名、加密、密钥交换等密码学应用中得到广泛应用。彭聪等
[19]基于SM9算法提出了一种环签名方案,该方案利用SM9算法实现了环签名,具有通信开销方面的优势,同时能够在保护用户隐私的前提下,对数据进行身份验证并保持数据的匿名性。张超等
[20]结合SM9算法设计了一种可搜索加密方案,该方案通过使用SM9算法进行可搜索加密,可以在保护数据安全性和隐私的前提下,实现对加密数据的搜索和检索功能。该方案被证明在安全性和效率方面均表现出较高水平。
1.3 IPFS
IPFS是一种分布式文件系统,旨在创建一个全球性的、点对点的文件传输协议和网络,使用户可以在网络上共享、存储和访问文件,不依赖任何中心化服务器。通过加密和哈希算法,IPFS可以确保数据的安全性和完整性。与传统的HTTP协议不同,IPFS使用哈希值标识文件和数据,而非URL地址,从而提供更快速、更安全和更可靠的文件传输服务。其工作原理是将文件和数据分割成小块后,使用哈希算法对每个小块进行加密和验证,并将它们存储在网络的不同节点上。当用户请求文件时,IPFS会从多个节点上获取对应小块,重新组装成完整的文件并返回给用户。这种分布式存储和传输的方式,可以提高文件的可用性和可靠性,并降低网络拥塞和服务器负载压力。
1.4 联盟链
联盟链是一种特殊的区块链,由多个组织或实体共同维护和管理,这些组织或实体之间有一定的信任关系,并共同管理和控制区块链网络。相较于公共区块链,联盟链具有更高的效率、更好的隐私保护和更强的控制能力。由于其参与者是有限的且预先选定的节点,联盟链可以处理更多的交易,并更快地达成共识。此外,联盟链的成员可以选择隐藏部分信息,以增强隐私保护。最后,联盟链的成员对网络进行更多的控制,包括决定网络准入、规则修改和更新等。
1.5 智能合约
智能合约是一种基于区块链技术的自动化合约,由计算机程序编写而成,旨在控制交易的执行和结果,无需任何中间人或第三方的介入。智能合约具有高度的可靠性、透明性和自动化性。由于它们运行在区块链上,所有的交易记录均为公开,同时也无需第三方进行验证或监管,从而大大降低了交易成本和时间。此外,智能合约还可以避免人为的错误和欺诈行为,从而提高了交易的安全性和可信度。
2 系统方案总体设计
2.1 系统方案框架设计
在本方案中,由医院之间组成联盟链,并组成IPFS集群。方案采用SM9算法对电子病历进行加密,并将加密后的文件上传至IPFS节点存储,IPFS节点返回文件索引值并上传至联盟链存储。然后使用智能合约对数据进行搜索,最后使用SM9算法加密序列密钥的方式进行安全共享。在本方案中,共涉及六个实体,包括患者、医生、医院、IPFS集群、联盟链和第三方用户。方案框架如
图1所示。
1)患者:患者首先在医院服务器上注册, 在注册过程中,患者需设置自己的账号、密码以及身份信息,并创建一个唯一的标识,同时,患者需要保存由密钥生成中心(Key Generation Center,KGC)生成的私钥,以及在加密病历时生成的序列密钥。患者可根据自己的标识获取加密后的电子病历,然后通过私钥进行解密,得到自己的电子病历。
2)医生:医生首先运行脱敏算法,对电子病历进行处理。然后,医生使用公钥将电子病历加密。在SM9算法加密的过程中,会生成一个序列密钥用于加密明文,这个序列密钥由患者保管。医生将加密后的电子病历存储在医院的IPFS节点中,并在得到患者授权的情况下,进行电子病历的管理。
3)医院:医院将IPFS为加密电子病历生成的索引值和对应的患者的安全标识一并上传至联盟链节点。
4)IPFS集群:该集群由各医院共同组成,用于存储加密后的电子病历文件。
5)联盟链:联盟链由各大医院机构共同构建,用于存储由IPFS生成的索引值和所对应患者加密后的标识,可使用智能合约通过标识查询索引值,并通过索引值查询IPFS上存储的密文。
6)第三方用户:第三方用户需要将自己加密后的标识和公钥通过智能合约发送给患者。若得到患者授权,患者则在本地运行SM9算法,使用第三方用户公钥加密保存的序列密钥,通过智能合约返回被授权用户,被授权用户通过私钥解密序列密钥,通过序列密钥解密明文得到电子病历。
2.2 具体方案设计
(1)系统初始化
(a)初始化参数
系统选择256位BN(Barreto-Naehrig)椭圆曲线,选取和为两个素数阶的循环加群,是素数阶的乘法循环群,和分别是群和的生成元。存在到的同态映射使得,双线性对是的映射且满足。
(b)密钥生成
由密钥生成中心为患者生成随机数,作为加密主私钥,通过计算中元素作为加密主公钥,患者在注册时选取自己的唯一标识,譬如手机号、身份证号等作为标识用户的信息,通过生成患者私钥,其过程为:。
同理,密钥生成中心为第三方用户生成随机数,加密主公钥,第三方用户私钥生成过程为:。
(2)病历加密和存储
(a)病历加密
患者在注册过信息后,会选择自己唯一的标识,会根据生成加密公钥,患者在进行诊断后,生成电子病历,系统会对进行脱敏处理,然后医生根据患者公钥对进行加密。
加密过程:
(1)计算中元素。
(2)产生随机数,并计算元素。
(3)计算中元素、。
(4)计算,然后计算(令为最左边的比特,为剩下的比特),患者保存值。
(5)计算。
(6)计算。
(7)输出密文。
(b)患者安全标识生成
患者在注册身份信息后,系统会根据患者计算患者唯一安全标识,本方案采取的方式,即。
(c)数据存储
在加密过电子病历后,系统会将加密后的电子病历存储至医院
节点,存储成功后,
会生成一段唯一的
值
,用于当作加密病历索引值和患者安全标识
一并上传至联盟链。联盟链数据结构如
表1所示。
(3)数据访问
(a)情形1:当患者访问病历时,需要输入标识
,联盟链上的智能合约会自动将
转换为
,并运行搜索算法,在联盟链进行对比搜索,若搜索到
=
,则对比成功,然后智能合约根据区块上
对应的病历索引
,在
节点上查找到加密电子病历
返回给患者,患者输入私钥
解密得到电子病历
。若医生需要病历时,患者可将
发送给医生。智能合约算法如
算法1所示。
解密过程:
(1)从密文中取出,验证是否成立,若不成立则报错退出。
(2)计算中元素。
(3)计算整数,然后计算(令为最左边的比特,为剩下的比特)。
(4)计算。
(5)计算,并从中取出,若,则报错并退出。
(6)输出明文。
(b)情形2:当第三方用户
需要访问患者数据时,需携带自己的标识
、公钥
和所需要访问的患者
,向智能合约发送访问请求,智能合约根据
将请求发送给患者,若得到患者授权,由于患者在加密过程中保存了
,患者则可在本地客户端输入
值并在本地运行
加密算法,使用用户
的标识
和公钥
对
值进行加密,同时智能合约根据
获取密文
,并将加密过的
和
一并发送给用户,用户
根据私钥
获得明文
。智能合约算法如
算法2所示。
加解密过程:
(1)加密过程同上述病历加密过程,对进行加密。
(2)解密过程同情形一解密过程,用户利用自己私钥得到值。
(3)从密文中获取,并计算。
(4)获得明文。
3 方案安全性和性能分析
3.1 方案正确性证明
(1)数据访问时情形一:在用户用私钥解密电子病历时,需要验证,而验证,关键需要验证加密时和解密时的是否相等。
加密时:
解密时:
由上述证明可知,加密时与解密时相等,因此,又因为为最左边的比特,所以,,则。
(2)对于数据访问时情形二:同(1)证明,证明加密时与解密时相等,最后得到,并计算。
3.2 方案安全性分析
(1)密钥安全
在本方案中,无论患者密钥还是第三方用户密钥对都是由随机数生成,并且私钥都是使用用户得唯一标识和主私钥的计算生成,并由用户保存于本地,在病历加密过程中,全部使用公钥加密,保证了密钥的安全。
(2)数据安全
在存储过程中,上传至IPFS的电子病历都进行了加密,并且由IPFS生成的索引哈希值上传至联盟链中,由于区块链的不可篡改的性质,保证了索引哈希值的安全,同时保证了IPFS上电子病历的完整性和一致性。在SM9算法解密过程中需要对密文中消息认证码进行验证,验证成功才可进行解密,保证了密文在加解密和共享时的一致性。同时在加密和共享过程中,都只能用用户的私钥才能完成解密操作,保证了数据的安全。
(3)隐私保护
在智能合约搜索过程和共享过程中,无论患者还是第三方用户标识都用了哈希运算,保证了用户标识的安全,并且电子病历在加密前,都对患者的信息进行了脱敏技术处理,保护了患者的隐私安全。
(4)访问控制
在第三方用户需要访问患者病历时,必须通过患者本人的授权,才能获取患者本人的加密病历,保证了电子病历的安全共享,不会形成数据滥用。
3.3 方案对比分析
在方案对比分析中,主要将本方案与其他方案在功能及性能方面进行了对比分析(见
表2)。性能分析主要包括存储分析、算法分析及通信开销分析。
(1)功能性分析
由
表2可知,本方案与文献[
21-
25]的方案进行了对比分析,表中所有方案都应用于电子病历,其中,文献[
21]没有应用区块链,增加了数据被篡改的风险,文献[
22-
23,
25]都使用的双链结构,增加了系统的复杂性,文献[
22]不具备数据共享功能,文献[
21,
23-
25]都使用代理重加密的方式进行共享,本方案采取SM9加密密钥方式进行共享,减少了中心化的风险和证书认证的过程,并且本方案采用IPFS方式进行存储,增加了文件的安全性和存储效率,并使用脱敏技术进一步增强了患者的隐私保护。综上所述,本方案在功能方面有一定优势。
(2)存储分析
存储病历文件方面,文献[
21,
24]采用了云服务器存储,文献[
25]采用了普通服务器存储,若服务器遭到攻击,必然会威胁到病历文件的安全,文献[
23]直接采用区块链存储文件,增加了区块链存储压力,而且一旦某个节点遭到攻击,文件会遭到破坏。在本方案中存储文件采用IPFS存储文件,区块链存储索引值,形成“链下存储,链上索引”。IPFS对文件进行分布式存储,并具有数据冗余特性,即一个节点遭到破坏,也可以在其他节点获得同样的数据,保证了数据的安全。
IPFS具有高效的文件传输特性,本方案中使用Windows10系统,通过创建三个虚拟机进行了仿真测试,主要测试IPFS和一般的服务器的传输模式文件传输模式(File Transfer Protocol,FTP)的上传时间(
图2)和下载时间(
图3),使用Go语言测出了数据,使用PyCharm画出了仿真图。
由
图2和
图3可知,IPFS比一般服务器或者云服务器所使用的文件传输模式FTP模式在上传文件和下载文件过程中有着明显的优势,降低了系统的存储开销。
(3) 算法分析
文献[
21,
23-
25]中都使用了代理重加密算法,增加了数据中心化的风险,本方案采取SM9算法对患者的隐私及病历数据进行了保护,SM9算法与其他常用非对称加密算法比较,包括椭圆曲线密码算法(Elliptic Curve Cryptography,ECC)和RSA加密算法(Rivest-Shamir-Adleman),如
表3所示。由
表3可知,SM9算法具有密钥短、较高加解密速度、身份识别机制、不需要交换证书、高安全性等特点,极大的增加了系统的效率并降低中心化的风险,保证了数据及患者隐私的安全。在SM9算法解密过程中,具有密文验证的性质,提升了系统的效率和数据安全性。
(4) 通信开销
基于文献[
25]运算成本分析,若添加系统建立时间
、证书交换时间
、一次上传时间
和下载时间
可得到一次通信时间。在与文献[
25]同等仿真条件下,通过模拟测得证书交换时间为34.83 ms,又通过与文献[
25]密码计算成本对比可得
,其中
表示双线性对运算时间,
表示加密运算时间,
表示乘法运算时间,
Th表示hash运算时间。最终在假设系统建立时间一致的情况下,得到一次通信总时间如
表4所示,本方案由于在存储方面的优势及不需要证书交换时间,在通信方面有着一定优势。
4 总结与展望
本文提出了一种基于联盟链和SM9的安全可共享的电子病历方案。本方案利用区块链技术解决了传统电子病历中存在的数据不一致和数据安全等问题。同时,通过应用脱敏算法和SM9算法解决了患者隐私安全和数据共享难题,并通过使用IPFS提升了系统的存储效率。最后对方案的安全性、功能性和效率等多个方面进行了分析。结果显示,该方案不仅提高了安全性、降低了系统复杂度,而且在时间效率方面也具有显著优势。未来的工作将探索将去中心化标识符(Decentralized Identifier,DID)技术与该方案结合,进一步提升电子病历在共享过程中的安全性和效率。