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.

The parable of the boat builder…

Once upon a time there was a man who loved to build boats. Building boats takes a lot of space, and his apartment just wasn’t big enough. He went to a local warehouse and asked if he could rent some space to build a boat. They worked out an agreement. He would build boats and sell them to the burgeoning local sailing industry, and in exchange for 30% of the profit from the sales the warehouse would let him use the space for free during construction.

“One small caveat” said the warehouse owner, “we have final say on the distribution of your boats. We may suggest certain changes we think will help their marketability.”

The man agreed. Surely allowing some oversight would be no problem whatsover. He knew the local market, and he knew his boats would sell! He began drawing the designs that very day.

The man worked 12 hours a day for two weeks! Over 150 hours of work later he had the plans for the first boat. He went to the warehouse and began to lay the forms for the keel. As he was laying the forms one of the warehouse managers came by and looked at his plans.

“Looks great!” said the manager, “However I thought we were getting a sailboat, and this appears to be a small yacht! Our company has recently decided that we want to be ecologically sound, so we can’t really support powered boats. Redesign it as a sailboat and then you can start building it.”

The boat builder agreed, but he began to think that perhaps this oversight agreement may not be as simple as he thought. Throwing away his last two weeks of effort he began again, this time designing an eco-friendly sailboat.

Two weeks later, plans for the sailboat in hand, the boat builder once again began construction. He worked uninterrupted for 2 months, day in and day out, until after over 700 hours of hard labor he finally had his boat completed. It was a beautiful solid wood boat in natural hardwood color, with natural white cloth sails. After admiring his handiwork he went to tell the warehouse managers to have them begin looking for a buyer.

The warehouse managers looked at his boat and seemed suitably impressed. After a few moments though one of them spoke up. “It’s quite a beautiful boat, no doubt about it. In the last month however, we’ve decided to try to sell carbon-fiber racing boats, and we want people to think of these boats when they think of sailing! So before we try selling this boat you need to paint it bright red and change the sail for blue nylon. That should make it acceptable to the current market!”

The boat builder was astounded! A classic wooden boat with natural cloth sails and they wanted to make it look like plastic! He would have none of it, and he told this to the owners in no uncertain terms! The warehouse owners were firm though. Carbon-fiber racing boats were what people should be using, they said, and if he didn’t comply then they were not going to be able to sell his boat. The boat builder said that he was fine with that, and he would just take his boat and leave.

“Not so fast”, one of the owners responded, “you’ve been using our space without paying rent, and we’re due a portion of the value with the boat. If you don’t change it the way we want and sell it, then you can’t take it anywhere. There is no third option, this is our warehouse, and partly our boat.”

The boat builder agreed, there was nothing he could do. The owners went away and the boat builder sat and looked at his boat for a time. Then he went to his boat, puled out his lighter, lit the corner of sail, and walked from the building and never returned.

Where do you draw the line? ? Where should you? And what about the boating consumers and their ability to choose when the market is this controlled?

If you haven’t guessed, I’m not really for walled gardens, no matter how well decorated they are.

On data ownership…

Something I’ve been working on in my programming projects recently is ways to allow users to use their data from outside my service, and to take the data they have in services I create elsewhere.
In the new era portability is king. If you don’t allow users to use their data how they want, your service is utterly useless and doomed to failure.

Whoa there, you say, them’s some big bold words! If it sounds like I’m including the large portion of current generation products people are familiar with as the target of my wrath, you’re right on the money. Let’s take a look at a recent real life example, MobileMe.

MobileMe offers some excellent syncing tools for those of us with Macs and iPhones. Over-the-air (push!) syncing of contacts and calendars is a great tool, especially for those of us with a desktop, a laptop, an iPhone, and an iPod Touch all trying to stay perfectly in sync. However that’s exactly where the scope of the tool ends. Want to share contacts/calendars with someone else as “joint ownership”? Screwed! Can’t do it. So MobileMe loses one user/evangelist to Google, where I can choose to allow another user to collaboratively edit my calendar. MobileMe ends up in the trash heap because the data I give it can only be used in the ways that MobileMe wants me to use it, and I have different ideas.
Google also frustrates me though because I would very much like to set up a group of shared contacts between Bev and my accounts so we could maintain contact synchronization, but that’s not supported through them either. I have a huge store of data, and I can’t even grant another user ACCESS to it. This is full of fail.

