Software diversity is a research field about the comprehension and engineering of diversity in the context of software.
Areas
The different areas of software diversity are discussed in surveys on diversity for fault-tolerance or for security.
The main areas are:
- design diversity, n-version programming, data diversity for fault tolerance
- randomization
- software variability
Techniques
Code transformations
It is possible to amplify software diversity through automated transformation processes that create synthetic diversity. A “multicompiler” is compiler embedding a diversification engine. A multi-variant execution environment (MVEE) is responsible for selecting the variant to execute and compare the output.
Fred Cohen was among the very early promoters of such an approach. He proposed a series of rewriting and code reordering transformations that aim at producing massive quantities of different versions of operating systems functions. These ideas have been developed over the years and have led to
…
Source: Wikipedia
No Comments yet!