[tor-bugs] #7153 [Pluggable transport]: Don't require pluggable transport proxies to be SOCKS proxies
Tor Bug Tracker & Wiki
blackhole at torproject.org
Sat Feb 23 00:00:27 UTC 2013
#7153: Don't require pluggable transport proxies to be SOCKS proxies
---------------------------------+------------------------------------------
Reporter: karsten | Owner: asn
Type: project | Status: new
Priority: normal | Milestone:
Component: Pluggable transport | Version:
Keywords: SponsorF20130228 | Parent:
Points: | Actualpoints:
---------------------------------+------------------------------------------
Comment(by dcf):
Replying to [comment:9 nickm]:
> Zack, David -- I'm not getting a great sense here what interface you
actually want, beyond "Not the current one!" Is there a
flashproxy/stegotorus document that explains your preferred solution here?
(Please forgive me if it's described above and I'm just not seeing it.)
The current model mostly works fine for flash proxy. Being SOCKS works
fine. The `Bridge storus1 direct` example in the description, I don't know
how flash proxy would use something like that.
What flash proxy could use is a way to inform Tor dynamically of the
bridges currently available. The way it works now is
1. You put
{{{
Bridge websocket 0.0.1.0:1
ClientTransportPlugin websocket exec ./flashproxy-client --register
}}}
in your `torrc` and start Tor.
2. The flash proxy client transport plugin does its rendezvous, but no
proxy connections come in immediately (takes about a minute).
3. Tor makes a SOCKS request for the fake bridge address 0.0.1.0:1.
4. The flash proxy client transport plugin accepts the SOCKS request even
though it doesn't have any proxies yet. Tor sends a few hundred bytes at
this point, which the transport plugin buffers.
5. A minute later, about 10 proxy connections come in, mostly all at
once. The transport plugin picks one of them, flushes its buffer over the
proxy, and proxies as long as the proxy exists. When the proxy
disconnects, the transport plugin switches to another already existing
connection, but Tor doesn't notice this fact and thinks it's the same
bridge at 0.0.1.0:1.
Note in the above how there is only ever one SOCKS connection open at a
time. Nine out of ten proxies sit idle while one of them is being used.
This is what would be better:
1. You put
{{{
ClientTransportPlugin websocket exec ./flashproxy-client --register
}}}
in your `torrc` and start Tor. Notice you don't configure any bridges
(because none exist yet).
2. The transport plugin does its rendezvous and waits.
3. Tor ''doesn't'' make a SOCKS connection because it knows of no bridges
yet.
4. About 10 proxy connections come in. The transport plugin informs Tor
of each of them, over a control port or something. Think of it as
effectively dynamically adding new bridge lines:
{{{
Bridge websocket X.X.X.X:X
Bridge websocket Y.Y.Y.Y:Y
Bridge websocket Z.Z.Z.Z:Z
...
}}}
Where X.X.X.X:X etc. are the actual proxy IP addresses and ports that
have just been learned. (Or they could be made up or hashed, it doesn't
really matter.)
5. Tor now knows of 10 bridges it can make SOCKS requests for. If Tor
asks for a connection to X.X.X.X:X, for example, the transport plugin
would match the address to one of its existing proxy connections, and
report SOCKS success to Tor. Having an address as a name for the
connection allows Tor to manage bandwith per flash proxy or whatever.
6. As flash proxies disconnect, the transport plugin can dynamically
''remove'' those bridge lines that it added previously, again over some
control channel. Tor notices when a bridge goes away.
So the number of parallel SOCKS connections could be as high as the
current number of flash proxies, and Tor would be able to manage bandwidth
and keyids independently for each of them.
In summary, if there were a way for a transport plugin to tell Tor that
there is a new bridge, and tell Tor when a bridge no longer exists, it
would be all we need. All the SOCKS infrastructure wouldn't have to
change.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/7153#comment:14>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list