揭开数字身份的神秘面纱(1/2)

身份一直以来都是一个挑战,不仅在去中心化技术中,在一般的在线应用中也是如此。具有挑战的地方在于,人们不清楚“身份”的含义,以及它在数字产品、服务和网络中的多种形式。这是构建者经常感到困惑和沮丧的原因,导致许多人避免处理身份 ID 或实现短期的变通方法。每种身份系统都会产生巨大的影响,随着产品的使用和成熟,身份系统的重要性和复杂性都在增长。
编者注:根据上下文不同,数字身份根据上下文不同、存在多个表述方式:身份、身份 ID、身份系统。
本系列有两篇文章,将帮助你分解数字应用程序、服务和产品的身份,特别是对于去中心化架构和交互性的 web。其目的是将一个模糊的主题具体化,将一个大问题具体化,将一个困难而空洞的领域简单化分析。
第一部分分析身份在数字产品中的作用
包括:
· 数字身份的明确定义和范围;
· 它为你的产品或服务带来的价值;
· 常见的身份解决方案(如密钥对、链上 id、oauth 登录和自定义解决方案)。
第二部分分享了在数字身份基础实施上需要做些什么
包括:
· 身份系统该建立的关键标准;
· 它必须支持的 5 个特性和能力;
· 一个适合你的灵活的技术栈模型;
· 一天内实现未来架构。
数字身份是一个快速发展的领域,有着悠久的学术和实践贡献历史(我曾试图引用其中一些),因此并不总是容易被理解或接受。我的观点是通过帮助建立 uPort 和 3Box,参与社区标准,和合著一本关于身份的社会学的书来实现的。本系列决不是身份的完整历史或完整视图,但我希望它有助于使基础设施的关键部分更容易理解和构建。
身份是什么?
在社会学、心理学和生物学的领域里,没有一个公认的身份定义。学术界的研究范围从严格的类别集合到模糊的概念。著名心理学家埃里克·埃里克森说过:
一个人写的[身份]越多,这个词就越成为一个术语,它是深不可测的,因为它无处不在。
埃里克森后来创造了“身份危机”这个术语。

身份定义的模糊性被带入了数字世界。当技术人员谈到身份时,他们表达的含义范围可能非常广泛,亦或者与他们相关场景的某个子集。

