Re: Review of draft-ietf-6man-rfc4941bis-01

Christian Huitema <huitema@huitema.net> Thu, 11 April 2019 19:01 UTC

Return-Path: <huitema@huitema.net>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E8AA21205B5 for <ipv6@ietfa.amsl.com>; Thu, 11 Apr 2019 12:01:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id n2PNyO7wO8GX for <ipv6@ietfa.amsl.com>; Thu, 11 Apr 2019 12:01:33 -0700 (PDT)
Received: from mx36-out10.antispamcloud.com (mx36-out10.antispamcloud.com [209.126.121.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 11D7E1203DA for <ipv6@ietf.org>; Thu, 11 Apr 2019 12:01:33 -0700 (PDT)
Received: from xsmtp04.mail2web.com ([168.144.250.231]) by mx65.antispamcloud.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.89) (envelope-from <huitema@huitema.net>) id 1hEewz-000AGm-By for ipv6@ietf.org; Thu, 11 Apr 2019 21:01:30 +0200
Received: from [10.5.2.14] (helo=xmail04.myhosting.com) by xsmtp04.mail2web.com with esmtp (Exim 4.63) (envelope-from <huitema@huitema.net>) id 1hEewr-000225-1D for ipv6@ietf.org; Thu, 11 Apr 2019 15:01:25 -0400
Received: (qmail 15572 invoked from network); 11 Apr 2019 19:01:16 -0000
Received: from unknown (HELO [192.168.1.103]) (Authenticated-user:_huitema@huitema.net@[172.56.42.204]) (envelope-sender <huitema@huitema.net>) by xmail04.myhosting.com (qmail-ldap-1.03) with ESMTPA for <bob.hinden@gmail.com>; 11 Apr 2019 19:01:16 -0000
To: Fernando Gont <fgont@si6networks.com>, IETF IPv6 Mailing List <ipv6@ietf.org>, draft-ietf-6man-rfc4941bis@ietf.org, "6man@ietf.org" <6man@ietf.org>, Bob Hinden <bob.hinden@gmail.com>
References: <97eb8994-c56e-beba-98d5-19d9f2de3e0d@huitema.net> <a65fc317-96de-4a4b-c2e2-8ea517b4ac93@si6networks.com>
From: Christian Huitema <huitema@huitema.net>
Openpgp: preference=signencrypt
Autocrypt: addr=huitema@huitema.net; prefer-encrypt=mutual; keydata= mQENBFIRX8gBCAC26usy/Ya38IqaLBSu33vKD6hP5Yw390XsWLaAZTeQR64OJEkoOdXpvcOS HWfMIlD5s5+oHfLe8jjmErFAXYJ8yytPj1fD2OdSKAe1TccUBiOXT8wdVxSr5d0alExVv/LO I/vA2aU1TwOkVHKSapD7j8/HZBrqIWRrXUSj2f5n9tY2nJzG9KRzSG0giaJWBfUFiGb4lvsy IaCaIU0YpfkDDk6PtK5YYzuCeF0B+O7N9LhDu/foUUc4MNq4K3EKDPb2FL1Hrv0XHpkXeMRZ olpH8SUFUJbmi+zYRuUgcXgMZRmZFL1tu6z9h6gY4/KPyF9aYot6zG28Qk/BFQRtj7V1ABEB AAG0J0NocmlzdGlhbiBIdWl0ZW1hIDxodWl0ZW1hQGh1aXRlbWEubmV0PokBOQQTAQIAIwUC UhFfyAIbLwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEJNDCbJVyA1yhbYH/1ud6x6m VqGIp0JcZUfSQO8w+TjugqxCyGNn+w/6Qb5O/xENxNQ4HaMQ5uSRK9n8WKKDDRSzwZ4syKKf wbkfj05vgFxrjCynVbm1zs2X2aGXh+PxPL/WHUaxzEP7KjYbLtCUZDRzOOrm+0LMktngT/k3 6+EZoLEM52hwwpIAzJoscyEz7QfqMOZtFm6xQnlvDQeIrHx0KUvwo/vgDLK3SuruG1CSHcR0 D24kEEUa044AIUKBS3b0b8AR7f6mP2NcnLpdsibtpabi9BzqAidcY/EjTaoea46HXALk/eJd 6OLkLE6UQe1PPzQC4jB7rErX2BxnSkHDw50xMgLRcl5/b1a5AQ0EUhFfyAEIAKp7Cp8lqKTV CC9QiAf6QTIjW+lie5J44Ad++0k8gRgANZVWubQuCQ71gxDWLtxYfFkEXjG4TXV/MUtnOliG 5rc2E+ih6Dg61Y5PQakm9OwPIsOx+2R+iSW325ngln2UQrVPgloO83QiUoi7mBJPbcHlxkhZ bd3+EjFxSLIQogt29sTcg2oSh4oljUpz5niTt69IOfZx21kf29NfDE+Iw56gfrxI2ywZbu5o G+d0ZSp0lsovygpk4jK04fDTq0vxjEU5HjPcsXC4CSZdq5E2DrF4nOh1UHkHzeaXdYR2Bn1Y wTePfaHBFlvQzI+Li/Q6AD/uxbTM0vIcsUxrv3MNHCUAEQEAAYkCPgQYAQIACQUCUhFfyAIb LgEpCRCTQwmyVcgNcsBdIAQZAQIABgUCUhFfyAAKCRC22tOSFDh1UOlBB/94RsCJepNvmi/c YiNmMnm0mKb6vjv43OsHkqrrCqJSfo95KHyl5Up4JEp8tiJMyYT2mp4IsirZHxz/5lqkw9Az tcGAF3GlFsj++xTyD07DXlNeddwTKlqPRi/b8sppjtWur6Pm+wnAHp0mQ7GidhxHccFCl65w uT7S/ocb1MjrTgnAMiz+x87d48n1UJ7yIdI41Wpg2XFZiA9xPBiDuuoPwFj14/nK0elV5Dvq 4/HVgfurb4+fd74PV/CC/dmd7hg0ZRlgnB5rFUcFO7ywb7/TvICIIaLWcI42OJDSZjZ/MAzz BeXm263lHh+kFxkh2LxEHnQGHCHGpTYyi4Z3dv03HtkH/1SI8joQMQq00Bv+RdEbJXfEExrT u4gtdZAihwvy97OPA2nCdTAHm/phkzryMeOaOztI4PS8u2Ce5lUB6P/HcGtK/038KdX5MYST Fn8KUDt4o29bkv0CUXwDzS3oTzPNtGdryBkRMc9b+yn9+AdwFEH4auhiTQXPMnl0+G3nhKr7 jvzVFJCRif3OAhEm4vmBNDE3uuaXFQnbK56GJrnqVN+KX5Z3M7X3fA8UcVCGOEHXRP/aubiw Ngawj0V9x+43kUapFp+nF69R53UI65YtJ95ec4PTO/Edvap8h1UbdEOc4+TiYwY1TBuIKltY 1cnrjgAWUh/Ucvr++/KbD9tD6C8=
Message-ID: <d9019bfe-8486-ff34-19db-47979bf9965d@huitema.net>
Date: Thu, 11 Apr 2019 12:01:14 -0700
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <a65fc317-96de-4a4b-c2e2-8ea517b4ac93@si6networks.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Language: en-US
Subject: Re: Review of draft-ietf-6man-rfc4941bis-01
X-Originating-IP: 168.144.250.231
X-Spampanel-Domain: xsmtpout.mail2web.com
X-Spampanel-Username: 168.144.250.0/24
Authentication-Results: antispamcloud.com; auth=pass smtp.auth=168.144.250.0/24@xsmtpout.mail2web.com
X-Spampanel-Outgoing-Class: unsure
X-Spampanel-Outgoing-Evidence: Combined (0.15)
X-Recommended-Action: accept
X-Filter-ID: EX5BVjFpneJeBchSMxfU5heXGUEY33L3SuqRq/B1/dh602E9L7XzfQH6nu9C/Fh9KJzpNe6xgvOx q3u0UDjvO0+c5LB5+AaOnyUGHzplYThs1ujulqUFmMITHM77eiViZ86CQmq+Q/zJmKEDymKNgM7i TvJ2/ZGzVWB9scFAaCdIFaUvXN+CI+RGy3Me16pBuzDn5j2tUhjYPVPi3bwTCB/TBCf6oYXAWGet lavcAjD9ytQxIHf9lN5jjLJaPK8l4YBmPrqPoeRXD34azf1rYZv5uZUEePrXZkexHL9EC3AAJAfA 9MMVcQ9WVjD1q+Rbd9IPG/DQ2p+GU04sTuYFs91jhnM/Mbva2XLV/LIEzaKyLm0zESXAkIAT8ZKA DvsGI5uh86ZVnyOrYkLMWyEaRt9fxN2oReTDHAyOynaY0CmHJLVH4DfVNbPXJmiLfub/IRFsicyJ MEhQFtD8PLoiniWmsFByBoXAuCZEyg59LM/9rUJrEbVA84BZVscMTXpbpuxXJTL417vaJWq5kk+j cuidX4Ts4xdG+C13IyWeZaJwAHPn4EuYWIk0YD/RIopTqpzxuZ/FKz4x4mg8I92kbn0rg3tG1PaX x02Ne8w1dvdk354Leo8WHhg9Xcph2esmZk4AVtnYApSiFQp1w3dnUjMTi5Xt/sRoctxyu5EZ7wRl sQ6lNTZIrBtlLeoEHaVN0z6bhalFEM/pjPCQA+BAliWlQbBThxwZFUQHKWb8B+lZYSpQQtCkh8qZ SV0LCxteJTU37wmFlazB0kO+nBIqzq4RMu1BcrkytCyrtZfP6rQhu1/rdU1t/SWu+yxj6TsAzBpI RKEYj3P5LT70ZY4uK04vW75yGJIA4He1K6wlrze9UshveVgoiypAicYsWUtdCDRZgQnFYkq0SOLr mvxpF44cvttr0tmBjeIn/Z/emtVQvYq5Gwe6V5p1dZXUJLl9UHdlPJIlgYKUOVb4Kg3Ivfi62j4u w/K+m8SGihSRsuS3byv3CjhKpQiDxiH2EAzS5xSvMev/h5X3p2+rThvFRg==
X-Report-Abuse-To: spam@quarantine9.antispamcloud.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/vi4ZBkvYjaJaaGiQfu7EkpwCfr8>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 11 Apr 2019 19:01:37 -0000

On 3/29/2019 4:44 AM, Fernando Gont wrote:
> Hello, Christian,
>
> Thanks so much for your feedback! Comments in-line....
>
> On 29/3/19 10:01, Christian Huitema wrote:
>> This is my review of draft-ietf-6man-rfc4941bis-01, as promised in the
>> WG session.
>>
>> I think the draft is almost ready, but I would like to see a couple of
>> changes:
>>
>> 1) Simplify the IID generation spec by treating the "hash based"
>> generation as just an alternative PNRG.
> This is how we intend it to be. Section 3.2 says:
>
>
> 3.2.  Generation of Randomized Interface Identifiers
>
>    The following subsections specify some possible algorithms for
>    generating temporary interface identifiers that comply with the
>    requirements in [I-D.gont-6man-non-stable-iids].  The algorithm
>    specified in Section 3.2.1 benefits from a Pseudo-Random Number
>    Generator (PRNG) available on the system.  On the other hand, the
>    algorithm specified in Section 3.2.2 allows for code reuse by nodes
>    that implement [RFC7217].
>
> Any changes we should apply here?

