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

Asynchronous Ratchet #12

Open
amiller opened this issue May 30, 2017 · 1 comment
Open

Asynchronous Ratchet #12

amiller opened this issue May 30, 2017 · 1 comment

Comments

@amiller
Copy link
Owner

amiller commented May 30, 2017

Consider the Common Coin protocol. In this protocol, every message is of the form COIN(r, A, B), which indicates a threshold signature share for the rth sequential coin, sent from A to B.

Right now, a node accepts an incoming COIN message for any value r >= 0, even a round arbitrarily far in the future. Processing this message includes storing and verifying the signature share (an expensive pairing operation). This leads to a potential hard-to-attribute (in the sense of #11) resource exhaustion attack where an attacker node sends lots of spurious (but valid) signature shares.

Let's apply some ratcheting to messages sent along the asynchronous channels. Recipients recipients can discard some unsolicited messages received too early, before they're "ready". The main idea is that each sender keeps track of some partial view of the progress of each recipient (like a vector clock). The sender is then expected to queue up messages until the recipient is "ready."

For example, considering the Common Coin example above, we should have node A discard any received message COIN(r+1, B, A) until the message COIN(r, A, B) has been sent.

This approach effectively trades off some queuing at the recipient for queuing at the sender. This ticket is meant to start a discussion exploring when this approach is advantageous.

In the example above, the recipient's queuing could be unbounded (messages received from Byzantine nodes can be at any round), whereas (honest) senders' queues would be bounded in expectation (only constant expected number of common coin iterations in each run of binary agreement).

@sbellem
Copy link
Contributor

sbellem commented Aug 21, 2017

majvan pushed a commit to majvan/HoneyBadgerBFT that referenced this issue Dec 15, 2021
Reproduce attack and implement fix or liveness issue with ABA/commoncoin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants