ntp-keygen(8) System Manager's Manual ntp-keygen(8)
NAME
ntp-keygen - generate public and private keys
SYNOPSIS
ntp-keygen [ -deGHIMPT ] [ -b modulus ] [ -c [RSA-MD2 | RSA-MD5 | RSA-
SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ] ] [ -C
cipher ] [ -i group ] [ -m modulus ] [ -p passwd2 ] [ -q passwd1 ] [ -S
[ RSA | DSA ] ] [ -s host ] [ -V nkeys ]
DESCRIPTION
This program generates cryptographic data files used by the NTPv4
authentication and identity schemes. It can generate message digest
keys used in symmetric key cryptography and, if the OpenSSL software
library has been installed, it can generate host keys, sign keys, cer-
tificates and identity keys used by the Autokey public key cryptogra-
phy. The message digest keys file is generated in a format compatible
with NTPv3. All other files are in PEM-encoded printable ASCII format
so they can be embedded as MIME attachments in mail to other sites.
When used to generate message digest keys, the program produces a file
containing ten pseudo-random printable ASCII strings suitable for the
MD5 message digest algorithm included in the distribution. If the
OpenSSL library is installed, it produces an additional ten hex-encoded
random bit strings suitable for the SHA1 and other message digest algo-
rithms. Printable ASCII keys can have length from one to 20 characters,
inclusive. Bit string keys have length 20 octets (40 hex characters).
All keys are 160 bits in length.
The file can be edited later with purpose-chosen passwords for the
ntpq and ntpdc programs. Each line of the file contains three fields,
first an integer between 1 and 65534, inclusive, representing the key
identifier used in the server and peer configuration commands. Next is
the key type for the message digest algorithm, which in the absence of
the OpenSSL library should be the string MD5 to designate the MD5 mes-
sage digest algorithm. If the OpenSSL library is installed, the key
type can be any message digest algorithm supported by that library.
However, if compatibility with FIPS 140-2 is required, the key type
must be either SHA or SHA1.Finally is the key itself as a printable
ASCII string excluding the space and # characters. If not greater than
20 characters in length, the string is the key itself; otherwise, it is
interpreted as a hex-encoded bit string. As is custom, # and the
remaining characters on the line are ignored. Later, this file can be
edited to include the passwords for the ntpq and ntpdc utilities. If
this is the only need, run ntp-keygen with the -M option and disregard
the remainder of this page.
The remaining generated files are compatible with other OpenSSL appli-
cations and other Public Key Infrastructure (PKI) resources. Certifi-
cates generated by this program should be compatible with extant indus-
try practice, although some users might find the interpretation of
X509v3 extension fields somewhat liberal. However, the identity keys
are probably not compatible with anything other than Autokey.
Most files used by this program are encrypted using a private password.
The -p option specifies the password for local files and the -q option
the password for files sent to remote sites. If no local password is
specified, the host name returned by the Unix gethostname() function,
normally the DNS name of the host, is used. If no remote password is
specified, the local password is used.
The pw option of the crypto configuration command specifies the read
password for previously encrypted files. This must match the local
password used by this program. If not specified, the host name is used.
Thus, if files are generated by this program without password, they can
be read back by ntpd without password, but only on the same host.
All files and links are usually installed in the directory
/usr/local/etc, which is normally in a shared filesystem in NFS-mounted
networks and cannot be changed by shared clients. The location of the
keys directory can be changed by the keysdir configuration command in
such cases. Normally, encrypted files for each host are generated by
that host and used only by that host, although exceptions exist as
noted later on this page.
This program directs commentary and error messages to the standard
error stream stderr and remote files to the standard output stream std-
out where they can be piped to other applications or redirected to a
file. The names used for generated files and links all begin with the
string ntpkey and include the file type, generating host and filestamp,
as described in the Cryptographic Data Files section below
RUNNING THE PROGRAM
To test and gain experience with Autokey concepts, log in as root and
change to the keys directory, usually /usr/local/etc. When run for the
first time, or if all files with names beginning ntpkey have been
removed, use the ntp-keygen command without arguments to generate a
default RSA host key and matching RSA-MD5 certificate with expiration
date one year hence. If run again, the program uses the existing keys
and parameters and generates only a new certificate with new expiration
date one year hence; however, the certificate is not generated if the
-e or -q options are present.
Run the command on as many hosts as necessary. Designate one of them as
the trusted host (TH) using ntp-keygen with the -T option and configure
it to synchronize from reliable Internet servers. Then configure the
other hosts to synchronize to the TH directly or indirectly. A certifi-
cate trail is created when Autokey asks the immediately ascendant host
towards the TH to sign its certificate, which is then provided to the
immediately descendant host on request. All group hosts should have
acyclic certificate trails ending on the TH.
The host key is used to encrypt the cookie when required and so must be
RSA type. By default, the host key is also the sign key used to encrypt
signatures. A different sign key can be assigned using the -S option
and this can be either RSA or DSA type. By default, the signature mes-
sage digest type is MD5, but any combination of sign key type and sign
digest type supported by the OpenSSL library can be specified using the
-c option. At the moment, legacy considerations require the NTP packet
header digest type to be MD5.
TRUSTED HOSTS AND SECURE GROUPS
As described on the Authentication Options page, an NTP secure group
consists of one or more low-stratum THs as the root from which all
other group hosts derive synchronization directly or indirectly. For
authentication purposes all hosts in a group must have the same group
name specified by the -i option and matching the ident option of the
crypto configuration command. The group name is used in the subject and
issuer fields of trusted, self-signed certificates and when construct-
ing the file names for identity keys. All hosts must have different
host names, either the default host name or as specified by the -s
option and matching the host option of the crypto configuration com-
mand. Most installations need not specify the -i option nor the host
option. Host names are used in the subject and issuer fields of self-
signed, nontrusted certificates and when constructing the file names
for host and sign keys and certificates. Host and group names are used
only for authentication purposes and have nothing to do with DNS names.
IDENTITY SCHEMES
As described on the Authentication Options page, there are five iden-
tity schemes, three of which - IFF, GQ and MV - require identity keys
specific to each scheme. There are two types of files for each scheme,
an encrypted keys file and a nonencrypted parameters file, which usu-
ally contains a subset of the keys file. In general, NTP secondary
servers operating as certificate signing authorities (CSA) use the keys
file and clients use the parameters file. Both files are generated by
the TA operating as a certificate authority (CA) on behalf of all
servers and clients in the group.
The parameters files are public; they can be stored in a public place
and sent in the clear. The keys files are encrypted with the local
password. To retrieve the keys file, a host can send a mail request to
the TA including its local password. The TA encrypts the keys file with
this password and returns it as an attachment. The attachment is then
copied intact to the keys directory with name given in the first line
of the file, but all in lower case and with the filestamp deleted.
Alternatively, the parameters file can be retrieved from a secure web
site.
For example, the TA generates default host key, IFF keys and trusted
certificate using the command
ntp-keygen -p local_passwd -T -I -igroup_name
Each group host generates default host keys and nontrusted certificate
use the same command line but omitting the -i option. Once these media
have been generated, the TA can then generate the public parameters
using the command
ntp-keygen -p local_passwd -e >parameters_file
where the -e option redirects the unencrypted parameters to the stan-
dard output stream for a mail application or stored locally for later
distribution. In a similar fashion the -q option redirects the
encrypted server keys to the standard output stream.
COMMAND LINE OPTIONS
-b modulus
Set the modulus for generating identity keys to modulus bits.
The modulus defaults to 256, but can be set from 256 (32
octets) to 2048 (256 octets). Use the larger moduli with cau-
tion, as this can consume considerable computing resources and
increases the size of authenticated packets.
-c [ RSA-MD2 | RSA-MD5 | RSA-SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160
| DSA-SHA | DSA-SHA1 ]
Select certificate and message digest/signature encryption
scheme. Note that RSA schemes must be used with a RSA sign key
and DSA schemes must be used with a DSA sign key. The default
without this option is RSA-MD5. If compatibility with FIPS
140-2 is required, either the DSA-SHA or DSA-SHA1 scheme must
be used.
-C cipher
Select the cipher which is used to encrypt the files containing
private keys. The default is three-key triple DES in CBC mode,
equivalent to "-C des-ede3-cbc". The openssl tool lists ciphers
available in "openssl -h" output.
-d Enable debugging. This option displays the cryptographic data
produced for eye-friendly billboards.
-e Extract the IFF or GQ public parameters from the IFFkey or
GQkey keys file previously specified. Send the unencrypted data
to the standard output stream stdout. While the IFF parameters
do not reveal the private group key, the GQ parameters should
be used with caution, as they include the group key. Use the -q
option with password instead. Note: a new certificate is not
generated when this option is present. This allows multiple
commands with this option but without disturbing existing
media.
-G Generate a new encrypted GQ key file and link for the Guillou-
Quisquater (GQ) identity scheme.
-H Generate a new encrypted RSA public/private host key file and
link. Note that if the sign key is the same as the host key,
generating a new host key invalidates all certificates signed
with the old host key.
-i group
Set the group name to group. This is used in the identity file
names. It must match the group name specified in the ident
option of the crypto configuration command.
-I Generate a new encrypted IFF key file and link for the Schnorr
(IFF) identity scheme.
-m modulus
Set the modulus for generating files to modulus bits. The modu-
lus defaults to 512, but can be set from 256 (32 octets) to
2048 (256 octets).
-M Generate a new MD5 key file containing 16, 128-bit pseudo-ran-
dom keys for symmetric cryptography..
-P Generate a new private certificate used by the PC identity
scheme. By default, the program generates public certificates.
Note: the PC identity scheme is not recommended for new instal-
lations.
-p passwd
Set the password for reading and writing encrypted files to
passwd. By default, the password is the host name.
-q passwd
Extract the encrypted IFF or GQ server keys from the IFFkey or
GQkey key file previously generated. The data are sent to the
standard output stream stdout. Set the password for writing the
data, which is also the password to read the data file in
another host. By default, the password is the host name. Note:
a new certificate is not generated when this option is present.
This allows multiple commands with this option but without dis-
turbing existing media.
-S [ RSA | DSA ]
Generate a new sign key of the specified type. By default, the
sign key is the host key and has the same type. If compatibly
with FIPS 140-2 is required, the sign key type must be DSA.
Note that generating a new sign key invalidates all certifi-
cates signed with the old sign key.
-s host Set the host name to host. This is used in the host and sign
key file names. It must match the host name specified in the
host option of the crypto configuration command.
-T Generate a trusted certificate. By default, the program gener-
ates nontrusted certificates.
-V nkeys
Generate server parameters MV and nkeys client keys for the Mu-
Varadharajan (MV) identity scheme. Note: support for this
option should be considered a work in progress.
RANDOM SEED FILE
All cryptographically sound key generation schemes must have means to
randomize the entropy seed used to initialize the internal pseudo-ran-
dom number generator used by the OpenSSL library routines. If a site
supports ssh, it is very likely that means to do this are already
available. The entropy seed used by the OpenSSL library is contained in
a file, usually called .rnd, which must be available when starting the
ntp-keygen program or ntpd daemon.
The OpenSSL library looks for the file using the path specified by the
RANDFILE environment variable in the user home directory, whether root
or some other user. If the RANDFILE environment variable is not
present, the library looks for the .rnd file in the user home direc-
tory. Since both the ntp-keygen program and ntpd daemon must run as
root, the logical place to put this file is in /.rnd or /root/.rnd. If
the file is not available or cannot be written, the program exits with
a message to the system log.
CRYPTOGRAPHIC DATA FILES
File and link names are in the form ntpkey_key_name.fstamp, where key
is the key or parameter type, name is the host or group name and fstamp
is the filestamp (NTP seconds) when the file was created). By conven-
tion, key fields in generated file names include both upper and lower
case alphanumeric characters, while key fields in generated link names
include only lower case characters. The filestamp is not used in gener-
ated link names.
The key type is a string defining the cryptographic function. Key types
include public/private keys host and sign, certificate cert and several
challenge/response key types. By convention, files used for challenges
have a par subtype, as in the IFF challenge IFFpar, while files for
responses have a key subtype, as in the GQ response GQkey.
All files begin with two nonencrypted lines. The first line contains
the file name in the format ntpkey_key_host.fstamp. The second line
contains the datestamp in conventional Unix date format. Lines begin-
ning with # are ignored.
The remainder of the file contains cryptographic data encoded first
using ASN.1 rules, then encrypted using the cipher selected with -C and
given password and finally written in PEM-encoded printable ASCII text
preceded and followed by MIME content identifier lines.
The format of the symmetric keys file is somewhat different than the
other files in the interest of backward compatibility. Since DES-CBC is
deprecated in NTPv4, the only key format of interest is MD5 alphanu-
meric strings. Following the header the keys are entered one per line
in the format
keyno type key
where keyno is a positive integer in the range 1-65,535, type is the
string MD5 defining the key format and key is the key itself, which is
a printable ASCII string 16 characters or less in length. Each charac-
ter is chosen from the 93 printable characters in the range 0x21
through 0x7f excluding space and the '#' character.
Note that the keys used by the ntpq and ntpdc programs are checked
against passwords requested by the programs and entered by hand, so it
is generally appropriate to specify these keys in human readable ASCII
format.
The ntp-keygen program generates a MD5 symmetric keys file ntp-
key_MD5key_hostname.filestamp. Since the file contains private shared
keys, it should be visible only to root and distributed by secure means
to other subnet hosts. The NTP daemon loads the file ntp.keys, so ntp-
keygen installs a soft link from this name to the generated file. Sub-
sequently, similar soft links must be installed by manual or automated
means on the other subnet hosts. While this file is not used with the
Autokey Version 2 protocol, it is needed to authenticate some remote
configuration commands used by the ntpq and ntpdc utilities.
BUGS
It can take quite a while to generate some cryptographic values, from
one to several minutes with modern architectures such as UltraSPARC and
up to tens of minutes to an hour with older architectures such as SPARC
IPC.
SEE ALSO
ntpd(8), ntp_auth(5)
The official HTML documentation.
This file was automatically generated from HTML source.
ntp-keygen(8)