295 research outputs found
TWAM: A Certifying Abstract Machine for Logic Programs
Type-preserving (or typed) compilation uses typing derivations to certify
correctness properties of compilation. We have designed and implemented a
type-preserving compiler for a simply-typed dialect of Prolog we call T-Prolog.
The crux of our approach is a new certifying abstract machine which we call the
Typed Warren Abstract Machine (TWAM). The TWAM has a dependent type system
strong enough to specify the semantics of a logic program in the logical
framework LF. We present a soundness metatheorem which constitutes a partial
correctness guarantee: well-typed programs implement the logic program
specified by their type. This metatheorem justifies our design and
implementation of a certifying compiler from T-Prolog to TWAM.Comment: 41 pages, under submission to ACM Transactions on Computational Logi
SpecCert: Specifying and Verifying Hardware-based Security Enforcement
Over time, hardware designs have constantly grown in complexity and modern platforms involve multiple interconnected hardware components. During the last decade, several vulnerability disclosures have proven that trust in hardware can be misplaced. In this article, we give a formal definition of Hardware-based Security Enforcement (HSE) mechanisms, a class of security enforcement mechanisms such that a software component relies on the underlying hardware platform to enforce a security policy. We then model a subset of a x86-based hardware platform specifications and we prove the soundness of a realistic HSE mechanism within this model using Coq, a proof assistant system
Abstraction-carrying code: a model for mobile code safety
Proof-Carrying Code (PCC) is a general approach to mobile
code safety in which programs are augmented with a certificate (or proof).
The intended benefit is that the program consumer can locally validate the
certificate w.r.t. the "untrustcd" program by means of a certificate checker a
process which should be much simpler, efficient, and automatic than generating
the original proof. The practical uptake of PCC greatly depends on the
existence of a variety of enabling technologies which allow both proving programs
correct and replacing a costly verification process by an efficient checking
proceduri on th( consumer side. In this work we propose Abstraction-
Carrying Code (ACC), a novel approach which uses abstract interpretation
as enabling technology. We argue that the large body of applications of abstract
interpretation to program verification is amenable to the overall PCC
scheme. In particular, we rely on an expressive class of safely policies which
can be defined over different abstract domains. We use an abstraction (or
abstract model) of the program computed by standard static analyzers as a
certificate. The validity of the abstraction on ihe consumer side is checked
in a single pass by a very efficient and specialized abstract-interpreter. We
believe that ACC brings the expressiveness, flexibility and automation which
is inherent in abstract interpretation techniques to the area of mobile code
safety
Type Inference for Deadlock Detection in a Multithreaded Polymorphic Typed Assembly Language
We previously developed a polymorphic type system and a type checker for a
multithreaded lock-based polymorphic typed assembly language (MIL) that ensures
that well-typed programs do not encounter race conditions. This paper extends
such work by taking into consideration deadlocks. The extended type system
verifies that locks are acquired in the proper order. Towards this end we
require a language with annotations that specify the locking order. Rather than
asking the programmer (or the compiler's backend) to specifically annotate each
newly introduced lock, we present an algorithm to infer the annotations. The
result is a type checker whose input language is non-decorated as before, but
that further checks that programs are exempt from deadlocks
A formally verified compiler back-end
This article describes the development and formal verification (proof of
semantic preservation) of a compiler back-end from Cminor (a simple imperative
intermediate language) to PowerPC assembly code, using the Coq proof assistant
both for programming the compiler and for proving its correctness. Such a
verified compiler is useful in the context of formal methods applied to the
certification of critical software: the verification of the compiler guarantees
that the safety properties proved on the source code hold for the executable
compiled code as well
Mobile Resource Guarantees for Smart Devices
Abstract. We present the Mobile Resource Guarantees framework: a system for ensuring that downloaded programs are free from run-time violations of resource bounds. Certificates are attached to code in the form of efficiently checkable proofs of resource bounds; in contrast to cryptographic certificates of code origin, these are independent of trust networks. A novel programming language with resource constraints encoded in function types is used to streamline the generation of proofs of resource usage.
On the relative expressiveness of higher-order session processes
By integrating constructs from the λ-calculus and the π-calculus, in higher-order process calculi exchanged values may contain processes. This paper studies the relative expressiveness of HOπ, the higher-order π-calculus in which communications are governed by session types. Our main discovery is that HO, a subcalculus of HOπ which lacks name-passing and recursion, can serve as a new core calculus for session-typed higher-order concurrency. By exploring a new bisimulation for HO, we show that HO can encode HOπ fully abstractly (up to typed contextual equivalence) more precisely and efficiently than the first-order session π-calculus (π). Overall, under session types, HOπ, HO, and π are equally expressive; however, HOπ and HO are more tightly related than HOπ and π
- …