基于密钥策略的属性加密算法的软件实现(KPABE)aminadab
要求
- 基于密钥策略的属性加密算法的软件实现;KPABE
- 时间:3天;
- 注释占代码量30%;
4.流程:
设置 这是一个随机算法,除了隐藏的安全参数没有输入。输出公开参数PK和一个主密钥MK。
加密 这是一个随机算法,输入一个消息m,一组属性γ,公开参数PK.输出密文E。
密钥生成 这是一个随机算法,输入一个访问结构A,主密钥MK,公开参数PK。输出一个解密密钥D。
解密 算法输入:基于属性组γ加密的密文E,对应访问结构A的解密密钥D,公开参数PK。
如果γ∈A输出X消息M。
5.提供以下算法,但不要求一定按照此算法;
算法
设G1是素数阶P的一个双线性群,设g是G1的生成。此外,设e : G1 × G1 → G2表示双线性映射。安全参数k将决定组的大小。我们还定义了拉格朗日系数对于i ∈ Zp,以及一组在Zp 中的元素:我们将每个属性与中一个独特的元素相关联。我们的建设如下。
设置 定义属性的域U = {1, 2, . . . ,n}.对于每一个属性i ∈ U,均匀随机的从Zp选择一个数字。最后,从Zp均匀随机的选择y。已发布的公开参数PK是
主密钥MK是:
加密 (M,γ,PK) 根据一组属性的γ选择一个随机值s ∈ Zp,加密一条消息M ∈ G2。并发布密文:
密钥生成(T ,MK) 该算法输出一个密钥,它使用户能够根据一组属性γ对加密的消息进行解密,当且仅当T (γ) = 1. 该算法如下进行。首先在树T中为每个节点X(包括叶子)选择一个多项式。这些多项式以下面的方式在自顶向下方式被选择,从根节点r开始。
对于树中的每一个节点x, 设置多项式qx的程度dx为比该阈值kx少一个 ,即
现在,对于根节点r,设和其他点的多项式完全随机的定义它。对其他任何节点X,设并选择其他点完全随机的定义。
一旦多项式被决定,对于每一个叶子节点x,我们给出如下的秘密值给用户:
上述秘密值的集合是解密密钥D。
解密(E,D) 我们指定我们的解密过程作为一个递归算法。为了便于说明,我们提出最简单的解密算法的形式,并讨论在下一小节中潜在的性能改进。我们先定义一个递归算法:
DecryptNode(E,D, x),作为输入的密文,私钥D(我们假定访问树T被嵌入在专用密钥中),树中的节点x。它输出G2的一组元素或者⊥.
设i = att(x).如果节点x是一个叶子节点,那么:
我们现在考虑当x是一个没有叶子节点时的递归情况。该算法DecryptNode(E,D,X)进行如下:对于所有的节点?都是X的孩子,它会调用 DecryptNode(E,D, x)并把输出保存为Fz.
假设SX 是任意KX大小的集合的子节点Z,使得Fz不等于 ⊥。如果没有这样的设定存在,那么该节点不满足条件, 该函数返回⊥。
否则,计算:
并返回结果。
既然我们已经定义了函数解密节点,那么解密算法简单的在树的根部调用该函数。我们观察到当且仅当所述密文满足树时,DecryptNode(E,D, r) =。以前,
这个解密算法简单的划分出Ys并恢复了消息M。