Issues Raised in Chair Review of <draft-ietf-6man-rfc4941bis-05 >

Bob Hinden <bob.hinden@gmail.com> Mon, 27 January 2020 18:29 UTC

Return-Path: <bob.hinden@gmail.com>
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 1A6B93A08C4 for <ipv6@ietfa.amsl.com>; Mon, 27 Jan 2020 10:29:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 W6PYn5Hp8DUS for <ipv6@ietfa.amsl.com>; Mon, 27 Jan 2020 10:28:55 -0800 (PST)
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5B50A3A0907 for <ipv6@ietf.org>; Mon, 27 Jan 2020 10:24:02 -0800 (PST)
Received: by mail-wr1-x434.google.com with SMTP id d16so12631898wre.10 for <ipv6@ietf.org>; Mon, 27 Jan 2020 10:24:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:message-id:date:cc:to; bh=sjX6dqQ2o0jwjuAEOkiBsbUrdmHbfcLnY8FT9voentc=; b=j27m4TAgsx5Dw4+DlN4tWaGNYr1imXct9wCE1lJE0DiGeJitAT9nGu9JuG2VJMd8rY xm2D8Rk96BsxIZw6oPmS+gh5qOkOdaD/gatcNug2Bd6DwNPrkVOncV/77EJ6khqDf/VW CJ6jnNK9GwYvoy6cfHX379sUMATvQTX81W8rcWpyv2TEIQYVQinSbLKnN8JbRr8NSacJ iAfZyY95BgnHmSmRQrR0LbzpVgAfbBNGViF+ymYPg5rW+zEmtDmSiZEtHKx9JbtChjvU FWlPGgOcTYFAhrKuY1Uf3fWL93S4JTmEPM8cgu2OL6IocbhLMfMFIYMfKIkTxZOPywtz DHaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:date:cc:to; bh=sjX6dqQ2o0jwjuAEOkiBsbUrdmHbfcLnY8FT9voentc=; b=lTGbe2AuW707H+gbkLhg77bhogl3yt8uVvIFaAyfp8MXSuCNXRxCoBI3+R57D4PK0R k5dEAJyq7v0jHWZAw+7sZlYzhzYohTvj08SjTtT9Oy3ainv00QbR2kLAWdVibCg2YL/U XPkEzufv5zyhnpnRHyqQSOPUi1/nUV5A/1VG2EB/E8AQJEXK7luH/M8peuE4Y6xnM4CW n/47HfNpHl6MPHlzu8jDufcY+K8PTtS4mphfLiq/ubv7JnXSDeEOTcTbrE2s/Gtc9vA1 boQU5B89VUf6Zo6bZdUS79XEUfGoqdQ6GoS4jSnypq2TmsX8KwbzTG9ypmT29/RAtteL mqFw==
X-Gm-Message-State: APjAAAWYrWx8nYmccyow7oznA8KVQWFqyDs9KuLimYCbHuXDsgx3zSoU BaDmK8yRG+An2enqoUK+rWzFDNmf
X-Google-Smtp-Source: APXvYqyvYSRq1g6knAfbhnpmOd0mC3k6LlA4jumSsEpFhg2uY/Oi3PQvccmFvUdbCUQo6RHYLLpJpQ==
X-Received: by 2002:adf:bc87:: with SMTP id g7mr23429500wrh.121.1580145464259; Mon, 27 Jan 2020 09:17:44 -0800 (PST)
Received: from ?IPv6:2601:647:5a00:ef0b:711f:cf73:4348:c71c? ([2601:647:5a00:ef0b:711f:cf73:4348:c71c]) by smtp.gmail.com with ESMTPSA id x10sm21208061wrv.60.2020.01.27.09.17.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Jan 2020 09:17:43 -0800 (PST)
From: Bob Hinden <bob.hinden@gmail.com>
Content-Type: multipart/signed; boundary="Apple-Mail=_4DB24DEF-A15C-4268-817B-0E3B360B081B"; protocol="application/pgp-signature"; micalg="pgp-sha512"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Subject: Issues Raised in Chair Review of <draft-ietf-6man-rfc4941bis-05 >
Message-Id: <E438B244-4435-4FD6-95B5-3B90602FAA59@gmail.com>
Date: Mon, 27 Jan 2020 09:17:37 -0800
Cc: Bob Hinden <bob.hinden@gmail.com>, Ole Trøan <otroan@employees.org>
To: IPv6 List <ipv6@ietf.org>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/DO_aQAXkyFUOaGqBJ2YpjwG_-Fs>
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: Mon, 27 Jan 2020 18:29:04 -0000

Ole and I did a chairs review of <draft-ietf-6man-rfc4941bis-05>.   Our comments are below.

We sent editorial issues to the authors separately.

Bob & Ole




> 1.  Introduction

This section needs needs to repeat that this obsoletes RFC4941, and good to have a short summary of what changed.

