Python subclass of Random using an RTLSDR as the entropy seed. As of now, does not provide a CSPRNG. While changing the seeding for a Mersenne-Twister (what random() uses internally) should prevent attacks, this should not be used for functions that need cryptographically secure random numbers.
Inspiration taken from https://github.com/michelp/randio
The best paper I've been able to find on using radio transmissions as entropy for a random number generator is True Random Number Generator Utilizing FM Radio Signals for Mobile and Embedded Devices in Multi-Access Edge Computing by Kyungroul Lee and Manhee Lee. The 2019 paper estimates 0.71 - 1 bits of entropy for every sample bit. It does this by sampling FM radio stations, switching between them. Then playing the recorded signal through speakers and recording it as audio to mix in noise from the speakers and the microphone.
- pyrtlsdr
- RTL-SDR receiver and antenna
Probably not. It's generally not a good idea to roll your own crypto. After all, just because amateurs are able to design something they themselves cannot break doesn't mean it cannot be broken.
If you're building anything other than a toy-project, I recommend you use something that's been more verified than this project.
- Dieharder tests
- FIPS tests
- Better command-line support
- Args to set frequency
- Sample rate