Internet DRAFT - draft-zrelli-krb-xkdcp

draft-zrelli-krb-xkdcp






Network Working Group                                          S. Zrelli
Internet-Draft                                                Y. Shinoda
Expires: December 19, 2006                                         JAIST
                                                               S. Sakane
                                                               K. Kamada
                                                 Yokogawa Electric Corp.
                                                             M. Ishiyama
                                                           Toshiba Corp.
                                                           June 17, 2006


 XKDCP, the Inter-KDC protocol for cross-realm operations in Kerberos.
                       draft-zrelli-krb-xkdcp-00

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 December 19, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

   This memo proposes protocol extensions to the Kerberos protocol
   specification.  The extension (hereafter called XKDCP) offers a new
   cross-realm protocol for Kerberos.  The XKDCP extension defines a



Zrelli, et al.          Expires December 19, 2006               [Page 1]

Internet-Draft                    XKDCP                        June 2006


   protocol between Kerberos Key Distribution Centers (KDCs) that allows
   a KDC to build credentials even when the client or the requested
   service is not registered in the KDC's database (but registered in
   another KDC's database).  The XKDCP extension defines two protocols:
   XTGSP (Inter Ticket Granting Service Protocol) and XASP (Inter
   Authentication Service Protocol).  The XTGSP protocol can be used in
   remote access scenarios to allow the local KDC to deliver credentials
   for services located in remote realms.  On the other hand, the XASP
   protocol can be used in case of cross-realm roaming scenarios to
   allow the visited KDC to deliver credentials for roaming users.









































Zrelli, et al.          Expires December 19, 2006               [Page 2]

Internet-Draft                    XKDCP                        June 2006


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.1   Kerberos basic operations  . . . . . . . . . . . . . . . .  4
     1.2   Kerberos cross-realm operations  . . . . . . . . . . . . .  6
     1.3   Terminology  . . . . . . . . . . . . . . . . . . . . . . .  8
     1.4   Overview of the extension  . . . . . . . . . . . . . . . .  9
   2.  Motivations  . . . . . . . . . . . . . . . . . . . . . . . . . 11
     2.1   Inter realm trust model  . . . . . . . . . . . . . . . . . 11
     2.2   Exposure of the KDC  . . . . . . . . . . . . . . . . . . . 12
     2.3   Client centralized exchanges . . . . . . . . . . . . . . . 12
     2.4   Pre-authentication problem in roaming scenarios  . . . . . 12
   3.  XKDCP: the cross-realm authentication protocol . . . . . . . . 13
     3.1   Introduction . . . . . . . . . . . . . . . . . . . . . . . 13
     3.2   Overview of the XTGSP extension  . . . . . . . . . . . . . 13
     3.3   Overview of the XASP extension . . . . . . . . . . . . . . 17
     3.4   The XKDCP padata . . . . . . . . . . . . . . . . . . . . . 20
     3.5   XTGSP protocol details . . . . . . . . . . . . . . . . . . 23
       3.5.1   The KRB_TGS_REQ message  . . . . . . . . . . . . . . . 23
       3.5.2   The XTGSP-REQ message  . . . . . . . . . . . . . . . . 24
       3.5.3   The XTGSP-REP message  . . . . . . . . . . . . . . . . 25
       3.5.4   The KRB_TGS_REP message  . . . . . . . . . . . . . . . 27
     3.6   The XASP protocol details  . . . . . . . . . . . . . . . . 29
       3.6.1   The KRB_AS_REQ message . . . . . . . . . . . . . . . . 29
       3.6.2   The XASP-REQ message . . . . . . . . . . . . . . . . . 29
       3.6.3   The XASP-REP message . . . . . . . . . . . . . . . . . 31
       3.6.4   The KRB_AS_REP message . . . . . . . . . . . . . . . . 33
     3.7   Realm policy . . . . . . . . . . . . . . . . . . . . . . . 35
   4.  Constants  . . . . . . . . . . . . . . . . . . . . . . . . . . 37
     4.1   XKDCP error codes  . . . . . . . . . . . . . . . . . . . . 37
     4.2   XKDCP message types  . . . . . . . . . . . . . . . . . . . 37
   5.  Security considerations  . . . . . . . . . . . . . . . . . . . 38
     5.1   Integrity protection . . . . . . . . . . . . . . . . . . . 38
     5.2   Confidentiality  . . . . . . . . . . . . . . . . . . . . . 38
     5.3   DoS and replay protection  . . . . . . . . . . . . . . . . 38
   6.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 39
   7.  Normative References . . . . . . . . . . . . . . . . . . . . . 39
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 39
   A.  ASN.1 module . . . . . . . . . . . . . . . . . . . . . . . . . 41
       Intellectual Property and Copyright Statements . . . . . . . . 44











Zrelli, et al.          Expires December 19, 2006               [Page 3]

Internet-Draft                    XKDCP                        June 2006


1.  Introduction

1.1  Kerberos basic operations

   Kerberos [RFC4120] is a widely deployed authentication system.  The
   authentication process in Kerberos involves principals and a Key
   Distribution Center (KDC).  The principals can be users or services.
   Each KDC maintains a principals database and shares a secret key with
   each registered principal.

   The authentication process allows a user to acquire the needed
   credentials from the KDC.  These credentials allow services to
   authenticate the users before granting them access to the resources.
   An important part of the credentials are called Tickets.  There are
   two kind of tickets: Ticket Granting Ticket (TGT) and Service Ticket
   (ST).  The TGT is obtained periodically from the KDC and has a
   limited limit after which it expires and the user must renew it.  The
   TGT is used to obtain the other kind of tickets (Service Tickets).
   The user obtains the TGT from the Authentication Service (AS), a
   logical component of the KDC.  The process of obtaining a TGT is
   referred to as 'AS exchange'.  When a TGT request is issued by some
   user, the AS responds by sending a reply packet containing the
   credentials which consists of the TGT along with a random key called
   'TGS Session Key'.  The TGT contains a set of information encrypted
   using a secret key associated with a special service referred to as
   TGS (Ticket Granting Service).  The TGS session key is encrypted
   using the user's key so that the user can obtain the TGS session key
   only if she knows the secret key shared with the KDC.  The TGT then
   is used to obtain Service Tickets from the Ticket Granting Service
   (TGS)- the second component of the KDC.  The process of obtaining
   service tickets is referred to as 'TGS exchange'.  The request for a
   service ticket consists on a packet containing a TGT and an
   'Authenticator'.  The Authenticator is encrypted using the TGS
   session key and contains the identity of the user as well as time-
   stamps (for protection against replay attacks).  After decrypting the
   TGT (which was encrypted by the AS using the TGS's secret key), the
   TGS extracts the TGS session key.  Using that session key, it
   decrypts the Authenticator and authenticates the user.  Finally, the
   TGS issues the credentials requested by the user, these credentials
   consists on a service ticket and a session key that will be used to
   authenticate the user with the desired application service.

   Figure 1 shows the different exchanges between the client, the KDC
   and the service.







Zrelli, et al.          Expires December 19, 2006               [Page 4]

Internet-Draft                    XKDCP                        June 2006


                                                      KDC
                         +-------------------------------+   +---------+
   Client                |    AS                   TGS   |   |   SVC   |
   |                     +----+--------------------+-----+   +----+----+
   |                          |                    |              |
   |     KRB_AS_REQ [1]       |                    |              |
   | -----------------------> |                    |              |
   |                          |                    |              |
   |     KRB_AS_REP [2]       |                    |              |
   | <----------------------- |                    |              |
   |                          |                    |              |
   |                   KRB_TGS_REQ  [3]            |              |
   | --------------------------------------------> |              |
   |                          |                    |              |
   |                   KRB_TGS_REP  [4]            |              |
   | <-------------------------------------------- |              |
   |                          |                    |              |
   |                          |                    |              |
   |                          |                    |              |
   |                             KRB_AP_REQ   [5]                 |
   | -----------------------------------------------------------> |
   |                          |                    |              |
   |                             KRB_AP_REP   [6]                 |
   | <----------------------------------------------------------- |
   |                          |                    |              |
   |                          |                    |              |

























Zrelli, et al.          Expires December 19, 2006               [Page 5]

Internet-Draft                    XKDCP                        June 2006


   [1] Client -> AS     : Client_ID, Nonce1

   [2] AS     -> Client : [Client_ID, TimeStamp1, TGS_SK]_TGS_K,
                          [Nonce1, TGS_SK]_Client_K

   [3] Client -> TGS    : [Client_ID, TimeStamp1, TGS_SK]_TGS_K,
                          [Client_ID, TimeStamp2]_TGS_SK,
                          SVC_ID, Nonce2

   [4] TGS    -> Client : [Client_ID, TimeStamp3, SK]_SVC_K,
                          [Nonce2, SK]_TGS_SK

   [5] Client -> SVC    : [Client_ID, TimeStamp3, SK]_SVC_K,
                          [Client_ID, TimeStamp4]_SK,

   [6] SVC    -> Client : [Client_ID, TimeStamp4]_SK


   Notation :
   ----------

   Client_ID : Principal name of the client
   [A]_x     : Content A is encrypted using secret key x
   A_K       : Secret key of principal A
   TGS_SK    : TGS session key
   SK        : Session key
   SVC       : An application service
   SVC_ID    : Principal name of the application service


                 Figure 1: The Kerberos Protocol exchanges

   For more details about the different exchanges and the exact message
   specifications, refer to [RFC4120].

1.2  Kerberos cross-realm operations

   The Kerberos protocol offers cross-realm authentication capabilities.
   This allows users to obtain service tickets to access resources in
   foreign realms.  In order to access such services, the users first
   contact their home KDC asking for a TGT that will be used with the
   TGS of the foreign realm (message 1 of Figure 2).  If the home realm
   and the foreign realm share keys and have an established trust
   relationship, the home KDC delivers the requested TGT.

   However, if the home realm does not share cross-realm keys with the
   foreign realm, the home KDC will provide a TGT that can be used with
   an intermediary foreign realm that is likely to be sharing cross-



Zrelli, et al.          Expires December 19, 2006               [Page 6]

Internet-Draft                    XKDCP                        June 2006


   realm keys with the target realm (message 2 of Figure 2).  The client
   can use this 'intermediary TGT' to communicate with the intermediary
   KDC (message 3 of Figure 2) which will iterate the actions taken by
   the home KDC: If the intermediary KDC does not share cross-realm keys
   with the target foreign realm it will point the user to another
   intermediary KDC (just as in the first exchange between the user and
   its home KDC).  However, in the other case (when it shares cross-
   realm keys with the target realm), the intermediary KDC will issue a
   TGT that can be used with the KDC of the target realm (message 4 of
   Figure 2).

   After obtaining a TGT for the desired foreign realm, the client uses
   it to obtain service tickets from the TGS of the foreign realm
   (messages 5 and 6 of Figure 2).  Finally the user authenticates to
   the service using the service ticket.



   Figure 2 shows the exchanges between the different entities involved
   in a cross-realm authentication aiming at delivering a service ticket
   to a client when the service is deployed in a foreign realm.






























Zrelli, et al.          Expires December 19, 2006               [Page 7]

Internet-Draft                    XKDCP                        June 2006


                                +-------+
                                |       |
                    ST-SRV?  5  | KDC-T | 6  ST-SRV
          +-------------------->|       |---------------------+
          |                     +-------+                     |
          |                                                   |
          |                     +-------+                     |
          |         TGT-T?   3  |       | 4  TGT-T            |
          |      +------------->| KDC-I |--------------+      |
          |      |              |       |              |      |
          |      |              +-------+              |      |
          |      |                                     |      |
          |      |              +-------+              |      |
          |      |  TGT-T?   1  |       | 2  TGT-I     |      |
          |      |      +------>| KDC-H |-------+      |      |
          |      |      |       |       |       |      |      |
          |      |      |       +-------+       |      |      |
          |      |      |                       |      |      |
          |      |      |                       |      |      |
          |      |      +------ +--------+ <----+      |      |
          |      +------------- | Client | <-----------+      |
          +-------------------- +--------+ <------------------+






   H      : Home realm
   I      : Intermediary realm
   T      : Target realm
   KDC-X  : KDC of realm X (where X in {H,I,T})
   TGT-X ?: A KRB_TGS_REQ requesting a TGT for realm X
   ST-SRV?: A KRB_TGS_REQ requesting a service ticket for service SRV
   TGT-X  : A KRB_TGS_REP that contains a a TGT for realm X
   ST-SRV : A KRB_TGS_REP that contains a service ticket for service SRV

   Figure 2: The Kerberos Protocol exchanges for cross-realm operations


1.3  Terminology

   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].

   The following terms are used in this document :




