News for hackers. Stuff that matters.
Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @01:15PM (#21127917)
> we need to get over people's distrust of Intel and RDRAND.

Am I misreading this or is Ted T'so really suggesting that we should all just stop worrying and love the secret and compeltely unauditable RNG offered by the same company that has literally backdoored every CPU they've sold in the past 12 years?

Re:Fixing Getrandom() by tytso on Tuesday October 01, 2019 @03:33PM (#21129616)
If you don't trust Intel, then don't use Intel CPU's at all. Using Intel CPU's and simultaneously saying, "but we can't trust RDRAND because could be backdoored" is completely insane.

Intel hid an entire x86 core running minix --- with security holes --- and told no one. Between the firmware code which runs in System Management Mode and in UEFI, which persists after the OS is booted and can take over the system and read and write arbitrary memory locations --- if you fear a backdoor in the CPU, RDRAND is not the only place where an attacker can screw you over. The bottom line is the entire CPU can not be audited. So trust it. Or don't trust it. Use another CPU architecture. Or go back to using pen and paper, and don't use any computers or cell phones at all.

We have to trust the bootloader to verify the digital signature on the kernel, so we might as well trust the bootloader to get a secure random seed. But from where? It could call UEFI or try use the RNG from the TPM (if available). But now you have to trust Intel, and/or the motherboard manufacturer, and/or the TPM. The bootloader could read from a seed file from the HDD/SSD. But we know that nation-state intelligence agencies (like the NSA) have the capability of implanting malware into HDD firmware (which is also unauditable), and we also know that we can't trust most consumer grade manufacturers or IOT devices to correctly insert device-specific secure entropy into the seed file at manufacturing time. Otherwise, all of the seed files will likely have the same value, at which point when the device is generating its long-term private key, immediately after it is first plugged in, the key will very likely be weak (see the "Mining your p's and q's"[1] paper).

The bottom line is that unless you propose to personally wire up your CPU from transistors, and then create your own compiler from assembly language (see the "Reflections on Trusting Trust"[2] paper by Ken Thompson about what can be hidden inside an untrustworthy compiler), and then personally audit all of the open source code you propose to compile using that compiler and use on your system, you have to trust someone.

What makes this political, and difficult to address, is everyone has different opinions on what they are willing to trust and not trust. But some combinations, such as "we can't trust Intel because their firmware can't be audited", and "but we insist on using Intel CPU's", really don't make much sense.

[1] https://factorable.net

[2] https://www.archive.ece.cmu.edu/~ganger/712.fall02/papers/p7...

Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @05:15PM (#21130751)
RDRAND might not be the only place where an attacker can screw me over, but it's a much easier exploit than many others, and one that is by design impossible to detect.

It would probably not be possible to get away with an XOR instruction that doesn't behave as advertised. There is simply no way to determine if RDRAND is behaving as advertised or not.

> you have to trust someone

Well, yes. Intel specifically has to my mind demonstrated beyond a shadow of a doubt that they are not be trusted (that "entire x86 core running minix --- with security holes" thing you just mentioned, thought it was ARM though). So if the only difference is moving my root of trust from Intel to a random, unknown party that is not Intel, that is already something of an improvement.

Re:Fixing Getrandom() by gpderetta on Wednesday October 02, 2019 @04:20AM (#21134337)
How would you measure the jitter from your disk? Certainly you can't trust rdtsc either.
Re:Fixing Getrandom() by kijiki on Tuesday October 01, 2019 @11:33PM (#21133239)
It was never ARM. It used to be ARC, but these days it is x86.
Re:Fixing Getrandom() by cesarb on Tuesday October 01, 2019 @04:49PM (#21130448)
> Using Intel CPU's and simultaneously saying, "but we can't trust RDRAND because could be backdoored" is completely insane.

The main difference is that the behavior of the rest of the CPU is deterministic, so it can be verified. When you use the ADD instruction, the output will always be the sum of its inputs; when you use the RDRAND instruction, the output comes from a black box which is supposed to mix internal non-deterministic noise sources in a non-reversible way. How can you distinguish a correct RDRAND from a malicious or broken one which generates its output in a reversible way or based on a fixed key, since the apparent output (an arbitrary number) is the same in both cases?

Re:Fixing Getrandom() by tptacek on Tuesday October 01, 2019 @05:07PM (#21130660)
I don't understand why you believe an adversarial CPU must be deterministic simply because it says it will be.
Re:Fixing Getrandom() by cryptonector on Tuesday October 01, 2019 @05:58PM (#21131180)
I don't understand why you got downvoted. Even if GP meant that a CPU that is advertised as formally verified must be deterministic... the devil is in the details, and any number of bugs and undocumented features, including vulnerabilities and backdoors, can hide in a formally verified CPU that has billions of transistors.
Re:Fixing Getrandom() by tedunangst on Tuesday October 01, 2019 @07:23PM (#21131976)
Even if it seems deterministic now, there's no guarantee it won't become non deterministic in the future. https://ieeexplore.ieee.org/document/7546493
Re:Fixing Getrandom() by zenexer on Tuesday October 01, 2019 @06:29PM (#21131525)
This is a very valid point, and there is even anecdotal evidence that operations we expect to be deterministic may not always be so.[1] Just because ADD works as documented in most scenarios doesn't mean we can verify that it will always work as documented in every scenario.

[1]: https://techreport.com/review/17732/intel-graphics-drivers-e...

Re:Fixing Getrandom() by effie on Thursday October 03, 2019 @07:36AM (#21145805)
> Using Intel CPU's and simultaneously saying, "but we can't trust RDRAND because could be backdoored" is completely insane.

The claim is not "can't trust RDRAND [to keep your system secure] because could be backdoored", the claim is "can't trust RDRAND [to generate unique unguessable numbers] because could be backdoored.

RDRAND not only can be backdoored, but its implementation flawed or too weak for some attackers. Or it can be a pinnacle of RNGs(unlikely). In any case, it is reasonable to not trust it to generate unique unguessable numbers. That trust requires control of the generation.

The impact this distrust has on decision of using Intel CPU's is specific to the use case. I trust my Intel CPU to do deterministic computational work for me, because in some cases I can rerun the job and compare the results, or check the results in another way. But I don't trust it to generate unguessable numbers for me. That is better done by separate HW device, ideally one that I would construct and control.

I don't have to trust implicitly in my computer to use it. At the same time, I do not want my kernel to rely on RDRAND to get random numbers, if more trustworthy source is viable. No that perfect randomness is required, but if the authors can do better than rely on RDRAND, they should.

> The bottom line is the entire CPU can not be audited. So trust it. Or don't trust it.

I can trust it to evaluate 1234+1234, or play a video for me, but I don't trust it to generate unique unguessable numbers.

Re:Fixing Getrandom() by asveikau on Wednesday October 02, 2019 @10:59AM (#21137162)
Aren't there multiple forms of trusting Intel?

There is trusting them not to be malicious.

Then there is trusting them not to more innocently have some errata effecting quality of randomness.

Re:Fixing Getrandom() by dependenttypes on Tuesday October 01, 2019 @05:12PM (#21130712)
> We have to trust the bootloader to verify the digital signature on the kernel

Do we? I was under the impression that most people would not care if the bootloader did that or not.

Re:Fixing Getrandom() by cryptonector on Tuesday October 01, 2019 @06:11PM (#21131313)
If you want secure boot then you want the BIOS/UEFI to verify a signature on a boot loader which then has to verify the signature on a kernel which then has to verify filesystems' ubberblock checksums (which should be signed in the boot manifest, which signature should be verified too).
Re:Fixing Getrandom() by dependenttypes on Tuesday October 01, 2019 @07:06PM (#21131844)
Most people to my knowledge do not use secure boot out of choice but rather because it was forced on them.
Re:Fixing Getrandom() by nwmcsween on Tuesday October 01, 2019 @09:47PM (#21132774)
Why not mix rdrand with jitter entropy?
Re:Fixing Getrandom() by wahern on Tuesday October 01, 2019 @03:33PM (#21129611)
On most modern systems, especially laptops and servers, RDRAND is only one of multiple hardware RNGs available. And except on first boot there's also the seed--partly derived from interrupts, etc--from previous boots that can be mixed back in.

I think the sentiment (or at least my sentiment) is that the number of systems where early entropy is used for something important like key generation but that lack strong sources is diminishing. Many, if no most, x86 and ARM embedded platforms over the past ~5 years have had at at least an on-chip RNG, and over the past 5-10 years some at least some on-board RNG (e.g. Intel NIC controllers often contain an RNG, AMDs PSP provides an RNG, plus various other options like SPI RNG chips).

Ideally there would be multiple sources, but ultimately it's the designer's choice. Likewise, any new platform that lacks any source but has software that expects strong entropy is unequivocally broken. Older systems are disappearing and are unlikely to be upgraded, anyhow.

Excessive paranoia about RDRAND is counter productive. It's speculation that it's weak, while we know for a fact that the machinations userland code goes through to work around the poor semantics and unreliability of Linux kernel randomness interfaces has caused and is causing real problems, including real security problems. At some point the risk of a bugged RDRAND is less than the risk of assuming a non-bugged RDRAND. Plus, if the kernel is loud about its expectations for quality hardware sources it creates an environment where people (embedded designers, savvy laptop purchasers) demand quality sources and manufacturers will compete along that axis (more so than they already do--the VIA C3 was the first to add an on-chip RNG on a mass production chip nearly 15 years ago).

Re:Fixing Getrandom() by hinkley on Tuesday October 01, 2019 @04:29PM (#21130248)
I got wedged about six months ago trying to fast iterate on creating a Docker image on Docker for OS X. I exhausted the entropy on the Linux VM and IIRC, one of the package managers started hanging trying to fetch packages over SSL.

Ten years back I had an embedded app that was struggling with this. It's always been my assumption/fear that jitter on an RTOS is not a particularly rich source of entropy. Not to the degree of a Linux kernel sitting on a loud network (maybe switches have worsened this as well?)

Thankfully the system had a few things going for it. First, the flavor of PRNG we were using had a seed function that was cumulative (not all are). Second, useful implementation of system time in nanoseconds (at the time, not a given). And third, the writers had a longish list of bootstrapping tasks to perform prior to making any network calls.

The code that started these tasks was all located in one bootstrapping file. So in addition to whatever crap entropy the libraries could gin up, we pushed another handful of bits of entropy in for each task by taking the nanoseconds and stuffing it into the seed data. doTask1(), seed(nanos()), doTask2(), etc.

This is the same observation made in Linux's RNG, and that is demonstrated in the algorithm for randomness from a biased coin: A high quality mixing algorithm and a large volume biased data can be transformed into a smaller quantity of high quality entropy. Which makes me wonder why Linux doesn't use RDRAND with a low entropy estimate to augment the early sources.

Re:Fixing Getrandom() by dependenttypes on Tuesday October 01, 2019 @05:15PM (#21130744)
> I exhausted the entropy on the Linux VM

How is that supposed to work? Entropy does not get exhausted.

Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @05:22PM (#21130836)
Pretty sure the Linux entropy pool is "consumed" when read and thus will become exhausted when not replenished fast enough.

You can see this when reading /dev/random on a low-entropy machine (such as a VM), and adding whatever you want to the entropy pool manually. The reading process will unblock, read a few bytes, then block again until you add more.

Re:Fixing Getrandom() by nwallin on Tuesday October 01, 2019 @05:40PM (#21131006)
This is why you're supposed to use getrandom() instead of /dev/random. It doesn't block on "low" entropy.

What were you using that uses /dev/random?

Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @05:54PM (#21131140)
Right, or just use *BSD where /dev/{u,}random both behave correctly :)

I'm not the same guy, so I have no idea what he was reading /dev/random for. Just pointing out that it can in fact be "exhausted."

I'm not a crypto expert either, but wouldn't it still make sense to use /dev/random when generating long-lived keys (e.g. PGP, SSL CA, ssh keys...)?

I understand, I think, that a CSPRNG seeded with just the minimum amount of entropy should be "good enough." More entropy has to be at least theoretically better though, doesn't it?

If the only tradeoff is having to wait a few more seconds or possibly minutes to generate a key I'm going to use for years... why wouldn't I want to do that?

Re:Fixing Getrandom() by loeg on Tuesday October 01, 2019 @06:09PM (#21131292)
> I'm not a crypto expert either, but wouldn't it still make sense to use /dev/random when generating long-lived keys (e.g. PGP, SSL CA, ssh keys...)?

No. https://sockpuppet.org/blog/2014/02/25/safely-generate-rando...

Re:Fixing Getrandom() by hinkley on Wednesday October 02, 2019 @01:24AM (#21133628)
I’m pretty sure it was https session keys for pulling packages. I can’t recall how I fixed it. Best bet is logged into the Linux host and cross linked dev/urandom, or just restarted the host. Hasn’t happened again, and I was just experimenting with couple of images over the last few weeks.
Re:Fixing Getrandom() by dependenttypes on Tuesday October 01, 2019 @05:37PM (#21130975)
This is extremely weird. Would you happen to have an idea of what the reasoning behind it is?
Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @06:09PM (#21131280)
Well, not really, but before Linux 3.17 there was no way other way to be safe: /dev/urandom was the only other option, and that happily returns data even if the entropy pool isn't (yet) initialized and the CSPRNG can't be properly seeded.

Since then there is get_random(2) which does the right thing for most applications.

The man page also has this to say:

> The /dev/random device is a legacy interface which dates back to a time where the cryptographic primitives used in the implementation of /dev/urandom were not widely trusted.

I must admit though, that I still don't understand why blocking on insufficient entropy is a bad thing for generating long-lived keys. I'm going to use the key for years, why wouldn't I just wait a couple of seconds or minutes?

Re:Fixing Getrandom() by throwaway2048 on Wednesday October 02, 2019 @09:43AM (#21136314)
Because the entire idea of "insufficient entropy" past an initialization amount is a cargo culted fantasy.

In the Linux kernel view of the world, /dev/random "loses" 1 bit of entropy for every bit that gets read.

That is not how cryptographic and hashing primitives work, if it were it would be dangerous to use an AES key to encrypt more than a few megabytes for example.

Re:Fixing Getrandom() by loeg on Tuesday October 01, 2019 @06:10PM (#21131306)
The /dev/random re-blocking behavior, where entropy is "consumed" (after initial entropy seeding), is a result of lack of crypto understanding by Linux shot-callers, and Linus in particular.

You wouldn't blame them for it 20-25 years ago, but we've known better for at least 15 years so it'd be nice if they'd get with the program. And it can be fixed without breaking their userspace ABI that they're usually fanatical about not breaking. Linus wanting to break getrandom's ABI just shows he still doesn't understand how CSPRNGs work.

Re:Fixing Getrandom() by dependenttypes on Tuesday October 01, 2019 @07:11PM (#21131888)
Surely someone must have explained that to them years ago, right? Would you happen to have a discussion in mind where the maintainers of the RNG generators commented on the issue? I would like to see their perspective but I am kind of lost.
Re:Fixing Getrandom() by loeg on Thursday October 03, 2019 @02:39PM (#21150453)
I imagine so, but I'm not close to the Linux kernel community and don't know. I don't get the impression that Linus, for example, changes his mind particularly easily.
Re:Fixing Getrandom() by loeg on Tuesday October 01, 2019 @06:09PM (#21131279)
If you're talking about Zen, AMD's PSP RNG is the same one used by RDRAND. That's not an independent source.
Re:Fixing Getrandom() by danieldk on Tuesday October 01, 2019 @02:13PM (#21128743)
Am I misreading this or is Ted T'so really suggesting that we should all just stop worrying and love the secret and compeltely unauditable RNG offered by the same company that has literally backdoored every CPU they've sold in the past 12 years?

Doesn't it all depend on how you are using it? As far as I recall, Linux does not use RDRAND is a direct source for random numbers, but rather mixes it with the entropy pool. Since xor'ing with (potentially) low-entropy data does not reduce the entropy, the argumentation is that it is safe. The potentially backdoored RDRAND is problematic as a source of random numbers or when the entropy has too little entropy (since RDRAND would determine the entropy).

Re:Fixing Getrandom() by dependenttypes on Tuesday October 01, 2019 @05:13PM (#21130721)
> Linux does not use RDRAND is a direct source for random numbers, but rather mixes it with the entropy pool. Since xor'ing with (potentially) low-entropy data does not reduce the entropy

And this is still insecure https://blog.cr.yp.to/20140205-entropy.html

Re:Fixing Getrandom() by cryptonector on Tuesday October 01, 2019 @06:24PM (#21131483)
DJB is not saying that an entropy pool is insecure, as you put it. Nor is he saying that one shouldn't bother with a PRNG seeded with RDRAND and/or other hardware sources of entropy.

DJB has an axe to grind (and rightly so) here in that he's pushing cryptographic algorithms that need less (or no) entropy. Specifically EdDSA instead of ECDSA. And he's also dismantling some of the bad arguments about how /dev/urandom should operate.

An operating system doesn't know why an application needs entropy, just that it does, and I don't see the problem with having an SRNG for that purpose. DJB doesn't even say that a system SRNG is not good, but, rather, he's quite sensibly saying that _applications_ should stretch one good 256-bit chunk of entropy. And yes, DJB correctly points out that there's no need to have security relative to an attacker that once saw the entire state of the SRNG at an earlier point in time -- but that does not mean that a kernel-land SRNG shouldn't add entropy to its pool, just that it doesn't buy you much.

Re:Fixing Getrandom() by dependenttypes on Tuesday October 01, 2019 @07:06PM (#21131838)
He is saying that using a malicious source of entropy that can read the current state of the pool (such as RDRAND) can harm security.
Re:Fixing Getrandom() by tptacek on Wednesday October 02, 2019 @12:12AM (#21133367)
This is an extremely weird threat model, in that it implies an actively adversarial CPU that can't be trusted with or without RDRAND.
Re:Fixing Getrandom() by tzs on Wednesday October 02, 2019 @12:16AM (#21133387)
If you only have one source that you suspect might be malicious (such as RDRAND), can't you just use that as the first source?
Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @05:05PM (#21130644)
Well yes. Except if, as others have noted, the hypothetical malicious RDRAND can read the state of the entropy pool as well.

Of course that's a totally different and more complex attack. Is it still plausible enough to possibly worry about? I have no idea, honestly -- this is way outside my area of expertise.

What I do know is that hardware RNGs made from open-source and verifiable hardware is readily available for about US$50 for qty 1, cheaper in bulk.

Given that, it doesn't seem worth more than a couple of minutes investigating whether or not RDRAND can be trusted. If there is the slightest hint of doubt, I just disable it and move on with life.

Re:Fixing Getrandom() by masklinn on Tuesday October 01, 2019 @01:20PM (#21127968)
You're cutting off the first half of the quote which is pretty damn relevant:

> we need to find some way to fix userspace's assumptions that they can always get high quality entropy in early boot, or we need to get over people's distrust of Intel and RDRAND

Though ts'o is also ignoring the third option — and the one used by openbsd — of storing an rng seed after boot (and on shutdown).

The very first boot does remain problematic if the image isn't seeded though.

Re:Fixing Getrandom() by cpeterso on Tuesday October 01, 2019 @01:50PM (#21128414)
Ubuntu's man pages say "all major Linux distributions have [saved a seed file across reboots] since 2000 at least":

http://manpages.ubuntu.com/manpages/trusty/man4/random.4.htm...

Re:Fixing Getrandom() by wahern on Tuesday October 01, 2019 @02:44PM (#21129107)
Lennart, posting as mezcalero, addresses that in the LWN discussion. TL;DR: systemd loads the seed too late in the boot process, which is a deliberate choice on their part.
Re:Fixing Getrandom() by jnurmine on Tuesday October 01, 2019 @02:53PM (#21129190)
But is it really that difficult to seed the image for that first boot?

For example, an installation process using an .iso image could, after verifying the .iso, put a random seed inside the .iso (unpack-modify-pack) as a pre-configuration step. Like an extra preparation step after downloading. New installation = new pre-configuration step, to avoid seed reuse.

The previous would apply to VMs and containers and such.

For traditional embedded/IoT style devices, the step could be done at the factory when flashing the image. Or maybe there could be a small flash area with the seed as part of the initial flashing procedure.

I guess some forms of installation end up being "problematic" to handle (ro root filesystems maybe).

Re:Fixing Getrandom() by wahern on Tuesday October 01, 2019 @03:37PM (#21129661)
A VirtIO-RNG driver has been in Linux for over 10 years: https://wiki.qemu.org/Features/VirtIORNG

Randomness in VMs isn't a problem. If VM hypervisors aren't providing VirtIO-RNG, it's still just a quick fix and reboot away. The quickest way to make sure all hypervisors and hosting providers enable VirtIO-RNG, or something similar, is for the kernel to being assuming, loudly, that strong entropy is available at boot time.

For embedded stuff SPI RNG chips and similar solutions have been available since forever, not to mention the on-chip sources on most modern ARM and x86 CPUs and SoCs.

If a product designer (e.g. embedded device) or solution provider (cloud hosting) chooses to put their trust in RDRAND alone, then that's their choice--Linux shouldn't be second guessing it, or at least allow such a choice to dictate the semantics of its APIs.

Re:Fixing Getrandom() by denton-scratch on Wednesday October 02, 2019 @08:43AM (#21135737)
VirtIO-RNG has not been officially accepted into Xen (it seems to be easier to incorporate into a PV DOMU).

If you have RDRAND hardware, you could (I suppose) pipe it's output from DOM0 into an encrypted root terminal session on DOMU, and feed that into the pool.

I personally don't want to rely on RDRAND. Unlike a tampered ADD instruction, a tampered RDRAND instruction would appear to be undetectable, even in principle. I wish Intel had given me the raw bits from their DRBG, instead of providing only the whitened stream. Or hell, give me both - but not just an opaque stream.

Re:Fixing Getrandom() by saagarjha on Tuesday October 01, 2019 @03:11PM (#21129379)
> unpack-modify-pack

This seems eminently unfeasible for many applications, and it won't work at all for read-only filesystems as you've mentioned.

Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @01:27PM (#21128058)
How is it relevant? The fact that he's proposing an alternative option doesn't change the fact that he's also presenting a completely insane one.
Re:Fixing Getrandom() by zamadatix on Tuesday October 01, 2019 @02:07PM (#21128671)
In the same way "We need to stop driving the boat into rocks or..." is relevant context to "...we need to start liking to swim". Just because something is listed as an option does not mean the speaker is interested in actually doing that.

It's a speaking pattern meant to convey "we've got to do something about <x> and people don't like <y> (so it's gotta be <x>)". In reality there are almost always more <options> than the duality implies but at no point does the person ever actually want <y>.

Re:Fixing Getrandom() by boring_twenties on Tuesday October 01, 2019 @04:03PM (#21129937)
I can't quite put my finger on it, but there is something in Tso's statement that seems to me to be quite different from yours.

In your example, the fact that the first option is self-evidently correct even in a vacuum, is something of a cue that the second option isn't meant to be taken as seriously.

In Tso's statement, it's not immediately clear to me which of the two options he prefers. In fact, his use of the phrase "get over it" leads me to think that is actually his preferred variant. To me, that phrasing means if not an outright trivial and unworthy concern, then at least one that only needs the passage of time. There doesn't seem to be any indication that he's using the phrase ironically or anything.

Of course it is always possible that I'm just misreading or misinterpreting it. But that is why the first half didn't, and still doesn't, seem relevant to me.

Re:Fixing Getrandom() by temac on Tuesday October 01, 2019 @02:06PM (#21128647)
If you make the hypothesis your CPU is completely compromised, it is vain to be hysterical about rdrand. Any sane random gen does not pass it directly to consumers, anyway (it always goes through at least an irreversible hash function with other inputs)
Re:Fixing Getrandom() by HugoHobling on Tuesday October 01, 2019 @02:38PM (#21129035)
It isn't completely vain - consider djb's blog post that discusses this exact scenario:

https://blog.cr.yp.to/20140205-entropy.html

Re:Fixing Getrandom() by temac on Tuesday October 01, 2019 @05:08PM (#21130672)
That was exactly what I was thinking about. This is a quite impractical attack, in the sense that if you are able to do that, you are able to do way more simple attacks, like tuning the final output without even going through the pretend & mine phase -- that could be more effective btw, depending on the mixing algo and the presence of true randomness in the mix or not, but arguably slightly easier to detect. So the hw rng path would only be reserved to extremely high profile targets subject to APT, and those target better generate their keys on dedicated hardware, or there will be 10000 manner for them to be owned. (and even if they do on dedicated hardware, subject to an attacker so motivated, I predict they are still owned...)

And above all: you will also probably be able to modify others supposed sources of entropy (if you restrict yourself to sources, I still think it is a terrible idea if you have that kind of capabilities), so short of analyses showing why this would be way more difficult, dropping the dedicated hw gen for a theoretical problem that would also be an end-game for virtually everything else is insane. You get no actual advantages, and tons of drawbacks.

Really, the hypothesis of what the attackers are able to do and what they are not makes no sense IMO; like:

> For example, an attacker can't exert any serious control over the content of my keystrokes while I'm logged in; I don't see how hashing this particular content into my laptop's entropy pool can allow any attacks.

Yeah, so that mythical unicorn can invoke utter craziness in RDRAND, but is somehow unable to modify the key inputs and/or timings just when that data reaches the entropy input algos? I just don't buy it. Like I don't buy that the user is somehow recomputing everything on a second computer and comparing both results (or using other fancy proof of work things, that I'm not aware that even exist on real code we are talking about).

My litmus test is: imagining I'd have to attack, I would never do it by such a convoluted method. Or maybe only ever if Ben Laden Two is the target, AND if it seems to actually make sense in the technical context of the attack: the proba of both occurring is, I guess, quite low...