Web Of Trust

Authenticating yourself using the Internet

Citation
, XML

Abstract

Most people using the Internet eventually “sign up” to become members of various sites where they can post stuff. It is suggested that by posting certain identical (“public-key cryptography”) data at several of those sites, an individual can establish a verifiable identity, simply because only that person knows the passwords for posting data at those sites. Since the identical data most likely means the same person did the posting (and the more sites, the better!), it becomes possible to trust that other data also originated from that person, via the mechanism of a “digital signature”. Such data might be a “self-signed” SSL Certificate for a web site the person operates –someone else seeing a warning message about the site, presented by the browser, can find plenty of evidence associating the certificate with the genuine site-operator, and not a hacker.

Much of the following text was originally posted at the “HalfBakery” web site ( http://www.halfbakery.com/idea/Web_20Of_20Trust ). It is hoped that after you read this, you will understand why one person is posting the same thing in multiple places.

Imagine a newly-developed web site that is to be accessed via the “https” protocol. The ordinary “http” protocol is occasionally exploited by hackers, to redirect traffic from one web site to another, which does bad things like feed viruses to your computer. A web site with beefed-up security, such as by using the https protocol, is harder to hack that way.

One aspect of that increased security is that the site needs something called an “SSL Certificate” ( http://www.networksolutions.com/education/what-is-an-ssl-certificate/ ); otherwise the browser won’t connect to the site using the https protocol.

There are various ways to obtain an SSL Certificate. Organizations such as Network Solutions, known as “Certificate Authorities”, will be happy to sell you one. But first you have to provide them with a bunch of information so that they can verify you are who you claim to be (that’s probably where most of the purchase price goes, the work they do to verify your information).

The SSL Certificate that you obtain from the Certificate Authority (“CA”) will be “signed” by that company. Your browser probably includes a “root certificate” provided by that company; the “signing” process links your SSL Certificate (and many others that they sell) to theirs. So when the browser encounters your site and your site responds by presenting its certificate, the browser can see the connection between it and the root certificate, and “know” that the CA that provided the root certificate verified you, and therefore any web pages the browser loads almost certainly actually came from your site.

There have been a few cases in which the CA company has been hacked, and its root certificate “key” stolen. The key is secret and used to create the root certificate that the CA provided to the browser. The hacker can use it to create equivalent root certificates –and linked web-site-specific SSL Certificates– that your browser will accept without question. Lots of certificates need to be revoked, and recreated from scratch, when that happens. Still, this is a rarer thing than the ordinary site-hacking described in the first paragraph above.

The process of creating an SSL Certificate is fairly simple, so you could create your own “self-signed” certificate. More, you can act as your own Certificate Authority, and create a “root key” and a “root certificate”, and then use it to sign your ordinary SSL Certificate. But in neither case is such a certificate linked to a widely-recognized CA, so no browser will automatically accept it –the browser-users have to each one specifically tell the browser to accept it.

Why should they?

Is there any way that someone with a self-signed certificate can create a Web Of Trust such that you could be reasonably sure that “someone” sending that certificate to your browser was actually the site-owner?

That’s where this idea comes into play. Part of it relates to something already known, “digital signatures” ( https://www.gnupg.org/gph/en/manual/x135.html ), and “public key cryptography”. You use a special program to create a public key (which you make public) and a private key (which you keep secret). Someone wanting to communicate with you securely would encrypt the message with your public key, but it can only be decrypted with the private key, and only you are the one who has that.

It works in reverse; you can encrypt a public message with the private key, and only your public key can decrypt it, so anyone decrypting the message will know it came from you.

The digital signature is a variation on that theme. A public file, like an SSL Certificate, can be linked to a “signature file” which you created with your private key, and only your public key can prove that the signature file is associated with the public file –which means the public file came from you only.

“However!” you say, “a hacker pretending to be you can also create a public key and put your name on it –so the verification problem remains!”

Not so fast!! Here is where we can actually use the Internet as a Web Of Trust. Think about how many nooks and crannies you regularly visit, and how many of those are places where you signed up to become a member (perhaps including WordPress here).

Suppose you put certain data, like your public key, and your SSL Certificate, and your associated digital signature file, in multiple places on the Web (also include a file listing all those places). They will be the same files in all those places, obviously. A hacker trying to compromise your dot-com web site would have to also compromise all those other sites, or at least all your accounts at those other sites, in order to replace the critical files so that they were as alike afterward, as before the hack.

Since accomplishing that is highly improbable/impractical (unless you did something truly dumb, like use the exact same password everywhere), the net result is that anyone can verify that your SSL Certificate came from you only, and would then have a reason to tell the browser to accept the certificate.

And so I include the text-content of my public key here. You can compare its data to the data at the HalfBakery (see link at top of article), and see it is the same data (not counting certain spaces). Another place to find a copy of the data is the “Slashdot” news-for-nerds site ( http://slashdot.org/journal/1201485/my-public-key-data )

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQGNBFP0m3QBDAC9ggIDfVLDZWNjqlaF3zsb9yn2kF6ekG5P0a5ZSCcX1KtwEOsQ
RtlVzB2eFi5cGBrNlHO/6kvywo0rogHgUPzQAasLELcMBHALjgF4Gk83PKjdgQGN
e7wqS+0Zux1x0Vgqp7Fg4OHot1FvHtsWkUrNjC0KMlspvNxm5gOh8ohv8weLqaNX
Ewkg0GFTj0OLMTW3vCIApabkTZ23PA4BAdRRtMSKzyXIfwkiVzZwB4BqHnShhD8G
orfXOuc++M4gYH+1c5VYwLrtHTgqwaNkaV/yqa6C+fFA+Dww3PN79oetfc2ugaUT
uV/RBGydyBJQ3o7TT2z92UJ4O5Js9P1XChF8DmwgbxAv52pRVlpwEL1ByB0PQghW
uzjWZmxMfQcW0Uvy4WHeFy2ayN1qgXCXPVw/XuRqIlsKrXAiSp1oYzRci6wKrJ4d
LsUViFcZVN7jMoh+KMuvQ2kGcc37CJe8rEr/dWHPoHANL7V6MKDKlvbTjr9/VA8P
DY8+p/yyQ8gN+l0AEQEAAbQ8VmVybm9uIE5lbWl0eiAoQWZpY2lvbmFkbyBvZiBN
YWQgU2NpZW5jZSkgPHZuZW1pdHpAcGlubi5uZXQ+iQG4BBMBAgAiBQJT9Jt0AhsD
BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDGbQ27MGUrEiZNC/9+SQjn8v8t
0iFtl0s7eCrL4wiPuRnLFzhW+JTvMIgtItFlEvVIhY9sKqk6R2liI/vbAwyztfGw
YZZPIJClNT4XL9qhvAIcUVSteflUUVn6fTmKleI7/fiYbYD2ZI0dKsUTGucoiG4Y
xbmE+V2W+OyNZmnMkovQrTb9H16eLOT1PMa0zEDKZ+MfNv2KO0SdMzqZS6RIn7Qu
kosiQR3lh6wmYtoPTg3iX46X30yTQMxxOPrM7JcJdUQX4LdaKLI1ecXNA4jtzs2E
SeBy9alFtpmcjznhrq7P9PXQ+WawgRuyON7Xsvdx+aKmhmZfsO/GdYYD0pGYkYRv
NW3vwY0XHlkKD/pwC4QfFE/TQO0CB8fOH+gajQwUQ5Uk9ztc6m6GFE//quVmGujE
VRTa8wZEpfEX6cI6PXeUqNcJrRFGCBDn0HNce7oUlAacAKn43bF8tfwmevu5JrnT
UKLWnKm2HznB3KmZiQHeGNWIVFdctKqGkvuh9jcARqhpJ8cYZ6YAMWI=
=FZsy
-----END PGP PUBLIC KEY BLOCK-----

Also, while the above is just the text-content, the actual public-key-file can be downloaded from another site ( http://www.nemitz.net/vernon/vnemitz.gpg ), opened with a text editor, and compared.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s