Title: Proof of authenticity (POA) using the bitcoin blockchain Post by: wolciph on August 26, 2011, 04:25:45 PM The purpose of the following method and script is to permit one to provide a proof of the authenticity of a document, that is prove that a document is the original version, that it has not been altered since it's first publication.
This can have several uses, such as proving authorship, or preventing an adversary from spreading disinformation or confusion about for instance the date and location of an event (e.g. if "Anonymous" wishes to coordinate a DDOS attack). Another example which triggered my interest in this is that of Breivik's manifesto of which some decided to spread altered versions in order to make the original message difficult to find and spread. (note: I do not support Breivik; I am merely providing a method that can help all people, regardless of their intention. In the end, this method benefits the Truth.) The idea is to insert a hash of a document in a block before publishing said document. Then, as the blockchain grows, it becomes increasingly difficult to modify this block and the hash it contains, thus providing a cryptographic proof that this exact document existed at a certain point in time. So, in order to be able to prove a document of mine is authentic I would first have to publish it's hash in the blockchain and then wait a sufficient amount of time for two things: - that the blockchain has grown sufficiently that modifying the block of my hash has become infeasible; - and more importantly, that enough time had elapsed that there would be no doubt in the eyes of my public that the document was not publicly available at the time I inserted the hash. Thus, depending on the situation, waiting weeks or months after insertion of the hash may be necessary before publishing. Technically, there are several ways of inserting a hash in the blockchain. One would be to send transactions of amounts which, once concatenated, would form the hash. This method is somewhat impractical. Another is to generate a "false" bitcoin address formed from the hash and to send a small amount of bitcoins to it (e.g. one satoshi). This is the method implemented in my script. Yet another would be to instead generate the bitcoin private key from the hash, by using it as seed for the pseudo-random number generator for instance, and later disclosing this private key to enable verification. Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: wolciph on August 26, 2011, 04:26:56 PM I can already hear the screams of "Satoshi intended the bitcoin blockchain for bitcoin transfer only" and the like but once again I am merely providing a tool which you may or may not use at your own discretion. There is also no blockchain more secure than that of bitcoin and I am afraid that a blockchain specifically for the purpose of POA may never catch on and never be secure enough against powerful adverseries. Anyhow, I do not see this method being used on a daily basis by many so it would not pose much risk of overloading the network, especially given the need for transaction fees.
Bellow, is a bash script which enables creation and verification of a bitcoin POA. It requires the original bitcoin client running as a daemon for creation of a POA and Gavin Andresen's dbdump.py (https://github.com/gavinandresen/bitcointools/tree/45f5c0030ac9a121fff504b0ffd27efc27423bde) for verification. Code: #!/bin/bash Usage examples: Code: These tasks require the bitcoin server to be active: Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: wolciph on August 26, 2011, 04:30:37 PM I would like to thank Grondilu for his bash library (I guess we could call it that) for generating bitcoin addresses.
Here is a bitpoa info file for the script, that I just made for testing purposes: Code: file:bitpoa.bash Code: bitpoa -v -f bitpoa.bash -i bitpoa.bash.poa (blockexplorer link: http://blockexplorer.com/address/1Dga4BiLThvbFeA7b2sxzQx2G85uCk67kr) Megaupload link to an archive containing the script, grondilu's script and Gavin Andresen's tools: http://www.megaupload.com/?d=BR470E20 (sha256sum: 76ee03f4dc494af8fe16d0340679803eeb745394dbb97d1e1e96c8ebe3d5db2a bitpoa.tar.gz) Sorry for multiple posts but I'm having problems sending it all in one chunk. Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: theymos on August 27, 2011, 04:21:44 AM There's a very easy way to do this without any program:
First, SHA-1 the data you want to timestamp (or RIPEMD-160, or SHA-256 and truncate to 160 bits). Then use this to turn it into an address: http://blockexplorer.com/q/hashtoaddress/putHashHere Then, send any amount of BTC to the returned address. (If you modify Bitcoin, it's actually possible to create a transaction that sends 0 BTC to an address, which would also work. Then you don't have to destroy BTC.) Finally, you can see the timestamp here: http://blockexplorer.com/q/addressfirstseen/timestampAddress Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: ArtForz on August 27, 2011, 05:23:30 AM nice hack, but innovative?
https://bitcointalk.org/index.php?topic=24605.0 Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: wolciph on August 27, 2011, 05:02:21 PM I did do a quick search before posting but didn't find anything.
Well, anyhow, my implementation still has the advantage of being automated and not relying on trust in blockexplorer I guess. Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: Sukrim on August 27, 2011, 06:06:27 PM You can do this on your own offline as well.
Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: Frozenlock on September 11, 2011, 05:57:32 PM Just so you know, I used this in a real life situation.
I just moved in a new apartment. The previous occupant obviously left a window opened and it rained inside. Now part of the floor is ugly. http://img8.imageshack.us/img8/8408/dsc01021mf.jpg I told the owner about it, but I still want to keep a proof that I didn't do it. (What if he dies? Did he wrote somewhere the floor is in this state?) Instead of "hoping" nothing bad happens, I took some pictures, zipped them, got the SHA-1 and sent 0.01 BTC to the equivalent address. Here is the official time-stamp that will protect my ass if I ever need to: http://blockexplorer.com/q/addressfirstseen/1Lx3wYgWJJ6Rxj3EyXf8riMFd9SCZNVFzD Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: ElectricMucus on September 11, 2011, 06:05:07 PM A more automated way to accomplish this would be nice.
Lets do this :) Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: molecular on March 31, 2012, 09:04:07 PM A more automated way to accomplish this would be nice. Lets do this :) the service could safe-keep the data itself, too (just in case the customer misplaces it) and help with providing expert witnesses for use in court. Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: bitcool on March 31, 2012, 09:27:18 PM Just so you know, I used this in a real life situation. I just moved in a new apartment. The previous occupant obviously left a window opened and it rained inside. Now part of the floor is ugly. http://img8.imageshack.us/img8/8408/dsc01021mf.jpg I told the owner about it, but I still want to keep a proof that I didn't do it. (What if he dies? Did he wrote somewhere the floor is in this state?) Instead of "hoping" nothing bad happens, I took some pictures, zipped them, got the SHA-1 and sent 0.01 BTC to the equivalent address. Here is the official time-stamp that will protect my ass if I ever need to: http://blockexplorer.com/q/addressfirstseen/1Lx3wYgWJJ6Rxj3EyXf8riMFd9SCZNVFzD Smart but a more sustainable approach will be better. Edit: Sorry, didn't scroll up far enough to see theymos's comment. Title: Re: Proof of authenticity (POA) using the bitcoin blockchain Post by: mila on March 31, 2012, 09:36:26 PM (If you modify Bitcoin, it's actually possible to create a transaction that sends 0 BTC to an address, which would also work. Then you don't have to destroy BTC.) I thought it was legal to send 0.00 btc as long as I pay the .0005 fee I like the approach of commit coin. they do not destroy the bitcoins at all, in fact the message is computed from the send to and send from transactions. but could be pruned from blockchain eventually. (unless a satoshi is left in the account, but that could be spend by the attacker and empty address pruned anyway) maybe burning bitcoin is the cost of this |