#key #generation #distributed #gennaro

gennaro-dkg

The Gennaro Distributed Key Generation Algorithm

42 releases

new 1.0.0-rc5 Dec 10, 2024
1.0.0-rc1 Oct 18, 2024
1.0.0-pre.0 Jul 31, 2024
0.9.0-rc2 Jul 30, 2024
0.2.8-pre0 Mar 20, 2023

#494 in Cryptography

Download history 149/week @ 2024-08-20 48/week @ 2024-08-27 107/week @ 2024-09-03 133/week @ 2024-09-10 71/week @ 2024-09-17 294/week @ 2024-09-24 558/week @ 2024-10-01 966/week @ 2024-10-08 680/week @ 2024-10-15 277/week @ 2024-10-22 417/week @ 2024-10-29 410/week @ 2024-11-05 258/week @ 2024-11-12 297/week @ 2024-11-19 440/week @ 2024-11-26 472/week @ 2024-12-03

1,475 downloads per month

Apache-2.0 OR MIT

645KB
2K SLoC

gennaro-dkg

Crate Docs Apache 2.0 Build status Downloads

The Gennaro Distributed Key Generation Algorithm as described here

This implementation also mitigates the Rogue Key Attack.

Security Notes

This crate has received one security audit from Kudelski Security with no significant findings. The audit report can be found here. We'd like to thank LIT Protocol for sponsoring this audit.

Protocol details

The protocol provided in this crate provides the following

  • It will continue as long as there are enough participants a.k.a above the threshold
  • Abort if the number of participants drops below the threshold

Malformed messages are not allowed and result in bad participants. Non-responsive participants are out of scope for this crate since this includes timeouts and retries which could be for a number of reasons: network latency, system crashes, etc. This is left to consumers as is handling the creation a secure channel to send data.

Essentially communication channels are deliberately not part of this crate. The sending and receiving of messages needs to be handled by the consumer of this crate. This allows the protocol to be used in both sync and async environments.

A good description of methods to do this can be found here.

In a nut-shell:

  1. Use Signal Protocol since this offers the highest security.
  2. Use the latest version of TLS if you can rely on and trust PKI.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~8–10MB
~188K SLoC