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−1​xidhi+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)相关推荐

  1. Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(1)

    Stephanie Bayer和Jens Groth 2012年论文<Efficient Zero-Knowledge Argument for Correctness of a Shuffle ...

  2. Error detection in Knowledge Graphs: Path Ranking, Embeddings or both?-学习笔记

    Error detection in Knowledge Graphs: Path Ranking, Embeddings or both? 错误的三元组本质上是对象s与对象o(两者均为E)之间的错误 ...

  3. PLONK: permutations over lagrange-bases for oecumenical noninteractive arguments of knowledge 学习笔记

    1. 引言 Gabizon等人2019年论文<PLONK: permutations over lagrange-bases for oecumenical noninteractive arg ...

  4. qesa Efficient zero-knowledge arguments in the discrete log setting 学习笔记

    1. 引言 Hoffmann等人 2019年论文 <Efficient zero-knowledge arguments in the discrete log setting >. 相应 ...

  5. cs224w(图机器学习)2021冬季课程学习笔记12 Knowledge Graph Embeddings

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Heterogeneous Graphs and Relational GCN (RGCN) ...

  6. SSP: Semantic Space Projection for Knowledge Graph Embedding with Text Descriptions 论文读书笔记

    SSP: Semantic Space Projection for Knowledge Graph Embedding with Text Descriptions 论文读书笔记 1. Motiva ...

  7. 论文学习笔记(1):Efficient L0 resampling of point sets

    论文学习笔记(1):Efficient L0 resampling of point sets 本文出自2019年"Computer Aided Geometric Design" ...

  8. 《智能计算系统》课程报告——《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 ...

  9. Halo2 学习笔记——设计之Proving system之Vanishing argument(4)

    1. 引言 在完成对circuit assignment进行commit之后,Prover需要证明满足如下多种circuit关系: custom gates:以多项式gatei(X)\text{gat ...

最新文章

  1. 【Android】3.0 第3章 百度地图及其应用--预备知识
  2. linux CMA使用机制分析--基于SigmaStar SSD202
  3. spring学习之@ModelAttribute运用详解
  4. RecyclerView(滚动控件)的用法
  5. WEB API系列(一):WEB API的适用场景、第一个实例
  6. JavaScript中的运算符和语句
  7. 信息安全工程师笔记-入侵检测技术原理与应用
  8. YMP框架学习笔记(二)------基于YMP框架搭建WEB应用程序
  9. Win2008 R2 VDI动手实验系列之一:Active Directory搭建
  10. Atom飞行手册翻译: 2.12 在Atom中写作
  11. 阿里云与SUSE共同畅聊云原生
  12. 原生js实现简单的svg编辑器
  13. 用计算机思维认识摩斯密码(摩斯密码速记)
  14. java文字垂直居中_记录水平居中垂直居中
  15. 2362:数字游戏(小k和小p的传奇)
  16. 该信谁?跳槽究竟是涨工资还是毁一生
  17. 大学生试用期辞退之没有工钱//2021-1-22
  18. 微商开始洗牌,怎么样你的团队才能活下来?
  19. linux桌面lxde 安装_archlinux下lxde安装与配置教程
  20. 当前最火直播APP开发优化问题

热门文章

  1. 8款超高效率的办公软件,增加工作幸福感,千万别错过
  2. python不同路径导入包错误_Python 包导入错误
  3. Synergy实现一套鼠标和键盘控制两台电脑
  4. 解决ceph 100.000% pgs not active
  5. springboot --spring.profiles.active=test 不生效
  6. 实战:部署一套完整的企业级高可用K8s集群(成功测试)-2021.10.20
  7. .Net分布式缓存应用实例:Couchbase
  8. Java运用注解反射编写简单测试框架
  9. python图灵机器人项目总结_基于Python的图灵机器人设计与实现
  10. 如何为WordPress Gutenberg准备您的网站