Sorry for not responding sooner -- busy time after coming back from Prague.

My personal preference would be to replace the entirety of 3.2 content,
including 3.2.1 and 3.2.2 by a much shorter text. Something like:

When a host needs to configure a randomized interface identifier, it
SHOULD obtain the required number of bits from a Pseudo-Random Number
Generator (PRNG) that meets the randomness requirements for security
expressed in [RFC4086]. If no adequate PNRG is available on the system,
the host MAY use a modified version of the algorithm specified in
[RFC7217], augmented to include in the hash input
a time and a counter that will guarantee different results at each
instantiation.


>
>
>
>> 2) Discuss the temporary address life time 
> You mean explain the tradeoffs between shorter vs longer lifetimes, or
> something else?
>
>
>
>> and what to do when
>> "quickly" reconnecting to the network that the node just left.
> How about mentioning something along the lines of:
>
> "A host may avoid the unnecessary regeneration of temporary addresses by
> employing mechanism for detecting network attachment, such as DNA
> [RFC6059]. An implementation may alternatively tie the generation of
> temporary addresses to the underlying MAC address, such that when MAC
> address randomization is employed, network-reattachments to the same
> network only trigger temporary address regeneration if the underlying
> MAC address has been regenerated"

Generally, I would stick to the definition that a randomized IID is just
a random number, and not try to imply any structure or any generation
algorithm. It is OK to remember the time at which the address was
generated, and check whether the new network is the same as one that was
seen a short time ago: same network identity per DNA, same MAC address,
same prefix. In that case, hosts MAY choose to keep using the previously
generated address instead of creating a new one.

