2002 · 172 citations · 13 references
ComputingComputer EngineeringComputer ScienceFault-tolerant ComputingFault-tolerant SystemsSecure Software DevelopmentControl-flow AnalysisSoftware Fault ToleranceSystem SecurityControl Flow ControlControl-flow IntegrityPrecisionSoftware ComponentsSoftware Protection MechanismsSurvivabilityTransformations
Many existing survivability mechanisms rely on software-based system monitoring and control. Some of the software resides on application hosts that are not necessarily trustworthy. The integrity of these software components is therefore essential to the reliability and trustworthiness of the survivability scheme. We address the problem of protecting trusted software on untrustworthy hosts by software transformations. Our techniques include a systematic introduction of aliases in combination with a "break-down" of the program control-flow; transforming high-level control transfers to indirect addressing through aliased pointers. In so doing, we transform programs to a form that yields data flow information very slowly and/or with little precision. We present a theoretical result which shows that a precise analysis of the transformed program, in the general case, is NP-hard and demonstrate the applicability of our techniques with empirical results.
13
A Taxonomy of Obfuscating Transformations
Christian Collberg, Clark Thomborson, Douglas Low · 1997 · 853 citations
Building diverse computer systems
Stephanie Forrest, Anil Somayaji, David H. Ackley · 2002 · 495 citations
Undecidability of static analysis
William Landi · ACM Letters on Programming Languages and Systems · 1992 · 382 citations · Full text
Interprocedural pointer alias analysis
Michael Hind, Michael Burke, Paul Carini et al. · ACM Transactions on Programming Languages and Systems · 1999 · 225 citations · Full text