基于区块链的医疗数据安全协作系统的制作方法

文档序号:17630602发布日期:2019-05-11 00:05阅读:223来源:国知局
基于区块链的医疗数据安全协作系统的制作方法

本发明涉及一种基于区块链的医疗数据安全协作系统,属于医疗大数据安全和利用技术领域。



背景技术:

随着信息技术的高速发展,人工智能和数据挖掘技术日益成熟,同时带来大数据热潮日益高涨。数据已经渗透到各行各业,成为重要的生产因素,在方便人们生活的同时,也不断改变着人类的生活方式,医疗大数据就是其中一个典型的例子。

医疗大数据来源于广大的患者,包括运动健康数据、常规检查数据、病历数据等,可以被用于不同程度的科学研究。随着近几年研究的不断深入,电子病历、智能问诊、精准医疗、疾病监控和预测等应用相继问世,对医学的突破与创新起到了至关重要的作用。

医疗大数据方便人类生活的同时,也给人类生活带来不同程度的安全威胁。数据来源的合法性、医疗数据的安全性、患者病情的隐私性等问题,给医疗大数据的收集、共享、有效利用带来巨大的障碍,数据孤岛问题一直存在。因此,在保证患者隐私性的前提下,研究医疗数据的合法收集,安全使用等具有深远意义。



技术实现要素:

发明目的:针对现有技术中存在的问题与不足,本发明提供一种基于区块链的医疗数据安全协作系统。本系统结合区块链基础设施建设一体化分布式存储系统,将数据分块存储于区块链网络节点中,相较于传统的集中式的云存储服务,去中心化存储的节点多,可以避免集中式云存储方案中一招致命的安全威胁,实现可靠、稳固的存储,在区块链上,运用密码学混合加密、属性加密、访问控制等策略,在信息认证、广播、传输过程中,通过数据脱敏和加密,充分保护个人隐私和数据安全。在本系统设计的密文访问控制策略下,可以让研究机构从区块链的基石数据链上提取授权的数据,消除数据孤岛现象,实现数据对互通联合。

技术方案:一种基于区块链的医疗数据安全协作系统,由app客户端和区块链及服务平台的服务端构成,包括数据加密模块、区块链存储模块、敏感类别属性数据授权模块、激励机制模块四大模块,主要实现功能为向患者用户、医生、医疗研究机构、社会机构提供电子病历生成、医生远程医疗、用户敏感数据授权、第三方机构安全访问数据等服务,实现医疗大数据的互联互通、安全协作。

所述数据加密模块针对电子病历中不同类别敏感信息,使用不同的密钥或者密钥组合,进行加密保护;运用混合加密,即用双钥加密体制传输单钥加密体制的密钥,而真正的病历数据则由单钥系统加密;医生用户可以通过验证链上链下数据的哈希值、前医生对病历信息的数字签名的方式确定所得患者病历数据的完整性和真实性;

所述区块链存储模块将数据加密模块产生的不同角色用户的身份信息、公钥信息等、患者用户的病例数据的密文、密钥密文以及用户授权凭证等存储在区块链上。

所述敏感类别属性数据授权模块,通过该模块患者用户可以通过系统app客户端随时按照意愿对某些敏感信息分类的属性数据进行授权,或是安全分享病历数据给医生进行远程医疗,或是共享部分医疗属性数据给医疗研究机构,帮助医疗大数据分析,或是分享绝对可信的数据给社会机构如保险公司、招聘公司等,作为人身健康凭证;机构也可以按照意愿预选和访问患者用户授权的医疗属性数据。

所述激励机制模块,用数据的分享激励更多医疗机构节点加入到网络的维护中,用积分激励患者共享更多的数据,当用户为系统提供数据贡献时,将会得到一定的积分奖励,此积分将用于系统app客户端上的拓展应用,比如使用大数据统计分析功能,兑换积分生成可视化视图,展现历史医疗数据的波动曲线,监控本人健康情况;在远程医疗功能中兑换积分换取预约医生和排队就诊的优惠时间;在治疗预警功能中兑换积分用于设置用药提醒、复诊提醒等。用积分激励患者共享更多的数据,为用户带来相应的收益的同时,提供优质数据的支持。

数据加密模块和敏感类别属性数据授权模块在具体开放实现时,独立自主编写了一个密码sdk包,将密文访问控制方案集成其中,与链上智能合约交互可以进行区块链上的数据读写操作,完成系统所需业务流程。

区块链存储模块中包括4类智能合约,并部署在区块链服务器上,分别是用于将病历分属性加密上链的“病历生成合约”,执行密钥可靠存储上链的“密钥保管合约”,当需要上传授权存证至区块链进行密钥分发的“授权存证合约”,以及安全访问链上数据资产的“访问数据资产合约”。触发这些智能合约就可以与区块链上数据交互,完成系统所需业务流程。

数据加密模块、区块链存储模块、敏感类别属性数据授权模块、激励机制模块四大模块相互联系相互作用,为向患者用户、医生、医疗研究机构、社会机构四种角色用户提供了用户注册与登陆业务、电子病历生成业务、敏感数据授权业务、患者用户访问数据业务、医生与患者安全共享数据业务、医疗研究机构获取敏感数据业务和社会机构获取敏感数据业务,实现医疗大数据的互联互通、安全协作。

