1.一种基于安全倒排索引的可搜索加密方法,其特征在于,包括以下步骤:
1)初始化系统参数,其中,系统参数包括系统公共参数PK和系统的主私钥MK;
2)构建倒排索引结构I,倒排索引结构记为I={Ts,As};其中Ts为搜索表,用于存放搜索数组的头指针和索引标志;As为搜索数组,表示所有包含关键字wi的文件形成的一个链表,由多个节点构成;这些节点随机保存在As的各个位置;
3)加密外包数据并存储,
4)注册用户并获得相应属性密钥,用户向可信授权机构以属性集合S和关键词集合W进行注册,可信授权机构为注册用户提供相应的搜索陷门其中 H1为随机多项式函数,wi为关键词;
5)搜索数据,用户向云端服务器发送从可信授权机构注册获得的搜索陷门TD进行数据的搜索,通过搜索表Ts定位存储在搜索表中的搜索数组As的头指针和搜索标记Yw;
6)对搜索结果进行解密,包括对密钥Kw的解密和对密文集合 的解密;
7)正确解密获得索引更新密钥,并进行索引的更新,包括添加文件时索引的更新和删除文件时索引的更新;
8)验证获得的云存储数据,包括对索引 的验证和对数据完整性的验证。
2.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤1)中的初始化系统参数包括以下内容:
1.1)初始化安全参数k;
1.2)定义G0,G1,G0,G1是 上的两个乘法循环群, 为1……p的整数,阶p为一个大的安全素数;
1.3)令g为群G0的生成元,定义双线性映射e:G0×G0→G1;
* * *
1.4)选取哈希函数H1:{0,1} →{0,1} ,选取哈希函数H2:{0,1} →G0作为一个随机预言机,用于将任意字符串描述的属性映射为一个随机群元素;
k
1.5)生成随机数q←{0,1};
1.6)定义无冲突散列函数
k1,k2,k3是随机选择的三个k位的向量;
1.7)随机选取两个k×k维的可逆矩阵(Q′,Q″);
1.8)随机选择
1.9)构建系统公共参数 系统主私钥MK=(β,gα
,k1,k2,Q′,Q″,H1)。
3.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤2)中构建倒排索引结构I包括如下步骤:
2.1)构建搜索表Ts,包括:
2.1.1)建立一个大小为n的字典,记为Ts;
2.1.2)存储信息到搜索表Ts中,其信息为:其中,Yw为 的索引标志位;Iw用于标识文件存储在链表中的位置,也是一个更新标识位; 为加密的索引更新密钥;wi为关键词;Iw为表示文件存储位置的标识;Pi为搜索数组As的头指针;
2.2)建立搜索数组As,包括:
2.2.1)定义下一节点位置为 其中, 为伪随机函数;
2.2.2)定义节点格式:
其中,idt表示文件标识符集合中的第t个文件标志符;
2.3)建立标识文件存储在链表中位置的Iw,初始值全为0,长度为 #Di表示明文文件数量,当文档集合Di的相应文件出现关键词wi时,Iw[t]=1,t∈[1,L];如果Iw[t]=1则将相应的idt存储到Ai,j,j∈[1,#wi]中,#wi表示包含关键词的文件数量,idt为文件标志符。
4.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤3)的加密数据具体包括以下步骤:
3.1)加密搜索数组As的头指针Pi,加密公式为:
3.2)加密文件标志符idt,通过哈希函数H1进行,加密公式为:
3.3)加密链表中下一节点位置的,通过伪随机函数φ进行,加密公式为:k
3.4)生成索引标记Yw,选择向量S←{0,1},令
3.5)使用两个k×k维的可逆矩阵(Q′Q″)加密k
3.6)加密明文文件集合Di,选择Kf←{0,1}作为明文加密密钥,得到密文集合Ci,选择Ksk←{0,1}作为索引的更新密钥,将密文文档集合Ci发送给云存储服务器;
3.7)加密密钥Kw=(Kf,Kε),通过访问树结构 公钥PK,加密密钥Kw:
3.8)生成验证权限σ,计算关键词集合W={w1,w2…wn}中的每个关键词的签名,生成集合 其中签名集合σ发送给数据使用者。
5.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤4)中用户注册包括以下步骤:
4.1)注册并获得属性私钥SKU,可信授权中心选择一个随机数 对于每一个属性j∈S,随机选择 按下列公式计算相应属性私钥:
4.2)发放陷门;用户注册后,数据使用者获得相应的搜索陷门
6.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤5)搜索过程包括以下步骤:
5.1)查询密文集合 云服务器接收到TD后,定位 恢复搜索表Ts中搜索数组As的头指针Pi;获得节点存储的文件标志符idt,找到对应的文档;
5.1.1)定位 如果F(wi)不在Ts中,结束;否则转步骤5.1.2)进行查询;
5.1.2)计算 恢复搜索表rs中搜索数组As的头指针Pi=Addrs(Ai,1)和 通过 获得节点中存储的文件标识符;得到第一个节点位置后,通过 找到下一节点位置,直到 对应找出文件标志符集合即可获得密文文件集合
5.2)生成验证信息 云服务器根据查询所得文件的文件标识符计算签名 其中表示文件个数,将计算结果发送给数据使用者。
7.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤6)中到的解密方法包括以下步骤:
6.1)解密密钥Kw,i=att(x)表示用户属性,如x为非叶子节点,则转到步骤6.2);如x为叶子节点,i∈S,转到步骤6.3),如 转到步骤6.4);
6.2)对于非叶子节点的所有孩子节点z,调用函数并且存储结果为Fz,令Sx为一个任意的大小为kx的孩子节点z的集合,并且满足Fz存在;
计算Fx:
其中
其中 为拉格朗日系数, qx为访问树结构 的每一个节点x所选择的多项式;qparent(x)表示qx的父节点;
6.3)定义
6.4)解密终止;
6.5)判断属性集合S,如果属性集合S仅能够满足访问结构 则转步骤6.6),如果属性集合S仅能满足访问结构 则转步骤6.7),如果属性集合S不能满足任一访问结构,则解密终止;
6.6)令 恢复密钥
获得密文解密密钥Kf;
6.7)令 恢复密钥
获得索引更新密钥Ks;
6.8)使用密钥Kf解密密文文档集合 得到包含关键词wi明文文档Di。
8.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤7)的索引更新方法包括以下步骤:k
7,1)随机选择k′s←{0,1} ,以 形式发送更新内容标识符Um至搜索表Ts中
7.2)计算更新后的用于标识文件存储在链表中的位置的I′w即 更新后的Iw包含新的密文存储信息;
7.3)获得新的搜索数组As;计算如果Inew[t]=0且I′w[t]=0,转步骤7.4),如果Inew[t]=0且I′w[t]=1,转步骤7.5);
7.4)计算Iw中前t‑1个数中1的个数Count(t‑1);如果t‑1=0,则Ai,1节点中存储的文件标识符idt变为Null;否则Ai,Count(t‑1)+1节点中存储的文件标识符idt变为Null;
7.5)计算Inew中前t‑1个数中0的个数Count0(t‑1);如果t‑1=0, 节点中存储文件标识符idt;否则,Ai,Count0(t‑1)+1节点中存储文件标识符idt。
9.如权利要求书1所述的一种基于安全倒排索引的可搜索加密方法,其特征在于,所述步骤8)中的数据验证包括如下步骤:
8.1)令 利用S向量对β进行分割,Sj=1时,β必须满足β′+β″=β;
若Sj=0,分割成两个与原向量相同的子向量,即β′=β″=β;使用Q′,Q″加密这两个向量得
8.2)计算公式
判断等式是否成立,如果成立转步骤8.3),否则转提示验证失败;
8.3)验证数据的完整性,计算
如果上述公式成立,则说明服务器没有恶意,数据完整性得到保证,验证通过;否则转提示验证失败。