[secdir] Secdir last call review of draft-ietf-intarea-provisioning-domains-04

Phillip Hallam-Baker via Datatracker <noreply@ietf.org> Thu, 23 May 2019 15:28 UTC

Return-Path: <noreply@ietf.org>
X-Original-To: secdir@ietf.org
Delivered-To: secdir@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 4D627120129; Thu, 23 May 2019 08:28:34 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: Phillip Hallam-Baker via Datatracker <noreply@ietf.org>
To: <secdir@ietf.org>
Cc: draft-ietf-intarea-provisioning-domains.all@ietf.org, int-area@ietf.org, ietf@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 6.96.0
Auto-Submitted: auto-generated
Precedence: bulk
Reply-To: Phillip Hallam-Baker <hallam@gmail.com>
Message-ID: <155862531425.17228.10846494091656668654@ietfa.amsl.com>
Date: Thu, 23 May 2019 08:28:34 -0700
Archived-At: <https://mailarchive.ietf.org/arch/msg/secdir/dW_T4sEzi_lq8TMraCkAjlQnEl4>
Subject: [secdir] Secdir last call review of draft-ietf-intarea-provisioning-domains-04
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Security Area Directorate <secdir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/secdir>, <mailto:secdir-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/secdir/>
List-Post: <mailto:secdir@ietf.org>
List-Help: <mailto:secdir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/secdir>, <mailto:secdir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 23 May 2019 15:28:35 -0000

Reviewer: Phillip Hallam-Baker
Review result: Serious Issues

This draft gives some long overdue attention to an issue that has become
increasingly problematic in real world contexts. Since this is an early review,
I am focusing on the types of issues that need to be addressed during
development.

One issue that had me somewhat confused at first is the initial sentence. "An
increasing number of hosts access the Internet via multiple interfaces".
Reading the draft, there appears to be an implicit assumption that the access
is sequential (mobile device going from one coffee shop to another) even though
the referenced document is very much focused on parallel.

It would be helpful if there was some grounding context early on in the
document to provide this context, something like:

If Alice has a mobile phone provider and a broadband provider in her home, her
devices should be capable of seamlessly transitioning from one to the other. So
that if the broadband fails, the Internet service can gracefully failover to
the mobile and vice versa for upgrades. This draft isn't going to solve that
problem but providing the basic information necessary to make this choice
intelligently is going to be crucial to any solution. There are similar
concerns for IPSEC VPN.

This particular proposal is situated at a very low level in the stack but is
making use of application level protocols to achieve its effect. I think this
is a perfectly valid approach but does mean that the issue of recursive
dependencies have to be considered and in particular in the security
considerations.

At present, the draft is structured to describe an IP packet format and then
the data that can be accessed. I suggest reversing these and presenting the PvD
schema first and then the IP packet as one choice of binding, we are likely to
want to add more. If I am provisioning an IPSEC VPN configuration to a client,
it would be logical to either include the PvD in the IPSEC connection
description or vice versa. This is particularly the case if we end up signing
the data (see later).

Turning to the security concerns, it is usually helpful to consider these in
terms of Confidentiality, Integrity and Availability and the network layer at
which the protocol operates.

In this case, the proposal appears to be link layer since it is providing
information to a host connecting to a network. But the information provided
includes (potentially) DNS services and so it is going to affect the whole
stack from the link up to the application layer.

Since this is link layer, there is a certain degree of implicit integrity
achieved because the host has either a direct physical connection or at least
proximity to the network. It is probably prudent to distinguish the cases of
hosts connecting wirelessly and physically since a physical connection provides
a higher degree of implicit integrity than wireless.

Taking the most important consideration first, what is the potential for
(ab)using this approach to perform a service attack? Here we should consider
the possibility of an attack on the host itself and the use of the mechanism to
relay attacks onto other hosts.

I have not thought of any attacks of this type yet but this is the area that
gives me the most concern.

Integrity presents two considerations, first there is the question of whether
the data has been modified, the second is where it came from in the first
place. The use of TLS does not necessarily provide a strong binding to the
domain. At the very least, data would have to be retrieved from a URL in some
portion of the address space that is reserved for administrative use. While
.well-known is often used for this purpose, it is not always valid. Another
issue with TLS is that we start off with a fairly strong implicit integrity
from the link and discard that for a repudiable authentication via TLS. I would
prefer to keep both if we can.

Rather than relying on TLS, a shorter distance between the two points would be
to sign the PvD specification with JOSE. This need not be too onerous. A client
that wants to rely on just the TLS integrity can simply Base64 decode and trust
the data as being implicitly authentic because of the  means of retrieval.

The bigger payoff from signing the PvD is that we no longer need to worry about
how it is retrieved. The killer app for DNSSEC is turning out to be the ability
to divorce DNS data from DNS transport. There are certain situations in which
the fact that the PvD is delivered over a particular link is significant but
there are other situations in which it might not.

For example, I have 12 smoke alarms in my ceilings, one of which I can only
(safely) reach by erecting scaffolding. These smoke alarms are all connected to
a WiFi router that failed and the only option the manufacturer (which I won't
name but rhymes with sproogle) gives for updating the SSID is to reconfigure
each one in turn. It would be really nice if I could program multiple SSIDs
into the devices to provide failover. Contrawise, this capability could be
extended to facilitate the initial connection of the devices to my network.
While this is not a feature the WG is likely interested in right now, it is one
that I am working on for the Mathematical Mesh and it is obviously a good idea
if we have as much commonality between the top down and bottom up configs.

Confidentiality is not generally a direct concern at the link layer but
corruption of the data (i.e. an integrity attack) might allow a disclosure
breach. But this should be stated explicitly.

Finally, as a gen-art issue, the use of x-options is generally deprecated as it
at best ends up with a situation where every client has to accept headers in
both the prefixed and unprefixed form. An IANA registry with first-come,
first-served registration fulfills the goal of preventing accidental collisions
more effectively.