26 评论

文件加密的扫盲介绍

★引子


  上一个帖子点评了爱国愤青关于拉登同学的几个误区。话说美国佬把拉登灭掉之后不到一星期,从拉登老巢缴获的电脑资料,就开始在美国政府的网站曝光了(比如拉登的生活录像)。另据美国某安全官员说,缴获的电脑资料之多,抵得上一个小型图书馆。单从这点可以判断出:拉登同学对自己手头的存储设备(比如硬盘),没有进行【足够强度】的加密处理。这令俺很吃惊啊!——堂堂的恐怖大亨,竟然连这点常识都没有啊?!
  想当年,陈冠希同学就是因为疏忽了数据加密,导致艳照满世界流传,不光搞臭了一堆女明星,也造福了无数男网民。这回,基地组织估计要步陈同学的后尘了——区别在于,这次倒霉的是基地组织的残余势力,受益的是美国情报机构。

★文件加密的重要性


  有些同学以为,自己既不是影视明星,又不是恐怖分子,不需要采用文件加密之类的工具,那就大错特错啦。俺大致介绍一下,文件加密的用武之地。

◇防范失窃


  这年头,笔记本电脑、平板电脑越来越流行,而这类便捷的移动设备,也增加了丢失的概率。一旦你的移动设备丢失,存储在上面的个人敏感信息就有暴露的风险。比如用浏览器保存的登录口令、邮件客户端存储的私人邮件、等等。如果你的敏感信息是加密的,失窃后的风险就大大降低。

◇保存个人隐私


  很多人的家用电脑,都是几个家庭成员共用的。你可能会有一些个人隐私的信息,不希望被其他家庭成员看到。比如你上网下载的毛片、艳照、等,多半不希望被你父母或子女看到。这时候,文件加密就可以防止你的隐私外泄。

◇加密备份数据


  很多同学把电脑中的数据备份到移动硬盘上。有些同学觉得放家里的移动硬盘还不保险(万一家里遭火灾,一样废掉)。正好近2年,"云"的概念炒得很热。所以,那些忧患意识很强的同学,就开始考虑用"云存储"(俗称网盘)来做异地备份。
  一旦你把数据备份到"云端",就得考虑加密问题了。假如你用的是国内公司提供的网盘,那你一定得小心。因为党国是很关心屁民的隐私滴(具体的原因,你懂的:)。如果你把数据备份到国外的网盘,也未必安全。这不,连大名鼎鼎的Dropbox,最近都曝出数据安全的丑闻(懂洋文的同学,可以看 Wired 网站的爆料)。

◇对付六扇门的人


  前几种情况比较常见,俺再介绍一种比较少见的情况。
  假如你跟俺一样,经常在网上恶毒攻击朝廷;或者你是一个维权人士、民运人士、持不同政见者;或者你是一名黑客;......那么,你有可能会被天朝的六扇门盯上。如果你的身份是公开的,或者朝廷追踪到了你的真实身份。那么,这些党国的走狗就有可能搜查你的住所,没收你的电脑。然后,通过你电脑中存储的资料,定你的罪,或者再牵连出其他人。
  关于这种情况,俺在《如何隐藏你的踪迹,避免跨省追捕》系列教程中,已经有介绍。当时提及的几个注意事项,就包括了电脑存储设备的加密问题。不过捏,当时没有详细介绍加密工具的使用细节。所以,今天俺会把这部分补上。

  接下来,俺把几种常见的加密方式介绍一下,并分析各自的优缺点。

★使用压缩软件


  俺发现很多人(尤其是菜鸟用户),首先想到的加密方式,就是把敏感文件用压缩工具(比如 7zip、WinRAR)压缩一下,并设置一个口令。

◇优点


  1. 不需要额外安装软件
  压缩软件几乎是装机必备的软件。因此,使用这种方法,多半不需要额外安装其它软件。
  2. 便于备份
  可以把压缩文件 copy 到任何地方,只要知道口令就能打开。

◇缺点


  1. 加密强度没保证
  压缩软件的强项是压缩,而不是加密。有些压缩软件,本身的加密强度不够,还有些压缩软件(比如早期的 WinZip),加密机制有缺陷,会导致攻击者轻易破解。
  2. 查看文件不方便
  每次要查看加密压缩包里的文件,都需要先解压出来,看完再删除。非常麻烦!
  3. 查看文件容易泄密
  如果你解压并看完之后,忘记删除敏感文件,就有泄密的风险。
  即便你的每次看完都对敏感文件进行【彻底删除】,也还是不保险。因为很多压缩软件在解压时,会先解到系统的临时目录。而压缩软件在使用完临时目录后,仅仅进行简单删除,而不是【彻底删除】。这样的话,敏感文件的内容有可能还在磁盘上。专业人士通过反删除工具,还是有可能恢复出来。
  4. 功能有限
  用压缩软件加密,无法加密整个分区,无法加密某些系统文件(比如 Windows 的虚拟内存文件)。

