Windows加密文件系统加密原理与解密方法研究

时间:2022-06-25 10:16:16

Windows加密文件系统加密原理与解密方法研究

摘要:微软操作系统给用户提供了加密文件系统EFS用来加密数据。分析了EFS的加密原理,详细介绍了多种情形下的加密文件解密方法。

关键词:EFS;加密;解密;密码恢复

中图分类号:TP309文献标识码:A文章编号:1672-7800(2012)012-0153-03

作者简介:张林锋(1981-),男,硕士,95923部队工程师,研究方向为信息安全;王伟光(1972-),男,95923部队工程师,研究方向为通信安全;王维祥(1963-),男,95923部队高级工程师,研究方向为通信技术。0引言

微软自windows 2000及以上Windows版本中推出加密文件系统(EFS:Encrypting File System),给用户提供在NTFS磁盘格式分区中文件加密功能,在企事业单位、公司中得到了广泛的应用,尤其是一台计算机多个用户使用时,很多人将涉及自己工作、生活隐私的文件进行EFS加密,防止他人窥探。加密文件系统在一定程度上对个人隐私提供保障的同时,也给用户带来了麻烦,当计算机用户口令丢失、操作系统崩溃、磁盘介质损坏时,这些加密文件一般来说就无法打开了。本文在深入分析加密原理的基础上,经过反复测试实验,对不同情形下加密文件的恢复方法进行了研究。

1EFS加密、解密操作

EFS 使用对称密钥和非对称密钥技术相结合的方法来提供文件的保护, 对称密钥用于加密文件, 非对称密钥中的公钥用于加密对称密钥。EFS 加密发生在文件系统层而不在应用层, 因此,其加密和解密过程对加密用户和应用程序是透明的。用户在使用加密文件时, 感觉与普通文件一样。需要注意的是,EFS只能对存储在NTFS磁盘格式分区的文件进行加解密,而且家庭版、简化版Windows系统是不支持的。

加密操作:在文件属性的“高级”属性对话框中勾选上“加密内容以便保护数据”完成加密, Windows默认设置下加密文件是彩色显示的。加密文件在未设置故障恢复的情况下,其他用户是无法打开、移动的。

解密操作:取消文件属性的“高级”属性对话框中的“加密内容以便保护数据”勾选完成解密,或者将加密文件剪切到FAT32分区中完成解密。

2EFS加密原理

当用户生成加密文件时, 随机密码产生器生成一个对称密钥FEK,既用作加密文件,又用作解密文件;EFS使用FEK加密文件中的数据,在Windows XP SP1、Windows Server 2003以上版本中默认使用AES加密算法;然后使用EFS用户证书中的公开密钥加密FEK得到数据解密域DDF(Data Decryption Fields),用户在第一次加密文件时,EFS产生一对新密钥,否则获取公/私密钥对;再使用数据恢复DRA(Data Recovery Agent)证书中的公钥加密FEK,由于数据恢复可有多个,所以可能存在多个不同DRA 证书中公钥加密的FEK,所有这些经DRA证书中公钥加密的FEK组合在一起得到数据恢复域DRF(Data Recovery Fields);最后EFS将DDF、DRF作为加密文件头和经FEK加密的数据组合得到加密文件,其结构如图1所示。

为增强EFS的安全性,Windows继续增加了两层保护措施:首先用64字节的主密钥(MasterKey)对私钥进行加密,加密后的私钥保存在操作系统所在分区的“Documents and Settings/%username/Application Data/Microsoft/Crypto/RSA/%userSID%”目录中;然后使用账户密码生成的密钥加密主密钥,加密后的主密钥保存在“Documents and Settings/%username/Application Data/Microsoft/Protect/%userSID%”目录中;公钥保存在“Documents and Settings/%username/Application Data/Microsoft/SystemCertificates/MY/Certificates”目录中。这些文件都属于用户的配置文件,如果删除该用户时选择删除配置文件,则这些文件都会被系统删除。

