探密Vista的EFS加密功能(下)

来源:岁月联盟 编辑:zhuzhu 时间:2007-12-03
探密Vista的EFS加密功能(下)内容简介:相关文章: 探密Win Vista的EFS加密功能(上) 要想将之前备份的证书还原到新的系统中,操作非常简单,只要双击导出的.pfx文件,系统就会自动运行证书导入向导,在向导的帮助下,我们只要输入导出证书时设置的密码,即 相关文章:

  要想将之前备份的证书还原到新的系统中,操作非常简单,只要双击导出的.pfx文件,系统就会自动运行证书导入向导,在向导的帮助下,我们只要输入导出证书时设置的密码,即可完成导出操作。但在输入密码的时候有两个选项需要注意:   

  在“证书导入向导”中选择证书的导入选项  
探密Vista的EFS加密功能(下)


  启用强私钥保护 如果选中该选项,那么以后每次访问被加密的文件时,因为要用到私钥解密数据,系统都会向我们发出提示,提醒我们注意。

  标志此密钥为可导出的密钥 如果选中该选项,那么以后我们将可以从被导入的系统中将证书再次导出。如果导入私钥只是为了便于临时打开加密文件,那么建议不要选择该选项。

  经过导入,只要没有发生误操作,那么使用被导入证书加密的文件将可以在新的系统中正常打开。

  上文我们已经介绍了EFS的基本用法,但在实际使用中,这些还是远远不够的。因为有些情况下,我们不仅要借助EFS令自己的数据更安全,还要保证一定的可用性,因此下文会通过一些具体的事例告诉你怎样用好EFS加密。  

  有时候我们可能会希望实现这样的目的:同一个文件被加密后,可以被本机的两个用户使用,每个用户都可以查看和编辑文件的内容,但同时文件依然处于被加密的状态。这种情况下需要使用EFS的共享功能。

  该功能在Windows XP和Windows Vista下都可以实现,而且方法几乎是一样的,本文以Windows Vista下的操作为例进行介绍。具体环境是这样的:有两个用户:“刘晖”和“User”,其中刘晖在E盘根目录下创建了一个文本文件,输入了一些内容,保存后将其加密。我们需要做的是让刘晖和User这两个用户都可以查看和编辑该文件,但其他用户无法打开。方法如下(该方法仅适用于单个文件,不适用于整个文件夹):

  1. 使用用户“User”登录,在User的桌面上创建一个临时文件,按照上文介绍的方法加密(这样做主要是为了生成用户User的EFS密钥,以便用户刘晖设置共享)。

  2. 注销User,使用刘晖登录。打开Windows资源管理器,找到要被共享的EFS加密文件,用鼠标右键单击,选择“属性”,打开“属性”对话框。

  3. 在“属性”对话框的“常规”选项卡上单击“高级”按钮,打开“高级属性”对话框,然后单击“详细信息”按钮,打开“用户访问”对话框。   

  “用户访问”对话框中可设置EFS共享 

  

