~ubuntu-branches/debian/squeeze/ntp/squeeze-201010051545

« back to all changes in this revision

Viewing changes to html/authopt.htm

  • Committer: Bazaar Package Importer
  • Author(s): Matt Zimmerman
  • Date: 2004-10-11 16:10:27 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20041011161027-icyjbji8ujym633o
Tags: 1:4.2.0a-10ubuntu2
Use ntp.ubuntulinux.org instead of pool.ntp.org

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
2
 
<html>
3
 
<head>
4
 
<meta name="generator" content="HTML Tidy, see www.w3.org">
5
 
<title>Authentication Options</title>
6
 
</head>
7
 
<body>
8
 
<h3>Authentication Options</h3>
9
 
 
10
 
<img align="left" src="pic/alice44.gif" alt="gif"><a href=
11
 
"http://www.eecis.udel.edu/~mills/pictures.htm">from <i>Alice's
12
 
Adventures in Wonderland</i>, Lewis Carroll</a> 
13
 
 
14
 
<p>Our resident cryptographer; now you see him, now you don't.<br
15
 
clear="left">
16
 
</p>
17
 
 
18
 
<hr>
19
 
<h4>Authentication Support</h4>
20
 
 
21
 
<p>Authentication support allows the NTP client to verify that the
22
 
server is in fact known and trusted and not an intruder intending
23
 
accidentally or on purpose to masquerade as that server. The NTPv3
24
 
specification RFC-1305 defines an scheme which provides
25
 
cryptographic authentication of received NTP packets. Originally,
26
 
this was done using the Data Encryption Standard (DES) algorithm
27
 
operating in Cipher Block Chaining (CBC) mode, commonly called
28
 
DES-CBC. Subsequently, this was augmented by the RSA Message Digest
29
 
5 (MD5) algorithm using a private key, commonly called keyed-MD5.
30
 
Either algorithm computes a message digest, or one-way hash, which
31
 
can be used to verify the server has the correct private key and
32
 
key identifier.</p>
33
 
 
34
 
<p>NTPv4 retains the NTPv3 schemes, properly described as
35
 
symmetric-key cryptography and, in addition, provides a new Autokey
36
 
scheme based on public-key cryptography. Public-key cryptography is
37
 
generally considered more secure than symmetric-key cryptography,
38
 
since the security is based on a private value which is generated
39
 
by each server and never revealed. With Autokey all key
40
 
distribution and management functions involve only public values,
41
 
which considerably simplifies key distribution and storage.</p>
42
 
 
43
 
<p>Authentication is configured separately for each association
44
 
using the <tt>key</tt> or <tt>autokey</tt> subcommands on the <tt>
45
 
peer</tt>, <tt>server</tt>, <tt>broadcast</tt> and <tt>
46
 
manycastclient</tt> commands as described in the <a href=
47
 
"config.htm">Configuration Options</a> page. The authentication
48
 
options described below specify the suite of keys, select the key
49
 
for each configured association and manage the configuration
50
 
operations.</p>
51
 
 
52
 
<p>The <tt>auth</tt> flag controls whether new associations or
53
 
remote configuration commands require cryptographic authentication.
54
 
This flag can be set or reset by the <tt>enable</tt> and <tt>
55
 
disable</tt> configuration commands and also by remote
56
 
configuration commands sent by a <tt>ntpdc</tt> program running in
57
 
another machine. If this flag is enabled, which is the default
58
 
case, new broadcast client and symmetric passive associations and
59
 
remote configuration commands must be cryptographically
60
 
authenticated using either symmetric-key or public-key schemes. If
61
 
this flag is disabled, these operations are effective even if not
62
 
cryptographic authenticated. It should be understood that operating
63
 
in the latter mode invites a significant vulnerability where a
64
 
rogue hacker can seriously disrupt client timekeeping.</p>
65
 
 
66
 
<p>In networks with firewalls and large numbers of broadcast
67
 
clients it may be acceptable to disable authentication, since that
68
 
avoids key distribution and simplifies network maintenance.
69
 
However, when the configuration file contains host names, or when a
70
 
server or client is configured remotely, host names are resolved
71
 
using the DNS and a separate name resolution process. In order to
72
 
protect against bogus name server messages, name resolution
73
 
messages are authenticated using an internally generated key which
74
 
is normally invisible to the user. However, if cryptographic
75
 
support is disabled, the name resolution process will fail. This
76
 
can be avoided either by specifying IP addresses instead of host
77
 
names, which is generally inadvisable, or by enabling the flag for
78
 
name resolution and disabled it once the name resolution process is
79
 
