基于cycle of curves的Nova证明系统

news2024/11/15 9:09:02

1. 引言

主要见斯坦福大学Wilson Nguyen、Dan Boneh和微软研究中心Srinath Setty 2023年论文《Revisiting the Nova Proof System on a Cycle of Curves》。

前序博客有:

  • Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记

在2021年Nova 论文中,基于relaxed R1CS statements的folding scheme,构建了针对IVC(Incrementally Verifiable Computation)的高效简洁证明系统——Nova证明系统。不过在该论文中,Nova的描述和分析都限制为single chain of incremental computation( z n = F n ( z 0 ) z_n=F^n(z_0) zn=Fn(z0),称为single IVC chain),即每个计算步骤完全相同,当前步骤的输出作为下一步的输入,每一步都运行某函数 F F F,并将 关于之前步骤有效性的statement fold入 an ongoing statement中。在Nova论文中所展示的Nova证明系统使用的是order为 p p p的单一椭圆曲线。

但实际实现时,为提升效率,在https://github.com/Microsoft/Nova代码中,采用的是 2-cycle of elliptic curves。在代码中对应的2条并行的IVC链,且二者必须连接在一起。但迄今为止,该修改方案仅在代码中体现了,并无任何公开的安全性证明。

本文将揭示在https://github.com/Microsoft/Nova的2-cycle Nova系统实现中存在的soundness vulnerability——见附录B。该漏洞使得攻击者可为false statement生成proof——如,在笔记本上仅需1.46秒就可生成 “ 2 75 2^{75} 275轮Minroot VDF的正确执行”的让人信服的Nova proof。该攻击的核心问题在于原始的2-cycle Nova系统生成的IVC proof中包含了一个额外的R1CS instance-witness pair——Verifier未对其做足够约束。

修改了该可靠性漏洞之后的系统效率更高。特别是修改后,从recursive proof中移除了一个R1CS instance-witness pair——使得修订后的Nova具有更短的IVC proof。目前https://github.com/Microsoft/Nova中为修复了该漏洞的安全、优化好的代码。

同时,本文将展示Nova proof是可延展的,在某些应用中存在安全漏洞,并讨论了几个缓解措施。

1.1 IVC(Incrementally Verifiable Computation)

IVC(Incrementally Verifiable Computation)首次由Valiant在其2008年论文《Incrementally verifiable computation or proofs of knowledge imply time/space efficiency》中提出。

对于某函数 F : { 0 , 1 } a × { 0 , 1 } b → { 0 , 1 } a F:\{0,1\}^a\times\{0,1\}^b\rightarrow\{0,1\}^a F:{0,1}a×{0,1}b{0,1}a,有公开值 z 0 , z i ∈ { 0 , 1 } a z_0,z_i\in\{0,1\}^a z0,zi{0,1}a,IVC方案是指Prover P \mathcal{P} P 声称其知道辅助值 aux 0 , ⋯   , aux i − 1 ∈ { 0 , 1 } b \text{aux}_0,\cdots,\text{aux}_{i-1}\in \{0,1\}^b aux0,,auxi1{0,1}b,使得:
在这里插入图片描述
,并生成相应的简洁证明。

IVC方案定义为:
在这里插入图片描述
以上定义具有完备性和knowledge soundness属性:【其中knowledge soundness属性,是指可full extraction——提取execution chain中的所有辅助值。本文重点关注IVC方案的knowledge soundness属性。】
在这里插入图片描述
上述定义中,Verifier的输入中包含函数 F F F的描述,即意味着Verifier running time 必须至少为linear in the size of F F F。可额外引入Keygen算法——输出专门针对 F F F的prover-verifier key pair (pk, vk),其中vk size为sub-linear in the size of F F F。这样就将处理函数 F F F描述的工作 转移给了 预处理阶段。Verifier代替 F F F以vk为输入,从而可由更快的线上Verifier。事实上在nova中包含了Keygen算法来实现succinct Verifier。

1.2 Committed Relaxed R1CS over a Ring

