当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 深入剖析EFS

安全基础
IE浏览器防黑十大秘籍,黑客也没招
网络工程师讲解系统安全漏洞的形成和防治
清除导致XP系统反复重启的新网银木马
识破QQ欺骗网络地址的几种方法汇总
安全基础知识 细说暴库的原理与方法
排除无线突然中断故障实例
强搜天线 搜出WiFi世界的安全漏洞
网管应用技巧 内网安全十大策略说明
如何修改局域网内部打印机的IP地址
如何找出IIS中隐藏的网站
EFS加密技术的概念分析及一次解密经过
提高Windows XP系统安全性要关闭的10种服务
PHPBB 2.0.22 MOD版最新注入漏洞
修复Windows系统忘记密码的9个高招
用SockOnline软件轻松突破端口限制
安全基础知识 最强0到33600端口详解
执行文件方式加密FLASH文件的解密方法
网吧被入侵后的应对解决方法
网页“黑手”如何攻击你的Windows系统
不要让别人读了你的信 谈私密数据保护

安全基础 中的 深入剖析EFS


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 86 ::
收藏到网摘: n/a

EFS是Encrypting File System,加密文件系统的缩写,他可以被应用在windows 2000以上的操作系统且为NTFS5格式的分区上(windows xp home不支持).
    
    EFS 只能对存储在磁盘上的数据进行加密,是一种安全的本地信息加密服务.EFS使用核心的的文件加密技术在NTFS卷上存储加密文件.
    它可以防止那些未经允许的对敏感数据进行物理访问的入侵者(偷取笔记本电脑,硬盘等)
    
    EFS是如何工作的

    当一个用户使用EFS去加密文件时,必须存在一个公钥和一个私钥,如果用户没有,EFS服务自动产生一对。对于初级用户来说,即使他完全不懂加密,也能加密文件,可以对单个文件进行加密,也可以对一个文件夹进行加密,这样所有写入文件夹的文件将自动被加密。

    一旦用户发布命令加密文件或试图添加一个文件到一个已加密的文件夹中,EFS将进行以下几步:

    第一步:NTFS首先在这个文件所在卷的卷信息目录下(这个目录隐藏在根目录下面)创建一个叫做efs0.log的日志文件,当拷贝过程中发生错误时利用此文件进行恢复。

    第二步:然后EFS调用CryptoAPI设备环境.设备环境使用Microsoft Base Cryptographic Provider 1.0 产生密匙,当打开这个设备环境后,EFS产生FEK(File Encryption Key,文件加密密匙).FEK的长度为128位(仅US和Canada),这个文件使用DESX加密算法进行加密。

    第三步: 获取公有/私有密匙对;如果这个密匙还没有的话(当EFS第一次被调用时),EFS产生一对新的密匙.EFS使用1024位的RSA算法去加密FEK.

    第四步:EFS为当前用户创建一个数据解密块Data Decryptong Field(DDF),在这里存放FEK然后用公有密匙加密FEK.


    第五步:如果系统设置了加密的代理,EFS同时会创建一个数据恢复块Data Recovery Field(DRF),然后把使用恢复代理密匙加密过的FEK放在DRF.每定义一个恢复代理,EFS将会创建一个Data Recovery Agent(DRA).Winxp没有恢复代理这个功能,所以没有这一步.,这个区域的目的是为了在用户解密文件的中可能解密文件不可用。这些用户叫做恢复代理,恢复代理在EDRP(Encryption Data Recovery Policy,加密数据恢复策略)中定义,它是一个域的安全策略。如果一个域的EDRP没有设置,本地EDRP被使用。在任一种情况下,在一个加密发生时,EDRP必须存在(因此至少有一个恢复代理被定义)。DRF包含使用RSA加密的FEK和恢复代理的公钥。如果在EDRP列表中有多个恢复代理,FEK必须用每个恢复代理的公钥进行加密,因此,必须为个恢复代理创建一个DRF。

    第六步:包含加密数据、DDF及所有DRF的加密文件被写入磁盘。

    第七步: 在加密文件所在的文件夹下将会创建一个叫做Efs0.tmp的临时文件.要加密的内容被拷贝到这个临时文件,然后原来的文件被加密后的数据覆盖.在默认的情况下,EFS使用128位的DESX算法加密文件数据,但是Windows还允许使用更强大的的168位的3DES算法加密文件,这是FIPS算法必须打开,因为在默认的情况下它是关闭的.

    第八步:在第一步中创建的文本文件和第七步中产生的临时文件被删除。

    文件被加密后,只有可以从DDF或是DRF中解密出FEK的用户才可以访问文件.这种机制和一般的安全机制不同并意 味着要想访问文件,除了要有访问这个文件的权力外还必须拥有被用户的公有密匙加密过的FEK.只有使用私有密匙解密文件的用户才可以访问文件.这样的话会有一个问题:就是一个可以访问文件的用户可把文件加密之后,文件真正的拥有者却不能访问文件.解决这个问题的办法:用户加密文件的时候只创建一个文件解密块Data Decryption Field(DDF),但是只后他可以增加附加用户到密匙队列.这种情况下,EFS简单地把FEK用想给其他用户访问权的用户的私有密匙加密.然后用这些用户的公有密匙加密FEK,新增加的DDF和第一个DDF放在一起(这些新增加的用户对文件只有访问的权力).


    首先,系统检测用户是否具有被EFS使用的私有密匙.如果有的话,系统将会在读取EFS属性,同时在DDF对列中寻找当前用户的DDF.如果DDF找到的话,用户私有密匙将会在那里解密出FEK.使用解密出来的FEK,EFS去解密加密的文件数据.需要注意的是文件从来不会完全被加密,但是有时候会去加密一些特殊的扇区如果上层模块要求的话.


    EFS组成

    EFS由EFS服务、EFS驱动、EFS文件系统运行库(FSRTL)和Win32 API。EFS服务作为一个标准系统服务运行,它是Windows 2000安全子系统的一部分。它与CryptoAPI接口产生钥匙、DDF和DRF,EFS驱动就象是NTFS的一部分