APP下载

一种基于区块链与IPFS的医疗数据共享模型

2023-05-29史爱武付科巽魏银珍

软件导刊 2023年5期
关键词:哈希管理员加密

史爱武,付科巽,魏银珍,韩 超

(1.武汉纺织大学 计算机与人工智能学院,湖北 武汉 430200;2.黄冈师范学院 计算机学院,湖北 黄冈 438000)

0 引言

随着信息化时代的来临,数据的价值愈发凸显,大数据技术也广泛应用于各行各业,如银行、医疗保健等。随着技术的不断进步,医疗保健大数据正呈指数级增长。医疗保健系统以电子健康记录的形式进行数字转换,这不仅得益于医疗保健领域分析技术的进步,还在于其允许医学专业人员在一个新的频谱中提取医疗数据。医疗数据包括患者的医疗记录、医院记录、医疗实验室测试报告,以及从物联网设备中收集到的大量数据。与此同时,大数据安全问题也随之而来[1]。《健康保险可携性和责任法案》相关数据显示,2018 年共有1 300 多万条医疗侵犯记录,是2017 年的两倍[2]。其主要原因在于:现在的医疗机构将数据上传至本地数据库或者可信的云服务器中,需要大量的内存计算,对医疗保健中心设置而言很不理想,并且在基于云的系统中,云服务的网络节点在一定程度上被视为核心,而一旦云服务器崩溃或成为黑客攻击目标,所有用户都可能会受到影响。对于患者而言,如果患者在不同的地区从一家医院转到另一家医院,其电子病历往往不能共享,如果医疗报告和医疗图像丢失,只能重新进行打印,导致治疗滞后[3-6]。

针对上述问题,一些学者进行了相关研究。Shitole等[7]提出用ECC 算法实现只有加密数据在用户和发布者之间共享的方案,然而这仅仅解决了数据安全问题,之后的数据计算和内存消耗问题并没有得到解决。Li 等[8]提出建立一个以患者为中心的系统管理医疗保健数据,并通过ABE 方法编码EHR 信息以改进安全特性,但该方法会导致大量冗余的EHR 信息存储在云存储中。

本文利用区块链技术提出一种基于智能合同的架构以提高医疗保健大数据的安全性和隐私性,并在其中加入IPFS 以弥补区块链在数据存储方面的不足。该方案允许用户通过3 个核心组件存储、共享和访问医疗保健数据:分布式应用程序、智能合同和星际文件系统[9]。分布式应用程序作为前端部分,为用户提供界面;智能合约作为整个网络的控制器用以支持该方案的关键特性[10];IPFS 数据库作为后端,提供分布式数据库功能以存储医疗文件数据并确保其安全性。它存储注册用户上传的文件,并返回文件哈希。注册过程结束后,用户可以利用这些服务上传、下载和检索医疗数据并检查数据完整性。

1 相关工作

1.1 区块链

密码学[13]和分布式计算[14]的发展引入了一种名为区块链的现代计算机技术。区块链是一个通过P2P 网络复制和交换数据的分布式账本,最初是由中本聪提出,他创建了比特币(一种直接交易的数字货币而无需第三方)并开发了这种节点网络的模式,以维护一个分散和安全的数据库[15-16]。顾名思义,区块链是一个有序的块列表,通过引用前一个块的Hash,每个块都通过哈希序列与前一个块的绑定加以区分。唯一的异常是第一个块为起源块,它没有前一个块的哈希值。区块链是加密货币的主要支柱,被视为技术突破和财务进步,即在一个分散的设置中需要一个值得信任的账本,而实体之间没有信任。区块链网络中有一系列的过程和加密机制,它们应用于共享网络,以保护由身份验证块组成的分布式数据库中的数据存储,信任因素也是区块链技术的一个核心特征,通过区块链,加密的开源代码被用于管理信任。在区块链网络中,数据被提供给矿工,矿工通过解决一个数学公式和达成共识来验证它,作为回报,矿工们也得到了一些奖励。区块链确保系统功能的3个关键原则是:块和哈希、挖掘、共识[17-18]。

1.2 IPFS