基于cycle of curves的Nova证明系统同时使用了2个有限域 F 1 , F 2 \mathbb{F}_1,\mathbb{F}_2 F1,F2。因此可将Nova中的原语看成是基于有限交换ring R : = F 1 × F 2 R:=\mathbb{F}_1\times \mathbb{F}_2 R:=F1×F2,其中的加法和乘法运算是按元素进行的。即对于 R R R中的 a = ( a 1 , a 2 , ) , b = ( b 1 , b 2 ) a=(a_1,a_2,),b=(b_1,b_2) a=(a1,a2,),b=(b1,b2),有 a + b = ( a 1 + b 1 , a 2 + b 2 ) , a ⋅ b = ( a 1 b 1 , a 2 b 2 ) a+b=(a_1+b_1,a_2+b_2),a\cdot b=(a_1b_1,a_2b_2) a+b=(a1+b1,a2+b2),ab=(a1b1,a2b2)

承诺方案定义为:
在这里插入图片描述
承诺方案应满足:binding属性、加法同态属性,以及succinct属性。
在这里插入图片描述
限交换ring R R R,对Relaxed R1CS的承诺表示为:
在这里插入图片描述
注意,当 s = 1 s=1 s=1 E E E为零向量时,Relaxed R1CS对应为R1CS,即R1CS为Relaxed R1CS的特例情况。

Trivially Satisfiable Instance-Witness Pair定义:

  • 以committed instance-witness pair ( U ⊥ , W ⊥ ) (\mathbb{U}_{\perp}, \mathbb{W}_{\perp}) (U,W)表示某R1CS约束系统R1CS over R R R的trivially satisfying pair。
  • 在Nova论文中,改建Trivially Satisfiable Instance-Witness Pair的方法为:【使得 0 = 0 0=0 0=0恒成立。用作IVC的初始instance-witness pair。】
    • 设置 E , W , x E,W,x E,W,x均为合适长度的零向量
    • E ˉ , W ˉ \bar{E},\bar{W} Eˉ,Wˉ均为对零向量的承诺值
    • s = 0 s=0 s=0

1.3 针对Committed Relaxed R1CS over a Ring的Folding Scheme

Folding Schemes为IVC提供了高效方案。近期的一些研究成果[1,2,10-12,15]为不同的问题构建了高效folding方案。Nova论文则为2个committed relaxed R1CS的instance和witness 构建了优雅的folding方案。

Nova的folding scheme为public-coin、one-round交互协议,并可在random oracle model下使用Fiat-Shamir转换为来实现非交互式。此外,Nova启发式地将该random oracle实例化为具体的哈希函数,并假设该启发式生成的协议具有knowledge sound。类似的假设也用于[1,2,10]等其它递归系统中。

Committed Relaxed R1CS的非交互式folding scheme定义为:
在这里插入图片描述
该定义满足完备性和knowledge soundness属性:
在这里插入图片描述
Nova论文中采用了抗碰撞哈希函数。所谓抗碰撞哈希函数是指:
在这里插入图片描述

2. Nova证明系统实现预备知识

  • cycle of elliptic curves:为减少与group运算相关的约束数,Nova实际实现时使用了满足DLP(discrete log problem)假设的cycle of elliptic curves。Nova实际实现时可采用实现了特定Rust trait(Nova为pasta cycle of two curves实现了相应trait)的任意cycle of elliptic curves。
    将椭圆曲线group表示为 G 1 , G 2 \mathbb{G}_1,\mathbb{G}_2 G1,G2。将椭圆曲线group G \mathbb{G} G的order ∣ G ∣ |\mathbb{G}| G称为scalar域 F \mathbb{F} F,该曲线基于的域 F ′ \mathbb{F}' F称为基域(即point形式为 ( x , y ) ∈ F ′ × F ′ (x,y)\in \mathbb{F}'\times \mathbb{F}' (x,y)F×F)。
    cycle of elliptic curves是指:
    • group G 1 \mathbb{G}_1 G1具有scalar域 F 1 \mathbb{F}_1 F1和base域 F 2 \mathbb{F}_2 F2 G 2 \mathbb{G}_2 G2具有scalar域 F 2 \mathbb{F}_2 F2和base域 F 1 \mathbb{F}_1 F1
    • G 1 \mathbb{G}_1 G1的group运算,可高效表示为基于其base域 F 2 \mathbb{F}_2 F2的约束。
    • G 2 \mathbb{G}_2 G2的group运算,可高效表示为基于其base域 F 1 \mathbb{F}_1 F1的约束。

