本文介绍了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承诺方案,并探讨了如何使用椭圆曲线配对来实现高效的证明生成和验证。
本文深入探讨了生成zk-SNARKs(如Aleo所用)背后的密码学计算,重点介绍了椭圆曲线及其在有限域上的运算,详细解释了椭圆曲线点的加法和倍乘运算,以及多标量乘法(MSM)问题和优化方法。此外,还介绍了BLS 12-377曲线的特性及其在密码学中的应用,以及场扩展和快速傅里叶变换(FFT)在加速椭圆曲线运算中的作用。