hi,大家好.我想和大家从简入难地交流一下这个话题,是由来于论坛上一个网友的提问( 链接:http://bbs.51cto.com/thread-604202-1.html).可能还有很多朋友也关心这个问题,那么我们就来一起看看怎么解决它吧.
话说资料文件的安全一直是比较受到公司重视的部分.以本人所在的公司来说,由于企业性质,员工进出单位都是禁止携带移动存储设备的(有保卫部门安检,违反规定的员工必然开除),并且公司内客户端(超过1500台)电脑全部做了USB端口管制,Netscreen硬件防火墙+ISA代理服务器限制上网,等等等等,部署了多重安全措施.足见公司对资讯安全的重视!那么,这样就无懈可击了吗?如果在域环境下,有人趁我不在的时候用他/她自己的域账号登录了我的电脑,偷看了我的重要文件(绝不该他/她看的文件)呢?如果文件被打开然后被打印或被抄写,纸张带在身上可不会触发金属探测器的哦.
那么,我们要用什么方法来尽量避免此类情况出现呢?并且前提是:
一.尽量花钱少,现在提倡开源节流,申请买什么都难啊,别说是动辄几千上万的软件硬件了.
二.用户体验良好,不能有太复杂的操作让用户(员工)来做,这点很重要.操作过于复杂,可能造成用户操作失误而没有达到效果,另外长期以往,用户会产生抵触心理而不怎么使用它.
三.加密技术成熟,不要像PDF,winrar这类加密文件随便google一下也有百八十种破解工具.
好吧,目标很明确了,开始挑战之旅吧.
先看看现有的环境.公司客户端操作系统基本上都安装的是Windows XP Professional,还有极少部分的Windows 2000 Professional,并且磁盘上的分区格式基本上都为NTFS(老旧的2000还有用FAT32格式,XP系统都是我们IT部门统一安装的,可以保证是NTFS磁盘文件格式).我们在请出今天的主角之前,要先把残留的FAT32消灭,都换成NTFS.
那得先把装Win2000的客户端从局域网中都找出来.手段多种多样,最省事的,发个全厂mail通知用户查看自己的计算机情况,然后不是ntfs的打电话或发邮件反馈,那样动静太大了,而且也体现不出我们系统工程师的水平...所以,一般可以使用脚本收集客户端信息再来导入到数据库中查找(---最专业最繁琐的做法), 好在我的环境中有SMS2003,省事了,直接到计算机集合里面看看就知道啦~
[图略]
找到了以后提出远程控制请求.取得了客户机的控制权以后我们要做的就是转化磁盘格式.命令相信大家已经烂熟于心了:
CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]
如果提示你当前域用户权限不足,而你又不想登出切换管理员账号,不妨用用runas命令.
然后重启计算机,完成磁盘格式转化.
接下来我们可以请出本文主角了---EFS (Encrypting File System,加密档案系统)
简单介绍一下EFS吧.从Windows 2000/XP/Server 2003开始,系统都配备了EFS(Encrypting File System,加密档案系统),它可以针对存储在NTFS磁盘卷上的文件和文件夹执行对用户透明的加密操作.说到对用户透明,是因为你(用户)使用它加密的文件在访问时不会产生任何让你输入密码之类的操作,感觉和没有和访问未加密文件没有区别.我们后面演示部分会看到.
其实,EFS加密技术也是采用了公钥/私钥密码学原理的,这个原理要铺上来怕是几千字都不够写,大家只要记住一点就好:公钥加密,私钥解密.所以任何被某用户公钥加密后的NTFS文件也只能被此用户的私钥解密,没有手握这个用户私钥的其他用户想解密/查看是办不到的.
要使用EFS来加密文件或文件夹,那真的是非常简单:
这里有个域用户cto想要加密他的一份重要文件,他要做的操作就是
clip_image002
在要加密的文件上鼠标右键点击"属性"---点击"高级"--勾选"加密内容以便保护数据"
OK,完成.
如果是要加密整个文件夹,就在文件夹属性里执行上面的操作,有一小点不同的是你需要选择是只对此文件夹加密还是要对文件夹中所有的资料(文件,子文件夹)加密.
clip_image004
点击确定后完成加密,可以看到文件名字变成了绿色,用户cto双击文件,可以正常查看修改.
clip_image006
clip_image008
然后我们注销系统,使用另外一个域用户cfo登陆,定位到刚才的文件,双击打开,
clip_image010
拒绝访问了.效果达到,用户cfo不能查看用户cto使用EFS加密过的文件.
有的朋友问了,如果这个文件是放在共享文件夹内的呢? clip_image012
会提示你无法查看也无法复制的.
记得有个网友问过如果复制过来的分区是FAT32格式的呢,结果是一样的.
仍然是拒绝访问.
这是为什么呢?
道理很简单
谁有那把秘密钥匙谁才能开那个箱子.
问题来了,那把密钥到底放在那个房子(存放加密文件的计算机)的什么地方呢?若是把那把密钥给我我就能开那个箱子了吗?
回看cto加密<重要资料>的计算机上,确保使用cto此域账号登陆,使用mmc命令调出控制台(或者使用certmgr.msc),添加"证书"管理单元,选择"我的用户账户"
clip_image014
点开个人---证书,可以看到有一个对应当前cto用户名的证书,我们选择导出它.
clip_image016
clip_image018
clip_image020
这里一定要选择"是,导出私钥" , 私钥正是我们苦苦寻找的那把解锁的钥匙
clip_image022
保持默认
clip_image024
密钥外头还要套个密码箱才能交给别人,怎么样?保护的够周到吧.
切记,你要把这把钥匙给别人用,你的这个装它的密码箱密码也是要交给别人的
clip_image026
给钥匙起个名字
clip_image028
完成,导出
clip_image030
传说中的"血色十字军钥匙"
现在我们可以换cfo登录系统,找到刚才导出的cto的密钥
clip_image032
双击,导入,导入时要输入刚才导出时设置的密码
clip_image034
导入成功后可以在cfo的证书管理控制单元中看到cto的证书
clip_image036
注意看上图中,只有新导入的cto的用户证书,而没有cfo自己的,这是因为cfo还没有使用EFS加密过文件,等他第一次执行过EFS加密,就会看到相应的证书了.
clip_image038
cfo现在可以看cto亲手加密的文件了.
这样做其实有一定的后果,你想,cfo拿到了cto的私钥,以后这台机器上只要是cto的加密文件cfo就都能看了,cto可不干了,有没有办法让cto指定cfo能看哪些加密的,不能看哪些加密的呢?
其实,这个问题,在Windows XP Professional版本中就得到了解决,
要达到这个效果,需要让cfo也使用EFS加密一次以便生成自己的用户证书.
clip_image040
注明:我已经将刚才导入的cto证书删除,模拟cto证书没有导入的情况
此时cfo已经无法访问cto加密过的文件
下图为例,cfo想要访问cto加密的一个文件,文件名为<极其重要资料>
可以看到,访问拒绝 clip_image042
回到用cto账号登录,在此文件<极其重要资料>上右键属性---点击加密旁边的"详细信息按钮",在"可透明访问这个文件的用户"下点击添加
clip_image044
可以看到cfo的用户证书也赫然在列,我们把它加进来
clip_image046
clip_image048
注销,再以cfo登录
clip_image050
cfo可以看cto特意为他共享出来的EFS加密文件了,然而他贪心不足地还想看看旁边的那个
clip_image052
想投机把自己证书加进去...
clip_image054
就是这样.
经过了EFS加密设置,cto只要保护好自己的账号密码,就不用担心有人能偷偷登录到他本机去看他的重要资料了.
但是有一点,非常关键,想必吃过这个亏的网友都牢记住了,用来解密文件的用户私钥是一定需要随证书导出来备份的,否则当重新安装了操作系统而无相应的用户证书导入之时,就算你用相同的用户再登入也是无法解密的.
那用户当时就是忘记了备份含密钥的证书了,而现在出问题了,怎么办?我只能告诉你,网上可能会有一些破解EFS加密的软件你可以尝试,但完全恢复几率很低.要么你可以尝试重构计算机SID,加密时使用的账号/域账号的SID,这个难度很大很大.所以,我觉得防患于未然才是王道,
既然我们一直在说的是处于域环境的,所以EFS下篇我会为大家介绍网域中的EFS Recovery Agent.它做什么用的,怎么使用?...同时,也会补充分析一下网域中使用EFS的缺陷及不足...呵呵,敬请期待~
 
友情提示:此文谈及的EFS仅供技术交流,业务环境慎用---from  bisheng.hu