EFS加密和解密

来源:互联网 发布:网络开拓视野的实例 编辑:程序博客网 时间:2024/04/30 00:54

EFS是一种系统自带的文件加密技术,下面就讲如何进行EFS加密以及如何解密的相关知识……

 

大家对Windows2000/XP/2003系统提供的EFS(加密文件系统)功能一定不陌生吧!它应用在NTFS文件系统中,能有效保护机器中的重要数据不被非法侵犯。通常情况下,用户在Windows图形界面中对文件或文件夹进行EFS加密和解密操作。这里笔者介绍它的另一种使用方法——cipher.exe命令。

 

  cipher.exe命令格式:

  CIPHER[/E|/D][/S:directory][/A][/I][/F][/H][pathname[...]]

  CIPHER /K

  CIPHER /R:filename

 

  参数介绍:

  /A  使用于目录和文件

  /D  解密指定的目录

  /E  加密指定的目录

  /F  强制加密所有指定的对象

  /H  显示具有隐藏、系统属性的文件

  /I  出现错误后,继续执行指定操作

  /K  为运行 cipher 的用户创建新文件加密密钥

  /R  生成一个 EFS 恢复代理密钥和证书,然后将它写入一个 .PFX 文件(含有证书和密钥)和一个 .CER 文件(只含有证书)中

  /S  在指定目录及其所有子目录的目录中执行指定操作

  应用实例:

 

  一、加密目录文件夹和文件

 

  1.加密F盘下的efs目录

 

  点击“开始→运行”,在运行对话框中输入“CMD”命令,弹出“命令提示符”窗口,进入到“F:\>”提示符下,然后运行“cipher /e  efs”命令,接着系统提示“正在加密 f:\ 中的目录,efs [OK],一个目录中一个目录被加密”信息后,完成“efs”目录的加密操作。

 

  如果要加密efs目录下的所有子目录,运行“cipher /e /s:efs”命令即可。

 

  2.加密F盘下efs1目录中的“ichat.txt”文件

 

  在命令提示符窗口中运行“cipher /e /a  efs1\ichat.txt”命令后,系统提示“ichat.txt[OK],1 个目录中的 1 个文件(或目录)已被加密”信息后,完成对ichat.txt文件的加密。

 

  如果要加密该目录下的所有文件,运行“cipher /e  /a  efs1\*”命令即可。

 

  二、查询加密目录和加密文件

 

  使用cipher.exe命令可以查询系统中哪些目录和文件被加密,如查询F盘中的efs目录是否被加密,在命令提示符窗口中输入“cipher efs”命令,然后系统提示“E efs”信息,说明efs目录已被加密。

 

  要查询efs目录中哪些文件已被加密,运行“cipher efs\*”命令即可。

 

  三、解密目录文件夹

 

  在命令提示符窗口中运行“cipher/d efs”命令后,就将efs目录解密。要解密efs目录下的所有子目录运行“cipher/d/s:efs”命令即可。

 

  要解密efs1目录ichat.txt文件,运行“cipher/d/a efs1\ichat.txt”命令,解密该目录所有文件,运行“cipher /d /a efs1\*”命令即可。

 

  四、导出证书和私匙

 

  在命令提示符下运行“ cipher /R:rtj”,其中rtj为导出文件的文件名,接着系统提示“请键入密码来保护 .PFX 文件:”,两次输入密码后,就在所在目录下生成“rtj.CER”和“rtj.PFX”这两个文件。其中rtj.CER为用户证书,rtj.PFX为证书和密钥文件。

 

  一旦用户丢失了证书和密钥无法解密EFS加密文件,只要将rtj.CER和rtj.PFX文件导入即可。

 

