一种云存储加密及去重复方法及其系统的制作方法

文档序号:10555395阅读:328来源:国知局
一种云存储加密及去重复方法及其系统的制作方法
【专利摘要】本发明公开了一种云存储加密及去重复方法及其系统,将数据文件分为若干块后,先将各个数据块的标识发送至云存储系统进行重复检测,若数据文件未重复,则将通过收敛密钥对各个数据块分别进行加密,再对各个收敛密钥分别进行加密操作,由客户端存储第一数据块的收敛密钥密文,由云存储系统存储其余数据块的收敛密钥密文及全部数据块密文;若数据文件重复,则仅生成第一数据块的收敛密钥并使用云存储系统发送的哈希树的根节点对其进行收敛密钥加密操作,存储生成的第一数据块的收敛密钥密文。本发明能够提高采用收敛加密及去重复时数据文件的安全性,尽可能避免受到字典攻击时被破解的风险,同时能够节省客户端的存储空间。
【专利说明】
一种云存储加密及去重复方法及其系统
技术领域
[0001]本发明涉及云存储技术领域,特别是涉及一种云存储加密及去重复方法及其系统。
【背景技术】
[0002]去重复技术是云存储系统中的一个重要的技术,通过避免在云存储系统中多次存储相同的数据文件,来节约云存储系统的硬盘空间以及用户的网络带宽,进而降低云存储系统的成本。但是,由于数据文件进行存储时往往需要加密,若用户先进行加密,然后再由云存储系统进行去重复的话,由于不同的用户加密同一个数据文件往往得到不同的密文,而云存储系统很难判断这些不同的密文是否来源于同样的数据文件,这就导致了加密数据文件不可能去重复。
[0003]目前,收敛加密为同时实现数据文件的加密和去重复提供了一种有效的方法。数据文件的加密密钥是其数据内容的哈希值,称之为收敛密钥或内容密钥,该方法能够保证同样的数据文件加密后产生同样的密文,故可以对加密后的数据文件进行去重复,同时由于同一个数据文件只需要存储一份密文,故可以实现去重复技术节约硬盘空间的目的。
[0004]但是,采用收敛加密时,由于各个数据文件采用的是相同的加密方式,数据文件的加密密钥一致,加密后的数据密文固定,攻击者可以利用字典来猜测收敛密钥的内容,从而解密数据文件密文,即数据文件的密文容易遭受字典攻击,安全性差。
[0005]因此,如何提供一种安全性高的云存储加密及去重复方法及其系统是本领域技术人员目前需要解决的问题。

【发明内容】

