<?xml version='1.0'?>
 <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'> 
    <!ENTITY rfc4287 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4287.xml'> 
    <!ENTITY rfc3339 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3339.xml'>  
    <!ENTITY rfc3986 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml'>  
    <!ENTITY rfc3987 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3987.xml'>  
    <!ENTITY rfc3023 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3023.xml'>  
    <!ENTITY xmlnames PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xml-names-19990114.xml'> 
    <!ENTITY xml PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xml-20040204.xml'> 
    <!ENTITY xmlbase PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xmlbase-20010627.xml'>
    <!ENTITY xmldsig PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xmldsig-core-20020212.xml'>
    <!ENTITY c14n PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xml-c14n-20010315.xml'>
    <!ENTITY excc14n PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xml-exc-c14n-20020718.xml'>
    <!ENTITY xmlenc PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xmlenc-core-20021210.xml'>
]>
<?rfc compact="yes" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<rfc category="std" ipr="trust200811" docName="draft-snell-atompub-tombstones-18"> 
<front> 
<title abbrev="Atom deleted-entry">The Atom "deleted-entry" Element</title> 
<author initials="J.M." surname="Snell" fullname="James M Snell"> 
<address> 
<email>jasnell@us.ibm.com</email> 
<uri>http://ibm.com</uri> 
</address> 
</author> 
<date month="July" year="2012" /> 
<area>General</area> 
<keyword>I-D</keyword> 
<keyword>Internet-Draft</keyword> 
<keyword>XML</keyword> 
<keyword>Extensible Markup Language</keyword> 
<keyword>Atom</keyword> 
<keyword>RSS</keyword> 
<keyword>Syndication</keyword> 
<abstract><t>This specification adds mechanisms to the Atom Syndication Format 
which publishers of Atom Feed and Entry documents can use to explicitly 
identify Atom entries that have been removed.</t></abstract> 
</front> 
<middle> 
<section title="Introduction"> 
 
<t>Atom <xref target="RFC4287"/> is an XML-based document format that describes lists
of related information known as "feeds".  Feeds are composed of a
number of items, known as "entries", each with an extensible set of attached
metadata.  The primary use case that Atom addresses is the syndication
of Web content such as weblogs and news headlines to Web sites as
well as directly to user agents.</t>

<t>In the base Atom format, when an entry is removed from a feed, but a 
consumer has already received and processed that entry, perhaps adding it to
a local cache or display, there is no mechanism for determining that
the entry has been removed.  This specification adds a mechanism to the
Atom Syndication Format that publishers of Atom Feed and Entry
documents can use to explicitly identify Atom entries that have been
removed.  Atom consumers can use that information to adjust such
things as their document cache and user interfaces.</t>
 
</section> 
 
<section title="Notational Conventions"> 
 
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref target="RFC2119" />.</t>
 
<t>This specification uses XML Namespaces <xref target="W3C.REC-xml-names-19990114"/> 
to uniquely identify XML element names.  It uses the following namespace prefix 
for the indicated namespace URI;</t> 
 
<figure><artwork><![CDATA[ 
 "at": "http://purl.org/atompub/tombstones/1.0" 
]]></artwork></figure> 
 
</section> 
 
<section title="The at:deleted-entry element"> 
 
<t>The at:deleted-entry element represents an Atom Entry that has been removed.</t> 
 
<figure><artwork><![CDATA[ 
  deletedEntry =
    element at:deleted-entry {
      atomCommonAttributes,
      attribute ref { atomUri },
      attribute when { atomDateConstruct },
      ( element at:by { atomPersonConstruct }?
      & element at:comment { atomTextConstruct }?
      & element atom:link { atomLink }*
      & element atom:source { atomSource }?
      & anyElement* )
   } 
]]></artwork></figure> 
 
<t>The at:deleted-entry element MUST contain a ref attribute whose value 
specifies the value of the atom:id of the entry that has been removed.</t> 
 
<t>The at:deleted-entry element MUST contain a when attribute whose value is an 
<xref target="RFC3339"/> "date-time" specifying the instant the entry was removed.
An uppercase "T" character MUST be used to separate date and time, and an uppercase 
"Z" character MUST be present in the absence of a numeric time zone offset</t> 
 
<t>The at:deleted-entry element MAY contain one at:by element used to identify the
entity that removed the entry. The at:by element is an Atom Person
Construct as defined by Section 3.2 of <xref target="RFC4287" />.</t> 
 
