After the recent entropy flaws with a number of hardware wallets, this is a new idea as to how to gather entropy.
Once the wallet detects audio, it chooses 32 separate frames (based on amplitude), uses the raw audio data captured, performs sha256 on each frame, appends the result to a big buffer (approx 1024 bytes) and then finally performs sha256 on this buffer to obtain the entropy.
Simply put, even the same audio, with the same timing, volume, hardware - is going to yield a different result each time. Approximately 85kb of C++ (including derivation, mnemonic and crypto code) linked against SDL2 and libsecp256k1.
So far it works with 128 bit (12 words), 192 bit (18 words) and 256 bit (24 words).
Derives P2PKH, P2SH and P2WPKH for Satoshi-based currencies; would be very easy to extend to Web3 currencies etc.
Relying on hardware RNG/CSPRNG doesn't always bode well (the hardware itself could be flawed/backdoored, not to mention the firmware being buggy), so this is an innovative new take on the solution.
Shrinking this down to work on something like an STM32 microcontroller wouldn't be difficult.
Thoughts?
https://www.youtube.com/watch?v=BmQPF9dN55Q