Internet DRAFT - draft-brandner-etal-ats
draft-brandner-etal-ats
INTERNET-DRAFT R. Brandner
<draft-brandner-etal-ats-00.txt> University of Heidelberg
Expiration date: 15.1.2004 Tobias Gondrom
IXOS Software AG
U. Pordesch
Fraunhofer Gesellschaft
M. Tielemann
DATEV eG
July 2003
Archive Time-Stamps Syntax (ATS)
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of [RFC2026].
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-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced or made obsolete 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
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract
This specification describes the syntax and processing of an Archive
Time-Stamps Element, designed for long-term non-repudiation of
existence of data, which particularly can be used for
conservation of evidence of signed data.
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 [RFC2119].
Table of Contents
1. Introduction..................................................2
1.1 Motivation................................................2
1.2 Requirements..............................................3
1.3 General Overview..........................................3
1.4 Terminology...............................................4
2. Archive Time-Stamps Element...................................5
2.1 Syntax....................................................5
2.2 Generation................................................6
2.3 Verification..............................................7
Brandner et al. [Page 1]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
3. Enhanced Time Stamp...........................................7
3.1 Syntax....................................................7
3.2 Generation................................................8
3.3 Verification..............................................9
4. Archive Time-Stamp Chain and Archive Time-Stamp Sequence......9
4.1 Syntax...................................................10
4.2 Generation...............................................10
4.3 Verification.............................................11
5. Encryption ..................................................12
5.1 Syntax...................................................12
5.2 Generation...............................................13
5.3 Verification.............................................13
6. ASN.1-Module.................................................14
7. Security Considerations......................................15
8. Intellectual Property Rights.................................16
References......................................................16
Authors' Addresses..............................................17
Appendix A - Archive Time-Stamps Element Attribute using CMS....18
Appendix B - Enhanced Time-Stamp Attribute for multiple signature
verification using CMS.............................20
1 Introduction
1.1 Motivation
In many application areas of electronic data exchange a non-
repudiation proof of existence of data has to be possible over long
periods of time. An important example are signed documents, which
sometimes have to be archived conclusively over 30 years or more.
During the archiving period hash algorithms and public key
algorithms or their parameters can get weak or certificates can
become invalid. To avoid that signatures lose their probative force
it has to be provable that the data already existed before such a
critical event.
This can be done by timely generating Archive Time-Stamps for these
data and by renewal of these Archive Time-Stamps during archiving
period.
It is necessary to standardize data formats and processing
procedures for such Archive Time-Stamps in order to be able to
verify and communicate data preserving evidence. A first approach
was made by IETF within [RFC3126], where an optional Archive Time-
Stamp Attribute was specified for integration in signatures
according to the Cryptographic Messages Syntax (CMS) [RFC3369].
Archive Time-Stamps Syntax (ATS) broadens and generalizes this
approach for data of any format and takes requirements of practical
use into account, especially handling a huge amount of data objects.
ATS specifies a syntax for Archive Time-Stamps Element, which
contains Enhanced Time-Stamps and some additional data. This Archive
Time-Stamps Element can be stored as an additional file to signed
Brandner et al. [Page 2]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
data (ATS as file format) or integrated in signed data (ATS as part
of another syntax specification).
ATS also specifies processes for generation and verification of
Archive Time-Stamps Element and as an appendix integration and use
in context of signed and enveloped messages according to CMS.
ATS does not specify a protocol for an archive service yet. Existing
and established archive protocols like SAP ArchiveLink can be
augmented to handle Archive Time-Stamping using ATS as an service.
1.2 Requirements
ATS was designed to fulfill the following requirements:
- Non-repudiation of existence of data must be conserved, even if
hash algorithms or public key algorithms get weak or validity of
certificates expires or certificates are revoked.
- ATS has to be low priced even for a huge amount of data objects
and possibly frequent renewal of time-stamps. The number of time-
stamps should be minimized even for a high quantity of
documents, e.g. stored in archive systems of business companies
or administration departments.
- In case of renewal of Archive-Time Stamps, access to the archived
data objects, which might be stored scattered on external and
write once media, should be avoided as far as possible.
- It should be possible to time-stamp groups of data objects
like a document file and a signature file together, so that they
get the same Archive Time-Stamps. Non-repudiation proof should
still be possible for each single data object separately.
- If it is necessary to delete individual data objects for reasons of
data or secret protection, this must not put at risk the
provability of other data objects.
- It should be possible to encrypt data before transfering to service
providers and generate Archive Time-Stamps to encrypted data. This
should be done in such a way, that these Archive Time-Stamps are a
non-repudiation proof for the unencrypted data as well.
1.3 General Overview
The basis of the ATS are Enhanced Time-Stamps, which refers not
only to a single data object as ordinary time-stamps do, but also to
many data objects. An Enhanced Time-Stamp can be derived from hash-
trees, first described by Merkle [Mer1980], combined with a time-
stamp. The leaves of the hash-tree are hash values of the data
objects. A time-stamp is requested only for the root hash of the
hash-tree. The deletion of any refered data objects does not
influence the provability of others. The hash-tree can be reduced to
a few little sets of hash values, necessary to prove existence of a
Brandner et al. [Page 3]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
single data object or a data object group. These sets of hash values
and the time-stamp yield the Enhanced Time-Stamp. In this context of
long-term archiving Enhanced Time-Stamp is called Archive Time-Stamp,
but there are other application areas for Enhanced Time-Stamps, e.g.
used for multiple signature verification (see Appendix B).
For the generation of the Initial Archive Time-Stamp the data objects
to be time-stamped have to be determined - depending of the context
of ATS use. E.G. this can be a file, a pair document file and
signature file as a data object group.
Before cryptographic algorithms used within the Archive Time-Stamp
get weak or time-stamp certificates get invalid Archive Time-Stamp
have to be renewed by generating a new Archive Time-Stamp. ATS
distinguishes two ways for renewal of an Archive Time-Stamp, the
simple Time-Stamp Renewal and the complex Hash-Tree Renewal.
In the case of Time-Stamp Renewal the time-stamp of an Archive Time-
Stamp has to be hashed and time-stamped by a new Archive Time-Stamp.
It is not necessary to access the initially archived data objects
itself. This simple form of renewal is sufficient, if only the hash
algorithm or the public key-algorithm of the time-stamp of an Archive
Time-Stamp is going to lose its security suitability or the time-
stamp certificates get invalid. It is very effective in particular,
if Archive Time-Stamping is done by an archiving system or service,
which implements a central management of Archive Time-Stamps.
Time-Stamp renewal is not sufficient if the hash algorithm of the
hash-tree of an Archive Time-Stamp becomes insecure. In the case of
Hash-Tree Renewal not only the Time-Stamps but also the complete
Archive Time-Stamps and the referred data objects have to be hashed
and time-stamped again by a new Archive Time-Stamp. It is necessary
to get the referred data objects and other Archive Time-Stamps.
1.4 Terminology
Long-term non-repudiation of existence of data means the ability to
prove existence of data over an undetermined period of time.
A Data Object is an unit of data, provided for (archive) time-
stamping.
A Data object group is a multitude of data objects, which for some
reason belong together. E.g. a document file and a signature file
could be a data object group, which represent signed data.
A Time-stamp is a signed confirmation of a Time Stamping Authority
(TSA) that a data object existed before a certain time. One syntax
specification of time-stamps used here is specified in [RFC3161].
Brandner et al. [Page 4]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
An Enhanced Time-Stamp is a time-stamp and lists of hash values,
which allows to verify the existence of several data objects at a
certain time.
An Archive Time-Stamp is an Enhanced Time-Stamp used for long-term
non-repudiation of data.
An Archive Time-Stamp Chain is a timely ordered sequence of
Enhanced Time-Stamps, where each Enhanced Time-Stamp preserves non-
repudiation of the Enhanced Time-Stamp before, although if it got
invalid and until itself gets invalid. The process of generating such
an Archive Time-Stamp Chain is called Time-Stamp Renewal.
An Archive Time-Stamp Sequence is a sequence of Archive Time-
Stamp Chains, where each Archive Time-Stamp Chain preserves non-
repudiation of Archive Time-Stamp Chains before, although the hash
algorithm used within Enhanced Time-Stamps hash-tree got weak. Non-
repudiation is preserved until the last Enhanced Time-Stamp of the
last chain gets invalid. The process of generating such an Archive
Time-Stamp Sequence is called Hash-Tree Renewal.
Archive Time-Stamps Element are all Archive Time-Stamps and other
data, which are to be used to prove the existence of a data object or
a data object group.
An Enhanced Time-Stamp relates to a data object, if the hash value
of this data object is part of the first hash value list of the
Enhanced Time-Stamp. An Enhanced Time-Stamp relates to a data object
group, if it relates to every data object of the group and no other
data objects. An Archive Time-Stamp Chain relates to a data object /
data object group, if its first Enhanced Time-Stamp relates to this
data object/data object group. An Archive Time-Stamp Sequence relates
to a data object / data object group, if its first Archive Time-Stamp
Chain relates to this data object/data object group.
2 Archive Time-Stamps Element
An Archive Time-Stamps Element is a unit of data, which is to be used
to prove the existence of a data object or a data object group at a
certain time. The Archive Time-Stamps Element contains Enhanced Time-
Stamps, generated during a long period of archiving and some
necessary or useful data. It is possible to store this Archive Time-
Stamps Element separately from the archived data or to integrate it
into the data itself. For data types signed data and enveloped data
of the CMS integration is specified in Appendix A.
2.1 Syntax
Archive Time-Stamps Element has the following ASN.1 Syntax:
Brandner et al. [Page 5]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
ArchiveTimeStampsElement ::= SEQUENCE {
version INTEGER { v1(1) },
usefulinformation [1] OCTET STRING OPTIONAL,
encryption [2] EncryptionMethod OPTIONAL,
archiveTimeStampSequence ArchiveTimeStampSequence}
The fields have the following meanings:
version is the syntax version number, for compatibility
with future revisions of this specification.
ArchiveTimeStampSequence is a sequence of ArchiveTimeStampChain,
described in chapter 4.
usefulinformation is an optional field, which can be used by an
application to store additional useful data, like names of files,
which contain the documents.
If the data objects were encrypted before generating Archive Time-
stamps but a non-repudiation proof is needed for unencrypted data
objects, the optional field encryption contains data, necessary to
re-encrypt data objects. If left out, it means that data
objects are not encrypted. For further details see chapter 5.
2.2 Generation
The generation of an ArchiveTimeStampsElement overall can be
described as follows:
1. Select data object or a group of data objects, which are
documents or essential parts of it - depending on
application.
2. Create Initial Archive Time-Stamp (see Enhanced Time-Stamp chapter
3).
3. Renew this Archive Time-Stamp if necessary, by Time-Stamp Renewal
or Hash-Tree Renewal (see chapter 4).
Process of generation depends in details on the question, whether
Archive Time-Stamps are generated, stored and managed by a
centralized instance or not. In case of central management it is
possible to collect data objects from many documents, to build hash-
trees, store them and reduce them later. In case of local generation
it might be easier to generate a simple Archive Time-Stamp without
building hash-trees and reducing them. Details of that generation
procedure are not to be discussed in this specification.
Brandner et al. [Page 6]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
2.3 Verification
The Verification of an ArchiveTimeStampsElement overall can be
described as follows:
1. Select data object or a group of data objects, which where
originally Archive Time-Stamped. Verify that this selection
is adequate (out of scope of this specification).
2. Re-encrypt data object/data object group, if encryption field
is used (details see chapter 5)
3. Verify Archive Time-Stamp Sequence (details in chapter 3 and 4).
3 Enhanced Time-Stamp
An Enhanced Time-Stamp is a time-stamp and some lists of hash values,
which allow to verify the existence of a data object or a data object
group at a certain time. The lists of hash values can be generated by
reduction of an ordered Merkle hash-tree [Mer1980]. The leaves of
this hash-tree are the hash values of the data objects to be time-
stamped. Every inner node of the tree contains one hash value, which
is generated by hashing the concatenation of the children nodes. The
root hash value, which represents unambiguously all data objects, is
time-stamped.
3.1 Syntax
An Enhanced Time-Stamp has the following ASN.1 Syntax:
EnhancedTimeStamp ::= SEQUENCE {
digestAlgorithm AlgorithmIdentifier OPTIONAL,
reducedHashtree [0] SEQUENCE OF {SEQUENCE OF OCTET STRING}
OPTIONAL,
timeStamp ContentInfo}
The fields of type EnhancedTimeStamp have the following meaning:
digestAlgorithm identifies the digest algorithm and any associated
parameters used within the reduced hash-tree. If the optional field
digestAlgorithm is not existent the digest algorithm of the time-
stamp must be used. If time-stamps according to [RFC3161] are used,
the content of this field must be identically to hashAlgorithm
of messageImprint-Field of timeStampToken.
reducedHashtree contains lists of hash values, which could be
derived from a hash-tree by reduction to nodes necessary for
verification of a single data object. Hash values are represented as
octet strings. If the optional field reducedHashtree is not existent
the Enhanced Time-Stamp is equal to the ordinary time-stamp.
Brandner et al. [Page 7]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
timeStamp should contain the time-stamp which is defined as
timeStampToken in [RFC 3161]. Other types of time-stamp might be
used, if they contain time data, time-stamped data and a signature
from the TSA of these data.
3.2 Generation
The lists of hash values of an Enhanced Time-Stamp can be generated
by the way of building and reducing a Merkle hash-tree [Mer1980].
Such a hash-tree can be built as follows:
1. Collect data objects to be time-stamped and group them.
2. Choose secure hash algorithm H and generate hash values for the
data objects, which will be the leaves of the hash-tree.
3. If there is more than one hash value, then put together groups of
hash values and arrange in binary ascending order. Concatenate
these values and generate hash values, which are inner nodes of
this tree. Repeat this step until there is only one hash value,
which is the root node of the hash-tree.
4. Order a time-stamp for this root hash value. The hash algorithm in
the time-stamp request must the same as the hash algorithm of the
hash-tree.
The hash-tree can be reduced to lists of hash values, necessary to
have a proof of existence for a single data object:
1. Generate hash value h of the data object, using hash algorithm H
of the hash-tree.
2. Select all hash values, which have the same father node as h.
Generate the first list of hash values by arranging in binary
ascending order. Repeat this step for the father node of these
hash until you reach root hash. The father nodes are not saved in
the hash lists - they are computable.
3. Generate a reduced hash-tree by building the sequence of these
hash value lists. Then add the time-stamp and the hash algorithm
to get an Enhanced Time-Stamp.
Degenerated hash-trees, where father node exist, which only have one
son node should be avoided, because this causes empty lists, when the
hash-tree is reduced.
But note, that there are no restrictions to the quantity of hash
value lists and of there length. Also note, that it is profitable but
not required to build hash-trees and reduce them. An Enhanced Time-
Stamp may consist only of one list of hash-values and a time-stamp or
in extreme only a time-stamp with no hash value lists.
Brandner et al. [Page 8]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
The certificates, CRLS or OCSP-Responses to verify the time-stamp
should be stored in the time-stamp itself. A time-stamp according to
[RFC 3161] is a CMS-object which certificates can be stored in the
certificates field and CRLs can be stored in the crls field of signed
data. OCSP responses can be stored as unsigned attribute [RFC3126].
3.3 Verification
An Enhanced Time-Stamp shall prove that a data object existed at a
certain time, given by time-stamp. This can be verified as follows:
1. Calculate hash value h of the data object with hash algorithm H
given in field digestAlgorithm of the Enhanced Time-Stamp.
2. Search hash value h in the first list of reducedHashtree. If
not present, terminate verification process with negative result.
3. Concatenate hash values of the actual list of hash values and
calculate the hash value h with algorithm H. This hash value h must
become member of the next higher list of hash values. Continue step 3
until a root hash value is calculated.
4. Check time-stamp. In case of time-stamp according [RFC 3161] the root hash
value must correspond to hashedMessage and digestAlgorithm must
correspond to hashAlgorithm field, both in messageImprint field of
timeStampToken.
If the proof is necessary for more than one data object steps 1 and 2
have to be done for all data objects to be proved. If an additional
proof is necessary that the Enhanced Time-Stamp relates to a data
object group - e.g. a document and all its signatures - it can be
verified additionally, that there are no other hash values in first
hash value list as hash values of the given data objects.
4 Archive Time-Stamp Chain and Archive Time-Stamp Sequence
Enhanced Time-Stamps are used for archive time-stamping. An Archive
Time-Stamp proves the existence of single data objects or data object
group at a certain time. But it has to be considered that this
first Initial Archive Time-Stamp can get invalid, if hash algorithms
or public key algorithms used in its hash-tree or time-stamp get weak
or if validity period of time-stamp certificates expires or if time-
stamp certificates were revoked.
If this happened, the existence of Archive Time-Stamp or archive
time-stamped data has to be proved, which can be done by new Archive
Time-Stamps. Depending on whether time-stamp gets invalid or hash
algorithm of hash-tree gets weak, two kinds of Archive Time-Stamp
renewal are distinguished:
- Time-Stamp Renewal: A new Archive Time-Stamp is generated, which
refers to the time-stamp of the old one. One or more Archive
Time-Stamps generated by Time-Stamp Renewal yield an
Archive Time-Stamp Chain for a data object or data object group.
Brandner et al. [Page 9]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
- Hash-Tree Renewal: A new Archive Time-Stamp is generated, which
refers to all old Archive Time-Stamps and the data objects
initially archive time-stamped. This opens a new
Archive Time-Stamp Chain. One or more Archive Time-Stamp Chains for
a data object or data object group yield an Archive Time-Stamp
Sequence.
4.1 Syntax
ArchiveTimeStampChain and ArchiveTimeStampSequence have the
following ASN.1 Syntax:
ArchiveTimeStampChain ::= SEQUENCE OF EnhancedTimeStamp
ArchiveTimeStampSequence ::= SEQUENCE OF ArchiveTimeStampChain
ArchiveTimeStampChain and ArchiveTimeStampSequence must be
ordered ascending by time of time-stamp. Within an
ArchiveTimeStampChain all EnhancedTimestamps must use the same
Hash-Algorithm.
4.2 Generation
A first Initial Archive Time-Stamp relates to a data object or a data
object group. It depends on the application, which data objects have
to be time-stamped and when Initial Archive Time-Stamp must be
generated.
Before cryptographic algorithms used within the Archive Time-Stamp
get weak or time-stamp certificates get invalid, Archive Time-Stamp
have to be renewed by generating a new Enhanced Time-Stamp.
In the case of Time-Stamp Renewal the content of the timeStamp field
of the old Archive Time-Stamp has to be hashed and time-stamped
by a new Archive Time-Stamp. The new Archive Time-Stamp must use
the same hash algorithm within its hash-tree as the old one,
specified in the field hash algorithm of the Enhanced Time-Stamp or
within the time-stamp itself.
In the case of Hash-Tree Renewal not only the Archive Time-Stamp
but also the data objects referred by the initial Archive Time-Stamp
have to be regarded, hashed and time-stamped again:
1. Select secure hash algorithm H.
2. Select data objects d(i) refered by initial Archive Time-Stamp
(which are still present and not deleted). Generate hash values
h(i) = H((d(i)) of them using H.
3. Concatenate Archive Time-Stamp Chains before and generate hash
value ha of this concatenation using H.
Brandner et al. [Page 10]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
4. Concatenate each h(i) with ha and generate hash values
h(i)' = H (h(i))+ ha).
5. Build new Archive Time Stamp having each h(i)' (and no other
hash values in first hash value list)
6. Open new ArchiveTimeStampChain and add new Archive Time-Stamp.
If the Time-Stamp of an Archive Time-Stamp gets invalid, the simple
time-stamp renewal should be done. Only if the hash algorithm used
within the hash-tree gets weak, Hash-Tree Renewal must be done.
In case of centralized Archive Time-Stamping, Archive Time-Stamps
might be generated a long-time before other Archive Time-Stamps get
invalid to be on the secure side. Nevertheless ArchiveTimeStamps,
which are not necessary for verification, should not be added to
ArchiveTimeStampChain or ArchiveTimeStampSequence.
4.3 Verification
To get an non-repudiation proof that a data object existed at acertain
time, the Archive Time-Stamp Chains and their relations to
each other and to the data objects have to be proved:
1. Verify that the first Archive Time-Stamp of the first
ArchiveTimestampChain (the Initial Archive Time-Stamp) contains
the hash value of the data object.
2. Verify each ArchiveTimestampChain. The first hash value list of
each ArchiveTimeStamp must contain the hash value of the time-
stamp of the Archive Time-Stamp before. The Archive Time-Stamp has
to be valid at the time of the following Archive Time-Stamp. All
Archive Time-Stamps within the chain must use the same hash
algorithm and this algorithm must be secure at the time of the
first Archive Time-Stamp of the following ArchiveTimeStampChain.
3. Verify that the first Archive Time-Stamp of all other
ArchiveTimeStampChains contains a hash value of the concatenation
of hash values of all older ArchiveTimeStampChain and a hash value
of the data object. Verify that this Archive Time-Stamp was
generated before the last Archive Time-Stamp of the
ArchiveTimeStampchain got invalid.
In order to complete non-repudiation-proof for the data objects,
the last Archive Time-Stamp has to be valid.
If the proof is necessary for more than one data object steps 1 and 3
have to be done for all these data objects. If an additional proof is
necessary that the Archive Time-Stamp Sequence relates to a data
object group - e.g. a document and all its signatures - it can be
verified additionally, that each first Enhanced Time-Stamp of each
ArchiveTimeStampChain does not contain other hash values in his first
hash value list.
Brandner et al. [Page 11]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
5 Encryption
If service providers take care of archiving data and generating
Archive Time-Stamps, it might be desirable or required to encrypt
data before transfer. In this case Archive Service Provider
generate time-stamps for encrypted data objects not for the unencrypted
ones. Unfortunately this can affect proof of existence of the unencrypted
data. It could be possible to choose an algorithm or a key for
decryption which is not the algorithm or key used for encryption.
If this case, Archive Time-Stamps would not be a non-
repudiation proof for the unencrypted data. So special care has to
be taken into account using encryption in context of Archive Time-
Stamping: It must be provable, that encrypted data objects
unambiguously represent unencrypted data objects, which are archive
time-stamped. All data necessary to prove this representation must
be part of the archive time-stamped data. Encryption field is a
container for data, which are necessary for this to prove and to
verify that Archive time-Stamps which generated for encrypted data
objects relate to given unencrypted data.
5.1 Syntax
Encryption-Field in ArchiveTimeStampsDocument has following Syntax:
EncryptionMethod ::= SEQUENCE {
encryptionAlgorithm OBJECT IDENTIFIER,
encryptionParameters ANY DEFINED BY encryptionAlgorithm OPTIONAL}
encryptionMethod refers to the algorithm used to encrypt data objects
if used before Archive Time-Stamping.
encryptionParameters contains specific parameters to the encryption
algorithm and necessary for verification. encryptionMethod is open
for encryption methods, which fulfill the above mentioned
requirements. Instead of using a traditional encryption method it
might be reasonable to define and use a surjective one-way-function,
if the service provider manages Archive Time-Stamping, but not
document management.
ATS specifies one EncryptionMethod on the basis of enveloped data
of CMS-Standard using key transport technique with RSA public
key encryption:
id-EncryptionCMS_encryptedmessage ::= {id-ATS-1}
CMS_encryption_params::= SEQUENCE {
encryptionCover ContentInfo,
encryptionKey OCTET STRING,
additional_data CHOICE {
[0] privateKey BIT STRING,
[1] randomValue BIT STRING}}
Brandner et al. [Page 12]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
encryptionCover is a CMS-message of type enveloped message, without
encrypted content (external content).
encryptionKey is the clear text of content-encryption Key, used to
encrypt the content (data objects).
Additional data are necessary to verify, that encryptionKey, which is
not archive time-stamped but added later to Archive Time-Stamp Element
in fact was used, to encrypt the data objects before Archive Time-
Stamps were generated. Two alternatives are given to prove this:
- privateKey, the private key corresponding to the public key given
by the recipientInfo field and usable to decrypt the encrypted
document encryption key and to compare the result with the
encryptionKey.
- randomValue, the random which was used to encrypt the
content-encryption key, which makes it possible to re-encrypt the
encryptionKey and to compare the result with encryptedKey of
recipient info of Encryption-Cover.
5.2 Generation
If encryption method is used, it has to be applied to the data object
or every data object of a data object group before generating Archive
Time-Stamps.
In case of CMS-encryption a CMS-encrypted message has to be generated
using key transport technique as described in [RFC3369] and RSA
encryption algorithm. Encrypted content must be part of the message.
At least one certificate must be added, which contains the
public key used to encrypt the encryption key. Private key or
randomValue used to encrypt the content encryption key has to be
stored for verification in future. Later it has to be added to
Archive Time-Stamps Element, if a prove is necessary that this
element in fact refers to unencrypted data.
5.3 Verification
If the EncryptionMethod field is used, verification of Archive-Time-
Stamps requires two additional steps:
1. Apply encryption method to reconstruct the encrypted data objects.
2. Check whether the encryption key was applied before Archive Time-
Stamping.
In case of CMS-Encryption this means:
Time-stamped data objects can be reconstructed by encrypting
Brandner et al. [Page 13]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
selected data objects with encryptionKey and inserting result in
Encryption-Cover. In order to get the identical Bitstream, which originally
was archive time-stamped encoding of encrypted message must not be
changed, with exception of adapting length fields.
To verify that the encryptionKey is the right one, it has to
be verified that the field encrypted key contains the encrypted
content encryption key. This can be done in two ways:
- Re-encrypting: Additionally given encryptionKey is re-encrypted
with the public key of recipient Info, layed down in the
certificate and the additionally given randomValue. The result
must be compared with encrypted key.
- Decrypting: Additionally given privateKey is used to decrypt
encryptedKey. The result has to be compared with encryptionKey.
6 ASN.1-Module
ATS
-- {iso(1) identified-organization(3) dod(6) internet(1)
-- security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-ats(TBD) }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL --
IMPORTS
TimeStampToken
FROM
PKIXTSP {iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-tsp(13) }
ContentInfo
FROM
CryptographicMessageSyntax {iso(1) member-body(2) us(840)
rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1)}
EnhancedTimeStamp ::= SEQUENCE {
digestAlgorithm AlgorithmIdentifier,
reducedHashtree [0] SEQUENCE OF {SEQUENCE OF OCTET STRING }
OPTIONAL,
timeStamp ContentInfo}
ArchiveTimeStampChain::= SEQUENCE OF EnhancedTimeStamp
ArchiveTimeStampSequence::= SEQUENCE OF ArchiveTimeStampChain
Brandner et al. [Page 14]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
EncryptionMethod ::= SEQUENCE {
encryptionAlgorithm OBJECT IDENTIFIER,
encryptionParameters::= ANY DEFINED BY encryptionAlgorithm OPTIONAL}
CMS_encryption_params::= SEQUENCE {
encryptionCover ContentInfo,
encryptionKey OCTET STRING
additional_data CHOICE {
[0] privateKey BIT STRING,
[1] randomValue BIT STRING}}
id-EncryptionCMS_encryptedmessage ::= {id-ATS 1}
ArchiveTimeStampsElement::= SEQUENCE {
version INTEGER,
usefulinformation [1] OCTET STRING OPTIONAL,
encryption [2] EncryptionMethod OPTIONAL,
archiveTimeStampSequence ArchiveTimeStampSequence }
END
7 Security Considerations
Secure Algorithms
Cryptographic algorithms and parameters which are used within
Archive Time-Stamps must be secure at the time of generation. This
concerns the hash algorithm used in the hash lists of Enhanced Time-
Stamp as well as hash algorithms and public key algorithms of the
time-stamps. Publications regarding security suitability of
cryptographic algorithms ([ETSI2003]) have to be considered by
verifying components. A generic solution for automatic
interpretation of security suitability policies in electronic form
is desirable but not subject of this specification.
Redundancy
Algorithms can loose there security suitability untimely or Time
Stamping Authorities may be considered as untrustworthy retrospectively.
Therefore Archive Time-Stamps can lose their probative force. If
Archive Time-Stamps are managed centrally several redundant
ArchiveTimeStampSequences can be generated using different hash
algorithms and different Time Stamping Authorities.
Secure Time-Stamps
Archive Time-Stamping is as secure as normal time stamping. Security
requirements for Time Stamping Authorities stated in security policies
have to be met. Renewed Archive Time-Stamps should have the same or
higher quality as the Initial Archive Time-Stamp. Archive Time-Stamps
used for signature renewal of signed data, should have the same or
higher quality than maximum quality of the signatures.
Brandner et al. [Page 15]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
Secure Encryption
For non-repudiation proof it does not matter, whether encryption has
been broken or not. Nevertheless, users should keep secret their
private keys and randoms used for encryption and disclose them only
if needed (e.g. in a lawsuit to a judge or expert). They should use
encryption algorithms and parameters which are prospected to be
unbreakable as long as confidentiality of the archived data is
important.
8 Intellectual Property Rights
The IETF takes no position regarding the validity or scope of any
intellectual property 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; neither does it represent that it
has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in [RFC2028]. Copies of
claims of rights made available for publication 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 Secretariat.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights, which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive
Director.
ATS uses time-stamps and the Time-Stamp Protocol [RFC3161] might be
used to get necessary time-stamps. ATS does not define a new kind of
trusted time-stamping or non-repudiation service. Nevertheless,
especially if a service is created, which uses ATS, patents regarding
time-stamping services might be relevant and have to be considered
(see [RFC3161]).
There are no other patents known, which affect this specification.
Nevertheless implementors of this specification SHOULD perform
their own patent search and determine whether or not any encumbrances
exist on their implementation. Users of this specification SHOULD
perform their own patent search and determine whether or not any
encumbrances exist on the use of this specification.
References
[ETS2003] European Telecommunication Standards Institute (ETSI),
Electronic Signatures and Infrastructures (ESI);
Brandner et al. [Page 16]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
Algorithms and Parameters for Secure Electronic Signatures
ETSI SR 002 176 V1.1.1 (2003-03).
[Mer1980] Merkle, R. Protocols for Public Key Cryptosystems,
Proceedings of the 1980 IEEE Symposium on Security and
Privacy (Oakland, CA, USA, April 1980): pages 122-134.
[RFC2026] Bradner, S. The Internet Standards Process -- Revision 3,
RFC 2026, 1996.
[RFC2119] Bradner, S. Key Words for Use in RFCs to Indicate
Requirement Levels", RFC 2119, 1997.
[RFC3126] Adams, C. Pinkas, D. Ross, J. Pope, N. Electronic Signature
Formats for long term electronic signatures, RFC 3126,
2001.
[RFC3161] Cain, P. Pinkas, D. Zuccherato, R. Time-Stamp Protocol
(TSP), RFC 3161, 2001.
[RFC3369] Housley, R., Cryptographic Message Syntax (CMS),RFC 3369,
2002.
Authors' Addresses
Ralf Brandner
University of Heidelberg
Department of Medical Informatics
Im Neuenheimer Feld 400
D-69120 Heidelberg, Germany
E-Mail: ralf_brandner@med.uni-heideberg.de
Tobias Gondrom
IXOS Software AG
Technopark Neukeferloh
Bretonischer Ring 12
D-85630 Grasbrunn/M’nchen
E-Mail: tobias.gondrom@ixos.de
Ulrich Pordesch
Fraunhofer Gesellschaft
Institute Secure Telecooperation
Dolivostrasse 15
D-64293 Darmstadt, Germany
E-Mail: ulrich.pordesch@sit.fraunhofer.de
Michael Tielemann
DATEV eG
Paumgartnerstraže 6-14
D-90329 N’rnberg, Germany
E-Mail: michael.tielemann@datev.de
Brandner et al. [Page 17]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
Appendix A - Archive Time-Stamps Element Attribute using CMS
An Archive Time-Stamps Element can be added to signed data or
enveloped data in order to transfer them in a conclusive way.
For CMS a sensible place to store such an Archive Time-Stamps Element
is an unsigned attribute (signed message) or an unprotected attribute
(enveloped message).
The Archive Time-Stamps Element Attribute also contains information
about the selection method which was used for the generation of the
data objects to be time-stamped. In the case of CMS, two selection
methods can be distinguished:
1. The CMS Object as a whole including contentInfo is selected as
data object and archive time-stamped. This means that a hash value
of the CMS object must be located in the first list of hash values
of Enhanced Time-Stamps.
2. The CMS Object and the signed or encrypted content are included in
the Archive Time-Stamp as separated objects. In this case the
hash value of the CMS Object as well as the hash value of the
content have to be stored in the first list of hash values as a
group of data objects.
However, other selection methods could also be applied like for
instance in [RFC3126].
In the case of the two selection methods defined above, the Archive
Time-Stamps Element Attribute has to be added to the first signature
of the CMS Object of signed data. Depending on the selection
method, the following Object Identifier is defined for the Archive
Time-Stamp Element Attribute:
Internal signature:
id-ArchiveTimeStampElement ::= {id-ATS-Attribute 1}
External signature:
id-ArchiveTimeStampElement ::= {id-ATS-Attribute 2}
The attributes should only occur once. If they appear several times,
they have to be stored within the first signature in a chronological
order.
If the CMS object doesn't have the Archive Time-Stamps Element
Attributes - which indicates that the Archive Time-Stamps Element has
been provided externally - the archive time-stamped data object has
to be generated over the complete CMS object within the existing
coding.
Brandner et al. [Page 18]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
In case of verification, if only one Archive Time-Stamps Element
Attribute is contained in the CMS object, the hash value must be
generated over the CMS object without the one Archive Time-Stamps
Element Attribute. This means that the attribute has to be removed
before verification. The length of fields containing tags has to be
adapted. Apart from that, the existing coding must not be modified.
If several Archive Time-Stamps occur, the data object has to be
generated as follows:
- During verification of the first (in a chronological order) Archive
Time-Stamps Element Attribute, all Archive Time-Stamps Element
Attributes have to be removed in order to generate the data object.
- During verification of the nth one Archive Time-Stamps Element
Attribute, the first n-1 attributes should remain within the CMS
object.
- The verification of the nth one Archive Time-Stamps Element
Attribute must result in a point of time when the document must
have existed with the first n attributes. The verification of the
n+1th attribute must prove that this requirement has been met.
Brandner et al. [Page 19]
DRAFT Archive Time-Stamps Syntax (ATS) July 2003
Appendix B - Enhanced Time Stamp Attribute for multiple signature
verification using CMS
Apart from the use in Archive Time-Stamps, Enhanced Time-Stamps can
also be used for securing the verification time of signed data with
several signatures. A single Enhanced Time-Stamp offers the
possibility to prove that the certificates on which the signatures
rely were not revoked at the moment of verification. It is not
necessary to request several ordinary time-stamps, which can cause a
huge amount of expenses, the same Enhanced Time-Stamp, added to all
signatures is sufficient.
For CMS a sensible place to store such an Enhanced Time-Stamp is an
unsigned attribute. In this case the Enhanced Time-Stamp is added to
each signature as an unsigned attribute.
The following OBJECT INDENTIFIER identifies the verification time-
stamp attribute:
OBJECT IDENTIFIER ::= {id-ATS-Attribute 3}
The attribute value of the verification time stamp has the ASN.1 type
VerificationTimeStampToken:
VerificationTimeStampToken ::= EnhancedTimeStamp
The hash values of the SignatureValue fields in the SignerInfo
structures are stored in the first hash value list of the reduced
hash-tree.
Expiration date of this draft: 15.1.2004
Brandner et al. [Page 20]