密码学小知识(7):简单理解密文策略基于属性加密(CP-ABE)访问树的构造与解密

在实际应用中,我们会考虑设计一种密文策略基于属性加密(CP-ABE)的方案来实现对某个系统的访问权限,而比较难理解的是访问树的构造,因此本文将简洁明了、通俗易懂的介绍如何构造访问树,以及解密出访问树的秘密值。

通常而言,访问树可用于隐藏源数据的秘密密钥,只有达到一定条件时,才能解出秘密值,即密钥。访问树,顾名思义也是一种树结构,由叶子节点、非叶子节点和根节点构成。

  • (1)根节点:即最终的源数据的秘密密钥,访问者需满足最低阈值才能获取密钥。
  • (2)非叶子节点:也称为 门限节点,访问者只有满足门限的阈值时,才能解出此节点的秘密值。
  • (3)叶子节点:数据拥有者所设定的属性和属性值,以及父节点传递过来的秘密值。

1. 构造访问树

如图所示,构建一个对某系统的访问权限控制的访问树。要实现访问某系统的访问者,需满足以下属性:

  • 第一种,满足(网安学院 OR 计算机学院)和(教师)属性。
  • 第二种,满足(网安学院 OR 计算机学院)和(周五下午 AND 信息安全专业 AND 研三)属性。
  • 第三种,满足(教师)和(周五下午 AND 信息安全专业 AND 研三)属性,但这种属性结合不存在,即只有以上两种。

在这里插入图片描述

前提,假设多项式是随机生成,且最高次数为门限值减1,其中常数项设置为秘密值

首先,根节点(门限值为2,孩子节点有3个),随机生成一个一次(c)多项式,如 f ( x ) = 6 + 2 x f(x)=6+2x f(x)=6+2x,秘密值为6。则将根节点的孩子节点从左到右依次标记为 1、2、3,将其带入根节点的多项式中,得到新生成的秘密值( f ( 1 ) = 8 , f ( 2 ) = 10 , f ( 3 ) = 12 f(1)=8, f(2)= 10, f(3)=12 f(1)=8,f(2)=10,f(3)=12)传递给孩子节点保存。

然后,“1-of-2 (OR)”节点构造OR门(满足其中一种属性),“3-of-3(AND)”节点构造AND门(满足所有属性)。这两种节点都按照上面的方式生成随机多项式,常数项为新生成的秘密值。“1-of-2 (OR)”节点随机生成一个0次(门限值1减1)多项式,即 f ( x ) = 8 f(x)=8 f(x)=8,“3-of-3(AND)”节点随机生成一个2次(门限值3减1)多项式,即 f ( x ) = 12 + 3 x + 4 x 2 f(x)=12+3x+4x^2 f(x)=12+3x+4x2。同样按照上面的方式,再传递给它们的孩子节点(即叶子节点),生成新的秘密值。

从而构建完成了如上图所示的访问树!

2. 解密访问树的秘密值

解密访问树的秘密值,正好是与构造过程相反,从叶子节点属性出发。访问者需要在属性集中寻找出和此叶子节点属性相同的属性,并用找出的属性解密出它们的秘密值,然后进一步解密其父子节点,从而到最后解密根节点的秘密值。

如在上述的访问树种,“3-of-3(AND)”节点的多项式为 f ( x ) = 12 + 3 x + 4 x 2 f(x)=12+3x+4x^2 f(x)=12+3x+4x2,其孩子节点的值为19、34、57(忽略随机数),即有 f ( 1 ) = 19 , f ( 2 ) = 34 , f ( 3 ) = 57 f(1)=19, f(2)=34, f(3)=57 f(1)=19,f(2)=34,f(3)=57,解密时只知道对应的三个点 ( 1 , 19 ) , ( 2 , 34 ) , ( 3 , 57 ) (1,19), (2,34), (3, 57) (1,19),(2,34),(3,57),而不知道多项式,而 f ( 0 ) = 12 f(0)=12 f(0)=12为它的秘密值,即已知这三个点,算出0所对应的值为多少,可以根据拉格朗日公式(可查阅相关文献,这里不再赘述)解出答案。

本文介绍的是本人理解的大致思想,还需要读相关的文献,以进一步加深印象和理解!

猜你喜欢

转载自blog.csdn.net/A33280000f/article/details/121131520