<t>The at:deleted-entry element MAY contain one at:comment element whose value 
provides additional, language-sensitive information about the deletion operation.  
The atom:comment element is an Atom Text Construct as defined by Section 3.1 of 
<xref target="RFC4287" />.</t> 
 
<t>The at:deleted-entry element MAY contain any number of atom:link elements 
as specified by Section 4.2.7 of <xref target="RFC4287" />.</t>

<t>The at:deleted-entry element MAY contain one atom:source element as defined
by Section 4.2.11 of <xref target="RFC4287" />. Within the context of an
at:deleted-entry element, the atom:source element is intended to allow the 
aggregation of at:deleted-entry element from different feeds while retaining
information about an at:deleted-entry's source feed. When an at:deleted-entry
element appears in a Feed document other than it's source Feed or when an
at:deleted-entry element that has a source Feed document is used in the 
context of a Deleted Entry Document, it MUST contain an atom:source element.</t>
 
<t>An Atom feed MAY contain any number of at:deleted-entry elements, but 
MUST NOT contain more than one with the same combination of ref and when 
attribute values.</t> 
 
<figure><artwork><![CDATA[ 
  <feed xmlns="http://www.w3.org/2005/Atom"
        xmlns:at="http://purl.org/atompub/tombstones/1.0"> 
     ...
     <!-- Minimal deleted-entry --> 
     <at:deleted-entry 
       ref="tag:example.org,2005:/entries/1" 
       when="2005-11-29T12:11:12Z"/> 
     
     <!-- Extended deleted-entry --> 
     <at:deleted-entry 
       ref="tag:example.org,2005:/entries/2"
       when="2005-11-29T12:11:12Z"> 
       <at:by> 
         <name>John Doe</name> 
         <email>jdoe@example.org</email> 
       </at:by> 
       <at:comment>Removed comment spam</at:comment> 
     </at:deleted-entry> 
     ...
  </feed> 
]]></artwork></figure> 
 
<t>An Atom feed MAY contain atom:entry elements and at:deleted-entry elements
sharing the same atom:id value. In such cases, the implication is that the
particular atom:entry has either been published to the feed and then subsequently 
removed; or that a previously removed entry has been republished to the feed
following a previous deletion. To determine which condition applies, the 
processor needs to compare the value of the at:deleted-entry element's when 
attribute to the value of the corresponding atom:entry element's atom:updated value:
  <list style="symbols"> 
    <t>If the when attribute specifies a value equal to or more recent than
    that specified by the atom:updated element, the atom:entry is assumed 
    to have been published then subsequently removed. Processors SHOULD
    ignore the older atom:entry element.</t>
    <t>If the when attribute specifies a value older than that specified by
    the atom:updated element, the atom:entry is assumed to have been 
    republished to the feed following a prior removal. Processors SHOULD
    ignore the older at:deleted-entry element.</t>
  </list>
</t>
  
<t>Publishers of feeds containing at:deleted-entry elements should note that 
the at:deleted-entry element is advisory in nature only and may be ignored by 
Atom processors. The presence of an at:deleted-entry element does not guarantee 
that the atom:entry to which it is referring will no longer be available. For
example, if an entry was published to a feed document that was published
and processed yesterday by an aggregator application, then is subsequently 
deleted today, with a corresponding at:deleted-entry element added to the feed
as a signal that the entry was deleted, there is no guarantee that the 
aggregator application will pay any attention to the at:deleted-entry element
during subsequent processing operations.</t>
 
<t>Elements and attributes from any XML vocabulary MAY be used within an
at:deleted-entry element. Processors encountering such markup MUST NOT stop 
processing or signal an error. It might be the case that the Processor is able 
to process the foreign markup correctly and does so.  When unknown markup is 
encountered as a child of at:deleted-entry, Processors MAY bypass the markup 
and any textual content and MUST NOT change their behavior as a result of the 
markup's presence.</t> 
 
<t>This specification allows the use of IRIs <xref target="RFC3987" /> in 
precisely the same manner specified in Section 2 of <xref target="RFC4287" />.</t>

<t>Any element defined by this specification MAY have an xml:base
attribute <xref target="W3C.REC-xmlbase-20010627" />.  When xml:base is 
used, it serves the function described in section 5.1.1 of <xref target="RFC3986" />, 
establishing the base URI (or IRI) for resolving any relative references found 
within the effective scope of the xml:base attribute.</t>

