1. EFS简介
1.1. 什么是EFS
为了提高文件的安全性,微软在Windows 2000/XP/2003中,针对NTFS引入了EFS加密技术。EFS(Encrypting File System,加密文件系统)是一个由Windows2000系列、Windows XP 专业版、Windows Server 2003系列提供的透明的文件加密服务,它是以公共密钥加密为基础,使用了Windows中的CryptoAPI架构。EFS可以使文件具有机密性但不提 供完整保护。EFS提供可选的数据恢复能力,数据恢复代理(Recovery Agent)可以恢复另一用户加密的数据。EFS也可以实现多用户(当然是被许可的用户)共享存取一个已经加密的数据。
1.2. EFS的优点
用户加密或解密文件或文件夹非常方便。 访问加密的文件快且容易。如果用户持有一个已加密的NTFS文件的私钥,那么用户能够打开这个文件,并透明地将该文件作为普通文档使用,反之,用户会被拒 绝对文件的访问,并不像第三方加密软件一样在每次存取时都要求输入密码。此外,EFS属于被动加密,当一个文件被拷贝到一个被EFS加密的文件夹时,该文 件自动的被EFS加密,简化了数据的加密过程。 加密后的数据无论怎样移动都保持加密状态(前提要在NTFS分区下移动,在Windows 2000/XP系统中,如果试图把一个EFS加密文件移动或复制到FAT/FAT32分区时,会首前解密, 如果无法解密那么文件的移动或者复制操作将会遭到拒绝)。 EFS与NTFS紧密地集成在一起。当创建临时文件时,只要所有文件在NTFS卷上,原始文件的属性就会被复制到临时文件中。如果加密了一个文件,EFS 也会将其临时文件进行加密。EFS驻留在操作系统内核中,并且使用不分页的池存储文件加密密钥,保证了密钥不会出现在分页文件中。这防止了一些应用程序在 创建临时文件时泄密。 通过EFS加密敏感性文件,会增加更多层级的安全性防护。在加密文件时,即使黑客已完全存取电脑的文件储存体,其文件仍然受到保护。 在Windows XP中,EFS可处理脱机文件和文件夹。
1.3. 有关EFS加密文件的文件操作
1.3.1. 复制加密的文件夹或文件
- 在同一台计算机内,将文件或文件夹从 Windows Server 2003 位置中的一个 NT 文件系统 (FS) 分区复制到 Windows Server 2003 位置中的另一个 NTFS 分区。就像复制未加密的文件一样复制文件或文件夹。使用 Windows 资源管理器或命令提示符。该副本已加密。
- 在同一台计算机内,将文件或文件夹从 Windows Server 2003 卷中的一个 NTFS 分区复制到文件分配表 (FAT) 分区。就像复制未加密的文件一样复制文件或文件夹。使用 Windows 资源管理器或命令提示符。由于目标文件系统不支持加密,因此副本为明文形式。
- 将文件或文件夹复制到另一台计算机上,且两台计算机都使用 Windows Server 2003 中的 NTFS 分区。就像复制未加密的文件一样复制文件或文件夹。使用 Windows 资源管理器或命令提示符。如果远程计算机允许您对文件进行加密,则副本就已加密;否则,副本为明文形式。注意,必须信任远程计算机的委派;在域环境中,默 认情况下不启用远程加密。
- 将文件或文件夹从 Windows Server 2003 位置中的 NTFS 分区复制到另一台计算机上 Microsoft Windows NT® 4.0 位置中的 FAT 或 NTFS 分区。就像复制未加密的文件一样复制文件或文件夹。使用 Windows 资源管理器或命令提示符。由于目标文件系统不支持加密,因此副本为明文形式。
1.3.2. 移动或重命名加密的文件夹或文件
- 在同一卷内移动或重命名文件或文件夹。就像移动未加密的文件一样移动文件。使用 Windows 资源管理器、上下文菜单或命令提示符。目标文件或文件夹仍保持加密状态。
- 在不同卷之间移动文件或文件夹。这其实是一个复制操作。复习前一节“复制加密的文件夹或文件”。
1.3.3. 删除加密的文件夹或文件
- 如果您有删除文件或文件夹的权限,则可以将其像未加密的文件一样删除。删除加密的文件夹或文件并不限于最初加密该文件的用户。
1.3.4. 备份加密的文件夹或文件
- 通过复制进行备份。正如前一节“复制加密的文件夹或文件”中所述,使用“复制”命令或菜单选项创建的备份可产生明文副本。
- 使用 Window Server 2003 中的“备份”工具或支持 Windows Server 2003 功能的任何备份工具进行备份。这是推荐的加密文件备份方法。备份保持文件的加密状态,备份操作员在备份时不需要访问私钥;只需要访问完成任务所需的文件或 文件夹。
1.3.5. 还原加密的文件或文件夹
- 通过复制进行还原。正如前一节“复制加密的文件夹或文件”中所述,使用“复制”命令或菜单选项创建的还原文件可产生明文副本。
- 使用 Window Server 2003 中的“备份”工具或支持 Windows Server 2003 功能的任何备份工具进行还原。这是推荐的加密文件还原方法。还原操作保持文件的加密状态,并且还原代理不需要访问私钥即可还原文件。在还原操作完成后,拥 有私钥的用户可以正常使用该文件。
1.3.5.1. 将文件还原到另一台计算机上
- 如果希望在加密文件所用的计算机以外的任何其他计算机上使用该加密文件,您需要确保在该系统中可以使用加密证书和关联的私钥。您可以使用漫游配置文件或手动移动密钥来实现此目的。
- 使用漫游配置文件。如果您还没有漫游配置文件,请向管理员申请建立一个漫游配置文件。在建立了漫游配置文件后,您使用的加密密钥在以该用户帐户登录的所有 计算机上都是相同的。注意,即使使用了漫游配置文件,您可能仍需要对加密证书和私钥进行备份。但是,如果您丢失了解密文件时所需的密钥,您可以向指定恢复 代理(默认是本地或域管理员)申请恢复加密的文件。
- 手动移动密钥。在试图手动移动密钥之前,应备份您的加密证书和私钥。这样,您就可以在另一个系统中还原证书和密钥了。
1.4. EFS的技术结构与原理
1.4.1. 密钥和证书
EFS采用基于公钥的方案实现数据加密或解密,它使用标准x509证书,每一个受保护的文件都是被一个使用带有一定长度的文件加密密钥(FEK)的 快速对称加密算法加密的(FEK的长度由算法或法则决定)。一个用户要访问一个已加密的文件,他必须拥有与公钥相适应的私钥。 加密与解密 文件转换是加密和解密文件的过程,它需要一个特殊的接口。即使在严重的失败产生时,数据在转换过程中仍然是不会丢失的,所以,EFS会备份没经过加密的原 数据直到全部转换过程都已经完成。当EFS接到转换文件的请求时,它首先进行一系列的检查,这些检查包括文件是否可以加密以及是否有足够的磁盘空间进行加 密。系统文件或在系统目录中的文件时不能被EFS加密的。如果经过检查说明文件可以被加密,EFS便产生一个文件加密密钥(FEK)。 然后,EFS将在相应的文件夹建立一个临时文件。每一个源文件数据流都以备份用途被复制到这个临时文件中,源文件被缩短并且EFS读取这个临时文件中的数 据并将它们写入原始文件,由于EFS加密是透明的,因而在实际写入磁盘前,EFS便已将数据加密。当所有数据被写入原始文件以及EFS证明了文件已加密 后,EFS才会删除这个临时文件。如果转换失败或转换过程中发生错误,EFS会在删除临时文件前将试图加密的文件恢复到原始状态。
1.4.2. 打开与读写原理
EFS拥有4个主要的操作:打开、读、写以及转换文件。由于EFS被设计成为透明的,对于打开、读取、写入已加密文件便与操作普通文件没有任何区 别:应用程序仍然使用普通的Win32 APIs。应用程序使用CreateFile()或者OpenFile()来打开已加密的文件;用ReadFile()、ReadFileEx()以及 ReadFileScatter()来读取已加密的文件;用WriteFile()、WriteFileEx()、WriteFileScatter() 来写入已加密的文件。 数据恢复
EFS具有数据恢复能力,当用户的密钥损坏或丢失时EFS数据恢复便可以恢复已经加密的文件。系统管理员可以在恢复代理策略、空恢复策略 以及无恢复策略中选择一种恢复策略。在域中,当设置首域控制器时,Windows执行该域默认故障恢复策略。恢复代理策略是指系统管理员添加了一个或多个 恢复代理。这些代理在管理范围中恢复任何已加密数据都是可受响应的。空恢复策略是指系统管理员删除了所有的恢复代理以及他们的公钥证书(EFS不允许管理 员在 Windows2000中选择此设置)。所谓的无恢复策略是指系统管理员删除了恢复策略的私钥,这时没有私钥是可用的,所以不可能使用恢复代理,并且 EFS的恢复也是不可用的。在独立的机器上,初始是没有恢复策略的,独立计算机的系统管理员可以修改EFS恢复策略,并且可以向恢复策略添加或创建恢复证 书。
2. EFS使用指南
2.1. 加密文件或者文件夹
在你加密一个文件或文件夹前, 确认该文件或文件夹所处硬盘格式为NTFS,如果不是NTFS格式,使用(Convert volume /FS: NTFS [/V] [/CvtArea: filename] [/Nosecurity] [/X])转换为NTFS格式。
2.1.1. EFS加密文件或者文件夹步骤
- 在Windows Explorer中创建 C:\Secret\File1文件,然后右击File1,单击Properties。 Windows XP Professional 显示Properties 对话框,且General选项卡是打开的。
- 单击Advanced。 显示Advanced Attributes 对话框。
- 选择 Encrypt Contents to Secure Data 复选框,然后单击
- 单击OK 关闭File1 Properties 对话框。 显示Encryption Warning对话框,提示将加密一个非加密的文件夹中的文件。默认的情况是加密文件夹和文件,但是可以选择只加密文件
- 单击 Cancel 关闭 Encryption Warning 对话框,然后单击Cancel关闭File1 Properties对话框,不加密File1文件
- 在 Windows Explorer中右击 C:\Secret ,然后单击Properties。
- 单击Advanced. 显示Advanced Attributes 对话框。
- 选择Encrypt Contents to Secure Data复选框,然后单击OK。
- 单击OK关闭Secret Properties对话框。 显示Confirm Attribute Change对话框提示您将加密一个文件夹。有两种选择:可以只加密文件夹,或者可以加密文件夹和其中的所有子文件夹和文件。
- 选择Apply Changes to This Folder, Subfolders and Files 选项,然后单击OK。
- 在Secret文件夹中右击File1,然后单击Properties。The File1 Properties dialog box appears.
- 单击Advanced. 显示Advanced Attributes对话框。注意Encrypt Content To Secure Data复选框已经被选择了。
- 关闭Advanced Attributes 对话框。
- 关闭 Properties 对话框。
- 关闭所有窗口并注销。 现在你会发现被加密的文件和文件夹的颜色变成了绿色。
如果你不喜欢图形界面的操作,还可以在命令行模式下使用“cipher”命令完成对数据的加密和解密操作,至于“cipher”命令更详细的使用方法则可以通过在命令符后输入“cipher/?”并回车获得。
注意:如果把未加密的文件复制到具有加密属性的文件夹中,这些文件将会被自动加密。若是将加密数据移出来,如果移动到NTFS分区上,数据依旧保 持加密属性;如果移动到FAT分区上,这些数据将会被自动解密。被EFS加密过的数据不能在Windows中直接共享。如果通过网络传输经EFS加密过的 数据,这些数据在网络上将会以明文的形式传输。NTFS分区上保存的数据还可以被压缩,不过一个文件不能同时被压缩和加密。最后一点,Windows的系 统文件和系统文件夹无法被加密。
2.1.2. 将“加密”命令添加到右键菜单中
用传统的方法加密文件,必须打开层层菜单并依次确认,非常麻烦,不过只要修改一下注册表,就可以给鼠标的右键菜单中增添“加密”和“解密”的选项。 在运行中输入“regedit”并回车,打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion \Explorer\Advanced分支,新建-个DWORD值,并输入“EncryptionContextMenu”作为键名,设置键值为“1”。 退出注册表编辑器,任意选中一个NTFS分区上的文件或者文件夹,然后点击鼠标右键,就可以在右键菜单中找到相应的选项,直接点击就可以完成加密解密的操 作。
2.1.3. 禁止加密某个文件夹
如果你想设置禁止加密某个文件夹,可以在这个文件夹中创建一个名为“Desktop.ini”的文件,然后用记事本打开,并添加如下内容: [Encryption] Disable=1 之后保存并关闭这个文件。这样,以后要加密这个文件夹的时候就会收到错误信息,除非这个文件被删除。 而如果你想在本机上彻底禁用EFS加密,则可以通过修改注册表实现。打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows NT\CurrentVersion\EFS分支,新建-个DWORD值,输入“EfsConfiguration”作为键名,并设置键值为“1”,这样 本机的EFS加密就被禁用了。而以后如果又想使用时只需把键值改为“0”即可。
2.2. 保证EFS加密的安全和可靠
前面我们已经了解到,在EFS加密体系中,数据是靠FEK加密的,而FEK又会与用户的公钥一起加密保存;解密的时候顺序刚好相反,首先用私钥解密出 FEK,然后用FEK解密数据。可见,用户的密钥在EFS加密中起了很大作用。 密钥又是怎么来的呢?在Windows 2000/XP中,每一个用户都有一个SID(Security Identifier,安全标示符)以区分各自的身份,每个人的SID都是不相同的,并且有唯一性。在第一次加密数据的时候,操作系统就会根据加密者的 SID生成该用户的密钥,并把公钥和私钥分开保存起来,供用户加密和解密数据。其次,EFS机制在设计的时候就考虑到了多种突发情况的产生,因此在EFS 加密系统中,还有恢复代理(Recovery Agent)这一概念。 对于Windows 2000来说,在单机和工作组环境下,默认的恢复代理是Administrator;Windows XP在单机和工作组环境下没有默认的恢复代理。而在域环境中就完全不同了,所有加入域的Windows 2000/XP计算机,默认的恢复代理全部是域管理员。这一切,都保证了被加密数据的安全。
2.2.1. 备份密钥
在运行中输入“certmgr.msc”然后回车,打开证书管理器。密钥的导出和导入工作都将在这里进行。 在你加密过文件或文件夹后,打开证书管理器,在“当前用户→个人→证书”分支中应该可以看见一个以你的用户名为名称的证书(如果你还没有加密任何数据,这里是不会有证书的)。
右键点击这个证书,选择“所有任务→导出”命令。之后会弹出一个证书导出向导,在点击“下一步”按钮之后,在出现的对话框中选择 “是,导出私钥”选项,其他选项按照默认设置,连续点击继续,最后输入该用户的密码和想要保存的路径并确认,最终导出一个后缀为pfx的证书文件(在导出 证书的时候可以选择导出时删除私钥,一旦选择了这个选项那么私钥将会被删除,从而无法再导出私钥信息)。 这个证书文件可以导入到其他用户环境中(重新安装操作系统时也可以导入),其他用户环境导入这个证书文件后将获得访问被加密文件的能力,所以这个证书文件 可以用作加密文件的恢复。此外,这个证书一旦失窃就存在被加密数据泄密的可能,所以这个被导出的证书文件需要妥善保存。
2.2.2. 恢复密钥
找到之前导出的pfx文件,右键点击,并选择“安 装PFX”命令,之后会出现一个导入向导,按照导入向导的提示完成操作(注意,如果你之前在导出证书时选择了用密码保护证书,那么在这里导入这个证书时就 需要提供正确的密码,否则将不能继续),而之前加密的数据也就全部可以正确打开。
2.2.3. 恢复代理
在硬盘上建立一个临时的文件,文件类型不限。这里我们以E盘根目录下的一个Encrpted文件夹为例,建立好后在运行中输入“CMD”然后回车,打开命 令提示行窗口。在命令提示符后输入“cipher /r:E:\Encrypted”,回车后系统还会询问你是否用密码把证书保护起来,你可以根据具体情况来定,如果不需要密码保护就直接按回车。完成后我 们能在E盘的根目录下找到Encrypted.cer和Encrypted.pfx两个文件。 对于Encrypted.pfx文件,同样需要用鼠标右键点击,选择“安装PFX”命令,然后按照向导的提示安装。 对于Encrypted.cer文件,在“运行”中输入“gpedit.msc”并回车,打开组策略编辑器。在“计算机配置→Windows设置→安全设 置→公钥策略→加密文件系统”选项中,右键单击该选项,选择“所有命令→添加数据恢复代理”命令,然后会出现“添加故障恢复代理向导”,按照这个向导指示 打开Encrypted。cer文件,如果一切无误就可以在右键菜单中看到“添加数据恢复代理程序”命令,这说明我们已经把当前登录用户设定为恢复代理。
注意:你导入证书所用的Encrypted.pfx和Encrypted.cer是用哪个账户登录后生成的,那么导入证书恢复代理就是这位用户。 在设置了有效的恢复代理后,用恢复代理登录系统就可以直接解密文件。但如果你在设置恢复代理之前就加密过数据,那么这些数据恢复代理仍然是无法打开的。 对于Windows 2000就更加简单,Windows 2000有恢复代理,因此只要用恢复代理(默认的就是Administrator)的账号登录系统,就可以解密文件。
2.3. 共享被加密的文件或者文件夹
- 用恢复代理账号或EFS加密创建者账户登录Windows,然后打开被加密的文件夹(因为EFS是对文件加密,不是对文件夹加密,所以其他用户也可以打开文件夹),右击要共享的被加密的文件,选择“属性”,打开文件属性对话框。
- 在“常规”选项卡中点击“高级”按钮,在“高级属性”对话框里点击“详细信息”按钮;然后点击“添加”按钮,添加另外一个用户的EFS证书,在用户证书列 表里面选择一个证书,然后点击“确定”按钮完成添加工作(该证书只有在第一次使用EFS时才会被创建,因此要让别的用户能够查看被EFS加密的文件,必须 先创建这个证书,也就是说其他用户必须先使用一次EFS加密)。
- 依次点击“确定”按钮,退出全部对话框即可完成EFS加密文件的共享操作。
2.4. 访问远程共享EFS加密文件
- 需要保证访问远程计算机的Windows帐号具有在远程计算机上访问EFS加密文件的能力。具体的设置可以参照上述的设置还原代理以及共享加密文件夹
- 设置文件夹所在的计算机的Trust computer for delegation属性,具体的设置在与管理器->Active Directory Users and Computers->Computers分组,选择目标计算机->右键->属性->常规->勾选Trust computer for delegation。在设置完毕后,目标计算机需要重新启动。