这节要介绍的 Web Of Trust ( WOT ) 是一种密码学的信任模型,跟咱们之前聊过的 Chain Of Trust 相比,WOT 最大的特点是信任是通过去中心化的方式达成的。下面咱们来聊清楚 WOT 的基本逻辑,工作原理以及它和 CA 模式的区别。整个区块链运动,以及 Web3.0 的潮流,都很大程度上是基于 WOT 思想的复兴,所以 WOT 是一个非常值得学习的思路。
什么是 Web Of Trust ?
严格来说,WOT 是一种密码学信任模型,具体的出处和最常见的密码学使用场景咱们稍后再聊。先来聊聊 WOT 的基本思路。
正如它的名字体现出来的,WOT 是一个信任网络。比如,我信任小明,小明信任小红,这样我就间接信任小红,我信任小张,小张也信任小红,那么我对小红的信任就更强一些,这张网络上人多了,任何两个人都可以直接或者间接的达成或强或弱的信任。这样,我们这些人就组成了一个信任网络。同时,我和你之间的信任路径越近,越多,那么可信程度也就越高。跟计算机网络一样,WOT 可以有很多个。每个人都可以同时加入多个网络,也可以成为连接不同网络的桥梁。
WOT 的基本工作原理可以从社交网络 App 中人们建立互相的过程中理解。打个比方,有一天在 Twttier 上,特斯拉的老板 Musk 突然联系我,那么我怎么才会相信这个号真的是 Musk 的呢?要知道,类似 Twitter 这样的社交网络并不审查新注册用户的身份,任何人都可以声称自己是 Musk 。实际中,要建立对这个账号的信任,我可以去直接私信这个账户,问一下他是不是真的 Musk ,或者仔细看看他以往发的推文。但是这些方式得到的都是一面之词,不足采信的。最有力的证据应该是,我自己的直接朋友中,有人粉了这个账号,实际中,我的确是靠这种方式来确认一个账号是否可信的。但是退而求其次,如果我直接的朋友中没有人粉这个账号,就可以看看我或者我朋友粉过的其他大号里面,有没有人粉这个账号,如果我和 Musk 之间这种间接的信任通道比较多,我依然可以最终信任这个账号是真的。以上这个过程是人与人非常自然的建立信任的过程,现实生活中,人们也会这么做,但这也就恰好是 Web Of Trust 的基本原理。
理解上面这些,对于理解密码学中如何使用 WOT 是有直接帮助的。
WOT 在密码学中的作用
到密码学领域,WOT 作为一种信任模型是如何产生的,具体又是干什么的呢?
WOT 最早出现在以密码学圣战的知名加密软件 PGP 中,由密码学圣战斗士菲尔·齐默尔曼发明。后来从 PGP 项目中抽离出来 OpenPGP 这套开放标准,所以在其他的遵循这套标准的软件,例如自由软件基金会的 GPG 中,也会使用 WOT 。人们在发送 Email 的时候使用的就是 OpenPGP 这套加密标准。WOT 在典型的 PKI (公钥基础设施),也就是通过对一个中心化的 CA ,或者是一个 CA 链来颁发证书的方式之外,提供一种新的去中心化的身份认证方法。
要理解 WOT 的工作流程,首先要复习一下身份证书的概念。证书主要包含两项内容:一个是所有人信息,例如姓名邮箱等,另一个是所有人公钥,公钥可以是一个也可以是多个。CA 和 WOT 中使用的证书是一样的,区别是如何证明证书的可信。CA 方式是通过大家对一个权威组织,也就是 CA 的绝对信任,并用这种信任来给证书的可信度背书。而 WOT 基本上可以理解为朋友担保朋友的方式来达成信任。如果我看到一个或者多个我信任的人,签署了另外一个人的证书,那我就可以相信这个证书。
当然认定一个证书有效,也是有一定的投票算法的。OpenPGP 标准中规定,如果一个证书由我的三个部分可信的人引荐,或者一个我完全信任的人引荐,那么这个证书就是有效的。当然,用户自己也可以去人为的提高门槛来增加安全性。而不用像是用 CA 证书那样,只能接受证书。所以灵活性是 WOT 的一个优势。
来看看如果 Bob 要给 Alice 发一封邮件,需要经历的整个过程是怎么样的。首先,Alice 要信任 Bob 的证书,具体做法就是刚才提到的通过 Alice 信任的人去直接或者间接的引荐 Bob 到自己的 WOT 中来。下一步,Bob 需要把要发送的邮件,用 Alice 的公钥加密,这样可以保证只有 Alice 才能解密邮件。同时 Bob 还要用自己的私钥去签署加密后的邮件,这样 Alice 收到邮件之后,能用 Bob 的公钥去验证邮件是不是来自 Bob 本人。所以说,整个过程中,涉及到两个部分,一个是信息的加密,另外一个是发信人身份的确认。
所以总结起来,WOT 是一种 CA 之外的认证证书的方法。
跟中心化 CA 对比
下面咱们把 WOT ,跟传统的 CA 发证书的形式做一下对比,看看各种的优缺点。
最明显的区别是 CA 证书是由单一方签署的,而 WOT 是去中心化的,不会被任何单一组织控制。典型的 X.509 标准 PKI 提供的证书,都是由一个 CA 签署的,当然通常这个 CA 的证书也会被上一级的 CA 证书签署,直到最顶层的 CA 的根证书,是由自己签署的,所以这也形成的是一个 CA 的层级信任结构。根证书必须可靠的分发到所有人的手中,最常见的情况是在浏览器或者在 Email 客户端中内置大机构的根证书。这样,让人们使用 SSL 证书去安全的访问网站或者发邮件的时候,就不需要自己去安装根证书了。从整个过程我们可以看到,CA 证书是否可信完全基于我是不是相信 CA 或者浏览器或者 Email 客户端的开发者,这是一种中心化的方式,如果有开发者或者 CA 出现问题,那么证书就不安全了。WOT 采用的是多个信任锚点来避免单点故障。因为,我的证书是很多个信任我的人签署,并推荐给他们的朋友的,所以,不管是是用 WOT 的公司倒闭了,或者是个别的推荐人退出了网络,整个信任网络的安全依旧还在。
WOT 默认是不依赖任何中心化机构的,也选择不相信任何的第三方中间人,但是随之而来的问题是,人和人之间如何才能构建信任呢?既然不相信任何的第三方通道,同时互相构建信任的双方自己又还没有建立起安全的通信通道,所以只能选择肉身见面来完成对彼此的公钥的签署和推荐,这样的活动常见于 PGP 和 GPG 社区,叫做 Key Signing Party 密钥签名聚会。而中心化的条件下,大家只需要相信浏览器厂商,相信大的 CA ,就可以相信众多被他们签署的证书了,无需真正肉身见面,方便很多。另外可以想象一种场景,如果我不希望使用某个公钥了,因为我的私钥已经丢失了。那么我如何向整个 WOT 网络声明这个公钥作废呢?中心化条件下,我只需要自己肉身到权威组织解释清楚,由权威组织,通知整个网络。而去中心化 WOT 条件下,因为我已经丢失了私钥,所以再也不能发出任何关于这个公钥的令人信服的证据了,所以剩下的做法就是每一个 WOT 的我的联系人见面解释,这样显然是不可行的。维基百科上记录了一个国际知名的密码学家,私钥丢失了都十年了,依然有人用原来那个公钥给他发加密过的信息。不过,后来大家的证书中都会添加过期时间,这个问题得到了一定程度的解决。
另外,WOT 最明显的一个问题是对新人不够友好。如果我刚刚生成了新的公钥,想要加入到某个 WOT 之中,但是同时又不认识任何人可以作为引荐人,那么我该怎么办?如果我住在小地方,那么很难找到足够多的人去开密钥签名聚会,那时可能我需要通过打电话或者通过社交 App 的形式来联系大家推荐我入网。但是这些联系方式本身又都是有很高的安全隐患的。
所以 WOT 虽然理论上更安全一些,但是实际中的确没有 CA 方式更为常用,因为不够方便。
总结
最后总结一下。WOT 是一种密码学信任模型,用来认证身份证书。但是区别于 CA 方式,WOT 是去中心化的,证书的可信,来自于多个我可以信任的人对这个证书的推荐。但是 WOT 的问题也比较明显,那就是没有了第三方的辅助,信任的建立非常的麻烦。最安全的方式是肉身见面,但是成本极高,如果基于一些第三方渠道来沟通,又会使得安全性降低。所以 WOT 在日常生活中没有 CA 方式更为常用。
参考
- 维基百科. 网络化信任. https://en.wikipedia.org/wiki/Web_of_trust
- 理性维基. 网络化信任. https://rationalwiki.org/wiki/Web_of_trust