Back in 1965, a young Ralph Nader wrote an evisceration of the US auto industry. This book, Unsafe at Any Speed, attacked the industry for lagging behind best practices with respect to safety — essentially, carmakers were putting the public at risk by their reluctance to invest in safety features. It's hard to believe that over 50 years have passed since then, but at the opening of 2018, and as we deal with serious security and safety issues in the computer world, I've been reflecting on the situation in which we found ourselves half a century ago.
What's triggered this reflection is the rotten start of this year, with the revelation of Spectre and Meltdown, two serious vulnerabilities that between them impact most modern computers. The newspapers and Web have been full of descriptions, and yes, these bugs are as unpleasant as they sound. Unlike most of the things we read about, these represent problems in the actual hardware, so there's no simple software patch that makes everything better. These are not problems that involve a programmer forgetting to check the size of an array; these are problems in the very "brain" of the computer, the CPU.
As chief scientist for a large security company, I'm pretty immune to hype and spin: I deal in realities. As such, I recently gave a company-wide tutorial on these two vulnerabilities (and, really, they involve a class of vulnerabilities rather than discrete things). There's nothing like having to teach how something works to test that you really understand it. In the case of these bugs, I understand them all too well: these are nasty little side-channel attacks that allow the slow leak of data to an attacker.
Let me be technical for a moment. These problems exist and are exploitable because of a few features of the chip: the translation lookaside buffer and memory caching in general (used to make memory access much quicker), speculative and out-of-order execution (used to make the CPU execute a set of instructions more quickly), and, in the case of one version of Spectre, JIT, or just-in-time compilation (used to make interpreted code run more quickly). When I put it like this, do you see a pattern? I do. These are all related to steps we've taken to speed up computing. I get it — people buy CPUs because this year's model is a shade faster than the one they have. Speed good. Lag bad. Features, especially speed, sell.
Computers have moved from an adjacent spot in our lives (I remember my first computer, on which I mostly played Elite, a space trading game) and have become machines that literally are responsible for helping to keep us alive. My cellphone is with me at all times, a computer applies the brakes in my car, my thermostat happily interacts with servers on the Internet to let me know what the weather outside is, and the lights literally stay on because of modern computation. And it's not just me — the entire modern world is based upon secure, safe, reliable computing. There is not one aspect of our lives, from birth to death, that doesn't rely on the magic of computation.
These new vulnerabilities should remind us that the foundation that technologically enables our society is cracked. We have focused on performance, on glitz… more pixels, a couple more gigahertz, animated emojis. The list is endless. But what we haven't done, outside of a woefully small group of people who make security their life's work, is put the safety of that complex, beautiful system ahead of its glitter. I'm picking my words with care — security sounds abstract and cold, but we all "get" what it means to make something safe and what the consequence of something being unsafe can be.
I am in awe at the advances we have made in computation. During my career, I've gone from hand-coding a machine that ran at 3.25MHz and had a whopping 1KB (!) of memory. By way of contrast 30-something years later, my home laptop works away almost 1,000 times faster per core (and it has several of them) and with seven orders of magnitude more memory available. I can deploy cloud services with a wave of my hand, commanding more computation than I ever dreamed. What we have done is amazing. We should look at those accomplishments with pride. We should also look at the lack of attention we have put into security, at the design stage, with dread: without this infrastructure being secure, it means nothing.
My wish, though made with little hope, is that Spectre and Meltdown will be a wake-up call for all of us. For too long, security has been placed second or worse to features and performance. This must change if we are to really realize the benefits that computation can bring to mankind. I don't blame the vendors here, but the entire ecosystem. Security and safety typically haven't been drivers for purchases in IT, and companies can't be blamed for making products that sell. Somehow, this must change.
Ralph Nader's Unsafe at any Speed shook up the automotive world over 50 years ago. Perhaps it's time to apply those same concepts to computation. I don't want to be unsafe at any speed. No matter how fast my computer, if I can't trust it, it's less than worthless — it's downright dangerous.