Formal Verification of Libra Blockchain Smart Contracts
ABSTRACT. The Libra blockchain, which was initiated in 2018 by Facebook, includes a novel programming language called Move for implementing smart contracts. The correctness of Move programs is especially important because the blockchain will host large amounts of assets, those assets are managed by smart contracts, and because there is a history of large losses on other blockchains because of bugs in smart contracts. The Move language is designed to be as safe as we can make it, and it is accompanied by a formal specification and automatic verification tool, called the Move Prover. Our aspiration is that every Move program will be thoroughly specified and verified before being deployed on the blockchain.
The Move Prover is a work in progress. This talk will be about the goals of the project and the most interesting insights we've had as of the time of the presentation. The entire blockchain implementation, including the Move language, virtual machine, the Move Prover, and draft versions of various Move modules are available on http://github.com/libra
Brief bio:
David L. Dill is a Lead Researcher at Facebook, working on the Libra blockchain project. He is also Donald E. Knuth Professor, Emeritus, in the School of Engineering at Stanford University. He was on the faculty in the Department of Computer Science at Stanford from 1987 until going emeritus in 2017 and starting his current position at Facebook in 2018. Prof. Dill’s research interests include formal verification of software, hardware, and protocols, with a focus on automated techniques, as well as voting technology and computational biology. For his research contributions, he has received a CAV award and Alonzo Church award. He is an IEEE Fellow, an ACM Fellow and a member of the National Academy of Engineering and the American Academy of Arts and Sciences. He also received an EFF Pioneer Award for his work in voting technology, and is the founder of VerifiedVoting.org.
ABSTRACT. The Libra blockchain is designed to store billions of dollars in
assets, so the security of code that executes transactions is
important. The Libra blockchain has a new language for implementing transactions,
called ``Move.'' This paper describes the
Move Prover, an automatic formal verification system for Move.
We overview the unique features of the Move language, then describe
the architecture of the Prover, including the language for formal
specification and the translation to the Boogie intermediate verification
language.
End-to-End Formal Verification of Ethereum 2.0 Deposit Smart Contract
ABSTRACT. We report our experience in the formal verification of the deposit smart contract, whose correctness is critical for the security of Ethereum 2.0, a new Proof-of-Stake protocol for the Ethereum blockchain. The deposit contract implements an incremental Merkle tree algorithm whose correctness is highly nontrivial, and had not been proved before. We have verified the correctness of the compiled bytecode of the deposit contract to avoid the need to trust the underlying compiler. We found several critical issues of the deposit contract during the verification process, some of which were due to subtle hidden bugs of the compiler.
Synthesis of Super-Optimized Smart Contracts using Max-SMT
ABSTRACT. With the advent of smart contracts that execute on the blockchain
ecosystem, a new mode of reasoning is required for developers that
must pay meticulous attention to the gas spent by their smart
contracts, as well as for optimization tools that must be capable of
effectively reducing the gas required by the smart contracts.
Super-optimization is a technique which attempts to find the best
translation of a block of code by trying all possible sequences of
instructions that produce the same result. This paper presents a
novel approach for super-optimization of smart contracts based on
Max-SMT which is split into two main phases: (i) the extraction of a
stack functional specificatio} from the basic blocks of the
smart contract, which is simplified using rules that capture the
semantics of the arithmetic, bit-wise, relational operations, etc.
(ii) the synthesis of optimized-blocks which, by means of an
efficient Max-SMT encoding, finds the bytecode blocks with minimal gas
cost whose stack functional specification is equal (modulo
commutativity) to the extracted
one.
Our experimental results are very promising: we are able to optimize
52.78% of the blocks, and prove that 34.28% were already optimal, for
more than 61000 blocks from the most used 2500 Ethereum
contracts.
ABSTRACT. The shift to cloud-based APIs has made application security critically depend on understanding and reasoning about policies that regulate access to cloud resources. We present stratified predicate abstraction, a new approach that summarizes complex security policies into a compact set of positive and declarative statements that precisely state who has access to a resource. We have implemented stratified abstraction and deployed it as the engine powering AWS's IAM Access Analyzer service, and hence, demonstrate how formal methods and SMT can be used for security policy explanation.
Verification of Quantitative Hyperproperties Using Trace Enumeration Relations
ABSTRACT. Many important cryptographic primitives offer probabilistic guarantees of security that can be specified as quantitative hyperproperties; these are specifications that stipulate the existence of a certain number of traces in the system satisfying certain constraints. Verification of such hyperproperties is extremely challenging because they involve simultaneous reasoning about an unbounded number of different traces. In this paper, we introduce a technique for verification of quantitative hyperproperties based on the notion of trace enumeration relations. These relations allow us to reduce the problem of trace-counting into one of model-counting of formulas in first-order logic. We also introduce a set of inference rules for machine-checked reasoning about the number of satisfying solutions to first-order formulas (aka model counting). Putting these two components together enables semi-automated verification of quantitative hyperproperties on infinite state systems. We use our methodology to prove confidentiality of access patterns in Path ORAMs of unbounded size, soundness of a simple interactive zero-knowledge proof protocol as well as other applications of quantitative hyperproperties studied in past work.
Validation of Abstract Side-Channel Models for Computer Architectures
ABSTRACT. Observational models make tractable the analysis of information flow properties by providing abstraction of side channels. We introduce a methodology and a tool, Scam-V, to validate observational models for modern computer architectures. We combine symbolic execution, relational analysis, and different program generation techniques to generate experiments and validate the models. An experiment consists of a randomly generated well-formed program together with two inputs that are observationally equivalent according to the model under the test. Validation is done by checking indistinguishability of the two inputs on real hardware by executing the program and analyzing the side channel. We have evaluated our framework by validating models that abstract the data-cache side channel of a Raspberry Pi 3 board with a processor implementing the ARMv8-A architecture. Our results show that Scam-V can identify bugs in the implementation of the models and generate test programs which invalidate the models due to hidden microarchitectural behavior.
Fast and Guaranteed Safe Controller Synthesis for Nonlinear Vehicle Models
ABSTRACT. We address the problem of synthesizing a controller for nonlinear systems with reach-avoid specifications. Our controller consists of a reference trajectory and a tracking controller which drives the trajectory to follow the reference trajectory. We identify a type of reference trajectory such that the tracking error between the actual trajectory of the closed-loop system and the reference trajectory can be bounded. Moreover, such a bound on the tracking error is independent of the reference trajectory. Using such bounds on the tracking error, we propose a method that can find a reference trajectory by solving a satisfiability problem over linear constraints. Our overall algorithm guarantees that the resulting controller can make sure every trajectory from the initial set of the system satisfies the given reach-avoid specification. We also implement our technique in a tool FACTEST. We show that FACTEST can find controllers for four vehicle models (3-6 dimensional state space and 2-4 dimensional input space) across eight scenarios (with up to 22 obstacles), all with running time at the sub-second range.
Reachability Analysis using Message Passing over Tree Decompositions.
ABSTRACT. In this paper, we study efficient approaches to reachability analysis
for discrete-time nonlinear dynamical systems when the dependencies
among the variables of the system have low treewidth. Reachability
analysis over nonlinear dynamical systems asks if a given set of
target states can be reached starting from an initial set of
states. This is solved by computing conservative over approximations
of the reachable set using abstract domains to represent these
approximations. However, most approaches must tradeoff the level of
conservatism against the cost of performing analysis, especially when
the number of system variables increases. This makes reachability
analysis challenging for nonlinear systems with a large number of
state variables. Our approach works by constructing a dependency graph
among the variables of the system. The tree decomposition of this
graph builds a tree wherein each node of the tree is labeled with
subsets of the state-variables of the system. Furthermore, the tree
decomposition satisfies important structural properties. Using the
tree decomposition, our approach abstracts a set of states of the high
dimensional system into a tree of sets of lower dimensional
projections of this state. We derive various interesting properties of
this abstract domain, including conditions under which the original
high dimensional set can be fully recovered from its low dimensional
projections. Next, we use ideas from message passing developed
originally for belief propagation over Bayesian networks to perform
reachability analysis over the full statespace in an efficient
manner. We illustrate our approach on some interesting nonlinear
systems with low treewidth to demonstrate the advantages of our
approach.
A Novel Approach for Solving the BMI Problem in Barrier Certicates Generation
ABSTRACT. Barrier certificates generation is widely used in safety verification of hybrid systems because of its relatively low computational complexity. Under sum of squares (SOS) relaxation, the problem of barrier certificate generation is equivalent to that of solving a bilinear matrix inequality (BMI) with a particular type. The paper reveals the special feature of the problem, and adopts it to build a novel computational method. The proposed method introduces a sequential iterative scheme that is able to find analytical solutions, rather than the nonlinear solving procedure to produce numerical solutions used by general BMI solvers and thus is more efficient than them. In addition, different from popular LMI solving based methods, it does not make the verification conditions more conservative, and thus reduces the risk of missing feasible solutions. Benefitting from these two appealing features, it can produce barrier certificates not amenable to existing methods, which is supported by a complexity analysis as well as the experiment on some benchmarks.
PIRK: Scalable Interval Reachability Analysis for High-Dimensional Nonlinear Systems
ABSTRACT. Reachability analysis is a critical tool for the formal verification of dynamical systems and the synthesis of controllers for them. Due to their computational complexity, many reachability analysis methods are restricted to systems with relatively small dimensions. One significant reason for such limitation is that those approaches, and their implementations, are not designed to leverage parallelism. They use algorithms that are designed to run serially within one compute unit and they can not utilize widely-available high-performance computing (HPC) platforms such as many-core CPUs, GPUs and Cloud-computing services.
This paper presents PIRK, a tool to efficiently compute reachable sets for general nonlinear systems of extremely high dimensions. PIRK can utilize HPC platforms for computing reachable sets for general high-dimensional non-linear systems. PIRK has been tested on several systems, with state dimensions up to 4 billion. The scalability of PIRK ’s parallel implementations is found to be highly favorable.
Formal Analysis and Redesign of a Neural Network-Based Aircraft Taxiing System with VerifAI
ABSTRACT. We demonstrate a unified approach to rigorous design of safety-critical autonomous systems using the VerifAI toolkit for formal analysis of AI-based systems. VerifAI provides an integrated toolchain for tasks spanning the design process, including modeling, falsification, debugging, and ML component retraining. We evaluate all of these applications in an industrial case study on an experimental autonomous aircraft taxiing system developed by Boeing, which uses a neural network to track the centerline of a runway. We define runway scenarios using the Scenic probabilistic programming language, and use them to drive tests in the X-Plane flight simulator. We first perform falsification, automatically finding environment conditions causing the system to deviate significantly from the centerline (or even leave the runway entirely). Next, we use counterexample analysis to identify distinct failure cases, and confirm their root causes with specialized testing. Finally, we use the results of falsification and debugging to retrain the network, eliminating several failure cases and improving the overall performance of the closed-loop system.
AEON: Attractor Bifurcation Analysis of Parametrised Boolean Networks
ABSTRACT. Boolean networks (BNs) provide an effective modelling tool for various phenomena from science and engineering. Any long-term behaviour of a BN eventually converges to a so-called attractor. Depending on various logical parameters, the structure and quality of attractors can undergo a significant change, known as a bifurcation. We present a tool for analysing bifurcations in asynchronous parametrised Boolean networks. To fight the state-space and parameter-space explosion problem the tool uses a parallel semi-symbolic algorithm.
The artifact of the tool is available in the form of a VMbox image at http://biodivine.fi.muni.cz/aeon_vm.ova.
Global Guidance for Local Generalization in Model Checking
ABSTRACT. SMT-based model checkers, especially IC3-style ones, are currently the most
effective techniques for verification of infinite state systems. They infer
global inductive invariants via local reasoning about a single
step of the transition relation of a system, while employing SMT-based
procedures, such as interpolation, to mitigate the limitations of local
reasoning and allow for better generalization. Unfortunately, these
mitigations intertwine model checking with heuristics of the underlying
SMT-solver, negatively affecting stability of model checking.
In this paper, we propose to tackle the limitations of locality in a
systematic manner. We introduce explicit global guidance into the local
reasoning performed by IC3-style algorithms. To this end, we extend the
SMT-IC3 paradigm with three novel rules, designed to mitigate fundamental
sources of failure that stem from locality. We instantiate these rules for the
theory of Linear Integer Arithmetic and implement them on top of Spacer
solver in Z3. Our empirical results show that GSpacer, Spacer extended with
global guidance, is significantly more effective than both Spacer and sole global
reasoning, and, furthermore, is insensitive to interpolation.
Towards Model Checking Real-World Software-Defined Networks
ABSTRACT. In software defined networks (SDN) a controller program is in charge of deploying diverse network functionality across a large number of switches, but this comes at a great risk: deploying buggy controller code could result in network and service disruption and security loopholes. The automatic detection of bugs or, even better, verification of their absence is thus most desirable, yet the size of the network and the complexity of the controller makes this a challenging undertaking.
In this paper we propose MOCS, a highly expressive, optimised SDN model that allows capturing subtle real-world bugs, in a reasonable amount of time. This is achieved by (1) analysing the model for possible partial order reductions, (2) statically pre-computing packet equivalence classes and (3) indexing packets and rules that exist in the model. We demonstrate its superiority compared to the state of the art in terms of expressivity, by providing examples of realistic bugs that a prototype implementation of MOCS in UPPAAL caught, and performance/scalability, by running examples on various sizes of network topologies, highlighting the importance of our abstractions and optimisations.
Action-Based Model Checking: Logic, Automata, and Reduction
ABSTRACT. Stutter invariant properties play a special role in state-based model checking: they are the properties that can be checked using partial order reduction (POR), an indispensable optimization. There are algorithms to decide whether an LTL formula or Büchi automaton (BA) specifies a stutter-invariant property, and to convert such a BA to a form that is appropriate for on-the-fly POR-based model checking.
The interruptible properties play the same role in action-based model checking that stutter-invariant properties play in the state-based case. These are the properties that are invariant under the insertion or deletion of "invisible" actions. We present algorithms to decide whether an LTL formula or BA specifies an interruptible property, and show how a BA can be transformed to an interrupt normal form that can be used in an on-the-fly POR algorithm. We have implemented these algorithms in a new model checker named McRERS, and demonstrate their effectiveness using the RERS 2019 benchmark suite.
Seminator 2: Improved Semi-Determinization and Complementation of Omega-Automata
ABSTRACT. We present the second generation of the tool Seminator that transforms
transition-based generalized Büchi automata (TGBAs) into equivalent
semi-deterministic automata. The tool has been extended with numerous
optimizations and produces considerably smaller automata than its
first version. In connection with the state-of-the-art LTL to TGBAs
translator Spot, Seminator 2 produces smaller (on average)
semi-deterministic automata than the direct LTL to semi-deterministic
automata translator ltl2ldgba of the Owl library. Further, Seminator 2
has been extended with an improved NCSB complementation procedure for
semi-deterministic automata, providing a new way to complement au
tomata that is competitive with state-of-the-art complementation
tools.
RTLola Cleared for Take-Off: Monitoring Autonomous Aircraft
ABSTRACT. The autonomous control of unmanned aircraft is a highly
safety-critical domain with great economic potential in a wide range
of application areas, including logistics, agriculture, civil engineering, and
disaster recovery. We report on the development of a dynamic
monitoring framework for the DLR ARTIS (Autonomous Rotorcraft Testbed
for Intelligent Systems) family of unmanned aircraft based on the
formal specification language RTLola. RTLola is a stream-based
specification language for real-time properties. An RTLola
specification of hazardous situations and system failures is
statically analyzed in terms of consistency and resource usage and
then automatically translated into an FPGA-based monitor. Our
approach leads to highly efficient, parallelized monitors with formal
guarantees on the noninterference of the monitor with the normal
operation of the autonomous system.
ABSTRACT. The correctness of networks is often described along the individual data flow of components instead of their global behavior. In software-defined networks, it is far more convenient to specify the correct behavior of packets than the global behavior of the entire network. Petri nets with transits extend Petri nets and Flow-LTL extends LTL such that the data flow of tokens can be tracked. We present the tool AdamMC as the first model checker for Petri nets with transits against Flow-LTL. We describe how AdamMC can automatically encode concurrent updates of realistic software-defined networks as Petri nets with transits and how common network specifications can be expressed in Flow-LTL. Underlying AdamMC is a reduction to a circuit model checking problem. We introduce a new reduction method to the circuit model checking problem that results in tremendous performance improvements compared to a previous prototype. Thereby, AdamMC can handle software-defined networks with up to 82 switches.