<t>Any element defined by this specification MAY have an xml:lang attribute, 
whose content indicates the natural language for the element and its descendents.  
Requirements regarding the content and interpretation of xml:lang are specified in XML 1.0
<xref target="W3C.REC-xml-20040204" />, Section 2.12.</t>
 
</section> 
 
<section title="Deleted Entry Document">

<t>A "Deleted Entry Document" represents exactly one at:deleted-entry element
outside the context of an Atom feed. It's root is the at:deleted-entry element.</t>

<figure><artwork><![CDATA[
namespace at = "http://purl.org/atompub/tombstones/1.0"
start = at:deleted-entry 
]]></artwork></figure>

<t>Deleted Entry Documents are specified in terms of the XML Information Set, 
serialized as XML 1.0 <xref target="W3C.REC-xml-20040204" /> and identified 
with the "application/atomdeleted+xml" media type. Deleted Entry Documents 
MUST be well-formed XML. This specification does not define a DTD for Deleted
Entry Documents, and hence does not require them to be valid (in the sense 
used by XML).</t>

</section>

<section title="Digital Signatures">

<t>The at:deleted-entry element MAY have an Enveloped Signature, as described 
by XML-Signature and Syntax Processing <xref target="W3C.REC-xmldsig-core-20020212" />.</t>

<t>Processors MUST NOT reject an at:deleted-entry containing such a
signature because they are not capable of verifying it; they MUST
continue processing and MAY inform the user of their failure to
validate the signature.</t>

<t>In other words, the presence of an element with the namespace URI
"http://www.w3.org/2000/09/xmldsig#" and a local name of "Signature"
as a child of the document element MUST NOT cause an Processor
to fail merely because of its presence.</t>

<t>Section 6.5.1 of <xref target="W3C.REC-xmldsig-core-20020212" /> requires support for
Canonical XML <xref target="W3C.REC-xml-c14n-20010315" />.  However, many implementers do 
not use it because signed XML documents enclosed in other XML documents have 
their signatures broken.  Thus, Processors that verify signed at:deleted-entry
elements MUST be able to canonicalize with the exclusive XML canonicalization method
identified by the URI "http://www.w3.org/2001/10/xml-exc-c14n#", as
specified in Exclusive XML Canonicalization <xref target="W3C.REC-xml-exc-c14n-20020718" />.</t>

<t>Intermediaries such as aggregators may need to add an atom:source
element to an at:deleted-entry that does not contain its own atom:source
element.  If such an entry is signed, the addition will break the
signature.  Thus, a publisher of individually-signed at:deleted-entry's should
strongly consider adding an atom:source element to those elements
before signing them.  Implementers should also be aware of the issues
concerning the use of markup in the "xml:" namespace as it interacts
with canonicalization.</t>

<t>Section 4.4.2 of <xref target="W3C.REC-xmldsig-core-20020212" /> requires support for
DSA signatures and recommends support for RSA signatures.  However,
because of the much greater popularity in the market of RSA versus
DSA, Atom Processors that verify signed Atom Documents MUST be able
to verify RSA signatures, but do not need be able to verify DSA
signatures.  Due to security issues that can arise if the keying
material for message authentication code (MAC) authentication is not
handled properly, Atom Documents SHOULD NOT use MACs for signatures.</t>

</section>
 
<section title="Encryption">

<t>The root of a Deleted Entry Document (the at:deleted-entry element) MAY be 
encrypted, using the mechanisms described by XML Encryption Syntax and
Processing <xref target="W3C.REC-xmlenc-core-20021210"/>.</t>

<t>Section 5.1 of <xref target="W3C.REC-xmlenc-core-20021210"/> requires support of
TripleDES, AES-128, and AES-256. Processors that decrypt Deleted Entry
Documents MUST be able to decrypt with AES-128 in Cipher Block
Chaining (CBC) mode.</t>

<t>Encryption based on <xref target="W3C.REC-xmlenc-core-20021210"/> does not ensure
integrity of the original document.  There are known cryptographic
attacks where someone who cannot decrypt a message can still change
bits in a way where part or all the decrypted message makes sense but
has a different meaning.  Thus, Processors that decrypt Deleted Entry
Documents SHOULD check the integrity of the decrypted document by
verifying the hash in the signature (if any) in the document, or by
verifying a hash of the document within the document (if any).</t>