Zrelli, et al.          Expires December 19, 2006               [Page 8]

Internet-Draft                    XKDCP                        June 2006


   Local realm : The realm where the client is physically (or
      topologically) located.  The client can be a registered user or
      principal in the local realm or she can be a visitor in the local
      realm.

   Remote realm : A realm that is different from the local realm.

   Home realm : The realm where the client is registered as a Kerberos
      principal.

   Foreign realm : A realm that is different from the home realm.

   Roaming client/user : A user that is being physically (or
      topologically) located in a realm that is not her home realm.

   Visited realm : When a client is in a roaming situation, the realm
      where she is located is referred to as the visited realm.  The
      visited realm is considered as a local realm from the client's
      point of view.

   TGS session key : The session key that is shared between the TGS and
      the client.  This session key corresponds to the field 'key' of
      the EncASRepPart in the TGS-REP message.

   Service session key : The session key that is shared between the
      service and the client.  This session key corresponds to the field
      'key' of the EncTGSRepPart in the AS-REP message.

   TGS : The KDC is logically divided into two main services, one of
      these services is the TGS (Ticket Granting Service), the TGS
      provides service tickets to clients with valid TGTs

   AS : The authentication service (AS), is the part of the KDC that
      authenticates clients and delivers TGTs.


1.4  Overview of the extension

   The extension described in this document augments the specification
   of the Kerberos protocol as follows :

   o  Extension of the TGS exchange :

      *  Clients can issue KRB_TGS_REQ [RFC4120] messages to any KDC for
         which they have a valid TGT.

      *  When a KRB_TGS_REQ message can not be processed by the TGS
         because the requested service is registered in a different



Zrelli, et al.          Expires December 19, 2006               [Page 9]

Internet-Draft                    XKDCP                        June 2006


         realm, then the TGS issues a message to the TGS of the remote
         realm (where the service is registered) requesting a service
         ticket and the associated service session key, on behalf of the
         client.  The communication between the two KDCs is protected
         using public key cryptography.

   o  Extension of the AS exchange :

      *  Clients can issue KRB_AS_REQ [RFC4120] messages to any KDC in
         order to a obtain TGT for that KDC.

      *  when a client issues a KRB_AS_REQ message [RFC4120] to a KDC
         where she is not registered, the foreign KDC identifies the
         client's home realm and initiates an exchange with client's
         home KDC.  The result of this exchange is that the foreign KDC
         has all the required information to build the KRB_AS_REP
         message [RFC4120] and send it to the client.  This exchange
         between the two KDCs is protected and authenticated using the
         public-keys of both KDCs.
































Zrelli, et al.          Expires December 19, 2006              [Page 10]

Internet-Draft                    XKDCP                        June 2006


2.  Motivations

   This document defines an alternative to Kerberos cross-realm
   operations as specified in [RFC4120].  The protocol, here after
   called XKDCP, defines exchanges between KDCs when cross-realm
   operations are involved.  The motivations behind this extension are
   to fulfill new needs and enhance the cross-realm operations in
   general.

   There are several aspects in the Kerberos-cross realm operations that
   can benefit from enhancement.  In certain cases, the semantic of the
   current cross-realm protocol introduces security risks, in other
   cases, the Kerberos protocol can not be used at all.  The following
   sections list the aspects where the Kerberos cross-realm protocol can
   be enhanced.  The actual extension defined in this document aims at
   resolving all these issues.

2.1  Inter realm trust model

   Kerberos offers cross-realm authentication that allows users to
   access services managed by foreign realms.  The cross-realm
   operations assumes that realms have a direct or indirect trust
   relationships.

   A direct trust relationship means that the realms involved in the
   cross-realm authentication share keys and their respective TGS
   principals are registered in each other's KDC.  When direct trust
   relationships are used, the KDC of each realm must maintain keys with
   all foreign realms.  This can become a cumbersome task when the
   number of realms increase.  Therefore, cross-realm authentication
   based on indirect trust relationships, offer better scalability.

   Indirect trust relationship means that there is a 'chain of trust'
   linking the two realms.  This can be performed by having a common
   trusted realm or a chain of intermediary trusted realms.

   When the realms belong to the same institution, a chain of trust can
   be determined by the client or the KDC by following the DNS domain
   hierarchy and supposing that the parent domains share keys with all
   its child sub-domains.  However, when the inter-realm trust model
   does not follow the hierarchic approach, the trust path must be
   specified manually.

   When intermediary realms are involved, the success of the cross-realm
   authentication completely depends on the realms that are part of the
   authentication path.  If any of the realms in the authentication path
   is not available, then the principals of the end-realms can not
   perform cross-realm operations.  Moreover, as described in [CJSW05]



Zrelli, et al.          Expires December 19, 2006              [Page 11]

Internet-Draft                    XKDCP                        June 2006


   any KDC in the authentication path can learn the session key that
   will be used between the client and the desired service, this means
   that any intermediary realm is able to spoof the identify of the
   service and the client as well as to eavesdrop on the communication
   between the client and the server.

2.2  Exposure of the KDC

   One of the assumption made when allowing cross-realm operations in
   Kerberos is that users can communicate with KDCs located in remote
   realms.  This practice introduces security threats because KDCs are
   open to the public.  Administrators may think of restricting the
   access to the KDC to the trusted realms only.  However, this approach
   is not scalable and does not really protect the KDC.  Indeed, when
   the remote realms have several IP prefixes (e.g. a company with
   offices located world wide), then the administrator of the local KDC
   must collect the list of prefixes that belong to this company.  The
   Filtering rules must then explicitly allow the incoming traffic from
   any host that belongs to one of these prefixes.  This makes the
   administrator's tasks more complicated and prone to human errors.  On
   the other hand, when ranges of external IP addresses are allowed to
   communicate with the KDC, the risk of becoming target to attacks from
   remote malicious users increases.

2.3  Client centralized exchanges

   In the cross-realm operations, Kerberos clients have to perform TGS
   exchanges with all the KDCs in the trust path, including the home KDC
   and the target KDC.  In some cases where the client has limited
   computational capabilities, the overhead of these cross-realm
   exchanges may grow into unacceptable delays.  Furthermore, if the
   number or intermediary realms increases, the delay introduced by the
   cross-realm messages can result in unacceptable delays.

2.4  Pre-authentication problem in roaming scenarios

   In roaming scenarios, the client needs to contact her home KDC to
   obtain a cross-realm TGT for the local (or visited) realm.  However,
   the policy of the network access providers usually does not allow
   clients to communicate with hosts in the Internet unless they provide
   valid authentication credentials.  In this manner, the client falls
   in a deadlock situation where two resources are inter-dependent; the
   Internet connection is needed to contact the home KDC and for
   obtaining credentials, and on the other hand, the Internet connection
   is only granted for clients who have valid credentials.  As a result,
   the Kerberos protocol can not be used as it is for authenticating
   roaming clients requesting network access.




Zrelli, et al.          Expires December 19, 2006              [Page 12]

Internet-Draft                    XKDCP                        June 2006


