scholarly journals Formalisation and implementation of an algorithm for bytecode verification of @NonNull types

2011 ◽  
Vol 76 (7) ◽  
pp. 587-608 ◽  
Author(s):  
Chris Male ◽  
David J. Pearce ◽  
Alex Potanin ◽  
Constantine Dymnikov
2008 ◽  
Vol 31 (1) ◽  
pp. 1-63 ◽  
Author(s):  
C. Bernardeschi ◽  
N. De Francesco ◽  
G. Lettieri ◽  
L. Martini ◽  
P. Masci

2005 ◽  
Vol 131 ◽  
pp. 27-38 ◽  
Author(s):  
Andreas Gal ◽  
Christian W. Probst ◽  
Michael Franz

2009 ◽  
Vol 44 (8) ◽  
pp. 4-4
Author(s):  
Brian W. DeVries ◽  
Gopal Gupta ◽  
Kevin W. Hamlen ◽  
Scott Moore ◽  
Meera Sridhar

2005 ◽  
Vol 141 (1) ◽  
pp. 221-236 ◽  
Author(s):  
Łucja Kot ◽  
Dexter Kozen

2013 ◽  
Vol 23 (4) ◽  
pp. 402-451 ◽  
Author(s):  
NIKHIL SWAMY ◽  
JUAN CHEN ◽  
CÉDRIC FOURNET ◽  
PIERRE-YVES STRUB ◽  
KARTHIKEYAN BHARGAVAN ◽  
...  

AbstractDistributed applications are difficult to program reliably and securely. Dependently typed functional languages promise to prevent broad classes of errors and vulnerabilities, and to enable program verification to proceed side-by-side with development. However, as recursion, effects, and rich libraries are added, using types to reason about programs, specifications, and proofs becomes challenging. We present F*, a full-fledged design and implementation of a new dependently typed language for secure distributed programming. Our language provides arbitrary recursion while maintaining a logically consistent core; it enables modular reasoning about state and other effects using affine types; and it supports proofs of refinement properties using a mixture of cryptographic evidence and logical proof terms. The key mechanism is a new kind system that tracks several sub-languages within F* and controls their interaction. F* subsumes two previous languages, F7 and Fine. We prove type soundness (with proofs mechanized in Coq) and logical consistency for F*. We have implemented a compiler that translates F* to .NET bytecode, based on a prototype for Fine. F* provides access to libraries for concurrency, networking, cryptography, and interoperability with C#, F#, and the other .NET languages. The compiler produces verifiable binaries with 60% code size overhead for proofs and types, as much as a 45x improvement over the Fine compiler, while still enabling efficient bytecode verification. We have programmed and verified nearly 50,000 lines of F* including new schemes for multi-party sessions; a zero-knowledge privacy-preserving payment protocol; a provenance-aware curated database; a suite of web-browser extensions verified for authorization properties; a cloud-hosted multi-tier web application with a verified reference monitor; the core F* typechecker itself; and programs translated to F* from other languages such as F7 and JavaScript.


Sign in / Sign up

Export Citation Format

Share Document