CovidBracelet/README.md

62 lines
2.6 KiB
Markdown
Raw Normal View History

2020-07-08 23:11:41 +02:00
# Covid Bracelet, compatibile with Covid Apps on iOS and Android
2020-06-10 16:38:30 +02:00
**Contributions Welcome!**
## Features
2020-06-10 16:38:30 +02:00
* Sends and receives exposure beacons as specified by Google and Apple for Covid Contact Tracing
2020-06-08 11:45:02 +02:00
* Rolling, encrypted, anonymous beacons
* Compatible with Apple iOS and Android phones
2020-06-10 16:38:30 +02:00
* With rolling proximity identifiers and encrypted metadata
* Proximity identifiers and BLE addresses change every 10 minutes
* Stores own keys for 14 days
* Stores contacts of more than 5 minute duration
* Upon infection upload keys to a public database
* Retrieve keys of infections from database
2020-06-08 11:45:02 +02:00
* computes rolling proximity identifiers
* compares to stored contacts to check for exposure
2020-07-08 23:13:04 +02:00
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.
2020-06-10 16:38:30 +02:00
## Get Started:
This project is based on platformIO, see: [https://platformio.org/platformio-ide](https://platformio.org/platformio-ide)
## Testing
To run the tests for the desktop environment select the test task for desktop or run:
```
platformio test -e desktop
```
2020-06-10 16:38:30 +02:00
2020-06-08 11:16:05 +02:00
**Note: this is a proof of concept and not ready for production**
2020-06-09 23:06:21 +02:00
## Demo Video
[![Video Demo](https://img.youtube.com/vi/tYGsFJC3LtE/0.jpg)](https://youtu.be/tYGsFJC3LtE)
## Open / Possible next steps
2020-07-01 00:03:52 +02:00
* firmware of the air updates (signed): done in testing
* fix entropy: keys are always the same on boot up
2020-07-01 00:03:52 +02:00
* time sync
* set device name, user id or so in Flash
* 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
* store long-term contacts in flash
2020-07-15 09:51:52 +02:00
* set transmit power and store this in the corona beacons
2020-07-01 00:03:52 +02:00
* 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
* contininous integration testing
* Energy efficiency
* BLE advertisements sets
2020-07-01 00:03:52 +02:00
* Secure GATT services and authentication of base statation in general
* More platforms: with display etc.
2020-06-08 11:17:03 +02:00
## TODOs Wristband
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.
* Watch UI
* Pine Time could be good for testing
2020-06-08 11:17:03 +02:00
## TODOs App and Basestation
* extend this beyond the simple basestation
* read keys form national databases