x
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13007 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -1,5 +1,395 @@
|
||||
This Internet-Draft has expired and is no longer available.
|
||||
|
||||
Unrevised documents placed in the Internet-Drafts directories have a
|
||||
maximum life of six months. After that time, they must be updated, or
|
||||
they will be deleted. This document was deleted on July 17, 2000.
|
||||
|
||||
Kerberos Working Group M. Swift
|
||||
Internet Draft University of WA
|
||||
Document: draft-swift-win2k-krb-user2user-01.txt J. Brezak
|
||||
Category: Informational Microsoft
|
||||
P. Moore
|
||||
Sandia National Labs
|
||||
March 2001
|
||||
|
||||
|
||||
User to User Kerberos Authentication using GSS-API
|
||||
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This document is an Internet-Draft and is in full conformance with
|
||||
all provisions of Section 10 of RFC2026 [1].
|
||||
|
||||
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."
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt
|
||||
The list of Internet-Draft Shadow Directories can be accessed at
|
||||
http://www.ietf.org/shadow.html.
|
||||
|
||||
1. Abstract
|
||||
|
||||
This draft documents a simple extension to the Kerberos GSS-API
|
||||
mechanism to support user to user authentication both in the case
|
||||
where the client application explicitly requests user to user
|
||||
authentication and when it does not know whether the server supports
|
||||
user to user authentication.
|
||||
|
||||
2. Conventions used in this document
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
|
||||
this document are to be interpreted as described in RFC-2119 [2].
|
||||
|
||||
|
||||
3. Introduction
|
||||
|
||||
The Kerberos user to user authentication mechanism allows for a
|
||||
client application to connect to a service that is not in possession
|
||||
of a long term secret key. Instead, the session ticket from the
|
||||
KERB-AP-REQ is encrypted using the session key from the service's
|
||||
ticket granting ticket. According to RFC 1510 [3]:
|
||||
|
||||
|
||||
|
||||
Swift Category - Informational 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
User to User Kerberos Authentication October 1999
|
||||
|
||||
|
||||
If the ENC-TKT-IN-SKEY option has been specified and an
|
||||
additional ticket has been included in the request, the KDC
|
||||
will decrypt the additional ticket using the key for the server
|
||||
to which the additional ticket was issued and verify that it is
|
||||
a ticket-granting ticket. If the request succeeds, the session
|
||||
key from the additional ticket will be used to encrypt the new
|
||||
ticket that is issued instead of using the key of the server
|
||||
for which the new ticket will be used (This allows easy
|
||||
implementation of user-to-user authentication, which uses
|
||||
ticket-granting ticket session keys in lieu of secret server
|
||||
keys in situations where such secret keys could be easily
|
||||
compromised).
|
||||
|
||||
RFC2078 [5], in section 5.2, discusses a <20>Double-TGT K-5<> mechanism
|
||||
and scenario, but not in the detail required in order to implement
|
||||
the mechanism. The RFC for the Kerberos V5 GSS-API mechanism at the
|
||||
time this draft was prepared, RFC 1964 [4] does not support user-to-
|
||||
user authentication.
|
||||
|
||||
This draft provides details as to mechanism type, token identifiers,
|
||||
messages and message types sufficient to document an implementation
|
||||
of user-to-user authentication in Kerberos GSS-API. It follows the
|
||||
scenario described in RFC2078.
|
||||
|
||||
The approach documented in this draft has been used to support user-
|
||||
to-user authentication in the Microsoft Windows 2000 SSPI with the
|
||||
Kerberos V5 protocol, and in a patched Kerberos V5 implementation
|
||||
being used to support a computing grid at Sandia, Lawrence
|
||||
Livermore, and Los Alamos National Laboratories.
|
||||
|
||||
4. User to User as a New Mechanism
|
||||
|
||||
A new mechanism OID may be used to establish a user-to-user session:
|
||||
|
||||
{iso(1) member-body(2) United States(840) mit(113554)
|
||||
infosys(1) gssapi(2) krb5(2) usertouser(3)}
|
||||
|
||||
In the case that the client application knows that the server
|
||||
requires user-to-user authentication, then the initial call to
|
||||
GSS_Init_Sec_Context will request this mechanism. This new mechanism
|
||||
is used with a token exchange that extends the conventional Kerberos
|
||||
GSS-API protocol by adding an additional round trip to request the
|
||||
TGT from the service. As with all Kerberos GSS-API messages, the
|
||||
following tokens are encapsulated in the GSS-API framing. The first
|
||||
token of the exchange will have an innerContextToken with a 2-octet
|
||||
TOK_ID field containing 04 00 (KERB-TGT-REQUEST) followed by a
|
||||
Kerberos V5 message as follows:
|
||||
|
||||
KERB-TGT-REQUEST ::= SEQUENCE {
|
||||
pvno[0] INTEGER,
|
||||
msg-type[1] INTEGER,
|
||||
server-name[2] PrincipalName OPTIONAL,
|
||||
realm[3] Realm OPTIONAL
|
||||
|
||||
Swift Category - Informational 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
User to User Kerberos Authentication October 1999
|
||||
|
||||
|
||||
}
|
||||
|
||||
The TGT request consists of four fields:
|
||||
|
||||
pvno and msg-type are as defined in RFC1510 section 5.4.1. msg-
|
||||
type is KRB_TGT_REQ (16).
|
||||
|
||||
server-name : this field optionally contains the name of the
|
||||
server. If the client application doesn't know the
|
||||
server name this can be left blank and the server
|
||||
application will pick the appropriate server
|
||||
credentials which may be the default credential.
|
||||
|
||||
realm : this field optionally contains the realm of the server.
|
||||
If the client application doesn't know the server realm
|
||||
this field can be left blank and the server application
|
||||
will pick the appropriate server credentials which may
|
||||
be the server's default realm.
|
||||
|
||||
The server name and realm are included to allow a server application
|
||||
to act for multiple principles in different realms and to choose
|
||||
which credentials to use.
|
||||
|
||||
The response to the KERB-TGT-REQUEST message will be a
|
||||
KERB_TGT_REPLY token which will have an innerContextToken with a 2-
|
||||
octet TOK_ID field containing 04 01 (KERB-TGT-REPLY) followed by a
|
||||
Kerberos V5 message as follows:
|
||||
|
||||
KERB-TGT-REPLY ::= SEQUENCE {
|
||||
pvno[0] INTEGER,
|
||||
msg-type[1] INTEGER,
|
||||
ticket[2] Ticket
|
||||
}
|
||||
|
||||
The TGT reply contains the following fields:
|
||||
|
||||
pvno and msg-type are as defined in RFC1510 section 5.4.1. msg-
|
||||
type is KRB_TGT_REP (17)
|
||||
|
||||
ticket : contains the TGT for the service specified by the
|
||||
server name and realm passed by the client or the
|
||||
default service.
|
||||
|
||||
If the service does not possess a ticket granting ticket, it should
|
||||
return the error KRB_AP_ERR_NO_TGT (0x43).
|
||||
|
||||
If the server name and realm in the KERB-TGT-REQUEST message do not
|
||||
match the name of the service, then the service should return the
|
||||
error KRB_AP_ERR_NOT_US.
|
||||
|
||||
Following the exchange of the TGT request messages, the initiator
|
||||
requests a ticket to the service from the KDC using a KERB-TGS-REQ
|
||||
with the KDCoption ENC-TKT-IN_SKEY and the second ticket in the
|
||||
|
||||
Swift Category - Informational 3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
User to User Kerberos Authentication October 1999
|
||||
|
||||
|
||||
additional-tickets of the KDC-REQ-BODY. Upon receipt of the TGS-REP
|
||||
the rest of the authentication identical to the Kerberos GSS-API
|
||||
mechanism defined in RFC 1964 [4].
|
||||
|
||||
5. User-to-User when applied via KDC policy
|
||||
|
||||
Implementations MAY support the ability apply a policy on a user
|
||||
account such that the KDC will not allow conventional service ticket
|
||||
requests, and when presented with a KERB_TGS_REQ that does not
|
||||
contain a second ticket with an ENC_TKT_IN_SKEY KDCoption will
|
||||
respond with a KRB-ERROR with the msg-type
|
||||
KDC_ERR_MUST_USE_USER2USER (or KRB5PLACEHOLD_27).
|
||||
|
||||
In this case, the client need not explicitly request user-to-user in
|
||||
order to get a user-to-user connection. Implementations may use this
|
||||
error code to set a flag and return a GSS_C_CONTINUE_NEEDED so that
|
||||
the next round uses the mechanism described in section 4.
|
||||
|
||||
6. User to User when applied by server policy
|
||||
|
||||
In the case that the client application doesn't know that a service
|
||||
requires user-to-user authentication, and requests and receives a
|
||||
conventional KRB_AP_REP, the client will send the KRB_AP_REP
|
||||
request, and the server will respond with a KRB_ERROR token as
|
||||
described in RFC1964, with a msg-type of
|
||||
KRB_AP_ERR_USER_TO_USER_REQUIRED (0x45). The server may optionally
|
||||
pass the TGT in the data field of this error message. In response to
|
||||
this error, the initiator sets flags and returns a
|
||||
GSS_C_CONTINUE_NEEDED so that the next round uses the mechanism
|
||||
described in section 4.
|
||||
|
||||
7. Security Considerations
|
||||
|
||||
These extensions simply enable an existing Kerberos 5 authentication
|
||||
protocol so that it may be used from GSSAPI.
|
||||
|
||||
There is some risk in a server handing out its ticket-granting-
|
||||
ticket to any client that requests it, in that it gives an attacker
|
||||
a piece of encrypted material to decrypt. However, the same material
|
||||
may be obtained from listening to any legitimate client connection.
|
||||
|
||||
It should be noted here that the exchange described in section 6
|
||||
requires that the KDC provide tickets for user accounts, which will
|
||||
contain known plaintext encrypted in the users<72> private key. The
|
||||
risk associated with this is entirely mitigated where a KDC supports
|
||||
the KDC_MUST_USE_USER2USER feature, which allows a restriction on
|
||||
user accounts to ensure that all tickets for that account are
|
||||
encrypted in the TGT session key, and not the long term key of the
|
||||
user.
|
||||
|
||||
8. References
|
||||
|
||||
|
||||
|
||||
Swift Category - Informational 4
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
User to User Kerberos Authentication October 1999
|
||||
|
||||
|
||||
|
||||
1 Bradner, S., "The Internet Standards Process -- Revision 3", BCP
|
||||
9, RFC 2026, October 1996.
|
||||
|
||||
2 Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||||
Levels", BCP 14, RFC 2119, March 1997
|
||||
|
||||
3 J. Kohl, C. Neuman, "The Kerberos Network Authentication
|
||||
Service(V5)", RFC 1510.
|
||||
|
||||
4 J. Linn, "The Kerberos Version 5 GSS-API Mechanism", RFC 1964
|
||||
|
||||
5 J. Linn, <20>Generic Security Service Application Program Interface,
|
||||
Version 2<>, RFC 2078
|
||||
|
||||
9. Author's Addresses
|
||||
|
||||
Michael Swift
|
||||
University of Washington
|
||||
Seattle, Washington
|
||||
Email: mikesw@cs.washington.edu
|
||||
|
||||
John Brezak
|
||||
Microsoft
|
||||
One Microsoft Way
|
||||
Redmond, Washington
|
||||
Email: jbrezak@microsoft.com
|
||||
|
||||
Patrick Moore
|
||||
Sandia National Laboratories
|
||||
PO Box 5800 Mail Stop
|
||||
Albuquerque, New Mexico
|
||||
Email: pcmoore@sandia.gov
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift Category - Informational 5
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
User to User Kerberos Authentication October 1999
|
||||
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (1999). All Rights Reserved.
|
||||
|
||||
This document and translations of it may be copied and furnished to
|
||||
others, and derivative works that comment on or otherwise explain it
|
||||
or assist in its implementation may be prepared, copied, published
|
||||
and distributed, in whole or in part, without restriction of any
|
||||
kind, provided that the above copyright notice and this paragraph
|
||||
are included on all such copies and derivative works. However, this
|
||||
document itself may not be modified in any way, such as by removing
|
||||
the copyright notice or references to the Internet Society or other
|
||||
Internet organizations, except as needed for the purpose of
|
||||
developing Internet standards in which case the procedures for
|
||||
copyrights defined in the Internet Standards process must be
|
||||
followed, or as required to translate it into languages other than
|
||||
English.
|
||||
|
||||
The limited permissions granted above are perpetual and will not be
|
||||
revoked by the Internet Society or its successors or assigns.
|
||||
|
||||
This document and the information contained herein is provided on an
|
||||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift Category - Informational 6
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user