七项主要业务的具体介绍如下:

1)用户注册与登录

(1)用户注册与密钥初始化

不同角色用户(包括患者用户、医生用户和机构用户)通过app客户端在区块链上都要进行实名认证注册,从系统的数据加密模块获取不同角色标识did,和初始化的公私钥对。在注册医生和机构用户时,需要上层机构审核验证,验证通过后才能获得带有医生或者机构标识的公钥。注册成功后,会触发区块链存储模块中的“密钥保管合约”,将用户的公钥和对公钥的签名上传至区块链存储模块进行保存,进行全局广播,并供在节点上由矿工验证。而注册后获得的私钥需由用户在本地安全存储。

(2)用户登陆

用户在登录时需选择不同角色身份登录,登陆成功后会自动从区块链存储模块上获取自己的公钥,以供之后的业务需要。

2)电子病历生成

(1)敏感数据属性加密

患者用户在就诊结束生成电子病历后,由医生对病历内容进行审核并在系统上的数据加密模块用医生的私钥进行签名,然后发送病历给患者用户,患者用户同样在数据加密模块用其私钥对电子病历签名后,再计算整个电子病历的hash值,接下来患者用户根据敏感类别对电子病历中的属性进行分类,数据加密模块为不同敏感类别的不同属性生成不同的属性密钥或者密钥组合,分别对不同敏感类别的不同属性进行加密。

(2)上传密文至区块链

患者用户在系统数据加密模块上使用自己的私钥对当前生成的电子病历中所有敏感类别属性的密文集合进行签名,最后触发区块链存储模块中的“病历生成合约”,将得到的签名与患者用户的id、电子病历的hash值、所有属性的密文集合拼合成一条记录,上传至相应区块链的区块链存储模块。

3)敏感数据授权

(1)患者用户对数据进行授权

患者用户可以签署敏感类别属性数据使用协议,按照个人意愿将自己的医疗数据授权给有需要的机构。在第一次生成电子病历时,敏感类别属性数据授权模块会首次弹出签署类别属性敏感数据使用协议的窗口,生成访问授权记录将触发区块链存储模块中的“授权存证合约”,被上传至区块链存储模块。同时,患者用户会生成对应授权的属性密钥集合,数据加密模块使用患者用户的公钥将属性密钥加密,与公钥一并,在签名后触发区块链存储模块中的“密钥保管合约”,被上传至区块链存储模块,实现属性密钥的安全分发与密文的安全访问控制。一旦有新访问授权记录生成并上传至区块链存储模块,激励机制模块按患者用户将的授权数据量给与积分奖励。

(2)患者用户取消或更新授权

当需要取消或更新访问授权时,通过敏感类别属性数据授权模块选择需要取消和更新的内容并发给数据加密模块,数据加密模块只需要将更新访问授权后的属性密钥集合,触发区块链存储模块中的“密钥保管合约”上传到区块链存储模块,同时触发区块链存储模块中的“授权存证合约”,将更新的访问授权记录上传至区块链存储模块,激励机制模块根据患者用户的更新后的授权数据,更新其积分奖励。取消或更新访问授权操作可以在app客户端上随时执行。患者用户还可以选择按周期签署敏感数据使用协议,当有新数据的属性或者新的机构需要授权时,仍然按照敏感数据授权业务的“患者用户对数据进行授权”功能执行,即可更新医疗研究机构对新数据对访问。

4)患者用户访问数据

(1)查询电子病历

患者用户作为数据拥有者,有权利通过app客户端触发“访问数据资产合约”,从区块链存储模块上访问所有病历密文数据,并通过数据加密模块解密存储在区块链存储模块上的属性密钥,安全访问所有医疗隐私数据。

(2)查询授权信息

同时患者也可以随时查看区块链存储模块上的授权记录,查询自己的已授权机构和已授权属性数据,并且有权通过敏感类别属性数据授权模块随时更改授权数据。

5)医生与患者数据安全共享

(1)线下就诊看病

患者用户在线下看病时,可以登录系统app客户端,由患者用户按照“患者访问数据业务”的“查询电子病历“功能,触发“访问数据资产合约”,安全访问区块链存储模块上的以往的电子病历,数据加密模块用患者用户和以往电子病历诊断医生的公钥验证患者和以往电子病历诊断医生的数字签名,验证通过后,数据加密模块将完整的电子病历数据直接展示或者加密发送给面前的医生。

(2)远程医疗

患者用户想要进行远程医疗应用时,首先可以用共享数据获得的积分在系统app客户端上进行名医预约、排队优惠的操作。预约到医生后,当需要以往电子病历时,患者用户需从区块链存储模块上下载以往的电子病历密文,首先通过数据加密模块验证以往电子病历诊断医生的签名,其次数据加密模块用患者用户的私钥解密电子病历密文得明文,最后患者用户通过数据加密模块将从区块链存储模块获取的远程医生公钥对病历加密后发送给远程医生。远程医生收到病历密文后,数据加密模块用其私钥解密病历使远程医生可以查看患者过往医疗信息状况,并通过验证以往电子病历诊断医生的数字签名向远程医生证明数据可靠性,用病历明文的哈希值与区块链存储模块上的哈希比对验证数据完整性。