3.  XKDCP: the cross-realm authentication protocol

3.1  Introduction

   In the standard Kerberos specification, when a client wishes to
   obtain credentials for a certain service, she must issue a request
   for a service ticket to the KDC where the service is registered.  The
   XKDCP extension allows the client to obtain the service ticket from
   any KDC for which she already has a TGT.

   On the other hand, the XKDCP extension allows a client to obtain a
   TGT for any KDC after only one AS exchange with the target KDC.

   XKDCP extends the Kerberos protocol [RFC4120] by adding two exchanges
   called XASP and XTGSP.

   o  XTGSP (Inter-TGS Protocol) : When a TGS can not process a request
      for a service ticket because the service's realm is different from
      the TGS's realm, then the XTGSP protocol can be used between the
      TGS of both realms to build the desired service ticket.  When
      XTGSP is used, the client does not need to communicate with the
      KDC in which the service is registered.  The TGSs for which the
      client has already obtained a TGT is capable of delivering the
      service ticket after using the XTGSP protocol with the remote TGS.

   o  XASP (Inter-AS Protocol) : When an AS can not process a client
      request (a KRB_AS_REQ message) because the client does not belong
      to the local realm, the XASP extension can be used between the
      visited AS and the home AS to build the required credentials (a
      TGT) for the roaming client.

   XASP and XTGSP extend the Kerberos messages by exploiting the pre-
   authentication data field 'padata' in the KRB_KDC_REQ and KRB_KDC_REP
   messages [RFC4120].  The 'padata' field is used as a typed hole and
   employed to convey information related to the XKDCP protocol.  The
   specification of the new padata type is detailed in Section 3.4.  The
   details of the XASP and the XTGSP protocols can be found in
   Section 3.6 and Section 3.5 respectively.

3.2  Overview of the XTGSP extension

   XTGSP allows users to obtain service tickets from a KDC even if the
   service is not registered in that KDC.

   The typical use of XTGSP is in remote access scenarios where a user
   has a TGT for a local KDC and wishes to access a service deployed in
   a remote realm.  The advantage of using the XTGSP protocol is that
   the client does not need to have a cross-realm TGT for the target



Zrelli, et al.          Expires December 19, 2006              [Page 13]

Internet-Draft                    XKDCP                        June 2006


   realm deploying the service.  Moreover, the client does not need to
   contact the remote KDC at all since the local KDC will deliver the
   service ticket that can be used directly to authenticate with the
   remote service.  In fact, from the client's point of view, the local
   KDC delivers the service ticket as if the remote service was
   registered in the local realm.  The cross-realm operations are
   managed by the local KDC and made transparent to the client.  The
   local KDC uses the XTGSP protocol with the KDC of the realm where the
   service is registered.  As a result of the XTGSP exchange, the local
   KDC acquires enough materials to be able to deliver the requested
   service ticket to the client.

   Figure 3 represents the different exchanges in a cross-realm
   operation, based on the XTGSP protocol, for delivering service ticket
   to a client.



                                     |
                                     |
                                     |

        +-------+              (2) XTGSP-REQ         +-------+
        |       |<-----------------------------------|       |
        | TGS-R |              XTGSP-REP (3)         | TGS-L |
        |       |----------------------------------->|       |
        +-------+                    |               +-------+
                                     |                  ^  |
                                     |                  |  |
                      +-------+      |               (1)|  |(4)
                      | SRV-R |      |      KRB_TGS_REQ |  | KRB_TGS_REP
                      +-------+      |                  |  |
                                     |                  |  v
                                     |                +------+
                                     |                |Client|
                                     |                +------+
                                     |
           Remote Realm (R)          |       Local Realm (L)













Zrelli, et al.          Expires December 19, 2006              [Page 14]

Internet-Draft                    XKDCP                        June 2006


   client         : A client that has a TGT for the local realm L
   TGS-L          : The TGS of the local realm L
   TGS-R          : The TGS of the remote realm R
   SRV-R          : A service registered in the remote realm R
   KRB_TGS_REQ    : A message requesting service ticket for the
                    remote service SRV-R
   KRB_TGS_REP    : A message containing a service ticket for
                    the servie SRV-R

                     Figure 3: The Inter-TGS protocol

   In the following, we assume that the client has already obtained a
   TGT that can be used with the TGS of the local realm (TGS-L).

   1.  Client -> TGS-L : KRB_TGS_REQ

       The client sends a KRB_TGS_REQ [RFC4120] to the local TGS asking
       for credentials required to access a certain remote service
       (SRV-R).

       The KRB_TGS_REQ message is built as specified in [RFC4120].  Note
       that the 'realm' field MUST be set to the realm name of the
       desired service.  In the scenario of Figure 3 the client MUST put
       the realm name 'R' in the 'realm' field of the KRB_TGS_REQ
       message.


   2.  TGS-L -> TGS-R : XTGSP-REQ

       TGS-L extracts the service's realm name from the field 'realm' of
       the client's request.  If the extracted realm name does not match
       with the local realm name, then TGS-L MUST use the XTGSP
       extension with the TGS of the remote realm (TGS-R).

       The goal of the XTGSP protocol is to enable the local KDC (TGS-L)
       to build a valid KRB_TGS_REP [RFC4120] in response to a
       KRB_TGS_REQ for a service that is not registered in the local
       realm.  TGS-L basically needs to build or have an EncTicketPart
       [RFC4120] as well as the session key associated with it.  The
       EncTicketPart is a component of the ticket included in the
       KRB_TGS_REP message, it must be encrypted using the secret key of
       the remote service (shared with the remote TGS only).  Since the
       only entity capable of building the EncTicketPart is the remote
       TGS (TGS-R), there is need for a protocol to request TGS-R to
       build the EncTicketPart component and to communicated it along
       with the associated service session key to TGS-L in a secure
       manner.  XTGSP was designed to fulfill this task.




Zrelli, et al.          Expires December 19, 2006              [Page 15]

Internet-Draft                    XKDCP                        June 2006


       The XTGSP-REQ message contains all the necessary information to
       enable TGS-R to build an EncTicketPart and to transmit it along
       with the associated session key ,in a secure manner, to TGS-L.
       The XTGSP-REQ message is built from the client's original
       KRB_TGS_REQ message (which contains all information about the
       requested credentials).  The XTGSP-REQ message is in fact a copy
       of the client's request extended using the 'padata' field.  The
       'padata' field defined by the XKDCP extension includes
       information for cross-realm operations as well as materials that
       will allow the KDCs to authenticate each others and to protect
       the XTGSP exchange.  For this purpose, public key cryptography
       (based on a pre-existent PKI) is used between the two KDCs.  The
       padata field of the XTGSP-REQ includes a signature [RFC3852] and
       the certificate of TGS-L.  The process of building the XTGSP-REQ
       message and the associated 'padata' field is detailed in
       Section 3.5.2.


   3.  TGS-R -> TGS-L : XTGSP-REP

       When TGS-R receives a TGS-REQ message, it authenticates TGS-L and
       validates the request by verifying the certificate and the
       signature embedded in the padata field.  Then, TGS-R creates a
       service session key and builds an EncTicketPart.  The
       EncTicketPart is created as specified in [RFC4120].  TGS-R gets
       all the information needed to build the EncTicketPart from the
       XTGSP-REQ message.  The EncTicketPart is encrypted using the
       secret key of the service (SRV-R).  A copy of the generated
       session key (included in the EncTicketPart) is encrypted using
       the public key of TGS-L.  The encrypted EncTicketPart and the
       encrypted service session key are conveyed to TGS-L using the
       padata field of the XTGSP-REP message.  The XTGSP-REP message is
       a KRB_TGS_REP message extended using the padata field.  The
       padata field includes materials for authenticating TGS-R to TGS-L
       and for verifying the integrity of the message.  The XTGSP-REP
       message will be used by TGS-L to build a valid KRB_TGS_REP.  More
       details on how to build the XTGSP-REP message are in
       Section 3.5.3.


   4.  TGS-L -> Client : KRB_TGS_REP

       When TGS-L recieves a XTGSP-REP message, it authenticates TGS-R
       and validates the message by verifying the certificate and the
       signature embedded in the padata field.

       After receiving the XTGSP-REP message, TGS-L is able to build the
       credentials requested by the client.  For that, TGS-L will



Zrelli, et al.          Expires December 19, 2006              [Page 16]

Internet-Draft                    XKDCP                        June 2006


       decrypt the service session key using its private key.  The
       EncTicketPart will be used to build a service ticket.  The
       session key will be sent to the client along with the service
       ticket in a KRB_TGS_REP message.  The KRB_TGS_REP message has the
       same format as specified in [RFC4120].  More details about this
       phase of the protocol are in Section 3.5.4.

       The client processes the KRB_TGS_REP message exactly as specified
       in [RFC4120].  She can use the service session key and the
       service ticket to issue a KRB_AP_REQ to the remote service.  The
       mutual authentication between the client and the remote service
       occurs as specified in [RFC4120].



3.3  Overview of the XASP extension

   In situations where the home KDC (or the KDC for which the client has
   a TGT) is not reachable or when the client has a limited network
   connectivity in a visited network, neither the standard Kerberos
   protocol nor the XTGSP protocol can be used to obtain tickets.  In
   such circumstances, the client has no other alternatives but using
   previously acquired credentials (as long as they are still valid) or
   contact an entity in the visited network in order to acquire new
   credentials.

   XASP is an extension to the Kerberos protocol that complements the
   XTGSP protocol.  It allows two Kerberos authentication services (that
   may be belong to two distinct realms) to collaborate in order to
   authenticate a roaming user and to deliver a TGT usable in the
   visited realm.

   When assuming that the KDC of the visited realm and the home KDC both
   support the XKDCP extension, the client behaves as if the visited KDC
   is capable of delivering a TGT even if she knows that she is not
   registered as principal in the visited realm.  When the visited KDC
   supports the XASP extension it processes KRB_AS_REQ requests from
   users belonging to different realms.  The processing of these
   requests is specified by the XASP extension.

   Figure 4 depicts the different exchanges between the different
   entities involved in a cross-realm operation based on XASP for
   delivering a TGT to a roaming user.








