解密zkLogin:探索前沿的Sui身份验证解决方案

news2024/11/20 2:42:52

由于钱包复杂性导致的新用户入门障碍是区块链中一个长期存在的问题,而zkLogin是其简单的解决方案。通过使用前沿的密码学和技术,zkLogin既优雅又复杂。本文深入探讨了zkLogin的工作原理,涵盖了用户和开发者的安全性方面,并解释了Sui的设计如何促进了这一创新的OAuth登录流程。

让我们深入了解吧!

zkLogin工作原理

使用zkLogin为每个OAuth凭据&应用程序组合创建了一个独特的Sui地址。单个OAuth凭据可以用于管理与无限数量的应用程序相关联的独立地址。例如,将单个Google帐户连接到两个不同的去中心化交易apps,将产生两个不同的Sui地址,每个app一个。

在创建典型的区块链地址时,地址将关联一个永久的公钥-私钥对,并且地址标识符是从公钥派生的。而使用zkLogin,地址与临时密钥对相关联,必须通过OAuth登录流程定期重新生成。按照设计,Sui地址可以保持不变,而相关的密钥对可以更改。这是因为zkLogin地址是从OAuth提供程序返回的有效负载中获得的唯一标识符(称为“密钥声明”),而不是从公钥派生的。

zkLogin过程包括六个连续步骤:

视频学习:https://www.youtube.com/watch?v=Jk4mq5IOUYc

第一步:生成临时密钥

当用户打开应用时,它会为用户生成一个临时密钥对,这个密钥对有一个有效期限,决定了所需登录的频率。

第二步:生成JWT

应用提示用户通过OAuth提供商登录来进行身份验证,生成一个JSON Web Token(JWT),这是提供商的数字签名数据的有效载荷。在zkLogin中,这个JWT包括一个nonce字段,其中包含了公钥以及一个过期时间。JWT中嵌入了密钥声明,用于后续生成Sui地址。

第三步:请求用户的唯一salt

salt(用于随机数据的常见加密术语)是一个任意的数字字符串,与JWT和临时密钥对一起用来将OAuth凭据与Sui地址关联起来。这一步的路径取决于应用程序,因为构建者有不同的设计选项。zkLogin文档概述了多种salt管理选项,每种都有自己的权衡。

一种方法是使用SSO类型的salt管理选项,它使用salt服务来存储并根据需要提供salt。在这种情况下,应用程序将JWT token发送到salt服务,后者在验证JWT token后返回唯一的用户salt。另一种salt管理方法要求用户在第一次登录时设置他们的salt,并自行管理它,将其视为密码或PIN码。

第四步:生成零知识证明

凭借JWT token、salt和公钥,流程继续请求从零知识(zk)证明服务中获得zk证明。这一关键步骤通过严格审查请求的准确性来确保:1)nonce正确定义并包括公钥,2)提供的密钥声明与JWT一致,3)地址与密钥声明和用户salt一致,4)OAuth提供商的签名正确。如果任何元素未符合期望,整个步骤都将失败。

第五步:识别用户的Sui地址并构建交易

然后,应用程序根据从JWT中提取的用户salt和密钥声明来识别用户的Sui地址。在转发给Sui之前,使用与临时签名、zk证明和JWT的私钥捆绑的附加输入,对交易进行了认可。

第六步:验证交易

一旦在区块链上,Sui验证节点将仔细检查zk证明和临时签名以进行认证。在一瞬间,交易被正式记录在Sui中,无缝地完成整个流程。

zkLogin本地支持使用OAuth凭据进行简单的登录流程

安全注意事项

与任何其他“使用X登录”功能一样,用户需要确保他们用于登录的帐户的安全性。如果由于任何原因用户无法使用其OAuth凭据登录,他们将无法访问与该凭据关联的Sui地址。忘记密码的用户可以求助于OAuth服务提供的标准恢复程序以恢复访问权限。

强烈建议在zkLogin操作中使用的所有OAuth帐户都加入双重身份验证(two-factor authentication,2FA),以提高其OAuth提供商帐户和关联的Sui地址的安全性。应用程序构建者还应鼓励他们的用户采取最佳安全实践,如使用安全密码和2FA。值得注意的是,即使OAuth帐户受到入侵,黑客要通过zkLogin访问Sui地址,他们还必须获取用户的salt。

