【摘要】 证书颁发机构(Certificate Authorities)自诞生以来,一直就是 DNS 及网络的中心,并且在保护网络安全方面扮演着不可或缺的角色。简而言之,CA 就是
证书颁发机构(Certificate Authorities)自诞生以来,一直就是 DNS 及网络的中心,并且在保护网络安全方面扮演着不可或缺的角色。
简而言之,CA 就是现代互联网的信任之锚,发行着用于代表网络实体的数字证书。数字证书是一种经过验证的凭证,最终表现为线上的数字身份。CA 的职责就是确保这些信息受到保护、可用于加密网络参与者(客户端和主机)之间传递的数据。
与此同时,CA 也发行 SSL 证书,该证书将网站的所有权与一组公钥绑定在了一起。然而,对政府层面的攻击威胁与日俱增,未来当用户使用这类中心化的证书存储库时,可能会遇见假冒的对手方。2017 年,用户累计收到了超过 2.67 亿个钓鱼 URL 。此外,Zscalar 公布的一份云安全报告指出,仅在 2018 年就有超过 17 亿个隐藏在 SSL 流量中的高级威胁被拦截。
2019 年 7 月期间,出现了 1 万个企图钓鱼的 SSL 证书(CA 还没有撤销这些钓鱼证书)。
如今,互联网已经陪我们走过了 30 多年,我们也需要一个更加现代化、更加强健的解决方案来减少攻击和对第三方中间机构(如 CA)的依赖。
于是,Handshake 应运而生。它是一种最新的协议,旨在提供一种强健的、可以替代 DNS 的方案,同时解决我们当前面临的一些重大问题。作为我介绍 Handshake 系列的后续文章,我将更深入地探究互联网协议组件的功能,以及 CA 是如何协同工作、让现代的 web 运行起来的。
SSL/DNS 在互联网的技术栈层中处于什么位置?
互联网协议组件(IPS)驱动着我们今天所使用的互联网。它是一套分层的网络栈,允许全世界的计算机之间互相传递数据包。浏览器和主机之间使用超文本传输协议(HTTP)和安全套接层(SSL)来建立加密通信、进行数据传输。SSL 是一个与 HTTP 协同工作的协议层,它为浏览器的运行提供加密通信功能。
为了更好地理解 HTTP 和 SSL 协议实际上是如何运行的,我在下面举了一个例子,来看看 Alice 是如何连接到 Bob 的网站的吧。
1. 首先,Alice 打开浏览器,在地址栏中输入 Bob.com
2. 接着,Alice 的浏览器将连接到一个域名解析器,获取目标网址的服务器地址(此过程未经加密)
3. 一旦域名解析完成以后,Bob 网站的服务器将向 Alice 的电脑发送一个证书以及对应的公钥
4. Alice 的电脑通过该证书使用的 CA 来对该证书的合法性进行验证
5. 一旦验证成功,Alice 的电脑和 Bob 网站的服务器就彼此确认了眼神,然后建立起加密的 SSL/TLS 连接。
6. 到了这一步,Alice 的客户端(她的电脑)和 Bob 的服务器之间就能畅快无阻的发送加密数据啦
网络协议栈是一套用于在网络中各参与方之间传递数据的组件,但它严重依赖于你所采用的 CA 或更重要的公钥基础设施(PKI),来确保你在网上冲浪时保持私密且不受侵害。
什么是公钥基础设施(PKI)
要想在数据交换的过程中确保数据的准确和安全,信任是不可或缺的。PKI 就是一套设定通信双方交互策略、结构和流程的系统,让交互双方可以相互信任并安全地交换信息。
一般来说,会有多个中间方来来协调两个实体之间的信任。当你使用公开的互联网也就意味着你信任根 CA 会为你提供正确无误的信息。CA 的使命就是管理代表其它实体的数字证书。颁发数字证书是为了防止在数据传递的过程中发生中间人攻击,这种攻击可能会绕过信任机制并将用户引导至恶意的网站。举例来说,IdenTrust 就是一个典型的 CA,管理着诸如 Twitter 在内的其它实体的数字证书。
在上面这个例子里,IdenTrust 将发送一个 X.509 证书给请求访问 Twitter 的用户。在这个数字证书中包含了一系列信息,包括经过验证的公钥,证书的失效日期,数字签名和其它重要条款。一旦用户收到了数字签名,他就可以使用该数字签名对实体的身份及公钥进行验证。通常情况下,我们会使用 RSA(Rivest-Shamir-Adleman)算法或椭圆曲线数字签名算法(ECDSA,Elliptical Curve Digital Signature Algorithm)来生成公钥。
RSA 算法和 ECDSA 都是非对称加密技术,这也就意味着用户只需使用主机的公钥就可以完成对信息的加密,然后在公开的网络环境中将加密后的信息发送给主机(也就是这个例子中的 Twitter)。只有与公钥关联的私钥(即主机所有的私钥)能够解密信息。
CA 存在的诸多问题
读到这里,大家应该已经基本明白了互联网协议组件中的 PKI 和 CA 是如何运行的,接下来,我们一起讨论一下可能出现的一些问题。
CA 在整个过程中一直扮演着一个中心化认证组织的角色,它负责存储数字证书,并充当两个实体之间的中间人。每一个 CA 都有它独有的验证程序来判断域名的有效性和安全性。此外,三家营利性组织占据了大约 90% 全球市场份额。最终,这种存储和发行证书的方式可能出现安全漏洞。W3 Tech 近期公布的一篇报告中列出了主流 CA 的全球市场份额。
很显然,还存在一些改进的空间。
当一个网络实体(比如 Twitter)要向一个已知的 CA 申请获取数字证书时,需要经过一个域名验证的过程。可靠的 SSL 证书让用户有信心防止网络钓鱼,诈骗,和欺诈。然而,接收数字证书的过程有点过于简单了。CA 就只是向 WHOIS 记录中的域名联系人发送域名验证型证书而已。这也太草率了吧!
整个事情就是:某个用户申请一个数字证书,然后 CA 就会通过电子邮件向域名联系人发送一个经过认证的证书。出于额外的安全考量,实体还可以注册一个扩展验证服务,在其它情况中通过身份检查来进行验证。但是,通常情况下,用户不会发现其中的区别,除非他们看见了一个绿色的横条或者点击了浏览器左上角的小锁头。
这是相当危险的,因为坏蛋也可以注册一个神似 Twitter 的域名,比如说 Twiter.com,然后展示出经过 CA 认证的证书。
域名验证程序、密钥存储以及 CA 爆破,这些环节都对对诸如浏览器中间人、HTTPS 欺骗、ARP 欺骗及其它类型的中间人攻击敞开了罪恶的大门。举例来说,2000 年初,一家著名的 CA 公司 Verisign 向一名自称是微软公司的恶意用户颁发了一份数字证书。
然后,攻击者让用户误以为自己收到了有效的 Windows 更新,然后用户的电脑就被攻陷了。在 2011 年 3 月发生的一起事故中,Comodo(CA)向冒充微软和 Google 等网站的恶意用户颁发了虚假的证书。在这个案例中,用户被引导进一个恶意的网站,却误以为自己正在登录 Google(实际上并不是!)。最终 Comodo 发现了危害,并撤销了访问该证书的权限。
Handshake 的主张
今天,全球所有的顶级域名都由 13 个营利性组织管理。虽然 CA 由数千个组织进行管理,但其中三家组织占据了 90% 的全球市场份额。管理顶级域名和证书的组织都会遭遇中心故障的问题。这种问题会一直存在,除非我们将信任从中心化组织转移到去中心化的解决方案上。互联网协议组件和公钥基础设施高度依赖于整体的公共基础设施。
我们为什么不能依靠公众来进行域名管理和安全性认证呢?
眼下就有这么一场迁移,将货币的控制权交还到公众手上。自比特币创生始,货币的控制权便不断从国家转移到人民手中。全球的公民因此获得了对冲国家政治风险的能力,还保持了采取行动的自由。
Handshake 提出了与比特币相同的价值主张,但它改变的是信息流。正如我在以前的文章中提到的,Handshake 是一个去中心化域名管理协议,它从根源管理着顶级域名。正因为 Handshake 的顶级域名都被直接存储在顶层,因此你不再需要 CA 来管理数字证书或私钥了。
Handshake 如何解决当前在 CA 中存在的问题?
今天,CA 管理着包含公钥,签名和其它相关信息在内的各种数字记录。因此,当你信任 CA 的时候,也意味着你相信 CA 拥有安全的数字文件和经过验证的身份信息。Handshake 的重要性在于:私钥始终直接由所有者注册,并始终控制在所有者手中。
这意味着当我注册 “TokenDaily.co” 这个域名的时候,Handshake 将在协议上锁定域名的所有权,并通过网络中的所有节点对其进行传播。当用户解析到命名空间时,它将直接指向一个简洁的证书,并验证请求的合法性。这将成为私钥和已注册域名之间的规范信任点。
总结
Handshake 协议正在减少我们对顶级域名和 CA 的需求,也将减少我们对第三方提供商的依赖。这场转移最终将导致中间机构的减少,并给用户带来更强的安全性。这意味着信息将自由流动,而你无需再担心攻击者仿冒你的域名。今时今日,网络上发生着数以十亿计的攻击,任何人都有可能成为钓鱼 URL 或 SSL 隐藏威胁的受害者。我们越是需要信任,就越需要更快地找到这个问题的解决方案。
随着 Handshake 协议、Handshake 联盟、Urkel、和 Handshake 学院的发明,我们将开始见证一场从信任人到信任代码的转变 —— 这将带给互联网前所未有的安全。(作者: Imran Khan)