(3)新病历生成

医生在与患者交互进行新一轮诊断后会生成新的电子病历,使用公私钥密码体系让双方对病历进行安全传输并签名,患者最后拿到新电子病历后按照电子病历生成业务中的功能操作,通过数据加密模块对电子病历进行分属性加密,签名并上传至区块链存储模块。

6)医疗研究机构获取敏感数据

(1)机构预选数据属性

医疗研究机构可以将所需要的患者属性数据事先记录在区块链存储模块上,方便系统给用户签署敏感类别属性数据使用协议时调用,让患者用户以勾选的方式决定是否授权共享。

(2)经授权后安全访问数据

在区块链存储模块上有确定的患者用户授权记录后,医疗研究机构就可以触发“访问数据资产合约”,从区块链存储模块上下载患者用户授权的密钥密文和数据密文,密钥密文和数据密文都可由数据加密模块使用患者用户公钥验证患者用户的签名,确保数据来源可信。签名验证结束后,数据加密模块用机构私钥解密密钥的密文得到患者授权给机构的属性密钥,机构再使用属性密钥安全访问自己事先想获取的区块链存储模块上特定敏感数据,同样机构可以用患者用户公钥通过数据加密模块验证患者签名。

(3)已授权机构动态变更

在有医疗研究机构退出敏感类别属性数据使用协议时,患者用户将通过“敏感数据授权业务”中的“患者用户取消或更新授权”功能更新密钥集合,退出的机构可以继续访问区块链存储模块上之前的数据,但是无法访问退出之后患者新上传的数据。

在有新医疗研究机构加入协议时,患者可以按周期签署敏感类别属性数据使用协议,对新医疗研究机构进行敏感类别属性数据授权,新加入的机构可以按上述敏感数据授权业务、医疗研究机构获取敏感数据业务中介绍的流程获取数据。

7)社会机构获取敏感数据作可信凭证

社会机构可以通过app客户端向用户发起数据索要,在用户授权后,触发“访问数据资产合约”,从区块链存储模块上下载患者用户授权的密钥密文和数据密文。社会机构通过数据加密模块先验证患者用户的签名确定数据来源可信,再使用属性密钥安全访问自己事先想获取的链上特定敏感数据,并验证数据的hash值和用户、医生对病历内容的签名,确定数据的可信性与权威性。

智能合约设计

1、病历生成合约

数据加密模块在电子病历生成并进行属性加密后上传至区块链存储模块,例如:患者a和医生b共同生成含有敏感信息类别属性s0、s1、s2、s3的病历,触发“病历生成合约”:

1)患者a和医生b分别使用各自的私钥skpa和对病历内容进行签名,生成

2)对电子病历内容计算hash值h(data);

3)患者a使用不同的属性密ks0、ks1、ks2、ks3钥对不同属性信息data0、data1、data2、data3进行对称加密,得到对应的密文sendata0、sendata1、sendata2、sendata3;

4)患者a使用自己的私钥skpa再对生成的所有属性信息密文集合进行签名,生成

5)将以下信息写入区块链存储模块:

表明“患者a和医生b共同生成含有属性s0、s1、s2、s3敏感信息的病历”;

「病历生成合约」完成。

2、密钥保管合约

(1)患者用户

数据加密模块将公钥和属性密钥集合上传区块链存储模块保管,设:患者a生成了属性密钥ks0、ks1、ks2、ks3,用来加密含有属性s0、s1、s2、s3敏感信息的病历,属性密钥生成后触发“密钥保管合约”,将以下信息写入区块链存储模块:包含患者a公钥、属性类型标识、对应属性的对称密钥集合,以及患者的签名;

(2)医生用户

将以下信息写入区块链存储模块:包含医生b的公钥以及医生b的签名记录。

(3)机构用户

将以下信息写入区块链存储模块:包含机构c的公钥以及机构c的签名记录。

3、授权存证合约

授权记录上传至区块链存储模块存证,设患者a授权s1属性数据、s2属性数据给机构b使用,触发“授权存证合约”:

1)读取区块链存储模块上患者用户的「密钥集合」,提取属性类型标识s1、s2后的

2)患者用户a输入本地存储的私钥skpa,解密得属性的对称密钥ks1、ks2;

3)读取区块链存储模块上机构用户的「密钥集合」中的公钥使用非对称加密方案用pkb分别加密ks1、ks2,得密文

4)最后对所有待上传信息用患者a的私钥进行签名附在记录末尾;

5)将以下信息写入区块链:表明“患者用户a授权s1属性数据、s2属性数据给机构b”;

「授权智能合约」完成。

4、访问数据资产合约

医疗研究机构和社会机构在得到用户授权后访问敏感数据,设:机构b在授权后访问患者用户a的授权s1属性数据、s2属性数据,触发“访问数据资产合约”:

