Re: [decade] FW: Last Call: <draft-farrell-decade-ni-07.txt> (Naming Things with Hashes) to Proposed Standard

Stephen Farrell <> Fri, 08 June 2012 11:21 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 2FC5E21F889D for <>; Fri, 8 Jun 2012 04:21:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -102.599
X-Spam-Status: No, score=-102.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id vSU0RcMgRVH5 for <>; Fri, 8 Jun 2012 04:21:48 -0700 (PDT)
Received: from ( [IPv6:2001:770:10:200:889f:cdff:fe8d:ccd2]) by (Postfix) with ESMTP id 2B5B121F8877 for <>; Fri, 8 Jun 2012 04:21:46 -0700 (PDT)
Received: from localhost (localhost []) by (Postfix) with ESMTP id EAEC717180B; Fri, 8 Jun 2012 12:21:44 +0100 (IST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;; h= content-transfer-encoding:content-type:in-reply-to:references :subject:mime-version:user-agent:from:date:message-id:received :received:x-virus-scanned; s=cs; t=1339154504; bh=Z/oLIgw1KsRLc9 pDXCUKTiJI2AbbOF1uuj26LZN2n1g=; b=ziwC+DSz/QV2Fl1tTRE16cYC4SEzP8 Cn8FYRlW457vt3pHHZpuLBR8j6p6PNLRG0IM9srpJntVwfNZxXewzuE5RQXHGRLt eSlmIZ0Al+QGLN4SvkPJri2DX2ssyEAzs46gqg3X9eEpR6JKluah2EXUmZUU5hrn 3nKFgnUi97CM/drOwt+9CS5aH5KOn8GVcTDWoECtSAyG2i5TY8JaCNFcaKHQ/w8O cKI7eBTn368Ox/oHSWnmPOtMNqq8Pl75iSGELkOsqrU3QS5O+nk/GWK2v/I5Vagt /jCKYQq9C0JwIqFf7CPuN5MYGdhwNv0VdmVF9YISJCWwhHg8/g8Ph+wQ==
X-Virus-Scanned: Debian amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10027) with ESMTP id B2eliOPIsCj0; Fri, 8 Jun 2012 12:21:44 +0100 (IST)
Received: from [IPv6:2001:770:10:203:ccd0:6c1c:533b:ca48] (unknown [IPv6:2001:770:10:203:ccd0:6c1c:533b:ca48]) by (Postfix) with ESMTPSA id 3FD25171809; Fri, 8 Jun 2012 12:21:44 +0100 (IST)
Message-ID: <>
Date: Fri, 08 Jun 2012 12:21:44 +0100
From: Stephen Farrell <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1
MIME-Version: 1.0
To: Jonathan A Rees <>
Subject: Re: [decade] FW: Last Call: <draft-farrell-decade-ni-07.txt> (Naming Things with Hashes) to Proposed Standard
References: <> <> <> <>
In-Reply-To: <>
X-Enigmail-Version: 1.4.2
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IETF-Discussion <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 08 Jun 2012 11:21:49 -0000


On 06/08/2012 01:35 AM, Jonathan A Rees wrote:
> On Thu, Jun 7, 2012 at 3:15 PM, Stephen Farrell
> <> wrote:
>> On 06/06/2012 09:33 PM, Jonathan A Rees wrote:
>>> As requested I am sending comments on this last call draft to
>>> I sent them to the authors on 6 May but received no
>>> reply.
>> Once again, sorry about that. No idea why I missed responding,
>> your mail is in my client even. Ah well.
>>> Jonathan Rees
>>> ---------- Forwarded message ----------
>>> From: Jonathan A Rees <>
>>> Date: Sun, May 6, 2012 at 7:57 PM
>>> Subject: comments on
>>> To: Alexey Melnikov <>, Barry Leiba
>>> <>, "S. Farrell" <>,
>>> "P. Hallam-Baker" <>
>>> Here are some opinions on
>>> :
>>> I think this URI scheme would be a welcome addition to web
>>> architecture. Wide review should be sought, because this might become
>>> quite important and if there are problems they will be very difficult
>>> to fix later.
>>> I think using .well-known is a good idea.
>>> I think integration into the ecosystem, such as browser support,
>>> should be anticipated; for this reason I think content type should be
>>> elevated from an 'optional feature' to a 'required feature'.
>>> [i.e. conformant implementations must support it, even if providing
>>> the content type in the URI is itself optional.]
>> I could certainly live with that, and I suspect my co-authors too,
>> but I'd need to ask 'em. However, we'd like to see more support for
>> it before doing that. If we only hear from you on this, then I
>> think leaving it in the other draft would be right. (See below
>> for why we want to keep that draft.) I guess others have a few
>> weeks to chime in on this.
> OK, I suspect I can find other W3C TAG members who would agree; will circulate.

Great. Just note though that in figuring rough consensus its
not really useful for a bunch of (esp. previously unknown)
people to just say "+1" to something. A note like yours that
shows they've read the draft and have their own comment is
much more useful. (Its happened in the past that quite
well-meaning folks have jumped in like that and with no
context it makes it hard for anyone to figure what to make
of things.)

> It is certainly strongly promoted by the W3C web architecture document, see
> so I think I have W3C consensus (as of 2005) behind my claim.

Well I could argue that that says that protocols SHOULD
do stuff and we're just defining the URI here and not a
protocol. But let's see if we get more input on this.

