Total Pageviews

Thursday 12 June 2014

分析一下 TrueCrypt 之死

TrueCrypt 官网的“变脸”

  先简单说一下 TC 官网的变脸。
首先是官网的域名 truecrypt.org 自动转向到 truecrypt.sourceforge.net。官网的页面上用醒目的红字警告说:TrueCrypt 已经不安全,TC 项目已经停止开发。然后建议 Windows 用户迁移到微软的 BitLocker。并给出图文并茂的教程,教你如何一步步迁移到 BitLocker 上。
官网给出的理由是:Windows 从 Vista 开始,已经集成了磁盘加密(也就是 BitLocker),而 Windows XP 已经在今年3月份停止支持。所以 TC 团队就不再维护这款产品了。
在变脸的同时,官网上发布了最新的 TC 版本(v7.2)。该版本是被阉割过的,只能用来【打开】加密卷,不能用来【创建】加密卷。官网上说:这个 7.2 版本是提供给大家进行数据迁移的。

★相关背景介绍

  要了解此事的来龙去脉,有必要先作一下 TrueCrypt 的背景介绍。

◇TrueCrypt 是什么?

  TC 是目前影响力最大的(没有之一)的磁盘加密工具,同时支持 Windows、Linux 和 Mac OS X 三大操作系统。
TC 是开源软件。但是跟其它开源软件的不同之处在于:它没有采用那些常见的 License(比如 GPL、BSD、MPL 之类)。它用的是 TC 开发团队自己定的 TrueCrypt License。
这款软件诞生于2004年,距今已10年有余。

◇TrueCrypt 的开发者是谁?

  从 TC 诞生至今,外界一直不晓得它的开发团队是哪些人,甚至连开发团队有几人,都不晓得。
不过像 TC 这种类型的开源项目,团队保持匿名是很正常的。说个小故事:
当年的 PGP 之父(Phil Zimmermann)因为发明了 PGP 这款文件/邮件加密工具,差点被美国政府抓去坐牢。当时的美国法律规定,“高强度加密技术”属于军用技术,不允许出口到海外。据说 Phil Zimmermann 后来想了个妙计——通过 MIT 出版社出了一本书,把 PGP 的全部源代码放到书中,然后援引“美国宪法第一修正案”(出版物受“言论自由”的保护),才推翻了对他的指控。 

◇TrueCrypt 的可靠性如何?

  由于开发团队的神秘性,N年前就有人怀疑,TC 是 NSA(美国国安局)或者 CIA(美国中情局)制作的,并且预留了后门。但是这种说法仅仅是猜测,没有人给出证据来证明“TC 有后门”;同样也没有人给出证据来证明“TC 没有后门”。
去年斯诺登引爆了 NSA 的棱镜门丑闻。斯诺登曝光的 NSA 绝密材料中【没有】提及 TC 的后门。
斯诺登本人就是用 TC 来进行磁盘加密。他还曾经在一次“加密派对”(Crypto Party)上作了 TC 的主题演讲(参见《连线》杂志的这篇报道)。
棱镜门丑闻曝光之后,某些安全社区的大牛开始担心 TC 的可靠性。于是在去年, Kenneth White 和 Matthew Green 发起了一个项目——专门针对 TC 的代码审计(所谓的“代码审计”就是找来一批资深的开发人员,仔细审查 TC 的全部源代码)。该项目的官网在“这里”。2个月前(2014-04-14),该项目完成了第一阶段的审计,【没有发现】明显的后门,只发现了几个小的瑕疵——比如密码迭代的轮数不是足够大(但也不是太小)。目前,该审计项目开始进行第二阶段的代码审查,大概需要几个月时间。
从上述这几点可以看出——TC 至少【没有明显的】后门。

★可能的几种解释

  下面俺大致列举一下关于此事的几种解释(大都是网上流传的,少数是俺自己设想的)。这几种解释中,有的提及 NSA。俺注明一下,此处的 NSA 是“泛指”。既可能是 NSA,也可能是 CIA 之类的美国政府机构,甚至可能是其它国家政府。

◇解释1(官方说法)

  这个解释也就是TC 官网给出的解释——Windows XP 已经停止支持,而 Vista 之后的 Windows 都内置了磁盘加密工具,所以 TC 团队就停止开发了。

◇解释2(团队懈怠)

  这个解释说的是——TC 的团队已经懈怠了。关于该介绍的出处,可以参考“这里”。
