本文介绍了使用Rust编程语言和Bellman库实现Groth16零知识证明,并测量了生成和验证证明所需的时间。实验结果表明,生成电路需要较长时间(140秒),生成证明需要15秒,但验证证明非常快(0.03秒)。
本文介绍了非交互式零知识证明(NI-ZKP)的原理和应用,重点介绍了Groth16算法,它是第一个定义了恒定大小的证明并能有效验证的算法,并探讨了其在区块链中的实际应用。文章还提供了使用Groth16证明知道方程解的示例代码。
本文介绍了基于Logistic Map的加密方法,通过Logistic Map生成的混沌序列对明文数据进行置换或替换,实现加密。Logistic Map加密具有非重复性和难以预测的特点,可将ASCII字符映射到图像或数据块中,通过调整Logistic Map的参数可以改变加密效果。
本文介绍了AES-GCM-SIV,这是一种改进的AES-GCM版本,它通过从nonce值派生密钥来克服nonce重用问题,从而提供更高的安全性。文章对比了AES-GCM和AES-GCM-SIV的性能,并提供了Python代码示例,展示了如何在实际中使用AES-GCM-SIV进行加密和解密。
本文介绍了MiMC-Feistel密码,它是一种对称密钥加密方法,基于Feistel网络,并在有限域上进行操作。MiMC-Feistel在多方计算、全同态加密和零知识证明等领域具有应用前景,并且相比AES,其复杂度更低。
本文介绍了在以太坊等区块链中,为了实现零知识证明(ZKP)并提高效率,对哈希函数的需求。传统哈希函数如SHA-256在区块链环境中计算成本高昂,因此提出了Pedersen哈希(基于椭圆曲线数学)和Poseidon哈希(基于有限域计算)作为替代方案,并提供了代码示例。
本文介绍了Pedersen哈希算法,它通过组合椭圆曲线上的点来实现加密哈希过程,使其在零知识证明(ZKP)系统中特别有用。文章解释了Pedersen哈希的基本原理,包括如何将输入消息分解为多个块,并使用这些块基于生成器点生成一系列椭圆曲线点,最后将生成的点相加得到哈希值。
本文介绍了椭圆曲线密码学(ECC)中椭圆曲线上的点群、子群和阶的概念,并结合Baby Jubjub曲线,通过Go语言代码示例展示了如何寻找曲线上的有效点以及如何使用生成器点和基点来访问不同的点群。文章还提及了ECC抗经典计算攻击的强度。
本文介绍了 Baby Jubjub 椭圆曲线在零知识证明中的应用。Baby Jubjub 曲线因其高效的计算特性和与现有技术的兼容性,成为 zk-SNARK 电路的理想选择。文章详细阐述了 Baby Jubjub 曲线的参数设置、生成点以及点加运算的实现,并提供了 Go 语言的示例代码,展示了如何在实际应用中使用该曲线进行标量乘法和点加运算,并且介绍了在以太坊中的应用。
本文探讨了密码学中零值(zero value)和单位元(identity element)可能引发的问题。零值可能导致计算短路、信息丢失,甚至导致签名验证失效;针对椭圆曲线,如果使用户陷入使用弱生成值的陷阱,攻击者可以利用零点问题,比如通过“伪造公钥攻击”篡改签名,在代码中,需要检查零值以防止攻击。