前阵子比较忙,十一长假又有事情,导致10多天没发博文也没回复读者留言,害得不少热心读者以为俺被跨省了。今天赶紧发篇博文,向列位看官报个平安。
  刚才扫了一眼这几天的留言,非常感激大伙儿对俺的关心!看来俺得多努力,以示回报。
  关于 TrueCrypt 的高级话题,第4篇咱们来聊一下”隐藏卷”的技术细节和注意事项。

★啥是隐藏卷?

  所谓的隐藏卷,就是在一个加密卷里面再创建一个加密卷。外层的那个加密卷是”明”的(也叫”宿主卷”);内层的那个,是”暗”的(叫”隐藏卷”)。这两个加密卷必须使用不同的认证因素(不同的口令或不同的 KeyFiles)。在物理上,你只能看到外层的加密文件或加密分区,内层的卷,是没有独立文件或独立分区的。
  当你要打开加密卷的时候,如果输入的是外层的认证因素(口令、KeyFiles),那就打开外层的卷(这时候看不到内层的数据);反之,输入内层的认证因素,则打开内层的卷(这时候看不到外层的数据)。
  隐藏卷的存储示意图如下(技术上就是利用外层卷的剩余空间来存储内层卷的数据):
不见图 请翻墙

★隐藏卷有啥用?

  隐藏卷最大的好处在于:可以做到”Plausible Deniability”。这个洋文找不到贴切的中文对应。有人翻译为:”冠冕堂皇地拒绝”,俺觉得不够贴切。为了便于大伙儿理解,稍微解释一下使用”Plausible Deniability”的场景。

  首先大伙儿应该明白一点——TrueCrypt 的加密卷是非常牛B滴(本系列前面几篇已经聊过了)。只要你设置的口令够复杂,尤其再配合 KeyFiles,TrueCrypt 加密卷是无法破解的。TrueCrypt 之强悍,连美国佬的 FBI 都没辙(前几年有活生生的案例)。
  但是别忘了安全界的一句老话——”越是安全的系统,越成为主要的弱点”(如果你看过俺写的“社会工程学”系列博文,对此应该有体会)。
  虽然 TrueCrypt 加密盘很牛B,但某些攻击者(比如天朝的公安)可以采用某些手段(比如威胁你家人,比如刑讯逼供)逼迫你交出加密盘的口令/KeyFiles。那么,该如何应对”胁迫”捏?这时候,TrueCrypt 的隐藏卷就派上用场啦。
  当你一开始制作加密盘(加密卷)的时候,可以在加密卷中设置一个隐藏卷。按照通常的经验,你要把最敏感最重要的数据放在内层卷(隐藏卷),把相对不太重要的数据放在外层卷。一旦遭遇胁迫,你就装出一副很无奈的样子,很不情愿地把外层卷的口令告诉对方。这时候,外层卷虽然暴露了,但是内层的隐藏卷并没有暴露。这就是”Plausible Deniability”的使用场景。

★隐藏卷 VS 嵌套卷

  这两个概念,可能某些同学会混淆,俺稍微澄清一下。
  所谓的”嵌套卷”,就是把一个小的加密卷存放到另一个大的加密卷内部。打个比方,如同一个大的压缩文件中还包含一个小的压缩文件。

  表面上看,”嵌套卷”跟”隐藏卷”有相似之处;其实捏,两者有本质的区别。
  最关键的差别是:
对于”嵌套卷”,只要能打开外层卷,就可以看到内层卷。
对于”隐藏卷”,即使能打开外层卷,也无法判断是否存在隐藏卷。

上述差异导致:“嵌套卷”无法做到”Plausible Deniability”,而”隐藏卷”可以。这也是”隐藏卷”相比”嵌套卷”的最主要优点。

  设想一下,如果你遭到胁迫,攻击者知道你使用了 TrueCrypt 加密,并且逼迫你打开加密卷。
