|
EFS原理:
EFS使用对称密匙加密算法和公用密匙加密算法结合起来保护文件.文件数据使用对称加密算法(DESX)加密.
在对称加密算法中使用的密匙叫做文件加密密匙.英文是File Encryption Key (FEK).EFS使用公有/私有密
匙算法加密FEK,同时把它和文件存储在一起.同时使用对称密匙加密算法和公有密匙加密算法是为了增加加
密的速度.非对称加密算法加密数量很大的数据时要花费很多的时间,但使用对称的加密算法将是它的1000倍.
当加密一个文件的时候,NTFS首先在这个文件所在卷的卷信息目录下(这个目录隐藏在根目录下面)创建一个
叫做efs0.log的日志文件.然后efs调用CryptoAPI设备环境.设备环境使用Microsoft Base Cryptographic
Provider 1.0 产生密匙,当打开这个设备环境后,EFS产生文件加密密匙(FEK).
下一步是获取公有/私有密匙对;如果这个密匙还没有的话(当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没有
恢复代理这个功能,所以没有这一步.
这时,在加密文件所在的文件夹下将会创建一个叫做Efs0.tmp的临时文件.要加密的内容被拷贝到这个临时文
件,然后原来的文件被加密后的数据覆盖.在默认的情况下,EFS使用128位的DESX算法加密文件数据,但是Windows
还允许使用更强大的的168位的3DES算法加密文件,这是FIPS算法必须打开,因为在默认的情况下它是关闭的,
EFS通过注册表去判断是使用DESX还是3DES.如果HKLM\SYSTEM\CurrentControlSet\Control\LSA\FipsAlgorith-
mPolicy = 1 的话将会使用3DES.否则,EFS检查HKLM\Software\Microsoft\Windows NT\CurrentVersion\EFS\A-
lgorithmID (这个值可能不存在);如果存在的话,它将会是CALG_3DES or CALG_DESX,否则,使用DESX.
加密完成后,临时文件和日志文件被删除.
文件被加密后,只有可以从DDF或是DRF中解密出FEK的用户才可以访问文件.这种机制和一般的安全机制不同并意
味着要想访问文件,除了要有访问这个文件的权力外还必须拥有被用户的公有密匙加密过的FEK.只有使用私有密
匙解密文件的用户才可以访问文件.这样的话会有一个问题:就是一个可以访问文件的用户可把文件加密之后,文
件真正的拥有者却不能访问文件.解决这个问题的办法:用户加密文件的时候只创建一个文件解密快Data Decryp-
tion Field(DDF),但是只后他可以增加附加用户到密匙队列.这种情况下,EFS简单地把FEK用想给其他用户访问权
的用户的私有密匙加密.然后用这些用户的公有密匙加密FEK,新增加的DDF和第一个DDF放在一起(这些新增加的用
户对文件只有访问的权力).
解密过程和加密过程是相反的, |
|