本文对加密文件系统 (EFS) 及技术进行了概述。该系统包含在 Microsoft® Windows® 2000 操作系统中。

 

EFS 提供的核心文件加密技术可将加密的 NTFS 文件存储到磁盘上。EFS 特别考虑了其他操作系统上的现有工具引起的安全性问题,这些工具允许用户不经过访问检查就可以从 NTFS 卷访问文件。使用 EFS,NTFS 文件中的数据在磁盘上进行了加密。所用的加密技术是基于公钥的,并作为一个集成系统服务运行;它易于管理,不易受到攻击,并且对用户是透明的。如果用户要访问一个加密的 NTFS 文件,并且有这个文件的私钥,那么用户能够打开这个文件,并透明地将该文件作为普通文档使用。没有该文件私钥的用户被拒绝对文件的访问。
概述
个人计算机系统采取的一个标准安全措施就是,在试图从硬盘引导前,尝试从软盘引导。这可以保护用户避开硬盘驱动器故障以及被破坏的引导分区。不幸的是,它方便了启动不同的操作系统。这意味着可以物理访问系统的人可以使用可读取 Windows NTFS 盘上结构的工具,绕过 Microsoft® Windows® NT 文件系统访问控制的内置安全功能。很多硬件配置提供了类似引导口令的功能来限制此类访问。但此类功能并没有得到广泛使用。在典型环境中,多用户共享一个工作站,这些功能没有很好地发挥作用。即使这些功能获得了普遍使用,口令提供的保护也不是很强大。
未经授权的数据访问已成为一个严重问题,比较典型的有:
· 失窃的膝上型计算机–要拿走无人看管的膝上型计算机只需一会儿的功夫。如果窃贼偷计算机并不是为了卖掉它来获利,而是对存储在硬盘上的敏感信息感兴趣,那么会产生什么样的后果?
· 不受限制的访问–办公室桌面系统无人看管时,任何人都可进来从无人看管的计算机中很快地将信息窃走。
这种安全性问题的根源就是敏感信息,通常这些信息以未加保护的文件形式存储在磁盘上。如果 Windows NT 是唯一可运行的操作系统,并且不能物理地卸下硬盘驱动器,就可以限制对存储在 NTFS 分区上敏感信息的访问。如果有人真想获得信息,他们如能物理访问计算机或硬盘驱动器,就不难获得这些信息。使用允许从 MS-DOS® 和 UNIX 操作系统访问 NTFS 文件的工具,就会很容易地绕过 NTFS 安全机制。
数据加密是解决这一问题的唯一方案。市场上有很多产品使用由口令演变而来的密钥技术,提供应用程序级的文件加密。但这些加密方法大多具有一些局限:
· 每次使用时手动加密和解密。对大多数产品而言,加密服务对用户不透明。每次使用前,用户须先将文件解密,文件完成后再重新加密。如果用户忘记了加密文件,那么该文件不受保护。因为每次使用必须指定要加密(和解密)的文件,所以它可能会被忽略。
· 临时文件和分页文件的泄密。很多应用程序在用户编辑文档时创建临时文件(例如,Microsoft Word)。这些临时文件存放在磁盘上未经加密,即使原始文档加过密也是如此,这样数据很容易被窃取。应用程序级加密运行在 Windows 用户模式下。这意味着,用户的密钥可能存储在分页文件中。仅仅通过挖掘一个内存分页文件,就可以轻而易举地使用一个密钥访问所有文档。
· 安全性差。密钥来自口令。如果使用很容易记的口令,字典攻击可以轻易破坏这种安全性。
· 没有数据恢复。很多产品不提供数据恢复服务。对用户来说,这又是一件令人沮丧的事情。对不想再记一个口令的用户,更是如此。而提供基于口令的数据恢复时,又产生了另一个访问的漏洞。要窃取数据的窃贼只需获得此恢复机制的口令,就可以获得对加密文件的访问。
加密文件系统 (EFS) 定位到所有这些问题,甚至更多。下面四节详细讨论了加密技术,以及加密在系统、用户界面和数据恢复的何处进行?
EFS 是基于公钥的加密技术,它使用了 Windows 的 CryptoAPI 结构。每个文件都是使用随机产生的密钥加密的,这种密钥独立于用户的公钥/私钥对,从而扼制了多种基于密码分析的攻击。
文件加密可以使用任何对称加密算法。第一版的 EFS 将 DES 作为加密算法。将来的发行版本将允许其它的加密方案。
EFS 也支持对存储在远程文件服务器上的文件加密和解密。备注 在这种情况下,EFS 只对磁盘上的数据加密。EFS 不加密在网络上传输的数据。Windows 提供了诸如 SSL/PCT 的网络协议,对网络上的数据访问进行加密。
EFS 与 NTFS 紧密地集成在一起。当创建临时文件时,只要所有文件在 NTFS 卷上,原始文件的属性就会被复制到临时文件中。如果加密了一个文件,EFS 也会将其临时文件进行加密。EFS 驻留在操作系统内核中,并且使用不分页的池存储文件加密密钥,保证了密钥不会出现在分页文件中。
EFS 的默认配置允许用户不需任何管理努力,即可开始对文件进行加密。EFS 自动为用户文件加密生成一个公钥对(如果没有)。
单个文件或完整目录均支持文件加密和解密。目录加密是强制为透明的。在标为加密的目录中创建的所有文件(和子目录)自动被加密。每个文件具有唯一的加密密钥,这样文件重命名很安全。如果将加密目录中的一个文件重命名到同一卷上的未加密目录上,该文件仍是加密的。加密和解密服务可从 Windows Explorer 获得。对高级用户和恢复代理还提供了命令行工具和管理界面,他们可以充分利用此功能。
文件使用前不需要解密。当向磁盘存储和从磁盘读取字节时,加密和解密透明地完成。EFS 自动检测加密文件,并从系统密钥存储区定位用户密钥。因为密钥存储机制是基于 CryptoAPI 的,用户在将密钥存储在诸如智能卡的安全设备上方面具有很大的灵活性。


