Win2000的文件加密系统 陈云洲 2001年 13期 对于个人或企业来说,没有经过授权而闯入保密数据库是一个十分严重的问题。一些操作系统,如:Win95、Windows for Workgroups(WFW)没有提供安全保障机制,当管理人员没有完全执行安全机制时,甚至Win NT的安全机制也可能出现问题。入侵者可以使用像NTFSDOS这样的工具来绕过NT的安全系统,从而获取你所保护的数据。    UNIX和Win NT系统的安全依赖于一个称之为“有条件进入控制”(Discretionary Access Control-DAC)的系统。具有DAC的系统可以允许你来保护你的敏感数据。DAC尤其适用于多人共用一台机器的情况。但如果计算机的硬盘被偷走的话,DAC就毫无用处了,因为只要他能绕过操作系统(如重装NT),就可以轻易地读取盘上的文件了。在一些系统中,DAC不允许访问者无限制地对文件、文件夹进行操作,这时,入侵者可以通过将其拷贝到笔记本电脑、软磁盘,甚至通过拨号上网进入网络,然后将其拷贝到自己的电脑中来达到目的。    Win2000使用文件加密系统(Encryption File System-EFS)对文件实现加密保护,即使硬盘被偷走,上面的文件也不会泄密。要想深入了解Win2000的EFS,我们需要了解一下现在所使用的加密技术。   #1 普通的加密技术    加密用来保护文件以免偶然或蓄意攻击造成的泄密。只要密钥安全,那么用它保护的数据文件就不会泄密。相比之下,保护密钥比保护大量数据容易得多。当然,如果密匙被丢失的话,我们就不可能再进入这些被加密保护的数据了。现在经常使用的加密方法有加密文件、磁盘加密、文件加密系统(EFS)。加密文件的方法在一些应用程序中已经得到应用了。如Word、Excel可以根据使用者的要求对文件加密或解密。加密文件法比磁盘加密法容易实现而且更适用于多人共用一台机器的情况。但是,这种方法的解密过程要产生一个所解密文件的副本,而且像Word这样的程序要在磁盘上产生临时文件,这些都有可能导致泄密,所以必须把这些“副产品”安全地删掉。    Win NT在用户模式下使用加密文件的方法,操作系统把密钥存在一个记录文件中。如果黑客能进入这个记录文件则能进入用这个密钥保护的数据文件。    磁盘加密法用一个密钥来对整个磁盘进行加密。用户输入一个口令来“锁住”硬盘。磁盘加密依赖于系统的DAC,这样,当运行磁盘加密时并不能防止他人窃取硬盘数据。   #1 文件加密系统    文件加密系统与通常的加密技术相比具有几个优势。由于EFS加密技术被集成到整个操作系统中,所以如果使用者不能通过操作系统的检查则不能对磁盘进行操作。Win2000的EFS 驱动程序运行于内核模式以提供更安全的保障。EFS易于管理而且对使用者是完全透明的。用户可以用操作系统随机生成的私人密钥来保护自己的数据文件。用户可以无条件地进入自己的文件,没有密钥的用户则不能进入相应数据区域。    EFS源自公用密码技术,用一个随机产生的文件加密密码(File Encryption Key-FEK)来加密数据。用密码加密的共用系统有两个密码:公用密码和私人密码。公用密码是公开的,而私人密码则只有私人用户自己才知道的。用户用公用密码来加密FEK,用私人密码来解密FEK。NTFS用具有所谓的数据解密域(Data Decryption Field-DDF)和数据恢复域(Data Recovery Field-DRF)属性的加密文件存放加密后的FEK清单。    EFS的密码存放机制建立在Win2000 Crypto API结构上,它把用户的公用密码和私人密码与系统随机产生的密码分别存放。    Win2000系统的子机上也使用了同样的EFS策略,因此子机用户在暂时离线时可以对数据进行加密,便携式电脑用户也可以在离线时进行加密。同样,在系统不能进行身份校验时,用户可以使用机器缓存中的历史数据登录到网络主机上。你也可以利用远程服务器来加密数据。但是,EFS并不能加密传输电缆上的数据,它只对硬盘起作用。   #1 EFS的组织结构    EFS包括一个服务系统(Service)、驱动程序(Driver)、运行时间库(Runtime Library)-EFSRTL以及Win32API。EFS的服务系统集成了Win2000的安全子系统。在用户模式下,这个服务系统支持Win32 API,并提供了一个Crypto API界面来生成DDF和DRF文件。在内核模式下,服务系统通过一个“本地进程请求”(Local Procedure Call)来与EFS驱动程序通讯。EFS驱动程序在内核工作模式下处于NTFS的最高层。驱动程序通过与工作于用户模式的EFS服务系统通讯以提供密码管理服务。EFS驱动程序从EFS服务系统得到FEK、DDF、DRF服务,然后把这些信息传送到EFSRTL以完成文件管理工作。EFSRTL虽然是EFS驱动程序的一个组成部件,但它并不与驱动程序直接通讯,即使EFS把EFSRTL 和EFS驱动程序作为一个整体。EFSRTL和EFS驱动程序用NTFS请求来通讯,这样在对文件进行操作时,确保了NTFS的安全性。   #1 对文件或文件夹加密    Win2000把加密(Encryption)作为文件和文件夹属性的一个新的选项。用户可以用同样的方式打开、阅读、保存经过加密或没有加密的文件。只有用户本人、数据恢复员和其他经过授权的人才能共享这些加密文件或文件夹。EFS的使用与NTFS的文件压缩的使用类似。当你对文件夹加密时,NTFS把文件夹内的文件分别加密,而且自动地把以后你放入这个文件夹里的文件加密。在缺省情况下,NTFS把文件夹里的子文件夹也自动加密。    EFS允许用户在网络范围内用命令行方式拷贝加密文件。Win2000的Copy命令用特殊的开关来处理加密文件。根据所用版本,可以把文件输出到软磁盘、备份磁带、16位或32位FAT海量存储设备上。还可以把加密文件作为E-mail的一个附件。输出加密文件的开关是/E,形式为“Copy /E源文件名 目的地文件名”同样,我们可以用/I来输入文件,形式为“Copy /I 源文件名 目的地文件名”。    值得注意的是,如果没有加上正确的开关,除非目的地文件夹是加了密的,否则Copy命令会把加密文件像没有加密的文件那样拷贝。我们可以在Cipher工具中用命令行来对文件夹或文件夹里的文件加密。在文件或文件夹没有解压之前,我们不能把经过压缩的数据加密;对系统文件也不能加密。在文件的属性对话框中,我们点取“高级控制”可以设定加密或压缩属性,这两个属性是相斥的,只能选取一个。系统文件夹中的文件不能被加密,在系统启动过程中,使用者的密码是不起作用的。如果你对系统文件加密,则会导致系统不能启动到Win2000状态。如果试图对标有系统属性的文件加密,系统会报告一个“拒绝访问”的出错信息。我们可以用Cipher工具来检验一个文件或文件夹是否被加密。    当需要读写加密文件时,EFS可以很容易地把文件解密。用户可以在Explorer中右键单击要解密的文件或文件夹,在文件属性的高级属性对话框中把Encrypt项变为不选项来达到目的。   #1 加密标准    有两个原因限制了EFS技术在操作系统中的应用。第一,在操作系统中集成EFS是非常复杂的,需要相当高的技术能力。第二,政府对加密技术出口的控制使得卖主更难以集成EFS。EFS加密技术采用56位的数据加密标准。现在美国政府禁止超过40位密匙的加密软件出口。但Microsoft及其他公司对此已打开了一个突破口,被允许在北美地区使用56位加密标准,但在其它地方仍然只能使用40位加密标准。当然,56位加密标准是向下兼容40位加密标准的,反之则不行。   #1 简 评    Win2000的EFS在操作系统上是一个很大的进步,是现在运行在小型机、大型机上的UNIX、AS/400系统的有力竞争对手。Win2000提供了非常高的安全性,在网络攻击越来越频繁的情况下,完全能适应各种企业、组织的需要。在实际运用中,需要确保密钥的安全,同时要建立适当的数据恢复机制,以保证网络的安全运行。