A. Santoni
     Internet Draft                                           Actalis S.p.A.
     Intended status: Informational                            June 10, 2008
     Expires: December 2008
                    Syntax for binding documents with time stamps
     Status of this Memo
        By submitting this Internet-Draft, each author represents that
        any applicable patent or other IPR claims of which he or she is
        aware have been or will be disclosed, and any of which he or she
        becomes aware will be disclosed, in accordance with Section 6 of
        BCP 79.
        Internet-Drafts are working documents of the Internet Engineering
        Task Force (IETF), its areas, and its working groups.  Note that
        other groups may also distribute working documents as Internet-
        Internet-Drafts are draft documents valid for a maximum of six months
        and may be updated, replaced, or obsoleted by other documents at any
        time.  It is inappropriate to use Internet-Drafts as reference
        material or to cite them other than as "work in progress."
        The list of current Internet-Drafts can be accessed at
        The list of Internet-Draft Shadow Directories can be accessed at
     Copyright Notice
        Copyright (C) The IETF Trust (2008).
        This document describes a syntax which can be used to bind a generic
        document (or any set of data, not necessarily protected by means of
        cryptographic techniques) to one or more time-stamp tokens obtained
        for that document, where "time-stamp token" has the meaning defined
        in RFC 3161. Additional types of temporal evidence are also
     Santoni               Expires December 10, 2008                [Page 1]

     Internet-Draft             timestampeddata                    June 2008
        This document proposes a simple syntax based on the Cryptographic
        Message Syntax (RFC 3852).
     Conventions used in this document
        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 RFC-2119 [KWORDS].
     Table of Contents
        1. Introduction...................................................2
        2. Syntax for TimeStampedData.....................................3
        3. Compliance requirements........................................5
        4. Recommended processing.........................................5
        5. Recommended file extensions....................................6
        6. Security Considerations........................................6
        7. IANA Considerations............................................6
        8. References.....................................................7
        Author's Addresses................................................7
        Intellectual Property Statement...................................7
        Disclaimer of Validity............................................8
     1. Introduction
        Digital time stamping has become the standard technique for proving
        the existence of a document before a certain point in time. Several
        digital signature legislations around the world embrace the concept
        and provide for time-stamping services as an approved means for
        attesting the signing time and/or for extending the validity of
        signed documents beyond the expiry date of the signer's certificate.
        However, while digital time stamping enhances digital signature, its
        value does not depend on this latter. It can obviously be useful to
        time-stamp a document even if this is not signed. And it can also be
        useful, or even mandatory in some cases, to time-stamp a document in
        its entirety, regardless of how many signatures it contains.
        When a time-stamp is related to a digital signature, there already
        exist a way to keep the two pieces together: RFC 3161 describes how
        one or more TimeStampTokens can be included in a SignerInfo structure
        as unsigned attributes. On the other hand, when time-stamps are not
        related to a digital signature, there is no standard way to keep
        together the time-stamped document and the related time-stamps.
        In such cases two approaches are typically being adopted:
     Santoni               Expires December 10, 2008                [Page 2]

     Internet-Draft             timestampeddata                    June 2008
        o  time-stamps are kept as separate files (keeping track of what
           time-stamps belong to what documents is up to the user);
        o  an ad hoc solution is adopted for specific applications, like e.g.
           a ZIP archive or a proprietary "envelope" of some kind.
        Both solutions impede interoperability, the objective of this memo.
        This document proposes a simple syntax for bundling one document
        (actually, any kind of file) to the corresponding temporal evidence,
        this latter being typically represented by one or more RFC 3161
        TimeStampTokens. Additional types of temporal evidence, like e.g. an
        RFC 4998 EvidenceRecord, are also supported via an "open" syntax.
        However, for the sake of interoperability, the emphasis is given to
        The proposed syntax is broadly based on the Cryptographic Message
        Syntax (CMS) defined in RFC 3852 [CMS].
     2. Syntax for TimeStampedData
        The proposed data structure is called TimeStampedData and it is based
        on the ContentInfo envelope defined in [CMS]:
        ContentInfo ::= SEQUENCE {
           contentType ContentType,
           content [0] EXPLICIT ANY DEFINED BY contentType }
        ContentType ::= OBJECT IDENTIFIER
        While CMS defines six content types (data, signed-data, enveloped-
        data, digested-data, encrypted-data, and authenticated-data), this
        memo defines an additional content type, timestamped-data, identified
        by the following specific contentType OID:
        id-ct-timestampedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
        us(840) rsadsi(113549) pkcs(1) pkcs9(9) id-smime(16) id-ct(1) 31 }
        This particular OID signals that the content field of the ContentInfo
        has the following syntax:
     Santoni               Expires December 10, 2008                [Page 3]

     Internet-Draft             timestampeddata                    June 2008
        TimeStampedData ::= SEQUENCE {
           version        INTEGER { v1(1) },
           fileName       UTF8String,
           mimeType       PrintableString,
           content        OCTET STRING,
           evidence       Evidence
        Evidence ::= CHOICE {
           timeStamps        [0] SET (SIZE(1..MAX)) OF TimeStampToken,
           evidenceRecord    [1] EvidenceRecord
           -- additional evidence types to be registered with the IETF
        The version field contains the version number of the TimeStampedData
        syntax. The initial version number is 1.
        The fileName field contains the original filename of the document
        which was time-stamped and whose content was inserted into the
        TimeStampedData structure.
        The mimeType field contains a MIME media type and subtype for the
        bundled file (e.g. "text/rtf"), according to RFC 2045 [MIME]. It is
        an advisory information which may help decide how to open or deal
        with the file after having "detached" it from the TimeStampedData
        structure, regardless of the filename extension (which could be
        missing or unknown).
        The content field carries the entire content, in its original format,
        of the file which was time-stamped. The file need not be a document
        in the strict sense; it can be any kind of file (e.g. an executable,
        a database, etc).
        The evidence field carries the evidence that the content data existed
        before a certain point in time. The TimeStampedData syntax allows for
        different types of evidence (like e.g. an EvidenceRecord according to
        RFC 4998). However, this document mandates support for one type only:
        a non-empty set of RFC 3161 TimeStampToken's [TSP].
        Additional types of evidence may be used after having registered them
        (and having had a distinguishing tag assigned to them) with the IETF.
        A suitable registration procedure should be defined for that purpose.
     Santoni               Expires December 10, 2008                [Page 4]

     Internet-Draft             timestampeddata                    June 2008
     3. Compliance requirements
        Compliant applications MUST support the RFC 3161-based type of
        evidence (i.e. the timeStamps CHOICE).
        Compliant applications MUST always populate the mimeType field of
        TimeStampedData structure with a valid MIME type/subtype string
        according to RFC 2045 [MIME]. A valid example is "application/pdf".
        An invalid example is "whatever". An empty string is not allowed.
     4. Recommended processing
        When generating the TimeStampedData structure, applications are
        supposed to behave like follows:
        o  populate the version field with the integer value v1(1);
        o  populate the fileName field with the real name of the file;
        o  populate the mimeType field with an appropriate MIME type/subtype
           string, preferably, or at least with "application/octet-stream";
        o  populate the content field with the entire contents of the file in
           its original format and encoding;
        o  add the necessary evidence (e.g. one or more TimeStampTokens);
        o  insert the TimeStampedData into a ContentInfo structure, with the
           id-timestamped-data OID in the contentType field;
        o  BER-encode the ContentInfo structure and save it with the same
           name of the time-stamped file, but with the file extension
           recommended in section 5.
        When parsing an existing TimeStampedData structure, applications are
        supposed to behave like follows:
        o  check that the contentType field of the ContentInfo structure has
           the expected value (id-timestamped-data) in its contentType field;
           then, extract the inner TimeStampedData structure and continue
        o  check the version field (it should be v1);
        o  check the fileName field and keep it for later use;
        o  check the mimeType field and keep it for later use;
     Santoni               Expires December 10, 2008                [Page 5]

     Internet-Draft             timestampeddata                    June 2008
        o  read the content field and prepare to save it in a separate file
           and/or show it to the user (or otherwise deal with it);
        o  check that the evidence field not be empty; extract the inner data
           and prepare to show them to the user and/or save them to separate
        o  validate the evidence data (e.g. in case of timeStamps: check that
           each TimeStampToken does indeed contain the hash of the document
           and it was signed by a trusted TSA);
        o  depending on the application, show the evidence data to the user;
        o  depending on the application, show the time-stamped document to
           the user, possibly by activating a suitable external "viewer"
           based on the fileName extension and the mimeType field;
        o  depending on the application, save the content field into a
           separate file with the name specified by the fileName field (see
           Security Considerations) or let the user specify the desired
     5. Recommended file extensions
        A file containing a TimeStampedData structure SHOULD bear the .tsd
        extension. Example: "patent123.tsd"
     6. Security Considerations
        Any consumer of TimeStampedData should validate the entire filename
        (carried in the filename field of the TimeStampedData structure)
        according the rules of its local filesystem and its intended usage
        before using some or all of the name to store the data.
     7. IANA Considerations
        This document defines one object identifier under the pkcs9 arc:
        id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2)
                    us(840) rsadsi(113549) pkcs(1) pkcs9(9) 16 }
        id-ct   OBJECT IDENTIFIER ::= { id-smime  1 }  -- content types
        id-ct-timestampedData      OBJECT IDENTIFIER ::= { id-ct 31 }
        (OID assignment courtesy of Russ Housley)
     Santoni               Expires December 10, 2008                [Page 6]

     Internet-Draft             timestampeddata                    June 2008
     8. References
        [KWORDS]  Bradner, S., "Key words for use in RFCs to Indicate
                  Requirement Levels", BCP 14, RFC 2119, March 1997.
        [TSP]     Adams, C., Cain, P., Pinkas, D. and R. Zuccherato,
                  "Internet X.509 Public Key Infrastructure Time-Stamp
                  Protocol (TSP)", RFC 3161, August 2001.
        [CMS]     Housley, R., "Cryptographic Message Syntax (CMS)",
                  RFC 3852, July 2004.
        [MIME]    Borenstein, N., and N. Freed, "Multipurpose Internet Mail
                  Extensions (MIME) Part One: Format of Internet Message
                  Bodies", RFC 2045, November 1996.
        [ERS]     Gondrom, T., Brandner, R., and Pordesch, U., "Evidence
                  Record Syntax (ERS)", RFC 4998, August 2007.
     Author's Addresses
        Adriano Santoni
        Actalis S.p.A.
        Via Taramelli 26
        I-20124 Milano
        Phone: +39-02-68825.1
        Email: adriano.santoni@actalis.it
     Intellectual Property Statement
        The IETF takes no position regarding the validity or scope of any
        Intellectual Property Rights or other rights that might be claimed to
        pertain to the implementation or use of the technology described in
        this document or the extent to which any license under such rights
        might or might not be available; nor does it represent that it has
        made any independent effort to identify any such rights.  Information
        on the procedures with respect to rights in RFC documents can be
        found in BCP 78 and BCP 79.
     Santoni               Expires December 10, 2008                [Page 7]

     Internet-Draft             timestampeddata                    June 2008
        Copies of IPR disclosures made to the IETF Secretariat and any
        assurances of licenses to be made available, or the result of an
        attempt made to obtain a general license or permission for the use of
        such proprietary rights by implementers or users of this
        specification can be obtained from the IETF on-line IPR repository at
        The IETF invites any interested party to bring to its attention any
        copyrights, patents or patent applications, or other proprietary
        rights that may cover technology that may be required to implement
        this standard.  Please address the information to the IETF at
     Disclaimer of Validity
        This document and the information contained herein are provided on an
     Copyright Statement
        Copyright (C) The IETF Trust (2008).
        This document is subject to the rights, licenses and restrictions
        contained in BCP 78, and except as set forth therein, the authors
        retain all their rights.
        Funding for the RFC Editor function is currently provided by the
        Internet Society.
     Santoni               Expires December 10, 2008                [Page 8]