可验证完整性和完备性的多用户云加密关键字搜索方法

文档序号:7821211阅读:317来源:国知局
可验证完整性和完备性的多用户云加密关键字搜索方法
【专利摘要】本发明主要研究公钥密码体制下的可搜索加密技术,提出了一种可验证完整性和完备性的多用户云加密关键字搜索方法,该方法在云环境下可验证查询结果完备性和外包数据完整性,并对多用户权限进行设定。该方法使用签名绑定关键字索引和其关联加密文件,实现了查询结果完备性和完整性的验证,使用重加密技术实现了多用户隐查询,并可动态更新用户查询权限。本发明还优化加密文件的索引结构和查询机制,在查询过程中使用哈希查询提升查询效率,实现了对云数据的快速访问。
【专利说明】可验证完整性和完备性的多用户云加密关键字搜索方法

【技术领域】
[0001] 本发明涉及公钥密码体制下的可搜索加密技术研究领域,特别涉及一种可验证完 整性和完备性的多用户云加密关键字搜索方法,该方法在云环境下可验证查询结果完备性 和外包数据完整性,并对多用户权限进行设定。

【背景技术】
[0002] 随着计算机网络技术的蓬勃发展和社会对信息资源需求的扩大,越来越多的企业 和个人希望通过云存储降低本地的基础设施成本,并获得更高的服务质量。然而,云存储在 带来方便、易用和低成本服务的同时,也带来了许多新的安全问题。如今数据存储在第三方 云平台上,数据拥有者失去了对自己数据的控制,而云服务提供商并不是完全可信的,使得 云端数据面临着泄露的风险。
[0003] 数据加密是保护云端数据的基本手段,用户在上传敏感数据之前首先将数据进行 加密,这样攻击者和云服务提供商即使获得了加密的数据也无法获得其内容,从而保证了 数据在云端存储的安全。然而,问题是如何在加密数据中搜索出用户所需的内容呢? 2000 年,Song 在他的论文〈〈A. Practical techniques for searches on encrypted data〉〉中首 次提出了可搜索加密的概念,并提出了第一个基于对称加密的关键字搜索方案,实现对加 密的数据进行查询搜索,引发科研人员对可搜索加密技术的研究。2004年,Boneh在文献 《Public key encryption with keyword search》中提出基于离散对数通过线性配对实现 了第一个公钥加密关键字搜索的方案,把可搜索加密技术应用在目前通用的公钥密码体制 之中。随着可搜索加密技术的发展,为了更贴近实际应用需求,陆续有科研学者提出加密范 围搜索方案、加密连接关键字搜索方案和加密模糊关键字搜索方案等研究方向。近些年,由 于云计算和云存储的兴起,对加密数据库的访问控制、完整性验证和加密检索成为新的研 究热点。
[0004] 应用在云平台的可搜索加密技术的研究不仅仅需要实现加密的数据请求和加密 的文件索引的搜索匹配,还需要针对云平台多授权用户和大数据量存储的特点,实现多用 户动态访问控制和巨大量数据中快速检索的功能。
[0005] 已有的大多数可搜索加密方案都着重于如何在加密数据中查询到所需的内容,而 没有充分考虑外包数据的完整性和查询结果的完备性。然而,在云存储模式下,由于第三方 服务提供者并非完全可信。用户担心云端数据是否已经被攻击者或云服务提供者替换或损 坏。因此,用户需要对查询结果进行完整性和完备性的验证,从而保证用户得到查询结果是 符合用户查询要求的所有数据,而且没有被替换或损坏。
[0006]目前已有大多数加密可搜索方案都只能实现单用户查询。然而,在云存储环境下, 数据拥有者希望与多个用户分享数据。因此,需要设计面向多用户的查询管理机制,实现多 用户查询权限的授予与撤销。另外,已有大部分可搜索加密方案在搜索过程中,都是采用线 性匹配的方法,将加密的查询请求逐一与加密的索引项进行匹配,而在存储巨大量数据的 云平台,查询效率不足以满足云应用的需求。
[0007] 因此,寻求一种能够在云环境下验证查询结果完备性和外包数据完整性,并对多 用户权限进行设定的加密关键字搜索方法具有重要的研究价值。


【发明内容】

