xref: /freebsd/crypto/heimdal/doc/whatis.texi (revision 1e413cf93298b5b97441a21d9a50fdcd0ee9945e)
1@c $Id: whatis.texi,v 1.5 2001/01/28 22:11:23 assar Exp $
2
3@node What is Kerberos?, Building and Installing, Introduction, Top
4@chapter What is Kerberos?
5
6@quotation
7@flushleft
8        Now this Cerberus had three heads of dogs,
9        the tail of a dragon, and on his back the
10        heads of all sorts of snakes.
11        --- Pseudo-Apollodorus Library 2.5.12
12@end flushleft
13@end quotation
14
15Kerberos is a system for authenticating users and services on a network.
16It is built upon the assumption that the network is ``unsafe''.  For
17example, data sent over the network can be eavesdropped and altered, and
18addresses can also be faked.  Therefore they cannot be used for
19authentication purposes.
20@cindex authentication
21
22Kerberos is a trusted third-party service.  That means that there is a
23third party (the kerberos server) that is trusted by all the entities on
24the network (users and services, usually called @dfn{principals}).  All
25principals share a secret password (or key) with the kerberos server and
26this enables principals to verify that the messages from the kerberos
27server are authentic.  Thus trusting the kerberos server, users and
28services can authenticate each other.
29
30@section Basic mechanism
31
32@ifinfo
33@macro sub{arg}
34<\arg\>
35@end macro
36@end ifinfo
37
38@tex
39@def@xsub#1{$_{#1}$}
40@global@let@sub=@xsub
41@end tex
42
43@ifhtml
44@macro sub{arg}
45<\arg\>
46@end macro
47@end ifhtml
48
49@quotation
50@strong{Note:} This discussion is about Kerberos version 4, but version
515 works similarly.
52@end quotation
53
54In Kerberos, principals use @dfn{tickets} to prove that they are who
55they claim to be. In the following example, @var{A} is the initiator of
56the authentication exchange, usually a user, and @var{B} is the service
57that @var{A} wishes to use.
58
59To obtain a ticket for a specific service, @var{A} sends a ticket
60request to the kerberos server. The request contains @var{A}'s and
61@var{B}'s names (along with some other fields). The kerberos server
62checks that both @var{A} and @var{B} are valid principals.
63
64Having verified the validity of the principals, it creates a packet
65containing @var{A}'s and @var{B}'s names, @var{A}'s network address
66(@var{A@sub{addr}}), the current time (@var{t@sub{issue}}), the lifetime
67of the ticket (@var{life}), and a secret @dfn{session key}
68@cindex session key
69(@var{K@sub{AB}}). This packet is encrypted with @var{B}'s secret key
70(@var{K@sub{B}}).  The actual ticket (@var{T@sub{AB}}) looks like this:
71(@{@var{A}, @var{B}, @var{A@sub{addr}}, @var{t@sub{issue}}, @var{life},
72@var{K@sub{AB}}@}@var{K@sub{B}}).
73
74The reply to @var{A} consists of the ticket (@var{T@sub{AB}}), @var{B}'s
75name, the current time, the lifetime of the ticket, and the session key, all
76encrypted in @var{A}'s secret key (@{@var{B}, @var{t@sub{issue}},
77@var{life}, @var{K@sub{AB}}, @var{T@sub{AB}}@}@var{K@sub{A}}). @var{A}
78decrypts the reply and retains it for later use.
79
80@sp 1
81
82Before sending a message to @var{B}, @var{A} creates an authenticator
83consisting of @var{A}'s name, @var{A}'s address, the current time, and a
84``checksum'' chosen by @var{A}, all encrypted with the secret session
85key (@{@var{A}, @var{A@sub{addr}}, @var{t@sub{current}},
86@var{checksum}@}@var{K@sub{AB}}). This is sent together with the ticket
87received from the kerberos server to @var{B}.  Upon reception, @var{B}
88decrypts the ticket using @var{B}'s secret key.  Since the ticket
89contains the session key that the authenticator was encrypted with,
90@var{B} can now also decrypt the authenticator. To verify that @var{A}
91really is @var{A}, @var{B} now has to compare the contents of the ticket
92with that of the authenticator. If everything matches, @var{B} now
93considers @var{A} as properly authenticated.
94
95@c (here we should have some more explanations)
96
97@section Different attacks
98
99@subheading Impersonating A
100
101An impostor, @var{C} could steal the authenticator and the ticket as it
102is transmitted across the network, and use them to impersonate
103@var{A}. The address in the ticket and the authenticator was added to
104make it more difficult to perform this attack.  To succeed @var{C} will
105have to either use the same machine as @var{A} or fake the source
106addresses of the packets. By including the time stamp in the
107authenticator, @var{C} does not have much time in which to mount the
108attack.
109
110@subheading Impersonating B
111
112@var{C} can hijack @var{B}'s network address, and when @var{A} sends
113her credentials, @var{C} just pretend to verify them. @var{C} can't
114be sure that she is talking to @var{A}.
115
116@section Defense strategies
117
118It would be possible to add a @dfn{replay cache}
119@cindex replay cache
120to the server side.  The idea is to save the authenticators sent during
121the last few minutes, so that @var{B} can detect when someone is trying
122to retransmit an already used message. This is somewhat impractical
123(mostly regarding efficiency), and is not part of Kerberos 4; MIT
124Kerberos 5 contains it.
125
126To authenticate @var{B}, @var{A} might request that @var{B} sends
127something back that proves that @var{B} has access to the session
128key. An example of this is the checksum that @var{A} sent as part of the
129authenticator. One typical procedure is to add one to the checksum,
130encrypt it with the session key and send it back to @var{A}.  This is
131called @dfn{mutual authentication}.
132
133The session key can also be used to add cryptographic checksums to the
134messages sent between @var{A} and @var{B} (known as @dfn{message
135integrity}).  Encryption can also be added (@dfn{message
136confidentiality}). This is probably the best approach in all cases.
137@cindex integrity
138@cindex confidentiality
139
140@section Further reading
141
142The original paper on Kerberos from 1988 is @cite{Kerberos: An
143Authentication Service for Open Network Systems}, by Jennifer Steiner,
144Clifford Neuman and Jeffrey I. Schiller.
145
146A less technical description can be found in @cite{Designing an
147Authentication System: a Dialogue in Four Scenes} by Bill Bryant, also
148from 1988.
149
150These documents can be found on our web-page at
151@url{http://www.pdc.kth.se/kth-krb/}.
152