一种云存储中支持多用户的可搜索加密方法

文档序号:8459226阅读:281来源:国知局
一种云存储中支持多用户的可搜索加密方法
【技术领域】
[0001] 本发明涉及云计算和应用密码学的交叉技术领域,具体是一种云存储中支持多用 户的可搜索加密方法。
【背景技术】
[0002] 随着云计算的发展,越来越多的公司将数据存储在云端,这样不仅为用户节省存 储成本,而且云端服务器可以为用户提供计算服务,但是同时也带来了一些问题:用户存储 在云端的数据得不到安全保障,充满好奇心的服务器拥有者可能会查看用户的数据,因此 在外包数据之前需要对其进行加密处理,从而使数据发送者和其授权检索者之外的其他人 即使获得数据也无法获知其内容。
[0003] 然而,传统的加密技术虽然可以保证数据的安全性和完整性,但是随着大量的数 据被上传到云端,用户对数据的检索效率又出现了新的问题。使用传统的加密技术,用户需 要下载所有上传在云端的数据,然后对其解密,最后才能从中查找出用户想要的数据。但是 这样做效率太低,浪费了大量的时间和带宽,不能满足实际需求,为了找到一种高效、可靠 的检索技术,提出了 "可搜索加密"这一概念。
[0004] 可搜索加密就是用户可以直接对密文进行检索,接收到密文后再对其解密,从而 得到用户想要的数据,而不是下载所有密文,然后全部解密之后才能检索自己需要的内容, 这样用户可以节省大量的时间和计算工作量,实现了对云端数据的高效控制。
[0005] 可搜索加密技术分为对称可搜索加密和非对称可搜索加密,分别利用传统密码学 中的对称加密和非对称加密技术,都是针对关键字进行检索,但非对称可搜索加密由于计 算开销较大、算法比较复杂、速率低等缺点,不适合大型文件数据的加密和共享,因此涉及 大量的数据在云端存储时,非对称可搜索加密效率不高。

【发明内容】