星际文件系统(InterPlanetary File System,IPFS)是一组子协议,它组成了一个点对点的分布式文件系统,该系统使用DHT(分布式散列表)跟踪所有数据,包括谁拥有什么数据。此外,它还提供了一种在分散的环境中进行文件共享的新方法。IPFS 使用哈希表存储数据包,并通过Kademlia(P2P 重叠网络传输协议)找出哪些节点包含哪些数据。佩塔·梅蒙科夫和大卫·马齐耶尔于2002 年创建了Kademlia,作为去中心化点对点计算机网络的DHT。在IPFS 中可以保存哈希,之后双方可以使用哈希检索数据。当数据准备好添加到IPFS 网络时,这些数据将被分解成许多小比特。每一块都有其独特的hash 识别它。之后,这些块将在网络上分散到最接近对等ID 的节点上。当用户请求一个块时,DHT 用于移动到存在散列的节点,在检查所有现有的块后,主对象简单地将所有块[19]连接起来。并且,DHT 的分布式部分意味着完整的表在多个地方被共享。基于DHT 的分布式系统是完全连接的系统,在位于不同位置的参与者之间没有实质性差异。因此,每个人都可以访问最新的哈希表。

2 医疗大数据系统架构

基于区块链与IPFS 的医疗数据共享模型系统架构如图1所示。

Fig.1 Overall system architecture图1 系统整体架构

主要分为以下4 层:数据层、网络层、共识层和应用层。

(1)数据层。数据层是最底层,它在移动到网络层之前先管理数据。以太坊网络为用户生成公钥,数字签名方案确保用户真实性。所有事务和数据流都以散列链或事务链的形式编译。访问控制使用用户凭据进行管理,只有授权用户才能上传医疗保健大数据。用户可以要求检查文档的完整性,并最终确保其安全性。在将医疗保健数据存储在IPFS 上之前,运用高级加密标准(AES)算法对其进行编码。

(2)网络层。网络层负责建立数据层和应用层之间的连接。它包含一个用于通信的P2P 网络和智能合约,可作为该方案的后端。在拟议的方案中有各种用户,如医院的管理员和医生,他们被授权在网络上开展工作。医院的管理员上传数据后,只有医院的授权成员才能查看这些数据。管理员可以与另一家医院共享来自医疗大数据,以便其他医院的工作人员在需要时查看数据。智能合约作为一个控制器,为各种用户提供服务,并管理未经授权的用户。

(3)共识层。就像在区块链网络中一样,每个节点可能在不同的时间接收必要的数据,需要一个共识机制确定哪个节点应该在区块链中添加新的块。该方案建立在以太坊区块链网络之上,该网络使用PoW 方法管理所有活动。

(4)应用程序层。应用程序层是为最终用户和医生提供服务的最顶级的层。这一层可以帮助所有用户与区块链网络进行通信,并存储和查看数据。管理员可以注册用户,授权用户可以Excel 格式上传医疗大数据,并能够查看上传的数据。其他网络的对等点可以使用分布式散列表(DHT)从任何节点要求一个文件或数据。

3 医疗大数据系统实现

3.1 系统模型

如图2 所示,将该模型分为4 个部分:医院、管理员、智能合同、IPFS 存储。所有这些实体都被连接起来,形成了一个P2P 区块链网络。它们的角色如下:①医院:数据的拥有者,将数据在IPFS 中进行上传与下载;②管理员:主要为用户提供电子认证服务,核实医院的身份信息;③智能合约:负责对用户数据进行加密与上传,并校验用户;④IPFS 存储:主要对加密数据进行存储,并将每个文件的hash归于hash序列返回给用户,用于定位文档。

系统模型实现步骤如下:

(1)用户向管理员发起用户注册请求,并将医院名称、电子邮件ID 以及医院证书传递给管理员,管理员收到后对信息进行核实,核实通过后,管理员发起密钥生成请求,以太坊架构将为注册用户生成公钥和私钥。之后,区块链网络执行智能合约的注册功能,生成凭据,并将这些凭据与管理员共享。

(2)用户可以使用注册时输入的详细信息登录到应用程序中并访问服务。成功登录后,用户即可上传、下载和共享医疗数据。要上载医疗保健数据,用户将使用应用程序门户上可用的适当选项将医疗数据文件发送到区块链网络。

