mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
379 lines
16 KiB
Plaintext
379 lines
16 KiB
Plaintext
|
INTERNET-DRAFT Ari Medvinsky
|
|||
|
draft-ietf-cat-kerberos-pk-tapp-03.txt Keen.com, Inc.
|
|||
|
Expires January 14, 2001 Matthew Hur
|
|||
|
Informational CyberSafe Corporation
|
|||
|
Sasha Medvinsky
|
|||
|
Motorola
|
|||
|
Clifford Neuman
|
|||
|
USC/ISI
|
|||
|
|
|||
|
Public Key Utilizing Tickets for Application Servers (PKTAPP)
|
|||
|
|
|||
|
|
|||
|
0. Status Of this Memo
|
|||
|
|
|||
|
This document is an Internet-Draft and is in full conformance with
|
|||
|
all provisions of Section 10 of RFC 2026. 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.
|
|||
|
|
|||
|
To learn the current status of any Internet-Draft, please check
|
|||
|
the "1id-abstracts.txt" listing contained in the Internet-Drafts
|
|||
|
Shadow Directories on ftp.ietf.org (US East Coast),
|
|||
|
nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
|
|||
|
munnari.oz.au (Pacific Rim).
|
|||
|
|
|||
|
The distribution of this memo is unlimited. It is filed as
|
|||
|
draft-ietf-cat-kerberos-pk-init-10.txt, and expires April 30,
|
|||
|
2000. Please send comments to the authors.
|
|||
|
|
|||
|
1. Abstract
|
|||
|
|
|||
|
Public key based Kerberos for Distributed Authentication[1], (PKDA)
|
|||
|
proposed by Sirbu & Chuang, describes PK based authentication that
|
|||
|
eliminates the use of a centralized key distribution center while
|
|||
|
retaining the advantages of Kerberos tickets. This draft describes how,
|
|||
|
without any modification, the PKINIT specification[2] may be used to
|
|||
|
implement the ideas introduced in PKDA. The benefit is that only a
|
|||
|
single PK Kerberos extension is needed to address the goals of PKINIT &
|
|||
|
PKDA.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2. Introduction
|
|||
|
|
|||
|
With the proliferation of public key cryptography, a number of public
|
|||
|
key extensions to Kerberos have been proposed to provide
|
|||
|
interoperability with the PK infrastructure and to improve the Kerberos
|
|||
|
authentication system [4]. Among these are PKINIT[2] (under development
|
|||
|
in the CAT working group) and more recently PKDA [1] proposed by Sirbu &
|
|||
|
Chuang of CMU. One of the principal goals of PKINIT is to provide for
|
|||
|
interoperability between a PK infrastructure and Kerberos. Using
|
|||
|
PKINIT, a user can authenticate to the KDC via a public key certificate.
|
|||
|
A ticket granting ticket (TGT), returned by the KDC, enables a PK user
|
|||
|
to obtain tickets and authenticate to kerberized services. The PKDA
|
|||
|
proposal goes a step further. It supports direct client to server
|
|||
|
authentication, eliminating the need for an online key distribution
|
|||
|
center. In this draft, we describe how, without any modification, the
|
|||
|
PKINIT protocol may be applied to achieve the goals of PKDA. For direct
|
|||
|
client to server authentication, the client will use PKINIT to
|
|||
|
authenticate to the end server (instead of a central KDC), which then,
|
|||
|
will issue a ticket for itself. The benefit of this proposal, is that a
|
|||
|
single PK extension to Kerberos can addresses the goals of PKINIT and
|
|||
|
PKDA.
|
|||
|
|
|||
|
|
|||
|
3. PKDA background
|
|||
|
|
|||
|
The PKDA proposal provides direct client to server authentication, thus
|
|||
|
eliminating the need for an online key distribution center. A client
|
|||
|
and server take part in an initial PK based authentication exchange,
|
|||
|
with an added caveat that the server acts as a Kerberos ticket granting
|
|||
|
service and issues a traditional Kerberos ticket for itself. In
|
|||
|
subsequent communication, the client makes use of the Kerberos ticket,
|
|||
|
thus eliminating the need for public key operations on the server. This
|
|||
|
approach has an advantage over SSL in that the server does not need to
|
|||
|
save state (cache session keys). Furthermore, an additional benefit, is
|
|||
|
that Kerberos tickets can facilitate delegation (see Neuman[3]).
|
|||
|
|
|||
|
Below is a brief overview of the PKDA protocol. For a more detailed
|
|||
|
description see [1].
|
|||
|
|
|||
|
SCERT_REQ: Client to Server
|
|||
|
The client requests a certificate from the server. If the server<65>s
|
|||
|
certificate is cached locally, SCERT_REQ and SCERT_REP are omitted.
|
|||
|
|
|||
|
SCERT_REP: Server to Client
|
|||
|
The server returns its certificate to the client.
|
|||
|
|
|||
|
PKTGS_REQ: Client to Server
|
|||
|
The client sends a request for a service ticket to the server. To
|
|||
|
authenticate the request, the client signs, among other fields, a time
|
|||
|
stamp and a newly generated symmetric key . The time stamp is used to
|
|||
|
foil replay attacks; the symmetric key is used by the server to secure
|
|||
|
the PKTGS_REP message.
|
|||
|
The client provides a certificate in the request (the certificate
|
|||
|
enables the server to verify the validity of the client<6E>s signature) and
|
|||
|
seals it along with the signed information using the server<65>s public
|
|||
|
key.
|
|||
|
|
|||
|
|
|||
|
PKTGS_REP: Server to Client
|
|||
|
The server returns a service ticket (which it issued for itself) along
|
|||
|
with the session key for the ticket. The session key is protected by
|
|||
|
the client-generated key from the PKTGS_REQ message.
|
|||
|
|
|||
|
AP_REQ: Client to Server
|
|||
|
After the above exchange, the client can proceed in a normal fashion,
|
|||
|
using the conventional Kerberos ticket in an AP_REQ message.
|
|||
|
|
|||
|
|
|||
|
4. PKINIT background
|
|||
|
|
|||
|
One of the principal goals of PKINIT is to provide for interoperability
|
|||
|
between a public key infrastructure and Kerberos. Using a public key
|
|||
|
certificate, a client can authenticate to the KDC and receive a TGT
|
|||
|
which enables the client to obtain service tickets to kerberized
|
|||
|
services.. In PKINIT, the AS-REQ and AS-REP messages remain the same;
|
|||
|
new preauthentication data types are used to conduct the PK exchange.
|
|||
|
Client and server certificates are exchanged via the preauthentication
|
|||
|
data. Thus, the exchange of certificates , PK authentication, and
|
|||
|
delivery of a TGT can occur in two messages.
|
|||
|
|
|||
|
Below is a brief overview of the PKINIT protocol. For a more detailed
|
|||
|
description see [2].
|
|||
|
|
|||
|
PreAuthentication data of AS-REQ: Client to Server
|
|||
|
The client sends a list of trusted certifiers, a signed PK
|
|||
|
authenticator, and its certificate. The PK authenticator, based on the
|
|||
|
Kerberos authenticator, contains the name of the KDC, a timestamp, and a
|
|||
|
nonce.
|
|||
|
|
|||
|
PreAuthentication data of AS-REP: Server to Client
|
|||
|
The server responds with its certificate and the key used for decrypting
|
|||
|
the encrypted part of the AS-REQ. This key is encrypted with the
|
|||
|
client<EFBFBD>s public key.
|
|||
|
|
|||
|
AP_REQ: Client to Server
|
|||
|
After the above exchange, the client can proceed in a normal fashion,
|
|||
|
using the conventional Kerberos ticket in an AP_REQ message.
|
|||
|
|
|||
|
|
|||
|
5. Application of PKINIT to achieve equivalence to PKDA
|
|||
|
|
|||
|
While PKINIT is normally used to retrieve a ticket granting ticket
|
|||
|
(TGT), it may also be used to request an end service ticket. When used
|
|||
|
in this fashion, PKINIT is functionally equivalent to PKDA. We
|
|||
|
introduce the concept of a local ticket granting server (LTGS) to
|
|||
|
illustrate how PKINIT may be used for issuing end service tickets based
|
|||
|
on public key authentication. It is important to note that the LTGS may
|
|||
|
be built into an application server, or it may be a stand-alone server
|
|||
|
used for issuing tickets within a well-defined realm, such as a single
|
|||
|
machine. We will discuss both of these options.
|
|||
|
|
|||
|
|
|||
|
5.1. The LTGS
|
|||
|
|
|||
|
The LTGS processes the Kerberos AS-REQ and AS-REP messages with PKINIT
|
|||
|
preauthentication data. When a client submits an AS-REQ to the LTGS, it
|
|||
|
specifies an application server, in order to receive an end service
|
|||
|
ticket instead of a TGT.
|
|||
|
|
|||
|
|
|||
|
5.1.1. The LTGS as a standalone server
|
|||
|
|
|||
|
The LTGS may run as a separate process that serves applications which
|
|||
|
reside on the same machine. This serves to consolidate administrative
|
|||
|
functions and provide an easier migration path for a heterogeneous
|
|||
|
environment consisting of both public key and Kerberos. The LTGS would
|
|||
|
use one well-known port (port #88 - same as the KDC) for all message
|
|||
|
traffic and would share a symmetric with each service. After the client
|
|||
|
receives a service ticket, it then contacts the application server
|
|||
|
directly. This approach is similar to the one suggested by Sirbu , et
|
|||
|
al [1].
|
|||
|
|
|||
|
5.1.1.1. Ticket Policy for PKTAPP Clients
|
|||
|
|
|||
|
It is desirable for the LTGS to have access to a PKTAPP client ticket
|
|||
|
policy. This policy will contain information for each client, such as
|
|||
|
the maximum lifetime of a ticket, whether or not a ticket can be
|
|||
|
forwardable, etc. PKTAPP clients, however, use the PKINIT protocol for
|
|||
|
authentication and are not required to be registered as Kerberos
|
|||
|
principals.
|
|||
|
|
|||
|
As one possible solution, each public key Certification Authority could
|
|||
|
be registered in a secure database, along with the ticket policy
|
|||
|
information for all PKTAPP clients that are certified by this
|
|||
|
Certification Authority.
|
|||
|
|
|||
|
5.1.1.2. LTGS as a Kerberos Principal
|
|||
|
|
|||
|
Since the LTGS serves only PKTAPP clients and returns only end service
|
|||
|
tickets for other services, it does not require a Kerberos service key
|
|||
|
or a Kerberos principal identity. It is therefore not necessary for the
|
|||
|
LTGS to even be registered as a Kerberos principal.
|
|||
|
|
|||
|
The LTGS still requires public key credentials for the PKINIT exchange,
|
|||
|
and it may be desired to have some global restrictions on the Kerberos
|
|||
|
tickets that it can issue. It is recommended (but not required) that
|
|||
|
this information be associated with a Kerberos principal entry for the
|
|||
|
LTGS.
|
|||
|
|
|||
|
|
|||
|
5.1.1.3. Kerberos Principal Database
|
|||
|
|
|||
|
Since the LTGS issues tickets for Kerberos services, it will require
|
|||
|
access to a Kerberos principal database containing entries for at least
|
|||
|
the end services. Each entry must contain a service key and may also
|
|||
|
contain restrictions on the service tickets that are issued to clients.
|
|||
|
It is recommended that (for ease of administration) this principal
|
|||
|
database be centrally administered and distributed (replicated) to all
|
|||
|
hosts where an LTGS may be running.
|
|||
|
|
|||
|
In the case that there are other clients that do not support PKINIT
|
|||
|
protocol, but still need access to the same Kerberos services, this
|
|||
|
principal database will also require entries for Kerberos clients and
|
|||
|
for the TGS entries.
|
|||
|
|
|||
|
5.1.2. The LTGS as part of an application server
|
|||
|
|
|||
|
The LTGS may be combined with an application server. This accomplishes
|
|||
|
direct client to application server authentication; however, it requires
|
|||
|
that applications be modified to process AS-REQ and AS-REP messages.
|
|||
|
The LTGS would communicate over the port assigned to the application
|
|||
|
server or over the well known Kerberos port for that particular
|
|||
|
application.
|
|||
|
|
|||
|
5.1.2.2. Ticket Policy for PKTAPP Clients
|
|||
|
|
|||
|
Application servers normally do not have access to a distributed
|
|||
|
principal database. Therefore, they will have to find another means of
|
|||
|
keeping track of the ticket policy information for PKTAPP clients. It is
|
|||
|
recommended that this ticket policy be kept in a directory service (such
|
|||
|
as LDAP).
|
|||
|
|
|||
|
It is critical, however, that both read and write access to this ticket
|
|||
|
policy is restricted with strong authentication and encryption to only
|
|||
|
the correct application server. An unauthorized party should not have
|
|||
|
the authority to modify the ticket policy. Disclosing the ticket policy
|
|||
|
to a 3rd party may aid an adversary in determining the best way to
|
|||
|
compromise the network.
|
|||
|
|
|||
|
It is just as critical for the application server to authenticate the
|
|||
|
directory service. Otherwise an adversary could use a man-in-the-middle
|
|||
|
attack to substitute a false ticket policy with a false directory
|
|||
|
service.
|
|||
|
|
|||
|
5.1.2.3. LTGS Credentials
|
|||
|
|
|||
|
Each LTGS (combined with an application service) will require public key
|
|||
|
credentials in order to use the PKINIT protocol. These credentials can
|
|||
|
be stored in a single file that is both encrypted with a password-
|
|||
|
derived symmetric key and also secured by an operating system. This
|
|||
|
symmetric key may be stashed somewhere on the machine for convenience,
|
|||
|
although such practice potentially weakens the overall system security
|
|||
|
and is strongly discouraged.
|
|||
|
|
|||
|
For added security, it is recommended that the LTGS private keys are
|
|||
|
stored inside a temper-resistant hardware module that requires a pin
|
|||
|
code for access.
|
|||
|
|
|||
|
|
|||
|
5.1.2.4. Compatibility With Standard Kerberos
|
|||
|
|
|||
|
Even though an application server is combined with the LTGS, for
|
|||
|
backward compatibility it should still accept service tickets that have
|
|||
|
been issued by the KDC. This will allow Kerberos clients that do not
|
|||
|
support PKTAPP to authenticate to the same application server (with the
|
|||
|
help of a KDC).
|
|||
|
|
|||
|
5.1.3. Cross-Realm Authentication
|
|||
|
|
|||
|
According to the PKINIT draft, the client's realm is the X.500 name of
|
|||
|
the Certification Authority that issued the client certificate. A
|
|||
|
Kerberos application service will be in a standard Kerberos realm, which
|
|||
|
implies that the LTGS will need to issue cross-realm end service
|
|||
|
tickets. This is the only case, where cross-realm end service tickets
|
|||
|
are issued. In a standard Kerberos model, a client first acquires a
|
|||
|
cross-realm TGT, and then gets an end service ticket from the KDC that
|
|||
|
is in the same realm as the application service.
|
|||
|
|
|||
|
6. Protocol differences between PKINIT and PKDA
|
|||
|
|
|||
|
Both PKINIT and PKDA will accomplish the same goal of issuing end
|
|||
|
service tickets, based on initial public key authentication. A PKINIT-
|
|||
|
based implementation and a PKDA implementation would be functionally
|
|||
|
equivalent. The primary differences are that 1)PKDA requires the client
|
|||
|
to create the symmetric key while PKINIT requires the server to create
|
|||
|
the key and 2)PKINIT accomplishes in two messages what PKDA accomplishes
|
|||
|
in four messages.
|
|||
|
|
|||
|
7. Summary
|
|||
|
|
|||
|
The PKINIT protocol can be used, without modification to facilitate
|
|||
|
client to server authentication without the use of a central KDC. The
|
|||
|
approach described in this draft (and originally proposed in PKDA[1])
|
|||
|
is essentially a public key authentication protocol that retains the
|
|||
|
advantages of Kerberos tickets.
|
|||
|
|
|||
|
Given that PKINIT has progressed through the CAT working group of the
|
|||
|
IETF, with plans for non-commercial distribution (via MIT<49>s v5 Kerberos)
|
|||
|
as well as commercial support, it is worthwhile to provide PKDA
|
|||
|
functionality, under the PKINIT umbrella.
|
|||
|
|
|||
|
8. Security Considerations
|
|||
|
|
|||
|
PKTAPP is based on the PKINIT protocol and all security considerations
|
|||
|
already listed in [2] apply here.
|
|||
|
|
|||
|
When the LTGS is implemented as part of each application server, the
|
|||
|
secure storage of its public key credentials and of its ticket policy
|
|||
|
are both a concern. The respective security considerations are already
|
|||
|
covered in sections 5.1.2.3 and 5.1.2.2 of this document.
|
|||
|
|
|||
|
|
|||
|
9. Bibliography
|
|||
|
|
|||
|
[1] M. Sirbu, J. Chuang. Distributed Authentication in Kerberos Using
|
|||
|
Public Key Cryptography. Symposium On Network and Distributed System
|
|||
|
Security, 1997.
|
|||
|
|
|||
|
[2] B. Tung, C. Neuman, M. Hur, A. Medvinsky, S. Medvinsky, J. Wray,
|
|||
|
J. Trostle. Public Key Cryptography for Initial Authentication in
|
|||
|
Kerberos. Internet Draft, October 1999.
|
|||
|
(ftp://ietf.org/internet-drafts/draft-ietf-cat-kerberos-pk-init-10.txt)
|
|||
|
|
|||
|
[3] C. Neuman, Proxy-Based Authorization and Accounting for
|
|||
|
Distributed Systems. In Proceedings of the 13th International
|
|||
|
Conference on Distributed Computing Systems, May 1993.
|
|||
|
|
|||
|
[4] J. Kohl, C. Neuman. The Kerberos Network Authentication Service
|
|||
|
(V5). Request for Comments 1510.
|
|||
|
|
|||
|
10. Expiration Date
|
|||
|
|
|||
|
This draft expires April 24, 2000.
|
|||
|
|
|||
|
11. Authors
|
|||
|
|
|||
|
Ari Medvinsky
|
|||
|
Keen.com, Inc.
|
|||
|
150 Independence Dr.
|
|||
|
Menlo Park, CA 94025
|
|||
|
Phone +1 650 289 3134
|
|||
|
E-mail: ari@keen.com
|
|||
|
|
|||
|
Matthew Hur
|
|||
|
CyberSafe Corporation
|
|||
|
1605 NW Sammamish Road
|
|||
|
Issaquah, WA 98027-5378
|
|||
|
Phone: +1 425 391 6000
|
|||
|
E-mail: matt.hur@cybersafe.com
|
|||
|
|
|||
|
Alexander Medvinsky
|
|||
|
Motorola
|
|||
|
6450 Sequence Dr.
|
|||
|
San Diego, CA 92121
|
|||
|
Phone: +1 858 404 2367
|
|||
|
E-mail: smedvinsky@gi.com
|
|||
|
|
|||
|
Clifford Neuman
|
|||
|
USC Information Sciences Institute
|
|||
|
4676 Admiralty Way Suite 1001
|
|||
|
Marina del Rey CA 90292-6695
|
|||
|
Phone: +1 310 822 1511
|
|||
|
E-mail: bcn@isi.edu
|