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

Can't identify erring node when failure_message is unparseable #332

Closed
pm47 opened this issue Dec 18, 2017 · 3 comments
Closed

Can't identify erring node when failure_message is unparseable #332

pm47 opened this issue Dec 18, 2017 · 3 comments
Milestone

Comments

@pm47
Copy link
Collaborator

pm47 commented Dec 18, 2017

It seems that when receiving a failure for a payment, the origin payer can currently identify the erring node only when it successfully parses the message.

This is not great, because if any node in the route just answers with garbage instead of a valid failure+hmac, other nodes higher in the route will happily add their encryption layer, and the origin payer won't be able to find the culprit; in case it wants to retry, the origin payer will either have to try all combinations, or exclude all nodes in the previous route, which may significantly reduce its chances of finding an alternate path.

From an attacker point of view, this creates a costless attack vector on the routing layer. I'm not sure how effective it could be.

@Roasbeef
Copy link
Collaborator

This will always be the case unless each node in the backwards route is able to check the MAC. If we made a quadratic amount of HORNET circuits in the future for a route, then this would be possible, but it blows up the size of packets to a significant degree (and also makes establishing the initial payment circuit slower, tho that can be pipelined to a degree).

Aside from that let's say there's a way for node n-1 to detect that node n just used garbage as the error message. What recourse does node n-1 currently have? Currently it can't do anything but continue to pass backwards and encrypt the error.

@pm47
Copy link
Collaborator Author

pm47 commented Dec 19, 2017

This will always be the case unless each node in the backwards route is able to check the MAC.

Why would each node have to check the MAC? If they just add their own MAC on top of w/e data they received, then that's enough for the origin payer to find out who is putting bad data, I think. Yes it does take more space.

Aside from that let's say there's a way for node n-1 to detect that node n just used garbage as the error message. What recourse does node n-1 currently have?

I don't think we need or want the n-1 node to know or do anything though. What matters is that the origin payer does?

@t-bast
Copy link
Collaborator

t-bast commented Sep 18, 2024

See #1044 for a potential solution.

@t-bast t-bast closed this as completed Sep 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants