基于区块链的医疗数据共享模型设计

2021-04-20 12:06康宁
电脑知识与技术 2021年7期
关键词:数据共享区块链

康宁

摘要:医疗数据对患者有着重要的作用,有助于患者的跨机构就医。为了安全高效地共享医疗数据,提出了一个以患者为中心的医疗数据共享模型。利用区块链技术构建可信的网络环境;使用变色龙哈希函数连接区块,实现数据的可编辑性。患者的医疗数据全部存储于一个区块中,消除了数据的碎片化。通过医疗数据共享模型,可以实现医疗数据安全高效地共享。

关键词:区块链;医疗数据;数据共享;变色龙哈希函数

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2021)07-0030-04

Abstract: Medical data plays an important role in patients, which is helpful for patients to seek medical treatment across institutions. In order to share medical data safely and efficiently, a patient-centered medical data sharing model is proposed. Using blockchain technology, a trusted network environment is constructed. The chameleon hash function is used to connect blocks to realize the data editing. Patients' medical data are all stored in a block, eliminating the fragmentation of data. Through the medical data sharing model, medical data can be shared safely and efficiently.

Keywords:Blockchain;medical data;data sharing;chameleon hash function

醫疗数据贯穿了患者所有的就医过程,是患者健康状况的体现,也可以为之后的就医提供便利,是患者宝贵的财富。医疗数据不能及时共享,造成了医疗资源浪费,医疗效率低下等诸多问题,医疗数据迫切地需要高效共享。

区块链是比特币[1]的底层技术,巧妙地结合和使用对等网络[2]、时间戳、加解密[3]、共识机制[4]等多种技术,构造了一个安全可信的分布式环境。区块链拥有去中心化、时序数据、不可篡改、可追溯等特性,为医疗数据共享面临的隐私安全等问题提供了解决方案。区块链能够保护医疗数据不被未经授权的查看和修改,还可以避免患者的医疗数据受到可能导致停机的攻击。区块链技术在医疗领域的应用越来越广泛。MedRec系统[5]为了改进电子病历的处理和交换,设计了三种合约来处理数据查询,并在病人和管理员之间建立连接。Patientory[6]为患者的医疗记录提供存储,使用智能合约让患者控制对其医疗记录的访问。MedicalChain[7]使用超级账本结构来为其系统提供动力,提供一个平台,使患者有机会与第三方协商访问或使用他们的医疗数据,系统保护患者的身份且患者可以控制谁访问他们的医疗数据。

区块链应用于医疗数据的共享仍存在很多问题,如医疗数据的碎片化以及隐私问题,严重影响了数据共享的效率。为了实现医疗数据安全高效地共享,本文提出了一个以患者为中心的医疗数据共享模型。利用变色龙哈希函数,实现哈希可修改的区块——患者块。患者块存储了该患者相关的所有医疗数据信息,集中了患者的医疗数据,由患者完全控制。患者块的修改以及新医疗数据的生成都会被记录在日志块中,日志块不可修改。

1相关技术

1.1区块链

区块链是一种分布式账本技术,一种新的信息技术形式,其核心特性是去中心化及共识机制,使得链上的信息公开透明、安全可信[8]。区块链主要有三种类型:公有链、私有链和联盟链。

公有链,对公众开放,任何人都可以加入区块链网络发送事务请求。当一个节点尝试执行一个操作,例如添加新区块,网络上的所有节点都会得到通知,并参与决策过程。公有链一个典型的例子就是比特币。

私有链,一个组织构建,只对组织内员工有效。组织外部的用户被限制加入这些区块链。然而,由于区块链只存在于组织内部,因此可以认为这种区块链是集中式的。

联盟链,比私有链更开放,对公众的可用性有限。在联盟链中,一组选定的实体参与事务的验证或区块的管理。根据管理部门配置的权限,公众用户可能具有读权限,但可能不能参与决策。

1.2 变色龙哈希函数

