许多互联网用户都知道,他们在上网做很重要的事情时,应该注意寻找浏览器上带有锁头的图标。有些用户也很清楚,那锁头的标志应该表明自己的通讯是“安全的”--保密的,并且在某种意义上是经过验证的。保护隐私权的倡导者们一向对增加使用网络加密表示欢迎;谷歌公司推出的以HTTPS自动加密的Gmail、谷歌文件和可选择的谷歌搜索就是在保护用户隐私发展过程中的一个最好的正面例子,这一加密功能可使用户在使用这些服务时不会暴露个人隐私。1当用户在网站名前输入“https: //”(或自动发送到一个安全的网站)时,可以看到他们的浏览器上会显示出一颗安心锁,这表明加密功能已启动。那么这颗锁从何而来呢?它所能保证的意义何在呢?
惠特菲尔德•迪菲和马丁•赫尔曼在1978年发明的公钥加密法奠定了通信保密的基石 ,它删除了至关重要的前代码,但需要经过繁琐的程序得到规定的预先共享密钥。在公共密钥加密发明以前,人们若要保持秘密通信,首先要预先设置一个密钥--而且每一个参与者的密钥必须是与众不同的。因此,如果这个秘密通信有1000人参与,那么就需要事先设置好大约50万个不同的密钥。除了军事组织以外,几乎没有人为了秘密通信而去那么大动干戈。
公钥加密法是一个惊人的突破:每个用户可以建立一个密钥,2其他人无须事先安排就可以用来给密钥所有者发送秘密讯息。之所以公钥加密法可行,是因为它巧妙地利用了陷门函数的转化功能,即可以直接正算,但逆转运算却异常困难。3大概可以说,它就像一个任何人都可以把信息投进去、但只有主人能开锁将其取出的信箱。
PGP电子邮件加密软件的发明人菲尔•齐默尔曼曾把这一成果描述为可以安全地与从来不认识的人沟通的能力;被用於浏览网页,这就意味着能够安全地去你从未去过的网站浏览并互动的能力。在技术上,这是一个惊人的突破。如同其它加密的方法,它可以防止计算机网络操作员窃听或篡改那些通过网络发送的邮件内容(有时本来是微不足道的),虽然网络操作员仍然可以完全阻止邮件的发送,可以通过设置防火墙的规则或简单地切断电缆。
然而,有一个重要的微妙之处甚至往往被电脑专家所忽视。虽然属於电子邮件用户或网站的密钥可能是公开的,那些想要与他们沟通的人还是需要一个可靠的方式来寻找这些密钥。也就是说,安全通信要求电脑用户或其电脑,拥有一个可靠的方式来获得各方或网站进行通信时所需要的正确的密钥。如果没有这个信息,用户对中间人的攻击就处於天然弱势的地位,在这种情况下,一个攻击者假装成另一端的用户。4
在第134页的图中显示了中间人攻击是如何完成的。(为了简化过程,用英文表示计算机的数据交换,并省略几个真正浏览连接的步骤。)真钥,或密钥指纹,要求比这里所举的例子更长,原因之一是使它们无法被人记住。谷歌的真正公钥指纹到写此文时是c4:70:74:fb:69:f9:e3:94:7e:8b:28:a4:00:73:de:01,在此例中只把它缩写为c4:70。
作为一种有效的防御方法,用户不能凭藉从网站的外观、内容或行为上获得的直觉;一个成功的攻击,用户是与真正的网站进行间接沟通的,因此其内容和行为通常完全是真实的。由於该中间人可以把所有通信来回转发,这个网站对於互联网用户来说,表面上是真正的,反之亦然。例如,在这种情况下,互联网用户能够正常地阅读她Gmail帐户中真的电子邮件(假设这个中间人选择不修改任何东西而暴露自己),所以不会出现什么不同寻常的事情。从使用者的角度看,这两种情况之间唯一的区别是加密的数字密钥显然是由服务器提交的。如果用户处於免受攻击的保护之下,那么确保一个有意义的方法来验证密钥正确与否就成为关键(不论密钥是否在屏幕上出现)。
—保护用户免受中间人攻击的关键由於公布这方面的资料不会伤害到通讯的保密,那么分配正确的密钥往往被视为一个小举动。电脑安全学教授锡姆森•加芬克尔回忆说,惠特菲尔德•迪菲和马丁•赫尔曼原来想像将这些密钥象电话簿一样公布。毕竟,汇编电话簿似乎较直接。这不就是简单的文书工作吗?
事实上,对这个“电话簿”的控制传达出一个令人惊讶的权力排序。如果我们假设这是一本具有唯一权威的电话簿,阻止其出版就会剥夺有兴趣的用户和网站的隐蔽沟通的能力。在目录中删除某一特定网站,或是故意造成的印刷错误,将有选择性地剥夺该网站用户安全沟通的能力。电话簿的出版商也必须处理用户总是乱放或改变他们的密钥的问题,而且更棘手的是应该如何认证那些希望被列在簿上的各方,更何况有些人可能想贿赂或弄虚作假。这个“文书”的工作扩大到包括巨大的权力和责任:基本上可以破坏或损坏每个人的私人通信的权力。
这类 “电话簿”实际上并不存在。它的作用,即所谓的公钥基础设施(因为它是基础设施,通过它, 用户或软件程序如浏览器,可以了解哪些公钥何时可以使用)通常有一两个模式:分布式信任网或集中认证机构。信任网模式基本上通过现有的社会网络及关系,宣布有口碑的密钥。这是与PGP的电子邮件加密软件最相关的,虽然它在原则上可以在任何地方使用公钥加密的地方使用。这也是最为人所知的,鼓励用户个人做出密钥是否是真实的明确决定,让用户(也许是痛苦的)了解到决定密钥是否真实的复杂性。
认证机构模式是指将决定权委派给少数几个称为认证机构的实体,其职责应该是核实身份,并负责签发数字证书,说明他们认可某一个特定的公钥确实属於该实体。在上文提及的中间人情况,我们期望谷歌可以显示c4:70所属者的证书,而攻击者将无法出示任何可信的证书,以表明e4:d5属於谷歌。在理想的情况下,浏览器便会提醒用户有关的问题,并希望用户接受警告,而不是试图禁用它!
认证机构通常以提供这项服务得到报酬,一般是收取有效期1年的证书费。证书认证可以是一个非常有利可图的生意,部分原因是这个证书仅仅是数字数据,而且发行起来相当便宜。最成功的证书认证公司拥有数千万美元的收入。首次进入太空的非洲人,南非太空游客马克•沙特尔沃思,就是通过他的证书认证公司Thawte赚到很多钱(他剩下足够的钱,未依赖任何人,开发了Ubuntu:最流行的Linux桌面操作系统。)
一个认证机构可以是一个为此目的被其他人承认的权威和可以代表他们做出这些重要决定的任何类型的组织。参加所谓的“全球公钥基础设施”的认证机构之多令人讶异;全世界有数十家,其中包括私人公司、国家和地区政府,并有其它一些组织。最常用的认证机构,一般是西方国家的私人公司,因为他们进入这一领域较早,并因其服务而取得了广泛的知名度。但是,这并不意味着这些认证机构的认证就比或被认为比其它认证机构更值得信赖。
人们可能想像,一个来自这样一个认证机构的证书,只是众多可提供此类信息中的一个,这些信息,例如由一个网站所发出,可以帮助用户决定一个公钥是否正确且真实。但自网景公司1994年推出这一基础设施以来,浏览器开发者优先考虑的是保证用户在网上购物时可以安全使用其信用卡,并向用户隐藏复杂的密码学。因此,只要是来自於一个浏览器开发者批准的认证机构, 浏览器开发者就选择绝对、毫无疑问地接受数码证书。这一审批本来是非正式的,并且主要的依据是习惯和偶然。今天的浏览器开发者采取了更正式的审批程序,但火狐/火狐浏览器已确定了40个不同的认证机构,IE浏览器约100个(不过很可惜的是微软现在让用户很难看到可信赖认证机构的清单)。现代浏览器接受任何一家认证机构签发的数字证书,视这些认证机构为完整和首要的证据,即证书中表述的公钥事实上属於其所提及的网站。
这一模式从开始就一直面临着相当大的质疑,特别是专家们,担心认证机构的利益与终端用户不相符(因为认证机构一般通过签发证书获得报酬,而且如果证书中的信息是错误的,认证机构也不会直接受到惩罚)。马特布拉玩世不恭地说,认证机构“保护你的钱不被那些不愿意偷你钱的人偷走。”与此同时,也出现了相当大的有关认证机构可能受骗、被国家说服而出具虚假证书的关注;谷歌已警告说,“来自一个强有力的实体,可以为预先设置的认证机构所准备好的标准证书签名……,在未警告用户的情况下,将允许截获任何加密的通信。” 更严重的是,因为浏览器完全信任所有的认证机构,并且完全平等,所以增加一个新的认证机构的名单只能增加用户的风险:链条的强度与其最薄弱环节相等。
赞成认证机构这一方法的主要论点,是它为用户提供了方便和透明度:如果认证机构正确地做好本职工作,核实资料,然后才发出证书,不发放不正确的证书,那么用户就可以安全顺畅地访问新的网站,并对这些加密保护网站的沟通有信心。挂锁图标表示了该网页浏览器保证所访问的网站使用的是HTTPS加密,它由值得信赖的认证机构发出有效的证书。
最近,涉及全球公钥基础设施的一系列丑闻,重新掀起了对这种模式及认证机构的可信度的怀疑,浏览器开发者如何选择其可信任的认证机构,以及是否认证机构具有太多不需负责的权力。这里是一系列最近发生的、具有一定代表性的、不完整的、但推动审议认证机构作用的事件 :
继续使用脆弱的、过时的算法。一个 研究小组发现,一个重要的认证机构继续 使用一种叫做MD5的过时算法为证书签 名;利用该算法的数学缺陷,研究人员证 明了,他们能够有效地欺骗认证机构为虚 假的证书签名,研究人员因而骗得所有认 证机构的权力。
验证步骤完全被遗漏。一个主要认证 机构有一个商业合作夥伴,显然并未明白 其职责应该是核实证书上所有的内容;结 果,它所签发的证书是以该主要认证机构 的名义收费的,但是却未检查证书获得者 是否真正拥有其申报的网站。这使浏览器 十分容易接受假证书。
中华人民共和国实体作为认证机构。 中国互联网络信息中心,是一家政府控制 的管理中国域名登记系统的实体(在其网 站上,该中心表示,其日常工作受命於工 信部; 请参阅http://www.cnnic.net.cn),按照主要浏览器的程序,该中心要求成为可信任的认证机构。2008年,微软 在不为公众所注意情况下批准了这一要 求;2010年,在国内外对於中国互联网络信 息中心可能会被政府诱导而签发虚假证书 的关注下,Mozilla也同样地批准了中国互联 网络信息中心的要求。(值得注意的是, 所有主要浏览器对其它政府和政府下属实 体经营的许多认证机构给予信任认证--以 Internet Explorer为例,就有20多个政府机构 得到认证!浏览器开发者的理由是,因为 中国互联网络信息中心遵循了所有必需的 程序,所以应将其视为可信任的认证机 构。)
监控行业建议认证机构应遵守政府的 要求。两名美国研究人员发表了一份研究 报告,描述了一个将其产品独家出售给各 国政府的网络监控设备制造商Packet Forensics 公司的市场行销简报。Packet Forensics 公 司声称,调查人员在获得“法院授权的可 能”时,其网络监控设备可以在检测不到 的情况下,使用密钥或证书,对加密通信 予以监控。这项建议引起高度关注,因为 世界各地的认证机构都可以应政府的要 求,故意签发虚假的证书。
我们认为,这些丑闻表明,帮助用户进行 安全通信风险很大,不像编纂电话簿那样简 单。这些丑闻还表明,现在是重新考虑认证机 构这一方法的时候了。目前的认证机构太多, 权力太大,责任太少。每当新加一个认证机 构,所有用户自然相信认证机构,从而更容易 成为受害者;每个用户连接到每一个网站时, 安全系数只及该用户浏览器所信任的认证机构 的“最薄弱的环节”。即使我们假设现有的设 计是合理的,仍然没有理由认为所有的互联网 用户愿意信任相同的认证机构。加芬克尔教授 表示,目前的认证制度设计受到军事模式的启 发,当中只有一个单一的中央认证机构,并且 每个人清楚地了解自己的责任和明确的指挥系 统。今天的互联网与此截然不同。
我们认为,电脑安全社区正认识到对认证机构这一模式的关切有着实质意义,认识到必须抓紧时间改善这个模式--即在认证机构犯了错误或被威逼利诱时,用户仍可以检测到攻击。为了帮助研究人员和网站主人了解证书的使用範围,以及如何在事后检测到一些攻击,我们正在创建一个安全套接层(或SSL)观察服务站。观察站正在调查所有HTTPS的网站,并建立一个证书数据库。将来,该观察站也可以接受参与证书的终端用户和网上遇到的互联网服务提供商的报告。例如,网站运营者,可参考该观察站的资料,了解参与用户是否在某网站遇到发出的假证书(如果是假的,还可以查出是哪家认证机构签发的)。
观察站可以在事后发现一些攻击和有问题的认证机构的行为,但它并不能直接帮助这些受攻击的用户。如何最好地帮助用户实时决定一个网站密钥的真实性,成为一个非常棘手的问题。例如,用户可从谘询自己的浏览历史,或由广为散发的“公证服务器”(使用卡耐基•梅隆大学开发的计划),检测密钥在跨越时间和空间时是否一致;它们可以检查已经由一个认证机构验证的特定网站是否会突然出现不同的认证机构;或是网站试图通过更多渠道发布正确的密钥,如新的域名系统安全协议的目录服务。不幸的是,所有这些信息的来源都有局限性,例如,一个密钥可能会合法地突然改变,或者当商业数据中心在不同国家,而且为不同国家的用户提供服务时,可能故意使用不同的密钥。如果这些用户之间比较自己的经验,他们将不能确定所产生的差异是否是服务提供商故意造成的(因此不是一个问题),或是受到中间人攻击的结果(因而应设置一个通信安全的屏障)。
另一个想法是,每个合法的服务器应以某种方式告知用户的浏览器对其它合法服务器“所应期待的是什么”:例如,一个网站在洛杉矶、巴黎和北京的合法服务器有可能故意使用不同的密钥,但它们之间都知道彼此的存在,并建议浏览器根据网站访问的地方作出预测。这种机制尚不存在,如果建立这样一个机制,那么就意味着对网站经营者的要求相当高,但在原则上可以为浏览器提供预期意外变动的方式。
我们计划继续研究如何将各种来源的信息最有效地结合起来,以帮助互联网用户。在理想情况下,将开发出另一种简单、比目前的公钥基础设施更准确的方案。不幸的是,这一结果无法得到保证。认证机构还有很多理由可能发出假证书,这就意味着对密钥有效期的不确定性已经大大超出已知的程度。关注中间人攻击的用户 ,最终在某种程度上可能不得不面对这种复杂性和不确定性;微软也承认:“用户是否应该信任一个为了任何特定目的的根证书,可以说是一个难题。用户应预计到,确保接受根证书不会对用户安全造成过度风险,用户做出的信任决定很复杂。”从本质上来说,目前浏览器开发者所提供的是,试图代表他们的用户粗略地做这些决定,其首要目的是方便,尽管不同的用户可能面临各种完全不同的攻击和风险。
最后,认证机构的失误,以及假证书的发放,并不是对隐私和上网安全的最大威胁。更大的威胁来自针对终端用户的计算机的恶意软件,这种恶意软件的普遍性令人震惊。埃里克•罗斯卡拉指出,计算机安全社区往往更愿意解决那些已有解决方案的问题--例如,密码协议设计给了我们有关安全保障的一个抽象、正式的推理。但有用的密码协议取决於安全端点:最理想的是,用户的计算机没有安全漏洞、病毒、间谍软件或击键记录器。安全套接层(或SSL)的目的是在有潜在危险的网络计算机之间运行时,保障通信的安全;如果用户的计算机装有间谍软件,或使用已经安装击键记录器的网吧计算机,它可以完全诡秘地绕过加密的计算机。这些风险是如此明显,以至於基因•斯帕福德把使用加密称作,“犹如用装甲车把信用卡资料从在纸板盒里生活的人那里运送到在公园长凳上生活的人那里。”
举例来说,最近才发现,恶意软件是与流行的VPSKeys越南文字输入软件捆绑在一起的。这个软件被认为能够记录在其被安装的计算机上键入的一切资料。因此,即使那些越南互联网用户谨慎地使用复杂的加密软件,最终也未能受到该软件的保护。由此可见,想要获得网上隐私和安全通讯,用户首先要保证其计算机的可信性。我们所关注的公钥基础设施,只对那些使用其信任的计算机的互联网用户才有意义。
注释
1. 尽管我们很关注这些机制所固有的限制,不过,我们还是敦促终端用户在可能的情况下,继续利用它们的优势。在受到计划周密的攻击的具体情况下,使用加密为用户提供了高度隐蔽性。我们推荐那些支持和鼓励使用加密的网站。我们最近开发了火狐(Firfox)扩展,名为HTTPS Everywhere,它能使用户的网络浏览器在已知支持它的网站上自动使用HTTPS。本文的目的是强调那些对网络加密安全产生的威胁,可能是许多用户所不熟悉的,但并非指使用网络加密是无关紧要的或是无用的。 ^
2. 在现代密码学中,关键是数字值,它可以指示计算机如何改变或核实数据,以便打乱编码、解读编码或检查其完整性。密钥有许多种,并有多种方法表现它们,但它们基本上都是以随机方式产生的。因此,对人来说它们并不十分有意义或值得记住,但当我们要谈论某种密钥时,若记不住它们恐怕将是很不幸的事情。 ^
3. 乘法和因式分解是最普遍的例子:很容易计算66491×36384377是2419233611107,但确定哪两个数字相乘应该得出15940563869却是个挑战。迪菲、赫尔曼和其他数学家从这个和其他非对称法发现了得到实用安全好处的方法。 ^
4. 目前,就抵御中间人攻击的重要性仍有相当大的争议。加密系统的设计、建造和使用都很简单。这意味着它们可能会被更广泛地安装和采纳,这可能会帮助通信的整体安全,因为可以防止用户被窃听。加密的短信,试图达到一种折中的办法:它可以让用户自己选择是否确认密钥。如果他们没有执行验证,它们会自动受到保护,以防止普通的窃听,如果他们验证了,他们也会受到保护,以防止中间人攻击。但是用户开始使用新电脑时,必须重新验证。^
5. 有些读者可能会问,为什么中间人不简单地说他的密钥是:c4:70:74:fb:69:f9:e3:94:7e:8b:28:a4:00:73:de:01。答案是,加密的会话的协商取决於密钥的实际数值。因此,这一算法的过程防止了攻击者会令人信服地声称要使用特定的密钥,而他们实际上并不具备。^