当前位置: 首页 > news >正文

sum-check protocol

sumcheck是一个交互式证明协议,给定域F上的多元多项式g(x1,...,xv)g(x_1,...,x_v)g(x1,...,xv),证明者Prover可以向验证者Verifier证明该多项式ggg的遍历求和值等于公开值HHH,即
H=∑b1,b2,...,bv∈{0,1}vg(b1,b2,...,bv)H= \sum_{b_1,b_2,...,b_v \in \{0,1\}^v}g(b_1,b_2,...,b_v) H=b1,b2,...,bv{0,1}vg(b1,b2,...,bv)
法一: Verifier可以直接通过上述等式计算验证,但直接计算需要2v2^v2v次求和

法二:Verifier将计算转移到计算能力更强的Prover,即本文所述的sum-check协议,通过sum-check协议,Prover使得Verifier相信其遍历求和值等于HHH

sumcheck

sumcheck一共需要进行vvv轮交互,其过程如下:

第1轮:
  • Prover:向Verifier发送一个单变量多项式( univariate polynomial)
    g1(X1)=∑b2,...,bv∈0,1vg(X1,b2,...,bv)g_1(X_1)=\sum_{b_2,...,b_v \in{0,1}^v}g(X_1,b_2,...,b_v) g1(X1)=b2,...,bv0,1vg(X1,b2,...,bv)

  • Verifier: 检查H=g1(0)+g1(1)H=g_1(0) + g_1(1)H=g1(0)+g1(1)是否成立,如果成立则随机选取r1∈Fr_1 \in Fr1F发送给Prover

第j轮:
  • Prover:向Verifier发送一个单变量多项式
    gj(Xj)=∑bj+1,...,bv∈{0,1}vg(r1,...,rj−1,Xj,bj+1,...,bv)g_j(X_j)=\sum_{b_{j+1},...,b_v \in \{0,1\}^v}g(r_1,...,r_{j-1},X_j,b_{j+1},...,b_v) gj(Xj)=bj+1,...,bv{0,1}vg(r1,...,rj1,Xj,bj+1,...,bv)

  • Verifier: 检查gj−1(rj−1)=gj(0)+gj(1)g_{j-1}(r_{j-1})=g_j(0) + g_j(1)gj1(rj1)=gj(0)+gj(1)是否成立,如果成立则随机选取rj∈Fr_j \in FrjF发送给Prover

第v轮:
  • Prover:向Verifier发送一个单变量多项式
    gv(Xv)=g(r1,r2...,rv−1,Xv)g_v(X_v)=g(r_1,r_2...,r_{v-1},Xv) gv(Xv)=g(r1,r2...,rv1,Xv)

  • Verifier: 检查gv−1(rv−1)=gv(0)+gv(1)g_{v-1}(r_{v-1})=g_v(0) + g_v(1)gv1(rv1)=gv(0)+gv(1)是否成立,如果成立则计算g(r1,r2,...,rv)g(r_1,r_2,...,r_v)g(r1,r2,...,rv) ,并验证g(r1,r2,...,rv)=gv(rv)g(r_1,r_2,...,r_v)= g_v(r_v)g(r1,r2,...,rv)=gv(rv)是否成立

例如 g(X1,X2,X3)=2X13+X1X3+X2X3g(X_1,X_2,X_3)= 2X_1^3 + X_1X_3+X_2X_3g(X1,X2,X3)=2X13+X1X3+X2X3 ,其遍历求和值H=12H =12H=12

第1轮:
  • Prover:向Verifier发送一个单变量多项式( univariate polynomial)
    g1(X1)=8X13+2X1+1g_1(X_1)=8X_1^3+2X_1+1 g1(X1)=8X13+2X1+1

  • Verifier: 验证H=g1(0)+g1(1)=12H=g_1(0) + g_1(1) = 12H=g1(0)+g1(1)=12,并随机选取r1=2r_1 =2r1=2发送给Prover

第2轮:
  • Prover:向Verifier发送一个单变量多项式
    g2(X2)=34+X2g_2(X_2)=34 + X_2 g2(X2)=34+X2

  • Verifier: 验证g1(2)=g2(0)+g2(1)=69g_{1}(2)=g_2(0) + g_2(1) = 69g1(2)=g2(0)+g2(1)=69,并随机选取r2=3r_2 =3r2=3发送给Prover

第3轮:
  • Prover:向Verifier发送一个单变量多项式
    g3(X3)=16+5X3g_3(X_3)=16+5X_3 g3(X3)=16+5X3

  • Verifier: 验证g2(r2)=g3(0)+g3(1)=37g_{2}(r_{2})=g_3(0) + g_3(1)= 37g2(r2)=g3(0)+g3(1)=37,并随机选取r3=6r_3 =6r3=6,计算并验证g(r1,r2,...,rv)=46=g3(6)g(r_1,r_2,...,r_v) = 46 = g_3(6)g(r1,r2,...,rv)=46=g3(6)

http://www.lryc.cn/news/35963.html

相关文章:

  • 数据结构刷题(二十一):131分割回文串、78子集
  • Spring Aop 详解
  • 【数据库死锁】线上问题之数据库死锁
  • 好友管理系统--课后程序(Python程序开发案例教程-黑马程序员编著-第4章-课后作业)
  • Redis 集群 Redis Cluster搭建
  • 博客系统(前后端分离版)
  • 第十二章 opengl之模型加载(Assimp)
  • Stable Matching-稳定匹配问题【G-S算法,c++】
  • TypeScript(四)接口
  • Python-基础知识
  • 【java基础】集合基础说明
  • MySQL的下载及安装详细教程
  • SSL/TLS协议工作原理
  • 大数据项目实战之数据仓库:用户行为采集平台——第4章 用户行为数据采集模块
  • 《统计学习方法》(李航)——学习笔记
  • 阿里云EMR集群搭建及使用
  • 学习streamlit-4
  • 高级Oracle DBA面试题及答案
  • 程序员成长路线
  • 【Galois工具开发之路】关于类的重新装载思路
  • 哪款蓝牙耳机音质好?内行推荐四款高音质蓝牙耳机
  • Android程序自动在线升级安装
  • JS的BroadcastChannel与MessageChannel
  • nextjs开发 + vercel 部署 ssr ssg
  • Good Idea, 利用MySQL JSON特性优化千万级文库表
  • 【python游戏制作】快来跟愤怒的小鸟一起攻击肥猪们的堡垒吧
  • ARM 学习(一)
  • 深入分析Java的序列化与反序列化
  • 、Tomcat源码分析-类加载器
  • 反转链表相关的练习(下)