APP下载

Windows Vista数据保护机制研究

2009-02-11

新媒体研究 2009年1期

沈 泳

[摘要]Windows Vista采用安全软件开发方法开发,在安全性方面得到较大的提高。重点分析Windows Vista用户帐户信息保密机制的模型。比较Windows98/2000/XP以及Linux操作系统和Windows Vista在用户帐户登录保密机制上的区别。并且研究全卷加密技术的原理,同时提出利用BitLocker、全卷加密技术以及版权控制三种保护机制混合使用来提高数据的安全性。

[关键词]Windows Vista 用户账户控制 BitLocker 加密文件系统

中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2009)0110064-03

一、引言

2006年11月30日,美国微软公司正式发布了代号为Longhorn的下一代视窗操作系统Windows Vista。这是继Windows XP和Windows Sever 2003之后的又一重量级操作系统。和以往的Windows客户端操作操作系统相比,Windows Vista在底层技术方面得到了极大的提升,在网络安全以及多媒体方面也体现出了全新的构想。

系统安全一直是微软各个版本的Windows操作系统关注的问题。微软新推出的UAC(用户账户控制)机制对授权进程要求所有用户以标准用户模式进行,并且限制管理员的权限,从而达到了限制恶意软件对系统带来的损害。同时,Windows Vista还提供了Windows防火墙、Windows Service Hardening、EFS(加密文件系统)、BitLocker等功能,增加了系统防御能力。

本文主要针对Windows Vista操作系统中的文件数据保护机制进行了必要的研究,希望为读者打开了解Windows Vista的大门。

二、Windows Vista与其他操作系统身份验证比较分析

(一)Windows 9X系统

Windows 9X系统将用户密码默认保存在扩展名为pwl的缓存文件中。该文件包含了共享资源访问密码、拨号网络密码、用户登录密码等信息,是一个用于访问网络资源的高速缓存的密码清单。一般位于系统目录(通常为C:Windows)下。不同的用户使用不同的pwl文件,通过用户名来命名文件名。只要获取pwl文件,就可以获得该用户的各种密码。

(二)Windows NT/2K/XP/Server 2003系统

Windows NT/2000系统中使用了安全账号管理器(Security account manager)机制对用户帐户进行安全管理。在账号创建的同时,安全标识就被创建。一旦帐号被删除,安全标识也被同时删除。即使是相同的用户名,在每次创建时获得的安全标识也是完全不同的,也不会保留原来的权限。故安全标识是唯一的。安全账号管理器的具体表现就是%SystemRoot%system32

configsam文件。

与Windows 9X系统相同的是Windows NT/2K/XP/Server 2003等系统同样使用了文件对用户密码进行保存sam文件。不同的是sam文件是用户帐户的数据库,所有用户的登录名及密码等信息都保存在这个文件中。系统在保存sam信息之前对sam文件进行了压缩,故而sam文件中的信息是不可读取的。在系统运行期间,sam文件被system账号锁定,即使是administrator账号也不能打开sam文件。

(三)Linux身份验证

Unix系统使用passwd文件保存用户信息,包括经过DES加密的用户密码。如果采用shadow机制,则会将密码保存在shadow文件中,在passwd文件中只显示“x”。passwd文件对于所有用户均是可读的,只对root用户可写。而shadow文件则是不可读的。两个文件均位于/etc目录下。

文件的每一行都代表一个用户资料,每个账号由七部分资料组成,不同资料中使用":"分割。格式如下:

账号名称:密码:uid:gid:个人资料:用户目录:shell

除了密码是加密的以外(这里的密码部分已经shadow了)其他项目非常清楚明了。

Unix系统采用最多的加密算法是DES,它使用56位的密钥(8个7位的字符)加密64位的文本块。传统的UNIX系统中,crypt()函数将用户密码填充到8个字符,并用这8个ASCII字符组成的56位DES密钥,然后对一个64位的零字符块进行DES加密,然后再次使用原有的密钥对该结果进行加密,该过程重复25次,最终生成一个11个字符的字串。在此基础上,UNIX系统还是用掺杂其他数据的方法进行加密。掺杂的数据又称为Salt(盐粒)。盐粒一般为12位,基于系统时间来读取数值,范围为0~4095。使用盐粒后,一个完整的加密口子字串由13个字符组成,其中前两个字符为盐粒,后11个字符为真正的加密密码。

(四)BigLocker加强身份验证功能

