I have been looking at an embedded microcontroller which has a cryptographic hardware engine (in particular the PIC32MZ family). These devices have what they advertise as a cryptographically secure PRNG, as well as a true random number generator.
The features of the random number generators are,
- List item
- Up to 25 Mbps of random bits
- Multi-Ring Oscillator based design
- Built in Bias Corrector
- Up to 64-bit polynomial length
- Programmable polynomial
- TRNG can be seed value
From what I've read about LFSR PRNG (in particular this answer) my understanding is that you only require 2*n bits to be able to determine the polynomial of the LFSR and hence all the random numbers that it generates.
If my understanding is correct, then only 128 bits (16 bytes) of random data are required before the random data is compromised - that is just enough for a single AES IV.
One way that I can imagine making the PRNG cryptographically secure is to reseed it after every 16 bytes using the TRNG - would this be secure?
Is it even possible to make a LFSR cryptographically secure?