view Side-By-Side changes
Internet DraftIndividual Submission R. Harrison, EditorDocument: draft-ietf-ldapbis-authmeth-00.txtInternet Draft Novell, Inc. Document: draft-ietf-ldapbis-authmeth-01.txt July 19, 2001 Intended Category: Draft StandardFebruary 20, 2001Obsoletes: RFC28292829, RFC 2830 Authentication Methods and Connection Level Security Mechanisms for LDAPv3 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. This document is intended to be, after appropriate review and revision, submitted to the RFC Editor as a Standard Track document. Distribution of this memo is unlimited. Technical discussion of this document will take place on the IETF LDAP Extension Working Group mailing list <ietf-ldapbis@OpenLDAP.org>. Please send editorial comments directly to the author <roger_harrison@novell.com>. 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. Abstract This documentspecifies particular combinations ofdescribes LDAPv3 authentication methods and connection level security mechanisms that are required of all conforming LDAPv3 server implementations andrecommendedmakes recommendations for combinations of these mechanisms to be used in various deployment circumstances. Among the mechanisms described are - the LDAPv3 Bind operation used for authenticating LDAP clients to LDAP servers. - the Start TLS operation used to initiate Transport Layer Security on an established connection between an LDAP client and server. Harrison Expires January, 2002 [Page 1] Authentication Methods for LDAPv3[1] implementations.July 19, 2001 - various forms of authentication including anonymous authentication, password-based authentication, and certificate based authentication. 1. Conventions Used in this Document In this document, the term "user" represents any application which is an LDAP client using the directory to retrieve or store information. Several terms and concepts relating to authentication and authorization are presented in Appendix B of this document. While the definition of these terms and concepts is outside the scope of this document, an understanding of them is prerequisite to understanding much of the material in this document. Readers who are unfamiliar with security-related concepts are encouraged to review Appendix B before reading the remainder of this document. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [ReqsKeywords]. 2. Introduction LDAPv3 is a powerful access protocol for directories. It offers means of searching, fetching and manipulating directory content, and ways to access a rich set of security functions.In order to function for the best of the Internet, itIt is vital that these security functions beinteroperable;interoperable among all LDAP clients and servers on the Internet; therefore there has to be a minimum subset of security functions that is common to all implementations that claim LDAPv3 conformance. Basic threats to an LDAP directory service include:Harrison Expires August 20, 2001 [Page 1] Authentication Methods for LDAPv3 February 20, 2001(1) Unauthorized access to directory data via data-fetching operations, (2) Unauthorized access to reusable client authentication information by monitoring others' access, (3) Unauthorized access to directory data by monitoring others' access, (4) Unauthorized modification of directory data, (5) Unauthorized modification ofconfiguration,configuration information, (6) Unauthorized or excessive use of resources (denial of service), and Harrison Expires January, 2002 [Page 2] Authentication Methods for LDAPv3 July 19, 2001 (7) Spoofing of directory: Tricking a client into believing that information came from the directory when in fact it did not, either by modifying data in transit or misdirecting the client's connection. Threats (1), (4), (5) and (6) are due to hostile clients. Threats (2), (3) and (7) are due to hostile agents on the path between client and server, or posing as a server. The LDAP protocol suite can be protected with the following security mechanisms: (1) Client authentication by means of the SASL[2][SASL] mechanism set, possibly backed by the TLS [TLS] credentials exchange mechanism, (2) Client authorization by means of access control based on the requestor's authenticated identity, (3) Data integrity protection by means of the TLS protocol or data- integrity SASL mechanisms, (4) Protection against snooping by means of the TLS protocol or data-encrypting SASL mechanisms, (5) Resource usage limitation by means of administrative limits on service controls, and (6) Server authentication by means of the TLS protocol or SASL mechanism. At the moment, imposition of access controls is done by means outside the scope of the LDAP protocol. 3. Required Security Mechanisms It is clear that allowing any implementation, faced with the above requirements, to pick and choose among the possible alternatives is not a strategy that is likely to lead to interoperability. Inthis document,theterm "user" representsabsence of mandates, clients will be written that do not support anyapplication which issecurity function supported by the server, or worse, support only mechanisms like cleartext passwords that provide clearly inadequate security. Active intermediary attacks are the most difficult for anLDAPattacker to perform, and for an implementation to protect against. Methods that protect only against hostile clientusingand passive eavesdropping attacks are useful in situations where thedirectorycost of protection against active intermediary attacks is not justified based on the perceived risk of active intermediary attacks. Given the presence of the Directory, there is a strong desire toretrieve or store information.see mechanisms where identities take the form of an LDAP distinguished name and authentication data can be stored in the directory; this Harrison ExpiresAugust 20, 2001January, 2002 [Page2]3] Authentication Methods for LDAPv3February 20,July 19, 2001The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" inmeans that either thisdocument are to be interpreted as described in RFC 2119 [3]. 2. Example deployment scenarios The following scenarios are typicaldata is useless forLDAP directories onfaking authentication (like theInternet, and have different security requirements. (InUnix "/etc/passwd" file format used to be), or its content is never passed across thefollowing, "sensitive" means datawire unprotected - thatwill cause real damage tois, it's either updated outside theowner if revealed; there may be data thatprotocol or it is only updated in sessions well protectedbut not sensitive). Thisagainst snooping. It isnot intendedalso desirable tobe a comprehensive list, other scenarios are possible, especiallyallow authentication methods to carry authorization identities based onphysically protected networks.existing forms of user identities for backwards compatibility with non-LDAP-based authentication services. Therefore, the following implementation conformance requirements are in place: (1)A read-only directory, containing no sensitive data, accessible to "anyone", and TCP connection hijacking or IP spoofing is notFor aproblem. This directory requires no security functions except administrative service limits.read-only, public directory, anonymous authentication, described in section 5, can be used. (2)A read-only directory containing no sensitive data; readImplementations providing password-based authenticated accessis granted based on identity. TCP connection hijacking is not currently a problem.MUST support authentication using the DIGEST-MD5 SASL mechanism [4], as described in section 6.2. Thisscenario requires a secureprovides client authenticationfunction.with protection against passive eavesdropping attacks, but does not provide protection against active intermediary attacks. (3)A read-onlyFor a directorycontaining no sensitive data;needing session protection and authentication, theclient needs to ensure that the directory data is authenticated by the serverStart TLS operation described in section 5, andnot modified while being returned fromeither theserver. (4) A read-write directory, containing no sensitive data; read access is available to "anyone", update accesssimple authentication choice or the SASL EXTERNAL mechanism, are toproperly authorized persons. TCP connection hijacking is not currentlybe used together. Implementations SHOULD support authentication with aproblem. This scenario requires a secure authentication function. (5) A directory containing sensitive data. This scenario requires session confidentiality protection AND secure authentication. 3. Authentication and Authorization: Definitions and Concepts Thispassword as described in sectiondefines basic terms, concepts, and interrelationships regarding authentication, authorization, credentials,7.2, andidentity. These concepts are used in describing how various security approaches are utilized in clientSHOULD support authenticationand authorization. 3.1. Access Control Policy An access control policy iswith aset of rules defining the protection of resources, generally in terms of the capabilities of persons or other entities accessing those resources. A common expression of an access control policy is an access control list. Security objects and mechanisms, suchcertificate asthosedescribedhere, enable the expressionin section 8.1. Together, these can provide integrity and disclosure protection ofaccess control policiestransmitted data, andtheir enforcement. Access control Harrison Expires August 20, 2001 [Page 3] Authentication Methods for LDAPv3 February 20, 2001 policies are typically expressed in termsauthentication ofaccess control attributes as described below. 3.2. Access Control Factors A request, when it is being processed by aclient and server,may be associated with a wide variety of security-related factors (section 4.2 of [1]). Theincluding protection against active intermediary attacks. If TLS is negotiated, the client MUST discard all information about the serveruses these factors to determine whether and howfetched prior toprocesstherequest. These are called access control factors (ACFs). They might include source IP address, encryption strength,TLS negotiation. In particular, thetype of operation being requested, timevalue ofday, etc. Some factors maysupportedSASLMechanisms MAY bespecific to the request itself, others may be associated withdifferent after TLS has been negotiated (specifically, theconnection via whichEXTERNAL mechanism or therequest is transmitted, others (e.g. time of day) may be "environmental". Access control policiesproposed PLAIN mechanism areexpressed in terms of access control factors. E.g.,likely to only be listed after arequest having ACFs i,j,k can perform operation Y on resource Z. The set of ACFs thatTLS negotiation has been performed). If aserver makes available for such expressionsSASL security layer isimplementation-specific. 3.3. Authentication, Credentials, Identity Authentication credentials arenegotiated, theevidence supplied by one party to another, assertingclient MUST discard all information about theidentity ofserver fetched prior to SASL. In particular, if thesupplying party (e.g. a user) whoclient isattemptingconfigured toestablish an association withsupport multiple SASL mechanisms, it SHOULD fetch supportedSASLMechanisms both before and after theother party (typically a server). AuthenticationSASL security layer isthe process of generating, transmitting, and verifying these credentialsnegotiated andthusverify that theidentity they assert. An authentication identity isvalue has not changed after thename presented in a credential. There are many forms of authentication credentials --SASL security layer was negotiated. This detects active attacks which remove supported SASL mechanisms from theform used depends uponsupportedSASLMechanisms list, and allows theparticular authenticationclient to ensure that it is using the best mechanismnegotiatedsupported bythe parties. For example: X.509 certificates, Kerberos tickets, simple identityboth client andpassword pairs. Note that an authentication mechanism may constrain the form of authentication identities used with it. 3.4. Authorization Identity An authorization identityserver (additionally, this isone kind of access control factor. It is the name of the user or other entity that requests that operations be performed. Access control policies are often expressed in terms of authorization identities; e.g., entity X can perform operation Y on resource Z. The authorization identity bounda SHOULD toan association is often exactly the same as the authentication identity presented byallow for environments where theclient, but it may be different.supported SASLallows clientsmechanisms list is provided tospecify an authorization identity distinct from the authentication identity asserted bytheclient's credentials. This permits agents suchclient through a different trusted source, e.g. asproxy servers to authenticate using their own credentials, yet request the access privileges of the identity for which they are proxying [2]. Also, the formpart ofauthentication identity supplied byaservice like TLSdigitally signed object). Harrison ExpiresAugust 20, 2001January, 2002 [Page 4] Authentication Methods for LDAPv3February 20,July 19, 2001may not correspond toAppendix A contains example deployment scenarios that list theauthorization identitiesmechanisms that might be used toexpress a server's access control policy, requiringachieve aserver-specific mappingreasonable level of security in various circumstances. 4. Bind Operation The Bind operation allows authentication information to bedone. The method by which a server composes and validates an authorization identity fromexchanged between theauthentication credentials supplied by aclientis implementation-specific. 4. Required security mechanisms It is clear that allowing any implementation, faced with the above requirements, to pickandchoose among the possible alternatives is not a strategy thatserver. 4.1 Bind Request The Bind Request islikely to lead to interoperability. In the absencedefined in section 4.2 ofmandates, clients will be written that do not support any security function supported by the server, or worse, support only mechanisms like cleartext passwords that provide clearly inadequate security. Active intermediary attacks are the most difficult for an attacker to perform, and for an implementation to protect against. Methods that protect only against hostile client[LDAPv3] as follows: BindRequest ::= [APPLICATION 0] SEQUENCE { version INTEGER (1 .. 127), name LDAPDN, authentication AuthenticationChoice } AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING, -- 1 andpassive eavesdropping attacks are useful in situations where the cost2 reserved sasl [ReqsKeywords] SaslCredentials } SaslCredentials ::= SEQUENCE { mechanism LDAPString, credentials OCTET STRING OPTIONAL } Parameters ofprotection against active intermediary attacks is not justified based ontheperceived risk of active intermediary attacks. GivenBind Request are: - version: A version number indicating thepresenceversion of theDirectory, there is a strong desireprotocol tosee mechanisms where identities take the form of an LDAP distinguished name and authentication data canbestoredused inthe directory;thismeansprotocol session. This document describes version 3 of the LDAP protocol. Note thateither this datathere isuseless for faking authentication (likeno version negotiation, and theUnix "/etc/passwd" file format usedclient just sets this parameter tobe), or its content is never passed acrossthewire unprotected -version it desires. If the client requests protocol version 2, a server thatis, it's either updated outsidesupports the version 2 protocolor it is only updatedas described insessions well protected against snooping. It is also desirable[RFC1777] will not return any v3-specific protocol fields. (Note that not all LDAP servers will support protocol version 2, since they may be unable toallow authentication methodsgenerate the attribute syntaxes associated with version 2.) - name: The name of the directory object that the client wishes tocarry authorization identities basedbind as. This field may take onexisting forms of user identitiesa null value (a zero length string) forbackwards compatibility with non-LDAP-based authentication services. Therefore,thefollowing implementation conformance requirements are in place: (1) For a read-only, public directory,purposes of anonymousauthentication, described in section 5, can be used. (2) Implementations providing password-based authenticated access MUST supportbinds, when authentication has been performed at a lower layer, or when usingthe DIGEST-MD5SASLmechanism [4], as described in section 6.2. This provides client authenticationcredentials withprotection against passive eavesdropping attacks, but does not provide protection against active intermediary attacks. (3) Foradirectory needing session protection and authentication,mechanism that includes theStart TLS extended operation [5], and eithername in thesimple authentication choice orcredentials. Server behavior is undefined when theSASL EXTERNAL mechanism, are to be used together. Implementations SHOULD supportname is a null value, simple authenticationwithis used, and a passwordas described in section 6.2, andis specified. Note that the server SHOULDsupportNOT perform any alias dereferencing in determining the object to bind as. Harrison ExpiresAugust 20, 2001January, 2002 [Page 5] Authentication Methods for LDAPv3February 20,July 19, 2001authentication with a certificate as described in section 7.1. Together, these can provide integrity and disclosure protection of transmitted data, and authentication of client and server, including protection against active intermediary attacks. If TLS is negotiated, the client MUST discard all- authentication: informationabout the server fetched priorused to authenticate theTLS negotiation. In particular,name, if any, provided in thevalueBind Request. Upon receipt ofsupportedSASLMechanisms MAY be different after TLS has been negotiated (specifically, the EXTERNAL mechanism or the proposed PLAIN mechanism are likely to only be listed afteraTLS negotiation has been performed). IfBind Request, aSASL security layer is negotiated, the client MUST discard all information aboutprotocol server will authenticate the requesting client, if necessary. The serverfetched priorwill then return a Bind Response toSASL. In particular, ifthe client indicating the status of the authentication. Authorization isconfigured to support multiple SASL mechanisms, it SHOULD fetch supportedSASLMechanisms both before and aftertheSASL securityuse of this authentication information when performing operations. Authorization MAY be affected by factors outside of the LDAP Bind request, such as lower layer security services. 4.2. Bind Response The Bind Response isnegotiated and verify thatdefined in section 4.2 of [LDAPv3] as follows. BindResponse ::= [APPLICATION 1] SEQUENCE { COMPONENTS OF LDAPResult, serverSaslCreds [ABNF] OCTET STRING OPTIONAL } BindResponse consists simply of an indication from thevalue has not changed afterserver of theSASL security layerstatus of the client's request for authentication. If the bind wasnegotiated. This detects active attacks which remove supportedsuccessful, the resultCode will be success. Otherwise it will be one of: - operationsError: server encountered an internal error. - protocolError: unrecognized version number or incorrect PDU structure. - authMethodNotSupported: unrecognized SASLmechanisms frommechanism name. - strongAuthRequired: thesupportedSASLMechanisms list,server requires authentication be performed with a SASL mechanism. - referral: this server cannot accept this bind andallowsthe clientto ensure that it is usingshould try another. - saslBindInProgress: thebest mechanism supported by both client andserver(additionally, this isrequires the client to send aSHOULDnew bind request, with the same sasl mechanism, toallow for environments wherecontinue the authentication process. - inappropriateAuthentication: the server requires the client which had attempted to bind anonymously or without supplying credentials to provide some form of credentials. - invalidCredentials: the wrong password was supplied or thesupportedSASLmechanisms listcredentials could not be processed. - unavailable: the server isprovidedshutting down. Harrison Expires January, 2002 [Page 6] Authentication Methods for LDAPv3 July 19, 2001 If the server does not support the client's requested protocol version it MUST set the resultCode to protocolError. If the clientthroughreceives adifferent trusted source, e.g.BindResponse response where the resultCode was protocolError it MUST close the connection aspartthe server will be unwilling to accept further operations. (This is for compatibility with earlier versions ofa digitally signed object). 5. Anonymous Authentication Directory operations that modify entries or access protected attributes or entries generally require client authentication. Clients that do not intend to perform any of these operations typically use anonymous authentication. Servers SHOULD NOT allow clients with anonymous authentication to modify directory entries or access sensitive information in directory entries. LDAP implementations MUST support anonymous authentication, as defined in section 5.1. LDAP implementations MAY support anonymous authentication with TLS, as definedLDAP, insection 5.2. Whilewhich the bind was always the first operation and thereMAY be access control restrictions to prevent accesswas no negotiation.) The serverSaslCreds are used as part of a SASL-defined bind mechanism todirectory entries, an LDAP server SHOULDallowan anonymously-boundthe client toretrieve the supportedSASLMechanisms attribute ofauthenticate theroot DSE. An LDAPserverMAY use other information aboutto which it is communicating, or to perform "challenge-response" authentication. If the clientprovided bybound with thelower layerspassword choice, orexternal meansthe SASL mechanism does not require the server togrant or deny access evenreturn information toanonymously authenticated clients. 5.1. Anonymous Authentication Procedure Harrison Expires August 20, 2001 [Page 6] Authentication Methods for LDAPv3 February 20, 2001 An LDAPv3 client that hasthe client, then this field is notsuccessfully completedto be included in the result. 4.3. Sequencing of the Bind Operation 4.3.1. Effect of Multiple Bind Requests Subsequent to sending a bindoperation on a connection is anonymously authenticated. An LDAPrequest, A client MAYalsosend a bindanonymously usingrequest to change its identity. Such a bind request has theprocedure defined in section 4.2effect ofRFC 2251. 5.2. Anonymousabandoning all operations outstanding on the connection. (This simplifies server implementation.) Authentication from earlier binds are subsequently ignored, andTLS An LDAP client MAY useso if theStart TLS operation [5] to negotiatebind fails, theuse of TLS security [6].connection will be treated as anonymous (see section 4.3.3). Ifthe clienta SASL transfer encryption or integrity mechanism has been negotiated, and that mechanism does notbound beforehand,support the changing of credentials from one identity to another, thenuntilthe clientuses the EXTERNALMUST instead establish a new connection. For some SASLmechanismauthentication mechanisms, it may be necessary for the client tonegotiateinvoke therecognition ofBindRequest multiple times. If at any stage theclient's certificate,client wishes to abort the bind process it MAY unbind and then drop the underlying connection. Clients MUST NOT invoke operations between two Bind requests made as part of a multi-stage bind. 4.3.2. Aborting SASL Bind Negotiation A clientis anonymously authenticated. Recommendations on TLS ciphersuites are givenmay abort a SASL bind negotiation by sending a BindRequest with a different value insection 10. An LDAPthe mechanism field of SaslCredentials, or an AuthenticationChoice other than sasl. If the client sends a BindRequest with the sasl mechanism field as an empty string, the serverwhich requests that clients provide their certificate during TLS negotiation MAY useMUST return alocal security policy to determine whetherBindResponse with authMethodNotSupported as the resultCode. This will allow clients tosuccessfully complete TLSabort a negotiation if it wishes to try again with the same SASL mechanism. 4.3.3. Unbound Connection Treated as Anonymous Unlike LDAP v2, the clientdidneed notpresentsend acertificate which could be validated. 6. Password-based authentication 6.1. Simple authentication The LDAP "simple" authentication choice is not suitable for authenticationBind Request inenvironments where there is no network or transport layer confidentiality. LDAP implementations SHOULD support authentication withthe"simple" authentication choice whenfirst PDU of theconnection is protected against eavesdropping using TLS, as defined in section 6.3. LDAP implementations SHOULD NOT support authentication withconnection. The client may request any operations and the"simple" authentication choice unless the data on the connection is protected using TLS or other privacy and data-integrity protection. 6.2. DigestHarrison Expires January, 2002 [Page 7] AuthenticationLDAP implementations MUST support authentication with a password using the DIGEST-MD5 SASL mechanismMethods forpassword protection,LDAPv3 July 19, 2001 server MUST treat these asdefined in section 6.1. An LDAPanonymous. If the server requires that the clientMAY determine whetherbind before browsing or modifying the directory, the serversupports this mechanism by performingMAY reject asearchrequestonother than binding, unbinding or an extended request with theroot DSE, requesting"operationsError" result. If thesupportedSASLMechanisms attribute,client did not bind before sending a request andchecking whether the string "DIGEST-MD5" is present asreceives an operationsError, it may then send avalue ofBind Request. If thisattribute. Inalso fails or the client chooses not to bind on the existing connection, it will close the connection, reopen it and begin again by firststagesending a PDU with a Bind Request. This will aid in interoperating with servers implementing other versions ofauthentication, whenLDAP. 4.4. Using SASL for Other Security Services The simple authentication option provides minimal authentication facilities, with theclient is performing an "initial authentication" as defined in section 2.1contents of[4],theclient sendsauthentication field consisting only of abind request in whichcleartext password. Note that theversion numberuse of cleartext passwords is3,not recommended over open networks when theauthentication choice is sasl,underlying transport service cannot guarantee confidentiality; see the "Security Considerations" section. The sasl choice allows for any mechanism defined for use with SASL [RFC2222]. The mechanism field contains the nameis "DIGEST- MD5", andof thecredentials are absent.mechanism. Theclient then waits for a response fromcredentials field contains theserver to this request. Harrison Expires August 20, 2001 [Page 7] Authentication Methodsarbitrary data used forLDAPv3 February 20, 2001 The server will respond with a bind response in which the resultCode is saslBindInProgress, and the serverSaslCreds fieldauthentication, inside an OCTET STRING wrapper. Note that unlike some Internet application protocols where SASL ispresent. The contents of this fieldused, LDAP isa string definednot text-based, thus no base64 transformations are performed on the credentials. If any SASL-based integrity or confidentiality services are enabled, they take effect following the transmission by"digest-challenge" in section 2.1.1 of [4]. Thethe serverSHOULD include a realm indicationandMUST indicate support for UTF-8.reception by the client of the final BindResponse with resultCode success. The clientwill send a bindcan requestwith a distinct message id, in whichthat theversion number is 3,server use authentication information from a lower layer protocol by using the SASL EXTERNAL mechanism. 4.4.1. Use of ANONYMOUS and PLAIN SASL Mechanisms As LDAP includes native anonymous and plaintext authenticationchoice is sasl,methods, thesasl mechanism name is "DIGEST-MD5","ANONYMOUS" and "PLAIN" SASL mechanisms are not used with LDAP. If an authorization identity of a form different from a DN is requested by thecredentials containclient, a mechanism that protects thestring defined by "digest-response"password insection 2.1.2transit SHOULD be used. 4.4.2. Use of[4]. The serv-type is "ldap".EXTERNAL SASL Mechanism The "EXTERNAL" SASL mechanism can be used to request the LDAP serverwill respond withmake use of security credentials exchanged by abind response in which the resultCode is either success, or an error indication.lower layer. If a TLS session has not been established between theauthentication is successfulclient andtheserverdoes not support subsequent authentication, thenprior to making thecredentials fieldSASL EXTERNAL Bind request and there isabsent. If theno other external source of authenticationis successful and the server supports subsequent authentication, then thecredentialsfield contains the string defined by "response-auth" in section 2.1.3 of [4]. Support(e.g. IP-level Harrison Expires January, 2002 [Page 8] Authentication Methods forsubsequent authentication is OPTIONAL in clients and servers. 6.3. "simple" authentication choice under TLS encryption FollowingLDAPv3 July 19, 2001 security [RFC2401]), or if, during thenegotiationprocess ofan appropriateestablishing the TLSciphersuite providing connection confidentiality [6], a client MAY authenticate to a directory that supportssession, thesimpleserver did not request the client's authenticationchoice by performing a simplecredentials, the SASL EXTERNAL bindoperation. TheMUST fail with a result code of inappropriateAuthentication. Any clientwill use the Start TLS operation [5] to negotiate the useauthentication and authorization state ofTLS security [6] ontheconnection toLDAP association is lost, so the LDAPserver.association is in an anonymous state after the failure. 4.4.3. SASL Mechanisms not Considered in this Document Theclient needfollowing SASL-based mechanisms are nothave bound to the directory beforehand. Forconsidered in thisauthentication procedure to be successful, the clientdocument: KERBEROS_V4, GSSAPI andserver MUST negotiate a ciphersuite which contains a bulk encryption algorithmSKEY. 4.5. SASL Authorization Identity The authorization identity is carried as part ofappropriate strength. Recommendations on cipher suites are given in section 10. Followingthesuccessful completion of TLS negotiation,SASL credentials field in theclient MUST send anLDAPbindBind requestwithand response. When theversion number of 3,"EXTERNAL" SASL mechanism is being negotiated, if thenamecredentials fieldcontaining a DN , andis present, it contains an authorization identity of the"simple" authentication choice, containing a password. 6.3.1 "simple" Authentication Choice DSAs that map the DN sent inauthzId form described below. Other mechanisms define thebind request to a directory entry with a userPassword attribute will, for each valuelocation of theuserPassword attributeauthorization identity in thenamed user's entry, compare these for case-sensitive equality with the client's presented password. If therecredentials field. 4.5.1. Authorization Identity Syntax The authorization identity is amatch, thenstring in theserver will respond with resultCode success, otherwiseUTF-8 character set, corresponding to theserver will respondfollowing ABNF grammar [ABNF]: ; Specific predefined authorization (authz) id schemes are ; defined below -- new schemes may be defined in the future. authzId = dnAuthzId / uAuthzId ; distinguished-name-based authz id. dnAuthzId = "dn:" dn dn = utf8string ; withresultCode invalidCredentials. 6.4. Othersyntax defined in RFC 2253 ; unspecified authorization id, UTF-8 encoded. uAuthzId = "u:" userid userid = utf8string ; syntax unspecified 4.5.1.1. DN-based Authorization Identity All servers that support the storage of authenticationchoices with TLScredentials, such as passwords or certificates, in the directory MUST support the dnAuthzId choice. The format for distinguishedName is defined in Section 3 of draft-zeilenga-ldapbis-rfc2253-01.txt. 4.5.1.2. Unspecified Authorization Identity Harrison ExpiresAugust 20, 2001January, 2002 [Page8]9] Authentication Methods for LDAPv3February 20,July 19, 2001It is also possible, following the negotiation of TLS,The uAuthzId choice allows for compatibility with client applications that wish to authenticate toperformaSASL authentication that doeslocal directory but do notinvolve the exchange of plaintext reusable passwords. In this case the client and server needknow their own distinguished name or that do notnegotiatehave aciphersuite which provides confidentiality if the only service requireddirectory entry. The format of utf8string isdata integrity. 7. Certificate-based authentication LDAP implementations SHOULD support authentication via a client certificate in TLS, asdefinedin section 7.1. 7.1. Certificate-based authentication with TLS A user who has a public/private key pair in which the public key has been signed byas only aCertification Authority may use this key pair to authenticate to the directory server if the user's certificatesequence of UTF-8 encoded ISO 10646 characters, and further interpretation isrequested bysubject to prior agreement between the client and server.The user's certificate subject field SHOULD beFor example, thenameuserid could identify a user ofthe user'sa specific directoryentry, and the Certification Authority that issued the userĘs certificate mustservice, or besufficiently trusted by the directory server in order fora login name or theserverlocal-part of an RFC 822 email address. In general a uAuthzId MUST NOT be assumed toprocess the certificate. The means by which servers validate certificate paths is outside the scopebe globally unique. Additional authorization identity schemes MAY be defined in future versions of this document.A server MAY support mappings4.6. SASL Service Name forcertificates in whichLDAP For use with SASL [SASL], a protocol must specify a service name to be used with various SASL mechanisms, such as GSSAPI. For LDAP, thesubject fieldservice name isdifferent from"ldap", which has been registered with thename ofIANA as a GSSAPI service name. 4.7. SASL Integrity and Privacy Protections Any negotiated SASL integrity and privacy protections SHALL start on theuser's directory entry. A server which supports mappingsfirst octet ofnames MUST be capablethe first LDAP PDU following successful completion ofbeing configured to support certificates for which no mappingthe SASL bind operation. If lower level security layer isrequired. The client will usenegotiated, such as TLS, any SASL security services SHALL be layered on top of such security layers regardless of the order of their negotiation. 5. Start TLS Operation The Start Transport Layer Security (StartTLS) operation[5] to negotiateprovides theuse of TLS security [6]ability to establish Transport Layer Security [TLS] onthe connectionan LDAP association. 5.1. Start TLS Request A client requests TLS establishment by transmitting a Start TLS request PDU to theLDAPserver. Theclient need not have bound toStart TLS request is defined in terms of thedirectory beforehand. In[LDAPv3] ExtendedRequest as follows: ExtendedRequest ::= [APPLICATION 23] SEQUENCE { requestName [0] LDAPOID, requestValue [LDAPv3] OCTET STRING OPTIONAL } The requestName portion of the Start TLSnegotiation, the server MUSTrequesta certificate.MUST be the OID "1.3.6.1.4.1.1466.20037". The requestValue field is absent. Harrison Expires January, 2002 [Page 10] Authentication Methods for LDAPv3 July 19, 2001 The clientwill provide its certificate to the server, andMUSTperform a private key-based encryption, provingNOT send any PDUs on this connection following this request until ithas the private key associated with the certificate. In deployments that require protection of sensitive data in transit,receives a Start TLS extended response. 5.2. Start TLS Response When a Start TLS request is made, theclient andserver MUSTnegotiate a ciphersuite which containsreturn abulk encryption algorithm of appropriate strength. Recommendations of cipher suites are givenStart TLS response PDU to the requestor. The Start TLS response id defined insection 10.terms of the [LDAPv3] ExtendedResponse as follows: ExtendedResponse ::= [APPLICATION 24] SEQUENCE { COMPONENTS OF LDAPResult, responseName [10] LDAPOID OPTIONAL, response [11] OCTET STRING OPTIONAL } TheserverresponseName portion of the Start TLS response MUSTverifybe the OID "1.3.6.1.4.1.1466.20037". (Note that this OID is theclient's certificatesame OID value used in the requestName of the Start TLS request.) The response field isvalid.absent. The serverwill normally check thatMUST set thecertificate is issued byresultCode field to either success or one of the other values outlined in section 5.2.2. 5.2.1. "Success" Response If the ExtendedResponse contains aknown CA, and that noneresultCode of success, this indicates that thecertificates onserver is willing and able to negotiate TLS. Refer to section 3, below, for details. 5.2.2. Response other than "success" If theclient's certificate chain are invalid or revoked. There are several procedures by whichExtendedResponse contains a resultCode other than success, this indicates that the servercan perform these checks. Followingis unwilling or unable to negotiate TLS. If thesuccessful completion ofStart TLSnegotiation,extended request was not successful, theclientresultCode willsend an LDAP bind requestbe one of: operationsError (operations sequencing incorrect; e.g. TLS already established) protocolError (TLS not supported or incorrect PDU structure) referral (this server doesn't do TLS, try this one) unavailable (e.g. some major problem with TLS, or server is shutting down) The server MUST return operationsError if theSASL "EXTERNAL" mechanism. 8. Other mechanismsclient violates any of the Start TLS extended operation sequencing requirements described in section 5.3, below. Harrison ExpiresAugust 20, 2001January, 2002 [Page9]11] Authentication Methods for LDAPv3February 20,July 19, 20018.1. Use of ANONYMOUS and PLAIN SASL Mechanisms As LDAP includes native anonymous and plaintext authentication methods,If the"ANONYMOUS" and "PLAIN" SASL mechanisms areserver does notused with LDAP. If an authorization identity of a form different from a DN is requestedsupport TLS (whether by design or by current configuration), it MUST set theclient, a mechanism that protects the password in transit SHOULD be used. 8.2. SASL Mechanisms not Considered in this DocumentresultCode to protocolError (see section 4.1.1 of [LDAPv3]), or to referral. Thefollowing SASL-based mechanisms are not consideredserver MUST include an actual referral value inthis document: KERBEROS_V4, GSSAPI and SKEY. 8.3. Usethe LDAP Result if it returns a resultCode ofEXTERNAL SASL Mechanismreferral. The"EXTERNAL" SASL mechanism can be used to requestclient's current session is unaffected if theLDAPservermake use of security credentials exchanged by a lower layer. Ifdoes not support TLS. The client MAY proceed with any LDAP operation, or it MAY close the connection. The server MUST return unavailable if it supports TLS but cannot establish a TLSsession has not been established betweenconnection for some reason, e.g. theclient andcertificate serverprior to makingnot responding, it cannot contact its TLS implementation, or if theSASL EXTERNAL Bind request and thereserver isno other external sourcein process ofauthentication credentials (e.g. IP-level security [8]),shutting down. The client MAY retry the StartTLS operation, orif, duringit MAY proceed with any other LDAP operation, or it MAY close theprocessconnection. 5.3. Sequencing ofestablishingthe Start TLSsession, the server did not request the client's authentication credentials,Operation This section describes theSASL EXTERNAL bindoverall procedures clients and servers MUSTfail with a result codefollow for TLS establishment. These procedures take into consideration various aspects ofinappropriateAuthentication. Any client authentication and authorization statethe overall security of the LDAP associationis lost, soincluding discovery of resultant security level and assertion of the client's authorization identity. Note that the precise effects, on a client's authorization identity, of establishing TLS on an LDAP associationisare described in detail in section 5.5. 5.3.1. Requesting to Start TLS on ananonymous state after the failure. 9. Authorization IdentityLDAP Association Theauthorization identity is carried as part ofclient MAY send theSASL credentials fieldStart TLS extended request at any time after establishing an LDAP association, except that in theLDAP Bind request and response. Whenfollowing cases the"EXTERNAL" SASL mechanismclient MUST NOT send a Start TLS extended request: - if TLS isbeing negotiated,currently established on the connection, or - during a multi-stage SASL negotiation, or - if there are any LDAP operations outstanding on thecredentials field is present, it contains an authorization identityconnection. The result ofthe authzId form described below. Other mechanisms define the locationviolating any ofthe authorization identity in the credentials field. 9.1. Authorization Identity Syntax The authorization identitythese requirements is astringresultCode of operationsError, as described above in section 2.3. The client MAY have already performed a Bind operation when it sends a Start TLS request, or theUTF-8 character set, corresponding toclient might have not yet bound. If thefollowing ABNF [7]: ; Specific predefined authorization (authz) id schemes are ; defined below -- new schemes may be defined inclient did not establish a TLS connection before sending any other requests, and thefuture. authzId = dnAuthzId / uAuthzId ; distinguished-name-based authz id. dnAuthzId = "dn:" dn dn = utf8string ;server requires the client to establish a TLS connection before performing a particular request, the server MUST reject that request withsyntax defined in RFC 2253a confidentialityRequired or strongAuthRequired result. The client MAY send a Start TLS extended request, or it MAY choose to close the connection. 5.3.2. Starting TLS Harrison ExpiresAugust 20, 2001January, 2002 [Page10]12] Authentication Methods for LDAPv3February 20,July 19, 2001; unspecified authorization id, UTF-8 encoded. uAuthzId = "u:" userid userid = utf8string ; syntax unspecified 9.1.1. DN-based Authorization Identity All servers that supportThe server will return an extended response with thestorageresultCode ofauthentication credentials, such as passwords or certificates, insuccess if it is willing and able to negotiate TLS. It will return other resultCodes, documented above, if it is unable. In thedirectorysuccessful case, the client, which has ceased to transfer LDAP requests on the connection, MUSTsupporteither begin a TLS negotiation or close thednAuthzId choice.connection. Theformat for distinguishedName is definedclient will send PDUs inSection 3the TLS Record Protocol directly over the underlying transport connection to the server to initiate TLS negotiation [TLS]. 5.3.3. TLS Version Negotiation Negotiating the version ofdraft-zeilenga-ldapbis-rfc2253-01.txt. 9.1.2. Unspecified Authorization Identity The uAuthzId choice allows for compatibility with client applications that wish to authenticate to a local directory but do not know their own distinguished nameTLS orthat do not haveSSL to be used is adirectory entry. The formatpart ofutf8string is definedthe TLS Handshake Protocol, asonly a sequencedocumented in [TLS]. Please refer to that document for details. 5.3.4. Discovery ofUTF-8 encoded ISO 10646 characters, and further interpretationResultant Security Level After a TLS connection issubjectestablished on an LDAP association, both parties MUST individually decide whether or not toprior agreement betweencontinue based on theclientprivacy level achieved. Ascertaining the TLS connection's privacy level is implementation dependent, andserver. For example,accomplished by communicating with one's respective local TLS implementation. If theuserid could identify a user of a specific directory service, or be a login nameclient or server decides that thelocal-partlevel of authentication or privacy is not high enough for it to continue, it SHOULD gracefully close the TLS connection immediately after the TLS negotiation has completed (see sections 5.4.1 and 5.5.2 below). If the client decides to continue, it MAY attempt to Start TLS again, it MAY send anRFC 822 email address. In generalunbind request, or it MAY send any other LDAP request. 5.3.5. Assertion of Client's Authorization Identity The client MAY, upon receipt of auAuthzId MUST NOT be assumed to be globally unique. AdditionalStart TLS response indicating success, assert that a specific authorization identityschemes MAYbedefinedutilized infuture versions ofdetermining the client's authorization status. The client accomplishes thisdocument. 10. TLS Ciphersuitesvia an LDAP Bind request specifying a SASL mechanism of "EXTERNAL" [SASL] (see section 5.5.1.2 below). 5.3.6. Server Identity Check Thefollowing ciphersuites defined in [6]client MUSTNOT be used for confidentiality protectioncheck its understanding ofpasswords or data: TLS_NULL_WITH_NULL_NULL TLS_RSA_WITH_NULL_MD5 TLS_RSA_WITH_NULL_SHA The following ciphersuites definedthe server's hostname against the server's identity as presented in[6] can be cracked easily (less than a day of CPU time on a standard CPUthe server's Certificate message, in2000). These ciphersuites are NOT RECOMMENDED fororder to prevent man-in-the-middle attacks. Matching is performed according to these rules: - The client MUST usein confidentiality protection of passwords or data. Client andthe serverimplementers SHOULD carefully considerhostname it used to open the LDAP connection as the valueofto compare against thepasswordserver name as expressed in the server's certificate. The client MUST NOT use the server's canonical DNS name ordata being protected before using these ciphersuites: TLS_RSA_EXPORT_WITH_RC4_40_MD5 TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 TLS_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHAany other derived form of name. Harrison ExpiresAugust 20, 2001January, 2002 [Page11]13] Authentication Methods for LDAPv3February 20,July 19, 2001TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA The following ciphersuites are vulnerable to man-in-the-middle attacks, and- If a subjectAltName extension of type dNSName is present in the certificate, it SHOULDNOTbe usedto protect passwords or sensitive data, unlessas thenetwork configurationsource of the server's identity. - Matching issuch thatcase-insensitive. - The "*" wildcard character is allowed. If present, it applies only to thedangerleft-most name component. E.g. *.bar.com would match a.bar.com, b.bar.com, etc. but not bar.com. If more than one identity of aman-in-the-middle attackgiven type istolerable: TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 TLS_DH_anon_WITH_RC4_128_MD5 TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA TLS_DH_anon_WITH_DES_CBC_SHA TLS_DH_anon_WITH_3DES_EDE_CBC_SHA A client or server that supports TLS MUST support TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA and MAY support other ciphersuites offering equivalent or better protection. 11. SASL service name for LDAP For use with SASL [2], a protocol must specifypresent in the certificate (e.g. more than one dNSName name), aservice name to be used with various SASL mechanisms, such as GSSAPI. For LDAP,match in any one of theservice nameset is"ldap", which has been registered withconsidered acceptable. If theIANA as a GSSAPI service name. 12. SASL Integrity and Privacy Protections Any negotiated SASL integrity and privacy protections SHALL start onhostname does not match thefirst octet ofdNSName-based identity in thefirst LDAP PDU following successful completion ofcertificate per theSASL bind operation. If lower level security layer is negotiated, such as TLS,above check, user-oriented clients SHOULD either notify the user (clients MAY give the user the opportunity to continue with the connection in anySASL security services SHALL be layered on top of such security layers regardless ofcase) or terminate theorder of their negotiation. 13. Security Considerations Security issues are discussed throughout this memo;connection and indicate that the(unsurprising) conclusionserver's identity is suspect. Automated clients SHOULD close the connection, returning and/or logging an error indicating thatmandatory securitythe server's identity isimportant, andsuspect. Beyond the server identity checks described in this section, clients SHOULD be prepared to do further checking to ensure thatsession encryptionthe server isrequired when snoopingauthorized to provide the service it isa problem. Servers are encouragedobserved toprevent modifications by anonymous users. Servers may also wishprovide. The client MAY need tominimize denialmake use ofservice attacks by timing out idle connections, and returning the unwillingToPerform result code rather than performing computationally expensive operations requested by unauthorized clients. A connection on which thelocal policy information. 5.3.7. Refresh of Server Capabilities Information The clienthas not performedMUST refresh any cached server capabilities information (e.g. from theStartserver's root DSE; see section 3.4 of [LDAPv3]) upon TLSoperation or negotiated a suitable SASL mechanism for connection integrity and encryption servicessession establishment. This issubjectnecessary toman-in-the-middleprotect against active-intermediary attacksto view and modifythat may have altered any server capabilities informationin transit. Harrison Expires August 20, 2001 [Page 12] Authentication Methods for LDAPv3 February 20, 2001 Additional security considerations relating to the EXTERNAL mechanismretrieved prior tonegotiateTLScan be found in [2], [5] and [6]. 14. Acknowledgementsestablishment. Theauthor acknowledges the workserver MAY advertise different capabilities after TLS establishment. 5.4. Closing a TLS Connection Two forms ofMark Wahl, Harald Tveit Alvestrand, Jeff Hodges,TLS connection closure--graceful andRL "Bob" Morgan who authored RFC 2829,abrupt--are supported. 5.4.1. Graceful Closure Either thedocument upon which this work is largely based. RFC 2829 was a product ofclient or server MAY terminate theIETF LDAPEXT Working Group.TLS connection on an LDAP association by sending a TLS closure alert. Thisdocument is based upon input ofwill leave theIETFLDAPRevision working group. The contributionsassociation intact. Before closing a TLS connection, the client MUST [RGH18]either wait for any outstanding LDAP operations to complete, or explicitly abandon them [LDAPv3]. After the initiator ofits members is greatly appreciated. 15. Bibliography [1] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access Protocol (v3)", RFC 2251, December 1997. [2] Myers, J., "Simplea close has sent a TLS closure alert, it MUST discard any TLS messages until it has received a TLS closure alert Harrison Expires January, 2002 [Page 14] Authenticationand Security Layer (SASL)", RFC 2222, October 1997. [3] Bradner, S., "Key wordsMethods foruse in RFCsLDAPv3 July 19, 2001 from the other party. It will cease toIndicate Requirement Levels", BCP 14, RFC 2119, March 1997. [4] Leach, P. and C. Newman, "Using Digest Authentication as a SASL Mechanism", RFC 2831, May 2000. [5] Hodges, J., Morgan, R. and M. Wahl, "Lightweight Directory Accesssend TLS Record Protocol(v3): Extension for Transport Layer Security", RFC 2830, May 2000. [6] Dierks, T.PDUs, andC. Allen, "Thefollowing the receipt of the alert, MAY send and receive LDAP PDUs. The other party, if it receives a TLS closure alert, MUST immediately transmit a TLS closure alert. It will subsequently cease to send TLS Record ProtocolVersion 1.0", RFC 2246, January 1999. [7] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997. [8] Kent, S.PDUs, andR. Atkinson, "Security Architecture for the Internet Protocol", RFC 2401, November 1998. 15. Author's Address Roger Harrison Novell, Inc. 1800 S. Novell Place Provo, UT 84606 +1 801 861 2642 roger_harrison@novell.com 16. Full Copyright Statement Copyright (C) The Internet Society (2000). All Rights Reserved. Harrison Expires August 20, 2001 [Page 13] Authentication Methods for LDAPv3 February 20, 2001 This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, publishedMAY send anddistributed, in wholereceive LDAP PDUs. 5.4.2. Abrupt Closure Either the client orin part, without restriction of any kind, provided thatserver MAY abruptly close theabove copyright notice and this paragraph are included on all such copiesentire LDAP association andderivative works. However, this document itself may not be modified inanyway, such asTLS connection established on it byremoving the copyright notice or references todropping theInternet Society or other Internet organizations, except as needed forunderlying TCP connection. In this circumstance, a server MAY send thepurposeclient a Notice ofdeveloping Internet standards in which caseDisconnection [LDAPv3] before dropping theprocedures for copyrights defined inTCP connection. 5.5. Effects of TLS on a Client's Authorization Identity This section describes theInternet Standards process must be followed, or as required to translate it into languages other than English.effects on a client's authorization identity brought about by establishing TLS on an LDAP association. Thelimited permissions granted abovedefault effects areperpetualdescribed first, andwill not be revoked bynext theInternet Society or its successors or assigns. This document andfacilities for client assertion of authorization identity are discussed including error conditions. Lastly, theinformation contained herein is provided on an "AS IS" basiseffects of closing the TLS connection are described. Authorization identities andTHE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.related concepts are described in Appendix B. 5.5.1. TLS Connection Establishment Effects 5.5.1.1. Default Effects Upon establishment of the TLS connection onto the LDAP association, any previously established authentication and authorization identities MUST remain in force, including anonymous state. This holds even in the case where the server requests client authentication via TLS -- e.g. requests the client to supply its certificate during TLS negotiation (see [TLS]). 5.5.1.2. Client Assertion of Authorization Identity A client MAY either implicitly request that its LDAP authorization identity be derived from its authenticated TLS credentials or it MAY explicitly provide an authorization identity and assert that it be used in combination with its authenticated TLS credentials. The former is known as an implicit assertion, and the latter as an explicit assertion. 5.5.1.2.1. Implicit Assertion An implicit authorization identity assertion is accomplished after TLS establishment by invoking a Bind request of the SASL form using Harrison Expires January, 2002 [Page 15] Authentication Methods for LDAPv3 July 19, 2001 the "EXTERNAL" mechanism name [SASL, LDAPv3] that SHALL NOT include the optional credentials octet string (found within the SaslCredentials sequence in the Bind Request). The server will derive the client's authorization identity from the authentication identity supplied in the client's TLS credentials (typically a public key certificate) according to local policy. The underlying mechanics of how this is accomplished are implementation specific. 5.5.1.2.2. Explicit Assertion An explicit authorization identity assertion is accomplished after TLS establishment by invoking a Bind request of the SASL form using the "EXTERNAL" mechanism name [SASL, LDAPv3] that SHALL include the credentials octet string. This string MUST be constructed as documented in section 9 of [AuthMeth]. 5.5.1.2.3. Error Conditions For either form of assertion, the server MUST verify that the client's authentication identity as supplied in its TLS credentials is permitted to be mapped to the asserted authorization identity. The server MUST reject the Bind operation with an invalidCredentials resultCode in the Bind response if the client is not so authorized. Additionally, with either form of assertion, if a TLS session has not been established between the client and server prior to making the SASL EXTERNAL Bind request and there is no other external source of authentication credentials (e.g. IP-level security [IPSEC]), or if, during the process of establishing the TLS session, the server did not request the client's authentication credentials, the SASL EXTERNAL bind MUST fail with a result code of inappropriateAuthentication. After the above Bind operation failures, any client authentication and authorization state of the LDAP association is lost, so the LDAP association is in an anonymous state after the failure. TLS connection state is unaffected, though a server MAY end the TLS connection, via a TLS close_notify message, based on the Bind failure (as it MAY at any time). 5.5.2. TLS Connection Closure Effects Closure of the TLS connection MUST cause the LDAP association to move to an anonymous authentication and authorization state regardless of the state established over TLS and regardless of the authentication and authorization state prior to TLS connection establishment. 6. Anonymous Authentication Directory operations that modify entries or access protected attributes or entries generally require client authentication. Clients that do not intend to perform any of these operations Harrison Expires January, 2002 [Page 16] Authentication Methods for LDAPv3 July 19, 2001 typically use anonymous authentication. Servers SHOULD NOT allow clients with anonymous authentication to modify directory entries or access sensitive information in directory entries. LDAP implementations MUST support anonymous authentication, as defined in section 6.1. LDAP implementations MAY support anonymous authentication with TLS, as defined in section 6.2. While there MAY be access control restrictions to prevent access to directory entries, an LDAP server SHOULD allow an anonymously-bound client to retrieve the supportedSASLMechanisms attribute of the root DSE. An LDAP server MAY use other information about the client provided by the lower layers or external means to grant or deny access even to anonymously authenticated clients. 6.1. Anonymous Authentication Procedure An LDAPv3 client that has not successfully completed a bind operation on a connection is anonymously authenticated. See section 4.3.3. An LDAP client MAY also choose to explicitly bind anonymously. A client that wishes to do so MUST choose the simple authentication option in the Bind Request (see section XXX) and set the password to be of zero length. (This is often done by LDAPv2 clients.) Typically the name is also of zero length. 6.2. Anonymous Authentication and TLS An LDAP client MAY use the Start TLS operation (section 4) to negotiate the use of TLS security [TLS]. If the client has not bound beforehand, then until the client uses the EXTERNAL SASL mechanism to negotiate the recognition of the client's certificate, the client is anonymously authenticated. Recommendations on TLS ciphersuites are given in section 10. An LDAP server which requests that clients provide their certificate during TLS negotiation MAY use a local security policy to determine whether to successfully complete TLS negotiation if the client did not present a certificate which could be validated. 7. Password-based authentication 7.1. Simple authentication The LDAP "simple" authentication choice is not suitable for authentication in environments where there is no network or transport layer confidentiality. LDAP implementations SHOULD support Harrison Expires January, 2002 [Page 17] Authentication Methods for LDAPv3 July 19, 2001 authentication with the "simple" authentication choice when the connection is protected against eavesdropping using TLS, as defined in section 6.3. LDAP implementations SHOULD NOT support authentication with the "simple" authentication choice unless the data on the connection is protected using TLS or other privacy and data-integrity protection. 7.2. Digest Authentication LDAP implementations MUST support authentication with a password using the DIGEST-MD5 SASL mechanism for password protection. An LDAP client MAY determine whether the server supports this mechanism by performing a search request on the root DSE, requesting the supportedSASLMechanisms attribute, and checking whether the string "DIGEST-MD5" is present as a value of this attribute. In the first stage of authentication, when the client is perfCorming an "initial authentication" as defined in section 2.1 of [RFC2831], the client sends a bind request in which the version number is 3, the authentication choice is sasl, the sasl mechanism name is "DIGEST- MD5", and the credentials are absent. The client then waits for a response from the server to this request. The server will respond with a bind response in which the resultCode is saslBindInProgress, and the serverSaslCreds field is present. The contents of this field is a string defined by "digest-challenge" in section 2.1.1 of [RFC2831]. The server SHOULD include a realm indication and MUST indicate support for UTF-8. The client will send a bind request with a distinct message id, in which the version number is 3, the authentication choice is sasl, the sasl mechanism name is "DIGEST-MD5", and the credentials contain the string defined by "digest-response" in section 2.1.2 of [RFC2831]. The serv-type is "ldap". The server will respond with a bind response in which the resultCode is either success, or an error indication. If the authentication is successful and the server does not support subsequent authentication, then the credentials field is absent. If the authentication is successful and the server supports subsequent authentication, then the credentials field contains the string defined by "response-auth" in section 2.1.3 of [4]. Support for subsequent authentication is OPTIONAL in clients and servers. 7.3. "simple" authentication choice under TLS encryption Following the negotiation of an appropriate TLS ciphersuite providing connection confidentiality [6], a client MAY authenticate to a directory that supports the simple authentication choice by performing a simple bind operation. Harrison Expires January, 2002 [Page 18] Authentication Methods for LDAPv3 July 19, 2001 The client will use the Start TLS operation [5] to negotiate the use of TLS security [6] on the connection to the LDAP server. The client need not have bound to the directory beforehand. For this authentication procedure to be successful, the client and server MUST negotiate a ciphersuite which contains a bulk encryption algorithm of appropriate strength. Recommendations on cipher suites are given in section 10. Following the successful completion of TLS negotiation, the client MUST send an LDAP bind request with the version number of 3, the name field containing a DN , and the "simple" authentication choice, containing a password. 7.3.1 "simple" Authentication Choice DSAs that map the DN sent in the bind request to a directory entry with a userPassword attribute will, for each value of the userPassword attribute in the named user's entry, compare these for case-sensitive equality with the client's presented password. If there is a match, then the server will respond with resultCode success, otherwise the server will respond with resultCode invalidCredentials. 7.4. Other authentication choices with TLS It is also possible, following the negotiation of TLS, to perform a SASL authentication that does not involve the exchange of plaintext reusable passwords. In this case the client and server need not negotiate a ciphersuite which provides confidentiality if the only service required is data integrity. 8. Certificate-based authentication LDAP implementations SHOULD support authentication via a client certificate in TLS, as defined in section 7.1. 8.1. Certificate-based authentication with TLS A user who has a public/private key pair in which the public key has been signed by a Certification Authority may use this key pair to authenticate to the directory server if the user's certificate is requested by the server. The user's certificate subject field SHOULD be the name of the user's directory entry, and the Certification Authority that issued the userĘs certificate must be sufficiently trusted by the directory server in order for the server to process the certificate. The means by which servers validate certificate paths is outside the scope of this document. A server MAY support mappings for certificates in which the subject field name is different from the name of the user's directory entry. A server which supports mappings of names MUST be capable of being configured to support certificates for which no mapping is required. Harrison Expires January, 2002 [Page 19] Authentication Methods for LDAPv3 July 19, 2001 The client will use the Start TLS operation [5] to negotiate the use of TLS security [6] on the connection to the LDAP server. The client need not have bound to the directory beforehand. In the TLS negotiation, the server MUST request a certificate. The client will provide its certificate to the server, and MUST perform a private key-based encryption, proving it has the private key associated with the certificate. In deployments that require protection of sensitive data in transit, the client and server MUST negotiate a ciphersuite which contains a bulk encryption algorithm of appropriate strength. Recommendations of cipher suites are given in section 10. The server MUST verify that the client's certificate is valid. The server will normally check that the certificate is issued by a known CA, and that none of the certificates on the client's certificate chain are invalid or revoked. There are several procedures by which the server can perform these checks. Following the successful completion of TLS negotiation, the client will send an LDAP bind request with the SASL "EXTERNAL" mechanism. 9. TLS Ciphersuites The following ciphersuites defined in [6] MUST NOT be used for confidentiality protection of passwords or data: TLS_NULL_WITH_NULL_NULL TLS_RSA_WITH_NULL_MD5 TLS_RSA_WITH_NULL_SHA The following ciphersuites defined in [6] can be cracked easily (less than a day of CPU time on a standard CPU in 2000). These ciphersuites are NOT RECOMMENDED for use in confidentiality protection of passwords or data. Client and server implementers SHOULD carefully consider the value of the password or data being protected before using these ciphersuites: TLS_RSA_EXPORT_WITH_RC4_40_MD5 TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 TLS_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA The following ciphersuites are vulnerable to man-in-the-middle attacks, and SHOULD NOT be used to protect passwords or sensitive Harrison Expires January, 2002 [Page 20] Authentication Methods for LDAPv3 July 19, 2001 data, unless the network configuration is such that the danger of a man-in-the-middle attack is tolerable: TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 TLS_DH_anon_WITH_RC4_128_MD5 TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA TLS_DH_anon_WITH_DES_CBC_SHA TLS_DH_anon_WITH_3DES_EDE_CBC_SHA A client or server that supports TLS MUST support TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA and MAY support other ciphersuites offering equivalent or better protection. 10. Security Considerations Security issues are discussed throughout this memo; the (unsurprising) conclusion is that mandatory security is important, and that session encryption is required when snooping is a problem. Servers are encouraged to prevent modifications by anonymous users. Servers may also wish to minimize denial of service attacks by timing out idle connections, and returning the unwillingToPerform result code rather than performing computationally expensive operations requested by unauthorized clients. A connection on which the client has not performed the Start TLS operation or negotiated a suitable SASL mechanism for connection integrity and encryption services is subject to man-in-the-middle attacks to view and modify information in transit. 10.1. Start TLS Security Considerations The goals of using the TLS protocol with LDAP are to ensure connection confidentiality and integrity, and to optionally provide for authentication. TLS expressly provides these capabilities, as described in [TLS]. All security gained via use of the Start TLS operation is gained by the use of TLS itself. The Start TLS operation, on its own, does not provide any additional security. The use of TLS does not provide or ensure for confidentiality and/or non-repudiation of the data housed by an LDAP-based directory server. Nor does it secure the data from inspection by the server administrators. Once established, TLS only provides for and ensures confidentiality and integrity of the operations and data in transit over the LDAP association, and only if the implementations on the client and server support and negotiate it. The level of security provided though the use of TLS depends directly on both the quality of the TLS implementation used and the style of usage of that implementation. Additionally, an active- Harrison Expires January, 2002 [Page 21] Authentication Methods for LDAPv3 July 19, 2001 intermediary attacker can remove the Start TLS extended operation from the supportedExtension attribute of the root DSE. Therefore, both parties SHOULD independently ascertain and consent to the security level achieved once TLS is established and before beginning use of the TLS connection. For example, the security level of the TLS connection might have been negotiated down to plaintext. Clients SHOULD either warn the user when the security level achieved does not provide confidentiality and/or integrity protection, or be configurable to refuse to proceed without an acceptable level of security. Client and server implementors SHOULD take measures to ensure proper protection of credentials and other confidential data where such measures are not otherwise provided by the TLS implementation. Server implementors SHOULD allow for server administrators to elect whether and when connection confidentiality and/or integrity is required, as well as elect whether and when client authentication via TLS is required. Additional security considerations relating to the EXTERNAL mechanism to negotiate TLS can be found in [SASL] and [6]. 11. Acknowledgements This document combines information originally contained in RFC 2829, RFC 2830 and portions of RFC 2251. The author acknowledges the work of Harald Tveit Alvestrand, Jeff Hodges, Tim Howes, Steve Kille, RL "Bob" Morgan , and Mark Wahl, each of whom authored one or more of these documents. RFC 2829 and RFC 2830 were products of the IETF LDAPEXT Working Group. RFC 2251 was a product of the ASID Working Group. This document is based upon input of the IETF LDAP Revision working group. The contributions of its members is greatly appreciated. 12. Bibliography [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997. [IPSEC] Kent, S. and R. Atkinson, "Security Architecture for the Internet Protocol", RFC 2401, November 1998. [LDAPv3] Wahl, M., Kille S. and T. Howes, "Lightweight Directory Access Protocol (v3)", RFC 2251, December 1997. [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for the Internet Protocol", RFC 2401, November 1998. [RFC2831] Leach, P. and C. Newman, "Using Digest Authentication as a SASL Mechanism", RFC 2831, May 2000. Harrison Expires January, 2002 [Page 22] Authentication Methods for LDAPv3 July 19, 2001 [ReqsKeywords] Bradner, S., "Key Words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [SASL] Myers, J., "Simple Authentication and Security Layer (SASL)", RFC 2222, October 1997. [TLS] Dierks, T. and C. Allen. "The TLS Protocol Version 1.0", RFC 2246, January 1999. 13. Author's Address Roger Harrison Novell, Inc. 1800 S. Novell Place Provo, UT 84606 +1 801 861 2642 roger_harrison@novell.com 14. Full Copyright Statement Copyright (C) The Internet Society (2000). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Appendix A. Example Deployment Scenarios The following scenarios are typical for LDAP directories on the Internet, and have different security requirements. (In the following, "sensitive" means data that will cause real damage to the Harrison Expires January, 2002 [Page 23] Authentication Methods for LDAPv3 July 19, 2001 owner if revealed; there may be data that is protected but not sensitive). This is not intended to be a comprehensive list, other scenarios are possible, especially on physically protected networks. (1) A read-only directory, containing no sensitive data, accessible to "anyone", and TCP connection hijacking or IP spoofing is not a problem. This directory requires no security functions except administrative service limits. (2) A read-only directory containing no sensitive data; read access is granted based on identity. TCP connection hijacking is not currently a problem. This scenario requires a secure authentication function. (3) A read-only directory containing no sensitive data; and the client needs to ensure that the directory data is authenticated by the server and not modified while being returned from the server. (4) A read-write directory, containing no sensitive data; read access is available to "anyone", update access to properly authorized persons. TCP connection hijacking is not currently a problem. This scenario requires a secure authentication function. (5) A directory containing sensitive data. This scenario requires session confidentiality protection AND secure authentication. Appendix B. Authentication and Authorization: Definitions and Concepts This appendix defines basic terms, concepts, and interrelationships regarding authentication, authorization, credentials, and identity. These concepts are used in describing how various security approaches are utilized in client authentication and authorization. B.1. Access Control Policy An access control policy is a set of rules defining the protection of resources, generally in terms of the capabilities of persons or other entities accessing those resources. A common expression of an access control policy is an access control list. Security objects and mechanisms, such as those described here, enable the expression of access control policies and their enforcement. Access control policies are typically expressed in terms of access control attributes as described below. B.2. Access Control Factors A request, when it is being processed by a server, may be associated with a wide variety of security-related factors (section 4.2 of [LDAPv3]). The server uses these factors to determine whether and how to process the request. These are called access control factors (ACFs). They might include source IP address, encryption strength, Harrison Expires January, 2002 [Page 24] Authentication Methods for LDAPv3 July 19, 2001 the type of operation being requested, time of day, etc. Some factors may be specific to the request itself, others may be associated with the connection via which the request is transmitted, others (e.g. time of day) may be "environmental". Access control policies are expressed in terms of access control factors. E.g., a request having ACFs i,j,k can perform operation Y on resource Z. The set of ACFs that a server makes available for such expressions is implementation-specific. B.3. Authentication, Credentials, Identity Authentication credentials are the evidence supplied by one party to another, asserting the identity of the supplying party (e.g. a user) who is attempting to establish an association with the other party (typically a server). Authentication is the process of generating, transmitting, and verifying these credentials and thus the identity they assert. An authentication identity is the name presented in a credential. There are many forms of authentication credentials -- the form used depends upon the particular authentication mechanism negotiated by the parties. For example: X.509 certificates, Kerberos tickets, simple identity and password pairs. Note that an authentication mechanism may constrain the form of authentication identities used with it. B.4. Authorization Identity An authorization identity is one kind of access control factor. It is the name of the user or other entity that requests that operations be performed. Access control policies are often expressed in terms of authorization identities; e.g., entity X can perform operation Y on resource Z. The authorization identity bound to an association is often exactly the same as the authentication identity presented by the client, but it may be different. SASL allows clients to specify an authorization identity distinct from the authentication identity asserted by the client's credentials. This permits agents such as proxy servers to authenticate using their own credentials, yet request the access privileges of the identity for which they are proxying [SASL]. Also, the form of authentication identity supplied by a service like TLS may not correspond to the authorization identities used to express a server's access control policy, requiring a server-specific mapping to be done. The method by which a server composes and validates an authorization identity from the authentication credentials supplied by a client is implementation-specific. Appendix C. RFC 2829 Change History This appendix lists the changes made to the text of RFC 2829 in preparing this document. Harrison Expires January, 2002 [Page 25] Authentication Methods for LDAPv3 July 19, 2001 C.0. General Editorial Changes Version -00 - Changed other instances of the term LDAP to LDAPv3 where v3 of the protocol is implied. Also made all references to LDAPv3 use the same wording. - Miscellaneous grammatical changes to improve readability. - Made capitalization in section headings consistent. Version -01 - Changed title to reflect inclusion of material from RFC 2830 and 2251. C.1. Changes to Section 1 Version -01 - Moved conventions used in document to a separate section. C.2. Changes to Section 2 Version -01 - Moved section to an appendix. C.3. Changes to Section 3 Version -01 - Moved section to an appendix. C.4 Changes to Section 4 Version -00 - Changed "Distinguished Name" to "LDAP distinguished name". C.5. Changes to Section 5 Version -00 - Added the following sentence: "Servers SHOULD NOT allow clients with anonymous authentication to modify directory entries or access sensitive information in directory entries." C.5.1. Changes to Section 5.1 Version -00 Harrison Expires January, 2002 [Page 26] Authentication Methods for LDAPv3 July 19, 2001 - Replaced the text describing the procedure for performing an anonymous bind (protocol) with a reference to section 4.2 of RFC 2251 (the protocol spec). Version -01 - Brought text describing procedure for performing an anonymous bind from section 4.2 of RFC 2251 bis. This text will be removed from the draft standard version of that document. C.6. Changes to Section 6. Version -00 Reorganized text in section 6.1 as follows: 1. Added a new section (6.1) titled "Simple Authentication" and moved one of two introductory paragraphs for section 6 into section 6.1. Added sentences to the paragraph indicating: a. simple authentication is not suitable for environments where confidentiality is not available. b. LDAP implementations SHOULD NOT support simple authentication unless confidentiality and data integrity mechanisms are in force. 2. Moved first paragraph of section 6 (beginning with "LDAP implementations MUST support authentication with a passwordą") to section on Digest Authentication (Now section 6.2). C.6.1. Changes to Section 6.1. Version -00 Renamed section to 6.2 - Added sentence from original section 6 indicating that the DIGEST-MD5 SASL mechanism is required for all conforming LDAPv3 implementations C.6.2 Changes to Section 6.2 Version -00 - Renamed section to 6.3 - Reworded first paragraph to remove reference to user and the userPassword password attribute Made the first paragraph more general by simply saying that if a directory supports simple authentication that the simple bind operation MAY performed following negotiation of a TLS ciphersuite that supports confidentiality. Harrison Expires January, 2002 [Page 27] Authentication Methods for LDAPv3 July 19, 2001 - Replaced "the name of the user's entry" with "a DN" since not all bind operations are performed on behalf of a "user." - Added Section 6.3.1 heading just prior to paragraph 5. - Paragraph 5: replaced "The server" with "DSAs that map the DN sent in the bind request to a directory entry with a userPassword attribute." C.6.3. Changes to section 6.3. Version -00 - Renamed to section 6.4. C.7. Changes to section 7. none C.7.1. Changes to section 7.1. Version -00 - Clarified the entity issuing a certificate by moving the phrase "to have issued the certificate" immediately after "Certification Authority." C.8. Changes to section 8. Version -00 - Removed the first paragraph because simple authentication is covered explicitly in section 6. - Added section 8.1. heading just prior to second paragraph. - Added section 8.2. heading just prior to third paragraph. - Added section 8.3. heading just prior to fourth paragraph. Version -01 - Moved entire section 8 of RFC 2829 into section 3.4 (Using SASL for Other Security Services) to bring material on SASL mechanisms together into one location. C.9. Changes to section 9. Version -00 - Paragraph 2: changed "EXTERNAL mechanism" to "EXTERNAL SASL mechanism." Harrison Expires January, 2002 [Page 28] Authentication Methods for LDAPv3 July 19, 2001 - Added section 9.1. heading. - Modified a comment in the ABNF from "unspecified userid" to "unspecified authz id". - Deleted sentence, "A utf8string is defined to be the UTF-8 encoding of one or more ISO 10646 characters," because it is redundant. - Added section 9.1.1. heading. - Added section 9.1.2. heading. Version -01 - Moved entire section 9 to become section 3.5 so that it would be with other SASL material. C.10. Changes to Section 10. Version -00 -Change History This appendix lists the changes madeUpdated reference tothe textcracking from a week ofRFC 2829CPU time inpreparing this document. A.0. General Editorial Changes Changed title: LDAP1997 toLDAPv3 Changed other instancesbe a day ofthe term LDAPCPU time in 2000. - Added text: "These ciphersuites are NOT RECOMMENDED for use... and server implementers SHOULD" toLDAPv3 where v3 ofsentence just prior theprotocol is implied. Also made all referencessecond list of ciphersuites. - Added text: "and MAY support other ciphersuites offering equivalent or better protection," toLDAPv3 usethesame wording. Made a small numberlast paragraph ofgrammatical changes to improve readability. Made capitalization in section headings consistent. A.1.the section. C.11. Changes to Section1 None A.2. Changes11. Version -01 - Moved toSection 2 None A.3.section 3.6 to be with other SASL material. C.12. Changes to Section3 None A.412. Version -00 - Inserted new section 12 that specifies when SASL protections begin following SASL negotiation, etc. The original section 12 is renumbered to become section 13. Version -01 - Moved to section 3.7 to be with other SASL material. C.13 Changes to Section413 (original section 12). Harrison ExpiresAugust 20, 2001January, 2002 [Page14]29] Authentication Methods for LDAPv3February 20,July 19, 2001Changed "Distinguished Name" to "LDAP distinguished name". A.5. Changes to Section 5 AddedNone Appendix D. RFC 2830 Change History This appendix lists thefollowing sentence: "Servers SHOULD NOT allow clients with anonymous authenticationchanges made tomodify directory entries or access sensitive informationthe text of RFC 2830 indirectory entries." A.5.1.preparing this document. D.0. General Editorial Changes - Material showing the PDUs for the Start TLS response was broken out into a new section. - The wording of the definition of the Start TLS request and Start TLS response was changed to make them parallel. NO changes were made toSection 5.1 Replacedthetext describingASN.1 definition or theprocedureassociated values of the parameters. - A separate section heading forperforming an anonymous bind (protocol)graceful TLS closure was added for parallelism witha reference tosection4.2 ofon abrupt TLS closure. Appendix E. RFC 2251(the protocol spec). A.6. ChangesChange History This appendix lists the changes made toSection 6. Reorganizedthe text of RFC 2251 in preparing this document. E.0. General Editorial Changes - All material from section6.1 as follows: 1. Added a4.2 of RFC 2251 was moved into this document. - A new section(6.1) titled "Simple Authentication" and moved one of two introductory paragraphswas created for the Bind Request - Section 4.2.1 of RFC 2251 (Sequencing Bind Request) was moved after the section6 into section 6.1. Added sentences toon theparagraph indicating: a. simple authentication is not suitableBind Response forenvironments where confidentiality is not available. b. LDAP implementations SHOULD NOT support simple authentication unless confidentiality and data integrity mechanisms are in force. 2. Moved first paragraphparallelism with the presentation of the Start TLS operations. The section6 (beginning with "LDAP implementations MUST support authentication with a passwordą")was also subdivided tosection on Digest Authentication (Now section 6.2). A.6.1. Changesexplicitly call out the various effects being described within it. - All SASL profile information from RFC 2829 was brought within the discussion of the Bind operation (primarily sections 4.4 - 4.7). Appendix F. Issues toSection 6.1. Renamed sectionbe Resolved This appendix lists open questions and issues that need to6.2 Added sentence from original sectionbe resolved before work on this document is deemed complete. F.1. Section 1 lists 6indicatingsecurity mechanisms thatthe DIGEST- MD5 SASLcan be used by LDAP servers. I'm not sure what mechanismis required5, "Resource limitation by means of administrative limits on service controls" means. Harrison Expires January, 2002 [Page 30] Authentication Methods forall conformingLDAPv3implementations A.6.2 Changes toJuly 19, 2001 F.2. Section6.2 Renamed section to 6.3 Reworded first2 paragraph 1 defines the term, "sensitive." Do we want toremove reference to userbring this term and other security-related terms in alignment with usage with theuserPassword password attribute MadeIETF security glossary (RFC 2828)? F.3. Section 2, deployment scenario 2: What is meant by thefirstterm "secure authentication function?" F.4. Section 3, deployment scenario 3: What is meant by the phrase, "directory data is authenticated by the server?" F.5. Section 4 paragraphmore general3: What is meant bysimply sayingthe phrase, "this means thatifeither this data is useless for faking authentication (like the Unix "/etc/passwd" file format used to be)?" F.6. Section 4 paragraph 7 begins: "For a directorysupports simple authenticationneeding session protection..." Is this referring to data confidentiality or data integrity or both? F.7. Section 4 paragraph 8 indicates that "information about the server fetched fetched prior to thesimple bind operation MAY performed following negotiation of aTLSciphersuitenegotiation" must be discarded. Do we want to explicitly state thatsupports confidentiality. Harrison Expires August 20, 2001 [Page 15] Authentication Methods for LDAPv3 February 20, 2001 Replaced "the name ofthis applies to information fetched prior to theuser's entry" with "a DN" since not all bind operations are performed on behalf*completion* ofa "user." Addedthe TLS negotiation or is this going too far? F.8. Section6.3.1 heading just prior to4 paragraph5. Paragraph 5: replaced "The server" with "DSAs9 indicates thatmap the DN sent inclients SHOULD check thebind request to a directory entry withsupportedSASLMechanisms list both before and after auserPassword attribute." A.6.3. Changes to section 6.3. Renamed to section 6.4. A.7. Changes to section 7. none A.7.1. ChangesSASL security layer is negotiated tosection 7.1. Clarifiedensure that they are using theentity issuing a certificatebest available security mechanism supported mutually bymovingthephrase "to have issuedclient and server. A note at thecertificate" immediately after "Certification Authority." A.8. Changes to section 8. Removedend of thefirstparagraphbecause simple authenticationindicates that this iscovered explicitly in section 6. Added section 8.1. heading just prior to second paragraph. Added section 8.2. heading just prior to third paragraph. Added section 8.3. heading just prior to fourth paragraph. A.9. Changes to section 9. Paragraph 2: changed "EXTERNAL mechanism" to "EXTERNAL SASL mechanism." Added section 9.1. heading. Modifiedacomment inSHOULD since there are environments where theABNFclient might get a list of supported SASL mechanisms from"unspecified userid" to "unspecified authz id". Deleted sentence, "A utf8string is defined to bea different trusted source. I wonder if theUTF-8 encodingintent of this could be restated more plainly using one of these two approaches (I've paraphrased for the sake of brevity): Approach 1: Clients SHOULD check the supportedSASLMechanisms list both before and after SASL negotiation ormore ISO 10646 characters," because it is redundant. Added section 9.1.1. heading. Added section 9.1.2. heading. A.10. Changes to Section 10.clients SHOULD use a Harrison ExpiresAugust 20, 2001January, 2002 [Page16]31] AuthenticationMethods for LDAPv3 February 20, 2001 Updated reference to cracking from a week of CPU time in 1997 to be a day of CPU time in 2000. Added text: "These ciphersuites are NOT RECOMMENDEDMethods foruse... and server implementers SHOULD"LDAPv3 July 19, 2001 different trusted source tosentence just priordetermine available supported SASL mechanisms. Approach 2: Clients MUST check thesecondsupportedSASLMechanisms listof ciphersuites. Added text: "and MAY support other ciphersuites offering equivalent or better protection,"both before and after SASL negotiation UNLESS they use a different trusted source to determine available supported SASL mechanisms. F.9. Section 6.3.1 states: "DSAs that map thelast paragraph ofDN sent in thesection. A.11. Changes to Section 11. None A.12. Changesbind request toSection 12. Inserted new section 12a directory entry with a userPassword attribute will... compare [each value in the named user's entry]... with the presented password." This implies thatspecifies when SASL protections begin following SASL negotiation, etc.. The original section 12 is renumbered to become section 13. A.13 Changesthis this applies only toSection 13 (original section 12). None Appendix B Issuesuser entries with userPassword attributes. What about other types of entries that might allow passwords and might store in the password information in other attributes? Do we want tobe Resolved This appendix lists open questionsmake this text more general? F.10 userPassword andissues thatsimple bind We need to beresolved before work on this document is deemed complete. B.1. Section 1 lists 6 security mechanismssure thatcanwe don't require userPassword to be the only attribute usedby LADP servers. I'm not sure what mechanism 5, "Resource limitation by meansfor authenticating via simple bind. (See 2251 sec 4.2 and authmeth 6.3.1. Work with Jim Sermersheim on resolution to this. On publication state something like: "This is the specific implementation ofadministrative limitswhat we discussed in our general reorg conversation onservice controls" means. B.2. Section 2 paragraph 1 definestheterm, "sensitive." Do we want to bring thislist." (Source: Kurt Zeilenga) F.11 Meaning of LDAP Association The original RFC 2830 uses the termand other security-related terms"LDAP association" inalignment with usage withdescribing a connection between an LDAP client and server regardless of theIETF security glossary (RFC 2828)? B.3. Section 2, deployment scenario 2: Whatstate of TLS on that connection. This term needs to be defined or possibly changed. F.12. Is DIGEST-MD5 mandatory for all implementations? Reading 2829bis I think DIGEST-MD5 ismeant bymandatory ONLY IF your server supports password based authentication...but theterm "securefollowing makes it sound mandatory to provide BOTH password authenticationfunction?" B.4. Section 3, deployment scenario 3: What is meant byAND DIGEST- MD5: "6.2. Digest authentication LDAP implementations MUST support authentication with a password using thephrase, "directory dataDIGEST-MD5 SASL mechanism for password protection, as defined in section 6.1." The thing isauthenticated byfor acl it would be nice (though not critical) to be able to default theserver?" B.5.required authentication level for a subject to a single "fairly secure" mechanism--if there is no such mandatory authentication scheme then you cannot do that. (Source: Rob Byrne) Harrison ExpiresAugust 20, 2001January, 2002 [Page17]32] Authentication Methods for LDAPv3February 20,July 19, 2001Section 4 paragraph 3: WhatF.13. Ordering of authentication levels requested Again on the subject of authentication level, ismeatn byit possible to define an ordering on authentication levels which defines their relative "strengths" ? This would be useful in acl as you could say things like"a given aci grants access to a given subject at this authentication level AND ABOVE". David Chadwick raised this before in the context of denying access to a subject at a given authentication level, in which case he wanted to express "deny access to this subject at this authentication level AND TO ALL IDENTITIES AUTHENTICATED BELOW THAT LEVEL". (Source: Rob Byrne) F.14. Document vulnerabilities of various mechanisms While I'm here...in 2829, I think it would be good to have some comments or explicit reference to a place where the security properties of the particular mandatory authentication schemes are outlined. When I say "security properties" I mean stuff like "This scheme is vulnerable to such and such attacks, is only safe if thephrase, "this means that eitherkey size is > 50, thisdatahash isuseless for faking authentication (likewidely considered theUnix "/etc/passwd" file format used to be)?" B.6. Section 4 paragraph 7 begins: "For a directory needing session protection..." Is this referringbest, etc...". I think an LDAP implementor is likely todata confidentiality or data integrity or both? B.7. Section 4 paragraph 8 indicatesbe interested in that"information about the server fetched fetched priorinformation, without having to wade through theTLS negotiation"security RFCs. (Source: Rob Byrne) F.15. Include a StartTLS state transition table The pictoral representation it is nominally based on is here (URL possibly folded): http://www.stanford.edu/~hodges/doc/LDAPAssociationStateDiagram- 1999-12-14.html (Source: Jeff Hodges) F.16. Empty sasl credentials question I spent some more time looking microscopically at ldap-auth-methods and ldap-ext-tls drafts. The drafts say that the credential must have the form dn:xxx or u:xxx or bediscarded. Do we wantabsent, and although they don't say what toexplicitly statedo in the case of an empty octet string I would say thatthis applies to information fetched prior towe could send protocolError (claim it is a bad PDU). There is still the*completion*question of what to do if theTLS negotiation orcredential isthis going too far? B.8. Section 4 paragraph 9 indicates that clients SHOULD'dn:' (or 'u:') followed by the empty string. (Source: ariel@columbia.edu via Jeff Hodges) F.17. Hostname check from MUST to SHOULD? I am uneasy about thesupportedSASLMechanisms list both before and after a SASL security layerhostname check. My experience from PKI with HTTP probably isnegotiated to ensure that they area contributing factor; we have people using thebest available security mechanism supported mutually byshort hostname to get to a server which naturally has theclientFQDN in the certificate, no end of problems. I have a certificate on my laptop which has the FQDN for the casse when the system is on our Harrison Expires January, 2002 [Page 33] Authentication Methods for LDAPv3 July 19, 2001 Columbia network with a fixed IP; when I dial in however, I have some horrible dialup name, andserver. A note atusing the local https server becomes annoying. Issuing a certificate in the name 'localhost' is not a solution! Wildcard match does not solve this problem. For these reasons I am inclined to argue for 'SHOULD' instead of 'MUST' in paragraph... Also, The hostname check against theend ofname in theparagraph indicates that thiscertificate is aSHOULD since there are environments wherevery weak means of preventing man-in-the-middle attacks; theclient might get a listproper solution is not here yet (SecureDNS or some equivalent). Faking out DNS is not so hard, and we see this sort ofsupported SASL mechanisms fromthing in the press on adifferent trusted source. I wonder ifpretty regular basis, where site A hijacks theintentDNS server for site B and gets all their requests. Some mention of thiscouldshould berestated more plainly using one of these two approaches (I've paraphrased formade in thesakedraft. (Source: ariel@columbia.edu via Jeff Hodges) F.18. Must SASL DN exist in the directory? If the 'dn:' form ofbrevity): Approach 1: Clients SHOULD checksasl creds is used, is it thesupportedSASLMechanisms list both before and after SASL negotiation or clients SHOULD use a different trusted source to determine available supported SASL mechanisms. Approach 2: Clients MUST checkintention of thesupportedSASLMechanisms list both before and after SASL negotiation UNLESS they use a different trusted source to determine available supported SASL mechanisms. B.9. Section 6.3.1 states: "DSAsdraft(ers) thatmap thethis DNsentmust exist in thebind request to adirectoryentry with a userPassword attribute will... compare [each value inand thenamed user's entry]... withclient will have thepresented password." This impliesprivileges associated with thatthis this applies onlyentry, or can the server map the sasl DN touser entries with userPassword attributes. What aboutperhaps some othertypes of entriesDN in the directory, in an implementation-dependent fashion? We already know thatmight allow passwords and might storeif *no* sasl credentials are presented, the DN or altname in thepassword informationclient certificate may be mapped to a DN inother attributes? Do we wantan implementation-dependent fashion, or indeed tomake this text more general?something not in the directory at all. (Right?) (Source: ariel@columbia.edu via Jeff Hodges) Harrison ExpiresAugust 20, 2001January, 2002 [Page18]34] ----