Uniting the Linux random-number devices (2022)
lwn.net
lwn.net
[1] https://github.com/torvalds/linux/commit/6f98a4bfee72c22f50a... [2] https://github.com/torvalds/linux/commit/0313bc278dac7cd9ce8...
> "This causes a large number of qemu boot test failures for various architectures (arm, m68k, microblaze, sparc32, xtensa are the ones I observed). Common denominator is that boot hangs at 'Saving random seed:'" This isn't hugely unexpected - we tried it, it failed, so now we'll revert it.
[1] https://github.com/torvalds/linux/commit/48bff1053c172e6c7f3...
So, I understand not wanting to break RISC-V support, but _should_ people really care about breaking compatibility with early 1990s MIPS chips and a 1979 Motorola CPU?
How old does a CPU need to be in order to no longer be supported? The 32-bit x86 architecture is nearly 40 years old - should it be retired for being too old?
Parts of it already are, from a Linux point of view anyway. It looks like the mainline kernel will drop support for 486 family chips after 6.x, and support for the 386 was dropped in 3.8 (back in 2012).
Some distributions already don't release a version for 32-bit-only intel/amd architectures. It'll be a long time before x86 support is dropped in its entirety, but even today you already have less choice than if you run something not sporting an amd64 or arm compatible architecture.
I’m sure there is some way to gather architectural usage numbers + their likelihood of upgrading, roll it into a value, and if that value drops below X, that architecture gets left behind.
The reason why I mention likelihood of upgrade is that there is a gigantic amount of MIPS routers running Linux, but virtually all of them are stuck on old kernels and very unlikely to be upgraded. I’m sure other architectures have similar snags.
If you want to e.g. make use of modern crypto, the slow CPU is a far bigger issue than sourcing the random numbers.
declaration of bias: I have a non-Amiga m68k that can run linux
Yes, we care a lot more than about the 2020 MIPS incarnation (you young kids call it RISCV, fooling nobody)
MIPS was inspired by RISC, not the other way around.
There's also Renesas Rx, an ISA heavily inspired by m68k.
But even Renesas is shifting to RISC-V, sensibly so.
To give a serious response to this: you can combine the outputs of all of them to pick one of them.
Why can’t they just patch up the kernel to persist PRNG state there and require that the boot loader recovers it upon reboot? The kernel would then have high quality random data available as soon as it gets launched.
There are many new attacks that could surface if import/export were possible; off the top of my head: quiet preloading of an attacker-selected state while the machine is off.
That attacker with physical access can chose from multiple other attacks, so why bother making this one more secure. They can sniff keyboard strokes, install malware into the UEFI, etc. pp.
Just preload the OS then.
Imagine a virtual machine snapshot that you start multiple times. The separate runs would have the exact same persisted state.
When you are dealing with an attacker which can feed your PRNG non stop with their own entropy you have other issues to deal with.
Either you think there's plenty of usable entropy soon enough after power on that values can't be predicted, or you think there isn't and we need to keep a file to initialise from
> an attacker which can feed your PRNG non stop with their own entropy
Is not needed if you know the initial state from the file (which was present in the image file an attacker got their hands on, for example): knowing a sufficient percentage of outputs (such as the tcp seq/ack number (I forget which one the server generates) when you send a decent rate of syn packets) lets you verify which entropy addition would have lead to that output being generated. That's a handful of bits to brute force at each step unless the entropy additions are processed in prohibitively large batches (say, ≥80 bits at a time) which means you start completely predictable until that entropy is accrued (which may or may not be an issue depending on circumstances)
edit: https://github.com/torvalds/linux/blob/55cb5f43689d7a9ea5bf3...