[tahoe-lafs-trac-stream] [Tahoe-LAFS] #517: make tahoe Tor- and I2P-friendly

Tahoe-LAFS trac at tahoe-lafs.org
Mon Dec 7 15:35:58 UTC 2015


#517: make tahoe Tor- and I2P-friendly
-------------------------+-------------------------------------------------
     Reporter:  warner   |      Owner:  warner
         Type:           |     Status:  new
  enhancement            |  Milestone:  1.10.3
     Priority:  minor    |    Version:  1.2.0
    Component:  code-    |   Keywords:  privacy anonymity anti-censorship
  network                |  i2p tor-protocol usability
   Resolution:           |
Launchpad Bug:           |
-------------------------+-------------------------------------------------

Comment (by leif):

 Thanks, David! It looks like the foolscap side has a usable SOCKS plugin
 now, and the other plugins should be relatively easy to write!

 On the Tahoe side, though, I think that it would be better to avoid
 requiring that Tahoe explicitly support specific foolscap plugins and
 their options (even if it does learn about some of them later to implement
 the anonymity options discussed in #1010).

 I can think of at least 5 or 6 possible client-side plugins so far; TCP
 (default), SOCKS, Tor (socks w/ automatic port selection: SocksSocket
 (unix domain socket), 9050, 9150, or discovered-via-control-port), HTTP
 Proxy, I2P (HTTP proxy with automatic port selection?), and perhaps UNIX
 domain sockets or other twisted endpoints - and I would like to be able to
 use any combination of them simultaneously.

 I'm not sure if I'd prefer that Tahoe specify (via a tahoe.cfg option)
 which plugins to load or if they should be loaded automatically like
 Twisted plugins, but in either case I think that Tahoe shouldn't need
 plugin-specific code.

 As previously discussed, using options obtained from connection hints
 would be dangerous when we are receiving the hints from announcements on
 the network.  But, it is also a convenient way to communicate arbitrary
 options to the plugin when the hints are coming from a local config file.

 So, I think we *should* allow arbitary options in connection hint strings
 (eg, a proxy servers's host, port, username, password, etc) but we should
 sanitize the hints we receive from announcements: only the type, host, and
 port are ever used from announcements.

 I propose eventually allowing per-server plugin configuration using my and
 David's "introducerless" branch (based on warner's work) discussed in
 ticket #68 which I hope to have rebased to master soon.

 Without that branch merged, we can implement less flexible plugin support
 (without per-server local configuration overrides) by mapping
 announcements' connection hint types to known plugins as discussed
 previously in this ticket.  This would even allow connecting to mixed tcp,
 tor, and i2p networks IFF the servers are announcing new-style connection
 hints with types, as the tor and i2p plugins should work with only a host
 and port.

 To enable connecting to an existing all-tor or all-i2p grids where some
 servers have not been upgraded, and also to provide the mode that connects
 to both onion and non-onion addresses over tor, and also to provide the
 ability to use arbitary socks or HTTP proxies with whatever options are
 desired, I propose an "announcement_rewrite" option which can accept a
 value like {{{tor:%h:%p}}} or
 {{{socks5:%h:%p:socksserver=127.0.0.1:socksport=1080}}} or {{{i2p:%h}}} or
 even {{{foo:%h:%p:origtype=%t}}}.

 So, to recap:

 * Without the introducerless branch, it will be possible to (a) connect to
 heterogeneous grids of new servers, or (b) connect to  homogeneous grids
 of old-and-new servers and route all connections over a specific proxy.

 * With the introducerless branch, it is possible to disregard
 announcements and specify unique connection plugin options for specific
 servers. (While still having a rewrite rule to coerce newly-announced
 servers to some default proxy connection.)

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/517#comment:64>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list