变色龙哈希函数[9]是一种带陷门的单向哈希函数。掌握陷门信息的用户可以容易地计算出一个碰撞,即可以在不改变函数输出的情况下,随意改变函数的输入。而对于没有陷门信息的人来说,则无法计算出碰撞。

一个变色龙哈希方案由四个算法组成:

系统参数生成算法:输入一个安全参数λ,输出系统参数pp。

密钥生成算法:输入系统参数pp,输出一个公私钥对(PK,SK),其中PK为公钥,SK为私钥,也称为陷门信息。

哈希值生成算法:输入用户的公钥PK,一条消息m和一个随机值r,输出一个哈希值h,h=Hash(PK,m,r)。

一个有效的碰撞计算算法:输入与用户公钥PK相关联的私钥(陷门信息)SK,一条消息m和一个随机值r,以及另外一条不同的消息m,输出一个随机值r,使得Hash(PK,m,r)=Hash(PK,m,r)。

与传统哈希函数相比,变色龙哈希函数具有以下特性:

(1)掌握陷门信息的人面对任何给定输入都可以非常轻易地计算出与原始消息不同的一个碰撞;

(2)对于不知道陷门信息的人而言,变色龙哈希函数通常都是抗碰撞的。

1.3共识算法

1.3.1 POW

工作量证明(Proof Of Work, POW)机制的核心思想是,通过分布式节点的算力竞争来保证数据的一致性和共识的安全性。节点通过解决一个数学难题计算出目标值来获得记账的权利。这种机制能够保证数据的一致性和安全性,但是交易确认效率低并且会浪费大量的算力资源。

1.3.2 POS

权益证明(Proof of Stake,POS)机制一定程度上缓解了POW中资源浪费的问题。计算预定值的难度是基于节点拥有的资产,拥有更多资产的节点将更有可能获得记账权。权益证明机制缓解了算力浪费的问题,提高了交易确认效率。但是其本质仍需与POW结合,交易量没有实质性改善,且由于计算难度的不公平性,可能促使拥有较少权益的节点尝试攻击网络,影响系统稳定性。

1.3.3 PBFT

实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)共识机制[10]的主要目标是解决拜占庭将军问题,在这个问题中,网络上可能存在一些恶意节点。PBFT算法要求在有3f+1个节点的分布式系统中,失效节点不超过f。PBFT算法较好地解决了分布式系统中的共识问题,提升了系统效率,比较适用于联盟链。

1.4智能合约

智能合约是在满足协议规定的条款时自动执行协议的程序。这种合约的产生源于在一个本质上不值得信任的环境中产生信任的需要。智能合约在达到条件时自动执行且不需要任一参与方的干预,进一步增强了网络的去中心化。智能合约提供了高效的执行效率,在金融、电子商务、医疗保健等领域都有着广泛应用。

2医疗数据共享模型

系统建立在一个P2P网络上,连接了所有的医疗服务提供者。网络中包含两种类型的对等节点:超级节点和边缘节点。只有超级节点(如大型医疗机构)参与系统的共识,共同维护一条医疗链。

模型架构自底向上可分为数据层、网络层、共识层、合约层和应用层,如图1所示。

2.1数据层

2.1.1数据存储

医疗链上有两种类型的区块:患者区块和日志区块。区块的结构如图2所示。

区块由区块头和区块体构成。区块头包括版本号、前区块哈希、区块类型、患者标识、时间戳以及Merkle树根。其中区块类型用来标识此区块是患者块还是日志块,对于患者块需要给出患者标识。区块体保存交易数据的实体。

患者块允许被修改,但是一旦添加到区块链,区块的哈希值就不能改变,否则就会使链断掉。因此患者块不能使用传统哈希函数(如SHA-256等)来生成标识该区块的哈希值。变色龙哈希函数使得陷门信息的拥有者(患者自身)能够找到同一哈希值的不同输入,因此该模型中使用一种安全的变色龙哈希函数,即公共硬币变色龙哈希(public-coin chameleon hashing,PCCH)[9]。