探密Vista的EFS加密功能(下)



  4. 单击“添加”按钮,打开正在加密文件系统对话框,这里列出了本机上所有具有EFS密钥的用户,从中选择希望共享访问该EFS文件的用户,例如User,然后单击“确定”。

  5. 随后在“用户访问”对话框中,可访问这个文件的用户列表中就会显示两个用户。

  6. 日后如果希望停止与某个用户共享该EFS加密文件,只需要打开“用户访问”对话框,从列表中选中目标用户,然后单击“删除”按钮,该用户访问这个加密文件的特权就会被删除。

  7. 单击“确定”关闭所有打开的对话框。

  经过上述操作,用户User重新登录后就获得了打开该加密文件的特权。在使用该方法的时候需要注意,用户User可获得对该加密文件几乎全部的控制权,例如可以把其他用户添加进来,允许其他用户打开该文件,同时User也可以禁止刘晖打开该文件。因此使用这个方法和别人共享EFS加密文件的时候一定要十分小心,以免给了别人访问的特权后,自己反而被排除在外。

 上一节介绍的是如何在同一台计算机上共享EFS加密文件,但同时我们有可能遇到了另外一种问题:如何在不同计算机上共享EFS加密文件。例如,公司员工可能需要将未完成的工作文件使用可移动存储设备带回家继续处理。为了防范存储设备失窃导致公司的机密数据泄露,我们可以将文件用EFS加密后带回家,但怎样保证用户在家里的计算机上也能打开在公司计算机上加密的文件,同时在家里的计算机上编辑了文件后回到公司里也能打开?

  具体环境是这样的:有两台计算机A和B,A在公司,B在员工家里,这两台计算机都没有加入域。该方法在Windows XP和Windows Vista中的操作基本类似,下文会以Windows Vista中的操作为例进行介绍。具体的过程是这样的:

  1. 在公司的计算机A上,将可移动存储设备格式化为NTFS文件系统,并在其根目录下创建一个文件夹,将所有需要带回家处理的文件复制到该文件夹中,并使用EFS加密该文件夹。

  2. 按照上文证书的备份一节的介绍,将用户的EFS加密证书备份出来,并随身携带(安全起见,这个证书最好不要和被加密的文件保存到一起,否则一旦回家路上失窃,别人导入了你的证书后将可以打开所有机密文件)。

  3. 在家里的计算机B上,按照上文证书的还原一节中的介绍,将公司里计算机A上备份出来的证书还原到家里的计算机B上。

  4. 将保存了机密数据的移动存储设备连接到计算机B,查看并编辑文件,然后保存。

  经过上述设置,在家里的计算机B上查看被EFS加密的文件属性,依然可以看到加密者是公司里的计算机A上自己的帐户,但因为我们已经在计算机B上导入了计算机A上相应的证书,因此打开和编辑这些文件都不是问题。就算我们在计算机B上编辑了这些文件,保存的时候,系统依然会自动以公司里计算机A上用户的身份帮我们加密所有文件。因此第二天将编辑后的文件拿到公司后依然可以顺利访问。

 在使用EFS加密时需要考虑的另外一个问题是加密所用的帐户被删除后的文档恢复工作。例如,公司的计算机上有一个叫做“User”的帐户,加密了一些机密信息。后来使用该帐户的员工辞职了,因此管理员直接删除了他的帐户。但不久后处理该帐户的遗留文件时发现,该帐户的一些文件还处于加密状态,而且这些文件全部无法打开。有人可能会尝试新建一个名为“User”的用户,并使用之前的User帐户一样的密码,但被EFS加密的文件还是打不开。这又是为什么?

  在解释这个问题之前首先要介绍一下什么是SID(安全标识符)。我们都知道,当我们将自己的Windows帐户名称改名后,依然可以使用之前具有的所有权限,似乎改名操作并不会影响用户的权限方面的设置,其实这就是SID的作用。SID和用户名的关系类似于我们每个人的名字(用户名)和指纹(SID)的关系,名字可以随便改,但每个人的指纹是不会随着名字的变化而变化的。正因为Windows是通过SID识别不同帐户的,因此在这种情况下重建相同用户名和密码的帐户并不能得到原帐户的EFS证书,进而被加密的文件将无法解密。为了预防这种问题,微软在设计EFS加密功能的时候引入了一种叫做恢复代理(Recovery Agent)的机制。

  恢复代理可以理解为默认被共享了本机所有EFS加密文件的用户(类似于EFS的共享,但不等同),在设置了恢复代理后,本机上所有文件在使用EFS加密的同时,恢复代理的相应信息也会被保存到文件中。这样日后就算加密该文件的帐户已经不存在,或者证书丢失了,我们依然可以使用恢复代理的帐户登录系统,解密文件。

  安全起见,在单机和工作组环境下的Windows XP以及Windows Vista中,默认情况下没有恢复代理;在加入域后,默认的恢复代理是域管理员。我们首先需要为系统指定一个恢复代理,这个过程在Windows XP和Windows Vista中基本一样,下文以Windows Vista中的操作为例进行介绍。

  1. 使用希望成为恢复代理的帐户(最好是管理员帐户)登录,然后在该帐户的桌面上创建一个临时文件,例如“1.txt”。

  2. 运行“cmd”打开命令提示符窗口,然后使用“cd desktop”命令进入到该帐户的桌面文件夹下。

  3. 运行这条命令:cipher /r:1.txt,随后输入用于加密证书的密码(注意,在输入的过程中光标并不会有变化,也不会用星号占据输入的密码位数)。随后在桌面上会看到一个名为“1.cer”和名为“1.pfx”的文件,我们需要使用这些文件将当前登录的用户指定为恢复代理。

   命令提示生成恢复代理所需的证书文件

