29 评论

文件加密的扫盲介绍

★引子


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

★文件加密的重要性


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

◇防范失窃


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

◇保存个人隐私


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

◇加密备份数据


  很多同学把电脑中的数据备份到移动硬盘上。有些同学觉得放家里的移动硬盘还不保险(万一家里遭火灾,一样废掉)。正好近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

29 条评论

  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]》

      删除
  14. True Crypt should be disk encryption. What are the advantages of file encryption and disk encryption? Which is better?

    回复删除
  15. TrueCrypt should be disk encryption. What are the advantages of file encryption and disk encryption? Which is better?

    回复删除
  16. The cover of the Economist who is out of context is still shamelessly loaded. 13 You are really sad.

    回复删除