EFS简介
Windows 2000/XP/Server 2003都配备了EFS(Encrypting File System,加密文件系统),它可以帮助您针对存储在NTFS磁盘卷上的文件和文件夹执行加密操作。如果硬盘上的文件已经使用了EFS进行加密,即使黑客能访问到你硬盘上的文件,由于没有解密的密钥,文件也是不可用的。
EFS加密基于公钥策略。在使用EFS加密一个文件或文件夹时,系统首先会生成一个由伪随机数组成的FEK(File Encryption Key,文件加密钥匙),然后利用FEK和数据扩展标准X算法创建加密后的文件,并把它存储到硬盘上,同时删除未加密的原始文件。接下来系统利用你的公钥来加密FEK,并把加密后的FEK存储在同一个加密文件中。而在访问被加密的文件时,系统首先利用当前用户的私钥解密FEK,然后利用FEK解密出文件。在首次使用EFS时,如果用户还没有公钥/私钥对(统称为密钥),则会首先生成密钥,然后加密数据。如果你登录到了域环境中,密钥的生成依赖于域控制器,否则它就依赖于本地机器。
说起来非常复杂,但是实际使用过程中就没有那么麻烦了。EFS加密的用户验证过程是在登录Windows时进行的,只要登录到Windows,就可以打开任何一个被授权的加密文件。换句话说,EFS加密系统对用户是透明的。这也就是说,如果你加密了一些数据,那么你对这些数据的访问将是完全被允许的,并不会受到任何限制。而其他非授权用户试图访问你加密过的数据时,就会收到“访问拒绝”的错误提示(图1)。
如果盐醇用艿奈募粗频骄用艿奈募兄校庑┪募岜蛔远用堋H羰墙用苁菀瞥隼矗绻贫絅TFS分区上,数据依旧保持加密属性。被EFS加密过的数据不能在Windows中直接共享。如果通过网络传输经EFS加密过的数据,这些数据在网络上将会以明文的形式传输。NTFS分区上保存的数据还可以被压缩,但是一个文件不能同时被压缩和加密。再有,Windows的系统文件和系统文件夹无法被加密。
要提醒大家的是:要使用EFS加密功能,首先要保证操作系统是Windows 2000/XP/Server 2003,Windows 98/Me操作系统就无缘使用了。其次要保证文件所在的分区格式是NTFS格式,FAT32分区里的数据是无法加密的。如果你要使用EFS加密,必须将FAT32格式转换为NTFS。
EFS应用实例
让我们看看如何给文件夹加密。右击选择要加密的文件夹,选择快捷菜单中的“属性”,选择“常规”标签中的最下方“属性”|“高级”,在“压缩或加密属性”一栏中,把“加密内容以便保护数据”打上√(图2),点“确定”。回到文件属性点“应用”,弹出“确认属性更改”窗口,在“将该应用用于该文件夹、子文件夹和文件”打上“√”,点“确定”。这样这个文件夹里的原来有的以及新建的所有文件和子文件夹都被自动加密了。要解开加密的文件夹,把“加密内容以便保护数据”前面的“√”去掉,点确定就可以了。
将EFS选项添加至快捷菜单
如果想将EFS选项添加至快捷菜单,请依次执行下列操作步骤:在“运行”对话框内输入regedit,在注册表编辑器内浏览至下列子键:
HKEY_LOCAL_MACHINESOFTWARE
MicrosoftWindowsCurrentVersionExplorer
Advanced,然后新建一个DWORD值EncryptionContextMenu,并将它的键值设为1。注意,为确保对注册表进行修改,应在自己的计算机上拥有管理员账号。这样当用户右键单击某一存储于NTFS磁盘卷上的文件或文件夹时,加密或解密选项便会出现在随后弹出的快捷菜单上(图3),非常方便。
禁用EFS
如果你不喜欢EFS,可以彻底禁用它。只要在“运行”中输入Regedit并回车,打开注册表编辑器,依次展开到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionEFS,然后新建一个Dword值EfsConfiguration,并将其键值设为1,这样本机的EFS加密就被彻底禁用了。
跳过某个子文件夹
在加密的过程中我们常常遇到这样的情况,我们需要加密某一个文件夹,而此文件夹下还有很多的子文件夹,这时候我们如果不想加密位于此文件夹下的某一个子文件夹该怎么办呢?很多的用户往往采取的方法是将不需要加密的子文件夹剪切出来,单独存放,然后再加密文件夹。可是这样一来却破坏了原来的目录结构,加密和保持原有的目录结构好象是鱼与熊掌不可兼得,怎么办?其实你大可不必这么辛苦,只需要在不需要加密的子文件夹下建立一个“Desktop.ini”文件即可。具体地说就是在不需要加密的子文件夹下建立一个名为“Desktop.ini”的文件,用记事本程序打开并录入以下内容:
[encryption]
Disable=1
录入完毕保存并关闭该文件,以后要加密父文件夹的时候,当加密到该子文件夹就会遇到错误的信息,如图所示(图4),点“忽略”按钮就可以跳过对该子文件夹的加密,但其父文件夹的加密不会受到丝毫的影响。
在命令提示符下加密、解密文件
有些用户喜欢在命令提示符下工作,EFS也早为这些用户准备好了。用CIPHER命令即可轻松完成对文件和文件夹的加密、解密工作。其命令格式如下:
CIPHER [/E | /D] 文件夹或文件名 [参数]
例如要给F盘根目录下的abcde文件夹加密就输入:“CIPHER /e f:abcde”,如图所示(图5),回车后即可完成对文件夹的加密。要给F盘根目录下的abcde文件夹解密则输入:“CIPHER /D f:abcde”,回车后即可完成对文件夹的解密。/E是加密参数,/D是解密参数,其它更多的参数和用法请在命令提示符后输入:“CIPHER /?”来查看。
EFS加密的破解
在EFS加密体系中,数据是靠FEK加密的,而FEK又会跟用户的公钥一起加密保存;解密的时候顺序刚好相反,首先用私钥解密出FEK,然后用FEK解密数据。可见,用户的密钥在EFS加密中起了很大作用。
密钥又是怎么来的呢?在Windows 2000/XP中,每一个用户都有一个SID(Security Identifier,安全标识符)以区分各自的身份,每个人的SID都是不相同的,并且有唯一性。可以这样理解:把SID想象为人的指纹,虽然同名同姓甚至同时出生的人很多,但世界上任意两个人的指纹却完全不同。因此,这具有唯一性的SID就保证了EFS加密的绝对安全和可靠。因为理论上没有SID相同的用户,因而用户的密钥也就绝不会相同。在第一次加密数据时,系统就会根据SID生成加密者(该用户)的密钥,并且会把公钥及私钥分开保存,供用户加密和解密数据使用。
许多人由此就认为使用EFS加密非常安全,可是现在网上有一款叫做Advanced EFS Data Recovery的软件就可以破解EFS加密!不过使用该软件有个前提,那就是硬盘上要保留有相应的密钥,而且该软件目前仅能破解经过Windows 2000加密的文件,对Windows XP的加密还无法破解,所以使用XP的朋友可以安心一段时间了。一段时间以后呢?我也不知道,我只知道世上没有不透风的墙。大家可以从网上下载该软件的试用版,试用版只能解密文件的前512字节。
现在,假设我们的Windows 2000安装在C盘,事先用Administrators组的账户Work加密了一个文本文件efs1.txt。注销该账户,用同属于Administrators组的另一个账户Luck登录,直接打开efs1.txt文件试试,看到“访问拒绝”的错误提示了吧?这说明经过EFS加密后的文件非授权用户的确无法访问。接下来运行Advanced EFS Data Recovery,在“EFS Related Files”标签下点击右侧的“Scan For keys”,然后指定在C盘中扫描密钥,图中显示为绿色的就是可用密钥(图6)。然后点击“Encrypted files”标签,再点击右侧的“Scan for encrypted files”按钮,在D盘上搜索所有加密文件,会得到如图所示的结果(图7),其中的efs1.txt就是我们事先加密的文件,点击“Save files”按钮指定保存的位置即可。打开该文件看看,没有任何问题,该文件已经被解密了。
注意,如果你要解密的文件比较大的话,那就需要使用注册版,否则无法破解。