The RSA blinding patch seems to cause problems when the same RSA
private key is used simultaneously in multiple threads.

I believe this is caused by the call to BN_BLINDING_update in
BN_BLINDING_invert.  If one thread finishes an RSA decryption
and calls BN_BLINDING_invert while another thread is in between
the BN_BLINDING_convert and BN_BLINDING_invert calls, then the
second thread will "unblind" with the wrong value.

I would suggest something along the lines of:
  - move the BN_BLINDING_update into BN_BLINDING_convert.
  - make BN_BLINDING_convert hand the unblinding value
    (Ai) back to the caller for subsequent use.
  - place a lock around this logic in BN_BLINDING_convert
    so that the steps of blinding, capturing the unblinding
    value, and updating are an atomic operation.

If no one beats me to submitting a patch next week, I'll try to
write one up and send it in.

Tom
-- 
Tom Wu                        * finger -l [EMAIL PROTECTED] for PGP key *
 E-mail: [EMAIL PROTECTED]       "Those who would give up their freedoms in
  Phone: (650) 723-1565              exchange for security deserve neither."
   http://www-cs-students.stanford.edu/~tjw/   http://srp.stanford.edu/
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to