原文地址:https://www.namebase.io/blog/meet-handshake-decentralizing-dns-to-improve-the-security-of-the-internet/

Handshake通过提供证书颁发机构(CAs)的分布式替代方案来提升互联网的安全性,同时使域名具有抗审查(censorship-resistant)、抗查封(seizure-resistant)和抗篡改(tamper-proof)的能力。
为了更好的理解Hanshark如何增强互联网的安全性,我们先来看一下如今互联网所面临的安全问题。如果你对TLS和CAs已经了解,你可以跳过这部分。

HTTP面临的问题

当你向google.com发送HTTP请求时,浏览器首先利用DNS查询Google服务器的IP地址。然后再向这个IP地址发送请求。请求从你的计算机发送至Google的服务器,但请求在到达目的地之前会通过各种大型互连网络路由。某些情况下,在返回之前甚至会经过其他国家。例如,南美洲大部分的互联网流量都会通过迈阿密。在整个传输过程中,中间的路由可能会检查你的数据或者甚至试图修改你发送到Google的数据到非Google的服务器。这被称为中间人攻击(MITM ,Man In The Middle)。事实上,爱德华·斯诺登(Edward Snowden)公开的文件显示,美国国家安全局正是通过这种手段对谷歌进行MITM攻击以收集人们的数据。
翻译|Handshake:利用分布式的DNS增强互联网的安全 - 图1

解决方案:HTTPS

为了解决中间人攻击,我们需要进行身份认证、完整性验证和加密。目前的解决方案是使用HTTPS,其依赖于TLS和CA。
你的浏览器使用传输安全层(TLS,Transport Security Layer)对网站的流量进行加密。TLS依赖于公钥密码技术,公钥密码技术是一种使用一对密钥(公钥和私钥对)进行非对称加密的方法,与只有一个密钥的对称加密相对。公钥是公开共享的,用于验证签名。私钥用于解密由公钥加密的消息。私钥是私有的,不共享的。
当浏览器向谷歌发出HTTPS请求时,它启动与谷歌的TLS握手并收到谷歌的公钥。之后利用收到的Google的公钥验证TLS握手中的其余信息是否是Google发送的,因为只有Google拥有公钥对应的私钥。通过这种方式,即使中间人监听了请求,但也无法解密它的内容。如果中间人将请求发送到非Google的服务器,浏览器将会发现,因为该服务器不能响应该请求。

证书管理中心(Certificate Authorities)

那么你如何知道你得到的Google的公钥是真的呢?在第一次向Google发送请求时,中间人可能已经截获了你的请求并且向你返回了一个假冒的Google的公钥。CA就是试图解决这个问题。CA是可信的第三方平台,用于验证站点公钥的真实性。默认条件下操作系统中含有一个经过审查的CA列表。当一个网站想要支持HTTPS请求,则必须要在其中一个可信的CA注册他们的公钥。通过与CA进行验证,你就可以确认你收到的Google的公钥是可信的。

CA面临的问题

你可能注意到一个基本的假设,你必须信任CA,而且必须信任所有的CA。默认你的计算机上安装有数百个可信CA的证书,Windows系统中含有390个证书,Mac系统中含有170个证书。这些CA可以将信任委托给其他中间人,而这些中间人也可以将信任委托给更多的子中间人。即使其中一个被黑客攻击了,你也不知道这些CA的中间人是谁。你的所有HTTPS通信都很容易受到MITM攻击。在DigiNotar攻击事件中,伊朗政府入侵了一个荷兰CA,并利用它欺骗了30万伊朗公民。
翻译|Handshake:利用分布式的DNS增强互联网的安全 - 图2
上面是我机器信任的一部分证书。看到GoDaddy并不意外,但我没想到会安装香港CA

解决CA问题

虽然基于区块链的协议可能很慢而且有很多限制,但在解决可信第三方问题方面表现的非常出色。存储在区块链上的数据是不可变的,所有各方都可以验证存储在区块链上的数据的正确性,像比特币那样。比特币钱包有用于签署交易的公钥。钱包含有一些相关数据,包括钱包里有多少比特币。你甚至可以将任意数据与钱包关联起来,比如在比特币区块链上存储婴儿出生日期。

埃里克·梅尔策在比特币区块链上纪念他女儿的生日
你可以想象一个系统,它不是存储任意的数据,而是在区块链上存储域名和公钥。不再依赖任意的CA列表作为信任的根,你可以转而依赖加密支持的分布式信任根。域名所有者可以将自己的密钥与域名相关联,并且同时每个人都能够验证域名的公钥是否正确。这将解决CA信任的问题,而Handshake正是这样一个系统。

