Abstract:
Neither is it a security methodology book. Methodologies have to be general-purpose
enough that they cover a wide range of circumstances and situations, which
unfortunately tends to make them sufficiently vague that they’re difficult to apply for
anyone who isn’t already knowledgeable in the field (this is why methodologies like
Microsoft’s Security Development Lifecycle (SDL) come with a set of automated
tools that look over your shoulder and tell you when you’re doing something risky, at
least as far as the developers of the tools have been able to determine). The last thing
we need is yet another catalogue of “best practices” for security.
This book doesn’t contain a whole chapter (or chapters) on cryptography. That’s
because you don’t need to understand it (do you really want to plough through thirty
pages on the maths behind RSA or AES?). Understanding cryptography is what
cryptographers are there for. Virtually all of the attacks on cryptography completely
ignore the crypto anyway and instead attack the way that it’s used (see “What’s your
Threat Model?” on page 242 for more on this). What you do need to know about
cryptography is how to use it appropriately (and/or how not to use it inappropriately).
There’s plenty of advice on that in this book.
Another thing you may notice about this book is that there’s no mention of your
favourite piece of cool security technology. In fact there’s no mention of lots of cool
security technology, because there’s an awful lot of it out there and much of it will
never really benefit anyone except the stockholders of the companies peddling it, if
that. An example of this is quantum cryptography, a not-entirely-secure, short-range
and above all extraordinarily expensive way of achieving what we’ve been doing
using Diffie-Hellman key exchange since the mid-1970s. It uses physics, or magic,
or something like that so it’s got to be good.
There really isn’t room to cover all of these fashion-statement technologies (although
I’ve made passing reference to a few in places where I wanted to illustrate
something), so if you find that I’ve omitted to mention your pet technology then it’s
most probably because I feel that it’s unlikely to have much, if any, effect on the bad
guys, and because this book is already long enough as it is.
So if that’s not what the book is about, what does it contain?
As an industry, we’ve been trying to build secure systems for many decades now,
particularly in the last fifteen years or so as a combination of the penetration of the
Internet into everyday life and the increasing use of computerised devices and systems has enabled attacks at a scope and scale never before possible. In all of that
time, we’ve gathered quite a bit of insight into what works and what doesn’t. Like
Ross Anderson’s excellent book Security Engineering1
, this book talks about all of
the things that conventional security books usually don’t: Stories of problems with
secure (or, to be more accurate, allegedly secure) systems that turned out to be not so
secure when they were exposed to attack.
It also devotes quite a bit of space to discussing why some mechanisms and systems
that have been proposed as solutions to various problems don’t actually solve them,
and in some cases don’t really solve any problem at all (to use a phrase that comes up
several times in this book, they don’t defend against anything that attackers are
doing).
A similar process has been followed in numerous other security-related industries,
which learned from their failures by trial and error. For example bank vaults used to
have square doors, which safecrackers would pry open just wide enough to pour
liquid nitroglycerin (obtained by boiling sticks of dynamite) into the resulting gap,
allowing them to blow the door off the vault. Banks responded by switching to close fitting round doors for which this attack didn’t work any more, in the process creating
the iconic image of the bank vault with its massive round door. When safecrackers
(someone a bit more sophisticated than the random outlaw with a stick of dynamite)
started drilling out weak points in the safe’s door, the manufacturers responded first
with hardplates, extremely wear-resistant metal plates that destroyed drill bits, and
then relockers, glass plates that when broken by a drill locked the safe’s bolts into
place to ensure that now the safe really couldn’t be opened any more.
The same sort of evolutionary design process has occurred in many other fields. If
you have quite a bit of time to kill, look at the design of artillery-shell and bomb fuses
during the 20th century. The basic problem to be solved in these cases is how to
design a mechanism that explodes on impact with a target but doesn’t explode on
impact with a concrete floor (the development of the first proximity fuses, which
detonate when they get near something, for example the gun barrel that they’re being
fired from or the ship’s deck that they’ve been accidentally dropped onto, was
particularly hair-raising). If you’d like an in-depth analysis of the arms race between
attackers and defenders in the field of bomb fuse design, track down a copy of Major
Arthur Hartley’s Unexploded Bomb — The Story of Bomb Disposal, which
discusses the design of German WWII electronic fuses and the ingenuous
countermeasures used to defeat them.
Ironically, the most dangerous fuse type used was a WWI-era mechanical clockwork
one, the type 17. Impact with the ground made this fuse sufficiently erratic that it
could detonate at random whenever it felt like it. This shows, as do many of the
examples presented throughout the book, that relatively unsophisticated traditional
mechanisms are often more effective (or in the case of bomb fuses, dangerous) than
fancy high-tech ones.
A similar learning process has occurred with ATMs. Their design has evolved over
the course of several decades of real-world use, leading to experience-based
guidelines for attack-resistant ATM design as criminals have come up with new
attacks that were never envisaged by the original ATM designers. Take two attacks
that required changes to ATM designs in order to counter them. The first of these is a
low-tech one called the Lebanese loop. A Lebanese loop is a strip of metal or plastic
that prevents a card from being ejected from the ATM after the user has entered their
PIN, which causes the ATM to abort the transaction and not issue any cash. The
scammer, who’s waiting in line behind the victim, asks the victim to try re-entering
their PIN, which they observe as it’s being entered. With their card apparently eaten
by the ATM, the victim leaves and the scammer pulls out the loop and card and uses
the PIN to empty the account. This process is labour-intensive and can be defeated by
alert users. On the technical side, vendors can modify ATMs by adding sensors to the
card readers to detect the use of Lebanese loops.