`
mmdev
  • 浏览: 12954839 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

最简单有效也是最适合程序员的代码文件安全加密保护方法——EFS

 
阅读更多

可能很多程序员都用过EFS,至少都知道NTFS有这么个加密功能,但并不了解它,会觉得不好用,因此没有真正用起来。但一般情况下也找不着更好的加密方式,于是就裸奔了。其实EFS是非常适合给程序员做工作代码保护的,当你了解它之后就会有这种感觉了。

起因

这可能是个老掉牙的话题,每个用电脑的人都会想到要保护自己电脑上的东西。但事实上,从我这么多年接触的同事、朋友来看,能真正做到这一点的不多,就连做了十几年编程开发的人也不例外。个个都认为自己的电脑很安全,结果我随便一下就能把他们的文件弄出来。普通的用户也就罢了,但专门搞技术的人也一样,似乎就有点说不过去了。我觉得一个可能是大家的安全防范意识还是不够,或者说觉得自己的电脑上没什么重要的东西吧;另一个可能也是没仔细研究过哪种保护方式才方便好用(这里我是专指Windows下的防护)。

大家一般都会给Windows用户设置一个登录密码,尤其XP下还要给超级用户另外设置;另外也有人设置BIOS开机密码。然而这些开机登录密码只能防止别人用你的机器,不能保护你的文档——只要把你的硬盘拆下来,接到其它机器上,立马什么文件都全部看到。如果不想拆机器,把BIOS放电就能去掉BIOS开机密码,用U盘启动就可以看你的文档。还有一些笔记本电脑,能给硬盘设置密码,这个稍为安全一些,但其实也只是硬盘接口上做了个类似于小BIOS的密码,并没有对内容进行处理,拿到专业人士手里稍为弄一下也是可以去掉的。

总之一句话,如果不做加密,稍有技术的人只要能接触你的机器,就能访问你的文件(说不定你就是下一个艳照门的主角)。作为数字作品的工作者,用一些手段保护自己的数字财产是很有必要的。

加密

那具体如何保护呢?答案当然是加密。只有加密能彻底地保护你的文件。除了加密,其它什么隐藏、权限控制等方法都是浮云。用什么来加密呢?当然是EFS。一般的加密软件,如RAR和ZIP,只适用于备份,在经常要工作的机器上是不好用的。EFS是WINDOWS自带的一个加密方案,只能用于NTFS分区,比较简单易用。专业版的WINDOWS一般都支持EFS(HOME版是不支持的),加解密过程对用户是透明的,比较安全和方便。

为什么说EFS适合程序员呢?首先它是系统自带,不用另外找;其次它对系统透明,易于使用,可以做到只加密代码文件,不影响编译代码的速度;再次它久经考验,不会有不稳定的担忧;最后它确实很安全,能有效地保护你的代码。

可能有人用过EFS,但到最后遇到无法解密或乱码的情况,这些情况可能是经验不足使用不当。因此初初用的话也要做好证书备份,不能大意,弄不好有时也会搞死自己。

我个人使用EFS已经好多年,我自己使用的感觉是相当的稳定可靠。我之前有过重装系统后无法打开加密文件的教训;也有过在D盘系统上加密后,在E盘新系统无法解密的事情,后来通过导出证书解决;都是自己的原因。

EFS使用起来很容易:用资源管理器找到要加密的文件夹,右键属性高级,勾选加密内容以便保护数据,确定确定,将更改应用于该文件夹子文件夹和文件,即可。以后新加的文件、文件夹均受保护;将文件COPY到另一个NTFS磁盘也仍然保持加密状态;如果将文件COPY到FAT分区或网上邻居,则系统会提示丢失加密属性。

由于加解密过程需要占用额外的资源,因此会降低读写的速度,建议只针对关键代码文档目录进行。

效果

据我个人理解,EFS是非常安全的,使用大数运算对文件密钥进行复杂加解密,然后再用文件密钥对文件内容进行快速加解密。除非知道你的系统密码或穷举重试,否则基本上没有办法能解密。你可以用其它手段看到文件目录结构,可以修改文件名,也可以删除文件,但无法查看内容。网上说的破解,也只是说操作系统裸了进不去,但系统的证书文件其实还在,可以用登录密码取回。也有人说加密跟当前用户的SID有关,但其实只要有证书,新建一个用户也是可以解密的。

另外注意一点,就是超级用户是可以看到其它用户的加密内容的,因此你必须自己是超级用户才能完全的保护自己。XP的系统是有隐藏的超级用户的(密码为空),用XP的话自己要先把超级用户的密码设置一下,不然别人用超级用户就能解密你的文件了。

备份

以下操作会导致无法正常解密文件:

  • 系统被破坏;
  • 重装过系统;
  • 用超级用户直接重置用户密码(正常地先登录再主动修改密码则不会影响);
  • 使用其它手段强制重设系统密码登录系统

这些情况下加密证书被损坏,无法用于解密,这时你的文件也会丢失;如果有备份证书,则仍可以导入证书解密。因此备份证书是非常必要的。

一般在一个系统上做过文件加密后,系统都会生成一个证书。有多个证书时,要一个一个地导出,在新系统需要时导入。如果有多个系统需要共享加解密,也可以互相做这种证书导入。如果不备份,一旦WINDOWS系统裸掉或重装,你将无法访问加密的文件。以下为微软提供的证书备份说明:


备份加密文件系统 (EFS) 证书

http://windows.microsoft.com/zh-CN/windows-vista/Back-up-Encrypting-File-System-EFS-certificate


如果对计算机中的数据进行加密,则当加密密钥出现意外时,需要使用一种方法来恢复数据。如果加密密钥已丢失或受损,但无法恢复数据,该数据将会丢失。如果将加密密钥存储在智能卡中,而智能卡已受损或丢失,也会丢失数据。若要确保始终可以访问加密数据,应对加密证书和密钥进行备份。如果有多个用户使用计算机,或使用智能卡对文件进行加密,则应创建文件恢复证书。有关详细信息,请参阅为加密文件创建恢复证书。


备份 EFS 证书的步骤

  1. 通过单击“开始”按钮,在“搜索”框中键入 certmgr.msc,然后按 Enter,打开“证书管理器”。?
  2. 单击“个人”文件夹旁边的箭头将其展开。
  3. 单击“证书”。
  4. 单击“预期目的”下面列出“加密文件系统”的证书。(可能需要滚动到右侧才能看到此信息。
    如果有多个 EFS 证书,应当将其全部备份。
  5. 单击“操作”菜单,指向“所有任务”,然后单击“导出”。
  6. 在导出向导中单击“下一步”,单击“是,导出私钥”,然后单击“下一步”。
  7. 单击“个人信息交换”,然后单击“下一步”。
  8. 键入要使用的密码,确认该密码,然后单击“下一步”。
  9. 导出过程将会创建一个文件来存储证书。
    输入文件的名称和位置(包括完整路径),或者单击“浏览”,导航至其位置,然后输入文件名。
  10. 单击“完成”。

Win7的系统新增加了BitLocker技术,加密整个磁盘,也是较好的保护手段,但我没有研究过,看起来比EFS复杂,而且会对不必要的文件也加密,感觉还是EFS好用些。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics