付印金:非常荣幸能参加2018年可信云大会,也感谢中国信通院的邀请。我今天给大家带来的题目叫做:基于《雾到多云混合计算模式的高效云存储安全机制》,我是来自陆军工程大学的老师。
为什么要介绍这个题目?因为现在的数据安全,特别是数据在云上的安全已经变成越来越大的挑战,刚才李主任介绍了一个故事给我们一个很好的警醒作用。数据如何在网络上保障安全,对于各个行业、企业、个人都是非常重要的问题。
我们先从大家人人都有的手机作为一个开端,大家知道手机最开始的只有一些非常简单的功能,打打电话、发发短信。但自从Iphone这样的手机出来,手机已经成为了人的第六感这样的工具。它的功能从以前的单一的一两种功能,到现在的成百上千种功能,我们可以通过手机可以几个月足不出户,订外卖、买衣服,几乎所有事情都可以通过手机在家里解决,这样的方便是通过各种各样的技术革新带来这样的好处。
但是手机既然这么重要,如果说大家的手机出现了问题怎么办?或者说手机上数据安全出现了隐患怎么办?比如说手机淘宝支付银行帐号、个人相册等等被盗取了,这种隐患怎么解决?大家都知道,每个手机可能都有像苹果的Icloud的类似后台备份功能,可以为手机的数据起很好的保护作用。一旦手机出故障的时候,能够在后台进行恢复。还有技术手机被盗的时候,有支持查找手机并且定位的功能,可以帮你找回来。如果你的手机被盗,即使找不到,数据还能够通过远程删除这样的技术手段,把你的敏感数据去掉,从而保证你数据隐私安全性。
云是否已经是大家用的很多的比较重要的一种保护工具、保护手段,是否就已经是安全可信的?其实云计算本质上是是把个人计算模式转变成公共计算模式,你想你的数据原来是在本地管理的数据上进行处理,现在到公有云上,数据安全隐私谁给你保障?有人说大企业大公司来保障,但是确定安全吗?
从2007年开始,云这个概念大概是2007年左右提出来的,后面陆陆续续像谷歌等等这样的公司提出来。从云概念诞生开始,安全的这些隐患、事故就没有中断过。我挑的只是这些大公司最典型的具有影响力的大的安全事故,这些事故损失至少都是上千万的经济损失,甚至大的有上亿的。像最近阿里云、腾讯类似这样的安全事故,这种类型就非常多了。有的是因为系统故障服务中断,有的是因为公司员工在后台读取你的数据、个人信息,对你进行骚扰,甚至对你进行犯罪行为。还有一些比如说故障率,设备本来规模并不大的时候,故障率是非常高的,单个设备出故障概率特别高。
我开始讲我们课题组的一些工作,怎么样来结合最新的一些技术,比如说雾计算、多云这样的技术,我们设计了一种混合计算的高效云安全机制,这是我们的主要工作。大家都知道云存储主要目标就是廉价,资源的共享,实现高效、低成本的存储服务。重复数据删除已成为消除无穷副本的技术,能够极大降低云存储的成本,当前各种各样的存储产品,无论是云存储还是公司企业的云服务,都已经成为了云基本的存储功能。它的基本原理是对一个数据,来了之后先给它分块,分块之后每个块进行Hash算一个值,我们把这个Hash值和数据块分别存在不同结构里面,依次这样存,每次算Hash值跟前面的Hash值进行比对,如果已经存在过,这种相同数据不用再存了,只需要存新的数据。这个例子是把文件内部的数据块去掉,第二个文件的时候又做类似的工作,跟前面的文件的内容也有相同的时候也要去除。这种技术不仅能去除文件内部的,也能去掉文件与文件之间的内容,这是它不同于传统数据压缩大的特点,当然它的压缩率也是非常高的。跟通用数据压缩比它有什么优势?它跟通用压缩是兼容的。我们可以把重删跟这些传统的压缩技术结合,可以进一步提升压缩的比例。压缩多大?我们对一些TB级的数据进行分析,发现把重删和GZ压缩结合之后,发现最小可以达到30:1这样的比例,高的话达到200多,这是一种高效的机制和方式。如果把这个数据放到云上,能极大提高云存储,可以降低购买的成本,实现高效存储。
在客户端处理时,能够及时把数据删掉,一个是快速节省云存储空间、网络传出带宽能够提升。在服务器端做处理,虽然在网络上的优化可能没有什么体现,但是在服务器的压缩率上有很大体现。虽然这两种方式重删在云上,现在已经很通用的一种云存储优化方式,用了之后在安全上有什么隐患? 2011年一个文章里面举了一个例子,在客户端做重删处理的时候,做了一个分析发现最主要的攻击叫做Hash操纵攻击,比如说这是正常的用户,把数据通过客户端重删先存到云上,他把Hash值存在数据库里面。一旦本地数据库里的文件信息被攻击者窃取,攻击者就可以伪装成这个客户直接拿他的Hash从云上源源不断地下载他的数据内容,而这种攻击是用户无法检测的,这种攻击是在所有用了客户端重删的云服务里面都存在的攻击,目前这是一个没有解决的巨大挑战。
还有主机识别号窃取攻击和直接下载攻击,这两种攻击本质上是因为当时安全检测工具、检测认证机制的问题,不是说某个用户每一次下载上传的时候都要登录这个帐户,而是说他把他个人的一些信息,在最开始的时候就生成了一个所谓的主机识别号,每次通过这个主机识别号自动就可以实现授权认证。这造成了一个很大的问题,一旦你的主机识别号被攻击者窃取之后,整个用户的数据都可能被攻击者所偷盗。当然对于部分文件也可以通过结合主机识别号,也可以对部分文件进行有需求的、确定性的进行窃取甚至下载。这两种攻击都是在部分云服务里面存在的,而且这两种都是可以检测的。后面相关文章发表之后,进行了一定补丁的修复,解决了一些问题,但是Hash操纵攻击目前仍然没有解决。
服务器端进行重删会带来什么安全隐患?重删提高了数据之间的共享,不同文件之间可以共享同一个块,当你把某一个文件删掉,你不可能把它对应的文件数据块都删掉,因为你删掉以后,其他共享文件就会造成故障错误。这种时候如果用户原信息被窃取之后,还是能在云上有信息残留,云上的删除操作完成之后还是有这个隐患。
传统的加密方式和重删机制也存在不兼容的问题,原来不同的用户是用不同的密钥,把相同的内容加密之后,不同的密钥加密之后它的密文就会有所不同,这时候就没有重删的潜力可挖了,原来删掉的时候可以节省空间,现在已经没有这个发展的潜力了。
我们应该怎样结合雾计算和多云的技术,实现在云存储带有重删功能的情况下的安全考虑,怎样改进这个事情?包括云计算和多云存储技术,有一个很重要的特点就是去中心化,就像区块链。它主要通过是去中心化来实现安全性能的提高,基于这两种技术,我们怎么样把它结合,更大提高安全性?雾计算这个概念大概提了有三四年,它是把部分云计算的功能在云跟边缘节点中间的一些服务节点,当然这个服务节点跟雾节点的数目要远大于云服务数,他们之间在资源上实现互补。因为它跟终端比较接近,所以它带来的是访问时延降低和安全性提高。我们有时需要把对个人更敏感的数据,先处理或者加密,再把它存到云上去。因为单一设备例如个人手持设备,计算能力和性能可能没有办法实现很复杂的处理功能,这个部分就必须交给雾计算来做。
结合这样一个思想,我们提出了一个“雾+云”的混合重删机制,这类似于客户端的重删,能够获得低的响应。云数据中心全局重删机制,可以利用跨用户的能力,实现高压缩,结合雾设备和云数据中心的资源特点,设计混合重删机制。我们通过建模分析得到了一个机制,这种混合重删机制在网络带宽低时优于雾端局部重删,延迟则优于云端全局重删机制,在处理时延上有更大的优势。
第二个是云存储数据加密,尤其是私钥加密,这种加密方式安全性高,但是不兼容重删。收敛加密,兼容重删,安全性低。它的思想其实非常简单,就是把一个数据块当中的Hash作为密钥来处理,在数据安全考虑和重删考虑上能够比较好的兼容起来。不仅在雾端进行重删检测,在云端也进行重删检测,这两种结合进行检测。还有云端可以选择两种加密方式作为可选机制进行处理。
除了安全性考虑,我们看到在重删效率上也有所提升,我们用每秒它能够节省多少个字节这样的指标来评判效率。我们用了一个方式,ALC-Dedupe为混合重删机制,对比这三种方式,最优的混合重删机制能够比传统方法高60%,甚至高130%这样一个优势。
我们通过收敛加密的系统开销可接受,加密和不加密在云上网络延迟比较高,这样在加密吞吐量上影响几乎是可以忽略的,我们在雾端这样做是可行的。还有其他的考虑,哈希操作攻击怎么样解决?2011年一个会议上有一个很好的思想,做了一个探索性的想法。采用了Merkle Hash Tree这样的思想,它把每一个数据块当做一个业节点,把两个数据块合在一起算一个哈希值,这样算出来第一层哈希。第二层哈希又是这样叠加,两两算一个哈希,最终算出一个最终整个文件的哈希值。通过这个哈希值,可以体现整个文件的识别信息。这样如果这个用户没有整个文件的识别信息的时候,没有权利去下载在云上文件的任何数据分块。安全重删机制,我怎么样比较及时的把云上的空间删掉的数据回收出来,大家感兴趣的可以去看一下相关文章。
再一个我们讲多云技术,其实刚才讲的都是雾+云,是单云。我们现在讲雾+多云,为什么要把它变成多云。下面来看几个安全事故的例子,最近腾讯硬盘故障致瘫痪,前沿数控索赔1100万元。其实这种事故也不是第一次,谷歌曾经有一个员工窃取云里面的数据,用户的数据被整个传到谷歌云上,后台用户可以读你里面的信息,涉及到了隐私问题。所以我们的方式是不能把数据明文传上去,或者说不能把它整个放在云服务上。
还有关于可靠性的例子,不仅仅像前面讲的,像阿里、亚马逊这样的公司,最近半年都有很多这样的安全事故。还有一个更过分的就是像360,整个云服务对个人突然关闭开放,把这个服务给你停掉,数据我不管你,给你一个时间点,你自己把数据备份下载好。这对个人数据或企业数据可能都是一个非常要命的问题。
综上所述,总结下来,把企业的数据和个人的数据放到单一的云上面,存在各种各样的安全隐患。第一个是数据服务不可用,当云服务不可用了,个人数据都放在云服务上,那个人就完全被云服务商绑定了,一旦云服务商出故障了所有个人的数据、企业的数据甚至生存都受到非常大的影响。还有涉及到数据的损坏和丢掉,比如出现大的自然灾害,火灾、地震这种都是非常难预防的事情。还有个人隐私的泄露,像谷歌之前的例子。还有供应商锁定问题,这个概念可能国内强调的还不太多,国外很多,特别是欧洲一些公司,数据如果只有单一供应商,存在一个云服务上,个人或者企业就被该供应商牵着走,目前大概有20%的企业还被云供应商所绑定。
怎么样解决这个问题?我们提出一个多云存储的思想,最开始这个思想是在可靠性的角度来考虑的,主要思想是把一个文件进行编码,可以切分成很多分片,再把分片上到不同的服务器上去,在回传下载获取的时候,只要获取它部分的数据分片就可以把整个文章恢复回来,我可以允许其中一部分分片失效。把这个思想放在云上面,就把这个服务器用云服务代替,这个就是我们最开始多云存储思想的模型。
相关的研究也比较多,最近几年陆陆续续有很多文章发在一些会议上。他们的主要目标就是要在坚固云存储的容错能力、数据一致性、访问识别、云存储用户使用的代价、服务灵活性等方面进行比较好的权衡,很多文章一般是选两到三个目标做一个权衡。
下面讲我们主要的思想,我们是基于混合云,我们选了五种云服务,有阿里云、腾讯云、亚马逊的、百度和七牛云。我们文件发送之前,先发送到雾节点,对它进行一系列处理,利用雾节点比客户端更强的计算能力,进行缩减然后再编码或者加密,然后分片、然后再上传。这样每个云服务上拿到的只是我整个文件的一部分,而且是经过编码和加密处理的一个片断。下载的时候也是这样一个逆程序,整个合并在用户管理的雾节点上,得到一个完整的文件,这样保证数据的安全性和可靠性。然后再进行一系列的处理,最后回到用户的设备上去。这个功能在客户端和雾节点之间有一系列安全认证机制,在雾节点跟云之上,因为这个环境是上在公共的环境,这个我们做了简单的上传、删除、迁移、下载,这个数据基本上都是经过安全处理过滤之后。
我们的原型就是现在这样一个多云存储系统服务,可以支持多种功能。我们进行了分析,在系统容错与空间利用率上。结合前面的数据缩减、重删等等,我们可以把它的压缩变成原来的高的2400%,极大提高了云存储的空间利用率。第二个在访问时延,就是在上传和下载时延上分析,文件越大,它的时延越长,还有就是它的纠错能力越高,云服务越多,相应的时延也就越多。还有它中间虽然有一些文件可能稍微大一点,但是因为它的压缩比例更高,比如说5.2G的文件,可能压缩到1.1G,所以它的访问时延是最低的。数据迁移,我发现在做数据可靠性恢复的时候,以及数据云服务的存储以及在云和云之间进行迁移的时候,在腾讯云这里迁移代价是最低的。
我们总结一下,我们的可信云存储服务的核心是去中心化,多云存储技术,避免使用单一云存储服务。雾计算技术,取代部分云计算能力,区块链也许是未来。提升用户对自身数据的可管理能力,多云存储技术,不仅可容错,还为用户提供更大的云服务选择自由度。雾计算节点,将敏感数据本地加密,处理后再上传,提升服务用户体验。数据缩减技术,提升网络和存储资源利用率,降低用户成本。
这是我们相关的一些论文内容,感兴趣的可以和我们交流,谢谢大家!