探密Vista的EFS加密功能(下)

  

  4. 运行“secpol.msc”,打开“本地安全策略控制台”。在控制台窗口左侧的树形图中依次进入到“安全设置” “公钥策略” “加密文件系统”。

  5. 用鼠标右键单击“加密文件系统”节点,选择“添加数据恢复代理程序”命令,打开“添加故障恢复代理向导”。

  6. 在向导的第一个界面上单击“下一步”,在随后出现的界面上单击“浏览文件夹”按钮,并找到在第一步备份出来的证书1.cer。

  7. 在导入的过程中,Windows可能会提示你Windows无法判断此证书是否被吊销,询问是否继续。在单机或者工作组环境下这是正常的,可以不用理会,单击“是”。

  8. 随后我们可以看到,添加故障恢复代理向导中已经列出了一个恢复向导,这表示我们的操作是正确的,单击“下一步”,然后单击“完成”。当然,如果需要,我们可以添加多个恢复代理。

  添加好的恢复代理

探密Vista的EFS加密功能(下)

  

  9. 经过上述设置,在本地安全策略控制台的“加密文件系统”节点下会显示本机指定的所有恢复代理,这表示当前本机已经具有了恢复代理,但操作还没有全部完成。

  10. 为了让恢复代理能够打开每个用户的加密文件,或者将其解密,我们还需要导入恢复代理的证书。依然是使用恢复代理的帐户登录系统,然后双击上面第3步中生成的.pfx文件,然后按照上文介绍的方法将该证书导入。

  11. 如果导入成功,那么运行certmgr.msc打开证书控制台,在“证书当前用户” “个人” “证书”节点下应该能看到一个“预期目的”为“文件恢复”的证书。如果看到该证书,表示恢复代理的设置工作全部完成。

  现在使用本机的其他帐户登录,并加密一些文件,然后打开被加密文件的“用户访问”对话框,可以看到与未设置时不同的界面,那时候的恢复代理还是空的。

  新加密的文件中已经带有恢复代理的信息

