Idea for storing trusted timestamps in Noark 5

Petter Reinholdtsen pere at hungry.com
Tue Sep 18 16:14:09 CEST 2018


I would like to pick up on this idea to store information in the archive
that can be used to verify that an electronic document have not changed
since it was archived.

There are several ways to verify this, and here I will focus on RFC
3161, the Trusted Timestamping protocol.  The protocol is used by many,
like Adobe to stamp PDFs and Microsoft to stamp binaries.  I believe it
would be a huge step forward if Nikita would use it to stamp documents.

The stamp is a binary blob consisting based on a cryptographic hash H of
the document, the current time T and the private key K of the
timestamping servie with public key P.  The stamp is a statement
claiming that 'the timestamping service saw the hash H at time T', and
as long as the private key K is kept secret, anyone with the public key
P can be sure that only those with proper access to key K have made such
claim.

If we store the binary stamp blob alongside public key K (and preferably
its certificate signature chain), we have everything we need to confirm
that a binary with hash H have not been chanced since the stamp was
created.

So, given a binary blob around 2.5k in size, and a certificate possibly
6k in size, how can we best store this in the archive to have what is
needed to state with confidence that the documents are unchanged?

Note, it is perfectly possible to get several stamps for one document.
Every extra stamp increases the confidence in the documents validity, as
it is more than twice as hard to break into two timestamping vendors and
steal their private key than to break into only one of them. :)

Kent suggested to store the binary blob in a noark 5 metadata field.
Where could it go?

I suggested to store it as a new document with a name derived from the
document being signed.  I know how to do this, but am not convinced it
is the best way to do it.

Anyone got any other suggestions?  A goal must be for the stamps to make
it into the national archive when a Noark 5 archive is placed in their
depot, so we need to follow the requirements provided by the national
archive.

In addition to using openssl, one can use both a java library Bounty
castle and the Python library rfc3161ng.  This would allow us to
implement the signing on both the client and server end, if we figure
out how to best do it. :)

-- 
Happy hacking
Petter Reinholdtsen


More information about the nikita-noark mailing list