> 2.1.  Extended Use of the Same Identifier


This section is missing a description about tracking stable IIDs when the node connects to different networks.


> 2.2.  Possible Approaches

Better to have this a new section, it’s not part of “Background”.

> 
>   One way to avoid having a stable non-changing address is to use
>   DHCPv6 [RFC8415] for obtaining addresses.  Section 12 of [RFC8415]
>   discusses the use of DHCPv6 for the assignment and management of
>   "temporary addresses", which are never renewed and provide the same
>   property of temporary addresses described in this document with
>   regards to the privacy concern.

We don’t think this should be the first paragraph.   Start with the next paragraph.  Then the DHCPv6 paragraph can be at the end of this section, starting with “Another way…”.

> 
>   One  approach, compatible with the stateless address
>   autoconfiguration architecture, would be to change the interface
>   identifier portion of an address over time.  Changing the interface
>   identifier can make it more difficult to look at the IP addresses in
>   independent transactions and identify which ones actually correspond
>   to the same node, both in the case where the routing prefix portion
>   of an address changes and when it does not.
> 
>   Many machines function as both clients and servers.  In such cases,
>   the machine would need a DNS name for its use as a server.  Whether
>   the address stays fixed or changes has little privacy implication
>   since the DNS name remains constant and serves as a constant
>   identifier.  When acting as a client (e.g., initiating
>   communication), however, such a machine may want to vary the
>   addresses it uses.  In such environments, one may need multiple
>   addresses: a stable address registered in the DNS, that is used to
>   accept incoming connection requests from other machines, and a
>   temporary address used to shield the identity of the client when it
>   initiates communication.
> 
>   On the other hand, a machine that functions only as a client may want
>   to employ only temporary addresses for public communication.
> 
>   To make it difficult to make educated guesses as to whether two
>   different interface identifiers belong to the same node, the
>   algorithm for generating alternate identifiers must include input
>   that has an unpredictable component from the perspective of the
>   outside entities that are collecting information.



3.1.  Assumptions


>   ….
>           This document also
>   assumes that an API will exist that allows individual applications to
>   indicate whether they prefer to use temporary or stable addresses and
>   override the system defaults.

Is this the best approach?   Or should the user be able to configure this on a per node basis?

> 3.2.  Generation of Randomized Interface Identifiers
> 
>   The following subsections specify   example algorithms for
>   generating temporary interface identifiers that follow the guidelines
>   in Section 3 of this document.

s/Section 3/Section 3.1/

> 3.2.1.  Simple Randomized Interface Identifiers
> 
>   One approach is  to select a pseudorandom number of the
>   appropriate length.  A node employing this algorithm should generate
>   IIDs as follows:
> 
>   1.  Obtain a random number (see [RFC4086] for randomness requirements
>       for security).
> 
>   2.  The Interface Identifier is obtained by taking as many bits from
>       the random number obtained in the previous step
>       as necessary.  Note: there are no special bits in an Interface
>       Identifier [RFC7136].
> 
>          We note that [RFC4291] requires that the Interface IDs of all
>          unicast addresses (except those that start with the binary
>          value 000) be 64 bits long.  However, the method discussed in
>          this document could be employed for generating Interface IDs
>          of any arbitrary length, albeit at the expense of reduced
>          entropy (when employing Interface IDs smaller than 64 bits).

It get’s a lot worse if the IID is much smaller, for example, an 8 bit IID is not very useful.   Suggest removing this paragraph or expand it.   The current text doesn’t add very much value.

> 3.2.2.  Hash-based Generation of Randomized Interface Identifiers
> 
>   The algorithm in [RFC7217] can be augmented for the generation of
>   temporary addresses.  The benefit of this would be that a node could
>   employ a single algorithm for generating stable and temporary
>   addresses, by employing appropriate parameters.
> 
>   Nodes would employ the following algorithm for generating the
>   temporary IID:
> 

What are the differences from the RFC7217 algorithm and why is it changed?  It appears to be different.  This makes the statement in the first paragraph incorrect.

> 3.3.  Generating Temporary Addresses
> 
> …..
> 
>   1.  Process the Prefix Information Option as defined in [RFC4862],
>       adjusting the lifetimes of existing temporary addresses.  If a
>       received option may extend the lifetimes of temporary addresses,
>       with the overall constraint that no temporary addresses should
>       ever remain "valid" or "preferred" for a time longer than
>       (TEMP_VALID_LIFETIME) or (TEMP_PREFERRED_LIFETIME -
>       DESYNC_FACTOR) respectively.  The configuration variables
>       TEMP_VALID_LIFETIME and TEMP_PREFERRED_LIFETIME correspond to
>       approximate target lifetimes for temporary addresses.
> 

Why would not each address have an expiration time instead, then DESYNC_FACTOR factor doesn't need to be factored in here?

