基于区块链技术的空调产品电子病历共享方案
2021-03-02陈焕新李正飞韩林志龚麒鉴
徐 畅 陈焕新 李正飞 韩林志 朱 波 龚麒鉴
(华中科技大学能源与动力工程学院 武汉 430074)
互联网、大数据与人工智能的快速发展为各行各业带来了新的机遇和挑战[1],“互联网+”的模式也成为各行各业的研究热点。有关空调领域的大数据和智能化已有很多研究成果[2-5],但由于数据存储和共享机制的不完善,使得很多珍贵的运行数据没有得到及时的保存和共享流通,这是制约空调大数据和智能化进一步发展的重要因素。
区块链技术作为一种数据管理的底层技术,通过构建一个去中心化的分布式数据库,可以将存储于数据库中的数据进行全网共识,以达到对数据的完全可信、不可篡改和高度安全的有效管理。2008年,中本聪发表了《Bitcoin:A Peer-to-Peer Electronic Cash System》,使得区块链技术以比特币的身份被大众所认知[6-7]。2014年,以太坊平台的搭建和智能合约的引入,标志着区块链2.0时代的到来,使得区块链技术作为一种更为先进的数据管理模式被引入各行各业,促进各行业的智能化发展。其中基于区块链的医疗系统电子病历存储平台一直是近几年的研究热点之一。国内最具代表性的是阿里健康区块链与常州市合作医联体的试点项目[8],它是国内首个医疗场景的成功应用案例,并在逐渐扩大其应用范围。在国外,“区块链+医疗数据”的应用层面则较为领先,A. Azaria等[9]利用以太坊区块链,实现了名为MedRec的医疗、区块链和大数据相结合的医疗信息共享平台。Z. Shae等[10]开发了一种用于临床试验和精准医疗的区块链平台架构,确定了4个需要在传统区块链之上构建的新系统架构组件,并讨论了其在区块链平台上面临的技术挑战。在研究层面, Fan Kai等[11]提出了基于区块链的信息管理系统MedBlock来处理患者的信息,该框架改进了共识算法,使其不存在较大的能耗和网络拥塞,并且结合了定制的访问控制协议和对称加密技术,具有很高的信息安全性。T. Mikula等[12]提出一个基于超级账本区块链的身份认证和访问管理的系统原型去完成对医患电子版病历的授权和身份认证。H. Kaur等[13]将云环境与区块链相结合,提出一种医疗电子病历存储和管理平台,由医生、患者和健康保险提供商三个主要元素组成。Yue Xiao等[14]介绍了一种健康数据控制通道,是一种基于区块链技术的新型健康体系结构,使患者能够轻松、安全地控制和共享他们的数据而不泄露。P. Zhang等[15]以区块链为基础,从技术角度提供了可行性和预期能力方面的分布式医疗保健应用程序(DApps)评估指标。
综上可知,区块链技术已初步应用于医疗领域的关键数据存储,它的存在打破了企业与企业之间、企业与个人之间和个人与个人之间的数据信任隔阂,使数据能像资源一样高效流转。医疗电子病历是将人的医疗关键数据进行电子档案记录,而在空调故障诊断领域,也可以将空调产品故障关键数据记录为电子档案,我们将记录空调产品故障关键数据的电子档案称为空调产品电子病历。对于空调产品电子病历而言,也需要一种能够达到完全可信、不可篡改的数据存储平台,但目前并没有针对该方面的研究。为此,本文首次提出一种基于区块链技术的空调产品电子病历共享方案,使空调的关键数据可以突破企业与企业之间的信任壁垒,最终形成企业与企业之间的数据完全信任流通。
1 区块链技术概述
区块链作为一种分布式存储的底层技术,通过去中心化来保证数据不单只存储在一个节点中,而是以一种超高冗余的方式存储在所有共识节点当中,所有节点对所存储的数据达成共识,从而保证任何单一或少许的节点无法更改区块链中的数据。区块链的服务框架不同于传统的中心化服务框架,而是提供了一个点对点(peer to peer,P2P)的服务体系,即每个节点都能在全节点共识的基础上参与数据的存储、封装和调用。区块链框架模式与中心化框架模式如图1和图2所示。
图1 区块链模式
图2 中心化模式
除了P2P技术以外,区块链还引入了哈希计算、非对称加密和共识算法等技术,以保证区块链数据在流通中的绝对安全。
1.1 哈希计算
哈希算法又称单向散列函数,该算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希码[16]。本文所使用的SHA256是SHA密码散列家族的一种,通过一定的算法,可将任意二进制数据转换为256位的二进制码。其特点如下:
1) 对于任意长度的二进制文件,通过SHA256,均能生成一组256位的二进制码。
2) 可以通过文本数据x推出哈希码SHA256(x),但是SHA256(x)不能逆推出文本数据x。
3) 任何文本文件都仅有唯一的哈希码作为标识,哈希码与文本数据一一对应。
由于哈希计算具有固定长度、计算不可逆和与输入数据一一对应的特点,当我们将上传至平台的数据按照一定规律整合后输入给哈希算法,最终得出的哈希码可以作为该数据的唯一标识,任何对数据微小的篡改均可使该哈希码与之前大不相同,这样就可极大提高数据的安全性。
图4 区块链数据封装流程
表1 不同Nonce下生成的哈希码
1.2 非对称加密
非对称加密最早在1976年由W. Diffie等[17]提出,在传统的对称加密中,加密密码和解密密码是一致的,这就导致数据文件的密码很容易在传输过程中被截取并破译。非对称加密是由一对公钥和私钥共同进行文件加密,将公钥和私钥通过特定的算法关联后,将私钥自我保存且不在网上流通,又将公钥发布于网上,在进行重要的文件传输时,发送者将用接收方的公钥加密后的数据发送给接收方,接收方再用自己的私钥进行解密,这样,在整个数据流通过程中,私钥都不会在网上流通,从而保证了数据在流通过程中的安全性。公私钥加密传输流程如图3所示。
图3 公私钥加密传输流程
1.3 共识算法
由于区块链平台并没有一个中心化的服务端来处理信息,所以需要通过特定的共识算法“选举”出一个节点,用于处理一段时间内的所有数据并封装为一个区块,然后广播给全网进行共识。
本文所采用的共识算法是工作量证明(proof of work, POW)算法,POW算法会提前设定一个整体的难度系数n,然后在所有区块信息整合后添加一个名为Nonce且初始值为0的变量,再计算整个区块的哈希码。如表1所示,相同文本下不同Nonce值可以得到完全不同的哈希码,若得出的256位哈希码前n(难度系数)项均为0,则判断挖矿成功,否则就更换Nonce的值,直到产生满足该难度系数的哈希码为止。第一个创建出满足条件的哈希码的节点将被授权参与这次区块的封装,按照图4的流程封装数据后会广播全网络使其达成全网共识。具体可参考文献[18]。
2 空调产品电子病历共享技术框架
2.1 区块链种类选择
当前所有的区块链大致可分为三类,即公有链、联盟链和私有链[19],其特点分别如下:
1) 公有链:公有链的所有数据均向所有人公开,按照一定的规则,任何人均能随时参与或退出公有链的封装和数据共识的过程,任何人均有权限下载公有链上的所有数据,且整条链上的数据均经过全网共识,保证了人与人之间在不相识的基础上对数据流通的绝对信任。
2) 联盟链:联盟链参与者追求公平和透明的协作模式,且各节点没有必须互信的前提,能实现数据的可信交换功能[20]。联盟链的每个节点都与实体机构单位一一对应,授权成功后能加入或退出网络。联盟链的数据是准许系统内成员读写和交易的行为。
3) 私有链:私有链作为仅有少数节点能被允许参与的区块链,被用来突破少数人之间的数据信任,适用场景远没有公有链和联盟链广泛。
由于私有链网络仅在私有组织内部使用,使用范围较窄,所以私有链种类不做考虑。
公有链与联盟链各有优劣,联盟链属于半中心化的区块链,被用于构建联盟内部的信任映射,由于共识节点较少,所以存储成本和共识消耗均远小于公有链,且在联盟大部分成员达成一致时可对联盟链中的数据加以修改,但安全性没有公有链高,且不可在联盟链外进行信任映射。由于本空调产品电子病历共享平台是为了突破企业与企业、企业与个人、个人与个人之间的信任隔阂,所以采用公有链种类的区块链框架。
图5 空调产品电子病历共享平台框架
2.2 平台构架及功能
本文设计的区块链平台目前有三大功能模块,分别是账户创建、空调产品电子病历查询和数据上传,而由于本文的平台是公有链,所以查询电子病历无需身份认证,在用户需要上传数据时,需先向服务端申请创建账户地址,创建后会获取一个公钥与一个账户地址,其中账户与公钥对应的私钥相关联,并由自己保管。在上传数据时,除了要上传电子病历所需信息外,还需加入自己的地址信息,平台将该地址信息进行合法性认证后,会调用其对应私钥,并将私钥信息生成对应的公钥,接着将数据文件连同提交账户的公钥信息一起进行哈希计算,生成数据哈希码后再连同私钥信息进行封装,最终获取该信息块该账户下的数字签名,以表示该电子病历的信息真实由该账户上传,具有不可伪造且不可否认的特性。其中一个完整的区块和一组空调产品电子病历所含数据如表2所示。
表2 区块和单组空调产品电子病历所含数据
空调产品电子病历共享平台框架如图5所示。在一定时间内,整个平台获取的信息数将被统一收集起来,以数组的形式被暂存于节点中,当该时段封装区块的节点被选出后,会将所有的数据连同时间、Nonce值、上一区块哈希码、该区块哈希码、区块高度等信息进行封装,并达到全网共识。
3 空调产品电子病历平台展示与性能测试
本空调产品电子病历共享平台采用GO+JavaScript+HTML进行前后端编写,数据库采用BoltDB数据库。
3.1 平台展示
本文所搭建的平台的主页面属于引导页面,分别导向注册账户、查询电子病历信息和上传数据三个功能模块,主页面如图6所示。
图6 空调产品电子病历主页
对于注册账户模块来说,由于该平台属于全网共享的区块链平台且不存在货币交易机制,所以本平台简化了账户注册模块,并将账户地址与私钥信息相关联,在使用账户地址时平台会自动调用其私钥信息进行验证,帐户注册页面如图7所示。
图7 账户注册页面
当我们获取一个账户信息后,就可开始进行数据上传,在该时间段的区块生成后,就可在信息查询模块中获取该时间段的所有区块信息,数据上传和数据查询页面如图8和图9所示,区块详细信息如图10所示。
在空调产品电子病历查询界面,会显示所有区块的当前哈希码和上一区块哈希码,使得整个区块信息哈希码成链状分布,且在查询信息时对单组信息还会显示发布者公钥信息与电子病历的整体哈希码,在数据层面任何微小的改变都会使哈希码与之前大不相同,这样就保证了数据的不可篡改,大大提高数据的可信度。
图8 数据上传页面
图9 空调产品电子病历信息查询页面
3.2 平台性能测试
区块链技术同传统中心化服务框架相比,是通过牺牲算力和承担高度冗余的存储成本来换取数据的不可篡改和绝对安全可信的能力。所以对于任何区块链平台而言,其存储成本和共识算法算力消耗一直是区块链平台研究的核心内容。
著名的比特币平台的数据存储量的规模从早些年的20 GB升至300 GB(2020年),而且目前依然保持着超高的增长速度。如此高额的数据存储成本为每个共识节点带来了巨大的存储负担。所以本文将对该空凋产品电子病历共享平台进行相关测试。其出块时间和数据存储成本如图11和图12所示。
图11 难度系数16下POW出块时间
图12 平台数据存储成本分析
由图11和图12可知,难度系数16的POW算法出块时间不稳定,但是出块时间范围一般稳定在10 s以内,在数据存储成本方面,由于不涉及货币交易等繁琐的交易数据,而是单纯的保存所上传的电子病历数据,所以存储成本很低,在上传电子病例数在105以上时,平均每个电子病历数据所占空间约为2 kB,在保证数据绝对安全可信、不可篡改的基础上,存储成本依然较低。
4 结论
本文首次提出了一种基于区块链的空调产品电子病历共享方案,旨在构建一个去第三方信任去中心化的数据平台,得到如下结论:
1) 基于区块链的空调产品电子病历平台上传的任何数据都有唯一的哈希码与其一一对应,且所有区块都通过哈希码链接,做链状排列,任何篡改的举措都会使整个区块链的哈希码与之前大不相同,保障了数据不可篡改。
2) 该平台是全网共识的数据平台,任何人都只能按照平台仅有的操作方法编写查看区块链的数据,从而保证了数据在共享过程中不会受到任意一方支配。它使空调故障的关键数据突破了个人、企业之间的信任隔阂,达到绝对真实、完全可信且不可篡改的空调关键数据流通与存储。
3) 由于本区块链不涉及货币交易等繁琐的交易数据,使其在存储成本上远小于包含交易内容的区块链平台。