论文笔记:A survey on zero knowledge range proofs and applications

https://link.springer.com/article/10.1007/s42452-019-0989-z

描述了构建零知识区间证明(ZKRP)的不同策略,例如2001年Boudot提出的方案;2008年Camenisch等人提出的方案;以及2017年提出的Bulletproofs。

Introduction

总结并比较了保护链上私人信息的两类方式,引出主旨ZKRP:

  • 可信执行环境(TEE),如英特尔SGX技术。核心思想是,任何私人数据在区块链上必须以加密形式出现。只有底层加密密钥的所有者才能解密它。对这些信息的验证必须在TEE系统中进行,其中可以嵌入加密密钥。因此,私人数据只有在解密后才可见,这发生在受控环境内。但易受分支预测和侧信道攻击的影响。
  • 零知识证明(ZKP),进一步ZKRP证明一个秘密整数属于某个区间。

ZKRP的用例

ZKRP的应用案例:

  • ZKRP可以用来证明某人超过18岁,
  • 了解你的客户(KYC)
  • 抵押风险评估。
  • 评级和投资评级。与使用ZKRP k +1次的直接解决方案相比,可能存在更有效的构造。
  • 电子投票
  • 安全电子拍卖(如:获胜者支付第二高的出价、采购)

在DLT和区块链的具体场景中重要的应用:

  • Confidential Transactions (CT),利用Pedersen承诺隐藏交易金额。用ZKRP验证交易金额的正确性
  • Provisions是一种协议,它允许比特币交易所证明自己是有偿付能力的,通过显示每个账户都有正余额,并且还显示交易所的资金数量大于或等于系统中所有个人账户余额的总和。

ZKP

定义:非交互式零知识(Non-Interactive Zero Knowledge, NIZK)证明方案由算法Setup、Prove和Verify定义:

  • p a r a m s = S e t u p ( λ ) params = Setup(\lambda) params=Setup(λ)
  • p r o o f = P r o v e ( x , w ) proof =Prove(x,w) proof=Prove(x,w)
  • b = V e r i f y ( p r o o f ) b=Verify(proof) b=Verify(proof)

Fiat–Shamir 启发式:将 interactive ZKP转换成NIZK。
缺点是,它使密码系统在随机oracle模型(ROM)下是安全的。

零知识证明方案具有以下性质:

  • Completeness:给定一个满足实例 x x x的见证 w w w,得到 V e r i f y ( P r o v e ( x , w ) ) = 1 Verify(Prove(x, w)) = 1 Verify(Prove(x,w))=1
  • Soundness:如果见证 w w w不满足 x x x,则概率 P r o b [ V e r i f y ( P r o v e ( x , w ) ) = 1 ] Prob[Verify(Prove(x, w)) = 1] Prob[Verify(Prove(x,w))=1]足够低。
  • Zero Knowledge:
    • 给定证明者和验证者之间的交互,我们称这种交互为视图。
    • 为了捕获零知识属性,使用多项式时间模拟器来生成模拟视图,该模拟器可以访问提供给验证者的相同输入(包括其随机性),但无法访问证明者的输入。
    • 如果模拟视图与原始视图具有相同的分布,则我们说ZKP方案具有完全零知识。
    • 如果这些分布在统计上接近,我们说ZKP方案具有统计零知识。如果这些分布没有多项式时间区分符,我们说ZKP方案具有计算零知识。

Zero knowledge range proofs

提交秘密的不同方式对应不同的ZKPR实现策略:

  1. 提交整数
  • 平方分解。核心是将秘密元素分解为平方和。
  • 基于签名的。以盲的方式证明prover知道一个关于秘密的签名。首先,区间内的所有元素都被签名,然后证明者知道签名的证据意味着这个整数属于预期的区间。
  1. 二进制表示
  • 多基分解。
    • 将秘密分解为bit表示:通过布尔运算证明它属于某个区间。
    • 不是bit而是u进制表示:多基分解,允许构建对于小秘密情况下表现良好的ZKRP方案。
  • 两层同态承诺。
    • 关键思想是使用双线性配对对Pedersen承诺的向量进行承诺。
    • 例如,给定配对 e : G 1 × G 2 → G 3 e: \mathbb G_1\times \mathbb G_2 → \mathbb G_3 e:G1×G2G3和元素 v , u 1 , … , u N ∈ G 2 v,u_1,…,u_N ∈ \mathbb G_2 vu1uNG2,可以通过选择随机的 t ∈ G t ∈ \mathbb G tG并计算 C = e ( t , v ) ∏ i = 0 N e ( c i , u i ) C = e(t, v) ∏ᴺᵢ₌₀ e(cᵢ, uᵢ) C=e(t,v)i=0Ne(ci,ui)来对向量 [ c 1 , … , c N ] ∈ G 1 N [c_1,…,c_N] ∈\mathbb G_1^N [c1cN]G1N进行承诺。
  • Bulletproofs
    • 以上提到的所有方案都依赖于一个可信的设置,这在加密货币的背景下可能不太理想。例如,如果对手能够规避这个可信设置,他将能够凭空创造货币。
    • Bulletproofs的提出旨在通过使用内积证明实现ZKRP,并以非常小的证明大小为特点。