complete.</p>
80
 
 
81
 
<p>An attractive alternative where multicast support is available
82
 
is manycast mode, in which clients periodically troll for servers.
83
 
Cryptographic authentication in this mode uses public-key schemes
84
 
as described below. The principle advantage of this manycast mode
85
 
is that potential servers need not be configured in advance, since
86
 
the client finds them during regular operation, and the
87
 
configuration files for all clients can be identical.</p>
88
 
 
89
 
<p>In addition to the default symmetric-key cryptographic support,
90
 
support for public-key cryptography is available if the requisite
91
 
<tt>rsaref20</tt> software distribution has been installed before
92
 
building the distribution. Public-key cryptography provides secure
93
 
authentication of servers without compromising accuracy and
94
 
stability. The security model and protocol schemes for both
95
 
symmetric-key and public-key cryptography are described below.</p>
96
 
 
97
 
<h4>Symmetric-Key Scheme</h4>
98
 
 
99
 
The original RFC-1305 specification allows any one of possibly
100
 
65,534 keys, each distinguished by a 32-bit key identifier, to
101
 
authenticate an association. The servers and clients involved must
102
 
agree on the key and key identifier to authenticate their messages.
103
 
Keys and related information are specified in a key file, usually
104
 
called <tt>ntp.keys</tt>, which should be exchanged and stored
105
 
using secure procedures beyond the scope of the NTP protocol
106
 
itself. Besides the keys used for ordinary NTP associations,
107
 
additional keys can be used as passwords for the <tt><a href=
108
 
"ntpq.htm">ntpq</a></tt> and <tt><a href="ntpdc.htm">ntpdc</a></tt>
109
 
utility programs. 
110
 
 
111
 
<p>When <tt>ntpd</tt> is first started, it reads the key file
112
 
specified int he <tt>keys</tt> command and installs the keys in the
113
 
key cache. However, the keys must be activated with the <tt>
114
 
trusted</tt> command before use. This allows, for instance, the
115
 
installation of possibly several batches of keys and then
116
 
activating or deactivating each batch remotely using <tt>
117
 
ntpdc</tt>. This also provides a revocation capability that can be
118
 
used if a key becomes compromised. The <tt>requestkey</tt> command
119
 
selects the key used as the password for the <tt>ntpdc</tt>
120
 
utility, while the <tt>controlkey</tt> command selects the key used
121
 
as the password for the <tt>ntpq</tt> utility.</p>
122
 
 
123
 
<h4>Public-Key Scheme</h4>
124
 
 
125
 
The original NTPv3 authentication scheme described in RFC-1305
126
 
continues to be supported; however, in NTPv4 an additional
127
 
authentication scheme called Autokey is available. It uses MD5
128
 
message digest, RSA public-key signature and Diffie-Hellman key
129
 
agreement algorithms available from several sources, but not
130
 
included in the NTPv4 software distribution. In order to be
131
 
effective, the <tt>rsaref20</tt> package must be installed as
132
 
described in the <tt>README.rsa</tt> file. Once installed, the
133
 
configure and build process automatically detects it and compiles
134
 
the routines required. The Autokey scheme has several modes of
135
 
operation corresponding to the various NTP modes supported. RSA
136
 
signatures with timestamps are used in all modes to verify the
137
 
source of cryptographic values. All modes use a special cookie
138
 
which can be computed independently by the client and server. In
139
 
symmetric modes the cookie is constructed using the Diffie-Hellman
140
 
key agreement algorithm. In other modes the cookie is constructed
141
 
from the IP addresses and a private value known only to the server.
142
 
All modes use in addition a variant of the S-KEY scheme, in which a
143
 
pseudo-random key list is generated and used in reverse order.
144
 
These schemes are described along with an executive summary,
145
 
current status, briefing slides and reading list, on the <a href=
146
 
"http://www.eecis.udel.edu/~mills/autokey.htm">Autonomous
147
 
Authentication</a> page. 
148
 
 
149
 
<p>The cryptographic values used by the Autokey scheme are
150
 
incorporated as a set of files generated by the <a href=
151
 
"genkeys.htm"><tt>ntp-genkeys</tt></a> program, including the
152
 
symmetric private keys, public/private key pair, and the agreement
153
 
parameters. See the <tt>ntp-genkeys</tt> page for a description of
154
 
the formats of these files. They contain cryptographic values
155
 
generated by the algorithms of the <tt>rsaref20</tt> package and
156
 
are in printable ASCII format. All file names include the
157
 
timestamp, in NTP seconds, following the default names given below.
158
 