1)读取区块链存储模块上患者的「密钥集合」,提取患者a的公钥读取区块链存储模块上患者的「授权记录」,用pkpa验证签名

2)签名验证成功后,用机构本地存储多私钥解密得加密s1/s2属性数据的对称密钥ks1/ks2;

3)读取区块链存储模块上患者的「密文数据」记录,用pkpa验证签名

4)签名验证成功后,提取记录中对应s1、s2属性类型的数据用对称密钥ks1/ks2解密,从而获得明文数据;

「访问数据智能合约」完成。

附图说明

图1是电子病历生成业务流程图;

图2是远程医疗业务流程图;

图3是医疗研究机构获取敏感数据业务流程图;

图4是混合加密工作过程图。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

一种基于区块链的医疗数据安全协作系统,由app客户端和区块链及服务平台的服务端构成,包括数据加密模块、区块链存储模块、敏感类别属性数据授权模块、激励机制模块四大模块,主要实现功能为向患者用户、医生、医疗研究机构、社会机构提供电子病历生成、医生远程医疗、用户敏感数据授权、第三方机构安全访问数据等服务,实现医疗大数据的互联互通、安全协作。

基于以上功能模块,本系统主要用于开展以下业务:1)用户注册与登录业务;2)电子病历生成业务;3)敏感数据授权业务;4)患者用户访问数据业务;5)医生与患者安全共享数据业务;6)医疗研究机构获取敏感数据业务;7)社会机构获取敏感数据业务。

所述数据加密模块,运用密码学混合加密、属性加密、访问控制等策略,在信息认证、广播、传输过程中,通过数据脱敏和加密,充分保护个人隐私和数据安全。

数据加密模块运用属性加密对不同属性就诊时间、血压、脉搏等进行敏感信息分类,不同类别敏感信息使用不同的密钥或者密钥组合,进行加密保护,可以实现细粒度访问控制;运用混合加密,即用双钥加密体制传输单钥加密体制的密钥,而真正的病历数据则由单钥系统加密,防止数据泄露,保护隐私安全,可以在保护明文和密钥的情况下有效提升加解密效率;运用数字签名、哈希等技术,医生用户可以通过验证链上链下数据的哈希值、前医生对病历信息的数字签名等方式确定所得患者病历数据的完整性和真实性;

数据加密模块与系统七大业务皆有联系,在用户注册与登录业务中初始化用户公私钥对信息,在电子病历生成业务中用属性加密保护病历数据,在敏感数据授权业务中用混合加密保护密钥组合的安全分发,不同角色用户进行数据访问时除了可以安全解密数据,还可以用数字签名和哈希等技术验证数据可信性与权威性。

所述区块链存储模块,结合区块链和密码学技术设计稳定的、确权的、具有共识性且去中心化的医疗病历数据存储系统,保护数据的隐私性、可靠性,同时解决数据的存储孤岛窘境,打破数据与数据的隔离。

区块链是采用分布式数据存储、点对点传输、共识机制、加密算法等技术的新型应用模式。区块链技术本身具有去中心化管理、去信任依赖、数据可靠、公开透明、节点隐私保护等特点。将数据加密模块产生的不同角色用户的身份信息、公钥信息等、患者用户的病例数据的密文、密钥密文以及用户授权凭证等存储在区块链上。

区块链存储模块与系统七大业务皆有联系,在用户注册与登录业务中生成用户信息和公钥信息上传至区块链存储,电子病历生成业务中生成的病历密文上传至区块链存储,敏感数据授权业务中的授权凭证以及属性密钥上传至区块链存储,不同角色用户进行数据访问时也由用户从区块链上获取。

所述敏感类别属性数据授权模块,运用密文访问控制策略,让链上的不同敏感类别数据具有可控性,系统在保障隐私安全性的同时,可以跨过医院间的数据隔离沟壑,让用户实时读取数据并进行授权,真正拥有自己的全部医疗数据。同时让患者和机构可以有选择性地发布和接收医疗元数据,提升健康医疗研究效率和质量,实现数据安全互通,推动健康医疗大数据应用新发展。

患者用户可以通过系统app客户端随时按照意愿对某些敏感信息分类的属性数据进行授权,或是安全分享病历数据给医生进行远程医疗,或是共享部分医疗属性数据给医疗研究机构,帮助医疗大数据分析,或是分享绝对可信的数据给社会机构如保险公司、招聘公司等,作为人身健康凭证。

敏感类别属性数据授权模块与系统中的敏感数据授权业务联系最密切,患者用户可以通过签署敏感类别属性数据使用协议的方式,按照个人意愿将自己的医疗数据授权给有需要的机构,同时还可以随时更改、撤销授权,在医疗研究机构获取敏感数据和社会机构获取敏感数据业务中,机构也可以按照意愿预选和访问患者用户授权的医疗属性数据。

所述激励机制模块,设计了一个激励机制能有效激励更多节点加入到网络的维护中,起到有效激励系统成长的作用。

