在基于Windows 2000/XP/2003的计算机中,如果系统中磁盘分区的文件系统格式采用了NTFS5.0,那么我们就可以利用文件加密系统(EFS)特性来保护用户保存在计算机中的个人文件和敏感信息。EFS采用了工业标准的数据加密算法和公钥加密系统对文件的内容进行加密,加密过程十分复杂,加密强度很大,安全性极高。

  用户首次执行为文件设置加密属性的操作后,就会自动启用EFS,这时系统会产生一个针对该用户的公钥/私钥对。其中公钥保存在该用户的加密文件系统证书中,通过在系统控制台(MMC)中添加证书管理单元可以进行查看;私钥通过用户的登录系统口令派生一个主密钥并保存在该用户的个人配置文件中。同时,EFS针对每个要加密的文件会随机产生一个文件加密密钥,对文件的内容进行加密,同时在每个文件中自动生成一个数据加密字段,用来保存经过公钥加密的文件加密密钥。当用户访问加密文件时,首先会对保存在个人配置文件中的私钥进行解密,然后使用私钥对保存在文件中数据加密字段的文件加密密钥进行解密,进而以明文的形式对文件进行访问;访问结束关闭文件后,文件会自动恢复到密文状态。对于用户来讲,上述的文件加密和解密过程都是EFS自动完成的,只要用户能够以正确的账户名称和密码登录到系统中,就可以完全透明的访问加密的文件。但是,对于其他用户加密的文件,由于不能对其他用户的私钥进行解密,因而也就不能访问这些文件。

  由于EFS的加密和解密与用户的账户信息和个人配置文件密切相连,如果用户忘记了自己的登录口令或是登录口令被系统管理员更改、个人配置文件损坏或丢失,都会造成文件永远处于加密状态不允许任何人进行访问,由于EFS的加密强度极高,因此恢复的可能性很小。为了预防这些情况的发生,用户在启用EFS后,要配置数据恢复代理为自己留一条后路。

    数据恢复代理可以访问其他用户加密的文件,并通过执行解密操作对文件进行恢复,它是加密文件系统策略的一个重要部分。数据恢复代理访问加密文件的过程和加密用户的过程类似,也是通过公钥/私钥对来实现的。由于受到系统加密策略的控制,配置了数据恢复代理后再对文件进行加密,在文件中会自动产生一个与数据恢复代理用户相关联的数据恢复字段,这个字段保存了由数据恢复代理的公钥进行加密的文件加密密钥,当数据恢复代理访问这些加密文件时,与数据恢复代理公钥相匹配的私钥完成对保存在数据恢复字段的文件加密密钥的解密,得到加密密钥,通过对称加密算法,可逆推出文件的明文内容。这样实施加密的用户和作为数据恢复代理的用户都可以透明地访问到文件的内容。数据恢复代理访问加密文件时,并不关心文件是由谁来加密的,它只关心文件中与其关联的数据恢复字段。当数据恢复代理对加密文件进行恢复时(取消文件的加密属性),会删除文件中的数据加密字段和数据恢复字段,从而将加密文件转换为明文形式。


如何配置数据恢复代理
  生成数据恢复代理的公钥/私钥对

  启动EFS后,系统不会自动创建数据恢复代理,必须由用户进行指派,也就是在系统中选取一个存在的用户或是创建一个新的用户专门作为数据恢复代理,为了具有比较大的访问权限,通常该用户隶属于管理员组。由于EFS不会为作为数据恢复代理的用户自动生成公钥/私钥对,因此,这个步骤需要由作为数据恢复代理的用户通过cipher命令行工具自行完成。cipher命令的执行结果可以为数据恢复代理用户产生保存公钥的数据恢复证书和私钥。

  具体的操作如下:以数据恢复代理用户的身份登录系统,在“开始”菜单的“运行”处运行cmd命令,进入“命令提示符”窗口,执行如下格式的命令:cipher /r:filename。其中cipher为命令行的加密解密工具,参数r为生成包含数据恢复密钥和证书的文件,filename为不带扩展名的文件名称。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000​ 

    执行了命令后,会提示用户输入用来保护.pfx文件的密码。输入密码并确认后,系统会创建两个文件,其中.cer文件只包含恢复证书,.pfx文件包含恢复证书和私钥。

  执行cipher r:/data_recovery命令,会得到如图1所示的执行结果。在“documents and settings\恢复代理”目录下可以查看到两个生成的文件:data_recovery.cer和data_recovery.pfx。

