updated:

属性加密入门


简介

属性加密(Attribute Based Encryption, ABE)可以认为是一种泛化的基于身份加密。相较于需要接收者的公钥对消息进行加密的传统公私钥加密方案,基于身份的加密允许用户使用消息接收者的ID加密消息,基于属性的加密进一步允许用户基于消息接收者拥有的属性加密消息。使得只有某个属性约束(Policy)被满足时用户才能解密该消息。

这里“属性”是一个集合。例如,对于属性集合,发送者可以基于属性对消息进行加密,使拥有属性或者等的用户无法解密信息,而只有拥有属性使的用户可以解密信息。

上面我们描述了一种将属性约束嵌入到密文中的加密方案,这种方案被称为Ciphertext-Policy ABE (CP-ABE)。

另一种加密方案是Key-Policy ABE (KP-ABE),在这种方案下,发送者基于一个属性集合对消息进行加密,属性约束被嵌入到用户的私钥中。例如,发送者基于集合加密消息后,用户可以解密消息,但用户不能解密消息。

Fuzzy-Identity Based Encryption

Fuzzy IBE是最早提出属性加密的方案。在Fuzzy IBE方案中,用户的身份是一个属性的集合,其中是所有可能属性的集合。消息发送者可以使用任意的属性集合加密消息。对于给定的阈值,当且仅当时,用户才能解密消息,即用户必须持有个吻合的属性才能解密消息。

双线性对

对于素数阶的群,双线性对定义了一种映射,并且该映射具有如下性质:

  • 双线性:对于所有的,有
  • 非退化性:

其中的生成元。当为加法群,为乘法群时,双线性对还可以表示为

由于的阶为素数,它们是循环群。对于任意的,存在使。因此

我们可以看到,该结论与之前提到的双线性性质在循环群中是等价的。类似的,我们还有

  • (换成除法同样适用)

Fuzzy IBE方案

Fuzzy IBE与传统IBE类似,都需要KGC的参与。该方案的组成部分如下:

  • KGC密钥生成:假设所有属性的集合为,为了简单起见,取中的前个元素,即是一个定义在阶为素数的群上的双线性对。

    • 中随机取作为主密钥保密存储
    • 作为公开参数公开
  • 用户密钥生成:对于持有属性集合的用户(假设),KGC随机选取一个系数在中的阶多项式使得。用户的私钥即为。(注意我们这里能直接使用是因为密钥生成阶段作出的假设

  • 加密:假设加密使用的属性集合为,待加密消息

    • 随机选取
    • 计算作为密文
  • 解密: 当且仅当时,我们可以解密消息。 取,记为拉格朗日插值中点对应的系数,即

    (上式中) 将密文中的展开有:

    根据拉格朗日插值公式,我们有

    因此

因此消息

我们可以看到,在上述方案中,KGC的主密钥和公共参数的大小随着属性取值空间的增大而线性增大。这无疑限制了其应用场景。因此下面我们将介绍一个改进的Fuzzy IBE方案。

更大的属性空间

论文作者提供了另一种方案,该方案允许将作为其属性空间,但是加密使用的身份中的最大属性数量被限制为一个固定的值

在这个更大的属性空间下,用户可以使用任意的字符串作为其属性,然后通过一个可靠的哈希函数将其映射到上述属性空间中。

该方案的组成部分如下:

  • KGC密钥生成:

    • 选择

    • 中随机选取,定义以及函数

      这里可以被看作某个阶多项式的函数,其中

    • 作为主密钥,作为公开参数

  • 密钥生成:对于拥有身份的用户

    • KGC随机选择一个阶多项式使得
    • 用户私钥分为两部分,分别为以及。其中是从中随机选取的。
  • 加密:使用身份加密消息的过程如下:

    • 随机选取
    • 计算密文
  • 解密:由于

    我们可以得到

TODO: 这是怎么构造出来的?

参考资料

  • https://crypto.stackexchange.com/questions/17893/what-is-attribute-based-encryption/17894#17894
  • Sahai2005 - Fuzzy Identity-Based Encryption

← Prev A Computational Approach to Number Theory and Algebra - Solution | Shamir秘密共享协议 Next →