◇小结


  用这个方法来加密自己电脑中的大量文件,显然是不方便的。如果你要给朋友传递一些需要保密的文件(但是密级又不是很高),或许还可以用一用。

★使用EFS(文件系统级加密)


  稍微懂点技术的用户,可能会选择EFS来加密文件。
  所谓的 EFS,就是把加密功能集成到文件系统中。通常,EFS 都是跟操作系统用户绑定的。某个用户加密的文件,只有该用户能看。也就是说,只要你能用此用户登录到系统中里,也就可以打开 EFS 加密的文件。考虑到 Windows 系统的用户居多,以下仅介绍 Windows 的 EFS。
  对于 Windows 系统而言,从 Win2000 开始,就支持 NTFS 文件系统,也就具有了 EFS 的功能。你只要查看某个文件的属性,在"属性"对话框中点"高级"按钮,即可看到如下的"高级属性"对话框。勾选"加密内容以便保护数据",即可完成对该文件的加密。
不见图、请翻墙

◇优点


  1. 不需要额外安装软件
  只要你的文件分区是 NTFS 格式,就可以使用 NTFS 的 EFS 功能。
  2. 加密强度有保证
  俺没有仔细研究 NTFS 的 EFS 的加密机制。不过捏,像微软这种级别的公司,搞出来的加密机制,强度是不会太弱的。
  3. 查看方便
  由于 EFS 直接集成到文件系统,因此你查看加密文件跟查看普通文件,没有任何区别。

◇缺点


  1. 太依赖于当前系统
  EFS 的一个主要缺点,是太依赖当前的系统。如果你没有导出密钥,一旦系统重装了,那你就无法再访问被 EFS 加密的文件了。即便你用同样的安装盘重装,安装的时候使用同样的用户名和口令,也不行。更加神奇的是,即便你事先用 Ghost 把原来的系统分区克隆出来,再恢复回去,那些 EFS 加密过的文件,也不可用了。
  2. 没有独立的认证方式
  前面提到了,EFS 依赖于操作系统本身的用户认证。如果你和家人共用一台电脑的【同一个系统用户】,那这种加密方式形同虚设。
  3. 备份密钥的麻烦
  比方说,你把某个移动硬盘的文件用 EFS 加密。如果你希望在另外一台电脑上也能查看该 EFS 加密的文件。那么你必须先在加密的那台电脑中把秘钥导出,然后在第二台电脑导入。具体的操作步骤极其麻烦。如果你打算重装系统,也要搞这套复杂的秘钥导出步骤。(经网友在评论中提醒,从 Vista 开始,密钥的导入/导出步骤简化了很多)
  4. 不能跨操作系统和文件系统
  比如 NTFS 的 EFS,显然只能用于 NTFS 分区,FAT 分区(FAT16、FAT32)用不了。
  另外,Windows、Linux 都有各自的 EFS 加密功能,互相之间是不能混用的。比如你一台 Windows 和一台 Linux,想在这两台电脑之间共用一个 U 盘,那 EFS 加密的方式就行不通。

◇小结


  EFS 的方式,对于防范电脑失窃,还是比较方便的。但是对于另外的几种用途,EFS 不是很方便。
 &#补充说明一下:自从 Vista 开始,Windows 内置了另外一种文件加密机制——BitLocker。它比传统的 EFS 有更多优点:增加了多种认证方式,用户界面更友好。但是,仅能用于 Vista 及之后的 Windows 系统,而且对具体的版本还有限制(据说仅限于 Enterprise 版和 Ultimate 版,不爽)。
 &#不过,俺把 BitLocker 归类到"专门的文件加密工具",后面会介绍。

★专门的文件加密软件


  从前面的介绍可以看出,上述这几种方式,都有不少缺点。有些缺点还很要命。现在,俺要介绍今天的重点——基于专门的文件加密工具进行加密。

