Restructure README

This commit is contained in:
Patrick Rathje 2020-11-10 21:48:29 +01:00 committed by GitHub
parent 5fea4b55e7
commit b211d716e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 47 additions and 26 deletions

View File

@ -1,12 +1,14 @@
# Covid Bracelet, compatibile with Covid Apps on iOS and Android [![Actions Status: test](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/test/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions) [![Actions Status: build](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/build/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions) # Contact Tracing Wristband [![Actions Status: test](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/test/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions) [![Actions Status: build](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/build/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions)
This project aims to add support the [Exposure Notification (EN) protocol for tracing contacts from Apple and Google](https://covid19.apple.com/contacttracing) on low-power wristbands. It maintains full compatibility with smartphone Apps based on the EN protocol.
**Note: this is a proof of concept and not ready for production**
**Contributions Welcome!** **Contributions Welcome!**
## Features ## Features
* Sends and receives exposure beacons as specified by Google and Apple for Covid Contact Tracing * Builds on Zephyr OS targetting the NRF52 BLE SOCs
* Easy project setup using [PlatformIO](https://platformio.org/platformio-ide)
* Sends and receives exposure beacons as specified by Google and Apple for Covid Contact Tracing
* Rolling, encrypted, anonymous beacons * Rolling, encrypted, anonymous beacons
* Compatible with Apple iOS and Android phones * Compatible with Apple iOS and Android phones
* With rolling proximity identifiers and encrypted metadata * With rolling proximity identifiers and encrypted metadata
@ -18,47 +20,66 @@
* computes rolling proximity identifiers * computes rolling proximity identifiers
* compares to stored contacts to check for exposure * compares to stored contacts to check for exposure
Builds on on Zephyr OS and NRF52 BLE SOCs. Note: as we for now do not use the flash for key storage, this currently only works on nrf52480 or you can just store a very small number of keys. Moving the keys to flash is on the TODO list and will fix this. Note: as we for now do not use the flash for key storage, this currently only works on nrf52480 or you can just store a very small number of keys. Moving the keys to flash is on the TODO list and will fix this.
## Getting Started
This project is based on platformIO for an easy setup process, see: [https://platformio.org/platformio-ide](https://platformio.org/platformio-ide).
## Get Started:
This project is based on platformIO, see: [https://platformio.org/platformio-ide](https://platformio.org/platformio-ide)
## Testing ## Testing
To run the tests for the desktop environment select the test task for desktop or run: To run the tests for the desktop environment select the task *test* for desktop or run:
``` ```
platformio test -e desktop platformio test -e desktop
``` ```
**Note: this is a proof of concept and not ready for production**
## Demo Video ## Demo Video
[![Video Demo](https://img.youtube.com/vi/tYGsFJC3LtE/0.jpg)](https://youtu.be/tYGsFJC3LtE) [![Video Demo](https://img.youtube.com/vi/tYGsFJC3LtE/0.jpg)](https://youtu.be/tYGsFJC3LtE)
## Open / Possible next steps ## Roadmap
* firmware of the air updates (signed): done in testing
* fix entropy: keys are always the same on boot up ### Flash Support
* time sync * Store long-term contacts in flash
* set device name, user id or so in Flash
### Device Initialization
The devices need to be initialized:
* Fix entropy: keys are always the same on boot up
* Synchronize time
* Set device name, user id or so in Flash (-> persistend configuration)
### Device Synchronization
* Extend beyond the simple (existing) basestation
* Synchronize time
* Get infections from DB, Check their signatures
* Secure GATT services and authentication of base statation in general
* Read keys form national databases
### Extract Keys from Device
In case of an infection, the keys need to be extracted from the device:
* Secure extraction of keys
(Base version existing)
### Device Updates Over the Air (OTA)
Securely updating many running devices over the air with signed firmware will greatly improve maintainability. Related feature branch: [feature/ota](https://github.com/CovidBraceletPrj/CovidBracelet/tree/feature/ota)
### Logging
* extensive logging: crash, reboot, battery level, charging state, contacts, memory useage, flash usage
* Energy efficiency
### Protocol Specifications
* set scanning interval to the correct value, for now we just use the default * set scanning interval to the correct value, for now we just use the default
* set advertisement interval, correct value, for now we just use the default: should be 200-270 milliseconds * set advertisement interval, correct value, for now we just use the default: should be 200-270 milliseconds
* store long-term contacts in flash
* set transmit power and store this in the corona beacons * set transmit power and store this in the corona beacons
* get infections from DB, check their signatures
* extensive logging: crash, reboot, battery level, charging state, contacts, memory useage, flash usage,
* extensive compatibility testing with Apple iOS and Android devices * extensive compatibility testing with Apple iOS and Android devices
* contininous integration testing
* Energy efficiency
* BLE advertisements sets * BLE advertisements sets
* Secure GATT services and authentication of base statation in general
### Other
* Contininous integration testing
* More platforms: with display etc. * More platforms: with display etc.
## TODOs Wristband ## Possible Platforms
Possible platforms for real-world deployment many, as many of the cheap fitness trackers base on NRF52 or chips with similar capabilities. Possible platforms for real-world deployment many, as many of the cheap fitness trackers base on NRF52 or chips with similar capabilities.
However, many would need the firmware to be shipped to manufactures. However, many would need the firmware to be shipped to manufactures.
* Watch UI * Watch UI
* Pine Time could be good for testing * Pine Time could be good for testing
## TODOs App and Basestation
* extend this beyond the simple basestation
* read keys form national databases