支持多值分配和属性组合的基于属性的加密方法与流程

文档序号:12490925阅读:来源:国知局

技术特征:

1.一种支持多值分配和属性组合的基于属性的加密方法,其特征在于,包括:

初始化:设置安全参数d;授权中心选择一个阶为大素数p的双线性群G0和G1,记G0的生成元为g,对应的双线性映射为e:G×G→GT;定义系统所需的属性集合A={a1,a2,…,an}和组合属性名集合AA={AA1,AA2,…,AAm},定义一个哈希函数H:{0,1}*→G;随机选择将系统公钥信息PK={G0,g,gβ,e(g,g)α}发往云服务器并公开,数据所有者秘密保存主私钥MK={gα,β},其中,为大素数p的剩余类集合中与大素数p互素的元素构成的集合;

生成用户私钥:定义给用户Ui分配的基本属性集合为组合属性集合为w”;选择用户私钥随机数对于每个元素aj∈w',随机选择生成私钥为其中,alk为构成组合属性Al的第l个基本属性;

加密:将代表访问策略的访问逻辑表达式转变为访问结构树T;为访问结构树T每个叶子节点赋值其中,LT表示叶子节点的集合;生成的密文为CT=(CTi(1)=m·e(g,g)αs,CT(2)=hs且parent(li)为基本的:且parent(li)为组合的:其中,libj∈liB,liB为li所有兄弟叶子节点构成的集合;

解密:

对于访问结构树T的叶子节点,如果叶子节点z对应的属性为基本属性,则其中,QZ(0)为叶子节点z对应多项式的常数项;

对于访问结构树T的叶子节点,如果叶子节点z对应的属性为组合属性,则

<mrow> <mtable> <mtr> <mtd> <mrow> <mi>D</mi> <mi>e</mi> <mi>c</mi> <mi>N</mi> <mi>o</mi> <mi>d</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>z</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msubsup> <mi>SK</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </msubsup> <mo>,</mo> <msubsup> <mi>CT</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msubsup> <mi>SK</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </msubsup> <mo>,</mo> <msubsup> <mi>CT</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msup> <mi>g</mi> <msub> <mi>r</mi> <mi>j</mi> </msub> </msup> <mo>&CenterDot;</mo> <mi>H</mi> <msup> <mrow> <mo>(</mo> <mi>a</mi> <mi>t</mi> <mi>t</mi> <mo>(</mo> <mi>z</mi> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>a</mi> <mi>t</mi> <mi>t</mi> <mo>(</mo> <msub> <mi>zb</mi> <mn>1</mn> </msub> <mo>)</mo> <mo>&CirclePlus;</mo> <mo>...</mo> <mo>&CirclePlus;</mo> <mi>a</mi> <mi>t</mi> <mi>t</mi> <mo>(</mo> <msub> <mi>zb</mi> <mi>j</mi> </msub> <mo>)</mo> <mo>)</mo> </mrow> <msub> <mi>r</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> </msup> <mo>,</mo> <msup> <mi>g</mi> <msub> <mi>s</mi> <mi>k</mi> </msub> </msup> <mo>)</mo> </mrow> </mrow> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msup> <mi>g</mi> <msub> <mi>r</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> </msup> <mo>&CenterDot;</mo> <mi>H</mi> <msup> <mrow> <mo>(</mo> <mi>a</mi> <mi>t</mi> <mi>t</mi> <mo>(</mo> <mi>z</mi> <mo>)</mo> <mo>&CirclePlus;</mo> <mi>a</mi> <mi>t</mi> <mi>t</mi> <mo>(</mo> <msub> <mi>zb</mi> <mn>1</mn> </msub> <mo>)</mo> <mo>&CirclePlus;</mo> <mo>...</mo> <mo>&CirclePlus;</mo> <mi>a</mi> <mi>t</mi> <mi>t</mi> <mo>(</mo> <msub> <mi>zb</mi> <mi>j</mi> </msub> <mo>)</mo> <mo>)</mo> </mrow> <msub> <mi>s</mi> <mi>k</mi> </msub> </msup> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>=</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>j</mi> </msub> <msub> <mi>s</mi> <mi>k</mi> </msub> </mrow> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>=</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>j</mi> </msub> <msub> <mi>Q</mi> <mi>z</mi> </msub> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msup> </mrow> </mtd> </mtr> </mtable> <mo>;</mo> </mrow>

对于访问结构树T的非叶子节点x,

<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>D</mi> <mi>e</mi> <mi>c</mi> <mi>N</mi> <mi>o</mi> <mi>d</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Pi;</mi> <mrow> <mi>z</mi> <mo>&Element;</mo> <msub> <mi>s</mi> <mi>x</mi> </msub> </mrow> </munder> <mi>D</mi> <mi>e</mi> <mi>c</mi> <mi>N</mi> <mi>o</mi> <mi>d</mi> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>z</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>&Delta;</mi> <mrow> <mi>i</mi> <mo>,</mo> <msubsup> <mi>s</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> </mrow> </msub> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msup> <mo>,</mo> <msubsup> <mi>whrer</mi> <mrow> <msubsup> <mi>s</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> <mo>=</mo> <mo>{</mo> <mi>i</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mrow> <mo>(</mo> <mi>z</mi> <mo>)</mo> </mrow> <mo>:</mo> <mi>z</mi> <mo>&Element;</mo> <msub> <mi>s</mi> <mi>x</mi> </msub> <mo>}</mo> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mi>i</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mrow> <mo>(</mo> <mi>z</mi> <mo>)</mo> </mrow> </mrow> </msubsup> <mo>=</mo> <munder> <mi>&Pi;</mi> <mrow> <mi>z</mi> <mo>&Element;</mo> <msub> <mi>s</mi> <mi>x</mi> </msub> </mrow> </munder> <msup> <mrow> <mo>(</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>j</mi> </msub> <mo>&CenterDot;</mo> <msub> <mi>Q</mi> <mi>z</mi> </msub> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msup> <mo>)</mo> </mrow> <mrow> <msub> <mi>&Delta;</mi> <mrow> <mi>i</mi> <mo>,</mo> <msubsup> <mi>s</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> </mrow> </msub> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>=</mo> <munder> <mi>&Pi;</mi> <mrow> <mi>z</mi> <mo>&Element;</mo> <msub> <mi>s</mi> <mi>x</mi> </msub> </mrow> </munder> <msup> <mrow> <mo>(</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>j</mi> </msub> <mo>&CenterDot;</mo> <msub> <mi>Q</mi> <mrow> <mi>p</mi> <mi>a</mi> <mi>r</mi> <mi>e</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <mi>z</mi> <mo>)</mo> </mrow> </mrow> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mo>(</mo> <mi>z</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </msup> <mo>)</mo> </mrow> <mrow> <msub> <mi>&Delta;</mi> <mrow> <mi>i</mi> <mo>,</mo> <msubsup> <mi>s</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> </mrow> </msub> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msup> <mo>=</mo> <munder> <mi>&Pi;</mi> <mrow> <mi>z</mi> <mo>&Element;</mo> <msub> <mi>s</mi> <mi>x</mi> </msub> </mrow> </munder> <mo>(</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>j</mi> </msub> <mo>&CenterDot;</mo> <msub> <mi>Q</mi> <mi>x</mi> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <msub> <mi>&Delta;</mi> <mrow> <mi>i</mi> <mo>,</mo> <msubsup> <mi>s</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> </mrow> </msub> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msup> <mo>=</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>j</mi> </msub> <mo>&CenterDot;</mo> <msub> <mi>Q</mi> <mi>x</mi> </msub> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced>

其中,sx为非叶子节点x的所有孩子节点构成的集合,index(z)为叶子节点z在兄弟节点中的排行序号,parent(z)为叶子节点z的父节点,Qx(0)为非叶子节点x对应多项式的常数项;

对于访问结构树T的根节点root,其中,Qr(0)为根节点root对应多项式的常数项;

解密恢复明文为:

<mrow> <mi>D</mi> <mi>e</mi> <mi>c</mi> <mi>r</mi> <mi>y</mi> <mi>p</mi> <mi>t</mi> <mrow> <mo>(</mo> <msub> <mi>CT</mi> <mi>T</mi> </msub> <mo>,</mo> <msub> <mi>SK</mi> <msub> <mi>U</mi> <mi>j</mi> </msub> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msubsup> <mi>CT</mi> <mi>i</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>&CenterDot;</mo> <mi>D</mi> <mi>e</mi> <mi>c</mi> <mi>N</mi> <mi>o</mi> <mi>d</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>r</mi> <mi>o</mi> <mi>o</mi> <mi>t</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msubsup> <mi>CT</mi> <mi>i</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>,</mo> <msubsup> <mi>SK</mi> <mi>i</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>=</mo> <mfrac> <mrow> <mi>m</mi> <mo>&CenterDot;</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <mi>&alpha;</mi> <mi>s</mi> </mrow> </msup> <mo>&CenterDot;</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>j</mi> </msub> <mi>s</mi> </mrow> </msup> </mrow> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msup> <mi>g</mi> <mrow> <mi>&beta;</mi> <mi>s</mi> </mrow> </msup> <mo>,</mo> <msup> <mi>g</mi> <mfrac> <mrow> <mi>&alpha;</mi> <mo>+</mo> <msub> <mi>r</mi> <mi>j</mi> </msub> </mrow> <mi>&beta;</mi> </mfrac> </msup> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>=</mo> <mi>m</mi> <mo>.</mo> </mrow>

2.根据权利要求1所述的支持多值分配和属性组合的基于属性的加密方法,其特征在于,将代表访问策略的访问逻辑表达式转变为访问结构树T包括:

在访问结构树T中,每个叶子节点代表基本属性集合中的一个属性,其门限值为1;

在访问结构树T中,每个非叶子节点起门限作用;

如果同属于一个父节点的叶子节点所对应的属性名能够形成组合属性名,则:构建新的AND门限节点并将其标识为组合,让新的AND门限节点为该父节点的孩子节点,将构成组合属性的基本属性所对应的叶子节点全部变更为新的AND门限节点的孩子节点。

3.根据权利要求2所述的支持多值分配和属性组合的基于属性的加密方法,其特征在于,在访问结构树T中,如果叶子节点对应的为非属性,将该叶子节点用相应的编码属性节点替代。

4.根据权利要求2所述的支持多值分配和属性组合的基于属性的加密方法,其特征在于,为访问结构树T每个叶子节点赋值包括:

为操作符为AND的非叶子节点x随机选择一个一元numx-1次多项式函数Qx(x),为叶子节点z随机选择一个一元多项式函数Qz(x),其中,numx为非叶子节点x的孩子节点的个数;

为根节点root随机选择秘密共享数且s=Qr(0),Qr(i)为根节点root第i个孩子节点对应的秘密共享数;

对于任意非根节点y且其父节点操作符为AND,Qy(0)=Qparent(y)(index(y)),其中,index(y)为非根节点y在兄弟节点中的排行序号;

对于任意非根节点y且其父节点操作符为OR,Qy(0)=Qparent(y)(0)。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1