本文总结了使用 CUDA 优化多标量乘法的不同方法,这些方法在 ZPrize 中被提出。这些解决方案都基于 Pippenger 算法,并针对 BLS12-377 曲线进行了优化,通过优化窗口大小、预计算点、使用不同的坐标系进行椭圆曲线加法、并行归约算法等方法,最佳解决方案达到了 2.52 秒,比基线提高了 2.3 倍。
本文介绍了CUDA并行计算平台及其编程模型,阐述了如何利用CUDA加速计算密集型任务,例如zk-SNARKs中的多标量乘法。
本文介绍了Nova,一种实现增量可验证计算(IVC)的新协议,它基于一种称为折叠方案的密码学原语。Nova通过将两个NP语句实例合并为一个实例,并引入松弛R1CS,结合同态多项式承诺方案(如Pedersen承诺),实现了轻量级的验证电路和快速的证明生成与验证,适用于公共账本、可验证延迟函数和证明聚合等多种应用。
本文介绍了消息认证码(MAC)的概念、作用、构造方法以及常见的攻击方式。MAC 是一种用于验证消息完整性的工具,可以与加密方案结合使用,提供认证加密。文章还讨论了 CBC-MAC、HMAC 等具体的 MAC 算法,以及如何防止定时攻击等安全问题。
本文介绍了对称加密的概念、原理和类型。对称加密使用相同的密钥进行加密和解密,包括分组密码(如AES)和流密码(如ChaCha20)两种主要类型。文章还讨论了密钥交换的问题,并对AES和ChaCha20这两种常见的对称加密算法进行了详细的介绍,最后总结了对称加密在现代密码学中的重要作用。
本文介绍了零知识证明(ZKP)中将计算转换为多项式的过程,即算术化。文章详细讲解了三种主要的算术化方案:R1CS、AIR 和 Plonkish,以及它们在电路计算和机器计算中的应用。此外,文章还提到了为优化算术化过程而提出的多种技术,如查找表、SNARK 友好的密码学原语、并发证明生成和硬件加速。
本文介绍了如何将计算问题转化为算术电路,从而利用zk-SNARKs进行高效验证。文章详细解释了算术电路和R1CS(Rank-One Constraint System)的概念,以及如何使用编译器将高级代码转换为算术电路。同时,讨论了非原生数据类型和操作在算术电路中的表示方法,以及SNARK友好的密码学原语的重要性。
本文深入探讨了零知识证明(zk-SNARKs)中的Pinocchio协议,通过将程序转化为算术电路,利用多项式编码和Schwartz-Zippel引理,实现了简洁的电路执行证明。文章详细解释了如何构造多项式来表达正确的电路执行,以及如何使用隐藏技术和算法来保证证明的有效性和安全性,最终给出了Pinocchio协议的完整流程。
本文介绍了ZEXE协议及其改进版本VERI-ZEXE,ZEXE旨在解决去中心化账本的隐私和可扩展性问题,允许用户在公共账本上运行私有应用程序。VERI-ZEXE通过改进证明系统和密码学原语,如使用PLONK作为PIOP、轻量级验证电路、实例合并、批量证明等,显著提升了性能并降低了计算成本。
本文介绍了zk-SNARKs的基本概念、性质和构造方法,zk-SNARKs 是一种强大的密码学工具,可以用于构建完全私有的应用程序。文章重点阐述了KZG承诺方案,并探讨了如何使用椭圆曲线配对来实现高效的证明生成和验证。