GnuPG: RNG output is predictable
— GLSA 201612-01

Due to a design flaw, the output of GnuPG's Random Number Generator
(RNG) is predictable.

Affected Packages

Package

app-crypt/gnupg on all architectures

Affected versions

< 1.4.21

Unaffected versions

>= 1.4.21

Background

The GNU Privacy Guard, GnuPG, is a free replacement for the PGP suite of
cryptographic software.

Description

A long standing bug (since 1998) in Libgcrypt (see “GLSA 201610-04”
below) and GnuPG allows an attacker to predict the output from the
standard RNG. Please review the “Entropy Loss and Output Predictability
in the Libgcrypt PRNG” paper below for a deep technical analysis.

Impact

An attacker who obtains 580 bytes of the random number from the standard
RNG can trivially predict the next 20 bytes of output.

This flaw does not affect the default generation of keys, because
running gpg for key creation creates at most 2 keys from the pool. For a
single 4096 bit RSA key, 512 bytes of random are required and thus for
the second key (encryption subkey), 20 bytes could be predicted from the
the first key.

However, the security of an OpenPGP key depends on the primary key
(which was generated first) and thus the 20 predictable bytes should not
be a problem. For the default key length of 2048 bit nothing will be
predictable.