Since the file data are derived from random values seeded by the
159
 
system clock and the file name includes the timestamp, every
160
 
generation produces a different file and different file name.</p>
161
 
 
162
 
<p>The <tt>ntp.keys</tt> file contains the DES/MD5 private keys. It
163
 
must be distributed by secure means to other servers and clients
164
 
sharing the same security compartment and made visible only to
165
 
root. While this file is not used with the Autokey scheme, it is
166
 
needed to authenticate some remote configuration commands used by
167
 
the <a href="ntpdc.htm"><tt>ntpq</tt></a> and <a href="ntpq.htm">
168
 
<tt>ntpdc</tt></a> utilities. The <tt>ntpkey</tt> file contains the
169
 
RSA private key. It is useful only to the machine that generated it
170
 
and never shared with any other daemon or application program, so
171
 
must be made visible only to root.</p>
172
 
 
173
 
<p>The <tt>ntp_dh</tt> file contains the agreement parameters,
174
 
which are used only in symmetric (active and passive) modes. It is
175
 
necessary that both peers beginning a symmetric-mode association
176
 
share the same parameters, but it does not matter which <tt>
177
 
ntp_dh</tt> file generates them. If one of the peers contains the
178
 
parameters, the other peer obtains them using the Autokey protocol.
179
 
If both peers contain the parameters, the most recent copy is used
180
 
by both peers. If a peer does not have the parameters, they will be
181
 
requested by all associations, either configured or not; but, none
182
 
of the associations can proceed until one of them has received the
183
 
parameters. Once loaded, the parameters can be provided on request
184
 
to other clients and servers. The <tt>ntp_dh</tt> file can be also
185
 
be distributed using insecure means, since the data are public
186
 
values.</p>
187
 
 
188
 
<p>The <tt>ntpkey_<i>host</i></tt> file contains the RSA public
189
 
key, where <tt><i>host</i></tt> is the name of the host. Each host
190
 
must have its own <tt>ntpkey_<i>host</i></tt> file, which is
191
 
normally provided to other hosts using the Autokey protocol Each
192
 
<tt>server</tt> or <tt>peer</tt> association requires the public
193
 
key associated with the particular server or peer to be loaded
194
 
either directly from a local file or indirectly from the server
195
 
using the Autokey protocol. These files can be widely distributed
196
 
and stored using insecure means, since the data are public
197
 
values.</p>
198
 
 
199
 
<p>The optional <tt>ntpkey_certif_<i>host</i></tt> file contains
200
 
the PKI certificate for the host. This provides a binding between
201
 
the host hame and RSA public key. In the current implementation the
202
 
certificate is obtained by a client, if present, but the contents
203
 
are ignored.</p>
204
 
 
205
 
<p>Due to the widespread use of interface-specific naming, the host
206
 
names used in configured and mobilized associations are determined
207
 
by the Unix <tt>gethostname()</tt> library routine. Both the <tt>
208
 
ntp-genkeys</tt> program and the Autokey protocol derive the name
209
 
of the public key file using the name returned by this routine.
210
 
While every server and client is required to load their own public
211
 
and private keys, the public keys for each client or peer
212
 
association can be obtained from the server or peer using the
213
 
Autokey protocol. Note however, that at the current stage of
214
 
development the authenticity of the server or peer and the
215
 
cryptographic binding of the server name, address and public key is
216
 
not yet established by a certificate authority or web of trust.</p>
217
 
 
218
 
<h4>Leapseconds Table</h4>
219
 
 
220
 
<p>The NIST provides a table showing the epoch for all historic
221
 
occasions of leap second insertion since 1972. The leapsecond table
222
 
shows each epoch of insertion along with the offset of
223
 
International Atomic Time (TAI) with respect to Coordinated
224
 
Universtal Time (UTC), as disseminated by NTP. The table can be
225
 
obtained directly from NIST national time servers using <tt>
226
 
ftp</tt> as the ASCII file <tt>pub/leap-seconds</tt>.</p>
227
 
 
228
 
<p>While not strictly a security function, the Autokey scheme
229
 
provides means to securely retrieve the leapsecond table from a
230
 
server or peer. Servers load the leapsecond table directly from the
231
 
file specified in the <tt>crypto</tt> command, while clients can
232
 
load the table indirectly from the servers using the Autokey
233
 
protocol. Once loaded, the table can be provided on request to
234
 
other clients and servers.</p>
235
 
 
236
 
<h4>Key Management</h4>
237
 
 
238
 
<p>All key files are installed by default in <tt>
239
 
