查看原文
其他

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

Sui Network Sui Network 2024-04-03


*本篇来自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实现快大约两倍。


参考资料:

  1. https://github.com/arkworks-rs/groth16

  2. https://github.com/supranational/blst




修复错误并与snarkjs兼容



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


参考资料:

  1. https://github.com/MystenLabs/snarkjs

  2. https://github.com/MystenLabs/phase2-bn254

  3. https://github.com/privacy-scaling-explorations/perpetualpowersoftau/tree/master

  4. https://github.com/MystenLabs/snarkjs/tree/ceremony

  5. https://github.com/MystenLabs/phase2-bn254




适用于任何曲线的Poseidon



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


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


参考资料:

  1. https://github.com/lurk-lab/neptune

  2. https://github.com/lurk-lab/neptune/pull/236




升级ark-circom



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


参考资料:

  1. https://github.com/arkworks-rs/circom-compat

  2. https://github.com/arkworks-rs/circom-compat/pull/43


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


获取更多信息:

https://linktr.ee/sui_apac 


关于Sui Network


获取更多信息

官方网站: https://sui.io

Discord: https://discord.com/invite/sui

中文Twitter: https://twitter.com/SuiNetworkCN

中文Medium: https://medium.com/sui-network-cn

中文电报群: https://t.me/Sui_Blockchain_Chinese

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存