时间:
目前,电子医疗档案(electronic medical records,简称 EMR)行业正在迅速发展。采用 EMR 代替传统的纸质文档已被公认为是迈向医疗保健现代化的重要一步。随着 EMR 数据的飞速增长,数据安全隐私成为不可忽略的问题。IBM《2022 年数据泄露成本报告》显示,2022 年医疗行业平均数据泄露成本最高,达到 1000 万美元,相较于 2021 年增长 41.6%。在数据量快速增长和数据泄露日益严峻的背景下,如何构建能实现数据安全和隐私安全的 EMR 管理方案成为维系医疗保健现代化健康发展的关键因素。
EMR 数据的敏感性和特殊性决定了其对于数据拥有者及数据使用者的不同意义,尤其是数据的真实性对于双方都有重要的价值。传统的以机构为中心的 EMR 信息管理系统容易造成患者访问数据的障碍,降低患者参与数据处理、数据移植和信息交换的能力。数据存储中心受到攻击时易造成大规模的数据泄露和破坏,具体而言主要存在以下问题:1)单点故障。目前医疗机构数据存储方式基本属于集中式存储,易造成单点故障,一旦中央服务器宕机或受到攻击,整个系统都会受到影响。2)医疗数据篡改。EMR 的存储服务由医疗机构和云服务商提供,患者无法确保自身医疗数据的完整性和真实性,一旦发生医疗纠纷,患者的合法权益很难得到保障。3)数据共享中的隐私泄露。由于不同医疗机构使用的数据库和云服务商没有统一标准,且各类服务提供商之间往往存在技术壁垒,因此很难在不披露患者隐私的情况下进行数据共享,且数据共享的质量和速度难以保证。
区块链(Blockchain)技术因其链式的分布式账本结构,具有去中心化、多方维护、不可篡改和可溯源的特性,与 EMR 所要求的数据安全属性十分契合,它可以实现链上数据不被篡改,且区块链用户可以借助区块链获取安全且可验证的数据路径。为解决上述的隐私和互信问题,本文基于区块链构建了一种可信的医疗数据共享方案,借助密钥交换技术和智能合约,实现用户对数据使用权的完全控制及相应的权益获取,同时能在双方不互信任的前提下实现可信的医疗数据交换。
1 相关工作
医疗数据结构多样、数据量大、复杂程度高,将数据完全上链虽能最大程度保护数据不被篡改,但是空间开销和通信开销难以承受。目前主流方案均以元数据上链、原始数据上传到云服务器的方式进行存储。但是云服务器具有诚实且好奇性,因此在此类方案中的云服务器具有半可信性。基于云服务器的安全可靠假设不再成立,且集中式云服务器可能导致电子医疗网络出现故障的可能性。
Nguyen 等和 Alrebdi 等均提出了基于区块链和星际文件系统(interPlanetary file system,简称 IPFS)的医疗健康数据共享模型,IPFS 负责实现数据安全,智能合约实现可信的访问控制。就数据共享及数据授权问题,钟楠等结合门限签名技术和智能合约实现患者数据的隐私共享。Niu 等将 EMR 关键词和数据分别存储在区块链和医院云服务器上,解决了存储空间问题和云服务器半诚实搜索问题,并通过数据公开审计机制,防止医生以虚假身份上传虚假的数据。AL Omar 等基于假名和椭圆曲线加密算法(elliptic curve cryptography,简称 ECC)构建了 EMR 数据存储和分享模型。Zhang 等提出了 FHIRChain 模型,该模型将 FHIR 数据元素(具有唯一标识标签)与基于令牌的设计相结合,基于区块链以分布式和可验证的方式进行数据交换,并基于智能合约对参与者进行身份验证和管理数据授权。Hardin 等提出了 Amanuensis 体系,通过区块链和可信执行环境来保证数据来源的可靠性,并通过组织联盟,共同负责验证数据的完整性并控制数据的访问策略,通过区块链记录和执行访问策略,确保相关内容不被篡改。Guo 等提出了多权限 ABS 签名方案,患者根据属性确认消息,并采用多权威机构避免密码托管问题。Tan 等基于密文策略属性基加密构建区块链授权方案,链上存储公钥和策略列表,第三方发布私钥、解密参数等,属性满足用户才可以实现数据访问。
2 关键技术
2.1 区块链技术
区块链技术是利用加密链式区块结构来验证和存储数据,利用分布式节点共识算法来生成和更新数据,因其链式的数据结构具有去中心化、不可篡改、可溯源、流程透明和交易匿名等特性,在多行业领域内都拥有广泛的发展前景。根据低层节点的权限机制,区块链一般可以分为公有链、私有链和联盟链。具体而言,公有链允许任何用户自由创建账户、验证交易并将区块添加到账本中,基于共识实现完全去中心化的信任机制;私有链的所有者有权限制任何用户在链上的任何行为;联盟链一般为多机构共同管理,通过身份认证、用户分组和权限限制等方案使参与者在有限自由的情况下进行链上操作。
智能合约是部署在区块链上的一种自动执行的程序,是计算机程序和系统参与者的结合,具有规范性、不可逆性和不可违约性。一旦满足智能合约中的任何条件,触发语句就会自动执行相应的功能。以太坊在其区块链上实施了一种近乎图灵完备的语言 Solidity,可以构筑功能复杂的智能合约,任何人可以在区块链上部署去中心化应用程序(decentralized applications,简称 Dapps),用以实现多领域的灵活运用。
2.2 椭圆曲线 Diffie-Hellman 密钥交换算法
椭圆曲线 Diffie-Hellman 密钥交换算法(elliptic curve cryptography-diffie-hellman,简称 ECC-DH)是一种基于非对称密钥的密钥交换算法,通信双方可以在不暴露任何秘密信息的情况下协商出对称密钥。该方法利用的是椭圆曲线上的离散对数问题,即已知 G 和x∗G求x的难题。相较于经典的 DH 算法,ECC-DH 算法借助 ECC 实现了更短的密钥长度和更高的安全性。
假设密钥交换双方为 Alice、Bob,其有共享的曲线参数(椭圆曲线 E、阶 N、基点 G)。ECC-DH 密钥交换流程如下:Alice 生成随机整数 a,计算A=a∗G;Bob 生成随机整数 b,计算B=b∗G。Alice 将 A 传递给 Bob,Bob 将 B 传递给 Alice。Alice 和 Bob 根据已有参数计算,若CEK=b∗A=b∗(a∗G)=a∗(b∗G)=a∗B=CEK,即双方得到一致的会话密钥CEK。若攻击者截获通信消息得到 A、B、G,现有算力下其几乎不可能计算得到a和 b,继而也无法得到会话密钥CEK。
3 基于区块链的可信医疗数据共享方案
3.1 数据存储结构
本方案基于联盟链构建医疗区块链,任何用户均需要通过验证才可进行链上操作。患者在可信的医疗机构进行医疗活动后生成 EMR,选择数据脱敏后通过对称加密算法(AES)进行数据加密并存储于 IPFS,用户每次加密使用本地区块链钱包随机生成的密钥。收到 IPFS 返回的数据地址后,患者构建 EMR 的元数据并将其上传到区块链上,构建的元数据的核心结构包含加密后的 EMR 在 IPFS 上的存储位置(Addr_IPFS)、就诊的医疗机构对 EMR 的签名(Sign (EMR))、加密 EMR 使用的密钥 k 的哈希值(Hash k)、标准疾病分类代码(Disease_codes),其中对密钥进行的哈希运算使用 SHA-256,标准疾病分类代码使用国家标准。
3.2 数据共享方案
本方案中设计的实体包括患者、数据需求商、区块链以及 IPFS,设计的网络包括通讯网络和区块链网络。患者拥有一个基于区块链热钱包设计的本地客户端,不仅包含了区块链钱包具有的区块链地址生成、存储和交易的能力之外,还具有在通讯网络进行通讯交流的能力。区块链基于联盟链构建,只有相关用户通过验证后其地址才能在链上进行相应操作。数据需求商泛指对数据有需求的相关机构,如医疗、科研、保险行业等合法机构。IPFS 为分布式文件存储管理系统,能够实现文件的长期保存以及回溯。
数据需求商依据所需疾病对应的标准疾病代码在区块链上进行数据搜寻,获取相应患者区块链地址和数据位置后,在通讯网络向患者发出数据共享请求。患者同意与数据需求商进行数据共享后,双方利用 ECC-DH 算法及其共有参数构建临时会话密钥 CEK。在 CEK 构建成功后,患者和数据需求商可以进行加密通信,完成交易费用fee、交易时间 t 和相关数据请求等具体交易内容的沟通协商。通讯结束后,患者根据协商一致的内容构建智能合约参数TPP=(Ck,feep,tp),其中Ck=CEK1⊕k,同样,数据需求商构建合约参数TPD=(Addr,CEKD,feeD,tD),其中 Addr 为患者的区块链地址,其上保存着 EMR 对应的Hash。
双方完成合约参数构建后,数据需求商调用区块链上的验证交易合约 Verify transaction,合约使用预先设计的算法,双方提供的合约参数TPP、TPD以及链上数据实现共识验证、密钥验证、费用转移和密钥密文传递的功能。
首先,智能合约在约定交易时间判断双方给出的交易时间和交易费用是否一致,如果一致,则证明双方就这笔交易达成共识,否则,智能合约将中断合约的执行。共识验证通过后,智能合约首先获取并验证区块链上的数据需求商地址的余额是否能够覆盖此次数据交易的费用fee,该条件满足之后,合约在链上获取 Addr 上存储的元数据,并获取其中存储的哈希值Hash,用于协助验证患者提供的解密密钥的真实性。若满足Hashk=Hash(CEKD⊕Ck)=Hash(CEKD⊕CEKP⊕kP)=Hashk,即说明用户的私有证据的原像 k 和公开证明的原像kP相同,密钥的真实性验证完成。随后合约进行转账操作,并将Ck返回给数据需求商。数据需求商获得智能合约返回的Ck后,利用 CEK 对其进行解密获得所需的 EMR 对称加密密钥 k。随后数据需求商根据元数据上存储的AddrIPFS获取对应的加密 EMR 数据在 IPFS 上的地址,进行下载解密操作,获取所需的 EMR 原始数据。
4 实验与分析
实验方案在个人计算机上进行,主要参数为 Intel (R) Core (TM) i5,CPU-2.90GHz,16GB RAM,Win 11,64 位操作系统。智能合约使用 Solidity 编写,借助 Remix 在以太坊 Ropsten 测试网络上部署运行并进行测试。
部署和调用智能合约需要消耗 Gas,也就是以太坊虚拟机的加密燃料。在以太坊环境运行任何 DApps 都会消耗发起方的 Gas,Gas 消耗与智能合约的数据处理量和算法难度有关。数据量越大,操作越复杂,Gas 成本越高,因此可以有效反映合约的资源消耗。本方案基于联盟链设计,可以建立一个高效经济的共识机制,从而显著降低智能合约消耗的成本和费用。相较于方案 [8],本方案中使用的合约输入数据大小固定且一般明显小于 EMR 的数据大小,Gas 消耗量确定且相对较小,在 EMR 数据大小较大时优势更加明显。
为了实现 EMR 数据隐私安全,存储电子病历时进行加密操作是必要的。构建了一个 20MB 到 480MB 的字符串数据集,分别使用本文的加密方案和文献 [8] 的方案对数据进行处理,结果表明这两种方案在加密和解密过程中曲线的增长率几乎是线性的,运算时间与数据量呈现正相关。在时间消耗上,本方案的加密时间和解密时间分别是文献 [8] 方案的 28.5% 和 33.3%。另外,随着数据量的增加,本方案的时间消耗增长更慢,在体积较大的数据中有更好的适应性。总体而言,本方案加密和解密时间很短且可预测,数据加解密阶段是可变和独立的过程,可适应各种计算条件。
本方案基于联盟链设计,智能合约的实验在以太坊测试网络环境下进行。以太坊的交易确认时间长,吞吐率与GasLamit、TxGes和BlockTime有关。设置区块的间隔为 5s,单个区块的GasLimit为 0x8ffffff,该设置下合约的 TPS 为 1200TPS,静态估算一年可完成 3784.3 亿次验证,能够满足中国的医疗就诊需求。联盟链的矿工可以灵活调整GasLimil,动态改变 TPS,因此本方案也可具有较强的灵活性。
存储在 IPFS 的 EMR 由标准对称加密算法(AES)加密,密钥由患者的区块链钱包生成和保存。存储在区块链上关于加密密钥的证据由标准哈希函数(SHA-3)生成。根据哈希算法安全性,攻击者无法从密文和哈希值中获取密钥的任何信息。元数据存储在区块链上,区块链的结构确保链上数据不可篡改。如果存储在 IPFS 中的 EMR 数据发生变化,对应的哈希值及 IPFS 地址也会发生变化。加密算法、区块链和 IPFS 的结构共同保证了数据在存储结构上的隐私性、安全性和完整性。
本方案构建验证交易合约 Verify transaction 来自动化执行密钥验证和交易。只有当交易内容共识且解密密钥为真时,转账操作才会自动执行,并将密钥的密文返回给数据需求商。受智能合约设计的原子性,若预设条件不完全满足,智能合约将终止执行。合约运行过程中不存在参数暴露,智能合约的共识验证阶段的设计可协助验证密钥交换期间没有发生中间人攻击。智能合约的任何验证结果均存储上链,实现记录并支持溯源。综上所述,所设计的方案在双方不互信任的前提下能实现可信的数据共享。
5 结论
针对目前医疗区块链的隐私安全和数据共享的可信问题,提出一种基于区块链的医疗数据可信共享方案,通过结合区块链和星际文件系统,设计存储结构以实现患者数据的不可更改和可溯源。通过结合密钥交换技术和智能合约,解决了数据共享中的互不信任问题,实现数据共享中密钥的安全性、真实性和交易内容的共识性及不可否认性,确保数据共享过程中参与双方的利益和安全。实验与分析表明,此方案具有低消耗、高吞吐量的特点,可以有效地应用于医疗行业。
杨晓晖;贾凯,河北大学网络空间安全与计算机学院,202403