为解决云存储强安全性要求(即云端也是不可信的情况)下的数据安全问题,提出一个基于引导密钥广播加密的云存储系统方案。
一、本文的应用场景和方案框架
设置一个应用场景如下:
(1)分布式云存储系统中,用户将自己的数据放在云端,并能随时随地读取,而不需要重复认证。
(2)云端是不可信的,存在丢失和篡改数据的风险。
(3)数据在篡改时能够定位并恢复数据能够在可信第三方的监察下,确定问责主体。
(4)能实现合法用户的数据共享和非法用户的拒绝访问。
基于上述场景,给出技术上的实现功能框图,如图1所示。主要涉及4个部分的技术细节:数据处理、引导密钥的加密和数据读取、广播加密方案和基于可信第三方的数据审计和问责。
基于图1的框图,在下一节中逐项给出相应的技术实现。
二、可信高效的分布式云存储方案
1、用户数据的处理
用户文件首先被切割成分片,然后分片被发散存储到不同的存储节点。现有的大部分存储系统都使用的这种存储方式。分片处理的原因是由于文件的大小并不统一,整体存储容易产生碎片。而且文件完整存储在某个存储节点上,容易导致信息泄露。为避免分片的节点的崩溃,需要引入冗余。
然后对分片的数据进行编码,如Tomado码,具有良好的纠删能力。
进一步对数据码进行哈希运算,实现检测数据篡改功能。
这里使用一种带密钥的哈希函数,如HMAC-SHA1。对每个数据块都使用HAMC-SHA1和密钥Enck计算一个哈希值,并且将数据块与对应的哈希值保存。对于数据块x,攻击者在没有西ci的情况下,无法找到数据块y≠z且Hmac(Enck,z)- Hmac(Fnck,y).而且也无法使用(y,Hmac(Enck,3,))替换(x,Hmac(Enck,z))。这种特性将保证我们可以检测出数据是否被篡改,只要我们对数据进行相同的哈希并与保存的哈希值进行配对比较。
我们检测到错误数据后,还需要去纠正它。先丢弃错误的数据块,利用Tomado码的良好纠删能力可以实现数据块的恢复。
2、引导密钥管理方案
根据Diffie-Hellman原理,一个密码系统的安全性不能依赖于算法本身,而是密钥,所以对密钥的产生和管理是系统安全的关键。
该部分主要讲述如何实现数据的强机密性,即除了用户自己,任何人都无法获取数据的有意义信息,哪怕是云服务提供商。为了达到这种安全性,传统的由云端负责加密的架构已经不适用。数据在上传到云端之前就需要在本地加密,且加密密钥仅用户所有。数据既然在本地被加密后存放到云端,则在下载回本地。进行数据读取时也需要被解密,其中的过程都将牵涉到密钥。
非对称加密算法的速度较慢,在面对较大的文件时力不从心,很难达到理想的速度,因此我们选用对称加密算法,用户在上传数据之前采用传统的对称加密技术(如AES)对数据进行加密。
在云存储中,由于存在大规模的用户,用户必须自己维护管理密钥,而云存储也丧失了简单、随地可用的特性。为了解决这个问题,我们引入引导密码。如图2所示。
引导密码是一个类似于邮箱密码或MSN密码的一个普通密码字符串,它的作用相当于一个密钥生成种子,通过它来生成加密所需的加密密钥。引导密码由两部分组成:
第一部分是由用户输入的记忆密码,第二部分是自动加上的当前加密的文件名或其它的文件唯一标识符。这样用户可以通过相同的记忆密码为不同的文件产生不同的引导密码,进而生成不同的加密密钥。相比直接使用加密密钥,使用更易于记忆的引导密码可以使用户避开密钥的管理等难题,用户只需要记忆自己输入的记忆密码即可。
引导密钥的获取需要一个密钥产生函数,这个函数的输入是引导密码,输出是加密密钥。密钥产生函数应该具备的第一个特性是只要而且只有输入相同,产生的输出相同。第二个特性是它应该将长度较短的引导密码发散成长度固定的加密密钥,如AES所需要的最短加密密钥长度128位。很明显,哈希函数MD5或SHAI都具备这两种特性,可以充当我们的密钥产生函数。
用户每次上传(下载)文件,都需要先输入记忆密码,组装成引导密码,通过哈希函数计算出加密密钥,然后对文件进行加密(解密)。引导密码只有用户知道,因此即使云提供商也无法获取数据的有意义信息。不足的地方是数据机密性不再取决于AES的安全性,降低到了引导密码的安全性。但这种安全性并非所想的那么不堪,对于一个16位长的没有任何社会规律的密码,不考虑其它途径如中毒导致的密码泄露,使用一台普通PC穷举攻击获取这个密码所需的时间以亿年计。而且相对于直接使用加密密钥带来的几乎无法接受的密钥管理问题,这是可以接受的。
3、广播加密方案
为了使得合法数据得到共享,同时禁止非法用户获取资源,采用广播加密方案(broadcast encrypeion scheme)来解决。
广播加密方案是发送者向所有节点颁发加密的消息,只允许授权解密的用户能成功解密的密码系统。已广泛应用于有偿电视(pay-TV)系统、版权资料发布和CD/DVD内容保护等等。
最基本的广播加密方案一般由以下3个算法组成:
-Setup:输入用户u∈U,且构造一个私有信息Pu∈P。
-Broadcast:输入revoked用户集R和会话密钥k∈K,输出广播消息B,其中:
-Decrypt:输入B,pu和u,并计算共同密钥,输出对应的明文。否则失败。
初始化:用户首先生成一个足够健壮的私有主密钥MSK,主密钥即为足够长度的引导密钥,然后将私有主密钥与目标接收点的身份ID和密钥版本串联在一起,并对该整体进行哈希运算,将得到的结果(联合私钥SkLDi)作为该对象的对应于本次版本下的一个加密密钥。
加密:对于私钥skidi和一个用户的身份集合S={IDi.…,,DIs},s为用户节点数目,经过哈希处理,加密密钥即为skrrx,输出为一对(H,K),其中H为S的哈希后的值.K是加密方案的密钥集合,为占s个私钥sidi的集合。
广播:当需要将消息M∈{0,1}广播给s中的所有或部分用户时,广播者先生成(H.K)-H(5,Sk,Di),然后根据加密算法生成(Hdr,S.CM) --Encrypt (H,K.M).CM为消息M的加密信息。广播者广播(Hdr,S.CAl)。(Hdr,S)作为整个报头,CM作为广播主体。
解密:利用解密算法计算Decrypt(S.ID.Hdr,skID:),在已知子集S={IDl,…,,DIs},某个接收者的身份ID和其私钥skm的情况下,可以解析报头Hdr,得到该合法节点加密密钥,再对消息解CAf解密,从而恢复消息M。
其中加密和解密算法采用设计过程,此处就不再重复叙述了。改进后的算法融合了本文的引导密钥机制和带密钥的哈希运算,相对于原文献,灵活性和安全性有进一步的提高。
融合上述的引导密钥机制和广播加密方案,进一步提出基于引导密钥加密的广播加密方案的云存储方案如图3所示。
实线表示实际的路径,用户将数据通过加密,传到网上,通过公共接口达到云存储服务器端,写入云端。虚线表示透明功能选项,本文的加密机制采用引导密钥加密,从用户角度来看,就是直接加密数据放到云端,并用引导密钥滨取数据;云端的加密密钥是采用广播方式发送到用户端,合法的认证用户可以提取数据。上述的引导密钥只对文件所有者或共享者所有的,对云端也是保密的,安全性进一步提高。
4、基于可信第三方的数据审计
为了实现强安全性的审计功能,本文引入了可信第三方参与。引入可信第三方之后的数据流向图如图4所示。
图中SSP (storage service provider)表示云存储服务提供商,TTP表示可信第三方。相对于图3、图4增加了可信第三方以及基于第三方的审计功能,图中描述了3种独立的数据流:文件读/写数据流,该数据流只存在于用户和SLSP之间}凭单生成数据流,关于数据流的交互凭据,存在SSP上;问责审计数据流。
审计和问责的过程如下:
(1)在文件读写的过程中分别增加凭据流和审计流,可信第三方负责认证信息的收集和证言的判断。用户读写数据流(R\ Wflow)时,按照版本递增的原则给每条操作设置一个字符串一凭据,为用户读取和写入的文件提供完整性保护的同时为审计提供证据。
(2)当通过前面描述的方法检测出数据不完整或者丢失篡改时,由于云端的不可信,用户很可能与云端发生错误归属的争议。这时S.SP可以提取和验证在数据交互中产生的凭单链条来实现相关操作的举证。
(3)可信第三方在认证各方以及凭据的合法性后,出示证言,进行追贵,或是用户的操作错误,或是云端的恶意操作,然后主张权责归属。
该方案,在图3对云端保密数据的基础上,进一步确保了云端的强安全性。
三、方案性能分析
所提方案具有较好的灵活性和较高的安全性。
(l)本方案采用用户引导密码来生成主密钥,在保证系统机密性要求的前提下,使得用户能够在任何时间、任何地点和任何一台机器上实现对密钥数据的有效管理。这实质上是引入了人的管理因素,每个人只需要记住涉及自己的若干个密码,就可以维护自己的数据以及与他人进行广播共享,而若干密码可以由用户设置的引导密码来完成加密解密f这样可以避免云端管理密钥惜来的可能的泄漏或者负担过重的问题。
(2)用户内容对云端保密。本文方案通过用户来管理密钥,同时对具体内容进行加密传输并储存在云端。这样云端或可信第三方部无法知道文件内容,就可以避免前述的存储在云端的数据不会被泄露(至少泄露信息可控),另一方面云端很难有意或无意的更改存储的数据。特别是将重要敏感的数据交给云端托管时,这些措施很有必要。传统的云存储都是用明文存放数据后在云端加密,因此数据的安全性依赖于对云端的信任,而一旦云端的访问控制机制出现问题后果不堪没想。
(3)本文的广播加密的作用类似于数字版权保护。文件对象的创建者通过广播加密向允许访问该文件对象的用户范围广播该对象的加密密钥,只有处于创建者指定的集合中的用户才能解密收到的消息从而获得加密密钥。密钥轮换用来在需要变更能够访问该文件的用户范围时使用,文件对象的创建耆将对新的能够访问该对象的用户集合广播新的密钥,同时更改密钥版本(版本号加1)。
(4)所提方案使用一种带密钥的哈希函数对数据块进行加密。这种哈希函数与普通哈希函数的区别是它的哈希结果不仅与输入数据有关,而且与输入密钥也有关。对于同一个数据块,输入不同的密钥产生的哈希结果也是不同的。相对普通哈希解决方案不能检测内容和哈希值同时被替换的情况,提高了篡改检测的准确性和安全性。
(5)问责的效果和抗攻击。云提供商故意修改或破坏存放的数据对象;由于存放在云端的数据经过了分片和单向函数的置乱,云提供商SSP无法伪造一个合法签名的数据对象;同时由于每个数据对象每次合理的修改后,都会产生一个凭据,这样就形成了一个凭据链,本方案引入了可信第三方的签名认证,这样方案中涉及到的关键动作均有三方签名的凭据做保障,可信第三方负责确保凭据链的完整性和最新性。若出现云提供商的违规,是可以定位SSP的责任的。如果SSP想删除某个对象时,由于每个数据对象每次合理的修改后的版本号是递增的关系,不同的版本之间也构成了一个可认证的凭据链,删除对象会造成凭据链条的跳跃情况,很容易被发现。如果云端想用替换的方法,如用一个相同版本号的凭据替换恶意操作部分的凭据,则需要同时伪造TTP和用户的签名,这是非常困难的。
同理用户出现上述的违规行为,或抵赖自身行为,或污蔑对方,也是可以通过对方(SSP)举证,可信第三方认证双方身份,并出示证言,而判断各自的权责归属的。
小知识之云存储
云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是一种新兴的网络存储技术,是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。简单来说,云存储就是将储存资源放到云上供人存取的一种新兴方案。使用者可以在任何时间、任何地方,透过任何可连网的装置连接到云上方便地存取数据。