Ciphertext-Policy Attribute-Based Encryption

Liberity
2024-05-18 / 1 评论 / 20 阅读 / 正在检测是否收录...

"Ciphertext-Policy Attribute-Based Encryption" by John Bethencourt, Amit Sahai, and Brent Waters

  • 这篇论文提出了密文策略属性基加密(CP-ABE),是ABE的一种重要变种,允许加密方定义访问策略。
  • 链接:Ciphertext-Policy Attribute-Based Encryption
  • Ciphertext-Policy Attribute-Based Encryption

ABE2Ciphertext-Policy Attribute-Based Encryption.pdf

参考文章:属性加密访问结构(一)---访问控制树(超详细) - 知乎 (zhihu.com)

Abstract

CPABE:一种用于对加密数据实现复杂访问控制的系统。

  • 在存储服务器不受信任的情况下,加密数据保持机密性
  • 安全,防止串通攻击
  • 以前:属性描述加密数据,策略内置到用户密钥。

    现在:属性描述用户身份,加密数据决定谁可以解密

Introduction

(该部分中对于存在问题和解决方案是算法产生的基础)

Keygen: 用户私钥和任意数量的属性相关联。

encrypt: 对消息加密时,会在属性上指定一个关联的访问结构,只有用户属性通过密文的访问结构时,用户才能解密密文。

采取方式:访问控制树(叶子表示属性,节点表示阈值门AND OR)

技术层面:主要目标是抗合谋。如果多个用户合谋,那只有在至少一个用户能够自己解密密文的情况下才能解密。

采取方式:从SSS变成私钥随机化技术。是一种新的两级随机掩码方法,利用了高效可计算的双线性映射的群。

ABE和IBE的跨越在于ABE不仅实现了访问控制的问题,同时有效的实现了抗合谋。

ABE中,属性描述用户,访问结构用来加密不同的数据集。

基础知识:

  • 双线性映射
  • 拉格朗日插值
  • 哈希运算

Background

访问结构A包含授权的属性结合

  • Setup:

    输入:无;

    输出:公共参数PK,主密钥MK。

    过程:该算法选择一个素数p的双线性群$G_0$,生成元为g,

43.png

  • Encrypt:加密M并产生一个密文CT,使得只有拥有一组满足访问结构属性的用户才能解密消息。

    输入:公共参数PK,访问结构A,消息M

    输出:密文CT

    过程:

    • 首先对访问结构A中的访问控制树T的每个节点选择一个多项式$q_x$​,多项式自上而下从根节点开始选择,每个多项式的阶为该节点的阈值减1.

      阈值减1得到阶的原因是:n阶的多项式只要有n-1对值就可以确定多项式(拉格朗日插值的思想)

    • 从根节点开始选择随机s属于$Z_p$,同时设置q(0)=s,然后对于根节点的每个子节点得到相应的s,多项式阶级的值

      举例说明:

45.jpg

  • Y为访问控制树的所有叶子节点的集合,那么构造的密文为:

46.png

第一部分:访问控制树

第二部分:对密文进行加密,s是根节点的秘密值

第三部分:便于双线性映射用于解密

第四五部分:对每个叶子节点进行处理,四指的是每个叶子节点根据父节点多项式得到的值(也就是该节点的秘密值);五指将叶子节点的属性进行哈希运算同时和秘密值关联。
  • KeyGen:

    输入:主密钥MK,描述密钥的属性S,公共参数PK

    输出:私钥SK

    过程:

44.png

  • Decrypt:如果用户属性集合满足访问结构A

    输入:公共参数PK,密文CT,密钥SK

    输出:消息M

    过程:解密过程是一个递归算法,若算法输入为密文CT,基于属性集S的私钥SK,树T中的一个节点x

    • 如果x是一个叶子节点时,$i=att(X),i\in S$​​

48.jpg



如果x是一个非叶子节点时,对于节点x的孩子节点,调用上图中的函数并且存储结果$F_x$,令$S_x$为任意大小为$K_x$的孩子节点的集合,并且F_z的属性都在属性集中。

<img src="F:\论文\Week\image\49.jpg" style="zoom:67%;" />

$F_z$是x的孩子节点带入DecryptNode后得到的结果,然后将所有的孩子接待你进行拉格朗日插值的方法得到x节点的秘密值。
  • 然后逐步进行递归,直到最后求得根节点的秘密值算法结束,然后就可以得到最后明文M。

50.jpg

42.png

CPABE中,密文用访问结构标识,私钥用属性标识。

安全模型中

安全模型允许攻击者查询任何不能用于解密挑战密文的私钥。

因此在安全定义中,敌手将选择对访问结构A的加密发起挑战,并且可以要求任何私钥S使得S不满足属性集S,然后进行正式的安全博弈。

Setup:挑战者教公共参数PK给敌手

阶段1:敌手根据不同的属性$S_1,S_2,S_3...S_n$构造私钥

挑战者:敌手提交两个长度相等的消息M0和M1,敌手给出一个访问结构$A*$,使得阶段1中的属性集均不满足$A*$。挑战者随机对M0或者M1进行加密生成密文$CT*$​给敌手。

阶段2:重复阶段1,属性集仍然不满足访问结构

猜测:敌手输出对于对哪一个密文加密的推测。

Definition:如果所有多项式时间敌手在博弈中至多有一个可忽视的优势($Pr[b'=b]-\frac{1}{2}$),那么该方案是安全的。

Construction

  1. 访问树和属性模型分别描述密文和私钥。
  2. 描述方案
  3. 安全性,效率,密钥撤销。

私钥由一组描述性属性S标识,加密消息的一方通过访问树结构指定私钥必须满足的策略才能解密。

具体构造见上。

我们创建了一个基于密文策略属性的加密系统。我们的系统允许一种新型的加密访问控制,其中用户的私钥由一组属性指定,并且加密数据的一方可以针对这些属性指定策略,指定哪些用户能够解密。我们的系统允许将策略表示为任何单调树访问结构,并且可以抵抗攻击者可能获得多个私钥的共谋攻击。最后,我们提供了系统的实现,其中包括多种优化技术。

0

评论 (1)

取消
  1. 头像
    回顾,预告 - Jiang Zhou's blog
    Linux · Google Chrome

    [...]突然想写这篇文章是因为终于感受到看的论文有那么一点点的串联关系,不再那么散了。这其实也跟最刚开始的学习方法的错误有关。刚开始学习密码学基础的时候,搜的都是泛泛的资料,来自于各个网站平台,这个思路没错,错在于花的时间太长,那时候不必深究大致了解后其实就可以看看论文看看实际应用,没有完整的去看具体的东西通过泛泛了解几乎就都是无用功。后来选择看了一些综述,或者论文的代码实现,或者近几年的论文,不能说完全[...]

    回复