Groupe ON-X

EdelWeb Time Stamping

Since October 2000 EdelWeb provides an experimental time stamping service. as part of EdelWeb's  Project K7 Illudium Ultraspace Gas Factory.

Die Zeit gut auszufüllen, le mérite des Allemands, ist das Verdienst der Deutschen, c'est de bien remplir le temps; sie vergessen zu machen, le talent des Français, das Talent der Franzosen, c'est de le faire oublier. (Madame de Staël)

The current software version is of March 29, 2006, the previous was of January 19, 2001. It provides all functionality specified in the IETF's RFC 3161 using the HTTP protocol, and a bit more, e.g., fortune cookies. The server allows for many hash algorithm provided by OpenSSL.

Warning: "experimental" means that at any time we can stop the service or refuse to serve clients.

The service is brought to you by Peter Sylvester.

Using the service

If you try the service, feel free to send a message to tsa@edelweb.fr telling us how it had worked for you. In case of problems, you may want to read the Experiences section first.

To access to the service, you can either use some time stamping client, or prepare a time stamp request in the following way:

Then send the request using POST as method to one of the following URLs:

In some examples you might find www.edelweb.fr/cgi-bin/service-tsp or another URL on the same host. Such are not valid. Do not use them, the results may not be healthy for your software. You are warned.!!!! :-)

An HTTP GET request, like if you type one of the URLs above in a browser, redirects you to this page. For POST requests, the server may respond either with an object of Content-Type: application/timestamp-reply which, in case of success, contains a digitally signed time stamp token asserting the existance of the messagedigest (not the existance of any data). For certain errors, the service may return an object of with a Content-type: text/html. In case of an error, the TSA does not generate very detailed information. And, sometimes you may simply get some megabytes of garbage.

Examples

Here is an example of a time stamp request content in a hexadecimal representation and formatted using Peter Gutmann's dumpasn1 program:

3027

0201 01

301f

3007

0605 2b0e03021a


0414 f5c1 1c2a
f278 78b3
28ec f05a
8601 0a70
35f6 7c1d

0101 ff
<30 27>
0 30 39: SEQUENCE {
<02 01>
2 02 1: . INTEGER 1
<30 1F>
5 30 31: . SEQUENCE {
<30 07>
7 30 7: . . SEQUENCE {
<06 05>
9 06 5: . . . OBJECT IDENTIFIER sha1 (1 3 14 3 2 26)
: . . . }
<04 14>
16 04 20: . . OCTET STRING
: . . . F5 C1 1C 2A F2 78 78 B3 28 EC F0 5A 86 01 0A 70
: . . . 35 F6 7C 1D
: . . }
<01 01>
38 01 1: . BOOLEAN TRUE
: . }

There are many ways to create a request. You may use something like this perl:

use SHA qw(sha_version);
my $sha = new SHA;
binmode STDIN;
while (<STDIN>) {
$sha->add($_);
}
print pack("H*","3027020101301F300706052B0E03021A0414") .
$sha->digest() .
pack("H*","0101FF") ;

Or, using some shell, you could do something like:

export HASH=`openssl dgst -sha1 file-to-stamp|tail -c40`
At somepoint in time openssl added some comment before the hash, even for STDIN input, thus the 'tail'. Now use the mini asn1 compiler of openssl with the following content of a file "conf":
asn1 = SEQUENCE:tspreq
[tspreq]
version=INTEGER:1
digest=SEQUENCE:digest
certreq=BOOLEAN:true
[digest]
algo=SEQUENCE:sha1
hash=FORMAT:HEX,OCTETSTRING:$ENV::HASH
[sha1]
shaoid=OID:sha1
parameters=NULL
and
openssl asn1parse -genconf conf -out tsprequest
To contact the server, you can use curl
curl --data-binary @tsprequest \
--header "Content-Type: application/timestamp-request" \
-o tspresp http://timestamping.edelweb.fr/service/tsp
to get time stamp response.

You may want to verify the stamp. You can do this for example with openssl (which includes a time stamping feature (i.e. "openssl ts") based on work from OpenTSA). If you want to know how to use timestamping with an OO oriented programming toolkit, you may use your favorite search engine and look for "bouncycastle timestamping.edelweb.fr".

Changing the SHA1 to something more modern is left as an exercise.

Service results

The service is has grown exponentially in the first 10 years. Companies like SUN or Adobe are using the service. Some TTPs (e.g. certfication authorities) use it in regular intervals. From time to time, other time stamping servers come up and go down in the Internet, We have used ourn client software to test about different servers, The number of tests was small and their nature not systematic. We did not try nasty things like badly encoded data units (so far).

Thanks to all who have noted some errors in my implementation.

HTTP as a transport

Socket protocol

Many implementations only use the TCP socket protocol because it seems to be simpler. Nevertheless:

TSP protocol

TSP encoding:

Nobody has tried to send a very long value for a Nonce so far. The length is restricted in our implementation.

Some users succeeded to talk to other servers, but not with us. In almost all cases, the error was an incorrect laxiste implementation of the other server. Frequent errors are related to the provision of the hash value. Some clients just send a hash value, e.g. 20 octets of a hash, or the datainstead of the hash, or a hash value with an invalid length for the hash function.

Error generation

Return from the Future

After an problem in our infrastructure, on NTP server was no longer available, and we accumulated a shift of almost one minute into the future. It seems that nobody actually checks whether the returned time stamps are "plausible". About 500000 timestamps are concerned. Due to the time travel to the presence, some timestamps of 25 november 2013 are issued after others showing an earlier time.

More ...

Some parts of the software used by this TSA is available as a result of the EU IST project OpenEvidence.

There are other known implementations freely available. I don't keep track of them, but here are some: The OpenTSA project for another implementation based on openssl (which has been included into the openssl) and for JAVAoids there is the Bouncycastle.

A list about everything you want to know about time stamping has been compiled since years by Helger Lipmaa.

Time stamping based on RFC 3161 may not be the last word. Other techniques exist, which do not use digital signatures for long term; an implementation is available in the OpenEvidence project.

The initial authors of RFC 3161 were also at the origin of RFC 3029 aka DVCS. This protocol also contains a more enhanced time stamping service which had been implemented in the Clepsydre time stamping demonstrator project for the French Postal Service in 2000.

Statistics

After 10 years, here some statistics showing the numbers of generated tokens each year. No, the figures are not cumulative, there is nearly exponential growth.

10 years statistics