scholarly journals SecRSL: security separation logic for C11 release-acquire concurrency

2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-26
Author(s):  
Pengbo Yan ◽  
Toby Murray

We present Security Relaxed Separation Logic (SecRSL), a separation logic for proving information-flow security of C11 programs in the Release-Acquire fragment with relaxed accesses. SecRSL is the first security logic that (1) supports weak-memory reasoning about programs in a high-level language; (2) inherits separation logic’s virtues of compositional, local reasoning about (3) expressive security policies like value-dependent classification. SecRSL is also, to our knowledge, the first security logic developed over an axiomatic memory model. Thus we also present the first definitions of information-flow security for an axiomatic weak memory model, against which we prove SecRSL sound. SecRSL ensures that programs satisfy a constant-time security guarantee, while being free of undefined behaviour. We apply SecRSL to implement and verify the functional correctness and constant-time security of a range of concurrency primitives, including a spinlock module, a mixed-sensitivity mutex, and multiple synchronous channel implementations. Empirical performance evaluations of the latter demonstrate SecRSL’s power to support the development of secure and performant concurrent C programs.

Author(s):  
Marco Eilers ◽  
Severin Meier ◽  
Peter Müller

AbstractMost existing program verifiers check trace properties such as functional correctness, but do not support the verification of hyperproperties, in particular, information flow security. In principle, product programs allow one to reduce the verification of hyperproperties to trace properties and, thus, apply standard verifiers to check them; in practice, product constructions are usually defined only for simple programming languages without features like dynamic method binding or concurrency and, consequently, cannot be directly applied to verify information flow security in a full-fledged language. However, many existing verifiers encode programs from source languages into simple intermediate verification languages, which opens up the possibility of constructing a product program on the intermediate language level, reusing the existing encoding and drastically reducing the effort required to develop new verification tools for information flow security. In this paper, we explore the potential of this approach along three dimensions: (1) Soundness: We show that the combination of an encoding and a product construction that are individually sound can still be unsound, and identify a novel condition on the encoding that ensures overall soundness. (2) Concurrency: We show how sequential product programs on the intermediate language level can be used to verify information flow security of concurrent source programs. (3) Performance: We implement a product construction in Nagini, a Python verifier built upon the Viper intermediate language, and evaluate it on a number of challenging examples. We show that the resulting tool offers acceptable performance, while matching or surpassing existing tools in its combination of language feature support and expressiveness.


2011 ◽  
Vol 39 (3) ◽  
pp. 189-200 ◽  
Author(s):  
Mohit Tiwari ◽  
Jason K. Oberg ◽  
Xun Li ◽  
Jonathan Valamehr ◽  
Timothy Levin ◽  
...  

2016 ◽  
Vol 9 (2) ◽  
pp. 1-23 ◽  
Author(s):  
Felix J. Winterstein ◽  
Samuel R. Bayliss ◽  
George A. Constantinides

2016 ◽  
Vol 24 (2) ◽  
pp. 181-234 ◽  
Author(s):  
Daniel Hedin ◽  
Luciano Bello ◽  
Andrei Sabelfeld

Author(s):  
Tobias Hamann ◽  
Mihai Herda ◽  
Heiko Mantel ◽  
Martin Mohr ◽  
David Schneider ◽  
...  

Sign in / Sign up

Export Citation Format

Share Document