Zrelli, et al.          Expires December 19, 2006              [Page 17]

Internet-Draft                    XKDCP                        June 2006


                                        |
                                        |
                                        |

           +-------+              (2) XASP-REQ          +-------+
           |       |----------------------------------->|       |
           | AS-V  |              XASP-REP (3)          | AS-H  |
           |       |<-----------------------------------|       |
           +-------+                    |               +-------+
              ^  |                      |
              |  |                      |
           (1)|  |(4)                   |
   KRB_AS_REQ |  | KRB_AS_REP           |
              |  |                      |
              |  v                      |
            +------+                    |
            |Client|                    |
            +------+                    |
                                        |
              Visited Realm (V)         |       Home Realm (H)





   client         : A roaming client registered in realm H
   AS-V           : The AS of the visited realm V
   AS-H           : The AS of the home realm H
   KRB_AS_REQ     : A message requesting a TGT for
                    the visited realm V
   KRB_AS_REP     : A message containing a TGT for
                    the visited realm V


                      Figure 4: The Inter-AS protocol

   The following is a description of the different exchanges shown in
   Figure 4.

   1.  Client -> AS-V : KRB_AS_REQ

       The roaming client requests a TGT from the visited KDC.  This
       request is a KRB_AS_REQ as specified in [RFC4120].  The XASP
       protocol mandates that the client MUST put her home realm name in
       the 'realm' field of the request.  Furthermore, the 'sname' field
       of the KRB_AS_REQ MUST contain the principal name of the TGS of
       the visited realm.  The name of the TGS indicates the visited
       realm name as the realm issuing the TGT and the realm that will



Zrelli, et al.          Expires December 19, 2006              [Page 18]

Internet-Draft                    XKDCP                        June 2006


       accept the TGT.


   2.  AS-V -> AS-H : XASP-REQ

       When AS-V receives a KRB_AS_REQ message, it extracts the client's
       home realm name from the 'realm' field.  If the extracted realm
       name matches the local realm name, then the request is processed
       as specified in [RFC4120].  In the opposite case (when the
       client's realm name is different from the local realm name), AS-V
       determines the IP address of the KDC that serves the client's
       home realm (AS-H).  AS-V then initiates an XASP exchange with
       AS-H by sending an XASP-REQ message.

       The goal of the XASP exchange is to enable the visited KDC to
       build a valid KRB_AS_REP message in response to a KRB_AS_REQ
       request issued by a roaming client.  AS-V basically needs to
       build or have an EncASRepPart [RFC4120] and the associated
       session key.  The EncASRepPart is a part of the KRB_AS_REP that
       must be encrypted using the client's secret key (shared with the
       home AS only).  The XASP protocol allows AS-V to obtain the
       EncASRepPart from the home AS.  The EncASRepPart includes a
       session key that will be shared between the client and the TGS of
       the visited realm.  This session key is also obtained from AS-H
       using the XASP protocol.

       The XASP-REQ message contains all the necessary information to
       enable AS-H to build an EncASRepPart and to transmit it along
       with the associated session key, in a secure manner, to AS-V.
       The XASP-REQ message is built from the client's KRB_AS_REQ
       request, extended using the 'padata' field.  The 'padata' field
       includes information for cross-realm operations as well as
       material that will allow the KDCs to authenticate each others and
       to protect the XASP exchange.  For this purpose, public key
       cryptography (based on a pre-existent PKI) is used between the
       two KDCs.  The padata field of the XASP-REQ includes a signature
       [RFC3852] and the certificate of AS-V.  The process of building
       the XASP-REQ message and the associated 'padata' field is
       detailed in Section 3.6.2.  Note that the padata fields used in
       the XASP and XTGSP exchanges all have the same format which is
       described in Section 3.4.


   3.  AS-H -> AS-V : XASP-REP

       Upon reception of an XASP-REQ message, AS-H uses the signature
       and the certificate from the padata field to authenticate and
       verify the request.  Then, AS-H generates a session key (a TGS



Zrelli, et al.          Expires December 19, 2006              [Page 19]

Internet-Draft                    XKDCP                        June 2006


       session key) and builds an EncASRepPart then encrypts it using
       the client's secret key.  The TGS session key is included in the
       EncASRepPart as specified by [RFC4120] and a copy of the same key
       is encrypted using the public key of AS-V.  The encrypted
       EncASRepPart and the encrypted session key are conveyed to AS-V
       using the padata field of the XASP-REP message.  The XASP-REP
       message is a KRB_AS_REP message extended using the padata field.
       The padata field includes material for authenticating the home
       KDC and for verifying the integrity of the message.  The XASP-REP
       message will be used by AS-V to build a KRB_AS_REP.


   4.  AS-V -> Client : KRB_AS_REP

       When AS-V receives the XASP-REP message, it starts by
       authenticating and verifyng the message using the signature and
       the certificate from the padata field.  Then, it extracts the TGS
       session key from the padata field.  AS-V uses its own private key
       to decrypt the TGS session key.  The EncASRepPart is extracted
       from the XASP-REP message.  At this stage AS-V is able to build a
       KRB_AS_REP composed of a TGT (using the TGS session key extracted
       from the XASP-REP) and the EncASRepPart.  The KRB_AS_REP message
       is then delivered to the roaming client.

       The client processes the KRB_AS_REP message exactly as specified
       in [RFC4120].  The client uses her secret key to decrypt the
       EncASRepPart (created by AS-H).  The TGT and the TGS session key
       can then be used to create a KRB_TGS_REQ messages to request
       service tickets from the visited KDC.



3.4  The XKDCP padata

   The XKDCP protocol defines a new pre-authentication type (padata-
   type)

   PA-XKDCP    18

   The XKDCP extension specifies the ASN.1 PA-XKDCP-DATA type which
   represents a mandatory padata that MUST be included in all XKDCP
   messages.  Each time a KDC issues an XKDCP message, it MUST build a
   PA-DATA object whose padata-type is PA-XKDCP and with the DER
   encoding of an PA-XKDCP-DATA object as padata-value.

   The PA-XKDCP-DATA object specification is as follows :





Zrelli, et al.          Expires December 19, 2006              [Page 20]

Internet-Draft                    XKDCP                        June 2006


   PA-XKDCP-DATA  ::= [APPLICATION 18] IMPLICIT OCTET STRING

   XKDCP-BODY       ::= SEQUENCE {

       kippu        [0] IMPLICIT OCTET STRING OPTIONAL,

       cname        [1] PrincipalName,

       caddr        [2] HostAddresses,

       crealm       [3] Realm,

       lrealm       [4] Realm,

       cksum        [5] Checksum OPTIONAL,

       ...
   }

   KIPPU            ::= SEQUENCE {

       encSK        [1] EncryptionKey,

       xkdcpEncData [2] EncryptedData,

       tktOptions   [3] TicketFlags,

       last-req     [4] LastReq,

       authtime     [5] KerberosTime,

       starttime    [6] KerberosTime OPTIONAL,

       endtime      [7] KerberosTime,

       renew-till   [8] KerberosTime OPTIONAL,

       proxyaddr    [9] HostAddress OPTIONAL,

       ...
   }



   The PA-XKDCP-DATA object contains a CMS type ContentInfo encoded
   according to [RFC3852].  The contentType field of the type
   ContentInfo is id-signedData (1.2.840.113549.1.7.2), and the content
   field is a SignedData.  The eContentType field for the type



Zrelli, et al.          Expires December 19, 2006              [Page 21]

Internet-Draft                    XKDCP                        June 2006


   SignedData is id-xkdcp-authData (1.3.6.1.5.2.4.1), and the eContent
   field contains the DER encoding of the type XKDCP-BODY.

   The XKDCP-BODY object is filled as follows:

   kippu : The kippu field is built by the responding KDC.  It contains
      a KIPPU object signed by the responding KDC and encrypted using
      the public key of the initiating KDC.  It consists of a CMS type
      ContentInfo encoded according to [RFC3852].  The contentType field
      of the type ContentInfo is id-envelopedData
      (1.2.840.113549.1.7.3), and the content field is an EnvelopedData.
      The contentType field of the EncryptedContentInfo id-signedData
      (1.2.840.113549.1.7.2).  The eContentType field for the inner type
      SignedData (when unencrypted) is id-xkdcp-kippu (1.3.6.1.5.2.4.2)
      and the eContent field contains the DER encoding of a KIPPU object
      (described below).  Note that the Kippu field is used in XTGSP-REP
      and XASP-REP messages only.

   cname : The principal name of the client who issued the initial
      request (KRB_AS_REQ or KRB_TGS_REQ).  The client name is obtained
      from the 'cname' field of the client's request.

   caddr : The IP address of the client who issued the request.  This
      field is a "HostAddress" object [RFC4120].

   crealm : The realm name where the client is registered as a Kerberos
      principal.  This information is filled by the initiating KDC.  In
      case of an XTGSP exchange, the realm name of the client is
      extracted from the TGT.  In case of an XASP exchange, the client's
      realm name is obtained from the 'realm' field of the KRB_AS_REQ
      message.

   lrealm : The realm name of the KDC that initiated an XKDCP exchange.

   cksum : This field contains an unkeyed checksum computed over the DER
      encoding of the "req-body" of a XTGSP-REQ or an XASP-REQ message
      (Note that the req-body in the XKDCP messages is a copy of the
      req-body component of the KRB_KDC_REQ issued by the client).  This
      checksum is used to protect the integrity of "req-body" part of
      the XTGSP-REQ and XASP-REQ messages.  The "cksum" field is a
      "Checksum" data object as defined in [RFC4120].  The SHA-1 hash
      function ("cksumtype" value 10 [RFC3961]) MUST be supported to
      compute the checksum.  The KDC SHOULD support additional
      collision-proof, unkeyed hash functions.







