1*8e2ec202Sschwarze.\" $OpenBSD: RSA_security_bits.3,v 1.1 2022/07/13 17:32:16 schwarze Exp $ 2*8e2ec202Sschwarze.\" 3*8e2ec202Sschwarze.\" Copyright (c) 2022 Ingo Schwarze <schwarze@openbsd.org> 4*8e2ec202Sschwarze.\" 5*8e2ec202Sschwarze.\" Permission to use, copy, modify, and distribute this software for any 6*8e2ec202Sschwarze.\" purpose with or without fee is hereby granted, provided that the above 7*8e2ec202Sschwarze.\" copyright notice and this permission notice appear in all copies. 8*8e2ec202Sschwarze.\" 9*8e2ec202Sschwarze.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*8e2ec202Sschwarze.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*8e2ec202Sschwarze.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*8e2ec202Sschwarze.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*8e2ec202Sschwarze.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*8e2ec202Sschwarze.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*8e2ec202Sschwarze.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*8e2ec202Sschwarze.\" 17*8e2ec202Sschwarze.Dd $Mdocdate: July 13 2022 $ 18*8e2ec202Sschwarze.Dt RSA_SECURITY_BITS 3 19*8e2ec202Sschwarze.Os 20*8e2ec202Sschwarze.Sh NAME 21*8e2ec202Sschwarze.Nm RSA_security_bits , 22*8e2ec202Sschwarze.Nm DSA_security_bits , 23*8e2ec202Sschwarze.Nm DH_security_bits , 24*8e2ec202Sschwarze.Nm BN_security_bits 25*8e2ec202Sschwarze.Nd get security strength 26*8e2ec202Sschwarze.Sh SYNOPSIS 27*8e2ec202Sschwarze.In openssl/rsa.h 28*8e2ec202Sschwarze.Ft int 29*8e2ec202Sschwarze.Fn RSA_security_bits "const RSA *rsa" 30*8e2ec202Sschwarze.In openssl/dsa.h 31*8e2ec202Sschwarze.Ft int 32*8e2ec202Sschwarze.Fn DSA_security_bits "const DSA *dsa" 33*8e2ec202Sschwarze.In openssl/dh.h 34*8e2ec202Sschwarze.Ft int 35*8e2ec202Sschwarze.Fn DH_security_bits "const DH *dh" 36*8e2ec202Sschwarze.In openssl/bn.h 37*8e2ec202Sschwarze.Ft int 38*8e2ec202Sschwarze.Fo BN_security_bits 39*8e2ec202Sschwarze.Fa "int pubbits" 40*8e2ec202Sschwarze.Fa "int privbits" 41*8e2ec202Sschwarze.Fc 42*8e2ec202Sschwarze.Sh DESCRIPTION 43*8e2ec202SschwarzeThese functions return the security strength of some specific types of 44*8e2ec202Sschwarzecryptographic keys, measured in bits. 45*8e2ec202SschwarzeIt is approximately the binary logarithm of the number of operations 46*8e2ec202Sschwarzean attacker has to perform in order to break the key. 47*8e2ec202Sschwarze.Pp 48*8e2ec202Sschwarze.Fn RSA_security_bits 49*8e2ec202Sschwarzeuses only the number of significant bits in the public modulus of 50*8e2ec202Sschwarze.Fa rsa 51*8e2ec202Sschwarzeas returned by 52*8e2ec202Sschwarze.Xr RSA_bits 3 . 53*8e2ec202SschwarzeIt returns 54*8e2ec202Sschwarze.Bl -column 256 for 15360 last_column -offset indent 55*8e2ec202Sschwarze.It 256 Ta for Ta 15360 Ta or more significant bits 56*8e2ec202Sschwarze.It 192 Ta Ta 7680 Ta 57*8e2ec202Sschwarze.It 128 Ta Ta 3072 Ta 58*8e2ec202Sschwarze.It 112 Ta Ta 2048 Ta 59*8e2ec202Sschwarze.It 80 Ta Ta 1024 Ta 60*8e2ec202Sschwarze.El 61*8e2ec202Sschwarze.Pp 62*8e2ec202Sschwarzeor 0 otherwise. 63*8e2ec202Sschwarze.Pp 64*8e2ec202Sschwarze.Fn DSA_security_bits 65*8e2ec202Sschwarzeuses the number of significant bits in the public domain parameter 66*8e2ec202Sschwarze.Fa p 67*8e2ec202Sschwarzecontained in the 68*8e2ec202Sschwarze.Fa dsa 69*8e2ec202Sschwarzeobject, which is equal to the size of the public key, in the same way as 70*8e2ec202Sschwarze.Fn RSA_security_bits . 71*8e2ec202SschwarzeIn addition, the public domain parameter 72*8e2ec202Sschwarze.Fa q 73*8e2ec202Sschwarzecontained in the 74*8e2ec202Sschwarze.Fa dsa 75*8e2ec202Sschwarzeobject, which is equal to the size of the private key, is inspected. 76*8e2ec202SschwarzeThe return value is either the security strength according to the above table 77*8e2ec202Sschwarzeor half the size of the private key, whichever is smaller. 78*8e2ec202SschwarzeIf the return value would be smaller than 80, 0 is returned instead. 79*8e2ec202Sschwarze.Pp 80*8e2ec202Sschwarze.Fn DH_security_bits 81*8e2ec202Sschwarzeuses the number of significant bits in the shared secret contained in the 82*8e2ec202Sschwarze.Fa dh 83*8e2ec202Sschwarzeobject as returned by 84*8e2ec202Sschwarze.Xr DH_bits 3 85*8e2ec202Sschwarzein the same way as 86*8e2ec202Sschwarze.Fn RSA_security_bits . 87*8e2ec202SschwarzeIf 88*8e2ec202Sschwarze.Fa dh 89*8e2ec202Sschwarzecontains the domain parameter 90*8e2ec202Sschwarze.Fa q , 91*8e2ec202Sschwarzeits number of significant bits is used in the same way as for 92*8e2ec202Sschwarze.Fn DSA_security_bits 93*8e2ec202Sschwarzeto limit the return value. 94*8e2ec202SschwarzeOtherwise, if 95*8e2ec202Sschwarze.Fa dh 96*8e2ec202Sschwarzecontains the length of the secret exponent in bits, 97*8e2ec202Sschwarzethat number is used. 98*8e2ec202SschwarzeIf neither is available, only the above table is used 99*8e2ec202Sschwarzewithout calculating a minimum. 100*8e2ec202Sschwarze.Pp 101*8e2ec202Sschwarze.Fn BN_security_bits 102*8e2ec202Sschwarzeis a combined function. 103*8e2ec202SschwarzeIf \-1 is passed for the 104*8e2ec202Sschwarze.Fa privbits 105*8e2ec202Sschwarzeargument, it behaves like 106*8e2ec202Sschwarze.Fn RSA_security_bits . 107*8e2ec202SschwarzeOtherwise, it behaves like 108*8e2ec202Sschwarze.Fn DSA_security_bits . 109*8e2ec202Sschwarze.Sh RETURN VALUES 110*8e2ec202SschwarzeAll these functions return numbers in the range from 0 to 256 inclusive. 111*8e2ec202Sschwarze.Pp 112*8e2ec202Sschwarze.Fn DSA_security_bits 113*8e2ec202Sschwarzefails and returns \-1 unless both of the 114*8e2ec202Sschwarze.Fa p 115*8e2ec202Sschwarzeand 116*8e2ec202Sschwarze.Fa q 117*8e2ec202Sschwarzedomain parameters are present. 118*8e2ec202Sschwarze.Sh SEE ALSO 119*8e2ec202Sschwarze.Xr BN_num_bits 3 , 120*8e2ec202Sschwarze.Xr DH_bits 3 , 121*8e2ec202Sschwarze.Xr DH_get0_pqg 3 , 122*8e2ec202Sschwarze.Xr DSA_get0_pqg 3 , 123*8e2ec202Sschwarze.Xr RSA_bits 3 , 124*8e2ec202Sschwarze.Xr SSL_CTX_set_security_level 3 125*8e2ec202Sschwarze.Rs 126*8e2ec202Sschwarze.%A Elaine Barker 127*8e2ec202Sschwarze.%T Recommendation for Key Management 128*8e2ec202Sschwarze.%I U.S. National Institute of Standards and Technology 129*8e2ec202Sschwarze.%R NIST Special Publication 800-57 Part 1 Revision 5 130*8e2ec202Sschwarze.%U https://doi.org/10.6028/NIST.SP.800-57pt1r5 131*8e2ec202Sschwarze.%C Gaithersburg, MD 132*8e2ec202Sschwarze.%D May 2020 133*8e2ec202Sschwarze.Re 134*8e2ec202Sschwarze.Sh HISTORY 135*8e2ec202SschwarzeThese functions first appeared in OpenSSL 1.1.0 136*8e2ec202Sschwarzeand have been available since 137*8e2ec202Sschwarze.Ox 7.2 . 138