CPABE中KUNodes或者是KEK树实现属性撤销

CPABE中KUNodes或者是KEK树实现用户撤销

[2] Practical attribute-based encryption: Outsourcing decryption, attribute revocation and policy updating.

论文:
[1] Boldyreva, A., Goyal, V., Kumar, V., 2008. Identity-based encryption with efficient revocation, in: Proceedings of the 15th ACM Conference on Computer and Communications Security. Presented at the CCS08: 15th ACM Conference on Computer and Communications Security 2008, ACM, Alexandria Virginia USA, pp. 417–426. https://doi.org/10.1145/1455770.1455823
[2] Liu, Z., Jiang, Z.L., Wang, X., Yiu, S.M., 2018. Practical attribute-based encryption: Outsourcing decryption, attribute revocation and policy updating. Journal of Network and Computer Applications 108, 112–123. https://doi.org/10.1016/j.jnca.2018.01.016

本文主要讲论文[2]中的KEK树是怎么使用的,来撤销用户属性的。

参考文章,可以先看一下:
https://blog.csdn.net/qq_32318629/article/details/108378081
https://blog.csdn.net/maxueke2017/article/details/130115485?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-130115485-blog-108378081.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-130115485-blog-108378081.235%5Ev43%5Econtrol

基础:

1.引言

在IBE和ABE中都一个关键的撤销树,叫MT树或者KEK树,两个方案的基本实现方法都是寻找最小覆盖集合.现在将寻找最小覆盖集合的代码加以实现。

2.基本思路

对所有用户需要构建这样的一颗二叉树,若v是叶子节点,则PATH(v)表示从v到根集合的所有节点集合(包括叶子节点v和根节点),若v是一个非叶子节点,则v_l表示v的左孩子节点,v_r表示其右孩子节点,我们假设树中的节点被编码为唯一的字符串。

定义一个函数KUNodes,用于计算需要为其发布密钥更新的最小节点集,以便只有在t时刻没有撤销的用户才能解密密文。函数输入二叉树T,撤销列表rl和时间t。输出一个节点集合Y,其为T中节点的最小集合:

集合Y中的任何节点都不是rl中对应时间<=t的节点(在时间t或之前撤销)的祖先(或本身),而所有其他叶节点(对应于未撤销的用户)在集合中恰好有一个祖先(或本身)。

该函数的操作如下。首先将已撤销节点的所有祖先标记为已撤销节点,然后输出已撤销节点的所有未撤销子节点。在这里插入图片描述

第一个图是用户未被撤销,第二个图是用户u2被撤销。得到的最小覆盖集为蓝色的节点{3,5,8}。
在这里插入图片描述

AttrGroupKeyGen(aid, x) → (KEKtreex , AGK):

该算法将属性x作为输入,管理属性x的相应权威机构帮助将为该属性建立二值状态树TREEx。该机构维护一个由拥有该属性的用户组成的属性用户组AGx。在树中,每个节点vj持有一个随机键KEKj∈Zp,AGx中的所有用户都被分配给叶节点。对于AGx组中的每个用户,它获得从其叶节点到根节点的路径密钥PATHt。用户u3存储PATH3={KEK10,KEK5,KEK2,KEK1}作为其路径密钥。权威机构选择唯一属性组密钥AGKx∈Zp。请注意,KEK是用于加密AGKx的对称密钥。这个步骤是初始化这个树。属性的撤销就是更新AGKx密钥。在后续中撤销的用户不能获得AGKx密钥,就不能解密。未撤销的用户更新AGKx。

Attribute revocation

对于用户撤销属性x的情况,权威机构应该更新AGx的成员资格,并为该受影响的属性选择新的属性组键AGK’x∈Zp。它还选择一个新的最小覆盖集Gx,其后代节点覆盖所有未撤销的用户。

例子:

因为文献2是实现了属性的撤销,其实是每一个权威机构对每一个属性设置一个KEK树。当用户u2撤销的一个属性x时,the unrevoked users are {u1, u3, u4, u5,u6,u7,u8},最小覆盖集为Gx = {v3,v5, v8},v是节点。知道怎么找到最小覆盖集之后,更新AGKx。

权威机构对每个v∈Gx用{KEKv}加密AGK’x,然后,授权机构将加密消息{AGK’x}KEKGx发送给未撤销的用户.

KeyUpdate

用户收到加密消息k={AGK’x}KEKGx 从k中获得AGK’u。使用KEK加密获得AGK’x. KEK∈(KEKGx∩PATHgid)。

例子:

用户u3 Gx = {v3,v5, v8},则KEKGx={KEK3,KEK5,KEK8},PATH3={KEK10,KEK5,KEK2,KEK1} 则他们的交集是KEK5。他们的并集有且只有一个,这样就获得了AGK’x,而被撤销的用户是没有办法获得的,被撤销的用户u2,PATH2={KEK9,KEK4,KEK2,KEK1} ,没有并集,获取不到更新的AGK’x。这样就实现了属性级撤销。

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值