微软在Windows 2000当中引入了加密文件系统(EFS),这项内置的新功能使保护文件安全的效果远胜于Windows的前几个版本。
进行这种改进的原因主要是,在老版本中,一旦攻击者获得了计算机的物理访问权,就很容易避开NTFS的安全机制。如果避开了它,许多随处可得的第三方工具可对存放在NTFS分区上的数据进行读写,一旦从含有第三方NTFS驱动程序的软盘启动系统,就很容易获取磁盘内的所有数据。
虽然可以对BIOS设置口令以限制哪些设备可以启动,但这仍然无法防止有人拆走硬驱,把它连接到另一台计算机,然后通过安装Windows 2000/XP或者干脆用另一台机器访问系统。幸好,在这种情形下,EFS有助于为数据提供保密。
EFS结合使用了对称密钥与公钥/私钥加密技术,保护放在NTFS分区文件里的内容。对称密钥(加密时动态生成,每个加密文件都有不同的对称密钥)用来执行加密过程,并与加密文件放在一起。公钥用来加密对称密钥,也与加密文件放在一起。解密所必需的私钥放在用户配置文件里。这样,尽管通过第三方实用工具仍可以获取硬盘上的信息,但如果没有私钥,这种格式无法读取。
不过,EFS仍然存在一些潜在的安全问题。
1.持有私钥的人都可以访问加密文件,私钥是用来找回用公钥加密的对称密钥。这些人可能是加密这些文件的用户以及被指定为“数据恢复代理”(DRA)的另一个Windows账户,在Windows 2000上,默认情况下,这是指管理员账户。因为使用第三方工具后,可重新设置本地管理员或其他本地账户的口令,所以独立系统注定是不安全的。
2.虽然在Windows 2000环境中,重新设置本地管理员口令不影响计算机内由EFS保护的本地文件,但只要用户的私钥放在本地计算机上,其安全性就可能受到伤害。因为实施EFS的环境通常依赖漫游的配置文件(这是为了确保同一个用户的所有加密文件使用同一把私钥),用户的配置文件会在每次登录期间拷贝到本地系统。为了确保攻击者无法利用存放在这些配置文件里的私钥副本,应该使用群组策略(Group Policy),强迫退出时删除漫游的配置文件。还应该指定一个专用的灾难恢复代理账户,确保私钥备份后放在安全地方。
但EFS出现了下面两个变化,使上述两个问题在Windows XP专业版上得到了解决。
1.不再有默认DRA。DRA对EFS的正常工作不再是必要的。如果为加密数据恢复代理进行“空策略”初始化,就可能防止在域级别对Windows域环境进行加密。办法是: 启用群组策略MMC嵌入件模块(snap-in),选择与域相关的群组策略对象,然后依次点击“计算机配置→窗口设置→安全设置→公钥策略→加密数据恢复代理”,在标为“加密数据恢复代理”的最后一级文件夹上右击鼠标,最后从上下文相关的菜单中选择“初始化空策略”。这足以去除用户在属于域成员的Windows 2000系统上使用EFS的功能。
如果是Windows XP,再也没有这种可能了。要禁用Windows XP计算机的环境中的域级别的EFS,必须从属于域成员的Windows XP专业版计算机上启动“微软管理控制台”,装入“群组策略编辑器”,然后注意域群组策略对象。一旦嵌入模块装入完毕,依次点击“计算机配置→窗口设置→安全设置→公钥策略→加密文件系统文件夹”,右击鼠标,然后从上下文相关的菜单中选择“属性”。在带有“允许用户使用加密文件系统(EFS)加密文件”这个核选框显示之后,确保清除了核选框(默认状态下被选用)。
2.EFS采用了另一个加密级别,利用用户口令保护放在用户配置文件里的私钥。这带来了两方面的影响,一方面,防止了攻击者企图重新设置任何本地账户上的口令以获得EFS加密文件的访问权的情形; 另一方面,也会带来问题: 如果用户忘记口令,则需使用口令恢复磁盘恢复。
把EFS部署在Windows 2000/XP专业版环境时,必须考虑诸多因素。加强安全自然要付出代价,如增加管理负担,但从长远来看,这些工作是完全值得的。