[0008] 本发明的主要目的在于克服现有技术的缺点与不足,提供一种可验证完整性和完 备性的多用户云加密关键字搜索方法,该方法能够在云环境下验证查询结果完备性和外包 数据完整性,同时还支持多用户查询,查询效率高。
[0009] 本发明的目的通过以下的技术方案实现:可验证完整性和完备性的多用户云加密 关键字搜索方法,包括步骤:
[0010] (1)数据拥有者对数据文件进行加密,同时从上传的数据文件中提取多个关键字 进行加密以形成用于查询的关键字索引;同时对提取的每一个关键字,利用同态哈希函数 生成关键字摘要,在本地建立一张关键字摘要表;数据拥有者生成用于对数据签名的签名 公钥和签名私钥,在外包数据之前,用其签名私钥对每个关键字摘要进行签名,最后将加密 的数据文件、关键字索引和签名发送给云端服务器;
[0011] (2)云端服务器为上述加密的数据文件和关键字索引分配存储空间,同时云端服 务器以每一个关键字索引作为查询项,建立查询索引表,保存索引信息和签名信息,并建立 链表保存与每一个关键字索引关联的所有文件的地址,通过查询索引表的指针项连接链表 和查询索引表;
[0012] (3)数据拥有者通过安全通道为多个授权用户分配查询加密的数据文件所需的私 钥,同时数据拥有者还生成对应授权用户的重加密密钥,并将所有重加密密钥组合形成的 重加密密钥表发送给云端服务器,在查询过程中,授权用户用自己的私钥形成查询门限发 送给云端服务器;
[0013] (4)云端服务器根据查询索引表对查询门限进行查询,找出符合授权用户查询的 文件组和签名信息,并返回给授权用户;
[0014] (5)授权用户接收到关键字的签名信息和文件组后,用数据拥有者的签名公钥和 同态哈希函数解出签名中的摘要,然后从加密文件组中解出文件,然后验证此解出文件和 查询的关键字是否与摘要一致,如果一致,则表示文件组文件完整且查询结果完备,否则表 示文件不完整,查询结果不完备;所述文件组文件完整表示数据文件没有被修改或替换,所 述查询结果完备表示查询结果包括了所有索引含该关键字的数据文件。
[0015] 具体的,所述步骤(1)中,对每个数据文件M,数据拥有者使用对称密钥k进行加 密,加密文件表示为Ek(M),其中Ek( ?)是用于加密文件的对称加密算法;
[0016] 对于第i个关键字Wi,关键字索引为INDEX(Wi) = H2(t),其中 f = '_),设Gp G2都是阶为素数P的乘法群,其中g是乘法群G1的生成元, 定义双线性映射G = G1XG1 - G2, e(g,g)是乘法群G2的生成元,设氏(?): {0, 1}* - G1, H2( ? ) :G2 - {0, l}ltw,跋w eZi为数据拥有者为加密关键字索引采用的私钥, Is mod为云端服务器的公钥,沉,eZ)为云端服务器的私钥。
[0017] 具体的,所述步骤(1)中,对于第i个关键字1,利用同态哈希函数生成关键字摘 要的公式是:
[0018] HMAC (Wi) = Hr (Z (M1) X f (Wi) +Z (M2) X f (Wi) +......+Z (Mi) X f (Wi));
[0019] 其中f( ? ) : {〇, IK - {〇, l}n是安全的单向哈希函数,Hr( ?)是同态哈希函数, Z( ?)是用于压缩的哈希函数,M1, M2,…Mi为数据文件。
[0020] 具体的,所述数据拥有者生成用于对数据签名的签名公钥PK' M和签名私钥 SK' D(),在外包数据之前,数据拥有者用其签名私钥SK' M对每个关键字摘要HMAC(Wi)进 行签名,即得到的%) = 〃k(〃〃/IC(%)),E' sk( ?)是用于签名的公钥加密算法。
[0021] 优选的,所述步骤(3)中,数据拥有者选择作为其加密关键字索引的私 钥,并计算公钥Izw =/Ad°,然后随机选择eZi,将SKui分配给授权用户Ui作为其 生成加密关键字查询门限的私钥,Ui为授权用户的身份号,生成该授权用户的重加密密钥

【权利要求】
1. 可验证完整性和完备性的多用户云加密关键字搜索方法,其特征在于,包括步骤: (1) 数据拥有者对数据文件进行加密,同时从上传的数据文件中提取多个关键字进行 加密以形成用于查询的关键字索引;同时对提取的每一个关键字,利用同态哈希函数生成 关键字摘要,在本地建立一张关键字摘要表;数据拥有者生成用于对数据签名的签名公钥 和签名私钥,在外包数据之前,用其签名私钥对每个关键字摘要进行签名,最后将加密的数 据文件、关键字索引和签名发送给云端服务器; (2) 云端服务器为上述加密的数据文件和关键字索引分配存储空间,同时云端服务器 以每一个关键字索引作为查询项,建立查询索引表,保存索引信息和签名信息,并建立链表 保存与每一个关键字索引关联的所有文件的地址,通过查询索引表的指针项连接链表和查 询索引表; (3) 数据拥有者通过安全信道为多个授权用户分配查询加密的数据文件所需的私钥, 同时数据拥有者还生成对应授权用户的重加密密钥,并将所有重加密密钥组合形成的重加 密密钥表使用安全信道发送给云端服务器,在查询过程中,授权用户用自己的私钥形成查 询门限发送给云端服务器; (4) 云端服务器根据查询索引表对查询门限进行查询,找出符合授权用户查询的文件 组和签名信息,并返回给授权用户; (5) 授权用户接收到关键字的签名信息和文件组后,用数据拥有者的签名公钥和同态 哈希函数解出签名中的摘要,然后从加密文件组中解出文件,然后验证此解出文件和查询 的关键字是否与摘要一致,如果一致,则表示文件组文件完整且查询结果完备,否则表示文 件不完整,查询结果不完备;所述文件组文件完整表示数据文件没有被修改或替换,所述查 询结果完备表示查询结果包括了所有索引含该关键字的数据文件。
2. 根据权利要求1所述的可验证完整性和完备性的多用户云加密关键字搜索方法,其 特征在于,所述步骤(1)中,对每个数据文件M,数据拥有者使用对称密钥k进行加密,加密 文件表示为E k(M),其中Ek( ·)是用于加密文件的对称加密算法; 对于第i个关键字Wi,关键字索引为INDEX(Wi) = H2(t),其中? = , 设A、G2都是阶为素数ρ的乘法群,其中g是乘法群G1的生成元,定义双线性映射 MG1XG1 - G2,e(g,g)是乘法群 G2 的生成元,设氏(·): {0, 1}* - Gi,H2( ·) =G2 - {0, I}1。?, 为数据拥有者为加密关键字索引采用的私钥,PIs =#4 modi?为云端服务器 的公钥,SK5 为云端服务器的私钥。
3. 根据权利要求1所述的可验证完整性和完备性的多用户云加密关键字搜索方法,其 特征在于,所述步骤(1)中,对于第i个关键字W i,利用同态哈希函数生成关键字摘要的公 式是: HMAC (Wi) = Hr (Z (M1) X f (Wi) +Z (M2) X f (Wi) +......+Z (Mi) X f (Wi)); 其中f(*):{0,l:T- {0,1}η是安全的单向哈希函数,Hr(·)是同态哈希函数,Ζ(·) 是用于压缩的哈希函数,M1, M2,…Mi的数据文件。
4. 根据权利要求1所述的可验证完整性和完备性的多用户云加密关键字搜索方法,其 特征在于,所述步骤(1)中,所述数据拥有者生成用于对数据签名的签名公钥ΡΓ Μ和签名 私钥SK' D(),在外包数据之前,数据拥有者用其签名私钥SK' Μ对每个关键字摘要HMAC(Wi) 进行签名,即得到WW = A· (〃m〇,e' sk( ·)是用于签名的公钥加密算法。
5. 根据权利要求1所述的可验证完整性和完备性的多用户云加密关键字搜索方法, 其特征在于,所述步骤(3)中,数据拥有者选择作为其加密关键字索引的私钥, 并计算公钥,然后随机选择将SKui分配给授权用户Ui作为其生 成加密关键字查询门限的私钥,Ui为授权用户的身份号,生成该授权用户的重加密密钥
.最后将各个授权用户身份号与其重加密密钥一一对应的重加密密钥表发 9 送到云端服务器。
6. 根据权利要求5所述的可验证完整性和完备性的多用户云加密关键字搜索方法,其 特征在于,所述步骤(3)中,在查询过程中,授权用户用自己的私钥形成查询门限发送给云 端服务器的步骤如下:授权用户U i使用其密钥SKui和要查询的关键字示生成加密关键字查 询门限),其中Ui为该授权用户的身份号,授权用户把查询门KTw发送给 云端服务器。
7. 根据权利要求6所述的可验证完整性和完备性的多用户云加密关键字搜 索方法,其特征在于,所述步骤(4)中,云端服务器在接收到授权用户的查询门限 TV= (乂乃,/Z1(炉)νλ?·)后,通过查询重加密密钥表,查找到该授权用户Ui的重加密密钥
,进行代理重加密转换如下:
云端服务器根据查询索引表定位到与门限T' w对应的关键字索引INDEX(Wi),并通过 遍历该表中指针项指向的文件地址链表,得到与该关键字关联的所有文件地址,取出符合 查询要求的文件组,云端服务器把该文件组和该关键字的签名信息作为查询结果,返回给 当前查询的授权用户U i。
8. 根据权利要求1所述的可验证完整性和完备性的多用户云加密关键字搜索方法, 其特征在于,所述步骤(5)中,授权用户接收到关键字的签名信息和加密文件组后,首先授 权用户先用数据拥有者签名公钥PK' M解出签名中的摘要,然后从加密文件组中解出文 件M1, M2,…Mi,用生成摘要的同态哈希函数H1X ·)、压缩函数Z( ·)和安全单向哈希函数 f( · ) : {0, 1}* - {0, 1}η验证摘要,验证公式为: HMAC (W1) = Hr (Z (M1) X f (W1) +Z (M2) X f (W1) +......+Z (Mi) X f (W1)); 若表达式成立,则M1, M2,…Mi文件是完整的,即没有被修改或替换,否则就表示文件不 完整。
9. 根据权利要求1所述的可验证完整性和完备性的多用户云加密关键字搜索方法,其 特征在于,还包括步骤:(6)对云外包数据进行更新,更新操作分为以下两种情况: (6-1)如要添加数据文件Ek (MJ,该文件的索引包含多个关键字Wi和%,则更新步骤如 下: (6-1-1)首先数据拥有者生成关键字Wi和Wj的索引两)^/4)和 /A.7)/:AW,) = 〃(//,(Η,,),/^Λ。);然后再更新关键字 Wi 和 Wj 对应的摘要 HMAC (Wi)和 HMAC (Wj), 数据拥有者先在本地关键字摘要表中取出关键字Wi和%对应的摘要HMAC (Wi)和HMAC (Wj), 利用同态哈希函数的同态性质完成更新操作: HMAC(Wi),= HMAC(Wi) X Hr (Z(Ml) · f (Wi)); HMAC(Wj) ; = HMAC(Wj) X Hr (Z(Ml) · f (Wj)); 数据拥有者再把更新后的摘要回写到本地关键字摘要表,进行更新; (6-1-2)更新本地关键字摘要表后,数据拥有者利用签名私钥SK' D()对关键字摘要进 行签名: σ(^) = E^JHMACWi)); a{W^ = Esk-JIIMAC(Wi)); (6-1-3)在更新加密关键字索引和生成签名后,数据拥有者把加密的数据文件、关键字 索引和签名发送给云端服务器进行数据更新; (6-1-4)云端服务器接收到数据后,更新查询索引表,通过哈希查询定位到关键字索引 INDEX(Wi)和INDEX(Wj)所在的表项,更新签名σ (Wi)、σ (Wj),并在对应的文件地址链表中 插入保存文件Ek (MJ地址的结点; (6-2)如要在文件索引中添加关键字索引I,并存入包含I关键字的多个数据文件 Ek (Mi)、Ek (Mj),则更新步骤如下: (6-2-1)数据拥有者生成关键字I的索引= e(尽,并对文件吣、 Mj进行加密; (6-2-2)生成摘要:从二叫Ζ(Λ()_/(%)) χ/?.(Ζ(Μ,)_/(%)),并把摘要 保存在本地关键字摘要表中,并用数据拥有者签名私钥SK' ^对摘要进行签名: a(WL) ^ESK, JHMACVVi )); (6-2-3)数据拥有者把索引INDEX(W1)、文件Ek(Mi)、E k(Mj)和签名σ (WJ发送给云端 服务器进行数据外包; (6-2-4)云端服务器接收到数据后,更新查询索引表,云端服务器计算关键字索引的哈 希值hash2 (INDEX (WJ)定位表项位置,分配该空间给关键字索引INDEX (WJ,如果存在哈希 冲突,采用闭散列方式规避冲突,再把签名σ (WJ存入索引表中,并建立文件地址链表保存 文件Ek (Mi)、Ek (Mj)的地址信息。
10.根据权利要求1所述的可验证完整性和完备性的多用户云加密关键字搜索方法, 其特征在于,还包括步骤: (7)数据拥有者若需要撤销授权用户Ud的查询权限,则发送该用户的身份号Ud和撤销 指令给云端服务器,云端服务器通过哈希查询定位到用户Ud在重加密密钥表的表项,删除 该表项,使被撤销权限的用户无法在查询时完成合法的门限重加密,无法合法的执行查询 操作。
【文档编号】H04L9/32GK104394155SQ201410708142
【公开日】2015年3月4日 申请日期:2014年11月27日 优先权日:2014年11月27日
【发明者】王晓明, 李诗旸, 吴岱霓, 甘庆晴, 王耄, 周锐 申请人:暨南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1