]> git.sur5r.net Git - openldap/blob - doc/drafts/draft-zeilenga-ldap-authpasswd-xx.txt
suck in changes from devel
[openldap] / doc / drafts / draft-zeilenga-ldap-authpasswd-xx.txt
1 INTERNET-DRAFT                                      Kurt D. Zeilenga
2 Intended Category: Standard Track                   OpenLDAP Foundation
3 Expires: 11 January 2001                            11 July 2000
4
5
6                   LDAP Authentication Password Attribute
7                  <draft-zeilenga-ldap-authpasswd-03.txt>
8
9
10
11 1. Status of this Memo
12
13   This document is an Internet-Draft and is in full conformance with all
14   provisions of Section 10 of RFC2026.
15
16   This document is intended to be, after appropriate review and
17   revision, submitted to the RFC Editor as a Standard Track document.
18   Distribution of this memo is unlimited.  Technical discussion of this
19   document will take place on the IETF LDAP Extension Working Group
20   mailing list <ietf-ldapext@netscape.com>.  Please send editorial
21   comments directly to the author <Kurt@OpenLDAP.org>.
22
23   Internet-Drafts are working documents of the Internet Engineering Task
24   Force (IETF), its areas, and its working groups.  Note that other
25   groups may also distribute working documents as Internet-Drafts.
26   Internet-Drafts are draft documents valid for a maximum of six months
27   and may be updated, replaced, or obsoleted by other documents at any
28   time.  It is inappropriate to use Internet-Drafts as reference
29   material or to cite them other than as ``work in progress.''
30
31   The list of current Internet-Drafts can be accessed at
32   http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft
33   Shadow Directories can be accessed at http://www.ietf.org/shadow.html.
34
35   Copyright 2000, The Internet Society.  All Rights Reserved.
36
37   Please see the Copyright section near the end of this document for
38   more information.
39
40
41 2. Abstract
42
43   This document describes schema for storing information in support of
44   user/password authentication in a LDAP [RFC2251] directory.  The
45   document defines the authPassword attribute type and related schema.
46   The attribute type is used to store values derived from the user's
47   password(s) (commonly using cryptographic strength one-way hash).
48   authPassword is intended to used instead of clear text password
49
50
51
52 Zeilenga                                                        [Page 1]
53 \f
54 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
55
56
57   storage mechanisms such as userPassword [RFC2256].  The values of
58   authPassword may be used to support both LDAP "simple" and SASL
59   [RFC2222] password authentication mechanisms [RFC2829].
60
61   The key words ``MUST'', ``MUST NOT'', ``REQUIRED'', ``SHALL'', ``SHALL
62   NOT'', ``SHOULD'', ``SHOULD NOT'', ``RECOMMENDED'',  and ``MAY'' in
63   this document are to be interpreted as described in RFC 2119
64   [RFC2119].
65
66
67 3. Background and Intended Use
68
69   The userPassword attribute type [RFC 2256] is intended be used to used
70   to support the LDAP [RFC2251] "simple" bind operation.  However,
71   values of userPassword must be clear text passwords.  It is often
72   desirable to store values derived from the user's password(s) instead
73   of actual passwords.
74
75   The authPassword attribute type is intended to be used to store
76   information used to implement password based authentication.  The
77   attribute type may be used by LDAP servers to implement user/password
78   authentication operations [RFC2829] such "simple" and SASL [RFC2222] /
79   DIGEST-MD5 [RFC2831].
80
81   The attribute type supports multiple storage schemes.  A matching rule
82   is provided for use with extensible search filters to allow clients to
83   assert that a clear text password "matches" one of the attribute's
84   values.  Storage schemes often use of cryptographic strength one-way
85   hashing.
86
87   This attribute may be used in conjunction with server side password
88   generation mechanisms (such as [PW-EXOP]).
89
90   Access to this attribute may governed by administrative controls such
91   as those which implement password change policies.
92
93
94 4. Schema Definitions
95
96   The following schema definitions are described in terms of LDAPv3
97   Attribute Syntax Definitions [RFC2252] with specific syntax detailed
98   using Augmented BNF [RFC2234].
99
100   Editor's Note: object identifiers (OIDs) will be assigned before this
101                  document is published as an RFC.
102
103 4.1. authPasswordSyntax
104
105
106
107
108 Zeilenga                                                        [Page 2]
109 \f
110 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
111
112
113     ( authPasswordSyntaxOID
114       DESC 'authentication password syntax' )
115
116   Values of this syntax are encoded according to the following BNF:
117
118     authPasswordValue = w scheme s [authInfo] s authValue w
119     scheme = <an IA5 string of uppercase letters, numbers,
120              and "-", "_", and "/">
121     authInfo = schemeSpecificValue
122     authValue = schemeSpecfiicValue
123     schemeSpecificValue = <an IA5 printable string
124                           not containing "$" or " ">
125     s = w sep w
126     w = *sp
127     sep = "$" ; an IA5 dollar sign (36)
128     sp = " "     ; an IA5 space (20)
129
130   where scheme describes the storage mechanism, authInfo and authValue
131   are a scheme specific.  The authInfo field is often a base64 encoded
132   salt.  The authValue field is often a base64 encoded value derived
133   from a user's password(s). Values of this attribute are case
134   sensitive.
135
136   This document describes a number of schemes, as well as requirements
137   for the scheme naming, in section 5.
138
139
140 4.2. authPasswordMatch
141
142     ( authPasswordMatchOID
143       NAME 'authPasswordMatch'
144       DESC 'authentication password matching rule'
145       SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )
146
147   This matching rule allows a client to assert that a password matches
148   values of authPasswordSyntax using an extensibleMatch filter
149   component.  Each value is matched per its scheme.  The assertion is
150   TRUE if one or more attribute values matches the asserted value, FALSE
151   if all values do not matches, and Undefined otherwise.
152
153   Servers which support use of this matching rule SHOULD publish
154   appropriate matchingRuleUse values per [RFC2252], 4.4.
155
156   Transfer of authPasswordMatch assertion values is strongly discouraged
157   where the underlying transport service cannot guarantee
158   confidentiality and may result in disclosure of the values to
159   unauthorized parties.
160
161
162
163
164 Zeilenga                                                        [Page 3]
165 \f
166 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
167
168
169 4.3. supportedAuthPasswordSchemes
170
171     ( supportedAuthPasswordSchemesOID
172       NAME 'supportedAuthPasswordSchemes'
173       DESC 'supported password storage schemes'
174       EQUALITY caseExactIA5Match
175       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32}
176       USAGE dSAOperation )
177
178   The values of this attribute are names of supported authentication
179   password schemes which the server supports.  The syntax of a scheme
180   name is described in section 4.1.  This attribute may only be present
181   in the root DSE.  If the server does not support any mechanisms this
182   attribute will not be present.
183
184
185 4.4. authPassword
186
187     ( authPasswordOID NAME 'authPassword'
188       SYNTAX authPasswordSyntaxOID )
189
190   The values of this attribute are representative of the user's
191   password(s) and conform to the authPasswordSyntax described in 4.1.
192   The values of this attribute may be used for authentication purposes.
193
194   This attribute type is defined without any built-in matching rules.
195   The absence of an EQUALITY matching rules disallows modification of
196   individual values.
197
198   Transfer of authPassword values is strongly discouraged where the
199   underlying transport service cannot guarantee confidentiality and may
200   result in disclosure of the values to unauthorized parties.
201
202
203 4.5. authPasswordObject
204
205     ( authPasswordObjectOID NAME 'authPasswordObject'
206       DESC 'authentication password mix in class'
207       MAY 'authPassword'      AUXILIARY )
208
209   Entries of this object class may contain authPassword attribute types.
210
211
212 5. Schemes
213
214   This section describes the "MD5", "SHA1", and "SASL/DIGEST-MD5".
215   Other schemes may be defined by other documents.  Schemes starting
216   with string "SASL/" indicate association with a SASL mechanism.
217
218
219
220 Zeilenga                                                        [Page 4]
221 \f
222 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
223
224
225   Schemes which are not described by standard track documents SHOULD be
226   named with a leading "X-" or, if associated with a SASL mechanism,
227   "SASL/X-" to indicate they are a private or implementation specific
228   mechanism, or may be named using the dotted-decimal representation
229   [RFC2252] of an OID assigned to the mechanism.
230
231
232 5.1. MD5 scheme
233
234   The MD5 [RFC1321] scheme name is "MD5".
235
236   The authValue is the base64 encoding of an MD5 digest of the
237   concatenation the user password and optional salt.  The base64
238   encoding of the salt is provided in the authInfo field.
239   Implementations of this scheme must support salts up to 128-bit in
240   length.  Use with a 64-bit or larger salt is RECOMMENDED.
241
242   Example:
243     Given a user "joe" who's password is "mary" and a salt of "salt",
244     the authInfo field would be the base64 encoding of "salt" and the
245     authValue field would be the base64 encoding of the MD5 digest of
246     "marysalt".
247
248   A match against an asserted password and an attribute value of this
249   scheme SHALL be true if and only if the MD5 digest of concatenation of
250   the asserted value and the salt is equal to the MD5 digest contained
251   in AuthValue.  The match SHALL be undefined if the server is unable to
252   complete the equality test for any reason.  Otherwise the match SHALL
253   be false.
254
255   Values of this scheme SHOULD only be used to implement simple
256   user/password authentication.
257
258   It is RECOMMENDED that values of this scheme be protected as if they
259   were clear text passwords.
260
261
262 5.2. SHA1 scheme
263
264   The SHA1 [SHA1] scheme name is "SHA1".
265
266   The authValue is the base64 encoding of an SHA1 digest of the
267   concatenation the user password and the optional salt.  The base64
268   encoding of the salt is provided in the authInfo field.
269   Implementations of this scheme must support salts up to 128-bit in
270   length.  Use with a 64-bit or larger salt is RECOMMENDED.
271
272   Example:
273
274
275
276 Zeilenga                                                        [Page 5]
277 \f
278 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
279
280
281     Given a user "joe" who's password is "mary" and a salt of "salt",
282     the authInfo field would be the base64 encoding of "salt" and the
283     authValue field would be the base64 encoding of the SHA1 digest of
284     "marysalt".
285
286   A match against an asserted password and an attribute value of this
287   scheme SHALL be true if and only if the SHA1 digest of concatenation
288   of the asserted value and the salt is equal to the SHA1 digest
289   contained in AuthValue.  The match SHALL be undefined if the server is
290   unable to complete the equality test for any reason.  Otherwise the
291   match SHALL be false.
292
293   Values of this scheme SHOULD only be used to implement simple
294   user/password authentication.
295
296   It is RECOMMENDED that values of this scheme be protected as if they
297   were clear text passwords.
298
299
300 5.3. DIGEST-MD5 scheme
301
302   The DIGEST-MD5 scheme name is "SASL/DIGEST-MD5".
303
304   The authValue is the base64 encoding of
305     H( { username-value, ":", realm-value, ":", passwd } )
306
307   and authInfo is the base64 encoding of
308     { username-value, ":", realm-value }
309
310   as defined by RFC2831.
311
312   Example:
313     Given a user "joe" within the realm "localhost" who's password is
314     "mary", the info field would be the base64 encoding of
315     "joe:localhost" and the authValue field would be the base64 encoding
316     of the MD5 digest of "joe:localhost:mary".
317
318   Values of this scheme SHOULD only be used to implement the
319   SASL/DIGEST-MD5 as described by the Authentication Methods for LDAP
320   [RFC2829].  A simple password assertion against a value of this scheme
321   SHALL be considered undefined.
322
323   Values of this scheme MUST be protected as if it the values were clear
324   text passwords per reasons detailed in DIGEST-MD5, Section 3.9,
325   "Storing Passwords."
326
327
328 6. Implementation Issues
329
330
331
332 Zeilenga                                                        [Page 6]
333 \f
334 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
335
336
337   For implementations of this specification:
338
339     Servers MAY restrict which schemes are used in conjunction with a
340     particular authentication process but SHOULD use all values of
341     selected schemes.  If the asserted password matches any of the
342     stored values, the asserted password SHOULD be considered valid.
343     Servers MAY use other authentication storage mechanisms, such as
344     userPassword or an external password store, in conjunction with
345     authPassword to support the authentication process.
346
347     Servers that support simple bind MUST support the MD5 scheme and
348     SHOULD support the SHA1 scheme.
349
350     Servers SHOULD not publish values of authPassword nor allow
351     operations which expose authPassword or AuthPasswordMatch values to
352     unless confidentiality protection is in place.
353
354     Clients SHOULD not initiate operations which provide or request
355     values of authPassword or make authPasswordMatch assertions unless
356     confidentiality protection is in place.
357
358     Clients SHOULD not assume that a successful AuthPasswordMatch,
359     whether by compare or search, is sufficient to gain directory
360     access.  The bind operation MUST be used to authentication to the
361     directory.
362
363
364 7. Security Considerations
365
366   This document describes how authentication information may be stored
367   in a directory.  Authentication information must be adequately
368   protected as unintended disclosure will allow attackers to gain
369   immediate access to the directory as described by [RFC2829].
370
371   Values of authPassword SHOULD be protected as if they were clear text
372   passwords.  When values are transferred, privacy protections, such as
373   IPSEC or TLS, SHOULD be in place.
374
375   Clients SHOULD use strong authentication mechanisms [RFC2829].
376
377   AuthPasswordMatch matching rule allows applications to test the
378   validity of a user password and, hence, may be used to mount a
379   dictionary attack.  Servers SHOULD take appropriate measures to
380   protect the directory from such attacks.
381
382   Some password schemes may require CPU intensive operations.  Servers
383   SHOULD take appropriate measures to protect against Denial of Service
384   attacks.
385
386
387
388 Zeilenga                                                        [Page 7]
389 \f
390 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
391
392
393   AuthPassword does not restrict an authentication identity to a single
394   password.  An attacker who gains write access to this attribute may
395   store additional values without disabling the user's true password(s).
396   Use of policy aware clients and servers is RECOMMENDED.
397
398   The level of protection offered against various attacks differ from
399   scheme to scheme.  It is RECOMMENDED that servers support scheme
400   selection as a configuration item.  This allows for a scheme to be
401   easily disabled if a significant security flaw is discovered.
402
403
404 8. Copyright
405
406   Copyright 2000, The Internet Society.  All Rights Reserved.
407
408   This document and translations of it may be copied and furnished to
409   others, and derivative works that comment on or otherwise explain it
410   or assist in its implementation may be prepared, copied, published and
411   distributed, in whole or in part, without restriction of any kind,
412   provided that the above copyright notice and this paragraph are
413   included on all such copies and derivative works.  However, this
414   document itself may not be modified in any way, such as by removing
415   the copyright notice or references to the Internet Society or other
416   Internet organizations, except as needed for the  purpose of
417   developing Internet standards in which case the procedures for
418   copyrights defined in the Internet Standards process must be followed,
419   or as required to translate it into languages other than English.
420
421   The limited permissions granted above are perpetual and will not be
422   revoked by the Internet Society or its successors or assigns.
423
424   This document and the information contained herein is provided on an
425   "AS IS" basis and THE AUTHORS, THE INTERNET SOCIETY, AND THE INTERNET
426   ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
427   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
428   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
429   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
430
431
432 9. Acknowledgment
433
434   This document borrows from a number of IETF documents and is based
435   upon input from the IETF LDAPext working group.
436
437
438 10. Bibliography
439
440   [RFC1321] R. Rivest, "The MD5 Message-Digest Algorithm", RFC 1321,
441
442
443
444 Zeilenga                                                        [Page 8]
445 \f
446 INTERNET-DRAFT              LDAP AuthPasswd                 11 July 2000
447
448
449             April 1992
450
451   [RFC2219] S. Bradner, "Key words for use in RFCs to Indicate
452             Requirement Levels", RFC 2119, March 1997.
453
454   [RFC2222] J. Myers, "Simple Authentication and Security Layer (SASL)",
455             RFC 2222, October 1997.
456
457   [RFC2234] D. Crocker (editor), P. Overell, "Augmented BNF for Syntax
458             Specifications: ABNF", RFC 2234, November 1997.
459
460   [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access
461             Protocol (v3)", RFC 2251, December 1997.
462
463   [RFC2252] M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight
464             Directory Access Protocol (v3):  Attribute Syntax
465             Definitions", RFC 2252, December 1997.
466
467   [RFC2256] M. Wahl, "A Summary of the X.500(96) User Schema for use
468             with LDAPv3", RFC 2256, December 1997.
469
470   [RFC2307] L. Howard, "An Approach for Using LDAP as a Network
471             Information Service", RFC 2307, March 1998.
472
473   [RFC2829] M. Wahl, H. Alvestrand, J. Hodges, RL "Bob" Morgan,
474             "Authentication Methods for LDAP", RFC 2829, June 2000.
475
476   [RFC2831] P. Leach, C. Newman, "Using Digest Authentication as a SASL
477             Mechanism", RFC 2831, June 2000.
478
479   [PW-EXOP] K. Zeilenga, "LDAP Password Modify Extended Operation"
480             draft-zeilenga-ldap-passwd-exop-xx.txt, a work in progress.
481
482   [SHA1]    NIST, FIPS PUB 180-1: Secure Hash Standard, April 1995.
483
484
485 11.  Author's Address
486
487   Kurt D. Zeilenga
488   OpenLDAP Foundation
489   <Kurt@OpenLDAP.org>
490
491
492
493
494
495
496
497
498
499
500 Zeilenga                                                        [Page 9]
501 \f