ABE考核
2025.06.05-Charm-Crypto库环境配置
2025.06.06-布尔访问树算法
2025.06.06-线性秘密共享方案
2025.06.06-拉格朗日差值实现秘密恢复
2025.06.07-基于cpabe的医院场景加密解密demo方案
2025.06.08-基于Chram-Crypto库的医院场景CpabeDemo实现
本文档使用 MrDoc 发布
-
+
首页
2025.06.07-基于cpabe的医院场景加密解密demo方案
#### 1.场景背景 在现代医院中,医疗数据(如电子病例,医疗影像资料等等)涉及极高的隐私性与安全性,为此设计一种简单的基于CP-ABE的细粒度访问控制机制,确保只有拥有权限的人员才能访问特定的数据。 #### 2.角色 * Attribute authority(AA):负责密钥的生成和分发,如医院CA系统 * Data Owner(DO):能够定义访问策略Policy,和对数据进行加密,比如医生 * Data User(DU):DU从AA获得密钥,可以解密得到数据,如医生、护士、研究人员等等 #### 3.方案介绍 1). $$Setup( \lambda ,U)-->{PK,MSK}$$ Attribute authority初始化,setup函数输入一个安全参数和属性集合,得到公钥PK与AA的私钥MSK **算法描述:** setup算法选择一个*bilinear group G*,然后再选择随机值参数$$\alpha ,a \in {Z_N}$$和一个随机元素$$g \in G$$。对于每个属性$$i \in U$$,随机选择$${s_i} \in {Z_N}$$。 公钥$$PK=\\{ N,g,{g^a},e{(g,g)^\alpha },{T_i} = {g^{{s_i}}}\forall i\\} ,SK=\\{\alpha,a\\}$$ 2).$$KeyGen(MSK,S,PK) \to SK$$ **算法描述**:密钥生成算法选择一个随机值$$t \in {Z_N}$$,计算: $$K = {g^\alpha }{g^{at}}$$,$$L = {g^t}$$,$${K_i} = T_i^t\forall i \in S$$ 返回密钥$$SK = \\{ S,K,L,{K_i}\\} $$ 3.)$$Encrypt((A,\rho ),PK,M) \to CT$$ A为一个$$l \times n$$ 的矩阵, $$\rho$$为A矩阵每行$${A_x}$$ 到属性 $$\rho (x)$$的映射。 **算法描述**:加密算法选择一个随机向量$$v \in Z_N^n$$,$$v = (s,{v_2},...,{v_n})$$,对每行$${A_x}$$,选择一个随机值$${r_x} \in {Z_N}$$; 计算:$$C = Me{(g,g)^{\alpha s}}, C'= {g^s},{C_x} = {g^{a{A_x} \cdot v}}T_{\rho (x)}^{ - {r_x}},{D_x} = {g^{{r_x}}}\forall x$$, 返回密文:$$CT = \\{ C,{C'},{C_x},{D_x}\\} $$ 4).$$Decrypt(CT,PK,SK) \to M$$ **算法描述**:解密算法计算常量$${w_x} \in {Z_N}$$,例如$$\sum\nolimits_{\rho (x) \in S} {{w_x}{A_x}} = (1,0,0,0)$$ 然后计算:$$e({C'},K)/\prod\limits_{\rho (x) \in S} {{{(e({C_x},L)e({D_x},{K_{\rho (x)}}))}^{{w_x}}}} = e{(g,g)^{\alpha s}}$$ 解密$$M = C/e{(g,g)^{\alpha s}}$$ #### 4.正确性证明  #### 5.demo场景介绍 现在来自内科的医生Alice正在治疗一位病人,然后产生了一些医疗数据,她现在要将数据加密上传到CSP上保存。她定义了一个以下的**访问策略**,满足其一即可解密,保证病人数据的安全性。 * 来自 InternalMedicine 科室的 Doctor 或 Nurse,且具有 Senior 职称 * 是Researcher * 是Admin * 是DoctorEA,且具有 EmergencyAccess 权限 即访问策略为: ``` Policy={ ("InternalMedicine" and ("Doctor" or "Nurse") and "Senior") or "Researcher" or "Admin" or("DoctorEA" and "EmergencyAccess") } ``` 转换为OR 和AND 结构为:  **测试:** 现在有医生Bob和Eve想要获得Alice加密的病人数据; Bob属性为:EU_attrs = ["DoctorEA", "EmergencyAccess"] Eve属性为:EU_attrs = ["Doctor", "Senior"] 应该Bob可以解密,Eve不可以解密
happyboysrt
2025年6月8日 14:50
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码