mcpField
Z
zklogin

zklogin

github.com/mystenlabs安全19118 次安装今天更新
代码仓库

关于 zklogin

zklogin 是一项技能,为 AI 编码 Agent 提供 Sui zkLogin 概念和集成参考。它说明基于 OAuth 的无钱包登录,并按任务引导至协议流程、安全性和应用集成资料。

主要功能

  1. 01基于 OAuth 的 Sui 登录概念
  2. 02协议架构参考
  3. 03应用集成指导
  4. 04安全规则与常见误区
  5. 05按任务路由参考资料

适用场景

  1. 01解释 zkLogin 协议流程
  2. 02规划 zkLogin 应用集成
  3. 03检查 JWT、salt 和密钥安全问题

MCP 相关

在环境支持时,该技能会引导查询 Sui 文档 MCP 服务 https://sui.mcp.kapa.ai,以核实信息并获取最新细节。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mystenlabs/skills --skill zklogin

安装后在 Claude Code 中输入/zklogin确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

architecture.md
integration.md
evals/
evals.json

详细介绍

zkLogin 技能

**MCP 工具:**如果你的环境中提供了此功能,也请查询 Sui 文档 MCP 服务(https://sui.mcp.kapa.ai),以获取最新答案。使用它进行验证,并了解这些参考文件未涵盖的详情。

**来源限制:**此技能中的所有信息均仅来源于 docs.sui.io/concepts/cryptography/zklogin。扩展或更新此技能时,只能从此来源获取信息。不要使用第三方博客、教程或非官方文档。

zkLogin 是 Sui 的一项基础功能,用户可以使用现有的 OAuth 凭据(Google、Facebook、Apple 等)登录,而无需管理传统的加密钱包。它使用零知识证明,将 OAuth 身份与 Sui 地址关联起来,同时不在链上泄露 OAuth 标识符。AI 编码中常见的错误包括混淆 salt、临时密钥和 ZK 证明在安全模型中的作用,误以为 JWT 泄露就意味着资金已遭到盗用,以及不了解地址是永久的,而会话是临时的。

此技能会引导你查阅相应的参考文件。只加载与当前任务相关的文件。

此技能中的所有模式均基于: https://docs.sui.io/concepts/cryptography/zklogin

如果不确定任何细节,请在回答前获取相关页面。 不要根据其他身份验证系统进行猜测或推断。


参考文件

architecture -- 架构和协议流程

路径: architecture.md 适用场景: 用户询问 zkLogin 的内部工作原理、三个关键实体(前端、salt 服务、证明服务)、10 步协议流程、地址派生、会话时长、Groth16 仪式,或 JWT 和 nonce 的作用时加载。 涵盖内容: 三个关键实体、JWT 结构、协议流程(10 步)、地址派生公式、会话时长和临时密钥过期、密钥表示法、Groth16 仪式。

integration -- 集成指南

路径: integration.md 适用场景: 用户需要将 zkLogin 集成到应用中、选择受支持的 OpenID 提供商、验证链下签名、了解安全权衡或排查常见问题时加载。 涵盖内容: 各网络支持的 OpenID 提供商、实施步骤、链下签名验证方法、安全注意事项、常见问题解答。


路由指南

任务加载
解释 zkLogin 是什么仅 SKILL.md
了解协议流程architecture
了解地址派生architecture
了解会话时长和临时密钥architecture
选择 OpenID 提供商integration
将 zkLogin 集成到应用中integration
链下验证 zkLogin 签名integration
了解安全属性integration
回答 zkLogin 常见问题integration
全面深入了解 zkLogin所有参考文件

技能内容

核心概念
  • 无钱包登录。 zkLogin 让用户使用 OAuth 凭据(Google、Facebook、Apple 等)在 Sui 上进行交易,无需管理助记词或私钥。用户的 OAuth 身份会映射到一个确定性的 Sui 地址。

  • 三个关键实体。 该系统涉及三个组件:(1)管理临时密钥和 OAuth 流程的应用前端;(2)为每位用户返回一致且唯一的盐值的盐值服务;(3)生成零知识证明的证明服务。

  • 临时密钥对。 每个会话都使用一个短期有效的密钥对。临时公钥、最大 epoch 和随机数会嵌入 OAuth nonce 中。超过 max_epoch 后,用户需要重新登录并生成新的密钥对和 ZK 证明,但会继续使用同一个 Sui 地址。

  • 零知识证明。 Groth16 zkSNARK 证明会验证 nonce 是否以正确方式生成、密钥声明值是否与 JWT 匹配、RSA 签名是否有效,以及地址是否与密钥声明和盐值一致——同时不会在链上泄露 OAuth subject 标识符。

  • 永久地址。 从 zkLogin 派生的 Sui 地址是永久的。只有在 sub、iss、aud 或 user_salt 发生变化时,地址才会改变。同一用户使用不同的提供方或应用时,会生成不同的地址。

规则
  1. 切勿将 JWT 泄露与资金被盗混为一谈。 只要临时私钥安全,JWT 泄露可能会损害隐私,但不会导致资金被盗。
  2. 切勿认为 ZK 证明本身就能授权交易。 临时签名和 ZK 证明缺一不可;任何一者单独都不够。
  3. 务必说明盐值对隐私和访问都至关重要。 盐值会断开 OAuth 标识符与链上地址之间的关联。丢失盐值意味着永久失去访问权限。
  4. 务必指出 iss、aud 和 kid 会在链上公开。 JWT 本身不会发布到链上,但这三个字段是可见的。
  5. 切勿建议将传统钱包转换为 zkLogin 地址。 两者使用不同的地址派生方案,不能互换。
常见错误
  • 认为 JWT 泄露就意味着资金被盗。 仅凭 JWT 并不足够。攻击者还需要临时私钥和盐值,才能创建有效交易。
  • 忘记证明的有效范围仅限当前会话。 ZK 证明仅在临时密钥过期前(max_epoch)有效。证明无法跨会话重复使用,但可以在同一会话内缓存并重复使用。
  • 忽略盐值在隐私保护中的作用。 没有盐值,OAuth subject 与 Sui 地址之间就没有关联。如果盐值泄露,这种关联就会变得可见,但资金仍然安全。
  • 认为所有提供方都适用于所有网络。 部分提供方(Slack、Kakao、Microsoft)仅在 Devnet 和 Testnet 上可用,在 Mainnet 上不可用。其他提供方(RedBull、Amazon、WeChat、Auth0、Okta)仍在审核中。

评论

支持 Markdown