本文介绍了图灵奖得主姚期智的贡献,包括姚氏百万富翁问题和混淆电路。姚氏百万富翁问题是一种在不泄露各自财富的情况下,比较两个百万富翁财富多少的方法。混淆电路则是一种在不信任对方的情况下,进行安全计算的方法,文章提供了RSA加密算法和混淆电路的Python代码示例。
本文深入探讨了椭圆曲线密码学(ECC)中群的阶和子群的概念。通过具体的例子和Sage代码演示,解释了如何计算椭圆曲线上的点,以及如何确定基点的阶和由其生成的子群的大小,展示了基点的选择对子群大小的影响,并解释了 cofactor 的概念。
本文深入探讨了椭圆曲线密码学(ECC)中基点G的重要性,解释了其在密钥交换中的作用。通过具体示例展示了如何选择合适的基点以避免循环,并介绍了order的概念及其对安全性的影响。文章还给出了判断bad base point的例子,并介绍了secp256k1曲线的基点。
Ingonyama 宣布第二轮研究资助计划,提供 10 万美元用于支持使用其高速密码学库 ICICLE 的研究。该计划旨在通过与现有研究基准进行比较,鼓励研究人员使用 ICICLE 重新实现算法并超越现有性能。文章还展示了两个使用 ICICLE 加速密码学协议的案例研究,分别在加速阈值加密和协作 zk-SNARK 方面取得了显著的性能提升。
本文档是一个关于 zkVM(零知识虚拟机)的精选列表,zkVM 是一种允许在不泄露隐私数据的前提下进行计算的技术。该列表包含 zkVM 项目、技术细节、性能基准、相关论文、资源、教程和工具,旨在为开发者、研究人员和对零知识证明技术感兴趣的受众提供有价值的参考。
本文介绍了变形密码学的概念,它允许对同一密文进行不同的解密,使得在“独裁者”审查的环境下,可以向审查者显示无害信息,同时秘密接收者可以解密出真实信息。文章通过ElGamal算法演示了变形密码学的实现,并提供了相应的Python代码示例。
本文讨论了后量子密码学(PQC)的两种主要数字签名方法:基于哈希的签名(SPHINCS+)和基于格的签名(ML-DSA)。SPHINCS+通过Lamport签名和WOTS+方法减少公钥和私钥的大小,但签名较大。ML-DSA使用Fiat-Shamir方法将Schnorr身份证明转换为非交互式零知识证明,避免了陷门。
Zama 团队发布了一个基于阈值密码学的阈值密钥管理系统 (TKMS),旨在解决同态加密 (FHE) 应用中的密钥管理问题。该系统将密钥分成多个片段分发给多个参与方,且在密码学操作期间不进行重组,类似于区块链中的多方计算 (MPC) 钱包。Zama 同时开源了 MPC 库,并发布了详细的密码学报告,以促进 FHE 领域的合作和进步。
Constantine是一个高性能密码学库,专注于区块链协议和零知识证明系统。它提供常数时间实现的密码学原语,支持多种椭圆曲线和协议,包括以太坊BLS签名、KZG承诺等,并提供Nim、C、Rust、Go等多种语言的接口。该库旨在提供快速、紧凑和强化的椭圆曲线密码学解决方案。
本文介绍了 Circom 编程语言,它用于创建 Rank 1 Constraint Systems (R1CS) 并填充 R1CS 的 witness 向量,主要是为了简化约束系统的设计和自动化 witness 的生成。文章还解释了 Circom 存在的意义,以及它如何帮助开发者更轻松地进行零知识证明相关的开发,最后说明了学习 Circom 的理由,并概述了资源结构,包括语法和约束设计。
本文介绍了Circom代码与其编译成的Rank 1 Constraint System (R1CS)之间的关系,并通过几个例子详细解释了如何在Circom中编写约束,以及如何使用Circom命令行工具编译电路、生成witness,并验证电路的正确性。文章还介绍了zkRepl在线IDE的使用,以及Circom中有限域的概念,以及如何将snarkjs导出的R1CS约束转换为Circom中的原始约束。
本文介绍了Circom中Rank 1约束系统的规则,即每个约束最多只能有一个信号间的乘法,超过则会报错。文章通过正反例解释了这一规则,并说明了常量乘法、加法、减法是被允许的。此外,还解释了Circom如何处理除法,以及为何数组索引、模运算、左移等操作不被允许。最后总结了约束系统的限制,并提及了绕过这些限制的设计模式。
本文介绍了Circom中的符号变量,它是被赋值为信号值的变量,常用于在循环中对信号求和。文章解释了符号变量的定义、使用场景,例如校验数组求和、校验二进制表示,以及如何避免因符号变量导致的二次约束冲突。此外,还阐述了非符号变量在模运算和位移操作中的使用限制,以及符号变量在循环边界和条件判断中的禁用。
本文介绍了 Circom 中的 <== 和 ==> 操作符,它们用于在电路中自动计算和赋值中间信号,从而避免手动提供所有信号作为输入。文章还展示了如何使用模板将电路拆分成更易于管理的模块,以及如何在组件之间传递结果。此外,还强调了组件的输出信号必须被约束使用,以防止恶意证明者篡改。
<==
==>
本文介绍了在 Circom 中使用 indicator signals 和 Circomlib comparator library 来实现复杂约束条件的方法。
本文介绍了零知识电路中的“计算后约束”设计模式,它首先在没有约束的情况下计算算法的正确输出,然后通过强制执行与算法相关的约束来验证解决方案的正确性。
本文介绍了在 Circom 中如何在循环中使用组件。由于 Circom 不允许在循环中直接实例化组件,文章提供了通过预先声明组件数组并在循环内指定组件类型的方式来解决这一问题,并提供了三个实际案例:求数组最大值、检查数组是否已排序以及确保数组中所有元素都是唯一的,展示了如何在循环中有效地使用 Circom 组件,以及一些使用 circom 的小技巧。
本文深入探讨了 Circom 中 if 语句的使用限制,明确指出信号不能用于改变 if 语句的行为,也不能在依赖于信号的 if 语句中赋值。
本文介绍了Quin Selector这一设计模式,它允许使用信号作为信号数组的索引。文章通过代码示例,展示了如何在Circom中实现Quin Selector,并讨论了优化方法。同时,文章还提到了Circomlib库中的multiplexer组件,它可以实现类似的功能,并提供了一个使用示例。最后,文章提到了该算法的历史渊源。
文章介绍了在算术电路中进行迭代计算(如幂、阶乘或计算斐波那契数列)时,如何通过预先计算所有可能的值并使用 Quin 选择器来解决条件停止的问题。文章通过阶乘和斐波那契数列的例子,展示了如何在 Circom 中实现这种方法,并强调了约束的重要性,最后提供了一个关于幂运算的练习。
扫一扫 - 使用登链小程序
114 篇文章,671 学分
383 篇文章,585 学分
67 篇文章,477 学分
118 篇文章,418 学分
158 篇文章,345 学分