CN103812927A - 一种存储方法 - Google Patents
一种存储方法 Download PDFInfo
- Publication number
- CN103812927A CN103812927A CN201310567166.7A CN201310567166A CN103812927A CN 103812927 A CN103812927 A CN 103812927A CN 201310567166 A CN201310567166 A CN 201310567166A CN 103812927 A CN103812927 A CN 103812927A
- Authority
- CN
- China
- Prior art keywords
- key
- data
- user
- server
- dks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明公开了一种存储方法、服务器和客户端。其中该方法包括:当用户A上传服务器未存储的数据X时,基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;利用密钥ekS加密数据X获得密文Y,并上传密文Y至服务器;使用密钥ekA加密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器。利用本发明实施例提供的技术方案,既可以避免相同数据文件的重复存储,又要保证任意其他用户包括云存储服务商都无法访问到明文数据。
Description
技术领域
本发明涉及云存储技术,特别涉及一种存储方法。
背景技术
云存储已经越来越成为一种趋势,所谓云存储是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。
对于云存储服务提供商而言,为了优化存储空间的使用,当海量用户上传海量数据时,通过事实上不接受相同文件的上传。比如甲已经存储了B文件,要是乙存储的文件在上传扫描的过程中若被发现也是B文件,则事实上不会被上传,而是简单的将已有的那份B文件加入到乙的账户内。
在现有技术中,为了保证将相同的文件加入到另一个用户的账户后,另一个用户也能正常访问,通用的做法是:用对称密钥加密文件,将该密钥长期存储在服务器中;如果用非对称密钥加密,那服务商必然也需要知道私钥,否则其无法将数据文件的访问权限增加给另一个用户。即,由于云存储服务商需要将文件访问权限授权给另一个用户(具有相同文档的用户),服务商必需都有能力识别该文件(识别该文件的明文,或拥有该文件的解密密钥),这样在技术层面上,服务商(内部员工)实际上可以获取用户存储的明文的,约束服务商的只有道德了。比如目前声称存储安全的Dropbox,其员工就可以看到用户存储的文件内容(即使是加密存储,因为需要提供给另一个用户,实际上,服务商了解加密规则以及解密密钥)。
为此,需要一种新的技术,既可以避免相同文档的重复存储,又要保证任意其他用户包括云存储服务商都无法访问到明文数据。
发明内容
有鉴于此,本发明的主要目的在于提供一种存储方法,既可以避免相同数据文件的重复存储,又要保证任意其他用户包括云存储服务商都无法访问到明文数据。
为达到上述目的,本发明的技术方案具体是这样实现的:
利用本发明实施例提供的技术方案,相同的数据文件不会被重复存储,只是将存储密钥授权给拥有同样数据文件第三方。基于明文计算出加密和解密密钥,再利用加密密钥加密明文存储在服务器端;这样,当另一个用户上传同样文档时,并不需要真的上传文档,而只需要根据自己拥有的明文计算出解密密钥,利用个人加密密钥加密解密密钥进而获得个人密钥即可,保证了后续可以利用个人解密密钥对数据进行读取。整个过程,既保证了只有拥有相同数据文件的第三方才能真正访问数据,又保证整个过程中既使是存储服务提供商也无法获得存储密钥。
附图说明
图1为本发明实施例提供的一种存储方法的流程图。
图2为本发明实施例提供的一种存储方法的流程图。
图3为本发明实施例提供的一种存储方法的流程图。
图4为本发明实施例提供的一种存储方法的流程图。
图5为本发明实施例提供的一种存储方法的流程图。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图1为本发明实施例提供的一种存储方法的流程图。在该实施例中,利用存储密钥对数据文件进行加密;同时利用两种不同加密方式对存储密钥进行加密形成个人密钥(personal key)和数据密钥(data key);其中,以数据文件所属用户的密钥为解密密钥对个人密钥进行解密后可以获得存储密钥;以加密前的数据文件为解密密钥对数据密钥进行解密后可以获得存储密钥;存储加密后的数据文件、个人密钥和数据密钥。该方法同时包括:
步骤101:在存储新用户的数据文件前,判断已存储数据文件中是否存在相同的数据文件;如果判断结果为是,则执行步骤102;否则,执行步骤103。
步骤102:不重复上传存储该数据文件;利用该数据文件对数据密钥进行解密获得存储密钥,再利用新用户的密钥对该存储密钥进行加密形成所述新用户的个人密钥。到此流程结束。
步骤103:利用存储密钥对数据文件进行加密存储;同时利用两种不同加密方式对存储密钥进行加密形成个人密钥和数据密钥;存储加密后的数据文件、个人密钥和数据密钥。到此流程结束。
当一新用户上传数据文件前,服务器首先会判断云端是否已经存在与待上传数据文件相同的数据文件。如果已经存在,则先利用用户提供的数据文件解密数据密钥得出存储密钥,再利用用户的密钥对存储密钥加密得到个人密钥。后续访问时,用户只需提供自己的密钥对个人密钥进行解密就能得到存储密钥,进一步利用该存储密钥获得该数据明文。这样,这样既实现了防止数据文件在云端的重复存储,也能保证云储存服务商自己(内部员工)不能获取数据内容的明文。
本领域技术人员可以理解,在某些情况下,同一用户可能会先后上传同一数据文件,那么在该用户期待再次上传已上传数据文件时,服务器端如果判断该数据文件来源与同一用户,将不执行任何操作。
在本发明一实施例中,服务器根据文件的Hash值来鉴别重复文件,即如果两份文件具有相同的Hash值则认为是相同的数据文件。因此,服务器端会保存其所有文件的Hash值;同时,在存储数据文件前,会计算待存储数据文件的Hash值,以供服务器判断是否已经存在相同的数据文件。当然,本领域技术人员也可以用其他方式来判断重复文件,本发明并不予以限定。
在本发明一实施例中,所述新用户侧存在一客户端,则在服务器端在判断已存储的数据文件存在相同的数据文件后,将数据密钥发送给客户端;客户端以加密前的数据文件为解密密钥对数据密钥进行解密,得到存储密钥;同时利用所述新用户的密钥对存储密钥进行加密形成新用户的个人密钥,将新用户的个人密钥发送给服务器保存。图2给出了该实施例的一个具体场景。
图2所示是本发明实施例提供的一种存储方法。在本实施例中,利用Hash来鉴别重复文件;利用用户的加密密钥加密存储密钥得到用户个人密钥,利用用户的解密密钥解密个人密钥得到存储密钥;这里,用户的加密密钥可以是用户的公钥,用户的解密密钥可以是用户的私钥。同时,利用数据文件本身对存储密钥进行对称加密得到数据密钥。如图2所示,具体包括:
步骤201:在上传一新的数据文件之前,客户端计算该数据文件的Hash值,将此Hash上传给服务器端。
步骤202:服务器端判断已存储的数据文件中是否具有相同Hash值的数据文件;如果存在,转向步骤203;如果不存在,转向步骤206。
步骤203:服务器端将其存储的与待上传数据文件相同数据文件的数据密钥发送给客户端。
步骤204:客户端利用未加密数据文件本身完成对数据密钥的解密,并得到存储密码;同时利用用户的加密密钥对该存储密钥进行加密,得到该用户的个人密钥,将个人密钥发送给服务器。
步骤205:服务器保存该用户的个人密钥;客户端无需实际上传该数据文件。到此,整个流程结束。
步骤206:客户端利用存储密钥对上传的数据文件进行加密,并将加密后的数据文件上传到服务器端。
步骤207:客户端使用用户的加密密钥对存储密钥进行加密,得到该用户的个人密钥;以及利用非加密的数据文件对存储密钥进行加密,得到数据密钥,将个人密钥、数据密钥、以及该数据文件的Hash上传给服务器保存;。其中,记录该数据文件的Hash值的目的是以供下次对比。到此,整个流程结束。后续,当用户希望访问他/她所拥有的数据文件时,利用其自身的解密密钥解密其个人密钥以获得存储密钥,然后利用存储密钥解密加密后的数据文件以获得明文文件。
利用上述技术方案,不仅保证了相同的数据文件无需重复存储,甚至也保证了相同的数据文件无需重复上传。同时只有真正拥有明文数据文件的用户才可以获取到存储密钥,对该数据文件进行读取。存储服务提供商和其他用户均无法接触到存储密钥,使得数据安全相对于现有技术来说,得到了进一步的保障。
在本发明一实施例中,客户端从服务器端下载加密的数据文件以及个人密钥,解密个人密钥以获得存储密钥,利用存储密钥解密加密的数据文件获取明文数据文件。本发明实施例保证了服务器端无法解除到明文数据文件或存储密钥。在本发明另一实施例中,服务器解密个人密钥以获得存储密钥,利用存储密钥解密加密的数据文件获取明文数据文件,删除存储密钥,并在数据文件使用结束后删除明文数据文件。不仅可以利用明文数据文件加密存储密钥以获得数据密钥或解密数据密钥以获得存储密钥,还可以利用根据明文数据文件生成的密钥来加密存储密钥以获得数据密钥或解密数据密钥以获得存储密钥。
在本发明另一实施例中,当服务器端在判断已存储的数据文件存在相同的数据文件后,告知客户端,客户端根据数据文件本身以及预定义算法计算出对数据密钥进行解密的密钥,将解密密钥发送给服务器;服务器根据所述客户端上传的解密密钥,解密数据密钥得到存储密钥;再利用所述新用户的密钥对存储密钥进行加密形成所述新用户的个人密钥。图3给出了这种实施例的具体场景。
图3所示是本发明另一实施例提供的一种存储方法。在该实施例中,根据数据文件本身和预定义的算法计算出用于生成数据密钥的对称密钥。在本发明一实施例中,还可以是客户端与服务器均设置了同样的密钥生成算法。如图3所示,具体包括:
步骤301:在上传新的数据文件之前,客户端计算待上传数据文件的Hash值,将此Hash上传给服务器端。
步骤302:服务器端判断已存储的数据文件中是否具有相同Hash值的数据文件,转向步骤303;如果不存在,转向步骤306。
步骤303:客户端根据数据文件本身和预定义的算法计算出用于生成数据密钥的对称密钥;将该对称密钥上传给服务器,以用于加密生成数据密钥或解密数据密钥。
步骤304:服务器根据客户端上传的对称密钥,解密数据密钥,得出存储密钥;再用该用户的加密密钥加密存储密钥,得到该用户的个人密钥;
步骤305:服务器保存该用户的个人密钥;客户端无需实际上传该数据文件。到此,整个流程结束。
步骤306:客户端利用存储密钥对上传的数据文件进行加密,将并加密后的数据文件上传给服务器;根据数据文件本身和预定义的算法计算出用于解密数据密钥的对称密钥,将对称密钥,用户的加密密钥以及数据文件的HASH值上传给服务器。
步骤307:服务器利用该用户的加密密钥对存储密钥进行加密,得到该用户的个人密钥;以及利用对称密钥对存储密钥进行加密,得到数据密钥。到此,整个流程结束。
利用该实施例,同样保证了相同的数据文件无需重复存储,也保证了相同的数据文件无需重复上传。在该实施例中,存储服务提供商可以短暂获得存储密钥,但相比现有技术存储密钥长期存放在服务器端来说,安全性已经得到了极大的提高。
在本发明一实施例中,根据数据文件本身计算出用于生成数据密钥的对称密钥的算法可以是:采用抽取数据文件特定位置数据的方式计算出用于生成数据密钥的对称密钥,或采用计算数据文件特殊hash值的方式,计算出用于生成数据密钥的对称密钥。
在本发明另一实施例中,用户端并没有专门的客户端,如用户通过web浏览器方式上传文档,在这种情况,用户侧很难计算数据文件的hash值并将该值传递给服务器端。为此,服务器初始需要短暂获取数据文件的明文,后续再按照上述实施例所示的方式:计算Hash值,判断重复文件,用数据文件本身解密数据密钥得到存储密钥,然后再用用户密钥加密存储密钥得到个人密钥。一旦该步骤执行完毕,服务器端需删除明文和存储密钥。这种方式虽然不能减少重复上传,但依然可以减少重复存储。
在以上所有实施例中,存储密钥可以是随机生成密钥,这样可以保证密钥永远是新的同时他人无法知晓。
在以上实施例中,仅利用一个存储密钥来加密待上传的数据文件或解密加密后的数据文件以获得数据明文。在本发明另一实施例中,可以利用一存储加密密钥来加密待上传的数据文件获得数据密文,相应地,利用一存储解密密钥来解密加密后的数据文件以获得数据明文,并且加密密钥和解密密钥不同。在这种情况,通过利用不同的方式加密存储解密密钥以获得数据密钥和个人密钥。
用于加密存储密钥以获得数据密钥的密钥和/或用于解密数据密钥以获得存储密钥的密钥与待上传的数据文件相关。在上述实施例中,该密钥可以是待上传数据文件本身,或基于待上传数据文件以及预定义算法来决定。同样,在某一实施例中,也可以根据待上传数据文件以及其他数据来确定。比如,可以通过计算待上传数据文件与相关用户共享数据的联合的HASH值,将该HASH值作为密钥。通常来说,如果不利用明文数据文件,则很难得到用于解密数据密钥以获得存储密钥的密钥。
在本发明一实施例中,用于加密存储密钥以获得数据密钥的密钥和用于解密数据密钥以获得存储密钥的密钥不同。该加解密算法可以是对称算法,也可以是非对称算法。比如,可以利用不对非对称密钥对取代图3所示实施例中的对称密钥。
上述实施例中的任何密钥,包括用于加密数据的密钥和/或用于解密数据的密钥,用于加密生成个人密钥的密钥和/或用于解密个人密钥的密钥,用于加密生成数据密钥的密钥和/或用于解密数据密钥的密钥,可以是不对称的公/私钥对,也可以是对称密钥对。
在以上实施例中,每个加密或解密步骤即可以由服务器来执行,也可以有客户端来执行。比如,如果某步骤描述由服务器来执行加解密,实质性,本领域技术人员也可以将其替换为客户端来执行,反之亦然。举例说明,步骤206也可以是:客户端上传未加密数据到服务器端,服务器端使用存储密钥对数据文件进行加密。又比如步骤303和步骤304可以是:“步骤303,客户端基于待上传的数据文件和预定义算法计算对称密钥;步骤304,客户端利用对称密钥解密数据密钥以获得存储密钥,利用用户的加密密钥加密存储密钥得到用户的个人密钥,将个人密钥发送到服务器”。如果在某实施例中,服务器端短暂接触到明文数据文件或存储密钥,那么在使用后立即删除。本领域技术人员同时可以理解,由客户端来执行所有与明文数据文件或存储密钥相关的操作,其安全性将更高。
在本发明一实施例中,用户A具有加密密钥ekA和相应的解密密钥,用户B具有加密密钥ekB和相应的解密密钥dkB。当用户A上传未被存储过的数据X时,该方法包括如下步骤:
步骤401:用户A侧的客户端计算数据X的HASH值hX,将该HASH值hX发给服务器端;
步骤402:服务器查询其所存储的所有数据的HASH值,并确认其存储的数据中没有任何一个数据的HASH值为hX;
步骤403:客户端使用存储加密密钥ekS加密数据X,以获得加密数据Y,并将数据Y发送到服务器;
步骤404:客户端基于数据X和预定义算法计算加密密钥ekX,利用密钥ekX加密与ekS对应的存储解密密钥dkS得到数据密钥kX,将密钥kX发送到服务器;
步骤405:客户端使用密钥ekA加密密钥dkS以获得用户A的个人密钥kA,将密钥kA发送到服务器;
步骤406:服务器保存HASH值hX、数据Y、密钥kX以及密钥kA;
在某一实施例中,步骤403至步骤405也可以是:
步骤403:客户端上传数据X到服务器;
步骤404:服务器利用存储加密密钥ekS加密数据X以获得加密数据Y,基于数据X和预定义算法计算加密密钥ekX,利用密钥ekX加密与密钥ekS对应的解密密钥dkS以获得数据密钥kX,使用密钥ekA加密密钥dkS获得用户A的个人密钥kA;
步骤405:服务器删除了数据X和密钥dkS。
当用户B期望上传一个服务端已经存储过的数据X时,该方法进一步包括:
步骤501:位于用户B侧的客户端计算数据X的HASH值hX,将该HASH值hX发给服务器端;
步骤502:服务器查询其所存储的所有数据的HASH值,并确认其存储的数据中包括有HASH值为hX的数据文件;
步骤503:服务器将数据X的数据密钥kX发送到客户端;
步骤504:基于客户端侧的数据X以及预定义的算法,客户端计算解密密钥dkX,利用密钥dkX解密密钥kX以获取密钥dkS,利用用户B的个人密钥ekB加密dkS以获取用户B的个人密钥KB,将密钥kB发送到服务器端;
步骤505:服务器端保存密钥kB。
当后续用户A访问数据X时,该方法进一步包括:
步骤601:服务器发送密文数据Y以及用户A的个人密钥发送到用户A侧的客户端;
步骤602:客户端使用用户A的解密密钥dkA,解密密钥kA获得密钥dkS;
步骤603:客户端使用密钥dkS解密密文数据Y,获得明文数据X。
在本发明一实施例中,密钥ekA和dkA可以相同或不同,密钥ekB和dkB可以相同或不同,密钥ekS和dkS可以相同或不同,密钥ekX和dkX可以相同或不同。密钥eKS和dkS可以是随机生成的密钥。
在本发明一实施例中,密钥ekA、dkA、ekB和dkB可存储在客户端或服务器端。在本发明一实施例中,ekA及ekB为公钥,在客户端和服务器端各存了一份,而dkA和dkB为私钥,存储在客户端。
在上述描述中,虽然提到了用户A侧的客户端以及用户B侧的客户端,且在描述中两者具有不同的功能,但本领域技术人员可以理解,在具体实现中,某一个客户端可以同时具有两者的功能。
在本发明一实施例中,还提供了一种存储系统,该系统包括服务器;其中,服务器端包括:
第一加密模块,用于利用存储密钥对数据文件进行加密;以及利用两种不同加密方式对存储密钥进行加密形成个人密钥和数据密钥;其中,以数据文件所属用户的密钥为解密密钥对个人密钥进行解密后可以获得存储密钥;以加密前的数据文件为解密密钥对数据密钥进行解密后可以获得存储密钥;
存储模块,用于存储加密后的数据文件、个人密钥和数据密钥;
判断模块,用于在存储用户的数据文件前,判断已存储数据文件中是否存在相同的数据文件;如果已存储的数据文件中不存在与待上传文档相同的数据文件,则通知第一加密模块;否则通知密钥授权模块;
密钥授权模块,用于在判断模块判断的结果为是时,利用该数据文件对数据密钥进行解密获得存储密钥,再利用用户的密钥对该存储密钥进行加密形成所述用户的个人密钥。
本发明一实施例还提供了一个服务器,该服务器包括第一加密模块、存储模块、密钥授权模块。在本发明一实施例中,该系统还进一步包括客户端,其中该客户端包括:
解密模块,用于接收来自服务器发送的数据密钥;以加密前的数据文件为解密密钥对数据密钥进行解密,得到存储密钥;
第二加密模块,用于利用所述用户的密钥对存储密钥进行加密形成所述用户的个人密钥,将所述用户的个人密钥发送给服务器;
在这种情况下,服务器端的密钥授权模块包括:
发送子模块,用于在判断模块判断的结果为是时,将数据密钥发送给客户端;
接收子模块,用于接收到来自客户端的所述用户的个人密钥,将其发送给保存模块保存。
在本发明一实施例中,服务器端进一步包括删除模块,用于在使用完未加密数据和存储密钥后,实时删除该未加密数据和存储密钥。
在本发明一实施例中,第一加密模块位于客户端。
在本发明一实施例中,第一加密模块还进一步用于在利用存储密钥加密之前,生成随机的存储密钥。
在本发明另一实施例中,该客户端包括:
密钥生成模块,用于在判断模块判断的结果为是时,根据数据文件本身以及预定义算法计算出的对数据密钥进行解密的密钥;将该密钥发送给服务器。
此时,服务器端的密钥授权模块包括:
接收子模块,用于接收来自客户端根据数据文件本身以及预定义算法计算出的对数据密钥进行解密的密钥;
加解密子模块,用于根据所述客户端上传的解密密钥,解密数据密钥得到存储密钥;再利用所述新用户的密钥对存储密钥进行加密形成所述新用户的个人密钥。
在本发明另一实施例中,以上客户端还可以进一步包括:
Hash值计算模块,用于计算新用户的数据文件的Hash值,将此Hash上传给服务器,以供服务器判断模块判断已存储数据文件中是否存在具有相同Hash值的数据文件。
以下以两个具体的实施例来说明本发明实施例所描述的存储系统的结果示意图。
在本发明一实施例中,该系统包括客户端和服务器端两部分。其中,客户端由Hash值计算模块、解密模块、第二加密模块构成;服务器端由第一加密模块、存储模块、判断模块、密钥授权模块构成,其中密钥授权模块由发送子模块和接收子模块构成。
具体各模块及子模块的作用和功能可以参考以上实施例描述。
本发明另一实施例中,用户侧并没有专用的客户端,则以上实施例中所有模块可均位于服务器端。
在本发明另一实施例中,该系统包括客户端和服务器端两部分。其中,客户端由Hash值计算模块、密钥生成模块构成;服务器端由第一加密模块、存储模块、判断模块、密钥授权模块构成,其中密钥授权模块包括接收子模块、加解密子模块。
具体各模块及子模块的作用和功能可以参考以上实施例描述。
本发明另一实施例中,用户侧并没有专用的客户端,则以上实施例中所有模块可均位于服务器端。
本发明实施例还提供了一种存储装置,该装置即为上述实施例描述的服务器。
本发明实施例还提供了一种存储客户端,包括:
第一模块,用于利用存储加密密钥ekS对数据文件X进行加密,获得密文数据Y;
第二模块,用于利用用户A的加密密钥ekA加密与ekS对应的解密密钥dkS,获得用户A的个人密钥kA;以及利用与X相关的加密密钥ekX加密dkS,获得X的数据密钥kX;
第三模块,用于将Y、kA以及kX发送到服务器端存储;
该客户端进一步包括:
第四模块,用于当具有加密密钥ekB以及相应的解密密钥dkB的用户B期望再一次存储数据X时,基于X计算与ekX对应的解密密钥dkX;利用dkX解密kX获得dkS;利用ekB加密dkS获取用户B的个人密钥kB;
第五模块,用于将kB发送到服务器存储。
在本发明一实施例中,该客户端进一步包括:
第六模块,用于当用户A访问X时,利用dkA解密kA获取dkS,利用dkS解密Y获得X。
本领域技术人员可以理解,虽然在上述实施例的描述中,该客户端同时处理了用户A和用户B上传数据的请求,实际上当该客户端位于某一个用户侧,如用户A侧时,第四模块和第五模块的作用又可被类比描述为:
第四模块,用于当用户A期望再一次存储服务器端已存储的数据X’时(此时服务器端已存储有数据X‘对应的kX’),基于X’计算与ekX’对应的解密密钥dkX’;利用dkX’解密数据X’的kX’获得dkS’;利用ekA加密dkS’获取用户A对应数据X‘的个人密钥kA’;第五模块,用于将kA’发送到服务器存储。
本发明一实施例还提供了一种存储系统,包括:
第七模块,用于利用存储密钥对数据文件进行加密;
第八模块,用于利用两种不同加密方式对存储密钥进行加密形成个人密钥和数据密钥;其中,以数据文件所属用户的密钥为解密密钥对个人密钥进行解密后可以获得存储密钥;以加密前的数据文件为解密密钥对数据密钥进行解密后可以获得存储密钥;
第九模块,用于存储加密后的数据文件、个人密钥和数据密钥;
第十模块,用于当用户待上传的数据文件与已存储的数据文件相同时,利用所述用户待上传的加密前的数据文件对已存储的相同数据文件的数据密钥进行解密获得存储密钥,再利用所述用户的密钥对该存储密钥进行加密形成所述用户的个人密钥。
在本发明一实施例中,所述第七模块、第八模块、第九模块位于客户端,所述第九模块位于服务器端。其中,所述客户端进一步包括:
第十一模块,用于当所述用户访问自己的数据文件时,接收来自服务器的所述用户的个人密钥,以所述用户的密钥对其个人密钥进行解密获得存储密钥,利用存储密钥对加密后的数据文件进行解密获得数据文件。
在本发明一实施例中,所述第七模块位于客户端,所述第八模块、第九模块、第十模块位于服务器端。其中,所述客户端进一步包括:
第十二模块,用于利用根据数据文件本身以及预定义算法计算出的对存储密钥进行加密形成数据密钥的加密密钥;将所述加密密钥、以及所述用户的密钥发送给服务器端;
此时,所述第八模块用于利用所述加密密钥以及所述用户的密钥对存储密钥分别进行加密形成个人密钥和数据密钥。
其中,所述第十模块包括:
第一子模块,用于接收来自客户端根据数据文件本身以及预定义算法计算出的对数据密钥进行解密的密钥;
第二子模块,根据所述客户端上传的解密密钥,解密数据密钥得到存储密钥;再利用所述用户的密钥对存储密钥进行加密形成所述用户的个人密钥。
在本发明另一实施例中,所述第七模块、第八模块、第九模块、第十模块位于服务器端。
在本发明一实施例中,该服务器进一步包括:
第十二模块,用于判断用户待上传的数据文件与已存储的数据文件相同。
在本发明一实施例中,可以基于待上传数据来计算存储密钥ekS,在这种情况下,可以不需要ekX、dkX和kX。
在本发明实施例中,用户A具有加密密钥ekA和对应的解密密钥dkA,用户B具有加密密钥ekB和对应的解密密钥dkB。当用户上传在未被云端存储的数据X时,该方法如图4所示包括:
步骤701:用户A端的客户端计算数据X的HASH值hX,并上传HASH值hX至服务器端;
步骤702:服务器端检索所有存储数据的HASH值,并判定云端不存在与数据X具有相同HASH值hX的数据;
步骤703:客户端基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;
步骤704:客户端利用密钥ekS加密数据X获得密文Y,并上传密文Y至服务器;
步骤705:客户端使用密钥ekA加密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器。
服务器存在HASH值hX、密文Y以及密钥kA。
当用户B再次上传已经被用户A上传过的数据X时,如图5所示,该方法进一步包括:
步骤801:用户B侧的客户端计算数据X的HASH值hX,并上传HASH值hX至服务器端;
步骤802:服务器端检索所有存储数据的HASH值,发现云端已经存在与数据X具有相同HASH值hX的数据;
步骤803:用户B侧的客户端基于数据X和与用户A端相同的预定义的算法计算存储解密密钥dkS;
步骤804:用户B侧的客户端利用用户B的密钥ekB加密密钥dkS获得用户B的个人密钥kB,并将密钥kB上传至服务器。
服务器存储密钥kB。
由于数据X并不是随机的,所以用于生成存储加密密钥和解密密钥的预定义算法就需要保证生成的密钥尽可能的具有随机性。在本发明一实施例中,该预定义算法可以是:计算数据X和一个预定义字符串组合的HASH值,或者,利用一个预定义字符串加密数据X,然后计算加密后密文的HASH值。
当用户A或者用户B希望访问数据X时,利用dkA或dkB分别解密kA或kB以获得dkS,然后再利用dkS解密密文Y以获得数据X。
本领域技术人员可以理解,在实际应用中,以上描述的用户A和用户B侧执行的步骤也可能由同一个客户端执行。当用户使用该客户端侧上传服务器的侧没有的数据,执行以上用户A侧的相关步骤。当用户使用该客户端侧上传服务器的侧已经存储的数据,执行以上用户B侧的相关步骤。在这种情况下,用户A和用户B可以是同一个客户。
在本发明一实施例中,当用户A上传一个服务器端没有存储的数据X,用户A侧的存储方法包括:
基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;
利用密钥ekS加密数据X获得密文Y,并上传密文Y至服务器;
使用密钥ekA加密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器。
当用户A上传一个服务器端已经存储的数据X的密文Y,用户A侧的存储方法包括:
基于数据X和与一预定义的算法计算存储解密密钥dkS;
利用用户A的密钥ekA加密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器。
在这种情况下,假设服务端的密文Y是由用户B第一次上传的,则此时服务器端除了已经存储有密文Y外,还进一步存储有kB。其中Y和kB通过以下的步骤获得:
基于数据X和相同的预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;
利用密钥ekS加密数据X获得密文Y,并上传密文Y至服务器;
使用密钥ekB加密密钥dkS获得用户B的个人密钥kB,并将密钥kB上传至服务器。
在本发明一实施例中,当用户A上传数据X至一服务器时,一种存储方法包括:
计算数据X的HASH值hX;
将hX发送给所述服务器;
接收来自服务器的比较结果,该比较结果指示已存储数据中是否存在与数据X相同的数据文件;
当比较结果指示已存储数据中不存在与数据X相同的数据文件,则
基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;
利用密钥ekS加密数据X获得密文Y,并上传密文Y至服务器;
使用用户A的密钥ekA加密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器;
当比较结果指示已存储数据中存在与数据X相同的数据文件,则
基于数据X与所述预定义的算法计算存储解密密钥dkS;
利用用户A的密钥ekA加密存储解密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器。
本领域技术人员可以理解,以上方法执行在客户端,在实际应用中,其可以是一段位于客户端的软件或者硬件。
在本发明一实施例中,当用户A上传数据X至一服务器时,一种存储方法包括:
获取数据X的HASH值hX;
将所述hX与已存储数据的HASH值进行比较;
将比较结果发送至客户端;
当比较结果指示已存储数据中不存在与hX相同的HASH值,则
接收所述客户端上传的密文Y;其中,客户端基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;利用密钥ekS加密数据X获得密文Y;
接收客户端上传的用户A的个人密钥kA,其中,客户端使用用户A的密钥ekA加密密钥dkS获得个人密钥kA;
当比较结果指示已存储数据中存在与hX相同的HASH值,则
接收客户端上传的用户A的个人密钥kA,其中,客户端使用用户A的密钥ekA加密密钥dkS获得个人密钥kA。
本领域技术人员可以理解,以上方法执行在服务端,在实际应用中,其可以是一段位于服务器的软件或者硬件。
在本发明一实施例中,dkS和ekS,或ekA和dkA为对称密钥对,或分别为非对称密钥的加密密钥和解密密钥。
本发明还进一步提供了一种存储装置,即可以是上述实施例中描述服务器,也可以是上述实施例中描述的客户端。
本领域技术人员可以理解,本发明的存储方法、服务器、客户端均可以设置并使用在单机(PC、单服务器)上,也可以设置并使用在分布式系统,或其它结构的系统上。
上述实施例中所述的存储方法、系统、服务器、客户端均只为示意例子,每个实施例中的特征均可重新组合以形成新的实施例,所形成的新的实施例均包含在本发明的范围内。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种存储方法,其特征在于,当用户A上传服务器未存储的数据X时,所述方法包括:
基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;
利用密钥ekS加密数据X获得密文Y,并上传密文Y至服务器;
使用密钥ekA加密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器。
2.如权利要求1所述的方法,当用户B再次希望上传数据X时,进一步包括:
基于数据X与所述预定义的算法计算存储解密密钥dkS;
利用用户B的密钥ekB加密所述存储解密密钥dkS获得用户B的个人密钥kB,并将密钥kB上传至服务器。
3.如权利要求1所述的方法,其特征在于,当用户A访问数据X时,进一步包括:
从所述服务器获取kA;
利用与ekA对应的解密dkA解密kA获取dkS;
利用dkS解密Y获得X。
4.如权利要求2所述的方法,其特征在于,当用户B基于数据X与所述预定义的算法计算存储解密密钥dkS时,所述方法进一步包括:
判断已存储的数据中是否存在与待存储数据X相同的数据文件。
5.如权利要求4所述的方法,其特征在于,所述判断已存储的数据中是否存在与待存储数据X相同的数据文件包括:
判断已存储数据中存在与所述数据X具有相同Hash值的数据文件。
6.如权利要求5所述的方法,其特征在于,所述判断已存储数据中存在与所述数据X具有相同Hash值的数据文件包括:
计算数据X的HASH值hX;
将hX发送给所述服务器;
接收来自所述服务器的比较结果,所述比较结果指示已存储数据中是否存在与数据X相同的数据文件。
7.如权利要求2所述的方法,其特征在于,所述dkS和ekS,或ekA和dkA为对称密钥对,或分别为非对称密钥的加密密钥和解密密钥。
8.如权利要求1所述的方法,其特征在于,所述预定义算法为:计算数据X和一个预定义字符串组合的HASH值;或者,
利用一个预定义字符串加密数据X,然后计算加密后密文的HASH值。
9.一种存储方法,当用户A上传数据X至一服务器时,所述方法包括:计算数据X的HASH值hX;
将hX发送给所述服务器;
接收来自所述服务器的比较结果,所述比较结果指示已存储数据中是否存在与数据X相同的数据文件;
当所述比较结果指示已存储数据中不存在与数据X相同的数据文件,则
基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;
利用密钥ekS加密数据X获得密文Y,并上传密文Y至服务器;
使用用户A的密钥ekA加密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器;
当所述比较结果指示已存储数据中存在与数据X相同的数据文件,则
基于数据X与所述预定义的算法计算存储解密密钥dkS;
利用用户A的密钥ekA加密所述存储解密密钥dkS获得用户A的个人密钥kA,并将密钥kA上传至服务器。
10.如权利要求9所述的方法,其特征在于,当用户A访问数据X时,进一步包括:
从所述服务器获取kA;
利用与ekA对应的解密dkA解密kA获取dkS;
利用dkS解密Y获得X。
11.如权利要求10所述的方法,其特征在于,所述dkS和ekS,或ekA和dkA为对称密钥对,或分别为非对称密钥的加密密钥和解密密钥。
12.如权利要求9所述的方法,其特征在于,所述预定义算法为:计算数据X和一个预定义字符串组合的HASH值;或者,
利用一个预定义字符串加密数据X,然后计算加密后密文的HASH值。
13.一种存储方法,当用户A上传数据X至一服务器时,所述方法包括:
获取数据X的HASH值hX;
将所述hX与已存储数据的HASH值进行比较;
将比较结果发送至客户端;
当所述比较结果指示已存储数据中不存在与hX相同的HASH值,则
接收所述客户端上传的密文Y;其中,所述客户端基于数据X和一预定义的算法计算存储加密密钥ekS以及其对应的解密密钥dkS;利用密钥ekS加密数据X获得密文Y;
接收所述客户端上传的用户A的个人密钥kA,其中,所述客户端使用用户A的密钥ekA加密密钥dkS获得个人密钥kA;
当所述比较结果指示已存储数据中存在与hX相同的HASH值,则
接收所述客户端上传的用户A的个人密钥kA,其中,所述客户端使用用户A的密钥ekA加密密钥dkS获得个人密钥kA。
14.如权利要求13所述的方法,其特征在于,当用户A访问数据X时,进一步包括:
将所述密钥kA和密文Y发送给所述客户端;其中所述客户端利用与ekA对应的解密dkA解密kA获取dkS;利用dkS解密Y获得X。
15.如权利要求14所述的方法,其特征在于,所述dkS和ekS,或ekA和dkA为对称密钥对,或分别为非对称密钥的加密密钥和解密密钥。
16.如权利要求13所述的方法,其特征在于,所述预定义算法为:计算数据X和一个预定义字符串组合的HASH值;或者,
利用一个预定义字符串加密数据X,然后计算加密后密文的HASH值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261726514P | 2012-11-14 | 2012-11-14 | |
US61/726,514 | 2012-11-14 | ||
US14/079,585 | 2013-11-13 | ||
US14/079,585 US20140075193A1 (en) | 2012-03-19 | 2013-11-13 | Storage method |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103812927A true CN103812927A (zh) | 2014-05-21 |
Family
ID=50709120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310567166.7A Pending CN103812927A (zh) | 2012-11-14 | 2013-11-14 | 一种存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103812927A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104660720A (zh) * | 2015-03-25 | 2015-05-27 | 成都艺辰德迅科技有限公司 | 一种基于身份认证的安全存储方法 |
CN104683113A (zh) * | 2015-03-25 | 2015-06-03 | 成都艺辰德迅科技有限公司 | 一种基于数据加密的安全存储方法 |
CN105183402A (zh) * | 2015-10-30 | 2015-12-23 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105224262A (zh) * | 2015-10-30 | 2016-01-06 | 深圳云聚汇数码有限公司 | 数据处理方法 |
CN105262834A (zh) * | 2015-10-30 | 2016-01-20 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105302490A (zh) * | 2015-10-30 | 2016-02-03 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105407091A (zh) * | 2015-10-30 | 2016-03-16 | 深圳云聚汇数码有限公司 | 数据处理方法 |
CN105426768A (zh) * | 2015-10-30 | 2016-03-23 | 深圳云聚汇数码有限公司 | 非明文数据存储方法 |
CN105426783A (zh) * | 2015-10-30 | 2016-03-23 | 南京秦杜明视信息技术有限公司 | 多备份数据存储方法 |
CN105426767A (zh) * | 2015-10-30 | 2016-03-23 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105656866A (zh) * | 2014-12-02 | 2016-06-08 | 华为技术有限公司 | 数据加密方法及系统 |
CN106293540A (zh) * | 2016-08-19 | 2017-01-04 | 成都全码特时代科技有限公司 | 一种云数据存储方法 |
CN109462608A (zh) * | 2018-12-19 | 2019-03-12 | 杭州安恒信息技术股份有限公司 | 数据加密处理方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104417A1 (en) * | 2006-10-25 | 2008-05-01 | Nachtigall Ernest H | System and method for file encryption and decryption |
CN101989984A (zh) * | 2010-08-24 | 2011-03-23 | 北京易恒信认证科技有限公司 | 电子文件安全共享系统及方法 |
US8041641B1 (en) * | 2006-12-19 | 2011-10-18 | Symantec Operating Corporation | Backup service and appliance with single-instance storage of encrypted data |
US8199911B1 (en) * | 2008-03-31 | 2012-06-12 | Symantec Operating Corporation | Secure encryption algorithm for data deduplication on untrusted storage |
CN102629940A (zh) * | 2012-03-19 | 2012-08-08 | 天津书生投资有限公司 | 一种存储方法、系统和装置 |
-
2013
- 2013-11-14 CN CN201310567166.7A patent/CN103812927A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104417A1 (en) * | 2006-10-25 | 2008-05-01 | Nachtigall Ernest H | System and method for file encryption and decryption |
US8041641B1 (en) * | 2006-12-19 | 2011-10-18 | Symantec Operating Corporation | Backup service and appliance with single-instance storage of encrypted data |
US8199911B1 (en) * | 2008-03-31 | 2012-06-12 | Symantec Operating Corporation | Secure encryption algorithm for data deduplication on untrusted storage |
CN101989984A (zh) * | 2010-08-24 | 2011-03-23 | 北京易恒信认证科技有限公司 | 电子文件安全共享系统及方法 |
CN102629940A (zh) * | 2012-03-19 | 2012-08-08 | 天津书生投资有限公司 | 一种存储方法、系统和装置 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105656866A (zh) * | 2014-12-02 | 2016-06-08 | 华为技术有限公司 | 数据加密方法及系统 |
CN104660720A (zh) * | 2015-03-25 | 2015-05-27 | 成都艺辰德迅科技有限公司 | 一种基于身份认证的安全存储方法 |
CN104683113A (zh) * | 2015-03-25 | 2015-06-03 | 成都艺辰德迅科技有限公司 | 一种基于数据加密的安全存储方法 |
CN105426783A (zh) * | 2015-10-30 | 2016-03-23 | 南京秦杜明视信息技术有限公司 | 多备份数据存储方法 |
CN105183402A (zh) * | 2015-10-30 | 2015-12-23 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105302490A (zh) * | 2015-10-30 | 2016-02-03 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105407091A (zh) * | 2015-10-30 | 2016-03-16 | 深圳云聚汇数码有限公司 | 数据处理方法 |
CN105426768A (zh) * | 2015-10-30 | 2016-03-23 | 深圳云聚汇数码有限公司 | 非明文数据存储方法 |
CN105224262A (zh) * | 2015-10-30 | 2016-01-06 | 深圳云聚汇数码有限公司 | 数据处理方法 |
CN105426767A (zh) * | 2015-10-30 | 2016-03-23 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105262834A (zh) * | 2015-10-30 | 2016-01-20 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105426783B (zh) * | 2015-10-30 | 2019-04-05 | 四川星空奇迹科技有限公司 | 多备份数据存储方法 |
CN105302490B (zh) * | 2015-10-30 | 2018-10-09 | 四川星空奇迹科技有限公司 | 数据存储方法 |
CN105183402B (zh) * | 2015-10-30 | 2019-01-01 | 四川星空奇迹科技有限公司 | 数据存储方法 |
CN105426768B (zh) * | 2015-10-30 | 2019-01-08 | 深圳云聚汇数码有限公司 | 非明文数据存储方法 |
CN105426767B (zh) * | 2015-10-30 | 2019-04-05 | 四川星空奇迹科技有限公司 | 数据存储方法 |
CN106293540A (zh) * | 2016-08-19 | 2017-01-04 | 成都全码特时代科技有限公司 | 一种云数据存储方法 |
CN109462608A (zh) * | 2018-12-19 | 2019-03-12 | 杭州安恒信息技术股份有限公司 | 数据加密处理方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103237040B (zh) | 一种存储方法、服务器和客户端 | |
CN103812927A (zh) | 一种存储方法 | |
US11146391B2 (en) | Orthogonal access control for groups via multi-hop transform encryption | |
Zhao et al. | Trusted data sharing over untrusted cloud storage providers | |
CN106254324B (zh) | 一种存储文件的加密方法及装置 | |
CN103763319B (zh) | 一种移动云存储轻量级数据安全共享方法 | |
CN104065680A (zh) | 信息处理方法、检索方法、装置、用户终端及服务器 | |
CN103236934B (zh) | 一种云存储安全控制的方法 | |
CN109525388B (zh) | 一种密钥分离的组合加密方法及系统 | |
CN103607278A (zh) | 一种安全的数据云存储方法 | |
Shamsuddin et al. | Implementing location-based cryptography on mobile application design to secure data in cloud storage | |
CN104796411A (zh) | 一种数据在云端和移动端安全传输存储及使用的方法 | |
Gunasekaran et al. | A review on enhancing data security in cloud computing using rsa and aes algorithms | |
US20140075193A1 (en) | Storage method | |
CN108933758A (zh) | 可分享云存储加解密方法、装置和系统 | |
KR20210058313A (ko) | 클라우드 환경에서 안전하고 효율적인 데이터 공유를 위한 속성기반 암호를 활용한 데이터 접근 제어 방법 및 시스템 | |
CN106972928B (zh) | 一种堡垒机私钥管理方法、装置及系统 | |
Indu et al. | Secure file sharing mechanism and key management for mobile cloud computing environment | |
KR101812311B1 (ko) | 사용자 단말 및 속성 재암호 기반의 사용자 단말 데이터 공유 방법 | |
Kumar et al. | Privacy authentication using key attribute-based encryption in mobile cloud computing | |
Xue-Zhou | Network data encryption strategy for cloud computing | |
Parsamehr et al. | Mutual authentication protocol to share files in cloud storage | |
KR20150034591A (ko) | 암호화된 데이터를 재암호화하는 클라우드 서버 및 그것의 재암호화 방법 | |
KR20150101896A (ko) | 인터클라우드 환경에서의 데이터 공유 시스템 및 공유 방법 | |
KR101413248B1 (ko) | 데이터 암호화 장치 및 데이터 암호화를 수행하는 프로그램을 저장하는 저장매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140521 |