EFS 的早期版本不支持文件共享。但是,EFS 结构是为任意数量的用户使用其公钥、实现文件共享而设计的。然后,用户可以使用他们的个人私钥,独立地解密文件。可以方便地从一组许可共享加入用户(如果他们有配置的公钥对)或删除用户。
EFS 提供内置的数据恢复支持。Windows 2000 安全基础结构强制对数据恢复密钥的配置。只有当系统配置了一个或多个恢复密钥时,才可以使用文件加密。EFS 允许恢复代理配置用于启用文件恢复的公钥。使用恢复密钥时,仅仅文件随机产生的密钥可用,用户的私钥不可用。这保证了其它私人信息不会无意中泄露给恢复代理。
数据恢复是出于对大多数业务环境的考虑,例如员工离开公司后或加密密钥丢失时公司要恢复员工加密过的文件。恢复策略可以在 Windows 域的域控制器中定义。此域中的所有计算机都被强制执行此策略。恢复策略处在域管理员控制之下,域管理员使用 Windows 目录服务委派功能,可以将此策略委派给受托的数据安全管理员帐户。这提供了更好、更灵活的方法控制被授权恢复加密数据者。通过允许多恢复密钥配置,EFS还支持多恢复代理,为单位实现恢复过程提供冗余和灵活性。
EFS 也可用于家庭环境。在没有 Windows 域的情况下,EFS 自动生成恢复密钥,并将它存为机器密钥。通过使用管理员帐户,家庭用户也可以使用命令行工具恢复数据。这减少了家庭用户的管理开销。
使用加密文件系统
下面几节提供用户一些案例用以说明 EFS 是如何工作的。
下图给出了 Windows Explorer 用于文件加密服务的上下文菜单。
上下文菜单提供用户以下 EFS 功能:
· 加密–此选项允许用户加密当前选定文件。如果当前选定的是一个目录,此选项让用户加密目录中的所有文件(和子目录),并标记目录为已加密。
· 解密–此选项与加密选项正好相反。此选项使用户能够将当前选定的文件进行解密。如果当前选定的是一个目录,此选项使用户能够将目录中的所有文件进行解密,并将目录重设为未加密目录。
· 配置-用户可以生成、导出、导入和管理用于基于 EFS 的文件加密的公钥。配置与用户安全设置的其它部分集成在一起。此功能是为要管理自己密钥的高级用户开发的。通常,用户并不需要进行任何配置。如果用户没有用于文件加密的配置的密钥,EFS 自动为他生成密钥。
除了图形界面,Windows 2000 还提供命令行工具以丰富管理操作的功能。命令行工具有:
· 密码命令行工具–可以在命令提示符下加密和解密文件。
例如:
o 要加密"C:\My Documents"目录,用户键入:
C:\>cipher /e "My Documents"
o 要加密所有带有"cnfdl"的文件时,用户键入:
C:\ >cipher /e /s *cnfdl*
完整的 cipher 命令支持以下选项:
CIPHER [/E | /D] [/S[:dir]] [/A] [/I] [/F] [/Q] [filename [...]]
/E 加密指定文件。目录会被标记,这样以后添加的文件就会被加密。
/D 解密指定文件。目录会被标记,这样以后添加的文件就不会被加密。
/S 对给定目录及所有子目录中的文件进行指定操作。默认"dir"指的是当前目录。
/I 即使发生了错误,也要继续执行恢复操作。默认情况下,当出现错误时,CIPHER 命令停止执行。
/F 对所有指定文件强制执行加密操作,即使是对已加密的文件。默认情况下,会跳过已加密的文件。
/Q 仅报告最基本的信息。
filename 指定一个模式、文件或目录。
如果没有参数,CIPHER 命令显示当前目录及目录下文件的加密情况。可以使用多文件名和通配符。多个参数之间必须加空格。
· Copy 命令–此命令将用新的选项加以扩展,以可移植的格式导出和导入加密文件。
例如:
o 要将加密文件导出到软盘上,用户键入:
C:\>copy /e EncResume.doc a:
copy命令支持的新选项是:
copy [/E |/I] sourcefile destinationfile
/E 将加密文件 (sourcefile) 作为一个不透明的加密位流导出到目标文件 (destinationfile)。目标文件 (destinationfile) 不必在 NTFS 卷上,它可以是软盘上的 FAT 文件。
/I 将来自源文件 (sourcefile) 的不透明位流作为 NTFS 卷上的 EFS 加密文件导入。源文件 (sourcefile) 不要求是 NTFS 文件。但目标文件 (destinationfile) 则必须是 NTFS 文件。


