揭秘去中心化 ID(一)
2019-12-3
作者: 舒适(ArcBlock 软件工程师)
去中心化 ID 可以说是继区块链之后越来越受关注的互联网技术概念。然而,随着人们前赴后继地涌入,展开一波又一波关于去中心化 ID 的讨论,这一概念的复杂程度却不减反增,让本就云里雾里的群众更加迷惑。
这篇文章,作为“揭秘去中心化 ID”系列的第一篇文章,力求用人话来讲清楚什么是去中心化 ID。
尽管最近关于去中心化 ID 的讨论如火如荼,但这并不是一个全新的概念。早在互联网诞生之初,已经有人提出了类似的概念,不过苦于一直没有合适的技术实现,因此去中心化 ID 并不为人们熟知。随着区块链技术日渐成熟,人们猛然发现区块链为实现去中心化 ID 提供了一片天然土壤,关于去中心化 ID 应用的新讨论由此激发。
要理解去中心化 ID 究竟解决了什么问题,我们首先来看三种不同的数字 ID,它将对去中心化 ID 与传统的解决方案进行横向对比,为大家展示这一概念的核心。
传统中心化 ID
最开始的时候,我们每次登录互联网应用服务都需要创建一个新账号。
但计划赶不上变化,有时是惯用的用户名在这个网站上不可用了,有时是密码的要求不断改变,导致不能用同一个密码。
结果是,在每一个网站上,我们都有一个账号 ID。之所以把这个账号 ID 称作“中心化”,是因为对应的网站掌握了验证用户名和密码的权利。换句话说,你必须在网站上输入自己对应的用户名和密码,通过验证,才能享受用户的权利。
第三方中心化 ID
随之而来的,是眼花缭乱的用户名,和邮箱里一封接着一封的密码找回邮件。
为了解决这个问题,某些拥有大量用户的公司提出:“既然你已经在我们这里有了一个账号,干脆以后也用这个账号登录吧。”
第三方中心化 ID 应运而生。
表面上这是一个不错的解决方案,通过第三方中心化 ID,我们登录新网站的时候再也不用重复输入用户名、密码、验证邮箱等,只需要轻轻一点或一扫,就可以通过一个第三方账号登录。
但这个方案依然是“中心化”的,不过是将验证用户名和密码的过程从之前的网站转移到了第三方服务上,也就是说离开了第三方服务,我们无法登录目标网站。
而且,第三方中心化 ID 让我们在各个网站上留下的记录,通过一个共同的第三方被串联在了一起。根据这些数据记录,第三方可以生成更详细的用户画像,甚至利用机器学习和大数据分析挖掘出更多隐含的信息,由此带来的数据隐私泄露和滥用的风险日益增加。
那还有别的方法吗?有办法让我们既使用同一套用户名和密码,又不需要把验证权交给第三方吗?
去中心化 ID
这就是去中心化 ID 诞生的原因。
一般来说,我们需要一个第三方来验证用户名和密码互相匹配,从而证明我们是账号的持有人。去中心化 ID 的特别之处在于,它让账号持有人可以自证身份,不需要第三方。
这是怎么做到的呢?
DID
首先我们先解释一下 DID 和去中心化 ID 的区别。因为去中心化 ID 的英文是 Decentralized Identity,所以很多人以为 DID 是去中心化 ID 的缩写。其实不然,DID 和去中心化 ID 之间有着一些微妙的区别。
去中心化 ID 是一个更为笼统的 ID 概念,用于区别传统的 ID 概念,强调 ID 的持有者对 ID 以及 ID 相关的数据信息有更大的自主控制权。
而 DID 实际上是 Decentralized Identifier(去中心化身份标识符)的缩写,代表的是万维网联盟(W3C) 提出某一种去中心化 ID 的具体实现技术实现。
鉴于未来还有可能出现其他去中心化 ID 的实现,以下我们讨论的对象都是 DID。
那 DID 到底是什么呢?
DID 包括两个部分:地址和密钥。
地址和密钥
地址对应的是用户名,密钥对应的是密码。
正是地址和密钥使得让账号持有人自证身份成为可能。其关键在于地址是通过某种加密算法从密钥中算出来的。
在这里,我们不详细展开加密算法的具体实现。简单来说,加密算法使得地址和密钥有以下两个特点:
- 从密钥算出地址很简单,但是从地址几乎不可能反推出密钥。所以只要我们保管好自己的密钥,别人无法通过地址获得我们的密钥。
- 加密算法还有配套的验证算法:我们用密钥进行某种计算,然后把结果展示出来。这样别人可以通过这个运算结果,判断我们的地址与密钥是否匹配,却也无法通过运算结果反推密钥。
去中心化 ID 实质上也是 ID 的一种。我们用 DNA、指纹、护照号码来区别每个人,去中心化 ID 让每样事物都有了自己的身份、自己的”指纹“。
任何事物都可以有 DID
是的,凡是能抽象成数据的事物都可以有自己的 DID。不光是人,证书、证件、电影票、农产品等等都可以有。只有你想不到,没有 DID 表示不了。甚至抽象的关系也可以有 DID,比如你对房子的所有权,或者你和朋友的关系。
如果是这样,DID 会不够用吗?
理论上来说,不会。原因很简单:DID 太多了。
多到什么程度呢?假设你有十亿个朋友,每个人每秒钟可以生成十亿个地址,需要比整个宇宙寿命还长的时间才会有重复的地址出现。
DID 完整流程
现在我们来走一遍通过 DID 自证身份的完整流程。
如果小明想证明他是某 DID 地址的所有人,首先他要用自己的密钥做某种运算,并将运算结果展示出来。这个过程其实就是签名的过程,最后的运算结果就是签名。然后任何人都可以拿小明的签名做某种验证运算。如果小明的密钥是正确的,那签名会通过验证,否则,小明的签名就无法通过验证运算。
通过这种方式,小明可以在不暴露自己密钥的前提下,不通过第三方即证明了自己是 DID 的所有人。
如果你现在对去中心化 ID 的概念还是觉得没有彻底掌握,那只需要记得:DID 让每样事物都拥有了自己的”指纹“,而持有某个 DID 的意思就是,持有这个 DID 的密钥。
接下来我们还会撰写发布更多关于去中心化 ID 的文章。如果你现在就想了解更多,可以看看 DID 是如何运作的。