Zrelli, et al.          Expires December 19, 2006              [Page 22]

Internet-Draft                    XKDCP                        June 2006


   encSK : This field contains an EncryptionKey object [RFC4120].

   xkdcpEncData : The xkdcpEncData is an EncryptedData object [RFC4120].
      In case of a XTGSP-REP message, this field contains an
      EncTicketPart [RFC4120] encrypted using the secret key of the
      service.  In case of an XASP-REP message, the xkdcpEncData
      contains an EncASRepPart [RFC4120] encrypted using the secret key
      of the client.

   tktOptions:  Contains a "TicketFlags" object that indicates the
      options associated with a certain credential.  The responding KDC
      fills these fields by applying the realm's policy while taking
      into account the client's request.

   last-req, authtime, starttime, endtime, renew-till: These fields have
      the same definition as in section 5.4.2. of [RFC4120].  The
      responding KDC fills these fields by applying the realm's policy
      while taking into account the client's request.  These options
      will be used by the initiating KDC to build the KRB_KDC_REP
      message.

   proxyaddr:  Same as the 'caddr' field of the Ticket object (section
      5.3. of [RFC4120]).

   The XKDCP extension defines the following object identifiers:

   id-xkdcp OBJECT IDENTIFIER ::=
    { iso (1) org (3) dod (6) internet (1) security (5)
      kerberosv5 (2) xkdcp (4) }

   id-xkdcp-authData      OBJECT IDENTIFIER  ::= { id-xkdcp 1 }
   id-xkdcp-kippu         OBJECT IDENTIFIER  ::= { id-xkdcp 2 }

   "id-xkdcp" identifies the XKDCP extension and the PA-XKDCP-DATA
   object.  The "id-xkdcp-authData" identifies the XKDCP-DATA object.
   "id-xkdcp-kippu" identifies the object KIPPU.

3.5  XTGSP protocol details

3.5.1  The KRB_TGS_REQ message

   When a client wishes to access any service located at any realm.  She
   must first determine the principal name and the realm name of the
   service.  In the current specification of the Kerberos protocol, if
   the realm name of the service is different from the client's home
   realm, then the client must first obtain a TGT for the remote realm
   (where the service is registered).




Zrelli, et al.          Expires December 19, 2006              [Page 23]

Internet-Draft                    XKDCP                        June 2006


   When assuming that the KDCs support the XTGSP extension, the client
   does not try to obtain a TGT for the remote realm.  Instead, she
   issues a KRB_TGS_REQ to the KDC for which she has already a TGT (this
   KDC might be the client's home KDC or it might be any another KDC for
   which the client has a TGT).  The KRB_TGS_REQ message in the same as
   defined in section 5.4.1 of [RFC4120].  The only difference is in the
   field 'realm'.  The XKDCP specification mandates that the 'realm'
   field MUST contain the realm name where the service is believed to be
   registered.

3.5.2  The XTGSP-REQ message

   On reception of a KRB_TGS_REQ message, the KDC checks the field
   'realm' in the KDC-REQ-BODY.  If this field indicates the same realm
   name as the KDC's realm name, then the KDC follows the same behavior
   as described in section 3.3.2 of [RFC4120].  If the realm name
   indicated in the 'realm' field is different from the local realm name
   (which means that the service is located in a remote realm), then the
   XTGSP extension MUST be used.

   The following specifies the behavior of the KDC when the XTGSP
   extension is in use:

   1.  The KDC starts by validating the request by validating the TGT
       and verifying the integrity of the KRB_TGS_REQ message as
       specified in section 3.3.2 of [RFC4120].  If the KRB_TGS_REQ is
       valid then the KDC can proceed to the next step.

   2.  The KDC determines the KDC of the remote realm, the process of
       discovering the remote KDC is out of the scope of this document
       but the same guidelines specified in section 7.2.3. of [RFC4120]
       are applicable.  If the KDC fails to discover the KDC of the
       remote realm, then a KRB_ERROR message is sent to the client with
       an error code KDC_ERR_XKDCP_CANT_DISCOVER_KDC and the processing
       of the KRB_TGS_REQ stops here, otherwise the KDC proceeds to the
       next step.

   3.  The KDC creates a XTGSP-REQ message as specified below :


       XTGSP-REQ        ::= SEQUENCE {
               pvno            [1] INTEGER ,
               msg-type        [2] INTEGER ,
               padata          [3] SEQUENCE OF PA-DATA OPTIONAL,
               req-body        [4] KDC-REQ-BODY
       }





Zrelli, et al.          Expires December 19, 2006              [Page 24]

Internet-Draft                    XKDCP                        June 2006


       The XTGSP-REQ message has the same format and semantics as the
       KDC-REQ [RFC4120] message.  The fields are filled as follows :

       pvno : Indicates the Kerberos protocol version, this integer MUST
          be set to 5.

       msg-type : The XTGSP-REQ message type MUST be set to the integer
          XKDCP-XTGSP-REQ.

       padata : The padata field MUST contain any padata field extracted
          from the client's initial KRB_TGS_REQ message as well as an
          additional padata field of type PA-XKDCP-DATA as specified in
          Section 3.4.

       req-body : This field contains a copy of the 'req-body' component
          from the KRB_TGS_REQ issued by the client.  Note that the
          initiating KDC can modify the fields of the req-body to
          reflect the realm policy (more details in Section 3.7).

   4.  The XTGSP-REQ is then sent to the remote KDC.


3.5.3  The XTGSP-REP message

   On reception of a XTGSP-REQ message the remote KDC proceeds as
   follows:

   1.  The KDC MUST verify the signature in the PA-XKDCP-DATA object
       according to [RFC3852].  If the remote KDC can not build a
       certification path to validate the X.509 certificate [RFC3280],
       it sends back a KRB-ERROR message with the code
       KDC_ERR_XKDCP_CANT_VERIFY_CERTIFICATE.	When receiving this error
       message, the initiating KDC SHOULD issue a new XTGSP-REQ using a
       different certificate.  If the signature is verified
       successfully, the KDC proceeds to the next step.

   2.  The KDC verifies the checksum in the field 'cksum'.  If the
       checksum test fails, the remote KDC sends a KRB_ERROR message
       with an error code KRB_ERR_XKDCP_BAD_INTEGRITY .  If the checksum
       test succeeds, then the integrity of the information embedded in
       the 'req-body' of the XTGSP-REQ message is verified.  The KDC can
       then proceed to the next step.

   3.  The remote KDC verifies that the realm indicated by the field
       'realm' of the XTGSP-REQ matches with its own realm name.  If the
       realm name does not match, the KDC issues a KRB_ERROR message to
       the initiating KDC, the error code of this message is
       KRB_ERR_XKDCP_WRONG_REALM.  If the realm name matches, the KDC



Zrelli, et al.          Expires December 19, 2006              [Page 25]

Internet-Draft                    XKDCP                        June 2006


       verifies that the requested service is registered in its
       database.  If the principal is not found, then a KRB_ERROR
       message is sent to the initiating KDC with an error code
       KDC_ERR_XKDCP_S_PRINCIPAL_UNKNOWN .  If the principal is found in
       the database, then the KDC proceeds to the next step.

   4.  The remote KDC builds an EncTicketPart [RFC4120] which is defined
       as follows :

   EncTicketPart   ::= [APPLICATION 3] SEQUENCE {
              flags                   [0] TicketFlags,
              key                     [1] EncryptionKey,
              crealm                  [2] Realm,
              cname                   [3] PrincipalName,
              transited               [4] TransitedEncoding,
              authtime                [5] KerberosTime,
              starttime               [6] KerberosTime OPTIONAL,
              endtime                 [7] KerberosTime,
              renew-till              [8] KerberosTime OPTIONAL,
              caddr                   [9] HostAddresses OPTIONAL,
              authorization-data      [10] AuthorizationData OPTIONAL
      }


       The EncTicketPart is filled as follows :

       flags : The remote KDC relies on the local policy and the options
          requested by the client (in the kdc-options field of the req-
          body of the XTGSP-REQ message) to decide which ticket options
          will be granted.

       Key : The remote KDC generates a random session key and places it
          in an EncryptionKey [RFC4120] object.

       crealm : The same as the 'crealm' field of the 'req-body' of the
          XTGSP-REQ message

       cname : Contains the client's principal name.

       transited : Not used, left empty.

       authtime, starttime, endtime, renew-till, caddr, authorization-
       data : These fields are filled according to [RFC4120].  The KDC
          takes into consideration the realm's policy and the client's
          request to determine the lifetime and other parameters related
          to the ticket.





Zrelli, et al.          Expires December 19, 2006              [Page 26]

Internet-Draft                    XKDCP                        June 2006


   5.  The remote KDC builds a XTGSP-REP message defined as follows :

      XTGSP-REP         ::= SEQUENCE {
              pvno            [0] INTEGER ,
              msg-type        [1] INTEGER ,
              padata          [2] SEQUENCE OF PA-DATA OPTIONAL,
              crealm          [3] Realm,
              cname           [4] PrincipalName,
              ticket          [5] Ticket,
              enc-part        [6] EncryptedData
      }

       The XTGSP-REP message is filled as follows :

       pvno : Indicates the Kerberos protocol version, this integer MUST
          be set to 5.

       msg-type : The XTGSP-REP message type MUST be set to the integer
          XKDCP-XTGSP-REP

       padata : The padata field MUST contain a padata field of type PA-
          XKDCP-DATA ( specified in Section 3.4).  The session key which
          was generated by the remote KDC and inserted in the 'key'
          field of EncTicketPart, is used to build an EncryptionKey
          object.  This object is used as the field 'encSK' of the kippu
          object of the padata.  The EncTicketPart, built by the remote
          KDC in step 4, is encrypted using the secret key of the
          requested service.  The result is used to build an
          EncryptedData object.  The EncryptedData object is then placed
          in the xkdcpEncData of the KIPPU object.  The padata is then
          signed by the KDC as specified in Section 3.4

          These fields contain the client's principal name and the
          client's realm name.

       ticket, enc-part: These fields are not used, they are left empty.

   6.  The remote KDC sends the XTGSP-REP to the initiating KDC.


