保护存储设备中数据机密性与完整性的方法和装置的制作方法

文档序号:6391650阅读:172来源:国知局

专利名称::保护存储设备中数据机密性与完整性的方法和装置的制作方法
技术领域
:本发明涉及数据安全,特别是指为存储设备中的数据提供机密性和完整性保护的方法和装置。
背景技术
:数据的安全保护涉及诸多方面;其中,重要的两点在于保护数据的机密性和保护数据的完整性。数据的机密性是指数据只能为所限定的使用者查看或理解;一般地,保护数据机密性的有效方式是对数据进行加密;即,只有合法的使用者能够正确解密数据而理解数据或者看到数据的原始内容。数据的完整性是指防止数据的讹误(即出错)或非授权的修改;也就是为数据提供一个篡改证明环境。维护数据的机密性和完整性,对于使用者而言具有十分重要的意义。然而,随着信息系统的发展,数据的机密性和完整性保护面临许多新的问题。举例来说,远程数据存储设备可以通过IP网络连接在主机上,而不是像传统的存储体系结构那样将存储设备与计算机系统通过总线在本地连接。再比如,网格(Grid)计算环境中,数据是分布存储于广域分布的网络设备上的。虽然数据的分布式存储带来了诸多好处,但是,远程存储的数据面临复杂的安全威胁,其原因在于(i)数据在网络上传输时,攻击者可能会窃听或者修改数据;(ii)数据存储于远程存储设备上时,攻击者可能会侵入该设备,甚至该设备本身的管理员也可能是恶意的,从而使得数据会被非授权地阅读或者被非授权地篡改。类似的问题同样也存在于单一的本地计算机系统中。举例来说,用户暂时离开该计算机系统时,用户可能不希望在自己离开的期间内有其他人查看或者改动自己所拥有的数据;如果不能物理地排斥其他人接触该计算机系统,用户想达到自己的目的是比较困难的。这就要求提供适当的机制,以使得数据的使用者可以信赖地使用非可信存储设备上存储的数据;即为非可信存储设备上存储的数据提供机密性和完整性保护。从技术的角度来说,保护数据的机密性是一个相对直接的过程只要保证加密密钥不被攻击者获得,那么数据经过加密后存储于非可信存储设备上,其机密性是可以得到保证的;所需考虑的主要是加密的强度是否足够高,以及加密的性能是否足够好。然而,对于数据的完整性保护,由于数据的使用者无法阻止数据被直接地或物理地被修改(比如,当数据存储于远程存储服务器时,远程存储服务器的管理员是恶意的;而作为管理员,他可以任意地直接修改位于该存储服务器上的数据),保护非可信存储设备上存储的数据的完整性是一个相对困难的过程。有若干研究成果或文献涉及此类问题的解决。比如,一些安全文件系统通过加密以保护数据的机密性;像CFS(M.Blaze,″Acryptographicfilesystemforunix″,In1stACMConferenceonCommunicationsandComputingSecurity,1993,pp.9-16)和Cryptfs(E.Zadok,I.Badulescu,andA.Shender.″CryptfsAstackablevnodelevelencryptionfilesystem″,Technicalreport,ComputerScienceDepartment,ColumbiaUniversity,1998)。软件工具Tripwire(Tripwire,http//www.tripwire.org)通过为文件计算消息认证码(messageauthenticationcode,MAC)来校验文件的完整性;但基于MAC的方法无法对抗重放攻击(replayattack),即不能阻止攻击者用拷贝的旧的合法的(数据,MAC)配对来替换新的(数据,MAC)配对所实施的攻击。现有的能够有效地提供完整性校验且能够对抗重放攻击的技术主要是基于哈希树(Hashtree)技术;例如,TDB(U.Maheshwari,R.Vingralek,andW.Shapiro.″HowtoBuildaTrustedDatabaseSystemonUntrustedStorage″,InProceedingsofOSDI2000,2000)、SUNDR(D.MazieresandD.Shasha.″Don’ttrustyourfileserver″,InProceedingsofthe8thWorkshoponHotTopicsinOperatingSystems,2001)和Arbre(FujitaTomonoriandOgawaraMasanori.″ProtectingtheIntegrityofanEntireFileSystem″,InproceedingsoftheFirstIEEEInternationalWorkshoponInformationAssurance,2003),等等。但是基于哈希树的完整性校验技术要求将被保护的数据视为一个整体;即,基于被保护的数据创建可信的哈希树根节点,依赖可信的哈希树根节点校验数据的完整性。这就使得每次完整性验证都涉及很多相关数据的读取与中间计算步骤,从而使得运行性能降低。虽然有多种优化的方法,但依然难以获得令人完全满意的效果。因此,数据的可信存储要求提供恰当的手段以保护数据的机密性和完整性。而现有技术存在保护能力或者保护性能的不足;例如,无法对抗重放攻击,或者能够对抗重放攻击但性能不理想,或者不能提供联机方式(指,随时校验所读数据的完整性,而不是等待一系列操作完成后再校验结果的完整性)的完整性保护,等等。因此,有效的数据保护技术,既可以维护数据的机密性,又可以维护数据的完整性(包含能够对抗重放攻击),且具有良好的性能表现,将有助于信息系统的发展和广泛应用。
发明内容本发明的目的在于给出一种保护存储于非可信存储设备上的数据的机密性和完整性的方法和装置。为实现本发明的目的,本发明所采用的技术方案是为当前数据块的每一次写操作,包括更新操作,生成唯一的密钥;基于该数据块的当前内容,创建一个消息认证码(或消息摘要);使用该数据块对应的密钥,通过对称密钥加密算法加密该数据块后,获得密文形式的该数据块;将密文形式的该数据块保存在非可信存储设备上;保存该数据块对应的消息认证码;保存该数据块对应的密钥;当密文形式的该数据块从非可信存储设备读出后,依据该数据块对应的密钥,解密该数据块;重新为该数据块计算消息认证码,并与所保存的消息认证码比对,二者一致则表明数据可信。在为实现本发明的目的所采用的技术方案中,为数据块创建消息认证码可采用任何从密码角度安全的单向散列函数。在为实现本发明的目的所采用的技术方案中,数据块对应的消息认证码可以用该数据块对应的密钥加密,并与该数据块一同保存在非可信存储设备上;此时,当密文形式的该数据块从非可信存储设备读出时,对应的密文形式的消息认证码也一同由非可信存储设备读出,并用该数据块对应的密钥解密,然后将解密的结果与重新为该数据块计算消息认证码的结果进行比对。在为实现本发明的目的所采用的技术方案中,当前数据块所对应的消息认证码可以保存在不能被攻击的可信存储设备上,或者将数据块所对应的消息认证码保存在其它具有机密性与完整性保护能力的存储设备中。在为实现本发明的目的所采用的技术方案中,为当前数据块的每一次写操作(包括更新操作)生成密钥时,可采用生成随机数作为密钥的方法。在为实现本发明的目的所采用的技术方案中,为当前数据块的每一次写操作(包括更新操作)生成密钥时,可使用该数据块对应的消息认证码作为密钥;此时,保存该数据块对应的消息认证码与保存该数据块对应的密钥是同一过程。在为实现本发明的目的所采用的技术方案中,为当前数据块的每一次写操作(包括更新操作)生成密钥时,可进一步地结合根秘密信息实施变换而得到实际用于加密的密钥。在为实现本发明的目的所采用的技术方案中,可以将密钥保存在不能被攻击的可信存储设备中,或者将密钥保存在其它具有机密性与完整性保护能力的存储设备中。通过本发明所提出的方法和装置,能够(1)由于数据块是被加密存储的,因而数据块不会由于数据存储于非可信存储设备上而泄漏其原始内容;即,机密性得到保护。(2)数据块的完整性可通过其对应的消息认证码加以校验;同时,由于每个数据块的每一次写操作(包括更新操作)都对应一个唯一的密钥,不同的数据块或者同一数据块不同的写操作(包括更新操作)所对应的密钥是不同的;所以,包括重放在内的完整性攻击是不可行的,因为不正确的密钥使得解密后的数据与其消息认证码不能保持匹配。(3)完整性是针对每一个数据块单独地实施校验的,不需要额外读取更多的数据块,因而具有良好的性能。说明书包括1幅附图,是应用本发明所构造的可保护远程存储服务器所存储的数据的机密性与完整性的文件系统。具体实施例方式本发明所考虑的,是如何保护存储于非可信存储设备上数据的机密性和完整性。鉴于公知的原因,本发明对所使用的某些术语、名词和表达方式等不作显式的定义或说明,比如数据、数据块、位(bit)、字节(byte)、数的表达方式、文件系统、元数据(meta-data)、密钥、加密、解密、单向散列函数(One-wayhashfunction)、哈希(Hash)、MD5算法(TheMD5Message-DigestAlgorithm)、SHA1算法(SHA1SecureHashAlgorithm)、对称密钥加密算法、AES(AdvancedEncryptionStandard,高级加密标准)、消息认证码、本地计算机系统、远程、存储服务器、存储设备、磁盘、扇区、闪存盘(Flashdisk)、USB(UniversalSerialBus)、SCSI、ATA(ATAttachment)硬盘,等等。本发明中,非可信存储设备指代以各种方式连接与计算机系统的各种存储设备;包括以网络远程连接或以总线本地连接的存储设备,也包括存储介质为磁性介质或半导体介质,还包括能够提供存储服务的计算机系统(即,存储服务器)。举例来说,非可信存储设备可以是通过光纤以IP网络技术连接与本地计算机系统的SCSI设备;也可以是本地计算机系统所安装的ATA硬盘。从逻辑功能上来看,本发明中所指的非可信存储设备是一个块存储设备,或表现为一个块服务器;块存储设备(或块服务器)有两个基本功能(i)给定写命令、数据块和对应的块索引,它可以存储数据块于合适的位置;(ii)给定读命令和块索引,它可以送出对应的数据块。在块存储设备中,数据以数据块的形式被操作。例如,在个人计算机系统中,Windows操作系统以“簇/Cluster”作为磁盘操作的单位;直接面对硬盘接口而言,“扇区/Sector”是磁盘操作的单位;“簇”和“扇区”都可称为“块”。本发明中所提出的,用于保护非可信存储设备上存储的数据的机密性和完整性的具体方式为数据存储的体系结构被抽象为3个层次,分别是表现层、安全层和存储层。这三个层次的作用分别为表现层——表现层位于可信边界以内,即攻击者不能侵入表现层。表现层中的数据块是数据块的原始内容比如,一个文档对应的数据块被加载到本地计算机系统的内存中并被打开时,该数据块所表现出的文档内容。表现层通过数据块的映射,即数据块的块索引,来确定表现层中的数据块与存储在存储层中的数据块的对应关系;比如,一个在表现层中被打开的文档所包含的某个数据块是对应存储在存储层的哪个位置。存储层——存储层提供实质上的数据存储能力。存储层位于可信边界以外,攻击者有可能侵入存储层,即攻击者可以看到与篡改位于存储层的数据块的内容。存储层的功能表现为块服务;即,给定读命令和一个块索引,存储层给出对应的数据块;给定写命令、数据块和对应的块索引,存储层能够将数据块存储于对应的位置。安全层——安全层至少有一部分位于可信边界以内,且介于表现层和存储层之间。安全层负责维护数据的机密性和完整性保护。具体地,安全层将由表现层流向存储层的数据块加以变换,如加密以使变换后的数据块不能被攻击者所理解(即,保护机密性),并生成相应的完整性校验信息(以便再次使用该数据块时能够校验其完整性);安全层还将由存储层流向表现层的数据块进行还原与校验,以重新使得数据块能够被表现层所理解,并确定数据块是否保持完整性。为描述方便,约定称明文形式的数据块为BDATA,而称对应的明文形式的消息认证码为BMAC。称密文形式的数据块为SBDATA,而称对应的密文形式的消息认证码为SBMAC。称数据块的块索引为BINDEX;某一数据块的块索引BINDEX可以是该数据块的编号、存储位置信息,或者是其它能够索引该数据块的信息。BDATA和其对应的SBDATA,BMAC和其对应的SBMAC,BDATA和其对应的BMAC,以及SBDATA和其对应的SBMAC,都是通过BINDEX关联在一起的;或者说,对于同一数据块而言,其BDATA、SBDATA、BMAC和SBMAC,都对应同一BINDEX。数据块加密采用对称密钥加密算法,同一数据块所对应的加密密钥和相应解密密钥是一致的;称加密BDATA而得到SBDATA所使用的密钥,以及加密BMAC而得到SBMAC所使用的密钥,为BKEY解密SBDATA而得到BDATA所使用的密钥,以及解密SBMAC而得到BMAC所使用的密钥,也为BKEY。依据不同的情形,数据的机密性和完整性保护是由安全层通过如下具体步骤实现的1)情形1.以随机数作为密钥,数据块及其消息认证码加密后存储于非可信存储设备上在这种情况下,安全层为每个由表现层流向存储层的数据块作如下处理①获取当前由表现层流出的写命令、BDATA和对应的BINDEX。②生成一个新的随机数,并基于该随机数获得加密该BDATA所使用的密钥BKEY;每次写命令都导致新的加密密钥生成,不管BINDEX是否发生变化,也不管写命令是写一个新的数据块还是更新原有的数据块。③将该BDATA经单向散列函数的计算而得出该BDATA对应的消息认证码BMAC,连接二者而得到BPACKEY;即,BPACKET是一个对应的(BDATA,BMAC)配对。④使用该BDATA对应的BKEY加密BPACKET而得到SBPACKEY;即,SBPACKET是一个对应的(SBDATA,SBMAC)配对。⑤将写命令、SBPACKET以及对应的BINDEX发向存储层;若“①”中写命令和BINDEX已经直接流向存储层,则安全层只需将SBPACKET发向存储层。⑥在可信边界内,存储该BDATA对应的密钥BKEY,并以BINDEX作为存储BKEY的索引。在这种情况下,安全层为每个由存储层流向表现层的数据块作如下处理①获取当前由表现层流出的读命令和对应的BINDEX;同时,读命令和BINDEX直接流向存储层。②获取由存储层返回的SBPACKET,即获取返回的(SBDATA,SBMAC)配对。③依据当前的BINDEX,取出所存储的与该BINDEX相关联的密钥BKEY,并使用该BKEY解密返回的SBPACKET。④为解密SBPACKET而得到的BDATA经单向散列函数的计算得出对应的消息认证码,并将计算的结果与解密SBPACKET而得到的BMAC进行比对。⑤如果“④”中比对的结果匹配,则将BDATA传递给表现层;否则,报告异常。2)情形2.以消息认证码作为密钥,数据块加密后存储于非可信存储设备上在这种情况下,安全层为每个由表现层流向存储层的数据块作如下处理①获取当前由表现层流出的写命令、BDATA和对应的BINDEX。②将该BDATA经单向散列函数的计算而得出该BDATA对应的消息认证码BMAC。③使用该BMAC作为加密该BDATA所使用的密钥BKEY。④使用该BDATA对应的BKEY加密BDATA而得到SBDATA。⑤将写命令、SBDATA以及对应的BINDEX发向存储层;若“①”中写命令和BINDEX已经直接流向存储层,则安全层只需将SBDATA发向存储层。⑥在可信边界内,存储该BDATA对应的密钥BKEY,也即该BDATA对应的BMAC;并以BINDEX作为存储的索引。在这种情况下,安全层为每个由存储层流向表现层的数据块作如下处理①获取当前由表现层流出的读命令和对应的BINDEX;同时,读命令和BINDEX直接流向存储层。②获取由存储层返回的SBDATA。③依据当前的BINDEX,取出所存储的与该BINDEX相关联的密钥BKEY;也即与该BINDEX、或与该SBDATA,相关联的BMAC;并使用该BKEY解密返回的SBDATA。④为解密SBDATA而得到的BDATA经单向散列函数的计算得出对应的消息认证码,并将计算的结果与“③”中取出的BMAC进行比对。⑤如果“④”中比对的结果匹配,则将BDATA传递给表现层;否则,报告异常。3)其它情形可以进一步基于根秘密信息加以变换而得到实际的加密密钥。比如,在“情形1”时,生成的随机数不直接用作实际的加密密钥。实际的加密密钥由所生成的随机数与根秘密信息共同产生,即BKEY=FUNC(Random,RootKey)其中,Random是所生成的随机数,RootKey是根秘密信息(比如,内置于处理器中的根密钥),BKEY是实际的加密密钥,FUNC是变换函数。这样一来,可以降低对随机数生成质量的要求;即,可以进一步通过根秘密信息使得加密密钥的产生在计算上难以预测。另外,也可以降低对随机数生成长度的要求;比如,即便生成的随机数长度只有64bits,也可以通过进一步变换而获得128bits长度的加密密钥。另外,块索引可以使用数据块的单向散列函数变换结果,或者基于数据块的单向散列函数变换结果进一步变换而得到。再有,数据块的消息认证码可以与数据块一起被加密存储在非可信存储设备上(如“情形1”),也可以单独保存在可信边界内部(此时,不必将数据块的消息认证码加密)。还有,将数据块对应的密钥,或者将数据块对应的消息认证码保存在可信边界内部,是指将它们保存在可信边界以内的存储设备上(或者说,保存它们的存储设备是可信的而不被攻击的)。其实,它们也可以作为被保护的对象,存储在任何具有机密性与完整性保护能力的存储设备中。从上述描述可看出,本发明通过对数据块BDATA实施加密,攻击者不能从密文数据块SBDATA理解数据,因而可以保护数据的机密性。本发明对数据的完整性可以实施有效的保护。对于“情形1”,完整性保护体现在(i)完整性基于数据块的消息认证码得到验证,因为攻击者不知道加密数据块所使用的密钥,因而攻击者无法伪造(SBDATA,SBMAC)配对而使得解密后得到的(BDATA,BMAC)配对保持匹配;(ii)拷贝另外一个BINDEX对应的(SBDATA,SBMAC)实施完整性攻击是不可行的,因为每个BINDEX对应的密钥不同,从而使得所拷贝的(SBDATA,SBMAC)配对在解密后无法保持匹配;(iii)重放攻击也是不可行的,因为同一BINDEX所对应的每一次写(包括更新)操作都生成不同的密钥,因而拷贝旧的(SBDATA,SBMAC)配对也无法在解密后保持匹配。对于“情形2”,完整性保护体现在(i)完整性基于数据块的消息认证码得到验证,因为攻击者不知道加密数据块所使用的密钥,因而攻击者无法伪造SBDATA而使得解密后得到的BDATA与所保存的BMAC保持匹配;(ii)拷贝另外一个BINDEX对应的SBDATA实施完整性攻击是不可行的,因为每个BINDEX对应的密钥都不同,而使得所拷贝的SBDATA在解密后无法与BMAC保持匹配(iii)重放攻击也是不可行的,因为同一BINDEX所对应的每一次写(包括更新)操作都生成不同的密钥,因此拷贝旧的SBDATA也无法在解密后与BMAC保持匹配。同样的,其它情形下完整性也可得到保护。另外,完整性校验过程可以快速完成,因为不需要将被保护的全部数据视为一个整体,而是依赖每个单独的数据块就可以完成校验过程。下面对本发明所描述的方法和装置加以示例说明。(示例)可保护远程存储服务器所存储的数据的机密性与完整性的文件系统附图是应用本发明所构造的可保护远程存储服务器所存储的数据的机密性与完整性的文件系统。其目的是使文件系统101可以使用远程存储服务器300所提供的存储能力,而同时不必信赖远程存储服务器300。附图中,数据存储的体系结构被划分为3个层次。这3个层次分别是位于本地计算机系统100上的作为表现层的文件系统101、位于本地计算机系统上的作为安全层的安全机制200和作为存储层的远程存储服务器300(远程存储服务器表现为块服务器)。其中,本地计算机系统100是可信的(指不能被攻击者所攻击),因而文件系统101和安全机制200是可信的;远程存储服务器300是不可信的(指可能被攻击者所攻击)。附图中,文件系统101可以是任何常用的文件系统,如ext2文件系统(Thesecondextendedfilesystem)。文件系统101的元数据102(元数据,即Meta-data;如ext2中的inodetable等)由文件系统101自身维护,且存放在本地计算机系统100上。组成文件系统101中文件的数据以数据块的形式被加密存储于远程存储服务器300上。称明文形式的文件数据块为F_BDATA;而F_BDATA的密文形式为F_SBDATA。文件系统101通过元数据102,可以知道组成某一确定文件的全部F_BDATA所对应的块索引;称某个F_BDATA对应的块索引为F_BINDEX。每个数据块F_BDATA有一个对应的消息认证码F_BMAC;而F_BMAC的密文形式为F_SBMAC。F_SBMAC与密文形式数据块F_SBDATA一样,都是存储于远程存储服务器300上的,且F_SBMAC与对应的F_SBDATA是通过F_BINDEX关联在一起的。附图中,文件系统101的数据存取功能定义为①写数所块——发送写命令(写命令包括更新操作)、所写的数据块F_BDATA和对应的块索引F_BINDEX。②读数据块——发送读命令、所读数据块对应的F_BINDEX。附图中,安全机制200介于文件系统101和远程存储服务器300之间;它截获文件系统发出的数据块,对数据块实施变换(加密数据块以及生成相应的消息认证码)后,将变换结果写向远程存储服务器300;它还将由远程存储服务器返回的数据块解密并验证,并将合法的数据块传送给文件系统101。安全机制200包括密钥生成单元201、哈希逻辑单元202、加密单元203,以及密钥存储单元204。密钥生成单元201可以每次生成一个不同的密钥,该密钥用作加密单元203的加密密钥F_BKEY;典型地,密钥生成单元201是一个伪随机数或者真随机数发生器;为确保安全性,密钥生成单元201应能够生成随机性足够好的随机数来作为密钥(即,所生成的随机数在计算上是难以预测的)。哈希逻辑单元202为数据块F_BDATA计算对应的消息认证码F_BMAC;典型地,哈希逻辑202选择从密码角度足够安全的哈希算法(或单向散列变换函数),如MD5哈希算法或SHA1哈希算法。加密单元203对F_BDATA和对应的F_BMAC实施加密而得到相应的F_SBDATA和F_SBMAC;典型地,加密单元203选择具有足够加密强度的加密算法,如3DES或AES分组对称密钥加密算法。密钥存储单元204将加密单元203每次加密F_BDATA和对应的F_BMAC所使用的密钥F_BKEY进行存储(相应的密钥被存储于本地计算机系统100上,比如本地计算机100的本地磁盘上),且存储的位置由与被加密的F_BDATA相对应的F_BINDEX所关联。附图中,安全机制200的数据保护功能定义为①密钥生成——为每一个文件系统101所发起的写数据块,由随机数生成单元201生成随机数作为加密的当前密钥F_BKEY;不管来自文件系统101的操作是原有数据块的更新操作还是新数据块的写操作,都被视为一次新的写数据块,即使与以前的写操作或者更新操作具有同样的F_BINDEX。②施加保护--由哈希逻辑单元202为当前来自文件系统101的数据块F_BDATA计算消息认证码F_BMAC;连接F_BDATA和对应的F_BMAC,得到F_BPACKET;使用当前密钥F_BKEY,通过加密单元203加密F_BPACKET而得到F_SBPACKET;将F_SBPACKET发送给远程存储服务器300;密钥存储单元204保存当前所使用的f_BKEY,并以当前数据块F_BDATA所对应的F_BINDEX作为存储F_BKEY的索引。③还原验证——依据文件系统101当前读数据块所使用的F_BINDEX,密钥存储单元204取出与该F_BINDEX对应的F_BKEY;使用此F_BKEY作为密钥,通过加密单元203解密由远程存储服务器300返回的F_SBPACKET而得到F_BPACKET,即得到F_BDATA和对应的F_BMAC;由哈希逻辑202为F_BDATA重新计算消息认证码,并与解密F_SBPACKET而得到的F_BMAC相比对;如果二者一致,则向文件系统101传递解密F_SBPACKET而得到的F_BDATA,否则,发出异常以指示数据不可信。附图中,远程存储服务器300远程存储服务器300提供数据存储服务。它包括块协议单元301,块寻址单元302,块存储单元303和消息认证码存储单元304。附图中,远程存储服务器300的数据存取功能定义为①保存数据——块协议单元301接受来自文件系统101的写数据块操作的写命令、块索引F_BINDEX,以及伴随文件系统101的写数据块操作而由安全机制200所发送过来的F_SBPACKET由块寻址单元302依据F_BINDEX,将F_SBPACKET保存在恰当的位置;即,保存F_SBDATA和F_SBMAC到块存储单元303和消息认证码存储单元304,且保存的位置由F_BINDEX所关联。②送出数据——块协议单元301接受来自文件系统101的读数据块操作的读命令、块索引F_BINDEX;由块寻址单元302依据F_BINDEX,从块存储单元303和消息认证码存储单元304相应的存储位置取出F_SBDATA和F_SBMAC,并将(F_SBDATA,F_SBMAC)配对所组成的F_SBPACKET送出到本地计算机系统100。这样,文件系统101向远程存储服务器300写一个数据块的流程为写数据块→密钥生成→施加保护→保存数据而文件系统101从远程存储服务器300读一个数据块的流程为读数据块→送出数据→还原验证附图中,具体参数可以选择为密钥生成单元201一次生成128bits随机数作为加密密钥;哈希逻辑202取MD5函数,则每个数据块生成128bits消息认证码;加密单元203取AES分组对称密钥加密算法;数据块大小取每块8Kbytes。当远程存储服务器300为本地计算机系统100提供80GB的存储容量时,共划分有10M个数据块。额外地,远程存储服务器需要为存储数据块的密文形式的消息认证码提供(10M*128b=160MB)的存储空间;本地计算机系统100需要为存储数据块的加密密钥提供(10M*128b=160MB)的存储空间。另外,为了维持一致性,文件系统101在每次写操作时应等待来自远程存储服务器300的数据保存成功应答。如果没有收到保存成功应答,可以废弃本次写操作;废弃包括不在安全机制200的密钥存储单元204中保存本次写操作所使用的加密密钥。该示例所描述的系统,通过可信存储的较小容量的秘密信息(如,保存在本地计算机系统磁盘中的数据块密钥),能够可信地利用非可信远程存储服务器所提供的大容量存储空间(如,数据块可全部保存在远程存储服务器中)。它既可以维护数据的机密性,又可以维护数据的完整性;而且,具有良好的性能。本发明并不局限于上述具体示例所描述的实现形态,而是适用于所有的依据本发明的内容所获得的能够保护非可信存储设备上数据机密性和完整性的系统。这包括软件的、硬件的以及软件硬件相结合的实现形态,以及不需其它发明性的能力而可直接获得的变化形态。比如,密钥可以由随机数或者由数据块的消息认证码构成;数据块的消息认证码可以保存在可信存储设备上,或者保存在非可信存储设备上;加密密钥可以基于根秘密信息进一步变化而得到;数据块索引可以基于存储位置、块编号或者数据块的消息认证码而构成;数据块的加密密钥可以存储于位于可信边界以内的数据库中、文件中、磁盘的特定扇区中,或者其它的具有机密性和完整性保护能力的存储设备中。再比如,所存储的密钥也可以视为“数据块”而作为被保护的对象,而依据同样的原理,可以用存放在其它位置的秘密信息为所存储的密钥提供机密性和完整性保护。还有,数据块对应的加密密钥可以单独存储,也可以直接与文件系统的元数据结合在一起存储。实际上,依据本发明的内容可保护任何类型的块存储设备,比如用于本地磁盘的保护;此时,可使用USB接口的闪存盘(FlashDisk)来存储本地磁盘上数据块所对应的密钥;这样,只有闪存盘接入系统,才能够理解本地磁盘上的数据块,并可以验证本地磁盘上数据块的完整性。本发明适用于所有的依据本发明的内容而构造的方法和装置,以及不需其它创造性质的能力而可获得的变化形式。因此,本发明适用于同这里所描述的原理与特征相一致的最广的范围。权利要求1.保护存储于非可信存储设备中的数据的机密性和完整性的方法,其特征在于为当前数据块的每一次包括更新在内的写操作,生成唯一的密钥;为该数据块创建一个消息认证码;使用该数据块对应的密钥,通过对称密钥加密算法加密该数据块后,获得密文形式的该数据块;将密文形式的该数据块保存在非可信存储设备中;保存该数据块对应的消息认证码;保存该数据块对应的密钥;当密文形式的该数据块从非可信存储设备读出后,依据该数据块对应的密钥,解密该数据块;重新为该数据块计算消息认证码,并与所保存的消息认证码进行比对,二者一致则表明数据可信。2.根据权利要求1所述的为数据块创建消息认证码,可采用任何从密码角度安全的单向散列函数。3.根据权利要求1所述的保存数据块对应的消息认证码,可以将消息认证码用该数据块对应的密钥加密,并与该数据块一同保存在非可信存储设备中;此时,当密文形式的该数据块从非可信存储设备读出时,对应的密文形式的消息认证码也一同由非可信存储设备读出,并用该数据块对应的密钥解密,然后将解密的结果与重新为该数据块计算消息认证码的结果进行比对。4.根据权利要求1所述的保存数据块对应的消息认证码,可以将数据块所对应的消息认证码存储在不能被攻击的可信存储设备中;或者将数据块所对应的消息认证码存储在任何具有机密性与完整性保护能力的存储设备中。5.根据权利要求1所述的为当前数据块的每一次包括更新在内的写操作生成唯一的密钥,可以采用生成随机数作为密钥的方法。6.根据权利要求1所述的为当前数据块的每一次包括更新在内的写操作生成唯一的密钥,可以使用该数据块对应的消息认证码作为密钥;此时,保存该数据块对应的消息认证码与保存该数据块对应的密钥是同一过程。7.根据权利要求1所述的为当前数据块的每一次包括更新在内的写操作生成唯一的密钥,可以进一步地结合根秘密信息实施变换而得到。8.根据权利要求1所述的保存数据块对应的密钥,可以直接将密钥存储在不能被攻击的可信存储设备中;或者将密钥存储在任何具有机密性与完整性保护能力的存储设备中。9.根据权利要求1至权利要求8中任一权利要求所述的方法,采用这些方法所构造的装置。全文摘要保护存储设备中数据机密性与完整性的方法和装置。其目的在于保护存储于非可信存储设备上的数据的机密性和完整性。所采用的技术要点是为每个数据块的每次写操作生成唯一的密钥,并创建对应的消息认证码;使用数据块对应的密钥加密数据块,并将密文形式的数据块保存在非可信存储设备上;保存对应的消息认证码;保存数据块加密所用的密钥;当密文形式的数据块从非可信存储设备读出后,依据对应的密钥,解密数据块;重新为解密后的数据块计算消息认证码,并与所保存的消息认证码比对,二者一致则表明数据可信。文档编号G06F12/14GK1707450SQ20041002328公开日2005年12月14日申请日期2004年6月8日优先权日2004年6月8日发明者侯方勇申请人:侯方勇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1