/usr/local/etc</tt>, which is normally in a shared filesystem in
240
 
NFS-mounted networks and avoids installing them in each machine
241
 
separately. The default can be overridden by the <tt>keysdir</tt>
242
 
configuration command. However, this is not a good place to install
243
 
the private key file, since each machine needs its own file. A
244
 
suitable place to install it is in <tt>/etc</tt>, which is normally
245
 
not in a shared filesystem.</p>
246
 
 
247
 
<p>The recommended practice is to keep the timestamp extensions
248
 
when installing a file and to install a link from the default name
249
 
(without the timestamp extension) to the actual file. This allows
250
 
new file generations to be activated simply by changing the link.
251
 
However, <tt>ntpd</tt> parses the link name when present to extract
252
 
the extension value and sends it along with the public key and host
253
 
name when requested. This allows clients to verify that the file
254
 
and generation time are always current. However, the actual
255
 
location of each file can be overridden by the <tt>crypto</tt>
256
 
configuration command.</p>
257
 
 
258
 
<p>All cryptographic keys and related parameters should be
259
 
regenerated on a periodic and automatic basis, like once per month.
260
 
The <tt>ntp-genkeys</tt> program uses the same timestamp extension
261
 
for all files generated at one time, so each generation is distinct
262
 
and can be readily recognized in monitoring data. While a
263
 
public/private key pair must be generated by every server and
264
 
client, the public keys and agreement parameters do not need to be
265
 
explicitly copied to all machines in the same security compartment,
266
 
since they can be obtained automatically using the Autokey
267
 
protocol. However, it is necessary that all primary servers have
268
 
the same agreement parameter file. The recommended way to do this
269
 
is for one of the primary servers to generate that file and then
270
 
copy it to the other primary servers in the same compartment using
271
 
the Unix <tt>rdist</tt> command. Future versions of the Autokey
272
 
protocol are to contain provisions for an agreement protocol to do
273
 
this automatically.</p>
274
 
 
275
 
<p>Servers and clients can make a new generation in the following
276
 
way. All machines have loaded the old generation at startup and are
277
 
operating normally. At designated intervals, each machine generates
278
 
a new public/private key pair and makes links from the default file
279
 
names to the new file names. The <tt>ntpd</tt> is then restarted
280
 
and loads the new generation, with result clients no longer can
281
 
authenticate correctly. The Autokey protocol is designed so that
282
 
after a few minutes the clients time out and restart the protocol
283
 
from the beginning, with result the new generation is loaded and
284
 
operation continues as before. A similar procedure can be used for
285
 
the agreement parameter file, but in this case precautions must be
286
 
take to be sure that all machines with this file have the same
287
 
copy.</p>
288
 
 
289
 
<h4>Authentication Commands</h4>
290
 
 
291
 
<dl>
292
 
<dt><tt>autokey [<i>logsec</i>]</tt></dt>
293
 
 
294
 
<dd>Specifies the interval between regenerations of the session key
295
 
list used with the Autokey protocol. Note that the size of the key
296
 
list for each association depends on this interval and the current
297
 
poll interval. The default value is 12 (4096 s or about 1.1 hours).
298
 
For poll intervals above the specified interval, a session key list
299
 
with a single entry will be regenerated for every message
300
 
sent.</dd>
301
 
 
302
 
<dt><tt>controlkey <i>key</i></tt></dt>
303
 
 
304
 
<dd>Specifies the key identifier to use with the <a href=
305
 
"ntpq.htm"><tt>ntpq</tt></a> utility, which uses the standard
306
 
protocol defined in RFC-1305. The <tt><i>key</i></tt> argument is
307
 
the key identifier for a trusted key, where the value can be in the
308
 
range 1 to 65534, inclusive.</dd>
309
 
 
310
 
<dt><tt>crypto [flags <i>flags</i>] [privatekey <i>file</i>]
311
 
[publickey <i>file</i>] [dhparms <i>file</i>] [leap <i>
312
 
file</i>]</tt></dt>
313
 
 
314
 
<dd>This command requires the NTP daemon build process be
315
 
configured with the RSA library. This command activates public-key
316
 
cryptography and loads the required RSA private and public key
317
 
files and the optional Diffie-Hellman agreement parameter file, if
318
 
present. If one or more files are left unspecified, the default
319
 
names are used as described below. Following are the
320
 
subcommands:</dd>
321
 
 
322
 
<dd>
323
 
<dl>
324
 
<dt><tt>privatekey <i>file</i></tt></dt>
325
 
 
326
 
<dd>Specifies the location of the RSA private key file, which
327
 
