1.1 The Need for Security
Only a few years ago,
software applications tended to be
isolated. Users of these applications were required to present
themselves in a known location (for example, a bank branch or office
block) that was protected by physical barriers to access such as
locks, surveillance cameras, and security guards. Attacks against
such software systems were fewer than are experienced today, in part,
because gaining access to such a location presented a barrier that
many found insurmountable.
The increased connectivity and prevalence of networked applications
has removed the insurmountable barrier presented by physical
security, and it is not only the networked applications themselves at
risk. Increasingly, software systems control access to valuable
physical resources (for example, banking software can be used to
credit or debit a customer account). Subverting or compromising the
software system may be the simplest way to gain access to the
physical resource; for example, it may be easier to break into the
banking application and create fictitious transactions than it is to
crack open the bank vault.
Today, a talented 15-year-old Italian schoolboy, who would be unable
to get past a company security guard, might, for personal amusement,
be able to convince a networked application that he
is a 37-year-old trusted employee from Alabama.
More serious, however, is the increase in software hacking for
criminal reasons—either to steal intellectual property or, more
commonly, to steal information that can be sold to other criminals,
such as lists of credit card numbers.
In short, the world has become more hostile towards software. In
light of recent changes to social and political attitudes to
security, it should be no surprise that the public has an increased
expectation that software will be secure. The kinds of security that
we discuss in this book can provide some protection against the
increased frequency and sophistication of attempts to subvert
applications. However, security has also become a tool to promote the
sale of software, and claims of
"unbreakable" security are now
commonplace. The effective use of software security has fallen behind
the ideal that is portrayed by marketing departments. Another purpose
of this book is to close the gap between the perception and the
reality, and to demonstrate how you can increase the security of your
applications through the careful application of tried-and-tested
technologies.
|