No description
| arduino/strix | ||
| fpga | ||
| nix | ||
| .gitignore | ||
| devbox.json | ||
| devbox.lock | ||
| LICENSE | ||
| NOTES.md | ||
| README.md | ||
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:
- Install Arduino IDE from here or via chocolatey:
choco install arduino - Install Intel Quartus Lite. In the list of devices select
Cyclone 10 LP device support
FPGA Development
- Intel Quartus
- Open Project > select
strix.qpffrom thefpga/srcdirectory in this repo.
- Open Project > select
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.inofrom thearduino/strixdirectory 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