如果你使用的是”嵌套卷”
打开外层卷之后,攻击者可能会找到存放在”外层卷”里面的”内层卷”。就可以继续胁迫你开启”内层卷”
如果你使用的是”隐藏卷”
打开外层卷之后,(除非你的设置有缺陷,否则)攻击者无法判断该加密卷内部是否存在隐藏卷。
(如果避免设置的缺陷,俺下面会聊)

★如何创建隐藏卷

  大致需要如下几个步骤:

◇步骤1

  先创建一个普通的加密卷(这个应该不用俺再教了吧?)这个加密卷是用来作为外层卷(也就是”幌子”)。
  外层卷可以是物理加密盘(某个加密分区),也可以是虚拟加密盘(某个加密文件)。
  关于”物理加密盘”和”虚拟加密盘”的差异、优缺点,本系列前面的博文已经聊过,这里就不再浪费口水了。

◇步骤2

  创建好外层卷之后,你需要在外层卷放置一些相对不太重要的文件作为幌子以掩人耳目。
  怎样才算是”相对不太重要”捏?下面的”注意事项”章节会提到。

◇步骤3

  在刚才那个普通加密卷的基础上,再创建一个”隐藏加密卷”。这个隐藏加密卷,就隐藏在普通加密卷的空闲磁盘空间里面。
  TrueCrypt 提供一个比较傻瓜化的向导,可以帮你一步步地在普通加密卷(外层卷)中创建一个隐藏加密卷(内层卷)。
  这个步骤其实不难,大伙儿应该能搞定。这里就不放界面截图了。搞不定的同学,可以到俺博客留言。如果很多人搞不定,俺再补上界面截图。

★隐藏卷的三种使用模式

  如果某个加密卷包含有隐藏卷,那么该加密卷就会有三种不同的使用模式。
  很多使用 TrueCrypt 的同学都没彻底搞明白隐藏卷的这三种操作模式。所以俺特地用一个章节的篇幅,来说明这三种模式的差异和应用场景。

◇模式1:只打开内层的隐藏卷,外层卷不可见

  认证过程
  打开加密卷的时候,仅仅输入内层卷的认证因素(口令、KeyFiles)。这时候 TrueCrypt 会自动帮你加载内层卷。

  说明
  这是最常用的模式。因为外层卷只是一个掩人耳目的幌子,显然,你日常的大部分操作都是在”内层的隐藏卷”中进行。

◇模式2:只打开外层卷,内层卷不可见,对隐藏卷进行写保护

  认证过程
  可以有两种认证方式:
  1. 打开加密卷的时候,仅仅输入外层卷的认证因素(口令、KeyFiles),同时勾选”Read Only”选框。
  使用这种方式,整个加密卷(包括内层和外层)都是只读模式,自然也就不会破坏内层卷的数据。但因为是只读模式,所以只能浏览外层卷的文件,无法进行修改(写操作)。

  2. 打开加密卷的时候,同时输入外层卷和内层卷的认证因素(口令、KeyFiles)。
  使用这种方式,你可以对外层卷进行写操作(比如增加、删除文件,修改文件内容、等等)
  因为你同时输入内外两层卷的认证因素,TrueCrypt 软件自然就知道这个加密卷是含有”隐藏卷”的。所以,在这种模式下,TrueCrypt 会暗中对隐藏卷所在的磁盘区域进行写保护。(这种写保护是在文件系统驱动的层面进行的,你使用的应用软件感觉不出来)。
  假设说,你企图往外层卷写入大量的数据,并且写入的数据会覆盖到隐藏卷所在的磁盘区域,这时候 TrueCrypt 会屏蔽这些”磁盘写操作”,同时你会看到一个提示”写入失败”。

  说明
  一般情况下不需要使用这种模式。除非你想调整外层卷的数据,再使用这种模式。
  可能有的同学会问:”外层卷的内容只是掩人耳目的幌子,难道需要经常调整吗?”关于这个问题,在后续的”注意事项”章节,俺会详细介绍。什么情况下需要调整外层卷的数据,以加强隐藏卷的隐蔽性。

