Skip to content

Compare Rabin and Pederesen DKG and assess how much they differ #560

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
7 tasks
AnomalRoil opened this issue Feb 12, 2025 · 1 comment
Open
7 tasks

Compare Rabin and Pederesen DKG and assess how much they differ #560

AnomalRoil opened this issue Feb 12, 2025 · 1 comment
Assignees

Comments

@AnomalRoil
Copy link
Contributor

We currently have 2 different folders in our shares/dkg directory:

  • pedersen
  • rabin

However Rabin is supposed to be implemented the version of Pedersen that was "fixed" in the paper called "Secure Distributed Key Generation for Discrete-Log Based Cryptosystems", but I suspect the Pedersen folder (that was actually ported back from the drand/kyber fork) might be implementing the same scheme.

So, to-do:

  • Write some example that use Pedersen
  • Write some example that uses Rabin
  • Change these to be fully deterministic
  • Check if they are somewhat interoperable
  • Check if they produce the same values or not
  • Compare both codebase to confirm whether or not they are redundant
  • If redundant, remove the rabin folder from the codebase
@thehoul thehoul self-assigned this Feb 17, 2025
@thehoul
Copy link

thehoul commented Feb 17, 2025

At first glance, it seems that the dkg/pedersen implements the original DKG implementation proposed by Pedersen and not the revised version published by Rabin.

Based on my research so far, the main difference between Pedersen's original DKG and Rabin's version is the VSS used. Pedersen uses Feldman and Rabin uses a VSS proposed by Pedersen. The implementation in the codebase seems to be using Feldman-VSS suggesting that it is different from the implementation of dkg/rabin.

I want to mention that the implementation of Pedersen in the codebase seems overly complicated. It is over 1000 lines whereas Rabin's is about half of that. There is probably something that could be done about it but I don't know if it is worth the time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants