当前位置: 首页 > news >正文

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

由于钱包复杂性导致的新用户入门障碍是区块链中一个长期存在的问题,而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|英文电报群|中文电报群

相关文章:

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

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

js构造函数

构造函数 通过 new 函数名 来实例化对象的函数叫构造函数。 任何的函数都可以作为构造函数存在。之所以有构造函数与普通函数之分,主要从功能上进行区别的,构造函数的主要 功能为 初始化对象,特点是和new 一起使用。new就是在创建对象&#x…...

性能测试-redis常见问题

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

预测:2024 年将是互联网永远改变的一年。

人工智能的下一步发展将彻底改变互联网的各个方面。 如果你真的认为人工智能只是另一个炒作周期,那么你就会迎来新的觉醒。 以下是即将发生的事情: 1. 自主待办事项列表/代理:无需人工干预即可执行任务的人工智能。 这些代理将发送您的电子邮…...

Vue2 与 React 的区别

【5年以上前端】Vue 和 React 的区别看这里 - 知乎 vue和react的区别_vue react-CSDN博客 Vue 和 React 有什么不同?_vue和react区别-CSDN博客 1、相同点: ① 都使用了虚拟 DOM; ② 组件化开发; ③ 都是单向数据流&#xff…...

【AI视野·今日Robot 机器人论文速览 第五十一期】Tue, 10 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 10 Oct 2023 Totally 54 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers On Multi-Fidelity Impedance Tuning for Human-Robot Cooperative Manipulation Authors Ethan Lau, Vaibhav Srivastava, Sh…...

零经验想跳槽转行网络安全,需要准备什么?

最近在后台看到很多私信都是有关转行网络安全的问题,目前咨询最多的都是:觉得现在的工作没有发展空间,替代性强,工资低,想跳槽转行网络安全。其中,他们主要关心的是:没有经验怎么学习&#xff1…...

Rust-是否使用Rc<T>

Rust的所有权机制,数据允许通过借用的方式,在函数的上下文中传递数据。如果离开数据作用的有效范围,这个借用就会失效,编译就会报错。这也是我们不会将借用(引用)作为函数的返回值的原因。下面的代码编译失败。 fn cr…...

论文解析——一种面向Chiplet互连的高效传输协议设计与实现

作者及发刊详情 熊国杰, 张津铭, 贺光辉. 一种面向Chiplet互连的高效传输协议设计与实现[J]. 计算机工程与科学, 2023, 45(08): 1339-1346.XIONG Guo-jie, ZHANG Jin-ming, HE Guang-hui. Design and implementation of an efficient transmission protocol for Chiplet inter…...

svo2.0 svo pro 编译运行

sudo apt-get install python-catkin-tools python-vcstool unable to locate python-vcstool 添加ros源 然后sudo apt update 依赖库下载,查看dependencies.yaml文件: 逐个clone到src目录下即可 dbow2_catkin 编译出错: 把https://gi…...

微信小程序前端生成动态海报图

//页面显示<canvas id"myCanvas" type"2d" style" width: 700rpx; height: 600rpx;" />onShareShow(e){var that this;let user_id wx.getStorageSync(user_id);let sharePicUrl wx.getStorageSync(sharePicUrl);if(app.isBlank(user_i…...

SQL如何导入数据以及第一次上机作业

如何导入excel数据 首先得学会导入数据 使用excel格式不需要改成其它格式&#xff08;如csv&#xff0c;txt&#xff09;&#xff0c;因为你改了到时候还是会报错&#xff08;实践过使用Sum统计总数一直说我数据格式有问题&#xff09; 首先右键TSGL数据库->任务->导入数…...

数据结构-----红黑树简介

目录 前言 1.什么是红黑树&#xff1f; 2.为什么需要红黑树&#xff1f;&#xff08;与AVL树对比&#xff09; 3.红黑树的特性 前言 在此之前我们学习过了二叉排序树和平衡二叉树&#xff08;AVL树&#xff09;&#xff0c;这两种树都是属于搜索树的一种&#xff0c;那么今天…...

哈佛教授因果推断力作:《Causal Inference: What If 》pdf下载

因果推断是一项复杂的科学任务&#xff0c;它依赖于多个来源的三角互证和各种方法论方法的应用&#xff0c;是用于解释分析的强大建模工具&#xff0c;同时也是机器学习领域的热门研究方向之一。 今天我要给大家推荐的这本书&#xff0c;正是因果推断领域必读的入门秘籍&#…...

Drecom 的《Eternal Crypt - Wizardry BC -》加入 The Sandbox 啦!

经典 “Wizardry” 游戏系列的新区块链迭代将通过全球合作拓展 Web3 游戏宇宙。 我们非常高兴地宣布&#xff0c;沙盒游戏公司与富有远见的传奇游戏《Wizardry》系列创造者 Drecom 将建立充满活力的合作伙伴关系。我们将共同推出《Eternal Crypt - Wizardry BC -》&#xff0c…...

外贸网站流量下降可能是这五点原因造成的

随着互联网的发展&#xff0c;企业开始重视网站优化&#xff0c;越来越多的人开始从事网站优化工作&#xff0c;然而真正做起来&#xff0c;很多站长朋友并非一帆风顺&#xff0c;往往越到很多问题&#xff0c;比如外贸网站流量出现异常下降情况&#xff0c;但很多时候在遇到外…...

交通部 EDI是什么?如何处理?

交通部于1996年开始实施《国际集装箱运输电子信息传输和运作系统及示范工程》&#xff0c;即在中国远洋运输集团、上海口岸、宁波口岸、天津口岸和青岛口岸建立 EDI 示范工程。 交通部 EDI 的数据结构 电子口岸或者其他物流企业需要确保能够生成和解析符合交通部要求的EDI数据…...

【Redis】Java Spring操作redis

目录 引入Redis依赖StringRedisTemplate使用String使用List使用Set使用hash使用zset 引入Redis依赖 StringRedisTemplate 此处RedisTemplate是把这些操作Redis的方法&#xff0c;分成了几个类别&#xff0c;分门别类的来组织的。 此处提供的一些接口风格&#xff0c;和原生的Re…...

如何养好一个微信新号?

最近听到一句话&#xff0c;“微信是个完整的互联网”。 你还真别说&#xff0c;真是。如果你还觉得微信只是个聊天视频打电话的工具&#xff0c;那可就有信息差了。 微信有各种各样的小程序&#xff0c;有打车的&#xff0c;有交话费的&#xff0c;有游戏&#xff0c;可以说&a…...

flutter问题汇总

一直卡在building a flutter app for general distribution&#xff1b; AS Message窗口显示 依赖下载失败&#xff1a; 1、修改仓库地址的配置&#xff1a;android/build.gradle repositories {maven { url https://download.flutter.io }maven { url "https://maven.a…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...