Code Monkey home page Code Monkey logo

verifiedscion's Introduction

VerifiedSCION

This package contains the verified implementation of the SCION protocol, a future Internet architecture. SCION is the first clean-slate Internet architecture designed to provide route control, failure isolation, and explicit trust information for end-to-end communication.

VerifiedSCION sticker

To find out more about the project, please visit the official project page.

We are currently in the process of migrating the specifications and other annotations from the original VerifiedSCION repository to this one. This repository contains an up-to-date version of SCION (which we plan to keep updated), as well as improvements resulting from our experience from our first efforts on verifying SCION.

Methodology

We focus on verifying the main implementation of SCION, written in the Go programming language.

To that end, we have developed Gobra, a program verifier for Go. Gobra allows users to annotate Go code with specifications in the form of logical assertions establishing the behaviour of the program. It then automatically checks whether the implementation matches its given specification. We use Gobra in the CI of this project via the gobra-action to verify our code-base.

In this project, we aim at verifying the data-plane component of the SCION border router. In particular, we verify the following properties:

  1. memory safety, crash freedom, and race-freedom of the SCION data-plane code
  2. progress properties and termination of the data-plane code
  3. the IO behaviour of the router successfully refines the SCION protocol - we prove this property only the handling of packets of type SCION (i.e., we ignore BFD packages for now)

When necessary, we make reasonable assumptions and explicitly state them.

Differences to scionproto/scion

This repository is meant to be updated frequently, to keep track of the changes in the SCION implementation (scionproto/scion).

We try to have minimal differences from the original code and we expect to contribute these changes to the upstream when we believe that they improve the original code.

Repo Structure

This repository contains all the code from scionproto/scion. Its directory structure is the same as the SCION repository, except that it includes the verification directory, which contains useful definitions for specifying and verifying the border router:

verification
├── dependencies # spec of 3rd-party dependencies
└── utils
    ├── definitions # useful definitions
    └── slices # slice predicates and operations

To specify and verify the border router, we often add specifications in .go files directly. We also introduce .gobra files containing ghost-code and predicate definitions specific to a package.

License

License

verifiedscion's People

Contributors

aznair avatar dspil avatar ercanucan avatar fr4nk-w avatar gavinleroy avatar hendrikzuellig avatar jcp19 avatar jinankjain avatar jordisubira avatar juagargi avatar karampok avatar klausman avatar kmavromati avatar kormat avatar lukedirtwalker avatar matzf avatar mskd12 avatar noorizea avatar oncilla avatar prateshg avatar pratyakshs avatar pszal avatar reischuk avatar scrye avatar sgmonroy avatar shitz avatar sustrik avatar tonyo avatar uniquefine avatar worxli avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.