找回密码
 注册
快捷导航
查看: 2746|回复: 14

【原创】WINXP EFS文件加密系统分析

[复制链接] |自动提醒
阅读字号:

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
发表于 2006-4-20 10:21:35| 字数 884| - 中国–山东–潍坊 联通 | 显示全部楼层 |阅读模式
引子: 对于EFS这个名词,还是看了YANSY的帖子: 深入剖析EFS 一文才有所了解。
也正是看了此文,才想到自己以前在使用WIN2000系统时剪切的一些歌曲,软件等文件

在XP下显示绿色,打开时提示拒绝访问,我查看权限没有问题,但不知道为什么就是打

不开,原来我一直以为可能是2000权限的问题,只要在2000系统里重设文件权限,问

题就会解决的,可能是XP跟2000不一样,无法重设2000里设置的权限吧。直到看了 深

入剖析EFS 一文,才知道有EFS加密这一回事。 才了解到,使用2000时,因为当时管

理员是默认的恢复代理,所以可以强行打开普通用户加密过的文件,后来把文件强行

移动到别的硬盘上,所以就无法正常打开了。


声明: 本文是在学习了YANSY写的帖子之后,有很多不明白的地方,经过反复大量的

测试之后,决定发这么一个帖子的。本文重点分析采用EFS加密,如何正确的备份证书

,以及系统崩溃后,如何恢复采用EFS加密过的文件。


本文所涉及的所有内容仅针对WINXP系统,2000,2003系统可能跟文中测试的不一样。

测试环境 :  WINXP SP2  

注意事项: 如果你要做测试,在删除证书或者密钥等操作时,请注销一下,如果你觉

得有必要,重启一下,这样做测试才会有效。在删除了证书或者密钥,如果不注销一

下,你会发现,被加密过的文件仍然可以打开,但注销以后就无法打开了。

密钥的存放位置:  密钥存放在 系统盘 Documents and settings\当前用户名

\Application Data\Microsoft\Crypto\RSA 文件夹下。


如果用户没有采用EFS加密过文件,那么在 Documents and settings\当前用户名

\Application Data\Microsoft 文件夹下没有 Crypto 这个文件夹 。

当用户采用EFS加密过文件之后,那么会在 Documetns and settings\当前用户名

\Application Data\Microsoft 文件夹下生成 Cryto\RSA文件夹,在RSA文件夹下生成

一个跟当前用户相关的以SID标识符命名的文件夹,里面存放的就是用户密钥。

请看图7

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1技术分 +1 收起 理由
宁静的海豚 + 1

查看全部评分

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-20 10:24:23| 字数 223| - 中国–山东–潍坊 联通 | 显示全部楼层
如果把用户密钥删除,那么被加密过的文件将无法打开。

关于这一部分,如果你有兴趣,可以自己做试验。记得删除密钥之后,一定要注销一

下。

如何查看证书:

打开 开始--运行,输入 certmgr.msc ,点 确定,打开 证书管理单元。

如果当前用户没有采用EFS加密过文件,那么在 个人 证书里是空白的。当用户采EFS

加密过文件之后,在个人证书里就会出现证书。

未采用EFS加密: 图1
采用EFS加密过文件之后: 图3