◇模式3:只打开外层卷,内层卷不可见,不对隐藏卷进行写保护

  认证过程
  打开加密卷的时候,光输入外层卷的认证因素(口令、KeyFiles)。
  TrueCrypt 会自动帮你加载外层卷。这时候 TrueCrypt 不会对内层卷进行暗中保护。
  请注意:如果你不给出隐藏卷的口令,连 TrueCrypt 自己也无法判断是否存在隐藏卷。

  说明
  再罗嗦一下,处于这种模式下,TrueCrypt 不会对隐藏卷进行写保护。所以这种操作模式是有风险的——当你在操作外层卷的时候,可能会无意中破坏隐藏卷存储的数据。
平常使用的时候,千万不要用这种模式。只有当你遭到胁迫的时候,才使用这种模式
  套用一下安全的专业术语。当你使用这种模式,其实是通过牺牲”可用性”来换取”保密性”。对于大多数 TrueCrypt 用户而言,”保密性”显然比”可用性”重要得多

★使用隐藏卷的注意事项

  本章节大伙儿要看仔细喽。即使是某些懂安全的网友,可能也会忽略下面提到的某些细节。

◇受胁迫的时候,千万别搞错模式

  当你受到胁迫的时候,务必使用第三种模式——只输入外层卷的认证因素。如果这时候你因为慌乱,搞错了,输入了内层卷的认证因素(口令、KeyFiles),内层隐藏卷的数据自然就暴露了。
  再强调一遍:受到胁迫的时候,绝对不能使用第一种模式和第二种模式,必须使用第三种模式。一旦搞错,前功尽弃。

◇关于空闲空间的比例问题

  前面介绍了,隐藏卷是位于外层卷的空闲空间中。比方说,你的外层卷总共 10GB,已经用掉 8GB,空闲空间只有 2GB。那么,你在这个外层卷里面创建隐藏卷,隐藏卷尺寸的上限就是 2GB(很多时候,上限远达不到 2GB,具体看外层卷的文件系统类型)。
  如果你的外层加密卷很大,但是只使用了一丁点空间(比如 100GB 加密卷只用了 1GB),那么攻击者就会起疑心——怀疑这个加密卷包含有隐藏卷。所以,你需要适当平衡一下,在外层加密卷中放置足够多的”幌子文件”,占到一定比例的空间,才不至于引起怀疑。

◇关于”幌子文件”的重要性问题

  前面俺提到,放置在外层卷的”幌子”,必须是相对不太重要。所谓的”相对不太重要“,就是说有一定的重要性,但是重要性远远不如隐藏卷中的数据。
  为啥俺特地强调这点捏?如果你放在外层卷的”幌子”是一些完全不重要的文件,就显得太假了。一旦你遭到胁迫,交出外层卷的密码,攻击者打开外层卷之后,发现里面都是一些鸡毛蒜皮的文件,自然会起疑心——为啥你把鸡毛蒜皮的文件用 TrueCrypt 加密?
  所以,放在外层加密卷的文件,必须有适当的重要性;但重要性要远远低于放在隐藏卷里面的重要性。

◇关于备份的注意事项

  大部分人放在加密盘里面的数据,都是重要数据。重要数据,自然有备份的需要(以免硬盘坏,电脑被盗、等等)。
  如果你要备份含有隐藏卷的加密盘,要记得如下两条安全措施:
在每次备份之前,先随意地修改外层卷的文件
或者
每次备份之前,都先 重建 一个新的加密盘,然后分别COPY外层卷和内层卷的文件到新的加密盘对应的内外卷

  这两条措施,二选一。前者操作简单,但安全性不够强;后者操作麻烦,但安全性更好。
  为啥要有这两条防范措施捏?主要是为了对付”差分攻击”。”差分攻击”是一个信息安全的术语,”差分”指的是”差异分析”。为了让大伙儿明白,说一个针对加密盘进行差分攻击的场景。(这个例子有点复杂,不太懂技术的同学可能要多看几遍,才能看明白)