随着数据量的加大,保存区块链的完整副本会给节点带来巨大的存储负担。可以使用数据副本分配策略来将完整的区块链分成若干部分,分布存储[11]。

2.1.2数据处理

数据处理主要是使用加解密技术、编码技术、哈希函数、时间戳等来完成索引的生成、用户账户的生成、数据加密、身份标识、区块的封装等任务。

(1)索引的生成:使用哈希函数来生成索引,主要包括使用传统哈希函数对每笔交易进行哈希运算后的交易索引以及使用变色龙哈希函数对区块进行哈希运算后的区块索引。

(2)用户賬户的生成:首先利用随机函数生成用户的私钥,进而生成公钥;然后对公钥进行哈希运算得到哈希值;之后添加校验码保证其存在性;最后进行base58编码得到账户地址。用户的账户可以作为其ID对用户进行唯一标识。

(3)数据加密:使用混合加密来保证数据信息在网络传输中的安全性。混合加密结合了对称加密和非对称加密,兼具了二者效率高和安全性高的优势。

(4)身份标识:使用非对称加密技术和哈希函数对传输的数据进行数字签名来标识自身身份,防止数据被伪造。

(5)区块封装:对区块体的交易逐层哈希生成Merkle树根,加上时间戳、公钥等构成区块头,加上数字签名保证数据可信。

哈希函数防止了数据的修改,为数据完整性的验证提供了支持;加解密技术保证了数据传输过程中私密信息不会泄露;数字签名保证了数据的原始性。数据处理基于密码学保证了数据信息的安全性。

2.2网络层

医疗数据的共享基于P2P网络。通过P2P网络,可以在没有中心服务器的情况下快速同步数据。采用Gossip[12]作为P2P网络的传播协议,用以维护信息更新、节点列表更新等。

Gossip有三种通信模式:

(1)Push:A将信息推送给B,B对比自身信息,更新本地信息。

(2)Pull:A向B发送请求,B收到后返回相应信息给A,A对比后更新本地信息。

(3)Push/Pull:在Pull的基础上,A再将本地比B新的信息Push给B。

系统需要保持稳定的网络接入,这就需要做到良好的节点发现。共享模型中设立种子节点来支持节点发现。种子节点采用文件的形式进行配置,可以采用Viper[13]作为配置文件加载方案。Viper由计算机爱好者开发,可以在系统运行时动态加载配置信息并完成更新。

在共享模型中存在超级节点,超级节点可以被用作种子节点。因为普通用户不能参与到数据的一致性共识,数据上链等工作需要通过超级节点来完成,所以普通用户只需要接入超级节点,每次从超级节点获取地址即可。超级节点需要完成地址数据库的工作,定时与连接的其他节点通信,并将未响应的节点加入离线列表内,完成节点列表的更新。

2.3共识层

2.3.1共识算法

共识机制是区块链技术的基础和核心。医疗数据共享模型中参与共识的节点承担着数据的验证、传播和存储的职责,各节点间需要高效地达成共识,同步数据。共识层封装了区块链的共识算法,医疗数据共享模型选择PBFT作为系统的共识算法,该算法的适用性在于:

(1)PBFT算法在吞吐量以及交易确认时间方面有着巨大的优势,适用于联盟链。医疗数据共享模型维护的医疗链属于联盟链,系统对于交易效率有着较高的要求。

(2)PBFT算法不需要大量的算力,由有限的节点来维护链上数据。医疗数据共享模型只由超级节点参与系统共识,普通用户可以享受区块链服务而不需要参与系统的维护。

(3)PBFT算法要求系统中有超过三分之二的正常节点,医疗数据共享模型中的超级节点都是大型医疗机构和医疗服务提供者,能提供相对安全稳定的运行环境。

2.3.2节点管理

