Computer Security: Divided We Stand

An image from the CDC image library of a virus.
Cynthia Goldsmith/CDC/Reuters
About 1.3 billion people use one or other version of Microsoft's Windows operating systems, and well over a billion have downloaded Mozilla's Firefox web browser. Minor variations aside, every copy of these products--like all other mass-market software--has exactly the same bits in it.

This makes such software a honeypot for hackers, who can write attack code that will cause precisely the same damage to, say, every copy of Windows 7 it infects. Worse, the bad guys can hone their attacks by practising on their own machines, confident that what they see will be what their victims get.

This computing monoculture--which also extends to the widespread use of particular pieces of hardware, such as microprocessors from Intel and ARM--has long been the bane of technologists. In the face of a near constant onslaught from hackers, antivirus software is frequently several steps behind the foe.

Symantec, one of the commercial pioneers of online security, estimates that antivirus software now stops only 45% of attacks. The firm recently declared that this approach was "dead" and a new one was needed.

Michael Franz, a computer scientist at the University of California, Irvine, agrees. And he believes the answer is to learn from nature. Lots of species are composed of individuals which are, the occasional set of identical twins apart, all slightly different genetically from each other.

Sexual reproduction ensures this. Indeed, it is probably the reason sex evolved in the first place, for it means that no bacterium or virus can wipe out an entire population, since some are almost certain to be genetically immune to any given pathogen.

Applying the idea of genetic diversity to software is not a new idea. High-security systems, such as the fly-by-wire programs used in aeroplanes, are designed from the outset with code that differs between installations. But this approach is too costly for large-scale use.

Some mass-market software companies have instead introduced modest diversity to deter attackers, such as randomly choosing the starting addresses of big blocks of memory, but this is not enough to defeat a determined hacker.

Dr Franz is therefore taking a novel approach by tweaking the programs, called compilers, that convert applications written in languages such as C++ and Java into the machine code employed by a computer's processor. Most compilers are designed to optimise things such as the speed of the resulting machine code. That leads to a single answer.

Dr Franz's "multicompiler" trades a bit of this optimality for diversity in the compiled code. This leeway, which diminishes the code's speed of execution by an amount imperceptible to the user, enables a multicompiler to create billions of different, but functionally identical, interpretations of the original program.

When a user requests a specific application from a cloud-based "app store", the appropriate multicompiler in the store generates a unique version for him, thus making a hacker's task nigh impossible.

Dr Franz has already built a prototype that can diversify programs such as Firefox and Apache Linux. Test attacks designed to take over computers running the resulting machine code always failed. The worst thing that happened was that the attack crashed the target machine, requiring a reboot. The rest of the time it simply had no perceptible effect.

Dr Franz puts the chance of a hacker successfully penetrating one of his randomised application programs at about one in a billion. No doubt these odds would shorten if his approach were taken up widely, for hackers are endlessly ingenious.

But at the moment they mean that, if his system of multicompilers were used universally, any given hack would affect but a handful of the machines existing on the entire planet.