Windows Vista中采用BitLocker加密来加强身份验证。BitLocker原名Secure Star up(安全启动)。对于公司而言,存储在计算机上的数据通常比计算机本身更有价值,这些数据的丢失或者泄漏可能会造成极具破坏性的后果。在Windows XP以及之前的操作系统中,非法用户可以通过离线方式读取操作系统中的文件和数据。BitLocker驱动器加密是Windows Vista中新增的一个系统级数据保护功能,目前仅在企业版和旗舰版中提供。它提供完整的驱动器加密功能,有效地避免因用户对计算机保护不当或者不当的淘汰处理而导致的数据丢失或者泄漏产生的威胁。即使非法用户启动另外一个系统或者运行黑客工具软件,以脱机方式浏览存储在受保护驱动西里的数据,也无法读出加密信息,从而提高了数据的安全性。故而BitLocker技术也称之为安全启动。

根据不同的计算机系统,Windows Vista提供以下选项:

1.不带有TPM芯片的计算机,将启动密钥保存在USB闪存上。启动系统时,闪存必须连接到计算机。

2.带有TPM芯片的计算机。数据解密功能被限制为首先必须对系统组件进行校验,而校验信息保存在TPM新片中。

3.TPM和PIN。每次系统启动后,都需要输入长度在4到20位的PIN码。

4.TPM和启动密钥。由启动密钥代替PIN码,每次启动系统时,只要插入保存了启动密钥的闪存,无需输入PIN码。

5.恢复密钥。为了在数据校验失败后访问数据。用户可以通过功能键手工输入恢复PIN码,或者从网络驱动器或者USB闪存中读入[1]。

(五)BitLocker加密原理

BitLocker基于Trusted Platform Module(TPM)1.2平台,需要支持TPM的硬件芯片。TPM负责生成加密密钥,同时存储密钥、密码、数字证书以核心操作系统文件的测量值。BitLocker采用128位或者256位的AES(Advanced Encryption Standard高级加密标准)加密,并且可以通过组策略进行设置。[3]BitLocker采用全卷加密驱动程序(FVE)进行全卷加密。FVE是一个筛选级驱动程序,该系统随机产生一个密钥,叫做FVEK(全卷加密密钥)。FVE可以收到NTFS文件系统发送给卷的所有I/O请求,写入的时候自动加密,读取的时候自动解密。FVEK对Windows分区进行加密,然后再由VMK(Volume Master Key卷主密钥)对FVEK进行加密。加密后的FVEK密钥保存在卷的特殊元数据区域。当系统有TPM1.2及以上版本的芯片时,将TPM加密VMK。既可以用TPM中的密钥SRK和USB闪盘里的密钥联合对VMK加密;也可以用PM中的密钥SRK和开机时输入的PIN联合对VMK加密。即使TPM出错,也可以通过恢复模式重新生成密钥。

若系统没有TPM,还可以用USB闪盘中的密钥对VMK加密。

若希望在BitLocker被撤销后访问加密的数据,需要用到“Clear Key”密钥。这个密钥保存在硬盘上,使用VMK和FVEK可以在BitLocker被撤销后继续访问加密的数据。如果随后BitLocker再次被启用,就不能继续访问Clear Key了。在启用BitLocker的时候,生成一个恢复密码是很重要的,这个48位的密码分为八组,每组有六个数字。记录这48位密码对以后恢复很有用。

当系统启动时,会将自己的散列值和PCR加载代码进行比较,并把该散列值写入到TPM芯片的第一个PCR寄存器中。然后计算出BIOS度量值,并将该度量值存放在合适的PCR寄存器中。BIOS会给启动序列中的下一个组件计算散列值,持续该操作过程直至操作系统加载程序计算出度量值并与之进行比较。然后运行的每段代码都需要负责对其加载的代码计算度量值,并负责把度量值存储到TPM芯片里相应的PCR寄存器中。最后,当用户选择引导的操作系统,引导管理器会从该卷中读取加密的VMK,并请求TPM对其进行解密。只有当所有的度量值和VMK封装时相同时,包括可选的PIN等,TPM才能够成功解密VMK。

三、Windows Vista文件加密机制

(一)EFS加密技术介绍

EFS(Encrypt File System加密文件系统)是NTFS文件系统独有的一种安全特性。BitLocker仅对Windows所在的驱动器加密,对非Windows所在的驱动器并不自动保护。也就是说,对于那些具有多个卷或者多个磁盘的系统来说,BitLocker并不能保护它们的数据。当系统顺利启动后,BitLocker无法对数据提供保护。

EFS加密可以保证系统启动后对用户数据提供保护。其他任何未授权的用户,包括管理员,都不能访问加密的数据。

