跳转到内容

Keyless 术语和常见问题

  • OpenID Connect(OIDC):用于实现联邦身份验证的身份认证协议。例如,用户使用“使用 Google 登录”流程时采用的就是此协议。
  • 身份提供商(IdP):通过 OIDC 验证您身份的可信机构。受支持的示例包括 Google。
  • JSON Web Token(JWT):用于在两方(客户端和服务器)之间共享安全信息的开放标准。每个 JWT 都包含编码的 JSON 对象,其中包括一组 claim。JWT 使用加密算法签名,以确保令牌签发后 claim 不会被篡改。
    • iss:OIDC 提供商的标识符,例如 https://accounts.google.com
    • aud:用户登录的应用的 OAuth client_id,例如 Notion.so
    • sub:OIDC 提供商用于识别用户的标识符
      • 可以是特定于此 client_id 的标识符
      • 也可以是在不同 client_id 之间共享的标识符(例如 Facebook 的 OIDC 如此)
    • email:某些提供商还可能将用户电子邮件公开为字段之一(例如 Google)
      • 还会公开 email_verified 字段,表示提供商是否已验证用户拥有此邮箱地址
    • nonce:应用希望 OIDC 提供商签名的任意数据
    • iat:JWT 的签发时间。
  • 临时密钥对:用于为 Aptos Keyless 账户签名交易的临时公私钥对。公钥及其过期日期通过 nonce 字段提交到 JWT 令牌中。
  • Keyless 账户:直接从以下信息派生的区块链账户:(1) 用户的 OIDC 账户(例如 alice@gmail.com);(2) 关联应用的 OAuth client_id(例如 Notion.so)。用户通过 OIDC 流程进行身份验证。
  • JSON Web Key(JWK):OIDC 提供商的加密公钥。该公钥用于验证 OIDC 提供商向客户端应用签发的 JWT 签名,从而使客户端应用能够验证令牌真实性并确保它们未被篡改。
  • client_id:向 IdP 注册应用后收到的应用 OAuth 标识符。在 Keyless 架构中,它将用于为用户派生地址。
  • redirect_uri:用户成功验证后回调处理程序的 URI,必须在 IdP 中注册。

Aptos 举办了迭代式可信设置仪式,以保护基于 Groth16 的 ZK 电路。可信设置仪式是一种多方计算(MPC),输出 zkSNARK 系统使用的证明者和验证者密钥,而 zkSNARK 是高效零知识证明系统中的常见方案。只要仪式中有一名参与者诚实,流程就被认为安全,输出也会有效。首次仪式由 Aptos 生态系统 140 多名成员参与,展现了去中心化、安全和社区的力量。开发者反馈阶段帮助我们识别并实施了电路改进,以确保 Keyless 可被普遍访问,之后又举行了后续仪式。最终仪式贡献可在此仓库的 [这里]找到,并可使用 [这里]所述流程验证。

使用 Keyless 账户的最佳方式是什么?

  • 最佳方式取决于用例。如果跨生态系统的无缝账户互操作性对 dApp 体验很重要(例如在您的平台铸造 NFT,并允许用户在外部 NFT 市场出售),可考虑集成支持 Keyless 的钱包。如果想在 dApp 中创建完全嵌入式账户体验,让用户无需离开应用即可交易,可直接集成 Aptos Keyless SDK。

Keyless 能否使用赞助交易,还是用户始终必须自行支付 Gas?

  • 可以。Keyless 与任何常规私钥账户一样支持赞助交易。

如果使用 Aptos Keyless SDK,用户能否在其他 dApp 中使用自己的账户?

  • Keyless 账户限定于创建它们时使用的域名,因为地址派生中包含应用的唯一标识符。

什么是 Aptos Connect?

  • 账户管理基础设施:Keyless 账户范式的核心是健全的账户管理基础设施,可促进用户账户的创建、删除和管理,并存储和检索关联元数据。
  • 虽然 Keyless 账户的采用标志着向更高可用性和安全性的范式转变,开发者仍必须了解该系统与明文私钥等常见替代方案相比的权衡。

是否依赖外部服务?

  • 是。Keyless 账户在一定程度上依赖外部身份验证服务(pepper 和 prover),需要制定应急计划和回退机制,以减轻服务中断并确保用户访问不中断。

如果我的 dApp 停止运行,用户无法访问 Keyless 账户。如何在这种情况下保护用户?

  • 鼓励 dApp 开发者在将 Keyless 集成到 dApp 时支持额外的备份恢复选项。具体而言,建议支持向 Keyless 账户添加备用私钥。实际上,这会将账户转换为 2 个密钥均由用户拥有的 2 选 1 多重签名账户。用户仍可通过 dApp 的 OIDC 登录访问 Keyless 账户,同时可以将备用私钥导出到任何自托管产品,并使用传统私钥从同一账户签名交易。即使 dApp 关闭或用户失去 OIDC 账户访问权限,也能确保用户不会失去数字资产访问权限。
  • 您应决定在用户旅程的哪个阶段引入备份最适合 dApp。在更靠后的阶段添加备份方式可保留 Keyless 的无缝引导体验,但可能导致获得恢复密钥的用户更少。在引导过程中提示用户添加备份密钥可能会让更多用户获得恢复密钥,但也可能增加引导摩擦。