原有的云存储模式所存在的问题已经困扰行业多年,在静态数据加密存储的过程中,只有实现真正意义上的数据私有化才能保证数据的安全,保障数据拥有者的利益。针对云存储应用中用户数据安全存储需求的提高,以Amazon S3(simple storage service)为例分析当前云存储模式下静态数据安全存在的普遍问题,我们设计了一套新的云端静态数据加密存储方案——分离密钥存储服务(separated key S3)解决方案。
一、云存储应用中的加密技术
云存储应用中的存储安全包括认证服务、数据加密存储、安全管理、安全日志和审计。对用户来说,在上述4类存储安全服务中,存储加密服务尤为重要。加密存储是保证客户私有数据在共享存储平台的核心技术,是对指定的目录和文件进行加密后存储,实现敏感数据存储和传送过程中的机密性保护。根据形态和应用特点的差异,云存储系统中的数据被分为两类:动态数据和静态数据。动态数据是指在网络中传输的数据,而静态数据主要是指存储在磁盘、磁带等存储介质中的数据。
1、云数据加密模式
(1)静态数据加密
对于那些在云中存储备份自己长期数据的客户,他们可以将自己的数据加密,然后发送密文到云存储提供商(cloud storage provider,CSP)。目前,大多数该类解决方案基于用户的数字证书进行认证和加密。用户使用数字证书向云管理系统进行身份认证,并使用对称密钥在本地加密云中存储的数据,同时使用证书公钥加密对称密钥,然后将加密后的数据传到云中进行存储。这些客户控制并保存密钥,当客户要获取数据时,先将云中密文下载到本地,再由客户自行解密该数据。
该模式的优点是:只有客户可以解密云中的存储数据,可以有效地保证数据的私密性。缺点是:客户端需要较强的密码运算能力来实现加密功能,同时用户数据的加密密钥必须保管安全,一旦丢失,将无法恢复数据,且该模式只适用于客户自己生成的静态数据加密,对于在IaaS、PaaS、SaaS下在云中产生的动态数据无法使用该模式进行加密。
(2)动态数据加密
对于在云计算环境中产生的动态数据,只能由云计算管理系统进行加密,虽然CSP的网络比开放网络安全。在多租户的云计算应用模式下,客户租用云计算系统的计算能力,虚拟化技术使得一个客户的应用以不同层次与其他客户的应用共享物理资源,因此客户在云计算环境中产生的数据不可避免地交由云计算环境进行加密。
该模式的优点是:客户不需要为不同的云应用保管各种不同的密钥,而是交由云计算环境统一管理,具有更高计算服务提供商,同时云计算管理系统需要提供一个统一、有效、可扩展的云计算密钥管理框架,用于为各类客户提供各种类型密钥的统一管理,实现各种密钥操作。
2、数据加密存储技术研究现状
目前云存储加密的研究较多,有面向云存储的安全存储模型及存取策略,给有基于层次属性加密实现的细粒度访问控制的云存储系统,有基于加密策略增强云存储的安全性,有云存储密文策略属性基加密方案,但此类所采用的方式均为上文所述的客户加密数据模式,无法克服该方法本身所具有的缺点。据目前可检索到的文献分析,还没有一种静态数据加密方法既突破客户加密数据上传的传统云存储模式,又能较好地保证数据私有化实现静态数据的安全。
静态数据一直是通过公钥基础设施(PKI)技术保护。在IaaS环境中,使用多种提供商和第三方工具加密静态数据很普遍。在PaaS环境中加密静态数据一般会较复杂,需要提供商提供的或专门定制的设备。在SaaS环境中加密静态数据是云用户无法直接实施的,需要向他们的提供商请求。2011年8月来自微软的安全研究员Kristin Lauter和同事为基于同态加密的加密技术研究出存储原型,该技术的产生及在云端领域的应用,将极大提升云端数据安全性,除了存放者本人外,他人无法破译。初创安全公司Porticor在2012年3月推出了一个解决方案,专门解决云环境中静态数据安全问题,该公司提供了一种加密解决方案,并声称云客户是唯一知道主密钥的人。
二、Amazon S3模式云存储加密解决方案
保证云端静态数据安全的最大挑战在于密钥管理。网络安全传输过程中加密数据的存在往往只有几毫秒到几秒的时间,但是存储系统中的加密数据需要保存的时间可以到几年甚至上百年,如果加密系统的实现方式不当或加密算法的强度不够,会导致攻击者有充裕的时间用于尝试 不同的攻击手段,极大增加存储系统的风险。下面就以主 流云存储服务Amazon S3 (simple storage service,简单存储服务)模式为例进行分析。
1、Amazon S3云存储服务的数据加密及密钥管理方案
Amazon公司是最早推出云存储服务的企业,也是最成功的企业。为了利用闲置的硬件资源,Amazon公司从2006年开始对外出租云存储服务,即S3,该服务是Arnazon网络服务(Amazon web service,AWS)的一部分o Amazon网络服务由4个部分组成:简单排列服务(simple queuing service)、简单存储服 务(simple storage service)、弹性计算云(elasticcompute cloud,EC2)和简单数据库(simple DB)。由于存储费用低廉、服务稳定,S3获得了大量客户的青睐。此外,Amazon还推出了弹性块存储(elastic block storage,EBS)技术,支持数据的持续性存储。其中S3和EC2标志着云计算发展进入新阶段。
图1是S3的工作原理示意。如图1所示,S3服务数据存储方案如下:
(1)客户首次登录云服务器后上传加解密主密钥master S3 key,S3密钥管理服务将其保存在服务器上,其 中主密钥保存的形式可能是明文也可能是密文。加密函数为E,主密钥记为K。
(2)数据加密时,S3密钥管理服务依据自身密钥生成算法产生加密配对密钥孟,由云服务器对客户上传的需要加密存储数据M进行加密并存储到云存储服务器上,数学表达式为:
(3)S3密钥管理服务用客户主密钥依据加密算法对配对密钥k进行加密并存储到云服务器上,数学表达式为:
(4)数据解密时按照加密逆序过程进行,解密函数D作用于Ck、0产生解密密钥k与数据M,数学表达式为:
事实上,几大主流云存储服务商所使用的数据加密技术大同小异,唯一的差别是当使用Amazon S3服务器端加密功能时,密钥在Amazon手上,而使用Dropbox时,密钥在Dropbox手上。这两种方式实质上都一样,虽然客户上传的信息在供应商的服务器上都是保持加密的,但真正的信息拥有者客户却无法控制这些加密密钥。
2、Amazon S3云存储服务的安全问题
事实上,S3静态数据加密服务并不像看起来那么完美、安全,其中一个重大的限制是,这个解决方案没有提供外部密钥管理的功能,主密钥跟S3认证相连结,云端默认登录账户即合法账户,如果云端账户认证被入侵,黑客就可以轻而易举地窃取客户存储在云服务端的一切数据。要黑掉一个云端账号并不用很高深的技术和太高的成本,合理地运用社会工程学及一些简单木马病毒就可以很容易地获取云端账号及密码。
另一方面不能保证对CSP的绝对信任,客户的所有数据都被Amazon掌控着,包括密钥,客户所谓的安全只能寄希望于服务端的绝对安全与服务商及管理人员的绝对良知,显然事实并非如此,特权管理人员的存在始终是无法逾越的安全隐患。事实上,云存储的几个重要服务商如亚马逊、谷歌等都曾出现过各种安全问题,并导致了严重的后果。因此,寻找一种对于客户来说安全可靠的静态数据加密解决方案显得尤为重要。传统的云加密解决方案将用户加密密钥交付给了云服务商,增加了泄露密钥的可能性,要解决静态数据的安全问题,必须使加密密钥受用户控制,不存储在云中,不暴露在风险中。
三、分离密钥云存储加密解决方案
从上面的分析中发现,终端数据安全的压力主要集中在两个方面:一是Amazon S3认证的安全问题,二是主密钥的安全问题。针对以上问题,本文设计了一套新的密钥管理方法分离密钥存储服务(separated key S3),试图解决上述两个问题。分离密钥存储服务的核心是虚拟密钥管理(virtual key management,VKM)服务。
1、虚拟密钥管理服务框架
在风险管理方面,为了达到数据的安全,虚拟密钥管理服务部署在云端服务器和存储服务器之间,以确保云端服务器和存储服务器间的每字节数据都被加密了,并且从存储服务器移动到云服务器的每字节数据都只能通过客户来解密。虚拟密钥管理服务使用VPD(virtual private data)应用程序,VPD是使用加密算法(如AES-256)解密任何磁盘或存储阵列的虚拟设备。在数据进行存储和读取操作时,VPD负责检索服务器配对密钥以及请求客户密钥,完成存储数据的加解密。图2是其服务框架示意,为简化叙述以下只介绍虚拟密钥管理服务实现数据加密的流程。
(1)客户向云服务器递交数据加解密申请。
(2)云服务器验证客户的加密申请后向虚拟密钥管理服务器发出数据加密指令。
(3)虚拟密钥管理服务器在处理加密的过程中需要向客户请求主密钥。
(4)客户通过对密钥请求的验证后返回主密钥,并将需加密的数据传输给虚拟密钥管理服务器。
(5)虚拟密钥管理服务器依据主密钥产生数据加密密钥对客户数据进行加密并配对分配存储到对应的云存储服务器上,在此过程中主密钥和最终用于数据加密的密钥并不会以任何方式存放在服务器上,这是保证数据安全的关键。
(6)数据加密存储完成后云存储服务器向虚拟密钥服务器返回验证信息。
(7)虚拟密钥管理服务器向云服务器返回验证信息。
(8)云服务器向客户返回验证信息。
图2中(3)、(4)这两个环节是数据加解密的关键步骤,客户参与了每一次数据加解密的过程并起到了决定性作用,只有当客户持有主密钥来参与才能完成上述加解密过程,也就是说,当客户的数据完成加密存储之后,如需解密就必须提供主密钥,否则,数据就不能被解密,于是客户成为唯一可以解密数据的人,实现了将数据存储到云端而又保证数据的完全私有化。
2、分离密钥存储服务存储加密解决方案
该方法主要受到银行保险箱模式的启发,依据保险箱模式设置两个密钥,一个交给客户保管,将它称为主密钥K,另一个交给VKM服务,由VKM依据客户数据及生成规则产生服务器配对密钥忌。在数据进行加密之前,虚拟密钥管理服务请求客户主密钥根据主密钥K与服务器配对密钥孟依据本文所采用的安全算法B,产生新的数据加密密钥K’对存储数据进行加密存储,其数学式表达为:
正如银行保险箱一样,客户如果不提供服务商提供的服务器配对密钥,就无法解密数据,同样,如果服务商不提供客户持有的主密钥,也无法解密数据。其密钥关系如图3所示。
除了将密钥分别交由客户和虚拟密钥管理服务保管外,为了解决服务器配对密钥尼的安全问题,将服务器配对密钥通过客户的主密钥来加密,而主密钥只有客户本人保管,其数学式表达为:
因此,虽然上文所提到的特权管理人员可以通过入侵服务器持有配对密钥尼的存储密文Ck,但却不能读取密钥,因为它已经被加密了,并且他所能入侵的程度仅限于此,因为遗留在服务器上的存储控制信息只有这么多,在不知道客户主密钥K以及配对密钥七’的情况下,特权管理人员无法获取最终的数据加密密钥K’,依据AES算法的安全性,入侵客户数据的企图无法得逞。服务商尚不能破解客户存储在云端的数据,那么黑客就更无能为力了,就算黑客侵入云端服务器,他 所能窃取的也只是一堆毫无用处的密文,存储在云端的数据M就不会被泄露,数据实现了真正意义上的私有化,达到了数据安全的条件。此外,通过使用客户的主密钥来加密服务器配对密钥,完全缓解了终端数据保护的压力。其工作原理如图4所示。
从上面的分析和对比中很容易就可以发现分离密钥加密存储方案的巨大优势,在该套方案中,云端认证和客户数据加解密分离,在数据加密过程中将密钥实现了分离,这样一来主密钥成为了保证数据安全的唯一关键,而客户成了世界上唯一知晓主密钥的人,主密钥可以被存放在只有客户本人才知道的地方,实现了真正意义上的云端 静态数据私有化。
四、数据安全性
通过图2,可以分析出云环境中可能出现的两种隐私攻击。
·内部攻击:由于数据存放在服务商提供的存储服务器上,内部攻击者可以访问客户的数据。
·外部攻击:数据在传递的过程中,外部攻击者可以通过窃听等方式窃取数据或者通过攻击服务器窃取资料。
本文讨论的方案主要针对第一种攻击。首先,破解加密数据的关键数据加密密钥K’并没有以任何方式存放在服务器上,当且仅当数据进行加解密操作时生成并使用,这是与传统的云存储方式相比最大的安全性改进;其次,假设攻击者突破了服务器的安全防护措施,攻击者最多只能窃取客户存储在存储服务器上的数据密文CM和存储在虚拟密钥服务器上的服务器配对密钥密文伉,依据分离密钥加密算法,在不知道客户主密钥的情况下,攻击者无法解密服务器配对密钥后,也不能得到数据解密密钥K’,即无法解密加密后的数据密文CM,客户存储在云端的私密数据不能被泄露,数据的安全性得到验证。对于第二种攻击,数据由静态成为动态,可使用安全的HTTPS加密传输协议保证私有数据和主密钥在传输过程中的安全。
此外,该方案的特点是能在很短的时间内创建一个安全的环境,可以将信任安全厂商或者云供应商的需求直接忽略掉。
五、性能测试
笔者采用已在校园内使用的Linkl系统,Linkl是为学校内用户提供服务的海量数据存储平台,由客户端和服务器端组成,安装客户端后可以与服务器端进行交互上传和下载数据。分别在服务器端物理主机上部署模拟Amazon S3及分离密钥存储服务,模拟实际Intemet环境下的云存储服务。需要说明的是,为便于比较服务器参数,这里将分离密钥存储服务直接部署到物理主机上,而没有另外部署,这与设计方案略有出入。基于这种架构,进行了数据传输测试,测试环境:网络坏境为100 Mbit/s以太网;服务器端为一台IBM System x3500 M4台式机,CPU为Xeon E5 4核2.4 GHz,内存8 GB,硬盘为SATA 300 GB(7 200转),网卡为1 000 Mbit/s以太网;客户端为一台华硕S400E3217CA,CPU为Intel酷睿3双核1.8 GHz,内存4GB,硬盘为SATA 500 GB(5 400转),网卡为1 000 Mbit/s以太网卡。
笔者使用了一个1 GB的文件进行大文件传输测试,其中“Origin”代表现有的存储环境,没有加密功能状态下的性能;“Amazon”代表部署了具有普通数据加密功能,并不能保证数据私密性模拟Amazon S3后的性能;“Separated”代表部署了可以保证数据的安全性和私密性的分离密钥存储服务后的性能。表1、图5为测试结果。
表1和图5表现了服务器端在原始、加入Amazon S3和加入分离密钥存储服务这3种状态下CPU占用率与下载速度之比,在3种状态下,除回复主密钥外客户端并未有附加运行程序,所以CPU占用率和下载速度并没有明显变化。从表1和图5中可以看到,在服务器端和原始的情况相比,Arnazon S3的部署引入了13倍多的性能损失,而分离密钥存储服务则引入了3倍多的性能损失。
从性能测试的情况来看,分离密钥存储服务引入的性能损失远小于使用Amazon S3引入的性能损失,为了保护客户数据的私密性,实现数据的私有化,这样的损失对于应用来说是可以接受的。
小知识之静态数据
从程序员的角度看,静态数据是,当我们的客户 在查看数据的时候它已经被生成好了,没有和服务器数据库进行交互的数据,直接在客户端创建完毕,这种我们叫做静态数据。