文件加密
用户只需选择一个或多个文件,然后从"文件加密"上下文菜单中选择"加密"。EFS 对选定文件进行加密。
文件一旦加密,就以加密形式存储到磁盘上。对文件的所有读写均透明地解密和加密。要查看文件是否已加密,用户可以检查文件的属性,看加密属性位是否打开。因为加密是透明的,用户可以像以前一样使用文件。例如,用户仍可以像以前一样打开 Word 文档进行编辑,或者使用 Notepad 打开和编辑文本文件。任何其他用户要打开此加密文件,就会出现访问被拒绝的错误,这是因为此用户没有解密文件的密钥。
用户(此处指管理员)不应加密系统目录中的文件,因为系统引导时需要这些文件。在引导过程中,用户的密钥不能解密这些文件。这一操作会使系统失去作用。Windows Explorer 使用户无法加密带有系统属性的文件,来防范此类操作。Windows 将来的发行版本会提供支持系统文件加密的安全引导功能。
EFS 也给用户提供了在不同系统之间传送加密文件的功能。"导出加密文件"和"导入加密文件"功能是 Windows 命令提示符下 Copy 命令的扩展。用户要做的只是使用导出选项,指定一个已加密文件作为源,并指定另一个在未加密目录中的文件作为目标。导出文件仍是加密的。然后,用户可以将此导出文件复制到别的文件系统,包括 FAT、备份磁带,或者像普通文件一样,将它作为电子邮件附件发出。要在复制的目标系统上使用这个文件,用户须将导出的文件指定为源文件,在 NTFS 卷上的新文件名作为目标文件进行导入,这样系统会创建一个新的加密文件。备注:简单地复制文件会得到一个明文副本,除非复制文件的目录已标为加密,则副本会被再次加密。这是因为普通复制命令使用由 EFS 透明解密的文件读取。这可用来创建用于分发的加密文件的明文副本。
目录加密
用户也可以使用 Windows Explorer 上下文菜单,将目录标为加密目录。将一个目录标记为加密目录可确保以后此目录中的所有文件默认为加密且所有子目录均标为加密。文件的目录列表不加密,只要对该目录有足够的访问权限,就可以和平时一样列举文件。
将目录标记为加密与文件加密类似。用户选定文件,然后在 Windows Explorer 中选择加密选项。在这种情况下,用户可以选择仅将目录标记为加密,或者将目录下所有文件及子目录标为加密。使用目录加密,用户只需将敏感文件复制到加密目录中就可对其进行管理。
文件或目录解密
普通操作时用户并不需要将文件或目录解密,因为在数据读写过程中 EFS 提供透明的加密和解密。然而在特定场合下,例如用户需要与其他用户共享一个加密文件时,可能需要这样的操作。
用户可以使用 Windows Explorer 上下文菜单,对文件进行解密和标记目录为未加密。此操作与加密类似。在一个或多个文件上执行此操作,EFS 对整个文件进行解密,并将其标为未加密文件。对一个目录进行解密时,上下文菜单也提供选项,递归地对目录中的所有加密文件及子目录进行解密。
EFS 恢复策略作为系统整个安全策略的一部分来实现。它或者是作为 Windows 域域安全策略的一部分,或者是作为独立工作站和服务器的本地安全策略的一部分。作为域安全策略的一部分,它适用于域中所有基于 Windows 2000 或 Windows NT 的计算机。"EFS 策略"用户接口已被集成为"域策略"和"本地策略"接口的一部分。此接口允许恢复代理通过公用密钥管理控制生成、导出、导入和备份恢复密钥。恢复策略与系统安全策略的集成提供了一致的安全强制模型。Windows 安全子系统负责强制、复制和缓存 EFS 策略。因此,用户能够在暂时脱机的系统(如膝上型计算机)上使用文件加密,这与用户可以使用缓存凭据够登录到他们的域帐户非常相似。
· EfsRecvr 命令行工具–使恢复代理使用任一恢复密钥,就可以查询恢复密钥和恢复一个加密文件。
例如:
o 要恢复 My Documents 目录中的所有文件,恢复代理可以键入:
C:\>efsrecvr /s:"My Documents" *.*
cipher 命令支持以下选项:
EFSRECVR [/S[:dir]] [/I] [/Q] [filename [...]]
/S 对给定目录中及所有子目录中的文件进行恢复。默认"dir"指的是当前目录。
/I 即使发生了错误,也要继续执行恢复。默认情况下,当出现错误时,CIPHER 命令停止执行。
/Q 只报告最基本的信息,包括恢复密钥标识列表以帮助恢复代理加载适当的密钥。
filename 指定了一个模式、文件或目录。
加密恢复
在 EFS 可以使用之前,EFS 要求在"域"的层次(或在本地,如果计算机不是一个域的成员)设置数据恢复。恢复策略由域管理员设置(或由称为恢复代理的受托人设置),系统管理员控制域中的所有计算机的恢复密钥。
如果一个用户丢失了私钥,被该密钥保护的文件可通过以下方式进行恢复:导出该文件,并以电子邮件的方式发送到一个恢复代理。恢复代理使用恢复私钥将文件导入到安全的计算机上,并使用恢复命令行工具解密该文件。然后,恢复代理将明文文件返回给用户。在没有域的小型业务环境或家庭环境中,恢复可以自己在独立的计算机上完成。