平方分解构造

实现Boudot于2001年提出的ZKRP所需的算法。这个构建过程需要一些基本组件,比如零知识证明两个承诺隐藏着相同的秘密,以及零知识证明秘密是一个完全平方数

  • 两个承诺隐藏相同秘密的零知识证明 P K S S = { x , r 1 , r 2 ∶ E = g 1 x h 1 r 1 ∧ F = g 2 x h 2 r 2 } PK_{SS} =\{x, r_1, r_2∶E = g_1^xh_1^{r_1} ∧ F = g_2^xh_2^{r_2}\} PKSS={x,r1,r2E=g1xh1r1F=g2xh2r2}
    在这里插入图片描述
    在这里插入图片描述

g 1 D h 1 D 1 E − c = g 1 ω + c x h 1 η 1 + c r 1 g 1 − c x h 1 − c r 1 = Ω 1 g_1^Dh_1^{D_1}E^{-c}=g_1^{\omega+cx}h_1^{\eta_1+cr_1}{g_1^{-cx}h_1^{-cr_1}}=\Omega_1 g1Dh1D1Ec=g1ω+cxh1η1+cr1g1cxh1cr1=Ω1

  • 秘密是一个完全平方数的零知识证明 P K S = x , r 1 ∶ E = g x 2 h r PKS = {x, r_1 ∶ E = g^{x^2} h^r} PKS=x,r1E=gx2hr

在这里插入图片描述
注意: E = F x h r 3 = g x 2 h r 2 x h r 1 − r 2 x = g x 2 h r 1 E=F^xh^{r_3}=g^{x^2}h^{r_2x}h^{r_1-r_2x}=g^{x^2}h^{r_1} E=Fxhr3=gx2hr2xhr1r2x=gx2hr1
调用的参数 g 1 = F , h 1 = h 2 = h , g 2 = g g_1=F,h_1=h_2=h,g_2=g g1=F,h1=h2=h,g2=g
在这里插入图片描述

  • 一个秘密属于一个更大区间的零知识证明 P K L I = { x , r ∶ E = g x h r ∧ x ∈ [ − 2 t + ℓ b , 2 t + ℓ b ] } PK_{LI}= \{x, r ∶ E = g^xh^r ∧ x ∈ [−2^{t+ℓ}b, 2^{t+ℓ}b]\} PKLI={x,rE=gxhrx[2t+b,2t+b]}
    在这里插入图片描述
    在这里插入图片描述
  • a proof with tolerance P K W T = x , r : E = g x h r ∧ x ∈ [ a − θ , b + θ ] , θ = 2 t + l + 1 b − a PK_{WT} = {x, r :E = g^xh^r ∧ x ∈ [a − \theta, b + \theta]},\theta = 2^{t+l +1}\sqrt{b − a} PKWT=x,r:E=gxhrx[aθ,b+θ],θ=2t+l+1ba
    在这里插入图片描述
    在这里插入图片描述
  • Boudot在2001年提出的ZKRP方案。

在这里插入图片描述
在这里插入图片描述

Signature‑based construction\

  • 成员关系证明

