rfc3281.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,558 行 · 第 1/5 页
TXT
1,558 行
To be valid an AC MUST satisfy all of the following:
1. Where the holder uses a PKC to authenticate to the AC verifier,
the AC holder's PKC MUST be found, and the entire certification
path of that PKC MUST be verified in accordance with [PKIXPROF].
As noted in the security considerations section, if some other
authentication scheme is used, AC verifiers need to be very
careful mapping the identities (authenticated identity, holder
field) involved.
2. The AC signature must be cryptographically correct, and the AC
issuer's entire PKC certification path MUST be verified in
accordance with [PKIXPROF].
3. The AC issuer's PKC MUST also conform to the profile specified in
section 4.5 above.
4. The AC issuer MUST be directly trusted as an AC issuer (by
configuration or otherwise).
5. The time for which the AC is being evaluated MUST be within the AC
validity. If the evaluation time is equal to either notBeforeTime
or notAfterTime, then the AC is timely and this check succeeds.
Note that in some applications, the evaluation time MAY not be the
same as the current time.
6. The AC targeting check MUST pass as specified in section 4.3.2.
7. If the AC contains an unsupported critical extension, the AC MUST
be rejected.
Support for an extension in this context means:
1. The AC verifier MUST be able to parse the extension value.
2. Where the extension value SHOULD cause the AC to be rejected, the
AC verifier MUST reject the AC.
Farrell & Housley Standards Track [Page 23]
RFC 3281 An Internet Attribute Certificate April 2002
Additional Checks:
1. The AC MAY be rejected on the basis of further AC verifier
configuration. For example, an AC verifier may be configured to
reject ACs which contain or lack certain attributes.
2. If the AC verifier provides an interface that allows applications
to query the contents of the AC, then the AC verifier MAY filter
the attributes from the AC on the basis of configured information.
For example, an AC verifier might be configured not to return
certain attributes to certain servers.
6. Revocation
In many environments, the validity period of an AC is less than the
time required to issue and distribute revocation information.
Therefore, short-lived ACs typically do not require revocation
support. However, long-lived ACs and environments where ACs enable
high value transactions MAY require revocation support.
Two revocation schemes are defined, and the AC issuer should elect
the one that is best suited to the environment in which the AC will
be employed.
"Never revoke" scheme:
ACs may be marked so that the relying party understands that no
revocation status information will be made available. The
noRevAvail extension is defined in section 4.3.6, and the
noRevAvail extension MUST be present in the AC to indicate use of
this scheme.
Where no noRevAvail is present, the AC issuer is implicitly
stating that revocation status checks are supported, and some
revocation method MUST be provided to allow AC verifiers to
establish the revocation status of the AC.
"Pointer in AC" scheme:
ACs may "point" to sources of revocation status information, using
either an authorityInfoAccess extension or a crlDistributionPoints
extension within the AC.
For AC users, the "never revoke" scheme MUST be supported, and the
"pointer in AC" scheme SHOULD be supported. If only the "never
revoke" scheme is supported, then all ACs that do not contain a
noRevAvail extension, MUST be rejected.
Farrell & Housley Standards Track [Page 24]
RFC 3281 An Internet Attribute Certificate April 2002
For AC issuers, the "never revoke" scheme MUST be supported. If all
ACs that will ever be issued by that AC issuer, contains a noRevAvail
extension, the "pointer in AC" scheme need not be supported. If any
AC can be issued that does not contain the noRevAvail extension, the
"pointer in AC" scheme MUST be supported.
An AC MUST NOT contain both a noRevAvail and a "pointer in AC".
An AC verifier MAY use any source for AC revocation status
information.
7. Optional Features
This section specifies features that MAY be implemented. Conformance
to this profile does NOT require support for these features; however,
if these features are offered, they MUST be offered as described
below.
7.1 Attribute Encryption
Where an AC will be carried in clear within an application protocol
or where an AC contains some sensitive information like a legacy
application username/password, then encryption of AC attributes MAY
be needed.
When a set of attributes are to be encrypted within an AC, the
Cryptographic Message Syntax, EnvelopedData structure [CMS] is used
to carry the ciphertext and associated per-recipient keying
information.
This type of attribute encryption is targeted. Before the AC is
signed, the attributes are encrypted for a set of predetermined
recipients.
The AC then contains the ciphertext inside its signed data. The
EnvelopedData (id-envelopedData) ContentType is used, and the content
field will contain the EnvelopedData type.
The ciphertext is included in the AC as the value of an encAttrs
attribute. Only one encAttrs attribute can be present in an AC;
however, the encAttrs attribute MAY be multi-valued, and each of its
values will contain an independent EnvelopedData.
Each value can contain a set of attributes (each possibly a multi-
valued attribute) encrypted for a set of predetermined recipients.
Farrell & Housley Standards Track [Page 25]
RFC 3281 An Internet Attribute Certificate April 2002
The cleartext that is encrypted has the type:
ACClearAttrs ::= SEQUENCE {
acIssuer GeneralName,
acSerial INTEGER,
attrs SEQUENCE OF Attribute
}
The DER encoding of the ACClearAttrs structure is used as the
encryptedContent field of the EnvelopedData. The DER encoding MUST
be embedded in an OCTET STRING.
The acIssuer and acSerial fields are present to prevent ciphertext
stealing. When an AC verifier has successfully decrypted an
encrypted attribute, it MUST then check that the AC issuer and
serialNumber fields contain the same values. This prevents a
malicious AC issuer from copying ciphertext from another AC (without
knowing its corresponding plaintext).
The procedure for an AC issuer when encrypting attributes is
illustrated by the following (any other procedure that gives the same
result MAY be used):
1. Identify the sets of attributes that are to be encrypted for
each set of recipients.
2. For each attribute set which is to be encrypted:
2.1. Create an EnvelopedData structure for the data for this
set of recipients.
2.2. Encode the ContentInfo containing the EnvelopedData as a
value of the encAttrs attribute.
2.3. Ensure the cleartext attributes are not present in the
to-be-signed AC.
3. Add the encAttrs (with its multiple values) to the AC.
Note that there may be more than one attribute of the same type (the
same OBJECT IDENTIFIER) after decryption. That is, an AC MAY contain
the same attribute type both in clear and in encrypted form (and
indeed several times if the same recipient is associated with more
than one EnvelopedData). One approach implementers may choose, would
be to merge attribute values following decryption in order to re-
establish the "once only" constraint.
name id-aca-encAttrs
OID { id-aca 6}
Syntax ContentInfo
values Multiple Allowed
Farrell & Housley Standards Track [Page 26]
RFC 3281 An Internet Attribute Certificate April 2002
If an AC contains attributes, apparently encrypted for the AC
verifier, the decryption process MUST not fail. If decryption does
fail, the AC MUST be rejected.
7.2 Proxying
When a server acts as a client for another server on behalf of the AC
holder, the server MAY need to proxy an AC. Such proxying MAY have
to be done under the AC issuer's control, so that not every AC is
proxiable and so that a given proxiable AC can be proxied in a
targeted fashion. Support for chains of proxies (with more than one
intermediate server) MAY also be required. Note that this does not
involve a chain of ACs.
In order to meet this requirement we define another extension,
ProxyInfo, similar to the targeting extension.
When this extension is present, the AC verifier must check that the
entity from which the AC was received was allowed to send it and that
the AC is allowed to be used by this verifier.
The proxying information consists of a set of proxy information, each
of which is a set of targeting information. If the verifier and the
sender of the AC are both named in the same proxy set, the AC can
then be accepted (the exact rule is given below).
The effect is that the AC holder can send the AC to any valid target
which can then only proxy to targets which are in one of the same
proxy sets as itself.
The following data structure is used to represent the
targeting/proxying information.
ProxyInfo ::= SEQUENCE OF Targets
As in the case of targeting, the targetCert CHOICE MUST NOT be used.
A proxy check succeeds if either one of the conditions below is met:
1. The identity of the sender, as established by the underlying
authentication service, matches the holder field of the AC, and
the current server "matches" any one of the proxy sets. Recall
that "matches" is as defined section 4.3.2.
Farrell & Housley Standards Track [Page 27]
RFC 3281 An Internet Attribute Certificate April 2002
2. The identity of the sender, as established by the underlying
authentication service, "matches" one of the proxy sets (call it
set "A"), and the current server is one of the targetName fields
in the set "A", or the current server is a member of one of the
targetGroup fields in set "A".
When an AC is proxied more than once, a number of targets will be on
the path from the original client, which is normally, but not always,
the AC holder. In such cases, prevention of AC "stealing" requires
that the AC verifier MUST check that all targets on the path are
members of the same proxy set. It is the responsibility of the AC-
using protocol to ensure that a trustworthy list of targets on the
path is available to the AC verifier.
name id-pe-ac-proxying
OID { id-pe 10 }
syntax ProxyInfo
criticality MUST be TRUE
7.3 Use of ObjectDigestInfo
In some environments, it may be required that the AC is not linked
either to an identity (via entityName) or to a PKC (via
baseCertificateID). The objectDigestInfo CHOICE in the holder field
allows support for this requirement.
If the holder is identified with the objectDigestInfo field, then the
AC version field MUST contain v2 (the integer 1).
The idea is to link the AC to an object by placing a hash of that
object into the holder field of the AC. For example, this allows
production of ACs that are linked to public keys rather than names.
It also allows production of ACs which contain privileges associated
with an executable object such as a Java class. However, this
profile only specifies how to use a hash over a public key or PKC.
That is, conformant ACs MUST NOT use the otherObjectTypes value for
the digestedObjectType.
To link an AC to a public key, the hash must be calculated over the
representation of that public
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?