应用程序构建者应优先考虑保护和限制salt值的曝光。这个值充当连接用户的Web2和Web3凭据的关键,提交给zk证明者是至关重要的。因此,强烈建议将zk证明服务托管在应用程序的后端,有效地限制任何潜在的第三方访问salt的可能性。构建者可以选择独立开发自己的zk证明者,利用现成的公共参考字符串(common reference string,CRS)。

有关证明者和salt管理的更多信息,请阅读《zkLogin构建者的最佳实践和业务思考》。

Sui在zkLogin方面具有独特的优势

Sui的密码学灵活性和面向对象的设计使其能够通过zkLogin实现无缝的OAuth登录集成。与大多数仅本质上支持一种密码身份验证方法的区块链不同,Sui通过允许直接集成各种密码体制来实现差异。这种能力消除了用户因使用协议外的密码而产生额外的gas费来执行交易的需要。在Sui中,引入新的本地密码身份验证方法能够保持与现有系统的兼容性,确保用户选择不同的密码方法时不会受到不利影响。

传统的Web3 OAuth登录解决方案依赖于智能合约来实现JWK,需要信任Oracle数据发布的准确性。Sui通过将JWK表示为Sui对象改革了这一过程,从而巩固了验证。通过zkLogin,Sui的验证节点承担了Oracle的角色,确保遵守JWK验证的预定义规则。这种简化的方法增强了身份验证过程中的安全性和可靠性。

展望未来

随着zkLogin在主网上迈出了第一步,我们期待着未来能够整合更多的OAuth提供者和增强功能。zkLogin是Sui生态系统的重要里程碑,但真正的激动人心之处在于开发者们将掌握主动权,将zkLogin集成到他们的应用程序中。实施这一基本功能的巨大潜力必然会引发生态系统的演进。这个旅程才刚刚开始,前景是无限的。

有关如何将zkLogin集成到您的应用程序的更多详细信息,请访问zkLogin文档。


关于 Sui Network

Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac

官网|英文Twitter|中文Twitter|Discord|英文电报群|中文电报群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

44.日期交叉问题(品牌活动天数计算)

思路分析: (1)计算表中每一条数据所对应的活动天数days (2)使用posexplode函数对days炸裂求其索引值index (3)使用开始日期index补全后面每一个活动日期in_date (4)按品牌…

Jmeter实现一次登录,多次业务请求(不同线程组间共享cookie和变量)

实现目的 很多时候,在进行性能测试时,需要先登录,然后再对需求的事务进行相关性能测试,此时的登录操作,并不在本次性能测试的范围内,所以我们只需要登录一次,然后获取登录成功后的cookie等&…

回顾 | E³CI效能认知与改进论坛,助力企业研发效能度量和提升

2023年8月,TiD质量竞争力大会组委会和ECI专家委员会成功举办TiD大时段课程“度量驱动研发效能提升”与“ECI效能认知与改进论坛”。与会专家以《ECI软件研发效能度量规范》团体标准为要点,为企业研发效能度量和提升分享诸多实践成果与经验。 《ECI软件研…

浅析ArkTS的起源和演进

1 引言 Mozilla创造了JS,Microsoft创建了TS,Huawei进一步推出了ArkTS。 从最初的基础的逻辑交互能力,到具备类型系统的高效工程开发能力,再到融合声明式UI、多维状态管理等丰富的应用开发能力,共同组成了相关的演进脉…

二十六、【颜色调整】

文章目录 1、色相/饱和度2、色彩平衡3、曲线4、可选颜色 1、色相/饱和度 色相其实就是颜色的亮度,就是我们往颜色里边加白色,白色越多颜色越淡。饱和度就是我们往颜色里边加黑色,黑色越多颜色越浓。如下图,我们调整拾色器里边的颜…

NAT网关在阿里云的应用

NAT网关(Network Address Translation Gateway)是一种网络地址转换服务,提供NAT代理(SNAT和DNAT)能力。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决I…

408计算机组成原理需要背的部分

1.第一章 1.1计算机发展历程 1.发展历程:电子管-》晶体管-》中小规模集成电路-》超大规模集成电路 2.系统组成:控制器,运算器,存储器,输入设备,输出设备 3.性能指标(常考部分): 机器字长&#x…

橙河网络:怎么学习python?

大家好,我是橙河网络,今天聊一聊怎么学习python? 学习Python编程可以采取以下步骤: 1.理解Python基础知识:了解Python的基本语法、数据类型、控制流语句、函数、模块和包等基础知识,这些是Python编程的基…