可以看出,EFS加密实际形成了FEK加密文件数据—公钥加密FEK—主密钥加密私钥—用户密码加密主密钥的加密链,要想解密文件,必须获得用户密码,解密主密钥,用主密钥解密私钥,用私钥解密FEK,用FEK解密文件数据。

3EFS具体解密方法

EFS解密的关键点在加密用户的系统用户密码或者加密文件的私钥、账户配置文件,下面针对各种情形给出具体解密方法。

3.1设置故障恢复来解密其他用户加密文件

Windows提供了故障恢复来对EFS加密文件进行解密,指定为故障恢复的用户可以对其他用户的加密文件进行解密。但如果在设置恢复之前就加密过数据, 那么这些数据恢复仍然无法打开。

这里假设以Administrator用户作恢复。首先用Administrator账户登录系统,在“开始”菜单中“运行”框内输入“cmd”并执行,进入命令提示符窗口,输入“cipher /r:d:\\admin”后回车,输入密码(可以为空)后在D:\目录下就创建了admin.cer、admin.pfx两个文件;然后双击admin.pfx文件完成证书的导入;最后在组策略中设置恢复:在“运行”框内输入“gpedit.msc”并执行,进入组策略编辑器,在“计算机配置->Windows设置->安全设置->公钥策略->正在加密文件系统”中,在右侧空白处点击鼠标右键,选择“添加数据恢复代”,按照向导指示,选择刚创建的“admin.cer”就完成了将Administrator账户作为恢复的操作。此后,这台计算机其他用户创建的加密文件,Administrator用户都可以解密。

3.2使用工具破解本机其他用户加密文件

按照Windows设计初衷,用户是无法复制其他用户的加密文件的,但是经过测试,在WindowsXP 32位操作系统下,借助工具“冰刃IceSword”可以将同一系统下其他用户的加密文件复制,在完成复制操作后同时对原加密文件进行了解密。具体操作步骤:运行IceSword.exe文件,点击界面左下角的“文件”栏,选择需要解密的文件,点击鼠标右键,通过“复制到…”功能将需要解密的文件复制出来(如图2所示),打开复制出来的文件会发现已经解密。

3.3暴力破解本机其他用户密码来实现解密

在Windows vista SP2或Win7版本中,无法使用“冰刃IceSword”,此时可以通过暴力破解本机其他用户密码来实现解密,借助强大的ophcrack结合相应的彩虹表可以很大概率破解计算机上所有用户的密码。具体操作步骤:首先在ophcrack界面中的“Tables”安装下载的彩虹表,然后用Winhex软件把C:\WINDOWS\system32\config目录下的SAM和system文件复制出来,最后在ophcrack界面中导入“Encrypted SAM”,点击“Crack”就可以进行快速破解密码了(如图3所示)。如果用户密码不是很复杂的话成功率还是很高的,获得其他用户的密码后就可以登录其账户打开加密文件了。如图3所示。

3.4使用备份的私钥证书来恢复加密文件

用户对文件进行加密后,应当立即导出自己的私钥证书,这样当忘记账户密码或系统崩溃重装后,重新安装备份的私钥证书,就可以打开加密文件。备份私钥证书具体步骤:在“开始”菜单中“运行”框内输入“certmgr.msc”,打开证书编辑器,点击“个人->证书”,右键单击界面右侧显示的当前用户,在弹出框内选择“所有任务->导出”,进入证书导出向导,选择“将私钥跟证书一起导出”,按照向导提示就可以导出带私钥的证书了,最后将证书保存在安全的地方(比如移动硬盘)。

3.5基于配置文件解密已删除用户的加密文件

