Formal Verification of Control-flow Graph Flattening
Résumé
Code obfuscation is emerging as a key asset in security by obscurity.
It aims at hiding sensitive information in programs so that they
become more difficult to understand and reverse engineer. Since the
results on the impossibility of perfect and universal obfuscation,
many obfuscation techniques have been proposed in the literature,
ranging from simple variable encoding to hiding the control flow of
a program.
In this paper, we formally verify in Coq an advanced code obfuscation
called control-flow graph flattening, that is used in stateof-the-art
program obfuscators. Our control-flow graph flattening
is a program transformation operating over C programs, that is integrated
into the CompCert formally verified compiler. The semantics
preservation proof of our program obfuscator relies on a simulation
proof performed on a realistic language, the Clight language
of CompCert. The automatic extraction of our program obfuscator
into OCaml yields a program with competitive results.
Domaines
Langage de programmation [cs.PL]Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...