探密Vista的EFS加密功能(下)

  

  在使用恢复代理的时候需要注意,假设有位用户在我们指定恢复代理之前就已经加密了自己的文件,而我们随后才指定了恢复代理,那么一旦该用户被删除或者EFS证书丢失,恢复代理将无法解密该用户的EFS加密文件。一定要记住:恢复代理只能解密被指定之后其他用户加密的文件。如果在指定恢复代理之前已经加密了很多文件,那么每个加密过文件的用户都需要使用自己的帐户登录系统,然后运行“cmd”打开命令提示行,并运行“cipher /u”命令,这样每个人加密过的所有文件都会被更新一次,将恢复代理的信息加入进去(每个人的操作只能影响到由自己加密的文件)。

  在设置好恢复代理后,如果某个用户被删除,或者证书无意中丢失,只要被加密的文件还在,恢复代理就可以直接查看被加密的文件内容,或者解密文件。

 EFS的功能很强大,虽然使用过程很简单,但需要注意的事项却有很多,如果不注意,很可能会让自己永远都无法打开曾被加密过的重要文件。因此在正式投入使用之前请先注意下列问题: 

  永远先进行测试

  无论打算借助EFS实现怎样的目的,一定要记得,在正式应用之前首先进行测试,只有在经过测试,确保万无一失之后才对自己的重要数据进行加密。这总好过加密了数据后才发现自己的操作出现纰漏,不仅无法保证数据的安全,还有可能导致自己都无法解密自己的数据,造成更大的损失。

  和NTFS权限配合使用

  EFS加密只能保证自己重要的文件数据不被偷窥,但并不保证文件本身的安全。例如你在计算机上加密了一个文件,别人自然是看不到文件的内容,但别人可以删除这个文件。就算没有权限,只要使用管理员帐户登录(可以破解管理员帐户的密码,或者干脆给计算机中再安装一个Windows),就可以获得所有权,并分配访问权限。虽然在这种情况下,对方依然看不到你的机密文件的内容,但完全可以将其删除。因此最好同时配合备份功能对重要数据进行备份。  

  注意帐户密码的修改

  在Windows XP中,某些情况下,当用户修改密码后,可能会无法访问自己的EFS加密文件,但将密码更换回原来的老密码后就会恢复正常。这是一个已经确认的Bug,但截至本文完成时微软依然没有面向公众提供相应的补丁程序。因此在遇到这种问题的时候可以暂时将密码换回原来使用的,或者访问以下网址向微软索取补丁程序:

  http://support.microsoft.com/kb/890951/。  

  加密证书的创建时间

  很多人还曾遇到过这样的问题:安装好系统和应用软件,设置好所有选项后,使用镜像备份软件(例如Symantec Ghost)对系统进行了完整备份,然后开始使用系统,并用EFS加密了文件。一段时间后,系统出现了一些问题,于是使用之前的备份将系统还原为备份时的状态,但发现自己的EFS加密文件打不开了。

  这个问题涉及到了EFS加密证书的创建时间。和很多人想象中的不同,EFS加密证书并不是在创建用户帐户的时候进行的,而是在一个帐户第一次加密文件的时候创建的。在对系统进行备份的时候,如果还没有用EFS加密过文件,那么这时候系统中并没有EFS加密证书,因此系统的备份文件中也不会有,进而使用这样的备份文件还原系统后,因为没有证书(虽然是同一个用户帐户,同样的SID,同样的用户名和密码),依然无法打开自己加密的文件。  

  添加快捷菜单项

  每当我们要用EFS加密文件,或者解密文件的时候,都需要用鼠标右键单击文件,选择“属性”,然后在“文件属性”对话框中进行,相当麻烦。如果你需要经常加密或解密文件,那么可以直接将加密和解密的命令添加到Windows资源管理器右键菜单中。

  运行“regedit”打开注册表编辑器,定位到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion /Explorer/Advanced,在这里新建一个名为“EncryptionContextMenu”的DWORD值,将其数值设置为“1”。修改后,当我们在Windows资源管理器中用鼠标右键单击一个未加密的文件或文件夹后,右键菜单中就会出现加密的选项;如果右键单击的是加密过的文件或文件夹,那么右键菜单中就会出现解密的选项。

  禁用EFS加密

  虽然EFS加密很好用,但并不是所有人都需要。而且如果你的计算机是几个人共用的,一旦不了解该功能的人无意中加密了文件,而我们忘记了备份证书,那么在证书丢失或者损坏后,会导致数据丢失。

  因此如果不需要使用EFS加密,我们可以将其禁用。运行“regedit”打开注册表编辑器,定位到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionEFS,在这里新建一个名为“EfsConfiguration”的DWORD值,将其数值设置为“1”,这样本机的EFS加密就被禁用了。日后如果需要重新启用EFS加密,只需要将该值的数值改为“0”即可。  

  Windows Vista中的高级选项

  在Windows Vista中,通过本地安全策略控制台,我们还可以对EFS加密的一些高级选项进行设置。

  运行secpol.msc打开“本地安全”策略控制台,在控制台窗口左侧的控制台树中依次进入到“安全设置” “公钥策略” “加密文件系统”,用鼠标右键单击“加密文件系统”节点,选择“属性”,随后可以看到“加密文件系统属性”对话框。   

  Windows Vista中的高级EFS选项

探密Vista的EFS加密功能(下)

  

  对于单机或工作组环境下的计算机,我们需要设置的选项包括:

  使用加密文件系统(EFS)的文件加密 将该选项设置为“允许”,因为只有这样才可以继续设置下面的其他选项。

  加密用户的文档文件夹的内容 选中该选项后,本机所有用户的“文档”文件夹都会被加密。对于需要多人共用一台计算机并处理机密数据的环境,请选择该选项。

  启用页面文件加密 页面文件也就是我们常说的虚拟内存。正常情况下,当我们使用程序处理机密数据的时候,程序或者数据信息本身可能会被分配到页面文件中,并且在页面文件中保存很长时间,而且默认情况下页面文件在关机的时候并不会被删除。因此如果有人能够接触到页面文件,通过专用的软件将可以从中提取出数据,其中就有可能包含我们的机密数据。因此最安全的做法是加密页面文件,这样别人就算可以接触到页面文件,因为是加密的,没有证书,所以不用担心泄密。同理,我们还可以考虑加密临时文件夹。

图片内容