我是一名正在读计算机专业的博士,前一段时间花费了几个月研究EFS解密技术,终于成功了,现在总结一下,给各位一个启示~
关于EFS加密:
EFS(Encrypting File System,加密文件系统)是Windows系统特有的一个实用功能,对于NTFS卷上的文件和数据,都可以直接被操作系统加密保存,在很大程度上提高了数据的安全性。但是,如果不小心重装系统或损坏硬盘等将导致EFS加密文件无法打开,无法复制,但可以删除。EFS加密解密都是透明完成,如果用户加密了一些数据,那么其对这些数据的访问将是完全允许的, 并不会受到任何限制,因此,文件被EFS加密后并不会被察觉,只有重装系统后才发现,但为时已晚。值得注意的是,如果把未加密的文件复制到具有加密属性的文件夹中,这些文件将会被自动加密。
判断是不是EFS加密最简单的办法就是看文件的颜色,如果文件名为绿色,肯定是EFS加密。如果颜色正常,也可以在文件上点击鼠标右键,选择“属性”,打开属性对话框,然后在常规选项卡上点击“高级”按钮,打开高级属性对话框,如果“加密内容以便保护数据”这个选项被选中,肯定是EFS加密。
EFS是一种公钥加密,在使用EFS加密一个文件或文件夹时,系统首先会生成一个由伪随机数组成的FEK (File Encryption Key,文件加密钥匙),然后利用FEK和数据扩展标准X算法创建加密后的文件,并把它存储到硬盘上,同时删除未加密的原始文件。随后系统利用你的公钥加密FEK,并把加密后的FEK存储在同一个加密文件中。而在访问被加密的文件时,系统首先利用当前用户的私钥解密FEK,然后利用FEK解密出文件。
在首次使用EFS时,如果用户还没有公钥/私钥对(统称为密钥),则会首先生成密钥,然后加密数据。文件的加密和解密都需要密钥的参与,而密钥分为公钥和私钥两种。加密文件的时候使用公钥,解密文件的时候则使用相对应的私钥。
解密EFS加密文件有两种情况:
1) 备份了之前系统的相关文件
如果你在重装系统前备份了"C:\Documents and Settings\<用户名>\Application Data\Microsoft\"这个文件夹的话(<用户名>指的是你之前系统的用户名),恭喜你,你的EFS文件有救了(+Q:134零675686)!否则请看另一种情况。
2) 之前的系统文件没备份
如果你在重装系统前没有备份任何文件,也不要放弃,只要你的数据还在硬盘,就一定能找回,只不过是时间的问题(通常需要几十分钟,分区越大时间越久),这个时候一定要记住:不要再对硬盘进行任何操作,不要再次重装系统,不要开机,不要拷贝文件,等待专业人员,否则你很可能覆盖掉有用的数据,造成EFS密钥丢失,永远都不可能解密了。找回密钥文件后,恭喜你,你的EFS文件可以解密了!
常见问题解答:
1. 为什么打开加密过的文件时没有需要我输入密码?
这正是EFS加密的一个特性,同时也是EFS加密和操作系统紧密结合的最佳证明。因为跟一般的加密软件不同,EFS加密不是靠双击文件,然后弹出一个对话框,然后输入正确的密码来确认的用户的;EFS加密的用户确认工作在登录到Windows时就已经进行了。一旦你用适当的账户登录,那你就能打开相应的任何加密文件,并不需要提供什么额外的密码。
2.我的加密文件已经打不开了,我能够把NTFS分区转换成FAT32分区来挽救我的文件吗?
这当然是不可能的了。很多人尝试过各种方法,例如把NTFS分区转换成FAT32分区;用NTFS DOS之类的软件到DOS下去把文件复制到FAT32分区等,不过这些尝试都以失败告终。毕竟EFS是一种加密,而不是一般的什么权限之类的东西,这些方法对付EFS加密都是无济于事。而如果你的密钥丢失或者没有做好备份,那么一旦发生事故所有加密过的数据就都没救了。
3.我加密数据后重装了操作系统,现在加密数据不能打开了。如果我使用跟前一个系统相同的用户名和密码总应该就可以了吧?
这当然也是不行的,我们在前面已经了解到,跟EFS加密系统密切相关的密钥是根据每个用户的SID得来的。尽管你在新的系统中使用了相同的用户名和密码,但是这个用户的SID已经变了。这个可以理解为两个同名同姓的人,虽然他们的名字相同,不过指纹绝不可能相同,那么这种想法对于只认指纹不认人名的EFS加密系统当然是无效的。
4.被EFS加密过的数据是不是就绝对安全了呢?
当然不是,安全永远都是相对的。以被EFS加密过的文件为例,如果没有合适的密钥,虽然无法打开加密文件,不过仍然可以删除(有些小人确实会这样想:你竟然敢加密了不让我看!那好,我就删除了它,咱们都别看)。
5.我只是用Ghost恢复了一下系统,用户账户和相应的SID都没有变,怎么以前的加密文件也打不开了?
这也是正常的,因为EFS加密所用到的密钥并不是在创建用户的时候生成,而是在你第一次用EFS加密文件的时候。如果你用Ghost创建系统的镜像前还没有加密过任何文件,那你的系统中就没有密钥,而这样的系统制作的镜像当然也就不包括密钥。一旦你加密了文件,并用Ghost恢复系统到创建镜像的状态,解密文件所用的密钥就丢失了。因此这个问题一定需要注意!
转载于:https://blog.51cto.com/1340675686/1965006