Establishing trust in a certificate is a vital part of processing. A major component of establishing trust is determining what the set of trust anchors are for the process. A new self-signed certificate appearing on the client cannot be a trigger to modify the set of trust anchors, because a well-defined trust-establishment process is required. One common way for a new trust anchor to be added to (or removed from) a device is by doing a new firmware upgrade.
In constrained systems, there is a trade-off between the order of checking the signature and checking the certificate for validity. Validating certificates can require that network resources be accessed in order to get revocation information or retrieve certificates during path building. The resulting network access can consume power and network bandwidth. On the other hand, if the certificates are validated after the signature is validated, an oracle can potentially be built based on detecting the network resources, which is only done if the signature validation passes. In any event, both the signature validation and the certificate validation
MUST be completed successfully before acting on any requests.
Unless it is known that the Certificate Authority (CA) required proof of possession of the subject's private key to issue an end-entity certificate, the end-entity certificate
MUST be integrity protected by COSE. Without proof of possession, an attacker can trick the CA into issuing an identity-misbinding certificate with someone else's "borrowed" public key but with a different subject. An on-path attacker can then perform an identity-misbinding attack by replacing the real end-entity certificate in COSE with such an identity-misbinding certificate.
End-entity X.509 certificates contain identities that a passive on-path attacker eavesdropping on the conversation can use to identify and track the subject. COSE does not provide identity protection by itself, and the 'x5t' and 'x5u' header parameters are just alternative permanent identifiers and can also be used to track the subject. To provide identity protection, COSE can be sent inside another security protocol providing confidentiality.
Before using the key in a certificate, the key
MUST be checked against the algorithm to be used, and any algorithm-specific checks need to be made. These checks can include validating that points are on curves for elliptical curve algorithms and that the sizes of RSA keys are within an acceptable range. The use of unvalidated keys can lead to either loss of security or excessive consumption of resources (for example, using a 200K RSA key).
When processing the 'x5u' header parameter, the security considerations of [
RFC 3986], and specifically those defined in
Section 7.1 of
RFC 3986, also apply.
Regardless of the source, certification path validation is an important part of establishing trust in a certificate.
Section 6 of
RFC 5280 provides guidance for the path validation. The security considerations of [
RFC 5280] are also important for the correct usage of this document.
Protecting the integrity of the 'x5bag', 'x5chain', and 'x5t' contents by placing them in the protected header bucket can help mitigate some risks of a misbehaving CA (cf.
Section 5.1 of
RFC 2634).
The security of the algorithm used for 'x5t' does not affect the security of the system, as this header parameter selects which certificate that is already present on the system should be used, but it does not provide any trust.