共识层保证了数据的一致性,各节点主要是完成区块生成工作。日志块是针对区块链操作的历史记录,且不包含敏感信息。患者块包含了加密的患者数据和智能合约。

2.4合约层

智能合约允许有条件的信息交换。由于患者块的可修改性,使得存储于患者块内的智能合约可以修改和撤销,从而不会在链上保留重复、冲突或脆弱的合约。医疗数据共享模型利用智能合约来实现安全可信的数据共享。

2.5应用层

应用层主要是信息的查询、新数据的入链、患者块数据的修改等,这些都通过客户端来实现。客户端分为管理员客户端、患者客户端和查询客户端。

(1)管理员客户端:管理员客户端管理本地数据(包括医疗链副本以及具体的医疗数据),可以增加新的医疗数据等待入链。可以通过本地或网络获取到医疗链信息。可以在得到授权的情况下,查看到患者的加密信息。

(2)患者客户端:患者客户端可以通过区块链网络查询到链上信息,以便于支持数据的验证。可以对自身患者块进行编辑,编辑智能合约完成授权信息的修改,编辑加密的医疗信息完成共享数据的修改。编辑后的结果通过请求超级节点来完成对医疗链上患者块的修改。

(3)查询客户端:查询客户端仅具有查询功能,可以获取到医疗链上的数据,在得到授权的情况下,可以得到患者的医疗数据。

3结语

区块链技术展现出了巨大的优势,使得其被广泛应用于多个领域。本文针对医疗数据共享问题,提出了一种基于区块链的医疗数据共享模型,详细描述了数据层、网络层、共识层、合约层以及应用层的实现方法。该医疗数据共享模型可以实现以患者为中心的医疗数据的安全高效共享。

参考文献:

[1] Nakamoto S. Bitcoin: APeer-to-Peer Electronic Cash system[OL]. https://bitcoin.org/bitcoin.pdf.

[2] Donet J a D, Perez-Sola C, Herrera-Joancomarti J. The bitcoin P2P network[C]. International Conference on Financial Cryptography and Data Security, 2014: 87-102.

[3] 康彦博. 基于区块链的数据安全关键技术研究[D].电子科技大学,2020.

[4] Mattila J. The Blockchain Phenomenon-The Disruptive Potential of Distributed Consensus Architectures[J]. ETLA Working Papers, 2016.

[5] Azaria A, Ekblaw A, Vieira T, et al. MedRec: Using blockchain for medical data access and permission management[C]. International Conference on Open and Big Data, 2016: 25-30.

[6] McFarlane C, Beer M, Brown J, Prendergast N. Patientory: A Healthcare Peer-to-Peer EMR Storage Networkv1.1[OL]. https://patientory.com/patientory_whitepaper.pdf

[7] Medicalchain[OL]. https://medicalchain.com/Medicalchain-Whitepaper-EN.pdf

[8] 王超,包先雨,邢军,等.基于区块链技术的跨境电商贸易链与联盟链研究[J].现代电子技术,2018,41(21):169-172.

[9] Ateniese G, Magri B, Venturi D, et al. RedactableBlockchain - Or - Rewriting History in Bitcoin and Friends[C]. IEEE European Symposium on Security and Privacy, 2017: 111-126.

[10] Castro M, Liskov B. Practical Byzantine Fault Tolerance and Proactive Recovery[J]. ACM Transactions on Computer Systems, 2002, 20(4): 398-461.

[11] 贾大宇,信俊昌,王之琼,等.区块链的存储容量可扩展模型[J].计算机科学与探索,2018,12(4):525-535.

[12] 武岳,李军祥.区块链P2P网络协议演进过程[J].计算机应用研究,2019,36(10):2881-2886.

[13]Viper:Go configuration with fangs[OL]. https://github.com/spf13/viper.

【通聯编辑:代影】

猜你喜欢
数据共享区块链
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
用“区块链”助推中企走出去