混合云环境下基于客户端加密的数据安全共享方法及系统
技术领域
本发明属于云计算技术领域,具体涉及混合云环境下基于客户端加密的数据安全共享方法及系统。
背景技术
现随着云计算的迅速发展,越来越多的中小企业将自己的信息化系统以及业务数据迁移到云端。与传统的软件架构相比,云计算在运营和支持方面的成本更低廉,同时又能够获得更快速的部署能力和近乎无限的伸缩性等收益。通过云计算,中小企业不需要大量资金去购买计算,存储以及网络设备,以及人力去建造,维护企业私有机房。然而,云计算要求用户将应用以及数据部署到云端,这也会带来很多问题,最为突出的是数据安全问题。客户的数据存储在云端如何保证数据不被第三方甚至云服务厂商本身,窃取数据。数据在被Web API调用以及共享过程中,被泄露的风险很高。数据安全问题是企业应用迁移到云计算的最大障碍之一。
目前数据安全共享方法存在以下问题,方法中,数据提供者将所有数据上传到一家云服务厂商,通过分享加密的URL来保护数据安全,这不能有效防止云服务厂商通过内部攻击窃取数据。都依赖于传统的数据加密/解密,以及是在单一云计算厂商环境下,一旦密钥泄露,云计算厂商会获取用户的所有数据。
发明内容
本发明目提供了混合云环境下基于客户端加密的数据安全共享方法及系统,解决了目前数据安全共享方法存在不能有效防止云服务厂商通过内部攻击窃取数据;在单一云计算厂商环境下,一旦密钥泄露,云计算厂商会获取用户的所有数据的问题。
本发明所采用的技术方案为:
混合云环境下基于客户端加密的数据安全共享方法,包括上传数据以及读取数据,所述上传数据的方法包括以下步骤:
S1、在客户端对待上传的整体数据进行分块,对分块后的数据块定义唯一标识符;
S2、根据步骤S1中所述数据块的标识符查找服务器端是否已经存储当前的数据块,若服务器端没有当前标识符所对应的数据块,则将当前标识符所对应的数据块作为待上传数据块;
S3、对步骤S2中的待上传数据块做数据泄露评估,并根据数据泄漏比例,获得数据存储计划;
S4、在客户端对步骤S2中的待上传数据块在进行加密,并将元数据以及密钥都存储在客户端;
S5、将步骤S4中加密之后的数据块,以密文的形式按照步骤S3中所述的数据存储计划存储在多个云计算厂商的服务器中。
通过客户端加密:可以有效提高数据安全,所有的元数据以及密钥都存在客户端,数据在客户端加密之后,以密文的形式存储在多个云计算厂商,从而使得没有任何一个云计算厂商拥有用户的所有密文数据;这样即便单一云计算厂商窃取了客户端密钥,也不能看到数据的全部信息,数据泄露得到有效的控制;通过数据泄露评估,采用信息泄露评估算法,有效评估数据信息含量,降低数据泄露风险;同样大小的数据块包含的信息可能是不一样的,泄露感知可以确保每一个云计算厂商不仅存储数据量相当,存储的信息也相似。
进一步的,步骤S3中所述对待上传数据块做数据泄露评估,获得数据存储计划的方法包括以下步骤:
A、采用相似度评估函数或概率模型函数评估待上传数据块信息的相似度;
B、根据待上传数据块信息的相似度生成不同相似度下对应的存储计划,存储计划定义了每一个数据块存储到哪一个云厂商;
C、评估存储计划的质量:采用leader-follower clustering算法以及信息泄露评估函数,找到信息泄露最小的存储计划。
通过以上采用函数计算评估处信息泄漏最小的存储计划,根据数据块相似度安排数据块哪一个数据块存在哪一个云上,实施时,通过将数据块相似度最高的数据存储在同一存储器,未来一旦数据泄露,带来的信息泄露会最小。
进一步的,步骤A中评估待上传数据块信息泄露程度包括但不仅限于评估数据快内容的语义和/或语法;结合BloomFilter以及MinHash算法,采用Jaccard similarity方法评估出数据泄露风险。
进一步的,步骤S1中对待上传的整体数据进行分块采用定长分块算法,根据预设的数据块大小对文件进行切分。
进一步的,步骤S1中对分块后的数据块定义唯一标识符采用哈希指纹算法计算数据的固定位长的校验值,作为数据块的唯一标识符。
进一步的,步骤S5中数据块上传至不同云计算厂商的服务器之前还对数据块进行了压缩。
进一步的,步骤S5中数据块上传至不同云计算厂商的服务器时,采用云间传输管理的方法进行数据上传,所述云间传输管理的方法包括:建立连接,初始化,文件列表,上传数据,下载数据,删除数据,断开连接;数据块上传到云服务厂商,首先建立起客户端到云服务端的网络连接,通过初始化验证用户及其权限,使得用户可以对数据进行不同的操作,所述操作包括上传数据、下载数据以及删除数据,完成操作之后,断开连接,释放网络资源。
进一步的,所述读取数据包括以下步骤:
步骤一、元数据读取:用户读取文件,首先在元数据服务器查找该文件所包含的所有数据块以及其存放地址,元数据同时也存储了各个数据分块的组装序列;
步骤二、数据读取:并行从不同的云计算厂商读取相应的数据块;
步骤三、数据解密:对于每一个数据块,进行客户端解密;
步骤四、数据组装:获取所有的源数据块后,按照分块组装序列进行数据块组装,恢复原来的文件。
混合云环境下基于客户端加密的数据安全共享系统,包括客户端、元数据服务器以及数据存储服务器,其中
客户端采用上述混合云环境下基于客户端加密的数据安全共享方法用户的数据进行处理,包括对数据进行分块、去重、数据泄漏评估、加密/解密以及压缩;
元数据服务器用于存储所有元数据,元数据用于索引以及恢复数据;
数据存储服务器位于公共云服务器。
对于客户来说,客户端处理程序是可以信任的,因为数据没有离开客户端进入公共云提供商;元数据服务器可以位于客户私有机房,也可以位于用户信赖的公共云服务提供商,用户可以根据自己的实际情况,选择一个或多个公共云服务提供商,降低对任意一个云服务提供商的依赖,使得没有一个公共云服务提供商拥有用户的全部数据。
进一步的,元数据服务器位于客户私有机房或位于公共云服务器。如果用户已经拥有私有机房,可以通过本发明将其现有资源接入其他云计算厂商,形成混合云环境,使得其业务不再依赖单一云计算厂商。这样,用户的数据可以分布存储在不同的厂商,使得没有单个厂商可以获取全部数据,从而加强数据的安全性。
本发明具有如下的优点和有益效果:
1、基于客户端加密的数据安全共享方法通过客户端加密:可以有效提高数据安全,所有的元数据以及密钥都存在客户端,数据在客户端加密之后,以密文的形式存储在多个云计算厂商,从而使得没有任何一个云计算厂商拥有用户的所有密文数据;这样即便单一云计算厂商窃取了客户端密钥,也不能看到数据的全部信息,数据泄露得到有效的控制;通过数据泄露评估,采用信息泄露评估算法,有效评估数据信息含量,降低数据泄露风险;同样大小的数据块包含的信息可能是不一样的,泄露感知可以确保每一个云计算厂商不仅存储数据量相当,存储的信息也相似;
2、基于客户端加密的数据安全共享方法通过采用函数计算评估处信息泄漏最小的存储计划,根据数据块相似度安排数据块哪一个数据块存在哪一个云上,实施时,通过将数据块相似度最高的数据存储在同一存储器,未来一旦数据泄露,带来的信息泄露会最小;
3、混合云环境下基于客户端加密的数据安全共享系统对于客户来说,客户端处理程序是可以信任的,因为数据没有离开客户端进入公共云提供商;元数据服务器可以位于客户私有机房,也可以位于用户信赖的公共云服务提供商,用户可以根据自己的实际情况,选择一个或多个公共云服务提供商,降低对任意一个云服务提供商的依赖,使得没有一个公共云服务提供商拥有用户的全部数据。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1是基于客户端加密的数据安全共享方法流程示意意图。
图2是混合云环境下基于客户端加密的数据安全共享系统架构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
应当理解,术语第一、第二等仅用于区分描述,而不能理解为指示或暗示相对重要性。尽管本文可以使用术语第一、第二等等来描述各种单元,这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
应当理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况,本文中术语“/和”是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况,另外,本文中字符“/”,一般表示前后关联对象是一种“或”关系。
应当理解,在本发明的描述中,术语“上”、“竖直”、“内”、“外”等指示的方位或位置关系,是该发明产品使用时惯常摆放的方位或位置关系,或者是本领域技术人员惯常理解的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
应当理解,当将单元称作与另一个单元“连接”、“相连”或“耦合”时,它可以与另一个单元直相连接或耦合,或中间单元可以存在。相対地,当将单元称作与另一个单元“直接相连”或“直接耦合”时,不存在中间单元。应当以类似方式来解释用于描述单元之间的关系的其他单词(例如,“在……之间”对“直接在……之间”,“相邻”对“直接相邻”等等)。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本文使用的术语仅用于描述特定实施例,并且不意在限制本发明的示例实施例。如本文所使用的,单数形式“一”、“一个”以及“该”意在包括复数形式,除非上下文明确指示相反意思。还应当理解术语“包括”、“包括了”、“包含”、和/或“包含了”当在本文中使用时,指定所声明的特征、整数、步骤、操作、单元和/或组件的存在性,并且不排除一个或多个其他特征、数量、步骤、操作、单元、组件和/或他们的组合存在性或增加。
实施例1:
如图1所示,本实施例提供了混合云环境下基于客户端加密的数据安全共享方法,包括上传数据以及读取数据,所述上传数据的方法包括以下步骤:
S1、数据分块:在客户端对待上传的整体数据进行分块,对分块后的数据块定义唯一标识符;具体实施时,采用定长分块算法,根据预设的数据块大小对文件进行切分;对于每一个数据分块,采用哈希指纹算法计算数据的固定位长的校验值,作为数据块的唯一标识符;
S2、数据去重:根据步骤S1中所述数据块的标识符查找服务器端是否已经存储当前的数据块,若服务器端没有当前标识符所对应的数据块,则将当前标识符所对应的数据块作为待上传数据块;
S3、泄露评估:对步骤S2中的待上传数据块做数据泄露评估,并根据数据泄漏比例,获得数据存储计划;
S4、在客户端对步骤S2中的待上传数据块在进行加密,并将元数据以及密钥都存储在客户端;
S5、将步骤S4中加密之后的数据块,以密文的形式按照步骤S3中所述的数据存储计划存储在多个云计算厂商的服务器中。
通过客户端加密:可以有效提高数据安全,所有的元数据以及密钥都存在客户端,数据在客户端加密之后,以密文的形式存储在多个云计算厂商,从而使得没有任何一个云计算厂商拥有用户的所有密文数据;这样即便单一云计算厂商窃取了客户端密钥,也不能看到数据的全部信息,数据泄露得到有效的控制;通过数据泄露评估,采用信息泄露评估算法,有效评估数据信息含量,降低数据泄露风险;同样大小的数据块包含的信息可能是不一样的,泄露感知可以确保每一个云计算厂商不仅存储数据量相当,存储的信息也相似。
具体实施时,具体实施时,以数据D为例,数据D经过步骤一数据定长分块之后成为d1、d2、d3、d4、d5、d6、d7、d8、d9。假设这些数据块会存储到三个公有云c1、c2、c3,如果按照round robin轮询方式存到三个不同公有云上,c1存储d1、d4、d7,c2存储d2、d5、d8,c3存储d3、d6、d9。轮询方式可以确保每一个云上存储的数据量是相当的,但是同样大小的数据块,包含的数据信息可能不一样。比如说,如果d1、d4、d7数据几乎是一样的,而d3、d6、d9数据块完全不一样,那么存储在公有云c3上的数据泄露的信息会是公有云c1上的3倍。其根本原因就是round robin方式没有评估数据块之间的相似度。本发明专利提出信息泄露评估算法有三个步骤,及步骤S3中所述对待上传数据块做数据泄露评估,获得数据存储计划的方法包括以下步骤:
A、采用相似度评估函数或概率模型函数评估待上传数据块信息的相似度;评估两个数据块的信息泄露程度,这里我们可以基于语义(sematic)或者语法(syntactic)评估,评估函数可以是相似度,也可以基于概率模型函数,如Jaccard similarity,或者是Jensen-Shannon divergence函数等。我们设计结合BloomFilter以及MinHash算法设计,基于Jaccard similarity评估出数据泄露风险。具体实施时,采用MinHash算法利用Hash签名函数可以将一个数据块映射成hash签名(signature)的集合。然而存储所有MinHash算法生成的hash签名集合会带来额外的存储开销,所以我们应用BloomFilter进一步将MinHash签名概括(Sketch)成一个定长的签名,如一个256-bit的签名。通过BloomFilter以及MinHash算法,我们都能把任意一个数据块转换成一个定长的签名。这样,给定任意两个数据块,我们就可以获取其对应的两个数据块签名,应用Jaccard Similarity计算数据泄露风险。
B、根据待上传数据块信息的相似度生成不同相似度下对应的存储计划;存储计划定义了每一个数据块存储到哪一个云厂商。
C、评估存储计划的质量:采用leader-follower clustering算法以及信息泄露评估函数,找到信息泄露最小的存储计划。
通过以上采用函数计算评估处信息泄漏最小的存储计划,根据数据块相似度安排数据块哪一个数据块存在哪一个云上,实施时,通过将数据块相似度最高的数据存储在同一存储器,未来一旦数据泄露,带来的信息泄露会最小。
具体实施时,步骤A中评估待上传数据块信息泄露程度包括但不仅限于评估数据快内容的语义和/或语法;结合BloomFilter以及MinHash算法,采用Jaccard similarity方法评估出数据泄露风险。
具体实施时,步骤S5中数据块上传至不同云计算厂商的服务器之前还对数据块进行了压缩。
具体实施时,步骤S5中数据块上传至不同云计算厂商的服务器时,采用云间传输管理的方法进行数据上传,所述云间传输管理的方法包括:建立连接,初始化,文件列表,上传数据,下载数据,删除数据,断开连接。具体实施时,不同的云服务商只需要基于其API实现云间传输管理的七个方法,便可以轻松接入本发明定义的安全云存储方法。
具体实施时,步骤一中采用64位或者128位的MD5,SHA1,算法产生64位或者128位的校验值作为数据块唯一标识符,用于数据块去重,索引以及恢复数据。步骤四客户端加密一定在步骤五之前发生,这样确保数据传输前已经加密,进一步降低泄露风险。
具体实施时,所述读取数据包括以下步骤:
步骤一、元数据读取:用户读取文件,首先在元数据服务器查找该文件所包含的所有数据块以及其存放地址,元数据同时也存储了各个数据分块的组装序列;
步骤二、数据读取:并行从不同的云计算厂商读取相应的数据块;
步骤三、数据解密:对于每一个数据块,进行客户端解密;
步骤四、数据组装:获取所有的源数据块后,按照分块组装序列进行数据块组装,恢复原来的文件。
实施例2:
混合云环境下基于客户端加密的数据安全共享系统,如图2架构设计所示:包括客户端、元数据服务器以及数据存储服务器,其中,
客户端采用上述混合云环境下基于客户端加密的数据安全共享方法用户的数据进行处理,包括对数据进行分块、去重、数据泄漏评估、加密/解密以及压缩;
元数据服务器用于存储所有元数据,元数据用于索引以及恢复数据;
数据存储服务器位于公共云服务器。
实施时,元数据服务器位于客户私有机房或位于公共云服务器。如果用户已经拥有私有机房,可以通过本发明将其现有资源接入其他云计算厂商,形成混合云环境,使得其业务不再依赖单一云计算厂商。这样,用户的数据可以分布存储在不同的厂商,使得没有单个厂商可以获取全部数据,从而加强数据的安全性。对于客户来说,客户端处理程序是可以信任的,因为数据没有离开客户端进入公共云提供商;元数据服务器可以位于客户私有机房,也可以位于用户信赖的公共云服务提供商,用户可以根据自己的实际情况,选择一个或多个公共云服务提供商,降低对任意一个云服务提供商的依赖,使得没有一个公共云服务提供商拥有用户的全部数据。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。