3.5.4  The KRB_TGS_REP message

   The local realm uses the XTGSP-REP message to build a KRB_TGS_REP
   message for the client.  For that, the local KDC proceeds as follows
   :

   1.  The local KDC MUST verify the signature in the PA-XKDCP-DATA
       object according to [RFC3852].  If the local KDC can not build a



Zrelli, et al.          Expires December 19, 2006              [Page 27]

Internet-Draft                    XKDCP                        June 2006


       certification path to validate the X.509 certificate [RFC3280],
       it sends back a KRB-ERROR message with the code
       KDC_ERR_XKDCP_CANT_VERIFY_CERTIFICATE.	Upon reception of this
       error message, the remote KDC SHOULD try to retransmit the XTGSP-
       REP message using a different certificate.  If the signature is
       verified successfully, the local KDC proceeds to the next step.

   2.  The EncTicketPart is extracted from the xkdcpEncData component of
       the kippu object.  The session key is extracted from the encSK
       field of the kippu object.  For that, the KDC uses its own
       private key to decrypt the kippu object.

   3.  The local KDC builds an EncTGSRepPart [RFC4120] which is defined
       as follows :


     EncTGSRepPart   ::= [APPLICATION 26] EncKDCRepPart

     EncKDCRepPart   ::= SEQUENCE {
              key             [0] EncryptionKey,
              last-req        [1] LastReq,
              nonce           [2] UInt32,
              key-expiration  [3] KerberosTime OPTIONAL,
              flags           [4] TicketFlags,
              authtime        [5] KerberosTime,
              starttime       [6] KerberosTime OPTIONAL,
              endtime         [7] KerberosTime,
              renew-till      [8] KerberosTime OPTIONAL,
              srealm          [9] Realm,
              sname           [10] PrincipalName,
              caddr           [11] HostAddresses OPTIONAL
      }


       The EncTGSRepPart is filled as follows :

       Key: This field is filled with the session key extracted from the
          kippu object.

       flags: This field is obtained from the tktOptions field of the
          kippu object extracted from the XTGSP-REP message.  These
          ticket options reflect the policy of the remote realm where
          the service is actually deployed.

       authtime, starttime, endtime, renew-till These fields are filled
          using the fields with the same name in the kippu object.





Zrelli, et al.          Expires December 19, 2006              [Page 28]

Internet-Draft                    XKDCP                        June 2006


       srealm, sname Contains the realm name of the service (which is
          different from the realm name that issues the KRB_TGS_REP
          message) and the principal name of the service.

          Same usage as in [RFC4120].  This field is filled using the
          field proxyaddr from the kippu object.

   4.  The local KDC builds a ticket using the EncTicketPart and other
       information extracted from the kippu object.  The EncTGSRepPart
       built in the previous step is used with the Ticket to build a
       KRB_TGS_REP message that will be sent to the client.  The
       EncTGSRepPart is encrypted using the TGS session key shared
       between the client and the local TGS, then placed in the enc-part
       field of the KRB_TGS_REP message


3.6  The XASP protocol details

   The XASP protocol allows a KDC (generally a visited KDC) to deliver a
   TGT (destined to be used with the TGS of the same KDC) to users who
   are not registered in the KDC's database.  The XASP protocol defines
   an exchange between the visited KDC and the client's home KDC.  The
   result of the XASP exchange is that the visited KDC is able to
   deliver the desired TGT.  An overview of the the XASP protocol was
   presented in section Section 3.3.  The following paragraphs give
   deeper details of the XASP message specification and exchanges.

3.6.1  The KRB_AS_REQ message

   When a client wishes to get a TGT for a visited realm, she issues a
   KRB_AS_REQ message to the KDC of the target realm.  The KRB_AS_REQ is
   defined in [RFC4120].  The client fills this request exactly as if
   she was initiating an AS exchange with her home KDC.  Note that, the
   XKDCP protocol mandates that the client MUST indicate her home realm
   name in the field 'realm' of the KRB_AS_REQ request.  The client MUST
   use the principal name of the TGS of the visited realm in the 'sname'
   field of the request.  According to [RFC4120], section 7.3, the name
   of the TGS contains the realm name of the KDC that will issue the TGT
   and the realm name of the KDC that will accept the TGT.  In case of
   roaming scenario using XASP for cross-realm operations, the client
   MUST use the visited realm name for building the TGS name of the
   KRB_AS_REQ.

3.6.2  The XASP-REQ message

   Upon reception of a KRB_AS_REQ, the AS checks the 'realm' field of
   the KDC-REQ-BODY.  If this field matches the local realm name, then
   the request MUST be processed as defined in [RFC4120].  If the



Zrelli, et al.          Expires December 19, 2006              [Page 29]

Internet-Draft                    XKDCP                        June 2006


   client's realm name does not match with the target KDC's realm name,
   then the client is considered as roaming client, and the request MUST
   be processed using the XASP extension.

   The following specifies the behavior of the KDC when the XASP
   extension is being used :

   1.  The KDC determines the KDC of the client's home realm, this host
       discovery process is out of the scope of this document but the
       same guidelines specified in section 7.2.3. of [RFC4120] are
       applicable.  If the foreign KDC fails to discover the KDC of
       client's home realm, then a KRB_ERROR message is sent to the
       client with an error code KDC_ERR_XKDCP_CANT_DISCOVER_KDC and the
       processing of the KRB_AS_REQ stops here, otherwise the KDC
       proceeds to the next step.

   2.  The KDC creates an XASP-REQ message as specified below :


       XASP-REQ        ::= SEQUENCE {
               pvno            [1] INTEGER ,
               msg-type        [2] INTEGER ,
               padata          [3] SEQUENCE OF PA-DATA OPTIONAL,
               req-body        [4] KDC-REQ-BODY
       }


       The XASP-REQ message has the same format and semantics as the
       KDC-REQ [RFC4120] message.  The fields are filled as follows :

       pvno : Indicates the Kerberos protocol version, this integer MUST
          be set to 5.

       msg-type : The XASP-REQ message type MUST be set to the integer
          XKDCP-XASP-REQ

       padata : The padata field MUST contain any padata field issued by
          the client as well as a padata field of type PA-XKDCP-MSG as
          specified in Section 3.4.

       req-body : This field contains a copy of the 'req-body' component
          from the KRB_AS_REQ issued by the client.  Note that the
          initiating KDC can modify the fields of the req-body to
          reflect the realm policy (more details in Section 3.7).

   3.  The XASP-REQ is sent to the client's home KDC.





Zrelli, et al.          Expires December 19, 2006              [Page 30]

Internet-Draft                    XKDCP                        June 2006


3.6.3  The XASP-REP message

   On reception of an XASP-REQ message the home KDC proceeds as follows
   :

   1.  The KDC MUST verify the signature in the PA-XKDCP-DATA object
       according to [RFC3852].  If the home KDC can not build a
       certification path to validate the X.509 certificate [RFC3280],
       it sends back a KRB-ERROR message [RFC4120] with error code
       KDC_ERR_XKDCP_CANT_VERIFY_CERTIFICATE.  Upon reception of this
       error message, the visited KDC SHOULD try another XASP-REQ using
       a different certificate.  If the signature is verified
       successfully, then the home KDC proceeds to the next step.

   2.  The home KDC verifies the checksum in the 'cksum' field of the
       padata field of the XASP-REQ message.  If the checksum test
       fails, the home KDC sends a KRB_ERROR message with an error code
       KRB_ERR_XKDCP_BAD_INTEGRITY.  If the checksum test succeeds, the
       integrity of the information embedded in the 'req-body' of the
       XASP-REQ message is verified.  The KDC can then proceed to the
       next step.

   3.  The KDC verifies that the client's home realm indicated by the
       field 'realm' of the XASP-REQ matches with the KDC's realm name.
       If the realm name does not match, the KDC issues a KRB_ERROR
       message to the initiating KDC, the error code of this message is
       KRB_ERR_XKDCP_WRONG_REALM .  The KDC then verifies that the
       client's principal is registered in its database.  If the
       principal is not found, a KRB_ERROR message is sent to the
       visited KDC with an error code KDC_ERR_XKDCP_C_PRINCIPAL_UNKNOWN
       .  If the principal is found then the KDC proceeds to the next
       step.

   4.  The home KDC builds an EncASRepPart which is defined in [RFC4120]
       as follows.
















Zrelli, et al.          Expires December 19, 2006              [Page 31]

Internet-Draft                    XKDCP                        June 2006


   EncASRepPart   ::= [APPLICATION 26] EncKDCRepPart

   EncKDCRepPart   ::= SEQUENCE {
           key             [0] EncryptionKey,
           last-req        [1] LastReq,
           nonce           [2] UInt32,
           key-expiration  [3] KerberosTime OPTIONAL,
           flags           [4] TicketFlags,
           authtime        [5] KerberosTime,
           starttime       [6] KerberosTime OPTIONAL,
           endtime         [7] KerberosTime,
           renew-till      [8] KerberosTime OPTIONAL,
           srealm          [9] Realm,
           sname           [10] PrincipalName,
           caddr           [11] HostAddresses OPTIONAL
   }


       The EncKDCRepPart is filled as follows :

       Key : The home KDC generates a random session key and places it
          in an EncryptionKey object.  This session key will be used
          later on as a TGS session key shared between the client and
          the visited KDC.

       nonce : The value of the nonce field from the XASP-REQ message is
          copied into this field.

       flags : The home KDC relies on the local policy and the options
          requested by the client (in the kdc-options field of the req-
          body of the XASP-REQ message) to decide which ticket options
          will be granted.

       crealm, cname : The client's home realm name and principal name.

       transited : Not used, left empty.

       authtime, starttime, endtime, renew-till, caddr,authorization-
       data : These fields are filled according to [RFC4120].  The home
          KDC takes into consideration the realm's policy and the
          client's request to determine the lifetime and other
          parameters related to the ticket.

       srealm: This field MUST indicate the realm name of the visited
          KDC (or the visited realm name).  The visited realm name is
          extracted from the 'lrealm' field of the XASP-REQ message.





