Things CS people don’t understand: Strong Encryption

Very very smart people can be very very wrong.

I’m listening to a recent podcast by Sam Harris, who is a very smart, very rational, very open-minded person. And also a completely wrong person.

He proposes an interesting analogy: Do you have the right to build an impregnable room in your house, that nobody can enter or break into without your permission?

I think that many layman think of encryption like they think of the locks on their door. Unfortunately layman don’t realize that the only reason to lock your door is to keep a confused neighbor from wandering in accidentally, and that locks are incapable of stopping anyone. They offer a feeling of security, but no actual security.

You can make your door perhaps more difficult to break into by adding 27 locks, a bar across the back, steel screens, etc. This will make your door “more secure”, and increase the amount of work an attacker must undertake to be able to get through.

“Strong encryption” is not like this. There is no “variable difficulty level” possibility. You build an impregnable room, and hand out keys, and now ONLY the people who have the keys can get in. (Or someone who has access to trillions of times more computing power than the entirety of the earth combined, but we’ll ignore the ‘attacks by god’ case.)

Sam thinks about things in terms of morality and philosophy rather than technology, which is understandable as that is his field. Unfortunately this means his arguments come off as a philosopher arguing that gravity must be incorrect because they feel it is morally incorrect to constrain people to the ground.

I would actually love for Sam to understand this, and then to get his thoughts on the moral and philosophical issues. (Assume that in 2050 we have the capability to upload your mind into a computer. Do you want Apple or the government having the decryption key to your brain?)

What this made me wonder is how incredibly smart people can have such incredibly wrong ideas. The only thing I can come up with is that they’re getting bad information.  I’m not willing to just say “blame the media” on this one. I think it’s a matter of how we communicate. It’s difficult to find information that doesn’t attempt to wrap up the technology, the morality, the legality, and the author’s opinions. What source could Sam go do that would educate him about encryption that did NOT attempt to make any argument about reasons behind it? (Not everyone can get a computer science degree just to try and understand a single issue!)

It makes me wonder about how I communicate ideas, and how I can do it better. How can I tag certain parts of what I’m saying as “philosophy”, but then tag another part of it with “provable science”?  How can I make you, the reader, understand which parts of what I’m saying I’m an expert in, and about which parts I’m just an interested laymen?

We’ll start with this: Computer Science is my field. Morality/Ethics/Philosophy is a hobby. Speaking from the computer science front: either you have digital secrets, or you have none at all. Philosophically: I am for this. Morally: Uncertain.

Vimmification Part 1, upgrades!

Setting up a nice clean vim install for myself. Tired of my vim feeling bloated and slow, so I’m rolling my own config distro with just what I need.

Step 1: I need the latest version! Snow Leopard ships with 7.2 instead of 7.3, and I just don’t find being outdated to be acceptable. Fortunately macvim to the rescue!

MacVim is a nice OSX GUI wrapper for Vim. Adds that little bit of polish on over the top. Fortunately it also comes complete with it’s own Vim 7.3 install! And its “mvim” terminal command is apparently smart enough to know that it should act like normal terminal vim if called from an alias of that name. So to get the latest macvim set up and linked, all we need to do is: (Assuming you’re using brew, which you should be.)

brew install macvim
ln -s /usr/local/bin/mvim /usr/local/bin/vim

This leaves us with one problem however. The system installed /usr/bin/vim comes first in the default $PATH. In order to get the correct version simply by typing “vim” we need to reorder /etc/paths to put /usr/local/bin ahead of /usr/bin. Once that is done and saved, reload your shell, fire up vim, and you should see version 7.3.

Alright excellent, updated version of Vim ready to roll. Now that wonderful “set relativenumber” line in my .vimrc will no longer throw errors. Time to start setting it up the way I like it.