x
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21422 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
617
doc/standardisation/draft-ietf-krb-wg-anon-01.txt
Normal file
617
doc/standardisation/draft-ietf-krb-wg-anon-01.txt
Normal file
@@ -0,0 +1,617 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP L. Zhu
|
||||||
|
Internet-Draft P. Leach
|
||||||
|
Updates: 4120 (if approved) K. Jaganathan
|
||||||
|
Expires: January 17, 2007 Microsoft Corporation
|
||||||
|
July 16, 2006
|
||||||
|
|
||||||
|
|
||||||
|
Anonymity Support for Kerberos
|
||||||
|
draft-ietf-krb-wg-anon-01
|
||||||
|
|
||||||
|
Status of this Memo
|
||||||
|
|
||||||
|
By submitting this Internet-Draft, each author represents that any
|
||||||
|
applicable patent or other IPR claims of which he or she is aware
|
||||||
|
have been or will be disclosed, and any of which he or she becomes
|
||||||
|
aware will be disclosed, in accordance with Section 6 of BCP 79.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
This Internet-Draft will expire on January 17, 2007.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2006).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document defines the use of anonymous Kerberos tickets for the
|
||||||
|
purpose of authenticating the servers and enabling secure
|
||||||
|
communication between a client and a server, without identifying the
|
||||||
|
client to the server.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
2. Conventions Used in This Document . . . . . . . . . . . . . . 3
|
||||||
|
3. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
4. Protocol Description . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
5. GSS-API Implementation Notes . . . . . . . . . . . . . . . . . 7
|
||||||
|
6. Security Considerations . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
9. Normative References . . . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . . . . . 11
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
|
||||||
|
In certain situations or environments, the Kerberos [RFC4120] client
|
||||||
|
may wish to authenticate a server and/or protect communications
|
||||||
|
without revealing its own identity. For example, consider an
|
||||||
|
application which provides read access to a research database, and
|
||||||
|
which permits queries by arbitrary requestors. A client of such a
|
||||||
|
service might wish to authenticate the service, to establish trust in
|
||||||
|
the information received from it, but might not wish to disclose its
|
||||||
|
identity to the service for privacy reasons.
|
||||||
|
|
||||||
|
To accomplish this, a Kerberos mechanism is specified in this
|
||||||
|
document by which a client requests an anonymous ticket and use that
|
||||||
|
to authenticate the server and secure subsequent client-server
|
||||||
|
communications. This provides Kerberos with functional equivalence
|
||||||
|
to TLS [RFC2246] in environments where Kerberos is a more attractive
|
||||||
|
authentication mechanism.
|
||||||
|
|
||||||
|
Using this mechanism, the client has to reveal its identity in its
|
||||||
|
initial request to its own Key Distribution Center (KDC) [RFC4120],
|
||||||
|
and then it can remain anonymous thereafter to KDCs on the cross-
|
||||||
|
realm authentication path, if any, and to the server with which it
|
||||||
|
communicates.
|
||||||
|
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
3. Definitions
|
||||||
|
|
||||||
|
The anonymous Kerberos realm name is a reserved realm name as defined
|
||||||
|
in [KRBNAM] and its value is the literal "RESERVED:ANONYMOUS".
|
||||||
|
|
||||||
|
The anonymous Kerberos principal name is a reserved Kerberos
|
||||||
|
principal name as defined in [KRBNAM], its name-type [RFC4120] is
|
||||||
|
KRB_NT_RESRVED [KRBNAM], and its name-string [RFC4120] is a sequence
|
||||||
|
of two KerberosString components: "RESERVED", "ANONYMOUS".
|
||||||
|
|
||||||
|
In this specification, only the client name or the client realm can
|
||||||
|
be anonymous; the server name or the server realm can not be
|
||||||
|
anonymous.
|
||||||
|
|
||||||
|
The transited field [RFC4120] of a ticket is an anonymous
|
||||||
|
authentication path if the tr-type field of the TransitedEncoding
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
type [RFC4120] is NO-TRANSITED-INFO and the contents field is an
|
||||||
|
empty OCTET STRING.
|
||||||
|
|
||||||
|
NO-TRANSITED-INFO TBA
|
||||||
|
|
||||||
|
This transited encoding type indicates that there is no information
|
||||||
|
available about the authentication path.
|
||||||
|
|
||||||
|
The anonymous ticket flag is defined as bit TBA (with the first bit
|
||||||
|
being bit 0) in the TicketFlags:
|
||||||
|
|
||||||
|
TicketFlags ::= KerberosFlags
|
||||||
|
-- anonymous(TBA)
|
||||||
|
-- TicketFlags and KerberosFlags are defined in [RFC4120]
|
||||||
|
|
||||||
|
An anonymous ticket is a ticket that has all of the following
|
||||||
|
properties:
|
||||||
|
|
||||||
|
o The cname field [RFC4120] contains the anonymous Kerberos
|
||||||
|
principal name.
|
||||||
|
|
||||||
|
o The crealm field [RFC4120] contains either the realm name of the
|
||||||
|
client who made the request or the anonymous kerberos realm name,
|
||||||
|
based on the local policy of the KDC.
|
||||||
|
|
||||||
|
o The transited field [RFC4120] can contain either the client's
|
||||||
|
"normal" authentication path according to Section 3.3.3.2 of
|
||||||
|
[RFC4120] or the anonymous authentication path.
|
||||||
|
|
||||||
|
o It contains no information that can reveal the client's identity.
|
||||||
|
However the ticket can contain the client realm and the realms on
|
||||||
|
the authentication path, and the authorization data may provide
|
||||||
|
additional information of the client. For example, an anonymous
|
||||||
|
principal that is only identifiable within a particular group of
|
||||||
|
users can be implemented by using authorization data.
|
||||||
|
|
||||||
|
o The anonymous ticket flag is set.
|
||||||
|
|
||||||
|
Notes: The anonymous ticket flag MUST NOT be set by implementations
|
||||||
|
of this specification if the ticket is not an anonymous ticket. The
|
||||||
|
server principal name and the server realm in a cross-realm referral
|
||||||
|
TGT are not dependent on whether the client is the anonymous
|
||||||
|
principal or not.
|
||||||
|
|
||||||
|
The request-anonymous KDC option is defined as bit TBA (with the
|
||||||
|
first bit being bit 0) in the KDCOptions:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
KDCOptions ::= KerberosFlags
|
||||||
|
-- request-anonymous(TBA)
|
||||||
|
-- KDCOptions and KerberosFlags are defined in [RFC4120]
|
||||||
|
|
||||||
|
|
||||||
|
4. Protocol Description
|
||||||
|
|
||||||
|
In order to request an anonymous ticket, the client sets the request-
|
||||||
|
anonymous KDC option in an Authentication Exchange (AS) or Ticket
|
||||||
|
Granting Service (TGS) request [RFC4120]. The client can request an
|
||||||
|
anonymous TGT based on a normal TGT. Note that if the ticket in the
|
||||||
|
PA-TGS-REQ [RFC4120] is anonymous, the request-anonymous KDC option
|
||||||
|
MUST be set in the request.
|
||||||
|
|
||||||
|
When propagating authorization data, care MUST be taken by the TGS to
|
||||||
|
ensure that the client confidentiality is not violated: the TGS MUST
|
||||||
|
either fail the request or remove authorization data that may reveal
|
||||||
|
the client's identity. An optional authorization element unknown by
|
||||||
|
the TGS MUST be removed if it can be ignored (such as ones enclosed
|
||||||
|
in the AD-IF-RELEVANT or the AD-KDCIssued containers [RFC4120]). The
|
||||||
|
TGS can strip critical unknown authorization data if such data do not
|
||||||
|
convey any rights based on the requesting client's identity. Here is
|
||||||
|
a table of the known authorization-data elements, flagged with
|
||||||
|
whether they interfere with client anonymity and recommendations for
|
||||||
|
how to process them.
|
||||||
|
|
||||||
|
ad-type References Can Breach Confidentiality?
|
||||||
|
------------------------------------------------------------------
|
||||||
|
AD-IF-RELEVANT RFC4120 Yes, remove if unknown
|
||||||
|
AD-KDCIssued RFC4120 Yes, remove if unknown
|
||||||
|
AD-AND-OR RFC4120 Yes, remove if unknown
|
||||||
|
AD-MANDATORY-FOR-KDC RFC4120 Yes, fail the request if unknown
|
||||||
|
|
||||||
|
If it is inappropriate to remove an authorization element from the
|
||||||
|
TGS request in order to produce an anonymous ticket, the KDC MUST
|
||||||
|
return an error message with the code KDC_ERR_POLICY [RFC4120].
|
||||||
|
|
||||||
|
When policy allows, the KDC issues an anonymous ticket. The client
|
||||||
|
realm in the anonymous ticket can be the anonymous realm name based
|
||||||
|
on local policy. The client name and the client realm the
|
||||||
|
EncKDCRepPart of the reply [RFC4120] MUST match with the
|
||||||
|
corresponding client name and the client realm of the anonymous reply
|
||||||
|
ticket. The client then MUST use the client name and the client
|
||||||
|
realm returned in the EncKDCRepPart in subsequent message exchanges
|
||||||
|
when using that anonymous ticket.
|
||||||
|
|
||||||
|
If there is a key known by both the client and the KDC for encrypting
|
||||||
|
the KDC reply, the cname field in the request [RFC4120] can be
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
anonymous. If the client is anonymous and the KDC does not have a
|
||||||
|
key to encrypt the reply, the KDC MUST return an error message with
|
||||||
|
the code KDC_ERR_NULL_KEY [RFC4120]. For AS exchange, if the reply
|
||||||
|
key is selected from the client keys (for example, as described in
|
||||||
|
Section 3.1.3 of [RFC4120]), then the client principal MUST NOT be
|
||||||
|
anonymous. The client can use the client keys to request an
|
||||||
|
anonymous TGT in the AS request. The anonymous client name, for
|
||||||
|
example, can be used in conjunction with PKINIT [RFC4556]. An
|
||||||
|
anonymous PKINIT client can authenticate the KDC based on the KDC
|
||||||
|
certificate. For TGS exchange, the reply key is selected according
|
||||||
|
to Section 3.3.3 of [RFC4120] as normal.
|
||||||
|
|
||||||
|
The KDC fills out the transited field of the anonymous ticket in the
|
||||||
|
reply as follows: If the service ticket in a TGS request is an
|
||||||
|
anonymous ticket with a "normal" authentication path, then the
|
||||||
|
authentication path in the reply ticket MUST also contain a "normal"
|
||||||
|
authentication path: the TGS MUST add the name of the previous realm.
|
||||||
|
However, if the service ticket in a TGS request is an anonymous
|
||||||
|
ticket with an anonymous authentication path, then the reply ticket
|
||||||
|
can contain either an anonymous authentication path or a "normal"
|
||||||
|
authentication path, based on the local policy of the KDC. Thus a
|
||||||
|
"normal" authentication path in an anonymous ticket can be a partial
|
||||||
|
path: it may not include all the intermediate realms on the
|
||||||
|
authentication path.
|
||||||
|
|
||||||
|
The KDC fills out the authtime field of the anonymous ticket in the
|
||||||
|
reply as follows: If the anonymous ticket is returned in an AS
|
||||||
|
exchange, the authtime field of the ticket contains the request time.
|
||||||
|
If the anonymous ticket is returned in a TGS exchange, the authtime
|
||||||
|
field contains the time of the initial authentication for the
|
||||||
|
principal who has made the request. An anonymous ticket can be
|
||||||
|
renewed, and the authtime field of a renewed ticket is the authtime
|
||||||
|
in the anonymous ticket that the renewed ticket was based on.
|
||||||
|
|
||||||
|
If a client requires anonymous communication then the client MUST
|
||||||
|
check to make sure that the ticket in the reply is actually anonymous
|
||||||
|
by checking the presence of the anonymous ticket flag. Because KDCs
|
||||||
|
ignore unknown KDC options, a KDC that does not understand the
|
||||||
|
request-anonymous KDC option will not return an error, but will
|
||||||
|
instead return a normal ticket.
|
||||||
|
|
||||||
|
The subsequent client and server communications then proceed as
|
||||||
|
described in [RFC4120]. No transited policy checking is needed for
|
||||||
|
the anonymous authentication path. However, transited policy checks
|
||||||
|
defined in Section 2.7 of [RFC4120] would apply to an anonymous
|
||||||
|
ticket that contains a "normal" authentication path.
|
||||||
|
|
||||||
|
A server accepting an anonymous service ticket may assume that
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
subsequent requests using the same ticket originate from the same
|
||||||
|
client. Requests with different tickets are likely to originate from
|
||||||
|
different clients.
|
||||||
|
|
||||||
|
Interoperability and backward-compatibility notes: the KDC is given
|
||||||
|
the task of rejecting a request for an anonymous ticket when the
|
||||||
|
anonymous ticket is not acceptable by the server.
|
||||||
|
|
||||||
|
|
||||||
|
5. GSS-API Implementation Notes
|
||||||
|
|
||||||
|
At the GSS-API [RFC2743] level, the use of an anonymous principal by
|
||||||
|
the initiator/client requires a software change of the initiator/
|
||||||
|
client software (to assert the "anonymous" flag when calling
|
||||||
|
GSS_Init_Sec_Context().
|
||||||
|
|
||||||
|
GSS-API does not know or define "anonymous credentials", so the
|
||||||
|
(printable) name of the anonymous principal will rarely be used by or
|
||||||
|
relevant for the initator/client. The printable name is relevant for
|
||||||
|
the acceptor/server when performing an authorization decision based
|
||||||
|
on the name that pops up from GSS_Accept_Sec_Context() upon
|
||||||
|
successful security context establishment.
|
||||||
|
|
||||||
|
A GSS-API initiator MUST carefully check the resulting context
|
||||||
|
attributes from the initial call to GSS_Init_Sec_Context() when
|
||||||
|
requesting anonymity, because (as in the GSS-API tradition and for
|
||||||
|
backwards compatibility) anonymity is just another optional context
|
||||||
|
attribute. It could be that the mechanism doesn't recognize the
|
||||||
|
attribute at all or that anonymity is not available for some other
|
||||||
|
reasons -- and in that case the initiator must NOT send the initial
|
||||||
|
security context token to the acceptor, because it will likely reveal
|
||||||
|
the initiators identity to the acceptor, something that can rarely be
|
||||||
|
"un-done".
|
||||||
|
|
||||||
|
GSS-API defines the name_type GSS_C_NT_ANONYMOUS [RFC2743] to
|
||||||
|
represent the anonymous identity. In addition, Section 2.1.1 of
|
||||||
|
[RFC1964] defines the single string representation of a Kerberos
|
||||||
|
principal name with the name_type GSS_KRB5_NT_PRINCIPAL_NAME. For
|
||||||
|
the anonymous principals, the name component within the exportable
|
||||||
|
name as defined in Section 2.1.3 of [RFC1964] MUST signify the realm
|
||||||
|
name according to Section 2.1.1 of [RFC1964]. In this specification
|
||||||
|
only the client/initiator can be the anonymous identity.
|
||||||
|
|
||||||
|
Portable initiators are RECOMMENDED to use default credentials
|
||||||
|
whenever possible, and request anonymity only through the input
|
||||||
|
anon_req_flag [RFC2743] to GSS_Init_Sec_Context().
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
6. Security Considerations
|
||||||
|
|
||||||
|
Since KDCs ignore unknown options [RFC4120], a client requiring
|
||||||
|
anonymous communication needs to make sure that the ticket is
|
||||||
|
actually anonymous. A KDC that that does not understand the
|
||||||
|
anonymous option would not return an anonymous ticket.
|
||||||
|
|
||||||
|
By using the mechanism defined in this specification, the client does
|
||||||
|
not reveal its identity to the server but its identity may be
|
||||||
|
revealed to the KDC of the server principal (when the server
|
||||||
|
principal is in a different realm than that of the client), and any
|
||||||
|
KDC on the cross-realm authentication path. The Kerberos client MUST
|
||||||
|
verify the ticket being used is indeed anonymous before communicating
|
||||||
|
with the cross-realm KDC or the server, otherwise the client's
|
||||||
|
identity may be revealed to the server unintentionally.
|
||||||
|
|
||||||
|
In cases where specific server principals must not have access to the
|
||||||
|
client's identity (for example, an anonymous poll service), the KDC
|
||||||
|
can define server principal specific policy that insure any normal
|
||||||
|
service ticket can NEVER be issued to any of these server principals.
|
||||||
|
|
||||||
|
If the KDC that issued an anonymous ticket were to maintain records
|
||||||
|
of the association of identities to an anonymous ticket, then someone
|
||||||
|
obtaining such records could breach the anonymity. Additionally, the
|
||||||
|
implementation of most (for now all) KDC's respond to requests at the
|
||||||
|
time that they are received. Traffic analasys on the connection to
|
||||||
|
the KDC will allow an attacket to match client identities to
|
||||||
|
anonymous tickets issued. Because there are plaintext parts of the
|
||||||
|
tickets that are exposed on the wire, such matching by a third party
|
||||||
|
observer is relatively straigtforward.
|
||||||
|
|
||||||
|
|
||||||
|
7. Acknowledgements
|
||||||
|
|
||||||
|
The authors would like to thank the following individuals for their
|
||||||
|
insightful comments and fruitful discussions: Sam Hartman, Clifford
|
||||||
|
Neuman, Martin Rex, Nicolas Williams, Jeffery Altman, Tom Yu,
|
||||||
|
Chaskiel M Grundman, Love Hoernquist Aestrand, and Jeffery Hutzelman.
|
||||||
|
|
||||||
|
|
||||||
|
8. IANA Considerations
|
||||||
|
|
||||||
|
No IANA actions are required for this document.
|
||||||
|
|
||||||
|
9. Normative References
|
||||||
|
|
||||||
|
[KRBNAM] Zhu, L., "Additonal Kerberos Naming Contraints",
|
||||||
|
draft-ietf-krb-wg-naming, work in progress.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
[RFC1964] Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
|
||||||
|
RFC 1964, June 1996.
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
|
||||||
|
RFC 2246, January 1999.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
|
||||||
|
Kerberos Network Authentication Service (V5)", RFC 4120,
|
||||||
|
July 2005.
|
||||||
|
|
||||||
|
[RFC4556] Zhu, L. and B. Tung, "Public Key Cryptography for Initial
|
||||||
|
Authentication in Kerberos (PKINIT)", RFC 4556, June 2006.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
Authors' Addresses
|
||||||
|
|
||||||
|
Larry Zhu
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: lzhu@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
Paul Leach
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: paulle@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
Karthik Jaganathan
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: karthikj@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support July 2006
|
||||||
|
|
||||||
|
|
||||||
|
Intellectual Property Statement
|
||||||
|
|
||||||
|
The IETF takes no position regarding the validity or scope of any
|
||||||
|
Intellectual Property Rights or other rights that might be claimed to
|
||||||
|
pertain to the implementation or use of the technology described in
|
||||||
|
this document or the extent to which any license under such rights
|
||||||
|
might or might not be available; nor does it represent that it has
|
||||||
|
made any independent effort to identify any such rights. Information
|
||||||
|
on the procedures with respect to rights in RFC documents can be
|
||||||
|
found in BCP 78 and BCP 79.
|
||||||
|
|
||||||
|
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||||
|
assurances of licenses to be made available, or the result of an
|
||||||
|
attempt made to obtain a general license or permission for the use of
|
||||||
|
such proprietary rights by implementers or users of this
|
||||||
|
specification can be obtained from the IETF on-line IPR repository at
|
||||||
|
http://www.ietf.org/ipr.
|
||||||
|
|
||||||
|
The IETF invites any interested party to bring to its attention any
|
||||||
|
copyrights, patents or patent applications, or other proprietary
|
||||||
|
rights that may cover technology that may be required to implement
|
||||||
|
this standard. Please address the information to the IETF at
|
||||||
|
ietf-ipr@ietf.org.
|
||||||
|
|
||||||
|
|
||||||
|
Disclaimer of Validity
|
||||||
|
|
||||||
|
This document and the information contained herein are provided on an
|
||||||
|
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||||
|
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
||||||
|
ENGINEERING TASK FORCE DISCLAIM 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.
|
||||||
|
|
||||||
|
|
||||||
|
Copyright Statement
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2006). This document is subject
|
||||||
|
to the rights, licenses and restrictions contained in BCP 78, and
|
||||||
|
except as set forth therein, the authors retain all their rights.
|
||||||
|
|
||||||
|
|
||||||
|
Acknowledgment
|
||||||
|
|
||||||
|
Funding for the RFC Editor function is currently provided by the
|
||||||
|
Internet Society.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires January 17, 2007 [Page 11]
|
||||||
|
|
||||||
|
|
617
doc/standardisation/draft-ietf-krb-wg-anon-02.txt
Normal file
617
doc/standardisation/draft-ietf-krb-wg-anon-02.txt
Normal file
@@ -0,0 +1,617 @@
|
|||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP L. Zhu
|
||||||
|
Internet-Draft P. Leach
|
||||||
|
Updates: 4120 (if approved) K. Jaganathan
|
||||||
|
Intended status: Standards Track Microsoft Corporation
|
||||||
|
Expires: April 14, 2007 October 11, 2006
|
||||||
|
|
||||||
|
|
||||||
|
Anonymity Support for Kerberos
|
||||||
|
draft-ietf-krb-wg-anon-02
|
||||||
|
|
||||||
|
Status of this Memo
|
||||||
|
|
||||||
|
By submitting this Internet-Draft, each author represents that any
|
||||||
|
applicable patent or other IPR claims of which he or she is aware
|
||||||
|
have been or will be disclosed, and any of which he or she becomes
|
||||||
|
aware will be disclosed, in accordance with Section 6 of BCP 79.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
This Internet-Draft will expire on April 14, 2007.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2006).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document defines extensions to the Kerberos protocol for the
|
||||||
|
Kerberos client to authenticate the Kerberos Key Distribution Center
|
||||||
|
and the Kerberos server, without revealing the client's identity.
|
||||||
|
These extensions can be used to secure communication between the
|
||||||
|
anonymous client and the server.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
2. Conventions Used in This Document . . . . . . . . . . . . . . 3
|
||||||
|
3. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
4. Protocol Description . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
5. GSS-API Implementation Notes . . . . . . . . . . . . . . . . . 7
|
||||||
|
6. Security Considerations . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
9. Normative References . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . . . . . 11
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
|
||||||
|
In certain situations, the Kerberos [RFC4120] client may wish to
|
||||||
|
authenticate a server and/or protect communications without revealing
|
||||||
|
its own identity. For example, consider an application which
|
||||||
|
provides read access to a research database, and which permits
|
||||||
|
queries by arbitrary requestors. A client of such a service might
|
||||||
|
wish to authenticate the service, to establish trust in the
|
||||||
|
information received from it, but might not wish to disclose its
|
||||||
|
identity to the service for privacy reasons.
|
||||||
|
|
||||||
|
Extensions to [RFC4120] are specified in this document by which a
|
||||||
|
client can authenticate the KDC and request an anonymous ticket. The
|
||||||
|
client can use the anonymous ticket to authenticate the server and
|
||||||
|
protect subsequent client-server communications. These extensions
|
||||||
|
provide Kerberos with functional equivalence to Transport Layer
|
||||||
|
Security (TLS) [RFC4346].
|
||||||
|
|
||||||
|
By using the extensions defined in this specification, the client MAY
|
||||||
|
reveal its identity in its initial request to its own KDC, but it can
|
||||||
|
remain anonymous thereafter to KDCs on the cross-realm authentication
|
||||||
|
path, and to the server with which it communicates.
|
||||||
|
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
3. Definitions
|
||||||
|
|
||||||
|
The anonymous Kerberos realm name is a reserved realm name based on
|
||||||
|
[KRBNAM]. The value is the literal "RESERVED:ANONYMOUS".
|
||||||
|
|
||||||
|
The anonymous Kerberos principal name is a reserved Kerberos
|
||||||
|
principal name based on [KRBNAM]. The value of the name-type field
|
||||||
|
is KRB_NT_RESRVED [KRBNAM], and the value of the name-string field is
|
||||||
|
a sequence of two KerberosString components: "RESERVED", "ANONYMOUS".
|
||||||
|
|
||||||
|
Note that in this specification, the anonymous principal name and
|
||||||
|
realm are only applicable to the client in Kerberos messages, the
|
||||||
|
server MUST NOT be anonymous in any Kerberos message.
|
||||||
|
|
||||||
|
The transited field [RFC4120] of a ticket is an anonymous
|
||||||
|
authentication path if the tr-type field of the TransitedEncoding
|
||||||
|
type [RFC4120] is NO-TRANSITED-INFO and the contents field is an
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
empty OCTET STRING.
|
||||||
|
|
||||||
|
NO-TRANSITED-INFO TBA
|
||||||
|
|
||||||
|
This means that no information of the authentication path is
|
||||||
|
disclosed.
|
||||||
|
|
||||||
|
The anonymous ticket flag is defined as bit TBA (with the first bit
|
||||||
|
being bit 0) in the TicketFlags:
|
||||||
|
|
||||||
|
TicketFlags ::= KerberosFlags
|
||||||
|
-- anonymous(TBA)
|
||||||
|
-- TicketFlags and KerberosFlags are defined in [RFC4120]
|
||||||
|
|
||||||
|
An anonymous ticket is a ticket that has all of the following
|
||||||
|
properties:
|
||||||
|
|
||||||
|
o The cname field [RFC4120] contains the anonymous Kerberos
|
||||||
|
principal name.
|
||||||
|
|
||||||
|
o The crealm field [RFC4120] contains either the client's realm name
|
||||||
|
or the anonymous realm name.
|
||||||
|
|
||||||
|
o The transited field [RFC4120] can contain either the client's
|
||||||
|
authentication path as described in Section 3.3.3.2 of [RFC4120]
|
||||||
|
or the anonymous authentication path.
|
||||||
|
|
||||||
|
o The anonymous ticket contains no information that can reveal the
|
||||||
|
client's identity. However the ticket MAY contain the client
|
||||||
|
realm and the realms on the authentication path, and authorization
|
||||||
|
data that MAY provide information related to the client's
|
||||||
|
identity. For example, an anonymous principal that is only
|
||||||
|
identifiable within a particular group of users can be implemented
|
||||||
|
using authorization data and such authorization data, if included
|
||||||
|
in the anonymous ticket, shall disclose the client's membership of
|
||||||
|
that group.
|
||||||
|
|
||||||
|
o The anonymous ticket flag is set.
|
||||||
|
|
||||||
|
The request-anonymous KDC option is defined as bit TBA (with the
|
||||||
|
first bit being bit 0) in the KDCOptions:
|
||||||
|
|
||||||
|
KDCOptions ::= KerberosFlags
|
||||||
|
-- request-anonymous(TBA)
|
||||||
|
-- KDCOptions and KerberosFlags are defined in [RFC4120]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
4. Protocol Description
|
||||||
|
|
||||||
|
In order to request an anonymous ticket, the client sets the request-
|
||||||
|
anonymous KDC option in an Authentication Exchange (AS) or Ticket
|
||||||
|
Granting Service (TGS) request [RFC4120]. The client can request an
|
||||||
|
anonymous TGT based on a normal TGT. If the client wishes to
|
||||||
|
authenticate the KDC anonymously, it sets the client name as
|
||||||
|
anonymous in the AS exchange and provides a PA_PK_AS_REQ pre-
|
||||||
|
authentication data [RFC4556] where both the signerInfos field and
|
||||||
|
the certificates field of the SignedData [RFC3852] of PA_PK_AS_REQ
|
||||||
|
are empty. Because the anonymous client does not have an associated
|
||||||
|
asymmetric key pair, the client MUST use the Diffie-Hellman key
|
||||||
|
agreement method by filling in the Diffie-Hellman domain parameters
|
||||||
|
in the clientPublicValue [RFC4556].
|
||||||
|
|
||||||
|
If the ticket in the PA-TGS-REQ [RFC4120] of the TGS request is
|
||||||
|
anonymous, or if the client in the AS request is anonymous, the
|
||||||
|
request-anonymous KDC option MUST be set in the request.
|
||||||
|
|
||||||
|
Upon receiving the AS request with a PA_PK_AS_REQ from the anonymous
|
||||||
|
client, the KDC skips the checks for the client's signature and the
|
||||||
|
client's public key (such as the verification of the binding between
|
||||||
|
the client's public key and the client name), but performs otherwise-
|
||||||
|
applicable checks, and proceeds as normal according to [RFC4556].
|
||||||
|
For example, the AS MUST check if the client's Diffie-Hellman domain
|
||||||
|
parameters are acceptable. The Diffie-Hellman key agreement method
|
||||||
|
MUST be used and the reply key is derived according to Section
|
||||||
|
3.2.3.1 of [RFC4556]. If the clientPublicValue is not present in the
|
||||||
|
request, the KDC MUST return a KRB-ERROR [RFC4120] with the code
|
||||||
|
KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED [RFC4556] and there is no
|
||||||
|
accompanying e-data. The client that made the anonymous request can
|
||||||
|
authenticate the KDC based on the KDC's signature in the reply. If
|
||||||
|
the KDC does not have an asymmetric key pair, it MAY reply
|
||||||
|
anonymously. In which case, both the signerInfos field and the
|
||||||
|
certificates field of the SignedData [RFC3852] of PA_PK_AS_REP in the
|
||||||
|
reply are empty. The server name in an anonymous reply contains the
|
||||||
|
name of the TGS. Upon receipt of an anonymous KDC reply, the client
|
||||||
|
MUST reject the returned ticket if it can not authenticate the KDC
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
The client can use its keys to mutually authenticate with the KDC,
|
||||||
|
and request an anonymous TGT in the AS request. And in that case,
|
||||||
|
the reply key is selected as normal according to Section 3.1.3 of
|
||||||
|
[RFC4120].
|
||||||
|
|
||||||
|
For the TGS exchange, the reply key is selected as normal according
|
||||||
|
to Section 3.3.3 of [RFC4120].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
When policy allows, the KDC issues an anonymous ticket. Based on
|
||||||
|
local policy, the client realm in the anonymous ticket can be the
|
||||||
|
anonymous realm name or the realm of the KDC. However, in all cases,
|
||||||
|
the client name and the client realm in the EncKDCRepPart of the
|
||||||
|
reply [RFC4120] MUST match with the corresponding client name and the
|
||||||
|
client realm of the anonymous ticket in the reply. The client MUST
|
||||||
|
use the client name and the client realm returned in the
|
||||||
|
EncKDCRepPart in subsequent message exchanges when using the obtained
|
||||||
|
anonymous ticket.
|
||||||
|
|
||||||
|
During the TGS request, when propagating authorization data, care
|
||||||
|
MUST be taken by the TGS to ensure that the client confidentiality is
|
||||||
|
not violated. The TGS MUST either fail the request or remove
|
||||||
|
authorization data that may reveal the client's identity. An
|
||||||
|
optional authorization element unknown by the TGS MUST be removed if
|
||||||
|
it can be ignored (such as ones enclosed in the AD-IF-RELEVANT
|
||||||
|
structure). The TGS can only strip critical unknown authorization
|
||||||
|
data if the ticket does not convey any rights such as those conveyed
|
||||||
|
by a KDCIssued authorization data element. If a ticket contains a
|
||||||
|
KDCIssued authorization data element, then no other authorization
|
||||||
|
data elements may be removed if they could serve to limit the rights
|
||||||
|
conveyed by the KDCIssued element. Here is a table of the known
|
||||||
|
authorization-data elements, tagged with whether they interfere with
|
||||||
|
client anonymity and recommendations for how to process them:
|
||||||
|
|
||||||
|
ad-type References Can Breach Confidentiality?
|
||||||
|
------------------------------------------------------------------
|
||||||
|
AD-IF-RELEVANT RFC4120 Yes, remove if unknown
|
||||||
|
AD-KDCIssued RFC4120 Yes, fail the request if unknown
|
||||||
|
AD-AND-OR RFC4120 Yes, remove if unknown
|
||||||
|
AD-MANDATORY-FOR-KDC RFC4120 Yes, fail the request if unknown
|
||||||
|
|
||||||
|
The KDC fills out the transited field of the anonymous ticket in the
|
||||||
|
reply as follows: If the service ticket in a TGS request is an
|
||||||
|
anonymous ticket with a "normal" authentication path, then the
|
||||||
|
authentication path in the reply ticket MUST also contain a "normal"
|
||||||
|
authentication path, the TGS MUST add the name of the previous realm.
|
||||||
|
However, if the service ticket in a TGS request is an anonymous
|
||||||
|
ticket with an anonymous authentication path, then the reply ticket
|
||||||
|
can contain either an anonymous authentication path or a "normal"
|
||||||
|
authentication path, based on local policy of the KDC. Thus a
|
||||||
|
"normal" authentication path in an anonymous ticket can be a partial
|
||||||
|
path, it may not include all the intermediate realms on the
|
||||||
|
authentication path.
|
||||||
|
|
||||||
|
The KDC fills out the authtime field of the anonymous ticket in the
|
||||||
|
reply as follows: If the anonymous ticket is returned in an AS
|
||||||
|
exchange, the authtime field of the ticket contains the request time.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
If the anonymous ticket is returned in a TGS exchange, the authtime
|
||||||
|
field contains the authtime of the ticket in the PA-TGS-REQ
|
||||||
|
[RFC4120]. An anonymous ticket can be renewed, and the authtime
|
||||||
|
field of a renewed ticket is the authtime in the anonymous ticket on
|
||||||
|
which the renewed ticket was based.
|
||||||
|
|
||||||
|
If it is inappropriate to remove an authorization element from the
|
||||||
|
TGS request in order to produce an anonymous ticket, the KDC MUST
|
||||||
|
return an error message with the code KDC_ERR_POLICY [RFC4120].
|
||||||
|
|
||||||
|
If the client is anonymous and the KDC does not have a key to encrypt
|
||||||
|
the reply, the KDC MUST return an error message with the code
|
||||||
|
KDC_ERR_NULL_KEY [RFC4120] and there is no accompanying e-data.
|
||||||
|
|
||||||
|
If a client requires anonymous communication then the client MUST
|
||||||
|
check to make sure that the ticket in the reply is actually anonymous
|
||||||
|
by checking the presence of the anonymous ticket flag. This is
|
||||||
|
because KDCs ignore unknown KDC options. A KDC that does not
|
||||||
|
understand the request-anonymous KDC option will not return an error,
|
||||||
|
but will instead return a normal ticket.
|
||||||
|
|
||||||
|
The subsequent client and server communications then proceed as
|
||||||
|
described in [RFC4120]. No transited policy checking is needed for
|
||||||
|
the anonymous authentication path. However, transited policy checks
|
||||||
|
defined in Section 2.7 of [RFC4120] would apply to an anonymous
|
||||||
|
ticket that contains a "normal" authentication path.
|
||||||
|
|
||||||
|
A server accepting an anonymous service ticket may assume that
|
||||||
|
subsequent requests using the same ticket originate from the same
|
||||||
|
client. Requests with different tickets are likely to originate from
|
||||||
|
different clients.
|
||||||
|
|
||||||
|
Interoperability and backward-compatibility notes: the KDC is given
|
||||||
|
the task of rejecting a request for an anonymous ticket when the
|
||||||
|
anonymous ticket is not acceptable by the server.
|
||||||
|
|
||||||
|
|
||||||
|
5. GSS-API Implementation Notes
|
||||||
|
|
||||||
|
At the GSS-API [RFC2743] level, the use of an anonymous principal by
|
||||||
|
the initiator/client requires the initiator/client to assert the
|
||||||
|
"anonymous" flag when calling GSS_Init_Sec_Context().
|
||||||
|
|
||||||
|
GSS-API does not know or define "anonymous credentials", so the
|
||||||
|
(printable) name of the anonymous principal will rarely be used by or
|
||||||
|
relevant for the initiator/client. The printable name is relevant
|
||||||
|
for the acceptor/server when performing an authorization decision
|
||||||
|
based on the name that pops up from GSS_Accept_Sec_Context() upon
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
successful security context establishment.
|
||||||
|
|
||||||
|
A GSS-API initiator MUST carefully check the resulting context
|
||||||
|
attributes from the initial call to GSS_Init_Sec_Context() when
|
||||||
|
requesting anonymity, because (as in the GSS-API tradition and for
|
||||||
|
backwards compatibility) anonymity is just another optional context
|
||||||
|
attribute. It could be that the mechanism doesn't recognize the
|
||||||
|
attribute at all or that anonymity is not available for some other
|
||||||
|
reasons -- and in that case the initiator must NOT send the initial
|
||||||
|
security context token to the acceptor, because it will likely reveal
|
||||||
|
the initiators identity to the acceptor, something that can rarely be
|
||||||
|
"un-done".
|
||||||
|
|
||||||
|
GSS-API defines the name_type GSS_C_NT_ANONYMOUS [RFC2743] to
|
||||||
|
represent the anonymous identity. In addition, Section 2.1.1 of
|
||||||
|
[RFC1964] defines the single string representation of a Kerberos
|
||||||
|
principal name with the name_type GSS_KRB5_NT_PRINCIPAL_NAME. For
|
||||||
|
the anonymous principals, the name component within the exportable
|
||||||
|
name as defined in Section 2.1.3 of [RFC1964] MUST signify the realm
|
||||||
|
name according to Section 2.1.1 of [RFC1964]. Note that in this
|
||||||
|
specification only the client/initiator can be anonymous.
|
||||||
|
|
||||||
|
Portable initiators are RECOMMENDED to use default credentials
|
||||||
|
whenever possible, and request anonymity only through the input
|
||||||
|
anon_req_flag [RFC2743] to GSS_Init_Sec_Context().
|
||||||
|
|
||||||
|
|
||||||
|
6. Security Considerations
|
||||||
|
|
||||||
|
Since KDCs ignore unknown options [RFC4120], a client requiring
|
||||||
|
anonymous communication needs to make sure that the ticket is
|
||||||
|
actually anonymous. This is because a KDC that that does not
|
||||||
|
understand the anonymous option would not return an anonymous ticket.
|
||||||
|
|
||||||
|
By using the mechanism defined in this specification, the client does
|
||||||
|
not reveal its identity to the server but its identity may be
|
||||||
|
revealed to the KDC of the server principal (when the server
|
||||||
|
principal is in a different realm than that of the client), and any
|
||||||
|
KDC on the cross-realm authentication path. The Kerberos client MUST
|
||||||
|
verify the ticket being used is indeed anonymous before communicating
|
||||||
|
with the server, otherwise the client's identity may be revealed
|
||||||
|
unintentionally.
|
||||||
|
|
||||||
|
In cases where specific server principals must not have access to the
|
||||||
|
client's identity (for example, an anonymous poll service), the KDC
|
||||||
|
can define server principal specific policy that insure any normal
|
||||||
|
service ticket can NEVER be issued to any of these server principals.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
If the KDC that issued an anonymous ticket were to maintain records
|
||||||
|
of the association of identities to an anonymous ticket, then someone
|
||||||
|
obtaining such records could breach the anonymity. Additionally, the
|
||||||
|
implementations of most (for now all) KDC's respond to requests at
|
||||||
|
the time that they are received. Traffic analysis on the connection
|
||||||
|
to the KDC will allow an attacker to match client identities to
|
||||||
|
anonymous tickets issued. Because there are plaintext parts of the
|
||||||
|
tickets that are exposed on the wire, such matching by a third party
|
||||||
|
observer is relatively straightforward.
|
||||||
|
|
||||||
|
|
||||||
|
7. Acknowledgements
|
||||||
|
|
||||||
|
Clifford Neuman contributed the core notions of this document.
|
||||||
|
|
||||||
|
Martin Rex wrote the text for GSS-API considerations.
|
||||||
|
|
||||||
|
Nicolas Williams reviewed the GSS-API considerations section and
|
||||||
|
suggested ideas for improvements.
|
||||||
|
|
||||||
|
Sam Hartman and Nicolas Williams were great champions of this work.
|
||||||
|
|
||||||
|
In addition, the following individuals made significant
|
||||||
|
contributions: Jeffery Altman, Tom Yu, Chaskiel M Grundman, Love
|
||||||
|
Hoernquist Aestrand, and Jeffery Hutzelman.
|
||||||
|
|
||||||
|
|
||||||
|
8. IANA Considerations
|
||||||
|
|
||||||
|
Section 3 defines the anonymous Kerberos name and the anonymous
|
||||||
|
Kerberos realm based on [KRBNAM]. The IANA registry for [KRBNAM]
|
||||||
|
need to be updated to add references to this document.
|
||||||
|
|
||||||
|
|
||||||
|
9. Normative References
|
||||||
|
|
||||||
|
[KRBNAM] Zhu, L., "Additonal Kerberos Naming Contraints",
|
||||||
|
draft-ietf-krb-wg-naming, work in progress.
|
||||||
|
|
||||||
|
[RFC1964] Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
|
||||||
|
RFC 1964, June 1996.
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC3852] Housley, R., "Cryptographic Message Syntax (CMS)",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
RFC 3852, July 2004.
|
||||||
|
|
||||||
|
[RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
|
||||||
|
Kerberos Network Authentication Service (V5)", RFC 4120,
|
||||||
|
July 2005.
|
||||||
|
|
||||||
|
[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
|
||||||
|
(TLS) Protocol Version 1.1", RFC 4346, April 2006.
|
||||||
|
|
||||||
|
[RFC4556] Zhu, L. and B. Tung, "Public Key Cryptography for Initial
|
||||||
|
Authentication in Kerberos (PKINIT)", RFC 4556, June 2006.
|
||||||
|
|
||||||
|
|
||||||
|
Authors' Addresses
|
||||||
|
|
||||||
|
Larry Zhu
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: lzhu@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
Paul Leach
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: paulle@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
Karthik Jaganathan
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: karthikj@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support October 2006
|
||||||
|
|
||||||
|
|
||||||
|
Full Copyright Statement
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2006).
|
||||||
|
|
||||||
|
This document is subject to the rights, licenses and restrictions
|
||||||
|
contained in BCP 78, and except as set forth therein, the authors
|
||||||
|
retain all their rights.
|
||||||
|
|
||||||
|
This document and the information contained herein are provided on an
|
||||||
|
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||||
|
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
||||||
|
ENGINEERING TASK FORCE DISCLAIM 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.
|
||||||
|
|
||||||
|
|
||||||
|
Intellectual Property
|
||||||
|
|
||||||
|
The IETF takes no position regarding the validity or scope of any
|
||||||
|
Intellectual Property Rights or other rights that might be claimed to
|
||||||
|
pertain to the implementation or use of the technology described in
|
||||||
|
this document or the extent to which any license under such rights
|
||||||
|
might or might not be available; nor does it represent that it has
|
||||||
|
made any independent effort to identify any such rights. Information
|
||||||
|
on the procedures with respect to rights in RFC documents can be
|
||||||
|
found in BCP 78 and BCP 79.
|
||||||
|
|
||||||
|
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||||
|
assurances of licenses to be made available, or the result of an
|
||||||
|
attempt made to obtain a general license or permission for the use of
|
||||||
|
such proprietary rights by implementers or users of this
|
||||||
|
specification can be obtained from the IETF on-line IPR repository at
|
||||||
|
http://www.ietf.org/ipr.
|
||||||
|
|
||||||
|
The IETF invites any interested party to bring to its attention any
|
||||||
|
copyrights, patents or patent applications, or other proprietary
|
||||||
|
rights that may cover technology that may be required to implement
|
||||||
|
this standard. Please address the information to the IETF at
|
||||||
|
ietf-ipr@ietf.org.
|
||||||
|
|
||||||
|
|
||||||
|
Acknowledgment
|
||||||
|
|
||||||
|
Funding for the RFC Editor function is provided by the IETF
|
||||||
|
Administrative Support Activity (IASA).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires April 14, 2007 [Page 11]
|
||||||
|
|
||||||
|
|
617
doc/standardisation/draft-ietf-krb-wg-anon-03.txt
Normal file
617
doc/standardisation/draft-ietf-krb-wg-anon-03.txt
Normal file
@@ -0,0 +1,617 @@
|
|||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP L. Zhu
|
||||||
|
Internet-Draft P. Leach
|
||||||
|
Updates: 4120 (if approved) K. Jaganathan
|
||||||
|
Intended status: Standards Track Microsoft Corporation
|
||||||
|
Expires: September 3, 2007 March 2, 2007
|
||||||
|
|
||||||
|
|
||||||
|
Anonymity Support for Kerberos
|
||||||
|
draft-ietf-krb-wg-anon-03
|
||||||
|
|
||||||
|
Status of this Memo
|
||||||
|
|
||||||
|
By submitting this Internet-Draft, each author represents that any
|
||||||
|
applicable patent or other IPR claims of which he or she is aware
|
||||||
|
have been or will be disclosed, and any of which he or she becomes
|
||||||
|
aware will be disclosed, in accordance with Section 6 of BCP 79.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
This Internet-Draft will expire on September 3, 2007.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The IETF Trust (2007).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document defines extensions to the Kerberos protocol for the
|
||||||
|
Kerberos client to authenticate the Kerberos Key Distribution Center
|
||||||
|
and the Kerberos server, without revealing the client's identity.
|
||||||
|
These extensions can be used to secure communication between the
|
||||||
|
anonymous client and the server.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
2. Conventions Used in This Document . . . . . . . . . . . . . . 3
|
||||||
|
3. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
4. Protocol Description . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
5. GSS-API Implementation Notes . . . . . . . . . . . . . . . . . 7
|
||||||
|
6. Security Considerations . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
9. Normative References . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . . . . . 11
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
|
||||||
|
In certain situations, the Kerberos [RFC4120] client may wish to
|
||||||
|
authenticate a server and/or protect communications without revealing
|
||||||
|
its own identity. For example, consider an application which
|
||||||
|
provides read access to a research database, and which permits
|
||||||
|
queries by arbitrary requestors. A client of such a service might
|
||||||
|
wish to authenticate the service, to establish trust in the
|
||||||
|
information received from it, but might not wish to disclose its
|
||||||
|
identity to the service for privacy reasons.
|
||||||
|
|
||||||
|
Extensions to [RFC4120] are specified in this document by which a
|
||||||
|
client can authenticate the Key Distribution Center (KDC) and request
|
||||||
|
an anonymous ticket. The client can use the anonymous ticket to
|
||||||
|
authenticate the server and protect subsequent client-server
|
||||||
|
communications. These extensions provide Kerberos with functional
|
||||||
|
equivalence to Transport Layer Security (TLS) [RFC4346].
|
||||||
|
|
||||||
|
By using the extensions defined in this specification, the client may
|
||||||
|
reveal its identity in its initial request to its own KDC, but it can
|
||||||
|
remain anonymous thereafter to KDCs on the cross-realm authentication
|
||||||
|
path, and to the server with which it communicates.
|
||||||
|
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
3. Definitions
|
||||||
|
|
||||||
|
The anonymous Kerberos realm name is defined as a well-known realm
|
||||||
|
name based on [KRBNAM]. The value is the literal "WELLKNOWN:
|
||||||
|
ANONYMOUS". An anonymous Kerberos realm name MUST NOT be present in
|
||||||
|
the transited field [RFC4120] of a ticket.
|
||||||
|
|
||||||
|
The anonymous Kerberos principal name is defined as a well-known
|
||||||
|
Kerberos principal name based on [KRBNAM]. The value of the name-
|
||||||
|
type field [RFC4120] is KRB_NT_RESRVED [KRBNAM], and the value of the
|
||||||
|
name-string field [RFC4120] is a sequence of two KerberosString
|
||||||
|
components: "WELLKNOWN", "ANONYMOUS".
|
||||||
|
|
||||||
|
Note that in this specification, the anonymous principal name and
|
||||||
|
realm are only applicable to the client in Kerberos messages, the
|
||||||
|
server MUST NOT be anonymous in any Kerberos message.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
The anonymous ticket flag is defined as bit TBA (with the first bit
|
||||||
|
being bit 0) in the TicketFlags:
|
||||||
|
|
||||||
|
TicketFlags ::= KerberosFlags
|
||||||
|
-- anonymous(TBA)
|
||||||
|
-- TicketFlags and KerberosFlags are defined in [RFC4120]
|
||||||
|
|
||||||
|
An anonymous ticket is a ticket that has all of the following
|
||||||
|
properties:
|
||||||
|
|
||||||
|
o The cname field [RFC4120] contains the anonymous Kerberos
|
||||||
|
principal name.
|
||||||
|
|
||||||
|
o The crealm field [RFC4120] contains the client's realm name, or
|
||||||
|
the name of the realm that issued the initial ticket for the
|
||||||
|
client principal, or the anonymous realm name.
|
||||||
|
|
||||||
|
o The anonymous ticket contains no information that can reveal the
|
||||||
|
client's identity. However the ticket may contain the client
|
||||||
|
realm, intermediate realms on the client's authentication path,
|
||||||
|
and authorization data that may provide information related to the
|
||||||
|
client's identity. For example, an anonymous principal that is
|
||||||
|
identifiable only within a particular group of users can be
|
||||||
|
implemented using authorization data and such authorization data,
|
||||||
|
if included in the anonymous ticket, shall disclose the client's
|
||||||
|
membership of that group.
|
||||||
|
|
||||||
|
o The anonymous ticket flag is set.
|
||||||
|
|
||||||
|
The request-anonymous KDC option is defined as bit TBA (with the
|
||||||
|
first bit being bit 0) in the KDCOptions:
|
||||||
|
|
||||||
|
KDCOptions ::= KerberosFlags
|
||||||
|
-- request-anonymous(TBA)
|
||||||
|
-- KDCOptions and KerberosFlags are defined in [RFC4120]
|
||||||
|
|
||||||
|
As described in Section 4, the request-anonymous KDC option is set to
|
||||||
|
request an anonymous ticket.
|
||||||
|
|
||||||
|
|
||||||
|
4. Protocol Description
|
||||||
|
|
||||||
|
In order to request an anonymous ticket, the client sets the request-
|
||||||
|
anonymous KDC option in an Authentication Exchange (AS) or Ticket
|
||||||
|
Granting Service (TGS) request [RFC4120]. The client can request an
|
||||||
|
anonymous Ticket Granting Ticket (TGT) based on a normal TGT. Unless
|
||||||
|
otherwise specified, the client can obtain an anonymous ticket with
|
||||||
|
the anonymous realm name only by requesting an anonymous ticket in an
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
AS exchange with the client realm set as anonymous in the request.
|
||||||
|
|
||||||
|
If the client wishes to authenticate the KDC anonymously, it sets the
|
||||||
|
client name as anonymous in the AS exchange and provides a
|
||||||
|
PA_PK_AS_REQ pre-authentication data [RFC4556] where both the
|
||||||
|
signerInfos field and the certificates field of the SignedData
|
||||||
|
[RFC3852] of the PA_PK_AS_REQ are empty. Because the anonymous
|
||||||
|
client does not have an associated asymmetric key pair, the client
|
||||||
|
MUST choose the Diffie-Hellman key agreement method by filling in the
|
||||||
|
Diffie-Hellman domain parameters in the clientPublicValue [RFC4556].
|
||||||
|
|
||||||
|
If the ticket in the PA-TGS-REQ [RFC4120] of the TGS request is
|
||||||
|
anonymous, or if the client in the AS request is anonymous, the
|
||||||
|
request-anonymous KDC option MUST be set in the request. Otherwise,
|
||||||
|
the KDC MUST return a KRB-ERROR message with the code
|
||||||
|
KDC_ERR_BADOPTION [RFC4120], and there is no accompanying e-data
|
||||||
|
defined in this document.
|
||||||
|
|
||||||
|
Upon receiving the AS request with a PA_PK_AS_REQ [RFC4556] from the
|
||||||
|
anonymous client, the KDC processes the request according to Section
|
||||||
|
3.1.2 of [RFC4120]. The KDC skips the checks for the client's
|
||||||
|
signature and the client's public key (such as the verification of
|
||||||
|
the binding between the client's public key and the client name), but
|
||||||
|
performs otherwise-applicable checks, and proceeds as normal
|
||||||
|
according to [RFC4556]. For example, the AS MUST check if the
|
||||||
|
client's Diffie-Hellman domain parameters are acceptable. The
|
||||||
|
Diffie-Hellman key agreement method MUST be used and the reply key is
|
||||||
|
derived according to Section 3.2.3.1 of [RFC4556]. If the
|
||||||
|
clientPublicValue is not present in the request, the KDC MUST return
|
||||||
|
a KRB-ERROR [RFC4120] with the code
|
||||||
|
KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED [RFC4556] and there is no
|
||||||
|
accompanying e-data. If all goes well, an anonymous ticket is
|
||||||
|
generated according to Section 3.1.3 of [RFC4120] and a PA_PK_AS_REP
|
||||||
|
[RFC4556] pre-authentication data is included in the KDC reply
|
||||||
|
according to [RFC4556]. If the KDC does not have an asymmetric key
|
||||||
|
pair, it MAY reply anonymously or reject the authentication attempt.
|
||||||
|
If the KDC replies anonymously, both the signerInfos field and the
|
||||||
|
certificates field of the SignedData [RFC3852] of PA_PK_AS_REP in the
|
||||||
|
reply are empty. The server name in the anonymous KDC reply contains
|
||||||
|
the name of the TGS.
|
||||||
|
|
||||||
|
Upon receipt of the KDC reply that contains an anonymous ticket and a
|
||||||
|
PA_PK_AS_REP [RFC4556] pre-authentication data, the client can then
|
||||||
|
authenticate the KDC based on the KDC's signature in the
|
||||||
|
PA_PK_AS_REP. If the KDC's signature is missing in the KDC reply
|
||||||
|
(the reply is anonymous), the client MUST reject the returned ticket
|
||||||
|
if it cannot authenticate the KDC otherwise.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
The client can use the client keys to mutually authenticate with the
|
||||||
|
KDC, request an anonymous TGT in the AS request. And in that case,
|
||||||
|
the reply key is selected as normal according to Section 3.1.3 of
|
||||||
|
[RFC4120].
|
||||||
|
|
||||||
|
For the TGS exchange, the reply key is selected as normal according
|
||||||
|
to Section 3.3.3 of [RFC4120].
|
||||||
|
|
||||||
|
When policy allows, the KDC issues an anonymous ticket. Based on
|
||||||
|
local policy, the client realm in the anonymous ticket can be the
|
||||||
|
anonymous realm name or the realm of the KDC. However, in all cases,
|
||||||
|
the client name and the client realm in the EncKDCRepPart of the
|
||||||
|
reply [RFC4120] MUST match with the corresponding client name and the
|
||||||
|
client realm of the anonymous ticket in the reply. The client MUST
|
||||||
|
use the client name and the client realm returned in the
|
||||||
|
EncKDCRepPart in subsequent message exchanges when using the obtained
|
||||||
|
anonymous ticket.
|
||||||
|
|
||||||
|
During the TGS request, when propagating authorization data, care
|
||||||
|
MUST be taken by the TGS to ensure that the client confidentiality is
|
||||||
|
not violated. If a anonymous ticket is returned, any authorization
|
||||||
|
element that may reveal the client's identity MUST be removed. The
|
||||||
|
authentication attempt MUST be rejected if there is an authorization
|
||||||
|
element that is intended to restrict the use of the ticket thus
|
||||||
|
cannot be removed or the local policy prevents the removal of an
|
||||||
|
authorization element, and this rule MUST be applied to all critical
|
||||||
|
and optional authorization data. An optional authorization element
|
||||||
|
unknown by the TGS MUST be removed if it does not potentially convey
|
||||||
|
any rights or limit the rights otherwise conveyed in the ticket. If
|
||||||
|
there is a critical unknown authorization element, unless this
|
||||||
|
element is encapsulated in a known authorization data element
|
||||||
|
amending the criticality of the elements it contains, authentication
|
||||||
|
MUST fail according to [RFC4120]. If it is inappropriate to remove
|
||||||
|
an authorization element from the TGS request in order to produce an
|
||||||
|
anonymous ticket, the KDC MUST return an error message with the code
|
||||||
|
KDC_ERR_POLICY [RFC4120], and there is no accompanying e-data defined
|
||||||
|
in this document.
|
||||||
|
|
||||||
|
The TGS MUST add the name of the previous realm according to Section
|
||||||
|
3.3.3.2 of [RFC4120]. If the client's realm is the anonymous realm,
|
||||||
|
the abbreviation forms [RFC4120] that build on the preceding name
|
||||||
|
cannot be used at the start of the transited encoding. The null-
|
||||||
|
subfield form (e.g., encoding ending with ",") [RFC4120] could not be
|
||||||
|
used next to the anonymous realm that can potentially be at the
|
||||||
|
beginning where the client realm is filled in.
|
||||||
|
|
||||||
|
The KDC fills out the authtime field of the anonymous ticket in the
|
||||||
|
reply as follows: If the anonymous ticket is returned in an AS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
exchange, the authtime field of the ticket contains the request time.
|
||||||
|
If the anonymous ticket is returned in a TGS exchange, the authtime
|
||||||
|
field contains the authtime of the ticket in the PA-TGS-REQ pre-
|
||||||
|
authentication data [RFC4120]. An anonymous ticket can be renewed,
|
||||||
|
and the authtime field of a renewed ticket is the authtime in the
|
||||||
|
anonymous ticket on which the renewed ticket was based.
|
||||||
|
|
||||||
|
If the client is anonymous and the KDC does not have a key to encrypt
|
||||||
|
the reply (this can happen when, for example, the KDC does not
|
||||||
|
support PKINIT [RFC4556]), the KDC MUST return an error message with
|
||||||
|
the code KDC_ERR_NULL_KEY [RFC4120] and there is no accompanying
|
||||||
|
e-data defined in this document.
|
||||||
|
|
||||||
|
If a client requires anonymous communication then the client MUST
|
||||||
|
check to make sure that the ticket in the reply is actually anonymous
|
||||||
|
by checking the presence of the anonymous ticket flag. This is
|
||||||
|
because KDCs ignore unknown KDC options. A KDC that does not
|
||||||
|
understand the request-anonymous KDC option will not return an error,
|
||||||
|
but will instead return a normal ticket.
|
||||||
|
|
||||||
|
The subsequent client and server communications then proceed as
|
||||||
|
described in [RFC4120].
|
||||||
|
|
||||||
|
A server accepting an anonymous service ticket may assume that
|
||||||
|
subsequent requests using the same ticket originate from the same
|
||||||
|
client. Requests with different tickets are likely to originate from
|
||||||
|
different clients.
|
||||||
|
|
||||||
|
|
||||||
|
5. GSS-API Implementation Notes
|
||||||
|
|
||||||
|
At the GSS-API [RFC2743] level, the use of an anonymous principal by
|
||||||
|
the initiator/client requires the initiator/client to assert the
|
||||||
|
"anonymous" flag when calling GSS_Init_Sec_Context().
|
||||||
|
|
||||||
|
GSS-API does not know or define "anonymous credentials", so the
|
||||||
|
(printable) name of the anonymous principal will rarely be used by or
|
||||||
|
relevant for the initiator/client. The printable name is relevant
|
||||||
|
for the acceptor/server when performing an authorization decision
|
||||||
|
based on the initiator name that is returned from the acceptor side
|
||||||
|
upon the successful security context establishment.
|
||||||
|
|
||||||
|
A GSS-API initiator MUST carefully check the resulting context
|
||||||
|
attributes from the initial call to GSS_Init_Sec_Context() when
|
||||||
|
requesting anonymity, because (as in the GSS-API tradition and for
|
||||||
|
backwards compatibility) anonymity is just another optional context
|
||||||
|
attribute. It could be that the mechanism doesn't recognize the
|
||||||
|
attribute at all or that anonymity is not available for some other
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
reasons -- and in that case the initiator must NOT send the initial
|
||||||
|
security context token to the acceptor, because it will likely reveal
|
||||||
|
the initiators identity to the acceptor, something that can rarely be
|
||||||
|
"un-done".
|
||||||
|
|
||||||
|
GSS-API defines the name_type GSS_C_NT_ANONYMOUS [RFC2743] to
|
||||||
|
represent the anonymous identity. In addition, Section 2.1.1 of
|
||||||
|
[RFC1964] defines the single string representation of a Kerberos
|
||||||
|
principal name with the name_type GSS_KRB5_NT_PRINCIPAL_NAME. For
|
||||||
|
the anonymous principals, the name component within the exportable
|
||||||
|
name as defined in Section 2.1.3 of [RFC1964] MUST signify the realm
|
||||||
|
name according to Section 2.1.1 of [RFC1964]. Note that in this
|
||||||
|
specification only the client/initiator can be anonymous.
|
||||||
|
|
||||||
|
Portable initiators are RECOMMENDED to use default credentials
|
||||||
|
whenever possible, and request anonymity only through the input
|
||||||
|
anon_req_flag [RFC2743] to GSS_Init_Sec_Context().
|
||||||
|
|
||||||
|
|
||||||
|
6. Security Considerations
|
||||||
|
|
||||||
|
Since KDCs ignore unknown options [RFC4120], a client requiring
|
||||||
|
anonymous communication needs to make sure that the ticket is
|
||||||
|
actually anonymous. This is because a KDC that that does not
|
||||||
|
understand the anonymous option would not return an anonymous ticket.
|
||||||
|
|
||||||
|
By using the mechanism defined in this specification, the client does
|
||||||
|
not reveal its identity to the server but its identity may be
|
||||||
|
revealed to the KDC of the server principal (when the server
|
||||||
|
principal is in a different realm than that of the client), and any
|
||||||
|
KDC on the cross-realm authentication path. The Kerberos client MUST
|
||||||
|
verify the ticket being used is indeed anonymous before communicating
|
||||||
|
with the server, otherwise the client's identity may be revealed
|
||||||
|
unintentionally.
|
||||||
|
|
||||||
|
In cases where specific server principals must not have access to the
|
||||||
|
client's identity (for example, an anonymous poll service), the KDC
|
||||||
|
can define server principal specific policy that insure any normal
|
||||||
|
service ticket can NEVER be issued to any of these server principals.
|
||||||
|
|
||||||
|
If the KDC that issued an anonymous ticket were to maintain records
|
||||||
|
of the association of identities to an anonymous ticket, then someone
|
||||||
|
obtaining such records could breach the anonymity. Additionally, the
|
||||||
|
implementations of most (for now all) KDC's respond to requests at
|
||||||
|
the time that they are received. Traffic analysis on the connection
|
||||||
|
to the KDC will allow an attacker to match client identities to
|
||||||
|
anonymous tickets issued. Because there are plaintext parts of the
|
||||||
|
tickets that are exposed on the wire, such matching by a third party
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
observer is relatively straightforward.
|
||||||
|
|
||||||
|
|
||||||
|
7. Acknowledgements
|
||||||
|
|
||||||
|
Clifford Neuman contributed the core notions of this document.
|
||||||
|
|
||||||
|
Ken Raeburn reviewed the document and provided suggestions for
|
||||||
|
improvements.
|
||||||
|
|
||||||
|
Martin Rex wrote the text for GSS-API considerations.
|
||||||
|
|
||||||
|
Nicolas Williams reviewed the GSS-API considerations section and
|
||||||
|
suggested ideas for improvements.
|
||||||
|
|
||||||
|
Sam Hartman and Nicolas Williams were great champions of this work.
|
||||||
|
|
||||||
|
In addition, the following individuals made significant
|
||||||
|
contributions: Jeffery Altman, Tom Yu, Chaskiel M Grundman, Love
|
||||||
|
Hoernquist Aestrand, and Jeffery Hutzelman.
|
||||||
|
|
||||||
|
|
||||||
|
8. IANA Considerations
|
||||||
|
|
||||||
|
Section 3 defines the anonymous Kerberos name and the anonymous
|
||||||
|
Kerberos realm based on [KRBNAM]. The IANA registry for [KRBNAM]
|
||||||
|
need to be updated to add references to this document.
|
||||||
|
|
||||||
|
|
||||||
|
9. Normative References
|
||||||
|
|
||||||
|
[KRBNAM] Zhu, L., "Additonal Kerberos Naming Contraints",
|
||||||
|
draft-ietf-krb-wg-naming, work in progress.
|
||||||
|
|
||||||
|
[RFC1964] Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
|
||||||
|
RFC 1964, June 1996.
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC3852] Housley, R., "Cryptographic Message Syntax (CMS)",
|
||||||
|
RFC 3852, July 2004.
|
||||||
|
|
||||||
|
[RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
|
||||||
|
Kerberos Network Authentication Service (V5)", RFC 4120,
|
||||||
|
July 2005.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
|
||||||
|
(TLS) Protocol Version 1.1", RFC 4346, April 2006.
|
||||||
|
|
||||||
|
[RFC4556] Zhu, L. and B. Tung, "Public Key Cryptography for Initial
|
||||||
|
Authentication in Kerberos (PKINIT)", RFC 4556, June 2006.
|
||||||
|
|
||||||
|
|
||||||
|
Authors' Addresses
|
||||||
|
|
||||||
|
Larry Zhu
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: lzhu@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
Paul Leach
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: paulle@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
Karthik Jaganathan
|
||||||
|
Microsoft Corporation
|
||||||
|
One Microsoft Way
|
||||||
|
Redmond, WA 98052
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: karthikj@microsoft.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft Kerberos Anonymity Support March 2007
|
||||||
|
|
||||||
|
|
||||||
|
Full Copyright Statement
|
||||||
|
|
||||||
|
Copyright (C) The IETF Trust (2007).
|
||||||
|
|
||||||
|
This document is subject to the rights, licenses and restrictions
|
||||||
|
contained in BCP 78, and except as set forth therein, the authors
|
||||||
|
retain all their rights.
|
||||||
|
|
||||||
|
This document and the information contained herein are provided on an
|
||||||
|
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||||
|
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
||||||
|
THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
|
||||||
|
|
||||||
|
|
||||||
|
Intellectual Property
|
||||||
|
|
||||||
|
The IETF takes no position regarding the validity or scope of any
|
||||||
|
Intellectual Property Rights or other rights that might be claimed to
|
||||||
|
pertain to the implementation or use of the technology described in
|
||||||
|
this document or the extent to which any license under such rights
|
||||||
|
might or might not be available; nor does it represent that it has
|
||||||
|
made any independent effort to identify any such rights. Information
|
||||||
|
on the procedures with respect to rights in RFC documents can be
|
||||||
|
found in BCP 78 and BCP 79.
|
||||||
|
|
||||||
|
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||||
|
assurances of licenses to be made available, or the result of an
|
||||||
|
attempt made to obtain a general license or permission for the use of
|
||||||
|
such proprietary rights by implementers or users of this
|
||||||
|
specification can be obtained from the IETF on-line IPR repository at
|
||||||
|
http://www.ietf.org/ipr.
|
||||||
|
|
||||||
|
The IETF invites any interested party to bring to its attention any
|
||||||
|
copyrights, patents or patent applications, or other proprietary
|
||||||
|
rights that may cover technology that may be required to implement
|
||||||
|
this standard. Please address the information to the IETF at
|
||||||
|
ietf-ipr@ietf.org.
|
||||||
|
|
||||||
|
|
||||||
|
Acknowledgment
|
||||||
|
|
||||||
|
Funding for the RFC Editor function is provided by the IETF
|
||||||
|
Administrative Support Activity (IASA).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Zhu, et al. Expires September 3, 2007 [Page 11]
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user