312 lines
11 KiB
Plaintext
312 lines
11 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Network Working Group M. Horowitz
|
|||
|
<draft-ietf-cat-kerb-chg-password-02.txt> Stonecast, Inc.
|
|||
|
Internet-Draft August, 1998
|
|||
|
|
|||
|
Kerberos Change Password Protocol
|
|||
|
|
|||
|
Status of this Memo
|
|||
|
|
|||
|
This document is an Internet-Draft. Internet-Drafts are working
|
|||
|
documents of the Internet Engineering Task Force (IETF), its areas,
|
|||
|
and its working groups. Note that other groups may also distribute
|
|||
|
working documents as Internet-Drafts.
|
|||
|
|
|||
|
Internet-Drafts are draft documents valid for a maximum of six months
|
|||
|
and may be updated, replaced, or obsoleted by other documents at any
|
|||
|
time. It is inappropriate to use Internet-Drafts as reference
|
|||
|
material or to cite them other than as ``work in progress.''
|
|||
|
|
|||
|
To learn the current status of any Internet-Draft, please check the
|
|||
|
``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
|
|||
|
Directories on ftp.ietf.org (US East Coast), nic.nordu.net
|
|||
|
(Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
|
|||
|
Rim).
|
|||
|
|
|||
|
Distribution of this memo is unlimited. Please send comments to the
|
|||
|
<cat-ietf@mit.edu> mailing list.
|
|||
|
|
|||
|
Abstract
|
|||
|
|
|||
|
The Kerberos V5 protocol [RFC1510] does not describe any mechanism
|
|||
|
for users to change their own passwords. In order to promote
|
|||
|
interoperability between workstations, personal computers, terminal
|
|||
|
servers, routers, and KDC's from multiple vendors, a common password
|
|||
|
changing protocol is required.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Overview
|
|||
|
|
|||
|
When a user wishes to change his own password, or is required to by
|
|||
|
local policy, a simple request of a password changing service is
|
|||
|
necessary. This service must be implemented on at least one host for
|
|||
|
each Kerberos realm, probably on one of the kdc's for that realm.
|
|||
|
The service must accept requests on UDP port 464 (kpasswd), and may
|
|||
|
accept requests on TCP port 464 as well.
|
|||
|
|
|||
|
The protocol itself consists of a single request message followed by
|
|||
|
a single reply message. For UDP transport, each message must be
|
|||
|
fully contained in a single UDP packet.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Horowitz [Page 1]
|
|||
|
|
|||
|
Internet Draft Kerberos Change Password Protocol August, 1998
|
|||
|
|
|||
|
|
|||
|
Request Message
|
|||
|
|
|||
|
0 1 2 3
|
|||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
| message length | protocol version number |
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
| AP_REQ length | AP-REQ data /
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
/ KRB-PRIV message /
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
|
|||
|
message length (16 bits)
|
|||
|
Contains the length of the message, including this field, in bytes
|
|||
|
(big-endian integer)
|
|||
|
protocol version number (16 bits)
|
|||
|
Contains the hex constant 0x0001 (big-endian integer)
|
|||
|
AP-REQ length (16 bits)
|
|||
|
length (big-endian integer) of AP-REQ data, in bytes.
|
|||
|
AP-REQ data, as described in RFC1510 (variable length)
|
|||
|
This AP-REQ must be for the service principal
|
|||
|
kadmin/changepw@REALM, where REALM is the REALM of the user who
|
|||
|
wishes to change his password. The Ticket in the AP-REQ must be
|
|||
|
derived from an AS request (thus having the INITIAL flag set), and
|
|||
|
must include a subkey in the Authenticator.
|
|||
|
KRB-PRIV message, as described in RFC1510 (variable length)
|
|||
|
This KRB-PRIV message must be generated using the subkey in the
|
|||
|
Authenticator in the AP-REQ data. The user-data component of the
|
|||
|
message must consist of the user's new password.
|
|||
|
|
|||
|
The server must verify the AP-REQ message, decrypt the new password,
|
|||
|
perform any local policy checks (such as password quality, history,
|
|||
|
authorization, etc.) required, then set the password to the new value
|
|||
|
specified.
|
|||
|
|
|||
|
The principal whose password is to be changed is the principal which
|
|||
|
authenticated to the password changing service. This protocol does
|
|||
|
not address administrators who want to change passwords of principal
|
|||
|
besides their own.
|
|||
|
|
|||
|
|
|||
|
Reply Message
|
|||
|
|
|||
|
0 1 2 3
|
|||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
| message length | protocol version number |
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
| AP_REP length | AP-REP data /
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
/ KRB-PRIV or KRB-ERROR message /
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
|
|||
|
message length (16 bits)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Horowitz [Page 2]
|
|||
|
|
|||
|
Internet Draft Kerberos Change Password Protocol August, 1998
|
|||
|
|
|||
|
|
|||
|
Contains the length of the message, including this field, in bytes
|
|||
|
(big-endian integer),
|
|||
|
protocol version number (16 bits)
|
|||
|
Contains the hex constant 0x0001 (big-endian integer)
|
|||
|
AP-REP length (16 bits)
|
|||
|
length of AP-REP data, in bytes. If the the length is zero, then
|
|||
|
the last field will contain a KRB-ERROR message instead of a KRB-
|
|||
|
PRIV message.
|
|||
|
AP-REP data, as described in RFC1510 (variable length)
|
|||
|
The AP-REP corresponding to the AP-REQ in the request packet.
|
|||
|
KRB-PRIV or KRB-ERROR message, as described in RFC1510 (variable
|
|||
|
length)
|
|||
|
If the AP-REP length is zero, then this field contains a KRB-ERROR
|
|||
|
message. Otherwise, it contains a KRB-PRIV message. This KRB-
|
|||
|
PRIV message must be generated using the subkey in the
|
|||
|
Authenticator in the AP-REQ data.
|
|||
|
|
|||
|
The user-data component of the KRB-PRIV message, or e-data
|
|||
|
component of the KRB-ERROR message, must consist of the following
|
|||
|
data:
|
|||
|
|
|||
|
0 1 2 3
|
|||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
| result code | result string /
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
|
|||
|
result code (16 bits)
|
|||
|
The result code must have one of the following values (big-
|
|||
|
endian integer):
|
|||
|
0x0000 if the request succeeds. (This value is not permitted
|
|||
|
in a KRB-ERROR message.)
|
|||
|
0x0001 if the request fails due to being malformed
|
|||
|
0x0002 if the request fails due to a "hard" error processing
|
|||
|
the request (for example, there is a resource or other
|
|||
|
problem causing the request to fail)
|
|||
|
0x0003 if the request fails due to an error in authentication
|
|||
|
processing
|
|||
|
0x0004 if the request fails due to a "soft" error processing
|
|||
|
the request (for example, some policy or other similar
|
|||
|
consideration is causing the request to be rejected).
|
|||
|
0xFFFF if the request fails for some other reason.
|
|||
|
Although only a few non-zero result codes are specified here,
|
|||
|
the client should accept any non-zero result code as indicating
|
|||
|
failure.
|
|||
|
result string (variable length)
|
|||
|
This field should contain information which the server thinks
|
|||
|
might be useful to the user, such as feedback about policy
|
|||
|
failures. The string must be encoded in UTF-8. It may be
|
|||
|
omitted if the server does not wish to include it. If it is
|
|||
|
present, the client should display the string to the user.
|
|||
|
This field is analogous to the string which follows the numeric
|
|||
|
code in SMTP, FTP, and similar protocols.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Horowitz [Page 3]
|
|||
|
|
|||
|
Internet Draft Kerberos Change Password Protocol August, 1998
|
|||
|
|
|||
|
|
|||
|
Dropped and Modified Messages
|
|||
|
|
|||
|
An attacker (or simply a lossy network) could cause either the
|
|||
|
request or reply to be dropped, or modified by substituting a KRB-
|
|||
|
ERROR message in the reply.
|
|||
|
|
|||
|
If a request is dropped, no modification of the password/key database
|
|||
|
will take place. If a reply is dropped, the server will (assuming a
|
|||
|
valid request) make the password change. However, the client cannot
|
|||
|
distinguish between these two cases.
|
|||
|
|
|||
|
In this situation, the client should construct a new authenticator,
|
|||
|
re-encrypt the request, and retransmit. If the original request was
|
|||
|
lost, the server will treat this as a valid request, and the password
|
|||
|
will be changed normally. If the reply was lost, then the server
|
|||
|
should take care to notice that the request was a duplicate of the
|
|||
|
prior request, because the "new" password is the current password,
|
|||
|
and the password change time is within some implementation-defined
|
|||
|
replay time window. The server should then return a success reply
|
|||
|
(an AP-REP message with result code == 0x0000) without actually
|
|||
|
changing the password or any other information (such as modification
|
|||
|
timestamps).
|
|||
|
|
|||
|
If a success reply was replaced with an error reply, then the
|
|||
|
application performing the request would return an error to the user.
|
|||
|
In this state, the user's password has been changed, but the user
|
|||
|
believes that it has not. If the user attempts to change the
|
|||
|
password again, this will probably fail, because the user cannot
|
|||
|
successfully provide the old password to get an INITIAL ticket to
|
|||
|
make the request. This situation requires administrative
|
|||
|
intervention as if a password was lost. This situation is,
|
|||
|
unfortunately, impossible to prevent.
|
|||
|
|
|||
|
|
|||
|
Security Considerations
|
|||
|
|
|||
|
This document deals with changing passwords for Kerberos. Because
|
|||
|
Kerberos is used for authentication and key distribution, it is
|
|||
|
important that this protocol use the highest level of security
|
|||
|
services available to a particular installation. Mutual
|
|||
|
authentication is performed, so that the server knows the request is
|
|||
|
valid, and the client knows that the request has been received and
|
|||
|
processed by the server.
|
|||
|
|
|||
|
There are also security issues relating to dropped or modified
|
|||
|
messages which are addressed explicitly.
|
|||
|
|
|||
|
|
|||
|
References
|
|||
|
|
|||
|
[RFC1510] Kohl, J. and Neuman, C., "The Kerberos Network
|
|||
|
Authentication Service (V5)", RFC 1510, September 1993.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Horowitz [Page 4]
|
|||
|
|
|||
|
Internet Draft Kerberos Change Password Protocol August, 1998
|
|||
|
|
|||
|
|
|||
|
Author's Address
|
|||
|
|
|||
|
Marc Horowitz
|
|||
|
Stonecast, Inc.
|
|||
|
108 Stow Road
|
|||
|
Harvard, MA 01451
|
|||
|
|
|||
|
Phone: +1 978 456 9103
|
|||
|
Email: marc@stonecast.net
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Horowitz [Page 5]
|
|||
|
|