[packages/openssl102: 125/432] - secuirty patch Bug (bugtraq): Researchers have discovered a timing attack on RSA keys, to which Op

adwol adwol at pld-linux.org
Sat Sep 29 01:12:06 CEST 2018


commit 98b4a6cf42c4499c1ac0612ecd68b959581aab05
Author: misi3k <misi3k at pld-linux.org>
Date:   Mon Mar 17 18:44:20 2003 +0000

    - secuirty patch
    Bug (bugtraq):
    Researchers have discovered a timing attack on RSA keys, to which
    OpenSSL is generally vulnerable, unless RSA blinding has been turned
    on.
    
    Typically, it will not have been, because it is not easily possible to
    do so when using OpenSSL to provide SSL or TLS.
    
    The enclosed patch switches blinding on by default. Applications that
    wish to can remove the blinding with RSA_blinding_off(), but this is
    not generally advised. It is also possible to disable it completely by
    defining OPENSSL_NO_FORCE_RSA_BLINDING at compile-time.
    
    The performance impact of blinding appears to be small (a few
    percent).
    
    This problem affects many applications using OpenSSL, in particular,
    almost all SSL-enabled Apaches. You should rebuild and reinstall
    OpenSSL, and all affected applications.
    
    The Common Vulnerabilities and Exposures project (cve.mitre.org) has
    assigned the name CAN-2003-0147 to this issue.
    
    We strongly advise upgrading OpenSSL in all cases, as a precaution.
    
    Changed files:
        openssl-sec3.patch -> 1.1

 openssl-sec3.patch | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)
---
diff --git a/openssl-sec3.patch b/openssl-sec3.patch
new file mode 100644
index 0000000..5cfc4ca
--- /dev/null
+++ b/openssl-sec3.patch
@@ -0,0 +1,70 @@
+diff -u -r1.28.2.3 rsa_eay.c
+--- crypto/rsa/rsa_eay.c	30 Jan 2003 17:37:46 -0000	1.28.2.3
++++ crypto/rsa/rsa_eay.c	16 Mar 2003 10:34:13 -0000
+@@ -195,6 +195,25 @@
+ 	return(r);
+ 	}
+ 
++static int rsa_eay_blinding(RSA *rsa, BN_CTX *ctx)
++	{
++	int ret = 1;
++	CRYPTO_w_lock(CRYPTO_LOCK_RSA);
++	/* Check again inside the lock - the macro's check is racey */
++	if(rsa->blinding == NULL)
++		ret = RSA_blinding_on(rsa, ctx);
++	CRYPTO_w_unlock(CRYPTO_LOCK_RSA);
++	return ret;
++	}
++
++#define BLINDING_HELPER(rsa, ctx, err_instr) \
++	do { \
++		if(((rsa)->flags & RSA_FLAG_BLINDING) && \
++				((rsa)->blinding == NULL) && \
++				!rsa_eay_blinding(rsa, ctx)) \
++			err_instr \
++	} while(0)
++
+ /* signing */
+ static int RSA_eay_private_encrypt(int flen, const unsigned char *from,
+ 	     unsigned char *to, RSA *rsa, int padding)
+@@ -239,8 +258,8 @@
+ 		goto err;
+ 		}
+ 
+-	if ((rsa->flags & RSA_FLAG_BLINDING) && (rsa->blinding == NULL))
+-		RSA_blinding_on(rsa,ctx);
++	BLINDING_HELPER(rsa, ctx, goto err;);
++
+ 	if (rsa->flags & RSA_FLAG_BLINDING)
+ 		if (!BN_BLINDING_convert(&f,rsa->blinding,ctx)) goto err;
+ 
+@@ -318,8 +337,8 @@
+ 		goto err;
+ 		}
+ 
+-	if ((rsa->flags & RSA_FLAG_BLINDING) && (rsa->blinding == NULL))
+-		RSA_blinding_on(rsa,ctx);
++	BLINDING_HELPER(rsa, ctx, goto err;);
++
+ 	if (rsa->flags & RSA_FLAG_BLINDING)
+ 		if (!BN_BLINDING_convert(&f,rsa->blinding,ctx)) goto err;
+ 
+diff -u -r1.30.2.2 rsa_lib.c
+--- crypto/rsa/rsa_lib.c	30 Jan 2003 17:37:46 -0000	1.30.2.2
++++ crypto/rsa/rsa_lib.c	16 Mar 2003 10:34:13 -0000
+@@ -72,7 +72,13 @@
+ 
+ RSA *RSA_new(void)
+ 	{
+-	return(RSA_new_method(NULL));
++	RSA *r=RSA_new_method(NULL);
++
++#ifndef OPENSSL_NO_FORCE_RSA_BLINDING
++	r->flags|=RSA_FLAG_BLINDING;
++#endif
++
++	return r;
+ 	}
+ 
+ void RSA_set_default_method(const RSA_METHOD *meth)
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/openssl102.git/commitdiff/9fc1b1b87b259e8a327c99835865e91a391efc9e



More information about the pld-cvs-commit mailing list