maidsafe / bls_dkg

Implementation of a BLS DKG mechanism, requires signing key, encryption key and SocketAddr of participants
BSD 3-Clause "New" or "Revised" License
22 stars 17 forks source link

Dynamic member list #136

Closed ppoliani closed 1 year ago

ppoliani commented 1 year ago

Is it possible to start with one set of members and then at some point about the list of members but still keep the same collective public/secret key.

For example, one scenario might be to start with the initial set of member S1. Then use that to encrypt some data. At a later point then some members might leave the group and some other might join. However, since the data where encrypted with the S1 set of members, it would make sense to use the same key to decrypt the original data even though the members have changed.

davidrusu commented 1 year ago

Hi @ppoliani, this crate has been superseded by https://github.com/maidsafe/sn_sdkg.

As for your question. You can create a key with a threshold t, as long as you have t + original members, you can continue using the original key.

But there is no way to "update" a key to include new members. The generated key is tied directly to the DKG participants.

You can implement a "handover" protocol where the new set S2 runs DKG to create a new key KEY2, then they bring that key to S1 who signs it with their key. This signature would be a proof that membership has changed S1 to S2.

If you keep this chain of signatures around, you can use it convince clients that the new members are indeed the valid members.

# Chain of signatures leading to the current members

S1 --> S2 --> S3 --> ... -> S10 (current member)
ppoliani commented 1 year ago

@davidrusu Thank you for such a prompt reply :)

The handover protocol makes absolute sense. At the same time it's till unfortunate though that such flexibility is not possible. The issue is that is such setup is used to let clients encrypt private data then it might be impossible in the future to decrypt such data when the new S2 is created.

Pardon my ignorance, what I'm thinking out loud might not even be possible in general 😆

davidrusu commented 1 year ago

Yes, DKG is probably not what you want for persistent, long term encryption where the owners are changing.

ppoliani commented 1 year ago

@davidrusu thank you so much for your valuable input :)