【LeetCode刷题(数据结构与算法面试题)】:最小高度树

给定一个有序整数数组 元素各不相同且按升序排列 编写一个算法 创建一棵高度最小的二叉搜索树 示例: 给定有序数组: [-10,-3,0,5,9] 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树 0 / \ -3 9 / / -10 5 确定最小高…

股票价格预测 | Python基于RNN股票预测实战

循环神经网络(RNN)是基于序列数据(如语言、语音、时间序列)的递归性质而设计的,是一种反馈类型的神经网络,其结构包含环和自重复,因此被称为“循环”。它专门用于处理序列数据,如逐字生成文本或预测时间序列数据(例如股票价格)。 (1)one to one:其实和全连接神经网络…

网页版微信客户管理系统,常见疑问解答

1.系统怎么登陆? 请使用谷歌浏览器打开和使用系统,避免出现浏览器不兼容的问题,不建议使用其他浏览器。打开后输入登陆账号和密码即可登陆。 2.怎么登陆微信号? 登陆系统后,点击左上角这个 “” ,选择 “…

性能测试-redis常见问题

缓存击穿、缓存穿透、缓存雪崩 缓存雪崩 解决办法 1.设置缓存失效时间,不要在同一时间 2.redis集群部署 3.不设置缓存设置时间 4.定时刷缓存的时间 缓存穿透 请求不管返回什么数据都返回给redis对参数合法器进行验证,不合法的时候直接过滤掉使用布…

Raiden Network(二)—— Mediated transfers(多跳支付里的中介传输)

什么是Mediated transfers 在雷电网络中,节点可以通过中间节点进行Mediated transfers向其他节点进行支付。Mediated transfers的步骤: Allocation(分配): 使用锁定的转移消息(locked transfer message&am…

建陶行业标杆『诺贝尔瓷砖』企企通供应链协同系统一期项目上线,数字采购领航企业高质量发展

企企通与全球领先的高端装饰材料系统服务商【杭州诺贝尔陶瓷有限公司】(以下简称“诺贝尔瓷砖”)联合开发的供应链协同系统一期项目正式上线,这意味着诺贝尔瓷砖供应链变革管理迈上新的台阶,数字化采购进入新高速时代。 01、高端装…

EM@圆和圆锥曲线的参数方程

文章目录 abstract圆的参数方程匀速圆周运动的轨迹从普通方程直接转化为参数方程 任意位置圆心的方程参数方程一般方程例 交点问题的参数方程法 圆锥曲线的参数方程椭圆参数方程例椭圆内接矩形的最大面积问题 抛物线参数方程一般位置的抛物线例 双曲线的参数方程点到双曲线的最…

一文理解登录鉴权(Cookie、Session、Jwt、CAS、SSO)

1 前言 登录鉴权是任何一个网站都无法绕开的部分,当系统要正式上线前都会要求接入统一登陆系统,一方面能够让网站只允许合法的用户访问,另一方面,当用户在网站上进行操作时也需要识别操作的用户,用作后期的操作审计。…

如何优雅地读取网络的中间特征?

0.前言 在调试深度神经网络工程时,常会在前向计算过程中将网络的中间层信息返回,便于打印或者可视化网络中间结果。实现该功能的一个常用方法是在构建model类时,在forward返回要保留的中间信息。 这里跟大家分享一个更优雅、便捷的方法&…

《软件方法》2023版第1章(10)应用UML的建模工作流-大图

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.1 概念 我用类图表示建模工作流相关概念如图1-16。 图1-16 建模工作流相关概念 图1-16左侧灰色部分定义了“游戏规则”,右侧则是在“游戏规…

假如你有一台服务器,你最想做哪些事

假如你有一台服务器,你最想做哪些事 在这个数字化的时代,服务器已经成为了我们生活中不可或缺的一部分。它们为我们提供了无数的便利,让我们的生活变得更加丰富多彩。那么,假如我有一台服务器,我会如何使用它呢&#…

WebDAV之π-Disk派盘 + Xplore

手机文件太多、太乱,本地目录中找不想要的文件,怎么办?推荐使用Xplore将手机中的文件以不同的文件方式罗列出来,并展示给用户。文件管理器以图片、音乐、视频、文档、压缩包及安装包等类型进行分类,使手机中的文件一目了然的分列开。也可以对每个分类下的文件进行不同的操…