证书颁发机构(Cert if ica te Authori ti es)自诞生以来,一直就是 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 的用户。在这个数字证书中包含了一系列信息,包括经过验证的公钥,证书的失效日期,数字签名和其它重要条款。一旦用户收到了数字签名,他就可以使用该数字签名对实体的身份及公钥进行验证。通常情况下,我们会使用 RS A(Rivest-Sha mi r-Adleman)算法或椭圆曲线数字签名算法(ECDSA,Ellip TI cal 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 的重要性在于:私钥始终直接由所有者注册,并始终控制在所有者手中。这意味着当我注册 “TokenD ai ly.co” 这个域名的时候,Handshake 将在协议上锁定域名的所有权,并通过网络中的所有节点对其进行传播。当用户解析到命名空间时,它将直接指向一个简洁的证书,并验证请求的合法性。这将成为私钥和已注册域名之间的规范信任点。
总结
Handshake 协议正在减少我们对顶级域名和 CA 的需求,也将减少我们对第三方提供商的依赖。这场转移最终将导致中间机构的减少,并给用户带来更强的安全性。这意味着信息将自由流动,而你无需再担心攻击者仿冒你的域名。今时今日,网络上发生着数以十亿计的攻击,任何人都有可能成为钓鱼 URL 或 SSL 隐藏威胁的受害者。我们越是需要信任,就越需要更快地找到这个问题的解决方案。
随着 Handshake 协议、Handshake 联盟、Urkel、和 Handshake 学院的发明,我们将开始见证一场从信任人到信任代码的转变 —— 这将带给互联网前所未有的安全。