mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
7055827b8f
This makes it clearer that we always want to do heimdal changes via the lorikeet-heimdal repository. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz> Autobuild-User(master): Joseph Sutton <jsutton@samba.org> Autobuild-Date(master): Wed Jan 19 21:41:59 UTC 2022 on sn-devel-184
396 lines
13 KiB
Plaintext
396 lines
13 KiB
Plaintext
|
||
|
||
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
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|