时间:2024-09-03
徐方位 张艳硕 高雨辰
北京电子科技学院,北京市 100070
随着比特币等数字货币的兴起,区块链技术作为其核心技术,结合了分布式数据存储、点对点传输、共识机制和加密算法等计算机技术,得到广泛认可,目前区块链技术的应用已逐步被多个行业重视,区块链具有分布式、去信任、公开透明、不可篡改、可追溯、集体维护和隐私维护等特点,对于医疗系统领域而言,需要引入区块链技术作为新的创新点以完善传统医疗系统的不足。
我们旨在将区块链技术、国密算法与医疗服务相结合,给医疗资源管理事业提供安全的保障;同时希望利用区块链P2P 网络的特性,解决资源流动效率低下的问题。 根据区块链分布式系统具有的透明、公开、不可篡改的特性,我们可以更好地监控该系统中每一笔珍贵药品的流动,一旦发生分配不合理等现象,可以根据区块链的储存方式追查到数据源头,从而追回。 借助互联网医疗大数据技术和云技术,我们可以对相关的医疗信息进行重构和及时的更新维护,从而构建起新型医疗资源社区。
在医疗系统功能方面,我们旨在提出基于区块链技术的医疗系统功能的概念化设想,如借助区块链实现病例信息同步化管理、医学难题资源共享、转接诊信息管理等功能,为现实应用提供思路和方法。
比特币(Bitcoin)的概念最初由中本聪在2008 年11 月1 日提出,并于2009 年1 月3 日正式诞生。 比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P 网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。
随着比特币等数字货币的兴起,区块链技术作为其核心技术,结合了分布式数据存储、点对点传输、共识机制和加密算法等计算机技术,具有去中心化、开放性、不可篡改性、可追溯性和匿名性等特点,逐步应用于金融服务,供应链,医疗教育等领域。
如今,由于虚拟货币的不稳定性,区块链正在逐渐去币化,越来越多的工程开始借鉴区块链的设计思想。 为顺应社会发展趋势,我们参考以太坊,超级账本的实现机制,提出了一种安全性能更高的基于区块链技术的新型医疗系统设计思想。 通过区块链把医疗系统的项目信息共享出来,与相关网络上有互联网筹款权限的组织联合,同时与民政部门、医院等精准扶贫信息进行对接,为真正需要帮助的人提供便利。
1.2.1 应用DPOS(代理权益证明)机制得到委托人名单
区块链中的共识算法核心就是解决三个问题:谁来产生block(区块),何时产生block,如何验证block 的合法性。 DPOS 选择的方式是:由当前的排名靠前的委托人列表和当前的时间偏移共同决定Block 的生产者,按照固定的时间间隔定期产生block,因为可以通过block 的时间戳确定合法锻造者,所以可以通过block 附带的签名和委托人的公钥验证其合法性。 然而DPOS存在着安全性上的漏洞,如委托人的权力过高,可能引发区块滥用的风险,因为DPOS 不像POW 那样对算力有要求,DPOS 的委托人锻造区块不需要算力,他们可以在瞬间锻造出无数区块,并发往不同的网络节点,导致网络分叉。
1.2.2 委托人组应用PBFT(使用拜占庭协议)机制处理交易请求
区块的验证,不再采用单一的签名验证,而是全节点投票的方式,每当新区块创造出来时,忠诚的节点并不会立即将其写入区块链,而是等待其他节点的投票。 当这个票数超过一定数量后,才进入执行阶段。
本算法假定错误节点数不超过f个,总结点数n≥3f+ 1,那么系统可以通过满足以下两个条件来保证区块链的一致性:
如果一个正确的节点接受并执行了一个block,那么所有正确的节点都提交相同的block。
所有正确的节点要么落后于最长链,要么与最长链一致,不会出现高度相同但block 不同的情况。
区块链通过去中心化和去信任的方式集体维护一个可靠数据库。 该技术方案让参与系统的任意多个节点,把一段时间内系统全部信息交流的数据,通过密码学算法计算和记录一个数据块,并且生成该数据块的指纹用于链接下个数据块并校验,系统所有参与节点来共同认定记录是否为真。
区块链的核心潜力在于分布式数据库的特性及其如何助益透明、安全和效率。 区块链作为一个最纯粹的应用形态,是一个共享的电子交易账本,以一个抗干扰的、对所有人公开可见的链条形式,由全网参与者共同记录和验证。 许可制或私有变种会在此之上增加一层特权,以决定谁可以参与到这个链条上。
1.3.1 分布式账本技术
从数据的角度来看,区块链是一种分布式账本,不仅能实现数据的分布式存储(可以存储在所有参与记录数据的节点中,而非集中存储于中心化的机构节点中),也能实现数据的分布式记录(可以由系统参与者集体记录,而非由一个中心化的机构集中记录)。
从效果的角度来看,区块链可以生成一套记录时间先后的、不可篡改的、可信任的数据库,这套数据库是去中心化存储且数据安全能够得到有效保证的。
从形成过程来看,区块链以区块为单位结构,如图1 所示。 在单笔交易中产生的Hash 值存放在区块头中。 区块链技术将不断生成的交易加入到区块中,当前区块满足条件后可加入主区块链。 每一个区块头包含父区块的Hash 值。这样一来,这个连接各个区块的Hash 值序列就形成了一条可以一直追溯到创世区块的链条,也就是区块链。
图1 区块链的单位结构
1.3.2 国密算法
国密算法是国家商用密码管理办公室制定的一系列密码标准,主要包括SM1、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法等。
SM1 算法为对称加密算法。 其加密强度与AES 相当。 该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
SM2 算法为非对称加密算法,基于ECC 椭圆曲线。 该算法已公开。 由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。 ECC 256 位安全强度比RSA 2048 位高,但运算速度快于RSA。
SM3 算法是消息摘要算法。 该算法已公开。 校验结果为256 位。
SM4 算法是无线局域网标准的分组数据算法。 属于对称加密,密钥长度和分组长度均为128 位。
在局域性的传统医疗系统中,各个节点能量有限,因此本系统采用联盟链区块链技术来设计安全数据存储系统。 除此之外,为保证支付完整可靠,保护交易双方个人隐私,保障对数据进行合法的访问,同时满足用户的多元化需求,本作品系统将采用国密算法、双链结构(私有链和联盟链)、混合共识机制和权限管理等多个技术方面进行设计。
目前多数医疗系统应用多使用中心化的设计,中心化则有信息造假的可能性。 为解决这一问题,本产品使用区块链去中心化功能,去中心化程度更高,信息更加透明,开放。 采用DPOS与PBFT 相结合的混合共识体制,极大地提高了联盟链的效率,确保信息同步化能够安全迅速。将病例信息同步化至区块链中,由于区块链的本身特性,可以保证资源的有效共享,安全共享以及及时查询,为救治病人提供了便利,扩大了医学治疗的窗口期。 病例信息同步化管理借助于分布式数据库技术,实现病人病例信息的储存、查询、共享。 个人信息数据库和记录病例信息存储至分布式的病例信息数据库中,可以保证资源的安全有效共享,方便患者随时随地查询。
针对传统区块链为单一链条的形式,结合需要,形成了“接诊”和“转诊”两条区块链。 接诊为私有链,记录每一个接诊信息的来源,去向。转诊链为联盟链,入驻各大医院方,已经经过认证的用户及组织才可发起进行相关转诊操作,这样有效阻止了转接诊断的低效性和无序性。
方案模型的构造利用了私有链与联盟链。每家医院都拥有自己的私有链与服务器,多个私有链一起构建联盟链。 患者病历密文存储在医院服务器,病历密文的哈希值和关键字索引存储在医院私有链上, 而由私有链块标识、患者伪身份和关键字索引构成的安全索引则存储在联盟链上。
与传统的数据中心化存储不同,本作品数据存储联盟链采用分布式数据存储方法来保证数据的安全存储,不依赖于全局可信的第三方实体,节点间采用端到端的通信方式,分布式存储数据,从而避免了传统中心化数据存储方法的中心节点容易遭受集中式恶意攻击的风险。 这种非中心化的存储系统具有良好的可扩展性和可靠性。
联盟链上存储了由关键字索引所构成的安全索引。 当有患者或者数据用户需要使用电子病历数据时, 患者使用自己的私钥产生搜索陷门发送至联盟链, 联盟链上节点进行搜索。 经患者授权后, 联盟链上节点在搜索到患者病历的原始密文后,对原始密文进行代理重加密,将转换后的密文发送给第三方数据用户, 数据用户使用自己的私钥解密密文。
医疗信息中有很多患者个人的隐私数据,我们设想采用国密算法保护这些敏感信息,以及进行真实性、完整性等保护。 具体做法包括:保密卡模块中拥有用户和医院的私钥,作为唯一标识;在发送病历时,本地通过SM3 摘要算法和SM2 签名算法计算MAC 值,并发送给服务节点,服务节点通过用户与医院的公钥进行真实性和完整性的验证。 同时也可采用数字信封技术,本地随机生成16 进制随机向量,用于与病历数据作SM4 对称加密;将随机向量使用私钥加密,一并传递给服务节点;节点在接收数据之后通过相反流程进行解密,此举在保证数据安全性的同时可有效提高加解密速度。
我们基于区块链技术、云数据库技术、访问控制系统与智能软硬件设备,完成如下四个主要模块,通过保密卡模块和访问控制模块为患者和医院提供真实性和机密性,通过信息存储模块为用户提供机密性和完整性,通过防篡改模块提供完整性和不可否认性,以此构建了一个高透明、高安全、易共享、易监管的智慧医疗资源管理系统。
我们为用户和医院提供了保密卡,保密卡由用户/医院唯一拥有。 保密卡存有用户/医院唯一标 识uid/pid和 用 户/医 院 私 钥uPriKey/pPriKey, 且拥有独立计算能力,能够为医患双方提供物理环境下的真实性认证。
图3 保密卡模块结构图
我们在系统上设计了访问控制模块。 通过保密卡模块结合数字签名机制,可以在访问控制模块中对用户或医院实体进行认证。 医患双方可以通过刷卡验证身份来获取相应的权限。
我们设计了用户链对患者与医院生成的诊疗数据进行存储,能够有效防止病历信息篡改,为医患纠纷事务提供了可依靠的证据。 区块链的共识机制使用DPOS 共识算法,可以有效解决区块链资源浪费的问题。
我们设计了统一的电子病历数据库,提高信息的可共享性,可以为患者提供完整的个人病历,用户通过个人私钥即可对应到个人信息。 同时,为了能确保患者的隐私,同时能为医疗研究提供医疗数据,我们将患者信息与诊疗病例相分离,分别存在信息数据库和病例数据库中,患者可通过uid和MAC(id) 值分别从数据库中找到个人信息和个人病例信息生成个人病例,同时医疗机构可以从病例数据库中利用病例数据进行分析。 通过这样的设计,我们可以在确保患者的病历信息不被泄露的情况下,为医疗机构提供大量医疗数据进行分析。
本系统主要涉及以下五个基本功能:病例信息同步化管理、医学难题资源共享、转接诊信息管理、医院专业化信息点评、医疗捐助管理。 同时为了符合综合性医疗系统服务要求,又嵌入了许多基础性功能,如系统主页查询、医疗论坛讨论、医疗专家、设备等信息查询、系统个人主页等功能。
图6 信息存储模块结构图
病例信息同步化管理借助于区块链技术实现病人病例的储存、查询、共享,目前大多数医疗机构采用的均为中心化的医疗系统,这种传统的医疗系统将患者的信息局限到中心的数据库中,患者本身难以及时调用,若发生医师更换,转换医院的情况,新的救治主体无法及时有效得到病人的基本病例。 同时一位患者在转诊时, 往往无法提供以往的就诊信息, 原因在于国内各医院医疗信息大多数情况下无法共享, 而仅能通过病历、检验单等极易丢失的纸质信息来实现一部分医疗信息的共享,这就给病人的救治增加了困难;而且中心化的服务器和数据库若受到攻击,极易损失大量信息,无法保证安全性。 而将病例信息同步化至区块链中,由于区块链的本身特性,可以保证资源的有效共享,安全共享以及及时查询,为救治病人提供了便利。 图10 和图12 分别为电子病历区块链结构示意图以及系统病历页面展示。
图10 电子病历区块链结构
图12 系统病历页面展示
我们以医院共同生成诊疗数据的流程作为软件引入区块链原理流程为例,在患者查询自己病历时,需要使用保密卡对个人信息验证,通过保密卡使用MAC 进行摘要的数字签名对uid进行处理,系统会使用患者认证数据库中的公钥进行验签。 如果结果一致,则会获得信息数据库和病历数据库的读权限,从数据库中分别读出个人信息和个人病例,生成个人病历,为用户提供了病历的机密性和数据完整性,为数据库提供了机密性。 图7 给出了病历数据读权限的判断流程。
图7 病历数据读权限判断流程
在患者到医院进行就诊时,患者为医院提供过往病历后,医院根据过往病历和当前病情生成病例信息s,患者和医院分别通过保密卡使用MAC 进行摘要的数字签名对生成的病历信息s进行处理,系统会分别使用患者/医院认证数据库中的公钥对结果进行验签,若结果都相同,则获得对病例数据库和区块的写权。 这为患者与医院的认证过程提供真实性认证,为患者的病例数据提供了机密性、真实性、不可否认性保护。图8 给出了病历数据写权限的判断流程。
图8 病历数据写权限判断流程
如果发生医疗纠纷问题,可通过医患双方对id值的MAC 查询对应数据表项,通过对id值的签名查找对应区块,通过对病例数据的再次MAC 和签名计算,比对结果,即可知道是否存在篡改数据的情况。 可通过图9 的方式提供数据完整性保护。
图9 数据完整性检验
由于区块链上保存的是用户uid的签名值,即使攻击者可以知道病例信息s,也难以通过病例信息s对区块进行反查,更难以通过区块对应到个人。 而个人可以通过MAC 值快速找到病例数据库中的病例信息s,同时在区块链上查找Sigu(uid),即可快速查找到个人病例区块,再通过对病例信息s进行 MAC 后签名得到Sigu(MACu(s)),同区块链中的数据对比即可判断是否被篡改。
病例数据库上存储的是用户uid的MAC值,由于MAC 值具有单向性,攻击者难以根据MAC 信息反查到uid。 但医疗机构却可以通过相同的MAC(uid) 值来判断出病例数据库中哪些病例来自同一个患者,有助于医疗机构对病患
建立模型进行大数据分析。 同时,公众也可以通过相同的MAC(pid) 建立模型,分析出医院的医疗水平。
图11 系统技术构架展示
医学难题资源共享利用区块链的技术做支撑形成系统功能,为医学研究提供便利。 现代医疗系统相对封闭,对于许多疑难杂症的治愈记录更是封闭,医疗界无法及时有效获取这些疑难杂症的信息,且这些珍贵的医学材料往往会由于封闭性导致长期无人问津;同时现代医疗系统不支持不同系统内的医生与医生的沟通对话,使得所遇到的难题无法得到共享,从而发生医学难题遗失等情况。 而此处提出的所支持的医学难题资源共享功能设计思想是该系统能够将珍贵的治愈记录,医学奇症记录到联盟链中供所有已经认证的主体进行研究和借鉴,同时可以考虑将此功能与大数据分析,人工智能相结合,从而在所共享的信息中找到问题的突破点。
图13 难题共享页面展示
转接诊信息管理将病人的转移、接收等不同机构之间存在交接的信息存入到区块链中,建立完整的转移、接收的信息历史追寻功能,方便进行快速有效的即时治疗,简化了转院手续;同时也嵌入交易系统,因为目前的医疗系统存在服务费与价值费不平衡、管理精算风险高以及维护现有EMR(Electronic Medical Record,电子医疗记录)开销大等问题,给转接带来了较大的麻烦,将交易系统信息嵌入链中,可以保护用户的知情权和业界的认证权,在一定程度上减轻了风险的危害性。
医院专业化信息点评以独立医院为结点信息,将医院的服务、水平等相关信息记录到区块链中,使得所有合法民众有权访问并反馈评价信息,待评价信息达到一定数量,可以将对医院有建设性作用的建议和对其他患者有用的信息随医院信息记录到区块链中,做到医院版的“大众点评”。
图14 转接诊信息管理页面展示
图15 医院专业化信息点评
图16 医疗捐助管理
医疗捐助管理基于区块链实现点对点捐助、多方认证等功能,传统的捐助系统借助于红十字会和社会慈善机构,医院系统往往不设立单独的捐助功能,而本系统将捐助功能加入,利用区块链的分布式、去信任、公开透明、不可篡改、可追溯、集体维护和保护隐私的特点,实现高质量捐助;同时也支持多种物资捐赠,金钱、医疗设备均可纳入信息链中,可以有效防止新冠状病毒爆发初期各地红十字会出现的物资挪用和低效工作等事件的发生。
测试流程如图17 所示:
图17 测试流程
系统功能测试,本部分针对系统功能性需求设计的各个模块进行测试,表1 至表4 展示了主要功能的测试结果。
表1 登录页面的性能测试
表2 输入与连接错误的性能测试
表3 我的病历页面的性能测试
表4 医疗信息页面的性能测试
系统非功能测试,对系统底层搭建框架的正确性进行测试,也包括并发测试等,研究系统的性能,为未来优化提供依据。
将其中一个节点在本地启动,本地硬件开发环境见表5:
表5 本地节点硬件开发环境
使用Postman 接口测试工具(版本9.0.3),对添加病历功能的API 进行测试。 服务节点与测试机处于同一局域网段下, ip 地址为192.168.43.200,端口为8081。
测试机通过post 方法发送json 格式的病历数据数据内容如图18 所示;经过服务节点计算,可以求出签名值与Hash 值,并以json 格式正确返回。
图18 发送数据内容
图19 返回数据内容
同时使用常用压力测试工具Apache JMeter(版本5. 4. 1)对系统中常用API 进行性能测试,针对上文中的功能性需求,分别模拟50、100、200、500 和1000 个用户同时对服务节点发送请求。 根据JMeter 性能测试工具提供的数据报告,本文计算了在不同并发数情况下各接口的平均响应时间,主要绘制图如表图20 所示。 区块链系统测试数据见表6。
图2 系统结构图
图20 接口平均响应时间
表6 数据表
由于工作疏忽或者医生本人医德不堪导致的信息的泄露和篡改极易发生,而将病例信息同步化至区块链中,由于区块链的本身特性,可以保证资源的有效共享,安全共享以及及时查询,为救治病人提供了便利。 故未来本系统可以优化并发展中心化病历系统。
医学难题资源共享利用区块链的技术创造系统功能为医学研究提供便利,我们所支持的医学难题资源共享功能能够将珍贵的治愈记录,医学奇症记录到链中供所有已经认证的主体进行研究和借鉴,同时我们考虑将此功能与大数据分析,人工智能相结合,从而在所共享的信息中找到问题的突破点,实现高效治疗。 在与多方技术的配合使用下,能够提供较为高效的医学难题数据库。
转接诊信息管理将病人的转移、接收等不同机构之间存在交接的信息存入到区块链中,建立完整的转移、接收的信息历史追寻功能,而传统的转接诊是相对独立,没有机构或者医疗组织进行双方对接的,这会给患者本身带来麻烦且增加了救治转移期,不利于患者的救治工作,而去中心化、多方参与的转接诊系统便可以做到相对一体化高效的转移,故在未来本系统将优化传统转接诊功能。
本系统从实际需求出发,立足现实,引入区块链底层技术以支撑新型医疗系统,且在该基础上嵌入原有医疗系统的合理化成分,去粗取精,保留精华,同时可拓展性良好,便于新的功能引入,在底层技术的支持下前端部分交互性良好,经过了性能测试考验、功能测试考验,具有现实性,未来可以在区块链支撑下形成更加综合的医疗系统服务体系。
全国各地初期在应对疫情防控物资管理方面都相继曝出许多问题,针对这种在应急情况下的医疗资源管理系统相对不完善,不紧凑的情况,我们基于区块链技术,结合实际情况,旨在提出和开发新型医疗资源管理系统。 对于此种新型管理系统,我们的定位是具有良好的适应性和优秀的应急性,在平常的医疗资源管理系统的基础上增加创新区块,争取更加完善。
区块链技术具有分布式、去信任、公开透明、不可篡改、可追溯、集体维护和隐私维护的特点。在搭建底层区块链网络时,采用国密算法SM2、SM3 以及混合共识机制(DPOS+PBFT)。 交易链上的交易信息角色申请成为网络中的共识节点,共同维护整个网络中的运作,交易信息及区块信息的验证及发布均在该层进行。
区块链技术可以使人们快速建立信任关系,在区块链上的交易是可以点对点完成的,消除了医疗从事者对第三方的需求,这意味着医疗系统和非营利性机构将不再依靠其他机构,如银行、律师和政府等实体机构。 区块链技术可以使捐赠的环节变得更加公开透明,每一次捐赠都会直接记录在分布式账本数据库中,可以确保捐款人对自己资金的流向清楚明白可查询;既然记录公开透明可查询,那么不可篡改的特性也就能确保财务信息不会被篡改;可匿名性还能保护捐款者的隐私,那么医院或者慈善机构就可以更加安全快速地得到捐助。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!