(0/4) Entropy accounting fixes
Quoted 8 lines
Questionable Sources and Time Scales
------------------------------------Due to the vagarities of computer architecture, things like keyboard and mouse interrupts occur on their respective scanning or serial clock edges, and are clocked relatively slowly. Worse, devices like USB keyboards, mice, and disks tend to share interrupts and probably line up on USB clock boundaries.
Last time I looked, USB didn't feed into the pool of randomness at any level ... certainly none of the host controller drivers do, and I didn't notice any drivers layered on top of those bus drivers doing so either. That includes keyboards, mice, and disks; as well as network devices, webcams, and more. So that "worse" isn't real.
It's likely correct that the host controller drivers don't use the SA_SAMPLE_RANDOM flag: they're effectively sharing interrupts from many kinds of devices, some of which may be very predictable (like webcams). But it might be OK for for some of those layered drivers (HID, storage, ...) to act as entropy sources ... if such timescale issues get addressed! Maybe an URB_SAMPLE_RANDOM flag would be the right kind of model.
FWIW, interrupts for OHCI and UHCI occur on frame (1 msec) boundaries, according to their specs, though one person said he saw one vendor's OHCI silicon doing interrupts more often. For EHCI (USB 2.0) it's tunable from 1 to 64 microframes, where there are 8 microframes per frame. (Linux defaults EHCI latency to 1 microframe == 125 usec.)
- Dave
Quoted 8 lines · David Brownell
Quoted 7 lines
Questionable Sources and Time Scales
Due to the vagarities of computer architecture, things like keyboard and mouse interrupts occur on their respective scanning or serial clock edges, and are clocked relatively slowly. Worse, devices like USB keyboards, mice, and disks tend to share interrupts and probably line up on USB clock boundaries.
Quoted 5 lines
Last time I looked, USB didn't feed into the pool of randomness at any level ... certainly none of the host controller drivers do, and I didn't notice any drivers layered on top of those bus drivers doing so either. That includes keyboards, mice, and disks; as well as network devices, webcams, and more. So that "worse" isn't real.
I may be mistaken, but I believe the USB HID devices go through the generic input layer, which did get touched by my second patch.
Quoted 7 lines
It's likely correct that the host controller drivers don't use the
SA_SAMPLE_RANDOMflag: they're effectively sharing interrupts from many kinds of devices, some of which may be very predictable (like webcams). But it might be OK for for some of those layered drivers (HID, storage, ...) to act as entropy sources ... if such timescale issues get addressed! Maybe anURB_SAMPLE_RANDOMflag would be the right kind of model.
Shared interrupts are actually ok as long as my context switch criteria (or something similar) is met.
Storage is a bad source of entropy. We go out of our way to leak that timing information as accurately as possible in the typical server configuration. It's still ok to use as seed though.
Signature · 1 line
"Love the dolphins," she advised him. "Write by W.A.S.T.E.."