summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ecdsa
diff options
context:
space:
mode:
authorjsing <>2017-01-05 13:25:52 +0000
committerjsing <>2017-01-05 13:25:52 +0000
commit24bd0c62d7cee5a02429b55d731cc85fb5d5e33d (patch)
tree40146ee9aa4cb2d6bc8f6f1870125a0e4e35277e /src/lib/libcrypto/ecdsa
parent39d13fc94e77e5dae2801aac096a56762070f87c (diff)
downloadopenbsd-24bd0c62d7cee5a02429b55d731cc85fb5d5e33d.tar.gz
openbsd-24bd0c62d7cee5a02429b55d731cc85fb5d5e33d.tar.bz2
openbsd-24bd0c62d7cee5a02429b55d731cc85fb5d5e33d.zip
Avoid a side-channel cache-timing attack that can leak the ECDSA private
keys when signing. This is due to BN_mod_inverse() being used without the constant time flag being set. This issue was reported by Cesar Pereida Garcia and Billy Brumley (Tampere University of Technology). The fix was developed by Cesar Pereida Garcia.
Diffstat (limited to 'src/lib/libcrypto/ecdsa')
-rw-r--r--src/lib/libcrypto/ecdsa/ecs_ossl.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/libcrypto/ecdsa/ecs_ossl.c b/src/lib/libcrypto/ecdsa/ecs_ossl.c
index 31102138c0..26158a001b 100644
--- a/src/lib/libcrypto/ecdsa/ecs_ossl.c
+++ b/src/lib/libcrypto/ecdsa/ecs_ossl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecs_ossl.c,v 1.6 2015/02/08 13:35:07 jsing Exp $ */ 1/* $OpenBSD: ecs_ossl.c,v 1.7 2017/01/05 13:25:52 jsing Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project 3 * Written by Nils Larsch for the OpenSSL project
4 */ 4 */
@@ -142,6 +142,8 @@ ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
142 if (!BN_add(k, k, order)) 142 if (!BN_add(k, k, order))
143 goto err; 143 goto err;
144 144
145 BN_set_flags(k, BN_FLG_CONSTTIME);
146
145 /* compute r the x-coordinate of generator * k */ 147 /* compute r the x-coordinate of generator * k */
146 if (!EC_POINT_mul(group, tmp_point, k, NULL, NULL, ctx)) { 148 if (!EC_POINT_mul(group, tmp_point, k, NULL, NULL, ctx)) {
147 ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP, ERR_R_EC_LIB); 149 ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP, ERR_R_EC_LIB);