Formal Verification of Control-Flow Graph Flattening

被引:9
作者
Blazy, Sandrine [1 ]
Trieu, Alix [2 ]
机构
[1] Univ Rennes 1, IRISA, F-35014 Rennes, France
[2] ENS Rennes, IRISA, Rennes, France
来源
PROCEEDINGS OF THE 5TH ACM SIGPLAN CONFERENCE ON CERTIFIED PROGRAMS AND PROOFS (CPP'16) | 2016年
关键词
program obfuscation; verified compiler; C semantics;
D O I
10.1145/2854065.2854082
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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 state-of- 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.
引用
收藏
页码:176 / 187
页数:12
相关论文
共 20 条
[1]  
[Anonymous], 2012, The Coq proof assistant reference manual
[2]  
[Anonymous], The Tigress C diversifier/obfuscator
[3]  
[Anonymous], THESIS
[4]  
[Anonymous], ADDISON WESLEY SOFTW
[5]  
Appel AW, 2007, LECT NOTES COMPUT SC, V4732, P5
[6]  
Barak B., 2001, Advances in Cryptology - CRTPTO 2001. 21st Annual International Cryptology Conference, Proceedings (Lecture Notes in Computer Science Vol.2139), P1
[7]  
Blazy S, 2006, LECT NOTES COMPUT SC, V4085, P460
[8]  
Blazy S, 2009, J AUTOM REASONING, V43, P263, DOI 10.1007/s10817-009-9148-3
[9]  
Blazy Sandrine, 2012, SSP 2012
[10]  
Collberg CS, 2002, IEEE T SOFTWARE ENG, V28, P735, DOI 10.1109/TSE.2002.1027797