◇根据加密对象分类


  根据被加密对象的不同,大致有如下几种加密类型。有些加密工具,可以同时支持其中的几种。

  1. 针对文件/文件夹的加密
  这种好理解,就是可以选择某几个文件或目录,然后对其进行加密。每一个文件/目录,都可以设置单独的认证信息(通常用口令)。
  以文件/目录为单位进行加密,一旦文件/目录的数量多了,管理起来不方便。

  2. 针对物理硬盘的加密
  这种方式,就是把整个硬盘,或者硬盘的某个分区进行加密。如果你想访问该硬盘或者分区,需要通过认证(通常是输入口令)。认证之后,该硬盘可以像普通硬盘一样使用了。因此,即便别人拿到你的硬盘后(比如电脑被偷),也得不到被加密的数据。
  比如前面提到的 BitLocker 就支持物理硬盘的加密。

  3. 针对虚拟硬盘的加密
  这种方式,说起来比较复杂。
  你可以通过加密软件,创建出一个虚拟硬盘。这个虚拟硬盘其实对应到一个你物理硬盘上的一个文件。你往这个虚拟硬盘上写入的数据,(经过加密之后)都存储在这个文件中。你创建的虚拟硬盘有多大,这个数据文件就有多大。
  在使用上,这种方式跟加密物理硬盘类似。要先通过认证才能使用。认证之后,就跟普通的硬盘没啥区别了。你一样可以对它进行分区(虚拟硬盘上的分区,就是虚拟分区),一样可以在上面安装软件。

  上述3种方式,俺比较喜欢"虚拟硬盘/虚拟分区"的方式。虽然加密物理硬盘和加密虚拟硬盘,在使用上没啥明显区别。但是虚拟硬盘只是一个数据文件,备份很方便。还可以把这个数据文件放在U盘上,在多台电脑之间公用——就像移动硬盘一样。

◇根据是否开源分类


  有些加密工具是开源的,有些是闭源的。
  显然,开源的比较爽。因为源代码开放,可以确保该软件没有暗藏后门,可以确保加密机制没有弱点。而且,开源的软件通常也是免费。

◇根据加密算法分类


  有些加密软件使用公开算法,有些使用私有算法。
  略懂密码学的网友应该晓得,使用公开算法比较靠谱。毕竟,公开算法(尤其是那些知名且使用广泛的)是经过许多密码学大牛严格论证的,确保其中没有明显的缺陷。

◇如何选择?


  那如何选择文件加密工具捏,俺觉得如下几点要注意:
1. 知名度高,口碑好
2. 有较多的用户使用
3. 支持主流的加密算法
4. 最好是支持虚拟盘/虚拟分区
5. 最好是免费且开源的
6. 最好支持多种操作系统

  考虑到有不少网友留言,让俺推荐一款加密软件。于是专门写了一个帖子推荐 TrueCrypt(针对 TrueCrypt,后来又写成了一个系列)。

◇小结


  如果你选择的加密工具足够好,那么,前面提及的通过压缩软件或EFS加密导致的各种麻烦,大都可以避免。反之,如果你选择的工具不好,不光容易泄露敏感数据;万一工具的质量没保证(比如软件有Bug),还会损坏你的数据,导致你的敏感数据丢失。

俺博客上,和本文相关的帖子(需翻墙)
TrueCrypt——文件加密的法宝
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2011/05/file-encryption-overview.html

