<div dir="ltr">Please when we are having this discussion, distinguish the two cases:<div><br></div><div>1) Generating public keypairs</div><div>2) Generating session keys</div><div><br></div><div>The security concerns for the two cases are completely different yet we have seen the issue of ssh keys being used.</div>
<div><br></div><div>There is no excuse for not generating public key pairs on a machine that is completely trusted and trustworthy and has a strong random seed and effective means of capturing additional random input.</div>
<div><br></div><div><br></div><div>For session keys, I suggest that any device that is not capable of generating a good public key pair should not be relying on its own random seed either. So for that I would suggest that whatever process provisions the public key or shared session key to the device also provision a random seed to it.</div>
<div><br></div><div>When generating random numbers the device should always use multiple sources and compliment the randomness from the random seed with other sources. So the final random seed would be something like</div>
<div><br></div><div>R = R_1 XOR R_2 XOR R_3</div><div><br></div><div>Where</div><div><br></div><div>R_1 = randomness captured from environment</div><div>R_2 = randomness from seed embedded by manufacturer</div><div>R_3 = randomness from seed provided during provisioning.</div>
<div><br></div><div>Devices that can't generated good random keys are almost always going to be devices that are slave to some other machine. So lets not get hung up about how to generate good random seeds in my toaster or kettle or fridge. They are only going to be on the net at all because I have provisioned them into my network and granted them an access priv. I can easily provision in a backup random seed at the same time.</div>
<div><br></div></div>