Towards Formal Verification of Program Obfuscation

被引:1
作者
Lu, Weiyun [1 ]
Sistany, Bahman [2 ]
Felty, Amy [1 ,3 ]
Scott, Philip [1 ,3 ]
机构
[1] Univ Ottawa, Sch Elect Engn & Comp Sci, Ottawa, ON, Canada
[2] Cloakware Res Irdeto Canada, Ottawa, ON, Canada
[3] Univ Ottawa, Dept Math & Stat, Ottawa, ON, Canada
来源
2020 IEEE EUROPEAN SYMPOSIUM ON SECURITY AND PRIVACY WORKSHOPS (EUROS&PW 2020) | 2020年
关键词
obfuscation; verification; security; correctness; Coq; proof;
D O I
10.1109/EuroSPW51379.2020.00091
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Code obfuscation involves transforming a program to a new version that performs the same computation but hides the functionality of the original code. An important property of such a transformation is that it preserves the behavior of the original program. In this paper, we lay the foundation for studying and reasoning about code obfuscating transformations, and show how the preservation of certain behaviours may be formally verified. To this end, we apply techniques of formal specification and verification using the Coq Proof Assistant. We use and extend an existing encoding of a simple imperative language in Coq along with an encoding of Hoare logic for reasoning about this language. We formulate what it means for a program's semantics to be preserved by an obfuscating transformation, and give formal machine-checked proofs that these behaviours or properties hold. We also define a lower-level block-structured language which is "wrapped around" our imperative language, allowing us to model certain flattening transformations and treat blocks of codes as objects in their own right.
引用
收藏
页码:635 / 644
页数:10
相关论文
共 19 条
[1]  
[Anonymous], 2009, SURREPTITIOUS SOFTWA
[2]   Code Obfuscation Against Symbolic Execution Attacks [J].
Banescu, Sebastian ;
Collberg, Christian ;
Ganesh, Vijay ;
Newsham, Zack ;
Pretschner, Alexander .
32ND ANNUAL COMPUTER SECURITY APPLICATIONS CONFERENCE (ACSAC 2016), 2016, :189-200
[3]  
Barras B., 1997, The Coq proof assistant reference manual: Version 6.1
[4]  
Blazy S., 2012, FORMALLY VERIFIED OB
[5]   Formal Verification of a Program Obfuscation Based on Mixed Boolean-Arithmetic Expressions [J].
Blazy, Sandrine ;
Hutin, Remi .
PROCEEDINGS OF THE 8TH ACM SIGPLAN INTERNATIONAL CONFERENCE ON CERTIFIED PROGRAMS AND PROOFS (CPP' 19), 2019, :196-208
[6]   Formal Verification of Control-Flow Graph Flattening [J].
Blazy, Sandrine ;
Trieu, Alix .
PROCEEDINGS OF THE 5TH ACM SIGPLAN CONFERENCE ON CERTIFIED PROGRAMS AND PROOFS (CPP'16), 2016, :176-187
[7]  
Collberg C., 1997, TAXONOMY OBFUSCATING
[8]  
Floyd R.W., 1967, Program Verification: Fundamental Issues in Computer Science, V19, P19, DOI 10.1090/psapm/019/0224860
[9]  
Ge Y, 2007, LECT NOTES ARTIF INT, V4603, P167
[10]   AN AXIOMATIC BASIS FOR COMPUTER PROGRAMMING [J].
HOARE, CAR .
COMMUNICATIONS OF THE ACM, 1969, 12 (10) :576-&