本发明属于数据安全存储技术领域,尤其涉及一种加密文件秒传实现方法和系统。
背景技术:
传统的云存储产品以明文方式存储用户上传的文件/数据块,通常文件会被拆分成固定大小的块,通过权限管理维护用户账号和文件/数据块之间的映射及访问关系,如图1所示。当用户上传服务器上已存在的文件/数据块时,通过校验文件/数据块的特征值(通常采用hash)是否一致,即可识别服务端是否已存在相同的文件/数据块,若存在,只需要更新用户账号与实际文件/数据块间的映射关系即可,无需实际传输数据,不仅可以快速完成文件上传,提升用户体验,还可以避免相同数据在服务端存储多份,造成空间浪费。然而以明文方式保存用户数据,给用户带来隐私泄露风险,且服务端可以任意查看用户的文件。
目前,部分云存储产品采用加密的方式保存用户上传的文件,由于加密密钥是由用户产生的,服务端无法知道加密密钥,在服务端保存的是用户加密后的文件,保证了用户文件的安全性。上述加密云存储方案虽然保证了用户的隐私和数据的安全,但由于每个用户使用的密钥不同,导致不同用户上传的同一文件加密后的密文数据块也彼此不同,因而无法实现重复文件快速上传的功能。进一步导致以下问题:
(1)用户体验不好:无法实现已有文件秒传。
(2)存储空间浪费:多个用户上传的相同文件,会在服务端保存多份。
技术实现要素:
本发明针对传统的云存储产品存在的无法实现已有文件秒传,从而导致用户体验不好,多个用户上传的相同文件,会在服务端保存多份,造成资源浪费的问题,提出一种加密文件秒传实现方法和系统。
为了实现上述目的,本发明采用以下技术方案:
本发明一方面提出一种加密文件秒传实现方法,包括以下步骤:
步骤1、客户端a基于待上传的文件f分别计算出第一特征值t1和第二特征值t2;
步骤2、客户端a将第二特征值t2传输给服务端,以请求文件上传;
步骤3、服务端通过第二特征值t2在文件库中查找;
步骤4-1、若服务端查找到相同文件,则更改文件映射关系,使得客户端a拥有文件的访问权限;
步骤4-2、服务端通知客户端a,文件已上传,并将文件的唯一标识id和文件基本信息返回给客户端a;所述文件基本信息包括文件名称、文件格式、文件大小;
步骤4-3、客户端a使用自身公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件秒传过程。
进一步地,在上述步骤3之后,所述方法还包括:
步骤5-1、若服务端未查找到相同文件,则通知客户端a,不存在相同文件;
步骤5-2、客户端a使用第一特征值t1作为密钥种子,按照系统约定的密钥生成算法,生成密钥k;
步骤5-3、客户端a使用密钥k对文件f进行加密,得到加密后的密文e;
步骤5-4、客户端a将第二特征值t2与密文e一起上传给服务端进行保存;
步骤5-5、客户端a使用自身公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件上传过程。
进一步地,所述服务端为每个客户端用户建立文件列表,并负责保存文件与数据块间的映射关系;所述文件列表中保存文件的唯一标识id、特征值、文件基本信息以及被客户端的公钥加密后的密钥。
进一步地,所述第一特征值t1是采用hash、mac、md5算法中的任意一种算法对文件f运算得到的,所述第一特征值t1作为密钥种子,通过系统约定的密钥生成算法,生成密钥k。
进一步地,所述第二特征值t2是采用不同于第一特征值t1对应的算法对文件f运算得到。
进一步地,在所述步骤4-3之后,所述方法还包括:
客户端a向服务端发起文件下载请求,所述下载请求中包括文件唯一标识id;
服务端根据所述文件唯一标识id查找对应的文件f;
服务端将保存的密文数据块和文件基本信息、第一特征值t1的密文返回给客户端a;
客户端a使用自身私钥priva对第一特征值t1的密文解密,得出第一特征值t1;
客户端a使用第一特征值t1、基于系统约定的密钥生成算法,生成对称密钥k;
客户端a使用密钥k解密密文数据块,得到文件f的明文数据。
本发明另一方面提出一种加密文件秒传实现系统,包括:
特征值计算模块,用于客户端a基于待上传的文件f分别计算出第一特征值t1和第二特征值t2;
传输模块,用于客户端a将第二特征值t2传输给服务端,以请求文件上传;
第一文件查找模块,用于服务端通过第二特征值t2在文件库中查找;
映射关系更改模块,用于若服务端查找到相同文件,则更改文件映射关系,使得客户端a拥有文件的访问权限;
第一信息返回模块,用于服务端通知客户端a,文件已上传,并将文件的唯一标识id和文件基本信息返回给客户端a;
第一文件上传模块,用于客户端a使用自身公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件秒传过程。
进一步地,所述系统还包括:
通知模块,用于若服务端未查找到相同文件,则通知客户端a,不存在相同文件;
第一密钥生成模块,用于客户端a使用第一特征值t1作为密钥种子,按照系统约定的密钥生成算法,生成密钥k;
加密模块,用于客户端a使用密钥k对文件f进行加密,得到加密后的密文e;
密文上传模块,用于客户端a将第二特征值t2与密文e一起上传给服务端进行保存;
第二文件上传模块,用于客户端a使用自身公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件上传过程。
进一步地,所述系统还包括:
文件下载请求发起模块,用于客户端a向服务端发起文件下载请求,所述下载请求中包括文件唯一标识id;
第二文件查找模块,用于服务端根据所述文件唯一标识id查找对应的文件f;
第二信息返回模块,用于服务端将保存的密文数据块和文件基本信息、第一特征值t1的密文返回给客户端a;
第一解密模块,用于客户端a使用自身私钥priva对第一特征值t1的密文解密,得出第一特征值t1;
第二密钥生成模块,用于客户端a使用第一特征值t1、基于系统约定的密钥生成算法,生成对称密钥k;
第二解密模块,用于客户端a使用密钥k解密密文数据块,得到文件f的明文数据。
与现有技术相比,本发明具有的有益效果:
本发明采用两种不同的特征值算法,一种用于标识信息的唯一性,进行知识证明;另一种用于派生出加密密钥。本发明对应的客户端通过知识证明(第二特征值t2),向系统证明自己知道明文信息,进而从系统获取到密文数据块的共享权限;本发明采用文件明文相关的信息(第一特征值t1)派生得到加密密钥,实现在所有文件明文的拥有者之间,无需密钥交换即可共享服务端的文件密文信息。另外,本发明可应用于所有需要密文信息共享,又需要节省密文存储空间的场景中,实现了文件秒传的功能,用户体验感较佳。本发明的服务端对相同的文件只会保存一份,避免相同数据在服务端存储多份,造成空间浪费;同时由于服务端的数据是以密文方式进行存储的,进而可以有效保证用户的隐私和数据的安全。
附图说明
图1为一种云存储产品的框图;
图2为本发明实施例一种加密文件秒传实现方法中服务端进行数据云存储的流程示意图;
图3为本发明实施例一种加密文件秒传实现方法中客户端与服务端信息交互流程图。
具体实施方式
下面结合附图和具体的实施例对本发明做进一步的解释说明:
如图2、图3所示,本发明的一种加密文件秒传实现方法,所述方法包括以下步骤:
步骤1、客户端a基于待上传的文件f分别计算出第一特征值t1和第二特征值t2;
步骤2、客户端a将第二特征值t2传输给服务端,以请求文件上传;
步骤3、服务端通过第二特征值t2在文件库中查找;
步骤4-1、若服务端查找到相同文件,则更改文件映射关系,使得客户端a拥有文件的访问权限;
步骤4-2、服务端通知客户端a,文件已上传,并将文件的唯一标识id和文件基本信息返回给客户端a;
步骤4-3、客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件秒传过程。
值得说明的是,所述文件基本信息包括文件名称、文件格式、文件大小信息。
进一步地,在上述步骤3之后,所述方法还包括:
步骤5-1、若服务端未查找到相同文件,则通知客户端a,不存在相同文件;
步骤5-2、客户端a使用第一特征值t1作为密钥种子,按照系统约定的密钥生成算法,生成密钥k;
步骤5-3、客户端a使用密钥k对文件f进行加密,得到加密后的密文e;
步骤5-4、客户端a将第二特征值t2与密文e一起上传给服务端进行保存;
步骤5-5、客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件上传过程。
进一步地,所述服务端为每个客户端用户建立文件列表,并负责保存文件与数据块间的映射关系;所述文件列表中保存文件的唯一标识id、特征值、文件基本信息以及被客户端的公钥加密后的密钥。
进一步地,所述第一特征值t1是采用hash、mac、md5算法中的任意一种算法对文件f运算得到的,所述第一特征值t1作为密钥种子,通过系统约定的密钥生成算法,生成密钥k。
值得说明的是,要实现文件f的安全,必须由客户端对文件f的数据进行加密。要进行加密处理,必须有密钥,并且确保密钥的保密性。本发明采用明文数据(即待上传的文件f)的第一特征值t1作为密钥种子,通过系统约定的固定密钥生成算法,生成加密密钥k。所述第一特征值t1具有以下特性:
(1)第一特征值t1可采用hash、mac、md5等算法产生;
(2)由第一特征值t1无法反推出原始数据(即待上传的文件f),因此只有拥有明文数据的人,才能知道密钥种子,进而生成运算使用的密钥k;
(3)第一特征值t1仅在用户客户端加密运算时使用,无需暴露给服务端和其他用户,进一步提升了密钥的机密性。
进一步地,所述第二特征值t2是采用不同于第一特征值t1对应的算法对文件f运算得到。
值得说明的是,第二特征值t2的计算,采用不同于第一特征值的算法,例如第一特征值t1是采用md5算法,第二特征值t2是采用sha1算法,并确保第二特征值t2无法通过特征值反推出原始数据(即文件),同时第二特征值t2将会和文件f的密文一起上传给服务端进行保存。
进一步地,在所述步骤4-3之后,所述方法还包括:
客户端a向服务端发起文件下载请求,所述下载请求中包括文件唯一标识id;
服务端根据所述文件唯一标识id查找对应的文件f;
服务端将保存的密文数据块和文件基本信息、第一特征值t1的密文返回给客户端a;
客户端a使用私钥priva对第一特征值t1的密文解密,得出第一特征值t1;
客户端a使用第一特征值t1、基于系统约定的密钥生成算法,生成对称密钥k;
客户端a使用密钥k解密密文数据块,得到文件f的明文数据。
在上述实施例的基础上,本发明还公开一种加密文件秒传实现系统,包括:
特征值计算模块,用于客户端a基于待上传的文件f分别计算出第一特征值t1和第二特征值t2;
传输模块,用于客户端a将第二特征值t2传输给服务端,以请求文件上传;
第一文件查找模块,用于服务端通过第二特征值t2在文件库中查找;
映射关系更改模块,用于若服务端查找到相同文件,则更改文件映射关系,使得客户端a拥有文件的访问权限;
第一信息返回模块,用于服务端通知客户端a,文件已上传,并将文件的唯一标识id和文件基本信息返回给客户端a;
第一文件上传模块,用于客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件秒传过程。
进一步地,所述系统还包括:
通知模块,用于若服务端未查找到相同文件,则通知客户端a,不存在相同文件;
第一密钥生成模块,用于客户端a使用第一特征值t1作为密钥种子,按照系统约定的密钥生成算法,生成密钥k;
加密模块,用于客户端a使用密钥k对文件f进行加密,得到加密后的密文e;
密文上传模块,用于客户端a将第二特征值t2与密文e一起上传给服务端进行保存;
第二文件上传模块,用于客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件上传过程。
进一步地,所述系统还包括:
文件下载请求发起模块,用于客户端a向服务端发起文件下载请求,所述下载请求中包括文件唯一标识id;
第二文件查找模块,用于服务端根据所述文件唯一标识id查找对应的文件f;
第二信息返回模块,用于服务端将保存的密文数据块和文件基本信息、第一特征值t1的密文返回给客户端a;
第一解密模块,用于客户端a使用私钥priva对第一特征值t1的密文解密,得出第一特征值t1;
第二密钥生成模块,用于客户端a使用第一特征值t1、基于系统约定的密钥生成算法,生成对称密钥k;
第二解密模块,用于客户端a使用密钥k解密密文数据块,得到文件f的明文数据。
综上,本发明采用两种不同的特征值算法,一种用于标识信息的唯一性,进行知识证明;另一种用于派生出加密密钥。本发明对应的客户端通过知识证明(第二特征值t2),向系统证明自己知道明文信息,进而从系统获取到密文数据块的共享权限;本发明采用文件明文相关的信息(第一特征值t1)派生得到加密密钥,实现在所有文件明文的拥有者之间,无需密钥交换即可共享服务端的文件密文信息。另外,本发明可应用与所有需要密文信息共享,又需要节省密文存储空间的场景中,实现了文件秒传的功能,用户体验感较佳。本发明的服务端只会对相同的文件只会保存一份,避免相同数据在服务端存储多份,造成空间浪费;同时由于服务端的数据是以密文方式进行存储的,进而可以有效保证了用户的隐私和数据的安全。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
1.一种加密文件秒传实现方法,其特征在于,所述方法包括以下步骤:
步骤1、客户端a基于待上传的文件f分别计算出第一特征值t1和第二特征值t2;
步骤2、客户端a将第二特征值t2传输给服务端,以请求文件上传;
步骤3、服务端通过第二特征值t2在文件库中查找;
步骤4-1、若服务端查找到相同文件,则更改文件映射关系,使得客户端a拥有文件的访问权限;
步骤4-2、服务端通知客户端a,文件已上传,并将文件的唯一标识id和文件基本信息返回给客户端a;
步骤4-3、客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件秒传过程。
2.根据权利要求1所述的一种加密文件秒传实现方法,其特征在于,在上述步骤3之后,所述方法还包括:
步骤5-1、若服务端未查找到相同文件,则通知客户端a,不存在相同文件;
步骤5-2、客户端a使用第一特征值t1作为密钥种子,按照系统约定的密钥生成算法,生成密钥k;
步骤5-3、客户端a使用密钥k对文件f进行加密,得到加密后的密文e;
步骤5-4、客户端a将第二特征值t2与密文e一起上传给服务端进行保存;
步骤5-5、客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件上传过程。
3.根据权利要求1所述的一种加密文件秒传实现方法,其特征在于,所述服务端为每个客户端用户建立文件列表,并负责保存文件与数据块间的映射关系;所述文件列表中保存文件的唯一标识id、特征值、文件基本信息以及被客户端的公钥加密后的密钥。
4.根据权利要求1或2所述的一种加密文件秒传实现方法,其特征在于,所述第一特征值t1是采用hash、mac、md5算法中的任意一种算法对文件f运算得到的,所述第一特征值t1作为密钥种子,通过系统约定的密钥生成算法,生成密钥k。
5.根据权利要求4所述的一种加密文件秒传实现方法,其特征在于,所述第二特征值t2是采用不同于第一特征值t1对应的算法对文件f运算得到。
6.根据权利要求1所述的一种加密文件秒传实现方法,其特征在于,在所述步骤4-3之后,所述方法还包括:
客户端a向服务端发起文件下载请求,所述下载请求中包括文件唯一标识id;
服务端根据所述文件唯一标识id查找对应的文件f;
服务端将保存的密文数据块和文件基本信息、第一特征值t1的密文返回给客户端a;
客户端a使用私钥priva对第一特征值t1的密文解密,得出第一特征值t1;
客户端a使用第一特征值t1、基于系统约定的密钥生成算法,生成对称密钥k;
客户端a使用密钥k解密密文数据块,得到文件f的明文数据。
7.一种加密文件秒传实现系统,其特征在于,包括:
特征值计算模块,用于客户端a基于待上传的文件f分别计算出第一特征值t1和第二特征值t2;
传输模块,用于客户端a将第二特征值t2传输给服务端,以请求文件上传;
第一文件查找模块,用于服务端通过第二特征值t2在文件库中查找;
映射关系更改模块,用于若服务端查找到相同文件,则更改文件映射关系,使得客户端a拥有文件的访问权限;
第一信息返回模块,用于服务端通知客户端a,文件已上传,并将文件的唯一标识id和文件基本信息返回给客户端a;
第一文件上传模块,用于客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件秒传过程。
8.根据权利要求7所述的一种加密文件秒传实现系统,其特征在于,所述系统还包括:
通知模块,用于若服务端未查找到相同文件,则通知客户端a,不存在相同文件;
第一密钥生成模块,用于客户端a使用第一特征值t1作为密钥种子,按照系统约定的密钥生成算法,生成密钥k;
加密模块,用于客户端a使用密钥k对文件f进行加密,得到加密后的密文e;
密文上传模块,用于客户端a将第二特征值t2与密文e一起上传给服务端进行保存;
第二文件上传模块,用于客户端a使用公钥puba对第一特征值t1加密,得到第一特征值t1的密文,然后将第一特征值t1的密文、文件的唯一标识id以及文件基本信息一起发送给服务端进行保存,完成文件上传过程。
9.根据权利要求7所述的一种加密文件秒传实现系统,其特征在于,所述系统还包括:
文件下载请求发起模块,用于客户端a向服务端发起文件下载请求,所述下载请求中包括文件唯一标识id;
第二文件查找模块,用于服务端根据所述文件唯一标识id查找对应的文件f;
第二信息返回模块,用于服务端将保存的密文数据块和文件基本信息、第一特征值t1的密文返回给客户端a;
第一解密模块,用于客户端a使用私钥priva对第一特征值t1的密文解密,得出第一特征值t1;
第二密钥生成模块,用于客户端a使用第一特征值t1、基于系统约定的密钥生成算法,生成对称密钥k;
第二解密模块,用于客户端a使用密钥k解密密文数据块,得到文件f的明文数据。
技术总结