Clearly, this is just an optimization, so there should be a clear MAY.
There are also privacy risks in doing that, so there may be room for a
MUST statement, as in "don't do that if you are not really sure it is
the same network".

>> 3) Simplify the discussion of the DNS reverse tree by just stating
>> that temporary addresses should not be registered in that tree,
>> and that applications subject to address control should just use
>> static address.
> Most of the discussion about DNS has to do with the common practice
> employed in mailservers where the address of an incoming connection is
> required to have a reverse mapping (a PTR record).
>
> In that sense, I don't think the discussion can be simplified.
>
> e.g., if you are on a mailserver, you'd need to disable temporary
> addresses or somehow make sure that there's a reverse DNS record for
> your temporary addresses -- otherways other servers might reject mail
> from you.

How about stating that servers that require a reverse mapping SHOULD NOT
use randomized addresses, or rather that this is completely out of scope?



>
>
>
>> I would also like to discuss the use case of "different temporary
>> addresses for different application contexts", but I suspect
>> this would have to be done in a different draft.
> Yes, I think this would be a good thing to discuss, but out of the scope
> of this document.
>
>
>
>> Detailed comments follow.
>>
>> Section 2.1 discusses a list of ways users and devices can be tracked.
>> I assume this is intended to motivate the need for temporary addresses,
>> but I when reading it I was wandering how much text we really need here.
>> For example, there is a discussion of web cookies, but no discussion
>> of other tracking techniques such as finger printing. But then, there
>> is no way to provide an extensive list of such tracking methods, you
>> would need to write a book. The real point is that addresses allow
>> "chained tracking": tracker uses a cookie to link a newly appearing
>> address to an existing identity; the address now becomes a tracked
>> address; tracker now uses the tracked address to correlate activities.
>> Defeating that requires frequent address rotation. Maybe we should
>> say something about this requirement.
> Me, I'd probably remove as much text as possible, and include references
> as needed. As you correctly note, the topic is quite big to cover
> appropriately with anything more than just a small intro that points to
> appropriate references.
>
> Thoughts?

