Skip to content
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

Implementing a zero-knowledge proof of membership #44

Open
pgrinaway opened this issue Jun 13, 2019 · 1 comment
Open

Implementing a zero-knowledge proof of membership #44

pgrinaway opened this issue Jun 13, 2019 · 1 comment
Labels
enhancement New feature or request

Comments

@pgrinaway
Copy link

Hi,

I've been trying to implement this zero knowledge proof of membership technique. I was wondering if you had any advice on the following regarding design:

Where to put the code to create a random group generator (I had thought I could just write G::elem(Integer) where Integer is the group generator, but that doesn't seem to work--the compiler complains that there is no variant elem. Perhaps it is better to implement the random group generator function inside the group implementations?

Thanks. Apologies if not clear or if I just missed something painfully obvious.

@whaatt
Copy link
Collaborator

whaatt commented Jun 13, 2019

Good question; the short answer is basically that this function should live on each implementation of the Group trait, since it's presumably tied to the behavior of the group.

We have a trait UnknownOrderGroup: Group with a function unknown_order_elem that was originally supposed to encapsulate this behavior. (Here, UnknownOrderGroup refers to a group containing elements of unknown order, rather than the group itself having unknown order.)

For implementing the non-interactive argument systems in BBF, however, we realized that the generator value returned by unknown_order_elem can be the same each time, as long as the element returned has unknown order. In the case of the RSA group, we always return 2.

(Issue #43 addresses the security implications thereof.)

To implement this functionality, I'd either patch unknown_order_elem or more likely add a new function to the interface unknown_order_elem_random.

Hope this helps! Please let me know if you have any more questions.

@whaatt whaatt added the enhancement New feature or request label Sep 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants