Torvalds shoots down call to yank 'backdoored' Intel RdRand in Linux crypto
'We actually know what we are doing. You don't' says kernel boss
Linux supremo Linus Torvalds has snubbed a petition calling for his open-source kernel to spurn the Intel processor instruction RdRand - used for generating random numbers and feared to be nobbled by US spooks to produce cryptographically weak values.
Torvalds branded Kyle Condon, the England-based bloke who created the petition, “ignorant”. The head Penguista said anyone who backed the call to remove RdRand from his operating-system kernel should learn how crypto works.
The fiery Finn wrote at the bottom of Condon’s call to action on Change.org: “Where do I start a petition to raise the IQ and kernel knowledge of people? Guys, go read drivers/char/random.c. Then, learn about cryptography. Finally, come back here and admit to the world that you were wrong.
“Short answer: we actually know what we are doing. You don't.”
Torvalds argued in his mild outburst that the values from RdRand are combined with other sources of randomness, which would thwart any attempts to game the processor's output - but it's claimed that mix is trivial (involving just an exclusive OR) and can be circumvented by g-men.
Posted on 9 September, the petition drew just five signatures and now features a message reading "petition closed". Condon ignited Torvalds’ ire by demanding the following: “Please remove RdRand from /dev/random, to improve the overall security of the Linux kernel.”
The catalyst for the petition seems to be the belief that the RdRand instruction in Intel processors was compromised by the NSA and GCHQ, following the latest disclosures from whistleblower Edward Snowden.
/dev/random generates a virtually endless stream of random numbers on GNU/Linux systems, which are crucial for encrypting information in a secure manner. RdRand is an instruction [PDF] found in modern Intel chips that stashes a "high-quality, high-performance entropy" generated random number in a given CPU register. These, hopefully, unpredictable values are vital in producing secure session keys, new public-private keys and padding in modern encryption technology. It's feared that spooks within the US intelligence agencies have managed to persuade Intel to hobble that instruction or otherwise ensure its output produces values that weaken the strength of encryption algorithms relying on that random data.
According to the latest clutch of Snowden documents published by ProPublica, The New York Times and The Guardian last week, the NSA and GCHQ have broken basic encryption on the web - mostly by cheating rather than defeating the mathematics involved: unnamed chipsets are believed to have been compromised at the design stage so that encrypted data generated on those systems is easier to crack by spooks armed with supercomputers.
The details are short, but the implication is that American and British spies can crack TLS/SSL connections used to secure HTTPS websites and virtual private networks (VPNs), allowing them to harvest sensitive data such as trade secrets, passwords, banking details, medical records, emails, web searches, internet chats and phone calls, and much more.
Given RdRand is present in quite a few PCs and servers powering or using chunks of the internet, conspiracy theorists are terrified that RdRand is compromised. Given Linux on Intel also run large parts of the internet and systems talking to each other online, the reasoning seems to be traffic running on Linux boxes can also be seen by spooks thanks to RdRand. QED: it should be disabled in Linux.
However, as Torvalds pointed out in response to the petition RdRand is one of many inputs used by the Linux kernel’s pool to generate random characters.
The kernel chieftain wrote: “We use rdrand as _one_ of many inputs into the random pool, and we use it as a way to _improve_ that random pool. So even if rdrand were to be back-doored by the NSA, our use of rdrand actually improves the quality of the random numbers you get from /dev/random. Really short answer: you're ignorant.”
Random-number generation for the kernel space were implemented in 1994 by Theodore Ts'o using secure hashes instead of ciphers. As Tso wrote here following the latest selectively released information by journalists allied to Snowden:
I am so glad I resisted pressure from Intel engineers to let /dev/random rely only on the RDRAND instruction... Relying solely on the hardware random number generator which is using an implementation sealed inside a chip which is impossible to audit is a BAD idea.