otherwise defaults to <tt>/usr/local/etc/ntpkey</tt>.</dd>
328
 
 
329
 
<dt><tt>publickey <i>file</i></tt></dt>
330
 
 
331
 
<dd>Specifies the location of the RSA public key file, which
332
 
otherwise defaults to <tt>/usr/local/etc/ntpkey_<i>host</i></tt>.,
333
 
where <i>host</i> is the name of the generating machine.</dd>
334
 
 
335
 
<dt><tt>dhparms <i>file</i></tt></dt>
336
 
 
337
 
<dd>Specifies the location of the Diffie-Hellman parameters file,
338
 
which otherwise defaults to <tt>/usr/local/etc/ntpkey_dh</tt>.</dd>
339
 
 
340
 
<dt><tt>leap <i>file</i></tt></dt>
341
 
 
342
 
<dd>Specifies the location of the leapsecond table file, which
343
 
otherwise defaults to <tt>/usr/local/etc/ntpkey_leap</tt>.</dd>
344
 
</dl>
345
 
</dd>
346
 
 
347
 
<dt><tt>keys <i>keyfile</i></tt></dt>
348
 
 
349
 
<dd>Specifies the location of the DES/MD5 private key file
350
 
containing the keys and key identifiers used by <tt>ntpd</tt>, <tt>
351
 
ntpq</tt> and <tt>ntpdc</tt> when operating in symmetric-key
352
 
mode.</dd>
353
 
 
354
 
<dt><tt>keysdir <i>path</i></tt></dt>
355
 
 
356
 
<dd>This command requires the NTP daemon build process be
357
 
configured with the RSA library. It specifies the default directory
358
 
path for the private key file, agreement parameters file and one or
359
 
more public key files. The default when this command does not
360
 
appear in the configuration file is <tt>/usr/local/etc/</tt>.</dd>
361
 
 
362
 
<dt><tt>requestkey <i>key</i></tt></dt>
363
 
 
364
 
<dd>Specifies the key identifier to use with the <a href=
365
 
"ntpdc.htm"><tt>ntpdc</tt></a> utility program, which uses a
366
 
proprietary protocol specific to this implementation of <tt>
367
 
ntpd</tt>. The <tt><i>key</i></tt> argument is a key identifier for
368
 
the trusted key, where the value can be in the range 1 to 65534,
369
 
inclusive.</dd>
370
 
 
371
 
<dt><tt>revoke [<i>logsec</i>]</tt></dt>
372
 
 
373
 
<dd>Specifies the interval between re-randomization of certain
374
 
cryptographic values used by the Autokey scheme, as a power of 2 in
375
 
seconds. These values need to be updated frequently in order to
376
 
deflect brute-force attacks on the algorithms of the scheme;
377
 
however, updating some values is a relatively expensive operation.
378
 
The default interval is 16 (65,536 s or about 18 hours). For poll
379
 
intervals above the specified interval, the values will be updated
380
 
for every message sent.</dd>
381
 
 
382
 
<dt><tt>trustedkey <i>key</i> [...]</tt></dt>
383
 
 
384
 
<dd>Specifies the key identifiers which are trusted for the
385
 
purposes of authenticating peers with symmetric-key cryptography,
386
 
as well as keys used by the <tt>ntpq</tt> and <tt>ntpdc</tt>
387
 
programs. The authentication procedures require that both the local
388
 
and remote servers share the same key and key identifier for this
389
 
purpose, although different keys can be used with different
390
 
servers. The <tt><i>key</i></tt> arguments are 32-bit unsigned
391
 
integers with values from 1 to 65,534.</dd>
392
 
</dl>
393
 
 
394
 
<h4>Files</h4>
395
 
 
396
 
<tt>ntp.keys</tt> private MD5 keys <br>
397
 
<tt>ntpkey</tt> RSA private key <br>
398
 
<tt>ntpkey_<i>host</i></tt> RSA public key <br>
399
 
<tt>ntp_dh</tt> Diffie-Hellman agreement parameters 
400
 
 
401
 
<h4>Bugs</h4>
402
 
 
403
 
The <tt>ntpkey_<i>host</i></tt> files are really digital
404
 
certificates. These should be obtained via secure directory
405
 
services when they become universally available. 
406
 
 
407
 
<hr>
408
 
<a href="index.htm"><img align="left" src="pic/home.gif" alt=
409
 
"gif"></a> 
410
 
 
411
 
<address><a href="mailto:mills@udel.edu">David L. Mills
412
 
&lt;mills@udel.edu&gt;</a></address>
413
 
</body>
414
 
</html>
415