[0006] 为解决上述问题,本发明提出一种新型的云存储中基于多用户的可搜索加密方 法,实现使不同用户对同一个文件的不同访问权限,同时可以动态添加和删除授权用户,而 不需要在添加或删除用户时重新分配所有用户的密钥,最终解决传统多用户可搜索加密技 术中动态管理授权用户和对文件的访问控制的问题。
[0007] 为此,本发明采用的技术方案包括以下步骤:
[0008] 步骤一、系统初始化;数据拥有者初始化系统参数,生成密钥和伪随机函数,接下 来生成用户表并将用户表发送到云端服务器;
[0009] 步骤二、添加用户;数据拥有者将新用户的身份信息发送给云端服务器的用户表, 并把密钥和伪随机函数发送给新用户,用来生成陷门和解密文件;
[0010] 步骤三、文件加密;数据拥有者对关键字和文件进行加密,并为文件的关键字创建 关键字索引链表,以关键字为表头节点,将包含该关键字的文件添加到关键字索引链表中, 然后为每个文件创建权限链表,将授权访问文件的用户加入对应文件的权限链表以完成、 授权,并将加密后的文件、关键字索引链表和权限链表一起上传到云端服务器;
[0011] 步骤四、生成陷门,用户使用密钥和想要检索的关键字生成该关键字的陷门,用来 匹配关键字;
[0012] 步骤五、文件检索;用户使用生成的关键字陷门向云端服务器发起检索请求,服务 器首先查询用户表中有无该用户,如果没有则拒绝提供检索;否则,根据上传的陷门检索关 键字索引,如果没有匹配到对应的关键字,返回FALSE ;否则继续查询关键字索引链表中第 一个文件的权限链表中有无该用户,如果有该用户,则将文件加入到检索结果中,然后继续 查询关键字索引表中下一个文件,直到所有包含该关键字的文件均查询完,最后将检索结 果发送给用户;
[0013] 步骤六、文件解密;用户使用解密密钥对接收到的密文进行解密,得到明文;
[0014] 步骤七、删除用户;数据拥有者将用户信息从用户表中直接删除。
[0015] 其中,步骤一中系统初始化具体过程为:
[0016] S11、数据拥有者生成密钥K'和K"、伪随机函数f和F、分组密码E,并且根据关 键字个数生成伪随机流S 1, S2,…,Sn,其中η为待加密关键字个数;
[0017] S12、生成分组密码Κ,用于加密文件;
[0018] S13、对于分组密码Κ,利用IDEA算法生成解密密码犮。
[0019] S14、生成用户表,用于添加和删除用户,并将用户表和伪随机函数F-起发送到 云端服务器。
[0020] 步骤二中的添加用户具体过程为:
[0021] S21、数据拥有者将新用户Ui的唯一标识id(Ui)发送给服务器,并将七添加进用 户表,其中i取从1开始的正整数,表示新用户个数;
[0022] S22、数据拥有者将密钥K'和K"、伪随机函数f、分组密码E和分组密码厂发送给 用户,其中分组密码无用来解密文件,其余密钥和伪随机函数用来生成关键字陷门。
[0023] 步骤三中文件加密的过程具体为:
[0024] S31、数据拥有者使用分组密码E和密钥f逐个加密关键字Wx,生成密文 E (K',Wx),其中X取从1开始的正整数且不大于n,表示关键字的个数
[0025] S32、将 E (K',Wx)等分成 L,R ,两部分;
[0026] S33、基于Lx生成二进制字符串Sx| |F(KX,SX),此处Kx= f(K",WX),I I为符号串 连接;
[0027] S34、将E(K',WX)和Sx| |F(KX,Sx)进行异或操作形成关键字Wx的密文Cx;
[0028] S35、生成关键字Wi和文件fj的索引结构,其中j为正整数,表示要上传至云端服 务器的文件个数;
[0029] S36、使用分组密码K,利用IDEA算法加密文件fj,生成密文EJfj);
[0030] S37、根据用户+对文件L的访问权限,生成文件的权限链表,其中id(Ui)表示用 户七的标识,id(f P表示文件fj的标识;
[0031] S38、最后将关键字和文件的索引结构、文件的权限链表和密文一同上传云端服务 器。
[0032] 步骤四中生成陷门的具体过程为:
[0033] S41、用户使用密钥C和分组密码E计算E (f,Wx),Wx为要检索的关键字;
[0034] S42、使用密钥K"和伪随机函数f计算Q = f(K",LX),LXSS41中E(f,Wx)等 分成LjP R χ两部分的左半部分;
[0035] S43、计算 Wx的陷门 Tw= (E(K,,WX),Q = f(K",LX))。
[0036] 步骤五中文件检索的具体过程为:
[0037] S51、用户Ui向云端服务器提交检索请求,并将S43中生成的关键字陷门T w传给服 务器,服务器收到请求后,先检索用户表,查看是否有id(Ui),如果有则继续检索关键字索 弓丨;否则拒绝检索;
[0038] S52、服务器遍历关键字索引表的所有关键字密文Cx,并计算Cx XOR E (f,Wx)= Sx| |T,同时判断F(Q,Sx)是否等于T,如果相等则说明Cx就是关键字^的密文;否则,继续 匹配下一个关键字密文,如果最后没有匹配到相应关键字,则说明没有用户想要检索的关 键字,返回FALSE,其中,XOR表示异或操作;
[0039] S53、假设检索关键字为W1,服务器根据关键字和文件的索引结构首先找到键字W 1 的索引链表中第一个文件,先检索的授权链表,判断是否包含用户u i,如果包含说明用户 七有权限检索文件f i,并将&加入到返回结果Result中,然后继续查询W ^勺索引链表中下 一个文件,即f3,直到所有包含W1的文件都检索结束;
[0040] S54、最后将Result返回给用户ui〇
[0041] 步骤六文件解密的具体过程为:用户根据IDEA加密算法,使用密钥皮解密密文 Ek (fj),得到明文 A (A (.//))。
[0042] 步骤七删除用户的具体过程为:数据拥有者向云端服务器发送命令删除用户Ui, 服务器检索用户表,并从表中将用户Ui项直接删除。
[0043] 本发明带来的有益效果:1、实现了对密文的直接检索,效率和安全性都得到了提 高。与传统可搜索加密方法相比,由于用户直接对关键字的密文进行检索,不会向服务器透 漏关键字信息,服务器除了 "陷门一一关键字密文"对之外不会知道任何有关文件的信息, 因此安全性得到了提高。并且比起传统的加密方法,用户不需要将所有的密文都下载下来, 然后全部解密再进行检索,因此大大节省了用户的计算量和存储空间。2、提高了文件检索 效率。检索文件关键字时只需要查询关键字索引,如果有该关键字则继续查询关键字链表 中所包含的文件,而不需要检索整个密文文件才能判断是否包含所查关键字,因此效率有 很大提高。3、实现了对文件的访问权限控制。使不同用户对同一文件的访问权限不同,因此 不同用户对同一文件的检索权限不同,这符合实际要求,如需授权用户检索某文件的权利, 只要将该用户添加到对应的文件权限链表中,相反将其从权限链表中删除即能取消其访问 权限,体现了灵活性和便利性。4、实现了对用户的动态添加和删除。不像传统的多用户可 搜索加密方法,当有新用户加入或者删除用户时,需要对所有用户重新分配密钥,而是直接 对用户表做添加和删除工作即可,被删除的用户将失去检索文件的权利,效率大大提高。
【附图说明】
[0044] 图1为本发明流程图;
[0045] 图2为用户表;
[0046] 图3为关键字和文件的索引结构;
[0047] 图4为文件的权限链表。
【具体实施方式】
[0048] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0049] 步骤一、系统初始化阶段
[0050] 数据拥有者初始化系统参数,生成密钥和伪随机函数。
[0051] 具体过程如下:
[0052] S11、数据拥有者生成密钥K'和K"、伪随机函数f和F、分组密码E,并且根据关 键字个数生成伪随机流S 1, S2,…,Sn(η为待加密关键字个数),用于加密和解密关键字。
[0053] S12、生成分组密码Κ,用于加密文件。
[0054] S13、使用S12中的分组密码Κ,根据国际加密算法IDEA算法生成解密密码Z。
[0055] S14、生成用户表,如图2所示,用于添加和删除用户,并将其和伪随机函数F -起 发送到云端服务器。
[0056] 步骤二、用户添加阶段
[0057] 当有新用户Ui加入时,数据拥有者将其加入云端服务器的用户表,如图2所示,并 将密钥和相应的伪随机函数发送给U i,用户可以用来生成陷门和解密文件。
[0058] 具体过程如下:
[0059] S21、数据拥有者将新用户Ui的唯一标识id(u J (其中i取从1开始的正整数值, 代表新用户的个数)发送给服云端务器,并将其添加进用户表中。
[0060] S22、数据拥有者将密钥K'和K"、伪随机函数f、分组密码E和分组密码K发送给 Ui,其中分组密码f用来解密文件,其余密钥和伪随机函数用来生成关键字陷门。
[0061] 步骤三、文件加密阶段
[0062] 数
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1