I'm working on a Distributed Key Generation protocol. The idea is similar to this.
TLDR: Aggregated Shamir Secret Sharing, each participant acts as a dealer & distributed the secret shares of its secret polynomial to the rest of the participants. Finally, the actual secret can be constructed by aggregating the secret shares of all the participants. I understand how this DKG works & have implemented it.
Requirement: The shares should be "refreshed" after each epoch and new participants can be added and older ones can be removed in epoch transition. How can I change the above DKG protocol to incorporate this?
My attempt: Say there are initially n participants with a threshold of k. The DKG between them is successful & all the participants have their respective key shares from the rest of the participants. The final secret is the aggregation of all the n secrets.
In the next epoch a new participant wants to be added to the network and the threshold also increases by 1 i.e. (n+1, k+1). All the previous participants from 1 to n use their respective secrets to create new shares for n+1 participants with the updated threshold & distribute them to the rest. The aggregation of the n secrets should still be the same as above. The new participant thus needs to contribute an identity secret such that the final secret isn't changed. It generates the secret shares from the identity secret & distributes to everyone else. Now the DKG should work with the updated participant & threshold. I wondering what's the point of adding an identity secret?
Is there an issue with this approach or is there a better approach to the Aggregated Shamir Secret Sharing problem? I'm novice at cryptography so kindly excuse any obvious mistakes or lack of knowledge on this topic.