ZKLogin 与隐私增强身份验证

ZKLogin 是一种结合 OAuth 与零知识证明的链上认证机制,允许用户在不暴露身份的前提下完成登录验证。它解决了传统签名登录中地址公开、隐私缺失的问题,已在 Sui 网络中率先落地,并正逐步成为 Web3 身份基建的重要方向。

Web3 登录的隐私困境

Web3 登录系统传统上依赖钱包签名(EIP-191 或 EIP-712)作为身份认证方式。然而,这种方式会直接暴露用户的公钥地址,使用户行为在链上被永久记录、可被第三方分析、追踪。这种“透明性”虽符区块链精神,却违背了现实世界中对隐私与最小披露的需求。

尤其当 Web3 用户希望同时保持去中心化特性与身份保护时,这种设计成为关键障碍。随着链上应用向游戏、社交、治理等更贴近真实身份的场景拓展,隐私增强型认证系统成为迫切所需

因此,需要一种方式,既能证明“我是合法用户”,又不需要暴露链上身份本体 —— 这正是 ZKLogin 的切入点。

ZKLogin:零知识驱动的认证机制

ZKLogin 是一种基于零知识证明(ZKP)的链上身份验证机制,其核心目标是:

在不暴露 OAuth 身份信息的前提下,实现链上认证与账户绑定。

✅ 原理概览

  • 用户使用如 Google 等 OAuth 平台登录,获取 id_token(JWT)
  • 在本地通过 ZK 电路对该 JWT 的合法性生成零知识证明(zkProof)
  • 将 proof + 公共参数提交至链上 verifier 合约进行验证
  • 合约验证成功 → 判定此用户拥有合法 OAuth 身份

✅ 关键特性

  • 不暴露邮箱 / sub / 原始 JWT 内容
  • 通过 zkSNARK 证明“我拥有该身份”,但不泄露身份本体
  • 登录流程完全无钱包签名(可选)

典型实现解析——Sui ZKLogin 框架

Sui 是目前最先落地 ZKLogin 的公链,其 ZKLogin 机制结合了 OpenID(OAuth)与 zkSNARK 电路,构建了完整的 OAuth → 零知识 → 链上账户绑定流程。

🔐 关键流程

  1. 用户通过 Google OAuth 获取 id_token(JWT 格式)

  2. 本地 ZK 电路读取 JWT 内容:

    • sub(Google 用户唯一 ID)
    • aud(App ID)
    • iss(Google 身份签发者)
    • exp(过期时间)
  3. 构造电路公共输入(public input):

    • aud, iss, hashed_sub, address_seed, max_epoch, nonce, jwt_exp
  4. 本地使用 zkSNARK 电路生成 zkProof,证明用户拥有该 id_token 且未过期

  5. 本地生成链上地址:

    zkAddress = hash(aud, sub, nonce) // 由电路输出,确定用户唯一地址
  6. **将 zkProof + public inputs 发送给链上 verifier...

剩余50%的内容订阅专栏后可查看

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Henry Wei
Henry Wei
Web3 Frontend Dev. Exploring Social & Innovation.