Alright folks, we're just ready to start our last talk, which will be time stamping with
open timestamps by Timothy Riddia-Eli.
Okay, thank you.
So I'm a Red Hat employee that works as software engineer but not for this stuff.
So what is time stamping?
What is time stamping?
Time stamping is needed to be sure a document or a file is made in a specific date.
And for example, in Italy, because I'm Italian, the law requires that the data are ushered
by a public officer, so you can't do that by yourself.
So what about digital documents?
Well usually digital time stamping is made on a third-party data center, so you must
trust some other authority, and it's usually a certification authority.
So how we can do that without reeling on a third-party authority?
So we could use the blockchain, so you create the hash of a file or information, and you
put this hash inside the blockchain, so you can demonstrate this hash was present on a
specific time.
So why the blockchain?
It's safe because it's backed by millions and millions of dollars.
It's open in the case of Bitcoin we use.
It's not cheap to create a new Bitcoin because mining is an expensive process, but it's quite
cheap to use that.
So why open time stamping?
So the blockchain is open, anybody can write on it, anybody could do the same thing directly
without using the open time stamp or another framework.
So open time is a standard way of doing the same thing in a trustless way, so without trust
no one.
It was proposed by Peter Todd, a Bitcoin Core developer.
It's used by dozens of different companies, and it's almost because in information technology
we can't have infinite storage, so it's almost infinitely scalable because it uses a Merkle
tree.
So what is a Merkle tree?
Merkle tree is a tree where you just put the top hash or the root of Merkle tree inside
the blockchain, but you can demonstrate that your file or your information existed without
the need to push any hash inside the blockchain, but only the top hash or the root.
So open time stamp provides users multiple and easy way to create an independent verify
time stamps.
Open time stamp project on GitHub includes these different implementation.
The first one was written in Python.
Then somebody has wrote one in Java, then in JavaScript because it's easier to use in
browser or in some Node.js stuff.
They also started to write a Rust open time stamp because Rust, as you told in a precedent
talk, it's good languages because it's safe because it's fast, low memory usage, etc.
Or on the open time stamp.org website that uses the JavaScript implementation.
So now for this slide, I show an example of usage with the Python client because it was
the first one.
So if you want to use that, you just need to use OTS stamp command and stamp command
create the Merkle tree of the file, submit it to some remote server that are the server
that write the information on the Bitcoin blockchain every summer.
So when you do stamp, the operation creates the hash of the original file concatenates
with random nonce for privacy just to avoid having your hash on the Merkle tree directly
and recalculate the hash.
So you have double SHA hash and it sent the value to the calendar server.
So the calendar server add the hash to the Merkle tree and return the response to the
client in order to generate the OTS file that is a file you will need to verify the signature
later.
Of course this file is incomplete because it doesn't contain the record in the blockchain
because you need to wait the calendar server to send the record to the blockchain and the
Bitcoin networking to mine the block with the Merkle, etc.
So when a time is elapsed, some hour the user rerun the OTS tool with upgrade operation
and this update the file with which block of the Bitcoin blockchain includes the hash.
It's also possible to create a timestamp for several different files simultaneously.
In fact we did a test when we got all the ashes of all the files included in archive.org
not the web.archive.org, the archive.org that includes the petabytes of files.
Of course we didn't download all the files but archive.org API supports to you can ask
the hash directly.
So we took all the ashes from archive.org and we were able to put all these million files
inside only one Merkle route.
So it's absolutely scalable because you can put tons of files only with one Bitcoin
transactions that you don't need to do yourself but is the calendar server that you have.
So it's absolutely free.
So the verification requires both the file and the original file or the original hash.
And if you want to do that by yourself so without trusting nobody that's what you want.
You need an up-to-date Bitcoin node.
You don't need a full node but since the attestation is on the block either.
But so you just need a prune node that only so you need only a few gigabytes of data instead
of almost one terabyte of a full node.
So if you do that you are sure nobody can fake your check because OTS asks directly the
blockchain and so you don't need to trust anybody including the calendar servers that
put your verification on the blockchain.
So the OTS file includes three main sessions.
The hash with the nodes, the Merkle tree construction because you need to know which other hash you
have in the Merkle tree in order to be sure your file is in the tree by your root and
which Bitcoin block includes your hash.
So the timestamp is saved on a binary file to save space and to avoid problem of interpretation
especially on Windows.
The file is as OTS extension and it starts with this line.
So if you use the OTS information command with the file it prints lots of information
so I can't show them because it shows all the single Merkle ashes.
But you can try that at home and you can see which Merkle tree is how the Merkle tree is
created.
So this is some example of open timestamp usage.
The website I presented at the start, Proofmod.org that is an Android app by Guardian project
that it uses to certify a photo is valid with GPS data etc.
And ASA check is an example of how you can use timestamp newspaper article and to stamp
it's a website that you can put the stamp on a Twitter.
The end.