strix/README.md

50 lines
No EOL
1.7 KiB
Markdown

# STRIX
### Satellite True Random Information eXtractor
A portable wireless True Random Number Generator built on an Arduino MKR Vidor 4000.
## Planned Design
Entropy comes from FPGA ring oscillators whose sampled timing jitter is XOR-combined into output bits, with no pseudo-random post-processing. A SAMD21 serves the results over WiFi and USB.
- Separate stream per entropy source
- Raw and processed output modes, with a von Neumann extractor that can be toggled per output path
- On-device health tests (NIST SP 800-90B repetition count and adaptive proportion)
- Live statistics: bias, z-score, random walk and autocorrelation
- Configurable random-walk / majority-vote bias amplifier
## Set Up Dev Environment
Windows:
1. Install Arduino IDE from here or via chocolatey: `choco install arduino`
2. Install [Intel Quartus Lite](https://www.intel.com/content/www/us/en/software-kit/825278/intel-quartus-prime-lite-edition-design-software-version-23-1-1-for-windows.html). In the list of devices select `Cyclone 10 LP device support`
## FPGA Development
- Intel Quartus
- Open Project > select `strix.qpf` from the `fpga/src` directory in this repo.
## MCU Development
- Arduino IDE
- Boards Manager > Install 'Arduino SAMD Boards' (search for 'Vidor 4000')
- Library Manager > Install
- VidorPeripherals
- WiFiNINA (1.8.5, not higher)
- Open Project > `strix.ino` from the `arduino/strix` directory in this repo
## TODO
- Implement ring-oscillator entropy generators on the MKR Vidor 4000 FPGA
- Fetch random numbers from the FPGA via SPI
- Serve random numbers via USB
- Make Vidor pairable via Bluetooth/Wifi
- serve randomness wirelessly
- battery pack
- 3D case
---
## [Development Notes](NOTES.md)