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

密码学系列 - 零知识证明(ZKP) - 多种承诺方案

在 ZKP 中使用的承诺方案的示例

  • 基于哈希的承诺:证明者生成他们希望承诺的值的加密哈希,并将该哈希发送给验证者。然后,证明者可以稍后显示该值,验证者可以验证显示的值是否与哈希匹配。
  • Pedersen 承诺:证明者通过将随机值与生成器相乘并添加他们希望承诺的值来生成承诺。证明者可以稍后通过显示随机值和生成器来显示该值,验证者可以验证显示的值是否与承诺匹配。
  • 多项式承诺:在多项式承诺中,证明者通过提供对多项式系数的承诺来对多项式做出承诺验证者稍后可以通过检查多项式在特定点的计算结果是否为特定值来验证承诺
    • 在 ZKP 中使用多项式承诺,可以通过向验证者隐藏多项式系数的值来提供隐私性,并通过确保只有知道系数值的人才能做出承诺来提供可验证性。多项式承诺是各种零知识证明系统(包括 zk-SNARK 和 zk-STARK)的重要组成部分,使它们能够实现简洁性。

多种 多项式承诺 方案

最常用的方法有FRI承诺、KZG10承诺、IPA承诺、DARKS承诺(基于格)等,其中,

  • FRI承诺是基于哈希函数实现的
  • KZG10承诺是基于配对组实现的
  • IPA承诺是基于离散日志组实现的
  • DARKS承诺是基于未知订单组实现的。

构造 SNARKs 的4种类型

有四种类型的假设被用来构造 SNARKs,或者更普遍地说,有四种类型的假设被用来构造初始化式承诺方案

  • 基于配对的,我们有(多项式承诺)KZG及其变体(KZG10)。(Halo 和 Halo 2 采用椭圆曲线配对和多项式承诺)
  • 基于离散对数的,我们有基于IPABulletproofs及其变体。
  • 基于哈希的方案,我们有FRI和许多其它的方案。使用Arc折叠
  • 基于格 (格哈希非常快,比普通哈希快), DARKS

FRI承诺

FRI即Fast Reed-Solomon IOPP,FRI承诺的核心是对要承诺的多项式进行“折叠”,通过“折叠”将一个计算次数很高的多项式逐步转化为计算次数较低、验证者可以接受的计算复杂度的多项式。

  • Reed-Solomon (一种纠删码, 基于离散傅里叶变换的系统 , 复制因子是 1/2)

KZG10承诺

KZG承诺[插图]基于配对组,其主要优点是承诺和打开仅由恒定数量的群元素组成,缺点是它需要一个结构化参数字符串,其长度与承诺的多项式系数的数量一样长

与FRI承诺相比,KZG10承诺有一些独特的功能,它不是对某个字节做出的承诺,而是对多项式的承诺。此外,由于KZG承诺是基于配对的,其证明规模恒定,为单个椭圆曲线组元素数量,验证时间恒定,所以仅需进行两次配对操作

image-20250202131503646

image-20250202131639879

IPA承诺

零知识证明BulletProofs、Halo2算法的核心是IPA承诺,也称内积证明。IPA承诺的安全假设较少,不需要配对,也不需要可信设置。

不同 多项式承诺方案 的对比

3.4.4 不同方案的对比不同的零知识证明算法的关键差别,是它们采用了不同的多项式承诺方案。

image-20250202132446907

image-20250202132530842

KZG承诺方案在简洁方面是最好的,因为它的证明规模和验证时间都是恒定的,这意味着电路规模的增加不会导致证明规模的增加。其他多项式承诺方案的证明规模与电路规模有关,这意味着证明规模会随着电路规模的增大而增大。但是在安全性方面,KZG承诺方案与其他方案相比较差,因为它需要第三方可信设置。


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列
http://www.dtcms.com/a/336170.html

相关文章:

  • Windows Server SDN智能流量管理方案
  • 网络通信的基本概念与设备
  • 【力扣热题100】双指针—— 接雨水
  • Ubuntu22系统docker部署Dify【教程】
  • go资料汇总
  • 上网行为组网方案
  • 图论水题4
  • 隐私屏软件(支持win10以上系统)
  • Python异常、模块与包(五分钟小白从入门)
  • Android面试指南(二)
  • 工具测试 - marker (Convert PDF to markdown + JSON quickly with high accuracy)
  • JavaScript 中constructor 属性的指向异常问题
  • Python实现区域生长和RANSAC聚类
  • 线程基本API
  • 输入坐标移动
  • 在线编程题目之小试牛刀
  • 多线程—飞机大战(加入排行榜功能版本)
  • 数字化转型成功案例:赋能供应链运输成本精细化管理
  • 网络编程3(网络层,数据链路层)
  • 批次号规则
  • Vue中v-show与v-if的区别
  • 【AI论文】序曲(PRELUDE):一项旨在考察对长文本语境进行全局理解与推理能力的基准测试
  • C语言私人学习笔记分享
  • STM32单片机学习日记
  • 第四章:大模型(LLM)】06.langchain原理-(7)LangChain 输出解析器(Output Parser)
  • 模型提取的相关经验
  • 库制作与原理(下)
  • 端到端测试:复杂系统的终极体检术
  • 【C2000】德州仪器C2000产品开发板的原理图如何找到?
  • 反向代理、负载均衡器与API网关选型决策