>>> If you
>>> don't do this, you are just encouraging sniffing and privilege
>>> escalation attacks. Sniffing would be a big step backwards. Better to
>>> do what the data: scheme does and say that there is a default content
>>> type of, say, text/plain, and that otherwise the content type ought to
>>> be specified in the URI.
>>> Content-type privilege escalation risk (and incorrect sniffing risk)
>>> should be mentioned in the security considerations section in any
>>> case.
>> Would appreciate text if you can offer some. (Always happy to
>> make the sec. cons. bit better.)
> Hmm. Hot potato.
> Maybe something can be derived from Adam's draft
> which I assume you've seen...  obviously I'd prefer you do the
> drafting, but will consider myself pressured.

I look forward to seeing that text then:-)

>>> Maybe the risk that the host used for retrieval might be spoofing the
>>> content-type (by providing a bogus content-type in an HTTP response)
>>> should also be mentioned.
>> Good one. Yep, we should mention this whereever ct= is described
> No, this is a threat even if ct= isn't used. Suppose that the document
> is intended as an unscriptable media type, but the (malicious) server
> sets the content-type: header in the response to a scriptable type.
> Not good. I think this threat is described in Adam's draft.


>>> (A possible design would be to put the
>>> content-type (and maybe other headers like Expires:?) in the hashed
>>> content, to be pulled out into the HTTP response when the content is
>>> served by an http server and then checked by the client, but I
>>> understand that this would be a tooling headache.)
>> Yep. We thought about it but agree that it gets too complex too
>> quickly. Maybe with a bit of experience...
>>> (I don't understand why you want to separate the 'optional' features
>>> into a separate spec. This made me miss the ct= feature entirely at
>>> first.)
>> The intent is to put stuff there if we're not sure if its
>> ready or needed everywhere. ct= is definitely the main
>> candidate feature for moving to the "base" spec though.
>> Some other things (e.g. handling dynamic content) are
>> way more experimental and should definitely not move
>> and maybe need more time before we want them in an RFC.
>> If all this does get popular then the RFCs can be revised later
>> based on experience in any case. (If nobody cares, then it
>> won't be a problem:-) So I don't think where things are
>> documented now is hugely important in the long term.
> Hmm... if this spec takes off like I hope it will, you will have more
> influence than you think now, so the implicit messages will be
> important... by putting ct= in a separate document you're saying that
> it's not important, and you'll encourage implementations that use
> sniffing instead of some rational way to convey the media type.

Maybe, maybe not. What's more important is what gets used
IMO. Again, let's see if we get more input.

>>> I think the documentation should say that the hash and content type
>>> together identify the resource,
>> Well, IMO the hash identifies the resource (if name-data integrity
>> is verified) so I don't think I agree that the content type is
>> key for identification. It is for interpretation (or whatever
>> the right term there is, maybe rendering?) and probably other
>> things.
> Well maybe we're quibbling over terminology, but in the HTTP spec and
> in all the W3C documents, the media type is part of the resource (or
> "representation" in HTTPbis; the distinction is immaterial for your
> URI scheme), and therefore part of its identity. 

Immaterial for this scheme is the bit that I like:-) So yes
we don't need to solve any philosophical problems now.

> It would be
> unfortunate to introduce an incompatible world view into the RFC
> corpus.

The RFC corpus has lots of good and lots of dodgy stuff and is
not a bible.

>>> and that because the content can be
>>> verified, the resource can be sought (using the .well-known path, or
>>> any other path for that matter) from any source that the client thinks
>>> might have it.
>> Absolutely. That's our primary motivation for all this.
>>> The primary and alternate domain name(s), and 'wrapped'
>>> URLs, are only provided as hints.
>> Yes.
>>> I agree with other commenters on the peculiarity of using // to
>>> provide the location hint since the named host is not being trusted as
>>> an authority. I don't understand why the 'primary' location isn't just
>>> encoded in the query, just like the alternate domain(s) and "wrapped
>>> URL(s)".  This would have the nice property that you can put the
>>> identifying parts (i.e. hash and content type) first, and the less important
>>> location hints parts all together after the identification. The various
>>> location hints (whether primary or secondary) would go together and
>>> their similarity would be clearer.
>>> (Unless I'm misunderstanding something and the part after the //
>>> actually has status other than a hint?  That would seem to defeat
>>> the purpose.)
>> I think we could argue this (and we did already between the authors;-)
>> and it'd come down to "pick a way." We did already and wrote code
>> for that, so we'd prefer to stick with it as-is, especially if there's
>> no compelling reason to change. I think its likely we can agree that
>> there's no compelling differences here in whether we use "//" or
>> a "?loc=" or whatever.
> Well, you have a chance to fix this now, and it will be impossible to
> fix later. 

Its true we won't be able to change this later but not true
IMO that any fix is needed, now or later.

> Using // is contrary to RFC 3986, which very clearly says
> "governance of the name space defined by the remainder of the URI is
> delegated to that authority". This is certainly not what this URI
> scheme does, so use of // is contrary to the appicable normative spec.

I disagree. The full quote there is:

  "Many URI schemes include a hierarchical element for a naming
   authority so that governance of the name space defined by the
   remainder of the URI is delegated to that authority (which may, in
   turn, delegate it further)."

There are no SHOULDs nor MUSTs there with which we're not
complying, and "many" != "all." Yes, ni URIs differ in some
respects from HTTP URLs, but if they didn't then this draft
wouldn't be needed, so that's ok.


> Best
> Jonathan
>> Cheers,
>> Stephen.
>>> Jonathan