Zrelli, et al.          Expires December 19, 2006              [Page 32]

Internet-Draft                    XKDCP                        June 2006


       sname: This field contains the principal name that corresponds to
          the TGS of the visited realm.

   5.  The remote KDC builds an XASP-REP message defined as follows :

      XASP-REP         ::= SEQUENCE {
              pvno            [0] INTEGER ,
              msg-type        [1] INTEGER ,
              padata          [2] SEQUENCE OF PA-DATA OPTIONAL,
              crealm          [3] Realm,
              cname           [4] PrincipalName,
              ticket          [5] Ticket,
              enc-part        [6] EncryptedData
      }

       The XASP-REP message is filled as follows :

       pvno : Indicates the Kerberos protocol version, this integer MUST
          be set to 5.

       msg-type : For the XASP-REP message this field MUST be set to the
          integer XKDCP-XASP-REP

       padata : The padata field MUST contain a padata of type PA-XKDCP-
          MSG (specified in Section 3.4).  The session key (generated by
          the home KDC and inserted in the 'key' field of EncTicketPart)
          is used to build an EncryptionKey object.  The EncryptionKey
          object is placed in the encSK field of the kippu object.  The
          EncASRepPart built by the home KDC in step 4 is encrypted
          using the client's secret key.  The result is used to build an
          EncryptedData object which will be placed in the xkdcpEncData
          of the kippu object.

          These fields contain the client's realm name and the client's
          principal name

       ticket, enc-part: These fields are not used, they are left empty.

   6.  The home KDC sends the XASP-REP to the visited KDC.


3.6.4  The KRB_AS_REP message

   The visited realm uses the XASP-REP message to build a KRB_AS_REP
   message for the client.  For that, the visited KDC proceeds as
   follows :





Zrelli, et al.          Expires December 19, 2006              [Page 33]

Internet-Draft                    XKDCP                        June 2006


   1.  The visited KDC MUST verify the signature in the PA-XKDCP-DATA
       object according to [RFC3852].  If the visited KDC can not build
       a certification path to validate the X.509 certificate [RFC3280],
       it sends back a KRB-ERROR message with the code
       KDC_ERR_XKDCP_CANT_VERIFY_CERTIFICATE.  Upon reception of this
       error message, the home KDC SHOULD try to retransmit the XASP-REP
       message using a different certificate.  If the signature is
       verified successfully, the local KDC proceeds to the next step.

   2.  The EncASRepPart is obtained from the xkdcpEncData component of
       the kippu object.  The TGS session key is extracted from the
       encSK field of the kippu object.  For that, the visited KDC uses
       its own private key to decrypt the kippu object.

   3.  The visited KDC builds an EncTicketPart object [RFC4120] which is
       defined as follows :


   EncTicketPart   ::= [APPLICATION 3] SEQUENCE {
              flags                   [0] TicketFlags,
              key                     [1] EncryptionKey,
              crealm                  [2] Realm,
              cname                   [3] PrincipalName,
              transited               [4] TransitedEncoding,
              authtime                [5] KerberosTime,
              starttime               [6] KerberosTime OPTIONAL,
              endtime                 [7] KerberosTime,
              renew-till              [8] KerberosTime OPTIONAL,
              caddr                   [9] HostAddresses OPTIONAL,
              authorization-data      [10] AuthorizationData OPTIONAL
      }


       The EncTicketPart is filled as follows :

       flags: The visited KDC SHOULD use the tktOptions field of the
          kippu object extracted from the XASP-REP message.  The visited
          KDC MAY check the ticket options indicated in the tktOptions
          field against its local policy to decide which are the final
          ticket options that will be granted to the client.  (Note that
          if the visited KDC does not use the same flags as in
          tktOptions, the client will have wrong information about the
          ticket flags).

       Key : The TGS session key extracted from the encSK field of the
          kippu object is placed in this field.





Zrelli, et al.          Expires December 19, 2006              [Page 34]

Internet-Draft                    XKDCP                        June 2006


       crealm, cname : The client's home realm name and principal name.

       transited : Not used, left empty.

       authtime, starttime, endtime, renew-till, caddr, authorization-
       data : To fill these fields, the visited KDC SHOULD use the the
          correspondent fields of the kippu object extracted from the
          XASP-REP message.  The visited KDC MAY check these fields
          against its local policy to decide what will be the final
          values assigned to these fields.  (Note that if the visited
          KDC does not use the same values as in the kippu object, the
          client will have wrong information about the TGT that she
          obtained).

   4.  The visited KDC builds a Ticket object (ticket granting ticket)
       using the EncTicketPart built in the previous step.  The 'realm'
       field of the ticket indicates the realm name of visited KDC.  The
       EncASRepPart extracted from the kippu object is used with the
       ticket to build a KRB_AS_REP message that will be sent to the
       client.  The client uses her secret key to decrypt the
       EncASRepPart of the KRB_AS_REP message.  She can then use the TGS
       session key to build an authenticator and issue KRB_TGS_REP
       messages to request service tickets for services deployed in the
       visited realm.


3.7  Realm policy

   Each realm has enough control that enables it to apply its own
   policies concerning cross-realm authentication.  The initiating KDC
   can accept or refuse a client's request according to its policy.  If
   the initiating KDC can not process the client's request because the
   requested options (ticket flags and lifetime) are not compatible with
   its policy, it MUST issue a KRB-ERROR with error code
   KDC_ERR_XKDCP_WRONG_TKT_OPTS.  The client then SHOULD issue another
   request with different options.  When the client's request is
   accepted, the initiating KDC MAY fix the final options according to
   its local policy while taking in consideration the client's request.
   Then, the initiating KDC issues an XKDCP request to the remote KDC.
   The responding KDC can decide whether to honor the request or not
   according to its local policy.  If the responding KDC can not process
   the XKDCP request because the requested options are not compatible
   with its policy, it issues a KRB-ERROR with error code
   KDC_ERR_XKDCP_WRONG_TKT_OPTS.  The initiating KDC notifies the client
   about the error and finalizes the exchange by sending a KRB-ERROR
   with code KDC_ERR_XKDCP_INCOMPATIBLE_CROSS_REALM_POLICY.  Otherwise
   the responding KDC processes the XKDCP request and issues the
   corresponding reply message.



Zrelli, et al.          Expires December 19, 2006              [Page 35]

Internet-Draft                    XKDCP                        June 2006


   After receiving the remote KDC's reply which contains parts of the
   credentials requested by the client, the initiating KDC can decide
   whether to accept the remote KDC's policy that were applied on the
   credentials or not.  If the XKDCP reply message indicates that the
   responding KDC did not use the same options as requested in the XKDCP
   request message, and if these options are not acceptable according to
   the initiating KDC's policy, then the initiating KDC MAY issue a KRB-
   ERROR message to the client with error code
   KDC_ERR_XKDCP_INCOMPATIBLE_CROSS_REALM_POLICY.  If the XKDCP reply
   message shows that the remote KDC used options that are compatible
   with the initiating KDC's policy, the initiating KDC use these
   options to build the credentials.

   For example, a roaming client can issue a request asking for a TGT
   from a visited KDC.  The client may ask for a ticket life time of 5
   hours.  The visited KDC decides whether to accept the client's
   request or not depending for example on whether the client's realm is
   known or not, whether the client's ip address is acceptable, and most
   importantly, if the requested ticket options are acceptable (lifetime
   of 5 hours).  The visited KDC may choose to reduce the lifetime to 2
   hours or to reject the client's request.  If the visited KDC decides
   to process the client's request, it will issue an XASP-REQ message to
   the client's home KDC.  The XASP-REQ message includes information to
   notify the home KDC that the credentials to be issued must have a
   lifetime of 2 hours.

   The client's home KDC can decide whether the requested lifetime is
   acceptable or not.  If not, the KDC_ERR_XKDCP_WRONG_TKT_OPTS error
   will be sent to the initiating KDC.  Otherwise, the home KDC may
   accept the requested lifetime of 2 hours.  It MAY also consider a
   shorter lifetime of 1 hour for example.  The XASP-REP message
   includes information that indicates to the visited KDC that the home
   KDC issued credentials with lifetime of 1 hour.  The visited KDC MAY
   accept this value or reject it by issuing an
   KDC_ERR_XKDCP_INCOMPATIBLE_CROSS_REALM_POLICY error to the client.
















Zrelli, et al.          Expires December 19, 2006              [Page 36]

Internet-Draft                    XKDCP                        June 2006


4.  Constants

   The XKDCP extension defines a new PreAuthentication Data Types as
   follows :


       Padata and Data Type          Padata-type value

        PA-XKDCP                          18


   Additionally, the XKDCP extension uses the following constants.

4.1  XKDCP error codes


   Error code                                      | Value
   ------------------------------------------------+-------
   KDC_ERR_XKDCP_CANT_DISCOVER_KDC                 |  80
   KDC_ERR_XKDCP_CANT_DISCOVER_KDC                 |  81
   KDC_ERR_XKDCP_CANT_VERIFY_CERTIFICATE           |  82
   KRB_ERR_XKDCP_BAD_INTEGRITY                     |  83
   KRB_ERR_XKDCP_WRONG_REALM                       |  84
   KDC_ERR_XKDCP_S_PRINCIPAL_UNKNOWN               |  85
   KDC_ERR_XKDCP_C_PRINCIPAL_UNKNOWN               |  86
   KDC_ERR_XKDCP_WRONG_TKT_OPTS                    |  87
   KDC_ERR_XKDCP_INCOMPATIBLE_CROSS_REALM_POLICY   |  89