(3)区块链网络执行相应的智能合约功能,使用AES算法和为用户生成的公钥对医疗数据进行加密,并将数据上传至IPFS 的存储节点中。在IPFS 上成功存储医疗数据后,智能合约将执行返回唯一的文件哈希给用户。用户可以利用文件哈希值进行数据访问与数据检索。

(4)用户与区块链网络中其他用户共享数据。首先用户通过向管理员发送请求获得注册用户的详细信息,作为回应,管理员从区块链网络中获取注册用户列表;然后,管理员将注册用户列表发送给用户以共享医疗保健数据,用户可以利用服务与各自用户共享数据。

3.2 智能合约

本文智能合约使用了很多不同的符号,具体由以下3种算法组成。

算法1以太坊数字签名与验证(其中,公钥为Pkey,私钥为Prkey)

首先用以太坊框架为用户生成公钥和私钥,一是使用SHA256 和椭圆曲线数字签名算法(ECDSA)[7]生成用户的私有—公钥对,其中Pkey 和Prkey 分别表示用户的公钥和私钥,然后利用‘0x’加上hash 的后40 位数生成以太坊地址;二是将以太坊地址和用于上传的文件hash 用生成的私钥进行数字签名,用消息和签名推导出用户的公钥。再通过公钥、签名、文件的哈希值计算出一个叫“r”的值,这个r是签名的一部分,校验签名就是拿计算出来的r和签名中携带的r进行对比,如果一致则校验通过。

算法2医院注册

输入管理员地址和医院详细信息。首先智能合约会检查医院的信息是否已经存在,如果存在则返回false 并打印信息,然后智能合约将检查管理员的有效性,即该程序的调用者是否为有效的管理员,如果不是则返回false 并打印。否则,将地址进行映射,并在智能合约中添加医院信息。

算法3文件上传

首先检查该功能是否由授权的医院或管理员调用,如果不是则返回false,然后对医院上传文件使用AES 算法进行加密,并在加密完成后生成一个文件hash,之后将这个hash 进行查重,确定是唯一后,数据将被上传到IPFS 存储网络上,而返回的哈希将被存储在智能合约上。

医疗数据上传流程如图2所示。

Fig.2 Flow of uploading medical data图2 医疗数据上传流程

4 系统安全性分析

4.1 安全性

本文将区块链技术与IPFS 相结合,系统所产生的数据由智能合约加密完成后上传至IPFS 存储节点中,并将返回的数据地址保存在区块链网络上。由于采用分布式管理,在数据文件与数据地址上都存有多个备份,对于硬件故障以及文件损坏都具备一定的防护。

对于外部而言,如果遭受黑客与恶意用户攻击,由于在区块链网络中各节点维护的数据相同,当一定量的节点被攻击时,其余节点也能快速从本地数据库中补充到被攻击的节点数据库中。IPFS 则可以将数据分割成大小相同的数据碎片并备份到系统中,因而也能在一定程度上阻碍外部攻击。

对于内部而言,由于区块链其特有的共识机制[8],如果接收到非法数据,节点会进行自动清理。

4.2 系统性能

主要从以下4方面进行系统性能分析:

(1)扩展性。扩展性是指对高性能、低成本和可维护性等诸多因素的综合考量和平衡,侧重于系统的水平伸缩。由于区块链上的数据规模和数据量日益增长,该应用程序采用链外存储模型,用于存储医疗大数据的IPFS,解决了可伸缩性问题。并且,由于系统中IPFS 以分散的方式利用由分布式网络存储的加密哈希,因而在解决可扩展性问题时,不会破坏系统安全性。

(2)安全性。安全性是指不将有用信息泄漏给非授权用户的一种特性,可以通过信息加密、身份认证、访问控制、安全通信协议等技术实现。在该系统中,为了确保存储在区块链网络上的医疗信息不受第三方的访问,通过智能合约的加密方法确保数据机密性。该加密方法会将数据在上传区块链网络之前进行加密,通过使用Aes 加密技术,将信息以加密形式保存。

