本文介绍了基于属性的测试(PBT)的概念及其在 Rust 中的应用,通过示例展示了如何使用 proptest 库进行 PBT,并分享了在 cairo-rs 和 Patricia Merkle Tree 两个开源项目中使用 PBT 发现 bug 和验证代码正确性的实践案例。PBT 通过生成大量随机输入并检查代码的属性是否满足来有效地测试程序的正确性。
本文介绍了LambdaClass团队开发的Aleo区块链的替代实现,包括使用Tendermint共识层和使用arkworks框架实现的零知识虚拟机,目标是Aleo指令。文章还介绍了共识层、虚拟机以及VM与共识集成层,并指出了目前正在进行的工作,例如支持更多数据类型和指令、生成状态转换正确性的证明等。
本文介绍了SuperNova,它是一种基于虚拟机和程序的密码学证明系统,能够实现非均匀IVC。SuperNova通过使用folding schemes和relaxed-committed R1CS,支持具有丰富指令集的机器,克服了Nova仅支持单个指令的限制。SuperNova在保证简洁性、零知识和增量证明生成的同时,使得证明程序的每一步的成本与该指令的电路大小成正比。
本文介绍了两种zk-SNARK的证明聚合方案:SNARKPack和aPlonk。SNARKPack基于Groth16,利用随机线性组合和内积参数实现证明聚合。aPlonk基于Plonk,引入多项式承诺以实现亚线性证明大小,通过对承诺进行随机线性组合来验证多个证明,从而减少总 proof 的大小和验证时间。
本文深入浅出地介绍了有限域扩展的概念,类比复数的构建过程,解释了如何从基础有限域(如Fp)出发,通过添加坐标和定义乘法规则来构建更大的有限域(如Fp^n)。文章还提及了有限域扩展在密码学和zk-SNARKs中的应用,以及在高级加密标准(AES)中的实际应用案例。
本文总结了使用 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这两种常见的对称加密算法进行了详细的介绍,最后总结了对称加密在现代密码学中的重要作用。