3
@node What is Kerberos?, Building and Installing, Introduction, Top
4
@chapter What is Kerberos?
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
15
Kerberos is a system for authenticating users and services on a network.
16
It is built upon the assumption that the network is ``unsafe''. For
17
example, data sent over the network can be eavesdropped and altered, and
18
addresses can also be faked. Therefore they cannot be used for
19
authentication purposes.
20
@cindex authentication
22
Kerberos is a trusted third-party service. That means that there is a
23
third party (the kerberos server) that is trusted by all the entities on
24
the network (users and services, usually called @dfn{principals}). All
25
principals share a secret password (or key) with the kerberos server and
26
this enables principals to verify that the messages from the kerberos
27
server are authentic. Thus trusting the kerberos server, users and
28
services can authenticate each other.
30
@section Basic mechanism
54
@c <subscript>\arg\</subscript>
60
@strong{Note} This discussion is about Kerberos version 4, but version
64
In Kerberos, principals use @dfn{tickets} to prove that they are who
65
they claim to be. In the following example, @var{A} is the initiator of
66
the authentication exchange, usually a user, and @var{B} is the service
67
that @var{A} wishes to use.
69
To obtain a ticket for a specific service, @var{A} sends a ticket
70
request to the kerberos server. The request contains @var{A}'s and
71
@var{B}'s names (along with some other fields). The kerberos server
72
checks that both @var{A} and @var{B} are valid principals.
74
Having verified the validity of the principals, it creates a packet
75
containing @var{A}'s and @var{B}'s names, @var{A}'s network address
76
(@var{A@sub{addr}}), the current time (@var{t@sub{issue}}), the lifetime
77
of the ticket (@var{life}), and a secret @dfn{session key}
79
(@var{K@sub{AB}}). This packet is encrypted with @var{B}'s secret key
80
(@var{K@sub{B}}). The actual ticket (@var{T@sub{AB}}) looks like this:
81
(@{@var{A}, @var{B}, @var{A@sub{addr}}, @var{t@sub{issue}}, @var{life},
82
@var{K@sub{AB}}@}@var{K@sub{B}}).
84
The reply to @var{A} consists of the ticket (@var{T@sub{AB}}), @var{B}'s
85
name, the current time, the lifetime of the ticket, and the session key, all
86
encrypted in @var{A}'s secret key (@{@var{B}, @var{t@sub{issue}},
87
@var{life}, @var{K@sub{AB}}, @var{T@sub{AB}}@}@var{K@sub{A}}). @var{A}
88
decrypts the reply and retains it for later use.
92
Before sending a message to @var{B}, @var{A} creates an authenticator
93
consisting of @var{A}'s name, @var{A}'s address, the current time, and a
94
``checksum'' chosen by @var{A}, all encrypted with the secret session
95
key (@{@var{A}, @var{A@sub{addr}}, @var{t@sub{current}},
96
@var{checksum}@}@var{K@sub{AB}}). This is sent together with the ticket
97
received from the kerberos server to @var{B}. Upon reception, @var{B}
98
decrypts the ticket using @var{B}'s secret key. Since the ticket
99
contains the session key that the authenticator was encrypted with,
100
@var{B} can now also decrypt the authenticator. To verify that @var{A}
101
really is @var{A}, @var{B} now has to compare the contents of the ticket
102
with that of the authenticator. If everything matches, @var{B} now
103
considers @var{A} as properly authenticated.
105
@c (here we should have some more explanations)
107
@section Different attacks
109
@subheading Impersonating A
111
An impostor, @var{C} could steal the authenticator and the ticket as it
112
is transmitted across the network, and use them to impersonate
113
@var{A}. The address in the ticket and the authenticator was added to
114
make it more difficult to perform this attack. To succeed @var{C} will
115
have to either use the same machine as @var{A} or fake the source
116
addresses of the packets. By including the time stamp in the
117
authenticator, @var{C} does not have much time in which to mount the
120
@subheading Impersonating B
122
@var{C} can hijack @var{B}'s network address, and when @var{A} sends
123
her credentials, @var{C} just pretend to verify them. @var{C} can't
124
be sure that she is talking to @var{A}.
126
@section Defence strategies
128
It would be possible to add a @dfn{replay cache}
130
to the server side. The idea is to save the authenticators sent during
131
the last few minutes, so that @var{B} can detect when someone is trying
132
to retransmit an already used message. This is somewhat impractical
133
(mostly regarding efficiency), and is not part of Kerberos 4; MIT
134
Kerberos 5 contains it.
136
To authenticate @var{B}, @var{A} might request that @var{B} sends
137
something back that proves that @var{B} has access to the session
138
key. An example of this is the checksum that @var{A} sent as part of the
139
authenticator. One typical procedure is to add one to the checksum,
140
encrypt it with the session key and send it back to @var{A}. This is
141
called @dfn{mutual authentication}.
143
The session key can also be used to add cryptographic checksums to the
144
messages sent between @var{A} and @var{B} (known as @dfn{message
145
integrity}). Encryption can also be added (@dfn{message
146
confidentiality}). This is probably the best approach in all cases.
148
@cindex confidentiality
150
@section Further reading
152
The original paper on Kerberos from 1988 is @cite{Kerberos: An
153
Authentication Service for Open Network Systems}, by Jennifer Steiner,
154
Clifford Neuman and Jeffrey I. Schiller.
156
A less technical description can be found in @cite{Designing an
157
Authentication System: a Dialogue in Four Scenes} by Bill Bryant, also
160
These documents can be found on our web-page at
161
@url{http://www.pdc.kth.se/kth-krb/}.