文章介绍了ZK-SNARKs中使用的可信设置机制,详细解释了如何在保密值上计算多项式,并提供了Python代码示例。
本文探讨了 Circom 中的 alias bug 及其潜在安全隐患,介绍了如何通过溢出特定的域元素大小(p)来伪造证明。文中给出了该漏洞的示例代码,并介绍了如何通过严格的 Num2Bits 和 Bits2Num 函数,使得编码的二进制数组不会超过 p,从而避免此类攻击,同时还描述了挑战中的漏洞及其利用方式。
本文深入探讨了 Circom 中的 <-- 操作符的一个潜在漏洞,展示了如何通过创建伪造的见证文件来利用这一漏洞,从而违背开发者对电路期望的假设。在详细的步骤中,介绍了生成有效证明的过程,以及如何修改二进制见证文件以实现攻击。此漏洞的理解对于开发安全的电路至关重要。
<--
本文详细介绍了椭圆曲线加法在实数域上的工作原理,通过群论的角度解释了椭圆曲线点的加法操作,并展示了如何在椭圆曲线上进行点加法的具体公式和几何解释。文章还包括了代码示例和数学公式,深入探讨了椭圆曲线的代数性质。
文章详细介绍了有限域上的椭圆曲线,包括它们的绘制、数学性质以及在密码学中的应用。通过多个示例和代码,展示了如何生成和操作这些曲线,并解释了其与有限域的循环群特性。
本文详细介绍了如何将R1CS(Rank 1 Constraint System)转换为QAP(Quadratic Arithmetic Program),并通过Python代码演示了实现过程,包括有限域算术、多项式插值等关键步骤。
本文详细介绍了Groth16零知识证明算法的原理、实现及其应用,包括可信设置、证明生成和验证的步骤,并讨论了防止伪造证明的方法以及算法中的安全问题。
本文详细介绍了如何在可信设置的基础上评估二次算术程序(QAP),并解释了如何在不泄露证据的情况下证明QAP的满足性,使用恒定大小的证明。同时还涉及了R1CS、椭圆曲线配对等技术的详细实现。
文章详细介绍了二次算术程序(QAP)的概念及其在零知识证明中的应用,特别是如何通过拉格朗日插值将Rank 1约束系统(R1CS)转换为QAP,并通过Schwartz-Zippel引理在O(1)时间内验证QAP的等式。
Solidity 的try/catch 语法和常见的语言中的表现不一样,try { } 块中的代码错误是无法被catch 的,这一点要小心要非常小心。