GithubHelp home page GithubHelp logo

norrathep / sel4_hydra Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 26.66 MB

Attestation and software update in seL4

Home Page: http://sprout.ics.uci.edu/projects/attestation/papers/hydra.pdf

License: GNU General Public License v2.0

Shell 4.86% Makefile 0.92% C 69.90% C++ 2.78% Objective-C 10.14% HyPhy 0.19% Python 4.24% Assembly 1.31% C# 0.21% TeX 2.00% Perl 0.14% Haskell 3.12% Brainfuck 0.02% Vim Script 0.01% sed 0.01% Lex 0.05% Yacc 0.11%
sel4 attestation c secure-update embedded-systems imx6

sel4_hydra's Introduction

Description

This project requires two entities: prover and verifier. Prover is I.MX6-SabreLite while verifier is a powerful Windows machine.

HYDRA is published at WiSec'17. If you plan to use any part of our HYDRA code, please consider citing:

@inproceedings{eldefrawy2017hydra,
  title={HYDRA: hybrid design for remote attestation (using a formally verified microkernel)},
  author={Eldefrawy, Karim and Rattanavipanon, Norrathep and Tsudik, Gene},
  booktitle={Proceedings of the 10th ACM Conference on Security and Privacy in Wireless and Mobile Networks},
  pages={99--110},
  year={2017},
  organization={ACM}
}

ASSURED is accepted as a publication at EMSOFT'18.

@inproceedings{asokan2018assured,
  title={ASSURED: Architecture for Secure Software Update of Realistic Embedded Devices},
  author={Asokan, N and Nyman, Thomas and Rattanavipanon, Norrathep and Sadeghi, Ahmad-Reza and Tsudik, Gene},
  booktitle={EMSOFT},
  year={2018}
}

Prover

SW-UPDATE:

Source code:

prover/apps/dhs-demo: main software update framework
prover/apps/fuel-level-app and prover/apps/speedometer-app: updatable user-space processes

To compile:

cp configs/sw-update-image-imx6 .config
make clean && make
cd sel4-stripimage
make run

To run on SabreLite: Assume (i) micro-sd is inserted at /dev/sdX and (ii) the SabreLite board is configured to be able to run seL4 executable (if not, visit: https://sel4.systems/Info/Hardware/sabreLite/)

  1. dd if=fuel-level-app of=/dev/sdX bs=512 seek=2048

  2. dd if=speedometer-app of=/dev/sdX bs=512 seek=4096

  3. Manually copy 'dhs-demo-image-arm-imx6' into micro-sd and insert micro-sd back to the SabreLite board

  4. Try to boot I.MX6-SabreLite with ethernet cable attached, interrupt using the spacebar, then type the following commands:

mmc dev 1
fatload mmc 1 ${loadaddr} dhs-demo-image-arm-imx6
bootelf ${loadaddr}

WARNING: In my case, it seems like the MMC driver does not work properly, so I have to load the executable to RAM from dev 0 slot (an SD slot).

So the first two steps change to: 4.1) mmc dev 0, 4.2) fatload mmc 0 ${loadaddr} dhs-demo-image-arm-imx6 Then switch the micro-sd card to dev 1 slot and run 4.3)

Note that this version implements a software update framework based on a modified TUF verification on seL4; it DOES NOT implement ASSURED.

SW-UPDATE-BENCHMARK (ASSURED)

Source code:

prover/apps/update-benchmark

To compile

cp configs/sw-update-benchmark-image-imx6 .config
make clean && make

To run on SabreLite:

  1. Manually copy 'update-benchmark-image-arm-imx6' into micro-sd and insert micro-sd back to the SabreLite board
  2. Try to boot I.MX6-SabreLite, interrupt using the spacebar, then type the following commands:
mmc dev 1
fatload mmc 1 ${loadaddr} update-benchmark-image-arm-imx6
bootelf ${loadaddr}

It contains a proof-of-concept of the ASSURED implementation that can be run on I.MX6-SabreLite. It is only used for benchmarking purposes only as there is no verifier code to support it yet.

ATTESTATION (HYDRA):

Source code:

prover/apps/hydra: main attestation framework
prover/apps/hydra-app: target process for attestation

To compile:

cp configs/hydra-attest-image-imx6 .config
make clean
make

To run on SabreLite:

  1. Manually copy 'hydra-image-arm-imx6' into micro-sd and insert micro-sd back to the SabreLite board
  2. Try to boot I.MX6-SabreLite, interrupt using the spacebar, then type the following commands:
mmc dev 1
fatload mmc 1 ${loadaddr} hydra-image-arm-imx6
bootelf ${loadaddr}

Verifier

The verifier requires Visual Studio 2015 on Windows 10.

  1. Configure ethernet IP of the verifier machine to 192.168.168.1
  2. Run both UDP-test and windows_verifier projects, follow their instructions

License

GPLv2 see LICENSE for more details.

sel4_hydra's People

Contributors

norrathep avatar

Stargazers

 avatar  avatar

Watchers

 avatar  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.