The above post was made with a lot of haste, due time constraints. However, I had a little time to think about it, and have refined the procedure a little bit below, to hopefully be a bit more clear:
Key #1 is a standard message signing key, and it could be any valid format such as RSA, PGP, GPG, etc.
Key #2 is the private key to the bitcoin address that you wish to prove that you own.
- Create a message that contains the fingerprint of Key #1, the bitcoin address, the current date and time, and optionally any other info that you want to include such as your -otc nick, you bitcointalk.org nick, your name, etc.
- Sign the message with the bitcoin private key (Key #2).
- Sign the previous signature with Key #1
- Timestamp the whole works with a signature and a time from a trusted timestamp server such as Verisign et al.
- Publish the blob of data on a website somewhere.
The timestamping part of the process is explained somewhat generally here:
http://en.wikipedia.org/wiki/Trusted_timestampingMy understanding is that the data is hashed with a one way hash (perhaps SHA256?) and then the hash is signed by the trusted time stamping authority.
I will attempt to demonstrate using my signature donation address, my -otc GPG key, and a public timestamp server. I fear that the process may fall apart at the timestamp step, but hopefully we can figure this out for ease of use in the future.
My donation address is: 1NgLdhjHfLbcVawMk4DNEv8yf9ZzzNJV6U
My -otc data is here:
http://bitcoin-otc.com/viewgpg.php?nick=rjk and the fingerprint is 585C086DAD92DCA4080BD9740B9FF092ACB50C08
My message is as follows:
I (rjk) control this bitcoin address: 1NgLdhjHfLbcVawMk4DNEv8yf9ZzzNJV6U My key fingerprint is: 585C086DAD92DCA4080BD9740B9FF092ACB50C08 This message was created 5/10/2012 8:40PM Eastern time
When I sign that message with the key for 1NgLdhjHfLbcVawMk4DNEv8yf9ZzzNJV6U, I get the following:
G9fe7xx/dCESzyxkpISxCzNXCXYRA7u1ALR8aG8LC4eRGXhApqA9/Q4OSzJiKgf0Pgi5ifnwkHcVSJH93/tadsI=
I then sign the signature with my -otc ID:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
G9fe7xx/dCESzyxkpISxCzNXCXYRA7u1ALR8aG8LC4eRGXhApqA9/Q4OSzJiKgf0Pgi5ifnwkHcVSJH93/tadsI=
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (MingW32)
iQEcBAEBAgAGBQJPrF8WAAoJEAuf8JKstQwIt4oIAIBTOMSf8Dfa0PcXTlzuhniZ
VdcecUUILR28Ikvq5xux2TrW6dm9hpnkwUcluPeq6pCo9bMlYF+jgN1iTnYUFdN0
wMlB9PSPs5GSN4WDyu5sKdLaN5hVZTXb4IabGJNvDyqkIMco02VgLZR5+AoX6BJj
wh4qk26Ckv/bLjPxRWW57rdUUOw83I/YTTFuPwMQbp8AsJADpRhQJhuNo5aE6SGW
R5c6TiTg9n4Mva02a4YZjzZ+dNuX21mH6hMDroI4pk8gQJz9gWLotGCO0JF59Y7e
uSnWRzT0YJ84cP8uc46LrUWHvgK4kM9jbFlSr8WhPpp/WsH7eGn8sbbH5fH6eFE=
=pKQ2
-----END PGP SIGNATURE-----
Now I need to hash the above blob and sign it with a trusted timestamp server. There is a web service at
http://timemarker.org/en/GetStamp.aspx but it doesn't seem to load reliably. There may be better services, or it might be possible to do it a different way. I was able to get it to work though, and the result is:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Timestamp-version: 1.0
Description: timestamp
Signed-by: http://timeMarker.org/
Timestamp: Fri, 11 May 2012 00:45:03 GMT
Number: 13080
Ref-Hash-SHA512: 546100a6ee3597206d5997322978960e6abf5afdb66823198bdea632b4d7877d9d9a42ec352eed8a37ab1710730e21cfedafc616eca7a700e1989ffa1e051328
Ref-Hash-RIPEMD160: 83d20c3a748cd05a6bc55daad2c720d6b4b3cb1f
Hash-SHA512: 7d2a8a4319c01bfef0e404948ab0fe9fa28cf012e1e7a9a45c5da53bed1a0a363e6aadb7aab20f6e8dab96d9b9885a1222ccb6dc4f2289dea60d44ed5113b1c0
Hash-RIPEMD160: 868e087ef8f9024209e73e0fee52d2971513c657
-----BEGIN PGP SIGNATURE-----
Version: BCPG v1.32
iQEcBAEBAgAGBQJPrGEPAAoJEPKfyyzv5FwHGTAIAJeBSIPa9SedxzsdhnnfHI8i
EDgZH/H6qt2JvmLxr9oPnGFc2jb6+45cTjS8c3LsbKMk8eFt0afF+S4D7POiXl9M
fs6sW8TzkAxbEf1qvIO4c0js4iohBY2UnfmfcPH018b3a/PYVYy06qcaMzJq3IP8
O09msBgT/LyXNw37fuf3eaXTbUVYJxcYvPYKydE8IZ4W1IHVH0coMWKcCg6AT6SY
mcxwxgichIi1HQr82bM1MpSsWKE3v+hao1dvRORTpbjM+FQR6tgQ8baYL2uAkHBK
6RGs/JDVmcqhtx5u67tDq4oHEpxoMOk2EGZ9puJMetdaI4Z2tNRK0oUedBSDvRM=
=ZkFP
-----END PGP SIGNATURE-----
So theoretically, that should be able to prove that I controlled 1NgLdhjHfLbcVawMk4DNEv8yf9ZzzNJV6U prior to 00:45:03 GMT 5/11/2012, as per the time stamping service.