Back to Search Start Over

Formally Verifiable Generated ASN.1/ACN Encoders and Decoders: A Case Study

Authors :
Bucev, Mario
Chassot, Samuel
Felix, Simon
Schramka, Filip
Kunčak, Viktor
Publication Year :
2024

Abstract

We propose a verified executable Scala backend for ASN1SCC, a compiler for ASN.1/ACN. ASN.1 is a language for describing data structures widely employed in ground and space telecommunications. ACN can be used along ASN.1 to describe complex binary formats and legacy protocols. To avoid error-prone and time-consuming manual writing of serializers, we show how to port an ASN.1/ACN code generator to generate Scala code. We then enhance the generator to emit not only the executable code but also strong enough pre-conditions, post-conditions, and lemmas for inductive proofs. This allowed us to verify the resulting generated annotated code using Stainless, a program verifier for Scala. The properties we prove include the absence of runtime errors, such as out-of-bound accesses or divisions by zero. For the base library, we also prove the invertibility of the decoding and encoding functions, showing that decoding yields the encoded value back. Furthermore, our system automatically inserts invertibility proofs for arbitrary records in the generated code, proving over 300'000 verification conditions. We establish key steps towards such proofs for sums and arrays as well.

Details

Database :
arXiv
Publication Type :
Report
Accession number :
edsarx.2412.07235
Document Type :
Working Paper