假设你使用了基于文件的虚拟加密盘,并且在其中设置了隐藏卷。
按照惯例,你在外层卷中放置了一些无关痛痒的文件,把机密信息放到隐藏卷。
平时,你经常需要打开隐藏卷,修改里面的内容。
由于外层卷的文件只是掩人耳目的幌子,所以你一直没有修改过外层卷的文件内容。
为了防止硬盘故障,你定期把这个虚拟加密盘备份到家中的U盘上。

有一天,朝廷的六扇门找到你,并且发现你在使用 TrueCrypt 加密盘。于是六扇门的人逼迫你交出加密盘的口令。
于是捏,你就假装交出外层卷的口令(反正外层卷存放的东西不重要,无所谓)。

如果故事到此为止,貌似天衣无缝。

但是,因为你曾经备份过U盘,六扇门搜查你家,发现了你备份加密盘的 U盘。
这时候,六扇门里面搞”信息取证”的技术人员就可以把两个加密盘(一个是U盘里面的,一个是你电脑上的)拿来做比对(也就是”差异分析”)
前面俺介绍过,隐藏卷实际上是存放在外层卷的空闲磁盘空间
由于你始终没有修改过外层卷,这时候就露出破绽了。
啥破绽捏?
你之前交出了外层卷口令,取证人员可以打开外层卷,读取外层卷那些”幌子文件”。然后,取证人员会发现:这两个加密盘,加密密钥是一样的,里面存放的文件也是一模一样的(因为外层卷你一直没改动过)。但是空闲区域的内容却有很大的不同。(这显然是很不正常的——这就是破绽)。
有经验的取证人员,单凭这点就可以推断——这个加密盘的空闲区域有猫腻!
这时候,虽然取证人员还无法知道隐藏卷的内容(因为他们还没有口令/KeyFiles),但是,他们已经可以断定:你使用了隐藏卷。
换句话说,你的隐藏卷已经被察觉了。接下来,六扇门的人就会开始胁迫你交出隐藏卷的口令/KeyFiles。

  这个例子稍微有点复杂, 不知你看懂了没有?没看懂也没关系。反正你要记得前面提到的那两条防范措施。

◇受胁迫时的演技

  俗话说得好:使用隐藏卷,演技很关键。所以最后再说说”演技”的问题——当你受到胁迫,要求你交出加密盘的密码或KeyFiles,请注意你的演技。
  坦白说,这方面俺没有太多经验啦——毕竟俺没当过演员 :) 所以暂列两条,算是抛砖引玉。
1. 不能太轻易就交出——这样显得太假
2. 一定要装出一副很不情愿、很无奈的神情

  如果你演技不好,又想对付”胁迫”,咋办捏?还有一个绝招,就是前面博文介绍过的”KeyFiles 认证”。
  这个绝招可以让世界上所有的酷刑逼供失效。但是有两个前提:
1、你必须使用随机生成的 KeyFiles,并且用这些 KeyFiles 做加密盘的认证因素(如何随机生成 KeyFiles,俺之前介绍过
2、你在被胁迫之前,必须彻底销毁 KeyFiles(包括 KeyFiles 的备份)
  因为随机生成的 KeyFiles,其内容连你自己也不知道。一旦彻底销毁,连你自己都无法打开加密盘。酷刑逼供自然也就失效啦。

回到本系列目录

俺博客上,和本文相关的帖子(需翻墙)
TrueCrypt——文件加密的法宝
文件加密的扫盲介绍
扫盲文件完整性校验——关于散列值和数字签名

本文由自动聚合程序取自网络,内容和观点不代表数字时代立场

墙外新闻实时更新 欢迎订阅数字时代