EFS加密出了问题怎么办?

 

      几天前,一位朋友给我发出十万火急的求援消息,他在公司计算机中用EFS加密的文件不能打开了了,里面有所有重要客户资料。他说由于系统用户配置问题,他删除了自己的账户,重新建了一个相同用户名的账户,但是不料以前加密的文件夹再也不能打开了。不过,幸好这位仁兄使用的Windows 2000,我告诉他可以使用恢复代理来解密,才使他放下心来。

 

  类似这样的求救可以在众多技术论坛中看到,且越来越多,并非每个朋友都是幸运的,由于重要数据无法打开导致损失惨重的事件也是屡见不鲜。如果你也使用Windows 2000/XP,并对数据加密,为避免受到损失,就需要了解EFS加密,并成为个中高手。

 

  什么是EFS

 

  从Windows 2000开始,微软对NTFS文件系统进行了升级,将在Windows NT中使用的4.0升级为5.0,其最大的特点就是安全特性更加强大,特别是增加了加密文件系统EFS,用来在使用NTFS文件系统的卷上直接加密数据,能让用户在系统上使用公钥加密去保护私有的数据。

 

  你可以为某个隐私的文件或文件夹加密,以防止他人使用。没有正确权限的人即使能访问到硬盘,若试图操作加密的文件或文件夹,则会收到一条“拒绝访问”错误消息。

 

  另外,用户验证过程是在登录Windows时进行的,这就保证了EFS加密系统对计算机用户来说是透明的。通俗地说,只要具有权限的账户登录到Windows,就可以像打开任何一个普通文件一样使用自己加密的文件,而不像通常的加密软件会弹出一个对话框,让你输入密码,这就大大方便了使用者。

 

  用ESF加密文件

 

  当你使用了Windows 2000/XP/2003系统(注意Windows XP家庭版不支持EFS加密文件系统),且格式化磁盘为NTFS文件系统,你就具有了应用EFS的条件。

 

  要使用EFS加密,只须打开资源管理器,在需要加密的文件(夹)上点鼠标右键,选“属性”,在“属性” 对话框中点“高级”打开“高级属性”对话框,勾选“加密内容以便保护数据”(图1)(取消该选项前的钩即可解密文件)。

                                

                           

 

                                                                图 1

 

              

                                                     

     “确定”后点击“应用”,如果加密的是文件夹,则会弹出图2所示对话框,你可以根据需要选择是仅加密此文件夹还是将此文件夹下的子文件夹和文件也一起加密。

 

                          

                                                        

                                                                  图 2

 

 

                                                              

  最后点击“确定”后,在默认情况下,一般你会发现文件(夹)在资源管理器中显示的颜色变为彩色,表示已经被加密(或压缩)了。

 

  提示:你也可以不使文件(夹)变色,在资源管理器中,点“工具→文件夹选项→查看”,将“用彩色显示加密或压缩的NTFS文件”取消即可。

 

 

 EFS加密解密技巧

 

  在实际应用中,我们还可以通过各种技巧来完成EFS加密的相关操作。

 

  1.添加“加密”右键菜单

 

  如果觉得上述加密方法还是太烦琐,可以在“运行”中输入“regedit”,打开注册表编辑器,找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced,在右边窗口中点击鼠标右键,选择“新建→Dword值”,取键名为“EncryptionContextMenu”,并设置键值为“1”。

 

  退出注册表编辑器,打开资源管理器,任意选中一个NTFS分区上的文件(夹),点鼠标右键,菜单中多出了一个“加(解)密”的选项。你可以直接点击此菜单,即可完成加密解密操作。

 

  2.禁止加密某个文件夹

 

  如果你想设置禁止加密某个文件夹,可以在这个文件夹中创建一个名为“Desktop.ini”的文件,然后用记事本编辑内容为:

 

   Encryption

  Disable=1

 

  但是这个方法不能禁止已加密文件夹的文件以及子文件夹。

 

  3.彻底禁止EFS加密

 

  要在机器上彻底禁用EFS加密,可以通过修改注册表实现。点击“开始→运行”,输入“Regedit”回车,打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EFS,在“编辑”菜单上点击“新建→Dword值”,输入“EfsConfiguration”作为键名,并设置键值为“1”,这样本机的EFS加密就被禁用了。如果想重新使用EFS加密时,只要把键值改为“0”即可。

 

  备份加密证书

 

  重新安装系统后要打开加密文件的解决办法

 

  EFS加密原理

 

  让我们来简单了解一下EFS是如何工作的。在EFS中,数据靠FEK(文件加密钥匙)加密,而FEK跟用户的公钥一起加密保存;解密的时候顺序刚好相反,首先用私钥解密出FEK,然后用FEK解密数据。简言之,系统是靠你的公钥/私钥(统称密钥)来加解密的。

 

  那么密钥从何而来呢?密钥是通过用户的SID产生的。在Windows 2000/XP中,每一个用户都有一个SID(安全标示符),首次使用EFS时,系统会根据SID首先生成密钥。SID都是惟一的,如同人的指纹,因而用户的密钥也绝不会相同,这就保证了EFS加密的可靠。目前,据官方消息说EFS还未证实被破解过。

 

  需要注意的是,如果重新安装了系统,就会产生一个新的SID,即使你安装系统的时候采用的是原来的用户名和密码,也无法直接打开原来被加密的文件(夹)了,很多朋友经常由于忽略了这一点而导致数据损失。

 

  备份密钥

 

  既然EFS采用加密密钥来进行加解密,那么只要加密密钥存在,我们就能恢复数据。因此,将密钥备份下来以作不时之需是最好的办法。

 

  点击“开始→运行”,在“运行”对话框中输入“certmgr.msc”打开证书管理器,打开“证书→当前用户”下的“个人→证书”,只要你做过加密操作,右边窗口就会有与用户名同名的(如果有多份证书,选“预期目的”为“加密文件系统”)证书。

 

  选中证书后点鼠标右键,选“所有任务→导出”,在弹出的“证书导出向导”中,选择“导出私钥”,并按照向导的要求输入密码来保护导出的私钥,最后存储为一个PFX后缀的文件(如图3所示)。

 

                                                          

 

                                                        图 3

 