EFS 结构
本节提供对 EFS 的一个简要的技术和结构概述。
EFS 采用基于公钥的方案实现数据加密和解密。文件数据加密使用带有一个文件加密的 (FEK) 的快速对称算法完成的。FEK 是随机产生的一定长度的密钥,其长度是由算法决定的,或是由法则决定(如果算法支持可变长度的密钥)。与 EFS 有关的导出问题将在一个单独的文档中进行讨论。
FEK加密使用一个或多个密钥加密公钥,生成一个加密的 FEK 列表。用户密钥对的公共部分用来加密 FEK。加密的 FEK 列表与加密文件一起存储在一个特殊的 EFS 属性中,该属性称为数据加密字段 (DDF)。文件加密信息与文件紧密地捆绑在一起。用户密钥对的私有部分在解密过程中使用。FEK 是通过使用密钥对的私有部分进行解密的。用户密钥对的私有部分安全地存放在别的地方,如智能卡或其它安全存储设备上。
备注 用户密钥也可以使用对称算法加密,如由口令演变而来的密钥。EFS 并不支持这种密钥,因为基于口令的方案自身安全性较弱,易受到字典攻击。
FEK 也使用一个或多个恢复密钥加密公钥进行加密。再者,每个密钥对的公共部分用来加密 FEK。此加密的 FEK 列表与文件一起存储在一个特殊的 EFS 属性中,该属性称为数据恢复字段 (DRF)。加密 DRF 中的 FEK,只需要恢复密钥对的公共部分。在正常文件系统操作中,要求这些公共恢复密钥始终在 EFS 系统上。恢复本身一般很少用到,只是当用户离开公司或者丢失密钥时才使用。正因为如此,恢复代理可以将密钥的私有部分安全地存放到别的地方(智能卡或其它安全的存储设备上)。
下图给出了加密、解密和恢复过程的示意图。
图1 文件加密过程
图1 表示加密过程。用户的明文文件使用随机产生的 FEK 加密。文件加密密钥与文件存储在一起,文件是使用 DDF 中的用户公钥和 DRF 中的恢复代理公钥进行加密的。备注:此图表示仅一个用户和一个恢复代理–实际上可以是使用独立密钥的一组用户和一组恢复代理列表。EFS 的第一版支持单用户和多恢复代理。
图2 文件解密过程
图2 表示解密过程。用户的私钥用来对 FEK 进行解密,它使用 DDF 中相应的加密 FEK 项。FEK 以块为单位对文件数据读取进行解密。当对大文件进行随机访问时,只对从磁盘中读取该文件的特定块进行解密。不需要对整个文件进行解密。
图3 文件恢复过程
图3 表示恢复过程。恢复过程与解密类似,只是它使用恢复代理的私钥来解密 DRF 中的 FEK。
此简单方案提供了强大的加密技术,使多用户能够共享一个加密文件,也允许多恢复代理恢复此文件(如果需要)。此方案中算法使用十分灵活,在各个加密阶段,可使用任意的加密算法。这是至关重要的,因为产生了新的和更好的加密算法。
EFS 结构如图 4 所示。
 
