Alternative Challenge Password Attributes for Enrollment over Secure Transport
Extracted elements (17)
Conveying authentication values as CSR attributes may be preferable to HTTP or TLS-level authentication in environments where the certificate request processing component is separated from the HTTP/TLS termination point (e.g., when a web application firewall is present), motivating inclusion of OTP values in the CSR itself.
The PKCS #9 challengePassword attribute has been overloaded by multiple protocol uses (certificate revocation, OTP authentication, EST identity linking), with the correct interpretation depending on context rather than OID definition. This ambiguity became a limitation when EST needed multiple simultaneous uses of the attribute, motivating the definition of three distinct, unambiguous replacement attributes.
EST clients that include an unsolicited estIdentityLinking attribute MAY also include the legacy challengePassword attribute to ensure support for legacy servers that do not understand the new OIDs.
An EST server MAY send both the estIdentityLinking attribute and the challengePassword attribute in a CSR Attributes Response to ensure support for legacy clients.
Attribute processing systems MUST be able to recognize and process the PrintableString and UTF8String string types in DirectoryString values for the alternative challenge password attributes.
EST servers MUST evaluate each challenge attribute independently, and all challenge attributes included by an EST client MUST be successfully processed by the EST server for a request to be considered valid.
If a client sees an estIdentityLinking attribute in a CSR Attributes Response, it SHOULD prefer that attribute and not include a challengePassword attribute in the resulting CSR, to avoid legacy ambiguity.
The EST client MUST include every indicated attribute for which it has values in the subsequent CSR.
The EST server MAY ignore challenge attributes according to local policy (e.g., ignoring estIdentityLinking when the EST client is an authenticated Registration Authority) and MAY refuse enrollment requests not encoded per CA policy.
The EST server MUST indicate the alternative challenge attributes, as the particular use case requires, in every CSR Attributes Response.
The estIdentityLinking attribute (id-aa-estIdentityLinking, OID id-smime 58) is a DirectoryString with maximum length 255, carrying the EST identity linking semantics from RFC 7030 Section 3.5 without confusion with legacy challengePassword uses. It is a SINGLE VALUE attribute with caseExactMatch equality matching.
The otpChallenge attribute (id-aa-otpChallenge, OID id-smime 56) is a DirectoryString with maximum length 255, used to convey a one-time password value as part of a CSR. It is a SINGLE VALUE attribute with caseExactMatch equality matching.
The revocationChallenge attribute (id-aa-revocationChallenge, OID id-smime 57) is a DirectoryString with maximum length 255, providing unambiguous representation of the original PKCS #9 challengePassword semantics for certificate revocation. It is a SINGLE VALUE attribute with caseExactMatch equality matching.
One new OID value (87, id-mod-EST-Alt-Challenge) was assigned in the 'SMI Security for PKIX Module Identifier' registry for the ASN.1 module defined in Appendix A of RFC 7894.
Three new OID values were assigned in the 'SMI Security for S/MIME Attributes (1.2.840.113549.1.9.16.2)' registry: value 56 for id-aa-otpChallenge, value 57 for id-aa-revocationChallenge, and value 58 for id-aa-estIdentityLinking, all referencing RFC 7894.
In addition to EST security considerations from RFC 7030, security considerations associated with the OTP generation and verification mechanism apply to the otpChallenge attribute. The security considerations from RFC 4226 (HOTP) or RFC 6238 (TOTP) and from RFC 2985 for the challenge attribute are relevant.
All three alternative challenge attributes are encoded as DirectoryString with a maximum length of 255 characters. Values SHOULD use PrintableString encoding when possible; UTF8String SHOULD be used when internationalization requires it. Implementations MUST support PrintableString and UTF8String; other string types are OPTIONAL.