用数据的分享激励更多医疗机构节点加入到网络的维护中,医院、研究所等医疗机构担任起区块链网络中的“矿工”角色,共同维护系统稳定、保障系统安全,有挖掘新的区块、验证新区块合法性、存储区块节点的作用,矿工成功挖矿并得到其他节点的验证认可后,可以获取相应奖励,比如与用户签订协议获取共享数据等权益。

用积分激励患者共享更多的数据,当用户为系统提供数据贡献时,将会得到一定的积分奖励,尤其在用户进行授权操作,共享数据给医疗研究机构时,会获得成倍的积分奖励,此积分将用于系统app客户端上的拓展应用,比如使用大数据统计分析功能,兑换积分生成可视化视图,展现历史医疗数据的波动曲线,监控本人健康情况;在远程医疗功能中兑换积分换取预约医生和排队就诊的优惠时间;在治疗预警功能中兑换积分用于设置用药提醒、复诊提醒等。用积分激励患者共享更多的数据,为用户带来相应的收益的同时,为“矿工”提供优质数据的支持。

激励机制模块与系统中的敏感数据授权业务联系最大,患者用户可以通过敏感类别属性数据授权模块签署敏感类别属性数据使用协议,敏感类别属性数据授权模块将敏感类别属性数据使用协议传输给区块链存储模块,区块链存储模块将产生授权记录,一旦有新访问授权记录生成并有授权数据上传至区块链,患者用户将按授权数据量获取积分奖励,积分可在系统的其他应用中换取优惠。而在医疗研究机构获取敏感数据和社会机构获取敏感数据业务中,作为矿工的机构能以较低的成本获得更多可信、有价值、来源广泛的数据资源,从而加速医疗科学和健康事业的发展。

数据加密模块和敏感类别属性数据授权模块在具体开放实现时,独立自主编写了一个密码sdk包,将密文访问控制方案集成其中,与链上智能合约交互可以进行区块链上的数据读写操作,完成系统所需业务流程。

区块链存储模块中设计了4类智能合约,并部署在区块链服务器上,分别是用于将病历分属性加密上链的“病历生成合约”,执行密钥可靠存储上链的“密钥保管合约”,当需要上传授权存证至区块链进行密钥分发的“授权存证合约”,以及安全访问链上数据资产的“访问数据资产合约”。触发这些智能合约就可以与区块链上数据交互,完成系统所需业务流程。

激励机制模块则集成在了app客户端,用户可以在客户端生成新电子病历,随时查看历史病历信息、授权信息,还可以签署敏感类别属性数据使用协议,完成授权获得积分奖励,此积分奖励可以在app上的其他应用中享受优惠。

数据加密模块、区块链存储模块、敏感类别属性数据授权模块、激励机制模块四大模块相互联系相互作用,为向患者用户、医生、医疗研究机构、社会机构四种角色用户提供了用户注册与登陆、电子病历生成、用户敏感数据授权、医生与患者安全共享数据业务、医疗研究机构/社会机构安全访问数据等服务,实现医疗大数据的互联互通、安全协作。

七项主要业务的具体介绍如下:

1)用户注册与登录

(1)用户注册与密钥初始化

不同角色用户(包括患者用户、医生用户和机构用户)通过app客户端在区块链上都要进行实名认证注册,从系统的数据加密模块获取不同角色标识did,和初始化的公私钥对。在注册医生和机构用户时,需要上层机构审核验证,验证通过后才能获得带有医生或者机构标识的公钥。注册成功后,会触发区块链存储模块中的“密钥保管合约”,将用户的公钥和对公钥的签名上传至区块链存储模块进行保存,进行全局广播,并供在节点上由矿工验证。而注册后获得的私钥需由用户在本地安全存储。

(2)用户登陆

用户在登录时需选择不同角色身份登录,登陆成功后会自动从区块链存储模块上获取自己的公钥,以供之后的业务需要。

2)电子病历生成

(1)敏感数据属性加密

患者用户在就诊结束生成电子病历后,由医生对病历内容进行审核并在系统上的数据加密模块用医生的私钥进行签名,然后发送病历给患者用户,患者用户同样在数据加密模块用其私钥对电子病历签名后,再计算整个电子病历的hash值,接下来患者用户根据敏感类别对电子病历中的属性如血压、脉搏、用药史等进行分类,数据加密模块为不同敏感类别的不同属性生成不同的属性密钥或者密钥组合,分别对不同敏感类别的不同属性进行加密。

(2)上传密文至区块链

患者用户在系统数据加密模块上使用自己的私钥对当前生成的电子病历中所有敏感类别属性的密文集合进行签名,最后触发区块链存储模块中的“病历生成合约”,将得到的签名与患者用户的id、电子病历的hash值、所有属性的密文集合拼合成一条记录,上传至相应区块链的区块链存储模块。

电子病历生成业务流程图如图1所示。

3)敏感数据授权

(1)患者用户对数据进行授权

