Skip to content

perun-network/threshold-bbs-plus-signatures

Folders and files

NameName
Last commit message
Last commit date
Jan 6, 2025
Jan 6, 2025
Jan 2, 2025
Sep 27, 2024
Jan 7, 2025
Jan 6, 2025
Dec 18, 2024
Jul 31, 2023
Jul 31, 2023
Jan 12, 2025
Jan 6, 2025
Nov 4, 2024
Aug 11, 2023

Repository files navigation

Threshold BBS+ from Pseudorandom Correlations Implementation

Description

This repository serves as the Go implementation for the BBS+ Threshold Signature Algorithm, as proposed in the paper Non-Interactive Threshold BBS+ From Pseudorandom Correlations (Faust et al., 2023).

It contains three main components of a BBS+ Threshold signature generation protocol. Firstly, the precomputation phase, which is the distribution and generation of precomputed shares. Secondly, the online phase, which uses the aforementioned precomputed shares to generate and verify BBS+ signatures.

The online phase of the signing protocol is based on the Rust implementation here. It is also published here. The offline phase is based on this implementation and is being integrated into this repository with the permission of the original author.

Additionally, this repository includes a Zero Knowledge Proof (zkp) package, allowing users to sign messages without exposing the messages and the respective signature. The proof generation and verification protocol is based on this publication. The implementation itself is functionally equivalent to the Rust implementation here, and also the Golang code in the Hyperledger Aries Framework.

Structure

fhks_bbs_plus defines the cryptographic material for the BBS+ Threshold Signature. It provides the properties to sign and verify using BBS+ keypairs.

precomputation provides a simple mock-up implementation of the PCF-PCG Generator. This is used to compute the necessary components to generate a BBS+ signature (Offline-Phase).

zkp provides the Zero-Knowledge Proof implementation for BBS+ signatures. This allows the user to sign messages without revealing the message and the signature, and also proving the knowledge of the legitimate signature.

helpers store the computational functions for the Online-Phase, which ensures correlations between Partial Signatures and combines them to generate BBS+ signatures.

measurements and tests are demonstrators and benchmarking for the procedure of threshold signing.

Test

To run the tests, use the following command:

go test -v ./...

Benchmark

To run the benchmarks, use the following command:

go run .

Related works

This repository is part of a project researching the use case of Threshold BBS+ for decentralized (anonymous) credential issuance.

Threshold-Integrated-AF-GO: A fork of Hyperledger Aries Framework Go with the integration of Threshold BBS+, see pkg/client/vcwallet.

BBB-Plus-Threshold-Demo: A command-line/ graphical demo utilizing the integrated threshold BBS+ in Aries VCWallet.