Tuesday 17 November 2015

Launching the beta version of a Blockchain proof of existence service

The Blockchain timestamping software I’ve been working on for the past couple of months (blog post part 1 and part 2) is finally ready for beta-testing at http://BlkProof.com

The site calculates fingerprints (SHA256 checksums) of user’s files and write these to the Bitcoin Blockchain. The actually calculation happens in the user’s browser, thus the file itself is never shared or even transferred over the internet, making it suitable files with sensitive or private content. If ownership of something included in the file is later contested, the user can refer to the timestamped fingerprint in the Bitcoin Blockchain as proof that they had access to the file at this earlier point in time (with the caveat that only existence is proven, more on this below).

Components of the website

The BlkProof website consists of 3 layers:
  • the HTML and Javascript front-end loaded in the user’s browser. This is includes everything the user sees, as well as the functionality needed to compute the SHA256 fingerprints of files.
  • a mid-tier written in Go and hosted on Google App Engine. This code verifies payment/vouchers and sends the confirmation email when the fingerprint is written to a block.
  • a backend written in Go and hosted on Google Compute Engine. This is where the heavy lifting is done. It’s basically a SPV Bitcoin Wallet, with persistent connections to multiple other nodes in the Bitcoin network. Verified requests are received from the mid-tier, and corresponding Bitcoin transactions are built and broadcast to the network with the appropriate fees to miners. It watches the Bitcoin network and alerts the mid-tier when a relevant transaction is confirmed by a miner.

Each of these layers are currently in beta, with several parts still lacking. If you want to help test the site, try using it in various ways and let me know if you perform an operation that doesn’t work as expected. For some free trial runs, use voucher blkproofZfUXa4Q1ZEfcCLNmVJCC9ExbWipvfJjP5kNEXq5QcpJbKRg (copy-paste it into the voucher-field when ready to write a fingerprint to the Blockchain)

From proof of existence to proof of creation

A timestamped fingerprint in the Bitcoin Blockchain proves that a certain file existed at a point in time. Neither BlkProof or the Blockchain tracks where the fingerprint came from, so anyone could have put it there.

To get from this to proof that you created the file, your name needs to be in the file itself. For documents this can be achieved by simply writing you name in it, for things like audio and images, various tags can be used (eg. ID3). If neither of these options are viable, you can simply bundle the file(s) you want to have timestamped with a text file in something like a zip-archive, then timestamp the fingerprint of the archive (note that in this situation you need to keep a copy of that exact zip-file around for when you need to prove that exactly that file (and its content) is the one that has that fingerprint).

Will this actually be accepted as proof of creation? I am not a lawyer, but proving that you had access to a file at an earlier point in time than anyone else claiming to have created it should be pretty convincing evidence.

No comments:

Post a Comment