> 5.  A temporary address is created only if this calculated Preferred
>       Lifetime is greater than REGEN_ADVANCE time units.  In
>       particular, an implementation MUST NOT create a temporary address
>       with a zero Preferred Lifetime.

REGEN_ADVANCE   Please define or explain this variable before use.

> 
> 7.  The node MUST perform duplicate address detection (DAD) on the
> 
…..

> If after TEMP_IDGEN_RETRIES
>       consecutive attempts no non-unique address was generated, the
>       node MUST log a system error and MUST NOT attempt to generate
>       temporary addresses for that interface.

Is that the correct behavior, if so explain why?


> 3.5.  Regeneration of Temporary Addresses
….
> Implementations SHOULD provide end users with the
>   ability to override both of these default values.

Seems doubtful that most users would understand what to do with this.

> 3.6.  Implementation  Considerations
> 
> ….

>   other global prefixes.  Another site might wish to enable temporary
>   address generation only for the prefixes 2001::/16 and 2002::/16

Poor choice of example prefixes.  Use documentation prefixes?


>   while disabling it for all other prefixes.  To support this behavior,
>   implementations SHOULD provide a way to enable and disable generation
>   of temporary addresses for specific prefix subranges.  This per-
>   prefix setting SHOULD override the global settings on the node with
>   respect to the specified prefix subranges.  Note that the per-prefix
>   setting can be applied at any granularity, and not necessarily on a
>   per subnet basis.
> 
>   The use of temporary addresses may cause unexpected difficulties with
>   some applications.  As described below, some servers refuse to accept
>   communications from clients for which they cannot map the IP address
>   into a DNS name.  In addition, some applications may not behave
>   robustly if temporary addresses are used and an address expires
>   before the application has terminated, or if it opens multiple
>   sessions, but expects them to all use the same addresses.

This is not an implementation consideration.   It is also redundant with next section.

> 4.  Implications of Changing Interface Identifiers
> ...
> 
>   Some servers refuse to grant access to clients for which no DNS name
>   exists.  That is, they perform a DNS PTR query to determine the DNS
>   name, and may then also perform an AAAA query on the returned name to
>   verify that the returned DNS name maps back into the address being
>   used.  Consequently, clients not properly registered in the DNS may
>   be unable to access some services.  As noted earlier, however, a
>   node's DNS name (if non-changing) serves as a constant identifier.
>   The wide deployment of the extension described in this document could
>   challenge the practice of inverse-DNS-based "authentication," which
>   has little validity, though it is widely implemented.  In order to
>   meet server challenges, nodes could register temporary addresses in
>   the DNS using random names (for example, a string version of the
>   random address itself).

Is this even used for IPv6?    Relevance for this document?

> 5.  Defined Constants

This needs to be move earlier in the document, before they are used.

> 
>   Constants defined in this document include:
> 
>   TEMP_VALID_LIFETIME -- Default value: 1 week.  Users should be able
>   to override the default value.
> 
>   TEMP_PREFERRED_LIFETIME -- Default value: 1 day.  Users should be
>   able to override the default value.
> 
>   REGEN_ADVANCE -- 5 seconds
> 
>   MAX_DESYNC_FACTOR -- 10 minutes.  Upper bound on DESYNC_FACTOR.
> 
>   DESYNC_FACTOR -- A random value within the range 0 -
>   MAX_DESYNC_FACTOR.  It is computed once at system start (rather than
>   each time it is used) and must never be greater than
>   (TEMP_PREFERRED_LIFETIME - REGEN_ADVANCE).

We don't think the purpose of DESYNC_FACTOR has ever been described?

> 6.  Future Work
> 
>   An implementation might want to keep track of which addresses are
>   being used by upper layers so as to be able to remove a deprecated
>   temporary address from internal data structures once no upper layer
>   protocols are using it (but not before).  This is in contrast to
>   current approaches where addresses are removed from an interface when
>   they become invalid [RFC4862], independent of whether or not upper
>   layer protocols are still using them.  For TCP connections, such
>   information is available in control blocks.  For UDP-based
>   applications, it may be the case that only the applications have
>   knowledge about what addresses are actually in use.  Consequently, an
>   implementation generally will need to use heuristics in deciding when
>   an address is no longer in use.
> 
>   Recommendations on DNS practices to avoid the problem described in
>   Section 4 when reverse DNS lookups fail may be needed.  [RFC4472]
>   contains a more detailed discussion of the DNS-related issues.
> 
>   While this document discusses ways of obscuring a user's IP address,
>   the method described is believed to be ineffective against
>   sophisticated forms of traffic analysis.  To increase effectiveness,
>   one may need to consider the use of more advanced techniques, such as
>   Onion Routing [ONION].

Is this section needed?   Suggest removing it.

> 
> 
> 
> 
> 
> 
> 
> 
> 



>