论文是2022年发表的A Traceable and Revocable Ciphertext-Policy Attribute-based Encryption Scheme Based on Privacy Protection
摘要
本篇论文提出了一种具有用户撤销、白盒追踪、策略策略隐藏功能的CP-ABE方案。在该方案中密文被分为两个部分:第一个部分是和属性值加密的访问策略相关,第二个部分适合撤销信息相关(由用户相关的二叉树生成)。
动机
对于策略隐藏我们考虑如果有一个病人的病例需要拥有“神经病学”和“医生”两个属性的人才能查看,那么因为访问策略时所有人都可以访问的。对于恶意用户就可以通过策略猜测出病人是否患有神经病,这明显泄露了病人的隐私。因此,对于策略隐藏的实现还是很有必要的。策略隐藏分两类:部分隐藏和完全隐藏。部分隐藏将属性分为属性名称和属性值,提交密文的时候只将属性名称的访问策略结构随同加密数据一起上传,因此起到不会泄露属性信息。完全隐藏则不会携带任何属性相关。
此外,因为在ABE用户的凭证其实就是属性私钥,只要拥有相同的属性,我们就区分不了用户。假设有两个相同属性的用户,如果有一个将自己的私钥给了别人,我们就不知道是谁。因此在ABE中实现追踪的效果也是很有必要性的。追踪的功能可以通过两种办法实现:白盒追踪和黑盒追踪。白盒追踪可以将解密私钥和用户身份绑定起来,然后实现对解密密钥的解析实现追踪。黑盒密钥读者还没有太多的了解,这里就不谈了。
对于恶意泄露私钥的用户,我们需要将其撤销,使得该用户的私钥不再能够解密。撤销有两种形式:直接撤销和间接撤销。直接撤销需要可信机构管理一个撤销表,当有撤销发生时,撤销表需要更新,用户无需和可信机构交互。而间接撤销时,授权机构需要更新信息并与多用户进行沟通,如果用户数量较多,则成本就会更高。
综上所述,需要一个即实现策略隐藏还能追踪撤销的CP-ABE方案。
预备知识
访问策略
可以看到,访问策略不再包含数据的具体值,而是只包含属性名称。这代表着只要某个用户拥有这些属性名称就可以满足策略,但是解密的时候需要用到自己属性值和密文中属性值如果不一样还是解不密。
用户二叉树
采用白盒可追溯性,通过给定格式良好的解密密钥绑定用户身份,可以追踪恶意用户。,用户的身份信息由系统中所有用户创建的二叉树的叶子节点值表示。然后叶节点值被加密并包含在解密密钥中。在解密密钥泄露的情况下,可以通过解密密钥泄露用户的身份。
对于二叉树我们有几个操作:覆盖未撤销用户最小集合节点(以该节点为根,其叶子节点都是未撤销用户) 用表示。例如如果用户1和用户4被撤销了,根据撤销表我们可以知道。因为以2为根的树其叶子节点都是没有被撤销的,其余同理。叶节点路径用,就是从根到叶节点从上到下的路径。还有一个就是对二者取交集,如果一个用户没有被撤销那么它的路径必定会有一个点是覆盖未撤销用户最小集合节点中的一个点。加密的时候就是使用这个点的值,解密的时候需要这个点的值和用户自身点的值,以及和的交集的点的值相结合求出解密部件。
困难问题
方案构建
系统有四个实体:数据拥有者,权威机构,云和用户。
方案主要由以下算法组成:
设置阶段:权威机构运行算法并且输入安全参数和用户二叉树,输出公共参数和主私钥。
加密阶段:输入公共参数、消息、访问策略和撤销列表。数据拥有者运行该算法,最后输出密文后将属性名称访问策略和密文一起上传给云。
密钥生成阶段:输入用户身份和用户的属性集还有主私钥生成用户的解密私钥。
解密阶段:输入密文和解密私钥,当且仅当用户解密私钥中的属性满足访问策略并且用户不是在撤销列表中才能解密成功。
密钥正确性验:验证密钥是否是正确的。
追踪:输入公钥和撤销列表以及私钥。首先,先检查密钥是否是正确的。之后对私钥中关于用户身份的部分进行解密查看用户身份进行追踪,之后将用户加入到撤销列表中进行撤销。
撤销:输入密文、撤销列表以及每个用户都对应的值,输出更新的密文。
具体算法分析
这里要注意的一个点是,权威机构为树中的每一个节点都选择了一个随机的值,实现值的节点的绑定。如果是叶子节点,那么该值实现了和用户身份的绑定。
可以看到中包含了属性值,因此如果用户拥有的属性密钥中有相同的属性值那么就可以相互抵消。
第一步算,未撤销用户可以计算出来,如果一开始没有被撤销而后面被撤销了系统会更新使得被撤销的用户利用之前掌握的信息计算不出来 的结果。
对于更新算法这里提供了一个例子比较好理解。假设现在有四个用户,对于某个属性除用户一以外其余用户都拥有,他们可以解密相关的密文。后面,用户六被撤销了,我们可以看到由于之前用户六使用的更新了导致了它不能计算。