# 以太坊中零知识应用现状（2）：隐私和身份


By [Kurt Pan](https://paragraph.com/@kurtpan) · 2023-04-22

---

[https://mirror.xyz/andyguzman.eth/ZZRLBlx2KjlNnQ84v1doMKg\_8QO-XRjYxFfT1Fm\_ZDw](https://mirror.xyz/andyguzman.eth/ZZRLBlx2KjlNnQ84v1doMKg_8QO-XRjYxFfT1Fm_ZDw)

_这是以问题视角分析以太坊零知识应用项目系列文章的第二部分。_

[上一篇文章](https://mirror.xyz/andyguzman.eth/p4nNk7Rr-2i-uZDO_lTHJEWtNv3nYt2N2z3Cwly8RHc)我们开始了这个系列，概览了目前在以太坊中使用零知识证明构造的应用。今天我们将深入探讨隐私和身份。

什么是隐私？
------

隐私可以定义为“能够控制谁可以看到或使用有关某事的信息”。隐私高度[依赖于上下文](https://alisafrik.wordpress.com/2020/01/13/how-do-privacy-preferences-depend-on-context/)，每个人自己的态度都是从他们自己的经验和对未来的愿景中形成的（参见[solarpunk](https://www.youtube.com/watch?v=hHI61GHNGJM) vs [lunarpunk](https://www.youtube.com/watch?v=QA3YZVDUN5s)）。

尽管如此，人们普遍认为以太坊的公开透明特性对许多用例来说非常有用，但很难用于其他用例，如支付、社交、投票等。我们并不想让每一比特信息上链，让每个人都可以看到。

因此我们可以说 ZK 空间中的很多类别其实也属于隐私的范畴。今天我们将讨论隐私身份（**zkID**）。

隐私和身份 (zkID)
============

身份上下文中的隐私是指：选择性隐藏或揭示实体、身份和属性/标识符之间的信息和关系的过程。

*   \*\*实体(entity)\*\*指任何独立的存在，例如人、公司或[DAO](https://ethereum.org/en/dao/#:~:text=A%20DAO%20is%20a%20collectively,manage%20the%20funds%20or%20operations.)。
    
*   \*\*身份(identity)\*\*指引用实体的任何间接方式。例如以太坊地址。
    
*   \*\*属性(attribute)、标识符(identifier)或凭证(credential)\*\*是与身份相关的任何事物，例如声誉和交易历史。
    

在不同的上下文中选择性地揭示信息是 zkID 将权力还给用户，实现隐私、匿名和伪匿名的方式。向他人揭示该信息的行为是通过\*\*声明(claims)**或**证明(attestations)\*\*进行的。

![一个实体：3个身份：N个凭证，标识符和属性](https://storage.googleapis.com/papyrus_images/726589da34edbada714f7fff57f4f8c531640b7803e8539109c8ae74f1bd3837.png)

一个实体：3个身份：N个凭证，标识符和属性

_例如：我是 Andy（实体），我交互的方式之一就是用我的以太坊地址：0x03EaB5c696Deaf3c44046254E7cb967a4dC173ea（身份），持有参加 Devcon 的 POAP（凭证）并在链上投票（标识符）_

当我们讨论隐私光谱时，可以将其简化为：

*   **公开：行为、属性或标识符**可以追溯到身份**和**实体。
    
*   **伪匿名：行为、属性或标识符**可以追溯到身份，但不能追溯到实体。（这是以太坊地址的默认情况）
    
*   **匿名：行为、属性或标识符**无法追溯到实体**或**身份。
    

![凭证提供者提供证明](https://storage.googleapis.com/papyrus_images/41f49cdc9f864096c4a6cd2a5233a2f57b4349ad3d1812358c96008a9111cbd9.png)

凭证提供者提供证明

提供凭证、声誉或徽章标识符的实体称为凭证提供者或证明者（attesters）。一般凭证提供者用于机构，证明者用于点对点情况，但也可以互换使用。这意味着任何人都可以成为证明者，包括你自己！

![](https://storage.googleapis.com/papyrus_images/4aca0d3f090e38adf2b7cd93ee1524c4f5c7b41b835c8677c66d0f2330126a21.png)

通过有选择地揭示凭证或属性的一个方面，身份可以做出有用的声明。使用这些匿名凭证进行声明的几个例子是：

*   证明：
    
    *   居住地、国籍、年龄、教育程度、熟练程度、出席、声誉、使用、贡献、证书、团体成员资格等。
        
*   例如：
    
    *   “我证明我住在 X 国，但你对我一无所知”
        
    *   “我证明我为 X 项目做出了贡献，但你无法了解其余的历史。”
        
    *   “我证明我持有可以成为这个团体一员的有效的凭证，但不会透露我的身份。”
        

我们来探索 zkID 中的一些重要问题空间。

_免责声明：_

1.  _项目按字母顺序组织。_
    
2.  _我知道我会在第一版错过很多伟大的项目。我尽了最大努力研究生态，但如果我错过了你的项目，请告诉我，这样我就可以向全世界分享你的精彩！_
    
3.  _项目可以分为不同的类别，任何分类在一定程度上都是主观的。这只是我在撰写本文时的一种心理模型。这种分类可能会随着反馈和本报告的未来版本而发展。_
    

证明者平台
-----

这组应用可以去隐私地证明区块链已知的事实。例如：NFT 的所有权、徽章、声誉（可泛化为代币）、以太坊地址的所有权，甚至以太坊地址的历史事实。

通过提出声明但不留下身份的任何痕迹（打破了属性<>身份链接）提供了匿名性，这也是一种防[人肉搜索](https://en.wikipedia.org/wiki/Doxing)的方法。一些示例项目包括：

*   [Relic Protocol：](https://twitter.com/RelicProtocol)使用 ZKP 来证明关于任意以太坊状态历史的事实，允许用户根据他们的历史链上活动来证明他们的声誉。
    
*   [Sealcred NFT：](https://twitter.com/sealcred)使用 ZK 徽章构造假名身份。可以证明 NFT 的所有权，且无法追溯到你。
    
*   [Sismo Badges](https://docs.sismo.io/sismo-docs/what-is-sismo/sismo-badges)：从帐户（web2 或 web3）导出构造徽章，SBT。徽章证明有关用户数字身份的事实。
    
*   [zCloak zkID:](https://twitter.com/zCloakNetwork) 是一个制作和证明凭证的平台。 专注于以用户友好的方式与 W3C DID 和可验证凭证协议进行交互。
    

_此空间中值得一提的其他概念验证项目包括_[_SpartanLabs zkZBT_](https://github.com/SpartanLabsXyz/zk-sbt/)_和@backaes/@shreyjaineth_ [_ZK SBT_](https://github.com/enricobottazzi/ZK-SBT)_。_

自定义证明创建
-------

*   [Sismo Factory：](https://factory.sismo.io/) Sismo 是一种模块化协议，颁发 ZK 徽章 (SBT)，尊重用户隐私和主权的前提下进行声誉移植和聚合。Sismo Factory 允许任何人创建自定义 ZK 徽章。
    

_该领域著名的非 ZK 项目包括_[_Ethereum Attestation Service_](https://twitter.com/eas_eth)_和_[_Optimisim Attestation Station_](https://community.optimism.io/docs/governance/attestation-station/#events)_。_

身份互操作性（Web2->Web3）
------------------

_这个子类别也属于互操作性，但由于与身份的关系，我们这里将强调这个角度。_

大多数凭据和交互仍在 Web2 世界中发生。以去中心化和匿名的方式将凭证、属性或证明（身份）从 Web 2 桥接到 Web 3 是引入[下一个十亿用户](https://archive.devcon.org/archive/watch/6/ethereum-for-the-next-billion-who-are-your-next-billion/?tab=YouTube)的关键。

与该空间相关的一些例子是将 Twitter 和 GitHub 可信度移植到 web3（如上所示），但还会包括银行信息、组织从属等。

*   [TLSNotary](https://tlsnotary.org/)提供数据真实性的证明。允许从任何 Web 应用导出数据并在不损害隐私的情况下证明有关数据的事实。TLSNotary可以为 Web 上的任何数据创建其真实性的密码学证明。
    
*   [Sealcred Email](https://twitter.com/sealcred)使你能够证明你拥有来自特定域名（即@google.com）的电子邮件。提交电子邮件后将在域外创建一个令牌。这意味着你可以证明对电子邮件域的所有权，而无需让它追溯到你。
    
*   [ZK Email：](https://zkemail.xyz/)匿名验证电子邮件签名，同时屏蔽你想要的任何数据。每封电子邮件都可以被验证为发往/来自特定域名或子域名，或者在正文中包含一些特定的文本。这解锁了构造在任意电子邮件证明之上的复杂应用逻辑的可能性。
    

身份证明/存在证明
---------

身份证明（Proof of Personhood）无需过多解释的。值得一提的是，它越来越多地被用作一种[反女巫](https://gov.gitcoin.co/t/knowledge-transfer-characterizing-the-sybil-resistance-problem/11235#wait-what-are-sybil-attacks-4)机制。

*   [Interep](https://interep.link/)反女巫即服务。用户可以从 Twitter 和 Github 等平台匿名导出声誉，服务可以验证用户属于某个群体或满足特定的声誉标准，而无需透露他们的身份。
    
*   [Worldcoin](https://mobile.twitter.com/worldcoin)构造了 WorldID，这是一种保护隐私的身份证明协议（数字身份），可以证明你是一个真实而独特的人，同时充分保护你的隐私。
    

_注意：在此类别中值得一提的其他尚未利用 ZK 技术（据我所知）的项目包括_[_BrightID_](https://twitter.com/BrightIDProject)_、_[_Gitcoin Passport_](https://twitter.com/gitcoinpassport)_和_[_Proof of Humanity_](https://twitter.com/proofofhumanity)_，但是_[_zkPoH_](https://github.com/elmol/zk-proof-of-humanity)_确实为 Proof of Humanity 带来了一个隐私层。_

合规（KYC、AML、KYB）
---------------

zkCompliance 涵盖专注于保护隐私，同时仍满足特定司法管辖区的监管合规标准的应用。例如，通过这种方式，我可以证明我已经向安全提供商提供了我的 KYC 要求，而无需向所有人公开我的信息。这个过程很关键，因为数据和安全泄漏已经[暴露了数百万条信息](https://haveibeenpwned.com/)，我们正在限制暴露风险。

*   [Notebook Labs](https://twitter.com/NotebookLabs)：匿名 KYC 和灵魂绑定凭证，使用零知识证明为 Web3 构造匿名且可追责的身份。
    
*   [Noxx](https://twitter.com/no_doxx)是一种薪资和合规工具，使公司能够在不损害法律义务的情况下雇用假名人才。
    
*   [Polygon ID](https://twitter.com/0xPolygonID)：带有可编程隐私的身份系统，赋予能够创建与 web3 服务的可信交互的能力。
    
*   [KeyRing.Network](https://twitter.com/KeyringNetwork) 通过保护隐私的 KYC 访问 TradFi 支持的交易池。
    
*   [zkPass](https://twitter.com/zkPass)是一种基于安全多方计算和零知识证明的隐私保护去中心化 KYC 解决方案。
    

身份管理和聚合 - zkPassport、zkWallet、DIaaS
-----------------------------------

聚合和管理不同的身份，在不公开每个身份之间的关系的情况下使用其中一个或多个身份进行声明。

这个类别涵盖了很多不同的角度，_上下文_成为细分它们的关键因素。此类别的一个关键目标是最大限度地减少[信息泄漏，](https://en.wikipedia.org/wiki/Information_leakage)在这种情况下重复交互后匿名性或假名性可能会受到损害。

*   [Crypt-Keeper](https://github.com/privacy-scaling-explorations/crypt-keeper-extension)是一个浏览器扩展，可实现零知识身份管理和证明生成。
    
*   [Holonym](https://twitter.com/0xHolonym)是用于管理链上身份的 ZK 护照。
    
*   [Nuggets](https://nuggets.life/)经过验证的自主权去中心化身份和支付平台，作为可重用、可互操作的 ID，具有基于价值的声誉。
    
*   [Sismo Vault：](https://twitter.com/Sismo_eth)存储用于 web3 上隐私身份验证的密码学签名。Sismo Vault 允许用户以顺滑和隐私保护的方式向第三方证明有关其导入帐户的声明。
    
*   [Zuzalu passport](https://github.com/proofcarryingdata/zupass)：允许[Zuzalu](https://zuzalu.city/)居民存储与 Zuzalu 身份、声誉、活动等相关的个人数据，以及去共享这些数据的任何部分。
    

注意：[_Signata Project_](https://twitter.com/SignataOfficial) _是这个类别中另一个值得一提的项目，但（据我所知）没有用 ZK 技术。_

治理
--

这组 zkdApps 专注于治理环境中的匿名、假名或抗共谋。可以防止在投票、发信号或消息传递治理提案时出现反弹。

*   [AnonyZKVote](https://github.com/Harsh8196/AnonyZKVote)是一个为成长型社区服务的投票平台。利用 Discord 作为身份验证机制，使用零知识保护选民的隐私。
    
*   [Blind-OVOTE](https://github.com/aragonzkresearch/blind-ovote)是一种 L2 投票解决方案，通过将validity rollup思想与 zkSNARK 里的椭圆曲线盲签名相结合，在以太坊上提供链下匿名投票和链上绑定执行。
    
*   [zkPIN](https://github.com/zk-pin/pin)是一种称为承诺池的新协作机制，能够以信任最小化的方式签署或背书一个想法。问题很简单：你想签署或背书某个想法，但只有在有足够多的其他人也这样做时，你才会愿意公开地这样做。
    
*   [HeyAnoun](https://twitter.com/HeyAnoun)允许匿名持有者对提案提供反馈，同时使用零知识证明维护他们的隐私。
    
*   [Isokratia](https://nibnalin.me/dust-nib/isokratia.html)是一个信任最小化的治理平台，通过使用递归 SNARKS 进行链下投票。
    
*   [Open Vote Network](https://github.com/stonecoldpat/anonymousvoting)是一个 2 轮去中心化投票协议，具有所有通信公开、自我计票、选民隐私和无争议的特性。
    
*   [MACI](https://github.com/privacy-scaling-explorations/maci)（极简反共谋基础设施）是反贿赂、安全和隐私数字投票的基础层。MACI 通过使投票协调员以外的任何人都无法去验证特定用户如何投票，在区块链投票中使用 ZKP 来抵御共谋。
    
*   [Semaphore](https://semaphore.appliedzkp.org/)是一种协议，旨在成为以太坊 DApp 的简单通用隐私层。使用零知识，以太坊用户可以证明他们是某个团体的成员，并在不透露其原始身份的情况下发送投票或背书等信号。
    
*   [Vocdoni](https://twitter.com/vocdoni)是一种开源区块链投票协议，具有可扩展性、可审计性、抗审查性和匿名性。Vocdoni API 和 SDK 支持灵活、轻松和无缝地访问投票基础设施。
    

_其他值得一提的项目有：_[_Coeo_](https://showcase.ethglobal.com/hackfs/coeo)_（论坛）、_[_Ethereum Social Contract_](https://ethglobal.com/showcase/ethereum-social-contract-gwt57)_（去中心化司法）、_[_Emergence_](https://ethglobal.com/showcase/emergence-o3tns)_（DAO 健康与粘性）、_[_Om_](https://om-rose.vercel.app/)_（隐私数据存储层）_ [_Sacred_](https://www.thatsacred.place/)_是一个匿名论坛，旨在培育横向、包容和有效的社区。_[_Zero Voting_](https://zkvote.vercel.app/)_（匿名二次投票），_[_zkVoice_](https://ethglobal.com/showcase/zkvoice-fighting-plutocrat-dao-communities-ptrzp)_（反财阀投票）等。_

认证
--

ZKP 可用于在不交换口令等秘密信息的情况下对用户进行身份认证。

*   [Sismo Connect——](https://docs.sismo.io/sismo-docs/what-is-sismo/prove-with-sismo)应用单点登录——无论是在 web2 还是 web3 上。集成后，应用可以向用户请求私有的、细粒度的数据，而用户可以验证并有选择性揭示他们的数据。
    
*   [Heyauthn](https://github.com/vb7401/heyauthn) - 尝试为 ZK 身份带来跨设备钱包。使用设备上的生物识别身份认证来提供安全性和便利性。
    

社交网络 (DeSoc)
------------

在社交网络中的匿名或伪匿名交互。

*   [HeyAnon](https://twitter.com/heyanonxyz)是一种让那些在一个很酷群里的或在以太坊上做了某些酷事的人在 Twitter 上匿名广播消息的方式。任何参与群组或历史时刻的人都可以被验证，然后将其发布到信息流推送中。
    
*   [SealCaster](https://sealcaster.xyz/)是由 ZK 提供支持的[Farcaster](https://www.farcaster.xyz/)上的匿名消息传递方案
    
*   [UnirepSocial](http://unirep.social/)是一个建立在 Unirep 协议之上的社交网络系统，群组中的匿名成员可以在不透露身份的情况下给予、接受和证明声誉。
    
*   [SealCred Echo](https://twitter.com/SealCredNFT)使你能够使用 ZK 徽章匿名发推文。
    
*   [Zkitter](https://mobile.twitter.com/zkitterdev)是一个由 ZK 提供支持的匿名社交网络。
    
*   [ZK3](https://github.com/monemetrics/lensbot-docs/blob/master/docs/zk3.md)是一个 Lens 协议 + Semaphore集成，允许 Lens 协议的用户通过 ZKP 和群组成员证明来管理帖子交互（谁可以评论、镜像等）
    

一个值得一提的社会实验是[ETHdos](https://ethdos.xyz/)，使用递归 SNARK衡量你与某人比如说Vitalik的分隔程度 。另一个是[Truth](https://ethglobal.com/showcase/truth-2wbd7)，一个基于照片的社交媒体，需要在应用内拍摄照片（使用 ZKP 证明）。

匿名聊天和垃圾邮件保护
-----------

需要新的工具来管理匿名消息通信环境。

*   [RLN](https://rate-limiting-nullifier.github.io/rln-docs/)是一种基于零知识证明的构造，可以为去中心化的匿名环境启用垃圾邮件保护机制。Waku [RLN](https://rfc.vac.dev/spec/17/) 已被实现。
    
*   [Zk-chat](https://github.com/njofce/zk-chat)匿名和隐私聊天环境，使用 Interep 进行隐私保护注册和抗女巫以及用 RLN 进行垃圾邮件保护。
    

接下来是什么？
=======

在下一篇文章中，我们将探索隐私计算（zkComp）空间，以及更多的隐私身份， zkDefi。有太多值得探索的地方了！

另外这个列表只会随着时间的推移而继续增长！它可能已经过时了 😀 ZK 空间中有一个分享zkdApps 并交流项目的类别和成熟度的会很好。如果你有兴趣构造类似于[CNCF Radar](https://radar.cncf.io/)的项目/技术雷达 ，请联系我！

---

*Originally published on [Kurt Pan](https://paragraph.com/@kurtpan/2)*
