Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(3)
1. 前言
- 在博客 Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(1)中介绍了Shuffle argument总体算法以及Multi-exponentiation Argument算法。
- 在博客Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(2)中,将重点介绍product argument算法——拆分为三个:hadamard product argument、zero argument和single value product argument.。
在本博客中,主要介绍对Stephanie Bayer和Jens Groth 2012年论文《Efficient Zero-Knowledge Argument for Correctness of a Shuffle》中各算法的代码实现。目前github上主要有两类实现:
- https://github.com/derbear/verifiable-shuffle
- https://github.com/nirvantyagi/stadium和https://github.com/grnet/bg-mixnet
2. https://github.com/derbear/verifiable-shuffle中代码实现
round_n,nnn为奇数对应是Prover操作,nnn为偶数对应是Verifier操作。
- round_1:shuffle argument中的commit to π(1),…,π(N)\pi(1),…,\pi(N)π(1),…,π(N)。
- round_2:challenge chal_x2chal\_x2chal_x2。
- round_3:x=chal_x2x=chal\_x2x=chal_x2, commit to xπ(1),…,xπ(N)x^{\pi(1)},…,x^{\pi(N)}xπ(1),…,xπ(N)。
- round_4:challenge chal_y4,chal_z4chal\_y4,chal\_z4chal_y4,chal_z4。
- round_5a: y=chal_y4,z=chal_z4y=chal\_y4,z=chal\_z4y=chal_y4,z=chal_z4,构建矩阵D=(d1−z=yπ(1)+xπ(1)−z,…,dN−z=yπ(N)+xπ(N)−z)=(d⃗1,d⃗2,⋯,d⃗m)D=(d_1-z=y\pi(1)+x^{\pi(1)}-z,…,d_N-z=y\pi(N)+x^{\pi(N)}-z)=(\vec{d}_1,\vec{d}_2,\cdots,\vec{d}_m)D=(d1−z=yπ(1)+xπ(1)−z,…,dN−z=yπ(N)+xπ(N)−z)=(d1,d2,⋯,dm),构建用于product argument的矩阵D_h=(d⃗1,d⃗1⋅d⃗2,⋯,d⃗1⋅d⃗2⋯d⃗m)=(d⃗h1,d⃗h2,⋯,d⃗hm−1,d⃗hm)D\_h=(\vec{d}_1,\vec{d}_1\cdot\vec{d}_2,\cdots,\vec{d}_1\cdot\vec{d}_2\cdots\vec{d}_m)=(\vec{d}_{h_1},\vec{d}_{h_2},\cdots,\vec{d}_{h_{m-1}},\vec{d}_{h_m})D_h=(d1,d1⋅d2,⋯,d1⋅d2⋯dm)=(dh1,dh2,⋯,dhm−1,dhm),并对D_hD\_hD_h进行commit。
- round_5b:引入随机变量B0←ZqnB_0\leftarrow \mathbb{Z}_q^nB0←Zqn和a←Zq2ma\leftarrow \mathbb{Z}_q^{2m}a←Zq2m并分别对其commit,分别对应Multi-exponentiation Argument中的cA0和{cBk}k=02m−1c_{A_0}和\{c_{B_k}\}_{k=0}^{2m-1}cA0和{cBk}k=02m−1。
- round_5c:计算Multi-exponentiation Argument中的{Ek}k=02m−1\{E_{k}\}_{k=0}^{2m-1}{Ek}k=02m−1。
- round_6:challenge chal_x6←Zq2m:(x,x2,⋯,x2m)和chal_y6←Zqn:(y,y2,⋯,yn)chal\_x6\leftarrow\mathbb{Z}_q^{2m}:(x,x^2,\cdots,x^{2m})和chal\_y6\leftarrow\mathbb{Z}_q^{n}:(y,y^2,\cdots,y^{n})chal_x6←Zq2m:(x,x2,⋯,x2m)和chal_y6←Zqn:(y,y2,⋯,yn)。
- round_7a:
为Hadamard product argument服务,引入随机向量d⃗m+1←Zqn\vec{d}_{m+1}\leftarrow \mathbb{Z}_q^ndm+1←Zqn,commitment to d⃗m+1\vec{d}_{m+1}dm+1,构建矩阵D_s=(xd⃗h1,x2d⃗h2,⋯,xm−1d⃗hm−1,∑i=1m−1xid⃗hi+1,d⃗m+1)D\_s=(x\vec{d}_{h_1},x^2\vec{d}_{h_2},\cdots,x^{m-1}\vec{d}_{h_{m-1}},\sum_{i=1}^{m-1}{x^i\vec{d}_{h_{i+1}}},\vec{d}_{m+1})D_s=(xdh1,x2dh2,⋯,xm−1dhm−1,∑i=1m−1xidhi+1,dm+1),commit to D_sD\_sD_s。
为zero argument服务,构建相应的D_lD\_lD_l并commit,对应其中的c⃗D、cA0和cBm\vec{c}_D、c_{A_0}和c_{B_m}cD、cA0和cBm。
为Single value product argument服务,引入随机变量d⃗←Zqn\vec{d}\leftarrow\mathbb{Z}_q^nd←Zqn,计算cd、cδ和cΔc_d、c_{\delta}和c_{\Delta}cd、cδ和cΔ。 - round_7b:计算Multi-exponentiation Argument中的a⃗,r,b,s,τ\vec{a},r,b,s,\taua,r,b,s,τ。
- round_8:challenge chal_x8←Zq2m+1:(x,x2,⋯,x2m+1)chal\_x8\leftarrow\mathbb{Z}_q^{2m+1}:(x,x^2,\cdots,x^{2m+1})chal_x8←Zq2m+1:(x,x2,⋯,x2m+1)。
- round_9a:计算Single value product argument中的a~1,⋯,a~n,r~\tilde{a}_1,\cdots,\tilde{a}_n,\tilde{r}a~1,⋯,a~n,r~和b~1,⋯,b~n,s~\tilde{b}_1,\cdots,\tilde{b}_n,\tilde{s}b~1,⋯,b~n,s~。
- round_9b:计算zero argument中的a⃗,b⃗,r,s,t\vec{a},\vec{b},r,s,ta,b,r,s,t。
- round_10:分别对shuffle argument、Multi-exponentiation Argument、Hadamard product argument、zero argument以及Single value product argument的最后一步verify即可。
3. https://github.com/nirvantyagi/stadium和https://github.com/grnet/bg-mixnet中代码实现
Nirvan Tyagi等人2017年论文《Stadium: A Distributed Metadata-Private Messaging System》,针对的场景是:互联网环节下的private communication。即使对传输的消息messages进行了加密(data privacy),但是要想隐藏相互通讯的双方信息(metadata about which pairs of users are communicating——metadata privacy)仍不容易。如匿名网络Tor对traffic analysis流量分析是敏感的。本文的metadata指:who is communicating with whom, at what time, and their traffic volumes.
现有情况:
- Systems that leak no metadata at all, such as Riposte [12] and Dissent [13], require broadcasting all messages to all users or use computationally intensive Private Information Retrieval.
- Vuvuzela 是一个消息通讯系统。可以保护消息的内容和消息元数据的私密性。目前Vuvuzela仅能支持最高约115,000 messages per second,而此时每个Vuvuzela server对应需要的带宽约为1.3Gbit/sec(因其设计为requires transmitting all messages through a single chain of relay servers, preventing it from scaling beyond this.),增加server的成本。基于Jelle van den Hooff等人2015年论文《Vuvuzela: Scalable Private Messaging Resistant to Traffic Analysis》,代码实现可见:https://github.com/vuvuzela/vuvuzela。
Stadium——在保证吞吐量和可扩展性的前提下,可同时提供metadata privacy和data privacy,并保证efficiently distributing its work over multiple servers。与Vuvuzela类似,Stadium基于的也是differential privacy差分隐私技术,但是Stadium可支持的用户。Stadium需要distributing users’ traffic across servers,使得adversaries有机会observe it in fine granularity,为了应对该风险,Stadium采用了以下两种方法:
- a collaborative noise generation approach。
- 和a novel verifiable parallel mixnet design where the servers collaboratively check that others follow the protocol。——即基于的是Stephanie Bayer和Jens Groth 2012年论文《Efficient Zero-Knowledge Argument for Correctness of a Shuffle》的verifiable shuffling 协议 extended for non-interactive proofs via the Fiat Shamir Heuristic and instantiated over a 1536-bit prime order group。
https://github.com/nirvantyagi/stadium和https://github.com/grnet/bg-mixnet两套代码之间的关系为:
bg-mixnet builds on top of the Stadium software project, which is hosted at https://github.com/nirvantyagi/stadium. Stadium is a distributed metadata-private messaging system.
性能相对于https://github.com/derbear/verifiable-shuffle做了性能优化:
Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(3)相关推荐
- Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(1)
Stephanie Bayer和Jens Groth 2012年论文<Efficient Zero-Knowledge Argument for Correctness of a Shuffle ...
- Error detection in Knowledge Graphs: Path Ranking, Embeddings or both?-学习笔记
Error detection in Knowledge Graphs: Path Ranking, Embeddings or both? 错误的三元组本质上是对象s与对象o(两者均为E)之间的错误 ...
- PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记
1. 引言 Gabizon等人2019年论文<PLONK: permutations over lagrange-bases for oecumenical noninteractive arg ...
- qesa Efficient zero-knowledge arguments in the discrete log setting 学习笔记
1. 引言 Hoffmann等人 2019年论文 <Efficient zero-knowledge arguments in the discrete log setting >. 相应 ...
- cs224w(图机器学习)2021冬季课程学习笔记12 Knowledge Graph Embeddings
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Heterogeneous Graphs and Relational GCN (RGCN) ...
- SSP: Semantic Space Projection for Knowledge Graph Embedding with Text Descriptions 论文读书笔记
SSP: Semantic Space Projection for Knowledge Graph Embedding with Text Descriptions 论文读书笔记 1. Motiva ...
- 论文学习笔记(1):Efficient L0 resampling of point sets
论文学习笔记(1):Efficient L0 resampling of point sets 本文出自2019年"Computer Aided Geometric Design" ...
- 《智能计算系统》课程报告——《An Efficient FPGA Accelerator Optimized for High Throughput Sparse CNN Inference》学习笔记
介绍 Wen, J., Ma, Y., & Wang, Z. (2020). An Efficient FPGA Accelerator Optimized for High Throughp ...
- Halo2 学习笔记——设计之Proving system之Vanishing argument(4)
1. 引言 在完成对circuit assignment进行commit之后,Prover需要证明满足如下多种circuit关系: custom gates:以多项式gatei(X)\text{gat ...
最新文章
- 【Android】3.0 第3章 百度地图及其应用--预备知识
- linux CMA使用机制分析--基于SigmaStar SSD202
- spring学习之@ModelAttribute运用详解
- RecyclerView(滚动控件)的用法
- WEB API系列(一):WEB API的适用场景、第一个实例
- JavaScript中的运算符和语句
- 信息安全工程师笔记-入侵检测技术原理与应用
- YMP框架学习笔记(二)------基于YMP框架搭建WEB应用程序
- Win2008 R2 VDI动手实验系列之一:Active Directory搭建
- Atom飞行手册翻译: 2.12 在Atom中写作
- 阿里云与SUSE共同畅聊云原生
- 原生js实现简单的svg编辑器
- 用计算机思维认识摩斯密码(摩斯密码速记)
- java文字垂直居中_记录水平居中垂直居中
- 2362:数字游戏(小k和小p的传奇)
- 该信谁?跳槽究竟是涨工资还是毁一生
- 大学生试用期辞退之没有工钱//2021-1-22
- 微商开始洗牌,怎么样你的团队才能活下来?
- linux桌面lxde 安装_archlinux下lxde安装与配置教程
- 当前最火直播APP开发优化问题
热门文章
- 8款超高效率的办公软件,增加工作幸福感,千万别错过
- python不同路径导入包错误_Python 包导入错误
- Synergy实现一套鼠标和键盘控制两台电脑
- 解决ceph 100.000% pgs not active
- springboot --spring.profiles.active=test 不生效
- 实战:部署一套完整的企业级高可用K8s集群(成功测试)-2021.10.20
- .Net分布式缓存应用实例:Couchbase
- Java运用注解反射编写简单测试框架
- python图灵机器人项目总结_基于Python的图灵机器人设计与实现
- 如何为WordPress Gutenberg准备您的网站