[0006]本发明的目的是提供一种云存储加密及去重复方法及其系统,能够提高采用收敛加密及去重复时数据文件的安全性,尽可能避免受到字典攻击时被破解的风险,同时能够尽可能节省客户端的存储空间。
[0007]为解决上述技术问题,本发明提供了一种云存储加密及去重复方法,用于客户端,所述客户端与云存储系统通信连接,包括:
[0008]步骤slOl:将数据文件分为预设大小的N个数据块并进行标号,其中,最后一个数据块的大小小于或等于所述预设大小;
[0009]步骤S102:分别计算各个所述数据块的标识;
[0010]步骤sl03:将所述数据文件的预设部分标识上传至所述云存储系统进行重复检测;当所述云存储系统判断预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,接收所述云存储系统发送的第一公钥,所述第一公钥为对应于所述数据文件的哈希树的根节点,进入步骤sl09;当所述云存储系统判断未预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,发送所述数据文件的全部标识至所述云存储系统,并接收所述云存储系统发送的第二公钥,所述第二公钥为以所述数据文件的全部标识作为叶子节点构建的哈希树的根节点,进入步骤S104;
[0011 ]步骤S104:分别计算得到各个所述数据块的私钥;
[0012]步骤sl05:分别将各个所述数据块的私钥与其标识进行整合操作,得到各个所述数据块的收敛密钥;
[0013]步骤sl06:对各个所述数据块进行数据块加密操作,得到各个所述数据块的数据块密文;每个所述数据块的加密密钥为自身的收敛密钥;
[0014]步骤sl07:对各个所述数据块的收敛密钥进行收敛密钥加密操作,得到各个所述数据块对应的收敛密钥密文;其中,所述第二公钥为第一数据块的收敛密钥的加密密钥,所述第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,KMSN;
[0015]步骤sl08:存储所述第一数据块的收敛密钥密文,将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统,供所述云存储系统将其分布式的存储于自身的若干个服务器内;以供所述客户端根据存储的所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件;
[0016]步骤sl09:计算所述第一数据块的私钥;
[0017]步骤sllO:将所述第一数据块的私钥与其标识进行整合操作,得到所述第一数据块的收敛密钥;
[0018]步骤sill:对所述第一数据块的收敛密钥进行收敛密钥加密操作,得到所述第一数据块的收敛密钥密文,所述第一数据块的收敛密钥的加密密钥为所述第一公钥;
[0019]步骤sll2:存储所述第一数据块的收敛密钥密文,以供所述客户端根据所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件。
[0020]优选地,所述接收所述云存储系统发送的第一公钥之前还包括:
[0021]接收所述云存储系统发送的数据重复响应,并运行拥有权证明协议,发送数据拥有权证明信息至所述云存储系统;
[0022]当所述云存储系统判断所述客户端通过数据拥有权证明后,接收所述云存储系统发送的授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内预先存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文;
[0023]所述步骤sl08中,所述将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统后还包括:
[0024]接收所述云存储系统发送的所述授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文。
[0025]优选地,所述整合操作具体为:
[0026]循环异或操作。
[0027]优选地,所述数据块加密操作以及所述收敛密钥加密操作具体为:
[0028]采用AES算法进行加密。
[0029]优选地,所述分别计算得到各个所述数据块的私钥的过程具体为:
[0030]分别采用SHA-1哈希算法来计算得到各个所述数据块的私钥。
[0031]优选地,所述分别计算各个所述数据块的标识的过程具体为:
[0032]分别采用SHA-256哈希算法来计算得到各个所述数据块的标识,其中,所述数据块的标识为所述数据块内容的哈希值。
[0033]为解决上述技术问题,本发明提供了一种云存储加密及去重复系统,用于客户端,所述客户端与云存储系统通信连接,包括:
[0034]分块模块,用于将数据文件分为预设大小的N个数据块并进行标号,其中,最后一个数据块的大小小于或等于所述预设大小;
[0035]标识计算模块,用于分别计算各个所述数据块的标识;
[0036]重复检测模块,用于将所述数据文件的预设部分标识上传至所述云存储系统进行重复检测;当所述云存储系统判断预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,接收所述云存储系统发送的第一公钥,所述第一公钥为对应于所述数据文件的哈希树的根节点,触发单独私钥计算模块;当所述云存储系统判断未预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,发送所述数据文件的全部标识至所述云存储系统,并接收所述云存储系统发送的第二公钥,所述第二公钥为以所述数据文件的全部标识作为叶子节点构建的哈希树的根节点,触发整体私钥计算模块;
[0037]所述整体私钥计算模块,用于分别计算得到各个所述数据块的私钥;
[0038]整体收敛密钥计算模块,用于分别将各个所述数据块的私钥与其标识进行整合操作,得到各个所述数据块的收敛密钥;
[0039]数据块加密模块,用于对各个所述数据块进行数据块加密操作,得到各个所述数据块的数据块密文;每个所述数据块的加密密钥为自身的收敛密钥;
[0040]整体收敛密钥加密模块,用于对各个所述数据块的收敛密钥进行收敛密钥加密操作,得到各个所述数据块对应的收敛密钥密文;其中,所述第二公钥为第一数据块的收敛密钥的加密密钥,所述第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,KMSN;触发存储模块;
[0041 ]所述存储模块,用于受到所述整体收敛密钥加密模块触发时,存储所述第一数据块的收敛密钥密文,将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统,供所述云存储系统将其分布式的存储于自身的若干个服务器内;以供所述客户端根据存储的所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件;受到单独收敛密钥加密模块触发时,存储所述第一数据块的收敛密钥密文,以供所述客户端根据所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件;
[0042]所述单独私钥计算模块,用于计算所述第一数据块的私钥;
[0043]单独收敛密钥计算模块,用于将所述第一数据块的私钥与其标识进行整合操作,得到所述第一数据块的收敛密钥;
[0044]所述单独收敛密钥加密模块,用于对所述第一数据块的收敛密钥进行所述收敛密钥加密操作,得到所述第一数据块的收敛密钥密文,所述第一数据块的收敛密钥的加密密钥为所述第一公钥;触发所述存储模块。
[0045]优选地,所述重复检测模块还用于:
[0046]当所述云存储系统判断预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,接收所述云存储系统发送的数据重复响应,并运行拥有权证明协议,发送数据拥有权证明信息至所述云存储系统;当所述云存储系统判断所述客户端通过数据拥有权证明后,接收所述云存储系统发送的授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内预先存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文;
[0047]所述存储模块还用于:
[0048]在将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统后,接收所述云存储系统发送的所述授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文
[0049]本发明提供了一种云存储加密及去重复方法及其系统,将数据文件分为若干块后,先计算各个数据块的标识,并将预设部分标识发送至云存储系统进行重复检测,若数据文件未重复,则将通过收敛密钥对各个数据块进行分别加密,再对各个收敛密钥分别进行加密操作,其中,第一数据块的收敛密钥的加密密钥为云存储系统发送的公钥,其余数据块中,第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,1〈M<N;之后由客户端存储第一数据块的收敛密钥密文,由云存储系统存储其余数据块的收敛密钥密文以及全部数据块密文;若云存储系统判断数据文件重复,则仅生成第一数据块的收敛密钥并对其进行加密操作,将生成的第一数据块的收敛密钥密文进行存储。可见,首先本发明不仅能够实现数据文件的加密,也可以实现数据文件的去重复。
[0050]同时,数据文件分割成的若干个数据块密文及其收敛密钥密文是分布式的存储于云存储系统内的多个服务器中,对手想要窃取数据则需要攻陷云存储系统内的全部的服务器,难度极大;即使在概率极小的情况下,对手暂时攻陷了所有的服务器,获取到了云存储系统内存储的全部数据,但是由于云存储系统中存储的不是原始的收敛密钥,而是由数据块的私钥加密后的收敛密钥密文,在用户安全保存第一数据块的收敛密钥密文的情况下,对手无法获取第一数据块的收敛密钥密文则无法解密得到第一数据块的数据内容,也无法根据第一数据块的收敛密钥得到第一数据块的私钥,进而无法对后续的数据块的收敛密钥密文进行解密,故无法实现解密数据块密文的目的。即使对手以某种方式获取到了第一数据块的收敛密钥密文,由于对手无法通过数据拥有权证明,即无法欺骗云存储系统授权给没有数据文件的对手,因此,对手无法获得第一数据块的收敛密钥密文对应的公钥,故不能解密第一数据块的收敛密钥密文,可见,本发明大大提高了采用收敛加密及去重复时数据文件的安全性,尽可能避免了受到字典攻击时被破解的风险。
[0051 ]同时,本发明不仅能够实现基本的数据文件去重复,且由于同一份数据文件的收敛密钥密文相同,避免了随着用户数量的增加,收敛密钥密文的数量急剧上升的情形,缓解了云存储系统的存储负担;且在客户端,使用错位加密的方法加密收敛密钥,由前一个数据块的私钥加密后一个数据块的收敛密钥,形成密钥链,并将数据块的私钥整合到数据块的收敛密钥中,故尽管通过私钥对收敛密钥进行了加密,但是用户不必存储数据块的私钥,而是只需存储第一数据块的收敛密钥密文即可,大大节省了客户端的密钥存储空间。
【附图说明】
[0052]为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0053]图1为本发明提供的一种云存储加密及去重复方法的过程的流程图;
[0054]图2为本发明提供的一种云存储加密及去重复方法中哈希树的初始化时间与数据文件的大小之间的关系示意图;
[0055]图3为本发明提供的一种云存储加密及去重复方法中公钥计算时间以及标识计算时间与数据文件大小以及数据块大小之间的关系示意图;
[0056]图4为本发明提供的一种云存储加密及去重复方法中收敛密钥计算时间与数据文件大小以及数据块大小之间的关系示意图;
[0057]图5为本发明提供的一种云存储加密及去重复系统的结构示意图;
[0058]图6为与本发明提供的云存储加密及去重复系统连接的云存储系统内的结构示意图。
【具体实施方式】
[0059]本发明的核心是提供一种云存储加密及去重复方法及其系统,能够提高采用收敛加密及去重复时数据文件的安全性,尽可能避免受到字典攻击时被破解的风险,同时能够尽可能节省客户端的存储空间。
[0060]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0061]本发明提供了一种云存储加密及去重复方法,用于客户端,客户端与云存储系统通信连接,参见图1所示,图1为本发明提供的一种云存储加密及去重复方法的过程的流程图;该方法包括:
[0062]步骤slOl:将数据文件分为预设大小的N个数据块并进行标号,其中,最后一个数据块的大小小于或等于预设大小;
[0063]可以理解的是,在将数据文件进行分块的过程中,由于数据文件的大小不一定是预设大小的整数倍,故可能出现最后一个数据块的大小小于预设大小的情况。其中,这里的预设大小可以为4KB、8KB或16KB,当然,本发明对此不作限定。
[0064]步骤S102:分别计算各个数据块的标识;
[0065]其中,分别计算各个数据块的标识的过程具体为:
[0066]分别采用SHA-256哈希算法来计算得到各个数据块的标识,其中,数据块的标识为数据块内容的哈希值。另外,每个数据块的哈希值均为256bit。
[0067]步骤sl03:将数据文件的预设部分标识上传至云存储系统进行重复检测;当云存储系统判断预先存储有与数据文件的预设部分标识相同的数据文件标识时,接收云存储系统发送的第一公钥,第一公钥为对应于数据文件的哈希树的根节点,进入步骤sl09;当云存储系统判断未预先存储有与数据文件的预设部分标识相同的数据文件标识时,发送数据文件的全部标识至云存储系统,并接收云存储系统发送的第二公钥,第二公钥为以数据文件的全部标识作为叶子节点构建的哈希树的根节点,进入步骤s 104;
[0068]S卩,这里进行重复检测时,仅上传了部分标识至云存储系统,具体预先选择哪些数据块的标识进行上传本发明并不限定,可以为随机选择,也可以按照预设规则进行选择。
[0069]可以理解的是,当云存储系统判断预先存储有与数据文件的预设部分标识相同的数据文件标识时,表明该数据文件重复,云存储系统内存有以该数据文件的标识作为叶子节点构建的哈希树,故此时云存储系统发送数据块重复响应以及该哈希树的根节点至客户端;当云存储系统判断未预先存储有与数据文件的预设部分标识相同的数据文件标识时,表明该数据文件未重复,云存储系统将接收到的该数据文件的全部标识作为叶子节点构建新的哈希树,并返回数据未重复响应以及新构建的哈希树的根节点至客户端。
[0070]步骤sl04:分别计算得到各个数据块的私钥;
[0071 ]其中,分别计算得到各个数据块的私钥的过程具体为:
[0072]分别采用SHA-1哈希算法来计算得到各个数据块的私钥。
[0073]步骤sl05:分别将各个数据块的私钥与其标识进行整合操作,得到各个数据块的收敛密钥;
[0074]其中,这里的整合操作具体为:
[0075]循环异或操作。
[0076]可以理解的是,通过将私钥整合进收敛密钥内,在进行解密时,可以从上一个数据块的收敛密钥内解析出下一个数据块的私钥来解密收敛密钥密文,而不需要单独对各个数据块的私钥进行存储,节省了存储空间。另外,通过循环异或操作后得到的收敛密钥与数据块的标识长度相同,为256bit。
[0077]步骤S106:对各个数据块进行数据块加密操作,得到各个数据块的数据块密文;每个数据块的加密密钥为自身的收敛密钥;
[0078]步骤sl07:对各个数据块的收敛密钥进行收敛密钥加密操作,得到各个数据块对应的收敛密钥密文;其中,第二公钥为第一数据块的收敛密钥的加密密钥,第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,KMSN;
[0079]其中,这里的数据块加密操作以及收敛密钥加密操作具体为:
[0080]采用AES算法进行加密。
[0081 ]步骤S108:存储第一数据块的收敛密钥密文,将其他数据块的收敛密钥密文以及N个数据块密文发送至云存储系统,供云存储系统将其分布式的存储于自身的若干个服务器内;以供客户端根据存储的第一数据块的收敛密钥密文及其对应的公钥来对从云存储系统下载的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文进行解密操作,获取数据文件;
[0082]其中,这里的分布式的存储于各个服务器内具体指的是:除第一数据块以外的其他数据块的收敛密钥密文以及N个数据块密文发送至云存储系统后,分别根据各自获得的存储指针存储至相应的服务器,这里的存储指针可由云存储服务器进行随机分配或按照一定预设规则分配,本发明对此不作限定,另外,本发明也不限定各个服务器的存储内容。
[0083]步骤sl09:计算第一数据块的私钥;
[0084]相应的,这里采用SHA-1哈希算法计算第一数据块的私钥。
[0085]步骤sllO:将第一数据块的私钥与其标识进行整合操作,得到第一数据块的收敛密钥;
[0086]步骤sill:对第一数据块的收敛密钥进行收敛密钥加密操作,得到第一数据块的收敛密钥密文,第一数据块的收敛密钥的加密密钥为第一公钥;
[0087]步骤si12:存储第一数据块的收敛密钥密文,以供客户端根据第一数据块的收敛密钥密文及其对应的公钥来对从云存储系统下载的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文进行解密操作,获取数据文件。
[0088]可以理解的是,当用户想要取回数据文件时,用户从云存储系统下载N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文,然后使用对应的公钥来解密自身存储的第一数据块的收敛密钥密文,得到第一数据块的收敛密钥;之后使用第一数据块的收敛密钥解密第一数据块密文,得到第一数据块明文,并从第一数据块的收敛密钥中分离出第一数据块的私钥;然后使用第一数据块的私钥解密第二数据块的收敛密钥密文,得到第二数据块的收敛密钥,进而使用第二数据块的收敛密钥解密第二数据块密文并分离出第二数据块的私钥;以此类推,直到得到全部的数据块明文,恢复数据文件。
[0089]其中,客户端可以对第一数据块的收敛密钥密文对应的公钥进行存储,也可以不进行存储,因为云存储系统内设置有访问记录,若未存储相应的公钥,当需要进行解密时,可以重新向云存储系统进行获取。
[0090]作为优选地,接收云存储系统发送的第一公钥之前还包括:
[0091 ]接收云存储系统发送的数据重复响应,并运行拥有权证明协议,发送数据拥有权证明信息至云存储系统;
[0092]当云存储系统判断客户端通过数据拥有权证明后,接收云存储系统发送的授权访问指令,以供客户端根据授权访问指令下载云存储系统内预先存储的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文;
[0093]步骤sl08中,将其他数据块的收敛密钥密文以及N个数据块密文发送至云存储系统后还包括:
[0094]接收云存储系统发送的授权访问指令,以供客户端根据授权访问指令下载云存储系统内存储的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文。
[0095]其中,这里的数据拥有权证明信息指的是数据文件的若干个标识,当然,具体上传的标识的个数以及上传哪些数据块的标识可由工作人员自行设定,本发明对此不作特别限定。
[0096]可以理解的是,通过增加数据拥有权证明的操作,当恶意用户或对手想要非法窃取数据文件时,由于其不具有数据文件,故恶意用户或对手无法通过数据拥有权证明,云存储系统不会给其发送授权访问指令,故此时,即使恶意用户或对手通过某种方式获得用户存储的第一数据块的收敛密钥密文,由于没有授权,故无法得到云存储系统发送的公钥,也无法访问云存储系统来获取云存储系统内存储的其余数据块的收敛密钥密文以及数据块密文,进一步避免了恶意用户或对手非法获取数据文件的情况出现,提高了安全性。
[0097]需要注意的是,以上采用的算法仅为优选方案,本发明不限定各个计算过程以及加密过程所采用的算法类型。
[0098]另外,本发明并不能完全避免字典攻击,只是由于收敛密钥的长度较长有256bit,且进一步对收敛密钥进行了加密,故能够有效地阻止字典攻击。
[0099]本发明可以在一个英特尔酷睿四核、i7-4702MQ的CPU、主频2.20GHz、ft#4GB、€统为Windows 7的PC机上实现。当然,本发明不限定该方法的应用装置。
[0100]参见图2所示,图2为本发明提供的一种云存储加密及去重复方法中哈希树的初始化时间与数据文件的大小之间的关系示意图。
[0101]在通过实验测试不同大小的数据文件构建哈希树的初始化时间时,实验结果如图2所示,随着数据文件大小的增加,构建哈希树的初始化时间也会逐渐增加,此时可以选择更大的分块来降低耗费的时间。例如,一个大小为2GB的数据文件,每个数据块4KB,初始化哈希树大约要花费2.5秒的时间。如果8G的数据文件,每个数据块16KB,那么构建哈希树也只要大约2.5秒的时间。
[0102]参见图3所示,图3为本发明提供的一种云存储加密及去重复方法中公钥计算时间以及标识计算时间与数据文件大小以及数据块大小之间的关系示意图。
[0103]在忽略磁盘I/O的情况下进行实验,实验结果如图3,在分块大小相同的情况下,数据块标识和数据块公钥的计算时间随着数据文件大小的增大而单调增加,这是因为在分块大小相同的情况下,数据文件越大,数据块的个数就越多,计算时间也就会越多。例如,一个大小为8GB的数据文件,以4KB作为数据块的大小,它计算数据块标识和数据块公钥的时间大约为3秒。另外,在数据文件大小固定的情况下,分块大小越大,数据块标识和数据块公钥的计算时间越短。
[0104]参见图4所示,图4为本发明提供的一种云存储加密及去重复方法中收敛密钥计算时间与数据文件大小以及数据块大小之间的关系示意图;
[0105]在忽略磁盘I/O的情况下进行实验,实验结果如图4。将图4与图3相比可知,收敛密钥的时间会比生成数据块标识和数据块公钥的时间和要长,这是由于在生成收敛密钥之前,需要得到数据块的公钥和数据块标识,最后两者进行循环异或产生收敛密钥。例如,一个8GB的文件,以4KB分块,生成数据块收敛密钥的时间约为3.2秒。另外,在数据文件大小固定的情况下,分块大小越大,收敛密钥的计算时间越短。
[0106]当然,本发明不限定数据文件的大小以及分块的大小。
[0107]本发明提供了一种云存储加密及去重复方法,将数据文件分为若干块后,先计算各个数据块的标识,并将预设部分标识发送至云存储系统进行重复检测,若数据文件未重复,则将通过收敛密钥对各个数据块进行分别加密,再对各个收敛密钥分别进行加密操作,其中,第一数据块的收敛密钥的加密密钥为云存储系统发送的公钥,其余数据块中,第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,1〈M<N;之后由客户端存储第一数据块的收敛密钥密文,由云存储系统存储其余数据块的收敛密钥密文以及全部数据块密文;若云存储系统判断数据文件重复,则仅生成第一数据块的收敛密钥并对其进行加密操作,将生成的第一数据块的收敛密钥密文进行存储。可见,首先本发明不仅能够实现数据文件的加密,也可以实现数据文件的去重复。
[0108]同时,数据文件分割成的若干个数据块密文及其收敛密钥密文是分布式的存储于云存储系统内的多个服务器中,对手想要窃取数据则需要攻陷云存储系统内的全部的服务器,难度极大;即使在概率极小的情况下,对手暂时攻陷了所有的服务器,获取到了云存储系统内存储的全部数据,但是由于云存储系统中存储的不是原始的收敛密钥,而是由数据块的私钥加密后的收敛密钥密文,在用户安全保存第一数据块的收敛密钥密文的情况下,对手无法获取第一数据块的收敛密钥密文则无法解密得到第一数据块的数据内容,也无法根据第一数据块的收敛密钥得到第一数据块的私钥,进而无法对后续的数据块的收敛密钥密文进行解密,故无法实现解密数据块密文的目的。即使对手以某种方式获取到了第一数据块的收敛密钥密文,由于对手无法通过数据拥有权证明,即无法欺骗云存储系统授权给没有数据文件的对手,因此,对手无法获得第一数据块的收敛密钥密文对应的公钥,故不能解密第一数据块的收敛密钥密文,可见,本发明大大提高了采用收敛加密及去重复时数据文件的安全性,尽可能避免了受到字典攻击时被破解的风险。
[0109]同时,本发明不仅能够实现基本的数据文件去重复,且由于同一份数据文件的收敛密钥密文相同,避免了随着用户数量的增加,收敛密钥密文的数量急剧上升的情形,缓解了云存储系统的存储负担;且在客户端,使用错位加密的方法加密收敛密钥,由前一个数据块的私钥加密后一个数据块的收敛密钥,形成密钥链,并将数据块的私钥整合到数据块的收敛密钥中,故尽管通过私钥对收敛密钥进行了加密,但是用户不必存储数据块的私钥,而是只需存储第一数据块的收敛密钥密文即可,大大节省了客户端的密钥存储空间。
[0110]本发明还提供了一种云存储加密及去重复系统,用于客户端,客户端与云存储系统通信连接,参见图5所示,图5为本发明提供的一种云存储加密及去重复系统的结构示意图。包括:
[0111]分块模块11,用于将数据文件分为预设大小的N个数据块并进行标号,其中,最后一个数据块的大小小于或等于预设大小;
[0112]标识计算模块12,用于分别计算各个数据块的标识;
[0113]重复检测模块13,用于将数据文件的预设部分标识上传至云存储系统进行重复检测;当云存储系统判断预先存储有与数据文件的预设部分标识相同的数据文件标识时,接收云存储系统发送的第一公钥,第一公钥为对应于数据文件的哈希树的根节点,触发单独私钥计算模块19;当云存储系统判断未预先存储有与数据文件的预设部分标识相同的数据文件标识时,发送所述数据文件的全部标识至所述云存储系统,并接收云存储系统发送的第二公钥,第二公钥为以数据文件的全部标识作为叶子节点构建的哈希树的根节点,触发整体私钥计算模块14;
[0114]整体私钥计算模块14,用于分别计算得到各个数据块的私钥;
[0115]整体收敛密钥计算模块15,用于分别将各个数据块的私钥与其标识进行整合操作,得到各个数据块的收敛密钥;
[0116]数据块加密模块16,用于对各个数据块进行数据块加密操作,得到各个数据块的数据块密文;每个数据块的加密密钥为自身的收敛密钥;
[0117]整体收敛密钥加密模块17,用于对各个数据块的收敛密钥进行收敛密钥加密操作,得到各个数据块对应的收敛密钥密文;其中,第二公钥为第一数据块的收敛密钥的加密密钥,第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,KMSN;触发存储模块18;
[0118]存储模块18,用于受到整体收敛密钥加密模块17触发时,存储第一数据块的收敛密钥密文,将其他数据块的收敛密钥密文以及N个数据块密文发送至云存储系统,供云存储系统将其分布式的存储于自身的若干个服务器内;以供客户端根据存储的第一数据块的收敛密钥密文及其对应的公钥来对从云存储系统下载的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文进行解密操作,获取数据文件;受到单独收敛密钥加密模块触发21时,存储第一数据块的收敛密钥密文,以供客户端根据第一数据块的收敛密钥密文及其对应的公钥来对从云存储系统下载的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文进行解密操作,获取数据文件;
[0119]单独私钥计算模块19,用于计算第一数据块的私钥;
[0120]单独收敛密钥计算模块20,用于将第一数据块的私钥与其标识进行整合操作,得到第一数据块的收敛密钥;
[0121 ]所述单独收敛密钥加密模块21,用于对第一数据块的收敛密钥进行收敛密钥加密操作,得到第一数据块的收敛密钥密文,第一数据块的收敛密钥的加密密钥为第一公钥;触发存储模块18。
[0122]作为优选地,重复检测模块13还用于:
[0123]当云存储系统判断预先存储有与数据文件的预设部分标识相同的数据文件标识时,接收云存储系统发送的数据重复响应,并运行拥有权证明协议,发送数据拥有权证明信息至云存储系统;当云存储系统判断客户端通过数据拥有权证明后,接收云存储系统发送的授权访问指令,以供客户端根据授权访问指令下载云存储系统内预先存储的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文;
[0124]第一存储模块18还用于:
[0125]在将其他数据块的收敛密钥密文以及N个数据块密文发送至云存储系统后,接收云存储系统发送的授权访问指令,以供客户端根据授权访问指令下载云存储系统内存储的N个数据块密文以及除第一数据块以外的其他数据块的收敛密钥密文。
[0126]另外,参见图6所示,图6为与本发明提供的云存储加密及去重复系统连接的云存储系统内的结构示意图。
[0127]云存储系统内包括元数据服务器、存储设备管理服务器、数据库服务器以及存储服务器,其中,用户上传至云存储系统的数据分布式的存储在各个存储服务器内。
[0128]本发明提供了一种云存储加密及去重复系统,将数据文件分为若干块后,先计算各个数据块的标识,并将预设部分标识发送至云存储系统进行重复检测,若数据文件未重复,则将通过收敛密钥对各个数据块进行分别加密,再对各个收敛密钥分别进行加密操作,其中,第一数据块的收敛密钥的加密密钥为云存储系统发送的公钥,其余数据块中,第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,1〈M<N;之后由客户端存储第一数据块的收敛密钥密文,由云存储系统存储其余数据块的收敛密钥密文以及全部数据块密文;若云存储系统判断数据文件重复,则仅生成第一数据块的收敛密钥并对其进行加密操作,将生成的第一数据块的收敛密钥密文进行存储。可见,首先本发明不仅能够实现数据文件的加密,也可以实现数据文件的去重复。
[0129]同时,数据文件分割成的若干个数据块密文及其收敛密钥密文是分布式的存储于云存储系统内的多个服务器中,对手想要窃取数据则需要攻陷云存储系统内的全部的服务器,难度极大;即使在概率极小的情况下,对手暂时攻陷了所有的服务器,获取到了云存储系统内存储的全部数据,但是由于云存储系统中存储的不是原始的收敛密钥,而是由数据块的私钥加密后的收敛密钥密文,在用户安全保存第一数据块的收敛密钥密文的情况下,对手无法获取第一数据块的收敛密钥密文则无法解密得到第一数据块的数据内容,也无法根据第一数据块的收敛密钥得到第一数据块的私钥,进而无法对后续的数据块的收敛密钥密文进行解密,故无法实现解密数据块密文的目的。即使对手以某种方式获取到了第一数据块的收敛密钥密文,由于对手无法通过数据拥有权证明,即无法欺骗云存储系统授权给没有数据文件的对手,因此,对手无法获得第一数据块的收敛密钥密文对应的公钥,故不能解密第一数据块的收敛密钥密文,可见,本发明大大提高了采用收敛加密及去重复时数据文件的安全性,尽可能避免了受到字典攻击时被破解的风险。
[0130]同时,本发明不仅能够实现基本的数据文件去重复,且由于同一份数据文件的收敛密钥密文相同,避免了随着用户数量的增加,收敛密钥密文的数量急剧上升的情形,缓解了云存储系统的存储负担;且在客户端,使用错位加密的方法加密收敛密钥,由前一个数据块的私钥加密后一个数据块的收敛密钥,形成密钥链,并将数据块的私钥整合到数据块的收敛密钥中,故尽管通过私钥对收敛密钥进行了加密,但是用户不必存储数据块的私钥,而是只需存储第一数据块的收敛密钥密文即可,大大节省了客户端的密钥存储空间。
[0131]需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0132]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种云存储加密及去重复方法,用于客户端,所述客户端与云存储系统通信连接,其特征在于,包括: 步骤SlOl:将数据文件分为预设大小的N个数据块并进行标号,其中,最后一个数据块的大小小于或等于所述预设大小; 步骤s 102:分别计算各个所述数据块的标识; 步骤sl03:将所述数据文件的预设部分标识上传至所述云存储系统进行重复检测;当所述云存储系统判断预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,接收所述云存储系统发送的第一公钥,所述第一公钥为对应于所述数据文件的哈希树的根节点,进入步骤sl09;当所述云存储系统判断未预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,发送所述数据文件的全部标识至所述云存储系统,并接收所述云存储系统发送的第二公钥,所述第二公钥为以所述数据文件的全部标识作为叶子节点构建的哈希树的根节点,进入步骤s 104; 步骤sl04:分别计算得到各个所述数据块的私钥; 步骤sl05:分别将各个所述数据块的私钥与其标识进行整合操作,得到各个所述数据块的收敛密、钥; 步骤sl06:对各个所述数据块进行数据块加密操作,得到各个所述数据块的数据块密文;每个所述数据块的加密密钥为自身的收敛密钥; 步骤sl07:对各个所述数据块的收敛密钥进行收敛密钥加密操作,得到各个所述数据块对应的收敛密钥密文;其中,所述第二公钥为第一数据块的收敛密钥的加密密钥,所述第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,KMSN; 步骤sl08:存储所述第一数据块的收敛密钥密文,将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统,供所述云存储系统将其分布式的存储于自身的若干个服务器内;以供所述客户端根据存储的所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件; 步骤sl09:计算所述第一数据块的私钥; 步骤sllO:将所述第一数据块的私钥与其标识进行整合操作,得到所述第一数据块的收敛密钥; 步骤sill:对所述第一数据块的收敛密钥进行收敛密钥加密操作,得到所述第一数据块的收敛密钥密文,所述第一数据块的收敛密钥的加密密钥为所述第一公钥; 步骤Si 12:存储所述第一数据块的收敛密钥密文,以供所述客户端根据所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件。2.根据权利要求1所述的方法,其特征在于,所述接收所述云存储系统发送的第一公钥之前还包括: 接收所述云存储系统发送的数据重复响应,并运行拥有权证明协议,发送数据拥有权证明信息至所述云存储系统; 当所述云存储系统判断所述客户端通过数据拥有权证明后,接收所述云存储系统发送的授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内预先存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文; 所述步骤sl08中,所述将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统后还包括: 接收所述云存储系统发送的所述授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文。3.根据权利要求1或2所述的方法,其特征在于,所述整合操作具体为: 循环异或操作。4.根据权利要求1或2所述的方法,其特征在于,所述数据块加密操作以及所述收敛密钥加密操作具体为: 米用AES算法进彳丁加密。5.根据权利要求1或2所述的方法,其特征在于,所述分别计算得到各个所述数据块的私钥的过程具体为: 分别采用SHA-1哈希算法来计算得到各个所述数据块的私钥。6.根据权利要求1或2所述的方法,其特征在于,所述分别计算各个所述数据块的标识的过程具体为: 分别采用SHA-256哈希算法来计算得到各个所述数据块的标识,其中,所述数据块的标识为所述数据块内容的哈希值。7.—种云存储加密及去重复系统,用于客户端,所述客户端与云存储系统通信连接,其特征在于,包括: 分块模块,用于将数据文件分为预设大小的N个数据块并进行标号,其中,最后一个数据块的大小小于或等于所述预设大小; 标识计算模块,用于分别计算各个所述数据块的标识; 重复检测模块,用于将所述数据文件的预设部分标识上传至所述云存储系统进行重复检测;当所述云存储系统判断预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,接收所述云存储系统发送的第一公钥,所述第一公钥为对应于所述数据文件的哈希树的根节点,触发单独私钥计算模块;当所述云存储系统判断未预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,发送所述数据文件的全部标识至所述云存储系统,并接收所述云存储系统发送的第二公钥,所述第二公钥为以所述数据文件的全部标识作为叶子节点构建的哈希树的根节点,触发整体私钥计算模块; 所述整体私钥计算模块,用于分别计算得到各个所述数据块的私钥; 整体收敛密钥计算模块,用于分别将各个所述数据块的私钥与其标识进行整合操作,得到各个所述数据块的收敛密钥; 数据块加密模块,用于对各个所述数据块进行数据块加密操作,得到各个所述数据块的数据块密文;每个所述数据块的加密密钥为自身的收敛密钥; 整体收敛密钥加密模块,用于对各个所述数据块的收敛密钥进行收敛密钥加密操作,得到各个所述数据块对应的收敛密钥密文;其中,所述第二公钥为第一数据块的收敛密钥的加密密钥,所述第M-1数据块的私钥为第M数据块的收敛密钥的加密密钥,I〈Mg N;触发存储丰吴块; 所述存储模块,用于受到所述整体收敛密钥加密模块触发时,存储所述第一数据块的收敛密钥密文,将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统,供所述云存储系统将其分布式的存储于自身的若干个服务器内;以供所述客户端根据存储的所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件;受到单独收敛密钥加密模块触发时,存储所述第一数据块的收敛密钥密文,以供所述客户端根据所述第一数据块的收敛密钥密文及其对应的公钥来对从所述云存储系统下载的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文进行解密操作,获取所述数据文件; 所述单独私钥计算模块,用于计算所述第一数据块的私钥; 单独收敛密钥计算模块,用于将所述第一数据块的私钥与其标识进行整合操作,得到所述第一数据块的收敛密钥; 所述单独收敛密钥加密模块,用于对所述第一数据块的收敛密钥进行所述收敛密钥加密操作,得到所述第一数据块的收敛密钥密文,所述第一数据块的收敛密钥的加密密钥为所述第一公钥;触发所述存储模块。8.根据权利要求7所述的系统,其特征在于,所述重复检测模块还用于: 当所述云存储系统判断预先存储有与所述数据文件的预设部分标识相同的数据文件标识时,接收所述云存储系统发送的数据重复响应,并运行拥有权证明协议,发送数据拥有权证明信息至所述云存储系统;当所述云存储系统判断所述客户端通过数据拥有权证明后,接收所述云存储系统发送的授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内预先存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文; 所述存储模块还用于: 在将其他所述数据块的收敛密钥密文以及N个所述数据块密文发送至所述云存储系统后,接收所述云存储系统发送的所述授权访问指令,以供所述客户端根据所述授权访问指令下载所述云存储系统内存储的N个所述数据块密文以及除所述第一数据块以外的其他所述数据块的收敛密钥密文。
【文档编号】H04L29/06GK105915332SQ201610523933
【公开日】2016年8月31日
【申请日】2016年7月4日
【发明人】刘竹松, 何喆
【申请人】广东工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1