当加密文件的账户出现问题或重新安装了系统后需要访问或解密以前加密的文件时,只要使用鼠标右键单击备份的证书,选择“安装PFX”,系统将弹出“证书导入向导”,键入当初导出证书时输入用于保护备份证书的密码,然后选择让向导“根据证书类型,自动选择证书存储区”即可。完成后就可以访问以前的加密文件了。

 

  提示:需要注意的是,任何其他用户只要获得了你备份的证书,都可以对你的加密文件进行解密,因此一定要确保备份证书的安全性。

 

 小知识

 

  1.把未加密的文件复制到已经加密的文件夹中,这些文件会被自动加密。

 

  2.若是将加密文件移动到NTFS分区上,数据会保留加密属性;如果移动到FAT(FAT32)区上,这些数据将会被自动解密。另外,NTFS分区上保存的文件不能同时被压缩和加密。

 

  3.Windows的系统文件和系统文件夹不能被加密。

 

  用恢复代理解密文件

 

  删除用户后打开加密文件的解决办法

 

  EFS加密是安全可靠的,那么,一旦用户账户被删除,就像开头提到的那位,重新创建一个相同的用户可以打开吗?答案当然是否定的,重新创建的用户虽然与以前用户同名,但是系统却不会分配相同的SID(记住,不可能存在相同SID!除非是克隆系统),因此密钥也不同,加密的文件自然就无法打开了。

 

  当然,这种情况也不是完全没有解决的办法,因为用EFS加密过的文件,除了加密者本人之外还有“恢复代理”可以打开。恢复代理是一种特殊的用户,作用是解开用EFS加密的文件。

 

  对于Windows 2000来说,在单机和工作组环境下,默认的恢复代理是 Administrator ;Windows XP在单机和工作组环境下没有默认的恢复代理。而在域环境中就完全不同了,所有加入域的Windows 2000/XP计算机,默认的恢复代理全部是域管理员。所以我说那位网友是幸运的,因为他用的是Windows 2000,可以用Administrator这个用户登录系统,然后就能直接打开或者解密文件。

 

  大量使用Windows XP的朋友就没有那么幸运了,由于没有默认的恢复代理,事先又没有设置恢复代理,一旦用户被删除,你面临的将是数据的丢失。因此如果你使用的是Windows XP用户,请事先设置恢复代理。

 

  设置Windows XP恢复代理

 

  1.首先确定用哪个用户作为恢复代理,可以设置任何用户,比如你想让USER成为恢复代理,就用USER账户登录系统(一般建议使用Administrator作为恢复代理)。

 

  2.在“运行”中输入“cipher /rc:\test”(test可以是任何其它名字),回车后系统会提示询问是否用密码把证书保护起来,你可以自己设置一个密码,也可不需要密码保护就直接按回车。完成后我们在C盘的根目录下可以发现test.cer和test.pfx两个文件(在资源管理器中点“工具→文件夹选项→查看”,取消“隐藏已知文件类型的扩展名”才能看到文件后缀名)。

 

  3.先使用鼠标右键单击PFX文件,选择“安装PFX”,将弹出“证书导入向导”,如果提示输入密码,就输入步骤2中设置的密码(图4),选中“标示此私钥为可导出的”,下一步选择“根据证书类型,自动选择证书存储区”导入证书(图5)。

 

                                        

 

                                                       图 4

 

 

                                                        图 5

 

