3 research outputs found
Owl: Compositional Verification of Security Protocols via an Information-Flow Type System
Computationally sound protocol verification tools promise to deliver full-strength cryptographic proofs for security protocols. Unfortunately, current tools lack either modularity or automation.
We propose a new approach based on a novel use of information flow and refinement types for sound cryptographic proofs. Our framework, Owl, allows type-based modular descriptions of security protocols, wherein disjoint subprotocols can be programmed and automatically proved secure separately.
We give a formal security proof for Owl via a core language which supports standard symmetric and asymmetric primitives, Diffie-Hellman operations, and hashing via random oracles. We also implement a type checker for Owl along with a prototype extraction mechanism to Rust, and evaluate it on 14 case studies, including (simplified forms of) SSH key exchange and Kerberos
Breeding unicorns:Developing trustworthy and scalable randomness beacons
Randomness beacons are services that periodically emit a random number, allowing users to base decisions on the same random value without trusting anyone: ideally, the randomness beacon does not only produce unpredictable values, but is also of low computational complexity for the users, bias-resistant and publicly verifiable. Such randomness beacons can serve as an important primitive for smart contracts in a variety of contexts. This paper first presents a structured security analysis, based on which we then design, implement, and evaluate a trustworthy and efficient randomness beacon. Our approach does not require users to register or run any computationally intensive operations. We then compare different implementation and deployment options on distributed ledgers, and report on an Ethereum smart contract-based lottery using our beacon
Celestial: A Smart Contracts Verification Framework
We present CELESTIAL, a framework for formally
verifying smart contracts written in the Solidity language for
the Ethereum blockchain. CELESTIAL allows programmers to
write expressive functional specifications for their contracts. It
translates the contracts and the specifications to F⋆ to formally
verify, against an F⋆ model of the blockchain semantics, that
the contracts meet their specifications. Once the verification
succeeds, CELESTIAL performs an erasure of the specifications to
generate Solidity code for execution on the Ethereum blockchain.
We use CELESTIAL to verify several real-world smart contracts
from different application domains. Our experience shows that
CELESTIAL is a valuable tool for writing high-assurance smart
contracts.21331421