此解释依据是——最近几年,TC 的版本发布周期变得很长(很久没有加入新功能)。另外,TC 的 Boot扇区代码(用于全盘加密)从 5.0 版本之后就没有变过(可能是没有人维护该代码了)。

◇解释3(蜜罐)

  这个解释说的是——TC 就是 NSA 的蜜罐。
此解释的理由是:去年开始,安全社区发起针对 TC 的代码审计(刚才说过)。NSA 觉得这个蜜罐迟早会被曝光,于是决定终止 TC 的开发。

◇解释4(恶作剧)

  这个解释说的是——整个事件只是 TC 开发团队的恶作剧。
这个说法没有任何理由和依据,纯属 YY。

◇解释5(黑客入侵网站)

  这个解释说的是——TC 的官网被黑客入侵,然后入侵的黑客导演了这出戏。
这个说法的依据是:今年4月份,OpenSSL 发生了非常严重的 Heartbleed 漏洞。该漏洞会导致网站服务器的内存被攻击者窃取。严重的话,攻击者可以拿到服务器上的重要信息(甚至包括 SSL 私钥)。
所以,有人猜测:某黑客利用了 Heartbleed 入侵了 TC 的官网,然后制造了此次“变脸事件”。

◇解释6(NSA 入侵网站)

  这个解释类似前一个,说的是 TC 官网被 NSA 入侵。
这个说法的依据如下:
依据之一:
如果普通黑客可以利用 Heartbleed 入侵 TC 官网,那么 NSA 这么牛逼的机构,当然也可以入侵它。
依据之二:
TC 长期以来一直是 NSA 的眼中钉,NSA 自然有充足的动机和热情去干这事儿。

◇解释7(NSA 胁迫)

  关于这个解释,先讲一个故事:
  斯诺登当年用的两个工具:磁盘加密用的是 TrueCrypt,电子邮件用的是 Lavabit。Lavabit 是专门针对安全性要求较高的网民,所有往来的电子邮件内容都经过加密。斯诺登逃亡之后,美国联邦特工找到 Lavabit 的创始人 Ladar Levison,要求他交出 SSL 私钥。Ladar Levison 提起法律诉讼,被驳回。诉讼被驳回之后,他如果再不交出密钥,会被逮捕。
于是他先用最小号的字体,把密钥打印在小纸条上,交给联邦特工(这么干是为了拖延时间);然后他把整个网站关闭(同时也断了自己的财路)。据传闻:他还把服务器的硬盘进行了物理粉碎,以防止联邦特工利用密钥解密用户的邮件内容。
从这个故事可以看出:Ladar Levison 跟斯诺登一样,是坚定的自由斗士,向他致敬。
再顺便感叹一下:咱们天朝的商业公司——朝廷的走狗还没找上门,自己就主动凑上去舔菊了。同样是商业公司,差距咋就这么大捏? 
  如果结合 Lavabit 的故事,那么很容易就可以联想到——TrueCrypt 团队或许也是被胁迫,所以终止项目。
按照这个解释,整件事的发展过程可能是这样的:
一:NSA 利用4月份的 Heartbleed 漏洞入侵 TC 官网,然后通过官网服务器上的某些信息,定位到了 TC 开发团队的身份,并且发现团队成员是美国人;
二:NSA 直接找上门,向他们施加压力,要求团队在 TC 中植入后门;
三:TC 团队没法跟 NSA 抗衡,但是又不想植入后门,于是宣布项目终止。

◇解释8(TC 团队内鬼)

  这个解释说的是——TC 团队中出现内鬼,这个内鬼劫持了官网控制权,然后发布“项目终止”的声明。

◇解释9(微软幕后交易)

  这个解释说的是——TC 团队与微软达成幕后交易。微软给团队一笔钱,团队把 TC 项目终止,然后推荐用户迁移到微软的 BitLocker 加密工具。

★俺对“上述解释”的分析

  上述这几种解释,每一种都有“破绽”——要么无法自圆其说,要么太牵强。下面俺点评一下每种解释。

◇解释1(官方说法)——俺的分析

  官方说法的破绽很多。
