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

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

本发明涉及文件加密技术领域,具体涉及一种支持多值分配和属性组合的基于属性的加密方法。



背景技术:

由于具有一次加密、多人分享的优势,作为一种密文共享算法,基于属性的加密(CP-ABE,Cipher Policy Attribute Based Encryption)算法受到广泛关注。然而,绝大多数CP-ABE算法存在两个明显的问题:

不支持属性取多个值。在已有的算法中,某一类属性只能出现一次且只能取一个值。而在实际应用中,有些属性会多次出现且多次取值。例如,在描述企业员工属性时,属性“职务”可能出现多次,某员工可能是销售部经理,同时还可能是人力资源部的副经理。这种情况下,CP-ABE算法就无法描述。

不支持属性组合。CP-ABE算法不支持不同类属性进行组合,使得一些现实情况无法准确描述。在上述例子中,假设CP-ABE算法支持多值分配,如果用“销售部”、“人力资源部”、“经理”和“副经理”描述该员工,则会引起理解上的歧义。

仅有的支持多值分配和属性组合的CP-ASBE算法,由于算法结构过于复杂、性能较差,很难应用实施。



技术实现要素:

本发明所要解决的是现有的基于属性的加密算法不支持多值分配和属性组合的问题。

本发明通过下述技术方案实现:

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

初始化:设置安全参数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所有兄弟叶子节点构成的集合,att()用来求叶子节点对应的属性;

解密:

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

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

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

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

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

解密恢复明文为:

可选的,将代表访问策略的访问逻辑表达式转变为访问结构树T包括:

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

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

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

可选的,在访问结构树T中,如果叶子节点对应的为非属性,将该叶子节点用相应的编码属性节点替代。

可选的,为访问结构树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)。

本发明与现有技术相比,具有如下的优点和有益效果:

本发明提供的支持多值分配和属性组合的基于属性的加密方法,在用户私钥生成和密文计算时将构成组合属性的基本属性进行绑定。本方法不仅支持同一类属性多次出现,还允许不同属性进行组合以形成组合属性。在用户私钥生成时,不仅要为基本属性计算私钥子项,还要为组合属性计算私钥子项。在计算共享密文时,先要扫描访问结构树以识别出组合属性。在出现组合属性的情况下,秘密共享基于的是组合属性而非基本属性。本发明提供的支持多值分配和属性组合的基于属性的加密方法,有着和经典CP-ABE算法一样的安全性和相当的 性能表现,但却和CP-ASBE算法一样支持属性多值分配和属性组合。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。

实施例

属性是指事物的特性,它由属性名和属性值组成。属性名类似数据库中的字段名,是对属性本身的概括描述,属性值则是对属性的具体说明。属性名和属性值相结合才能实现对属性的准确描述。直接从事物特征中提取出来的属性,被称作基本属性。由多个不同基本属性组合而形成的属性,被称作组合属性。例如,“部门:销售”和“职务:经理”这两个基本属性组合起来就形成了组合属性“部门职务:销售经理”。

所有的基本属性组合起来就形成了基本属性集合,所有的组合属性组合起来就形成了组合属性集合。然而,并非任意两个或多个基本属性就能构成一个组合属性,因为这样的组合从逻辑上讲没有意义,如“学历:研究生”和“部门:销售”。为确保形成正确的组合属性,需要人为地进行基本属性关联。例如,将属性名分别为“部门”和“职务”进行关联,就可以形成“部门职务”组合属性名,对应的属性也称作关联属性。显然,该组合属性的取值空间为“部门”的所有属性值和“职务”的所有属性值两两组合形成的空间。

上述属性组合方法使得同一类属性不仅可以取多个值,还可以防止歧义的产生。例如,同一个人的“职务”属性就可以取多个值,不仅取值可以为“经理”和“副经理”,还可以取值为“经理”和“经理”。如果一个人同时为销售部经理和人力资源部副经理,使用组合属性“部门职务:销售部经理”和“部门职务:人力资源部副经理”就能精确地描述。基于此,本发明在用户私钥生成和密文计算时将构成组合属性的基本属性进行绑定,提出一种支持多值分配和属性组合的基于属性的加密方法,包括初始化、生成用户私钥、加密以及解密四个步骤。

初始化:设置安全参数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个基本属性。需要说明的是,凡是出现在组合属性中的基本属性也都属于基本属性集合,组合属性名称的集合为组合属性名集合AA的子集。

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

具体地,在访问结构树T中,每个叶子节点都代表基本属性集合中的一个属性,其门限值为1;每个非叶子节点起门限作用。如果分别用numx和kx表示非叶子节点x的孩子节点的个数和门限值,那么必有0<kx≤numx。当非叶子节点x的门限为AND门限时,其门限值kx=numx;当非叶子节点x的门限为OR时,其门限值kx=1。

在扫描访问结构树T的叶子节点时,确定是否存在组合属性和编码属性。如果同属于一个父节点的叶子节点所对应的属性名能够形成组合属性名,那么就需要对以该父节点为根节点的子树进行改造。改造具体方法为:构建新的AND门限节点并将其标识为组合,让新的AND门限节点为该父节点的孩子节点,将构成组合属性的基本属性所对应的叶子节点全部变更为新的AND门限节点的孩子节点。如果叶子节点对应的是非属性,将该叶子节点用相应的编码属性节点替代。

设访问结构树T的根节点为r,Tx表示根节点为x的访问控制树,显然有T=Tr。如果属性集满足访问控制树Tx,记为Tx(γ)=1。计算可以按下面方式递归进行:如x为非叶子节点,为该非叶子节点的所有孩子节点x'计算Tx'(γ),当且仅当至少kx个孩子的Tx'(γ)返回值都为1时,Tx(γ)=1;如x为叶子节点,当且仅当叶子节点x的属性属于γ时,Tx(γ)=1。

为访问结构树T每个叶子节点赋值是按照从上至下进行。具体地,为访问结构树T中每个操作符为AND的非叶子节点x随机选择一个一元numx-1次多项式函数Qx(x),为叶子节点z随机选择一个一元多项式函数Qz(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)。

解密:

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

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

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

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

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

解密恢复明文为:

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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