Skip to contentSkip to conversation

(0/4) Entropy accounting fixes

PATCH David Brownell 2 participants 2 messages Aug 18, 2002

lore
Share & tools
lore
#0 lore raw
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

#1 lore raw
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_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.

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.."