Nova系列博客

  • Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记
  • Nova 和 SuperNova:无需通用电路的通用机器执行证明系统
  • Sangria:类似Nova folding scheme的relaxed PLONK for PLONK
  • 基于Nova/SuperNova的zkVM
  • SuperNova:为多指令虚拟机执行提供递归证明
  • Lurk——Recursive zk-SNARKs编程语言
  • Research Day 2023:Succinct ZKP最新进展
  • 2023年 ZK Hack以及ZK Summit 亮点记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java线程的六种状态(付代码解释)

目录 一.新建状态 (New) 解释 代码 运行结果 ​编辑 二.运行状态(Runnable) 解释 代码 运行结果 三.等待状态(Waiting) 解释 代码 运行结果 四.阻塞状态(Blocked) 解释 代码 运行结果 五.计时等待状态(…

PCB设计系列分享-开关稳压器接地处理

目录 概要 整体架构流程 技术名词解释 1.DCDC: 2.PGND: 3.AGND: 技术细节 1.认识1 2.认识2 3.综合 小结 概要 提示:这里可以添加技术概要 如何使用带有模拟接地层(AGND)和功率接地层(PGND)的开关稳压器? 这是许多开发人员在设计…

启用Windows应急重启功能

博主最近发现了Windows隐藏功能——应急重启,并且这个功能可以追溯到Windows Vista!但是因为大家习惯长按电源键关机所以就鲜为人知。今天博主叫你如何使用应急重启功能。 因为使用功能都无法截图,所以就不展示图片了。 第一步,按住CtrlAltD…

什么是元宇宙?元宇宙由哪些关键技术、设备构成?

元宇宙近几年来火爆起来,各个行业争先恐后加入。从目前来看,元宇宙初步体现在游戏娱乐行业、社交、消费、数字孪生等方面。元宇宙近两年开始在各个行业快速崛起,但各个行业并没有一个清晰的发展方向,那么什么是元宇宙? 元宇宙到底由哪些技术和设备组成?查询了很多资…

用于SOLIDWORKS装配体的X光机——SOLIDWORKS装配体直观工具

​ SOLIDWORKS报告和故障排除的瑞士军刀 如何快速的根据条件会装配体中的零部件进行分类? 如何快速找到装配体中的某些特定零件? 如何快速在图形区域中突出显示出特定的零部件? 如果你用过“SOLIDWORKS装配体直观工具”的话,…

JMeter之常见逻辑控制器实践

ForEach Controller(循环控制器) 组件使用说明 选项说明: ①需要循环遍历名称(name); ②循环变量的下标起点(name_0); ③循环变量的下标终点(name_4); ④引用变量名称定义; ⑤在变量后加_&…

jsvmp xs逆向学习

内容仅供参考学习 欢迎朋友们V一起交流: zcxl7_7 首先直接搜索关键词 找到encrypt位置 接下来就是分析encrypt过程,详情请看专栏中的文章

leetcode 2448. Minimum Cost to Make Array Equal(使数组相等的最小成本)

数组nums的元素每次可进行下面的操作: 每个元素1 或者 -1。 操作一次的cost是cost[i]. 问把nums的元素全部变为相等的元素需要的最小的cost. 思路: nums的元素全部变为相等的元素,这个相等的元素是多少,现在不知道。 一旦知道了…

Jmeter查看结果树之查看响应的13种方法

目录 前言: 1、Text 2、RegExpTester 3、BoundaryExtractorTester 4、CSSSelectorTester 5、XpathTester 6、JSONPathTester 7、HTML 8、HTMLSourceFormatted 9、HTML(downloadresources) 10、Document 11、JSON 12、XML 13、B…

RPA×IDP×AIGC,实在智能打造全新“超进化”文档审阅超自动化解决方案

企业商业活动频繁,每日都有大量文档被创建、书写、传递,需要人工审阅核查,以确保其准确性和合法性。这是对企业文档管理的一个巨大挑战,尤其对于金融机构、审计机构等文本相关岗位的工作人员来说更是如此。传统的文档审核通常需要…

集合和泛型的详细讲解

集合 1)可以动态保存任意多个对象,使用比较方便! 2)提供了一系列方便的操作对象的方法:add、remove、set、get等3)使用集合添加,删除新元素的示意代码-简洁了 集合的框架体系 …