导入数据恢复证书 
    通过cipher命令生成的数据恢复证书和密钥不能自动添加到用户的证书存储中,这需要用户手工将数据恢复证书进行导入。在导入证书的过程中需要注意的是,如果只想在用户进行文件加密的时候增加数据恢复代理,在导入时选择扩展名为.cer的文件,如果希望在配置数据恢复代理后能访问用户加密的文件,那么就要导入包含数据恢复证书和私钥的.pfx文件了。

    导入数据恢复证书的操作为:以数据恢复代理用户的身份登录系统,在“开始”菜单的“运行”处,运行mmc命令,启动系统管理控制台。点击“文件”菜单下的“添加/删除管理单元”命令,在“添加/删除管理单元”窗口中点击“添加”按钮,在“添加独立管理单元”窗口,选择“证书”,点击“添加”按钮,如图2所示。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000_02​ 图2

    在之后出现的窗口中点击“完成”按钮返回,点击“关闭”,返回到“添加/删除管理单元”窗口。此时,在列表中可以看到增加了“证书”项,点击“确定”完成证书管理单元的添加。在管理控制台中,展开“证书”|“当前用户”树形列表,在“个人”项目上单击右键,选择“所有任务”项目中的“导入”子项,启动导入向导,如图3所示。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000_03​ 图3

    点击“下一步”,在“文件名”处根据需要指定要导入的证书名称,如果指定的文件扩展名为.pfx,会弹出如图4所示的窗口。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000_04​ 图4

    在这个窗口中需要键入在使用cipher命令创建数据恢复证书时用来保护.pfx文件的密码,选择“标志此密钥为可导出的”检查框;如果需要的话,选择“启用强私钥保护”检查框,点击“下一步”;如果指定的文件扩展名为.cer,则不需要进行这一步骤的设置。通常情况下,在配置数据恢复代理时在此步骤只需要指定扩展名为.cer的文件,只有需要恢复加密文件的时候才导入扩展名为.pfx的文件。在“证书存储”窗口,选择默认设置,完成恢复证书的导入。返回“控制台”,展开“个人”存储区,点击“证书”。此时,在右侧的证书列表中,可以看到一个自签名的用于文件故障恢复的证书,如图5所示。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000_05​图5

将数据恢复代理添加到加密系统策略中
  将数据恢复证书导入到系统后,仅仅代表已经指派了数据恢复代理,此时,数据恢复代理用户还不能访问用户加密的文件。这是因为用户在执行文件加密操作时,在文件中还不能产生任何和数据恢复代理用户相关联的信息。这需要我们通过组策略将数据恢复代理添加到公钥策略中。对于单机来讲,由于公钥策略是计算机配置的一部分,其作用级别高于用户配置,它可以对每个用户的加密行为产生作用。在域的环境中,用户登录到域后,域的组策略设置要高于本地计算机的组策略设置。因此,不论是单机环境还是域环境,一旦在公钥策略中添加了数据恢复代理,用户再进行文件加密操作时,都会在文件中自动产生一个数据恢复字段来保存由数据恢复代理的公钥加密的文件加密密钥,进而允许数据恢复代理用户透明的访问用户加密的文件。

    添加策略的具体操作如下:以内置的administrator账户或管理员组成员的身份登录系统,在“开始”菜单的“运行”处,执行gpedit.msc,进入“组策略”窗口。依次展开“计算机配置”-->“windows设置”-->“安全设置”-->“公钥策略”,在“加密文件系统”列单击右键,选择“添加数据恢复代理”,启动向导,如图6所示。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000_06​ 图6

    如果是域环境,则在列表中选择,否则点击“浏览文件夹”,定位创建的恢复证书,文件的扩展名只能为.cer,打开定位的证书文件后,可以在“故障恢复代理”列表中看到增加了一条项目。点击“完成”按钮,数据恢复代理的添加成功,这时在右侧的策略列表中,可以看到增加了一个自签名的文件故障恢复证书,如图7所示。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000_07​图7

    配置了数据恢复代理再执行文件的加密操作,加密策略会自动地为文件增加故障恢复代理。在加密文件的高级属性设置窗口,点击“详细信息”按钮,就可以查看到相关的信息,如图8所示。

为EFS(加密文件系统)配置数据恢复代理_Windows 2000_08​图8

配置数据恢复代理的注意事项
    第一,在配置数据恢复代理前,用户加密的文件中并不包含数据恢复字段;配置数据恢复代理后,对这些加密的文件也不会产生任何影响,也就是数据恢复代理用户不能访问这些加密文件。因此,为了保证数据恢复代理用户能够对系统中所有加密文件具有恢复的能力,用户应该对配置数据恢复代理前已经进行过加密的文件进行解密,然后再次进行加密。

  第二,实施加密的用户不要作为数据恢复代理用户,例如administrator用户进行了文件加密,同时他又作为数据恢复代理,那么当administrator不能正常登录系统或是个人配置文件损坏或丢失时,数据恢复代理也就没有作用了。

  第三,由于数据恢复代理可以透明地访问所有用户的加密文件,因此,如果非法用户破解了作为数据恢复代理用户的口令进入系统,大量的个人文件和敏感信息将有可能被偷窥。为了避免这一点,一方面可以加强数据恢复代理用户的口令强度,让非法入侵者难以攻破;另一方面,导入证书的时候只导入恢复代理证书,也就是扩展名为.cer的文件,只有在需要进行文件恢复的时候才导入私钥,在完成恢复操作后,将私钥导出,并且从计算机中删除。

  最后,由cipher命令生成的保存在“%systemdrive%\documents and settings\恢复代理用户”目录下的两个文件要拷贝到软盘或存储介质中妥善保管,同时将文件从计算机中删除。

    对于想了解“加密和认证”等入门知识的朋友,可以参考电驴上“西安鹏程张建宁”老师的视频教程,个人觉得受益菲浅。