3 approaches to computer security
Straight from Joanna Rutkowska’s blog site…
1) Security by Correctness
2) Security by Isolation
3) Security by Obscurity
The first (correctness) sounds unattainable in its complete form, but new frameworks are an improvement. I.e., memory attacks are more difficult in .NET-compiled code vs in native code. The third item, obscurity, refers to randomness, such as ASLR (randomized base addresses), or executables whose runtimes are obfuscated, randomly and at runtime (huge downside: difficult to debug in the field… as someone who does that sort of thing, that one really resonates).
Item #2, isolation, looks intriguing. We do that to an extent (different low-priv usernames, JVM sandboxing), but virtualization gives us the capacity to do that to a much greater extent. So, one compromised VM won’t affect anything else (well, ideally).
As Bruce Schneier likes to say: “security is hard.” And he should know, being a security guru. There’s no silver bullet, but leveraging the three approaches above, taken together—and with a healthy dose of common sense on the part of the user—yields a more secure operating environment.