I would probably just remove section 2, background, as it is very much
redundant with the problem statement.

I would also remove section 6, future work, as it is not needed by
implementers.

Shorter is better. Implementers are just going to read section 3 anyhow,
and ignore any superfluous text.


>
>
>
>> Section 2.2 discusses the use of the same address in multiple
>> contexts, when the same node is used as client and as server.
>> Then, there are p2p connections such as web RTC, which have
>> properties of clients or servers. The consequence there is the
>> need for multiple temporary addresses per host, so as to not need
>> sharing an address between multiple contexts. This leads to "one
>> address per service", or maybe "one address per container".
>>
>> Do we really want to discuss that, or should we just keep the
>> motivation to a minimum, and concetrate on how to acquire
>> temporary addresses?
> Me, I would keep the motivation to a minimum and concentrate on how to
> acquire a temporary address -- and leave the options of "one address per
> container" open.
>
> As noted above, these would be nice to explore, but I think they are out
> of the scope of *this* document.
>
>
>
>
>> Typo "Peseudo-Random" in section 3.2.
> Fixed. Thanks!
>
>
>
>> I am not sure that we need to distinguish between generating
>> IID with a PRNG (section 3.2.1) and with a hash function
>> (section 3.2.2). At some level, the hash function is just
>> a different way to build a PNRG. 
> Indeed.
>
>
>> In both cases, you get
>> a random string of bits, and then you have to use DAD and
>> test for uniqueness. But then, if my purpose is to use a
>> hash function as a PNRG, then hash(random secret, counter++)
>> would work just as well as the complex generation presented
>> in 3.2.1. My suggestion is to combine the two sections, and
>> present the hash as just an alternative way to obtain random
>> numbers, e.g. on devices that do not have access to a good
>> PRNG.
> For the most part, having the hash-based algorithm spelled out is useful
> for two reasons:
>
> * May be a hint to implementers that they can resuse the algorithm from
> RFC7217
> * May make it easy/evident how to tie temp address generation to other
> events/properties, such as randomization of the underlying MAC address.
>
> I will raise this one as a separate question to the working group.
>
> Question, what you propose is to mention the hash-based approach, but
> not with so many details? (.e.g, not elaborating on the arguments to the
> hash function) Or something else?
See proposal above.
>
>
>
>
>> Section 3.3 discusses generation of temporary addresses.
>> The trigger event appears to be, learning a new prefix
>> in a new RA. That's fine, but that's not the only case:
>> another trigger could be, bringing up an application
>> that requires a separate address context.
> This, and the comment you made above about the discussion of lifetimes
> would seem to warrant the incorporation of Section 5 of the document we
> co-authored: https://tools.ietf.org/html/draft-gont-6man-non-stable-iids
>
> Thoughts?