[ 本帖最后由 sgw888 于 2006-4-20 10:27 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

1万

回帖

96

积分

1万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2005-11-20
发表于 2006-4-20 10:29:07| 字数 12| - 中国–北京–北京 移动 | 显示全部楼层
谢谢,收藏了,慢慢研究。
回复 支持 反对

使用道具 举报

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-20 10:29:25| 字数 475| - 中国–山东–潍坊 联通 | 显示全部楼层
证书的备份:

右单击 个人证书,在弹出的菜单中,选择 所有任务-导出 ,弹出证书导出向导。选

择 是,导出私钥 ,这儿注意一点: 一定要选 “是,导出私钥”(图5),如果这儿不

导出私钥,那么导出的只是证书,这个证书没有任何意义!!接下来,有一个 "如果

导出成功,删除密钥" 的选项(图6),如果你勾选了此项,那么位于 Documents and

settings\当前用户名\Application Data\Microsoft\Crypto\RSA\SID标示符命名的文

件夹  下面的密钥就会被删除,被加密过的文件将无法解密,只有重新导入 备份的证

书才可以解密文件。



我的测试如下:加密一个文件,然后不导出私钥,只导出证书,然后从证书管理单元

中删除证书,然后,再导入证书,这时候,加密过的文件将无法打开!!
在这儿强调一点,在做测试的时候,把证书删除以后,一定要注销一下,再试试文件

能不能打开。


用户在采用EFS加密一个文件之后,打开证书管理器,在个人证书跟受信任人证书里都

有一个证书。
受信任人证书,请看图11

[ 本帖最后由 sgw888 于 2006-4-20 10:51 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-20 10:31:09| 字数 327| - 中国–山东–潍坊 联通 | 显示全部楼层
单独删除 受信任人证书,被加密过的文件仍然可以正常打开,不受影响。
单独删除 个人证书,被加密过的文件将无法打开。但这时候,可以通过导出受信任人

证书,然后,再导入证书,来解密文件。(关于证书的导入,下面会讲解。)


如何删除证书: 右键单击 证书,在菜单中,点击删除即可。

分别导出 个人证书跟受信任人证书(仅导出证书不导出密钥),使用FC命令进行对比。
个人证书跟受信任人证书完全一样,请看图9
(导出的证书文件为cer文件)

分别导出个人证书跟受信任人证书(导出私钥),使用FC命令进行对比,发现不一样

。 关于这个问题,我暂时无法解释,希望明白其中原因的兄弟帮忙补充!!!
请看图10(包含私钥的证书文件为pfx文件)

[ 本帖最后由 sgw888 于 2006-4-20 10:34 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-20 10:42:16| 字数 1,088| - 中国–山东–潍坊 联通 | 显示全部楼层
在导出个人证书(包含私钥)之后,打开证书管理单元,删除证书,导入之前备份的

证书,然后,再一次导出证书,使用FC命令进行对比,发现不一样!!!但可以正常

解密文件。

证书的导入(解密文件):

右键单击 导出的证书文件(包含私钥),在弹出的菜单中,点击 安装PFX ,打开证书

安装向导,根据提示,导入即可。请看图12


下面谈一下 恢复代理:

什么是恢复代理?

恢复代理从用户应用角度来解释,就是可以解密当前系统中所有用户加密文件的用户

帐号。

在WIN2000系统中,默认的恢复代理就是内置的管理员帐号(在没有加入域的情况下)

,可以这样理解,无论是当前系统的哪个帐号加密了文件,以当前系统的内置管理员

帐号登录系统之后,可以解密当前系统所有帐号加密过的文件。(如果备份了恢复代理

的证书,那么在系统崩溃之后,就可以在新系统中通过导入备份的恢复代理证书来解

密文件了)


在XP下,并没有默认的恢复代理,也就是说,哪个用户加密的文件,只有那个用户可

以解密,其他帐号无法解密。

如何给XP系统添加一个恢复代理?

要添加恢复代理,首先你需要有一个EFS恢复代理证书,EFS恢复代理证书可以通过下

面的办法来生成。

点 开始,运行,输入 cipher /r:存放文件夹文件名

cipher /r:c:\1      =>例子: 生成一个EFS恢复代理证书,存放于c盘根目录下,文

件名是1.cer,命令执行后,会同时生成一个包含密钥的pfx文件: 1.pfx 。
1.cer: 恢复代理证书,仅用来添加恢复代理,1.pfx:包含密钥的证书文件,添加恢

复代理之后,导入此证书就可以解密文件了。

有了EFS恢复代理证书,我们就可以添加恢复代理了:

用你想做恢复代理的用户帐户来登录系统,例如默认的内置管理器帐户。
点 开始,运行,输入 secpol.msc ,点确定,打开本地安全设置。请看图2
展开公钥策略,右单击 正在加密文件系统,在弹出的菜单中,选择 添加数据恢复代

理,点 浏览文件夹,找到 之前,用CIPHER /R命令生成的 证书(CER文件),根据提

示导入即可。

添加数据恢复代理之后,如果系统中有用户加密了文件,那么由恢复代理帐户登录系

统,导入之前生成的 包含密钥的证书1.pfx(例文件)就可以解密当前系统所有帐号加

密过的文件。但如果在添加数据恢复代理之前,用户就已经加密过文件,那么这些文

件,无法解密。如果想让恢复代理可以解密这些在添加恢复代理之前就已经加密过的

数据,可以用 原来加密这些数据的用户登陆系统,解密之后,重新加密数据,或者使

用 cipher /k 命令来更新密钥,更新密钥之后,恢复代理就可以解密这些数据了。

[ 本帖最后由 sgw888 于 2006-4-20 10:55 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-20 10:46:52| 字数 589| - 中国–浙江–金华 电信 | 显示全部楼层
cipher /k  命令的作用:

为当前运行此命令的用户创建新的加密密钥。

此命令的注意事项:

如果用户加密了一个文件,然后,备份了个人证书(包含密钥),假如用户执行了

cipher /k 命令,那么之前备份的证书就会失效,无法解密用户加密的文件。

如果添加了恢复代理,执行 cipher /k 命令更新加密密钥,恢复代理不受影响。无论

用户怎么更新加密密钥,用恢复代理仍然可以解密用户的加密文件。


添加数据恢复代理的好处:

在系统中添加了数据恢复代理之后,只要备份了数据恢复代理的证书(包含密钥),

以后,任何用户加密的文件,都可以通过导入备份的证书来进行解密,即使是重装系

统,也不用担心了,只要先添加恢复代理,然后,导入 包含密钥的证书,就可以解密

文件了。


数据恢复代理一旦被删除,之前加密的数据如果没有被更新过,那么仍然可以解密,

但一旦被更新,就无法用备份的恢复代理证书来解密了。这个更新的过程对用户而言

是不可见的,是后台的,所以一定要注意这一点。

我用U盘做了如下的测试: U盘系统是NTFS,添加恢复代理之后,在U盘加密一个文件

,然后,插到另一台机,添加恢复代理,导入证书,可以解密文件,这时候,把U盘再

插回原来的机器,使用 cipher /k 命令来更新加密密钥,然后,取下插到另一台机,

仍然可以解密文件,再插回原机,打开U盘,然后,再加密一个文件,取下,放到另一

台机,新加密的文件跟原来加密的文件都无法打开了。
回复 支持 反对

使用道具 举报

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-20 10:47:39| 字数 423| - 中国–浙江–金华 电信 | 显示全部楼层
如何用第三方软件解密EFS加密的文件:

目前,据我所知,有一款软件可以解密EFS加密的文件: Advanced EFS data

Recovery 。

用这一款软件,有一个前提,就是原来系统中加密用户的用户密钥仍然存在。 此软件

运行时,首先会搜索当前系统中存在的用户密钥,然后跟加密文件进行判断,如果密

钥正确就可以解密文件。


这里的用户密钥在前面已经提到过,就是  Documents and Settings\用户名

\Application Data\Microsoft\Crypto\RSA\SID标示符命名的文件夹  ,假如系统崩

溃,而原来没有备份过证书,那么,用户可以把这些密钥拷贝出来,在重装系统之后

,再利用这一款软件进行解密,此方法还适用于系统中数据恢复代理被删除,或者只

备份了个人证书,但用户之后更新了加密密钥的情况。

大部分用户对于EFS并不了解,使用EFS加密之后,没有备份证书,这样的情况很多,

往往重装系统时把盘格掉了,这样,密钥没了,这一款软件也无能为力了。
回复 支持 反对

使用道具 举报

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-22 08:43:31| 字数 29| - 中国–山东–潍坊 联通 | 显示全部楼层
大家对EFS加密方面的知识,好像不怎么关心哦,唉。。。。。
回复 支持 反对

使用道具 举报

2万

回帖

232

积分

14万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2005-3-29
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2006-4-22 09:04:09| 字数 4| - 中国–江西–赣州 电信/江西理工大学 | 显示全部楼层
学习
nb
X62s I7-5500U,16G,250G,SXGA
X62-16 I7-5600U,32G,180G+1T,SXGA
回复 支持 反对

使用道具 举报

124

回帖

0

积分

106

资产值

入门会员 Rank: 1

注册时间
2005-9-10
发表于 2006-4-22 10:39:26| 字数 27| - 中国–广东–广州–天河区 电信 | 显示全部楼层
请问怎么进行加密?我正想试试,但还不知道怎么开始加密。
回复 支持 反对

使用道具 举报

3615

回帖

35

积分

3550

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2004-4-23
 楼主| 发表于 2006-4-22 11:48:46| 字数 47| - 中国–山东–潍坊 联通 | 显示全部楼层
在NTFS的分区上,在想加密的文件上,点鼠标右键,选属性,点高级,选上,加密内容以便保护数据。
回复 支持 反对

使用道具 举报

124

回帖

0

积分

106

资产值

入门会员 Rank: 1

注册时间
2005-9-10
发表于 2006-4-22 15:44:17| 字数 84| - 中国–广东–广州–番禺区 电信 | 显示全部楼层
原来要在ntfs分区下执行呀。谢谢兄弟告知啦。我的只有20G,没光没软没对应的底座,不支持usb启动/正牌(杂牌)易驱启动,所以硬盘格式都是fat32的。以后再试试吧。
回复 支持 反对

使用道具 举报

295

回帖

0

积分

1

资产值

入门会员 Rank: 1

注册时间
2005-9-7
发表于 2006-4-22 16:30:32| 字数 8| - 中国–北京–北京 教育网/清华大学教育网 | 显示全部楼层
研究这个干嘛呀?
回复 支持 反对

使用道具 举报

6042

回帖

76

积分

4734

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2002-2-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2006-5-16 22:55:22| 字数 86| - 中国–湖北–武汉 教育网/华中科技大学 | 显示全部楼层
技术含量真高

不明白 为什么XP下 管理员不是恢复代理 搞这么麻烦 单单导出证书和密钥还不行 非得要弄一个恢复代理的cer文件

我用cipher命令导出 到输入密码步骤 怎么也打不上字了 ft
X61T(7764-CTO) L7700
Fujifilm F900EXR
Nexus 4
iPad Air
Kindle 3
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-1-11 21:57 , Processed in 0.157631 second(s), 49 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部