图 4 EFS 结构
在 Windows 2000 操作系统中,EFS 由以下组件组成:
· EFS 驱动程序。 EFS 驱动程序在 NTFS 上面一层。它与 EFS 服务通信,请求文件加密密钥、DDF、DRF 和其它密钥管理服务。它将信息送到 EFS 文件系统运行时库 (FSRTL),以透明地执行各种文件系统操作(打开、读取、写入和附加)。
· EFS FSRTL。FSRTL 是 EFS 驱动程序中的一个模块,用于实现 NTFS 标注以处理各种文件系统操作,如对加密文件和目录的读取、写入和打开操作,以及文件数据写入磁盘或从磁盘中读取时对文件数据的加密、解密和恢复。即使 EFS 驱动程序和 FSRTL 都是以单个组件实现的,它们之间从不直接通信。它们使用 NTFS 文件控制标注机制相互传递消息。这保证了 NTFS 参与所有的文件操作。使用文件控制机制完成的操作包括,将 EFS 属性数据(DDF 和 DRF)作为文件属性写入,以及将 EFS 服务中计算的 FEK 传送到 FSRTL,使之可以在开放文件上下文中建立起来。此文件上下文又可用于磁盘文件读写操作的透明加密和解密。
· EFS 服务。EFS 服务是安全子系统的一部分。它使用本地安全授权 (LSA) 和内核模式安全参考监视器之间的现有 LPC 通信端口与 EFS 驱动程序进行通信。在用户模式下,它面对 CryptoAPI,提供文件加密密钥并生成 DDF 和 DRF。EFS 服务也支持 Win32® API 的加密、解密、恢复、导入和导出。!
· Win32 API。它为加密明文文件、解密和恢复密文文件、导入和导出加密文件(没有先解密)提供了编程接口。Advapi32.dll(一个标准的系统 DLL)支持这些 API。
  EFS 的导出问题
