summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/man/BN_add.3
diff options
context:
space:
mode:
authorschwarze <>2018-04-29 15:58:21 +0000
committerschwarze <>2018-04-29 15:58:21 +0000
commita60c20fc32aa2f822c683424f5bd90611e4d452f (patch)
treef067081374e9045588229a0f9af9373361fb2cbe /src/lib/libcrypto/man/BN_add.3
parent0a991f6de98776a2cd65f3529adb8948b51c275a (diff)
downloadopenbsd-a60c20fc32aa2f822c683424f5bd90611e4d452f.tar.gz
openbsd-a60c20fc32aa2f822c683424f5bd90611e4d452f.tar.bz2
openbsd-a60c20fc32aa2f822c683424f5bd90611e4d452f.zip
In view of the recent BN_FLG_CONSTTIME vulnerabilities in OpenSSL,
carefully document constant time vs. non-constant time operation of BN_div(3), BN_mod_exp(3), and BN_mod_inverse(3). Until the work that is required on the ill-designed BN_exp(3) and BN_gcd(3) interfaces can be undertaken, also document the imperfections in their behaviour, for now. Finally, mention BN_mod_exp(3) behaviour for even moduli. Delete the vague statement about some functions automatically setting BN_FLG_CONSTTIME. It created a false sense of security. Do not rely on it: not all relevant functions do that. Topic brought up by beck@, significant feedback and OK jsing@.
Diffstat (limited to 'src/lib/libcrypto/man/BN_add.3')
-rw-r--r--src/lib/libcrypto/man/BN_add.351
1 files changed, 49 insertions, 2 deletions
diff --git a/src/lib/libcrypto/man/BN_add.3 b/src/lib/libcrypto/man/BN_add.3
index 6001a9a4bd..8a11d7c080 100644
--- a/src/lib/libcrypto/man/BN_add.3
+++ b/src/lib/libcrypto/man/BN_add.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: BN_add.3,v 1.12 2018/03/27 17:35:50 schwarze Exp $ 1.\" $OpenBSD: BN_add.3,v 1.13 2018/04/29 15:58:21 schwarze Exp $
2.\" OpenSSL b97fdb57 Nov 11 09:33:09 2016 +0100 2.\" OpenSSL b97fdb57 Nov 11 09:33:09 2016 +0100
3.\" 3.\"
4.\" This file was written by Ulf Moeller <ulf@openssl.org> 4.\" This file was written by Ulf Moeller <ulf@openssl.org>
@@ -49,7 +49,7 @@
49.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 49.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50.\" OF THE POSSIBILITY OF SUCH DAMAGE. 50.\" OF THE POSSIBILITY OF SUCH DAMAGE.
51.\" 51.\"
52.Dd $Mdocdate: March 27 2018 $ 52.Dd $Mdocdate: April 29 2018 $
53.Dt BN_ADD 3 53.Dt BN_ADD 3
54.Os 54.Os
55.Sh NAME 55.Sh NAME
@@ -66,6 +66,13 @@
66.Nm BN_mod_sqr , 66.Nm BN_mod_sqr ,
67.Nm BN_exp , 67.Nm BN_exp ,
68.Nm BN_mod_exp , 68.Nm BN_mod_exp ,
69.\" The following are public, but intentionally undocumented for now:
70.\" .Nm BN_mod_exp_mont_consttime ,
71.\" .Nm BN_mod_exp_mont ,
72.\" .Nm BN_mod_exp_mont_word ,
73.\" .Nm BN_mod_exp_recp ,
74.\" .Nm BN_mod_exp_simple ,
75.\" Maybe they should be deleted from <openssl/bn.h>.
69.Nm BN_gcd 76.Nm BN_gcd
70.Nd arithmetic operations on BIGNUMs 77.Nd arithmetic operations on BIGNUMs
71.Sh SYNOPSIS 78.Sh SYNOPSIS
@@ -245,6 +252,13 @@ and places the result in
245and the remainder in 252and the remainder in
246.Fa rem 253.Fa rem
247.Pq Li dv=a/d , rem=a%d . 254.Pq Li dv=a/d , rem=a%d .
255If the flag
256.Dv BN_FLG_CONSTTIME
257is set on
258.Fa a
259or
260.Fa d ,
261it operates in constant time.
248Either of 262Either of
249.Fa dv 263.Fa dv
250and 264and
@@ -343,6 +357,11 @@ to the
343power modulo 357power modulo
344.Fa m 358.Fa m
345.Pq Li r=(a^p)%m . 359.Pq Li r=(a^p)%m .
360If the flag
361.Dv BN_FLG_CONSTTIME
362is set on
363.Fa p ,
364it operates in constant time.
346This function uses less time and space than 365This function uses less time and space than
347.Fn BN_exp . 366.Fn BN_exp .
348.Pp 367.Pp
@@ -417,3 +436,31 @@ and
417.Fn BN_mod_sqr 436.Fn BN_mod_sqr
418first appeared in OpenSSL 0.9.7 and have been available since 437first appeared in OpenSSL 0.9.7 and have been available since
419.Ox 3.2 . 438.Ox 3.2 .
439.Sh BUGS
440Even if the
441.Dv BN_FLG_CONSTTIME
442flag is set on
443.Fa a
444or
445.Fa b ,
446.Fn BN_gcd
447neither fails nor operates in constant time, potentially allowing
448timing side-channel attacks.
449.Pp
450Even if the
451.Dv BN_FLG_CONSTTIME
452flag is set on
453.Fa p ,
454if the modulus
455.Fa m
456is even,
457.Fn BN_mod_exp
458does not operate in constant time, potentially allowing
459timing side-channel attacks.
460.Pp
461If
462.Dv BN_FLG_CONSTTIME
463is set on
464.Fa p ,
465.Fn BN_exp
466fails instead of operating in constant time.