(3)完整性。完整性是指信息在传输、交换、存储和处理过程中,保持信息不被破坏或修改、不丢失和信息未经授权不能改变的特性。该系统利用区块链不可篡改的特性确保了数据完整性。用户可以利用文件保存之后返回的hash 对数据完整性进行验证,并利用Merkle 根概念检查数据完整性。管理员负责在区块链网络上传过程中维护数据的原始数据,通过获取存储的Merkle 根,重新计算请求数据的哈希并执行验证。如果两个哈希都匹配,则保持数据完整性;否则,将告知用户数据不完整。

5 实验分析

5.1 实验配置

系统使用计算机4GBRAM,Intel(R)核心(TM)2DuoCPUE8400@3.00GHz 处理,采用Windows10 操作系统,系统架构是根据以太坊框架实现,使用Solodity 语言进行开发,在实验中使用Ganache 工具为建立区块链网络、部署智能合同和执行评估性能参数测试提供环境。通过不同端口之间的连接模拟真实区块链中各不同节点,并添加一定的随机延时,以模拟现实网络中的波动。Remix 开源工具用来编写和执行智能合同,后端采用Node Js 提供以太坊和IPFS 存储之间的连接,MetaMask 用以接到以太坊网络,让用户创建新的发送和签名并连接到应用程序中事务的以太坊地址。

5.2 实验结果分析

在实验中,开启多个节点后开始进行文件上传与下载,然后进行医疗数据共享系统性能与安全性测试。

在区块链网络中,由于用户注册都需要上传真实性的数据和证书,并由管理员进行验证,因而在全网节点中不存在恶意节点的情况下,对文件大小与文件上传下载的耗时进行实验,测试结果如图3—图6所示。

Fig.3 Average latency under high concurrency图3 高并发量下的平均延迟

Fig.4 Relationship between file size and processing time图4 文件大小与处理时间的关系

Fig.5 Throughput of file upload requests图5 文件上载请求的吞吐量

Fig.6 File upload processing time of different nodes图6 不同节点数文件上载处理耗时

如图3 所示,测试范围从并发量100 到并发量500,每次叠加100 并发量进行测试。为了保证数据真实性,对每组数据进行5 次重复测试。可以看出,系统并发量在达到500时最高量为12ms。

如图4 所示,IPFS 在存储数据前,会先对文件进行分片,再存储。由于节点数量的增加,其CDN 加速性能越优,因而将文件大小从200kb 开始每次叠加200kb 文件大小进行测试。可以看出,文件的处理时间没有随文件增大而随之呈线性增长,而是增长逐渐放慢并最终比之前耗时更低。

如图5 所示,测试范围从并发量100 到并发量1 000 每次叠加100 进行测试。可以看出,系统中文件上载请求的吞吐量稳定在600~800区间。

如图6 所示,将节点数由20 递增到100,随着节点数的增多,数据传输效率有一定提升。

综上可以看出,本文提出的基于区块链与IPFS 的数据共享系统是一个低时延、高吞吐量的系统,在数据传输方面比传统方案更好,能够满足大环境的需求。

6 结语

针对传统数据库存储和云存储系统的不足,结合基于区块链技术的电子医疗数据共享最新相关研究[20],本文设计出一个区块链与IPFS 相结合的医疗数据共享系统,以确保大规模医疗数据的安全性和隐私性。目前,我国医疗数据系统取得了长足发展,但它对单点故障、数据共享和隐私问题仍然存在一定不足,这些问题可以通过区块链加以解决。本文方案不仅能够实现医疗大数据的安全上传和共享,而且提供了一种访问控制机制,以确保只有经过身份验证的用户才能访问医疗大数据。同时,使用链外存储IPFS 安全地存储医疗大数据,让用户能够很容易地验证和检索自己医疗文件的完整性。未来,这种新的存储模式还可以应用于医疗财务缴费,为患者就诊和医院财务管理提供服务支持。

猜你喜欢

哈希管理员加密
我是图书管理员
我是图书管理员
一种基于熵的混沌加密小波变换水印算法
认证加密的研究进展
基于维度分解的哈希多维快速流分类算法
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密
基于同态哈希函数的云数据完整性验证算法
一种基于Bigram二级哈希的中文索引结构