患者用户可以签署敏感类别属性数据使用协议,按照个人意愿将自己的医疗数据授权给有需要的机构。在第一次生成电子病历时,敏感类别属性数据授权模块会首次弹出签署类别属性敏感数据使用协议的窗口,生成访问授权记录将触发区块链存储模块中的“授权存证合约”,被上传至区块链存储模块。同时,患者用户会生成对应授权的属性密钥集合,数据加密模块使用患者用户的公钥将属性密钥加密,与公钥一并,在签名后触发区块链存储模块中的“密钥保管合约”,被上传至区块链存储模块,实现属性密钥的安全分发与密文的安全访问控制。一旦有新访问授权记录生成并上传至区块链存储模块,激励机制模块按患者用户将的授权数据量给与积分奖励,积分可在系统的其他应用中换取优惠。

(2)患者用户取消或更新授权

当需要取消或更新访问授权时,通过敏感类别属性数据授权模块选择需要取消和更新的内容并发给数据加密模块,数据加密模块只需要将更新访问授权后的属性密钥集合,触发区块链存储模块中的“密钥保管合约”上传到区块链存储模块,同时触发区块链存储模块中的“授权存证合约”,将更新的访问授权记录上传至区块链存储模块,激励机制模块根据患者用户的更新后的授权数据,更新其积分奖励。取消或更新访问授权操作可以在app客户端上随时执行。患者用户还可以选择按周期签署敏感数据使用协议,当有新数据的属性或者新的机构需要授权时,仍然按照敏感数据授权业务的“患者用户对数据进行授权”功能执行,即可更新医疗研究机构对新数据对访问。

4)患者用户访问数据

(1)查询电子病历

患者用户作为数据拥有者,有权利通过app客户端触发“访问数据资产合约”,从区块链存储模块上访问所有病历密文数据,并通过数据加密模块解密存储在区块链存储模块上的属性密钥,安全访问所有医疗隐私数据。

(2)查询授权信息

同时患者也可以随时查看区块链存储模块上的授权记录,查询自己的已授权机构和已授权属性数据,并且有权通过敏感类别属性数据授权模块随时更改授权数据。

5)医生与患者数据安全共享

(1)线下就诊看病

患者用户在线下看病时,可以登录系统app客户端,由患者用户按照“患者访问数据业务”的“查询电子病历“功能,触发“访问数据资产合约”,安全访问区块链存储模块上的以往的电子病历,数据加密模块用患者用户和以往电子病历诊断医生的公钥验证患者和以往电子病历诊断医生的数字签名,验证通过后,数据加密模块将完整的电子病历数据直接展示或者加密发送给面前的医生。

(2)远程医疗

患者用户想要进行远程医疗应用时,首先可以用共享数据获得的积分在系统app客户端上进行名医预约、排队优惠等操作。预约到医生后,当需要以往电子病历时,患者用户需从区块链存储模块上下载以往的电子病历密文,首先通过数据加密模块验证以往电子病历诊断医生的签名,其次数据加密模块用患者用户的私钥解密电子病历密文得明文,最后患者用户通过数据加密模块将从区块链存储模块获取的远程医生公钥对病历加密后发送给远程医生。远程医生收到病历密文后,数据加密模块用其私钥解密病历使远程医生可以查看患者过往医疗信息状况,并通过验证以往电子病历诊断医生的数字签名向远程医生证明数据可靠性,用病历明文的哈希值与区块链存储模块上的哈希比对验证数据完整性。

远程医疗业务流程图如图2所示。

(3)新病历生成

医生在与患者交互进行新一轮诊断后会生成新的电子病历,使用公私钥密码体系让双方对病历进行安全传输并签名,患者最后拿到新电子病历后按照电子病历生成业务中的功能操作,通过数据加密模块对电子病历进行分属性加密,签名并上传至区块链存储模块。

6)医疗研究机构获取敏感数据

(1)机构预选数据属性

医疗研究机构可以将所需要的患者属性数据事先记录在区块链存储模块上,方便系统给用户签署敏感类别属性数据使用协议时调用,让患者用户以勾选的方式决定是否授权共享。

(2)经授权后安全访问数据

在区块链存储模块上有确定的患者用户授权记录后,医疗研究机构就可以触发“访问数据资产合约”,从区块链存储模块上下载患者用户授权的密钥密文和数据密文,密钥密文和数据密文都可由数据加密模块使用患者用户公钥验证患者用户的签名,确保数据来源可信。签名验证结束后,数据加密模块用机构私钥解密密钥的密文得到患者授权给机构的属性密钥,机构再使用属性密钥安全访问自己事先想获取的区块链存储模块上特定敏感数据,同样机构可以用患者用户公钥通过数据加密模块验证患者签名,得到的医疗数据可用于医学大数据研究。

医疗研究机构获取敏感数据业务流程图如图3所示。

(3)已授权机构动态变更

在有医疗研究机构退出敏感类别属性数据使用协议时,患者用户将通过“敏感数据授权业务”中的“患者用户取消或更新授权”功能更新密钥集合,退出的机构可以继续访问区块链存储模块上之前的数据,但是无法访问退出之后患者新上传的数据。

在有新医疗研究机构加入协议时,患者可以按周期签署敏感类别属性数据使用协议,对新医疗研究机构进行敏感类别属性数据授权,新加入的机构可以按上述敏感数据授权业务、医疗研究机构获取敏感数据业务中介绍的流程获取数据。