4.2  XKDCP message types


   Message type                                    | Value
   ------------------------------------------------+-------
   XKDCP-XTGSP-REQ                                 |  40
   XKDCP-XTGSP-REP                                 |  41
   XKDCP-XASP-REQ                                  |  42
   XKDCP-XASP-REP                                  |  43













Zrelli, et al.          Expires December 19, 2006              [Page 37]

Internet-Draft                    XKDCP                        June 2006


5.  Security considerations

   [RFC4120] highlights several security considerations.  All these
   considerations apply to a Kerberos KDC implementing the XKDCP
   extension.  This section discusses the security properties as well as
   additional vulnerabilities and security recommendations introduced by
   the XKDCP extension.

5.1  Integrity protection

   All XKDCP messages are integrity protected.  The 'req-body' part of
   XKDCP requests is protected using an unkeyed checksum.  On the other
   hand, the 'padata' part is always protected using public key
   signature.  The uneyed checksum used to protect the 'req-body' field
   is included in the padata field and is thus protected.

5.2  Confidentiality

   In XKDCP, sensible information is encrypted in order to preserve its
   confidentiality.  The session keys created by the responding KDC are
   encrypted using the public key of the initiating KDC before sending
   the XKDCP reply message.  On the other hand no secret key (shared
   between a principal and its home KDC) is revealed to any third party.
   The secret keys are used by the responding KDC to create
   EncryptedData objects, but are never transmitted.

5.3  DoS and replay protection

   An attacker can flood a KDC with forged or replayed XKDCP requests or
   replies.  Since the processing of any XKDCP message involves public
   key cryptography, such attack can result in a denial of service at
   the target KDC.

   In order to mitigate the threat of DoS attacks, filtering mechanisms
   should be deployed to ensure that the KDC will only receive client
   requests from the internal network and XKDCP messages from a trusted
   set of remote KDCs.

   Additionally, the XKDCP extension SHOULD use a replay protection
   mechanism to detect replayed messages.











Zrelli, et al.          Expires December 19, 2006              [Page 38]

Internet-Draft                    XKDCP                        June 2006


6.  Acknowledgments

   The authors would like to thank the following individuals for their
   comments and suggestions : Okabe Nobuo and Atsushi Inoue.

7.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC4120]  Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
              Kerberos Network Authentication Service (V5)", RFC 4120,
              July 2005.

   [RFC3852]  Housley, R., "Cryptographic Message Syntax (CMS)",
              RFC 3852, July 2004.

   [RFC3961]  Raeburn, K., "Encryption and Checksum Specifications for
              Kerberos 5", RFC 3961, February 2005.

   [CJSW05]   Cervesato, I., Jaggard, A., Scedrov, A., and C. Walstad,
              "Specifying Kerberos 5 Cross-Realm Authentication", Fifth
              Workshop on Issues in the Theory of Security  12--26,
              January 2005.


Authors' Addresses

   Saber Zrelli
   Japan Advanced Institute of Science and Technology
   1-1 Asahidai
   Nomi, Ishikawa  923-1292
   JAPAN

   Email: zrelli@jaist.ac.jp


   Yoichi Shinoda
   Japan Advanced Institute of Science and Technology
   1-1 Asahidai
   Nomi, Ishikawa  923-1292
   JAPAN

   Email: shinoda@jaist.ac.jp







Zrelli, et al.          Expires December 19, 2006              [Page 39]

Internet-Draft                    XKDCP                        June 2006


   Shoichi Sakane
   Yokogawa Electric Corporation
   2-9-32 Nakacho
   Musashino-shi, Tokyo  180-8750
   JAPAN

   Email: Shouichi.Sakane@jp.yokogawa.com


   Ken'ichi Kamada
   Yokogawa Electric Corporation
   2-9-32 Nakacho
   Musashino-shi, Tokyo  180-8750
   JAPAN

   Email: Ken-ichi.Kamada@jp.yokogawa.com


   Masahiro Ishiyama
   Toshiba Corporation
   1, komukai-toshiba-cho
   Saiwai-ku, Kawasaki  212-8582
   JAPAN

   Email: masahiro@isl.rdc.toshiba.co.jp


























Zrelli, et al.          Expires December 19, 2006              [Page 40]

Internet-Draft                    XKDCP                        June 2006


Appendix A.  ASN.1 module



   KerberosV5-XKDCP-SPEC {
    iso(1) identified-organization(3) dod(6) internet(1)
    security(5) kerberosV5(2) modules(4) xkdcp(6)
   }

   DEFINITIONS EXPLICIT TAGS ::= BEGIN

   IMPORTS

    KerberosTime, PrincipalName, Realm, EncryptionKey,
    HostAddress, HostAddresses, EncryptedData, EncTicketPart,
    Checksum, Ticket, TicketFlags, LastReq, KDC-REQ, PA-DATA
    FROM KerberosV5Spec2 { iso(1) identified-organization(3)
    dod(6) internet(1) security(5) kerberosV5(2)
    modules(4) krb5spec2(2) };
    -- As defined in RFC 4120.



   id-xkdcp OBJECT IDENTIFIER ::= { iso (1) org (3) dod (6)
   internet (1) security (5) kerberosv5 (2) xkdcp (4) }


   id-xkdcp-authData      OBJECT IDENTIFIER  ::= { id-xkdcp 1 }
   id-xkdcp-kippu         OBJECT IDENTIFIER  ::= { id-xkdcp 2 }



   -- XTGSP-REP and XASP-REP are identical to KDC-REP [RFC4120]
   -- XTGSP-REQ and XASP-REQ are identical to KDC-REQ [RFC4120]

   XTGSP-REQ       ::= [APPLICATION 40] KDC-REQ

   XTGSP-REP       ::= [APPLICATION 41] KDC-REQ

   XASP-REQ        ::= [APPLICATION 42] KDC-REQ

   XASP-REP        ::= [APPLICATION 43] KDC-REQ


   -- The PA-XKDCP-DATA object is used in the padata-value
   -- of a PA-DATA and inserted in the padata field of all
   -- XKDCP messages.




Zrelli, et al.          Expires December 19, 2006              [Page 41]

Internet-Draft                    XKDCP                        June 2006


   PA-XKDCP-DATA  ::= [APPLICATION 18] IMPLICIT OCTET STRING

                   -- Contains a CMS type ContentInfo encoded
                   -- according to [RFC3852].
                   -- The contentType field of the type ContentInfo
                   -- is id-signedData (1.2.840.113549.1.7.2),
                   -- and the content field is a SignedData.
                   -- The eContentType field for the type SignedData
                   -- is id-xkdcp-authData (1.3.6.1.5.2.4.1), and the
                   -- eContent field contains the DER encoding of the
                   -- type XKDCP-BODY
                   -- XKDCP-BODY is defined below.

   XKDCP-BODY      ::= SEQUENCE {

     kippu         [0] IMPLICIT OCTET STRING OPTIONAL,
                   -- Contains a CMS type ContentInfo encoded
                   -- according to [RFC3852].
                   -- The contentType field of the type ContentInfo
                   -- is id-envelopedData (1.2.840.113549.1.7.3),
                   -- and the content field is an EnvelopedData.
                   -- The contentType field of the EncryptedContentInfo
                   -- id-signedData (1.2.840.113549.1.7.2).
                   -- The eContentType field for the inner type
                   -- SignedData (when unencrypted) is
                   -- id-xkdcp-kippu (1.3.6.1.5.2.4.2) and the
                   -- eContent field contains the DER encoding of the
                   -- type KIPPU defined below

                   -- This field is used only in XASP-REP and XTGSP-REP
                   -- messages.

     cname         [1] PrincipalName,
                   -- The client's principal name

     caddr         [2] HostAddress,
                   -- IP address of the client

     crealm        [3] Realm,
                   -- The realm name of the client.

     lrealm        [4] Realm,
                   -- The realm name of the KDC that
                   -- initiated an XKDCP exchange.

     cksum         [5] Checksum OPTIONAL,
                   -- This field is a checksum computed
                   -- over the DER encoding of the "req-body" of



Zrelli, et al.          Expires December 19, 2006              [Page 42]

Internet-Draft                    XKDCP                        June 2006


                   -- an XKDCP request message (XTGSP-REQ or XASP-REQ)
                   -- The "cksum" field is a "Checksum" data object
                   -- as defined in [RFC4120]. The checksum used
                   -- here is an unkeyed checksum.

     ...
   }

   KIPPU           ::= SEQUENCE {

     encSK         [1] EncryptionKey,
                   -- contains a TGS session key in XASP-REP
                   -- contains a service session key in XTGSP-REP

     xkdcpEncData  [2] EncryptedData,
                   -- contains an EncTicketPart in XTGSP-REP
                   -- contains an EncASRepPart in XASP-REP

     tktOptions    [3] TicketFlags,
                   -- conains the ticket flags

     last-req      [4] LastReq,
     authtime      [5] KerberosTime,
     starttime     [6] KerberosTime OPTIONAL,
     endtime       [7] KerberosTime,
     renew-till    [8] KerberosTime OPTIONAL,
                   -- The fields labelled 4,5,6,7,8 have the same
                   -- definitions and use as specified in [RFC4120]
     proxyaddr     [9] HostAddress OPTIONAL,
                   -- used with proxy or forwarded tickets

     ...
   }

   END
















Zrelli, et al.          Expires December 19, 2006              [Page 43]

Internet-Draft                    XKDCP                        June 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.




Zrelli, et al.          Expires December 19, 2006              [Page 44]