At
which point? A quick skim of git log --after="2013" drivers/char/random.c to pick out a few that seem to just decide to change some part of the design. They might all be done for good reasons as I said it just seems to be pretty ad hoc.
random: try to actively add entropy rather than passively wait for it
random: only read from /dev/random after its pool has received 128 bits
random: Return nbytes filled from hw RNG
random: mix rdrand with entropy sent in from userspace
random: use a different mixing algorithm for add_device_randomness()
random: add backtracking protection to the CRNG
random: replace non-blocking pool with a Chacha20-based CRNG
random: use an improved fast_mix() function
random: cap the rate which the /dev/urandom pool gets reseeded
random: account for entropy loss due to overwrites
random: allow fractional bits to be tracked
And often very little justification or reasoning is recorded:
random: replace non-blocking pool with a Chacha20-based CRNG
The CRNG is faster, and we don't pretend to track entropy usage in the
CRNG any more.
> I would be careful with the assumption that something like Fortuna is a "published and reviewed specification"; Fortuna is really just a case study Ferguson and Schneier wrote in _Practical Cryptography_. It's not a standard, or the winner of some kind of RNG design competition.
Well that's basically what a standard is, in my mind. I place little weight on additional initials of organizations which publish standards, I just think they should be there so the design can be analyzed and examined as a whole, and by people who are not experts in C programming or want to wade through the Linux source.
The section of the paper you linked would be a fine standard for Linux's RNG except that it's a continually moving target.