Hacking: Users, Computers, and Systems
As many people have heard, there’s been a security problem at the Internal Revenue Service. Some stories have used the word hack; other people, though, have complained that nothing was hacked, that the only problem was unauthorized access to taxpayer data but via authorized, intentionally built channels. The problem with this analysis is that it’s looking at security from far too narrow a perspective—and this is at the root of a lot of the security problems we have.
Fundamentally, there are three types of intrusion, which I’ll dub "user", "computer", and "system". User intrusion is the easiest to understand: someone has gained illegitimate access to one or more user accounts. That’s what’s happened here: the authentication mechanisms were too weak to withstand a targeted attack on particular individuals’ accounts. This is the kind of attack that the usual "pick a strong password" rules are designed to protect against, and the kind that two-factor authentication will protect against. Authentication failures are not the only way this can happen—there are things like cross-site scripting attacks—but in general, the impact is limited to some set of user accounts.
Computer intrusions are more serious: the attack has gained the ability to access files and/or run code on one or more computers within a protected site. In general, someone who can do this can compromise many user accounts; it is thus strictly worse than a user intrusion. Generally speaking, this class of problem is caused by buggy software, though there are other paths for the attacker, such as social engineering or compromising an authorized user’s credentials. (The attacker may even be an insider with legitimate access to the targt machine.)
System intrusion is the most nebulous concept of the three, but often the most important. It can refer to any security failures. Imagine, for example, that there was a magic URL that would cause Amazon to ship you some books, but without giving access to any of their computers and without billing any other customers. It’s not a customer intrusion, and it’s not a computer intrusion—but the system—the collection of computers, people, and processes that collectively are Amazon—has done the wrong thing.
System intrusions—hacks—often cannot be fixed in a single place. It may be that some interfaces were poorly designed for the humans who have to use them (and make no mistake, that’s a serious technical issues), or it may require much more far-reaching changes. Let’s go back to the IRS hack. Looked at simply, it’s a user account intrusion; there are thus the predictable calls for two factor authentication when logging in to the IRS. It sounds simple, but it’s not; in fact, it’s a fiendishly hard problem. Most people interact with the IRS once a year, when they file their tax returns. This particular application is especially useful when doing things like buying a house—and that’s not something folks do every week. How will people possibly keep track of their credentials for this site? Use text messages to their phones? The IRS does not have a database of mobile phone numbers; suggestions that they should have one would be greeted by howls of protest from privacy advocates (and rightly so, I should add). Besides, if you change your phone number would you remember to update it on the IRS site? If so, how would you authenticate to the site when you no longer have your old number? Authentication to the government is among the most difficult authentication problems in existence; it’s a cradle-to-grave activity, and generally used infrequently enough that people will not remember their credentials.
Where does the blame lie? Arguably, the IRS should have had a better understanding of attackers’ capabilities before deploying this system. It’s not clear, though, that they can do much better. The choice may have been between not offering it and offering it knowing that there would be some level of abuse. In that case, the focus should be on detection and remediation, rather than on stronger authentication.