Hi Tor devs!

I’d like your feedback on a new system to provide public hidden services that I 
call "shroud”. By “public hidden services”, I mean services whose network 
location cannot be determined (like Tor hidden services) but are accessible by 
any client on the internet (like hidden services + Tor2Web). I’ve linked to 
what I think is pretty comprehensive documentation at the end of this message, 
but here’s a brief summary:

Shroud runs over Tor with zero changes to the protocol but *does not* use the 
Tor hidden service protocol. At a very high level, shroud creates something 
like a reverse ssh tunnel *over* Tor from a local service to a public proxy. 
You then point DNS for a domain to the public proxy servers so that internet 
clients can talk to it. The public proxy servers multiplex TLS connections by 
inspecting the SNI data and forward the connection through to the appropriate 
shrouded service over its reverse tunnel.

Obviously, shroud makes a number of tradeoffs compared to traditional hidden 
services and Tor2Web, the most important being:
- Shrouded services have real hostname addresses and look just like any 
“ordinary” web service.
- Shrouded services (anecdotally) have better latency characteristics than Tor 
hidden services
- Shrouded services provide no anonymity for clients
- Shrouded services are dependent on their public proxy servers being available
- Shrouded services rely on DNS and are at the mercy of DNS providers and 
registrars (excepting things like modifying your /etc/hosts)
- Public proxies can not inspect or modify the connections they proxy because 
they are TLS-encrypted with keys they don’t own

Shroud is still very early in development, so I’m looking for feedback from the 
community on all aspects of the system from overall architecture to UI. In 
particular, I have a number of questions that I’m researching that I could use 
guidance on from those of you already steeped in Tor:

1. Shrouded services open up a single long-lived connection TLS connection to 
their public proxy. Is this a risk that could make it easier to de-anonymize a 
service? Would it be more difficult for an attacker to locate the service if 
the service opened a new connection over a new circuit every X seconds? Would 
it be more difficult for an attacker if the shrouded service communicated with 
the public proxy over multiple connections over multiple circuits 
simultaneously?

2. Right now shroud only allows you to tunnel TLS connections on domains you 
control with the idea that it eases the burden on public proxy operators 
(namely me). This is kind of akin to having an exit node with a policy that it 
only allows TLS connections out. Am I worrying too much about the consequences 
proxying traffic that could be inspected?  Allowing non-TLS services would make 
it *far* easier to set up a shrouded service because a shrouded service 
provider would 1. not have to own a domain, and 2. not need to create TLS key 
pairs and acquire certificates.

3. Is this a useful system? I feel like tor2web validates that there are use 
cases that could benefit from this type of asymmetric anonymity where only the 
service provider is anonymous, but perhaps someone else can indicate whether 
this is a path worth pursuing.

Links:
Source code and documentation: https://github.com/inconshreveable/shroud
More in-depth documentation on shroud’s architecture: 
https://github.com/inconshreveable/shroud/blob/master/docs/ARCHITECTURE.md

Pre-built binaries (just for testing/demonstration):
Linux: http://dl.shroud.io/linux_386/dev/shroud.zip
OS X: http://dl.shroud.io/darwin_amd64/dev/shroud.zip
Windows: http://dl.shroud.io/windows_386/dev/shroud.zip

Thanks!

- alan
_______________________________________________
tor-dev mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev

Reply via email to