Re: [PATCH] KEYS: asym_tpm: Switch to get_random_bytes()
From: James Bottomley
Date: Fri Oct 04 2019 - 14:24:56 EST
On Fri, 2019-10-04 at 21:22 +0300, Jarkko Sakkinen wrote:
> On Thu, Oct 03, 2019 at 04:59:37PM -0700, James Bottomley wrote:
> > I think the principle of using multiple RNG sources for strong keys
> > is a sound one, so could I propose a compromise: We have a tpm
> > subsystem random number generator that, when asked for <n> random
> > bytes first extracts <n> bytes from the TPM RNG and places it into
> > the kernel entropy pool and then asks for <n> random bytes from the
> > kernel RNG? That way, it will always have the entropy to satisfy
> > the request and in the worst case, where the kernel has picked up
> > no other entropy sources at all it will be equivalent to what we
> > have now (single entropy source) but usually it will be a much
> > better mixed entropy source.
>
> I think we should rely the existing architecture where TPM is
> contributing to the entropy pool as hwrng.
That doesn't seem to work: when I trace what happens I see us inject 32
bytes of entropy at boot time, but never again. I think the problem is
the kernel entropy pool is push not pull and we have no triggering
event in the TPM to get us to push. I suppose we could set a timer to
do this or perhaps there is a pull hook and we haven't wired it up
correctly?
James