这张图中描述的身份的各个方面是不一样的,并且每个方面的解决方案都有很大的不同,但是它们是高度相关的。理解这些元素如何在一个共同的框架下如何结合在一起是获得成功的关键,并且可以将身份从一系列孤立的痛点转化为产品架构中最大的简化和增值的地方之一。
无论你对身份的目标和技术需求是什么,理解应该从人的层面开始——这也是我们经常误入歧途的地方。尽管有不完善的定义和分歧,学者们几乎一致同意,与我们的本能和词汇相反,身份不是静态的、单一的或个人的。身份是动态的、多元的和社会性的。
如果我们希望构建一个真正连接的、可信的、可用的、可以扩展到全球使用的 Web3,我们应该在反映这一出发点的基础设施上构建。正如我们将看到的,强的身份 ID 不是僵化的、固定的和孤立的,而是灵活的、动态的和可互操作的。
身份在产品中的角色
如果你正在构建一个应用程序(或者钱包、服务、平台、网络),你可能需要用户。这些用户可能是主流消费者、开发人员、组织和/或去中心化组织。无论你服务的用户类型是什么,目标都是一样的:让其他人与你的产品互动,并从中实现价值。这意味着你想:
· 消除注册、认证和参与方面的摩擦
· 以最小的额外代价,提供尽可能丰富的经验
· 专注于你的核心增值点,无需闭门造车创建新的冗余的基础应用
· 该用户模型可以随你的需求随时间增长
这些目标的解决方案取决于你如何管理用户。他们如何认证(登录)?他们能互相交流(聊天/评论)吗 ?你能跨越时间、设备和登录提供持久和个性化的体验吗?你可以轻松地与用户所使用的许多其他产品和平台集成吗?
在传统的 web 应用程序中,这通常分为身份验证(与帐户创建、KYC 等相关)、身份验证(登录、防欺诈)和授权(权限、共享)。这种方法将随着更灵活的去中心化模型而改变。身份涉及到与如何管理、安全、服务和与用户群交互有关的所有内容。
身份需求随着成长而演变
随着产品的增长,管理用户群的需求也会迅速变化。
今天,你最大的“身份”痛点可能是在你的应用程序中填充基本的公开档案信息,以便用户能够识别彼此。下个月,它可能存储用户历史记录和应用程序状态的数据,比如过去的或进行中的事务(比如购物车)。下个季度可能是基本的 KYC,明年可能是反西比尔保护。这些产品需求中的每一个都有不同的潜在解决方案解决了不同的“身份”问题。
· 档案文件(Profiles): 我应该实现 oauth 还是一个映射到键的 IPFS 哈希?但是如果用户旋转秘钥或使用多个秘钥呢?
· 数据存储(Data storage): 我应该存储数据在 Textile ThreadsDB?但是我如何允许用户管理访问控制而不添加更多的键类型和摩擦呢?
· KYC/人类证明: 我应该使用像 Passbase 这样的服务还是 Democracy Earth 的技术?如何将此档案文件映射到现有用户?
· Anti-Sybil: 我应该使用 BrightID 或 Idena 这样的服务吗?那么我如何将它们的图表映射到我的用户基础上呢?
独立地实现这些解决方案显然有其自身的挑战,但是你最大的痛点将来自于没有从一开始就使用正确的身份基础设施以一种经得起未来考验的方式将它们联系在一起。
一个强大而灵活的身份基础设施可以使每一个新的需求自然地扩展到以前的需求,而不是新的孤立的挑战,这些挑战需要单独解决,然后再一起解决。
身份是一种基础设施
它可以让你有效地将任何信息与用户相关的功能绑定在一起。
良好的身份基础设施应该使满足你不断发展的与用户相关的需求变得简单和轻松。如果你曾经使用过 Okta 或 Rippling,你就会明白这是他们试图为企业做的事情。他们的目标是为用户和账户提供一个单一的记录系统,但是他们是在一个明确的、有限的、可控的企业环境中做到这一点的。在一个更加开放和未定义的环境中(比如 Web3),一个好的身份基础设施需要以一种可预测的方式在无许可和无限的上下文中工作。
这意味着你的身份基础设施必须具有足够的自定义能力,以满足你自己的需要,同时也必须具有足够的灵活性,以便能够很好地与许多其他现有解决方案一起工作。它应该是可扩展的,并且可以跨许多不同的网络、帐户/密钥和场景进行互操作。它不仅可以用于你正在使用的其他工具和服务,还可以用于你的用户正在使用的其他工具和服务以及你将来可能需要的其他工具和服务。这不仅将使身份管理变得更容易,而且将允许每个解决方案在其他解决方案的基础上创建复合价值。例如,KYC 验证可以利用现有的用户配置文件信息,而 anti-sybil 工具可以利用现有的 KYC(和任何其他)验证。
也许最重要的是,身份系统应该在不依赖于单个组织、平台或模型的情况下运行。身份基础设施应该是一个开放和共享的协议,身份本身应该是用户管理和自主权的。
没有适当身份基础引起的构建问题
单一密钥对身份
在当今的加密世界中,默认用户“身份”往往是一个公开的区块链帐户密钥。这是合理的,为什么会这样:区块链密钥已经需要管理资产,所以它们被用户广泛拥有,现在有许多伟大的钱包和 sdk 来管理它们。实际上,密钥和管理这些密钥的 KMS 解决方案(钱包)是验证到应用程序和执行链上交易的一种极好的方式,但是单个密钥对不能成为任何希望扩展到有意义和持久使用的产品的用户身份基础设施。
使用单个密钥对作为身份 ID 的问题:
· 侵犯隐私 不存在分离的或私有的活动,因为所有由相同“身份”的交易必须使用相同的公钥。
· 创建脆弱性: 当密钥用于签名和/或加密数据时,当密钥丢失或更改/旋转时,与你的产品相关的所有用户数据和历史都会丢失。
· 创建了隔离: 信息只能通过特定的密钥访问,没有机会在钱包和网络之间实现互操作性和可组合性。这与 Web3 的愿景背道而驰。
· 增加复杂性: 向堆栈中添加分布式数据库和其他用户技术非常困难,因为它们使用不同的加密身份和访问控制系统操作。
· 放弃网络效应: 你必须从头启动你自己的用户网络、配置文件和数据,而不是利用现有的数据来轻松地板上用户和跳过冷启动。
密钥对和钱包是 Web3 体验的核心部分,但它们应该补充(并与)优秀的身份基础设施紧密集成。
链上,网络特殊身份
在区块链生态系统中,依赖单一密钥对进行身份验证的局限性已经被充分理解,这导致了对基于智能合约的身份验证和特定于网络的身份标准的尝试。uPort 在 2016 年开创了基于以太中心智能合约的身份认证,2017 社会复苏[4],在 2018 年开创了EIP 1056[5](Joel Thorstensson, Pelle Braendgaard)。Fabian Vogelsteller 编写了多个版本的 ERC-725,还有许多人试图为以太坊或其他区块链网络建立多密钥身份模型。
使用链上的、特定于网络的标识符作为身份 ID 的问题:
· 泄露隐私: 使用链上注册中心或智能合约存储身份信息(如 ERC-725 或 ERC-1056)很可能会泄露用户隐私或控制权。PII 不应该进入不可变网络或数据存储。
· 网络锁定: 要求为你或你的用户利用的每个网络创建不同的身份,这会在跨链的世界中导致糟糕的开发人员和用户体验。
· 技术锁定: 随着新的区块链、技术和用户模式的出现,需要管理更多的时间、成本和复杂性。
· 互操作性有限: 无法轻易地从其他网络获取数据或身份。
虽然是对使用密钥的改进,但为单一网络构建的身份标准——依赖于单一的区块链,如以太坊——将我们锁在了新的隔离和比 web2 更糟糕的用户体验中。我们正在走向一个多链的未来,像 Filecoin、Arweave、Flow、Near、Celo 和 Solana 这样的网络都将上线,并为正在建立在以太坊上的东西增加价值。更好的系统需要将身份 ID(或身份)从任何特定网络中分离出来,这样就可以跨网络与密钥一起使用。
Oauth 登录
在短期内,某些应用程序可以很好地使用集中服务进行身份验证。这可以简化用户体验(特别是在改进的钱包 sdk 之前)。但是这种方法不适用于那些希望提供完美而完整的 Web3 体验的应用程序。Web2 登录是一种可行的身份验证方法,但不是身份解决方案。
使用 Oauth 服务作为身份 ID 的问题:
· 后端复杂性: 需要构建和维护用户表,以跟踪 oauth 令牌、内部用户身份 IF、用户的区块链帐户和其他用户信息(如资产、交易和数据)之间的内部映射。
· 零散用户数据: 登录方法和其他 web3 体验之间没有关联。这意味着随着其他 web3 产品使用的增长,开发人员错过了开放网络效应和围绕用户密钥构建的数据历史。
· 依赖于第三方身份验证: 身份验证能力依赖于位于你和用户之间的中间人服务,这增加了风险和复杂性。
· 昂贵且庞大: Web2 的中间商服务无法为高使用率的轻量级应用程序扩展;加密身份验证不仅更安全,而且更有效。
Web3 去中心化的密钥管理和身份验证从早期开始已经有了很大的发展,现在在用户登录和用户体验方面可以与 0auth 匹敌。这一领域的优秀产品,请参考:Magic, Torus, Metamask, Portis/Shapeshift, Argent, Rainbow 和 WalletConnect。
定制身份解决方案
认识到现有方法的局限性,许多应用程序或平台已经尝试创建满足其需求的自定义身份解决方案。这是可以理解的,在某些情况下被认为是更有利的。然而,大多数人很快就发现,身份之所以不仅在 Web3 中,而且在互联网出现之初就面临一系列困难的挑战,是有原因的。
使用自定义身份解决方案的问题:
· 高风险: 意外泄露用户隐私、丢失安全漏洞和脆弱性(如密钥撤销)、满足监管要求(GDPR 和用户删除数据的权利),很容易产生昂贵的重大风险。在不深入了解几十年来身份挑战的原因的情况下,涉猎这一领域是一个沉重的负担。往好了说,它增加了大量的复杂性,往坏了说,它会永久地损害用户和/或开发人员的信任。
· 技术脆弱性: 定制解决方案通常只针对定制的、特定的、预定义的用例。它们不能很好地扩展到应用程序中的其他新环境,或者应用程序之外的用例(和互操作性)。
· 生态系统排除: 自定义解决方案将你的用户(和他们的身份)与更广泛的社区开发的未来与身份相关的进步隔离开来,例如更好的找回选项、新的身份验证提供商、新的数据库和服务。为了便于使用,身份系统必须在密码学和模式中“使用同一种语言”,而定制解决方案通常不会这样做。
在开发好的去中心身份解决方案的过程中,可能需要一些定制实现,但关键是至少要构建在核心的轻量级标准之上,以确保未来可靠的、低风险的和更可扩展的身份功能。
统一身份系统优势
Web3 是一个跨越许多不同的区块链、分布式数据库和生态系统全球性的集体运动。身份是跨这些不同技术和社区的互操作性的最重要部分。虽然智能合约和资产互操作性很方便,但用户对 Web3 技术的采用依赖于跨应用程序持久、丰富和可管理的用户体验。
在一个终端用户需要同时处理许多钥匙和钱包(并跟踪在每个场景中使用哪个)的世界中,用户根本不采用 Web3。另一方面,Web3 相对于 Web2 现状最大的潜在竞争优势之一是共享的无许可网络,它允许开发人员在现有的用户、数据和体验的网络效应基础上共同构建和构建,速度比任何隔离的 Web2 产品都要快。
共享网络和网络效应是 Web3 相对于 Web2 最大的 GTM 优势。共享身份是利用这一点的关键。
如果 Web3 身份系统将用户和他们的数据资源隔离在每个区块链或应用程序中,我们就是在损害我们自己,因为 Web3 进步变成了部分的集合而不是它们的总和。我们的每一种产品都被锁定在一个更小、更弱、更没有吸引力的市场和性能集合中。
可互操作的身份将使用户可以带着他们的所有信息、声誉、声明、数据和身份无缝地在网络上移动,并将使开发人员不仅可以使用可组合资产,还可以使用可组合网络、用户、数据和服务进行构建。实现这一点的关键是一种基本的、共享的、灵活的身份标准,该标准适用于任何技术栈,为其提供新功能,并将其连接到正在成长的由其他同行组成的生态系统中。
揭开数字身份神秘面纱系列的第二部分概述了成功的身份标准的要求,探索了现有的工作,并帮助你开始构建。
待续: 第二部分: 一个伟大的身份系统的元素[6]
参考资料
[1]登链翻译计划: https://github.com/lbc-team/Pioneer
[2]will: https://learnblockchain.cn/people/617
[3]Tiny 熊: https://learnblockchain.cn/people/15
[4]2017 社会复苏: /uport/making-uport-smart-contracts-smarter-part-2-introducing-identitymanager-af656ba7441b
[5]EIP 1056: https://github.com/ethereum/EIPs/issues/1056
[6]第二部分: 一个伟大的身份系统的元素: https://learnblockchain.cn/article/1457
[7]Cell Network: https://www.cellnetwork.io/?utm_souce=learnblockchain