[Development] Someone please fix the remaining qrand cases in SSL code
Thiago Macieira
thiago.macieira at intel.com
Wed Jun 14 17:56:37 CEST 2017
On quarta-feira, 14 de junho de 2017 08:25:31 PDT Giuseppe D'Angelo wrote:
> Il 12/06/2017 22:45, Thiago Macieira ha scritto:
> > I can't submit changes to SSL-related code, so can someone apply the
> > equivalent ofhttps://codereview.qt-project.org/191738 to the files listed
> > in that commit's message?
>
> There are a couple of problems arising from there:
>
> 1) some place has a "TODO: use a CSPRNG". Given the current
> QRandomGenerator API, is there a way to know if a CSPRNG is actually
> being used or we're falling back to a plain PRNG?
It's not in the API, but in all non-misconfigured systems, it should be CSPRNG.
You can misconfigure your system by running your Qt application in a chroot
that doesn't have /dev/random or /dev/urandom.
There's also the issue of the system and CPU entropy pools. This could be an
issue if the application uses QRandomGenerator in the first few hundred ms
after boot. That can only affect device manufacturers and they should inspect
their systems to know if that is happening.
At least on Linux, once seeded, /dev/urandom does not stop working, so if we
opened it (no bad chroot) and it has worked (system collected some entropy),
the fallback should never kick in. Yes, that means the Mersenne Twister
fallback is actually dead code on Linux. But this means that QRandomGenerator
is good for unattended CSPRNG uses, such as networking code.
For key generation, I'd use /dev/random and require the user to move the
mouse.
> 2) a test wants to generate a few MB of random data. Ideally this would
> be a no-brainer -- QRandomGenerator plus an engine from the standard
> library, but we can't use those engines yet (or can we?). So those
> places will need to keep qrand()?
#if QT_CONFIG(cxx11_random), after https://codereview.qt-project.org/196612
integrates.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list