当用户不小心被删除后,如果配置文件未被删除,且知道被删用户的系统登录密码,则可以借助AEFSDR工具来实现解密,其原理为:AEFSDR自动查找各个用户配置文件中存储的经过加密的主密钥、私钥,利用用户告知的系统登录密码,来解密主密钥,用主密钥解密私钥,用私钥解密FEK,用FEK解密加密文件数据。AEFSDR的具体使用步骤:①扫描密钥,可扫描指定盘符或全盘扫描,扫描完成后会看到存储在本机的所有主密钥、私钥等(如图4所示);②添加用户密码,输入用户删除用户前设置的登录密码;③扫描加密文件,扫描需要解密的加密文件所在磁盘分区(如图5所示);④解密,选择需要解密的文件,指定存放位置后就完成了所有加密文件的解密。

3.6重构已删除用户的配置文件来实现解密

当系统用户及其配置文件都被删除或重装系统时,原先的加密文件将无法打开。在记得原先用户设置密码的基础上,通过重构配置文件可以实现解密。

首先需要恢复原来用户的配置文件。使用数据恢复软件EasyRecovery进行删除(适用于用户被删除情形)或格式化恢复(适用于系统重装情形),将原先系统分区下的“Documents and Settings\%username”文件夹内容全部恢复,这里%username指的是丢失用户的用户名,如图6所示。

其次创建一个与丢失用户相同用户名、密码、相同SID号的系统账户。SID是标识用户、组和计算机账户的唯一的号码,在第一次创建账户时系统将给它发一个唯一的SID(可通过“Documents and Settings\%username \Local Settings\Application Data\Microsoft\Credentials”查看),Windows系统正是通过SID验证用户,因此如果SID号不同,即使创建了相同用户名、密码的账户,仍然无法打开原先加密文件。SID号由两部分组成,形如“S-1-5-21-861567501-842925246-725345543-1004”,最后一段“1004”称作RID,同一系统的不同用户的SID号只有RID不同,下一个新建账户所分配的RID是由注册表中HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account注册表项的F键值决定的,默认情况下只有system账户才能访问,普通管理员账户如要访问,需要右击SAM键值选择“权限”,然后添加当前用户权限为“完全控制”。F键值以十六进制反转形式保存。比如500对应十六进制为01 F4,反转则为F4 01,再扩展为4个字节即F4 01 00 00。查看上个步骤恢复文件显示的SID号中的RID,对F键值进行编辑,在0048处开始的四个字节填入对应的RID号,退出注册表。重启计算机创建与丢失账户相同用户名、密码的账户。用新创建的账户登录系统,加密任意一个文件后注销(加密文件后才产生密钥),使用其他管理员账户登录系统,将第一步恢复出来的配置文件替换新创建账户的配置文件。

最后重启计算机使用新创建账户登录系统,就可以解密原先加密文件,因为Windows误认为这个新建账户是原来的账户。

4结语

Windows特有的EFS加密文件系统,能够在一定程度上实现对数据的加密,阻止未授权用户访问数据,但也存在漏洞,如3.2节介绍的工具破解。本文介绍的其它解密方法和技巧研究对系统数据恢复是很实用的,但最可靠的操作还是用户自己及时备份个人证书,这样就保证加密文件不会无法打开了。

参考文献:

[1]沈士根.EFS的研究与安全性分析[J].微计算机信息,2006(5).

[2]李华琴.微软EFS加密详解[J].广播电视信息,2010(4).

[3]MICROSOFT.Encrypting file system[EB/OL].http:///china/community/program/originalarticles/TechDoc/efsadv.mspx.

[4]OS.Rainbow tables[OL].http:///tables.php.

[5]CLACK.Encrypted file system recovery[OL].http:///efsrecovery/index.php.

Research of the Principle and Decryption Methods

of Encrypting File System

Abstract:Microsoft OS provides Encrypting File System(EFS) to encrypt data for users.This paper analyses the principle of EFS encryption and introduces various decryption methods in detail.

Key Words: EFS; Encryption; Decryption; Recovery

上一篇:现代教育技术实验开放管理探讨 下一篇:高校《计算机基础》教学现状及改革策略探究