EFS 对授权的恢复代理提供数据恢复。Microsoft 致力于满足当前加密导出策略规章以及为国际用户提供多于 40 位的加密技术,数据恢复结构就是其中的一部分。朝着这个努力方向,EFS 使用了标准 DES 加密算法,此算法是基于 56 位加密密钥。EFS 设计支持不同密钥强度的不同加密算法,以便将来的改进。
现在,Microsoft 正与美国政府一起,寻求获得使用 56 位 DES 的 EFS 文件加密算法的导出批准。由于检查还在进行当中,Microsoft 给国际用户提供 40 位 DES 实现的 EFS,作为文件加密算法。在北美市场,Windows 产品则使用标准的 56 位 DES 加密算法。用 40 位 EFS 版本加密的文件可以导入到支持 56 位 DES 的 EFS 版本。然而,使用 56 位 EFS 版本加密的文件不能导入到 40 位 DES 的 EFS 版本中,以符合美国导出规章的要求。将来,如果规章允许导出功能更强的加密技术,世界各地的用户可以透明地迁移和使用 EFS 新的、更强的加密算法。
结论
有了 Windows 2000 的 EFS,用户可以使用强大的基于公钥的加密方案,对单个 NTFS 文件以及整个目录进行加密。
· EFS 通过文件共享,支持远程文件的加密。
· 使用 EFS,企业可以建立数据恢复策略,如需要,可以恢复用 EFS 加密的数据。
· 恢复策略与整个 Windows 安全策略集成在一起。对此策略的控制权可以委派给有恢复权限的个人。
· EFS 中的数据恢复是内含的操作。它仅显示恢复的数据,而不是用于加密文件的用户个人密钥。
· 使用 EFS 的文件加密不要求用户每次使用都对文件加密和解密。对磁盘文件进行读写操作时,解密和加密透明地进行。
· EFS 支持导出和导入功能,允许不经解密就可以对加密文件进行备份、还原和文件传输。
· EFS 与操作系统集成到一起,这样就不会将密钥信息泄露到分页文件中,保证了加密文件的所有临时副本都得到了加密。
· 北美版本的 EFS 将 DES 作为文件加密算法,具有完全的 56 位密钥熵。国际版本的 EFS 也将 DES 作为加密算法,但文件加密密钥只有 40 位密钥熵。


评论

该日志第一篇评论

发表评论

评论也有版权!