7)社会机构获取敏感数据作可信凭证

社会机构可以通过app客户端向用户发起数据索要,在用户授权后,触发“访问数据资产合约”,从区块链存储模块上下载患者用户授权的密钥密文和数据密文。社会机构通过数据加密模块先验证患者用户的签名确定数据来源可信,再使用属性密钥安全访问自己事先想获取的链上特定敏感数据,并验证数据的hash值和用户、医生对病历内容的签名,确定数据的可信性与权威性。

密码方案设计

(1)安全性假设

a.医生身份需要在注册时由上层权威机构进行严格地审核验证。只有验证通过的医生才能成功注册医生身份,拥有属于医生的公私钥对,并在区块链网络里广播公钥。这样医生才有权在系统线下就诊和远程医疗功能中发挥医生角色的作用,看到用户共享的敏感医疗数据。

b.机构身份和医生身份一样需要在注册时由上层权威机构进行严格地审核验证。只有验证通过的机构才能成功注册机构身份,拥有属于机构的公私钥对,并将有研究需求的数据事先广播至区块链网络,方便系统按需求自动修订与患者签订的《敏感数据类别属性使用协议》。

c.当患者和机构的敏感类别属性数据共享合约到期未续,即机构退出时,患者用户将更换属性密钥集合,机构无法访问合约到期之后的患者数据。

d.解约后的医生和机构若获取到用户信息将可能造成敏感信息泄漏。系统将在区块链网络中广播解约信息,通过智能合约在区块链存储模块中读取到以上信息时,系统默认之前上传至区块链的公钥作废。

(2)属性加密

对于敏感类别属性数据,数据拥有者可通过加密数据、控制用户的解密能力实现密文访问控制。密文策略的属性加密将用户私钥关联到一个属性集,密文关联到一个访问控制策略,若用户属性集满足访问控制策略,则用户具有解密数据的能力。属性加密适用于分布式环境下解密方不固定的情况,可以免去密文访问控制中频繁出现的密钥分发代价。

本系统使用属性加密,对不同属性信息比如血压、脉搏、用药史等进行分类,不同属性信息使用不同的密钥或者密钥组合:

任选两个大素数p1,q1,满足选择t个密钥满足生成的k1k2…kt即为密钥组合。

运用属性加密对病历进行加密保护,再上传至区块链,并且按照《敏感数据类别属性使用协议》进行密钥集合的更新,实现属性可撤销的医疗敏感数据的密文访问控制。

(3)混合加密

虽然公钥加密不需要在收发消息的双方之间交换密钥,但是公钥加密比单钥加密速度慢,消息空间也经常受限制,不宜用于长消息的加密。

混合加密的工作过程如图4所示。假设通信双方分别为alice和bob,首先,alice将明文用本地的对称密钥加密,并从服务器端得到bob的非对称公钥,用它来对本地的对称密钥加密。然后,把两端密文拼合在一起发送给bob。bob得到密文后,先将其拆分成密钥文和密文两段,再用本地的非对称私钥对密钥文进行解密,得到加密密文的对称密钥,然后用对称密钥对密文解密,得到明文;

在此过程中,对明文加密和对密文解密都采用了对称加密解密方式,速度快,且都在一侧进行,没有通过网络传输,安全性高;而网络传输的是bob的非对称公钥和经其加密的对称密钥,虽然有截获风险,但是得到了加密保护,不会造成数据泄露。

本系统在医生与患者数据安全共享、敏感数据授权等业务的数据加密模块中,运用了混合加密的原理,采取对称加密(aes/国密算法sm4)和非对称加密(rsa/国密算法sm2)相结合的加密方案,保障数据在传输中的隐私安全。

(4)哈希函数

哈希函数又称为散列函数,它是一种单向密码体制,即它是一个从明文到密文的不可逆映射,可以将任意长度的输入经过变换以后得到固定长的输出。hash函数的安全性依赖于3个条件:单向性、抗弱碰撞性、抗强碰撞性。

1)对任意给定的hash值z,找到满足h(x)=z的x在计算上是不可行的,这一性质也称为函数的单向性。

2)已知x,找到y(y≠x)满足h(y)=h(x)在计算上是不可行的,这一性质也称为抗弱碰撞性。

3)找到任意两个不同的输入x、y,h(y)=h(x)计算上是不可行的,这一性质也称为抗强碰撞性。

在抗碰撞hash函数中,要找出两个输入映射到一个输出上是困难和不可行的,并且函数的输出比输入短。本系统用到的sha-256就是一个抗碰撞hash函数,目前尚未出现对它的碰撞攻击。