Don't add more text. Te goal should be to tell simple messages:

1) One random address per node per prefix, and the IID is a random umber.

2) Generate a new random address when seeing a new prefix, or when
connecting to a new network.

3) Manage a lifetime that is short enough to provide privacy.

Everything else is superfluous.

>
>
>
>
>> Section 3.3 discusses the life time of addresses. There is
>> a related question of intermittent connectivity. Suppose
>> a node oscillates between two access points A and B.
>> Should it get a new set of addresses each time it goes
>> back to A, or just reuse the address it was using a few
>> seconds before? This relates to address life time, and to
>> connection strategies. It also has potential implications,
>> e.g. rogue RA triggering hosts to reuse an old address
>> in a new context and enabling tracking.
> I'd say this should be implementation-dependent, and falls under:
>    2.  The lifetime of an address MUST be further reduced when privacy-
>        meaningful events (such as a node attaching to a new network)
>        takes place.
>
> of Section 5 of draft-gont-6man-non-stable-iids
>
>
>> Section 4 describes the potential need for registration of
>> a PTR record for the temporary address. That seems really
>> counter productive. I wonder about the statement that
>> "Some servers refuse to grant access to clients for which no
>> DNS name exists." Isn't it the case that applications in
>> that category should just use the non-temporary address?
>> SMTP MTA for example may want to do that; I don't know
>> many other applications with that constraint.
> There could be an argument for using temporary addresses in this case:
> if you were to use temporary addresses, and your node did not allow
> incoming connections on temporary address, then your node would not
> necessarily become exposed just for relaying email -- i.e., the
> temporary addresses, while known to the peer MTA, would be mostly
> useless for attacking purposes.
>
> Thoughts?

As I said, if applications have such requirements, they should use a
stable address instead of a randomized one. I would declare the PTR
scenario out of scope, the general rule being that temporary addresses
don't need a PTR record. If systems insist on creating one, it should
link to a randomly generated name so as to not break privacy requirements.

-- Christian Huitema