Specs and implement SURBs
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
For creating specs: https://katzenpost.mixnetworks.org/docs/specs/sphinx.html#single-use-reply-block-surb-creation
Am I right that it is not possible to send any anonymous reply back to the initiator without this feature implemented?
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.
@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).