<t>When a Deleted Entry Document is to be both signed and encrypted, it is
generally a good idea to first sign the document, then encrypt the
signed document.  This provides integrity to the base document while
encrypting all the information, including the identity of the entity
that signed the document.  Note that, if MACs are used for
authentication, the order MUST be that the document is signed and
then encrypted, and not the other way around. Further, if MACs are 
used along with a symmetric encryption algorithm, the same key SHOULD
NOT be used in the generation of the MAC and the encryption.</t>

</section>
 
<section title="Security Considerations"> 
  <t>As specified in <xref target="RFC4287"/>, Atom processors should be
  aware of the potential for spoofing attacks where an attacker publishes
  atom:entry or atom:deleted-entry elements using the same atom:id values as 
  entries from other Atom feeds.  An attacker may attempt to trick an application 
  into believing that a given entry has either been removed from or added to a feed.  
  To mitigate this issue, Atom processors are advised to ignore at:deleted-entry 
  elements referencing entries that have not previously appeared within the 
  containing Feed document and should take steps to verify the origin of the
  Atom feed before considering the entries to be removed.</t> 
  
  <t>The at:deleted-entry element can be encrypted and signed using
  <xref target="W3C.REC-xmlenc-core-20021210" /> and <xref target="W3C.REC-xmldsig-core-20020212" />,
  respectively, and are subject to the security considerations implied
  by their use.</t>

  <t>Digital signatures provide authentication and message integrity 
  with proof of origin. Encryption provides data confidentiality.</t>
  
  <t>An application supporting the use of digitally signed atom:entry and 
  at:deleted-entry elements should be aware of the potential issues that
  could arise if a at:deleted-entry element indicating the deletion of 
  an atom:entry element has been signed using a different key than what was 
  used to sign the atom:entry, or when an unsigned at:deleted-entry is used to 
  indicate the deletion of a signed atom:entry. Either case can potentially 
  indicate a form of spoofing attack. Processors must take steps to verify 
  the validity of the at:deleted-entry element.</t>
  
</section> 
 
<section title="IANA Considerations"> 
  
<t>A Deleted Entry Document, when serialized as XML 1.0, can be identified with
the following media type:</t>

<t><list>
<t>Type name: application</t>
<t>Subtype name: atomdeleted+xml</t>
<t>Required parameters: None</t>
<t>Optional parameters: "charset" : This parameter has semantics identical to
the charset parameter of the "application/xml" media type as specified in 
<xref target="RFC3023"/>.</t>
<t>Encoding considerations: Identical to those of "application/xml" as described
in <xref target="RFC3023" />, Section 3.2.</t>
<t>Security considerations: As defined in this specification. In addition,
as this media type uses the "+xml" convention, it shares the same security
considerations as described in <xref target="RFC3023" />, Section 10.</t>
<t>Interoperability considerations: There are no known interoperability issues.</t>
<t>Published specification: This specification.</t>
<t>Applications that use this media type: Undefined. As an extension to the 
Atom Syndication Format (<xref target="RFC4287" />), this specification may 
be used within any application that uses the Atom Format.</t>
<t>Additional information:
<list>
<t>Magic number(s): As specified for "application/xml" in <xref target="RFC3023" />, Section 3.2</t>
<t>File extension(s): .atomdeleted</t>
<t>Macintosh file type code(s): TEXT</t>
</list></t>
<t>Person &amp; email address to contact for further information: James M Snell &lt;jasnell@us.ibm.com&gt;</t>
<t>Intended usage: COMMON</t>
<t>Restrictions on usage: None.</t>
<t>Author: James M Snell &lt;jasnell@us.ibm.com&gt;</t>
<t>Change controller: IESG</t>
</list></t>
  
</section> 
 
<section title="Acknowledgements"> 
<t>The author gratefully acknowledges the feedback from the members of the 
Atom Publishing Format and Protocol working group during the development of 
this specification.</t> 
</section> 
 
</middle> 
 
<back> 
<references title="Normative References"> 
  &rfc2119;
  &rfc3339;
  &rfc3986;
  &rfc3987;
  &rfc4287;
  &rfc3023;
  &xmlnames;
  &xml;
  &xmlbase;
  &xmldsig;
  &c14n;
  &excc14n;
  &xmlenc;
</references> 
</back> 
</rfc>