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

Improve Documentation of ParticipantIds #524

Open
gatoWololo opened this issue Apr 22, 2024 · 0 comments
Open

Improve Documentation of ParticipantIds #524

gatoWololo opened this issue Apr 22, 2024 · 0 comments
Labels
crypto documentation Improvements or additions to documentation tech-debt Something works but could be better

Comments

@gatoWololo
Copy link

Our current documentation of ParticipantIds is:

An identifier for a Participant.
All Participants in a session must agree on the ParticipantIdentifiers. That is, these are not local identifiers controlled by a single Participant; they are unique, agreed-upon identifiers for the Participants in a session. Each entity participating in a session should have a different ParticipantIdentifier.
ParticipantIdentifiers can be used across multiple sessions. For example, if a set of participants run keygen, auxinfo, and then compute several signatures, they can use the same set of identifiers for each of those sessions. However, a single ParticipantIdentifier should not be used to represent different entities (even in different sessions with non-overlapping participant sets!).
ParticipantIdentifiers should be unique within a deployment, but they don't necessarily have to be globally unique.

Up to now, I thought that ParticipantIds where ephemeral objects which we could arbitrarily choose to run a subprotocol: e.g. keygen and then forget about them. It turns out that the same set of ParticipantIds must be used to for all sub-protocols for a given key. This is somewhat implied by the documentation:

if a set of participants run keygen, auxinfo, and then compute several signatures, they can use the same set of identifiers for each of those sessions

Note the above say "they can use the same same of id..." but it should actually say "they must use...". We should improve the documentation for ParticipantIds.

Notes, Suggested Improvements, Questions:

  • It is not clear what session is in the documentation above, we should define it, or use a better term. It seems, in this context, a session refers to what I call a "single sub-protocol execution".
  • Make it explicit that we need to remember/persist the mapping of ParticipantIds to key material, for a given key.
  • Every Participant probably needs to remember the Ids of all members of it's quorum? For the lifetime of a key.
  • I don't quite understand the relation and differences between the session ID and the participant ID.
  • From the documentation: "a single ParticipantIdentifier should not be used to represent different entities (even in different sessions with non-overlapping participant sets!)". This implies that we should not assign a "static" ParticipantId to each node and reuse it across keys? Should we be generating a new ID per key and persisting this information for the lifetime of the key? Not only this ID, but the IDs of all others Participants in this quorum? Just wanted to highlight this is quite a bit of bookkeeping.
@gatoWololo gatoWololo added documentation Improvements or additions to documentation tech-debt Something works but could be better labels Apr 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crypto documentation Improvements or additions to documentation tech-debt Something works but could be better
Projects
None yet
Development

No branches or pull requests

2 participants