since i digitally sign all of my outgoing email, i’m often put in the position of having to explain what digital signatures are and why one might want to use them. i’ve tried to find a good explanation on the web aimed at the layperson, but i haven’t found anything decent yet, so here’s my best shot at it.
summary:digital signatures are a way of ensuring that a document (such as an email) is from who it says it is and hasn’t been tampered with along the way.
the first thing that you should understand is that email is not at all secure. email protocols were designed back when the internet was used almost exclusively by the military and academic communities. it was a trusting environment and there wasn’t much thought given to malicious hackers. the result is that it is trivially easy to forge email. any clever 12 year old could probably show you how. ie, just because the ‘From:’ line of an email says the message is from grandma, doesn’t mean that it is. many of the Outlook worms that are floating around trick people into opening them by forging the ‘From:’ field so it looks like a message from a friend.
it’s also not very difficult for someone in the right position to change the contents of an email. as an email travels from the sender to the recipient, it usually passes through several different mail servers. anyone with administrative access (legitimate or not) to any of the servers on the path could substitute their own message and no one would be the wiser. another consequence of the insecure design of email systems is that there is no privacy. along the way there are many chances for nefarious people to read the email that you send. you should never write anything in an email that you wouldn’t be comfortable writing on the back of a postcard.
i shouldn’t really have to explain why this can be dangerous. there are an endless number of bad things that a criminal can do when they can impersonate someone. use your imagination or just google for “identity theft”.
now, perhaps you can see the need for some way of being sure that an email really is from who it says it is. this is what digital signatures do. i won’t try to bore you with too much explanation of how it works, but at a surface level, it’s fairly straightforward.
when you sign a message, it makes use of a ‘key’ that is unique to you. actually the key has two parts, both just extremely large numbers; one public, which anyone in the world can look at, and one private which only you can see and should be kept as a carefully guarded secret. the two parts are related to each other with a special mathematical relationship, but knowing the public key won’t give away any clues about the private key. indeed, to be useful, you need to make your public key widely available. mine is online here and there are servers on the web that just host public keys. my public key could also be downloaded from one of them here.
when a message is signed, it’s converted to a number (on a computer, everything is stored as a number at some level anyway, so this is a no-brainer) and a mathematical operation is performed using the message’s number and the sender’s private key. the result is the ‘signature’ of the message and it gets sent along with the message. if even a single byte of the message changes, the signature would be entirely different. since the private key was involved in the operation, no one else could generate the same signature for the message without stealing your private key. the actual math involved is fairly advanced and i won’t try to explain it here. the important part is that there is a similar operation that anyone else can perform using the message, the signature, and the public part of your key that will tell them whether the signature was really generated using the public key’s private counterpart (remember that there is a special mathematical relationship between the public and private keys). ie, they can use the signature and your public key to verify that it was signed with a particular key and hasn’t been modified since it was signed.
that’s a very rough sketch of the theory behind it. if you really want to understand more, read this introduction to cryptography and then just start googling. now for some more practical information. there are two main approaches to digitally signing email: PGP and S/MIME. both have their strengths and weaknesses. PGP is more ubiquitous and it’s what i use, so that’s what i’ll explain and recommend. both also let you encrypt email (solving the privacy problem), but for that, both the sender and recipient need to have keys. actually, the primary purpose of both is encryption, but i think that for most people, handling signatures is a more pressing need.
PGP stands for ‘Pretty Good Privacy’ and is pretty well known. it can be downloaded from pgpi.org for free. there are also commercial versions available and the open source GnuPG, which is what i use. if you want to sign your emails or verify the signatures of others’, download one of those and read its manual to see how you go about setting it up. if you plan on using it very frequently (which you should), you’ll want to figure out how to integrate it with your email client. i can’t possibly cover every possible combination of mail client + PGP implementation. usually doing a google search for “your mail client + PGP” or something will lead you to a plugin and tutorial. eg, this page covers PGP + MS Outlook and enigmail is a plugin that will let you use PGP with mozilla thunderbird. if you use web-based mail like hotmail or yahoo, you’re pretty much out of luck. sorry.
one important point that i should also make is that if you start signing your email, you should get in the habit of signing all of it. if your correspondents get used to receiving unsigned email from you, they’ll have no reason to be suspicious if they get something forged. if you sign everything and they receive an unsigned email claiming to be from you, they might think twice before trusting its validity. i sign every email i send (with the exception of posts to a particular mailing list that blocks all attachments). if you get an email from me that isn’t signed, assume that it’s not really from me and verify things through some other channel.
i should also mention that some email clients (particularly Outlook) don’t always handle signed messages very gracefully. the signature shows up as a small plaintext attachment with a ‘application/pgp’ content-type. this can appear quite mysterious. Outlook even warns the user that since it doesn’t know what it is, it might be a virus (of course, had it actually been a virus, Outlook would have just infected itself and not said anything, but that’s a different rant). this is why i find myself having to explain digital signatures on a pretty regular basis.
as an added incentive to start signing your mail, keep in mind that if everyone always signed their mail and it was expected, spam could be pretty much totally eliminated.
it’s gone on long enough. looking through the logs for this site, i can see that a lot of you are still using Microsoft Internet Explorer as your web browser.
stop it.
(if you’re not, pat yourself on the back and feel free to skip the rest of this)
i could talk about its poor support of web standards and how that makes life hard on web designers and programmers and threatens the wonderful openness of the web and probably none of you care. i don’t blame you. i could talk about how microsoft has stopped IE development (aside from the constant stream of security patches) and there hasn’t been a new release since IE 6 (which was only a minor improvement over 5.5) came out around 3 years ago (a lifetime in software).
anyone who’s been paying attention for the last few years should know that IE is horribly insecure. new major vulnerabilities seem to come out every couple months that expose IE users to worms, viruses, and spyware that damage and slows down their computers.
finally, there at least seem to be some journalists who are putting two and two together. maybe a good scare about having your bank account broken into will get everyone’s attention. or how about going to jail?
now that i’ve got your attention, perhaps i may be able to persuade you to try out an alternative.
firefox is my strongest recommendation. it’s small, fast, FREE, blocks popup windows by default, has a nice google search box right on the taskbar, and has a bunch of other nifty features like tabbed browsing and browser extensions. firefox is a better browser than IE for pretty much every value of “better”. it also has the best standards support of any browser out there and is open source, but you probably don’t care about that kind of thing (though you should).
if firefox is too “open-source commie” for you, maybe you’d prefer opera, which is $39 or free with ads. it’s got more features than any one person could ever use and is ridiculously fast.
if you’re on a Mac and you aren’t using Safari or firefox yet, you get no sympathy from me.
please. it’s time to switch to a better browser. if you’re using IE, go download firefox or opera now and at least try them out. if you’ve already switched go find any of your friends who haven’t switched yet and help them out. if you care about them, you owe it to them.
the weather in new york was so beautiful this weekend that i really should be punished for not taking advantage of it.
my excuse is that i had a new toy to play with.
my primary machine at home has been quite flakey for a long time. hardware issues. it’s also big and loud. so a few weeks ago i broke down and ordered a new system. it’s a Shuttle SN41G2 based system. smaller than a breadbox, quiet, reasonably powerful. i ordered it from Los Alamos Computers, who ship it with Debian GNU/Linux pre-installed.
of course, once i’d spent a few hours failing to get mplayer working on Debian, i decided to wipe it and install Gentoo instead, which is the only linux distro that i’ve ever actually managed to get mplayer and all the video codecs properly installed on.
installing gentoo involves a lot of waiting for things to compile though, so i watched a few movies while it chugged away:
at the Web Standards Project, we’ve been in the process of reinventing ourselves. originally formed to pressure browser makers into supporting web standards, lately, we’ve been changing our focus to developer education. all the browser support in the world will mean nothing if 99% of the pages on the web use invalid markup. to help shape this new mission, we’ve put up a survey to find out a little more about the web developer community. if you are a web developer, please go fill it out and send us your comments.
lani finally made it up for a visit this weekend. just in time for new york to be cold and wet. coming from texas, it hadn’t even occurred to her to bring anything warmer than a t-shirt, so she had to spend the weekend wearing my sweater, which is practically a dress on her.
met up with jP and tamara for dim sum saturday morning followed by gooey sweets from the chinese bakery and music shopping. on our way back to the subway, we took some side streets to avoid the crazy throngs of tourists clogging canal street. on one of them, we stumbled across what must have been a DJ’s wet dream. there is a music library, which gets two copies of every piece of vinyl that is released plus lots of radio stations donate their extras. twice a year, apparently, they go through their inventory and sell off their thirds. most of what they were selling had probably never even been played but it was all cheap. i think jP could have easily spent the rest of the day there (and all of his money) if we’d let him.
back at my place, we watched Bubba Ho-Tep, and a few hours of VH1’s “100 Most Metal Moments of All Time”, which was remarkably entertaining.
sometime around 10, i was tricked into going out to williamsburg. i could have sworn that lani asked if i wanted to go to brooklyn “tomorrow” and i agreed. next thing i knew, she was dragging me to the subway. it was a fun time though. we met up with jP, tamara, and julia at blair and daphne’s, ate some falafel and zaater, drank some PBR and played Barbie, the board game. then we watched Blood Diner, which was absolutely hilarious.
on sunday, i dutifully followed lani around while she went clothes shopping and unsuccessfully shoe shopping. then we had some pastries with Sky and Masha and finally watched The Dead Zone (Sky and Masha have been attempting to watch every movie Christopher Walken has been in).
thraxil now has an atom feed in addition to RSS. the urls are http://thraxil.org/feeds/atom.xml and http://thraxil.org/feeds/index.rss respectively. (there are also individual user feeds in thraxil.org/_your username_/feeds/ if you don’t want to read everyone’s posts).
you may have noticed that the RSS feed is at a different location than it used to be. i’ve got a permanent redirect setup, so this should highlight all the aggregators out there that don’t properly support HTTP response codes.
you may also notice the lack of the ugly little orange ‘XML’ buttons”. the feed urls are in the HTML head so they can be autodetected. i will also eventually put up a sitemap that will link to them. i think that RSS/Atom feeds are the kind of thing that should be totally transparent to the user. it should be good enough to just point your aggregator at thraxil.org and let it auto-detect the feeds. if your aggregator doesn’t work that way, you should think about finding a better one, or requesting that functionality from whoever maintains it. news aggregation will have a hard time escaping beyond the hardcore web geeks if end users have to understand the mechanisms.