36

观点 | Nick Szabo:受信任第三方与安全漏洞

 4 years ago
source link: https://www.tuicool.com/articles/2aQBrym
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

引言

保障商业安全需要应对商业关系中存在的实际问题,如:隐私、诚信、所有权保护和违约监控等。所谓安全漏洞,就是会加大商业安全风险的弱点。在现实生活当中,安全问题不会因为设计者作了一些假设而凭空消失。因此,在设计安全协议时,引入第三方控制的 “受信任第三方”(TTP) 或者 “受信任的计算基础”(TCB) 本身即构成了该设计中的安全漏洞。如此的安全漏洞必须通过其它办法来消除。

在设计协议时,如果没有考量到 TTP (受信任第三方)制度上的替代方案存在的风险和成本,那得出的协议很有可能在成本和风险上不切实际。如果协议要克服这些问题并已证明自身有用,那也只有付出额外的努力解决了 TTP 安全漏洞之后才能成功。在安全协议中,TTP 的假设是大多数的成本和风险的根源,相应地,修复 TTP 的安全漏洞会产出很大效益。

因此,针对安全协议中带来最高风险和成本的部分——受信第三方,我们在此提出安全协议的设计方法论:平行设计受信第三方与需要这些第三方的协议。这使得成本和风险最小化的目标将集中在受信第三方上,而不是安全协议上。此外,我们还将简要讨论和引用一些安全机制的研究和实现,这些安全机制通过在多方之间自动分发 TTP 资格从而大幅降低了受信任第三方带来的成本和风险,如此,仅需一部分参与方可靠,协议便是可靠、值得信赖的。

受信任第三方:高风险,高成本

本文作者有实现一种 TTP 的经验:公钥密码学的早期支持者假设需要这样一个 TTP,现被称为 “证书颁发机构”(CA),它的责任是担保参与各方的身份真实性(这里我将集中讨论该受信任第三方所带来的成本,而像 PGP's Web of Trust 和 SPKI 这些替代方案将另外做专门讨论)。

到目前为止,CA 已被公认为中心化的公钥基础设施(PKI)中最昂贵的组件。当协议者对 TTP 必要性的认定,在诸如 SSL(“传输层安全性协议”)和 S/MMIE(“多用途邮件协议”)等 PKI 标准中被转化为一种对 TTP 的需要时,事情就变得更糟糕了。因为一个协议所有的用户都必须信任一个 TTP,该 TTP 实质上就变成了 “谁能使用这个协议” 的仲裁者。举个例子,如果你想运行安全的 SSL 网络服务器或者是参与 S/MIME,在这之前,你需要获得由各方都信任的证书颁发机构所颁发的证书。最早期且最流行的证书颁发机构当属 Verisign。它能够向终端用户收取高达几百美元的费用,这远高于就安全协议代码本身收取的几美金费用(隐含在终端用户的软件中)。配置 SSL 选项所需花费的时间,远远比不上申请和更新证书的官僚程序浪费掉的时间。此外,相比于 SSL 协议本身,CA 的识别过程会暴露在更多的安全风险下。(甚至在它通过收购网络解决方案进入另一个 TPP 业务——互联网域名系统 DNS ——之前)Verisign 的市值便高达数十亿美元。这是怎么回事?就因为公钥协议设计者为 e-mail 和 Web 作的一个看起来无伤大雅的假设,引来了这样一个昂贵的解决方案(当然,几乎所有别的方案也不会有什么差别,因为它们的安全性相比起 PKI 的密码学结构来说都是非常粗糙且昂贵的)。

想进一步了解 CAs 的其他话题,可 点击这里

互联网域名系统是 TTP 高风险和高成本的另一个例子。围绕 TCP/IP 协议的大多数争吵和烦恼都集中在 TCP/IP 协议栈这个小小的部分上。为什么呢?因为它是 TCP/IP 的协议栈中少数几个不依赖于个体互联网节点的协议通信,而依赖于 TTP 的中心化层级制的地方。即便 DNS 的域名没有错误也没有欺诈,但 DNS 也是互联网中最有可能出错的单点。

受信任第三方的不菲成本来自于传统的安全解决方法,(在与协议无关的地方)花费了过高的人力成本。想更多了解这些传统安全解决办法的必要性和安全效益,请看笔者所写的关于 群体控制 (group controls) 的文章。协议用户所承担的风险和成本也受到 TTP 的不可靠性主导——在网络和集中式公钥基础设施,DNS 和证书颁发机构分别是不可靠性的常见来源。

现存的受信任第三方是有价值的

像维萨(Visa)、邓·布拉德街(Dun and Bradstreet)、保险商实验所(Underwriter's Laboratories)这样的公司把不信任的陌生人连接进一个信任的网络中。这类公司都是我们经济的依靠。许多发展中国家正是缺乏这些 信用中心(trust hubs) ,如果这些发展中国家能和发达国家的信用中心整合在一起,它们将受益匪浅。虽然这些组织经常有很多缺点,例如:信用卡公司(credit card companies)有越来越多的欺诈问题、身份盗窃和错误报告;最近 Barings 因为没有很好地适应电子证券交易而破产了。虽然这些信用中心存在着各种各样的问题,但是它们没到退出历史舞台的时间。

不过它们也并不能帮助我们在使用新协议时获得 TTP。这些机构有高度发展和专业化的特殊经营方式。通常来说,若换一种完全不同的方式去做生意,它们是不能一下子适应过来的。电子商务和数字化安全等新领域的创新肯定来自于其他领域。任何新的协议设计,特别是范畴完全不同的领域,如密码计算,都用不上已有的机构。但从头开始建构受信任第三方的成本太高,在这些已成体系的可靠安全技术中引入协议来最小化它们对 TTP 的依赖,要便宜得多。

受信任第三方模式仍具有吸引力

基于安全性的考量,组织或许会倾向于更贵的、基于受信任第三方的安全方案,他们反而不会热衷于通过减少对受信任第三方的依赖去提高效率。产生这样的倾向的原因实在是太多了—— 协议设计者想象力的局限、努力、知识或者时间 。设计一个依赖第三方的安全协议远比设计一个不依赖第三方的安全协议要容易得多(即,逃避问题比解决问题要简单得多)。在安全协议中,要减少对受信任第三方的依赖度,自然而言地设计成本成了一个阻碍我们达成目标的重要考量因素。此外,一个更大的阻碍因素是许多安全设计师没有意识到减少对第三方依赖的重要性,特别是那些起草互联网和无线安全标准的企业架构师。

想要在 TTP 领域做大做强的诱惑是很大的。成为下一个 Visa 或者 Verisign,这等雄心壮志,让多少浮沉在名利场的人蠢蠢欲动。但是,要实际上做成成功的受信任第三方公司也是障碍重重。创业公司成本往往是巨大的,运营成本和债务风险之高可不是开玩笑的。不然为什么说 “ ‘实质’ 先行者的优势在于——比起竞争者更早地跨过了行业准入的高门槛”。因为暂时还没有人能解决协议当中的受信任第三方问题,所以这是一个油水极多的商机。人们很容易去妒忌像 Verisign 这样的赢家,很少去看到那些如今默默无闻、努力尝试而失败告终的无名氏公司。同样的,人们很容易去想象自己成为了成功的受信任第三方,进而继续主张要有受信任第三方的安全协议。与此相比,要人们实际去解决安全问题则显得更难。

Uny6fm6.jpg!web

根深蒂固的利益网。受信任第三方机构养活着成千上万的技术人员。例如:创造和运行着传统控制结构的审计师 “军团” 和进行法律保护的律师 “军团”。这些利益相关者自然而然地去辩护这类假设需要他们来实现真正安全的模型。在像电子商务这样的新领域,他们当然会倾向于一种基于安全第三方的新商业模型(如:应用服务提供商),而不是花时间去学习一种会挑战到他们生计的新技术。

精神交易成本(Mental Transaction Cost)。信任,就像 口味 一样,是一种 主观的判断 。我们要花费心力去作出让自己满意的主观判断。在它的顾客需要做该类判断的时候,一个真的拥有良好信用的第三方会帮其顾客减少繁杂的调查和其他成本。然而,如果某个实体声称自己值得信赖,最终却靠不住了,则除了直接造成成本之外,它还会增加消费者在真正可信和危险的受信任第三方之间的选择成本。

私人财产没有依赖受信任第三方,也不应依赖受信任第三方

人类历史篇章的大多数篇页中,占主导地位的财产形式是私有财产。在一般的情况下,个人财产的功能没有依赖于受信任第三方。简单商品的安全特性可以在货款交付或首次使用时核实,而消费者无需再与制造商或者其他第三方进行互动(除非发生特殊情况,消费者会自愿、临时自行联系维修人员)。很多动产的产权也仅是在最低限度依赖于第三方——这样的受信任第三方唯一需要解决的问题是抵御其他第三方的掠夺。私人动产的主要安全性能并不用其他受信任第三方作为其保护使者,而是以其自身的可携性和私密性作为其保护措施。

我在这里列举了一些无所不在的私有财产案例。这些例子反映了部分财产所有者在现实中很强烈地显现出了想要摆脱受信任第三方的倾向:

  • 珠宝(在传统的文化中,人们把珠宝充当货币比用硬币充当货币更为常见,如:在北欧,直至公元 1000 年,人们仍出于保护财物或装饰的考虑,将其佩戴在身上)。
  • 私人钥匙(汽车和房门都是由私人钥匙方能打开)。
  • 个人计算机。许多个人电脑的先驱(如:许多家酿计算机俱乐部(Homebrew Computer Club)的成员会如此构想——电脑是一种私有财产,而且拥有者可以全权控制(和理解)运行在电脑上的软件,包括拥有在电脑上随意复制比特(即数据)的能力。可是,软件的复杂性、互联网连接以及软件发布者和用户(PC所有者)之间未解决的激励不匹配,种种这些问题已经侵蚀了私人电脑作为纯粹私有财产的愿望。

这些欲望近乎本能,维续至今。当消费者发现自己使用的设备竟严重依赖第三方并且自己从未察觉、毫无还手之力,由此而生的反抗是自然而言的。对于个人财产的功能依赖于第三方的建议,甚至是在动产贷款还清以前接受债权人在一定范围内要求的建议(这是一个 明智的建议 ),消费者都表示十分抵触。在大多数情况下,使个人财产的功能依赖于受信任的第三方(即 “信任” 第三方而不是被第三方 “强迫” 来维持管理安全协议和财产的合约)很难让人接受。

最小化受信任第三方的方法

接下来,我们将提出一种尽可能最小化第三方成本和风险的安全协议设计方法。最小化安全协议自身固然重要,但是它的充其量只能作为第二优先选项。

目前来看,安全设计者经常调用或者假设受信任第三方来满足以下条件——最优雅、最安全,或者是最少计算成本。然后他们就把这种幼稚的受信任第三方假设用在整个协议架构的概念验证(proof of concept)中。安全协议设计好之后,代码本身的成本是不值一提的,而像摩尔定律这样的指数成本函数会不断地降低计算、带宽等其他技术成本。安全协议自身的成本(除了信息传递的成本受到光速的限制,用户界面的成本也受到了 心理交易成本 的限制)将趋向于零。到目前为止,安全系统最大的长期成本(正如我们在 PKI 体系中看到的)是实现受信任第三方的成本。

比起在设计安全协议中减少受信第三方所带来的成本,在一开始就估计受信第三方的成本会更有意义。打定了这个主意,设计者就可能会采取完全不一样的信任假设、设计出完全不一样的安全协议,而不是为了协议的间简洁性而妥协、选择未经分析的 TTP 假设。一个自然的推论会是这样:如果有一个能消除或者极大程度地减小受信第三方的成本的安全协议,人们会更愿意执行这个协议,而不是带有昂贵受信第三方的另一个协议。哪怕是后一个安全协议的更简单,效率更高。

因为所有的协议无一例外需要这类假设,所以 “受信任第三方是安全漏洞” 的推论即是 “所有的安全协议都有安全漏洞”。减少受信任第三方成本和风险的关键步骤如下:(1)彻底地检查协议的假设,以便揭示所有受信任第三方的假设,并且具体地描述 “何谓受信任第三方”、“第三方为何” 的问题;(2)观察每一个具体的漏洞和任务都有相关的成本和风险。

另外还有若干个重要的考虑,如下:

  • 设计成本。为了减少对 TTP 的依赖,人们要学习并应用非直观、复杂的密码学和容错技术(上文已有所提及)。对于小型的智能合约方案而言,这会是主要的和不切实际的负担。另一方面,在创新受信任第三方的制度设计成本会比一个新协议的设计成本要高很多。虽然我们可以对协议应用形式化分析并对这些分析再加审计,在一个标准的产品开发时间框架内就可以对协议的安全性取得高水平的确信,但确定新机构是否能在长期中保持强健仍是昂贵得多。
  • 使用者精神交易成本——第三方成倍涌现的情况下,即使功能有限的受信任第三方,也会迅速影响终端用户跟踪不同可信品牌名誉和质量的能力。如果受信任第三方是分布式的(下文相关技术会提及到),信誉的跟踪必然自动化的;如果 TTP 基本上都执行相同的功能,这样的跟踪会变得更加简单。

如果是像电子商务这样的新情况,我们可以找到一种用数学运算来替代受信任第三方组织的安全协议(在新背景下,TTP 这样复杂的传统工具还没得到证实;而数学至少自身是非常清晰且可证的),这会是一个非常巨大的胜利。更多的时候,我们会把复杂、成本高的受信任第三方替换为一个或多个更简单的受信任第三方再加上数学保证。这也是胜利的一大步。我们可以如此判断这是否是一场胜利以及这场胜利的程度——关注受信任第三方的信任假设和由此产生的成本,而不用关注安全协议的效率。关键在专注于受信任第三方的成本并设计出减少成本的安全协议,而不是引入 TTP 来简化安全协议并最大化其效率。

一个优秀的电子化安全协议设计者不仅得是计算机科学和密码学的专家,他(她)还得是一个洞察物理安全、审计、法律和商务关系维护的通才。后一方面的知识不是用来替代这些昂贵的安全方法以最大化成本效益的,而是为了减少实质安全对那些昂贵方法的隐蔽依赖。一个好的协议设计师不仅会假设,更会设计让 TTP 尽可能少用昂贵的技术。

受信任第三方最小化协议

在前文中,我们知道对使得受信任第三方最小化的关键如下——识别和描述它们、估计它们的成本和风险,并且围绕着最小成本和风险的安全第三方来设计协议。本节将讲述这些技术会使得风险大大减少。

研究和实践中的三个领域迹象表明我们有希望增强信任关系。当中有两个领域包括了隐私这一棘手领域,也是信任关系往往不可逆转的领域:数据一旦泄露,就无法收回。

第一个通过信任关系分散化来保护隐私的协议族是 Chaum mixes 。这个协议让通讯过程免于被第三方追踪。在代理链上有 N 个代理,只需一个代理是可信的,隐私便可得到保证。不过,所有的代理都要可靠才行,不然信息会丢失或者需要重新发送。数字混合协议的折衷方案是拖长信息传递的用时(或重发的用时),以减少不可逆的隐私丢失风险。

另一种协议家族是 多方隐私计算(multiparty private computations) 。在这里,虚拟计算机分布在 N 个参与方之间,这些参与方相互提供特殊加密后的输入,而不是通过可信的第三方进行信息传递。分布式计算机在接受 N 个参与方的输入后,根据一个事先同意的算法进行计算,然后输出答案。每一方都仅知道最终结果,而不知道其他参与方的输入。要串谋侵犯隐私或者威胁可靠性所需的参与方阀值是一个可以取舍的值,也一直在此主题下的研究中被细致讨论。多方隐私计算可以用于审计、私密偏好收集、数据挖掘、拍卖和机密投标交易等等。

能够复制数据并对数据进行分布式操作,同时还能保全数据的完整性的协议族叫做拜占庭容错型复制数据库 ( Byzantine reslient relicated datebases )。这样的数据库实现包括 FleetPhalanx 。Fleet 实现了通用目标对象的复制持久性。一些开源实现包括 Mojo NationFreenet ,采取了这种方式,但没有实现拜占庭容错性、通用性以及完全的去中心化。相关应用程序包括 安全域名注册表和 property titles ,以及在 Mojo Nation 中安全发布的内容。该领域中最先进的工作涉及拜占庭容错裁决系统( Byzantine fault tolerant quorum systems )以及分布式安全方面的最新进展( recent advanced in distributed security )。

需要注意的是,这些阈值技术仅能用于加强协议的单个步骤或运行的完整性,如: Mojo Nation 在单步运行中遵循多数或者绝大多数参与方,又在运行间让客户端来检测错误并作出选择。因此,我们可以将所有信誉系统、审计等都添加回去,从而使得分布式系统在长期内更为强健。在单步运行中遵循大多数或者绝大多数的做法创造一种在短期中绝佳的强健性,而当前的系统如 Freenet 和 Mojo Nation 忽略了这一点(这也是 Mojo 唯一遗漏的部分,它具有 4-8 的投票机制,但并不能证明其具备拜占庭抗性)。

服务器代码的远程认证

为了保护知识产权,人们提出使用远程认证来检验软件在 客户端 中运行的状态。但远程验证还有一个更有价值的用途——验证服务器的行为。我们又把这个叫做 “ 透明的服务器方式 ”。客户端能检验服务器中运行的软件,再加上确认软件代码一如开源代码的审计能力,就能大大降低客户端和用户对服务器的脆弱性。考虑到受信任第三方的问题的重要性,远程认证的方法具有将受信任第三方协议转换为安全协议的巨大潜能,并使得以前不可能的各种安全协议变得可能。举个例子,Hal Finney 实现了一个名为 “可重用的工作证明( reusable proofs of work )” 的 bit gold 。基于安全的协处理器,用户能够远程地验证在卡上运行的代码。虽然人们还是摆脱不了一个受信任第三方——卡的生产商,但是这个生产商与服务器代码的安装过程和卡上服务器的操作是 隔离 的。

留下不必修复的漏洞,别引入 TTP

通常而言,协议的设计者不可能解决所有漏洞。如果一个需要以受信任第三方去防御的攻击,算不上是协议设计者想要保护的应用在现实情境中会遭受的严重威胁,那么,比起将任务分配给受信任第三方,不如留着这个小漏洞不管。例如:在公钥密码学的案例中,协议设计者们还没解决怎么在初始密钥交换中如何避免 “中间人(MITM)”攻击。如上文提及的,SSL 用 CA 作为受信任第三方来尽量避免这个问题。这个解决方案让互联网社区在证书上花费了数十亿的费用,并且失去了安全通信的机会。另一方面, SSH 决定了放着这个小漏洞不管。据我所知,“中间人” 漏洞从来没有被用来破坏 SSH 用户的隐私,虽然 SSH 用于保护隐私的范围要比 SSL 广泛的多,并且其成本只占 SSL 的一小部分。 Lan Grigg 对这种经济的安全方法进行了更为深入的研究。

术语清理

Alan KarpMark Miller 等人都观察到在安全社区中,人们混淆了 “trust” 和 “trusted” 这类词。为了厘清概念,他们建议将动词 “trusts(信用)” 替换为 “is vulnerable to(易受......的伤害)”。这个概念替换,极大程度上澄清了安全协议的设计。如,这篇文章中的 “受信任第三方” 都会改为 “易受第三方的伤害”,如此一来,这篇文章中所要说明——第三方本身就是一个安全漏洞——这个主题就呼之欲出、显而易见了。

在协议设计的语境下,一个诚实的协议设计者会去承认并告知用户协议中有漏洞。至于说后续是要修复还是减小这个漏洞就取决于外部的机制了,或者是让用户知晓但自己选择去忽略这个漏洞。总而言之,承认和告知是检验设计者是否诚实的炼金石。诚实的协议设计者肯定不会以 “我因为一些权威理由而信任这些参与方” 为理由(这很大可能意味着协议设计者不知道该如何修复安全漏洞)去遮掩掉关键问题。由于安全协议设计者通常不太了解传统的非数字安全、法律和制度解决方案,因此这类的协议方很少为人知道。在协议设计和协议的安全性方面,将 “可信” 替换为 “易受攻击”,会使得安全性大大增强。

唉,可是安全设计者、“可信第三方” 和 “可信计算”的销售人员或者是受信任第三方的爱好者,他们真的会大大方方地承认他们的协议是 “易受攻击的”?要知道当他们用 “可信” 来形容他们的设计肯定要比 “易受攻击” 安全得多哦(起码听上去是这样)。

除了安全协议设计的术语语境,“信任(trust)”在现实生活当中有着各式各样的含义。“trust” 有 “基于充分知情的信任” 这个含义。例如:“因为这个头盔经过层层测试,所以我相信这个头盔会保护我以防被一般的子弹打伤”、“我相信这个有授权的站点,因为授权给它的时候,我知道我(们)在用一个强大的安全协议保护着自己” 或者是 “我把我的孩子托付给我的妻子”。在这些例子中,如果把 “trust” 翻译为 “易受攻击” 的话,其含义就与直观意思恰好相反。“信任” 的语义需要看上下文才能做进一步的判断,这刚好印证了在描述安全协议的漏洞或者缺失时,要避免使用 “信任”一词。我们需要清晰地明白以下三种情况的区别——设计者是否信任或者必须信任某一类参与方是一回事,当协议在运作的过程中某个使用者会不会相信在那个类别当中的特定实体是另一回事,而用户或者协议设计者的信任是否基于充分知情又是另一回事。

结论

传统的安全协议是 “两高”——成本高!风险高!随着时间推移,设计良好的数字安全会显著地降低成本。当协议设计者去调用或者假设一个受信任第三方的时候,他(她)其实是在召唤一种神奇的组织、通过传统的安全和控制方式来解决安全问题。尤其在电子化的语境下,这样的组织的支出会持续居高不下,并且不可避免会给终端用户带来很大的障碍——把持续的高成本和高风险转嫁给消费者。本文提出了一种更好的解决办法。这些办法是从已知的、易描述的、成本低的 TTP 入手。最好的第三方是那些不存在的第三方——协议设计已经消除它的必要性,或者在协议各方之间通过自动化分散化了 TTP。不存在 TTP 的策略催生了最有前景的安全协议研究领域,这些领域包括数字混合、多方隐私计算和拜占庭抗性数据库。上述策略以及类似的方案将用于从根本上降低现有 TTP 模式的成本,并致力于解决隐私、诚信、产权和合同执行方面的突出问题。关键是在解决问题的同时,会尽力减少创建和运营新 TTP 的成本。

参考

链接已全部通过文本表现出来。

致谢

我想感谢 Mark Miller,如果没有他的鼓励,我就不会写下这篇文章。感谢他在后期给予的评论,这些评论使我受益匪浅。除此,还要感谢 Hal Finney、Marc Stiegler、David Wager 和 Lan Grigg 对本文评论,他们的评论都让我受益匪浅。

原文链接: https://nakamotoinstitute.org/trusted-third-parties/

作者:Nick Szabo

翻译&校对:ViolaH & 阿剑


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK