Re: PG 10: could not generate random cancel key
Dean Rasheed <dean.a.rasheed@gmail.com>
From: Dean Rasheed <dean.a.rasheed@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2018-07-18T09:14:56Z
Lists: pgsql-hackers
Attachments
- pg_strong_random-v2.patch (text/x-patch) patch v2
On 18 July 2018 at 03:17, Michael Paquier <michael@paquier.xyz> wrote: >> [1] https://wiki.openssl.org/index.php/Random_Numbers > > This quote from the wiki is scary so that's not quite clean either for > Windows: > "Be careful when deferring to RAND_poll on some Unix systems because it > does not seed the generator. See the code guarded with > OPENSSL_SYS_VXWORKS in rand_unix.c. Additionally, RAND_poll can have > negative interactions on newer Windows platforms, so your program could > hang or crash depending on the potential issue. See Windows Issues > below." > I think that wiki page is somewhat out of date in places. Both the Windows issues it links to seem to have been fixed a long time ago, so I think using RAND_poll() is probably safe now, although perhaps there are still some Unix platforms on which it won't help either. >> [2] https://github.com/benvanik/openssl/blob/master/openssl/crypto/rand/md_rand.c > > This repository is outdated, on OpenSSL HEAD I am seeing this used only > in rand_win.c. And this commit is sort of interesting because there was > a retry loop done with RAND_poll(). Please see this one: > commit: c16de9d8329d41a2433d0f273c080d9d06ad7a87 > author: Dr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> > date: Thu, 31 Aug 2017 23:16:22 +0200 > committer: Ben Kaduk <kaduk@mit.edu> > date: Wed, 18 Oct 2017 08:39:20 -0500 > Fix reseeding issues of the public RAND_DRBG > > apps/ocsp.c also has the wisdom to check for a failure on RAND_poll(). OK, I guess that it is possible that an older version of OpenSSL requires RAND_poll() to be called multiple times. Here's an updated patch doing that (with up to 8 retries, based on the old OpenSSL code). Regards, Dean
Commits
-
Guard against rare RAND_bytes() failures in pg_strong_random().
- 821200405cc3 10.5 landed
- 1f919e663ee2 11.0 landed
- 8f6ce7fb090a 12.0 landed