Skip to content

Usages of echo-broadcasting #101

Open
@fjarri

Description

@fjarri

It appears that we are using echo-broadcasting for two separate purposes:

  1. To simulate a verifiable broadcast. This is a common primitive required e.g. by CGGMP. While this worked fine for n-of-n scenarios, attempting to add threshold to the picture results in issues when faulty/malicious nodes are involved (see Proper threshold support #95).
  2. To collect data for a possible generation of an evidence of malicious behavior. For example, some check of an incoming message from a node j may use a value assembled from messages received from all nodes during one of the previous rounds. If the check fails, we can only use the data signed by j in the evidence; this means j must echo all the received messages in that previous round so that during the evidence verification we could assemble the required value using only the data signed by j.

We may also want one more similar functionality:
3. Ensure that all nodes agree on the total set of nodes that is still considered active. This can be used to make e.g. the returned key shares each contain the same set of public shares. Is that necessary?

These purposes need to have separate APIs associated with them, and they will probably have to use separate algorithms since we need different guarantees in either case.

Open question: for item 1, do we need reliable broadcast (Bracha's algorithm etc) or verifiable broadcast (more complicated)? Or perhaps abortable broadcast (https://arxiv.org/abs/2410.22080)? What does CGGMP need?

More links:

Metadata

Metadata

Assignees

No one assigned

    Labels

    APIInvolves backwards-incompatible changes of the public APIsecurityCounteracting malicious behavior

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions