论文笔记: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或原文

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

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

相关文章

Win11系统实现adb命令向安卓子系统安装APP

Win11系统实现通过adb命令向安卓子系统安装已下载好的apk包。 要实现以上目标,我们需要用到一个Android SDK 的组件Android SDK Platform-Tools !这个组件呢其实是被包含在 Android Studio中的,如果你对安卓开发有所了解对此应该不会陌生&…

【Unity】如何在Unity 中创建带有缩放效果的滚动视图(具有吸附效果的实现与优化)?

效果预览: 目录 效果预览: 一、引言: 二、问题描述 三、解决方案: 三、优化: 四、结论 一、引言: 在Unity开发中,经常需要实现滚动视图(ScrollView)中的内容吸附到…

算法C++

枚举 1.化段为点 前缀和 eg:给一个数列&#xff0c;算x到y个数的和 #include <iostream> #include <vector> using namespace std;int main() {int n;cin>>n;vector<int> a(n);vector<int> sum(n1,0);for(int i0;i<n;i){scanf…

047-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过

047-WEB攻防-PHP应用&文件上传&函数缺陷&条件竞争&二次渲染&黑白名单&JS绕过 #知识点&#xff1a; 1、PHP-原生态-文件上传-检测后缀&黑白名单 2、PHP-原生态-文件上传-检测信息&类型内容 3、PHP-原生态-文件上传-函数缺陷&逻辑缺陷 4、PH…

Window系统部署Z-blog并结合内网穿透实现远程访问本地博客站点

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Spring Task的应用

介绍 Spring Task是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a; 定时任务框架 作用&#xff1a; 定时自动执行某段Java代码 应用场景&#xff1a; 引用卡每月还款提醒、银行贷款每月还款提醒、火车票售票系统处理未支…

文献速递:深度学习--应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测

文献速递&#xff1a;深度学习–应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测 Title 题目 Improved motor outcome prediction in Parkinson’s disease applying deep learning to DaTscan SPECT images 应用深度学习到DaTscan SPECT图像以改善帕金森病运动…

unity学习(42)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——服务器收包2

1.解决上一次留下的问题&#xff1a; log和reg的时候也有session&#xff0c;输出看一下这两个session是同一个不&#xff1a; 实测结果reg log accOnline中的session都是同一个对象&#xff0c;但是getAccid时候的session就是另一个了。 测试结果&#xff0c;说明在LogicHan…

Linux信号【保存-处理】

目录 前言&#xff1a; 1、再次认识信号 1.1、概念 1.2、感性理解 1.3、在内核中的表示 1.4、sigset_t 信号集 2、信号集操作函数 2.1、增删改查 2.2、sigprocmask 2.3、sigpending 3.信号的处理机制 3.1处理情况 3.2合适时机 4用户态与内核态 4.1、概念 4.2、…

【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)

基于Springboot的高校竞赛管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校竞赛管理系统&#xff0c;本系统有管理员、老师、专家以及用户四种角色&#xff1b; 管理员&#xff1a;首页、个人中心、管…

幻兽帕鲁(1.5.0)可视化管理工具(0.5.7 docker版)安装教程

文章目录 局域网帕鲁服务器部署教程帕鲁服务可视化工具安装配置服务器地址&#xff08;可跳过&#xff09;使用工具管理面板 1.5.0服务端RCON错误1.5.0服务端无法启动RCON端口 解决方法第一步&#xff1a;PalWorldSettings.ini配置第二步&#xff1a;修改PalServer.sh配置 局域…

C++类模板详解

目录 1.模板的概念 2.类模板 1.类模板基本语法 2.类模板与函数模板区别 3.类模板中成员函数创建时机 4.类模板对象做函数参数 typeid&#xff08;&#xff09;.name() 5.类模板与继承 6.类模板成员函数类外实现 7.类模板分文件编写 #pragma once 8.类模板与友元 1.…

企业有了ERP,为什么还要上BI?

在我们以往和企业的沟通过程中&#xff0c;我们发现还是有相当多的一部分企业对于商业智能 BI 了解不多&#xff0c;或者对商业智能 BI 的理解仅停留在花花绿绿的可视化页面上&#xff0c;要么就是提出以下类似问题&#xff1a; 财务部门&#xff1a;BI 的财务分析指标也就是三…

【算法分析与设计】最大二叉树

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最…

【C#】SixLabors.ImageSharp和System.Drawing两者知多少

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

Spring注解之参数校验

目录 一些常用的字段验证的注解 验证请求体(RequestBody) 验证请求参数(Path Variables 和 Request Parameters) 数据的校验的重要性就不用说了&#xff0c;即使在前端对数据进行校验的情况下&#xff0c;我们还是要对传入后端的数据再进行一遍校验&#xff0c;避免用户绕过…

去中心化时代,品牌如何赢得确定性增长

去中心化时代下&#xff0c;品牌面临众多挑战。在如今复杂的环境下&#xff0c;有很多不确定的因素&#xff0c;流量、资本等等&#xff0c;这些都是品牌发展过程中的不确定因素&#xff0c;越是复杂的环境下&#xff0c;品牌越要保证自己核心优势&#xff0c;找到并放大我们的…

C语言数据结构基础-单链表

1.链表概念 在前面的学习中&#xff0c;我们知道了线性表&#xff0c;其中逻辑结构与物理结构都连续的叫顺序表&#xff0c;那么&#xff1a; 链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 2.链表组…

【软件设计师】多元化多方面了解多媒体技术的内容

&#x1f413; 多媒体技术基本概念 多媒体主要是指文字、声音和图像等多种表达信息的形式和媒体&#xff0c;它强调多媒体信息的综合和集成处理。多媒体技术依赖于计算机的数字化和交互处理能力&#xff0c;它的关键是信息压缩技术和光盘存储技术。 亮度 亮度是光作用于人眼时所…

linux+samba共享文件夹-window可以直接上传服务器数据(只能读取不能写入问题)

项目场景&#xff1a; 因为要上传本地瓦片100gb左右&#xff0c;下载再上传时间太长了&#xff0c;最后想到直接下载在服务器&#xff0c;但是下载瓦片软件没有linux版本&#xff0c;于是想到共享文件夹 问题描述 按照这个大佬文档(linuxsamba配置)一切都还好&#xff0c;查…