密文策略基于属性加密(CP-ABE)访问树构造与解密

      在密文策略基于属性加密方案中,最难理解的过程莫过于访问树的构造和从访问树中解密出访问树的秘密数,本文从访问树的构造和从访问树中解密出访问树的秘密数进行讨论。

      1. 构造访问树

      在CP-ABE方案中,访问树用于隐藏源数据的加密密钥,其形状结构如其名一样,是一棵树。其叶子节点为数据所有者设定的属性和属性值以及父节点传于此节点的秘密值,并对其加密处理,只有数据访问者拥有此属性方可解密出此节点的秘密值;非叶子节点为门限节点,数据访问者需满足此门限最低值方可解密此节点秘密值,例如门限为3/5,此节点有5个子节点,数据访问者需至少满足3个子节点才能解密出秘密值。

      如下图所构造的访问树,能解密此访问树加密的源数据,数据访问者需满足的属性是:第一种:(“计算机学院” 且 “硕士” 且 “研二”)和 “教师”(此属性结合可能不存在,因为教师和研二不存在且关系) ,第二种:“教师” 和(“网络实验室” 或 “云实验室”),第三者:(“计算机学院” 且 “硕士” 且 “研二”)和(“网络实验室” 或 “云实验室”);否则无法访问。

      如何构造这样的一棵访问树?

      从根节点开始,其门限值为2,孩子节点有3个,随机生成一个多项式,其最高次数为门限值少1,故根节点的最高次数为1,然后将常数项设置为秘密数(秘密数为需要秘密保存的数);如此根节点随机的多项式为f(x)=5+3x,秘密数为5。此外,将根节点的孩子节点从左至右依次标记为1,2,3,.....,将节点标记值代入f(x)函数中,所得值(即生成新的秘密值)传给该标记的孩子节点秘密保存;故“3/3”节点(左边第一个节点)标记为1,传给“3/3”节点的秘密值f(1)=5+3*1=8,中间“教师”节点(中间节点)标记为2,传给“教师”节点的秘密值f(2)=5+3*2=11,“1/2”节点(右边节点)标记为3,传给“1/2”节点的秘密值为f(3)=5+3*3=14。

      “3/3”节点和“1/2”节点在接收到父节点传来的值后,按照上述方式生成随机多项式,将常数项设置为父节点传来的值,此外也按照上述方式生成新的秘密值并将它传给子节点,数据如图所示(对于非叶子节点,都按照此方式进行)。对于叶子节点,在接受到父节点的秘密值后,用此叶子节点的属性对秘密值进行加密处理。

      至此,访问树已构造完成!

密文策略基于属性加密(CP-ABE)访问树构造与解密_第1张图片

      2. 从访问树中解密出访问树的秘密数

      数据访问者需满足访问树方可解密出访问树的秘密值,对于上述访问树,数据访问者需满足以下属性集中的一个:(计算机学院、硕士、研二、教师(此属性结合可能不存在,因为教师和研二不存在且关系))、(计算机学院、硕士、研二、网络实验室)、(计算机学院、硕士、研二、云实验室)、(教师、网络实验室)、(教师、云实验室)。若上述属性集中某一个或多个(至少一个)为数据访问者属性集的子集,则能解密出秘密值,下面开始解密处理。

      对于叶子节点,在数据访问者属性集中寻找出和此节点属性与属性值一致的属性,用找出的属性解密出此节点的秘密值(即公式1),当然不能完全解密出,他是秘密值和加密时对此属性设置的加密值的乘积。

      解密出叶子节点后,开始解密其父节点(非叶子节点),在解密出叶子节点后,即可得到多对值;如在上述访问树的“3/3”节点,其孩子节点解密出三个值19,44,83(推理过程忽略随机数),在生成这三个数时,f(1)=19,f(2)=44,f(3)=83,其中f(x)=8+4x+7x^2(解密时并不知道此多项式,只知道后面的三个点),因此在f(x)上有三个点是(1,19),(2,44),(3,83);因为此节点存储的秘密值是多项式的常数项,即f(0)=秘密值,故我们需要根据这三个点得到0所对应的值是多少,根据拉格朗日公式就能求出0所对应的值,即解密出秘密值(即公式2);对于非叶子节点均可按照上述方式解密出秘密值,在根节点处解密出整个树所隐藏的秘密值(是秘密值和加密时对此属性设置的加密值的乘积,所有节点解密出的秘密都存在一个随机数,解密出的值都是随机数和秘密值的乘积,只是讲述过程中为了方便忽略了随机数,最后根节点解密出的随机数在最后的解密过程中会抵消掉(公式3))。

      另外需要说明的是“3/3”节点是一个3个孩子节点、门限值为3的节点,相当于且关系,数据访问者需解密出所有的孩子节点方可用拉格朗日公式解密出常数项(即秘密值);“1/2”节点是一个2个孩子节点、门限值为1的节点,故为或关系,数据访问者只满足其中一个孩子节点即可解密出秘密值(秘密值就是孩子节点解密出的秘密值,因为根据随机多项式生成规则,多项式的最高次数为门限值少1,门限值为1,故最高次数为0,即常数项);若如“2/3”这样的节点,既非且关系,也非或关系,3个孩子节点,门限值为2,若需解密出此节点的秘密值,数据访问者需解密出三个孩子节点中的两个节点即可解密出孩子节点。

密文策略基于属性加密(CP-ABE)访问树构造与解密_第2张图片

你可能感兴趣的:(BIG,DATA,基于属性加密,安全,访问树,CP-ABE,密文策略)