[secdir] secdir review of draft-ietf-core-link-format-11

Richard Barnes <rbarnes@bbn.com> Sat, 25 February 2012 10:40 UTC

Return-Path: <rbarnes@bbn.com>
X-Original-To: secdir@ietfa.amsl.com
Delivered-To: secdir@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AB54021F8555; Sat, 25 Feb 2012 02:40:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.512
X-Spam-Level:
X-Spam-Status: No, score=-106.512 tagged_above=-999 required=5 tests=[AWL=0.087, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id B7p0lVnMuTV9; Sat, 25 Feb 2012 02:40:45 -0800 (PST)
Received: from smtp.bbn.com (smtp.bbn.com [128.33.1.81]) by ietfa.amsl.com (Postfix) with ESMTP id D2AA021F8554; Sat, 25 Feb 2012 02:40:44 -0800 (PST)
Received: from [128.89.255.192] (port=65027) by smtp.bbn.com with esmtps (TLSv1:AES128-SHA:128) (Exim 4.77 (FreeBSD)) (envelope-from <rbarnes@bbn.com>) id 1S1F3L-000KT2-21; Sat, 25 Feb 2012 05:40:36 -0500
From: Richard Barnes <rbarnes@bbn.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Sat, 25 Feb 2012 11:40:36 +0100
Message-Id: <3E9A3BC9-6AEB-4E03-A053-5E7A172DA4E7@bbn.com>
To: secdir@ietf.org, iesg@ietf.org, draft-ietf-core-link-format@tools.ietf.org
Mime-Version: 1.0 (Apple Message framework v1251.1)
X-Mailer: Apple Mail (2.1251.1)
Subject: [secdir] secdir review of draft-ietf-core-link-format-11
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
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: <http://www.ietf.org/mail-archive/web/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: Sat, 25 Feb 2012 10:40:49 -0000

I have reviewed this document as part of the security directorate's ongoing effort to review all IETF documents being processed by the IESG.  These comments were written primarily for the benefit of the security area directors.  Document editors and WG chairs should treat these comments just like any other last call comments.

This document defines a format for describing a list of resources linked from a server, e.g., an HTTP or CoAP server.  The document suggests the use of TLS or DTLS on the underlying transport for transport security.  My only remaining security concern is that there could be access control concerns as well.  For example, a server might not authorize all clients to see all services, or might provide some clients with different levels of access (e.g., read vs. read/write).  The document already envisions that the list of links will have some dynamism, allowing for filtering based on link attributes.  I would suggest simply noting that servers may want to support HTTP, CoAP, or [D]TLS client authentication and adaptation of the list of returned links based on the client's identity and authorizations.  

Suggested text for Section 6:
"
Some servers may provide resource discovery services to a mix of clients that are trusted to different levels.  For example, a lighting control system might allow any client to read state variables, but only certain clients to write state (turn lights on or off).  Servers SHOULD support authentication features of the underlying transport protocols (HTTP, CoAP, or DTLS/TLS) and allow operators to return different lists of links based on a client's identity and authorization.
"

Non security-related comments follow.

General: This document seems a little bit awkward semantically.  The HTTP Link header is intended to provide links from a given resource (identified by the request URI) to associated resources.  The service described in this document seems to provide a general list of URIs, without a firm idea of what the "source" of these references is.  Indeed, with the "anchor" parameter, it seems like this document allows a service at "/.well-known/core" to act as a general "Tell me about this URI" service, which seems over-broad.  Is this the intent of the WG?  Perhaps the "anchor" parameter should be restricted to relative, not absolute, URIs?  And how is this different from just doing a HEAD request to the URI to get a Link header that would contain the same information?

General: In a similar vein, it seems like this format need not necessarily be restricted to CORE.  Might it not have more general utility for HTTP service discovery?  Really the only impact would be to change the name of the well-known URI from "core" to something more generic.

Section 1.2.1: Quotes or angle-brackets around "/.well-known/core"

Section 1.2.3: The word "filtering" is used here before it is defined.

Section 2: The document hints at conversion from the HTTP Link header a couple of times.  It seems like it would be helpful to lay out the conversion rules in detail.  It seems like you may at least need to convert some things to UTF-8?

Section 2.1: It sounds like the default context URI you're envisioning here is essentially the same as the Origin associated with the scheme, host, and port:
<http://tools.ietf.org/html/rfc6454>

Section 3.1: s/semantically important/application specific semantic/

Section 3.3: The MTU might not be the relevant metric for TCP-based transport (e.g., HTTP)

Section 4.1: It seems like the byte-equality matching here might create a disconnect here between the query patterns you can write and parameters you can have.  In particular, it seems like you might at least need to decode percent-encoding before comparison.  Otherwise, you might have parameters that are un-filterable.

Section 7.3: Should the "Encoding considerations" say something about it always being UTF-8?