Re: [Captive-portals] Roman Danyliw's No Objection on draft-ietf-capport-architecture-08: (with COMMENT)

Kyle Larose <kyle@agilicus.com> Fri, 12 June 2020 14:00 UTC

Return-Path: <kyle@agilicus.com>
X-Original-To: captive-portals@ietfa.amsl.com
Delivered-To: captive-portals@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D957A3A09D6 for <captive-portals@ietfa.amsl.com>; Fri, 12 Jun 2020 07:00:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=agilicus.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 MRcYjQ_IJ2bF for <captive-portals@ietfa.amsl.com>; Fri, 12 Jun 2020 07:00:28 -0700 (PDT)
Received: from mail-il1-x12e.google.com (mail-il1-x12e.google.com [IPv6:2607:f8b0:4864:20::12e]) (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 4E7333A0A63 for <captive-portals@ietf.org>; Fri, 12 Jun 2020 06:59:39 -0700 (PDT)
Received: by mail-il1-x12e.google.com with SMTP id x18so8882713ilp.1 for <captive-portals@ietf.org>; Fri, 12 Jun 2020 06:59:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=agilicus.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=yah0x7ZwV0xyDQX4iDNGnIRKTUXieYeZikAB6t7Y4Uk=; b=L9fyUvKI+HHqfB6TmcIUSOvMuvR79f6NxFGaHXnFOM7V821XsjforFvicRQOHiXQGy I9va/mPvQylbD9BEdiqj9qzucvrTb3AVv155dsoIVvpMBsBq4tAviBgBu0z5HiMNEsxb zmC8UMhZgFgBr6MR2/wdAZTLtnqIjDJnkD51IHg9AOlFW0guzqPii5biX0ftjqcJCmjF aSrRB11CyqloDzW3cf4yOsRlzD4qvVEiXXiuH3o0J7RZkWPyEKdH86U3OtgM0cVrJ3ic F0WuV7nGk4KVE/uzXHEfyX97ROi+riEiPYuUZb8LONsexsyyIctnlyqmG6gpiiiRVvcd YFSA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=yah0x7ZwV0xyDQX4iDNGnIRKTUXieYeZikAB6t7Y4Uk=; b=bTXoWmYK2sXfu5wOFhYjFdA71xs+NfIC++orwTo8WJkPAQQpWR5yGe8EgHq7Sri45T 7r1khd4upzQld3fx+Z51VeyN2xj4ZC2lRBeHKpZN7wzBCNX48njv7Oe9ZsWcAD5Y7mi6 T/nooYB/LjTVIoV+QBtI4XTZ826b7OvP0F7N23BtCZvPgfbKAT4mVsTCd8a1u5/iPGxN IR2IH04zyr6ECC/i3jGBRZOSKepikLSDFWquHNe2nlz4hyD9t+B9WCZVMLe3IIH3TEPu WOrAyCCYLjaGTxp9fWPKRkVwjuXbVoq4kQEcZexxCD1KLvqjmfenHix6NTiL8Tagdk6Z UY3Q==
X-Gm-Message-State: AOAM5308OR/u+yjcs+i5jPSqijiW044IKJEwhNoCAEO2MQjBbbM4Fqa7 6k0rFVP7S18zZACY369M7x8fZhcg8Ld4+WX6ecdE
X-Google-Smtp-Source: ABdhPJxkkg+6IB6RStwP49NLHwn5VeWu9zhkWlSjAVD76EfM0bSWtla6oTqMxkseqySrEOVhmh3uxpFhjUULtCI0u0M=
X-Received: by 2002:a92:8b10:: with SMTP id i16mr13181673ild.109.1591970378180; Fri, 12 Jun 2020 06:59:38 -0700 (PDT)
MIME-Version: 1.0
References: <159173797024.20586.823658179362740125@ietfa.amsl.com>
In-Reply-To: <159173797024.20586.823658179362740125@ietfa.amsl.com>
From: Kyle Larose <kyle@agilicus.com>
Date: Fri, 12 Jun 2020 09:59:27 -0400
Message-ID: <CACuvLgxp7YutrmweC2KVVyxZQ2y_JYvCEmXHCgbVyB0nF+MKRA@mail.gmail.com>
To: Roman Danyliw <rdd@cert.org>
Cc: The IESG <iesg@ietf.org>, draft-ietf-capport-architecture@ietf.org, capport-chairs@ietf.org, captive-portals <captive-portals@ietf.org>, Martin Thomson <mt@lowentropy.net>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/captive-portals/cma_89jcj9KZpIMDVnBpXOOKeyo>
Subject: Re: [Captive-portals] Roman Danyliw's No Objection on draft-ietf-capport-architecture-08: (with COMMENT)
X-BeenThere: captive-portals@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of issues related to captive portals <captive-portals.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/captive-portals>, <mailto:captive-portals-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/captive-portals/>
List-Post: <mailto:captive-portals@ietf.org>
List-Help: <mailto:captive-portals-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/captive-portals>, <mailto:captive-portals-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 12 Jun 2020 14:00:31 -0000

Thanks Roman,

Responses inline

On Tue, 9 Jun 2020 at 17:26, Roman Danyliw via Datatracker
<noreply@ietf.org> wrote:
>
> Roman Danyliw has entered the following ballot position for
> draft-ietf-capport-architecture-08: No Objection
>
>
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
>
> I support Martin and Ben's DISCUSS positions.
>
> Thanks for laying out the architecture to explain the subsequent protocol
> drafts.  A few areas of feedback:
>
> ** Section 2.1. Per “At this time we consider …”, to what is “at this time”
> referring (maybe this is referring to the WG scope)?  This might not age well
> as currently framed.
>

It is referring to the WG scope, but even that may not age well, I suppose.

How about just "This document only considers devices with ..."

> ** Section 2.2.  The architecture doesn’t explicitly describe which component
> is responsibility for provisioning the user equipment sufficiently so it can
> access the IP network anywhere.  I would have expected it to be the
> Provisioning Service.  Section 2.1, 2.3 and 2.4 describe the role of these
> components in the architecture and their requirements.  Section 2.2 does not.
> Instead it describes candidate technologies.  It would be helpful to explicitly
> say.
>

I didn't want to assume that the provisioning service was required for network
access (in case the network used a technology that allowed stateless access
somehow). But, it can't hurt to mention that in many cases the provisioning
service will be the component that does that. A suggested rephrasing of the
first paragraph of that section.

"The Provisioning Service is primarily responsible for providing a portal URI to
the User Equipment when it connects to the network, and later if the
URI changes.
The provisioning service could also be the same service which is responsible for
provisioning the User Equipment for access to the Captive Network
(e.g. by providing
it with an IP address). This section discusses two mechanisms which may be used
to provide the portal URI to the User Equipment.

It is expected that the provided URI will be for the API described in
Section 2.3".


> ** Section 2.3.  Perhaps this is too pedantic, but should the obvious be
> explicitly called out: the user equipment should only be able to check it’s own
> captivity status?  This would be some explicit notion of authorization.

I recall discussing this, but I don't think we settled on a good,
simple solution. I'm
fine pointing out that the user equipment should only be able to check its own
state of captivity, but I worry that discussing authorization will
open a large can
of worms. Do the chairs have an opinion on this?

> ** Section 2.3  Per “A caller to the API needs to be presented with evidence
> that the content it is receiving is for a version of the API that it
> supports.”, is the caller the User Equipment, the web browser or the end user –
> does that distinction matter – does each layer need anything different?
>

I don't think the distinction matters. This is intended to allow
whatever application
is running the captive portal workflow to make a decision based on the
response it
gets back. E.g.. if it's one the uE doesn't support, it could display
a notification to the user
indicating that there appears to be a captive network, but it is unsupported.


> ** Section 3.2.1.  Per “Each instance of User Equipment interacting with the
> Captive Network MUST be given an identifier that is unique among User Equipment
> interacting at that time.”, is “unique among user equipment interacting at that
> time” the same as saying “unique among the identifiers currently in use in the
> Captive Network”?  It might be useful to frame this guidance within the scope
> of the previous definitions.
>
That is correct. I'll clarify by using your phrasing.

> ** Section 3.2.2.  The acceptable workfactor for “hard” still isn’t clear here
> but I understand the difficulty of pinning it down while remaining flexible.
>
> ** Section 4.  Does this section provide normative guidance?  The introductory
> sentence suggests no by saying that this section describes “possible
> workflow[s]”.  However, Section 4.3 uses a normative SHOULD.

It's meant to be informative. That statement likely belongs elsewhere.
I'll move it
to Section 2.1 (User Equipment)

>
> ** Section 4.2.  Between step #2 and #3, did some kind of signaling happen to
> indicate that expiration is imminent, or did the UE keep state of some kind?
> Keeping state isn’t mentioned as a UE requirement in Section 2.1.  Section 2.5.
> notes that a “signal might be generated when the end of a session is imminent”.
>

The implication is that there is state in this case -- the UE stored
the last response
it retrieved from the API so that it could consult the time remaining
(seconds-remaining
in the API document). I can update section 2.1 to indicate that the UE
could store information
from the API's response in order to trigger workflows related to
imminent expiry of its access.
Storing the state isn't required, but it could make the user
experience better if supported.

I plan on reworking section 4.2 in response to Benjamin's review. I'll
mention in it that the UE uses the stored information to make the
decision to remove the ambiguity.

> ** Section 7.  This section would benefit from a discussion of the privacy
> impacts of the implicit identifiers embedded into the architecture (e.g.,
> re-identification)
>

Benjamin also pointed this out. I have started building up some text for this,
but it's a bit rough. Regarding re-identification, what are your
privacy concerns there?
The chance of a UE that once had an identifier masquerading as the new one using
information it was privy to at the time it was assigned it?

For what it's worth, here is my working text. It's pretty rough, and
likely needs elaboration.

"
Section 7.X  Privacy

Section 3 describes a mechanism by which all components within the
Captive Network agree on a unique identifier for the User Equipment.
This identifier could be abused to track the user. Implementers and
designers of Captive Networks should take care to ensure that identifiers,
if stored, are stored securely.
"



> ** Section 7.1. Per “If a user decides to incorrectly trust an attacking
> network ….”, you have an on-path attacker so additional risks include traffic
> redirection to arbitrary destinations to server malicious payloads; traffic
> analysis and loss of confidentiality; inline traffic modification; etc.
>

We can update to mention those.

> ** Section 7.2.  Per “The solution described here assumes that when the User
> Equipment needs to trust the API …”, why is this conditional.  Doesn’t the UE
> have to trust the API server?
>

Hmm. I guess you could argue that it doesn't need to trust it if it
has chosen to not use it,
but I'm not sure that's relevant. Does anyone else have a good reason
to keep it conditional?

I need to expand on this section in response to Benjamin's
review. I'll change the phrasing so that  the trust is unconditional.


> ** Section 7.3.  In addition to integrity and confidentiality, is there an
> authenticity requirement?  I ask because Section 2.1. noted that the UE “SHOULD
> [be] allow[ed] access to any services that User Equipment could need to contact
> to perform certificate validation.”
>
>

We definitely expect that the API server is the correct one. I figured
that the authenticity requirement
was covered in section 7.2 Should we combine the two sections?

>

Thanks!

Kyle