26 条评论

  1. 一直在看博主的文章,挺好的。

    不过今天这篇,有关EFS的介绍有误。EFS是一种基于公钥方式的加密机制,因此实际上只要具备私钥,就可以对相应公钥加密的文件进行解密。

    进而,只要备份好自己的公钥私钥对,重装系统后还原到系统中,一样可以解密之前的文件

    具体方法如下:http://windows.microsoft.com/zh-CN/windows-vista/Back-up-Encrypting-File-System-EFS-certificate

    回复删除
  2. 补充一下。

    密钥的导出步骤比较多,但操作并不是太困难。

    实际上从Vista开始,一个帐户首次使用EFS加密文件的时候,系统就会用非常醒目的气泡通知,告知用户为什么要备份自己的密钥,并且点击后按照向导就可以用更简单的方式对密钥进行备份。已经简化了不少了

    回复删除
  3. 楼上同学的反馈很迅速啊:)
    不过,俺写的内容跟你说的,好像不矛盾。

    回复删除
  4. 楼上的同学:
    关于“从Vista开始,简化了EFS的密钥导入/导出操作”这一点,俺已经补充到原文中。
    多谢提醒 :)

    回复删除
  5. 若在加密后再ghost就可以

    回复删除
  6. 那么,用那个加密工具好呢?

    回复删除
  7. 多谢博主的post,对需要文件加密的人们真的非常有帮助 :-)

    回复删除
  8. 博主请推荐几个工具?

    回复删除
  9. 博主,请问微软家的word加密如何?2007版本的话,有没可能有后门?如果密钥长度超过8还可能暴力破解吗?谢谢!

    回复删除
  10. to 楼上的几位让俺推荐加密工具的网友:
    请看俺5月18日发的帖子:
    TrueCrypt——文件加密的法宝

    回复删除
  11. to 楼上的楼上:

    Word 2007的加密,是否有后门,俺不好说。

    在Word 2007本身的加密机制没有缺陷的前提下,如果要防止暴力,一个因素是口令的长度,另一个因素是口令的复杂度。
    如果口令只有8个字符,但是同时包含有大小写字母、数字、特殊符号,那强度应该还可以。
    如果8个字符的口令只包含数字,那被破解的风险就大得多。
    为了保险起见,俺建议再设长一些(比如12-16个字符)。

    回复删除
  12. TrueCrypt应该是磁盘加密,那关于文件加密和磁盘加密,各有什么优点?到底哪个好呢?

    回复删除
    回复
    1. TO Curtis Wilbur
      TrueCrypt 是针对“磁盘分区”一级的加密。
      EFS(Windows)和 eCryptfs(Linux)可以看成是针对“文件”一级的加密。
      两者的优缺点,俺稍微列举一些(不一定全面)

      TrueCrypt 的优点是:
      1. 同时支持多种平台
      2. 支持“便携模式”(无需安装,但需要管理员权限)
      3. 如果是基于虚拟盘的加密,虚拟加密盘可以跨操作系统使用
      4. 基于优点3,TrueCrypt 很适合用来做跨机器备份(比如备份到外置硬盘,备份到网盘)
      5. 支持用 keyfile 做认证方式,无需口令,而且难以暴力破解(也可以用 keyfile+password 搞双因素认证)

      EFS 和 eCryptfs 的优点:
      1. 比较灵活(可以仅加密个别文件,不需要加密整个分区)
      2. 可以跟操作系统无缝整合(使用者只需用操作系统用户登录,无需额外口令)

      删除
  13. 编程大能推荐个轻量级 文件/文件夹加密 的软件吗?
    EFS基于操作系统用户,bitlocker和TrueCrypt都是整卷磁盘加密,
    能找到的单文件/文件夹加密工具都是改名字+改属性+隐藏的方法。
    烦请大大推荐个!

    回复删除
    回复
    1. TO noname
      能否说说你的具体需求?
      不同的需求,采用的加密工具也是不同的。

      另外,你提到的“改名字+改属性+隐藏”的方法,是非常不靠谱的。
      可以说形同虚设。
      可靠的加密,一定要基于专门的,靠谱的工具

      删除
    2. 支持windows系统,能够跨机解密.
      可以对单个文件或整个文件夹加密,
      速度的话不要太慢,安全性一般就行.


      最近博客垃圾评论有点多,比较影响阅读。
      博主曾说过不删留言,不过众5毛、NC们大举进犯,形势不一样了,
      垃圾评论中不乏人身攻击,没有鲜明论点,重复率很高,
      有点怀念“忠党爱国”了..

      删除
    3. TO noname
      如果只用于 Windows 系统,可以考虑 Windows 自带的 EFS(从 Win2000 开始提供)
      对于你的需求,唯一的不足是“跨机器使用”
      EFS 的密钥是可以导出的,能够“跨机器使用”,但是操作稍嫌麻烦。

      删除
    4. TO noname
      关于近期网评员泛滥,俺觉得挺高兴 :)
      这是对俺努力写博的鼓励,也说明俺博客的影响力又增加了。

      据俺观察,《每周转载:关于朝廷近期舆论和习近平的嘴脸》这篇博文发布后,网评员开始多起来。
      显然,这篇博文触到朝廷的痛处了。
      尤其是博文中习近平的那张“玉照”

      删除
    5. 你断章取义经济学人的封面还恬不知耻的装13 你活的真悲哀

      删除
    6. 说什么,什么就到,那张"玉照"还是很贴切的。
      博主更要注意网络安全,切勿大意。

      删除
    7. TO noname
      多谢对俺的关心 :)
      俺一定会尽量小心,以便跟朝廷做长期斗争。

      删除
    8. 对于单文件,通过加密(算法是公开算法),再隐藏(例如将它追加到图片或者其他文件的末尾),安全性应该不错的。使用的时候通过专门的软件提取被加密隐藏的文件。

      删除
    9. TO Curtis Wilbur
      补充一下你说的。
      光追加到图片文件尾部,隐藏效果不够好。

      更好的隐藏方式是:采用“图像隐写术”
      把加密内容隐写到图像中。
      缺点是,如果要隐写的数据较多,就需要很大很大的图片。

      关于这方面的介绍,可以看俺的博文
      《[url=http://program-think.blogspot.com/2011/06/use-image-hide-information.html]用图片隐藏信息的技术实现[/url]》

      删除