Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PGP Key verification #18

Open
weissjeffm opened this issue May 10, 2013 · 8 comments
Open

PGP Key verification #18

weissjeffm opened this issue May 10, 2013 · 8 comments

Comments

@weissjeffm
Copy link
Contributor

If your bitaddress.org site was compromised, how would anyone know?

The signed message at https://www.bitaddress.org/pgpsignedmsg.txt is not worth anything unless we are sure it is signed with your public key and not the attacker's.

How do we verify this? I would imagine you would either have to prove your key pre-dates the site, or it has been signed by someone else in the bitcoin community that people are likely to trust?

@pointbiz
Copy link
Owner

This is a good question. Perhaps I should maintain a CHANGELOG in this git repo that has the same contents as the pgpsignedmsg.txt. That way the hash on bitaddress.org can be double checked on github.

Would that be sufficient?

It would also be nice if a "watch dog" ran a daemon to check the hash of the files on the site.

@weissjeffm
Copy link
Contributor Author

Hm, given how big a target bitaddress.org is (or could easily become), I don't think that is sufficient. It's an improvement, but not by much. A watch dog could help some too, but if it always checked from the same IP at a regular interval, that would be easily defeated (by serving up the pristine site to the watchdog but the hacked version to everyone else).

Honestly, I am having trouble coming up with a good scheme to protect users. Most users (even tech savvy ones) could be easily fooled if an attacker simply pointed the links somewhere else, changed the verification instructions etc.

There has to be a verification scheme that users can perform without being told how by the page itself. Where would such instructions be hosted?

There are probably lots of schemes that would work once they were put in place. People could sign your key, you could use timestamped messages (so people could verify the public key you say is yours, is the same one that was signed by a timestamping service at some 'known safe' time).

@cantonbecker
Copy link

I've been putting some thought into this question and I think it's a tricky one too. I think that posting any verification instructions on bitaddress.org doesn't help since that gives attackers a single target. (Hack the host and you can modify the JS and modify the instructions all at once.)

The other thing I've been thinking about is how to make checksum verification fairly easy for ordinary folks. It's at least as hard to understand as Bitcoin itself.

Here's my idea: What about posting the instructions as a youtube video uploaded using an extremely secure google account -- an account unassociated with any other emails, logins, services, etc. Features:

  1. could demonstrate how to download from github and run a checksum using a variety of operating systems, and
  2. would include the current checksum in the video description text
  3. the video description text could be PGP-signed by pointbiz to prove that he uploaded this video

Like this: http://cl.ly/image/171m2P2D2L1J

I know that google is evil etc. but Google is also huge and as far as I know YouTube has never been hacked before. In any case, it would bet a lot harder to hack than even above-average web hosting providers and domain name registrars.

  • Canton
    PS: Whatever is figured out in this thread I will probably apply to bitcoinpaperwallet.com as well, since I have the exact same concern.

@weissjeffm
Copy link
Contributor Author

@cantonbecker that doesn't solve the original problem. It does make an incremental improvement, where security rests on google who at least offers 2-factor auth.

The root issue is pointbiz has no other public identity that his bitaddress.org users know about. I'm put in a pull request, and I don't even know his name or if he has accounts on reddit or bitcointalk or irc or a blog or what. I don't know what country he lives in. I can't call him up or talk to him on IRC and say, "Hey Joe. What's the fingerprint of your public key, just so I can be sure I have the right one"?

I think without that, we're just going to be grasping at straws and not coming up with any good solution. The issue is "how do we know this wallet software came from the same guy that produced the original one"? Well, we don't even really know who that guy is sufficiently well.

@pointbiz
Copy link
Owner

My bitcointalk username is pointbiz:
https://bitcointalk.org/index.php?action=profile;u=17857

My Public Key fingerprint is:
Key fingerprint = 527B 5C82 B1F6 B2DB 72A0 ECBF 8749 7B91 6397 4F5A

In the bitcointalk thread about the site you can find all the checksums:
https://bitcointalk.org/index.php?topic=43496.0

Those checksums are:
bitaddress.org-v2.4-SHA1-1d5951f6a04dd5a287ac925da4e626870ee58d60.html
bitaddress.org-v2.3-SHA1-1d067dc4f3103622ca9de332c3c86fc57d76ec83.html
bitaddress.org-v2.2-SHA1-d414530eea984e9ebdd40dc27af9078cd73dc3b3.html
bitaddress.org-v2.0-SHA1-c0300a88d2de421106560185e4916f4eee6ed9df.html
bitaddress.org-v1.9-SHA1-a487b495d710d6f617d688e5f758e40c8b6c510e.html
bitaddress.org-v1.8-SHA1-97d52a44eeb261e2398e98e1eed2bd56b99c845a.html
bitaddress.org-v1.7-SHA1-46215e8a2f026b784f29ea86c00c866e634a22fa.html
bitaddress.org-v1.6-SHA1-162d1ff4fd1e09222cbaca6c282672ee6c195e1b.html
bitaddress.org-v1.5-SHA1-f2e410251c8741ac65d29a1c6fb8ef6919b6ab8b.html
bitaddress.org-v1.4-SHA1-5c120c0860032e88a8fd81b802d6f53a5fc082bf.html
bitaddress.org-v1.3-SHA1-88d9a17e6d6286d7840043b6df9980e85f44b8c0.html
bitaddress.org-v1.2-SHA1-1770e5e8993cca823a2ad956e2aab5c291151692.html
bitaddress.org-v1.1-SHA1-969273be66ecf93d8bb3525edc1fa0cf3de228d2.html
bitaddress.org-v1.0-SHA1-8fc60a3ca4eb24c85c31b264e95a9298e41032c2.html
bitaddress.org-v0.9-SHA1-aa61ca480288e1bda00f1f042d60a057880a2321.html
bitaddress.org-v0.8-SHA1-47b989b8a33407df14d21dbd00fad653e0161d6c.html
bitaddress.org-v0.7-SHA1-34e344a0d229dc10c8f5c99ed6b6298e6fc5e39f.html
bitaddress.org-v0.6-SHA1-1cea2d8c437d49c550b9ec1cfc5d02ac85e8199e.html
bitaddress.org-v0.5-SHA1-7ea8d0e32c3583d369dc4079443e0d6e215ac216.html

@pointbiz
Copy link
Owner

pointbiz commented Nov 4, 2013

@ghost
Copy link

ghost commented Nov 9, 2013

Remember it's not possible to tamper with git repositories because git uses the same hash chain technique of the blockchain. Any tampering would be self evident. If you clone the repo, then you can run the html file from your local computer. You would know if the repo had been tampered with simply by trying

git fetch
git rebase origin/master

If it didnt fast forward, the repo has been tampered with. Linux Torvalds already thought of this problem ;)

@ghost
Copy link

ghost commented Nov 9, 2013

@pointbiz I would suggest you PGP sign each commit message. If you merge work, then you should add a commit message PGP signed by you. This way, if someone got access to your github account, they cannot pretend to be you.

FuzzyBearBTC added a commit to peercoin/bitaddress.ppc that referenced this issue Mar 12, 2015
Improved form labels to be clickable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants