摘要
本文简介了EFS的原理,概述了EFS文件加密系统的加密过程、加密文件的打开、读与写,并简单地介绍了Windows XP专业版中EFS的使用和EFS在企业应用中的优越性以及光明远景。但是,本文并不是教你如何使用EFS的文章。
目录:
1. 何谓EFS
2. EFS加密的优点
3. EFS的技术结构与原理
4. EFS的应用
5. EFS尚存的不足之处
6. 总结
--------------------------------------------------------------------------------
何谓EFS
EFS是一个由Windows2000系列、Windows XP 专业版以及Windows.NET提供的透明的文件加密服务,它是以公共密钥加密为基础,使用了Windows中的CryptoAPI架构。EFS可以使文件具有机密性但不提供完整保护。EFS提供可选的数据恢复能力,系统管理员可以恢复另一用户加密的数据。EFS也可以实现多用户(当然是被许可的用户)共享存取一个已经加密的数据。
EFS加密的优点
用户加密或解密文件或文件夹非常方便。
访问加密的文件快且容易。如果用户持有一个已加密的 NTFS 文件的私钥,那么用户能够打开这个文件,并透明地将该文件作为普通文档使用,反之,用户会被拒绝对文件的访问。而并不像第三方加密软件一样在每次存取时都要求输入密码。
加密后的数据无论怎样移动都保持加密状态(前提要在NTFS分区下移动,在Windows 2000/XP以及Windows.net系统中,如果试图把一个EFS加密文件移动或复制到FAT/FAT32分区会遭到拒绝)。
EFS 与 NTFS 紧密地集成在一起。当创建临时文件时,只要所有文件在 NTFS 卷上,原始文件的属性就会被复制到临时文件中。如果加密了一个文件,EFS 也会将其临时文件进行加密。EFS 驻留在操作系统内核中,并且使用不分页的池存储文件加密密钥,保证了密钥不会出现在分页文件中。这防止了一些应用程序在创建临时文件时泄密。
通过EFS加密敏感性文件,会增加更多层级的安全性防护。在加密文件时,即使黑客已完全存取电脑的文件储存体,其文件仍然受到保护。
在Windows XP/ Windows.net中,EFS可处理脱机文件和文件夹。
EFS的技术结构与原理
密钥和证书
EFS采用基于公钥的方案实现数据加密或解密,它使用标准x509证书,每一个受保护的文件都是被一个使用带有一定长度的文件加密密钥(FEK)的快速对称加密算法加密的(FEK的长度由算法或法则决定)。一个用户要访问一个已加密的文件,他必须拥有与公钥相适应的私钥。
加密与解密
文件转换是加密和解密文件的过程,它需要一个特殊的接口。即使在严重的失败产生时,数据在转换过程中仍然是不会丢失的,所以,EFS会备份没经过加密的原数据直到全部转换过程都已经完成。当EFS接到转换文件的请求时,它首先进行一系列的检查,这些检查包括文件是否可以加密以及是否有足够的磁盘空间进行加密。系统文件或在系统目录中的文件时不能被EFS加密的。如果经过检查说明文件可以被加密,EFS便产生一个文件加密密钥(FEK),对于FEK加密与解密,在微软公司发布的《Windows2000的加密文件系统白皮书》中对EFS加密原理作了以下描述:
FEK加密使用一个或多个密钥加密公钥,生成一个加密的 FEK 列表。用户密钥对的公共部分用来加密 FEK。加密的 FEK 列表与加密文件一起存储在一个特殊的 EFS 属性中,该属性称为数据加密字段 (DDF)。文件加密信息与文件紧密地捆绑在一起。用户密钥对的私有部分在解密过程中使用。FEK 是通过使用密钥对的私有部分进行解密的。用户密钥对的私有部分安全地存放在别的地方,如智能卡或其它安全存储设备上。
FEK 也使用一个或多个恢复密钥加密公钥进行加密。再者,每个密钥对的公共部分用来加密 FEK。此加密的 FEK 列表与文件一起存储在一个特殊的 EFS 属性中,该属性称为数据恢复字段 (DRF)。加密 DRF 中的 FEK,只需要恢复密钥对的公共部分。在正常文件系统操作中,要求这些公共恢复密钥始终在 EFS 系统上。恢复本身一般很少用到,只是当用户离开公司或者丢失密钥时才使用。正因为如此,恢复代理可以将密钥的私有部分安全地存放到别的地方(智能卡或其它安全的存储设备上)。{1}
然后,EFS将在相应的文件夹建立一个临时文件。每一个源文件数据流都以备份用途被复制到这个临时文件中,源文件被缩短并且EFS读取这个临时文件中的数据并将它们写入原始文件,由于EFS加密是透明的,因而在实际写入磁盘前,EFS便已将数据加密。当所有数据被写入原始文件以及EFS证明了文件已加密后,EFS才会删除这个临时文件。如果转换失败或转换过程中发生错误,EFS会在删除临时文件前将试图加密的文件恢复到原始状态。
打开与读写原理
EFS拥有四个主要的操作:打开、读、写以及转换文件。由于EFS被设计成为透明的,对于打开、读取、写入已加密文件便与操作普通文件没有任何区别:应用程序仍然使用普通的Win32 APIs。应用程序使用CreateFile()或者OpenFile() 来打开已加密的文件;用ReadFile()、ReadFileEx()以及ReadFileScatter()来读取已加密的文件;用WriteFile()、WriteFileEx()、WriteFileScatter()来写入已加密的文件。
数据恢复
EFS具有数据恢复能力,当用户的密钥损坏或丢失时EFS数据恢复便可以恢复已经加密的文件。系统管理员可以在恢复代理策略、空恢复策略以及无恢复策略中选择一种恢复策略。在域中,当设置首域控制器时,Windows执行该域默认故障恢复策略。恢复代理策略是指系统管理员添加了一个或多个恢复代理。这些代理在管理范围中恢复任何已加密数据都是可受响应的。空恢复策略是指系统管理员删除了所有的恢复代理以及他们的公钥证书。(*EFS不允许管理员在Windows2000中选择此设置。)所谓的无恢复策略是指系统管理员删除了恢复策略的私钥,这时没有私钥是可用的,所以不可能使用恢复代理,并且EFS的恢复也是不可用的。在独立的机器上,初始是没有恢复策略的,独立计算机的系统管理员可以修改EFS恢复策略,并且可以向恢复策略添加或创建恢复证书。
EFS的应用
在Windows XP中使用EFS加密/解秘数据以及EFS的数据恢复功能
在Windows XP中使用EFS来加密文件或文件夹是非常轻松的一件事,步骤如下:
在资源管理器中右键单击想加密的文件或文件夹,点击属性,出现图一的对话框,
点击高级按钮,出现的对话框如图二。
a) 加密单个文件:
在加密内容以便保护数据前面的单选框中打钩,然后单击确定。EFS便开始加密文件。
b) 加密文件夹:
用EFS加密文件夹的步骤和用其来加密文件的步骤基本一样,只不过在加密内容以便保护数据前面的单选框中打钩并最终在文件夹属性对话框点击确定后,会出现如图三的对话框。如果选择仅将更改应用于该文件夹,EFS只将这个文件夹加密,而不把里面的文件加密;如果选择将更改应用于该文件夹、子文件夹和文件,所有目录内的内容将会像上面所讲的过程被加密。
c) 解密:
和加密文件一样,把加密内容以便保护数据前的钩去掉,然后点击确定,即可完成单个文件的解密。如果是解密文件夹,同样会出现如图四的对话框,与加密文件夹一样,选择对整个目录的内容有效还是只对文件夹本身有效。单击确定后,EFS便开始解密。
d) 添加/删除用户的访问权:
为一个文件添加/删除用户可以赋予/撤销用户对EFS加密文件的完全访问权。已被添加的用户有访问、加密以及解密文件的权利。点击高级对话框中的详细信息按钮将看到如图五所示的对话框。用添加以及删除按钮来添加和删除用户。
(*在Windows2000中EFS加密的用法,详见微软公司1999年发布的《Windows2000的加密文件系统白皮书》。**详细的EFS使用方法,请参见微软中国社区网站中的《EFS(Encrypting File System)加密使用浅谈》一文。)
EFS在企业中的应用以及前景
在EFS之前,市面上便已经有许多适用其他技术的加密软件,但是那些加密软件大多是基于口令的方案,这样便很容易受到字典攻击,并且,如果企业使用另外的加密软件,还要增加企业的开支。EFS的出现为企业提供了较为完整的文件加密方案,既节省了企业的总开支,又提供了更为安全的加密服务。通过EFS加密敏感文件,会增加更多层的安全性防护。在加密文件时,即使黑客已侵入系统并已完全存取电脑的资料储存体,其资料仍然受到保护。配合其他的安全措施与EFS, 大大方便的企业在安全方面的部署,集成在操作系统中的EFS服务前景光明。
EFS尚存的不足之处
EFS可以说是微软为用户提供的一个内建在Windows产品中的方便快捷并且强大的加密系统,然而,微软设计了让其他操作系统也能读取NTFS的文件格式来使用户能够避开硬盘故障以及启动分区故障。因此,使用某些操作系统可以很容易地绕过NTFS安全机制,存取NTFS文件。但是尽量把组织或网络中所有机器都安装Windows2000(或以上)的操作系统,所有分区都格式化成NTFS,这样可以提高安全性以及避免敏感数据遭受袭击的可能性。另外,这种让其他操作系统也能读取NTFS的文件格式的特性并未被广泛使用