Long-term Archive And Notary A. Jerman Blazic
Services (LTANS) SETCCE
Internet Draft S. Saljic
Intended status: Standards Track SETCCE
Expires: August 26, 2007 T. Gondrom
Open Text Corporation
February 26, 2007
Extensible Markup Language Evidence Record Syntax
draft-ietf-ltans-xmlers-00.txt
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-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.
This Internet-Draft will expire on August 20, 2007.
Copyright Notice
Jerman Blazic, et. al. Expires August 25, 2007 [Page 1]
Internet-Draft XMLERS February 2007
Copyright (C) The IETF Trust (2007).
Abstract
In many scenarios, users must be able to demonstrate the (time)
existence, integrity and validity of data including signed data for
long or undetermined period of time. This document specifies XML
syntax and processing rules for creating evidence for long-term non-
repudiation of existence of data. ERS-XML incorporates alternative
syntax and processing rules to ASN.1 ERS syntax by using XML
language.
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].
Jerman Blazic, et. al. Expires August 25, 2007 [Page 2]
Internet-Draft XMLERS February 2007
Table of Contents
1. Introduction...................................................4
1.1. Motivation................................................4
1.2. General Overview and Requirements.........................4
1.3. Terminology...............................................5
2. Evidence Record................................................7
2.1. Evidence Record Structure.................................8
2.2. Archive Time-Stamp Structure.............................10
2.2.1. Time-Stamp Token....................................11
2.2.2. Hash Tree...........................................12
2.2.3. Hash Tree...........................................14
3. Generation of an Evidence Record..............................14
3.1. Initial Archive Time-Stamp...............................15
3.2. Renewal Process..........................................16
4. Merkle Hash-Tree..............................................18
4.1. Generation of a Merkle Hash-Tree for a Group of Archive
Objects.......................................................18
4.2. Generation of the Reduced Hash Tree for an Archive Object21
4.3. Calculation of the root hash value from a reduced hash tree22
5. Verification of an Evidence Record............................22
6. XSD Schema for the Evidence Record............................24
7. Security Considerations.......................................26
8. IANA Considerations...........................................27
9. Conclusions...................................................27
10. Acknowledgments..............................................27
APPENDIX A: First Appendix.......................................28
A.1. XSD Schema for ERS.......................................28
11. References...................................................29
11.1. Normative References....................................29
11.2. Informative References..................................30
Author's Addresses...............................................30
Intellectual Property Statement..................................31
Disclaimer of Validity...........................................32
Jerman Blazic, et. al. Expires August 25, 2007 [Page 3]
Internet-Draft XMLERS February 2007
1. Introduction
Comment [AJB]: This document is initial draft. The purpose of the
document is to define XML Schema for Evidence Record Syntax. The
following text needs rework.
1.1. Motivation
TBA
1.2. General Overview and Requirements
ERSXML draft (draft-ietf-ltans-ers-xml) specifies XML syntax and
processing rules for creating evidence for long-term non-repudiation
of existence of data in a unit called "Evidence Record". This
document refers to ERS specification as defined in draft-ietf-ltans-
ers-11.
An Evidence Record may be generated and maintained for a single data
object or a group of data objects that form an archive object. Data
object (binary chunk or a file) may represent any kind of document or
part of it. Dependencies among data objects, their validation or any
other relation than "a data object is a part of particular archived
object" are out of the scope of this draft.
Evidence for an archive object is created by acquiring a timestamp
from a trustworthy authority for a specific value that is
unambiguously related to all data objects within an archive object.
Besides a time-stamp other artifacts MUST be preserved as well: data
necessary to verify relation of the time-stamped value with a
specific data object, which is packed into a structure called "hash-
tree"; and long term proofs for the formal verification of the time-
stamp.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 4]
Internet-Draft XMLERS February 2007
The Evidence Record syntax enables processing of several archive
objects within a single processing pass and by acquiring only one
timestamp to protect all archive objects.
Due to the fact that digest algorithms or cryptographic methods used
may become weak or that certificates used within timestamp (and
signed data) may be revoked or expired, the collected evidence data
must be monitored and renewed before such event occurs.
Procedures for generation of such evidence are already specified
within the ERS draft (draft-ietf-ltans-ers), but they depend on
defined ASN.1 data structures. For a purpose of renewal of the
evidence, digest values of ASN.1 formatted data must be calculated
and used in further processing. Besides replacing an ASN.1 scheme
with an XML scheme, this document modifies underlying procedures to
use XML data structure.
1.3. 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 an archived data object group, which represent signed
data.
Archive Timestamp: Is a timestamp and lists of hash values, which
allows verifying the existence of several data objects at a certain
time.
Archive Timestamp Chain: Part of a Archive Timestamp Sequence, it
is a time-ordered sequence of Archive Timestamps, where each
Archive Timestamp preserves non-repudiation of the previous Archive
Timestamp, even after the previous Archive Timestamp becomes
invalid. Overall non-repudiation is maintained until the new
Jerman Blazic, et. al. Expires August 25, 2007 [Page 5]
Internet-Draft XMLERS February 2007
Archive Timestamp itself becomes invalid. The process of generating
such an Archive Timestamp Chain is called Timestamp Renewal.
Archive Timestamp Sequence: Part of the Evidence Record, it is a
sequence of Archive Timestamp Chains, where each Archive Timestamp
Chain preserves non-repudiation of the previous Archive Timestamp
Chains, even after the hash algorithm used within the previous
Archive Timestamps hash-tree became weak. Non-repudiation is
preserved until the last Archive Timestamp of the last chain
becomes invalid. The process of generating such an Archive
Timestamp Sequence is called Hash-Tree Renewal.
Complementary Data: Data or part of data related to the validation
process of signed data, e.g. digital certificates, digital
certificate chains, certificate revocation list, etc.
Digest Method: Processing rules for one way transformation of data
or pieces of data into short value of fixed length. The result of
processing is a hash value or data fingerprint.
Evidence: Information that may be used to resolve a dispute about
various aspects of authenticity, validity and existence of archived
data objects.
Evidence record: Collection of evidence compiled for one or more
given archived data objects over time. An evidence record includes
all Archive Timestamps (within structures of Archive Timestamp
Chains and Archive Timestamp Sequences) and additional verification
data, like certificates, revocation information, trust anchors,
policy details, role information, etc.
Long-term Archive Service (LTA): A service responsible for
generation, collection and maintenance (renewal) of evidence data.
A LTA service may also preserve data for long periods of time, i.e.
storage of archived data objects and evidence, etc.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 6]
Internet-Draft XMLERS February 2007
Reduced 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.
Timestamp: A cryptographically secure confirmation generated by a
Time Stamping Authority (TSA) [RFC3161] specifies a structure for
timestamps and a protocol for communicating with a Timestamp
Authority (TSA). Besides this, other data structures and protocols
may also be appropriate, such as defined in [ISO-18014-1.2002],
[ISO-18014-2.2002], [ISO-18014-3.2004], and [ANSI.X9-95.2005].
Transforms: Processing rules for transforming an input XML document
into an output XML document. The result of XML transformation may
be an XML document or a byte stream.
An Archive Timestamp relates to a data object, if the hash value of
this data object is part of the first hash value list of the Archive
Timestamp. An Archive Timestamp relates to a data object group, if it
relates to every data object of the group and no other data objects.
An Archive Timestamp Chain relates to a data object / data object
group, if its first Archive Timestamp relates to this data
object/data object group. An Archive Timestamp Sequence relates to a
data object / data object group, if its first Archive Timestamp 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 object (a single data object or a group
of data objects) at a certain time. It is possible to store Evidence
Record separately from the archived object or to integrate it into
the data itself.
Evidence Record syntax enables processing of several archive objects
(group processing) with a single process and by acquiring only one
timestamp to protect many archive objects, without a need to access
Jerman Blazic, et. al. Expires August 25, 2007 [Page 7]
Internet-Draft XMLERS February 2007
any other archive object or their evidence records while
demonstrating the validity for a particular archive object from the
group.
The Evidence Record contains one or several archive time-stamps
(ATS). An ATS contains a time-stamp token and possibly useful data
for validation. The basic idea is to time-stamp a specific value,
constructed from significant values, which are unambiguously related
to protected data objects.
Initially, an archive time-stamp is acquired and later, before it
expires or becomes invalid, a new archive time-stamp is generated,
which prolongs the validity of archived object (of its data objects
together with all previously generated archive time-stamps). This
process must continue during the desired archiving period.
For additional reference see draft-ietf-ltans-ers-11 (current XML ERS
syntax does not include information to support encrypted content to
be handled).
2.1. Evidence Record Structure
In XML syntax an Evidence Record is represented by the
<EvidenceRecord> element, which has the following structure (where
"+" denotes one or more occurrences; "*" denotes zero or more
occurrences):
<EvidenceRecord>
<Version />
<ArchiveTimeStamp Order>
<DigestMethod />
<HashTree> OPTIONAL
(<Transform />)*
<Content />
</HashTree>
<TimeStamp>
Jerman Blazic, et. al. Expires August 25, 2007 [Page 8]
Internet-Draft XMLERS February 2007
(<Transform />)*
<Content />
</TimeStamp>
<ComplementaryData> OPTIONAL
(<Transform />)*
<Content />
</ComplementaryData>)*
</ArchiveTimeStamp>) +
</EvidenceRecord>
The XML tags have the following meanings:
<Version> tag indicates the syntax version, for compatibility with
future revisions of this specification and to distinguish it from
earlier non-conformant or proprietary versions of the XML ERS.
Current version of the XML ERS syntax is 00.
<DigestMethod> tag identifies the hash algorithms used to hash the
data object over the archival period.
<HashTree> tag holds a value or a structure of a reduced hash
tree(s) described in section 2.2.2.
<TimeStamp> tag holds a time stamp token provided by the Time-
Stamping Authority.
<ComplementaryData> tag allows the storage of data useful in the
process of time stamp or data signature validation. This could
include possible Trust Anchors, certificates, revocation
information or the current definition of the suitability of
cryptographic algorithms, past and present. These items may be
added based on the policy used.
Comment [AJB]: The naming could be replaced with <CryptoInfos> as
used in draft-ietf-ltans-ers-11.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 9]
Internet-Draft XMLERS February 2007
The sequence of archive time-stamps is ordered and the order must be
indicated in "Order" attribute of the <ArchiveTimeStamp> element. The
first <ArchiveTimeStamp> element (initial time-stamp) is generated at
the beginning of the archival period and the value of the "Order" is
1. The next archive time-stamp prolongs initial time-stamp and its
"Order" attribute value is increased by one, etc. The archive time-
stamp with largest "Order" attribute value is the last and must be
valid at the present time.
2.2. Archive Time-Stamp Structure
The process of construction of an ATS must unambiguously bind data
objects and time-stamped value and thus prove that data objects
existed and were identical, at the time of the time-stamp, to the
currently present objects (at the time of verification).
Therefore an ATS is a collection of the time-stamp token, an
identifier of used digest algorithm, an optional structure (a hash
tree) for digest values of objects that were protected with that
time-stamp token and optional structures (complementary data) to
store additional data needed for formal verification of the time-
stamp token, such as certificate chain or certificate revocation
list.
For the initial ATS the value to be time-stamped must be
unambiguously related to the archive object (to all of its data
objects).
When at the renewal time the same digest algorithm is used as the
last time, it is enough that time-stamped value is related only to
the digest value of the last ATS. When we use a different digest
algorithm, the time-stamped value must be unambiguously related to
the archive object and all previous ATSs (those digest values must be
calculated with this new digest algorithm).
Jerman Blazic, et. al. Expires August 25, 2007 [Page 10]
Internet-Draft XMLERS February 2007
Before performing digest value calculation for a specific object, the
proper octet-string must be extracted from its (abstract) XML data
presentation. The <Transform> elements indicate the transforms (e.g.
canonicalization algorithms) that must be applied to the node value
of <Content> element before being digested. Such digest values are
needed in process of renewal, where digest values of previous archive
time-stamps are required.
The resource for a specific object is a node value of its <Content>
element. This includes the entire text between the start and end tags
of the <Content> element, including all descendant markup and
character data. Such node value may be a base64 encoded string
representing any binary content or it may be any markup data (XML).
When the node value of the <Content> element represents a binary
content, the node value must be base64 decoded into octet-string.
When the node value represents markup data, it must be canonicalized
and encoded into UTF-8 octet-string.
<DigestMethod> is a required element that identifies the digest
algorithm to be used within an ATS for creating significant values of
data objects, time-stamped value and values within time-stamp token
(digest value of the signature element).
<element name="DigestMethod" type="ds:DigestMethodType"/>
<complexType name="DigestMethodType" mixed="true">
<sequence>
<any namespace="##other" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
2.2.1. Time-Stamp Token
Time-Stamp is an attestation generated by a Time Stamping Authority
(TSA) that a data item existed at a certain time. For example,
Jerman Blazic, et. al. Expires August 25, 2007 [Page 11]
Internet-Draft XMLERS February 2007
[RFC3161] specifies a structure for signed time-stamp tokens.
Following structure example is a digital signature compliant to
XMLDsig specification containing time-stamp specific data, such as
time-stamped value and time within <Object> element of a signature
(reference to a Entrust XML Schema for time-stamp).
<element name="TimeStampInfo">
<complexType>
<sequence>
<element ref="ts:Policy" />
<element ref="ts:Digest" />
<element ref="ts:SerialNumber" minOccurs="0" />
<element ref="ts:CreationTime" />
<element ref="ts:Accuracy" minOccurs="0" />
<element ref="ts:Ordering" minOccurs="0" />
<element ref="ts:Nonce" minOccurs="0" />
<element ref="ts:Extensions" minOccurs="0" />
</sequence>
</complexType>
</element>
2.2.2. Hash Tree
Hash tree structure is a container for significant values, needed to
unambiguously relate time-stamped value to protected data objects,
and is represented by the <Content> element of the <HashTree>
element.
For the purpose of creating significant value for the group of data
objects the following procedure can be used: sort (binary ascending)
digest values of all data objects to be protected with this time-
stamp, concatenate them and calculate the final digest value to be
time-stamped.
The time-stamping service may be, for a large number of archived
objects, expensive and time-demanding, so the TAA may profit from
Jerman Blazic, et. al. Expires August 25, 2007 [Page 12]
Internet-Draft XMLERS February 2007
acquiring one time-stamp for many archived objects, which are not
otherwise related to each other. For that purpose a Merkle Hash Tree
[MER1980] may be constructed and reduced for each archive object.
Note that 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 lists of digest values can be generated by reduction of an
ordered Merkle hash-tree [Mer1980]. The leaves of this hash-tree are
the digest values of the data objects to be time-stamped. Every inner
node of the tree contains one digest value, which is generated by
digesting the binary sorted concatenation of the children nodes. The
root digest value, which represents unambiguously all data objects,
is time-stamped.
Comment [AJB]: Is there a need to define the structure of a hash tree
in XML format?
Comment [AJB]: Graphical interpretation needs to be added as in
draft-ietf-ltans-ers-11.
A sample of lists of hash values within Content node value:
<Sequence>
<MessageImprint>5XQCAGgwJL2WZ6nv2OSGYlRFpK8=</MessageImprint>
<MessageImprint>wyFrW58ATzRch7VUPNY2P+75Q/I=</MessageImprint>
<MessageImprint>woCvx62tw0uc24v51xtNNxld5Kw=</MessageImprint>
<MessageImprint>7N2lphOrGx+/PCxtGwzbKIj+InQ=</MessageImprint>
<MessageImprint>zbCNhmQv+8kRo9W/0YedrpeZ1a8=</MessageImprint>
<MessageImprint>ThuhSOZhNj42vsIRg38epxj9qVo=</MessageImprint>
</Sequence>
<Sequence>
<MessageImprint>FX7AgSsZ0kaW8fHWi4BYDkAkZS0=</MessageImprint>
Jerman Blazic, et. al. Expires August 25, 2007 [Page 13]
Internet-Draft XMLERS February 2007
</Sequence>
<Sequence>
<MessageImprint>tWl/o/er7kGwIeip4g+xvzShMno=</MessageImprint>
</Sequence>
<Sequence>
<MessageImprint>+bY32LFVm/ynJj6TZss5J6BzYwI=</MessageImprint>
</Sequence>
<Sequence>
<MessageImprint>Eu05AI8VVqFkddHYyYXMs8cjXcU=</MessageImprint>
</Sequence>
This sample represents a reduced hash tree. The first sequence (input
list) contains 6 digest values, which indicate 6 fingerprints of data
objects to be archived with archive time-stamp element. Sequences
that follow input list are used to calculate a final digest value to
be (has already been) time-stamped. The reduced tree is result of
reducing a Merkle hash-tree as described in chapter 4. The digest
value is always represented as encoded base64 character data.
2.2.3. Hash Tree
Digital certificates, CRLs or OCSP-Responses needed to verify the
time-stamp should be stored in the time-stamp itself. When this is
not possible, such data may be stored in <ComplementaryData> element
(as a node value of its <Content> element).
<ComplementaryData>
(<Transform>)*
<Content />
</ComplementaryData>
3. Generation of an Evidence Record
The generation of an <EvidenceRecord> element can be described as
follows:
Jerman Blazic, et. al. Expires August 25, 2007 [Page 14]
Internet-Draft XMLERS February 2007
1. Select archived data object (a data object or a data object
group), which are documents or essential parts of it - depending
on application.
2. Create the initial ATS.
3. Refresh the ArchiveTimeStamp when necessary, by TimeStamp Renewal
or Hash-TreeRenewal.
In the case that only essential parts of documents or objects shall
be protected the application not defined in this draft must take care
of the right extraction of binary data to be covered for generation
of evidence record.
For example: an application may provide also evidence such as
certificates, revocation lists etc., needed to verify and validate
signed data objects. This evidence may be added to the archived group
of data object and will be protected within initial time-stamp.
3.1. Initial Archive Time-Stamp
Initial Archive Time-Stamp relates to a data object or a data object
group that represent an archive data object. The generation of the
initial Archive Time-Stamp element can be described as follows:
1. Select a valid digest algorithm H (a strong one-way hash function,
for which it is computationally infeasible to find any message
that corresponds to a given digest or any two messages that
correspond to the same digest). It is recommended to use the same
digest algorithm to create the time-stamped value and the time-
stamp.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 15]
Internet-Draft XMLERS February 2007
2. Create an input list of digest values calculated with H (one
digest value for each separate data object). This list must be
part of the first sequence in the hash tree. Hash tree may be
omitted in the initial archive time-stamp, when a single data
object is being archived and then the time-stamped value must
match the digest value of that single data object.
3. Sort binary ascending the input list and calculate digest value to
be time-stamped.
4. Acquire time-stamp for that value. If the time-stamp is valid, the
initial archive time-stamp may be generated.
3.2. Renewal Process
Before the cryptographic algorithm used within the last Archive Time-
Stamp becomes weak or the time-stamp certificates are invalidated,
the last Archive Time-Stamp must be renewed by generating a new
Archive Time-Stamp.
If the digest algorithm to be used (H) is the same as one used in the
last Archive Time-Stamp (H'), the digest value of that Archive Time-
Stamp is calculated and a new Archive Time-Stamp must time-stamp that
specific value.
If the new digest algorithm is different than one used in the last
Archive Time-Stamp (H <> H'), then a new Archive Time-Stamp must
time-stamp a specific value digested with new digest algorithm from:
o digest values for archive object calculated with the new digest
algorithm and
o digest values of all previous Archive Time-Stamps, all calculated
with the new digest algorithm.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 16]
Internet-Draft XMLERS February 2007
The first list of the hash-tree for the new Archive Time-Stamp must
contain digest values of:
o the archived object and
o all previous Archive Time-Stamps, all digested with the new digest
algorithm.
A digest value for an Archive Time-Stamp is digested from binary
ascending sorted and concatenated digest values of:
o the hash tree,
o timestamp and
o objects within <ComplementaryData>.
A digest value of an Archive Time-Stamp (ATS) is calculated as
follows:
5. If the current ATS does not contain needed proof for long-term
formal validation of its time-stamp token within the time-stamp
token, collect needed data such as root certificates, certificate
revocation lists and include them as node values of <Content>
elements in <ComplementaryData> element (each data object into
separate <ComplementaryData>).
6. Make a list of digest values of all ATS's sub-elements, which are:
the hash tree, the time-stamp token and complementary data. Digest
value of the ATS's sub-elements are calculated from binary
presentation of the node value of its <Content> element. The
binary presentation of this node value is determined by UTF-8
encoding and if the <Transform> elements are stated, identified
transforms must be previously subsequently applied. Expected
transforms are canonicalization in case of XML data structure or
base64 decoding for binary data.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 17]
Internet-Draft XMLERS February 2007
7. Sort binary ascending all acquired digest values, concatenate them
and digest with the chosen digest algorithm.
4. Merkle Hash-Tree
A hash tree is a tree of digest values in which the leaves are hashes
of data blocks in, for instance, a file or set of files. Nodes
further up in the tree are the hashes of their respective children.
In the top of a hash tree there is a root hash value or master hash.
From Merkle Hash-Tree for each leaf a very small sub tree may be
extracted (a reduced tree), that holds enough information to
unambiguously bind the leaf value with the root hash. After the group
processing of several archive objects (the root hash, that
unambiguously bound together all archive objects, was time-stamped),
for each archive object reduced tree is saved within its evidence
record (a hash tree within the last ATS).
4.1. Generation of a Merkle Hash-Tree for a Group of Archive Objects
The Merkle Hash-Tree for a group of archive objects is built from
bottom to the root. First are collected leaves of the tree. The
leaves are digest values of archive objects:
8. Collect archive objects and for each archive object corresponding
data objects.
9. Calculate hash values of the archive objects and put them into
input list as follows: a digest value of an archive objects is a
digest value of its data object, if there is only one data object;
for more than one data objects a digest value is a digest value of
binary sorted, concatenated digest values of all containing data
objects. Note that for some hash values on the input list also
lists of their sub-hash values are stored (for archive objects
having more than one data object)
Jerman Blazic, et. al. Expires August 25, 2007 [Page 18]
Internet-Draft XMLERS February 2007
10.Group items in the input list by N (to make binary tree in pairs)
and for each group: binary ascending sort, concatenate and
calculate hash values with algorithm H. The result is a new input
list.
11.Repeat step 3, until only one hash is left; this is the master
hash to be time-stamped.
Example: The input list with 18 hashes, where the h47 is generated
for a group of data objects (d4, d5, d6 and d7) and has been grouped
by 3. The group could be of any size (2, 3...). It is also possible
to extend the tree with "dummy" values; to make every node having the
same number of children.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 19]
Internet-Draft XMLERS February 2007
d1 -> h1 \
\
d2 -> h2 |-> h'1
G1 / \
+--------+ d3 -> h3 / \
|D4 -> h4|\ \
| | \ -------- |
|d5 -> h5| \ |
| | | -> h47 \ |
|d6 -> h6| / \ |
| | / d8 -> h8 -> h'2 |--|-> h''1
|d7 -> h7|/ / | \
+--------+ d9 -> h9 / | \
| |
-------- | |
/ |
d10 -> h10\ / |
\ / |
d11 -> h11 |-> h'3 |
/ |
d12 -> h12/ |
|-> master hash
-------- |
|
d13 -> h13\ |
\ |
d14 -> h14 |-> h'4 |
/ \ |
d15 -> h15/ \ /
\ /
--------- |-> h'2
/
d16 -> h16\ /
\ /
d17 -> h17 |-> h'5
/
Jerman Blazic, et. al. Expires August 25, 2007 [Page 20]
Internet-Draft XMLERS February 2007
d18 -> h18/
Figure 1 Generation of the Reduced Hash Tree.
4.2. Generation of the Reduced Hash Tree for an Archive Object
The following procedure describes generation of the reduced hash tree
for an archive object:
12.For selected archive object generate the first sequence of the
reduced tree, which contains the list of hash values of the data
objects contained in the archive object (one or more). Select node
with a hash value of the archive object.
13.Select all neighboring nodes, which have the same parent as
currently selected node and add their hash values as a new
sequence to the reduced tree. Select parent node.
14.Repeat step 2 until the root is reached. Note that parent nodes
are not saved in the list, they are computable.
Reduced Hash tree for data group (from the previous example):
<Sequence>
<MessageImprint>h4</MessageImprint>
<MessageImprint>h5</MessageImprint>
<MessageImprint>h6</MessageImprint>
<MessageImprint>h7</MessageImprint>
</Sequence>
<Sequence>
<MessageImprint>h8</MessageImprint>
<MessageImprint>h9</MessageImprint>
</Sequence>
<Sequence>
<MessageImprint>h'1</MessageImprint>
<MessageImprint>h'3</MessageImprint>
Jerman Blazic, et. al. Expires August 25, 2007 [Page 21]
Internet-Draft XMLERS February 2007
</Sequence>
<Sequence>
<MessageImprint>h''2</MessageImprint>
</Sequence>
4.3. Calculation of the root hash value from a reduced hash tree
The following procedure describes generation of the root hash value
from a reduced hash tree:
15.Take the first sequence from a reduced hash tree, sort hash items,
concatenate them and calculate a hash value with algorithm H (the
one used for creation of the hash tree).
16.Remove this sequence from the reduced hash tree.
17.If a reduced hash tree is not empty, add previously calculated
hash value to the first sequence and go to step 1. If a reduced
hash tree is empty, than the last calculated hash value is the
master hash.
5. Verification of an Evidence Record
An Evidence Record shall prove that an archive object existed and has
not been changed from the time of a time-stamp token within the first
ATS. Every ATS, but the last, must be valid at the time of the next
ATS. In order to complete the non-repudiation proof for the data
objects, the last ATS has to be valid at the time the verification is
performed.
This can be verified as follows:
1. Start with the first ATS till the last ATS (ordered by attribute
"Order") and perform ATS verification, as follows:
Jerman Blazic, et. al. Expires August 25, 2007 [Page 22]
Internet-Draft XMLERS February 2007
2. Get a digest method identifier H from the <DigestMethod> element
of current ATS.
3. Get all objects that have to be protected with this ATS and
calculate their digest values with H (list of digest values of
protected objects).
Objects, which have to be protected with an ATS are: the archive
object and all previous ATSs. When H is the same as a digest
algorithm of the previous ATS, only the preceding ATS must be
protected.
For the archive object collect digest values for all of its data
objects; generally that could be: documents or parts of documents,
metadata, complementary data for signed documents (certificates,
CRLs...), etc.
For ATS collect digest values of: the timestamp, the hash tree and
complementary data.
If there is only one data object in the archive object, the hash
tree may be omitted for the first ATS and digest value of that
data object must be the same as a time-stamped value. Note that
this also implies individual processing.
If there is a digest value on a list of digest values of protected
objects, which can not be found on a first sequence of the hash
tree, exit with a negative result.
4. Get the hash tree for the current ATS and use H to calculate the
master hash. (Reference to the chapter 4.3)
5. Get time stamped value from the time stamp token. If calculated
master hash from the hash tree does not match time stamped value,
exit with a negative result.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 23]
Internet-Draft XMLERS February 2007
6. Verify timestamp cryptographically and formally (validate used
certificate and its chain).
If this ATS is the last ATS, check formal validity for the current
time (now), or get "valid from" time of the next ATS and verify
formal validity at that specific time.
If the needed information to verify formal validity is not found
within the timestamp or within its complementary data section of
ATS, exit with a negative result.
6. XSD Schema for the Evidence Record
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.setcce.org/schemas/ers"
targetNamespace="http://www.setcce.org/schemas/ers"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="EvidenceRecord">
<xs:complexType>
<xs:sequence>
<xs:element name="ArchiveTimeStamp" minOccurs="1"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="DigestMethod" type="xs:DigestMethodType"/>
<xs:element name="HashTree" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Transform"
type="xs:TransformMethodType" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="Content" minOccurs="1"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
Jerman Blazic, et. al. Expires August 25, 2007 [Page 24]
Internet-Draft XMLERS February 2007
<xs:element name="Sequence"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="MessageImprint"
type="xs:hexBinary"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TimeStamp" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Transform"
type="xs:TransformMethodType" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="Content" minOccurs="1"
maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ComplementaryData" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Transform"
type="xs:TransformMethodType" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="Content" minOccurs="1"
maxOccurs="1"/>
Jerman Blazic, et. al. Expires August 25, 2007 [Page 25]
Internet-Draft XMLERS February 2007
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attribute name="version" type="xs:string" use="required" />
<!-- TYPE DEFINITIONS-->
<xs:complexType name="DigestMethodType" mixed="true">
<xs:sequence>
<xs:any namespace="##other" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Algorithm" type="xs:anyURI" use="required" />
</xs:complexType>
<xs:complexType name="TransformMethodType" mixed="true">
<xs:sequence>
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Algorithm" type="xs:anyURI" use="required" />
</xs:complexType>
</xs:schema>
7. Security Considerations
TBA
Jerman Blazic, et. al. Expires August 25, 2007 [Page 26]
Internet-Draft XMLERS February 2007
8. IANA Considerations
TBA
9. Conclusions
TBA
10. Acknowledgments
This document was prepared using 2-Word-v2.0.template.dot.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 27]
Internet-Draft XMLERS February 2007
APPENDIX A: First Appendix
TBA
A.1. XSD Schema for ERS
XML ERS Schema to be added.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 28]
Internet-Draft XMLERS February 2007
11. References
[I-D.ietf-ltans-ers] Brandner, R., "Evidence Record Syntax (ERS)",
draft-ietf-ltans-ers-11 (work in progress), February 2007
[I-D.ietf-ltans-ltap] Jerman-Blazic, A., "Long-term Archive Protocol
(LTAP)", draft-ietf-ltans-ltap-03 (work in progress),
October 2006.
[I-D.ietf-ltans-reqs] Wallace, C., "Long-Term Archive Service
Requirements", draft-ietf-ltans-reqs-10 (work in progress),
December 2006.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BPC 14, RFC 2119, March 1997.
[RFC3161] Adams, C., Cain, P., Pinkas, D., and R. Zuccherato,
"Internet X.509 Public Key Infrastructure Time-Stamp
Protocol (TSP)", RFC 3161, August 2001.
[RFC3280] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
X.509 Public Key Infrastructure Certificate and Certificate
Revocation List (CRL) Profile", RFC 3280, April 2002.
[RFC3852] Housley, R., "Cryptographic Message Syntax (CMS)", RFC
3852, July 2004.
[XMLDsig] Eastlake, D. "XML-Signature Syntax and Processing",
XMLDsig, July 2006.
11.1. Normative References
TBA
Jerman Blazic, et. al. Expires August 25, 2007 [Page 29]
Internet-Draft XMLERS February 2007
11.2. Informative References
[MER1980] Merkle, R., "Protocols for Public Key Cryptosystems,
Proceedings of the 1980 IEEE Symposium on Security and
Privacy (Oakland, CA, USA)", pages 122-134, April 1980.
[MIME] Freed, N., "Multipurpose Internet Mail Extensions (MIME)
Part One: Format of Internet Message Bodies", RFC 2045,
November 1996.
Author's Addresses
Aleksej Jerman Blazic
SETCCE
Jamova 39
1000 Ljubljana
Slovenia
Phone: +386 (0) 1 477 3505
Fax: +386 (0) 1 477 3911
Email: aljosa@setcce.si
Svetlana Saljic
SETCCE
Jamova 39
1000 Ljubljana
Slovenia
Phone: +386 (0) 1 477 3505
Fax: +386 (0) 1 477 3911
Email: svetlana.saljic@setcce.si
Jerman Blazic, et. al. Expires August 25, 2007 [Page 30]
Internet-Draft XMLERS February 2007
Tobias Gondrom
Open Text Corporation
Werner-von-Siemens-Ring 20
Grasbrunn, Munich D-85630
Germany
Phone: +49 (0) 89 4629-1816
Fax: +49 (0) 89 4629-33-1816
Email: tobias.gondrom@opentext.com
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.
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.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 31]
Internet-Draft XMLERS February 2007
Disclaimer of Validity
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, THE IETF TRUST 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.
Copyright Statement
Copyright (C) The IETF Trust (2007).
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.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Jerman Blazic, et. al. Expires August 25, 2007 [Page 32]