本系统将在区块链存储模块上记录电子病历、授权信息等数据。由于区块链的数据环环相扣,每个区块都将对应一长串函数密码,如果修改某个区块内容,那么后续区块内容就不再匹配,导致信息篡改作废。同时由于区块链使用分布式多中心化的方式,每一个使用该产品的人都是区块链的一个节点,会完整的保留一份所有交易数据。假设我们想篡改其中一个区块的信息,那么当前区块的头哈希就会发生改变,由于哈希函数具有碰撞阻力,改变后的头哈希将无法与其下一区块的父哈希相匹配,篡改者需要继续修改其下一区块的父哈希值,并一直修改之后每个区块。这要求篡改者在同一时间同时入侵所有参与记录的节点并篡改数据,只有重新计算被更改区块后续的所有区块,并且追上网络中合法区块链的进度后,并把这个长的区块链分叉提交给网络中的其他节点,才有可能被认可。在很多情况下,产生一个新区块的难度很大,要连续产生多个区块组成新分叉的计算难度更是惊人。一个恶意节点要做到这点需要拥有至少全网51%的算力基础,由于区块链是一个分布式系统,大部分节点都是相互独立的,“51%攻击”在现实中很难发生,这即保证了区块链数据的难以篡改。

本系统的数据加密模块还在生成病历过程中,使用哈希函数对病历明文计算hash值,附在记录末端上传至区块链。当监管部门/远程医疗的医生需要确保数据没被篡改时,可以在数据加密模块安全解密后对病历明文再计算一次hash,与链上存储的hash值进行匹配,验证数据的完整性和不可篡改性。所述记录指的是拼接的、要上传至区块链的记录,包括患者用户的id、电子病历的hash值、所有属性的密文集合。

(5)数字签名

数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用hash函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。

数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。

本系统基于区块链使用数字签名技术,确保数据安全。比如在生成电子病历功能中,患者进行属性加密前,医生需对电子病历进行签名,确保病历数据的权威性和真实性,杜绝了患者用户自己无中生有的可能;再如电子病历密文在上传区块链前需要私钥签名,否则无法被其他节点验证。

智能合约设计

1、病历生成合约

数据加密模块在电子病历生成并进行属性加密后上传至区块链存储模块,例如:患者a和医生b共同生成含有敏感信息类别属性s0、s1、s2、s3的病历,触发“病历生成合约”:

1)患者a和医生b分别使用各自的私钥skpa和对病历内容进行签名,生成

2)对电子病历内容计算hash值h(data);

3)患者a使用不同的属性密钥ks0、ks1、ks2、ks3对不同属性信息data0、data1、data2、data3进行对称加密,得到对应的密文sendata0、sendata1、sendata2、sendata3;

4)患者a使用自己的私钥skpa再对生成的所有属性信息密文集合进行签名,生成

5)将以下信息写入区块链存储模块:

表明“患者a和医生b共同生成含有属性s0、s1、s2、s3敏感信息的病历”;

「病历生成合约」完成。病历生成合约的符号表如表1所示。

表1病历生成符号表

2、密钥保管合约

(1)患者用户

数据加密模块将公钥和属性密钥集合上传区块链存储模块保管,例如:患者a生成了属性密钥ks0、ks1、ks2、ks3)用来加密含有属性s0、s1、s2、s3敏感信息的病历,属性密钥生成后触发“密钥保管合约”:

将以下信息写入区块链:

包含患者a公钥、属性类型标识、对应属性的对称密钥集合(患者公钥加密保护),以及患者的签名。患者用户的密钥保管符号表如表2所示。

表2患者密钥保管符号表

(2)医生用户

将以下信息写入区块链存储模块:包含医生b的公钥以及医生b的签名记录。医生用户的密钥保管符号表如表3所示。

表3医生密钥保管符号表

(3)机构用户

将以下信息写入区块链存储模块:包含机构c的公钥以及机构c的签名记录。机构用户的密钥保管符号表如表4所示。

表4机构密钥保管符号表

3、授权存证合约

授权记录上传至区块链存储模块存证,例如:患者a授权s1属性数据、s2属性数据给机构b使用,触发“授权存证合约”:

表5授权存证符号表

1)读取区块链存储模块上患者用户的「密钥集合」,提取属性类型标识s1、s2后的

2)患者用户a输入本地存储的私钥解密得属性的对称密钥ks1、ks2;

3)读取区块链存储模块上机构用户的「密钥集合」中的公钥使用非对称加密方案用pkb分别加密ks1、ks2,得密文

4)最后对所有待上传信息用患者a的私钥进行签名附在记录末尾;

5)将以下信息写入区块链:表明“患者用户a授权s1属性数据、s2属性数据给机构b”;

「授权智能合约」完成。授权存证符号表如表5所示。

4、访问数据资产合约

医疗研究机构和社会机构在得到用户授权后访问敏感数据,例如:机构b在授权后访问患者用户a的授权s1属性数据、s2属性数据,触发“访问数据资产合约”:

1)读取区块链存储模块上患者的「密钥集合」,提取患者a的公钥pkpa,读取区块链存储模块上患者的「授权记录」,用pkpa验证签名

2)签名验证成功后,用机构本地存储多私钥解密得加密s1/s2属性数据的对称密钥ks1/ks2;

3)读取区块链存储模块上患者的「密文数据」记录,用pkpa验证签名

4)签名验证成功后,提取记录中对应s1、s2属性类型的数据用对称密钥ks1/ks2解密,从而获得明文数据;

「访问数据智能合约」完成。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1