• Stars
    star
    193
  • Rank 201,081 (Top 4 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 3 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

rustBoot is a standalone bootloader written entirely in `Rust`, designed to run on anything from a microcontroller to a system on chip. It can be used to boot into bare-metal firmware or Linux.

GitHub ci chat

rustBoot

rustBoot is a standalone bootloader, written entirely in Rust, designed to run on anything from a microcontroller to a system on chip. It can be used to boot into bare-metal firmware or Linux.

rustBoot

Why rustBoot?

rustBoot aims to offer an OS and micro-architecture agnostic (i.e. highly portable) secure bootloader which is standards-compatible and easy to integrate into existing embedded software projects.

What is rustBoot

Features currently supported:

  • support for ARM Cortex-M, Cortex-A micro-architectures
  • support for multi-slot partitioning of microcontroller flash memory. This allows us to implement the boot/update approach for bare-metal firmware updates.
  • support for Aarch64 linux booting
  • elliptic curve cryptography for integrity and authenticity verification using RustCrypto crates
  • a tiny hardware abstraction layer for non-volatile memory (i.e. flash) access.
  • anti-rollback protection via version numbering.
  • a fully memory safe core-bootloader implementation with safe parsers and firmware-update logic.
  • power-interruptible firmware updates along with the assurance of fall-back availability.
  • a signing utility to sign bare-metal firmware and fit-image(s), written in pure rust.

Features planned:

  • support for external flash devices (ex: SPI flash) and serial/console logging interfaces.
  • support for ARM TrustZone-M and A and certified secure hardware elements - microchip ATECC608a, NXP SE050, STSAFE-100
  • support for secure, distributed and efficient firmware transport over ipfs.

Documentation:

You can read the book for free online..

Note: rustBoot and the book are still in development (i.e. a work in progress).

Acknowledgment:

rustBoot exists as we could not find a suitable (open-source) option that meets our security goals. It is the result of an exhaustive evaluation of 'pretty much' the entire embedded-bootloader landscape.

Having said that, it does take inspiration from similar projects (such as u-boot, zephyr, mcuboot, coreboot, wolfBoot etc). However, the key differentiator is security-above-all-else. To that extent, its built entirely in rust, takes full advantage of rust's memory safety guarantees while leveraging safer parsing libraries, compile-time state-transition checks coupled with (safe) community sourced rust-crates (such as boards, HALs drivers etc.)

Support:

For questions, issues, feature requests, and other changes, please file an issue in the github project.

License:

rustBoot is licensed under

Contributing:

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the MIT license, shall be licensed as above, without any additional terms or conditions.

More Repositories

1

rustdhipv2

A prototype implementation of the Host Identity Protocol v2 for bare-metal systems, written in pure-rust.
Rust
38
star
2

Rusty_CryptoAuthLib

A platform agnostic (minimal) I2C driver for Microchip's Crypto Authentication HW (i.e. secure element `ATECC608A`), written in pure Rust.
Rust
24
star
3

fingerprinting_radios_w_ML

The key idea behind radio ๏ฌngerprinting is to extract unique patterns (or features) and use them as signatures to identify devices (or more precisely ID a radio embedded within a device).
Python
22
star
4

micropython_sensorfusion

Jupyter Notebook
21
star
5

optimus

A plain vanilla transformer implementation in Rust using the Candle ML framework
Rust
16
star
6

JWT-based-device-auth

Demonstrating 'secure device authentication' using an esp32 running the micropython firmware. This demo leverages a microchip secure element atecc608a and authenticates with Google IoT Core.
Jupyter Notebook
13
star
7

rustBoot-book

rustBoot documentation
Shell
10
star
8

static-dh-ecdh

Pure Rust implementations of static Diffie-Hellman (and static elliptic-curve DH) key-exchange
Rust
9
star
9

google_pay_ultrasound_tokens

This repo contains code for an ultrasound receiver. It can be used to sniff an 8 digit token (generated by Google-pay apps.) used in the discovery and pairing process.
HTML
5
star
10

rtic-twim-twis-dma-demo

A (working) example to demonstrate use of non-blocking DMA transactions on a nrf52840_mdk (makerdiary) board.
Rust
4
star
11

dtb2mmio

dtb2mmio is a simple command line utility that can parse device-tree blobs or flattened device-trees.
Rust
3
star
12

rustplanet-trainings

A curated set of rust related trainings for the embedded systems developer.
HTML
3
star
13

mtl

A playground for experimenting with Apple silicon GPUs and metal-rs bindings
Rust
3
star
14

gpuwithwgpu

Rust
2
star
15

nrf-secureboot-test

An nRF bootloader to generate and test `rust bindings` with rust-bindgen for nRF52840's HW crypto accelerator i.e. the ARM CryptoCell 310.
C
2
star
16

simple_conf_parser

A simple nom-based config parser
Rust
2
star
17

gen-llvm

A playground to learn Inkwell
LLVM
1
star
18

secautomation

A few js/python scripts that can be repurposed to save time
JavaScript
1
star