A Smart-Contract-Based Access Control Framework for Cloud Smart Healthcare System
引言
随着 IoT 的发展,越来越多的医疗设备开始提供电子医疗记录 (Electronic Medical Records, EMRs)。因而产生了安全问题:
- EMR 一般由第三方管理,容易有安全漏洞。
- 一个机构如何向另一个机构授予、验证、撤销 EMR 的访问权限。
根据一篇调查 (Access control in Internet-of-Things: A survey) 显示,传统的访问控制模型 (RBAC, ABAC 等)很容易出现单点故障。因此,去中心是一个关键的研究课题。
然而,由于访问控制策略在云端,因此目前的去中心的访问控制技术无法保持策略透明和安全。为解决此问题,最近提出了分布式 IoT 的概念,其中访问授权在终端设备执行。然而由于终端设置计算资源有限,这种方法很难实施。
为在智能医疗系统中解决上述问题,最近提出了区块链解决的策略。
系统实体介绍
下面介绍系统架构的实体:
- 医院:也就是需要相互共享 EMR 的实体。
- 患者:数据的真正所有者。
- 智能医疗设备:例如实时监测患者健康的可穿戴设备或者其它 IoT 设备。他们由各自的医院根据 ID(设备的 Mac 地址哈希)进行注册和监控。
- MCU:有一定计算能力的设备,如智能手机,电脑。是智能医疗设备和医院内安装的区块链设备沟通的桥梁。每个智能医疗设备通过 WIFI 或者蓝牙与 MCU 连接,发送 EMR,然后 MCU 对其进行加密,传输到对应的医院内的区块链设备。
- 云服务器:负责验证实体,也可以用来存储 EMR。由政府或者卫生组织管理。
访问控制框架
假设每一个参与者 (患者,医院)都有一个 ID
(已在国家身份识别系统中注册)。在本文中,每个参与者提供自己的信息
四种合约:
- VC:validation contract,验证参与者的注册。维护一个活动列表,里面记录了参与者到来的时间。例如,张三 10 点 15 分发起了请求。
- GAC:GetAccess contract,判断 EMR 申请者是否有资格。
- SetGuidelines ():由 EMR 拥有者设置 minGap,noFR 和 threshold。
- SetGrant () :设置 GC 合约。
- SetAccessTime ():设置访问时间
- DeleteGetAccess ():由患者调用,用于终止访问许可,输入 EMR 的 ID,EMR 拥有者的 ID 和访问协议来调用 RC
- GC:grant contract,授予访问者权限。
- MisconductCheck ():实时检查不当行为。
- RC:撤销访问控制权限。
具体来说,四种合约的工作流程如下:
EMR 上传和获取
密码方案
使用基于 ECC 的非对称加密方案。使用 ECDH 生成永久和临时密钥。EMR
拥有者使用永久密钥来在储存和访问时进行加解密。EMR
拥有者的拥有密钥分别为:setAccessTime()
函数。EMR 拥有者生成临时密钥,记作
签名算法:EdDSA
- 医院签名:
- EMR 拥有者签名:
- EMR 请求者签名:
医院密钥生成、EMR 签名、EMR 验签
方案流程
分为 4 步:
Step 1:当有新的 EMR 生成时,
然后医院 A 对其进行上传。
Step 2:加密的 EMR 上传到云中的同时,对应的哈希值和索引号存储在区块链中。
Step 3:患者前往医院 B,需要根据访问控制策略获取 EMR 的权限。若访问成功,则进行解密。
Step 4:患者和医院 B 各自生成临时密钥,从而生成共享密钥
然后,医院 B 进行解密。
Implementation and Performance Analysis
实验结果分析
Gas 消耗: - VC:1531432 - GAC:2859097 - GC:1340448 - RC:43714
黑框框
表现评估和效率分析
1-智能合约部署和执行的延迟:
2-计算延迟分析
也就是随着 EMR 的大小变化,所需要的加解密时间变化。
3-访问请求响应的延迟
假设每个用户的 EMR 为 1 KB 大小,每个月新增 10 个用户。
4-针对各种攻击的安全性
- 假冒身份 (Pseudonymity):由于 EMR
使用了用户的公钥进行了加密,并且附有医院的签名
,然后对其进行了哈希,哈希值代表了这个 EMR,不会泄露任何用户信息。 - 隐私和数据完整性:验证过程完成后,任何人都无法通过 ID 获取个人数据
。更改 EMR 的任何一部分都会导致哈希不同,与云端的哈希匹配失败。 - 问责:当医院 A 分享 EMR 给 B 时,医院 A 需要签名。
- 伪装攻击:因为方案是在所有实体加入系统之前对其进行验证,因此无法伪装成注册实体。
- 抗重放攻击。
- 抗哈希碰撞。