Extracting and verifying cryptographic models from C protocol code by symbolic execution

M Aizatulin, AD Gordon, J Jürjens - … of the 18th ACM conference on …, 2011 - dl.acm.org
M Aizatulin, AD Gordon, J Jürjens
Proceedings of the 18th ACM conference on Computer and communications security, 2011dl.acm.org
Consider the problem of verifying security properties of a cryptographic protocol coded in C.
We propose an automatic solution that needs neither a pre-existing protocol description nor
manual annotation of source code. First, symbolically execute the C program to obtain
symbolic descriptions for the network messages sent by the protocol. Second, apply
algebraic rewriting to obtain a process calculus description. Third, run an existing protocol
analyser (ProVerif) to prove security properties or find attacks. We formalise our algorithm …
Consider the problem of verifying security properties of a cryptographic protocol coded in C. We propose an automatic solution that needs neither a pre-existing protocol description nor manual annotation of source code. First, symbolically execute the C program to obtain symbolic descriptions for the network messages sent by the protocol. Second, apply algebraic rewriting to obtain a process calculus description. Third, run an existing protocol analyser (ProVerif) to prove security properties or find attacks. We formalise our algorithm and appeal to existing results for ProVerif to establish computational soundness under suitable circumstances. We analyse only a single execution path, so our results are limited to protocols with no significant branching. The results in this paper provide the first computationally sound verification of weak secrecy and authentication for (single execution paths of) C code.
ACM Digital Library