Re: pgcrypto seeding problem when ssl=on

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: Marko Kreen <markokr@gmail.com>
Cc: Postgres Hackers <pgsql-hackers@postgresql.org>
Date: 2012-12-21T20:27:37Z
Lists: pgsql-hackers
This should have gone to security@postgresql.org, instead.

On Fri, Dec 21, 2012 at 06:05:10PM +0200, Marko Kreen wrote:
> When there is 'ssl=on' then postmaster calls SSL_CTX_new(),
> which asks for random number, thus requiring initialization
> of randomness pool (RAND_poll).  After that all forked backends
> think pool is already initialized.  Thus they proceed with same
> fixed state they got from postmaster.

> Attached patch makes both gen_random_bytes() and pgp_encrypt()
> seed pool with output from gettimeofday(), thus getting pool
> off from fixed state.  Basically, this mirrors what SSL_accept()
> already does.

That adds only 10-20 bits of entropy.  Is that enough?

How about instead calling RAND_cleanup() after each backend fork?

Thanks,
nm