码迷,mamicode.com
首页 > 编程语言 > 详细

基于密钥策略的属性加密算法的软件实现1200

时间:2015-07-16 15:58:57      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

基于密钥策略的属性加密算法的软件实现(KPABE)aminadab

要求

  1. 基于密钥策略的属性加密算法的软件实现;KPABE
  2. 时间:3天;
  3. 注释占代码量30%

4.流程:

设置 这是一个随机算法,除了隐藏的安全参数没有输入。输出公开参数PK一个主密钥MK

加密 这是一个随机算法,输入一个消息m,一组属性γ,公开参数PK.输出密文E

密钥生成 这是一个随机算法,输入一个访问结构A主密钥MK,公开参数PK。输出一个解密密钥D

解密 算法输入:基于属性组γ加密的密文E对应访问结构A的解密密钥D公开参数PK

如果γ∈A输出X消息M

5.提供以下算法,但不要求一定按照此算法;

 

算法

G1是素数阶P一个双线性群,设gG1生成。此外,设e : G1 × G1 → G2表示双线性映射。安全参数k决定组的大小。我们还定义了拉格朗日系数对于∈ Zp以及一组在Zp 中的元素:我们将每个属性与中一个独特的元素相关联。我们的建设如下。

 

设置 定义属性的域U = {1, 2, . . . ,n}.对于每一个属性i ∈ U,均匀随机的从Zp选择一个数字。最后,从Zp均匀随机的选择y。已发布的公开参数PK

主密钥MK是:

加密 (M,γ,PK) 根据一组属性的γ选择一个随机值∈ 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一个没有叶子节点时的递归情况。该算法DecryptNodeEDX)进行如下:对于所有的节点?都是X的孩子,它会调用 DecryptNode(E,D, x)并把输出保存为Fz.

假设SX 是任意KX大小的集合的子节点Z,使得Fz不等于 ⊥。如果没有这样的设定存在,那么该节点不满足条件, 该函数返回⊥。

否则,计算:

 

并返回结果。

既然我们已经定义了函数解密节点,那么解密算法简单的在树的根部调用该函数。我们观察到当且仅当所述密文满足树时,DecryptNode(E,D, r) =。以前,

这个解密算法简单的划分出Ys并恢复了消息M

 

 

 

基于密钥策略的属性加密算法的软件实现1200

标签:

原文地址:http://www.cnblogs.com/mhxy13867806343/p/4058402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!