4.在“运行”中输入“gpedit.msc”并回车,打开组策略编辑器。在“计算机配置→Windows设置→安全设置→公钥策略→正在加密文件系统”下,点击鼠标右键,并选择“添加数据恢复代理”,按“添加故障恢复代理向导”打开test.cer,完成后即成功将USER用户设置为指定恢复代理(图6)。

 

 

                                                            图 6

 

现在,登录USER用户,就可以解密所有在指定恢复代理后被加密的文件(夹)了。注意,在设置恢复代理前已经加密的文件是不能解密的,所以必须未雨绸缪,事先设置恢复代理。

EFS加密疑难解答

 

  1.重装系统后默认的恢复代理是否能恢复以前的加密数据?

 

  不能,假设Administrator用户是默认恢复代理,重装系统后,这个Administrator的SID已经发生了变化,所以不能作为以前用户的恢复代理了,只有将备份的证书导入才能打开文件。

 

  2.被EFS加密过的数据是否绝对安全?

 

  不是,安全永远是相对的。EFS加密过的文件,如果不是用户本人或恢复代理,虽然无法打开加密文件,但是仍然可以删除,所以对于重要文件,最佳的做法是NTFS权限和EFS加密配合使用。只有同时具有NTFS权限以及密钥,才能操作文件。

 

  3.我用的是Windows 2000系统,在局域网中且加入了域,我用Administrator为何不能解密文件?

 

  由于加入域中,默认的恢复代理是域管理员,而不是本地管理员了,所以必须以管理员身份登录域,才能解密。

 

  4.用Ghost备份了系统,恢复系统后可以打开以前的加密文件吗?

 

  这要看什么时候做的克隆,如果已经用EFS加密文件后才克隆系统,用户账户和相应的SID都没有变,而且存在相应密钥,重新恢复系统,应该可以打开加密文件。但是如果第一次用EFS加密文件之前就克隆了系统,这时系统中还就没有密钥,而这样的克隆中也不包括密钥,所以在加密之前所做克隆恢复后不能打开加密文件。

 

  5.所有的在Windows 2000上加密的文件都不可访问,包括EFS代理,而我并未重装系统,这是怎么回事?

 

  如果在系统未发生故障,而每个人,包括EFS代理都不能访问所有的加密文件时,请打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,检查NtfsEncryptionService的值是否为默认值“EFS”(很可能已经被修改或是此键已被删除),如果被修改,你可以改回默认值。

 

  6.如何检查谁加密的文件以及谁是恢复代理?

 

  可以在资源管理器中选中要查看的文件,在文件上用鼠标右键点击,并选择“属性”,在“常规”选项卡上点击“高级”按钮,点击“详细信息”,在这里你可以查看谁可以透明打开这个加密文件(如果只有一个,则为加密者)以及查看文件的恢复代理是谁(如图7所示)。

 

 

                                               图 7

编后:

 

  对每个使用者来说,存贮在电脑上的数据的重要性不言而喻。但电脑有时候也很“脆弱”,种种原因都有可能导致它“生病”。这个时候,抢救重要数据以及解决棘手问题就成为使用者的首要任务。对高手来说,这也许不算什么难事,但如果你对这些并不是很熟悉,而高手又不在你的身边,“自救”就成了唯一可行的手段。为此我们策划了这个“数据自救”的选题,一旦掌握了“自救”的技巧,即使高手不在身边的日子,你一样可以从容不迫。同时,我们也希望在阅读完文章后,你可以养成一种好的使用习惯,毕竟,未雨绸缪胜过亡羊补牢!

 

