fireblocks / mpc-lib

GNU General Public License v3.0
147 stars 86 forks source link

Threshold ECDSA (with t < n) not supported? #9

Closed bergkvist closed 6 months ago

bergkvist commented 8 months ago

It seems like you don't support threshold ECDSA signatures:

https://github.com/fireblocks/mpc-lib/blob/84b7fb83502a998703b6ceb113273fc20fa55b7b/src/common/cosigner/cmp_setup_service.cpp#L54-L58

nadav-fireblocks commented 6 months ago

Correct, this is by design and not likely to change soon.

Instead of supporting T<N, this library supports "K different groups, each of them having T=N players".

This decision has several benefits:

Key sharing mechanism

Unlike threshold signatures, this model supports "Additive secret key sharing" which has other benefits of its own.

Add more groups

Its always possible to securely & seamlessly add more groups. N becomes a security parameter, whereas the number of groups (K) can always grow.

Remove Groups

It is possible revoke, or disable, any single group, by disabling just one player in that group. Signing mandates full collaboration & approval of all N players.

Important note

The decision on which players belong into each group, or how you map groups & players into real-world entities, is external to this library, and results from larger design decisions in any application using this library.