方案依赖于Boneh-Boyen数字签名:公私钥对 x ∈ R Z p , y = g x , σ = g 1 / ( x + m ) x\in_R\mathbb Z_p,y=g^x,\sigma=g^{1/(x+m)} xRZpy=gx,σ=g1/(x+m),验证 e ( σ , y g m ) = e ( g , g ) e(\sigma,yg^m)=e(g,g) e(σ,ygm)=e(g,g)(q-Strong Diffie-Hellman assumption)
在这里插入图片描述
验证者最初为目标集合S中的每个元素计算数字签名。
在这里插入图片描述
证明者通过将其提升到随机选择的指数v ∈ ℤp对该数字签名进行盲化,使得确定签名的哪个元素是计算上不可行的。
在这里插入图片描述
C c h z γ g z δ = g δ c h γ c h m − γ c g s − δ c = D C^ch^{z_\gamma}g^{z_\delta}=g^{\delta c} h^{\gamma c}h^{m-\gamma c}g^{s-\delta c}=D Cchzγgzδ=gδchγchmγcgsδc=D
这个是用挑战c和所使用的随机值生成的response z δ , z γ z_\delta,z_\gamma zδ,zγ的验证
e ( V , y ) c ⋅ e ( V , g ) − z δ ⋅ e ( g , g ) z τ = e ( V , g ) x c ⋅ e ( V , g ) − s + δ c ⋅ e ( g , g ) t − τ c = e ( V , g ) − s ⋅ e ( g 1 / ( x + δ ) , g ) τ ( x c + δ c ) ⋅ e ( g , g ) t − τ c = a e(V,y)^c\cdot e(V,g)^{-z_\delta}\cdot e(g,g)^{z_\tau}=e(V,g)^{xc}\cdot e(V,g)^{-s+\delta c}\cdot e(g,g)^{t-\tau c}=e(V,g)^{-s}\cdot e(g^{1/(x+\delta)},g)^{\tau(xc+\delta c)}\cdot e(g,g)^{t-\tau c}=a e(V,y)ce(V,g)zδe(g,g)zτ=e(V,g)xce(V,g)s+δce(g,g)tτc=e(V,g)se(g1/(x+δ),g)τ(xc+δc)e(g,g)tτc=a

  • Range proof
    将秘密 δ \delta δ分解成以u为底
    在这里插入图片描述
    如果每个 δ j \delta_j δj 属于区间 [ 0 , u ) [0, u) [0,u),那么我们有 δ ∈ [ 0 , u ℓ ) \delta \in [0, u^\ell) δ[0,u)。可以很容易地将ZKSM算法调整为执行此计算。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    为了获得任意范围 [ a , b ) [a, b) [a,b) 的零知识范围证明,先证明 δ ∈ [ a , a + u ℓ ) \delta \in [a, a + u^\ell) δ[a,a+u) δ ∈ [ b − u ℓ , b ) \delta \in [b - u^\ell, b) δ[bu,b),使用算法15两次。换句话说,需要证明 δ − b + u ℓ ∈ [ 0 , u ℓ ) \delta - b + u^\ell \in [0, u^\ell) δb+u[0,u) δ − a ∈ [ 0 , u ℓ ) \delta - a \in [0, u^\ell) δa[0,u)

Bulletproof

详见https://blog.csdn.net/jiongxv/article/details/124133111或原文

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot案例(黑马学习笔记)

这个案例呢,就是Tlias智能学习辅助系统。 参考接口文档完成后端功能的开 发,然后结合前端工程进行联调测试即可。 完成后的成品效果展示: 准备工作 需求&环境搭建 需求说明 部门管理 部门管理功能开发包括: ● 查询部门列…

【JavaSE】实用类——枚举类型、包装类、数学类

目录 Java API枚举优势代码示例 包装类作用包装类和基本数据类型的对应关系包装类的构造方法包装类的常用方法装箱和拆箱 留一个问题大家猜猜看包装类的特点 Math类Random类代码示例 Java API Java API(Java Application Programming Interface) 即Java应用程序编程接口&#…

设备管理系统解决方案

软件资料获取:软件项目开发全套文档下载_软件项目文档-CSDN博客 1.系统概述 1.1.需求描述 建立设备信息库,对设备相关档案的登录、整理。通过建立完善的设备档案,将设备的各类原始信息进行信息化管理,使设备档案查询工作方便快…

NoReturn与None的区别

问题来源: class xx:def __init__(self) -> NoReturn:passpycharm编译器提示如下问题: init should return None 根因探索: None 是Python的一个特殊的数据类型,用于表示空值或者没有值。当一个函数没有显式返回值时&#x…

模型预测控制MPC算法的讲解-案例(C语言代码)

目录 一、模型预测控制MPC的基本原理 1.1 建立模型 1.2 设定目标和约束条件 1.3 求解优化问题 1.4 应用控制输入 1.5 重复优化 二、模型预测控制MPC的特点 三、应用场景 四、应用案例 一个MPC算法的简化版框架: 4.1 案例系统模型 4.2 控制目标和当前状态…

【JavaWeb】

Javaweb 数据库相关概念MySQL数据库MySQL数据模型SQLDDL--操作数据库图形化客户端工具DML--操作数据DQL数据库约束 数据库设计多表查询事务 数据库相关概念 数据库 存储数据的仓库,数据是有组织的进行存储 英文:DataBase,简称DB 数据库管理系…

自然语言:信息抽取技术在CRM系统中的应用与成效

一、引言 在当今快速变化的商业环境中,客户关系管理(CRM)已成为企业成功的关键因素。CRM系统的核心在于有效地管理客户信息,跟踪与客户的每一次互动,以及深入分析这些数据以提升客户满意度和忠诚度。在我最近参与的一个…

SpringBoot+Vue全栈开发-刘老师教编程(b站)(一)

课堂内容 Java EE企业级框架:SpringBootMyBatisPlusWeb前端核心框架:VueElementUI公共云部署:前后端项目集成打包与部署 B/S(Browser/Server):浏览器/服务器架构模式 C/S(Client/Server):客户端/服务器架构模式 Maven是一个项目管理工具&…

【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)

目录 1、锁的策略 1.1、乐观锁和悲观锁 1.2、轻量级锁和重量级锁 1.3、自旋锁和挂起等待锁 1.4、普通互斥锁和读写锁 1.5、公平锁和非公平锁 1.6、可重入锁和不可重入锁 2、synchronized 内部的升级与优化过程 2.1、锁的升级/膨胀 2.1.1、偏向锁阶段 2.1.2、轻量级锁…

为什么会造成服务器丢包?

随着云服务器市场的发展和网络安全问题,服务器丢包问题成为了一个普遍存在的现象。服务器丢包是指在网络传输过程中,数据包由于各种原因未能到达目标服务器,导致数据传输中断或延迟。那么,为什么会造成服务器丢包呢?下…

naive-ui-admin 表格去掉工具栏toolbar

使用naive-ui-admin的时候,有时候不需要显示工具栏,工具栏太占地方了。 1.在src/components/Table/src/props.ts 里面添加属性 showToolbar 默认显示,在不需要的地方传false。也可以默认不显示 ,这个根据需求来。 2.在src/compo…

在SAP HANA中使用OData(二)

通常有两种方式通过OData来暴露SAP HANA中的数据库对象,一是直接使用Database Object,比如前一篇和本篇文章介绍的例子,这种方式针对于数据已经存在于SAP HANA中,在Repository中没有对应的设计时对象(Design-time Object)&#xf…

基于 LVGL 使用 SquareLine Studio 快速设计 UI 界面

目录 简介注册与软件获取工程配置设计 UI导出源码板级验证更多内容 简介 SquareLine Studio 是一款专业的 UI 设计软件,它与 LVGL(Light and Versatile Graphics Library,轻量级通用图形库)紧密集成。LVGL 是一个轻量化的、开源的…

Redis String 类型底层揭秘

目录 前言 String 类型低层数据结构 节省内存的数据结构 前言 Redis 的 string 是个 “万金油” ,这么评价它不为过. 它可以保存Long 类型整数,字符串, 甚至二进制也可以保存。对于key,value 这样的单值,查询以及插…

[足式机器人]Part2 Dr. CAN学习笔记-Ch00-2 - 数学知识基础

本文仅供学习使用 本文参考: B站:DR_CAN 《控制之美(卷1)》 王天威 《控制之美(卷2)》 王天威 Dr. CAN学习笔记-Ch00 - 数学知识基础 Part2 4. Ch0-4 线性时不变系统中的冲激响应与卷积4.1 LIT System:Linear Time Invariant4.2 卷积 Convolution4.3 单位冲激 Unit Impulse—…

Linux安装Nginx详细步骤

1、创建两台虚拟机,分别为主机和从机,区别两台虚拟机的IP地址 2、将Nginx素材内容上传到/usr/local目录(pcre,zlib,openssl,nginx) 附件 3、安装pcre库   3.1 cd到/usr/local目录 3.2 tar -zxvf pcre-8.36.tar.gz 解压 3.3 cd…

matlab 方向向量约束的PCA快速粗配准

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的GPT爬虫。 一、算法原理 该方法由本人原创,目前尚未见有相关论文用到。具体原理看代码即可。 二、代码实现 clc;clear; %% ------…

在Arcgis中删除过滤Openstreetmap道路属性表中指定highway类型道路

一、导出道路类型并分析 1. 导出道路类型 选中highway属性列,选择汇总→确定 2. 分析 用Excel打开输出表,包含的道路类型如下 0.空值’’ 车辆可行驶道路(和bfmap的并集) 空值(无定义道路) 二、…

数据分析(二):学生成绩预测分析报告

目录 摘要 一、引言 二、 数据源介绍 三、 数据清洗和预处理 3.1 缺失值处理 3.2 异常值处理 3.3 数据编码 四、 探索性数据分析 4.1 可视化相关统计量 4.2 目标数据的分布情况 4.3 Pearson 相关性分析 五、 特征工程 5.1 特征构造 5.1.1 总饮酒量 5.1.2 整体关…

【前端知识点】

虚拟 dom: 虚拟 dom 就是 vue 通过 js 对象渲染虚拟 dom 的,虚拟 dom 的 js 对象包含节点的类型、属性、子节点等信息,这些虚拟 dom 节点会构成一棵树形结构,用来表示整个页面的结构。 当 vue 组件更新时,会通过 diff…