EFS加密文件夹无法打开怎么办

 

  EFS(Encrypting File System,加密文件系统)是从Windows 2000开始就提出的一种基于NTFS文件系统的核心文件加密技术,主要是用于保护本地数据。在使用EFS加密文件的同时,也产生了诸多麻烦,比如重装系统后无法打开EFS加密过的文件夹等等,那么我们该如何解密?现在让我们先来看看大家的讨论。

 

  备份及导入密钥来解密

 

  为了防止在重装系统后无法打开加密文件夹,我们可以通过下面的方法来备份及导入密钥:点击“开始→运行”,输入“certmgr.msc”,回车后打开证书管理器。展开“证书/个人/证书”,右键单击在右侧窗口中以用户名为名称的证书,在“所有任务”中选择“导出”打开证书导出向导。单击“下一步”之后选择“是,导出私钥”,单击“下一步”,选择默认导出文件格式,再单击“下一步”,输入保护密码和确认密码,单击“下一步”后指定文件名,最后单击“完成”即可。

 

  这样在重装系统之后,右键单击导出的私钥文件,选择“安装PFX”之后就可以一步一步导入私钥。导入完成后,就可以顺利地打开EFS加密的文件夹。

 

  软件的方法不可靠

 

  在没有备份密钥的情况下,要对EFS解密几乎是不可能的,虽然网上流行很多种方法,但是可行性微乎其微,劝大家放弃。因为某些EFS使用的是公钥证书对文件加密,而且在Windows 2000/XP中,每一个用户都使用了惟一的SID(安全标志)。第一次加密文件夹时,系统会根据加密者的SID生成该用户的密钥,并且会将公钥和密钥分开保存。如果在重装系统之前没有对当前的密钥进行备份,那就意味着无论如何都不可能生成此前的用户密钥,而解密文件不仅需要公钥,还需要密码,所以也就根本不能打开此前EFS加密过的文件夹。

 

  编者按:通过各位大虾的谈论,至少应该得出这样一个结论,在进行EFS加密后一定要进行证书备份。否则遇到特殊情况,那被加密过的文件夹就无法打开了。

 

共享Win XP中的EFS加密文件

 

  EFS作为一种安全性较高的加密方式一直深受大众的喜爱。但是在Windows XP以前,EFS加密 是不支持共享的,这就意味着被加密的文件只能由加密操作者或安装了加密证书的用户查看,给网络上的共享造成一些不便。

 

  微软认识到了这个问题,在Windows XP Professional的EFS版本中,加入了共享的特性。要共享一个被EFS加密的文件,必须由系统管理员或文件加密操作者操作,否则会在操作过程中出错。具体操作步骤如下:

 

  1.用管理员组里面的账户或EFS加密创建者账户登录Windows,然后打开被加密的文件夹(因为EFS是对文件加密,不是对文件夹加密,所以其他用户也可以打开文件夹),右击要共享的被加密的文件,选择“属性”,打开文件属性对话框。

 

  2.在“常规”选项卡中点击“高级”按钮,在“高级属性”对话框里点击“详细信息”按钮;然后点击“添加”按钮,添加另外一个用户的EFS证书,在用户证书列表里面选择一个证书,然后点击“确定”按钮完成添加工作。

 

  注意:该证书只有在第一次使用EFS时才会被创建,因此要让别的用户能够查看被EFS加密的文件,必须先创建这个证书,也就是说其他用户必须先使用一次EFS加密。

 

  3.依次点击“确定”按钮,退出全部对话框即可完成EFS加密文件的共享操作。

 

  注意:

 

  1.以上操作在Windows XP Professional里面试验成功,Windows XP Home Edition不支持EFS,所以是无法操作的。

 

  2.执行前必须确认操作者对于被加密的文档具有写操作权限或修改权限(对于Office文档),否则执行过程中会出现错误。

 

  3.使用EFS以后,如果碰到需要重新安装操作系统、甚至是修复安装时,都必须事先备份加密证书,否则重新安装/修复安装完成以后,以前被加密的文件将无法打开。

 

  小知识:EFS是加密文件系统(Encrypting Files System)的英文缩写,是自Win 2000以来微软为了提高文件的安全特性在NTFS文件系统中引入的一种核心文件加密技术。EFS对加密该文件的用户是透明的,不必在使用前手动解密,可以正常打开和更改文件。

 

