draft-ietf-ltans-ers-02.txt R. Brandner
Long-term Archive And Notary InterComponentWare AG
Services (LTANS) Ulrich Pordesch
Internet-Draft Fraunhofer Gesellschaft
Expires: October, 2005 April 7, 2005
Evidence Record Syntax (ERS)
Status of this Memo
This document is an Internet-Draft and is subject to all provisions
of section 3 of RFC 3667. 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 become aware will be disclosed, in accordance with
RFC 3668.
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 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
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 (2005). 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.
Abstract
In many scenarios, users need to be able to ensure and prove the
existence and integrity of data, especially digitally signed data, in
a common and reproducible way over a long and possibly undetermined
period of time. This document specifies the syntax and processing of
an Evidence Record, designed for long-term non-repudiation of
existence of data, which particularly can be used for conservation of
evidence of digitally 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].
Brandner / Pordesch [Page 1]
DRAFT Evidence Record Syntax (ERS) April 2005
Table of Contents
1. Introduction..................................................2
1.1 Motivation................................................2
1.3 General Overview and Requirements.........................2
1.4 Terminology...............................................4
2. Evidence Record...............................................5
2.1 Syntax....................................................6
2.2 Generation................................................7
2.3 Verification..............................................7
3. Archive Time-Stamp............................................7
3.1 Syntax....................................................8
3.2 Generation................................................8
3.3 Verification.............................................11
4. Archive Time-Stamp Chain and Archive Time-Stamp Sequence.....11
4.1 Syntax...................................................12
4.2 Generation...............................................12
4.3 Verification.............................................15
5. Encryption ..................................................15
5.1 Syntax...................................................16
5.2 Generation...............................................17
5.3 Verification.............................................18
6. ASN.1-Module.................................................18
7. Security Considerations......................................20
8. References...................................................21
8.1 Normative References.....................................21
8.2 Informative Referenences.................................21
Authors' Addresses..............................................21
Appendix A - Archive Time-Stamps Element Attribute using CMS....22
Intellectual Property and Copyright Statements..................23
1 Introduction
1.1 Motivation
In many application areas of electronic data exchange a
non-repudiation proof of existence of digitally data has to be
possible over long periods of time. An important example are
digitally signed data, 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 become
weak or certificates can become invalid. To avoid that digitally
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 Time-Stamps for these data and by the
renewal of these Time-Stamps during the archival period.
It is necessary to standardize data formats and processing
procedures for such Time-Stamps in order to be able to verify and
communicate archived data preserving evidence. A first approach was
Brandner / Pordesch [Page 2]
DRAFT Evidence Record Syntax (ERS) April 2005
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].
Evidence Record Syntax (ERS) broadens and generalizes this approach
for data of any format and takes Long-term archive service
requirements [REQ2004] into account, in particular, the handling of
huge numbers of data objects. ERS specifies a syntax for an Evidence
Record, which contains Archive Time-Stamps and some additional data.
This Evidence Record can be stored as an additional file to signed
data (EV as file format) or integrated in signed data (EV as part
of another syntax specification). EVS also specifies processes for
generation and verification of Evidence Records and as an appendix
integration and use in context of signed and enveloped messages
according to CMS. EVS does not specify a protocol, instead, this is
done in a complementary LTANS specification.
1.2 General Overview and Requirements
EVS meets requirements for data structures set forth in [REQ2004].
The basis of the ETS are Archive Time-Stamps, which can refer to a
single data object (same as ordinary time-stamps) or to a group of
data objects. An Archive 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 referred 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
single data object or a data object group. These sets of hash values
and the time-stamp yield the Archive Time-Stamp.
For the generation of the Initial Archive Time-Stamp the data objects
to be time-stamped have to be determined - depending on the context
of ERS use, e.g. this could be a file, or a data object group
consisting of multiple files, such as a document and its associated
digital signature.
Before cryptographic algorithms used within the Archive Time-Stamp
become weak or time-stamp certificates become invalid, Archive
Time-Stamp have to be renewed by generating a new Archive Time-Stamp.
ERS 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
Brandner / Pordesch [Page 3]
DRAFT Evidence Record Syntax (ERS) April 2005
the time-stamp certificates get invalid. This is very efficient 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 archived 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
Archived data object: Data unit that is archived and has to be
preserved for a long time by the Long-term Archive Service.
Archived data object group: A multitude of data objects, which for
some reason belong together. E.g. a document file and a signature
file could be a archived data object group, which represent signed
data.
Archive 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.
Evidence: Information that may be used to resolve a dispute about
various aspects of authenticity of archived data objects.
Evidence record: Collection of evidence compiled for one or more
given archived data objects over time. An evidence record include
all Archive Time-Stamps and additional verification data, like
certificates, revocation information, trust anchors, policy details,
role information, etc.
Reduce hash-tree: The process of reducing a Merkle hash-tree
[MER1980] to a list of lists of hash values. This is the basis of
storing the evidence for a single data object.
Time-Stamp: A signed confirmation generated by a Time Stamping
Authority (TSA) that a data item existed at a certain time.
[RFC3161] specifies a good structure for time-stamps and a protocol
for communicating with a Time-stamp Authority (TSA).
Trusted Archiving: A process that includes storing of data objects
for long periods of time preserving its integrity, periodic
generation of time-stamps and collection of evidence in support of
long-term preservation of data integrity.
Trusted archive authority (TAA): A service responsible for
preserving data for long periods of time, including generation and
collection of evidence, storage of archived data objects and
Brandner / Pordesch [Page 4]
DRAFT Evidence Record Syntax (ERS) April 2005
evidence, etc. A.K.A. Long-term archive service.
Archive Time-Stamp Chain: Is a time-ordered sequence of Archive
Time-Stamps, where each Archive Time-Stamp preserves non-repudiation
of the previous Archive Time-Stamp, even after the previous Archive
Time-Stamp becomes invalid. Overall non-repudiation is maintained
until the new Archive Time-Stamp itself becomes invalid. The process
of generating such an Archive Time-Stamp Chain is called Time-Stamp
Renewal.
Archive Time-Stamp Sequence: Is a sequence of Archive Time-Stamp
Chains, where each Archive Time-Stamp Chain preserves non-repudiation
of the previous Archive Time-Stamp Chains, even after the hash
algorithm used within the previous Archive Time-Stamps hash-tree
became weak. Non-repudiation is preserved until the last Archive
Time-Stamp of the last chain becomes invalid. The process of
generating such an Archive Time-Stamp Sequence is called Hash-Tree
Renewal.
An Archive 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 Archive
Time-Stamp. An Archive 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 Archive 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 Evidence Record
An Evidence Record is a unit of data, which is to be used to prove
the existence of an archived data object or an archived data object
group at a certain time. The Evidence Record contains Archive
Time-Stamps, generated during a long period of archiving and possibly
useful data for validation. It is possible to store this Evidence
Record separately from the archived data objects 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.
Brandner / Pordesch [Page 5]
DRAFT Evidence Record Syntax (ERS) April 2005
2.1 Syntax
Evidence Record has the following ASN.1 Syntax:
EvidenceRecord ::= SEQUENCE {
version INTEGER { v1(1) },
digestAlgorithms SEQUENCE OF AlgorithmIdentifier,
cryptoInfos [0] CryptoInfos OPTIONAL,
encryption [1] EncryptionMethod OPTIONAL,
archiveTimeStampSequence ArchiveTimeStampSequence}
CryptoInfos ::= SEQUENCE SIZE (1..MAX) OF CryptoInfo
CryptoInfo ::= SEQUENCE
{
cryptoInfoType OBJECT IDENTIFIER
cryptoInfoValue ANY DEFINED BY cryptoInfoType
}
The fields have the following meanings:
version is the syntax version number, for compatibility with future
revisions of this specification.
digestAlgorithms is a sequence of all the hash algorithms used to
hash the data object over the archival period.
cryptoInfos allows the storage of data useful in the validation of
the archiveTimeStampSequence. This could include possible
TrustAnchors, certificates, revocation information or the current
definition of the suitability of cryptographic algorithms, past and
present (e.g. RSA 768bit valid until 1998, RSA 1024bit valid until
2008, SHA1 valid until 2010). These items may be added based on the
policy used. Since this data is not protected within any time-stamp,
the data should be current and somehow verifiable. Such verification
is out-of-scope of this document.
ArchiveTimeStampSequence is a sequence of ArchiveTimeStampChain,
described in chapter 4.
If the archive 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 EvidenceRecord overall can be described as
follows:
Brandner / Pordesch [Page 6]
DRAFT Evidence Record Syntax (ERS) April 2005
1. Select archived data object or a archived group of data objects,
which are documents or essential parts of it - depending on
application.
2. Create Initial Archive Time-Stamp (see Archive Time-Stamp chapter
3).
3. Renew this Archive Time-Stamp if necessary, by Time-Stamp Renewal
or Hash-Tree Renewal (see chapter 4).
The process of generation depends on whether the 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 local generation procedure are not to be discussed
in this specification.
2.3 Verification
The Verification of an EvidenceRecord overall can be described as
follows:
1. Select archived data object or a group of data objects, which were
originally Archive Time-Stamped.
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 Archive Time-Stamp
An Archive 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.
Brandner / Pordesch [Page 7]
DRAFT Evidence Record Syntax (ERS) April 2005
3.1 Syntax
An Archive Time-Stamp has the following ASN.1 Syntax:
ArchiveTimeStamp ::= SEQUENCE {
digestAlgorithm AlgorithmIdentifier OPTIONAL,
reducedHashtree [0] SEQUENCE OF {SEQUENCE OF OCTET STRING}
OPTIONAL,
timeStamp ContentInfo}
The fields of type ArchiveTimeStamp 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 Archive Time-Stamp is equal to the ordinary time-stamp.
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 Archive 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.
2. Choose secure hash algorithm H and generate hash values for the
data objects, which will be the leaves of the hash-tree.
3. For each data group containing more than one document, its
respective document hashes are binary sorted in ascending order,
concatenated and hashed.
4. If there is more than one hash value, place them in groups and
sort each group in binary ascending order. Concatenate these
values and generate new hash values, which are inner nodes of
this tree. (If additional hash values are needed, e.g. so that
all nodes have the same number of children, any data may be
hashed using H and used.) Repeat this step until there is only
one hash value, which is the root node of the hash-tree.
Brandner / Pordesch [Page 8]
DRAFT Evidence Record Syntax (ERS) April 2005
5. Order a time-stamp for this root hash value. The hash algorithm
in the time-stamp request must be the same as the hash algorithm
of the hash-tree.
An example of a constructed hash tree for 3 data groups, where data
group 1 and 3 only contain one document, and data group 2 contains 3
documents:
+------+
| h123 |
+------+
/ \
/ \
+----+ +----+
| h12| | h3 |
+----+ +----+
/ \
/ \
+----+ +-------+
| h1 | | h2abc |
+----+ +-------+
/ | \
/ | \
/ | \
/ | \
+----+ +----+ +----+
| h2a| | h2b| | h2c|
+----+ +----+ +----+
Figure 1: Hash-tree
h1 = H(d1) where d1 is the only data object in data group 1
h3 = H(d3) where d3 is the only data object in data group 3
h12 = H( binary sorted and concatenated (h1, h2abc))
h123 = H( binary sorted and concatenated (h12, h3))
h2a = H(first data object of data object group 2)
h2b = H(second data object of data object group 2)
h2c = H(third data object of data object group 2)
h2abc = H( binary sorted and concatenated (h2a, h2b, h2c))
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.
Brandner / Pordesch [Page 9]
DRAFT Evidence Record Syntax (ERS) April 2005
2. Select all hash values, which have the same father node as h.
Generate the first list of hash values by arranging these hashes,
in binary ascending order. Repeat this step for the father node
of these hashes until the root hash is reached. 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 Archive Time-Stamp.
Assuming that the sorted binary ordering of the hashes in Figure 1 is:
h2abc < h1 then the reduced hash-tree for data group 1 (d1) is:
+--------------------------------+
| +----------------+ +--------+ |
| | +------+ +----+ | | +----+ |
| | | h2abc| | h1 | | | | h3 | |
| | +------+ +----+ | | +----+ |
| +----------------+ +--------+ |
+--------------------------------+
Figure 2: Reduced hash-tree for data group 1
The pseudo ASN1 for this reduced hash-tree would look like:
rht1 = SEQ( SEQ (h12, h1), SEQ (h3))
Assuming the same hashtree as in figure 1 the reduced hash-tree
for all data objects in data group 2 is identical.
+-------------------------------------------------+
| +----------------------+ +--------+ +--------+ |
| | +----+ +----+ +----+ | | +----+ | | +----+ | |
| | | h2b| | h2c| | h2a| | | | h1 | | | | h3 | | |
| | +----+ +----+ +----+ | | +----+ | | +----+ | |
| +----------------------+ +--------+ +--------+ |
+-------------------------------------------------+
Figure 3: Reduced hash-tree for data object group 2
The pseudo ASN1 for this reduced hash-tree would look like:
rht2 = SEQ( SEQ (h2b, h2c, h2a), SEQ (h1), SEQ (h3))
Note, there are no restrictions to the quantity of hash value lists
and of their length. Also note, that it is profitable but not
required to build hash-trees and reduce them. An Archive Time-Stamp
may consist only of one list of hash-values and a time-stamp or
in the extreme case, only a time-stamp with no hash value lists.
The certificates, CRLS or OCSP-Responses needed to verify the
time-stamp SHOULD be stored in the time-stamp itself. A time-stamp
Brandner / Pordesch [Page10]
DRAFT Evidence Record Syntax (ERS) April 2005
according to [RFC 3161] is a CMS-object in 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
attributes [RFC3126].
3.3 Verification
An Archive 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 Archive Time-Stamp.
2. Search for 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 Archive Time-Stamp relates to
a data object group (e.g. a document and all its signatures) it can
be verified additionally, that only the hash values of the given data
objects are in the first hash value list.
4 Archive Time-Stamp Chain and Archive Time-Stamp Sequence
Archive 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. However, this first Initial Archive
Time-Stamp can become invalid, if hash algorithms or public key
algorithms used in its hash-tree or time-stamp become weak or if the
validity period of the time-stamp certificates expires or if the
time-stamp certificates are revoked.
If this is going to happen, the existence of Archive Time-Stamp or
archive time-stamped data has to be reassured, which can be done by
creating new Archive Time-Stamps. Depending on whether the time-stamp
becomes invalid or the hash algorithm of the hash-tree becomes weak,
two kinds of Archive Time-Stamp renewals are possible:
- 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 / Pordesch [Page11]
DRAFT Evidence Record Syntax (ERS) April 2005
- Hash-Tree Renewal: A new Archive Time-Stamp is generated, which
refers to all the old Archive Time-Stamps as well as the data
objects initially archive time-stamped. A new Archive Time-Stamp
Chain is created. 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 ArchiveTimeStamp
ArchiveTimeStampSequence ::= SEQUENCE OF ArchiveTimeStampChain
ArchiveTimeStampChain and ArchiveTimeStampSequence must be
ordered ascending by time of time-stamp. Within an
ArchiveTimeStampChain all ArchiveTimestamps 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. The application or the policy included in the
LTANS Long term Archiving Protocol (to be specified) dictate when
an Initial Archive Time-Stamp must be generated for each data
object.
Before cryptographic algorithms used within the Archive Time-Stamp
become weak or time-stamp certificates are invalidated, Archive
Time-Stamps have to be renewed by generating a new Archive
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, which is
specified in the hash algorithm field of the Archive 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 to by the initial Archive
Time-Stamp have to be hashed and time-stamped again:
1. Select secure hash algorithm H.
Brandner / Pordesch [Page12]
DRAFT Evidence Record Syntax (ERS) April 2005
2. Select data objects d(i) referred to by initial Archive
Time-Stamp (objects which are still present and not deleted).
Generate hash values h(i) = H((d(i)). If data groups with more
than one document are present, then one will have more than one
hash for a group, i.e. h(i_a), h(i_b).., h(i_n)
3. atsc(i) is the concatenation of all previous Archive Time-Stamp
Chains (in chronological order) related to data object d(i).
Generate hash value ha(i) = H(atsc(i)).
Note: The ArchiveTimeStampChains used are ASN1 encoded, i.e. they
contain sequence and length tags.
4. Concatenate each h(i) with ha(i) and generate hash values
h(i)' = H (h(i)+ ha(i)). For multi-document groups, this is:
h(i_a)' = H (h(i_a)+ ha(i))
h(i_b)' = H (h(i_b)+ ha(i)) etc
5. Build a new Archive Time Stamp for each h(i)'. (hash-tree
generation and reduction is defined in 3.2, note that each h(i)'
will be treated in 3.2 as the document hash. The first hash value
list in the reduced hash-tree should only contain h(i)'. For a
multi-document group, the first hash value list will contain the
new hashes for all the documents in this group, i.e. h(i_a)',
h(i_b)'.., h(i_n)')
6. Create new ArchiveTimeStampChain and add this new Archive
Time-Stamp.
Brandner / Pordesch [Page13]
DRAFT Evidence Record Syntax (ERS) April 2005
+------+
| h123 |
+------+
/ \
/ \
+----+ +----+
| h12| | h3'|
+----+ +----+
/ \
/ \
+----+ +-------+
| h1'| | h2abc |
+----+ +-------+
/ | \
/ | \
/ | \
/ | \
+----+ +----+ +----+
|h2a'| |h2b'| |h2c'|
+----+ +----+ +----+
Figure 4: Hash-tree from hash-tree renewal
Let H be the new secure hash algorithm
ha(1), ha(2), ha(3) are as defined in step 4 above
h1' = H( binary sorted and concatenated (H(d1), ha(1)))
d1 is the original document from data group 1
h3' = H( binary sorted and concatenated (H(d3), ha(3)))
d3 is the original document from data group 3
h2a = H(first data object of data object group 2)
...
h2c = H(third data object of data object group 2)
h2a' = H( binary sorted and concatenated (h2a, ha(2)))
...
h2c' = H( binary sorted and concatenated (h2c, ha(2)))
h2abc = H( binary sorted and concatenated (h2a', h2b', h2c'))
If the Time-Stamp of an Archive Time-Stamp becomes invalid, the
simple time-stamp renewal should be done. Only if the hash algorithm
used within the hash-tree becomes 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 become invalid to be on the secure side. Nevertheless
ArchiveTimeStamps, which are not necessary for verification,
should not be added to ArchiveTimeStampChain or
ArchiveTimeStampSequence.
Brandner / Pordesch [Page14]
DRAFT Evidence Record Syntax (ERS) April 2005
4.3 Verification
To get an non-repudiation proof that a data object existed at a
certain 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 hash value list of the first Archive
Time-Stamp of all other ArchiveTimeStampChains contains a hash
value of the concatenation of the data object hash and the hash
value of all older ArchiveTimeStampChain. Verify that this Archive
Time-Stamp was generated before the last Archive Time-Stamp of
the ArchiveTimeStampChain became invalid.
In order to complete the 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 Archive Time-Stamp of
each ArchiveTimeStampChain does not contain other hash values in its
first hash value list.
5 Encryption
If service providers are used to archive data and generate Archive
Time-Stamps, it might be desirable or required that clients only send
encrypted data to be archived. However, this means that evidence
records refer to encrypted data objects and not to the unencrypted
ones. To avoid problems when using the evidence records in the
future, additional special precautions have to be taken:
- Encryption can affect the proof of existence of the unencrypted
data. E.g. it could be possible to choose an algorithm or a key
for decryption that is not the algorithm or key used for
encryption. In this case, the evidence record would not be a
Brandner / Pordesch [Page15]
DRAFT Evidence Record Syntax (ERS) April 2005
non-repudiation proof for the unencrypted data. Therefore, only
encryption methods may be used, which make is possible to prove
that archive time-stamped encrypted data objects unambiguously
represent unencrypted data objects. All data necessary to prove
unambiguous representation have to be part of the archived data
objects.
- When encrypted data objects and the evidence record are sent back,
it may be desirable for clients to only store the unencrypted data
objects and to delete the decrypted ones, in order to avoid
duplicate storage. In order to use the evidence record, it must be
then possible to re-encrypt the unencrypted data to get exactly the
data that was originally archived. Therefore, additional data
necessary to re-encrypt data objects should be inserted into the
evidence record by the client (i.e. archive provider never sees
these values).
This specification defines an optional data field to store the
needed parameters of the used encryption methods. One possible
encryption method is specified. Further encryption methods may be
defined in other specifications.
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 the data
objects if used before Archive Time-Stamping.
encryptionParameters contains specific parameters for the encryption
algorithm and are necessary for verification and re-encryption.
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.
ERS 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}
Brandner / Pordesch [Page16]
DRAFT Evidence Record Syntax (ERS) April 2005
CMS_encryption_params::= SEQUENCE {
encryptionCover ContentInfo,
publicKey BIT STRING OPTIONAL,
params CHOICE {
[0] privateKey BIT STRING,
[1] encryptionKeyRan EncryptionKeyRandom}}
EncryptionKeyRandom::= SEQUENCE {
encryptionKey OCTET STRING,
randomValue BIT STRING}}
encryptionCover is a CMS-message of type enveloped message, without
encrypted content (external content).
publicKey is the public key used to encrypt encryptKey. This value
must be present if the corresponding certificate is not included
in the CMS structure, or if more than one certificate is included.
privateKey is the private key corresponding to the public key given
by the recipientInfo field. The private key can decrypt the
encrypted document encryption key.
encryptionKeyRan contains encryptionKey, the clear text of
content-encryption Key (used to encrypt the content (data objects)),
and randomValue, the random value used in the encryption of the
content-encryption key. Thus, one can re-encrypt encryptionKey
using the randomValue using the public key in the recipientInfo.
This encrypted result is compared with the encryptedKey of recipient
info of Encryption-Cover. If it is the same, then encryptionKey can
be used to re-encrypt the data objects.
5.2 Generation
When the client encrypts to-be-archived data objects, it must ensure
that the needed encryption info is included in the archived data.
In the case of CMS encryption, a CMS encrypted message has to be
generated using the key transport technique, as described in
[RFC3369], and the 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. The
private key or randomValue used to encrypt the content encryption key
has to be stored by the client for verifications in the future. The
client adds CMS_encryption_params to the Archive Time-Stamps Element,
when a proof is necessary that this EvidenceRecord refers to the
given unencrypted data.
Brandner / Pordesch [Page17]
DRAFT Evidence Record Syntax (ERS) April 2005
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
selected data objects with encryptionKey and inserting result in
Encryption-Cover. In order to get the identical Bitstream, that
originally was archive time-stamped, the encoding of the encrypted
message must not be changed, with the exception of adapting the
(preceding) length fields.
To verify that the encryptionKey is the right one, it has to be
verified that the encrypted key field contains the encrypted content
encryption key. This can be done in two ways:
- Re-encrypting: encryptionKey and randomValue must be provided.
encryptionKey is re-encrypted using randomValue and the public key
in recipient Info, which is contained in the certificate. The
result must be compared with encrypted key.
- Decrypting: privateKey must be provided. privateKey is used to
decrypt encryptedKey, which provides the content-encryption key.
6 ASN.1-Module
ERS
-- {iso(1) identified-organization(3) dod(6) internet(1)
-- security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-ers(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) }
Brandner / Pordesch [Page18]
DRAFT Evidence Record Syntax (ERS) April 2005
ContentInfo
FROM
CryptographicMessageSyntax {iso(1) member-body(2) us(840)
rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1)}
ArchiveTimeStamp ::= SEQUENCE {
digestAlgorithm AlgorithmIdentifier,
reducedHashtree [0] SEQUENCE OF {SEQUENCE OF OCTET STRING }
OPTIONAL,
timeStamp ContentInfo}
ArchiveTimeStampChain::= SEQUENCE OF ArchiveTimeStamp
ArchiveTimeStampSequence::= SEQUENCE OF ArchiveTimeStampChain
EncryptionMethod ::= SEQUENCE {
encryptionAlgorithm OBJECT IDENTIFIER,
encryptionParameters::= ANY DEFINED BY encryptionAlgorithm
OPTIONAL}
id-EncryptionCMS_encryptedmessage ::= {id-ATS-1}
CMS_encryption_params::= SEQUENCE {
encryptionCover ContentInfo,
publicKey BIT STRING OPTIONAL,
params CHOICE {
[0] privateKey BIT STRING,
[1] encryptionKeyRan EncryptionKeyRandom}}
EncryptionKeyRandom::= SEQUENCE {
encryptionKey OCTET STRING,
randomValue BIT STRING}}
EvidenceRecord ::= SEQUENCE {
version INTEGER { v1(1) },
digestAlgorithms SEQUENCE OF AlgorithmIdentifier,
cryptoInfos [0] CryptoInfos OPTIONAL,
encryption [1] EncryptionMethod OPTIONAL,
archiveTimeStampSequence ArchiveTimeStampSequence}
CryptoInfos ::= SEQUENCE SIZE (1..MAX) OF CryptoInfo
CryptoInfo ::= SEQUENCE
{
cryptoInfoType OBJECT IDENTIFIER
cryptoInfoValue ANY DEFINED BY cryptoInfoType
}
END
Brandner / Pordesch [Page19]
DRAFT Evidence Record Syntax (ERS) April 2005
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 Archive
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.
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.
Brandner / Pordesch [Page 20]
DRAFT Evidence Record Syntax (ERS) April 2005
8. References
8.1 Normative References
[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.
8.2 Informative References
[ETS2003] European Telecommunication Standards Institute (ETSI),
Electronic Signatures and Infrastructures (ESI);
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.
[REQ2004] Wallace, C., Brandner, R., Pordesch, U. Long-term Archive
Service Requirements, RFC ????, 2004.
Authors' Addresses
Ralf Brandner
InterComponentWare AG
Otto-Hahn-Str. 3
D-69119 Walldorf, Germany
E-Mail: ralf.brandner@intercomponentware.com
Ulrich Pordesch
Fraunhofer Gesellschaft
Dolivostrasse 15
D-64293 Darmstadt, Germany
E-Mail: ulrich.pordesch@zv.fraunhofer.de
Brandner / Pordesch [Page 21]
DRAFT Evidence Record Syntax (ERS) April 2005
Appendix A: Evidence Record using CMS
An Evidence Record 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 Evidence Record is an unsigned attribute (signed
message) or an unprotected attribute (enveloped message).
The Evidence Record 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 Archive 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 Evidence
Record 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 Evidence
Record:
Internal signature:
id-EvidenceRecord ::= {id-ATS-Attribute 1}
External signature:
id-EvidenceRecord ::= {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 EvidenceRecord
Attributes - which indicates that the EvidenceRecord has
been provided externally - the archive time-stamped data object has
to be generated over the complete CMS object within the existing
coding.
In case of verification, if only one EvidenceRecord is contained
in the CMS object, the hash value must be generated over the CMS
object without the one EvidenceRecord. This means that the attribute
has to be removed before verification. The length of fields
Brandner / Pordesch [Page22]
DRAFT Evidence Record Syntax (ERS) April 2005
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)
EvidenceRecord, all EvidenceRecord have to be removed in order to
generate the data object.
- During verification of the nth one EvidenceRecord, the first n-1
attributes should remain within the CMS object.
- The verification of the nth one EvidenceRecord 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 / Pordesch [Page 23]
DRAFT Evidence Record Syntax (ERS) April 2005
Full Copyright Statement
Copyright (C) The Internet Society (2005).
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.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
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.
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
http://www.ietf.org/ipr.
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
ietf-ipr@ietf.org.
ERS uses time-stamps and the Time-Stamp Protocol [RFC3161] might be
used to get necessary time-stamps. ERS does not define a new kind of
trusted time-stamping or non-repudiation service. Nevertheless,
in particular if a service is created, which uses ERS, 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.
Brandner / Pordesch [Page 24]
DRAFT Evidence Record Syntax (ERS) April 2005
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Brandner / Pordesch [Page 25]