标题：EFS加密
概述
EFS加密是基于公钥策略的。在使用EFS加密一个文件或文件夹时，系统首先会生成一个由伪随机数组成的FEK (File Encryption Key，文件加密钥匙)，然后将利用FEK和数据扩展标准X算法创建加密后的文件，并把它存储到硬盘上，同时删除未加密的原始文件。随后系统利用你的公钥加密FEK，并把加密后的FEK存储在同一个加密文件中。而在访问被加密的文件时，系统首先利用当前用户的私钥解密FEK，然后利用FEK解密出文件。在首次使用EFS时，如果用户还没有公钥/私钥对（统称为密钥），则会首先生成密钥，然后加密数据。如果你登录到了域环境中，密钥的生成依赖于域控制器，否则它就依赖于本地机器。
好处
首先，EFS加密机制和操作系统紧密结合，因此我们不必为了加密数据安装额外的软件，这节约了我们的使用成本。 
其次，EFS加密系统对用户是透明的。这也就是说，如果你加密了一些数据，那么你对这些数据的访问将是完全允许的，并不会受到任何限制。而其他非授权用户试图访问加密过的数据时，就会收到“访问拒绝”的错误提示。EFS加密的用户验证过程是在登录Windows时进行的，只要登录到Windows，就可以打开任何一个被授权的加密文件。 
如何使用EFS加密 
要使用EFS加密，首先要保证你的操作系统符合要求。目前支持EFS加密的Windows操作系统主要有Windows 2000全部版本和Windows XP Professional、Windows Vista Business或更高以及Windows 7 Professional或更高版系列的操作系统，所有家庭版和入门版的Windows都不支持该功能。其次，EFS加密只对NTFS分区上的数据有效（注意，这里我们指的是NTFS 3.1分区，有时也称作NTFS5.0（指随同Windows2000发布，win2000的版本号是5.0），这是指由Windows 2000/XP/Vista/7格式化过的NTFS分区；而由Windows NT4格式化的NTFS分区格式，虽然同样是NTFS文件系统，但它不支持EFS加密），你无法加密保存在FAT和FAT32分区上的数据。 
对于想加密的文件或文件夹，只需要用鼠标右键点击，然后选择“属性”，在常规选项卡下点击“高级”按钮，之后在弹出的窗口中选中“加密内容以保护数据”，然后点击确定，等待片刻数据就加密好了。如果你加密的是一个文件夹，系统还会询问你，是把这个加密属性应用到文件夹上还是文件夹以及内部的所有子文件夹。按照你的实际情况来操作即可。解密数据也是很简单的，同样是按照上面的方法，把“加密内容以保护数据”前的钩消除，然后确定。 
如果你不喜欢图形界面的操作，还可以在命令行模式下用“cipher”命令完成对数据的加密和解密操作，至于“cipher”命令更详细的使用方法则可以通过在命令符后输入“cipher/?”并回车获得。
这里还有个窍门，用传统的方法加密文件，必须打开层层菜单并依次确认，非常麻烦，不过只要修改一下注册表，就可以给鼠标的右键菜单中增添“加密”和“解密”的选项。
添加方法：在运行中输入“regedit”并回车，打开注册表编辑器，定位到：HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion /Explorer/Advanced ，在“编辑”菜单上点击“新建－Dword值”，输入“EncryptionContextMenu”作为键名，并设置键值为“1”。现在退出注册表编辑器，打开资源管理器，任意选中一个NTFS分区上的文件或者文件夹，然后点击鼠标右键，就可以在右键菜单中找到相应的选项，直接点击就可以完成加密解密的操作。
如果你想设置禁止加密某个文件夹，可以在这个文件夹中创建一个名为“Desktop.ini”的文件，然后用记事本打开，并添加如下内容：
[Encryption]
Disable=1
之后保存并关闭这个文件。这样，以后要加密这个文件夹的时候就会收到错误信息，除非这个文件被删除。
而如果你想在本机上彻底禁用EFS加密，则可以通过修改注册表实现。在运行中输入“Regedit”并回车，打开注册表编辑器，定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EFS，在“编辑”菜单上点击“新建－Dword值”，输入“EfsConfiguration”作为键名，并设置键值为“1”，这样本机的EFS加密就被禁用了。而以后如果又想使用时只需把键值改为“0”。
注意事项
如果把未加密的文件复制到具有加密属性的文件夹中，这些文件将会被自动加密。若是将加密数据移出来(前提:你正在使用的账户有移动\复制\删除已加密文件的权限)，如果移动到NTFS分区上，数据依旧保持加密属性；如果移动到FAT分区上，这些数据将会被自动解密。被EFS加密过的数据不能在Windows中直接共享。如果通过网络传输经EFS加密过的数据，这些数据在网络上将会以明文的形式传输。NTFS分区上保存的数据还可以被压缩，不过一个文件不能同时被压缩和加密。最后一点，Windows的系统文件和系统文件夹无法被加密。
EFS实战
（由《电脑迷》提供，网易学院整理发布）
提示：要使用EFS，必须满足两个条件：
1. 文件需要保存在NTFS文件系统的分区上。
2. 操作系统必须支持EFS加密。目前支持EFS的操作系统主要有：Windows 2000、Windows XP Professional（不包括Home版），还有Windows Server 2003，Vista，7。EFS加密解密a.最简单的办法就是在目标对象上点击鼠标右键，选择“属性”，打开属性对话框,然后在常规选项卡上点击“高级”按钮，打开高级属性对话框，选中“加密内容以便保护数据”这个选项，反之解密。
b.每次加密都需要打开其高级属性对话框，非常麻烦。我们可以打开注册表编辑器，定HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced，在这里新建一个名为EncryptionContextMenu的DWORD值，并将其数值设置为“1”，这样用鼠标右键点击一个文件或文件夹的时候，右键菜单中就会有加密（如果目标对象尚未被加密）或者解密（如果目标对象已经被加密）选项，只要选择相应的选项就可以直接完成操作。加密后文件的共享默认情况下，加密后的文件只有加密者可以访问。如果因为特殊情况，你需要将你自己加密后的文件和别人共享，那么还需要额外的设置。要注意的是，这个特性仅在Windows XP之后的操作系统中提供，Windows 2000下无法共享EFS加密后的文件。同时共享只能用于单个文件，而无法用于整个文件夹。
在这个对话框中点击“添加”按钮，就可以选择你希望可以打开这个文件的用户。不过要注意，这里添加用户并不是添加用户的名称，而是添加用户的公钥，也就是说希望共享文件的用户必须有自己的公钥。密钥的备份和恢复为什么有很多人在使用EFS的时候出现问题呢？笔者认为最大的原因在于很多人并没有真正理解EFS的加密方式。说到加密，密钥是一个非常重要的概念。EFS是一种公钥加密，那么这里就要说说什么是公钥加密了。在使用EFS加密一个文件或文件夹时，系统首先会生成一个由伪随机数组成的FEK (File Encryption Key，文件加密钥匙)，然后利用FEK和数据扩展标准X算法创建加密后的文件，并把它存储到硬盘上，同时删除未加密的原始文件。随后系统利用你的公钥加密FEK，并把加密后的FEK存储在同一个加密文件中。而在访问被加密的文件时，系统首先利用当前用户的私钥解密FEK，然后利用FEK解密出文件。在首次使用EFS时，如果用户还没有公钥/私钥对（统称为密钥），则会首先生成密钥，然后加密数据。
从这段话中我们可以看出两个重点：文件的加密和解密都需要密钥的参与，而密钥分为公钥和私钥两种。很明显，无论是加密还是解密文件，都需要用到个人密钥。加密文件的时候使用公钥，解密文件的时候则使用相对应的私钥。那么无论是丢失了公钥还是私钥，都会给我们的使用带来麻烦，尤其是私钥，丢失之后就再也无法解密文件了。
为了保证数据安全，我们最好能在加密文件之后立即将自己的密钥备份出来，并保存到安全的地方，以防系统崩溃或其他原因导致数据无法解密。如何备份密钥呢？运行“certmgr.msc”打开证书管理器，在“当前用户/个人/证书”路径下，应该可以看见一个以你的用户名为名称的证书（如果你还没有加密任何数据，这里是不会有证书的）。用鼠标右键点击这个证书，在“所有任务”中点击“导出”。之后会弹出一个证书导出向导，在向导中有一步会询问你是否导出私钥，在这里要选择“导出私钥”，其它选项按照默认设置，连续点击继续，最后输入该用户的密码和想要保存的路径并确认，导出工作就完成了。导出的证书将是一个pfx为后缀的文件。这个pfx文件最好能保存到其他位置，并且要保证该文件的安全。恢复密钥当用户的密钥丢失后，例如重装了操作系统，或者无意中删除了某个帐户，我们只要找到之前导出的pfx文件，用鼠标右键点击，并选择“安装PFX”，之后会出现一个导入向导，按照导入向导的提示完成操作（注意，如果你之前在导出证书时选择了用密码保护证书，那么在这里导入这个证书时就需要提供正确的密码，否则将不能继续），而之前加密的数据也就全部可以正确打开。
讲到这里，相信你对EFS的基本使用方法已经有了一个大概的认识，不过光有理论知识是不够的，笔者希望大家都多在实践中掌握EFS的使用。 由于EFS安全性非常高，如果使用不慎或方法不当则可能造成非常麻烦的后果，所以建议大家先用不重要的文件进行EFS加密的试验。
错误认知
对EFS加密的几个错误认识?
?很多人对EFS理解的不够彻底，因此在使用过程中总会有一些疑问。一般情况下，我们最常见的疑问有以下几种：
1， 为什么打开加密过的文件时没有需要我输入密码？
这正是EFS加密的一个特性，同时也是EFS加密和操作系统紧密结合的最佳证明。因为跟一般的加密软件不同，EFS加密不是靠双击文件，然后弹出一个对话框，然后输入正确的密码来确认的用户的；EFS加密的用户确认工作在登录到Windows时就已经进行了。一旦你用适当的账户登录，那你就能打开相应的任何加密文件，并不需要提供什么额外的密码。
2， 我的加密文件已经打不开了，我能够把NTFS分区转换成FAT32分区来挽救我的文件吗？
这当然是不可能的了。很多人尝试过各种方法，例如把NTFS分区转换成FAT32分区；用NTFS DOS之类的软件到DOS下去把文件复制到FAT32分区等，不过这些尝试都以失败告终。毕竟EFS是一种加密，而不是一般的什么权限之类的东西，这些方法对付EFS加密都是无济于事。而如果你的密钥丢失或者没有做好备份，那么一旦发生事故所有加密过的数据就都没救了。
3， 我加密数据后重装了操作系统，现在加密数据不能打开了。如果我使用跟前一个系统相同的用户名和密码总应该就可以了吧？
这当然也是不行的，我们在前面已经了解到，跟EFS加密系统密切相关的密钥是根据每个用户的SID得来的。尽管你在新的系统中使用了相同的用户名和密码，但是这个用户的SID已经变了。这个可以理解为两个同名同姓的人，虽然他们的名字相同，不过指纹绝不可能相同，那么这种想法对于只认指纹不认人名的EFS加密系统当然是无效的。
4， 被EFS加密过的数据是不是就绝对安全了呢？
当然不是，安全永远都是相对的。以被EFS加密过的文件为例，如果没有合适的密钥，虽然无法打开加密文件，不过仍然可以删除（有些小人确实会这样想：你竟然敢加密了不让我看！那好，我就删除了它，咱们都别看）。所以对于重要文件，最佳的做法是NTFS权限和EFS加密并用。这样，如果非法用户没有合适的权限，将不能访问受保护的文件和文件夹；而即使拥有权限（例如为了非法获得重要数据而重新安装操作系统，并以新的管理员身份给自己指派权限），没有密钥同样还是打不开加密数据。
5， 我只是用Ghost恢复了一下系统，用户账户和相应的SID都没有变，怎么以前的加密文件也打不开了？
这也是正常的，因为EFS加密所用到的密钥并不是在创建用户的时候生成，而是在你第一次用EFS加密文件的时候。如果你用Ghost创建系统的镜像前还没有加密过任何文件，那你的系统中就没有密钥，而这样的系统制作的镜像当然也就不包括密钥。一旦你加密了文件，并用Ghost恢复系统到创建镜像的状态，解密文件所用的密钥就丢失了。因此这个问题一定需要主意！
希望本文对你使用EFS加密有所帮助，希望你的数据能够更加安全！