Windows文件夹加解密技巧

 

  面对一成不变的Windows文件夹,大家有没有想过让其个性化些?如何让你文件夹里的信息更安全?如何让你文件夹使用起来更方便呢?本文中笔者将给大家介绍这方面的技巧,一定会让你的系统看起来更加有个性,使用更方便,信息更安全,今天我们刊登出加解密篇。

 

  加密:

 

  每个人都有一些不希望别人看到的东西,例如学习计划、情书等等,大家都喜欢把它们放在一个文件夹里,虽然可以采用某些工具软件给文件夹加密,但那样太麻烦了,有没有什么简单的方法可以为自己的文件夹设定一个密码呢?答案是肯定的,利用Windows自带功能我们就能轻松的为文件夹设定密码。

 

  1.在Windows 9X/Me/2000中

 

  进入要加密的文件夹,点击右键,在弹出的菜单中选择“自定义文件夹“。接下来在向导中点击“下一步”,选择“自定义”并勾选“选择或编辑该文件夹的Html模板”,在模板类型中选择“标准”,并选中“编辑该模板”,点击下一步(在Win98中稍有不同,直接在向导中选择“创建或编辑HTML文档”即可)。此时将会打开一个名为“Folder”的文本文件。在该文件中找到<script language="JavaScript">字段,在其下方输入以下内容(中文双引号内为注释内容,不需要输入):

 

  var pass=prompt("Please Enter the Password");“prompt命令后的括号内输入进入文件夹后的提示用语,可以为中文。分号可省略。可此行必须单独一行”

 

  if(pass!="123")“密码为123,也可以设置为其他密码”

  {window.location="c:"}“若密码错误,则进入C盘,也可以设为别的分区,但是只能为根目录”

 

  保存后退出该文件设置便可以起效。folder.htt文件在创建后,下次需要更改设置我们就可以直接在文件夹中找到folder.htt文件,用记事本打开后进行修改,保存后设置即可生效。若是在WinMe操作系统,则没有<script language="JavaScript">字段,我们要找的字段是<script>,把上面的内容放在该字段后即可。

 

  2.在Windows XP中

 

  在Windows XP中的“自定义文件夹”中没有相应的选项对模板进行编辑,而且直接编辑其中的folder.htt文件也无效。这时候我们可以“曲线救国”:先在Windows2000中按以上方式建立一个加密的文件夹,然后把该文件夹整体复制到Windows XP中即可。

 

  通过以上的方法,我们可以完成对私人文件夹的加密。虽然比较简单,但是也能起到一定的作用,特别是对于那些无意窥视他人隐私的人来讲。

 

  解密:

 

  当然,以上的加密是非常脆弱的,下面我就向大家介绍一下如何对此类文件夹进行解密操作,当你在加密后却忘记了密码的时候,就能派上用场了。当然,可不能利用这个去做坏事哦。

 

  方法一(适用于Windows98/Me系统):进入一个未加密的文件夹,点击菜单栏上的“查看”命令,取消“按Web页查看”选项。再次点击“查看”,选择“文件夹选项”,在弹出的对话框中选择“查看”选项卡。点击“与当前文件夹类似”,确定后即可取消本机上所有文件夹的加密。

 

  方法二:采用方法一将会取消对所有已加密文件夹的加密属性,无法对单个文件夹进行解密操作,而且不适用于Win2000、XP系统。其实,不管是在98系统还是2000/XP系统下,破解这种类型的加密文件夹有一个通用的方法,我们甚至可以像进入自己的文件夹那样进入到加密的文件夹:假设被加密的文件夹为d:\lj,那么只需要在地址栏中输入d:\lj\folder settings\folder.htt,就可以打开改设置文件(folder.htt)。我们只要在改文件中找到进行加密的几行代码,密码就毫无保留的呈现在了我们面前。记下了密码,再打开加密的文件夹,我们就可以轻松进入了!

 

原创粉丝点击