破绽之一:
前面背景介绍中说了——TC 本身是跨平台的工具。而官网上的解释只是针对 Windows 操作系统。就算官网的解释能成立,那 TC 团队还可以继续维护 Linux 平台或 Mac OS 平台的 TC,没必要把整个项目终止。
破绽之二:
就算是微软已经在 Vista 之后的 Windows 中整合了 BitLocker,TC 作为最有影响力的磁盘加密工具,也未必会输给 BitLocker。BitLocker 的缺点很多——既不开源,又无法跨平台。
破绽之三:
除了 TC,还有其它开源的,面向 Windows 的磁盘加密工具(比如 DiskCryptor)。这些磁盘加密工具的名气不如 TC,用户数不如 TC,他们都还在继续开发。和他们一对比,TC 团队的理由就更加显得牵强。

◇解释2(团队懈怠)——俺的分析

  这个解释稍微靠谱一些(至少比“解释1”靠谱)。
此说法的破绽在于——如果 TC 团队的成员真的懈怠了,他们可以把整个项目移交给开源界的其它安全社区,让其它安全社区继续维护/发展该项目。这样至少是更负责任的做法——照顾了现有 TC 用户的利益。
前面说了:TC 是全球最有影响力的磁盘加密工具,其历史已经超过10年。也就是说,TC 的开发团队不是一般的毛头小子,而是很资深的开发人员。作为资深的开发人员,没理由搞出这么鲁莽的举措。

◇解释3(蜜罐)——俺的分析

  这个说法也非常不靠谱。不靠谱的理由如下:
理由之一:
如果 TC 早已是 NSA 的蜜罐。在这种情况下,NSA 的首要任务就是让 TC 继续被更多人使用——这样政府才能够继续偷窥更多人的隐私。而 TC 官网的这次变脸,直接引发了全球安全界的种种猜疑,也导致了 TC 用户的锐减。如果 TC 真的是蜜罐,如今的局面对蜜罐的幕后操纵者是非常不利滴。
理由之二:
斯诺登曝光了 NSA 的大量机密,甚至包括 NSA 在全球顶尖的安全公司 RSA 的产品中植入后门(关于“随机数生成器”)。从最近一年美国媒体的报道来看,斯诺登爆料还是很彻底的。但是斯诺登的爆料中,压根儿没提及 TrueCrypt。而且前面俺也说了,斯诺登自己用的就是 TC 来进行加密。
所以,在 TC 官网变脸之前,TC 不太可能是政府的蜜罐。

◇解释4(恶作剧)——俺的分析

  此次 TC 官网变脸,引发了用户的猜忌,很多用户开始改用其它加密工具。
前面说了:TC 团队维护这个项目已经超过10年。把一个项目从默默无闻发展到全球知名,是很不容易滴。TC 团队的成员不可能如此愚蠢地砸自己招牌。

◇解释5(黑客入侵网站)——俺的分析

  这个解释比前面几个稍微靠谱一些,但是依然有个破绽。
