Schnorr Signatures is are extremely well researched improve the privacy of users whilst also helping with issues of scaling at the same time.
Currently, Cosmos SDK supports only ECDSA signatures. We started a work for adding ed25519. However it's not specified and lacking in depth analysis for batch verification, aggregation and specification for strickness for validation rules intended for consensus-critical contexts (--> tendermint issue for fixing it to provide guaranteess for cross-implementation consensus)
Many Bitcoin derived blockchains use ECDSA for digital signatures. Schnorr Signatures algorithm patent was about to expire by the time Bitcoin paper was released.
ECDSA has a number of downsides compared to Schnorr signatures:
Support Schnorr signatures for every use-case:
Schnorr is extremely powerful for the privacy because we can make complex multi-sig transactions and even complex coinjoin transactions look like everyday normal transactions. This makes it difficult for chain analysis companies to analyse the transaction flows.
Benefits:
Drawbacks:
Alternative:
BLS is another elegant solution for private signatures and aggregation. It's more optimal for scenarios where we need to aggregate thousands than signatures (for smaller use-cases Schnorr is faster). The Achilles' heel of BLS is pairing function are complicated, and it can become our foe if we are not careful enough.
There is an attack on elliptic curve crypto systems, called MOV attack (named after Menezes, Okamoto, and Vanstone), that allows to reduce security of the system by using pairing functions.
TL;DR: if not needed, it's safer to use well researched Schnorr Signatures rather than BLS.
/cc @aaronc , @clevinson -- this could be very useful for many use cases.
I mean we have Ed25519, which is ~basically Shnorr signatures restricted to one curve (some differences in how you hash things from the original Shnorr paper, but doesn't affect anything I'd see being used here). Aggregation techniques explicitly for Ed25519 look ~the same as for Shnorr, and have been specified for several years now. All usecases you listed can be done using Ed25519.
I don't see the benefit of adding direct Shnorr signatures, unless you explicitly want Shnorr secp256k1 for taproot compatability.
There is an attack on elliptic curve crypto systems, called MOV attack (named after Menezes, Okamoto, and Vanstone), that allows to reduce security of the system by using pairing functions.
All elliptic curves for use in cryptography are parameterized such that the MOV attack is infeasible. In the case of a pairing based curve, this (well really tower NFS attacks) is the central thing you parameterize security against.
The idea is to implement the BIP-340 for compatibility with secp256k1 keys AND appropriate aggregation schema. As you noticed, Ed25519 doesn't specify aggregation schema. Many SDK users are using secp256k1.
We can reuse MuSig, or some other protocol for aggregation.
In fact this is what Polkadot is using. W3F developed shnorrkel which implements a schema combining all features from BIP-340 with curve25519.
IFAICT, today there is no full support for ed25519 in SDK.
BTW, it seams that Tendermint is using Ed25519 directly. Does it implement measures against small-cofactor problems?
Implementation-defined behavior.Some systems, such as Ed25519 [7], do notspecify behavior when the inputs have a nonzeroh-torsion component. In par-ticular, Ed25519 signature verification can be different for batched vs singletonsignatures, or between different implementations. This can cause disruption inprotocols where all parties must agree on whether a signature is valid, such asa blockchain or Byzantine agreement. In other cases, it may make it easier tofingerprint implementations.
BTW, it seams that Tendermint is using Ed25519 directly. Does it implement measures against small-cofactor problems?
See https://github.com/tendermint/spec/pull/144.
We are working on this.
Note: sr25519 is supported in tendermint's crypto package. And is being used by a sdk based chain.
Zcash Schnorr construction that enables concurrent signing. Maybe too early for our consideration, but linking anyway https://www.zfnd.org/blog/frost-update/
It seams that Bitcoin research is advancing as well. Recently they published MuSig2.
MuSig2 doesn't need interaction between the signers any more, which was a common hurdle in MuSig1 discussions.
What is the status here? There isn't anything blocking this, right?
Most helpful comment
Note: sr25519 is supported in tendermint's crypto package. And is being used by a sdk based chain.