Provided by: libreswan_3.23-4_amd64 bug

NAME

       ipsec_rsasigkey - generate RSA signature key

SYNOPSIS

       ipsec rsasigkey [--verbose] [--seeddev device] [--seed numbits] [--nssdir nssdir]
             [--password nsspassword] [--hostname hostname] [nbits]

DESCRIPTION

       rsasigkey generates an RSA public/private key pair, suitable for digital signatures, of
       (exactly) nbits bits (that is, two primes each of exactly nbits/2 bits, and related
       numbers) and emits it on standard output as ASCII (mostly hex) data.  nbits must be a
       multiple of 16.

       The public exponent is forced to the value 3, which has important speed advantages for
       signature checking. Beware that the resulting keys have known weaknesses as encryption
       keys and should not be used for that purpose.

       The --verbose option makes rsasigkey give a running commentary on standard error. By
       default, it works in silence until it is ready to generate output.

       The --seeddev option specifies a source for random bits used to seed the crypto library's
       RNG. The default is /dev/random (see random(4)). FreeS/WAN and Openswan without NSS
       support used this option to specify the random source used to directly create keys.
       Libreswan only uses it to seed the NSS crypto libraries RNG. Under Linux with hardware
       random support, special devices might show up as /dev/*rng* devices. However, these should
       never be accessed directly using this option, as hardware failures could lead to extremely
       non-random values (streams of zeroes have been observed in the wild)

       The --seedbits option specifies how many seed bits are pulled from the random device to
       seed the NSS PRNG. The default of 480bit comes from FIPS requirements. Seed bits are
       rounded up to a multiple of 8.

       The use of a different random device or a reduction of seedbits from the default value is
       prevented when the system is running in FIPS mode.

       The --nssdir option specifies the directory to use for the nss database. This is the
       directory where the NSS certificate, key and security modules databases reside. The
       default value is /var/lib/ipsec/nss.

       The --password option specifies the nss cryptographic module authentication password if
       the NSS module has been configured to require it. A password is required by hardware
       tokens and also by the internal software token module when configured to run in FIPS mode.
       If the argument is /etc/ipsec.d/nsspassword, the password comes from that file; otherwise
       argument is the password.

       The --hostname option specifies what host name to use in the first line of the output (see
       below); the default is what gethostname(2) returns.

       The output format looks like this (with long numbers trimmed down for clarity):

                # RSA 3744 bits   road.toad.com   Mon Apr 17 22:20:35 2017
                # for signatures only, UNSAFE FOR ENCRYPTION
                #ckaid=a953473e6014dd4e08eb051e4679dc39be160fea
                #pubkey=0sBAEAA...sKbTzwE=
                Modulus: 0xb84ae7d...b0a6d3cf01
                PublicExponent: 0x010001

       The first (comment) line, indicating the nature and date of the key, and giving a host
       name, is used by ipsec_showhostkey(8) when generating some forms of key output.

       The commented-out pubkey= line contains the public key, the public exponent and the
       modulus combined in approximately RFC 2537 format (the one deviation is that the combined
       value is given with a 0s prefix, rather than in unadorned base-64), suitable for use in
       the ipsec.conf file.

       The Modulus, PublicExponent and PrivateExponent lines give the basic signing and
       verification data.

       The Prime1 and Prime2 lines give the primes themselves (aka p and q), largest first. The
       Exponent1 and Exponent2 lines give the private exponent mod p-1 and q-1 respectively. The
       Coefficient line gives the Chinese Remainder Theorem coefficient, which is the inverse of
       q, mod p. These additional numbers (which must all be kept as secret as the private
       exponent) are precomputed aids to rapid signature generation. When NSS is used, these
       values are not available outside the NSS security database (software token or hardware
       token) and are instead filled in with the CKA_ID.

       No attempt is made to break long lines.

       The US patent on the RSA algorithm expired 20 Sept 2000.

EXAMPLES

       ipsec rsasigkey --verbose 4096 >mykey.txt
           generates a 4096-bit signature key and puts it in the file mykey.txt, with running
           commentary on standard error. The file contents can be inserted verbatim into a
           suitable entry in the ipsec.secrets file (see ipsec_secrets(5)), and the public key
           can then be extracted and edited into the ipsec.conf (see ipsec_showhostkey(8)).

FILES

       /dev/random, /dev/urandom

SEE ALSO

       random(4), rngd(8), ipsec_showhostkey(8), Applied Cryptography, 2nd. ed., by Bruce
       Schneier, Wiley 1996, RFCs 2537, 2313, GNU MP, the GNU multiple precision arithmetic
       library, edition 2.0.2, by Torbj Granlund

HISTORY

       Originally written for the Linux FreeS/WAN project <http://www.freeswan.org> by Henry
       Spencer. Updated for the Libreswan Project by Paul Wouters.

       The --round and --noopt options were obsoleted as these were only used with the old
       non-library crypto code

       The --random device is only used for seeding the crypto library, not for direct random to
       generate keys

BUGS

       There is an internal limit on nbits, currently 20000.

       rsasigkey's run time is difficult to predict, since /dev/random output can be arbitrarily
       delayed if the system's entropy pool is low on randomness, and the time taken by the
       search for primes is also somewhat unpredictable. Specifically, embedded systems and most
       virtual machines are low on entropy. In such a situation, consider generating the RSA key
       on another machine, and copying ipsec.secrets and the /var/lib/ipsec/nss directory tree to
       the embedded platform. Note that NSS embeds the full path in the DB files, so the path on
       proxy machine must be identical to the path on the destination machine.

AUTHOR

       Paul Wouters
           placeholder to suppress warning