Handshark

Handshark是一种区块链协议,旨在解决CA信任的问题。它与比特币类似,不同点在于Handshark中的币不是钱,其利用币在Handshark区块链上注册域名。注册的域名是类似.com.org.net的顶级域名(TLD)。根区域文件决定谁拥有什么TLD,Handshark分布式的存储根区域文件,不像之前根区域文件是由ICANN控制的。任何人都可以在Handshark区块链注册他自己的顶级域。
翻译|Handshake:利用分布式的DNS增强互联网的安全 - 图3
Handshark上的顶级域的好处之一是它们具有与之相关联的公钥并且公钥是可验证的。只有域名的所有者可以将DNS数据和其他任意数据与域名相关联,并且每个人都可以在区块链上进行验证,却不用通过CA。
Handshark域名还有一个非常重要的好处,其具有抗拒审查、查封和篡改的能力,因为Handshark域名保存在区块链上。就像比特币钱包一样,只要他们的私人密钥是安全的,那么就只有域名拥有者才能更新他们的域名或者转移他们的域名。
这样做的一个结果就是域名本身就是它们的信任根。他们可以简单地使用TLS密钥,而不是依赖于CA中的外部信任。这就使得Handshark域名可以防止现在系统存在的通过CA进行的攻击。

作为域名拥有者如何使用Handshark域名呢?

你的域名就是顶级域,所以你可以将它指向一个名称服务器,并且发布它。像GoDaddyNamecheap这样的域名注册商为域名运行他们的名称服务器。但使用Handshark域名你需要运行你自己的名称服务器,或者使用Namebase。如果你拥有域名.joke,你可以将其指向你的服务器,并且可以创建good.jokegreat.joke,甚至可以出售bad.joke
令人惊奇的一点是,你可以将你的顶级域直接指向一个IP地址,使用顶级域作为域名。下面的例子中,我们将.namebase指向与namebase.io相同的服务器,通过输入namebase/来访问它。
image.png
你的域名还可以使用TXT记录来添加任意相关的数据,这就增加了域名的可使用性。例如,除了使用你的名字作为域名外,还可以将一个比特币钱包地址与你的名字关联起来。你可以访问你朋友的网站satoshi/,然后用你的加密钱包把比特币发送到satoshi/

作为终端用户,如何使用Handshark域名?

Handshark向后兼容现有DNS协议。使用它你所需要做的就是将计算机的DNS解析器或路由器的DNS解析器指向Handshark解析器。就像使用现有的解析器,如Cloudflare的1.1.1.1和谷歌的8.8.8.8。这样就可以像上面的Iphone一样解析namebase/
主网启动后,社区会维护公共的解析器。你也可以运行自己的服务器——Handshark是使用轻量级递归DNS解析器启动的唯一命名区块链。递归DNS解析器是一种可以将域名递归解析为IP地址的软件。如果你没有听说过递归解析器,那么你可以将DNS看作是从根到单个域名的树。递归解析器递归地遍历整个树以查找域名指向的信息。这个轻量级的客户端仅使用10mb内存和几乎为零的CPU就可以可靠地解析Handshark域名。这是使用Handshark的最安全的方式,因为它不需要信任任何检查DNS流量的第三方解析器。
这个轻量级的客户端对于Handshark的普及至关重要,因为它大大增加了人们安全地使用Handshark的接触面。你可以轻松地将这个轻量级的客户端嵌入浏览器、应用程序和嵌入式设备。如果没有它,要实现可靠地解析域名,使用者将需要运行所有的节点,而根据经验,没有使用者愿意这样做。即使你是一个密码爱好者,那么你知道有多少人运行比特币的全部节点么?

Handshake 与 ICANN 的冲突

所有现存的1500个ICANN 指定的顶级域已经都加入了Handshake的黑名单,以保证向后兼容性。这意味着通过Handshake解析DNS的终端用户仍然可以正常访问.com域名。新的ICANN顶级域理论上可能与Handshake中的顶级域发生冲突,但ICANN在未来几年都不会发布新的顶级域。而当ICANN发布新的顶级域时,他们每年最多只允许500个新的顶级域。即使冲突在技术上是可能发生的,但冲突的可能性很低。未来,社区将决定优先使用哪些名称。我们相信Handshake 域名将会优先考虑,因为人们会发现它们更有用,我将在另一篇博客文章中讨论为什么我认为Handshake甚至可以在ICANN的网络影响下获得普及。

摘要

Handshake 用加密支持的分布式信任根替换证书颁发机构,从而使互联网更加安全。只要Handshake 域名所有者控制着他们的私钥,他们的域名就不会受到审查、查封和篡改。