Software Clones: Genetic Variation and Technology


12622731023_b6259e2028_k


In biology, we desire genetic variation. Genetic variation is the raw material for natural selection: some gene types are beneficial and result in more offspring, thereby getting selected for, while others are not and end up getting weeded out of the population over time. Having genetic differences in a population allows for selection to happen.


But genetic variation is also an insurance policy of sorts: if the members of a species are too similar, then if something terrible happens, such as a deadly disease or a big environmental catastrophe like an ice age, it doesn’t just affect an individual, it can affect the entire population; since there is no variation, there might be no gene types that might provide protection against the unforeseen calamity and the entire population could be eliminated.


This same thing can happen in complicated technological systems and is related to what is known as systematic risk. These are the risks, especially in finance, that can cause a monstrous cascade, affecting the entire system being examined, i.e. the entire economy. This can be due to the explicitly interconnected nature of a system, but also due to implicit similarities. Specifically, when systems that appear complex and diverse are actually made up of very similar components, anything that affects one of them can end up affecting them all. For example, in the financial world, imagine if numerous trading firms independently converged on similar trading strategies. While they might happily make money, unaware of their similar mechanisms for profit, if there is a weakness in the methods—which are often highly automated—it will affect them all simultaneously and cause massive problems.


This type of problem also extends to the software world. Computer programs are identical and consist of a vast monoculture: every copy of Microsoft Windows version X is exactly the same, like clones. This makes for an incredibly attractive target for those who wish to compromise these systems. One approach, being worked on by Michael Franz, a computer scientist, at University of California, Irvine, is to automate a method of genetic diversity for software. Franz has developed something known as a multicompiler, a piece of software that modifies how computer code is generated. In general, a compiler converts a computer program—written by coders—into efficient machine code that can be run on a computer. But Franz’s multicompiler doesn’t yield identical instructions for the machine every time. Instead, it makes a series of tiny choices that yield different, yet ultimately equivalent, instructions. These differences are not detectable to the user, but can give us a kind of computational genetic diversity, making software more robust to attacks. This kind of approach could be used in the future to help prevent accidental failures that are the result of technological monocultures.


Making technology more “biological” is one of those techniques we pay lip service to and something that can even be great to do. In this case, actually creating more genetic variation in our software could help prevent massive problems.



No comments:

Post a Comment