[CentOS] Low random entropy

Mon May 29 13:12:23 UTC 2017
Robert Moskowitz <rgm at htt-consult.com>

On 05/29/2017 03:13 AM, Rob Kampen wrote:
> On 29/05/17 15:46, Robert Moskowitz wrote:
>> On 05/28/2017 06:57 PM, Rob Kampen wrote:
>>> On 28/05/17 23:56, Leon Fauster wrote:
>>>>> Am 28.05.2017 um 12:16 schrieb Robert Moskowitz 
>>>>> <rgm at htt-consult.com>:
>>>>> On 05/28/2017 04:24 AM, Tony Mountifield wrote:
>>>>>> In article <792718e8-f403-1dea-367d-977b157af82c at htt-consult.com>,
>>>>>> Robert Moskowitz <rgm at htt-consult.com> wrote:
>>>>>>> On 05/26/2017 08:35 PM, Leon Fauster wrote:
>>>>>>> drops back to 30! for a few minutes.  Sigh.
>>>>>>>> http://issihosts.com/haveged/
>>>>>>>> EPEL: yum install haveged
>>>>>>> WOW!!!
>>>>>>> installed, enabled, and started.
>>>>>>> Entropy jumped from ~130 bits to ~2000 bits
>>>>>>> thanks
>>>>>>> Note to anyone running a web server, or creating certs. You need
>>>>>>> entropy.  Without it your keys are weak and attackable. Probably 
>>>>>>> even
>>>>>>> known already.
>>>>>> Interesting. I just did a quick check of the various servers I 
>>>>>> support,
>>>>>> and have noticed that all the CentOS 5 and 6 systems report 
>>>>>> entropy in
>>>>>> the low hundreds of bits, but all the CentOS 4 systems and the 
>>>>>> one old
>>>>>> FC3 system all report over 3000 bits.
>>>>>> Since they were all pretty much stock installs, what difference 
>>>>>> between
>>>>>> the versions might explain what I observed?
>>>>> This is partly why so many certs found in the U of Mich study are 
>>>>> weak and factorable.  So many systems have inadequate entropy for 
>>>>> the generation of key pairs to use in TLS certs. Worst are certs 
>>>>> created in firstboot process where at times there is no entropy, 
>>>>> but the firstboot still creates its certs.
>>>> /var/lib/random-seed and $HOME/.rnd are approaches to mitigate this 
>>>> scenario.
>>>> -- 
>>>> LF
>>> so there are mitigations - the question really is: why hasn't redhat 
>>> made these mitigations the default for their enterprise products - 
>>> maybe other influences we are unaware of - seems like a huge big 
>>> hole. With the advent of SSL/TLS being mandated by google et al, 
>>> every device needs access to entropy.
>> The challenge is this is so system dependent.  Some are just fine 
>> with stock install.  Others need rng-tools.  Still others need 
>> haveged.  If Redhat were to do anything, it would be to stop making 
>> the default cert during firstboot.  Rather spin off a one-time 
>> process that would wait until there was enough entropy and then 
>> create the default cert.  Thing is I can come up with situations were 
>> that can go wrong.
>> There are a lot of best practices with certificates and crypto that 
>> are not apparent to most admins.  I know some things for the crypto 
>> work I do (I am the author of the HIP protocol in the IETF).  There 
>> is just not one size fits all here, and people need to collect clues 
>> along with random entropy....
> OK that makes sense, I've been admin on linux servers for about 18 
> years, understand the basics, use certificates for web and email 
> servers. This thread has exposed an area that I'm peripherally aware 
> of - the need to generate with sufficient entropy the cipher that goes 
> across the internet in order to avoid an observer being able to 
> reverse engineer the keys used.
> I still fail to see why every server and workstation is not set up to 
> do this at some minimum level - i guess linux out of the box does 
> this, the issue is that the minimum from just the basic kernel on most 
> hardware is too little with today's ability to crack ciphers..
> Is there some practical guideline out there that puts this in terms 
> that don't require a PhD in mathematics to understand and implement.
> For instance I have setup and run mail servers for nearly two decades, 
> only in the last 10+ years with certificates and mandated SSL/TLS - 
> yet the issue of low random entropy is relevant here but until this 
> thread I hadn't taken steps to resolve.

You raise an important point.  Alice Wonder earlier said she installs 
haveged on all her servers as best practice.  It is hard to fault that 

I am one of the people that make your life difficult.  I design secure 
protocols.  I co-chaired the original IPsec work.  I created HIP which 
was used as 'lessons learned' for IKEv2.  I contributed to IEEE 802.11i 
which gave us AES-CCM and 802.1AE which gave us AES-GCM.  And I wrote 
the attack on WiFi WPA-PSK because implementors were not following the 
guidelines in the spec.

When we are designing these protocols, we talk to the REAL 
cryptographers and work out:  'oh we need a 256 bit random nonce here 
and a 32 bit random IV there.'  We end up needing lots of randomness in 
our protocols.  Then we toss the spec over the wall to get someone to 
code it.

Fortunately for the coders, the cryptographers have recognized that the 
EEs cannot really create real randomness (when we did 802.11i, appendix 
H had how to build a ring oscillator as a random source. Don't get me 
going about what Bluetooth did wrong.).  So the history of Pseudo Random 
Generators is long and storied.  But a PRNG still needs a good random 
seed.  Don't get me started on failures on this and lessons learned.  I 
worked for ICSAlabs for 14 years and we saw many a broken implementation.

So here we are with 'modern' Linux (which Fedora version is Centos built 
from?).  We know that no board design can feed real random bits as fast 
as our protocols may need them.  Or at least we probably cannot afford 
such a board.  So first you need a good random harvester.  Then a good 
PRNG.  How does RH implement the protocols?  I have no idea.  I just 
contribute to the problem, not the solution.

All that said, it looks like there are basic tools like rng-tools to 
install to work with board-level rng functions.  Then there is haveged 
that works with the board itself.

All this said, I should probably write something up and offer it to 
Centos-docs.  I need to talk to a few people...