ea52ec98a5
The first step of RSA with the CRT optimization is to reduce our input modulo p and q. We can do this in constant-time[*] with Montgomery reduction. When p and q are the same size, Montgomery reduction's bounds hold. We need two rounds of it because the first round gives us an unwanted R^-1. This does not appear to have a measurable impact on performance. Also add a long TODO describing how to make the rest of the function constant-time[*] which hopefully we'll get to later. RSA blinding should protect us from it all, but make this constant-time anyway. Since this and the follow-up work will special-case weird keys, add a test that we don't break those unintentionally. (Though I am not above breaking them intentionally someday...) Thanks to Andres Erbsen for discussions on how to do this bit properly. [*] Ignoring the pervasive bn_correct_top problem for the moment. Change-Id: Ide099a9db8249cb6549be99c5f8791a39692ea81 Reviewed-on: https://boringssl-review.googlesource.com/24204 Reviewed-by: Adam Langley <agl@google.com> |
||
---|---|---|
.. | ||
aes | ||
bn | ||
cipher | ||
des | ||
digest | ||
ec | ||
ecdsa | ||
hmac | ||
md4 | ||
md5 | ||
modes | ||
policydocs | ||
rand | ||
rsa | ||
sha | ||
bcm.c | ||
CMakeLists.txt | ||
delocate.h | ||
FIPS.md | ||
intcheck1.png | ||
intcheck2.png | ||
intcheck3.png | ||
is_fips.c |