Use ciphertext blinding for Elgamal decryption.
authorWerner Koch <wk@gnupg.org>
Mon, 11 Aug 2014 14:15:40 +0000 (16:15 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 11 Feb 2015 19:04:58 +0000 (20:04 +0100)
commitff53cf06e966dce0daba5f2c84e03ab9db2c3c8b
tree366398a4810df35f9a5526638dc266f50b1c4e4e
parent397987c33233bd672b29e3c607577c8d93ed48ed
Use ciphertext blinding for Elgamal decryption.

* cipher/elgamal.c (USE_BLINDING): New.
(decrypt): Rewrite to use ciphertext blinding.
--

CVE-id: CVE-2014-3591

As a countermeasure to a new side-channel attacks on sliding windows
exponentiation we blind the ciphertext for Elgamal decryption.  This
is similar to what we are doing with RSA.

Unfortunately, the performance impact of Elgamal blinding is quite
noticeable: For a 3072 bit Elgamal key the decryption used to take
13ms; with the blinding it takes 24ms.  This has been measured using
time(1), calling gpg with a 100 byte message, and having gpg modified
to run the pubkey_decrypt function 100 times and finally scale the
result (using an i5-2410M CPU @ 2.30GHz TP 220).
cipher/elgamal.c