基于QAP的零知识证明

基于二次算术程序(Quadratic Arithmetic Programs,QAP)的一类零知识证明在现今非常常见,其代表方案有PGHR13Groth16GKMMM18 等。
这些方案的逻辑基本上遵循一下范式:

  1. 将计算函数转化为算术电路(Arithmetic Circuit)
  2. 利用QAP,将算术电路可满足性(Circuit-Satisfaction,C-SAT)问题规约为多项式间的整除性问题
  3. 设计方案,使得方案满足完备性、可靠性、零知识性

一、算术电路

算术电路是一组由“门”和“线”组成的算术结构,“门”用于表示运算符,“线”用于表示运算数值。
定义: 给定一个映射 C:Fn×FhFl ,其将 n+l 个有限域 F 上的元素映射到 l 个有限域 F 上的元素。
(在这里,我们将输入分为两类,一类是包含 n 个元素的公开输入,一类是包含 h 个元素的隐私输入)

图1

C-SAT问题可以被描述为:给定一个电路与一组电路输出,判定是否存在一组电路输入使得电路中所有“线”的赋值合法。
基于QAP的零知识证明的构造原理在于将C-SAT问题转化为多项式间的关系问题。

二、QAP

定义: 一个在域 F 上由算术电路 C 转换而来的QAP Q 包含了三组多项式集合 A={Ak(x)}B={Bk(x)}C={Ck(x)}k{0,1,...,m},以及一个目标多项式 t(x)。若{a1,a2,...,aN}FN是算术电路C的一组合法赋值,那么可以构造多项式P(x)被目标多项式t(x)整除。其中,P(x)=(A0(x)+i=1maiAi(x))(B0(x)+i=1maiBi(x))(C0(x)+i=1maiCi)

关于QAP的定义,有以下几点需要被理解:

  1. 变量x可以被抽象为对“乘法门”的描述
  2. t(x)=(xr1)(xr2),...,(xrg)g为乘法门的个数
  3. ri{r1,r2,...,rg}为乘法门的抽象赋值,可以理解为门的编号
  4. m数值表示电路中“特殊线”的个数,特殊线为"电路的输入线"或"乘法门的输出线"
  5. 电路中共有N条线,其中有m条特殊线,n+lmN
  6. ai表示线i的赋值,定义中隐含地约定{a1,a2,...,am}为特殊线
  7. 当门x的左输入为特殊线iAi(x)=1,否则Ai(x)=0
  8. 当门x的右输入为特殊线iBi(x)=1,否则Bi(x)=0
  9. 当门x的输出为特殊线iCi(x)=1,否则Ci(x)=0
  10. A0(x)B0(x)C0(x)描述了门x的常数输入/输出

P(x)描述了这样一个事实,即对于每一个乘法门,其左输入与右输入的乘积等于输出。所以, P(x) 在其 g 个乘法门处的求值为0,根据多项式的性质,P(x)必然可以被t(x)整除。根据这一特性,我们将C-SAT问题转化为

例子:给定下图所示电路,构造QAP
图12

约定输入为C1C2,输出为C5的门的编号为r5;输入为C5和一条普通线,输出为C6的门的编号为r6。那么,可以构造目标多项式t(x)=(xr5)(xr6)

posted @   Fisher4ever  阅读(656)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示