实时检测Aruco标签坐标opencv-python之添加卡尔曼滤波

在实时检测Aruco标签坐标用于定位的时候发现,追踪效果不是很好,于是在检测过程中添加了卡尔曼滤波,在aruco检测算法检测不到aruco标签的时候,调用卡尔曼滤波算法(KalmanFilter),补偿丢失的定位的…

Rabbitmq学习

文章目录 前言RabbitMQ 1 同步调用和异步调用2 常见的MQ对比3 安装RabbitMQ4 RabbitMQ学习4.1 helloworld学习 5 Spring AMQP5.1 AMQP的入门案例(使用rabbittemplate进行消息发送和接受)5.2 RabbitMQ的workquene5.3 发布订阅模型(exchange(广播fanout 路由direct 话题topic))5.…

RK3588 修改USB/Sata/TF挂载点

文章目录 概要整体架构流程技术名词解释技术细节小结APP概要 rk3588 android12 平台的挂载点是:/storage/设备卷名(即uuid) 对上层开发不太友好,因此需要固定某个挂载点提供上层app调用。 修改后的路径效果如下: 整体架构流程 从概要图示中可知:对每个挂载点创建软连接来…

大牛分享,提高工程性能的7个简单技巧

软件性能和弹性(恢复能力)是用户体验的关键组成部分,但随着软件行业采用DevOps,它开始在性能和弹性方面出现不足。在软件完全失败之前,性能问题经常被忽略。 但是,我们都知道性能不会突然降低。随着软件通…

【二叉树part02】| 102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

目录 ✿LeetCode102.二叉树的层序遍历❀ ✿LeetCode226.翻转二叉树❀ ✿LeetCode101.对称二叉树❀ ✿LeetCode102.二叉树的层序遍历❀ 链接:102.二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地&#xff…

Python入门(二十七)测试(二)

测试(二) 1.测试类2.各种断言方法3.一个要测试的类4.测试AnonymousSurvey类5.方法setUp() 1.测试类 前面我们编写了针对单个函数的测试,下面来编写针对类的测试。很多程序中都会用到类,因此证明我们的类能够正确工作大有裨益。如…

AI绘画——了解AI绘画爆火原因与工具,并生成几个端午绘画小作品

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.AI绘画 1.AI绘画爆火原因 2.AI绘画背后原理 二.AI绘画工具介绍 1.midjour…

IDC武连峰:应用数字安全免疫力理念,促进企业在数字时代韧性发展

作者:IDC中国副总裁、首席分析师 武连峰 数字安全免疫力是一个企业针对各种数字安全威胁时的防御机制,与人体免疫力相似,企业数字安全免疫力包含两类:企业安全文化意识与合规是先天性数字安全免疫力,今天任何一个企业…

vue使用swiper三行轮播问题

1、轮播图设置属性slidesPerColumn:3实现不了,解决方案如下: this.scheduleData是后台请求的数据,通过3个一组分组转换为this.scheduleListThreede 的数据! 2、逻辑处理如下: computed: { scheduleListThree: functi…