[Announce] Libgcrypt 1.8.1 and 1.7.9 to fix CVE-2017-0379

Werner Koch wk at gnupg.org
Thu Aug 31 15:48:47 CEST 2017


Hi!

The GnuPG Project is pleased to announce the availability of Libgcrypt
versions 1.7.9 and 1.8.1.  These releases fix a local side-channel
attack on our implementation of Curve25519 based encryption.

Libgcrypt is a general purpose library of cryptographic building blocks.
It is originally based on code used by GnuPG.  It does not provide any
implementation of OpenPGP or other protocols.  Thorough understanding of
applied cryptography is required to use Libgcrypt.


Noteworthy changes in version 1.8.1 (2017-08-27)
================================================

   - Mitigate a local side-channel attack on Curve25519 dubbed "May
     the Fourth be With You".  [CVE-2017-0379]

   - Add more extra bytes to the pool after reading a seed file.

   - Add the OID SHA384WithECDSA from RFC-7427 to SHA-384.

   - Fix build problems with the Jitter RNG

   - Fix assembler code build problems on Rasbian (ARMv8/AArch32-CE).


We also released a new version of the older 1.7 branch:

Noteworthy changes in version 1.7.9 (2017-08-27)
================================================

   - Mitigate a local side-channel attack on Curve25519 dubbed "May
     the Fourth be With You".  [CVE-2017-0379]


Comments on the vulnerability
=============================

Details on this attack can be found in the paper

  May the Fourth Be With You: A Microarchitectural Side Channel Attack
  on Real-World Applications of Curve25519
  by Daniel Genkin, Luke Valenta, and Yuval Yarom

  https://eprint.iacr.org/2017/806.

Note that this side-channel attack requires that the attacker can run
arbitrary software on the hardware where the private Curve25519
encryption key is used.  In GnuPG a Curve25519 key used for encryption
is shown as "cv25519".  Signature keys based on Curve25519 (in GnuPG
"ed25519") are not affected.

Allowing other users to run software on a machine with private keys
should be considered a full security compromise of that machine, anyway.
Thus in practice there are easier ways to access the private keys than
to mount this side-channel attack.  However, on boxes with virtual
machines this attack may be used by one VM to steal private keys from
another VM.

We received a draft of that research paper on August 18th and published
these releases last Sunday (August 27th).  The Windows installer for
GnuPG 2.2.0, as released on Monday, has already been build with the
fixed Libgcrypt 1.8.1.  The actually used fix can be found as commit
bf76acbf0da6b0f245e491bec12c0f0a1b5be7c9 in the Libgcrypt Git repo.
Niibe-san is currently working on improving our Curve25519 support for
the next major Libgcrypt release.  This will give us an additional
protection method against this class of attacks.


Download
========

Source code is hosted at the GnuPG FTP server and its mirrors as listed
at <https://gnupg.org/download/mirrors.html>.  On the primary server
the source tarball and its digital signature are:

 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.1.tar.bz2
 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.1.tar.bz2.sig

or gzip compressed:

 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.1.tar.gz
 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.1.tar.gz.sig

The URLS for the older 1.7 branch are:

 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.9.tar.bz2
 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.9.tar.bz2.sig
 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.9.tar.gz 
 https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.9.tar.gz.sig

In order to check that the version of Libgcrypt you downloaded is an
original and unmodified file please follow the instructions found at
<https://gnupg.org/download/integrity_check.html>.  In short, you may
use one of the following methods:

 - Check the supplied OpenPGP signature.  For example to check the
   signature of the file libgcrypt-1.8.1.tar.bz2 you would use this
   command:

     gpg --verify libgcrypt-1.8.1.tar.bz2.sig libgcrypt-1.8.1.tar.bz2

   This checks whether the signature file matches the source file.
   You should see a message indicating that the signature is good and
   made by one or more of the release signing keys.  Make sure that
   this is a valid key, either by matching the shown fingerprint
   against a trustworthy list of valid release signing keys or by
   checking that the key has been signed by trustworthy other keys.
   See the end of this mail for information on the signing keys.

 - If you are not able to use an existing version of GnuPG, you have
   to verify the SHA-1 checksum.  On Unix systems the command to do
   this is either "sha1sum" or "shasum".  Assuming you downloaded the
   file libgcrypt-1.8.1.tar.bz2, you run the command like this:

     sha1sum libgcrypt-1.8.1.tar.bz2

   and check that the output matches the first line from the
   this list:

dd35f00da45602afe81e01f4d60c40bbdd826fe6  libgcrypt-1.8.1.tar.bz2
1256e3981258c07c7c77884409c4cbb30cf7b55c  libgcrypt-1.8.1.tar.gz
04126cdca54074d8768dea4287493a5b338a9a98  libgcrypt-1.7.9.tar.bz2
7bfec30457e4daeaf131ba9fae0bdd3b2a185a1b  libgcrypt-1.7.9.tar.gz

   You should also verify that the checksums above are authentic by
   matching them with copies of this announcement.  Those copies can be
   found at other mailing lists, web sites, and search engines.
   

Copying
=======

Libgcrypt is distributed under the terms of the GNU Lesser General
Public License (LGPLv2.1+).  The helper programs as well as the
documentation are distributed under the terms of the GNU General Public
License (GPLv2+).  The file LICENSES has notices about contributions
that require that these additional notices are distributed.


Support
=======

For help on developing with Libgcrypt you should read the included
manual and optional ask on the gcrypt-devel mailing list [1].  A
listing with commercial support offers for Libgcrypt and related
software is available at the GnuPG web site [2].

If you are a developer and you may need a certain feature for your
project, please do not hesitate to bring it to the gcrypt-devel
mailing list for discussion.

Maintenance and development of Libgcrypt is mostly financed by
donations; see <https://gnupg.org/donate/>.  We currently employ
4 full-time developers, one part-timer, and one contractor to work on
GnuPG and closely related software like Libgcrypt.


Thanks
======

We like to thank all the people who helped with this release, be it
testing, coding, translating, suggesting, auditing, administering the
servers, spreading the word, and answering questions on the mailing
lists.  Also many thanks to all our donors [3].

Happy hacking,

  The GnuPG Team



[1] https://lists.gnupg.org/mailman/listinfo/gcrypt-devel
[2] https://www.gnupg.org/service.html
[3] https://gnupg.org/donate/kudos.html


p.s.
This is an announcement only mailing list.  Please send replies only to
the gcrypt-devel 'at' gnupg.org mailing list.

p.p.s 
List of Release Signing Keys:

To guarantee that a downloaded GnuPG version has not been tampered by
malicious entities we provide signature files for all tarballs and
binary versions.  The keys are also signed by the long term keys of
their respective owners.  Current releases are signed by one or more
of these five keys:

  2048R/4F25E3B6 2011-01-12 [expires: 2019-12-31]
  Key fingerprint = D869 2123 C406 5DEA 5E0F  3AB5 249B 39D2 4F25 E3B6
  Werner Koch (dist sig)

  rsa2048/E0856959 2014-10-29 [expires: 2019-12-31]
  Key fingerprint = 46CC 7308 65BB 5C78 EBAB  ADCF 0437 6F3E E085 6959
  David Shaw (GnuPG Release Signing Key) <dshaw 'at' jabberwocky.com>

  rsa2048/33BD3F06 2014-10-29 [expires: 2016-10-28]
  Key fingerprint = 031E C253 6E58 0D8E A286  A9F2 2071 B08A 33BD 3F06
  NIIBE Yutaka (GnuPG Release Key) <gniibe 'at' fsij.org>

  rsa2048/7EFD60D9 2014-10-19 [expires: 2020-12-31]
  Key fingerprint = D238 EA65 D64C 67ED 4C30  73F2 8A86 1B1C 7EFD 60D9
  Werner Koch (Release Signing Key)

  rsa3072/4B092E28 2017-03-17 [expires: 2027-03-15]
  Key fingerprint = 5B80 C575 4298 F0CB 55D8  ED6A BCEF 7E29 4B09 2E28
  Andre Heinecke (Release Signing Key)

You may retrieve these keys from a keyserver using this command

  gpg --keyserver hkp://keys.gnupg.net --recv-keys  \
                  249B39D24F25E3B6 04376F3EE0856959 \
                  2071B08A33BD3F06 8A861B1C7EFD60D9 BCEF7E294B092E28

The keys are also available at https://gnupg.org/signature_key.html and
in any recently released GnuPG tarball in the file g10/distsigkey.gpg .
Note that this mail has been signed by a different key.

-- 
Die Gedanken sind frei.  Ausnahmen regelt ein Bundesgesetz.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: </pipermail/attachments/20170831/29e89759/attachment.sig>


More information about the Gnupg-announce mailing list