[tahoe-lafs-trac-stream] [tahoe-lafs] #1010: use only 127.0.0.1 as local address
tahoe-lafs
trac at tahoe-lafs.org
Fri Aug 23 21:21:54 UTC 2013
#1010: use only 127.0.0.1 as local address
-------------------------+-------------------------------------------------
Reporter: duck | Owner: warner
Type: | Status: new
enhancement | Milestone: 1.11.0
Priority: minor | Version: 1.6.1
Component: code- | Keywords: privacy anonymity docs anti-
network | censorship forward-compatibility i2p-collab
Resolution: |
Launchpad Bug: |
-------------------------+-------------------------------------------------
Comment (by zooko):
I just reviewed attachment:1010-use-only-127.patch (during Weekly Dev
Chat).
Thank you for updating this patch to apply to the current trunk! The patch
makes sense and is usefully addressing this issue. However, we talked it
over at our recent Weekly Dev Chat ([//pipermail/tahoe-
dev/2013-August/008674.html notes]), and have a few requirements for
safety of the configuration:
1. Let's add a {{{[node]anonymize}}} flag to the {{{tahoe.cfg}}} file. The
meaning of this flag is: stop the process and print an error message if
any of the configuration options would compromise my identity. There are
also probably going to be other meanings of this flag added in other
patches (i.e., this flag will probably come to mean also: do not allow any
outgoing connections that are not over a anonymous routing layer such as
Tor or I2P).
2. Instead of "{{{tub.location=}}}" (the empty string) meaning to not
advertise any location, let {{{tub.location=UNREACHABLE}}} mean that.
(This is in order to avoid confusion in the mind of the user about the
distinction between {{{tub.location}}} being absent versus it being
present with an empty value. See also below, about backward
compatibility.)
3. If {{{tub.location=UNREACHABLE}}}, then pass the special hardcoded
value {{{unreachable.example.org:0}}} to foolscap instead of the empty
string to foolscap. (This is because foolscap currently can't handle the
empty string for its connection hints — see
http://foolscap.lothar.com/trac/ticket/208 .)
4. Instead of expressing that the node's IP address should be auto-
detected by the absence of {{{tub.location}}}, express it by
{{{tub.location}}} being set to {{{AUTODETECT}}}.
Note that there is a third option besides {{{AUTODETECT}}} and
{{{UNREACHABLE}}}, and that is to set {{{tub.location}}} to a specific set
of IP address+port, DNS name+port, I2P addresses, or Tor (.onion)
addresses. I don't know if Tor or I2P users would ''always'' do the
latter, or if they would sometimes set it to {{{UNREACHABLE}}}.
Therefore, if {{{[node]anonymize}}} is set to {{{True}}}, then:
* If there is no {{{tub.location}}} setting (including if
{{{tub.location}}} is commented-out), the node will abort on startup.
(This is important because people who created their node with an older
release of Tahoe-LAFS will have a {{{tahoe.cfg}}} with {{{tub.location}}}
commented out. See below about backward-compatibility.)
* If {{{tub.location}}} is set to {{{AUTODETECT}}}, the node will abort on
a startup with an error message.
* If {{{tub.location}}} is set to a specific connection-hints value which
includes an IP address or domain name, then the node will abort on startup
with an error message.
* If {{{tub.location}}} is set to a {{{UNREACHABLE}}}, the node will start
up normally.
* If {{{tub.location}}} is set to a specific connection-hints value which
contains only I2P and/or Tor (.onion) addresses, the node will start up
normally.
5. Newly generated {{{tahoe.cfg}}}'s (generated by the {{{create-client}}}
or {{create-node}}} command) should come with {{{tub.location =
AUTODETECT}}} instead of a commented out "{{{#tub.location = put your IP
address here}}}" (see
[source:trunk/src/allmydata/scripts/create_node.py?annotate=blame&rev=3ee950f09ed8b7f6cc72a98c26eefe9e02c11d85#L91
create_node.py].)
Okay, now what about backward-compatibility?
6. For backwards compatibility, we still accept the absence of
{{{tub.location}}} as meaning to AUTODETECT. But only if the
{{{[node]anonymize}}} flag isn't on! Because if the {{{[node]anonymize}}}
flag makes a setting for {{{tub.location}}} be required.
7. Maybe in a future release we'll start emitting a warning about the
absence of a {{{tub.location}}} setting, but for now, no warning.
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1010#comment:37>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list