我的代码实现——Compressed sigma-Protocol

1. 引言

前序博客 Compressed sigma-Protocol Theory and Practical Application to Plug & Play Secure Algorithmics学习笔记

本人就 Thomas Attema等人2020年论文《Compressed sigma-Protocol Theory and Practical Application to Plug & Play Secure Algorithmics》做了相应的代码实现,具体见:

  • https://github.com/3for/Compressed_sigma-protocol

在该代码库中,目前仅基于Discrete Logarithmic assumption做了相应的实现,RSA assumption 和 Knowledge-of-Exponent Assumption 暂未实现:

  • Discrete Logarithmic assumption 采用的是curve25519-dalek。
    使用Pedersen vector commitment scheme的一个主要缺陷是所需generators的数量与vector dimension成正比。如需commit to an n n n-dimensional vector,则需要 n + 1 n+1 n+1 generators of the group G \mathbb{G} G。同时,对于compressed ∑ \sum -protocol Π c \Pi_c Πc,其verification time与dimension n n n呈正比。【因此设计了5.3.1和5.3.2场景,可减少generator数量的需求。】

  • 基本的 nizk、scalar 实现参考了Spartan库,但是Spartan库中的bullet.rs 【主要基于Hyrax,实现了zero-knowledge属性,但是存在Prover cheat问题,具体参见issue:Add another challenge in dotproduct proof? #33】reduce到 n = 1 n=1 n=1,本文根据论文reduce到了 n = 2 n=2 n=2,且不要求zero-knowledge,具体见:
    https://github.com/3for/Compressed_sigma-protocol/blob/main/src/nizk/nozk_noinv_bullet.rs

  • polynomial 实现参考了 algebra库 中的poly 模块,由于curve25519不是FFT friendly的,所以只实现了Field trait,而未实现FFTField trait。

  • 该论文中的各种protocol实现见sigma_protocol 目录下,*.rs 命名与protocol对应。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/113588837