Rename context handle lifetime to endtime
[heimdal.git] / doc / standardisation / rfc3281.txt
blob91266ee985596f9664201a507f21a734d02b72d0
7 Network Working Group                                         S. Farrell
8 Request for Comments: 3281                        Baltimore Technologies
9 Category: Standards Track                                     R. Housley
10                                                         RSA Laboratories
11                                                               April 2002
14                    An Internet Attribute Certificate
15                        Profile for Authorization
17 Status of this Memo
19    This document specifies an Internet standards track protocol for the
20    Internet community, and requests discussion and suggestions for
21    improvements.  Please refer to the current edition of the "Internet
22    Official Protocol Standards" (STD 1) for the standardization state
23    and status of this protocol.  Distribution of this memo is unlimited.
25 Copyright Notice
27    Copyright (C) The Internet Society (2002).  All Rights Reserved.
29 Abstract
31    This specification defines a profile for the use of X.509 Attribute
32    Certificates in Internet Protocols.  Attribute certificates may be
33    used in a wide range of applications and environments covering a
34    broad spectrum of interoperability goals and a broader spectrum of
35    operational and assurance requirements.  The goal of this document is
36    to establish a common baseline for generic applications requiring
37    broad interoperability as well as limited special purpose
38    requirements.  The profile places emphasis on attribute certificate
39    support for Internet electronic mail, IPSec, and WWW security
40    applications.
42 Table of Contents
44    1. Introduction.................................................  2
45        1.1  Delegation and AC chains...............................  4
46        1.2  Attribute Certificate Distribution ("push" vs. "pull").  4
47        1.3  Document Structure.....................................  6
48    2. Terminology..................................................  6
49    3. Requirements.................................................  7
50    4. Attribute Certificate Profile................................  7
51        4.1  X.509 Attribute Certificate Definition.................  8
52        4.2  Profile of Standard Fields............................. 10
53            4.2.1  Version.......................................... 10
54            4.2.2  Holder........................................... 11
58 Farrell & Housley           Standards Track                     [Page 1]
60 RFC 3281           An Internet Attribute Certificate          April 2002
63            4.2.3  Issuer........................................... 12
64            4.2.4  Signature........................................ 12
65            4.2.5  Serial Number.................................... 12
66            4.2.6  Validity Period.................................. 13
67            4.2.7  Attributes....................................... 13
68            4.2.8  Issuer Unique Identifier......................... 14
69            4.2.9  Extensions....................................... 14
70        4.3  Extensions............................................. 14
71            4.3.1  Audit Identity................................... 14
72            4.3.2  AC Targeting..................................... 15
73            4.3.3  Authority Key Identifier......................... 17
74            4.3.4  Authority Information Access..................... 17
75            4.3.5  CRL Distribution Points.......................... 17
76            4.3.6  No Revocation Available.......................... 18
77        4.4  Attribute Types........................................ 18
78            4.4.1  Service Authentication Information............... 19
79            4.4.2  Access Identity.................................. 19
80            4.4.3  Charging Identity................................ 20
81            4.4.4  Group............................................ 20
82            4.4.5  Role............................................. 20
83            4.4.6  Clearance........................................ 21
84        4.5  Profile of AC issuer's PKC............................. 22
85    5. Attribute Certificate Validation............................. 23
86    6. Revocation................................................... 24
87    7. Optional Features............................................ 25
88        7.1  Attribute Encryption................................... 25
89        7.2  Proxying............................................... 27
90        7.3  Use of ObjectDigestInfo................................ 28
91        7.4  AA Controls............................................ 29
92    8. Security Considerations...................................... 30
93    9. IANA Considerations.......................................... 32
94    10. References.................................................. 32
95    Appendix A: Object Identifiers.................................. 34
96    Appendix B: ASN.1 Module........................................ 35
97    Author's Addresses.............................................. 39
98    Acknowledgements................................................ 39
99    Full Copyright Statement........................................ 40
101 1. Introduction
103    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
104    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
105    document are to be interpreted as described in BCP 14, RFC 2119.
107    X.509 public key certificates (PKCs) [X.509-1997, X.509-2000,
108    PKIXPROF] bind an identity and a public key.  An attribute
109    certificate (AC) is a structure similar to a PKC; the main difference
110    being that the AC contains no public key.  An AC may contain
114 Farrell & Housley           Standards Track                     [Page 2]
116 RFC 3281           An Internet Attribute Certificate          April 2002
119    attributes that specify group membership, role, security clearance,
120    or other authorization information associated with the AC holder.
121    The syntax for the AC is defined in Recommendation X.509, making the
122    term "X.509 certificate" ambiguous.
124    Some people constantly confuse PKCs and ACs.  An analogy may make the
125    distinction clear.  A PKC can be considered to be like a passport: it
126    identifies the holder, tends to last for a long time, and should not
127    be trivial to obtain.  An AC is more like an entry visa: it is
128    typically issued by a different authority and does not last for as
129    long a time.  As acquiring an entry visa typically requires
130    presenting a passport, getting a visa can be a simpler process.
132    Authorization information may be placed in a PKC extension or placed
133    in a separate attribute certificate (AC).  The placement of
134    authorization information in PKCs is usually undesirable for two
135    reasons.  First, authorization information often does not have the
136    same lifetime as the binding of the identity and the public key.
137    When authorization information is placed in a PKC extension, the
138    general result is the shortening of the PKC useful lifetime.  Second,
139    the PKC issuer is not usually authoritative for the authorization
140    information.  This results in additional steps for the PKC issuer to
141    obtain authorization information from the authoritative source.
143    For these reasons, it is often better to separate authorization
144    information from the PKC.  Yet, authorization information also needs
145    to be bound to an identity.  An AC provides this binding; it is
146    simply a digitally signed (or certified) identity and set of
147    attributes.
149    An AC may be used with various security services, including access
150    control, data origin authentication, and non-repudiation.
152    PKCs can provide an identity to access control decision functions.
153    However, in many contexts the identity is not the criterion that is
154    used for access control decisions, rather the role or group-
155    membership of the accessor is the criterion used.  Such access
156    control schemes are called role-based access control.
158    When making an access control decision based on an AC, an access
159    control decision function may need to ensure that the appropriate AC
160    holder is the entity that has requested access.  One way in which the
161    linkage between the request or identity and the AC can be achieved is
162    the inclusion of a reference to a PKC within the AC and the use of
163    the private key corresponding to the PKC for authentication within
164    the access request.
170 Farrell & Housley           Standards Track                     [Page 3]
172 RFC 3281           An Internet Attribute Certificate          April 2002
175    ACs may also be used in the context of a data origin authentication
176    service and a non-repudiation service.  In these contexts, the
177    attributes contained in the AC provide additional information about
178    the signing entity.  This information can be used to make sure that
179    the entity is authorized to sign the data.  This kind of checking
180    depends either on the context in which the data is exchanged or on
181    the data that has been digitally signed.
183 1.1 Delegation and AC chains
185    The X.509 standard [X.509-2000] defines authorization as the
186    "conveyance of privilege from one entity that holds such privilege,
187    to another entity".  An AC is one authorization mechanism.
189    An ordered sequence of ACs could be used to verify the authenticity
190    of a privilege asserter's privilege.  In this way, chains or paths of
191    ACs could be employed to delegate authorization.
193    Since the administration and processing associated with such AC
194    chains is complex and the use of ACs in the Internet today is quite
195    limited, this specification does NOT RECOMMEND the use of AC chains.
196    Other (future) specifications may address the use of AC chains.  This
197    specification deals with the simple cases, where one authority issues
198    all of the ACs for a particular set of attributes.  However, this
199    simplification does not preclude the use of several different
200    authorities, each of which manages a different set of attributes.
201    For example, group membership may be included in one AC issued by one
202    authority, and security clearance may be included in another AC
203    issued by another authority.
205    This means that conformant implementations are only REQUIRED to be
206    able to process a single AC at a time.  Processing of more than one
207    AC, one after another, may be necessary.  Note however, that
208    validation of an AC MAY require validation of a chain of PKCs, as
209    specified in [PKIXPROF].
211 1.2 Attribute Certificate Distribution ("push" vs. "pull")
213    As discussed above, ACs provide a mechanism to securely provide
214    authorization information to, for example, access control decision
215    functions.  However, there are a number of possible communication
216    paths for ACs.
218    In some environments, it is suitable for a client to "push" an AC to
219    a server.  This means that no new connections between the client and
220    server are required.  It also means that no search burden is imposed
221    on servers, which improves performance and that the AC verifier is
226 Farrell & Housley           Standards Track                     [Page 4]
228 RFC 3281           An Internet Attribute Certificate          April 2002
231    only presented with what it "needs to know."  The "push" model is
232    especially suitable in inter-domain cases where the client's rights
233    should be assigned within the client's "home" domain.
235    In other cases, it is more suitable for a client to simply
236    authenticate to the server and for the server to request or "pull"
237    the client's AC from an AC issuer or a repository.  A major benefit
238    of the "pull" model is that it can be implemented without changes to
239    the client or to the client-server protocol.  The "pull" model is
240    especially suitable for inter-domain cases where the client's rights
241    should be assigned within the server's domain, rather than within the
242    client's domain.
244    There are a number of possible exchanges involving three entities:
245    the client, the server, and the AC issuer.  In addition, a directory
246    service or other repository for AC retrieval MAY be supported.
248    Figure 1 shows an abstract view of the exchanges that may involve
249    ACs.  This profile does not specify a protocol for these exchanges.
251       +--------------+
252       |              |        Server Acquisition
253       |  AC issuer   +----------------------------+
254       |              |                            |
255       +--+-----------+                            |
256          |                                        |
257          | Client                                 |
258          | Acquisition                            |
259          |                                        |
260       +--+-----------+                         +--+------------+
261       |              |       AC "push"         |               |
262       |   Client     +-------------------------+    Server     |
263       |              | (part of app. protocol) |               |
264       +--+-----------+                         +--+------------+
265          |                                        |
266          | Client                                 | Server
267          | Lookup        +--------------+         | Lookup
268          |               |              |         |
269          +---------------+  Repository  +---------+
270                          |              |
271                          +--------------+
273                      Figure 1: AC Exchanges
282 Farrell & Housley           Standards Track                     [Page 5]
284 RFC 3281           An Internet Attribute Certificate          April 2002
287 1.3 Document Structure
289    Section 2 defines some terminology.  Section 3 specifies the
290    requirements that this profile is intended to meet.  Section 4
291    contains the profile of the X.509 AC.  Section 5 specifies rules for
292    AC validation.  Section 6 specifies rules for AC revocation checks.
293    Section 7 specifies optional features which MAY be supported;
294    however, support for these features is not required for conformance
295    to this profile.  Finally, appendices contain the list of OIDs
296    required to support this specification and an ASN.1 module.
298 2. Terminology
300    For simplicity, we use the terms client and server in this
301    specification.  This is not intended to indicate that ACs are only to
302    be used in client-server environments.  For example, ACs may be used
303    in the S/MIME v3 context, where the mail user agent would be both a
304    "client" and a "server" in the sense the terms are used here.
306    Term          Meaning
308    AA            Attribute Authority, the entity that issues the
309                  AC, synonymous in this specification with "AC
310                  issuer"
311    AC            Attribute Certificate
312    AC user       any entity that parses or processes an AC
313    AC verifier   any entity that checks the validity of an AC and
314                  then makes use of the result
315    AC issuer     the entity which signs the AC, synonymous in this
316                  specification with "AA"
317    AC holder     the entity indicated (perhaps indirectly) in the
318                  holder field of the AC
319    Client        the entity which is requesting the action for
320                  which authorization checks are to be made
321    Proxying      In this specification, Proxying is used to mean
322                  the situation where an application server acts as
323                  an application client on behalf of a user.
324                  Proxying here does not mean granting of authority.
325    PKC           Public Key Certificate - uses the type ASN.1
326                  Certificate defined in X.509 and profiled in RFC
327                  2459.  This (non-standard) acronym is used in order
328                  to avoid confusion about the term "X.509
329                  certificate".
330    Server        the entity which requires that the authorization
331                  checks are made
338 Farrell & Housley           Standards Track                     [Page 6]
340 RFC 3281           An Internet Attribute Certificate          April 2002
343 3. Requirements
345    This AC profile meets the following requirements.
347    Time/Validity requirements:
349    1. Support for short-lived as well as long-lived ACs.  Typical
350       short-lived validity periods might be measured in hours, as
351       opposed to months for PKCs.  Short validity periods allow ACs to
352       be useful without a revocation mechanism.
354    Attribute Types:
356    2. Issuers of ACs should be able to define their own attribute types
357       for use within closed domains.
359    3. Some standard attribute types, which can be contained within ACs,
360       should be defined.  Examples include "access identity," "group,"
361       "role," "clearance," "audit identity," and "charging identity."
363    4. Standard attribute types should be defined in a manner that
364       permits an AC verifier to distinguish between uses of the same
365       attribute in different domains.  For example, the "Administrators
366       group" as defined by Baltimore and the "Administrators group" as
367       defined by SPYRUS should be easily distinguished.
369    Targeting of ACs:
371    5. It should be possible to "target" an AC at one, or a small number
372       of, servers.  This means that a trustworthy non-target server will
373       reject the AC for authorization decisions.
375    Push vs. Pull
377    6. ACs should be defined so that they can either be "pushed" by the
378       client to the server, or "pulled" by the server from a repository
379       or other network service, including an online AC issuer.
381 4. Attribute Certificate Profile
383    ACs may be used in a wide range of applications and environments
384    covering a broad spectrum of interoperability goals and a broader
385    spectrum of operational and assurance requirements.  The goal of this
386    document is to establish a common baseline for generic applications
387    requiring broad interoperability and limited special purpose
394 Farrell & Housley           Standards Track                     [Page 7]
396 RFC 3281           An Internet Attribute Certificate          April 2002
399    requirements.  In particular, the emphasis will be on supporting the
400    use of attribute certificates for informal Internet electronic mail,
401    IPSec, and WWW applications.
403    This section presents a profile for ACs that will foster
404    interoperability.  This section also defines some private extensions
405    for the Internet community.
407    While the ISO/IEC/ITU documents use the 1993 (or later) version of
408    ASN.1, this document uses the 1988 ASN.1 syntax, as has been done for
409    PKCs [PKIXPROF].  The encoded certificates and extensions from either
410    ASN.1 version are bit-wise identical.
412    Where maximum lengths for fields are specified, these lengths refer
413    to the DER encoding and do not include the ASN.1 tag or length
414    fields.
416    Conforming implementations MUST support the profile specified in this
417    section.
419 4.1 X.509 Attribute Certificate Definition
421    X.509 contains the definition of an AC given below.  All types that
422    are not defined in this document can be found in [PKIXPROF].
424             AttributeCertificate ::= SEQUENCE {
425                  acinfo               AttributeCertificateInfo,
426                  signatureAlgorithm   AlgorithmIdentifier,
427                  signatureValue       BIT STRING
428             }
430             AttributeCertificateInfo ::= SEQUENCE {
431                  version              AttCertVersion -- version is v2,
432                  holder               Holder,
433                  issuer               AttCertIssuer,
434                  signature            AlgorithmIdentifier,
435                  serialNumber         CertificateSerialNumber,
436                  attrCertValidityPeriod   AttCertValidityPeriod,
437                  attributes           SEQUENCE OF Attribute,
438                  issuerUniqueID       UniqueIdentifier OPTIONAL,
439                  extensions           Extensions OPTIONAL
440             }
442             AttCertVersion ::= INTEGER { v2(1) }
443             Holder ::= SEQUENCE {
444                   baseCertificateID   [0] IssuerSerial OPTIONAL,
445                            -- the issuer and serial number of
446                            -- the holder's Public Key Certificate
450 Farrell & Housley           Standards Track                     [Page 8]
452 RFC 3281           An Internet Attribute Certificate          April 2002
455                   entityName          [1] GeneralNames OPTIONAL,
456                            -- the name of the claimant or role
457                   objectDigestInfo    [2] ObjectDigestInfo OPTIONAL
458                            -- used to directly authenticate the holder,
459                            -- for example, an executable
460             }
462             ObjectDigestInfo ::= SEQUENCE {
463                  digestedObjectType  ENUMERATED {
464                          publicKey            (0),
465                          publicKeyCert        (1),
466                          otherObjectTypes     (2) },
467                                  -- otherObjectTypes MUST NOT
468                                  -- be used in this profile
469                  otherObjectTypeID   OBJECT IDENTIFIER OPTIONAL,
470                  digestAlgorithm     AlgorithmIdentifier,
471                  objectDigest        BIT STRING
472             }
474             AttCertIssuer ::= CHOICE {
475                  v1Form   GeneralNames,  -- MUST NOT be used in this
476                                          -- profile
477                  v2Form   [0] V2Form     -- v2 only
478             }
480             V2Form ::= SEQUENCE {
481                  issuerName            GeneralNames  OPTIONAL,
482                  baseCertificateID     [0] IssuerSerial  OPTIONAL,
483                  objectDigestInfo      [1] ObjectDigestInfo  OPTIONAL
484                    -- issuerName MUST be present in this profile
485                    -- baseCertificateID and objectDigestInfo MUST NOT
486                    -- be present in this profile
487             }
489             IssuerSerial  ::=  SEQUENCE {
490                  issuer         GeneralNames,
491                  serial         CertificateSerialNumber,
492                  issuerUID      UniqueIdentifier OPTIONAL
493             }
495             AttCertValidityPeriod  ::= SEQUENCE {
496                  notBeforeTime  GeneralizedTime,
497                  notAfterTime   GeneralizedTime
498             }
506 Farrell & Housley           Standards Track                     [Page 9]
508 RFC 3281           An Internet Attribute Certificate          April 2002
511    Although the Attribute syntax is defined in [PKIXPROF], we repeat
512    the definition here for convenience.
514             Attribute ::= SEQUENCE {
515                   type      AttributeType,
516                   values    SET OF AttributeValue
517                     -- at least one value is required
518             }
520             AttributeType ::= OBJECT IDENTIFIER
522             AttributeValue ::= ANY DEFINED BY AttributeType
524    Implementers should note that the DER encoding (see [X.509-
525    1988],[X.208-1988]) of the SET OF values requires ordering of the
526    encodings of the values.  Though this issue arises with respect to
527    distinguished names, and has to be handled by [PKIXPROF]
528    implementations, it is much more significant in this context, since
529    the inclusion of multiple values is much more common in ACs.
531 4.2 Profile of Standard Fields
533    GeneralName offers great flexibility.  To achieve interoperability,
534    in spite of this flexibility, this profile imposes constraints on the
535    use of GeneralName.
537    Conforming implementations MUST be able to support the dNSName,
538    directoryName, uniformResourceIdentifier, and iPAddress options.
539    This is compatible with the GeneralName requirements in [PKIXPROF]
540    (mainly in section 4.2.1.7).
542    Conforming implementations MUST NOT use the x400Address,
543    ediPartyName, or registeredID options.
545    Conforming implementations MAY use the otherName option to convey
546    name forms defined in Internet Standards.  For example, Kerberos
547    [KRB] format names can be encoded into the otherName, using a
548    Kerberos 5 principal name OID and a SEQUENCE of the Realm and the
549    PrincipalName.
551 4.2.1   Version
553    The version field MUST have the value of v2.  That is, the version
554    field is present in the DER encoding.
562 Farrell & Housley           Standards Track                    [Page 10]
564 RFC 3281           An Internet Attribute Certificate          April 2002
567    Note: This version (v2) is not backwards compatible with the previous
568    attribute certificate definition (v1) from the 1997 X.509 standard
569    [X.509-1997], but is compatible with the v2 definition from X.509
570    (2000) [X.509-2000].
572 4.2.2   Holder
574    The Holder field is a SEQUENCE allowing three different (optional)
575    syntaxes: baseCertificateID, entityName and objectDigestInfo.  Where
576    only one option is present, the meaning of the Holder field is clear.
577    However, where more than one option is used, there is a potential for
578    confusion as to which option is "normative", which is a "hint" etc.
579    Since the correct position is not clear from [X.509-2000], this
580    specification RECOMMENDS that only one of the options be used in any
581    given AC.
583    For any environment where the AC is passed in an authenticated
584    message or session and where the authentication is based on the use
585    of an X.509 PKC, the holder field SHOULD use the baseCertificateID.
587    With the baseCertificateID option, the holder's PKC serialNumber and
588    issuer MUST be identical to the AC holder field.  The PKC issuer MUST
589    have a non-empty distinguished name which is to be present as the
590    single value of the holder.baseCertificateID.issuer construct in the
591    directoryName field.  The AC holder.baseCertificateID.issuerUID field
592    MUST only be used if the holder's PKC contains an issuerUniqueID
593    field.  If both the AC holder.baseCertificateID.issuerUID and the PKC
594    issuerUniqueID fields are present, the same value MUST be present in
595    both fields.  Thus, the baseCertificateID is only usable with PKC
596    profiles (like [PKIXPROF]) which mandate that the PKC issuer field
597    contain a non-empty distinguished name value.
599    Note: An empty distinguished name is a distinguished name where the
600    SEQUENCE OF relative distinguished names is of zero length.  In a DER
601    encoding, this has the value '3000'H.
603    If the holder field uses the entityName option and the underlying
604    authentication is based on a PKC, the entityName MUST be the same as
605    the PKC subject field or one of the values of the PKC subjectAltName
606    field extension (if present).  Note that [PKIXPROF] mandates that the
607    subjectAltName extension be present if the PKC subject is an empty
608    distinguished name.  See the security considerations section which
609    mentions some name collision problems that may arise when using the
610    entityName option.
612    In any other case where the holder field uses the entityName option,
613    only one name SHOULD be present.
618 Farrell & Housley           Standards Track                    [Page 11]
620 RFC 3281           An Internet Attribute Certificate          April 2002
623    Implementations conforming to this profile are not required to
624    support the use of the objectDigest field.  However, section 7.3
625    specifies how this optional feature MAY be used.
627    Any protocol conforming to this profile SHOULD specify which AC
628    holder option is to be used and how this fits with the supported
629    authentication schemes defined in that protocol.
631 4.2.3   Issuer
633    ACs conforming to this profile MUST use the v2Form choice, which MUST
634    contain one and only one GeneralName in the issuerName, which MUST
635    contain a non-empty distinguished name in the directoryName field.
636    This means that all AC issuers MUST have non-empty distinguished
637    names.  ACs conforming to this profile MUST omit the
638    baseCertificateID and objectDigestInfo fields.
640    Part of the reason for the use of the v2Form containing only an
641    issuerName is that it means that the AC issuer does not have to know
642    which PKC the AC verifier will use for it (the AC issuer).  Using the
643    baseCertificateID field to reference the AC issuer would mean that
644    the AC verifier would have to trust the PKC that the AC issuer chose
645    (for itself) at AC creation time.
647 4.2.4   Signature
649    Contains the algorithm identifier used to validate the AC signature.
651    This MUST be one of the signing algorithms defined in [PKIXALGS].
652    Conforming implementations MUST honor all MUST/SHOULD/MAY signing
653    algorithm statements specified in [PKIXALGS].
655 4.2.5   Serial Number
657    For any conforming AC, the issuer/serialNumber pair MUST form a
658    unique combination, even if ACs are very short-lived.
660    AC issuers MUST force the serialNumber to be a positive integer, that
661    is, the sign bit in the DER encoding of the INTEGER value MUST be
662    zero - this can be done by adding a leading (leftmost) '00'H octet if
663    necessary.  This removes a potential ambiguity in mapping between a
664    string of octets and an integer value.
666    Given the uniqueness and timing requirements above, serial numbers
667    can be expected to contain long integers.  AC users MUST be able to
668    handle serialNumber values longer than 4 octets.  Conformant ACs MUST
669    NOT contain serialNumber values longer than 20 octets.
674 Farrell & Housley           Standards Track                    [Page 12]
676 RFC 3281           An Internet Attribute Certificate          April 2002
679    There is no requirement that the serial numbers used by any AC issuer
680    follow any particular ordering.  In particular, they need not be
681    monotonically increasing with time.  Each AC issuer MUST ensure that
682    each AC that it issues contains a unique serial number.
684 4.2.6   Validity Period
686    The attrCertValidityPeriod (a.k.a. validity) field specifies the
687    period for which the AC issuer certifies that the binding between the
688    holder and the attributes fields will be valid.
690    The generalized time type, GeneralizedTime, is a standard ASN.1 type
691    for variable precision representation of time.  The GeneralizedTime
692    field can optionally include a representation of the time
693    differential between the local time zone and Greenwich Mean Time.
695    For the purposes of this profile, GeneralizedTime values MUST be
696    expressed in Coordinated universal time (UTC) (also known as
697    Greenwich Mean Time or Zulu)) and MUST include seconds (i.e., times
698    are YYYYMMDDHHMMSSZ), even when the number of seconds is zero.
699    GeneralizedTime values MUST NOT include fractional seconds.
701    (Note: this is the same as specified in [PKIXPROF], section
702    4.1.2.5.2.)
704    AC users MUST be able to handle an AC which, at the time of
705    processing, has parts of its validity period or all its validity
706    period in the past or in the future (a post-dated AC).  This is valid
707    for some applications, such as backup.
709 4.2.7   Attributes
711    The attributes field gives information about the AC holder.  When the
712    AC is used for authorization, this will often contain a set of
713    privileges.
715    The attributes field contains a SEQUENCE OF Attribute.  Each
716    Attribute MAY contain a SET OF values.  For a given AC, each
717    AttributeType OBJECT IDENTIFIER in the sequence MUST be unique.  That
718    is, only one instance of each attribute can occur in a single AC, but
719    each instance can be multi-valued.
721    AC users MUST be able to handle multiple values for all attribute
722    types.
724    An AC MUST contain at least one attribute.  That is, the SEQUENCE OF
725    Attributes MUST NOT be of zero length.
730 Farrell & Housley           Standards Track                    [Page 13]
732 RFC 3281           An Internet Attribute Certificate          April 2002
735    Some standard attribute types are defined in section 4.4.
737 4.2.8   Issuer Unique Identifier
739    This field MUST NOT be used unless it is also used in the AC issuer's
740    PKC, in which case it MUST be used.  Note that [PKIXPROF] states that
741    this field SHOULD NOT be used by conforming CAs, but that
742    applications SHOULD be able to parse PKCs containing the field.
744 4.2.9   Extensions
746    The extensions field generally gives information about the AC as
747    opposed to information about the AC holder.
749    An AC that has no extensions conforms to the profile; however,
750    section 4.3 defines the extensions that MAY be used with this
751    profile, and whether or not they may be marked critical.  If any
752    other critical extension is used, the AC does not conform to this
753    profile.  However, if any other non-critical extension is used, the
754    AC does conform to this profile.
756    The extensions defined for ACs provide methods for associating
757    additional attributes with holders.  This profile also allows
758    communities to define private extensions to carry information unique
759    to those communities.  Each extension in an AC may be designated as
760    critical or non-critical.  An AC using system MUST reject an AC if it
761    encounters a critical extension it does not recognize; however, a
762    non-critical extension may be ignored if it is not recognized.
763    Section 4.3 presents recommended extensions used within Internet ACs
764    and standard locations for information.  Communities may elect to use
765    additional extensions; however, caution should be exercised in
766    adopting any critical extensions in ACs which might prevent use in a
767    general context.
769 4.3 Extensions
771 4.3.1   Audit Identity
773    In some circumstances, it is required (e.g. by data protection/data
774    privacy legislation) that audit trails not contain records which
775    directly identify individuals.  This circumstance may make the use of
776    the AC holder field unsuitable for use in audit trails.
778    To allow for such cases, an AC MAY contain an audit identity
779    extension.  Ideally it SHOULD be infeasible to derive the AC holder's
780    identity from the audit identity value without the cooperation of the
781    AC issuer.
786 Farrell & Housley           Standards Track                    [Page 14]
788 RFC 3281           An Internet Attribute Certificate          April 2002
791    The value of the audit identity, along with the AC issuer/serial,
792    SHOULD then be used for audit/logging purposes.  If the value of the
793    audit identity is suitably chosen, a server/service administrator can
794    use audit trails to track the behavior of an AC holder without being
795    able to identify the AC holder.
797    The server/service administrator in combination with the AC issuer
798    MUST be able to identify the AC holder in cases where misbehavior is
799    detected.  This means that the AC issuer MUST be able to determine
800    the actual identity of the AC holder from the audit identity.
802    Of course, auditing could be based on the AC issuer/serial pair;
803    however, this method does not allow tracking of the same AC holder
804    with multiple ACs.  Thus, an audit identity is only useful if it
805    lasts for longer than the typical AC lifetime.  Auditing could also
806    be based on the AC holder's PKC issuer/serial; however, this will
807    often allow the server/service administrator to identify the AC
808    holder.
810    As the AC verifier might otherwise use the AC holder or some other
811    identifying value for audit purposes, this extension MUST be critical
812    when used.
814    Protocols that use ACs will often expose the identity of the AC
815    holder in the bits on-the-wire.  In such cases, an opaque audit
816    identity does not make use of the AC anonymous; it simply ensures
817    that the ensuing audit trails do not contain identifying information.
819    The value of an audit identity MUST be longer than zero octets.  The
820    value of an audit identity MUST NOT be longer than 20 octets.
822       name           id-pe-ac-auditIdentity
823       OID            { id-pe 4 }
824       syntax         OCTET STRING
825       criticality    MUST be TRUE
827 4.3.2   AC Targeting
829    To target an AC, the target information extension, imported from
830    [X.509-2000], MAY be used to specify a number of servers/services.
831    The intent is that the AC SHOULD only be usable at the specified
832    servers/services.  An (honest) AC verifier who is not amongst the
833    named servers/services MUST reject the AC.
835    If this extension is not present, the AC is not targeted and may be
836    accepted by any server.
842 Farrell & Housley           Standards Track                    [Page 15]
844 RFC 3281           An Internet Attribute Certificate          April 2002
847    In this profile, the targeting information simply consists of a list
848    of named targets or groups.
850    The following syntax is used to represent the targeting information:
852             Targets ::= SEQUENCE OF Target
854             Target  ::= CHOICE {
855               targetName          [0] GeneralName,
856               targetGroup         [1] GeneralName,
857               targetCert          [2] TargetCert
858             }
860             TargetCert  ::= SEQUENCE {
861               targetCertificate    IssuerSerial,
862               targetName           GeneralName OPTIONAL,
863               certDigestInfo       ObjectDigestInfo OPTIONAL
864             }
866    The targetCert CHOICE within the Target structure is only present to
867    allow future compatibility with [X.509-2000] and MUST NOT be used.
869    The targets check passes if the current server (recipient) is one of
870    the targetName fields in the Targets SEQUENCE, or if the current
871    server is a member of one of the targetGroup fields in the Targets
872    SEQUENCE.  In this case, the current server is said to "match" the
873    targeting extension.
875    How the membership of a target within a targetGroup is determined is
876    not defined here.  It is assumed that any given target "knows" the
877    names of the targetGroups to which it belongs or can otherwise
878    determine its membership.  For example, the targetGroup specifies a
879    DNS domain, and the AC verifier knows the DNS domain to which it
880    belongs.  For another example, the targetGroup specifies "PRINTERS,"
881    and the AC verifier knows whether or not it is a printer or print
882    server.
884    Note: [X.509-2000] defines the extension syntax as a "SEQUENCE OF
885    Targets".  Conforming AC issuer implementations MUST only produce one
886    "Targets" element.  Confirming AC users MUST be able to accept a
887    "SEQUENCE OF Targets".  If more than one Targets element is found in
888    an AC, the extension MUST be treated as if all Target elements had
889    been found within one Targets element.
891       name           id-ce-targetInformation
892       OID            { id-ce 55 }
893       syntax         SEQUENCE OF Targets
894       criticality    MUST be TRUE
898 Farrell & Housley           Standards Track                    [Page 16]
900 RFC 3281           An Internet Attribute Certificate          April 2002
903 4.3.3   Authority Key Identifier
905    The authorityKeyIdentifier extension, as profiled in [PKIXPROF], MAY
906    be used to assist the AC verifier in checking the signature of the
907    AC.  The [PKIXPROF] description should be read as if "CA" meant "AC
908    issuer."  As with PKCs, this extension SHOULD be included in ACs.
910    Note: An AC, where the issuer field used the baseCertificateID
911    CHOICE, would not need an authorityKeyIdentifier extension, as it is
912    explicitly linked to the key in the referred certificate.  However,
913    as this profile states (in section 4.2.3), ACs MUST use the v2Form
914    with issuerName CHOICE, this duplication does not arise.
916       name           id-ce-authorityKeyIdentifier
917       OID            { id-ce 35 }
918       syntax         AuthorityKeyIdentifier
919       criticality    MUST be FALSE
921 4.3.4   Authority Information Access
923    The authorityInformationAccess extension, as defined in [PKIXPROF],
924    MAY be used to assist the AC verifier in checking the revocation
925    status of the AC.  Support for the id-ad-caIssuers accessMethod is
926    NOT REQUIRED by this profile since AC chains are not expected.
928    The following accessMethod is used to indicate that revocation status
929    checking is provided for this AC, using the OCSP protocol defined in
930    [OCSP]:
932       id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
934    The accessLocation MUST contain a URI, and the URI MUST contain an
935    HTTP URL [URL] that specifies the location of an OCSP responder.  The
936    AC issuer MUST, of course, maintain an OCSP responder at this
937    location.
939       name           id-ce-authorityInfoAccess
940       OID            { id-pe 1 }
941       syntax         AuthorityInfoAccessSyntax
942       criticality    MUST be FALSE
944 4.3.5   CRL Distribution Points
946    The crlDistributionPoints extension, as profiled in [PKIXPROF], MAY
947    be used to assist the AC verifier in checking the revocation status
948    of the AC.  See section 6 for details on revocation.
954 Farrell & Housley           Standards Track                    [Page 17]
956 RFC 3281           An Internet Attribute Certificate          April 2002
959    If the crlDistributionPoints extension is present, then exactly one
960    distribution point MUST be present.  The crlDistributionPoints
961    extension MUST use the DistributionPointName option, which MUST
962    contain a fullName, which MUST contain a single name form.  That name
963    MUST contain either a distinguished name or a URI.  The URI MUST be
964    either an HTTP URL or an LDAP URL [URL].
966       name           id-ce-cRLDistributionPoints
967       OID            { id-ce 31 }
968       syntax         CRLDistPointsSyntax
969       criticality    MUST be FALSE
971 4.3.6   No Revocation Available
973    The noRevAvail extension, defined in [X.509-2000], allows an AC
974    issuer to indicate that no revocation information will be made
975    available for this AC.
977    This extension MUST be non-critical.  An AC verifier that does not
978    understand this extension might be able to find a revocation list
979    from the AC issuer, but the revocation list will never include an
980    entry for the AC.
982       name           id-ce-noRevAvail
983       OID            { id-ce 56 }
984       syntax         NULL (i.e. '0500'H is the DER encoding)
985       criticality    MUST be FALSE
987 4.4 Attribute Types
989    Some of the attribute types defined below make use of the
990    IetfAttrSyntax type, also defined below.  The reasons for using this
991    type are:
993    1. It allows a separation between the AC issuer and the attribute
994       policy authority.  This is useful for situations where a single
995       policy authority (e.g. an organization) allocates attribute
996       values, but where multiple AC issuers are deployed for performance
997       or other reasons.
999    2. The syntaxes allowed for values are restricted to OCTET STRING,
1000       OBJECT IDENTIFIER, and UTF8String, which significantly reduces the
1001       complexity associated with matching more general syntaxes.  All
1002       multi-valued attributes using this syntax are restricted so that
1003       each value MUST use the same choice of value syntax.  For example,
1004       AC issuers must not use one value with an oid and a second value
1005       with a string.
1010 Farrell & Housley           Standards Track                    [Page 18]
1012 RFC 3281           An Internet Attribute Certificate          April 2002
1015                IetfAttrSyntax ::= SEQUENCE {
1016                     policyAuthority [0] GeneralNames    OPTIONAL,
1017                     values          SEQUENCE OF CHOICE {
1018                                   octets    OCTET STRING,
1019                                   oid       OBJECT IDENTIFIER,
1020                                   string    UTF8String
1021                    }
1022                }
1024    In the descriptions below, each attribute type is either tagged
1025    "Multiple Allowed" or "One Attribute value only; multiple values
1026    within the IetfAttrSyntax".  This refers to the SET OF
1027    AttributeValues; the AttributeType still only occurs once, as
1028    specified in section 4.2.7.
1030 4.4.1   Service Authentication Information
1032    The SvceAuthInfo attribute identifies the AC holder to the
1033    server/service by a name, and the attribute MAY include optional
1034    service specific authentication information.  Typically this will
1035    contain a username/password pair for a "legacy" application.
1037    This attribute provides information that can be presented by the AC
1038    verifier to be interpreted and authenticated by a separate
1039    application within the target system.  Note that this is a different
1040    use to that intended for the accessIdentity attribute in 4.4.2 below.
1042    This attribute type will typically be encrypted when the authInfo
1043    field contains sensitive information, such as a password.
1045       name      id-aca-authenticationInfo
1046       OID       { id-aca 1 }
1047       Syntax    SvceAuthInfo
1048       values:   Multiple allowed
1050            SvceAuthInfo ::=    SEQUENCE {
1051                 service   GeneralName,
1052                 ident     GeneralName,
1053                 authInfo  OCTET STRING OPTIONAL
1054            }
1056 4.4.2   Access Identity
1058    The accessIdentity attribute identifies the AC holder to the
1059    server/service.  For this attribute the authInfo field MUST NOT be
1060    present.
1066 Farrell & Housley           Standards Track                    [Page 19]
1068 RFC 3281           An Internet Attribute Certificate          April 2002
1071    This attribute is intended to be used to provide information about
1072    the AC holder, that can be used by the AC verifier (or a larger
1073    system of which the AC verifier is a component) to authorize the
1074    actions of the AC holder within the AC verifier's system.  Note that
1075    this is a different use to that intended for the svceAuthInfo
1076    attribute described in 4.4.1 above.
1078       name      id-aca-accessIdentity
1079       OID       { id-aca 2 }
1080       syntax    SvceAuthInfo
1081       values:   Multiple allowed
1083 4.4.3   Charging Identity
1085    The chargingIdentity attribute identifies the AC holder for charging
1086    purposes.  In general, the charging identity will be different from
1087    other identities of the holder.  For example, the holder's company
1088    may be charged for service.
1090       name      id-aca-chargingIdentity
1091       OID       { id-aca 3 }
1092       syntax    IetfAttrSyntax
1093       values:   One Attribute value only; multiple values within the
1094                 IetfAttrSyntax
1096 4.4.4   Group
1098    The group attribute carries information about group memberships of
1099    the AC holder.
1101       name      id-aca-group
1102       OID       { id-aca 4 }
1103       syntax    IetfAttrSyntax
1104       values:   One Attribute value only; multiple values within the
1105                 IetfAttrSyntax
1107 4.4.5   Role
1109    The role attribute, specified in [X.509-2000], carries information
1110    about role allocations of the AC holder.
1112    The syntax used for this attribute is:
1114          RoleSyntax ::= SEQUENCE {
1115                  roleAuthority   [0] GeneralNames OPTIONAL,
1116                  roleName        [1] GeneralName
1117          }
1122 Farrell & Housley           Standards Track                    [Page 20]
1124 RFC 3281           An Internet Attribute Certificate          April 2002
1127    The roleAuthority field MAY be used to specify the issuing authority
1128    for the role specification certificate.  There is no requirement that
1129    a role specification certificate necessarily exists for the
1130    roleAuthority.  This differs from [X.500-2000], where the
1131    roleAuthority field is assumed to name the issuer of a role
1132    specification certificate.  For example, to distinguish the
1133    administrator role as defined by "Baltimore" from that defined by
1134    "SPYRUS", one could put the value "urn:administrator" in the roleName
1135    field and the value "Baltimore" or "SPYRUS" in the roleAuthority
1136    field.
1138    The roleName field MUST be present, and roleName MUST use the
1139    uniformResourceIdentifier CHOICE of the GeneralName.
1141       name      id-at-role
1142       OID       { id-at 72 }
1143       syntax    RoleSyntax
1144       values:   Multiple allowed
1146 4.4.6   Clearance
1148    The clearance attribute, specified in [X.501-1993], carries clearance
1149    (associated with security labeling) information about the AC holder.
1151    The policyId field is used to identify the security policy to which
1152    the clearance relates.  The policyId indicates the semantics of the
1153    classList and securityCategories fields.
1155    This specification includes the classList field exactly as it is
1156    specified in [X.501-1993].  Additional security classification
1157    values, and their position in the classification hierarchy, may be
1158    defined by a security policy as a local matter or by bilateral
1159    agreement.  The basic security classification hierarchy is, in
1160    ascending order: unmarked, unclassified, restricted, confidential,
1161    secret, and top-secret.
1163    An organization can develop its own security policy that defines
1164    security classification values and their meanings.  However, the BIT
1165    STRING positions 0 through 5 are reserved for the basic security
1166    classification hierarchy.
1168    If present, the SecurityCategory field provides further authorization
1169    information.  The security policy identified by the policyId field
1170    indicates the syntaxes that are allowed to be present in the
1171    securityCategories SET.  An OBJECT IDENTIFIER identifies each of the
1172    allowed syntaxes.  When one of these syntaxes is present in the
1173    securityCategories SET, the OBJECT IDENTIFIER associated with that
1174    syntax is carried in the SecurityCategory.type field.
1178 Farrell & Housley           Standards Track                    [Page 21]
1180 RFC 3281           An Internet Attribute Certificate          April 2002
1183             Clearance  ::=  SEQUENCE {
1184                  policyId  [0] OBJECT IDENTIFIER,
1185                  classList [1] ClassList DEFAULT {unclassified},
1186                  securityCategories
1187                            [2] SET OF SecurityCategory OPTIONAL
1188             }
1190             ClassList  ::=  BIT STRING {
1191                  unmarked       (0),
1192                  unclassified   (1),
1193                  restricted     (2)
1194                  confidential   (3),
1195                  secret         (4),
1196                  topSecret      (5)
1197             }
1199             SecurityCategory ::= SEQUENCE {
1200                  type      [0]  IMPLICIT OBJECT IDENTIFIER,
1201                  value     [1]  ANY DEFINED BY type
1202             }
1204             -- This is the same as the original syntax which was defined
1205             -- using the MACRO construct, as follows:
1206             -- SecurityCategory ::= SEQUENCE {
1207             --      type      [0]  IMPLICIT SECURITY-CATEGORY,
1208             --      value     [1]  ANY DEFINED BY type
1209             -- }
1210             --
1211             -- SECURITY-CATEGORY MACRO  ::=
1212             -- BEGIN
1213             -- TYPE NOTATION ::= type | empty
1214             -- VALUE NOTATION ::= value (VALUE OBJECT IDENTIFIER)
1215             -- END
1219        name      { id-at-clearance }
1220        OID       { joint-iso-ccitt(2) ds(5) module(1)
1221                    selected-attribute-types(5) clearance (55) }
1222        syntax    Clearance - imported from [X.501-1993]
1223        values    Multiple allowed
1225 4.5 Profile of AC issuer's PKC
1227    The AC issuer's PKC MUST conform to [PKIXPROF], and the keyUsage
1228    extension in the PKC MUST NOT explicitly indicate that the AC
1229    issuer's public key cannot be used to validate a digital signature.
1230    In order to avoid confusion regarding serial numbers and revocations,
1234 Farrell & Housley           Standards Track                    [Page 22]
1236 RFC 3281           An Internet Attribute Certificate          April 2002
1239    an AC issuer MUST NOT also be a PKC Issuer.  That is, an AC issuer
1240    cannot be a CA as well.  So, the AC issuer's PKC MUST NOT have a
1241    basicConstraints extension with the cA BOOLEAN set to TRUE.
1243 5. Attribute Certificate Validation
1245    This section describes a basic set of rules that all valid ACs MUST
1246    satisfy.  Some additional checks are also described which AC
1247    verifiers MAY choose to implement.
1249    To be valid an AC MUST satisfy all of the following:
1251    1. Where the holder uses a PKC to authenticate to the AC verifier,
1252       the AC holder's PKC MUST be found, and the entire certification
1253       path of that PKC MUST be verified in accordance with [PKIXPROF].
1254       As noted in the security considerations section, if some other
1255       authentication scheme is used, AC verifiers need to be very
1256       careful mapping the identities (authenticated identity, holder
1257       field) involved.
1259    2. The AC signature must be cryptographically correct, and the AC
1260       issuer's entire PKC certification path MUST be verified in
1261       accordance with [PKIXPROF].
1263    3. The AC issuer's PKC MUST also conform to the profile specified in
1264       section 4.5 above.
1266    4. The AC issuer MUST be directly trusted as an AC issuer (by
1267       configuration or otherwise).
1269    5. The time for which the AC is being evaluated MUST be within the AC
1270       validity.  If the evaluation time is equal to either notBeforeTime
1271       or notAfterTime, then the AC is timely and this check succeeds.
1272       Note that in some applications, the evaluation time MAY not be the
1273       same as the current time.
1275    6. The AC targeting check MUST pass as specified in section 4.3.2.
1277    7. If the AC contains an unsupported critical extension, the AC MUST
1278       be rejected.
1280    Support for an extension in this context means:
1282    1. The AC verifier MUST be able to parse the extension value.
1284    2. Where the extension value SHOULD cause the AC to be rejected, the
1285       AC verifier MUST reject the AC.
1290 Farrell & Housley           Standards Track                    [Page 23]
1292 RFC 3281           An Internet Attribute Certificate          April 2002
1295    Additional Checks:
1297    1. The AC MAY be rejected on the basis of further AC verifier
1298       configuration.  For example, an AC verifier may be configured to
1299       reject ACs which contain or lack certain attributes.
1301    2. If the AC verifier provides an interface that allows applications
1302       to query the contents of the AC, then the AC verifier MAY filter
1303       the attributes from the AC on the basis of configured information.
1304       For example, an AC verifier might be configured not to return
1305       certain attributes to certain servers.
1307 6. Revocation
1309    In many environments, the validity period of an AC is less than the
1310    time required to issue and distribute revocation information.
1311    Therefore, short-lived ACs typically do not require revocation
1312    support.  However, long-lived ACs and environments where ACs enable
1313    high value transactions MAY require revocation support.
1315    Two revocation schemes are defined, and the AC issuer should elect
1316    the one that is best suited to the environment in which the AC will
1317    be employed.
1319    "Never revoke" scheme:
1321       ACs may be marked so that the relying party understands that no
1322       revocation status information will be made available.  The
1323       noRevAvail extension is defined in section 4.3.6, and the
1324       noRevAvail extension MUST be present in the AC to indicate use of
1325       this scheme.
1327       Where no noRevAvail is present, the AC issuer is implicitly
1328       stating that revocation status checks are supported, and some
1329       revocation method MUST be provided to allow AC verifiers to
1330       establish the revocation status of the AC.
1332    "Pointer in AC" scheme:
1334       ACs may "point" to sources of revocation status information, using
1335       either an authorityInfoAccess extension or a crlDistributionPoints
1336       extension within the AC.
1338    For AC users, the "never revoke" scheme MUST be supported, and the
1339    "pointer in AC" scheme SHOULD be supported.  If only the "never
1340    revoke" scheme is supported, then all ACs that do not contain a
1341    noRevAvail extension, MUST be rejected.
1346 Farrell & Housley           Standards Track                    [Page 24]
1348 RFC 3281           An Internet Attribute Certificate          April 2002
1351    For AC issuers, the "never revoke" scheme MUST be supported.  If all
1352    ACs that will ever be issued by that AC issuer, contains a noRevAvail
1353    extension, the "pointer in AC" scheme need not be supported.  If any
1354    AC can be issued that does not contain the noRevAvail extension, the
1355    "pointer in AC" scheme MUST be supported.
1357    An AC MUST NOT contain both a noRevAvail and a "pointer in AC".
1359    An AC verifier MAY use any source for AC revocation status
1360    information.
1362 7. Optional Features
1364    This section specifies features that MAY be implemented.  Conformance
1365    to this profile does NOT require support for these features; however,
1366    if these features are offered, they MUST be offered as described
1367    below.
1369 7.1 Attribute Encryption
1371    Where an AC will be carried in clear within an application protocol
1372    or where an AC contains some sensitive information like a legacy
1373    application username/password, then encryption of AC attributes MAY
1374    be needed.
1376    When a set of attributes are to be encrypted within an AC, the
1377    Cryptographic Message Syntax, EnvelopedData structure [CMS] is used
1378    to carry the ciphertext and associated per-recipient keying
1379    information.
1381    This type of attribute encryption is targeted.  Before the AC is
1382    signed, the attributes are encrypted for a set of predetermined
1383    recipients.
1385    The AC then contains the ciphertext inside its signed data.  The
1386    EnvelopedData (id-envelopedData) ContentType is used, and the content
1387    field will contain the EnvelopedData type.
1389    The ciphertext is included in the AC as the value of an encAttrs
1390    attribute.  Only one encAttrs attribute can be present in an AC;
1391    however, the encAttrs attribute MAY be multi-valued, and each of its
1392    values will contain an independent EnvelopedData.
1394    Each value can contain a set of attributes (each possibly a multi-
1395    valued attribute) encrypted for a set of predetermined recipients.
1402 Farrell & Housley           Standards Track                    [Page 25]
1404 RFC 3281           An Internet Attribute Certificate          April 2002
1407    The cleartext that is encrypted has the type:
1409       ACClearAttrs ::= SEQUENCE {
1410            acIssuer  GeneralName,
1411            acSerial  INTEGER,
1412            attrs     SEQUENCE OF Attribute
1413       }
1415    The DER encoding of the ACClearAttrs structure is used as the
1416    encryptedContent field of the EnvelopedData.  The DER encoding MUST
1417    be embedded in an OCTET STRING.
1419    The acIssuer and acSerial fields are present to prevent ciphertext
1420    stealing.  When an AC verifier has successfully decrypted an
1421    encrypted attribute, it MUST then check that the AC issuer and
1422    serialNumber fields contain the same values.  This prevents a
1423    malicious AC issuer from copying ciphertext from another AC (without
1424    knowing its corresponding plaintext).
1426    The procedure for an AC issuer when encrypting attributes is
1427    illustrated by the following (any other procedure that gives the same
1428    result MAY be used):
1430       1.   Identify the sets of attributes that are to be encrypted for
1431            each set of recipients.
1432       2.   For each attribute set which is to be encrypted:
1433          2.1. Create an EnvelopedData structure for the data for this
1434               set of recipients.
1435          2.2. Encode the ContentInfo containing the EnvelopedData as a
1436               value of the encAttrs attribute.
1437          2.3. Ensure the cleartext attributes are not present in the
1438               to-be-signed AC.
1439       3.   Add the encAttrs (with its multiple values) to the AC.
1441    Note that there may be more than one attribute of the same type (the
1442    same OBJECT IDENTIFIER) after decryption.  That is, an AC MAY contain
1443    the same attribute type both in clear and in encrypted form (and
1444    indeed several times if the same recipient is associated with more
1445    than one EnvelopedData).  One approach implementers may choose, would
1446    be to merge attribute values following decryption in order to re-
1447    establish the "once only" constraint.
1449       name      id-aca-encAttrs
1450       OID       { id-aca 6}
1451       Syntax    ContentInfo
1452       values    Multiple Allowed
1458 Farrell & Housley           Standards Track                    [Page 26]
1460 RFC 3281           An Internet Attribute Certificate          April 2002
1463    If an AC contains attributes, apparently encrypted for the AC
1464    verifier, the decryption process MUST not fail.  If decryption does
1465    fail, the AC MUST be rejected.
1467 7.2 Proxying
1469    When a server acts as a client for another server on behalf of the AC
1470    holder, the server MAY need to proxy an AC.  Such proxying MAY have
1471    to be done under the AC issuer's control, so that not every AC is
1472    proxiable and so that a given proxiable AC can be proxied in a
1473    targeted fashion.  Support for chains of proxies (with more than one
1474    intermediate server) MAY also be required.  Note that this does not
1475    involve a chain of ACs.
1477    In order to meet this requirement we define another extension,
1478    ProxyInfo, similar to the targeting extension.
1480    When this extension is present, the AC verifier must check that the
1481    entity from which the AC was received was allowed to send it and that
1482    the AC is allowed to be used by this verifier.
1484    The proxying information consists of a set of proxy information, each
1485    of which is a set of targeting information.  If the verifier and the
1486    sender of the AC are both named in the same proxy set, the AC can
1487    then be accepted (the exact rule is given below).
1489    The effect is that the AC holder can send the AC to any valid target
1490    which can then only proxy to targets which are in one of the same
1491    proxy sets as itself.
1493    The following data structure is used to represent the
1494    targeting/proxying information.
1496          ProxyInfo ::= SEQUENCE OF Targets
1498    As in the case of targeting, the targetCert CHOICE MUST NOT be used.
1500    A proxy check succeeds if either one of the conditions below is met:
1502    1. The identity of the sender, as established by the underlying
1503       authentication service, matches the holder field of the AC, and
1504       the current server "matches" any one of the proxy sets.  Recall
1505       that "matches" is as defined section 4.3.2.
1514 Farrell & Housley           Standards Track                    [Page 27]
1516 RFC 3281           An Internet Attribute Certificate          April 2002
1519    2. The identity of the sender, as established by the underlying
1520       authentication service, "matches" one of the proxy sets (call it
1521       set "A"), and the current server is one of the targetName fields
1522       in the set "A", or the current server is a member of one of the
1523       targetGroup fields in set "A".
1525    When an AC is proxied more than once, a number of targets will be on
1526    the path from the original client, which is normally, but not always,
1527    the AC holder.  In such cases, prevention of AC "stealing" requires
1528    that the AC verifier MUST check that all targets on the path are
1529    members of the same proxy set.  It is the responsibility of the AC-
1530    using protocol to ensure that a trustworthy list of targets on the
1531    path is available to the AC verifier.
1533       name           id-pe-ac-proxying
1534       OID            { id-pe 10 }
1535       syntax         ProxyInfo
1536       criticality    MUST be TRUE
1538 7.3 Use of ObjectDigestInfo
1540    In some environments, it may be required that the AC is not linked
1541    either to an identity (via entityName) or to a PKC (via
1542    baseCertificateID).  The objectDigestInfo CHOICE in the holder field
1543    allows support for this requirement.
1545    If the holder is identified with the objectDigestInfo field, then the
1546    AC version field MUST contain v2 (the integer 1).
1548    The idea is to link the AC to an object by placing a hash of that
1549    object into the holder field of the AC.  For example, this allows
1550    production of ACs that are linked to public keys rather than names.
1551    It also allows production of ACs which contain privileges associated
1552    with an executable object such as a Java class.  However, this
1553    profile only specifies how to use a hash over a public key or PKC.
1554    That is, conformant ACs MUST NOT use the otherObjectTypes value for
1555    the digestedObjectType.
1557    To link an AC to a public key, the hash must be calculated over the
1558    representation of that public key which would be present in a PKC,
1559    specifically, the input for the hash algorithm MUST be the DER
1560    encoding of a SubjectPublicKeyInfo representation of the key.  Note:
1561    This includes the AlgorithmIdentifier as well as the BIT STRING.  The
1562    rules given in [PKIXPROF] for encoding keys MUST be followed.  In
1563    this case, the digestedObjectType MUST be publicKey and the
1564    otherObjectTypeID field MUST NOT be present.
1570 Farrell & Housley           Standards Track                    [Page 28]
1572 RFC 3281           An Internet Attribute Certificate          April 2002
1575    Note that if the public key value used as input to the hash function
1576    has been extracted from a PKC, it is possible that the
1577    SubjectPublicKeyInfo from that PKC is NOT the value which should be
1578    hashed.  This can occur if DSA Dss-parms are inherited as described
1579    in section 7.3.3 of [PKIXPROF].  The correct input for hashing in
1580    this context will include the value of the parameters inherited from
1581    the CA's PKC, and thus may differ from the SubjectPublicKeyInfo
1582    present in the PKC.
1584    Implementations which support this feature MUST be able to handle the
1585    representations of public keys for the algorithms specified in
1586    section 7.3 of [PKIXPROF].  In this case, the digestedObjectType MUST
1587    be publicKey and the otherObjectTypeID field MUST NOT be present.
1589    In order to link an AC to a PKC via a digest, the digest MUST be
1590    calculated over the DER encoding of the entire PKC, including the
1591    signature value.  In this case the digestedObjectType MUST be
1592    publicKeyCert and the otherObjectTypeID field MUST NOT be present.
1594 7.4 AA Controls
1596    During AC validation a relying party has to answer the question: is
1597    this AC issuer trusted to issue ACs containing this attribute?  The
1598    AAControls PKC extension MAY be used to help answer the question.
1599    The AAControls extension is intended to be used in CA and AC issuer
1600    PKCs.
1602          id-pe-aaControls OBJECT IDENTIFIER ::= { id-pe 6 }
1604          AAControls ::= SEQUENCE {
1605             pathLenConstraint   INTEGER (0..MAX) OPTIONAL,
1606             permittedAttrs      [0] AttrSpec OPTIONAL,
1607             excludedAttrs       [1] AttrSpec OPTIONAL,
1608             permitUnSpecified   BOOLEAN DEFAULT TRUE
1609          }
1611          AttrSpec::= SEQUENCE OF OBJECT IDENTIFIER
1613    The AAControls extension is used as follows:
1615    The pathLenConstraint, if present, is interpreted as in [PKIXPROF].
1616    It restricts the allowed distance between the AA CA (a CA directly
1617    trusted to include AAControls in its PKCs), and the AC issuer.
1619    The permittedAttrs field specifies a set of attribute types that any
1620    AC issuer below this AA CA is allowed to include in ACs.  If this
1621    field is not present, it means that no attribute types are explicitly
1622    allowed.
1626 Farrell & Housley           Standards Track                    [Page 29]
1628 RFC 3281           An Internet Attribute Certificate          April 2002
1631    The excludedAttrs field specifies a set of attribute types that no AC
1632    issuer is allowed to include in ACs.  If this field is not present,
1633    it means that no attribute types are explicitly disallowed.
1635    The permitUnSpecified field specifies how to handle attribute types
1636    which are not present in either the permittedAttrs or excludedAttrs
1637    fields.  TRUE (the default) means that any unspecified attribute type
1638    is allowed in ACs; FALSE means that no unspecified attribute type is
1639    allowed.
1641    When AAControls are used, the following additional checks on an AA's
1642    PKC chain MUST all succeed for the AC to be valid:
1644    1. Some CA on the ACs certificate path MUST be directly trusted to
1645       issue PKCs which precede the AC issuer in the certification path;
1646       call this CA the "AA CA".
1648    2. All PKCs on the path from the AA CA, down to and including the AC
1649       issuer's PKC, MUST contain an AAControls extension; however, the
1650       AA CA's PKC need not contain this extension.
1652    3. Only those attributes in the AC which are allowed, according to
1653       all of the AAControls extension values in all of the PKCs from the
1654       AA CA to the AC issuer, may be used for authorization decisions;
1655       all other attributes MUST be ignored.  This check MUST be applied
1656       to the set of attributes following attribute decryption, and the
1657       id-aca-encAttrs type MUST also be checked.
1659       name           id-pe-aaControls
1660       OID            { id-pe 6 }
1661       syntax         AAControls
1662       criticality    MAY be TRUE
1664 8. Security Considerations
1666    The protection afforded for private keys is a critical factor in
1667    maintaining security.  Failure of AC issuers to protect their private
1668    keys will permit an attacker to masquerade as them, potentially
1669    generating false ACs or revocation status.  Existence of bogus ACs
1670    and revocation status will undermine confidence in the system.  If
1671    the compromise is detected, all ACs issued by the AC issuer MUST be
1672    revoked.  Rebuilding after such a compromise will be problematic, so
1673    AC issuers are advised to implement a combination of strong technical
1674    measures (e.g., tamper-resistant cryptographic modules) and
1675    appropriate management procedures (e.g., separation of duties) to
1676    avoid such an incident.
1682 Farrell & Housley           Standards Track                    [Page 30]
1684 RFC 3281           An Internet Attribute Certificate          April 2002
1687    Loss of an AC issuer's private signing key may also be problematic.
1688    The AC issuer would not be able to produce revocation status or
1689    perform AC renewal.  AC issuers are advised to maintain secure backup
1690    for signing keys.  The security of the key backup procedures is a
1691    critical factor in avoiding key compromise.
1693    The availability and freshness of revocation status will affect the
1694    degree of assurance that should be placed in a long-lived AC.  While
1695    long-lived ACs expire naturally, events may occur during its natural
1696    lifetime which negate the binding between the AC holder and the
1697    attributes.  If revocation status is untimely or unavailable, the
1698    assurance associated with the binding is clearly reduced.
1700    The binding between an AC holder and attributes cannot be stronger
1701    than the cryptographic module implementation and algorithms used to
1702    generate the signature.  Short key lengths or weak hash algorithms
1703    will limit the utility of an AC.  AC issuers are encouraged to note
1704    advances in cryptology so they can employ strong cryptographic
1705    techniques.
1707    Inconsistent application of name comparison rules may result in
1708    acceptance of invalid targeted or proxied ACs, or rejection of valid
1709    ones.  The X.500 series of specifications defines rules for comparing
1710    distinguished names.  These rules require comparison of strings
1711    without regard to case, character set, multi-character white space
1712    substrings, or leading and trailing white space.  This specification
1713    and [PKIXPROF] relaxes these requirements, requiring support for
1714    binary comparison at a minimum.
1716    AC issuers MUST encode the distinguished name in the AC
1717    holder.entityName field identically to the distinguished name in the
1718    holder's PKC.  If different encodings are used, implementations of
1719    this specification may fail to recognize that the AC and PKC belong
1720    to the same entity.
1722    If an attribute certificate is tied to the holder's PKC using the
1723    baseCertificateID component of the Holder field and the PKI in use
1724    includes a rogue CA with the same issuer name specified in the
1725    baseCertificateID component, this rogue CA could issue a PKC to a
1726    malicious party, using the same issuer name and serial number as the
1727    proper holder's PKC.  Then the malicious party could use this PKC in
1728    conjunction with the AC.  This scenario SHOULD be avoided by properly
1729    managing and configuring the PKI so that there cannot be two CAs with
1730    the same name.  Another alternative is to tie ACs to PKCs using the
1731    publicKeyCert type in the ObjectDigestInfo field.  Failing this, AC
1732    verifiers have to establish (using other means) that the potential
1733    collisions cannot actually occur, for example, the CPSs of the CAs
1734    involved may make it clear that no such name collisions can occur.
1738 Farrell & Housley           Standards Track                    [Page 31]
1740 RFC 3281           An Internet Attribute Certificate          April 2002
1743    Implementers MUST ensure that following validation of an AC, only
1744    attributes that the issuer is trusted to issue are used in
1745    authorization decisions.  Other attributes, which MAY be present MUST
1746    be ignored.  Given that the AA controls PKC extension is optional to
1747    implement, AC verifiers MUST be provided with this information by
1748    other means.  Configuration information is a likely alternative
1749    means.  This becomes very important if an AC verifier trusts more
1750    than one AC issuer.
1752    There is often a requirement to map between the authentication
1753    supplied by a particular security protocol (e.g. TLS, S/MIME) and the
1754    AC holder's identity.  If the authentication uses PKCs, then this
1755    mapping is straightforward.  However, it is envisaged that ACs will
1756    also be used in environments where the holder may be authenticated
1757    using other means.  Implementers SHOULD be very careful in mapping
1758    the authenticated identity to the AC holder.
1760 9. IANA Considerations
1762    Attributes and attribute certificate extensions are identified by
1763    object identifiers (OIDs).  Many of the OIDs used in this document
1764    are copied from X.509 [X.509-2000].  Other OIDs were assigned from an
1765    arc delegated by the IANA.  No further action by the IANA is
1766    necessary for this document or any anticipated updates.
1768 10. References
1770    [CMC]        Myers, M., Liu, X., Schaad, J. and J. Weinstein,
1771                 "Certificate Management Messages over CMS", RFC 2797,
1772                 April 2000.
1774    [CMP]        Adams, C. and S. Farrell, "Internet X.509 Public Key
1775                 Infrastructure - Certificate Management Protocols", RFC
1776                 2510, March 1999.
1778    [CMS]        Housley, R., "Cryptographic Message Syntax", RFC 2630,
1779                 June 1999.
1781    [ESS]        Hoffman, P., "Enhanced Security Services for S/MIME",
1782                 RFC 2634, June 1999.
1784    [KRB]        Kohl, J. and C. Neuman, "The Kerberos Network
1785                 Authentication Service (V5)", RFC 1510, September 1993.
1787    [LDAP]       Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
1788                 Access Protocol (v3)", RFC 2251, December 1997.
1794 Farrell & Housley           Standards Track                    [Page 32]
1796 RFC 3281           An Internet Attribute Certificate          April 2002
1799    [OCSP]       Myers, M., Ankney, R., Malpani, A., Galperin, S. and C.
1800                 Adams, "X.509 Internet Public Key Infrastructure -
1801                 Online Certificate Status Protocol - OCSP", RFC 2560,
1802                 June 1999.
1804    [PKIXALGS]   Bassham, L., Polk, W. and R. Housley, "Algorithms and
1805                 Identifiers for the Internet X.509 Public Key
1806                 Infrastructure Certificate and Certificate Revocation
1807                 Lists CRL Profile", RFC 3279, April 2002.
1809    [PKIXPROF]   Housley, R., Polk, T, Ford, W. and Solo, D., "Internet
1810                 X.509 Public Key Infrastructure Certificate and
1811                 Certificate Revocation List (CRL) Profile", RFC 3280,
1812                 April 2002.
1814    [RFC2026]    Bradner, S., "The Internet Standards Process -- Revision
1815                 3", BCP 9, RFC 2026, October 1996.
1817    [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
1818                 Requirement Levels", BCP 14, RFC 2119, March 1997.
1820    [URL]        Berners-Lee, T., Masinter L. and M. McCahill, "Uniform
1821                 Resource Locators (URL)", RFC 1738, December 1994.
1823    [X.208-1988] CCITT Recommendation X.208: Specification of Abstract
1824                 Syntax Notation One (ASN.1). 1988.
1826    [X.209-88]   CCITT Recommendation X.209: Specification of Basic
1827                 Encoding Rules for Abstract Syntax Notation One (ASN.1).
1828                 1988.
1830    [X.501-88]   CCITT Recommendation X.501: The Directory - Models.
1831                 1988.
1833    [X.501-1993] ITU-T Recommendation X.501 : Information Technology -
1834                 Open Systems Interconnection - The Directory: Models,
1835                 1993.
1837    [X.509-1988] CCITT Recommendation X.509: The Directory -
1838                 Authentication Framework.  1988.
1840    [X.509-1997] ITU-T Recommendation X.509: The Directory -
1841                 Authentication Framework.  1997.
1843    [X.509-2000] ITU-T Recommendation X.509: The Directory - Public-Key
1844                 and Attribute Certificate Frameworks.  2000
1850 Farrell & Housley           Standards Track                    [Page 33]
1852 RFC 3281           An Internet Attribute Certificate          April 2002
1855 Appendix A: Object Identifiers
1857    This (normative) appendix lists the new object identifiers which are
1858    defined in this specification.  Some of these are required only for
1859    support of optional features and are not required for conformance to
1860    this profile.  This specification mandates support for OIDs which
1861    have arc elements with values that are less than 2^32, (i.e. they
1862    MUST be between 0 and 4,294,967,295 inclusive) and SHOULD be less
1863    than 2^31 (i.e. less than or equal to 2,147,483,647).  This allows
1864    each arc element to be represented within a single 32 bit word.
1865    Implementations MUST also support OIDs where the length of the dotted
1866    decimal (see [LDAP], section 4.1.2) string representation can be up
1867    to 100 bytes (inclusive).  Implementations MUST be able to handle
1868    OIDs with up to 20 elements (inclusive).  AA's SHOULD NOT issue ACs
1869    which contain OIDs that breach these requirements.
1871    The following OIDs are imported from [PKIXPROF]:
1873       id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
1874                 dod(6) internet(1) security(5) mechanisms(5) pkix(7) }
1875       id-mod  OBJECT IDENTIFIER ::= { id-pkix 0 }
1876       id-pe   OBJECT IDENTIFIER ::= { id-pkix 1 }
1877       id-ad   OBJECT IDENTIFIER ::= { id-pkix 48 }
1878       id-at   OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }
1879       id-ce   OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 29 }
1881    The following new ASN.1 module OID is defined:
1883       id-mod-attribute-cert        OBJECT IDENTIFIER ::= { id-mod 12 }
1885    The following AC extension OIDs are defined:
1887       id-pe-ac-auditIdentity       OBJECT IDENTIFIER ::= { id-pe 4 }
1888       id-pe-ac-proxying            OBJECT IDENTIFIER ::= { id-pe 10 }
1889       id-ce-targetInformation      OBJECT IDENTIFIER ::= { id-ce 55 }
1891    The following PKC extension OIDs are defined:
1893       id-pe-aaControls             OBJECT IDENTIFIER ::= { id-pe 6 }
1906 Farrell & Housley           Standards Track                    [Page 34]
1908 RFC 3281           An Internet Attribute Certificate          April 2002
1911    The following attribute OIDs are defined:
1913       id-aca                       OBJECT IDENTIFIER ::= { id-pkix 10 }
1914       id-aca-authenticationInfo    OBJECT IDENTIFIER ::= { id-aca 1 }
1915       id-aca-accessIdentity        OBJECT IDENTIFIER ::= { id-aca 2 }
1916       id-aca-chargingIdentity      OBJECT IDENTIFIER ::= { id-aca 3 }
1917       id-aca-group                 OBJECT IDENTIFIER ::= { id-aca 4 }
1918       id-aca-encAttrs              OBJECT IDENTIFIER ::= { id-aca 6 }
1919       id-at-role                   OBJECT IDENTIFIER ::= { id-at 72 }
1920       id-at-clearance              OBJECT IDENTIFIER ::=
1921                   { joint-iso-ccitt(2) ds(5) module(1)
1922                     selected-attribute-types(5) clearance (55) }
1924 Appendix B: ASN.1 Module
1926    PKIXAttributeCertificate {iso(1) identified-organization(3) dod(6)
1927                 internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
1928                 id-mod-attribute-cert(12)}
1930       DEFINITIONS IMPLICIT TAGS ::=
1932       BEGIN
1934       -- EXPORTS ALL --
1936       IMPORTS
1938             -- IMPORTed module OIDs MAY change if [PKIXPROF] changes
1939             -- PKIX Certificate Extensions
1940                Attribute, AlgorithmIdentifier, CertificateSerialNumber,
1941                Extensions, UniqueIdentifier,
1942                id-pkix, id-pe, id-kp, id-ad, id-at
1943                FROM PKIX1Explicit88 {iso(1) identified-organization(3)
1944                         dod(6) internet(1) security(5) mechanisms(5)
1945                         pkix(7) id-mod(0) id-pkix1-explicit-88(1)}
1947                GeneralName, GeneralNames, id-ce
1948                FROM PKIX1Implicit88 {iso(1) identified-organization(3)
1949                         dod(6) internet(1) security(5) mechanisms(5)
1950                         pkix(7) id-mod(0) id-pkix1-implicit-88(2)} ;
1952       id-pe-ac-auditIdentity       OBJECT IDENTIFIER ::= { id-pe 4 }
1953       id-pe-aaControls             OBJECT IDENTIFIER ::= { id-pe 6 }
1954       id-pe-ac-proxying            OBJECT IDENTIFIER ::= { id-pe 10 }
1955       id-ce-targetInformation      OBJECT IDENTIFIER ::= { id-ce 55 }
1957       id-aca                       OBJECT IDENTIFIER ::= { id-pkix 10 }
1962 Farrell & Housley           Standards Track                    [Page 35]
1964 RFC 3281           An Internet Attribute Certificate          April 2002
1967       id-aca-authenticationInfo    OBJECT IDENTIFIER ::= { id-aca 1 }
1968       id-aca-accessIdentity        OBJECT IDENTIFIER ::= { id-aca 2 }
1969       id-aca-chargingIdentity      OBJECT IDENTIFIER ::= { id-aca 3 }
1970       id-aca-group                 OBJECT IDENTIFIER ::= { id-aca 4 }
1971       -- { id-aca 5 } is reserved
1972       id-aca-encAttrs              OBJECT IDENTIFIER ::= { id-aca 6 }
1974       id-at-role                   OBJECT IDENTIFIER ::= { id-at 72}
1975       id-at-clearance              OBJECT IDENTIFIER ::=
1976                   { joint-iso-ccitt(2) ds(5) module(1)
1977                     selected-attribute-types(5) clearance (55) }
1979              -- Uncomment this if using a 1988 level ASN.1 compiler
1980              -- UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
1982              AttributeCertificate ::= SEQUENCE {
1983                    acinfo               AttributeCertificateInfo,
1984                    signatureAlgorithm   AlgorithmIdentifier,
1985                    signatureValue       BIT STRING
1986              }
1988              AttributeCertificateInfo ::= SEQUENCE {
1989                 version        AttCertVersion  -- version is v2,
1990                 holder         Holder,
1991                 issuer         AttCertIssuer,
1992                 signature      AlgorithmIdentifier,
1993                 serialNumber   CertificateSerialNumber,
1994                 attrCertValidityPeriod   AttCertValidityPeriod,
1995                 attributes     SEQUENCE OF Attribute,
1996                 issuerUniqueID UniqueIdentifier OPTIONAL,
1997                 extensions     Extensions     OPTIONAL
1998              }
2000              AttCertVersion ::= INTEGER { v2(1) }
2002              Holder ::= SEQUENCE {
2003                    baseCertificateID   [0] IssuerSerial OPTIONAL,
2004                              -- the issuer and serial number of
2005                              -- the holder's Public Key Certificate
2006                    entityName          [1] GeneralNames OPTIONAL,
2007                              -- the name of the claimant or role
2008                    objectDigestInfo    [2] ObjectDigestInfo OPTIONAL
2009                              -- used to directly authenticate the
2010                              -- holder, for example, an executable
2011              }
2018 Farrell & Housley           Standards Track                    [Page 36]
2020 RFC 3281           An Internet Attribute Certificate          April 2002
2023              ObjectDigestInfo    ::= SEQUENCE {
2024                    digestedObjectType  ENUMERATED {
2025                         publicKey            (0),
2026                         publicKeyCert        (1),
2027                         otherObjectTypes     (2) },
2028                                 -- otherObjectTypes MUST NOT
2029                                 -- MUST NOT be used in this profile
2030                    otherObjectTypeID   OBJECT IDENTIFIER  OPTIONAL,
2031                    digestAlgorithm     AlgorithmIdentifier,
2032                    objectDigest        BIT STRING
2033              }
2035              AttCertIssuer ::= CHOICE {
2036                    v1Form   GeneralNames,  -- MUST NOT be used in this
2037                                            -- profile
2038                    v2Form   [0] V2Form     -- v2 only
2039              }
2041              V2Form ::= SEQUENCE {
2042                    issuerName            GeneralNames  OPTIONAL,
2043                    baseCertificateID     [0] IssuerSerial  OPTIONAL,
2044                    objectDigestInfo      [1] ObjectDigestInfo  OPTIONAL
2045                       -- issuerName MUST be present in this profile
2046                       -- baseCertificateID and objectDigestInfo MUST
2047                       -- NOT be present in this profile
2048              }
2050              IssuerSerial  ::=  SEQUENCE {
2051                    issuer         GeneralNames,
2052                    serial         CertificateSerialNumber,
2053                    issuerUID      UniqueIdentifier OPTIONAL
2054              }
2056              AttCertValidityPeriod  ::= SEQUENCE {
2057                    notBeforeTime  GeneralizedTime,
2058                    notAfterTime   GeneralizedTime
2059              }
2061              Targets ::= SEQUENCE OF Target
2063              Target  ::= CHOICE {
2064                    targetName     [0] GeneralName,
2065                    targetGroup    [1] GeneralName,
2066                    targetCert     [2] TargetCert
2067              }
2074 Farrell & Housley           Standards Track                    [Page 37]
2076 RFC 3281           An Internet Attribute Certificate          April 2002
2079              TargetCert  ::= SEQUENCE {
2080                    targetCertificate  IssuerSerial,
2081                    targetName         GeneralName OPTIONAL,
2082                    certDigestInfo     ObjectDigestInfo OPTIONAL
2083              }
2085              IetfAttrSyntax ::= SEQUENCE {
2086                   policyAuthority[0] GeneralNames    OPTIONAL,
2087                   values         SEQUENCE OF CHOICE {
2088                                  octets    OCTET STRING,
2089                                  oid       OBJECT IDENTIFIER,
2090                                  string    UTF8String
2091                  }
2092              }
2094              SvceAuthInfo ::=    SEQUENCE {
2095                    service       GeneralName,
2096                    ident         GeneralName,
2097                    authInfo      OCTET STRING OPTIONAL
2098              }
2100              RoleSyntax ::= SEQUENCE {
2101                    roleAuthority  [0] GeneralNames OPTIONAL,
2102                    roleName       [1] GeneralName
2103              }
2105              Clearance  ::=  SEQUENCE {
2106                    policyId       [0] OBJECT IDENTIFIER,
2107                    classList      [1] ClassList DEFAULT {unclassified},
2108                    securityCategories
2109                                   [2] SET OF SecurityCategory  OPTIONAL
2110              }
2112              ClassList  ::=  BIT STRING {
2113                    unmarked       (0),
2114                    unclassified   (1),
2115                    restricted     (2),
2116                    confidential   (3),
2117                    secret         (4),
2118                    topSecret      (5)
2119              }
2121              SecurityCategory ::= SEQUENCE {
2122                    type      [0]  IMPLICIT OBJECT IDENTIFIER,
2123                    value     [1]  ANY DEFINED BY type
2124              }
2130 Farrell & Housley           Standards Track                    [Page 38]
2132 RFC 3281           An Internet Attribute Certificate          April 2002
2135              AAControls ::= SEQUENCE {
2136                    pathLenConstraint INTEGER (0..MAX) OPTIONAL,
2137                    permittedAttrs    [0] AttrSpec OPTIONAL,
2138                    excludedAttrs     [1] AttrSpec OPTIONAL,
2139                    permitUnSpecified BOOLEAN DEFAULT TRUE
2140              }
2142              AttrSpec::= SEQUENCE OF OBJECT IDENTIFIER
2144              ACClearAttrs ::= SEQUENCE {
2145                    acIssuer          GeneralName,
2146                    acSerial          INTEGER,
2147                    attrs             SEQUENCE OF Attribute
2148              }
2150              ProxyInfo ::= SEQUENCE OF Targets
2152       END
2154 Author's Addresses
2156    Stephen Farrell
2157    Baltimore Technologies
2158    39/41 Parkgate Street
2159    Dublin 8
2160    IRELAND
2162    EMail: stephen.farrell@baltimore.ie
2164    Russell Housley
2165    RSA Laboratories
2166    918 Spring Knoll Drive
2167    Herndon, VA 20170
2168    USA
2170    EMail: rhousley@rsasecurity.com
2172 Acknowledgements
2174    Russ Housley thanks the management at SPYRUS, who supported the
2175    development of this specification while he was employed at SPYRUS.
2176    Russ Housley also thanks the management at RSA Laboratories, who
2177    supported the completion of the specification after a job change.
2186 Farrell & Housley           Standards Track                    [Page 39]
2188 RFC 3281           An Internet Attribute Certificate          April 2002
2191 Full Copyright Statement
2193    Copyright (C) The Internet Society (2002).  All Rights Reserved.
2195    This document and translations of it may be copied and furnished to
2196    others, and derivative works that comment on or otherwise explain it
2197    or assist in its implementation may be prepared, copied, published
2198    and distributed, in whole or in part, without restriction of any
2199    kind, provided that the above copyright notice and this paragraph are
2200    included on all such copies and derivative works.  However, this
2201    document itself may not be modified in any way, such as by removing
2202    the copyright notice or references to the Internet Society or other
2203    Internet organizations, except as needed for the purpose of
2204    developing Internet standards in which case the procedures for
2205    copyrights defined in the Internet Standards process must be
2206    followed, or as required to translate it into languages other than
2207    English.
2209    The limited permissions granted above are perpetual and will not be
2210    revoked by the Internet Society or its successors or assigns.
2212    This document and the information contained herein is provided on an
2213    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
2214    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
2215    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
2216    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
2217    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
2219 Acknowledgement
2221    Funding for the RFC Editor function is currently provided by the
2222    Internet Society.
2242 Farrell & Housley           Standards Track                    [Page 40]