Paul Hoffman wrote:


At 2:15 PM -0700 6/20/05, James M Snell wrote:

The spec already allows enveloped XML signatures for the document. Question: should we only allow signing of the entire document or are there valid use cases for allowing each individual entry in the feed to be individually signed?


There are many valid use cases for both: that's why the spec explicitly allows both.

From the spec (Section 5)

  The root of an Atom document (i.e., atom:feed in an Atom Feed
  Document, atom:entry in an Atom Entry Document) MAY have an Enveloped
  Signature, as described by XML-Signature and Syntax Processing
  [W3C.REC-xmldsig-core-20020212].

  ...

  Other elements in an Atom Document MUST NOT be signed unless their
  definitions explicitly specify such a capability.

Given this language, the the spec only explicitly allows digital signing of the Atom Feed and Entry Documents. It does not explicitly allow for digitally signing individual entries within a Feed document. In fact, it explicitly forbids it given that the definition of <entry /> does not "explicitly specify" the capacity to be signed.

  <?xml ...?>
  <feed>
     <entry />
     <Signature />  <!-- is valid atom 1.0 -->
  </feed>

  <?xml ...?>
  <entry>
     <Signature />  <!-- is valid atom 1.0 -->
  </entry>

  <?xml ...?>
  <feed>
     <entry>
<Signature /> <!-- does *not* appear to be valid atom 1.0 given my interpretation of Section 5 -->
     </entry>
  </feed>

Is this a bug in the spec or am I reading the spec incorrectly? If the former, then we need to get it resolved, because as it appears to read (to me anyway) we are not allowed to put Signatures within a Feeds entry elements. If the latter, I'll thwack my head on the desk to see if that helps me to start making better sense of what I'm reading. :-)

I'm quite happy with limiting it to the first as I don't really see much of a reason to support the second and third examples, but wanted to see if anyone had any opinions or use cases that could justify the ability to independently sign individual entries within a feed.


The spec uses MAY for the conformance criteria, so no one has to support either.

At 9:17 PM -0700 6/20/05, James M Snell wrote:

In other words, if the entry in the first example above were to be included in an aggregate feed containing entries from multiple authors, the <author /> element from its containing feed would need to be added to the entry element's collection of metadata... (<entry>...</entry> becomes <entry> .. .<author /> ... </entry>) thereby invalidating any signature calculated over the entry.


Fully disagree. No one is *forced* to add the collection of metadata to the entry. You give a very good reason why someone would not want to.

The only way someone would not be forced to add author or source-w/author to the entry would be if digitally signed entry elements contained within a feed were required to be complete entries capable of standing alone as entry documents and were required to contain source elements as Bob has asserted. If the author and/or source elements are missing from the entry, it would not work in an aggregated feed scenario without adding in those pieces of metadata. The only solution for this (as has been noted in other notes in this thread) is a canonicalization scheme for signed entry elements.

One would also have to contend with the potential problems introduced by namespace declarations with the feed. The bottom line of this is that an entry with a signature could not simply be copied over to a new containing feed element with the signature in tact making the aggregator scenario unworkable.


Again, fully disagree. It is quite reasonable to pass along signed entries without changing them.

Only if such entries are canonicalized in order to remove any problems introduced by namespace declarations.

The entry in the example below...

  <feed xmlns:xhtml="http://www.w3.org/1999/xhtml"; xmlns="...">
     <entry>
        <id>...</id>
        <content type="xhtml">
           <xhtml:div>...</xhtml:div>
        </content>
        <Signature xmlns="..."/>
     </entry>
  </feed>

Could not simply be reliably passed along unmodified to an aggregate feed that could quite possibly use a different set of namespace declarations. e.g.

<!-- aggregate feed with previous entry copied unmodified and obviously wrong -->
  <a:feed xmlns:a="..." xmlns="http://www.w3.org/1999/xhtml";>
     <entry>
        <id>...</id>
        <content type="xhtml">
           <xhtml:div>...</xhtml:div>
        </content>
        <Signature xmlns="..."/>
     </entry>
  </a:feed>

Am I missing something fundamental here?

So... given all this... I think I'm gong to make an assertion and open that assertion up for debate: The need for an end-to-end trust model for Atom capable of traversing any number of intermediaries is largely a myth.


How can we debate that before businesses have had a chance to create their models?

What is really needed is a simple mechanism for protecting feeds against spoofed sources (e.g. man-in-the-middle serving up a bogus feed) and for indicating that content is trustworthy* on the document level (as opposed to individual feed entry level). * by which I mean, for example, binary enclosures are trustworthy, the feed itself does not contain any malicious content, etc


This is a very different model than what we chose for Atom. It is possibly an interesting idea, but it isn't Atom.

?? I don't understand. What part of my post "isn't Atom"? My comment deals with potential security issues that are specifically discussed in the Security Considerations (Section 8) portion of the Atom spec.
Specifically:

8.1 "... Many elements in these languages are considered 'unsafe' in that they open clients to one or more types of attack. Implementers of software which processes Atom should carefully consider their handling of every type of element when processing incoming (X)HTML in Atom documents.
   See the security sections of [RFC2854] and [HTML] for guidance."

8.4 "...Atom Processors should be aware of the potential for spoofing attacks where the attacker publishes an atom:entry with the atom:id value of an entry from another feed, perhaps with a falsified
   atom:source element duplicating the atom:id of the other feed."



--Paul Hoffman, Director
--Internet Mail Consortium



Reply via email to