7 Network Working Group B. Greenblatt
8 Request for Comments: 2649 P. Richard
9 Category: Experimental August 1999
12 An LDAP Control and Schema for Holding Operation Signatures
16 This memo defines an Experimental Protocol for the Internet
17 community. It does not specify an Internet standard of any kind.
18 Discussion and suggestions for improvement are requested.
19 Distribution of this memo is unlimited.
23 Copyright (C) The Internet Society (1999). All Rights Reserved.
27 In many environments clients require the ability to validiate the
28 source and integrity of information provided by the directory. This
29 document describes an LDAP message control which allows for the
30 retrieval of digitally signed information. This document defines an
31 LDAP v3 based mechanism for signing directory operations in order to
32 create a secure journal of changes that have been made to each
33 directory entry. Both client and server based signatures are
34 supported. An object class for subsequent retrieval are "journal
35 entries" is also defined. This document specifies LDAP v3 controls
36 that enable this functionality. It also defines an LDAP v3 schema
37 that allows for subsequent browsing of the journal information.
41 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
42 1.1 Audit Trail Mechanism . . . . . . . . . . . . . . . . . . . 2
43 1.2. Handling the Delete Operation . . . . . . . . . . . . . . . 5
44 2. Signed Results Mechanism . . . . . . . . . . . . . . . . . . 6
45 3. Security Considerations and Other Notes . . . . . . . . . . 7
46 4. References . . . . . . . . . . . . . . . . . . . . . . . . . 8
47 5. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 9
48 6. Full Copyright Statement . . . . . . . . . . . . . . . . . . 10
58 Greenblatt & Richard Experimental [Page 1]
60 RFC 2649 LDAP Control and Schema August 1999
65 In many environments clients require the ability to validiate the
66 source and integrity of information provided by the directory. This
67 document describes an LDAP message control which allows for the
68 retrieval of digitally signed information. The perspective of this
69 document is that the origin of the information that is stored in LDAP
70 v3 accessible directories is the LDAP v3 client that creates the
71 information. The source and integrity of the information is
72 guaranteed by allowing for the digital signing of the operations that
73 make changes to entries in the directory. The source and integrity
74 of an individual LDAP connection can be guaranteed by making use of
75 an underlying session layer that provides such services, such as TLS.
76 Note that the integrity of an individual connection does not, in and
77 of itself guarantee the integrity of the data that comes across the
78 connection. This is due to the fact that the LDAP server is only
79 capable of providing information that it has stored. In distributed
80 and replicated environments, the fact that an entry has been
81 successfully retrieved from a server may not be completely
82 reassuring, if the entry in question was replicated from an untrusted
85 By making use of public key technology, and creating digitally signed
86 transactions that are created by the LDAP v3 client as entries are
87 created and modified, a complete journal of the history of the entry
88 is available. Since each entry in the journal has been digitally
89 signed with the private key of the creator, or modifier of the entry,
90 the source and integrity of the directory entry can be validated by
91 verifying the signature of each entry in the journal. Note that not
92 all of the journal entries will have been signed by the same user.
94 1.1. Audit Trail Mechanism
96 Signed directory operations is a straightforward application of
97 S/MIME technology that also leverages the extensible framework that
98 is provided by LDAP version 3. LDAP version 3 is defined in [4], and
99 S/MIME is defined in [2]. The security used in S/MIME is based in
100 the definitions in [1]. The basic idea is that the submitter of an
101 LDAP operation that changes the directory information includes an
102 LDAP version 3 control that includes either a signature of the
103 operation, or a request that the LDAP server sign the operation on
104 the behalf of the LDAP client. The result of the operation (in
105 addition to the change of the directory information), is additional
106 information that is attached to directory objects, that includes the
107 audit trail of signed operations. The LDAP control is (OID =
108 1.2.840.113549.6.0.0):
114 Greenblatt & Richard Experimental [Page 2]
116 RFC 2649 LDAP Control and Schema August 1999
119 SignedOperation ::= CHOICE {
121 signatureIncluded OCTET STRING
124 If the SignatureIncluded CHOICE is used, then the OCTET string is
125 just an S/MIME message of the multipart/signed variety, that is
126 composed of a single piece, that is the signature of the directory
127 operation. Multipart/signed MIME objects are defined in [3]. If the
128 SignbyServer CHOICE us used, then the LDAP server creates the
129 signature on behalf of the client, using its own identity and not the
130 identity of the client, in order to produce the audit trail entry.
131 In either case the successful result of processing the control is the
132 creation of additional information in the directory entry that is
133 being modified or created. The signature of the LDAP operation is
134 computed on the LDAPMessage prior to the inclusion of the
135 SignedOperation control. The procedure is as follows:
137 - Build LDAPMessage without the SignedOperation control
138 - Compute signature on the above LDAPMessage
139 - Create new LDAPMessage that includes the old MessageID,
140 protocolOp and any control fields from the previous LDAPMessage,
141 plus the computed signature formatted as an S/MIME message.
143 No control is defined for the server to return in the LDAPResult as
144 defined in [4]. The LDAP server MAY attempt to parse and verify the
145 signature included in the SignedOperation control, but is not
146 required to. The server can accept the signed operation without
147 verifying the signature. Signature verification can be quite a
148 lengthy operation, requiring complex certificate chain traversals.
149 This allows a more timely creation of the audit trail by the server.
150 Any LDAP client browsing the directory that retrieves the 'Changes'
151 (defined in the following paragraphs) attributes, should verify the
152 signature of each value according to the local signature verification
153 policies. Even if the LDAP server verifies the signature contained
154 in the singed operation, the LDAP client has no way of knowing what
155 policies were followed by the server in order to verify the
158 If the LDAP server is unable to verify the signature and wishes to
159 return an error then the error code unwillingToPerform(53) should be
160 returned, and the entire LDAP operation fails. In this situation, an
161 appropriate message (e.g. "Unable to verify signature") MAY be
162 included in the errorMessage of the LDAPResult. The SignedOperation
163 Control MAY be marked CRITICAL, and if it is CRITICAL then if the
164 LDAP Server performs the LDAP operation, then must include the
165 signature in the signedAuditTrail information.
170 Greenblatt & Richard Experimental [Page 3]
172 RFC 2649 LDAP Control and Schema August 1999
175 The schema definition for the signedAuditTrail information is:
177 ( 1.2.840.113549.6.1.0
178 NAME 'signedAuditTrail'
186 The format of the Changes attribute is:
188 ( 1.2.840.113549.6.2.0
190 DESC 'a set of changes applied to an entry'
193 The actual format of the Changes attribute is:
195 Changes ::= SEQUENCE {
196 sequenceNumber [0] INTEGER (0 .. maxInt),
197 signedOperation [1] OCTET STRING }
199 The SignedOperation attribute is a multipart/signed S/MIME message.
200 Part 1 of the message is the directory operation, and part 2 is the
201 signature. Sequence number 0 (if present) always indicates the
202 starting point directory object as represented by the definitions in
203 "A MIME Content-Type for Directory Information", as defined in [5].
204 Subsequent sequence numbers indicate the sequence of changes that
205 have been made to this directory object. Note that the sequence of
206 the changes can be verified due to the fact that the signed directory
207 object will have a timestamp as part of the signature object, and
208 that the sequence numbering as part of the change attribute should be
209 considered to be an unverified aid to the LDAP client. Sequence
210 numbers are meaningful only within the context of a single directory
211 entry, and LDAP servers are not expected to maintain these sequence
212 numbers across all entries in the directory.
214 Some LDAP servers will only allow operations that include the
215 SignedOperation control. This is indicated by the inclusion of a
216 'signedDirectoryOperationSupport' attribute in the rootDSE. This
217 attribute is defined as:
226 Greenblatt & Richard Experimental [Page 4]
228 RFC 2649 LDAP Control and Schema August 1999
232 NAME 'signedDirectoryOperationSupport'
233 DESC 'how many of the LDAP operations must be signed'
234 SYNTAX 'Integer' SINGLE-VALUE )
236 The 'signedDirectoryOperationSupport' attribute above may have one of
237 the values, '0', '1' or '2' with the following meanings:
239 - '0' Directory Operations may be signed
240 - '1' Directory Operations must always be signed
241 - '2' Directory Operations must never be signed
243 Some LDAP servers will desire that the audit trail be continuous, and
244 not contain any gaps that would result from unsigned operations.
245 Such server will include a signature on each LDAP operation that
246 changes a directory entry, even when the LDAP client does not include
247 a signed-Operation control.
249 1.2. Handling the Delete Operation
251 The LDAP Delete operation represents an interesting case for Signed
252 Directory Operations. This is due to the case that subsequent to the
253 successful completion of the Delete Operation, the object that would
254 have held the latest 'Changes' attribute no longer exists. In order
255 to handle this situation, a new object class is defined to represent
256 a directory object that has been deleted.
258 ( 1.2.840.113549.6.1.2
263 Cn $ Changes $ OriginalObject
267 The format of the OriginalObject attribute is:
269 ( 1.2.840.113549.6.2.1
271 DESC 'The LDAP URL of an object that has been deleted from the
272 directory' SYNTAX 'Binary' )
274 The OriginalObject attribute contains the URL of the object that was
275 deleted from the directory. It is formatted in accordance with RFC
276 2255. Directory servers that comply with this specification SHOULD
277 create a zombieObject when performing the delete Operation that
278 contains a SignedOperation LDAPControl. The Cn attribute of the
282 Greenblatt & Richard Experimental [Page 5]
284 RFC 2649 LDAP Control and Schema August 1999
287 zombieObject is synthesized by the LDAP server, and may or may not be
288 related to the original name of the directory entry that was deleted.
289 All changes attributes that were attached to the original entry are
290 copied over to the zombieObject. In addition the LDAP Server MUST
291 attach the signature of the Delete operation as the last successful
292 change that was made to the entry.
294 2. Signed Results Mechanism
296 A control is also defined that allows the LDAP v3 client to request
297 that the server sign the results that it returns. It is intended
298 that this control is primarily used in concert with the LDAPSearch
299 operation. This control MAY be marked as CRITICAL. If it is marked
300 as CRITICAL and the LDAP Server supports this operation, then all
301 search results MUST be returned with a signature as attached in the
302 SignedResult control if it is willing to sign results for this user.
303 If the server supports this control but does not wish to sign the
304 results for this user then the error code unwillingToPerform(53)
305 should be returned, and the LDAP search will have failed. In this
306 situation, an appropriate message (e.g. "Unwilling to sign results
307 for you!") MUST be included in the errorMessage of the LDAPResult.
308 If the LDAPSigType has the value FALSE then the client is requesting
309 that the server not sign this operation. This may be done in
310 situations where servers are configured to always sign their
313 The LDAP control to include in the LDAP request is (OID =
314 1.2.840.113549.6.0.1):
316 DemandSignedResult ::= LDAPSigType
318 LDAPSigType ::= BOOLEAN
320 In response to a DemandSignedResult control, the LDAP v3 server will
321 return a SignedResult control in addition to the normal result as
322 defined by the operation (assuming that the server understands the
323 con- trol, and is willing to perform it). The SignedResult control
324 MUST NOT be marked CRITICAL. Some LDAP v3 servers may be configured
325 to sign all of their operations. In this situation the server always
326 returns a SignedResult control, unless instructed otherwise by the
327 DemandSigne-dResult Control. Since the SignedResult control is not
328 marked critical, the LDAP client is allowed to ignore it. The
329 signature field below includes the signature of the enitre LDAPResult
330 formatted as an S/MIME pkcs-7/signature object, as defined in [2].
338 Greenblatt & Richard Experimental [Page 6]
340 RFC 2649 LDAP Control and Schema August 1999
343 The procedure for creating the signature of the signedResult control
344 is the same as the procedure for the creation of the signedOperation
345 control. The LDAP control in the LDAP response is (OID =
346 1.2.840.113549.6.0.2):
348 SignedResult ::= CHOICE {
349 signature OCTET STRING }
351 3. Security Considerations and Other Notes
355 rsadsiLdap ::= {1 2 840 113549 6}
356 rsadsiLdapControls ::= {1 2 840 113549 6 0}
357 rsadsiLdapObjectClasses ::= {1 2 840 113549 6 1}
358 rsadsiLdapAttributes ::= {1 2 840 113549 6 2}
361 The complete ASN.1 module for this specification is:
363 SIGNEDOPERATIONS DEFINITIONS ::=
366 SignedOperation ::= CHOICE {
368 signatureIncluded OCTET STRING
371 Changes ::= SEQUENCE {
372 sequenceNumber [0] INTEGER (0 .. maxInt),
373 signedOperation [1] OCTET STRING }
375 DemandSignedResult ::= LDAPSigType
377 LDAPSigType ::= BOOLEAN
379 SignedResult ::= CHOICE {
380 signature OCTET STRING }
394 Greenblatt & Richard Experimental [Page 7]
396 RFC 2649 LDAP Control and Schema August 1999
399 If any of the controls in this specification are supported by an LDAP
400 v3 server then that server MUST make available its certificate (if
401 any) in the userCertificate attribute of its rootDSE object. The
402 UserCertificate attribute is defined in [6], and contains the public
403 key of the server that is used in the creation of the various
404 signatures defined in this specification.
406 It is not the intention of this specification to provide a mechanism
407 that guarantees the origin and integrity of LDAP v3 operations. Such
408 a service is best provided by the use of an underlying protocol such
409 as TLS [8]. TLS defines additional features such as encryption and
410 compression. This specification does not define support for
411 encrypted operations.
413 This memo proposes protocol elements for transmission and storage of
414 the digital signatures of LDAP operations. Though the LDAP server
415 may have verified the operation signatures prior to their storage and
416 subsequent retrieval, it is prudent for LDAP clients to verify the
417 signatures contained in the chained attribute upon their retrieval.
418 The issuing Certification Authorities of the signer's certificate
419 should also be consulted in order to determine if the signer's
420 private key has been compromised or the certificate has been
421 otherwise revoked. Security considerations are discussed throughout
426 [1] Kaliski, B., "PKCS 7: Cryptographic Message Syntax Version 1-5",
427 RFC 2315, March 1998.
429 [2] Dusse, S., Hoffman, P., Ramsdell, B., Lundblade, L. and L.
430 Repka., "S/MIME Version 2 Message Specification", RFC 2311, March
433 [3] Galvin, J., Murphy, S., Crocker, S. and N. Freed, "Security
434 Multiparts for MIME: Multipart/Signed and Multipart/Encrypted",
435 RFC 1847, October 1995.
437 [4] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access
438 Protocol (v3)", RFC 2251, December 1997.
440 [5] Howes, T., Smith, M. and F. Dawson, "A MIME Content-Type for
441 Directory Information", RFC 2425, September 1998.
443 [6] Wahl, M., "A Summary of the X.500(96) User Schema for use with
444 LDAPv3", RFC 2256, December 1997.
450 Greenblatt & Richard Experimental [Page 8]
452 RFC 2649 LDAP Control and Schema August 1999
455 [7] Howes, T. and M. Smith, "The LDAP URL Format", RFC 2255, December
458 [8] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
461 5. Authors' Addresses
467 Phone: +1-408-224-5349
468 EMail: bgreenblatt@directory-applications.com
473 Suite 1001 - 701 W. Georgia
477 EMail: patr@xcert.com
506 Greenblatt & Richard Experimental [Page 9]
508 RFC 2649 LDAP Control and Schema August 1999
511 6. Full Copyright Statement
513 Copyright (C) The Internet Society (1999). All Rights Reserved.
515 This document and translations of it may be copied and furnished to
516 others, and derivative works that comment on or otherwise explain it
517 or assist in its implementation may be prepared, copied, published
518 and distributed, in whole or in part, without restriction of any
519 kind, provided that the above copyright notice and this paragraph are
520 included on all such copies and derivative works. However, this
521 document itself may not be modified in any way, such as by removing
522 the copyright notice or references to the Internet Society or other
523 Internet organizations, except as needed for the purpose of
524 developing Internet standards in which case the procedures for
525 copyrights defined in the Internet Standards process must be
526 followed, or as required to translate it into languages other than
529 The limited permissions granted above are perpetual and will not be
530 revoked by the Internet Society or its successors or assigns.
532 This document and the information contained herein is provided on an
533 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
534 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
535 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
536 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
537 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
541 Funding for the RFC Editor function is currently provided by the
562 Greenblatt & Richard Experimental [Page 10]