Powered by OpenAIRE graph
Found an issue? Give us feedback
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/ Research Collectionarrow_drop_down
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/
Research Collection
Doctoral thesis . 2024
License: CC BY
ETH Zürich Research Collection
Doctoral thesis . 2024
Data sources: Datacite
versions View all 2 versions
addClaim

This Research product is the result of merged Research products in OpenAIRE.

You have already added 0 works in your ORCID record related to the merged Research product.

Automated Verification of Advanced Correctness and Security Properties

Authors: Wolf, Felix Alexander;

Automated Verification of Advanced Correctness and Security Properties

Abstract

Software has become ubiquitous, ranging from apps for toasters to important infrastructure such as transportation, finance, and healthcare. Ensuring that software actually behaves as intended is critical in cases where implementation errors may lead to various forms of damage, such as financial losses, losses of private or confidential data, or even threats to human safety. To apply program verification to real-world programs a high degree of automation is vital. In this thesis, we expand the state-of-the-art in two areas where techniques for automated program verification remain challenging, namely the automated verification of modern logics with advanced correctness properties such as linearizability and the verification of language-agnostic information flow properties. Modern separation logics allow one to prove rich properties of intricate code, e.g. functional correctness and linearizability of non-blocking concurrent code. However, this expressiveness leads to a complexity that makes these logics difficult to apply. Manual proofs or proofs in interactive theorem provers consist of a large number of steps, often with subtle side conditions. On the other hand, automation with dedicated verifiers typically requires sophisticated proof search algorithms that are specific to the given program logic, resulting in limited tool support that makes it difficult to experiment with program logics, e.g. when learning, improving, or comparing them. In the context of secure information flow, security policies express the classification and declassification of data. Existing policy frameworks that support automated reasoning about code are tightly linked to a programming language, which limits their flexibility and complicates reasoning, for instance, during audits. Language-agnostic policy frameworks, which abstract the concrete behavior of programs, lack automated program verification. First, we present Gobra, a modular, deductive program verifier for Go that proves memory safety, crash safety, data-race freedom, and user-provided specifications. Gobra is based on separation logic and supports a large subset of Go. Its implementation translates an annotated Go program into the Viper intermediate verification language and uses an existing SMT-based verification backend to compute and discharge proof obligations. We build our verification techniques for security properties on top of Gobra to apply them to a practical, real-world programming language. Second, we present a framework for the specification and verification of security policies for distributed systems, where attackers may observe the I/O performed by a program, but not its memory. Our policies are expressed over the I/O behaviors of programs and, thereby, language-agnostic. We present techniques to reason formally about policies, and to verify that an implementation satisfies a given policy. We formalize these verification techniques in Isabelle/HOL. An evaluation on several case studies, including an implementation of the WireGuard VPN key exchange protocol, demonstrates that our policies are expressive, and that verification is amenable to SMT-based verification. Third, we systematically develop a proof outline checker for the TaDA logic, a complex program logic for the verification of block-free code. Proof outline checkers take as input a program annotated with the most essential proof steps and then check automatically that this outline represents a valid proof in the program logic. Our proof outline checker reduces the verification of the TaDA logic to a simpler verification problem, for which automated tools exist. Our approach leads to proof outline checkers that provide substantially more automation than interactive provers, but are much simpler to develop than custom automatic verifiers.

Related Organizations
Keywords

Data processing, computer science, VERIFICATION (SOFTWARE ENGINEERING), Security Policies, Automated Verification, Separation Logic, Go (programming language), Information Flow, VERIFICATION (SOFTWARE ENGINEERING); Formal Verification; Automated Verification; Separation Logic; Information Flow; Security Policies; Fine-Grained Concurrency; Go (programming language), Fine-Grained Concurrency, Formal Verification, info:eu-repo/classification/ddc/004

  • BIP!
    Impact byBIP!
    selected citations
    These citations are derived from selected sources.
    This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    0
    popularity
    This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
    Average
    influence
    This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    Average
    impulse
    This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
    Average
Powered by OpenAIRE graph
Found an issue? Give us feedback
selected citations
These citations are derived from selected sources.
This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Citations provided by BIP!
popularity
This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
BIP!Popularity provided by BIP!
influence
This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Influence provided by BIP!
impulse
This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
BIP!Impulse provided by BIP!
0
Average
Average
Average
Green