电子病历通常用电子设备(计算机、健康卡等)保存、管理、传输和重现的数字化的医疗记录,用以取代手写纸张病历,其内容包括纸张病历的所有信息。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
当前的电子病历存储主要存在一些问题:
1)目前数据存储都是由一个中心化的数据库存储数据,当中心化的数据库被侵入或者被出售给第三方,将造成数据隐私安全问题;
2)患者无法享有或者无法完全享有自身病历数据的权限;
3)不同机构之间的数据共享由于各自的数据存储格式的不同,导致数据可插拔性低,无法有效共享。
区块链技术引入的优点:
1)区块链自身的特性,包括去中心化、不可篡改、分布式存储、不可伪造等
2)记录数据的更新和查询操作,保证数据被浏览和修改可被得知
3)数据加密存储在区块中,保证数据的安全性同时可共享。
区块链的架构主要经历1.0(比特币体系),2.0(以太坊平台)和3.0(区块链应用)3个阶段,如下图
所示
在区块链系统中,当某节点上传发生的交易信息,如何证明该笔交易真实发生?使用共识机制可以证明该交易真实存在,并且高效地共识,使得链中所有节点记录该交易信息。主要的共识机制有三种:
1)PoW(Proof of Work)
工作量证明:其核心思想是通过各个节点之间的算力来保证共识的安全性和数据的一致性。在比特币系统中,节点算力的是通过计算一个 SHA256的数学难题(求解非常复杂但验证容易)来证明,解出该难题的节点将会获得区块计帐权和少量比特币奖励。
2)PoS(Proof of Stake)
权益证明:PoS是采用权益证明来代替 PoW的算力证明,记账权由最高权益的节点获得,而不是最高算力的节点。在PoS模式中,使用币龄来计算,每个币每天产生1币龄,节点拥有的权益与持有货币的量和时间(所有币龄的总和)有关。因此PoS是权益(数字货币)所有权的一种证明,权益证明就是资源证明,拥有最多资源的节点挖矿的难度最小。
3)DPoS(Delegated Proof of Stake)
委托权益证明:对于PoS机制来说。每个节点都可以创建区块,并按照个人的权益比例来获取资源,而DPoS是被选举的可信账户来创建区块。为成为可信的正式受托人,需要在链区中获取足够多的可信度(票数)来得到足够的信任。DPoS类似于股份制,普通节点无法决策,需要选举的受托节点来间接决策。在区块链中,如果恶意用户使用手中的计算机节点和资源对区块链系统占用资源或者肆意将区块硬分叉,都将被受托节点删除权限,退出系统。
智能合约作用于传统的纸质合约相似,交易双方签署的协议约定。而智能合约是将合同条款转换成代码(主要是Solidity语言),以最大限度上减少对可信第三方的需求,防止合同被恶意破坏。由于其被当做脚本存储在区块链中,因此位置唯一。链中发生交易时会触发智能合约,根据处罚事件中包含的数据,在网络中的每个节点上按照合约中规定的方式独自自动执行合约所对定的操作,因此智能合约主要用于管理网络中各个实体之间的数据交互。
智能合约的运行原理主要是:通过链代码的行书附加在区块链数据中,在代码部署前需要经过各个节点签署,只收在对等网络节点中传播且验证成功后记录在区块中。智能合约定义了各种状态和对每种状态出发的条件(如特定时间或达到时间)。区块链会实时监控合约的状态,当有外来数据时,会根据外俩数据判断是否满足触发条件,如满足条件则激活并执行合约。
区块链应用最广泛的存储信息算法是哈希算法,即将任意长度的输入值映射为较短的固定长度的二进制。区块链中不仅存储原始数据,还保存该数据的哈希值。其中应用较多的有如SHA256(将任意长度的输入映射为长度为256位的固定长度输出,该二进制值成为哈希值)。在区块中的加密得到的二叉树中,节点信息是两次SHA256哈希运算得到的。同时以太坊的账户地址是Keccak-256哈希运算一个公钥得到。
时间戳是一个能唯一标识某一具体时间的字符序列,具有完整性和可验证性的数据特点。在传统的“重复支付”问题(一笔货币交易不能发生两次支付或者一笔资金不能出现在两次交易上)上,需要中心化的信用体系(银行、第三方权威机构)的强制力或者信用担保来防止此类问题的发生。而在区块链系统上,为加密保证交易的安全性和可信任度,系统会给每笔交易盖上正确的时间戳,来证明该交易确实发生,交易的信息发生状态转变。如果之前的资金拥有者再使用这笔交易资金将会报错,进而解决了“重复支付”的难题。
区块链的运行原理基本如下:
HyperLedger 项目是 Linux Foundation Collaborative Projects 中的一个课题,主要包括 5 个子项目:Blockchain Explorer、Fabric、STL、Iroha、Cello。
其架构主要分为四个模块:
1.成员管理(Membership):提供内容保护、事务审计、身份保护、会员注册
功能。
2. 区块服务(Blockchain&Transactions):它用于维护整个网络中一致的分布
式帐簿。
3.页面封装:OBC 提供 REST API 来访问各种服务。
4.帐链代码(ChainCode):用于构建嵌入在事务中的智能合约,并且所有确
认节点必须在确认事务时执行它。
Fabric 是一个模块化和可扩展的开源系统,是 Hyperledger 项目中的一个子项目。Fabric 引入了一种新的区块链架构,旨在实现系统的适应性、可扩展性和安全性,是一个支持用标准语言编写和执行程序的分布式应用。Fabric 使用分布式数据库中常见的被动或主备份复制,使用基于中间件的非对称更新处理,可用于具有拜占庭故障的不可信环境。在 Fabric 中,每个事务由对等体的子集执行,并验证事务执行的正确性,解决潜在的非确定因素。
Fabric 中的重要组件如下:
(1) 成员服务(MSP,Membership Service):维护系统中所有节点的标识(客户端,对等方 peers 和 OSNs),并用于颁发用户身份验证和授权节点的凭据,节点间的所有交互都需经过身份验证,身份验证通常使用数字签名的方式。
(2) 共识服务(Ordering Service):主要用于建立交易顺序、配置信道。实现方案主要有三种:Kafka、solo 和 ZooKeeper。
(3) 反熵状态同步机制(Peer Gossip):Fabric 中使用两个阶段进行信息传播:在推送期间,每个对等体从成员资格视图中选择一组随机的相邻节点,并将信息转发给它们;在拉取期间,每个对等体周期性的探测一组随机对等节点,请求为接收到的消息。两种方法能以高概率确保每个对等节点已接收所有消息。
(4) 账本(Ledger):包括历史数据、区块链的索引和状态数据库。历史数据和区块链的索引由 LevelDB 实现,状态数据库默认为 LevelDB,可更改为 CouchDB。
PFS(The InterPlanetary File System)是一种点对点分布式文件系统,旨在将所有的计算设备链接到同一文件系统。到目前为止,HTTP 一直是最成功的“分布式文件系统”,然而,它未能利用过去 15 年发明的数十种文件分发技术。我们正进入大数据时代。
当前的技术(例如:HTTP)正面临新的挑战:
(a)托管和分发 PB 级数据集,
(b)跨组织大数据计算,
(c)高容量 HD on demand 或实时媒体流,
(d)海量数据集的版本化和链接,
(e)防止重要文件的意外消失等等。其中最主要的问题可以归纳为“大量数据,随处访问”。
IPFS 从根本上改变了查找的方式,这是它与 HTTP 协议之间的根本区别。HTTP 查找的是文件的位置,而 IPFS 查找的是文件的内容。IPFS 不再关心中心服务器的位置,也不考虑文件所在的路径和名字,它仅关注所访问文件的内容。将一个文件放在 IPFS上时,会返回一串字符串 QmbRXe5RL76ahoFqhZsqWwNHNm62tzcwNi4opsm1Q5S79A,个字符串由文件内容经过 hash 计算得出。当文件内容改变时,hash 值就会随内容地改变而改变,即使内容只修改一个比特,hash 值也会完全不同。
IPFS 能够很好的共享各种数据(如:分布式数据库、图像、视频流等),基本没有存储上的限制,当需要存储大文件时,系统会将其分割为小的分块,存储在不同的服务器上。IPFS 网络是分布式、细粒度、不固定的,能够满足 CDM(内容分发网络)的要求。IPFS 存储数据时,每个节点可以自由选择想要保存的数据,而不是每个节点都需要存所有数据,节点之间地存储、复制都非常方便,若 IPFS 中节点数量达到一定规模,即使每个节点存放的内容非常少,整个系统所能容纳的存储数据也比 HTTP 能够提供的多,故 IPFS 最终有可能代替 HTTP。
IPFS 可以改善网络本身,它是点对点的系统,没有任何一个节点拥有特权,IPFS节点数据库在本地存储 IPFS 对象。节点间彼此连接并可以传输文件和其他数据结构。IPFS 为编写和部署应用程序提供了一个新平台,以及可以分发数据和数据版本的新系统。IPFS 协议分为一系列子协议,负责不同的功能:
(1) 身份:管理节点身份生成和验证。
(2) 网络:使用各种底层网络协议管理与其他对等方的连接。
(3) 路由:维护信息以定位特定的对等体和对象。响应远程和本地查询,默认为DHT,但可以交换。
(4) 交换:可以使用新颖的块交换协议(BitSwap)来管理有效的块分布。
(5) 对象:内容寻址的 Merkle DAG 不可变对象链接。用于表示任意的数据结构(如:通信系统和文件层次结构)。
(6) 文件:受 Git 启发的版本化文件系统层次结构。
(7) 命名:自我认证的可变名称系统,这些子系统并不是独立的。
总的来说,IPFS 文件系统有以下三个特点:
(1) 内容可寻址:与传统的 HTTP 协议不同,HTTP 协议是通过文件存储位置来标识文件,而 IPFS 是同过文件内容生成唯一标识地址 hash。文件内容不同生成的地址hash 也就不同,可以通过地址 hash 直接从 IPFS 系统中获取数据。当存储重复数据时,IPFS 系统只会保留一份数据,以便于节省存储空间;
(2) 版本化:当文件修改时,不会删除历史文件,以便于追溯文件修改历史;
(3) 点对点超媒体:通过 P2P 传输,可以保存各种各样类型的数据。
ABE 属性加密属于公钥加密机制中的一种,与传统的非对称加密机制不同的是,ABE 加密解密的对象是拥有部分相同属性的群体而不是单个个体。ABE 加密技术引入了属性的概念,将用户的各种特征总结成一个个属性。例如:一个医院的医生具有编号、医生级别、隶属医院及科室;病人具有患病情况、个人身份信息等属性。ABE 加密用群体的公有属性来作为加密的公钥,用 ABE 来共享数据时使用相同的公钥来加密数据。ABE 机制是通过访问结构策略来表示的,策略基于各种数学问题和假设,在双线性对技术的基础上构建安全性。
属性加密技术从以往的加密模式一对一扩展成一对多,它还有动态性、高效性、隐私性、灵活性等优点。使用属性加密技术的系统,在用户上传数据到系统中之前加密数据,数据使用者具有其解密的属性即能够解密数据,加密解密数据的代价仅和秘文的长度和属性的多少有关,加密和解密者不用事先知道对方的存在,加密数据的策略可支持比较复杂的访问结构。
基本 ABE 机制包括 4 中算法,如下分别为 Setup,KeyGen,Encrypt,Decrypt 算法
(1) Setup(k,U):授权机构执行,该算法输入安全参数 k 和一个系统属性描述U,输出公共参数 PK 和主密钥 MK。
(2) KeyGen(MK,X):授权机构执行,该算法输入主密钥 MK 和权限 X,生成用户的密钥 SK。
(3) Encrypt(PK,Y,m):发送方执行,该算法输入公共参数 PK,密文索引 Y 和一个加密消息 m,生成加密密文 CTY。
(4) Decrypt(PK,SKX,CTY):接收方执行,该算法输入公共参数 PK,密钥SKX 和密文 CTY,输出解密结果 m’。
若对于属性加密方案执行正确,当且仅当对任意用户密文索引 Y 和权限 X,若 X
符合 Y 的策略,则Decrypt(PK, Keygen(MK,X),Encrypt(PK,Y,m))= m,其中,公共参数 PK 和 MK 的产生都是正确执行的结果。
密文与属性集 AC 相关,密文访问策略 Au-KP 根据用户密钥采用树结构来描述,Au 为树的叶节点属性集合。只有当用户的 AC 满足 Au-KP 访问策略时,才能解密密文得到未加密文件。KP-ABE 与基本 ABE 机制不同的地方在于Decrypt 算法与 KeyGen 算法。Decrypt 算法使用递归过程从下到上解密每个节点,以获得恢复明文所需的秘密值。 KeyGen 算法仍采用秘密共享机制,但不同之处在于 KPABE 使用自上而下的方法来定义随机多项式 px,该随机多项式 px 比树中每个节点 x的节点阈值小 1。令 px(0)=pparent(x)(index(x)),其中,parent(x)表示 x 的父节点,index(x)表示 x 的父节点给 x 的相对编号。并且根节点 r 的 pr(0)= y 使得主密钥 y 被分散到对应于叶节点的私钥组件 Di 中。
为 CP-ABE 加密机制,图中对加密密文的访问策略 AC-CP采用树结构来描述,在 CP-ABE 加密机制中,属性集 Au 是由用户的个人信息提取出的关键信息集合,用户密钥的生成基于属性集 Au,对加密的密文,只有当用户属性集 Au 满足密文的访问策略时,才能解密该密文。CP-ABE 机制与基本 ABE 机制不同之处在于密钥生成与加密算法不同,且在 CP-ABE 机制中,公共参数 PK 和主密钥 MK 的长度与属性集 Au 的大小无关。在 CP-ABE 机制中为了防止用户串谋,将不同的密钥合二为一,KeyGen 密钥生成算法采用两级随机掩码方式,用户密钥的生成与 2 级随机数有关。CP-ABE 机制的加密算法与 KP-ABE 的解密算法类似,都需构建树状的访问策略,区别在于根节点 r的 pr(0)=s,另一个类似之处在于叶节点对应的密文构建解密算法。
CP-ABE 使用一般群模型,和 KP-ABE 一样,都能支持比较复杂的策略,适用于需细粒度数据共享的场景。与 KP-ABE 机制不同的是,在 CP-ABE 机制中,由数据发送方规定密文的访问策略,适用于如电子信息系统、社交网站的访问等。