home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_a_c / draft-ietf-cat-kerberos-pk-init-03.txt < prev    next >
Text File  |  1997-03-28  |  26KB  |  590 lines

  1.  
  2. INTERNET-DRAFT                                         Clifford Neuman
  3. draft-ietf-cat-kerberos-pk-init-03.txt                      Brian Tung
  4. Updates: RFC 1510                                                  ISI
  5. expires September 30, 1997                                   John Wray
  6.                                          Digital Equipment Corporation
  7.                                                          Ari Medvinsky
  8.                                                            Matthew Hur
  9.                                                  CyberSafe Corporation
  10.                                                       Jonathan Trostle
  11.                                                                 Novell
  12.  
  13.  
  14.     Public Key Cryptography for Initial Authentication in Kerberos
  15.  
  16.  
  17. 0.  Status Of this Memo
  18.  
  19.     This document is an Internet-Draft.  Internet-Drafts are working
  20.     documents of the Internet Engineering Task Force (IETF), its
  21.     areas, and its working groups.  Note that other groups may also
  22.     distribute working documents as Internet-Drafts.
  23.  
  24.     Internet-Drafts are draft documents valid for a maximum of six
  25.     months and may be updated, replaced, or obsoleted by other
  26.     documents at any time.  It is inappropriate to use Internet-Drafts
  27.     as reference material or to cite them other than as "work in
  28.     progress."
  29.  
  30.     To learn the current status of any Internet-Draft, please check
  31.     the "1id-abstracts.txt" listing contained in the Internet-Drafts
  32.     Shadow Directories on ds.internic.net (US East Coast),
  33.     nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
  34.     munnari.oz.au (Pacific Rim).
  35.  
  36.     The distribution of this memo is unlimited.  It is filed as
  37.     draft-ietf-cat-kerberos-pk-init-03.txt, and expires September 30,
  38.     1997.  Please send comments to the authors.
  39.  
  40.  
  41. 1.  Abstract
  42.  
  43.     This document defines extensions (PKINIT) to the Kerberos protocol
  44.     specification (RFC 1510 [1]) to provide a method for using public
  45.     key cryptography during initial authentication.  The methods
  46.     defined specify the ways in which preauthentication data fields and
  47.     error data fields in Kerberos messages are to be used to transport
  48.     public key data.
  49.  
  50.  
  51. 2.  Introduction
  52.  
  53.     The popularity of public key cryptography has produced a desire for
  54.     its support in Kerberos [2].  The advantages provided by public key
  55.     cryptography include simplified key management (from the Kerberos
  56.     perspective) and the ability to leverage existing and developing
  57.     public key certification infrastructures.
  58.  
  59.     Public key cryptography can be integrated into Kerberos in a number
  60.     of ways.  One is to to associate a key pair with each realm, which
  61.     can then be used to facilitate cross-realm authentication; this is
  62.     the topic of another draft proposal.  Another way is to allow users
  63.     with public key certificates to use them in initial authentication.
  64.     This is the concern of the current document.
  65.  
  66.     One of the guiding principles in the design of PKINIT is that
  67.     changes should be as minimal as possible.  As a result, the basic
  68.     mechanism of PKINIT is as follows:  The user sends a request to the
  69.     KDC as before, except that if that user is to use public key
  70.     cryptography in the initial authentication step, his certificate
  71.     accompanies the initial request, in the preauthentication fields.
  72.  
  73.     Upon receipt of this request, the KDC verifies the certificate and
  74.     issues a ticket granting ticket (TGT) as before, except that instead
  75.     of being encrypted in the user's long-term key (which is derived
  76.     from a password), it is encrypted in a randomly-generated key.  This
  77.     random key is in turn encrypted using the public key certificate
  78.     that came with the request and signed using the KDC's signature key,
  79.     and accompanies the reply, in the preauthentication fields.
  80.  
  81.     PKINIT also allows for users with only digital signature keys to
  82.     authenticate using those keys, and for users to store and retrieve
  83.     private keys on the KDC.
  84.  
  85.     The PKINIT specification may also be used for direct peer to peer
  86.     authentication without contacting a central KDC. This application
  87.     of PKINIT is described in PKTAPP [4] and is based on concepts
  88.     introduced in [5, 6]. For direct client-to-server authentication,
  89.     the client uses PKINIT to authenticate to the end server (instead
  90.     of a central KDC), which then issues a ticket for itself.  This
  91.     approach has an advantage over SSL [7] in that the server does not
  92.     need to save state (cache session keys).  Furthermore, an
  93.     additional benefit is that Kerberos tickets can facilitate
  94.     delegation (see [8]).
  95.  
  96.  
  97. 3.  Proposed Extensions
  98.  
  99.     This section describes extensions to RFC 1510 for supporting the
  100.     use of public key cryptography in the initial request for a ticket
  101.     granting ticket (TGT).
  102.  
  103.     In summary, the following changes to RFC 1510 are proposed:
  104.  
  105.         --> Users may authenticate using either a public key pair or a
  106.             conventional (symmetric) key.  If public key cryptography is
  107.             used, public key data is transported in preauthentication
  108.             data fields to help establish identity.
  109.         --> Users may store private keys on the KDC for retrieval during
  110.             Kerberos initial authentication.
  111.  
  112.     This proposal addresses two ways that users may use public key
  113.     cryptography for initial authentication.  Users may present public
  114.     key certificates, or they may generate their own session key,
  115.     signed by their digital signature key.  In either case, the end
  116.     result is that the user obtains an ordinary TGT that may be used for
  117.     subsequent authentication, with such authentication using only
  118.     conventional cryptography.
  119.  
  120.     Section 3.1 provides definitions to help specify message formats.
  121.     Section 3.2 and 3.3 describe the extensions for the two initial
  122.     authentication methods.  Section 3.3 describes a way for the user to
  123.     store and retrieve his private key on the KDC.
  124.  
  125.  
  126. 3.1.  Definitions
  127.  
  128.     Hash and encryption types will be specified using ENCTYPE tags; we
  129.     propose the addition of the following types:
  130.  
  131.         #define ENCTYPE_SIGN_DSA_GENERATE   0x0011
  132.         #define ENCTYPE_SIGN_DSA_VERIFY     0x0012
  133.         #define ENCTYPE_ENCRYPT_RSA_PRIV    0x0021
  134.         #define ENCTYPE_ENCRYPT_RSA_PUB     0x0022
  135.  
  136.     allowing further signature types to be defined in the range 0x0011
  137.     through 0x001f, and further encryption types to be defined in the
  138.     range 0x0021 through 0x002f.
  139.  
  140.     The extensions involve new preauthentication fields.  The
  141.     preauthentication data types are in the range 17 through 21.
  142.     These values are also specified along with their corresponding
  143.     ASN.1 definition.
  144.  
  145.         #define PA-PK-AS-REQ                17
  146.         #define PA-PK-AS-REP                18
  147.         #define PA-PK-AS-SIGN               19
  148.         #define PA-PK-KEY-REQ               20
  149.         #define PA-PK-KEY-REP               21
  150.  
  151.     The extensions also involve new error types.  The new error types
  152.     are in the range 227 through 229.  They are:
  153.  
  154.         #define KDC_ERROR_CLIENT_NOT_TRUSTED    227
  155.         #define KDC_ERROR_KDC_NOT_TRUSTED       228
  156.         #define KDC_ERROR_INVALID_SIG           229
  157.  
  158.     In the exposition below, we use the following terms: encryption key,
  159.     decryption key, signature key, verification key.  It should be
  160.     understood that encryption and verification keys are essentially
  161.     public keys, and decryption and signature keys are essentially
  162.     private keys.  The fact that they are logically distinct does
  163.     not preclude the assignment of bitwise identical keys.
  164.  
  165.  
  166. 3.2.  Standard Public Key Authentication
  167.  
  168.     Implementation of the changes in this section is REQUIRED for
  169.     compliance with pk-init.
  170.  
  171.     It is assumed that all public keys are signed by some certification
  172.     authority (CA).  The initial authentication request is sent as per
  173.     RFC 1510, except that a preauthentication field containing data
  174.     signed by the user's signature key accompanies the request:
  175.  
  176.     PA-PK-AS-REQ ::- SEQUENCE {
  177.                                 -- PA TYPE 17
  178.         signedPKAuth            [0] SignedPKAuthenticator,
  179.         userCert                [1] SEQUENCE OF Certificate OPTIONAL,
  180.                                     -- the user's certificate
  181.                                     -- optionally followed by that
  182.                                     -- certificate's certifier chain
  183.         trustedCertifiers       [2] SEQUENCE OF PrincipalName OPTIONAL
  184.                                     -- CAs that the client trusts
  185.     }
  186.  
  187.     SignedPKAuthenticator ::= SEQUENCE {
  188.         pkAuth                  [0] PKAuthenticator,
  189.         pkAuthSig               [1] Signature,
  190.                                     -- of pkAuth
  191.                                     -- using user's signature key
  192.     }
  193.  
  194.     PKAuthenticator ::= SEQUENCE {
  195.         cusec                   [0] INTEGER,
  196.                                     -- for replay prevention
  197.         ctime                   [1] KerberosTime,
  198.                                     -- for replay prevention
  199.         nonce                   [2] INTEGER,
  200.                                     -- binds response to this request
  201.         kdcName                 [3] PrincipalName,
  202.         clientPubValue          [4] SubjectPublicKeyInfo OPTIONAL,
  203.                                     -- for Diffie-Hellman algorithm
  204.     }
  205.  
  206.     Signature ::= SEQUENCE {
  207.         signedHash              [0] EncryptedData
  208.                                     -- of type Checksum
  209.                                     -- encrypted under signature key
  210.     }
  211.  
  212.     Checksum ::=   SEQUENCE {
  213.         cksumtype               [0] INTEGER,
  214.         checksum                [1] OCTET STRING
  215.     }   -- as specified by RFC 1510
  216.  
  217.     SubjectPublicKeyInfo ::= SEQUENCE {
  218.         algorithm               [0] algorithmIdentifier,
  219.         subjectPublicKey        [1] BIT STRING
  220.     }   -- as specified by the X.509 recommendation [9]
  221.  
  222.     Certificate ::= SEQUENCE {
  223.         CertType                [0] INTEGER,
  224.                                     -- type of certificate
  225.                                     -- 1 = X.509v3 (DER encoding)
  226.                                     -- 2 = PGP (per PGP draft)
  227.         CertData                [1] OCTET STRING
  228.                                     -- actual certificate
  229.                                     -- type determined by CertType
  230.     }
  231.  
  232.     Note: If the signature uses RSA keys, then it is to be performed
  233.     as per PKCS #1.
  234.  
  235.     The PKAuthenticator carries information to foil replay attacks,
  236.     to bind the request and response, and to optionally pass the
  237.     client's Diffie-Hellman public value (i.e. for using DSA in
  238.     combination with Diffie-Hellman).  The PKAuthenticator is signed
  239.     with the private key corresponding to the public key in the
  240.     certificate found in userCert (or cached by the KDC).
  241.  
  242.     In the PKAuthenticator, the client may specify the KDC name in one
  243.     of two ways: 1) a Kerberos principal name, or 2) the name in the
  244.     KDC's certificate (e.g., an X.500 name, or a PGP name).  Note that
  245.     case #1 requires that the certificate name and the Kerberos principal
  246.     name be bound together (e.g., via an X.509v3 extension).
  247.  
  248.     The userCert field is a sequence of certificates, the first of which
  249.     must be the user's public key certificate. Any subsequent
  250.     certificates will be certificates of the certifiers of the user's
  251.     certificate.  These cerificates may be used by the KDC to verify the
  252.     user's public key.  This field is empty if the KDC already has the
  253.     user's certifcate.
  254.  
  255.     The trustedCertifiers field contains a list of certification
  256.     authorities trusted by the client, in the case that the client does
  257.     not possess the KDC's public key certificate.
  258.  
  259.     Upon receipt of the AS_REQ with PA-PK-AS-REQ pre-authentication
  260.     type, the KDC attempts to verify the user's certificate chain
  261.     (userCert), if one is provided in the request.  This is done by
  262.     verifying the certification path against the KDC's policy of
  263.     legitimate certifiers.  This may be based on a certification
  264.     hierarchy, or it may be simply a list of recognized certifiers in a
  265.     system like PGP.  If the certification path does not match one of
  266.     the KDC's trusted certifiers, the KDC sends back an error message of
  267.     type KDC_ERROR_CLIENT_NOT_TRUSTED, and it includes in the error data
  268.     field a list of its own trusted certifiers, upon which the client
  269.     resends the request.
  270.  
  271.     If  trustedCertifiers is provided in the PA-PK-AS-REQ, the KDC
  272.     verifies that it has a certificate issued by one of the certifiers
  273.     trusted by the client.  If it does not have a suitable certificate,
  274.     the KDC returns an error message of type KDC_ERROR_KDC_NOT_TRUSTED
  275.     to the client. 
  276.  
  277.     If a trust relationship exists, the KDC then verifies the client's
  278.     signature on PKAuthenticator.  If that fails, the KDC returns an
  279.     error message of type KDC_ERROR_INVALID_SIG.  Otherwise, the KDC
  280.     uses the timestamp in the PKAuthenticator to assure that the request
  281.     is not a replay.   The KDC also verifies that its name is specified
  282.     in PKAuthenticator.
  283.  
  284.     Assuming no errors, the KDC replies as per RFC 1510, except that it
  285.     encrypts the reply not with the user's key, but with a random key
  286.     generated only for this particular response.  This random key
  287.     is sealed in the preauthentication field:
  288.  
  289.     PA-PK-AS-REP ::= SEQUENCE {
  290.                                -- PA TYPE 18
  291.         kdcCert                 [0] SEQUENCE OF Certificate OPTIONAL,
  292.                                     -- the KDC's certificate
  293.                                     -- optionally followed by that
  294.                                     -- certificate's certifier chain
  295.         encPaReply              [1] EncryptedData,
  296.                                     -- of type PaReply
  297.                                     -- using either the client public
  298.                                     -- key or the Diffie-Hellman key
  299.                                     -- specified by SignedDHPublicValue
  300.         signedDHPublicValue     [2] SignedDHPublicValue OPTIONAL
  301.     }
  302.  
  303.  
  304.     PaReply ::= SEQUENCE {
  305.         replyEncKeyPack         [0] ReplyEncKeyPack,
  306.         replyEncKeyPackSig      [1] Signature,
  307.                                     -- of replyEncKeyPack
  308.                                     -- using KDC's signature key
  309.     }
  310.  
  311.     ReplyEncKeyPack ::= SEQUENCE {
  312.         replyEncKey             [0] EncryptionKey,
  313.                                     -- used to encrypt main reply
  314.         nonce                   [1] INTEGER
  315.                                     -- binds response to the request
  316.                                     -- passed in the PKAuthenticator
  317.     }
  318.  
  319.     SignedDHPublicValue ::= SEQUENCE {
  320.         dhPublicValue           [0] SubjectPublicKeyInfo,
  321.         dhPublicValueSig        [1] Signature
  322.                                     -- of dhPublicValue
  323.                                     -- using KDC's signature key
  324.     }
  325.  
  326.     The kdcCert field is a sequence of certificates, the first of which
  327.     must have as its root certifier one of the certifiers sent to the
  328.     KDC in the PA-PK-AS-REQ. Any subsequent certificates will be 
  329.     certificates of the certifiers of the KDC's certificate.  These
  330.     cerificates may be used by the client to verify the KDC's public
  331.     key.  This field is empty if the client did not send to the KDC a
  332.     list of trusted certifiers (the trustedCertifiers field was empty).
  333.     
  334.     Since each certifier in the certification path of a user's
  335.     certificate is essentially a separate realm, the name of each
  336.     certifier shall be added to the transited field of the ticket.  The
  337.     format of these realm names shall follow the naming constraints set
  338.     forth in RFC 1510 (sections 7.1 and 3.3.3.1).  Note that this will
  339.     require new nametypes to be defined for PGP certifiers and other
  340.     types of realms as they arise.
  341.  
  342.     The KDC's certificate must bind the public key to a name derivable
  343.     from the name of the realm for that KDC.  The client then extracts
  344.     the random key used to encrypt the main reply.  This random key (in
  345.     encPaReply) is encrypted with either the client's public key or
  346.     with a key derived from the DH values exchanged between the client
  347.     and the KDC.
  348.  
  349.  
  350. 3.3.  Digital Signature
  351.  
  352.     Implementation of the changes in this section are OPTIONAL for
  353.     compliance with pk-init.
  354.  
  355.     We offer this option with the warning that it requires the client to
  356.     generate a random key; the client may not be able to guarantee the
  357.     same level of randomness as the KDC.
  358.  
  359.     If the user registered a digital signature key with the KDC instead
  360.     of an encryption key, then a separate exchange must be used.  The
  361.     client sends a request for a TGT as usual, except that it (rather
  362.     than the KDC) generates the random key that will be used to encrypt
  363.     the KDC response.  This key is sent to the KDC along with the
  364.     request in a preauthentication field:
  365.  
  366.     PA-PK-AS-SIGN ::= SEQUENCE {
  367.                                 -- PA TYPE 19
  368.         encSignedKeyPack        [0] EncryptedData
  369.                                     -- of SignedKeyPack
  370.                                     -- using the KDC's public key
  371.     }
  372.  
  373.     SignedKeyPack ::= SEQUENCE {
  374.         signedKey               [0] KeyPack,
  375.         signedKeyAuth           [1] PKAuthenticator,
  376.         signedKeySig            [2] Signature
  377.                                     -- of signedKey.signedKeyAuth
  378.                                     -- using user's signature key
  379.     }
  380.  
  381.     KeyPack ::= SEQUENCE {
  382.         randomKey               [0] EncryptionKey,
  383.                                     -- will be used to encrypt reply
  384.         nonce                   [1] INTEGER
  385.     }
  386.  
  387.     where the nonce is copied from the request.
  388.  
  389.     Upon receipt of the PA-PK-AS-SIGN, the KDC decrypts then verifies
  390.     the randomKey.  It then replies as per RFC 1510, except that the
  391.     reply is encrypted not with a password-derived user key, but with
  392.     the randomKey sent in the request.  Since the client already knows
  393.     this key, there is no need to accompany the reply with an extra
  394.     preauthentication field.  The transited field of the ticket should
  395.     specify the certification path as described in Section 3.2.
  396.  
  397.  
  398. 3.4.  Retrieving the Private Key From the KDC
  399.  
  400.     Implementation of the changes in this section is RECOMMENDED for
  401.     compliance with pk-init.
  402.  
  403.     When the user's private key is not stored local to the user, he may
  404.     choose to store the private key (normally encrypted using a
  405.     password-derived key) on the KDC.  We provide this option to present
  406.     the user with an alternative to storing the private key on local
  407.     disk at each machine where he expects to authenticate himself using
  408.     pk-init.  It should be noted that it replaces the added risk of
  409.     long-term storage of the private key on possibly many workstations
  410.     with the added risk of storing the private key on the KDC in a
  411.     form vulnerable to brute-force attack.
  412.  
  413.     In order to obtain a private key, the client includes a
  414.     preauthentication field with the AS-REQ message:
  415.  
  416.     PA-PK-KEY-REQ ::= SEQUENCE {
  417.                                 -- PA TYPE 20
  418.         patimestamp             [0] KerberosTime OPTIONAL, 
  419.                                     -- used to address replay attacks.
  420.         pausec                  [1] INTEGER OPTIONAL,
  421.                                     -- used to address replay attacks.
  422.         nonce                   [2] INTEGER,
  423.                                     -- binds the reply to this request
  424.         privkeyID               [3] SEQUENCE OF KeyID OPTIONAL
  425.                                     -- constructed as a hash of
  426.                                     -- public key corresponding to
  427.                                     -- desired private key
  428.     }
  429.  
  430.     KeyID ::= SEQUENCE {
  431.         KeyIdentifier           [0] OCTET STRING
  432.     }
  433.  
  434.     The client may request a specific private key by sending the
  435.     corresponding ID.  If this field is left empty, then all
  436.     private keys are returned.
  437.  
  438.     If all checks out, the KDC responds as described in the above
  439.     sections, except that an additional preauthentication field,
  440.     containing the user's private key, accompanies the reply:
  441.  
  442.     PA-PK-KEY-REP ::= SEQUENCE {
  443.                                 -- PA TYPE 21
  444.         nonce                   [0] INTEGER,
  445.                                     -- binds the reply to the request
  446.         KeyData                 [1] SEQUENCE OF KeyPair
  447.     }
  448.  
  449.     KeyPair ::= SEQUENCE {
  450.         privKeyID               [0] OCTET STRING,
  451.                                     -- corresponding to encPrivKey
  452.         encPrivKey              [1] OCTET STRING
  453.     }
  454.  
  455.  
  456. 3.4.1.  Additional Protection of Retrieved Private Keys
  457.  
  458.     We solicit discussion on the following proposal: that the client may
  459.     optionally include in its request additional data to encrypt the
  460.     private key, which is currently only protected by the user's
  461.     password.  One possibility is that the client might generate a
  462.     random string of bits, encrypt it with the public key of the KDC (as
  463.     in the SignedKeyPack, but with an ordinary OCTET STRING in place of
  464.     an EncryptionKey), and include this with the request.  The KDC then
  465.     XORs each returned key with this random bit string.  (If the bit
  466.     string is too short, the KDC could either return an error, or XOR
  467.     the returned key with a repetition of the bit string.)
  468.  
  469.     In order to make this work, additional means of preauthentication
  470.     need to be devised in order to prevent attackers from simply
  471.     inserting their own bit string.  One way to do this is to store
  472.     a hash of the password-derived key (the one used to encrypt the
  473.     private key).  This hash is then used in turn to derive a second
  474.     key (called the hash-key); the hash-key is used to encrypt an ASN.1
  475.     structure containing the generated bit string and a nonce value
  476.     that binds it to the request.
  477.  
  478.     Since the KDC possesses the hash, it can generate the hash-key and
  479.     verify this (weaker) preauthentication, and yet cannot reproduce
  480.     the private key itself, since the hash is a one-way function.
  481.  
  482.  
  483. 4.  Logistics and Policy Issues
  484.  
  485.     We solicit discussion on how clients and KDCs should be configured
  486.     in order to determine which of the options described above (if any)
  487.     should be used.  One possibility is to set the user's database
  488.     record to indicate that authentication is to use public key
  489.     cryptography; this will not work, however, in the event that the
  490.     client needs to know before making the initial request.
  491.  
  492. 5.  Compatibility with One-Time Passcodes
  493.  
  494.     We solicit discussion on how the protocol changes proposed in this
  495.     draft will interact with the proposed use of one-time passcodes
  496.     discussed in draft-ietf-cat-kerberos-passwords-00.txt.
  497.  
  498.  
  499. 6.  Strength of Cryptographic Schemes
  500.  
  501.     In light of recent findings on the strength of MD5 and DES,
  502.     we solicit discussion on which encryption types to incorporate
  503.     into the protocol changes.
  504.  
  505.  
  506. 7.  Bibliography
  507.  
  508.     [1] J. Kohl, C. Neuman.  The Kerberos Network Authentication
  509.     Service (V5).  Request for Comments: 1510
  510.  
  511.     [2] B.C. Neuman, Theodore Ts'o. Kerberos: An Authentication Service
  512.     for Computer Networks, IEEE Communications, 32(9):33-38.
  513.     September 1994.
  514.  
  515.     [3] A. Medvinsky, M. Hur.  Addition of Kerberos Cipher Suites to
  516.     Transport Layer Security (TLS).
  517.     draft-ietf-tls-kerb-cipher-suites-00.txt
  518.  
  519.     [4] A. Medvinsky, M. Hur, B. Clifford Neuman.  Public Key Utilizing
  520.     Tickets for Application Servers (PKTAPP).
  521.     draft-ietf-cat-pktapp-00.txt
  522.  
  523.     [5] M. Sirbu, J. Chuang.  Distributed Authentication in Kerberos Using 
  524.     Public Key Cryptography.  Symposium On Network and Distributed System 
  525.     Security, 1997.
  526.  
  527.     [6] B. Cox, J.D. Tygar, M. Sirbu.  NetBill Security and Transaction 
  528.     Protocol.  In Proceedings of the USENIX Workshop on Electronic Commerce,
  529.     July 1995.
  530.  
  531.     [7] Alan O. Freier, Philip Karlton and Paul C. Kocher.
  532.     The SSL Protocol, Version 3.0 - IETF Draft. 
  533.  
  534.     [8] B.C. Neuman, Proxy-Based Authorization and Accounting for 
  535.     Distributed Systems.  In Proceedings of the 13th International 
  536.     Conference on Distributed Computing Systems, May 1993
  537.  
  538.     [9] ITU-T (formerly CCITT)
  539.     Information technology - Open Systems Interconnection -
  540.     The Directory: Authentication Framework Recommendation X.509
  541.     ISO/IEC 9594-8
  542.  
  543.  
  544. 8.  Acknowledgements
  545.  
  546.     Some of the ideas on which this proposal is based arose during
  547.     discussions over several years between members of the SAAG, the IETF
  548.     CAT working group, and the PSRG, regarding integration of Kerberos
  549.     and SPX.  Some ideas have also been drawn from the DASS system.
  550.     These changes are by no means endorsed by these groups.  This is an
  551.     attempt to revive some of the goals of those groups, and this
  552.     proposal approaches those goals primarily from the Kerberos
  553.     perspective.  Lastly, comments from groups working on similar ideas
  554.     in DCE have been invaluable.
  555.  
  556.  
  557. 9.  Expiration Date
  558.  
  559.     This draft expires September 30, 1997.
  560.  
  561.  
  562. 10.  Authors
  563.  
  564.     Clifford Neuman
  565.     Brian Tung
  566.     USC Information Sciences Institute
  567.     4676 Admiralty Way Suite 1001
  568.     Marina del Rey CA 90292-6695
  569.     Phone: +1 310 822 1511
  570.     E-mail: {bcn, brian}@isi.edu
  571.  
  572.     John Wray
  573.     Digital Equipment Corporation
  574.     550 King Street, LKG2-2/Z7
  575.     Littleton, MA 01460
  576.     Phone: +1 508 486 5210
  577.     E-mail: wray@tuxedo.enet.dec.com
  578.  
  579.     Ari Medvinsky
  580.     Matthew Hur
  581.     CyberSafe Corporation
  582.     1605 NW Sammamish Road Suite 310
  583.     Issaquah WA 98027-5378
  584.     Phone: +1 206 391 6000
  585.     E-mail: {ari.medvinsky, matt.hur}@cybersafe.com
  586.  
  587.     Jonathan Trostle
  588.     Novell
  589.     E-mail: jonathan.trostle@novell.com
  590.