mirror of
https://github.com/serai-dex/serai.git
synced 2024-10-31 01:17:37 +00:00
16 lines
745 B
Markdown
16 lines
745 B
Markdown
|
# Distributed Key Generation
|
||
|
|
||
|
Serai uses a modification of Pedersen's Distributed Key Generation, which is
|
||
|
actually Feldman's Verifiable Secret Sharing Scheme run by every participant, as
|
||
|
described in the FROST paper. The modification included in FROST was to include
|
||
|
a Schnorr Proof of Knowledge for coefficient zero, preventing rogue key attacks.
|
||
|
This results in a two-round protocol.
|
||
|
|
||
|
### Encryption
|
||
|
|
||
|
In order to protect the secret shares during communication, the `dkg` library
|
||
|
additionally sends an encryption key. These encryption keys are used in an ECDH
|
||
|
to derive a shared key. This key is then hashed to obtain two keys and IVs, one
|
||
|
for sending and one for receiving, with the given counterparty. Chacha20 is used
|
||
|
as the stream cipher.
|