基于超级帐本和手指静脉的PHR共享方案
2021-10-26冷泽琪谭振江王坤昊丁婷婷
冷泽琪, 谭振江, 王坤昊, 丁婷婷
(吉林师范大学 计算机学院, 吉林 四平 136000)
0 引 言
现阶段的医疗记录系统存在很多管理和技术上的挑战。例如, 医护人员在做出重要的患者护理决策时, 不能及时地获取完整、 准确、 可靠的相关信息[1]; 当IT(Information Technology)提供商尝试通过提升服务质量获取收益时, 很多病理无法直接获取经济回报。激励失调会导致提供商的IT采用率增长缓慢。另外, 由于没有及时电子存档, 许多患者(尤其是儿童和老人)记错或忘记病史。而成年人涉及到一些隐私问题时, 未必能提供真实的病情导致治疗效果不佳。由此可见, 真实、 完整、 低成本地提供PHR(Personal Health Records)是制定治疗计划的关键。广义上讲, PHR包含完整的医疗保健数据, 如医疗历史、 用药程序和重大疾病以及过敏信息、 家庭监测数据、 家庭成员历史、 社会记录和生活方式、 免疫记录、 处方药、 实验室实验和遗传数据[2-5]。
由于现阶段区块链系统中对身份的重重筛选会造成高额的运算成本, 同时区块链的上链数据不可删除, 不可篡改, 因此, 随着PHR的增加, 存储压力会越来越大。FV(Finger Vein)身份验证和超级账本为上述问题提供了一个全新的解决方向, 故笔者提出一个基于超级账本和FV身份认证的PHR数据安全与共享方案, 将新型FV技术与Hyperledger Fabric结合, 降低了身份认证的成本和耗时。同时将索引和完整记录分别存储在链上和Filecoin中, 能减轻链上存储压力。并且基于访问控制智能合约的高度自治性能很好地保护隐私。
1 超级账本
1.1 超级账本概念
超级帐本不同于区块链和加密货币, 是一个开源的联合项目。它由Linux基金会托管和管理, 包括金融、 银行、 物联网、 供应链、 制造业和技术领域的领导者。
除了具有传统区块链技术的一般特点外, 超级账本作为一个开源系统还具有如下很多优势(信息来源: https:∥www.hyperledger.org/wp-content/uploads/2018/08/HL_Whitepaper_IntroductiontoHyperledger.pdf)。
1) 简要的沟通环境有助于新学员快速地赶上社区的发展进度。
2) 让众多开发者能集中精力处理较少的任务, 从而加强社区的专业化。
3) 鼓励协助开发项目, 大大减少重复, 简化新项目的开发。
4) 通过TSC(Technical Steering Committee)定期审查项目, 促进开源软件的质量。
5) 对开发者的知识产权采取一致的许可和标准, 开发者不必担心成员之间复杂的合同和隐藏的法律问题[7]。
由于超级账本是一个联合项目, 其中最早贡献到https:∥www.hyperledger.org/网站上的是Fabric项目。如图1所示是Fabric 2.0的交易流, 其中包括背书节点、 领导节点和记账节点, 橙色括号外代表执行该步骤的接口。
1.2 Fabric的结构及特性
Fabric整体结构包括应用、 链码、 账本、 数据库存储、 区块链结构、 共识、 权限管理和数字证书等多个组件。为方便开发者, Fabric还提供了gRPC API和SDK(Node.js, Java等)。通常情况下, 应用开发者只需要操作SDK即可访问网络中的资源(包括账本、 交易、 链码、 事件等), 无需关心底层的实现[6]。
此外, 为企业级标准应用开发的Fabric平台还具有很多特性。比如特殊的处理事务逻辑(“背书→排序→提交”模型)、 不同账本彼此隔离、 不同权限有不同的共享通道、 支持可插拔选项和共识机制等。这些特性对PHR系统的改革有很大的优势。因此, 选择Fabric作为底层平台, 联合FV识别技术开发一个PHR系统, 加强医疗信息共享的安全性。
2 模型预备知识
2.1 Filecoin存储平台
Filecoin是一种分布式的存储平台, 是基于星际文件系统的一个成熟项目。其中含有存储矿工、 客户机和检索矿工3个实体。Filecoin协议的一致算法能保护网络免受恶意活动的侵害[7]。为确认特定数量的存储在一段时间内以特定方式使用, Filecoin提出一种新型的“时空证明”, 即数据在特定的时间内占用了特定的存储空间。此外, Filecoin通过令牌进行对等交换[8]。比如, 客户存储一定量的Filecoin, 矿工就会为客户提供存储空间, 相应地, 矿工也会获得一定量的奖励。Filecoin具有成本低、 高效、 稳定等特性, 因此笔者选择Filecoin作为存储平台。
2.2 基于FV特征的身份验证
手指静脉是一种皮下结构, 它随机地发展成一个网络并延伸到一个手指上, 是一种很独特的生物特征。这种生物特征信息在同一个人的每只手的手指之间是无法比较的, 静脉生物测定也是非接触的[9], 因此不需要解决健康问题。如表1所示, 它与指纹、 虹膜和步态等其他生物特征识别方法相比, 手指静脉在应用中显示出一些独特的优势。
表1 手指静脉与其他特征对比的优势
3 PHFV模型设计与实现
为保证PHR数据的真实性和其他节点的安全共享, 笔者设计了一种基于超级账本和手指静脉的PHR共享模型(PHFV)。表2是文中各部分搭建的测试环境。
表2 测试图像的运行环境
3.1 PHFV的结构及流程
如图2所示, PHFV模型总共分为5个实体: 患者(PA: Patient)、 临床医生(CL: Clinician)、 医药研发机构(PRD: Pharmaceutical Research and Development institution)、 医生(DOC: Doctor)和医疗机构(ME: Medical institutions)。5个实体在模型中的工作任务解释如下(以下为模拟过程)。
PA。患者录入记录信息时, 用左手指接触手指静脉采集装置进行FV认证。过程分为两个阶段: 当PA进行手指静脉采集后, PA发出注册申请, 系统进行图像预处理, 并请求CL发送私钥签名PKS。系统对图像进行分割转换处理后, 将CL的PKS和静脉的二进制字符串打包生成MD5值, 生成该交易的唯一的哈希值, 记录在Fabric网络中。如果PA是老用户, 系统则发出静脉匹配请求, 将再次收集到的静脉纹路与注册时相比较, 若相同则判断为真实者并通过申请, 可以查阅PHR或上传记录(执行上述步骤)。若不同则判断为冒名顶替者, 请求无效并记录该人的指纹存档在一个私有链Blackchain中, 达到一定次数和条件, 该用户将禁止登录。
CL。由于CL作为记录证明医生, 需要将其私钥签名发送到注册节点, CL利用椭圆签名加密算法将自己的私钥加密。系统收到CL的签名后, 进行私钥签名验证, 流程为: 首先根据获得的消息Message计算哈希值H, 再计算一个中间点D(DX,DY), 然后将其与接收到的中间点Med(mx,my)进行对比, 如果相同, 就验证通过, 否则不通过, 进行重新签名。
图2 PHFV模型架构图Fig.2 PHFV model architecture diagram
PRD。医药研发单位负责共享并收集PHR。首先PRD向PHR发送请求, 区块链对接收到的消息进行哈希运算, 形成区块摘要; 然后用PRK对摘要进行加密, 形成签名。PA对消息进行哈希运算, 然后用相应的PUK解密, 再对比二个哈希值。如果一致, 验证通过, 可共享该PA的PHR。PRD将收集到的PHR信息集成分析可以促进医药的研发。
DOC。医生节点的访问目的在于, 当PA跨机构进行诊断时, 需要调用其历史医疗记录。医生的身份验证要通过智能合约, 通过后可以查看PA的病史, 以便DOC进行精准医疗。
ME。医疗机构主要包括: 医院、 医疗公司、 药店和其他医疗器械公司等实体。当ME发送请求给Fabric, 将触发智能合约。通过后, ME节点可实现共享安全的PHR, 作为利益方, 分析和整理安全的医疗记录有益于机构的进货筛选, 再对该机构的信誉、 经济实力和规模等进行相应提升。
3.2 FV身份验证流程
1) 图像采集。如图3所示, PA用左手指接触静脉采集装置后, CCD(Charge Coupled Device)摄像机(因为静脉切面比周围少, 用红外敏感的CCD摄像机可以观察到手指静脉形态。)通过近红外滤光片进行检测。1 000 nm的近红外光可以穿透手指皮肤, 而静脉中的血红蛋白可以吸收近红外光。
图3 FV认证框架Fig.3 FV certification framework
2) 区域图像提取。该过程包括使用CLANE算法进行对比度处理、 ROI(Region Of Interest)提取和基于Otsu-s的改进分割算法去除背景。先对图像进行对比度预处理即调整对比度使边缘和纹理清晰可见, 再对图像进行ROI提取, 即感兴趣区域。
3) 图像分割处理。笔者采用改进的Otsu-s分割算法去除FV背景图像。其将图像的灰度值分割成方差最大的两部分。在对比图4中, 左上角为原图像, 右上角为简单阈值分割, 左下角为邻域平均值分割, 二者的分割效果较差; 右下角为改进的Otsu-s, 采用高斯函数分布后执行的效果。
图4 改进后的OSTU分割手指静脉对比图Fig.4 Comparison of improved OSTU segmentation of finger veins
经过上述图像处理后, 系统会验证是否为本人录入健康记录, 防止恶意节点提供虚假信息。验证通过后, PA可以上传个人的医疗记录。
3.3 基于智能合约的访问控制策略
笔者设计了一个访问控制合约, 主要包括function createProduct、 function updateTimestamp()、 function fiveMinutesHavePassed()和function visiteProduct等函数。时间控制和次数控制的部分伪代码如下。
lastUpdated←0
call updateTimestamp()
lastUpdated←now
call fiveMinutesHavePassed()
now ←lastUpdated+5 minutes
totalVisted←0
callvisiteProduct()
if(fiveMinutesHavePassed() && totalVisted<=500)
then {totalVisted++
nickname←products[qurNum]}
else{callupdateTimestamp()
totalVisted←不合法的}
当PA通过该合约后可以查询自己的PHR信息。其中PA录入信息的格式如下:
PA={string memory nickname, string memory medicalclass, string memory numNote, uint idCard, string memory sex,string memory description, uint mykey}。图5为可查到的PHR信息。
图5 例子中上链的PHR信息Fig.5 PHR information on the chain in the example
例如, PA={tom, heart disease,20,222403,male,Need heart bypass surgery,20}。
4 PHFV方案测试分析
笔者选用Fabric2.0和Filecoin1.3.0作为测试平台。将文献[10]中基于区块链的DNSSEC的身份认证模型和文献[11]中基于区块链技术实现的实名数字身份认证机制进行模拟实验, 通过比较这两种身份验证模型(见图6、 图7)的执行时间和医疗数据的占用空间情况等其他指标, 验证PHFV方案的高效性和可行性。从图6可以看出, 随着医疗记录的增加, 笔者方案在身份认证耗时上具有明显的优势。从图7可以看出, 在同样存储空间中, 笔者的方案可以录入更多的个人健康记录。
图6 PHFV模型处理时间方面与其他方案对比 图7 PHFV模型存储方面与其他方案对比Fig.6 Comparison of PHFV model processing Fig.7 Comparison of PHFV model time with other solutions storage with other solutions
5 结 语
个人电子病历记录的共享有助于提高诊断准确率、 降低医疗成本以及对自身的健康做规划。在提高信息真实性方面, 采用新型的手指静脉身份认证, 用生物识别技术保证患者的记录真实性; 提出利用哈希索引和Filecoin结合减少区块链上的存储成本; 通过智能合约对访问节点进行限制, 防止恶意节点对PHR攻击。但在静脉识别和分割上的精准度有待提高, 下一步将致力于FV的精准分割, 并对手术病历记录进行深入研究, 为精准医疗做进一步的贡献。