由于今年4月份,OpenSSL 发生了非常严重的 Heartbleed 漏洞。从理论上讲,某个攻击者可以利用该漏洞来侵入 TC 的官网,并获得官网的控制权。一旦获得控制权,自然可以让官网变脸。
但是,和此次官网变脸相配合的是,官网上提供了最新的 7.2 版本(前面提到的“阉割版”)。稍微了解 TC 的同学应该知道,TC 的 EXE 安装包和安装出来的“EXE 文件、SYS文件”都是自带数字签名的(啥是“数字签名”,可以参见教程http://program-think.blogspot.com/2013/02/file-integrity-check.html。
官网变脸之后,立马就有热心网友对比了 7.2 版本和之前的 7.0、7.1 版本。经过对比,发现几个版本使用的是同一个私钥进行签名。
那么,入侵的黑客有没有可能拿到签名用的私钥捏?俺觉得不太可能,理由如下:
对安装包进行签名的私钥,跟网站 HTTPS/SSL 的私钥不是一回事。网站的 SSL 私钥通常必须跟 Web Server 部署在同一台服务器。而对文件进行数字签名的私钥,没必要放在 Web 服务器上。俺相信 TC 团队的人,安全素质肯定不差。以他们的安全素质,应该会把签名用的私钥【离线保存】。一旦使用“离线保存”的方案,即使整个网站被别人控制了,入侵者依然 拿不到签名用的私钥。

◇解释6(NSA 入侵网站)——俺的分析

  基于前一个段落所说的理由,也不太可能是被 NSA 入侵。

◇解释7(NSA 胁迫)——俺的分析

  这个解释是所有的解释里面,破绽最少,说服力最强的,可以解释大部分的“诡异之处”。
但这个解释依然有缺陷。主要缺陷就是——如果 TC 团队是受到 NSA 胁迫,所以才选择让项目自杀。那为啥要在官网界面上强力推荐微软的 BitLocker,而且还给出图文并茂的迁移教程。好像没有这个必要嘛。

◇解释8(团队内鬼)——俺的分析

  这个解释类似于“解释3——蜜罐”,也很不靠谱。
如果 TC 团队真的混入了政府的内鬼,那么根据俺对“解释3”的分析。这个内鬼应该悄无声息地在代码中植入后门,这样效果才最好。为啥这个内鬼要劫持整个官网,搞出这么大的动静?这不符合政府安插内鬼的动机和利益。

◇解释9(微软幕后交易)——俺的分析

  这个版本也能解释某些诡异之处。主要的破绽在于:像 TC 这种全球影响力的团队,如果他们真的缺钱,首先应该是在官网上发出募捐的呼吁(前2年维基百科资金短缺,就在官网上挂出募捐的横幅)。另外,像微软这么大 的公司,如果搞这种幕后交易,一旦穿帮,得不偿失。所以俺觉得微软也不太可能为了一点点眼球效应,去冒这种风险。

★大伙儿的应对措施

◇静观其变

  首先,不要慌,不要自乱阵脚。
前面俺分析过,TC 在全球有这么大的用户群,这么大的影响力,这么好的口碑。所以俺猜测:TC 要么确实没有后门,要么是隐藏极深的后门(高级后门)。
如果是前者,大伙儿当然是高枕无忧;如果是后者,问题也不大。因为这种隐藏极深的高级后门,通常都是用来对付“高价值目标”滴。啥是“高价值目标”捏?比如说:政府的高级官员、军事系统的重要人员、顶级恐怖组织的重要人员、顶级犯罪组织的重要人员……
俺博客的读者,99.99% 以上都【不是】“高价值目标”。所以你基本上不用太担心 TC 的问题。
  接下来需要关注的是:
1、针对 TC 的第二阶段代码审查(几个月之后出报告)
2、最近这段时间可能还会曝出其它猛料,大伙儿稍微留意一下。
  退一步讲,假设第二阶段的代码审查发现严重的后门,到时候俺会再发一篇教程,介绍“TrueCrypt 的替代品”。

◇目前该用哪个版本的 TrueCrypt?

  如果你已经是 TC 的用户,在“第二阶段代码审查”结束之前,你还是继续用 TC 吧,不要急着迁移。
俺建议:【不要】用官网提供的那个 7.2 版本。因为此事很诡异,那个 7.2 版本会不会有啥猫腻,不得不防。最好是用前一个稳定发布版本——也就是【7.1a】版本。
由于 TC 的官网已经把老版本的下载链接撤掉了。想下载的同学,可以到 http://truecrypt.ch/downloads/,上面有各种平台的 7.1a 安装包和文档。
为了保险起见,俺附上 7.1a 版本的各种哈希散列校验值(参见“这个页面”)。不懂得验证 HASH 值的同学,请看教程http://program-think.blogspot.com/2013/02/file-integrity-check.html

★TrueCrypt 的重生

  这次官网提供的“7.2版本”是阉割版。换句话说,TC 的官网已经自绝后路了。俺个人感觉:TC 不太可能再“复活”了。但是依然有可能“重生/涅磐”。
因为 TC 的源代码是公开的。官网变脸之后,已经陆续出现了几个克隆(代码 fork)。假以时日,或许其中的某个克隆会再次成为主流。
提醒一下:如果你对安全性的要求比较高,短期内(至少1年之内)不要急着去用这些克隆的 TrueCrypt(这些克隆需要一定的时间才能成熟、稳定)。

★相关的引用参考

  顺便附上各大网站对此事的点评和讨论(都是洋文):
Hacker News 上的讨论
Reddit 上的讨论(“这里”、“这里”)
Twitter 上的讨论
StackExchange 上的评论
Slashdot 上的留言
安全大牛 Bruce Schneier 的表态
-----------------------------------------------
相关帖子:

VeraCrypt 1.0d ,替代TrueCrypt的高度安全的加密软件 (http://briteming.blogspot.co.uk/2013/08/veracrypt.html)