EFS将文件夹/文件以加密形式存储在硬盘上,这样,特定的文件/文件夹只能被具有正确证书通过私钥认证的用户打开。和第三方工具不同,EFS加密并不需要用户提供密码,加密和解密过程由Windows在后台自动进行,对用户透明。用户按照正常方式使用文件,当文件被关闭时,它会被解密。对于不具有操作权限的证书的用户,即使重新安装系统,同样无法存取该文件/文件夹。EFS是Windows Vista中对BitLocker较好的补充。但是EFS加密与NTFS的压缩功能不能同时使用,即如果文件被压缩,那么就无法对其实施加密功能。

加密文件/文件夹的方法如下[4]:

1.在资源管理器中找到待保护的文件/文件夹,右键选择属性。

2.在“常规”选项页中选择“高级”。

3.勾选高级属性中的“加密内容以便保护数据”项,点击“确定”。

4.在返回的常规选项页中点击“确定”。

(二)EFS加密原理

EFS加密过程如下,如图3:

1.随机生成一个加密密钥,称之为FEK(文件加密密钥)m1。

2.用FEK对目标文件m2进行加密生成E1(m2)。

3.若第一次使用,系统自动为该用户生成一对公钥/私钥pk/sk。

4.用该用户的公钥对FEK进行加密E2(m1)。

5.删除原始的FEK。将E2(m1)作为加密文件的一个属性和加密文件保存在一起。

EFS解密过程如下,如图4:

1.EFS系统用用户的私钥解密FEK即D2(E2(m1))得到m1。

2.用解密后的FEK m1将文件E1(m2)解密D(E1(m2))得到m2。

如果用户持有已加密的NTFS文件的私钥,那么用户就能够打开该文件,并且将该文件作为普通的文档透明的使用,所有的加密、解密过程都在NTFS底层进行。反之,文件将拒绝用户的访问。

(三)BitLocker和EFS比较

虽然EFS可以支持数据加密,但是对于系统的某些敏感区域,如注册表配置单元文件,EFS就无能为力了。例如,如果组策略允许用户不在域环境时也能登录到计算机,验证所用的域凭据就会缓存在注册表中,这样攻击者就可以使用工具来获取域账户的散列值,并借助密码破解工具来破解域账户的密码,然后顺利访问账户。EFS通过NTFS文件系统驱动程序来实现,并进行文件级别操作。

BitLocker使用全卷加密驱动程序,并进行卷级别加密。它可以加密页面文件、休眠文件、SAM数据库等重要的系统文件,这样攻击者就无法破解离线账户。BitLocker加密主要用于系统登录之前,当登录到用户环境后[5],系统所有文件都处于解密状态,这时候需要EFS加密实现基于用户的文件保护。

四、版权保护

Windows Vista中提供了版权保护,只有授权的用户才能够使用相应的文件。电子邮件可以被指定的用户群浏览,但是不能进行打印或者转发等操作。Windows Vista还提供了访问版权保护Office文档的客户端(RMS client)[6],用户无需再安装/配置额外软件。

五、总结

Windows Vista中提供三种数据保护技术:BitLocker,加密文件系统(EFS)以及版权保护。在操作系统启动之前和过程中,BitLocker保证非授权用户无法登入系统,但是BitLocker无法对操作系统以外的磁盘数据保护。加密文件系统无法对系统文件加密,例如页面文件、休眠文件等,但是EFS可以在系统启动后对非操作系统外的磁盘数据提供保护,保证非授权用户即使提升权限也无法读取数据。BitLocker和EFS相辅相成,分别作用于不同阶段。当用户需要对Office文档进行远程权限控制时,需要考虑使用版权保护。

根据不同的用户场景,三种数据保护方式分别使用情况如表1所示。

参考文献:

[1]王旭,Vista的磁盘加密功能,个人电脑,2007.04.

[2]刘辉,揭密Vista的磁盘加密功能,http://www.pcpro.com.cn/pcpro/20

07/0509/435924.shtml.

[3]Vista BitLocker,给系统动态保护,每周电脑报,2007.04.

[4]啸天,Windows Vista中的文件和文件夹加密,网络与信息,2007.07.

[5]深入理解Windows Vista内核三:BitLocker,http://blogs.itecn.net/

blogs/winternals/archive/2007/03/22/insidevistakernel2.aspx.

[6]http://technet2.microsoft.com/WindowsVista/en/library/00d04415-2b2f-422c-b70e-b18ff918c2811033.mspx?mfr=true.