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

Specs and implement SURBs #19

Open
2 tasks
gpestana opened this issue Mar 3, 2019 · 4 comments
Open
2 tasks

Specs and implement SURBs #19

gpestana opened this issue Mar 3, 2019 · 4 comments

Comments

@gpestana
Copy link
Member

gpestana commented Mar 3, 2019

SURB (single-use-reply-block) allows the last relay to send the response back to the initiator, while respecting the privacy and security properties of onion routing. Using SURBs must be optional.

  • add specs
  • implementation and testing
@gpestana gpestana changed the title Create SURBs Specs and implement SURBs Mar 3, 2019
@gpestana gpestana added this to the p3lib-sphinx v1 milestone Mar 3, 2019
@gpestana
Copy link
Member Author

gpestana commented Jul 9, 2019

@derlaft
Copy link
Contributor

derlaft commented Jul 14, 2019

Am I right that it is not possible to send any anonymous reply back to the initiator without this feature implemented?

@gpestana
Copy link
Member Author

hey @derlaft!

At this point you can add a breadcrumb to the package that each of the relayers will use to keep state locally to relay the response back to the destination. So, it is possible to possible to send an anonymous reply back to the initiator, but the relayers will have to keep state of the package channel, which the sphinx protocol tries to avoid. With SURBs we can bypass the state completely and avoid potential linking problems with the breadcrumbs.

@derlaft
Copy link
Contributor

derlaft commented Jul 24, 2019

@gpestana not sure how encryption should work in this case.

But probably, since libp2p already handles streams and stuff, it may be possible to use this library for only dh negotiation (meh, it also requires a handshake), and then use some symmetric encryption. This way no state is required to support a separate connection (which won't be able to change hops unfortunately).

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

2 participants