0


zkLogin如何使加密学变得更快更安全

*本篇来自Mysten Labs官方blog,文中“我们”指代该组织。

zkLogin不仅是将更多用户引入Web3应用的一次革命性飞跃,其开发还使零知识(ZK)API变得更安全更快速。然而,开发zkLogin,Sui的OAuth认证原语,绝非易事。除了系统设计上的挑战外,还需要对外部ZK证明和加密库进行多方面的贡献。其中一些贡献在流行软件中识别和修复了错误,而其他一些则提供了速度优化和添加了新的有用功能,这些功能对其他开发人员应该也是有益的。以下是Mysten Lab密码团队做的所有贡献概要。

BLS的速度改进

Arkworks有一个Groth16 zkSNARKS的实现,它是曲线不可知的,这意味着它适用于Arkworks支持的所有椭圆曲线构造(BN254、BLS12–388、BLS12–377等)。对于特定的BLS12–388情况,我们通过使用Supranationals BLST crate中的椭圆曲线算术来优化这个实现,这是BLS12–381椭圆曲线构造的高度优化实现,而不是Arkworks自己的。将这两个库结合起来需要在它们的数据格式之间进行一些转换,但结果是实现的速度比原始的Arkworks Groth16实现快大约两倍。

修复kobi/phase2-bn254中错误并与snarkjs兼容

为了给Groth16可信设置提供软件多样性,我们提供了两种选项供仪式参与者贡献,即通过snarkjs或Kobi的Rust实现。我们修复了Kobi的实现中的错误,以便社区的永久性tau的权力可以被重复使用并减少到更小的尺寸,特别是我们的电路尺寸为2的20次方。我们还修改了这两个库,使生成的贡献文件与彼此兼容。我们的更改可以在Mysten Lab对这些仓库的分支(snarkjs-fork、kobi的fork)中找到。

适用于任何曲线的Poseidon

Lurk Lab的Neptune库包含了zk友好的Poseidon哈希函数的快速实现。Neptune是针对BLS12–381曲线构造进行了实现和优化的,但原则上可以支持其他曲线。它比直接实现(例如poseidon-ark)更快,因为它使用了Poseidon的优化实现,在每一轮中减少了乘法的数量。

当尝试将Neptune用于另一个曲线,即BN254曲线构造时,我们注意到该实现期望用于计算Poseidon哈希的MDS矩阵是对称的,如果不是这种情况,则会产生意外结果。我们向Neptune存储库提交了此错误的修复,该修复已包含在Neptune版本13.0.0中。

升级ark-circom(现已更名为circom-compat)

Arkworks和Circom是ZK开发领域的两个主要生态系统。例如,Sui的Groth16验证是基于arkworks构建的。另一方面,circom在ZK开发人员中非常流行。我们希望为使用circom的ZK开发人员提供一种在Sui上轻松构建的方法。值得庆幸的是,大部分工作已经由开源ark-circom库的作者完成。我们通过确保与最新的arkworks 0.4.0兼容性、对circom和witness模块进行增强、纠正缓冲区类型问题以及各种外观改进,为该库做出了贡献。

关于 Sui Network

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

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

标签: 安全 web3 网络

本文转载自: https://blog.csdn.net/Sui_Network/article/details/136210565
版权归原作者 Sui_Network 所有, 如有侵权,请联系我们删除。

“zkLogin如何使加密学变得更快更安全”的评论:

还没有评论