Set up the RSA's _method_mod_n before the initial blinding
authortb <tb@openbsd.org>
Wed, 5 Apr 2023 11:30:12 +0000 (11:30 +0000)
committertb <tb@openbsd.org>
Wed, 5 Apr 2023 11:30:12 +0000 (11:30 +0000)
commitab5096110ae1ca58654f23dafd1a113d3abbeb6d
tree62ffd902eb02726b8c809cdbb713c5b667ddf483
parentb2d591434604bee29fd644b98295e40fdf88ec09
Set up the RSA's _method_mod_n before the initial blinding

As observed by Bernd Edlinger, the main part of the RSA timing leak that was
recently made public is that the initial blinding isn't done with Montgomery
exponentiation but rather with plain exponentiation.

Pull up the initialization of the cached Montgomery context to ensure we use
Montgomery exponentiation. Do this for private_{de,en}crypt(). Interestingly,
the latter was fixed in OpenSSL a while ago by Andy Polyakov as part of the
"smooth CRT-RSA" addition.

If this code was anything but completely insane this would never have been
an issue in the first place. But it's libcrypto...

ok jsing
lib/libcrypto/rsa/rsa_eay.c