[][src]Module bls_like::pop

Aggregation of BLS signatures using proofs-of-possession

In this module, we provide the linear flavor of aggregate BLS signature in which the verifiers has previously checked proofs-of-possession for all public keys. In other words, we simply add up the signatures because the previously checked proofs-of-possession for all signers prevent rogue key attacks. See the security arguments in The Power of Proofs-of-Possession: Securing Multiparty Signatures against Rogue-Key Attacks by Thomas Ristenpart and Scott Yilek at https://eprint.iacr.org/2007/264.pdf

These proof-of-possession are simply self-signed certificates, so a BLS signature by each secret key on its own public key. Importantly, the message for this self-signed certificates must uniquely distinguish the public key for which the signature establishes a proof-of-possession. It follows that each proof-of-possession has a unique message, so distinct message aggregation is optimal for verifying them.

In this vein, we note that aggregation under proofs-of-possession cannot improve performance when signers sign distinct messages, so proofs-of-possession help with aggregating votes in a concensus protocol, but should never be used for accounts on a block chain.

We assume here that users provide their own data structure for proofs-of-poossession. We provide more structure for users who one bit per vote in a concensus protocol:
You first verify the proofs-of-possession when building a data structure that holds the voters' keys. You implement the ProofsOfPossession trait for this data strtcuture as well, so that the BitPoPSignedMessage type provides a signature data type with reasonable sanity checks.

Structs

BatchAssumingProofsOfPossession

Batch or aggregate BLS signatures with attached messages and signers, for whom we previously checked proofs-of-possession.

BitPoPSignedMessage

One individual message with attached aggreggate BLS signatures from signers for whom we previously checked proofs-of-possession, and with the singers presented as a compact bitfield.

CountPoPSignedMessage

One individual message with attached aggreggate BLS signatures from signers for whom we previously checked proofs-of-possession, and with the singers presented as a compact bitfield.

Enums

PoPError

Error type for bitfield-style proof-of-possession aggreggation

Traits

ProofsOfPossession

Proof-of-possession table.