1.一种私钥定长的密文策略属性基加密方法,其特征在于,具体实现过程中,共包含4个实体:数据加密方,即数据拥有者;数据解密方,即数据使用者;授权中心;云端存储服务器;具体实现步骤如下:
1)系统建立:由授权中心执行Setup算法,选择双线性群G0、G1,定义双线性映射e:G0×G0→G1,通过运算生成系统公钥PK和主密钥MK;
2)明文加密:由数据加密方执行Encrypt算法,根据预先定义的访问策略生成相应的ROBDD访问结构,并基于该ROBDD访问结构进一步完成对明文数据M的加密操作,最终生成密文数据CT;
3)私钥生成:由授权中心执行Keygen算法,根据用户提供的属性集合S,通过与步骤2)中的ROBDD访问结构间的路径匹配生成用户私钥SK;
4)密文解密:由数据解密方执行Decrypt算法,主要操作是借助于递归算法实现自身所拥有私钥SK与ROBDD访问结构间的匹配,最终结果有两种:如果私钥SK合法则解密成功并输出明文数据M,否则解密失败;
经过上述步骤,数据加密方借助于ROBDD实现了访问策略的高效表达及实现,并进一步完成了数据的高效加密工作;数据解密方能够获得授权中心为其生成的定长私钥,并在私钥合法的情况下完成对密文的快速解密。
2.根据权利要求1所述的方法,其特征在于,所述步骤1)中,授权中心选择双线性群G0、G1,定义双线行映射e:G0×G0→G1;随机选择素数p阶循环群Zp中的元素y,t0,t1,…,tn-1,t0',t1',…,tn-1';令Y:=e(g,g)y,最终生成系统公钥PK:=<e,g,Y,{(Ti,Ti')|i∈N}>和主密钥MK:=<y,{(ti,ti')|i∈N}>。
3.根据权利要求1所述的方法,其特征在于,所述步骤2)中,数据加密方首先需要根据具体的访问策略生成相应的布尔函数,并进一步构造与该布尔函数相应的ROBDD结构;在该ROBDD结构的基础之上,按照由上而下、从左至右的顺序对所有节点进行重新编号,将最终得到的ROBDD访问结构表述为:
上述(1)式中ID、I分别为ROBDD结构中所含全部非终节点的编号、全部变量所组成的集合,本质上可使用四元组<id,i,high,low>表示,id为节点编号、i为节点上的属性编号、high为本节点1-分支节点编号、low为本节点0-分支节点编号,high域及low域的作用是维护节点间的连接关系;其中编号为0和1的节点具有固定的表示意义,即终节点
4.根据权利要求3所述的方法,其特征在于,在ROBDD结构中,根节点root与终节点间的任意路径均称为有效路径;若属性集S中的属性能与ROBDD结构中的任意一条有效路径相匹配,则称属性集S满足访问结构ROBDD,记为
5.根据权利要求3所述的方法,其特征在于,进一步的,数据加密方,借助于访问结构完成对数据为M∈G1的加密操作;其中ROBDD访问结构所含有效路径的总数为T,并将其表示为R={R0,R1,…,RT-1}。加密操作具体执行如下:
随机选择s∈Zp并计算定义CRt(Rt∈R)为与路径直接相关的密文组件,其数学表述为:
上述(2)式中,Rt为路径编号,It为路径Rt上所包含的全部属性之集合,最终生成的密文表示为
6.根据权利要求5所述的方法,其特征在于,主要的计算量为群G0中的|T|+1次指数运算和∑|It-1|次乘法运算、群G1中的1次指数运算和1次乘法运算;密文的主要存储量包括访问结构ROBDD、群G0中的|T|+1个元素及群G1中的1个元素。
7.根据权利要求1所述的方法,其特征在于,
所述步骤3)中,授权中心根据用户提供的属性集S生成用户私钥SK,对于默认私钥生成操作具体包含如下步骤:
①查询ROBDD结构中编号为2的节点(即root),将其定义为当前节点,设置tSK=0;
②读取当前节点中保存的信息对于其中所含的属性i:如果i∈S∧i=i,执行tSK+=ti,转到③;如果执行tSK+=ti',转到④;
③根据当前节点的high域信息查找其1-边子节点,如果到达终节点(或),转到⑤;否则将该子节点定义为当前节点并转到②;
④根据当前节点的low域信息查找其0-边子节点,如果到达终节点(或),转到⑤;否则将该子节点定义为当前节点并转到②;
⑤随机选择r∈Zp,计算D:=g(r/tSK);
经过上述步骤,最终生成的用户私钥为
该步骤中主要的计算量为群G0中的2次指数运算,用户私钥占用的存储空间为群G0中的2个元素,即私钥定长。
8.根据权利要求1所述的方法,其特征在于,
所述步骤4)中,解密用户借助于自身拥有的私钥SK完成对密文CT的解密工作,假设待解密的密文为解密用户拥有的私钥为解密过程可通过以下递归算法实现:
A解密用户首先查询ROBDD结构中编号为2的节点(即root),将其定义为当前节点;
B读取当前节点中保存的信息对于当前节点中所含的属性i,如果i∈S∧i=i,转到C;如果转到D;
C根据当前节点的high域信息查找其1-边子节点:
a)若1-边子节点为终节点终止递归算法,返回解密失败;
b)若1-边子节点为终节点转到E;
c)若1-边子节点为非终节点,将其定义为当前节点并转入B继续执行;
D根据当前节点的low域信息查找其0-边子节点:
a)若0-边子节点为终节点终止递归算法,返回解密失败;
b)若0-边子节点为终节点转到E;
c)若0-边子节点为非终节点,将其定义为当前节点并转入B继续执行;
E若当前已成功匹配的有效路径为Rt,依次计算:
提示解密成功并返回密文M;
该步骤中,Decrypt算法的最大计算量为2次线性对计算、G1中的2次乘法运算,此时解密算法的计算量与属性数量、密文长度等均无关,为常量,则用户能够成功高效的完成密文的解密工作并得到明文数据。