draft-ietf-conneg-feature-sets-at-urls-00.txt
Graham Klyne <[email protected]>
| Newsgroups | gmane.ietf.medfree |
|---|---|
| Message-ID | <[email protected]> |
At 11:18 26/02/99 -0800, Bill Newman wrote:
>I've just submitted my feature-sets-at-URLs proposal as an Internet
>Draft.
[...]
Bill,
I've just read through the version of your draft submitted to the list --I
don't know if there are any changes in the published I-D-- and would like
to make some observations. In making these observations, I don't think we
have any fundamental difference about the goals, or the broad means of
achieving them.
My primary observation is that your draft covers two matters which I would
prefer to see treated separately:
(1) feature set syntax extensions, and
(2) profiling of mechanisms for resolving URLs in feature set expressions
I think that matters of representation and mechanism should be separated so
that they can be developed independently of each other.
I note that the syntax extensions you propose very much overlap the
proposals in my submission <draft-ietf-conneg-feature-hash-00.txt>. In the
scheme of things, the differences I see are quite small so finding
consensus between these proposals should not be a problem.
The profiling of resolution mecahisms is a reasonable goal that I have not
addressed. This suggests that between us we might aim for two WG submissions:
Syntax extensions for abbreviating media feature sets ...
Resolving URLs in media feature sets
The remainder of this message contains comments about specific portions of
your text:
>Abstract
>
> Other Internet Drafts from the CONNEG working group describe a
> syntax[SYNTAX] and vocabulary[FEATURES] for negotiating media feature
................................................[---------]
I'd suggest "representing". Negotiation, per se, is not covered there.
> sets which can be used for transmission of a message.
[...]
> ... For example, a
> feature set may specify that full color output up to 800x600 pixels
> is supported, or that output can have up to 300 dots per inch. These
> feature sets can be arbitrarily complex, and typical feature set
.................................................[-----]
I think it's too soon to say "typical". Your legitimate meaning is still
present if this word is deleted.
> expressions may be hundreds of bytes in length.
[...]
>Syntax changes
>
> In section 4.1 of the syntax document[SYNTAX], "Textual
> representation of predicates", the definition of "filter" is to be
> amended so that it reads
>
> filter = "(" filtercomp ")" *( ";" parameter )
> / "<" absoluteURL ">" *1( ";" "md5" "=" md5value )
> md5value = 16*HEX
......................^^
MD5 is a 128-bit value, which needs 16 bytes or 32 hex digits to represent.
[...]
> syntax document[1]. Thus, it is possible for an implementation to
> support both this extension and the extension described in 6.1.3, in
> which case a filter will be described by
>
> filter = "(" filtercomp ")" *( ";" parameter )
> / "<" absoluteURL ">" *1( ";md5=" md5value )
....................................^^^..................^
RFC2234 allows "[ ... ]" as equivalent, which IMO is easier to read.
> / "(" filtercomp *( ";" parameter ) ")"
> "where" named-pred-sequence "end"
Some observations about this syntax:
(a) Using the notation of RFC2234, this can be described as:
filter =/ "<" absoluteURL ">" ...
i.e. without need to repeat other elements from [SYNTAX].
(b) this formulation syntactically binds "md5" to the URL form, and
prohibits other parameter values in this position. Here is another
possible approach:
filter =/ "<" absoluteURL ">" *( ";" parameter )
parameter =/ "md5" "=" 32*HEX
This would syntactically allow "md5" to be applied to any "filter", and
allow any other parameter (e.g. "q=") to be applied to the URL form.
QUESTION: is this an appropriate approach?
> The absoluteURL field holds a URL where a filter description may be
> found. The md5value field, if present, holds a hexidecimal
> representation of an MD5 digest[MD5] of the contents of the URL.
You do not mention whether the md5 is calculated over a normalized form of
the identified resource. (I assume that you intend not; if so, I'd state
this explicitly so that it is made clear that the resource must be
transferred *exactly*, with any embedded layout, whitespace, etc.)
Personally, I favour some simple normalization so that, for example,
whitespace munging by feature set transports does not affect the validity
of the result.
>Interpretation of URLs
>
> Any implementation of this extension MUST be able to process URLs
> with an "http" scheme. Other forms of URL MAY be supported.
My initial response to this was "why MUST http"? But, on reflection, I
accept that it is useful to have some common mechanism defined. But I can
imagine cases where "http" is not appropriate to support: this is one
reason that I would prefer to see the access mechanisms defined separately,
so that the syntax can be used without a specific mechanism for
applications where this is appropriate.
In summary, I am content with this IFF it is stated separately from feature
set syntax extensions.
> Any implementation of this extension MUST be able to process data
> returned with the MIME type "text". Other types MAY be supported.
Seems reasonable.
One thought I had was that a multipart containing human- and machine-
readable parts might be used (a bit like multipart/report), so that systems
without content negotiation could offer the user a choice.
>Security Considerations
I thought this section had some good material, and may be an important
aspect of this memo.
> Further, by specifying the MD5 hash, storing a literal copy of the
> desired feature set locally, and being able to repeat a failed
> request without URL abbreviation, the device requesting content
> negotiation can reduce all these new attacks to degradation of
> service. When the adversary doesn't interfere, negotiation would
> require a single round trip over the primary communications link,
> carrying roughly 40 bytes of compressible URL and 16 bytes of
> uncompressible MD5 hash. When the adversary does interfere,
> negotiation requires the first round trip (which fails), followed by
> retransmissing of the entire literal feature set over the primary
> link. Thus, the effect of interference is merely to slow the
> negotiation, not to change its result.
I *think* you are saying here that the MD5 can be used as a cache
validator, and hence optimize feature set transfers or provide a recovery
mechanism if a URL cannot be resolved (for reasons of system failure or
active attack).
>From a security viewpoint, I don't believe this use of md5 alone can defeat
an active attack. Any active attack would, I presume, be capable of
substituting both features AND md5 values. But in this case, the attacker
would need to intercept the negotiation exchange AND the URL resolution
exchange -- increasing the difficulty of such an attack but by no means
preventing it. To fully prevent active attacks, I think some form of
signature is required.
> It is expected that only a small minority of content negotation
> applications will be sufficiently critical that such interference
> will be a significant concern. After all, given that you have an
> adversary with the capable of tampering with communications between
> your servers, you are likely to have a long list of problems, and
> interference with content negotiation may be far from the most
> serious problem on that list. For this reason, and because the
> primary motivation for this extension is to allow content negotiation
> to proceed with minimal bandwidth usage on the primary channel, the
> MD5 checksum is optional.
I think you make a fair point and I don't argue your conclusion, but I
don't fully agree with its justification. I'm not sure where the
expectations of criticality of content negotiation come from.
If content negotiation becomes a generally used feature of a widely used
messaging system then its operation starts to become critical, I believe.
Under these circumstances, I suggest that negotiation exchanges should be
protected by some form of signature. Ultimately, this is a feature of the
application that uses content negotiation.
#g
------------
Graham Klyne
([email protected])