3 ms·
If you have a modernish machine running Linux, find out if it has a TPM (Trusted Platform Module) built in. If it does, you can use an application called "Trous
by mike-cardwell 15y ago
If you have a modernish machine running Linux, find out if it has a TPM (Trusted Platform Module) built in. If it does, you can use an application called "Trousers" to take advantage of its built in hardware random number generator. It will directly feed random data into /dev/random
If you don't have a TPM, you can get one of these usb sticks: http://www.entropykey.co.uk/ http://www.entropykey.co.uk/ and it will also feed /dev/random with large amounts of real random data.
- skrebbel 15y agoHow can a TPM provide as "real" random values as a quantum vacuum? (or cosmic rays, or anything else very much random in nature)
- JoachimSchipper 15y agoAccording to http://www.outflux.net/blog/archives/2009/10/22/tpm-as-rng/#comment-793 http://www.outflux.net/blog/archives/2009/10/22/tpm-as-rng/#..., TPM may even be using PRNGs. So you're right that the quality of output need not be better than what a modern OS already provides. (I am not aware of any case where a properly-used /dev/random failed to produce sufficient entropy. Note that doing something sensible at boot is part of "properly-used" here.) It is possible to provide true randomness from a chip, but it's probably cheaper not to.
- __alexs 15y agoThe Intel TRNG design used for RdRand in Ivy Bridge has an impressively low transistor count so I don't think die-cost alone is the issue. http://spectrum.ieee.org/semiconductors/processors/behind-intels-new-randomnumber-generator/0 http://spectrum.ieee.org/semiconductors/processors/behind-in... http://en.wikipedia.orghwiki/RdRand http://en.wikipedia.orghwiki/RdRand I suspect they just didn't consider RNG quality as a big factor in the usefulness of the design. TPM pre-dates the recent advances in on-die TRNG design. Plus the chip tends to live on a low-speed bus on the system which makes it inherently a bit crappy as a place to keep a high-bandwidth application like an RNG.
- mike-cardwell 15y agoWhen did I say that it does? The randomness of the data is entirely down to the implementation. Personally I'd trust the random data supplied by a third party web service less than the pseudo-random data that the software on my local machine produces. Especially if you mix in data from a TPM, especially if you mix in data from an Entropy Key as well.
- hessenwolf 15y agoYes, this is a real issue. There's no way I'd get that past a financial regulator.
- teamnyble 15y agoCan anyone explain how this works? The entropy key site says "The Entropy Key contains two high-quality noise generators, and an ARM Cortex CPU that actively measures, checks and confirms all generated random numbers, before encrypting them and sending them to the server"... but why can't we just write high-quality noise generators in software? How is the hardware better?
- ajuc 15y agoBecause you can't get really random number from deterministic hardware (and computers are deterministic, more or less :) ). No matter what you do, running the same algorithm on the same input gives you the same data on regular computer. And the randomness (measured in Kolmogorov complexity [1] of the resulting string) is by definition smaller than the length of the generator program. And truly random string is such string, that there's no possible program producing this string as output, that is shorter than the string. On deterministic computers you can only produce pseudorandom numbers, with varying quality of randomness, depending on generator program you use, but it's sometimes not enough (esp. in cryptography). [1] http://en.wikipedia.org/wiki/Kolmogorov_complexity http://en.wikipedia.org/wiki/Kolmogorov_complexity
- silvestrov 15y agoPure software-based random generators are deterministic and thus not random. When something is deterministic, it is reproducible and therefore not good for creating crypto keys. Most /dev/random implementations use data from the ethernet driver, the keyboard, mouse etc to get some input which isn't easy to reproduce.
- deleted 15y ago[deleted]
- mzl 15y agoSoftware is deterministic, so it is not really possible to generate noise. There are non-deterministic parts of software (for example, thread interaction in concurrent systems), but this is just observable behavior of hardware effects. The typical thing people do to get large amounts of randomness is to first generate some "real" random noise from some source (hardware thingamajigs, network timings, user interactions) and extrapolate these into longer sequences of random-looking numbers. The extrapolation can be fast and simple (in which case the randomness is not so good), or it can be slow and complex (to get decent looking randomness).
- Florin_Andrei 15y ago> If you have a modernish machine running Linux, find out if it has a TPM (Trusted Platform Module) built in. How do you determine that on Linux?
- fleitz 15y agohttps://wiki.archlinux.org/index.php/TPM https://wiki.archlinux.org/index.php/TPM