数字身份 (digital identity),或自主身份 (self-sovereign identity) 是一种利用非对称性加密技术为网络交易提供认证,并确保交易的完整性和不可拒付性的技术。它是若干互联网活动的先决条件,如发证书、私人信息传递、当然还有金融业务。
密码还是密钥
“密钥作为身份”这个想法上世纪就已经存在了。然而,数字身份在当时并没有被普通用户广泛接受。主要原因无疑是使用这种系统太复杂了。非技术人员要如何方便、安全地把私钥保存在自己手上?他们无法做到。
结果是,当 web2.0 出现时,网络公司需要验证它们的用户,它们决定采用账户密码模式而不是公-私密钥对模式。在注册新账户时,用户创建他们自己记得住的密码,网络公司保存密码。之后,它们使用一种“大脑对数据库 (brain to database)”的验证方式来登录。
安全与中心化危机
这种简单模式行得通,但它也带来一系列安全问题。因为记住多套密码是很累的,用户倾向于在每个地方重复使用他们的密码。如果其中一个服务商以不安全的方式 (例如没有“加盐”、使用不安全的哈希函数等)存储用户的密码,并被攻破了,那么所有其他的服务都会陷入危险。
(译者注,在密码学中,在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐 (salt)”。这种处理可以增加额外的安全性。)
OAuth
OAuth 的发明就是为了解决这个问题。它使得小公司可以依赖现有的服务供应商。它们不需要运行它们自己的认证服务器,而只需要把这部分工作委托给一个用户已经拥有账户的第三方公司。尽管如此,即使像 Facebook 这样的巨头公司也有被发现存储密码纯文本并被泄露的情况。且不说中心化风险,很多采用 OAuth 的公司都受不断变化的政策影响。一旦一家公司被 OAuth 供应商禁止,整个业务都会崩塌。
如今,在这个行业里的人开始再次讨论账户-密码这种模式的替代方案。像 ?biometric、SMS 和 OTP 这些无需密码的解决方案是可行的,但在身份方面,密钥对似乎仍然是最终目标。我们相信区块链,即以太坊,将使数字身份得以复兴。理由如下:
如前所述,可用性是基于密钥对身份的首要问题。要求外行人用一个命令行工具对交易签名是不现实的。在使用一个去中心化系统时完全对保存密钥负责对他们来说也是非常可怕的。
用于存储私钥的商业级钱包
在加密货币领域的人都已经对所有这些概念非常熟悉了。随着工具的成熟,使用私钥进行签名从未如此简单。
多亏了 Dapp 和以太坊,越来越多的人有了拥有私钥并用它对交易签名的第一次体验。人们构建了大量浏览器扩展程序、移动应用、和硬件设备来满足不断增长的需求。这些便于使用的工具有利于数字身份的普及,即便这些工具不是为它而构建的。
不同于密码验证,公钥加密本身是无状态的,这意味着加密签名的有效性是和环境无关的。然而,在一些高级场景中,数字身份还是需要“状态”的。很多 GPG 用户会与一个 (某种程度上) 中心化的密钥服务器交互,以注册/替代/撤销他们的公钥。总的来说,我们仍然需要状态来丰富数字身份的可用性和表达力。
(译者注:GPG 是 GNU Privacy Guard 的缩写,它是美国软件公司赛门铁可推出的 PGP 加密软件套件的免费软件替代品)
身份的链上记录
区块链能完美满足为你的身份提供状态这个需求。不同于用 MIT 的服务器存储密钥记录,以太坊这个分布式账本在全世界有大约 5000 个副本。所有的记录都是可审计、防篡改和有经济确定性 (economical finality) 的。像 ENS 这样的项目正在为你的身份提供一个链上注册表。你可以为你的身份链接海外账户和添加元数据,实现这些都是无需许可的。
由私钥控制的账户 vs. 由代码控制的账户
此外,通过用智能合约实现访问控制,你在以太坊上的身份就是可编程的了。你可以为你的根身份 (root identity) 添加多签、社交式恢复,甚至失能开关 (dead man's switch) 这样的功能,同时保持日常使用的简易性。
尽管我们已经有许多用户拥有私钥了,但要让数字身份被更多人采用,我们在服务供应商方面还没有通用的解决方法。幸运的是,OAuth 已经被很多供应商采用了。把 OAuth 与基于密钥的验证结合起来,web2 公司可以用他们习惯的方式集成数字身份。
Eauth 是一个基于以太坊的,兼容 OAuth 的认证服务。集成者可以无缝地把数字身份作为 OAuth 的一个选项,而不需要任何密码学和 web3 钱包的知识。尽管使用 OAuth 通常意味着要把控制权交给第三方,但通过 Eauth 认证的身份将始终保持非托管状态。
用户、钱包和 web2 服务供应商通过 Eauth 沟通
无可否认,web2+以太坊登录并不能完美实现去中心化。去中心化的世界应该是完全无需许可和去信任的,但目前大多数的网络活动都仍然在 web2 服务器上进行。很可能的情况是 web2 和 web3 世界要并行一段时间。期间,Eauth 可以成为连接两个世界的桥梁。
来源 |?medium.com/pelith
作者 |?Ping Chen
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。