Obviously one of the core problem with this is common language. There has to be a standard protocol that is used for each type of data in order for sharing to really work. For inter-service data (like sharing contacts with another user of the same system) there really is no excuse however.

There is another form of data usage to consider beyond just sharing. A good example of the type of thing I’m thinking of is WebHooks, but I’m not completely convinced on their implementation.
A current example of the concept would be posting? to an online forum that lets you “follow” the thread. When you post you can check the box for “email me when someone replies”. Now whenever someone posts something you get a notification. WebHooks is like that, except instead of providing a simple email notification it allows you to provide a URL and a notification is posted to that URL. The notification contains whetever data the application designer wants it to. This may seem like a power-user feature, but once the concept is widely accepted it allows you to let websites (and the datasets they contain) to interact with each other in fabulous new ways.

This starts with us, the application designers. And this is why I’m so hot and bothered about the idea. If I don’t design my own applications to allow the sort of data interactions that I want from other websites I use. Once again though, the problem is standards. How do you output the data? Do you create your own refspec for the specific website/application? Where do you draw the lines?

Once again, the problem is standards. There’s no reason why any user should have both MobileMe contacts and google contacts. Ideally either service should allow the user to use, not just “import”, contacts from the other.

We’re not there yet, and I understand how people scoff at this idea, but I’ll say it again. Data portability and access is king. If you don’t let your users get to the data they’ve entrusted to you and use it in the ways that they want to use it, they’re going to abandon you.

Conservatives and the Golden Rule(s). What’s the deal?!

It seems to me that there are two golden rules that are in direct conflict with each other, and I’m not sure how conservatives reconcile it.

Rule 1) “Do unto others as you would have them do unto you”
Rule 2) “He who has the gold makes the rules”

The real question is, why do “conservative” and “Christian” show up next to each other? They should be mutually exclusive! Conservative philosophy teaches that you should take care of yourself and that money is the only force capable of incentivizing people to act other than in their own best interests, and amassing piles of it is the proper approach to life. Christian philosophy teaches that “the love of money is the root of all evil”, and that you should be nice to people because it’s the right thing to do.

How do these people resolve these two things?! I would very much like someone to explain to me how these two philosophies are anything other than mutually exclusive. They are matter and anti-matter, they should not be able to exist together. I can’t figure it out.

A thought on Morality and Justice

Watching an interesting documentary about the european sex slave “industry”. Apparently in Turkey if a girl escapes from her pimp and gets to the police she’s got a pretty decent chance of having the police return her to her pimp. The life these girls are subjected to is horrible, and the apparently a blind eye is turned in large portions of the world.

In very many cases the pimps who are perpetrating these are very clear cut, very easily identified, and there is no possible question of their intentional commission of unquestionably evil acts. Kidnapping, slavery, abuse, sexual exploitation, are these gray areas in any possible way? When someone who has kidnapped hundreds of people is not even pursued by the police, and another is given 5-years probation, is there any question that something must be done?

Hypothetical situation: A large security firm, or even nation, decides to take care of the issue and sends in teams to black-bag these unquestionably guilty people. (Leave them dead on the floor, or “extradite” them to a prison somewhere for the rest of their lives, take your pick.)

Clearly this violates the right of the host nation, which could be an act of war, which which is bad. Ignore that part. Maybe the nation never finds out.

Is it moral?

If a dog was running loose through a neighborhood biting people it would be put to sleep. Why should not we extend the same courtesy to humans who follow the same pattern of behavior? Could removal of such clear and present threats actually be a sign of a truly civilized society, interested in the well-being of all?

I would like to think on this further. If you have any suggested reading material or resources please leave a comment. There must be some wise philosophers who have muddled around this issue at some point.