本文涵盖了去中心化身份的核心概念、互联网上身份的演变、Web3身份基础设施栈的逐层概述以及隐私原语的相关发展情况。我们会在未来的文章中探讨人格证明、合规性以及应用层。
Web3身份基础设施——2022年12月
身份是由与个人、实体或物体相关数据所组成的新兴属性。在现实世界中,它是我们在脑海中根据他人声誉及自我联想形成的一种思维概念;而在数字世界中,身份由两个部分组成:
·身份标识:用于识别单一主体的一组字符或数字
·与该主体有关的数据
为互联网创建一个身份层往往并不简单,因为人们对它的具体含义和运作方式缺乏共识。数字身份离不开情境,我们在网络上对于不同内容的差异体验往往也是建立在各类的情境之上。今天,我们大部分的数字身份不仅支离破碎,而且受到少数人的控制,他们不想让这些身份脱离自己的情境。
·企业将客户关系视为关键资产,不愿意放弃对这些关系的控制。到目前为止,它们也还没有找到这样做的合理理由,毕竟即使是临时身份也比它们无法控制的框架要好。
·当涉及到维护与客户和供应商的线上关系时,金融这类特定行业往往有独特的需求。
·政府有区别于其他类型组织的需求,例如,它们对驾驶执照和护照有着管理权。
这种模式让管理我们身份与数据的各方之间有了不同的权力划分。它限制了我们的自主权,让我们无法选择性地披露自己的信息,并在不同的环境中转移自己的身份,自然也就很难获得线上/线下的一致体验。
在Crypto和Web3兴起之前,去中心化的身份已经获得了不小的关注。其目标是让个人重新获得对其身份的自主权,而无需再依赖中心化的组织。与此同时,客户数据的滥用以及人们对大公司信任程度的减弱,也让去中心化成为了下一个互联网身份时代的核心要素。
去中心化身份的核心概念
去中心化身份标识和证明是去中心化身份的主要组成部分。DID会发布并存储在可验证的数据注册处,它是不受中心化管理的自主「命名空间」。除了区块链之外,去中心化的存储基础设施和P2P网络也可以作为VDR。
在这里,各类实体可以使用去中心化的公钥基础设施来认证、证明所有权,并管理他们的DID。与传统的网络PKI不同的是,它不依赖于中心化的证书机构作为其信任根。
有关身份的数据会被写成证明——它们是一个身份对另一个身份所作出的「声明」。我们可以通过PKI实现的Crypto签名来完成对这些声明的验证。
去中心化身份标识有4个主要属性:
·去中心化:其创建不依赖于中心化机构,各实体可以依据不同的环境自主创建相应的身份标识,以实现不同身份、角色和互动情况的分离。
·永久性:一经创建就永久地归属于实体。
·可解析性:可以用来揭示有关该实体的额外信息。
·可验证性:由于有了Crypto签名和证明,实体可以证明DID的所有权或声明,而无需依赖第三方。
这些属性将DID与其他身份标识区分开来,如用户名、护照和区块链地址。
万维网联盟是一个由不同组织、工作人员和公众组成的国际社区,共同致力于开发网络标准。W3C的DIDSpec定义了4个主要组成部分:
·体系:前缀「did」将告诉其他系统它正在与DID进行交互,而不是其他类型的身份标识,如URL、电子邮件地址或产品条形码。
·DID方法:向其他系统指定如何解释该身份标识。W3C网站上列出了100多种DID方法,通常与它自己的VDR有关,并有不同的机制来创建、解析、更新和停用身份标识。
安全团队:Defrost Finance被攻击事件简析:金色财经报道,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,Defrost Finance预言机被恶意修改,并且添加了假的抵押token清算当前用户,损失超1300万美元。攻击者通过setOracleAddress函数修改了预言机的地址,随后使用joinAndMint函数铸造了100,000,000个H20代币给0x6f31地址,最后调用liquidate函数通过虚假的价格预言机获取了大量的USDT。后续攻击者通过跨链的方式将被盗资金转移到了以太坊的0x4e22上,目前有490万美元的DAI在0x4e22地址上,有500万美元的DAI在0xfe71地址上,剩余300万美元的ETH被转移到了0x3517地址上。[2022/12/25 22:06:35]
·唯一身份标识:一个特定于DID方法的唯一标识,例如某特定区块链上的地址。
·DID文件:上述3个部分可以解析为DID文件,其中包括实体可以自我认证的方式,有关实体的任何属性/声明,以及实体额外数据存放地点的指示符。
去中心化身份标识和DID文件的解析
Crypto之作用
虽然公钥基础设施已经存在了很长时间,但Crypto通过Token网络的激励机制加速了它的采用。Crypto曾经主要由注重隐私的技术专家使用,现在已经成为了参与新经济的先决条件。用户需要创建钱包来自我保管他们的资产,并与Web3应用程序互动。在ICO浪潮、DeFi之夏、NFT热潮和Token化社区的推动下,用户拥有了比以往更多的密钥。随之而来的是一个充满活力的产品和服务生态系统,大大提高了密钥管理的便捷性和安全性。可以说,Crypto为去中心化身份基础设施及其采用提供了坚实的基础。
我们可以先来探探钱包,虽然钱包主要还是扮演着资产管理的功能,但Token化的实现以及链上历史记录已经能让我们展示自己的兴趣、工作和意见。私钥的丢失已经不仅限于金钱的损失,而已经更类似于护照或社交账号的丢失了。所以说,加密逐渐模糊了我们的个人身份与持有物品之间的界限。
不过,我们的链上活动与持有物只能部分反映我们的身份。区块链只是去中心化身份栈的其中一层,其他层将有助于解决一些重要的问题,比如:
·我们如何在网络和生态系统中识别和认证自己的身份?
·我们如何在保护个人隐私的同时证明一些事情?
·我们如何授予、管理和撤销对我们数据的访问?
·我们在能够掌控自己的身份与数据的情况下与应用程序互动?
这些问题的解决方案对未来的互联网影响深远。
在下面几节中,我将逐层概述Web3的身份栈,即可验证的数据注册、去中心化存储、数据的可变性和可组合性、钱包、认证、授权和证明。
去中心化身份基础设施栈
Web3身份栈
区块链作为可验证的数据登记处
区块链的分布式特性和不可变性使其适合作为可验证的数据登记处,用于发布DID。事实上,各种公链都有W3C的DID方法,例如:
·Ethereum,其中did:ethr:
代表Ethereum账户的身份
·Cosmos,其中did:cosmos:
:
:
代表一个Cosmos链间兼容的资产
·Bitcoin,其中did:btcr:
代表一个TxRef编码的交易ID,参考基于UTXO的比特币区块链中的交易位置
Beosin:SheepFarm项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,BNB链上的SheepFarm项目遭受漏洞攻击,Beosin分析发现由于SheepFarm合约的register函数可以多次调用,导致攻击者0x2131c67ed7b6aa01b7aa308c71991ef5baedd049多次利用register函数增大自身的gems,再利用upgradeVillage函数在消耗gems的同时累加yield属性,最后调用sellVillage方法把yield转换为money后再提款。本次攻击导致项目损失了约262个BNB,约7.2万美元。Beosin Trace追踪发现被盗金额仍在攻击者账户,将持续关注资金走向。[2022/11/16 13:10:39]
值得注意的是,did:pkh:
是一种与账本无关的生成性DID方法,旨在实现区块链网络的互操作性。根据CAIP-10标准,是账户ID,用于跨链的密钥对表达。
Fractal是一个身份配置和验证协议,用于需要独特和不同级别KYC用户的应用。在完成有效性和KYC检查后,FractalDID会被发布到相应的Ethereum地址上,并添加到相应的列表中。Fractal的DID注册表是Ethereum上的一个智能合约,交易方可以根据该合约查询FractalDID及其验证级别。
Kilt、Dock和Sovrin是用于自我主权身份的特定应用区块链。在撰写本文时,它们主要被企业用来向终端用户发放身份和凭证。为了参与网络,节点需要质押本地Token来处理交易、定义凭证模式,并执行撤销更新。
去中心化数据存储
虽然通用区块链也可以作为资产所有权和交易历史等不可改变类用户数据的数据源,但它们可能不适合于存储用户的大部分数据,因为编写并定期更新大量信息的成本相当高昂,并且其数据可见性还会危及个人隐私。
即便如此,Arweave这样特定于应用的区块链还是为永久存储而设计的。为了复制网络上存储的信息,Arweave会向矿工支付区块奖励和交易费用。矿工需要提供「访问证明」,以便增加新的区块。Arweave将把一部分费用交给一个永久性的资助基金,将来当通胀和费用不足以支付存储成本时,该基金将把这部分钱付给矿工。
Etherum和Arweave都是基于区块链的数据永久储存方案。在Ethereum上,每个全节点必须存储整条链的数据;而在Arweave上,处理新区块和新交易所需的所有数据都被记入每个单独区块的状态中,新的参与者只需从其受信任的同伴那里下载当前区块即可加入网络。
基于合约的持久性表明,数据不能被每个节点永久地复制和存储。相反,数据可以通过在多个节点上部署合约来实现持久性。这些节点会在一段时间内持有某项数据,并且每当他们用完后必须续约,以保持数据的持久性。
IPFS允许用户在一个点对点的网络中存储和传输可验证、有内容地址的数据。用户可以在自己的IPFS节点上保存他们想要的数据,使用专门的节点组或第三方的固定服务,如Pinata、Infura或Web3.storage。只要有一个节点在存储数据,数据就存在于网络中,并且可以在其他节点有需求时提供给它们。IPFS的顶层是Crypto经济层,如Filecoin和CrustNetwork,旨在通过创建一个长期数据持久性的分布式市场来激励网络的数据存储。
对于个人身份信息,受许可的IPFS可以用来遵守GDPR/CCPA的被遗忘权,因为它允许用户删除他们存储在网络中的数据。身份钱包Nuggets采用了这种方法,它通过让商家和合作伙伴运行专门的节点从而进一步实现了去中心化。
Sia和Storj是另外两个基于合约的去中心化存储解决方案,它在整个网络的多个节点之间加密和分割单个文件。两者都使用擦除编码,以确保数据可以在一些节点离线时保持可用;并且都有内置的激励结构,可供人们使用原生Token进行存储。
慢雾:GenomesDAO被黑简析:据慢雾区hacktivist消息,MATIC上@GenomesDAO项目遭受黑客攻击,导致其LPSTAKING合约中资金被非预期的取出。慢雾安全团队进行分析有以下原因:
1.由于GenomesDAO的LPSTAKING合约的initialized函数公开可调用且无权限与不可能重复初始化限制,攻击者利用initialized函数将合约的stakingToken设置为攻击者创建的虚假LP代币。
2.随后攻击者通过stake函数进行虚假LP代币的抵押操作,以获得大量的LPSTAKING抵押凭证。
3.获得凭证后再次通过initialized函数将合约的stakingToken设置为原先真是的LP代币,随后通过withdraw函数销毁LPSTAKING凭证获取合约中真实的LP抵押物。
4.最后将LP发送至DEX中移除流动性获利。
本次事件是因为GenomesDAO的LPSTAKING合约可被任意重复初始化设置关键参数而导致合约中的抵押物被恶意耗尽。[2022/8/7 12:07:06]
数据突变与可组合性
通用区块链、Arweave和IPFS都保证了数据的不变性,这对静态NFT艺术品和永久记录等数据来说非常重要。然而,我们今天与大多数应用程序的交互活动会不断地更新我们的数据。为可变数据设计的Web3协议就是为了实现这一点而创建的,它充分利用了底层的去中心化存储层。
Ceramic是一种去中心化数据突变与可组合性协议,它通过从IPFS或者Arweave这样的持久性数据存储网络获取不可变的文件,并将它们转换成动态数据结构。在Ceramic中,这些「数据流」类似于它自己的可变分类账。私人数据可以通过在Ceramic上建立索引进行链外存储,附加到通往外部私人存储的DID数据存储上。
当用户在一个由Ceramic驱动的应用程序中更新他们的资料时,该协议会将这些更新验证到一个流文件中,将其转化为一个新的状态,同时保持对以前状态变化的跟踪。Ceramic上的每一个更新都由一个可以映射到多个地址的DID进行验证,从而让用户可以在没有服务器的情况下更新他们的数据。
目前来看,Web2平台拥有自己的用户界面和后端,用于存储和控制用户数据。谷歌和Facebook利用这些数据,借助算法来差异化我们的用户体验,从而进一步收集数据。新的应用程序必须从头开始吸纳用户,不能从一开始就提供个性化的体验,因而也有着更低的市场竞争力。
Web3实现了数据的民主化,为新产品和服务提供了公平的竞争环境,并为应用程序的实验和市场竞争创造了开放的平台。在一个用户可以把数据从一个平台带到另一个平台的世界里,应用开发者不需要从头开始便可以给用户带来个性化的体验。用户可以用他们的钱包进行登录,并授权应用程序读取/写入完全由他们自己控制的「数据库」。
Ceramic上的ComposeDB是一个去中心化的图表数据库,应用开发者可以用GraphQL发现、创建、再利用可组合的数据模型。图表中的节点是账户或文件,其边界则代表了节点之间的关系。
DID代表了可以向图表中写入数据的任何实体,例如终端用户、应用程序或任何认证服务。
模型是存储有关文档数据结构、验证规则、关系和发现信息的元数据Ceramic流文件。开发人员可以创建、组合或混合模型,以形成可以作为其应用程序数据库的数据复合体。这将取代传统的用户表,其中包含中心化的UID和相关数据。应用程序可以构建在用户控制的公共数据集之上,而不用管理自己的独立表格。
由于应用程序在用于特定环境时可以无需权限地对模式进行定义,策展市场也因其可以为最有用的数据模型提供信息而变得非常重要。在以这些数据模型运行的市场当中,应用程序可以为这些模型提供反馈,从而进一步优化它们。这激励了公共数据集生成更好的分析和图表,以便产品能在此基础上完成更多的创新。
Tableland是用于可变、结构化关系数据的基础设施,其中每个表格都是作为EVM兼容链上的一个NFT被铸造的。NFT的所有者可以为其表格设置访问控制逻辑,允许第三方在有合理写入权限的情况下对数据库上执行更新。Tableland运行着一个链外验证者网络,用于管理表格的创建和后续的数据变化。
Grim Finance 被黑简析:攻击者通过闪电贷借出 WFTM 与 BTC 代币:据慢雾区情报,2021 年 12 月 19 日,Fantom 链上 Grim Finance 项目遭受攻击。慢雾安全团队进行分析后以简讯的形式分享给大家。
1. 攻击者通过闪电贷借出 WFTM 与 BTC 代币,并在 SpiritSwap 中添加流动性获得 SPIRIT-LP 流动性凭证。
2. 随后攻击者通过 Grim Finance 的 GrimBoostVault 合约中的 depositFor 函数进行流动性抵押操作,而 depositFor 允许用户指定转入的 token 并通过 safeTransferFrom 将用户指定的代币转入 GrimBoostVault 中,depositFor 会根据用户转账前后本合约与策略池预期接收代币(预期接收 want 代币,本次攻击中应为 SPIRIT-LP)的差值为用户铸造抵押凭证。
3. 但由于 depositFor 函数并未检查用户指定转入的 token 的合法性,攻击者在调用 depositFor 函数时传入了由攻击者恶意创建的代币合约地址。当 GrimBoostVault 通过 safeTransferFrom 函数调用恶意合约的 transferFrom 函数时,恶意合约再次重入调用了 depositFor 函数。攻击者进行了多次重入并在最后一次转入真正的 SPIRIT-LP 流动性凭证进行抵押,此操作确保了在重入前后 GrimBoostVault 预期接收代币的差值存在。随后 depositFor 函数根据此差值计算并为攻击者铸造对应的抵押凭证。
4. 由于攻击者对 GrimBoostVault 合约重入了多次,因此 GrimBoostVault 合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在 GrimBoostVault 合约中取出了远多于之前抵押的 SPIRIT-LP 流动性凭证。随后攻击者使用此 SPIRIT-LP 流动性凭证移除流动性获得 WFTM 与 BTC 代币并归还闪电贷完成获利。
此次攻击是由于 GrimBoostVault 合约的 depositFor 函数未对用户传入的 token 的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对 depositFor 进行重入获得远多于预期的抵押凭证。慢雾安全团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。[2021/12/19 7:49:04]
链上和链外更新均由一个智能合约处理,该合约使用baseURI和tokenURI连接至Tableland网络。借助Tableland,NFT元数据可以经访问控制被修改、使用SQL进行查询、并且可以与Tableland上的其他图表进行组合。
就像ERC-20和ERC-721这样的智能合约标准为dapp提供了一个创建和转移Token的共享语言,数据模型标准也让不同的应用程序之间实现了资料、声誉、DAO提议和社交图谱的相互理解。由于任何人都可以向公共登记处进行提交,这些数据可以被多个应用重复使用。
应用程序与数据层的分离可以让用户在不同平台之间转移自己的内容、社交图和声誉。应用程序可以在各自的环境中使用相同的数据库,这样用户就能跨平台获得一个可组合的声誉。
钱包
广义上讲,钱包由用于密钥管理、通信以及声明展示和验证的接口和底层基础设施组成。
我们需要区分Crypto钱包和身份钱包:Crypto钱包存储区块链网络特有的Crypto密钥,用于发送/接收Token和签署交易;身份钱包存储身份,并允许用户创建和提出声明,这样他们就可以跨应用/平台展示身份数据。
身份钱包的例子包括ONTO、Nuggets和PolygonIDWallet。一些身份钱包,如Fractal将活跃度检查和KYC作为其上线流程的一部分,所以用户可以向有这种需求的应用程序展示他们的声明,不过这种情况在Crypto钱包中并不常见。身份钱包更有可能支持W3C所认可的DID、可验证凭证和DIDComm的实现,以及除Web3之外的用例。
慢雾:Spartan Protocol被黑简析:据慢雾区情报,币安智能链项目 Spartan Protocol 被黑,损失金额约 3000 万美元,慢雾安全团队第一时间介入分析,并以简讯的形式分享给大家参考:
1. 攻击者通过闪电贷先从 PancakeSwap 中借出 WBNB;
2. 在 WBNB-SPT1 的池子中,先使用借来的一部分 WBNB 不断的通过 swap 兑换成 SPT1,导致兑换池中产生巨大滑点;
3. 攻击者将持有的 WBNB 与 SPT1 向 WBNB-SPT1 池子添加流动性获得 LP 凭证,但是在添加流动性的时候存在一个滑点修正机制,在添加流动性时将对池的滑点进行修正,但没有限制最高可修正的滑点大小,此时添加流动性,由于滑点修正机制,获得的 LP 数量并不是一个正常的值;
4. 随后继续进行 swap 操作将 WBNB 兑换成 SPT1,此时池子中的 WBNB 增多 SPT1 减少;
5. swap 之后攻击者将持有的 WBNB 和 SPT1 都转移给 WBNB-SPT1 池子,然后进行移除流动性操作;
6. 在移除流动性时会通过池子中实时的代币数量来计算用户的 LP 可获得多少对应的代币,由于步骤 5,此时会获得比添加流动性时更多的代币;
7. 在移除流动性之后会更新池子中的 baseAmount 与 tokenAmount,由于移除流动性时没有和添加流动性一样存在滑点修正机制,移除流动性后两种代币的数量和合约记录的代币数量会存在一定的差值;
8. 因此在与实际有差值的情况下还能再次添加流动性获得 LP,此后攻击者只要再次移除流动性就能再次获得对应的两种代币;
9. 之后攻击者只需再将 SPT1 代币兑换成 WBNB,最后即可获得更多的 WBNB。详情见原文链接。[2021/5/2 21:17:59]
身份钱包的实例
WalletConnect*是一个连接钱包和dapp的通信协议。作为一种极简、无偏见的协议,WalletConnect已经为数百万Crypto用户提供了服务,在加速自主身份基础设施的采用方面,它可能要优于DIDComm。与DIDComm不同的是,DIDComm需要服务供应商提供托管调解器基础设施,而WalletConnect将信息存储在中继网络的「云邮箱」中,当钱包重新上线时,该网络会将这些信息推送给钱包。
认证系统
认证系统会根据一个或多个认证因素来确认用户的身份,该因素可以是用户的持有物,也可以是系统已知的信息或生物特征信息。
互联网上认证的演变
在去中心化的身份范式中,用户可以使用钱包来认证自己的身份。在后台,钱包会使用其存储的密钥来生成数字签名,作为持有者拥有与该账户相关私钥的「证明」。由于Crypto钱包可以生成签名,提供Web3登录的应用程序能够让用户用他们的Metamask或WalletConnect进行认证。
多年来,Crypto原住民通过「连接钱包」(ConnectWallet)与dapp进行交互,他们通过这个基本操作指定自己想要使用的帐户。Dapp不会记住任何关于已连接用户的信息,每次用户在访问站点时,dapp都会将他们视为一张白纸。
今天,用户与dapp有了更深层次的交互模式。去中心化的身份信息在这里变得非常有用,因为它允许应用程序访问用户的更多信息,从而提供个性化的体验,同时让个人保留对自己数据的控制权。
对于更为丰富的交互场景,如加载用户偏好、配置文件或私人聊天消息,应用程序需要首先确保它们是在与帐户背后的实际密钥持有者进行对话。虽然「连接钱包」没有提供这种保证,但身份验证标准却可以做到。身份验证系统与用户建立了对话,并允许应用程序安全地读写他们的数据。
Sign-InwithEthereum(SIWE)是由Spruce、ENS和Ethereum基金会共同制定的认证标准。SIWE标准化了一种消息格式,从而让用户可以使用基于区块链的账户登录服务。Sign-InwithX在此基础上让SIWE成为了Ethereum版本的SIWx,并令该标准适用于不同的区块链。
对于个人来说,这意味着他们可以用他们的Web3钱包注册或登录,而不需要创建用户名和密码,同时保证对其在线身份的自主权。应用程序可以将此作为一种针对于Web3原生受众的市场策略,从而满足用户的需求。
从中期来看,使用加密钱包登录dapp和其他Web2平台将改善Web3原住民的用户体验。然而,这也让用户面临着Web2中的相关性和跟踪问题。鉴于此,通过PeerDID或自我认证身份标识进行身份验证便可以作为一种替代方案。
与上面「普通版」的DID不同,PeerDID可以在2个或N个已知方之间使用。它们可以被用作每个服务或交互的唯一身份标识。该数字身份中的Crypto钱包地址可以与VC一起存储,作为每次商家或服务互动时的验证证明。
授权与访问控制
认证确认了用户的身份,而授权决定了一个实体能够访问哪些资源,以及他们可以如何使用这些资源。这两个过程相互独立,但在用户体验的设计流程中往往又相辅相成。在用社交账号登录到第三方服务平台后,用户可能会收到如下的授权请求:
授权请求的实例
在联合身份范式中,你可以授权第三方应用程序查看或更新存储在身份提供者那里的数据,它们会负责维护你授权给这些应用程序的应用程序列表和相关权限。Web3授权基础设施和标准有助于实现同样的目标,只是在这种情况下你享有自我主权的数据,并且可以授予每个第三方解密/阅读/更新数据的权利,而不再需要依靠中心化平台。
随着Token化社区的兴起,Collab.Land、Guild和Tokenproof等Web3Token门槛产品也相继出现。这些工具的一个主要用途是对会员专用的Discord频道进行访问控制,以及基于角色和声誉的精细化访问。社区可以根据Token持有量、链上活动或社交验证,通过编程的方式授予访问权,而不用手动分配访问权。
Lit是一个去中心化的密钥管理和访问控制协议,它使用MPC技术在Lit网络节点之间分配私钥的「权限」。公钥/私钥对由PKPNFT表示,其所有者是该密钥对的唯一控制者。当任意定义的条件得到满足时,PKP的拥有者可以触发网络的聚合机制,从而以他们的身份解密文件或签署信息。
在访问控制方面,Lit让用户可以设置链上条件,从而获取链外资源。例如,DAO可以上传一个文件到Arweave或AWS,使用Lit加密,并定义一组条件。符合条件的钱包会签署并向协议节点广播一条消息,协议节点检查区块链以确保签署者符合条件。如果条件符合,协议会为签署者合成密钥以解密文件。该基础设施也可以用来打造Web2的体验,如Shopify折扣、设有Token门槛的Zoom会议和Gathertown空间、直播以及谷歌云端硬盘访问。
Kepler可以围绕用户控制的数据保险库组织数据,这些数据库代表了数据的指定主机列表,它将作为一个智能合约,持有唯一具备控制权的密钥。这些数据库可以由可信方、跨主机的共识机制、资源所有者和许可有效性来管理。任何使用SIWE的人都可以立即利用私人数据保险库来存储他们的偏好数据、数字证书和私人文件。由于其支持多个存储后端的「自带存储」,用户也可以进行自我托管或使用托管版本。
下面的这些例子向我们展示了应用程序可以如何运用构建模块的组合:
·?Orbis是一个社交类应用,它使用Ceramic进行数据存储和更新,DM在存储之前会首先通过Lit进行加密
·Lit可以作为一个去中心化的加密系统,用于委托他人来解密你的Tableland数据
·Kepler可以将CeramicDocuments用作信标,以路由至私人存储区
·LitPKP可以「拥有」应用程序的Ceramic流,LitAction也将有权在满足任意条件下签署和更新数据库
CACAO是一个用于表示通链对象能力的标准,它是使用Sign-in-WithX来创建的。CACAO定义了一种将SIWx签名操作的结果记录为基于IPLD的对象能力(OCAP)方法,不仅创建了一个身份验证的事件记录,而且还为可验证的授权创建了一个可组合且可重播的授权书。
授权方法让用户可以授予应用程序以精细化、可验证的方式范围精准的查看/更新数据。并且,由于这些方法会设置一定的期限,所以人们不用在每次更新时都去进行签名,而是能够在应用程序上进行丰富的互动,并在期限结束时签署一次就可以了。
证明与凭证
如图所示,我们到达了去中心化身份基础设施栈的顶端:
·证明能够确定一项声明和签名是否有效,它们的出现是源于对已记录事件进行独立验证的需要。
·凭证是详细说明一个实体相关信息的文件,由另一个实体或他们自己书写并签署,兼具防篡改性和可加密验证性,并且可以存储在钱包里。
可验证凭证是W3C可验证凭证规范所定义的可加密数字凭证的标准数据模型和表示格式:
·发行者是凭证的签发方
·持有者拥有凭证
·验证者负责验证凭证
·可验证的呈现是指用户与第三方分享他们的数据,第三方可以验证该凭证确实是由发证方所签署
注意:这里的发行者、持有者和验证者都是相对的概念,每个人都有自己的DID和各自收集的凭证。
凭证是构建声誉的基础,而声誉本质上是一种社会现象,会随环境的变化而变化。实体可以借助一个或多个凭证对外展示其资质、能力或权威。这就好比任何人都可以声称自己毕业于名牌大学,但这样说并不会赢得他人的信任,只有大学颁发的证书才能证明这一点。
虽然Web3原生的徽章和某某证明项目并不都遵守W3C的VC标准,但我们可以从上面描述的系统中找到相似之处。
·最直接的例子便是不可转让的NFT徽章,只有完成了一些链上活动的钱包才可以铸造它。由于所有的交易历史都在链上,所以它从一开始就具备可验证和防篡改的特性。DegenScore通过汇总你与DeFi协议的互动来量化你的徒指数,并根据智能合约上的规则输出一个分数。你可以把它铸造成NFT,并将其作为一个「DeFi证书」保存在你的Crypto钱包中。如果有某个DegenDAO对该分数做出了限制,你就可以向它展示这个NFT,相应的Token门槛协议会对其进行验证,成功之后你便可以加入该DAO了——徒证明
·?POAP可以证明你参加了某个活动或在现实生活中遇到了某人——出席证明/相遇证明
·?Otterspace允许DAO决定什么是有意义的工作,并为其成员颁发ntNFT徽章;
·?Proved要求DAO在使其成员为其铸造DAO特定的NFT徽章之前「签署」一项声明——贡献证明
·?101会在线上课程结束以后给通过考试的学生颁发ntNFT——学习证明
·?Kleoverse会根据Github数据向用户发放Typescript、Rust或Solidity能力徽章——技能证明
除了上面提到的访问控制用例,LitPKP还可以作为Crypto公证人,让LitActions在签署证书之前对其进行检查。例如,某些去中心化的教育平台可以让课程创建者自己定义考试通过的标准,将这些条件部署为LitAction,并根据这些条件使用其PKP以编程方式发布VC。
这里出现了2个问题:这些证书数据点中哪些是有意义的?我们如何将它们汇总以获得声誉?
OrangeProtocol对此提供了一个解决方案:通过模型提供者将这些数据点整合到定义明确的模式中。在Orange上,MP一般是指在其系统内有声誉评估措施的平台。「数据提供者」的数据会被用于模型提供者设计的模型之中,然后MP会添加计算方法,将声誉标记分配给不同的实体,并将这些模型提供给其他人使用。Dapp可以为他们的用例策划并嵌入这些声誉模型。
到目前为止,Aave、Gitcoin、Snapshot、DAOHaus等已经将他们的数据提供给Orange。这些数据由他们和其他项目如Dework、talentDAO和CryptoSapiens建模,从而为成员提供ntNFT。这为使用CollabLand和Guild完善Discord许可,以及Snapshot的声誉加权治理等工作创造了大量的机会。
隐私问题
我们在讨论身份基础设施时不能不考虑隐私问题和实现隐私的技术原语,因为隐私在栈的所有层面都很重要。在过去十年中,区块链的采用加速了zk-proof等加密原语的研发,它除了可以应用在rollup等扩展技术中外,还允许身份对可公开验证的信息做出有细微差别、保护隐私的声明。
隐私保证有助于避免我们在使用完全透明的数据生成可信声明时所产生的负面外部性。如果没有这些保证,第三方机构就可以发起与原始交易无关的交互活动。利用密码学和zk技术,我们可以构建身份系统,其中涉及到的交互活动和数据共享可以在明确定义且与背景相关的范围内被放入「沙盒」之中。
「普通」可验证凭证通常采用JSON-JWT或JSON-LD格式,每个凭证都有外部或嵌入证明,从而使其具有防篡改和可验证的特性。
Zk-proof和新的签名方案加强了W3CVC的隐私保护特性,例如:
·反关联性:每当持有者分享凭证时,这个身份标识符都可以得到共享。因此,每次出示凭证时验证者都有可能串通起来,查看持有者在哪里出示他们的凭证,并将其定位到一个已识别的人身上。而有了盲签名之后,你可以每次都共享签名的唯一证明,而不共享签名本身。
·选择性披露:只分享VC的必要属性,而隐藏其余的属性。JSON-JWT凭证和JSON-LDLD-签名凭证都要求持有者与验证者分享整个凭证,不能进行「部分」分享。
·复合证明:将多个VC的属性合并到一个证明中,而不需要寻求发行者的帮助或生成一个新的VC。
·判断依据:允许在证明操作中隐藏验证者提供的真实数值。例如,证明持有者的账户余额超过一定的门槛而不透露其具体数额,或者在不透露生日的情况下证明你达到了法定饮酒年龄。
关于ZKP如何在凭证中保护隐私的简化图表
BBS签名方案是MATTR在2020年最初提出的一种颇具前瞻性的方法。该提案允许BBS签名与VC常用的JSON-LD格式一起使用。持有者可以有选择地披露原始签名凭证中的声明。该方案生成的证明是签名的零知识证明,这意味着验证者无法确定具体哪个签名被用来生成了证明,从而解决了关联性问题。
Iden3是一个zk原生身份协议,它提供了一个用于zk身份原语、身份验证和声明证明生成的可编程的zk框架以及开源库。该协议使用BabyJubjub椭圆曲线为每个身份生成密钥对,该椭圆曲线旨在有效地与zk-SNARK协同工作,后者用于以保护隐私的方式证明身份所有权和声明。PolygonID目前正在利用这一协议来建设其身份钱包。
在过去的几年时间中,应用型zkp吸引了Crypto社区的极大关注。在Web3中,它已经在以下这些程序中得到了应用:
·私人空投:Stealthdrop
·保护隐私但可信的证明:Sismo、Semaphore
·匿名通信:heyanon
·匿名投票:Melo
结语
这项研究的几点启示:
正如Crypto催化了DPKI的发展和采用,能够提供在线/IRL访问权限的可组合声誉也将成为去中心化身份基础设施的催化剂。目前,凭证发行协议在不同的用例和区块链网络中依旧处于零散状态。到2023年,我们将看到这些(如配置文件)的聚合层变得成熟起来,并成为一个统一的界面。如果它可以用来解锁加密以外的其他体验,如访问事件或电子商务折扣,那么它也将会有更高的使用率。
密钥管理仍然是容易出现单点故障的摩擦点。对于大多数Crypto原住民来说,这是一种尴尬的体验,同时也是大多数消费者完全无法触及到的事情。联合身份对Web1.0范式的用户体验做出了优化,允许用户使用单点登录的方式,而无需再记住不同的用户名与密码。虽然Web3认证的用户体验正在改善,但目前来看它提供的用户体验仍然不及预期——不仅需要记忆助记词,而且在密钥丢失时只提供有限的追索权。随着MPC技术的成熟和在个人和机构中的推广,这一点也将逐步得到完善。
Crypto原生基础设施正在满足用户在Web2中的需求。Web3原语开始与Web2应用程序和服务进行整合,为人们提供了去中心化的身份,例如Collab.Land与Nuggets的整合就让Reddit用户可以将他们的声誉作为VC来解锁访问。Auth0认证与授权中间件整合了作为身份提供商的SIWE,他们的2K企业客户现在除了SSO之外还可以提供钱包登录。
随着数据的民主化,策展机制需要得到进一步的证实。就像索引协议TheGraph会使用策展人和委托人的网络对最有用的子图发出信号一样,Ceramic和Orange等协议上有关用户和声誉的数据模型也需要充分的时间和社区的参与才能超越DAO和Crypto原生用例而走向成熟。
隐私方面也同样需要考量。项目在选择其栈时应仔细考虑公共存储或永久存储的影响。相对于保护隐私的VC、短期和PeerDID以及链上/链下活动的ZKP组合,「纯」公共数据ntNFTs可能适合有限的用例,这些活动提供了选择性披露、密钥转置、反相关和撤销等功能。
zkSNARK这样的新Crypto工具将是下一代身份基础设施的关键构件。ZKP目前正用于独立的用例,要想将其与应用设计模式、Crypto原语ZK电路的实施、电路安全工具和开发人员工具进行融合,研发部门还需要完成不少的工作。与此同时,这也是一个需要密切关注的问题。
去中心化身份是一个非常庞大的项目,单个团队很难独立完成。它的实现需要整个生态系统按照统一的标准,不断迭代原语,并相互检查设计决策的影响。
本篇探讨了去中心化身份栈的基础设施部分,下一篇我将讨论配置文件、抗女巫攻击、合规性和应用层,这些都将通过本文提到的构建模块来实现。
如果你正在这个领域进行建设,或者对这个话题有更多的想法,欢迎提出你的见解。
原文标题:《TowardsDigitalSelf-Sovereignty:TheWeb3IdentityStack》
原文作者:NichananKesonpat,1k(x)
原文编译:Kxp,BlockBeats
来源:区块律动
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。