Skip to content

Usages of echo-broadcasting #101

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
fjarri opened this issue May 7, 2025 · 2 comments
Open

Usages of echo-broadcasting #101

fjarri opened this issue May 7, 2025 · 2 comments
Labels
API Involves backwards-incompatible changes of the public API security Counteracting malicious behavior
Milestone

Comments

@fjarri
Copy link
Member

fjarri commented May 7, 2025

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:

@fjarri fjarri added this to the v1.0.0 milestone May 7, 2025
@fjarri fjarri added API Involves backwards-incompatible changes of the public API security Counteracting malicious behavior labels May 7, 2025
@fjarri
Copy link
Member Author

fjarri commented May 8, 2025

To summarize some assorted reading: GG'18 and '20 only required reliable broadcast. GG'21 uses the term "verifiable", although it is not clear whether it is a deliberate word choice. The only desirable property they mention explicitly is that "consensus is always reached between all honest parties" (which I think is equivalent to the totality property of a reliable broadcast), for the rest they reference R. Canetti. "Universally composable security", https://doi.org/10.1145/3402457, where the term "broadcast" only occurs twice and never really explained.

@dvdplm
Copy link
Collaborator

dvdplm commented May 9, 2025

I find that different authors use different terms for these things, and the words used seem to really matter.

Property Consistent Broadcast (Echo Broadcast) Reliable Broadcast (BRB)
Validity If correct sender broadcasts 𝑚, all correct parties deliver 𝑚. If correct sender broadcasts 𝑚, all correct parties deliver 𝑚.
Consistency (aka Agreement) If correct 𝑃ᵢ delivers 𝑚 & correct 𝑃ⱼ delivers 𝑚′, 𝑚 = 𝑚′. If correct 𝑃ᵢ delivers 𝑚 & correct 𝑃ⱼ delivers 𝑚′, 𝑚 = 𝑚′.
Integrity Deliver at most one message: if sender correct, message was sent. Deliver at most one message: if sender correct, message was sent.
Totality Not Guaranteed. Some correct parties may deliver, others not. Guaranteed. If 𝑎𝑛𝑦 correct party delivers 𝑚, 𝑎𝑙𝑙 correct parties deliver 𝑚.
Typical Use Lightweight broadcast where eventual delivery for all isn't critical. Foundational primitive for consensus, SMR, MPC requiring strong agreement.
Key Limitation Allows divergence in delivery decisions among correct parties. Higher complexity (e.g., 𝑂(𝑛²) messages for classic Bracha).

Afaict "echo broadcast" is a sloppy term, most often meaning "consistent broadcast" but not always.

In CGGMP section 3.5 the authors use the following terms:

  • "verifiable broadcast channel"
  • "authenticated, synchronous broadcast channel"
  • "'weak' broadcast"

While I can speculate about what e.g. "verifiable broadcast channel" means, it's hard to know for sure. I think that by "weak broadcast" they probably mean "Consistent Broadcast", i.e. BRB minus Totality?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API Involves backwards-incompatible changes of the public API security Counteracting malicious behavior
Projects
None yet
Development

No branches or pull requests

2 participants