Skip to content

SC-XX: Reorganize key quality checking and add ECDSA small private scalar check - #683

Draft
aarongable wants to merge 2 commits into
mainfrom
key-quality-checking
Draft

aarongable wants to merge 2 commits into
mainfrom
key-quality-checking

Conversation

@aarongable

Copy link
Copy Markdown
Contributor

Move most requirements around CAs rejecting certificate requests from Section 6.1.1.3 (Subscriber Key Pair Generation) to Section 6.1.6 (Public key parameters generation and quality checking). This ensures that these requirements (e.g. that the key not be vulnerable to Fermat factorization) apply equally to both Subscriber and CA keys.

In order to merge the contents of 6.1.1.3 with the existing contents of 6.1.6, reorganize and rephrase the requirements slightly. This introduces no new requirements, but hopefully makes the existing requirements easier to read and understand.

Finally, with an effective date of 2027-01-15, require that CAs check for ECDSA keys with private scalars less than 256. This is analogous to the existing recommendation that CAs check for RSA keys with factors less that 752, and would have prevented the recent compromise of 8 ECDSA Subordinate CA Certificate Private Keys whose private scalars all fit in one byte each.

Comment thread docs/BR.md Outdated
Comment thread docs/BR.md

With the exception of Short-lived Subscriber Certificates, the CA SHOULD revoke a certificate within 24 hours and MUST revoke a Certificate within 5 days and use the corresponding CRLReason (see [Section 7.2.2](#722-crl-and-crl-entry-extensions)) if one or more of the following occurs:

6. The Certificate no longer complies with the requirements of [Section 6.1.5](#615-key-sizes) and [Section 6.1.6](#616-public-key-parameters-generation-and-quality-checking) (CRLReason #4, superseded);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We must consider how the changes introduced in section 6.1.6 will not trigger the revocation requirement for certificates issued before the cut-off dates.

Comment thread docs/BR.md
RSA: The CA SHALL confirm that the value of the public exponent is an odd number equal to 3 or more. Additionally, the public exponent SHOULD be in the range between 2^16 + 1 and 2^256 - 1. The modulus SHOULD also have the following characteristics: an odd number, not the power of a prime, and have no factors smaller than 752. [Source: Section 5.3.3, NIST SP 800-89]
For RSA public keys, the CA MUST:

- Ensure that the public exponent is an odd number equal to 3 or more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Ensure that the public exponent is an odd number equal to 3 or more.
- Ensure that the public exponent is an odd number equal to 3 or more. Effective 2027-03-15, ensure that the public exponent is equal to 65537 (2^16 + 1) or more.

Happy for a shorter effective date if there are no concerns by others.

Comment thread docs/BR.md

1. The Subordinate CA requests revocation in writing;
2. The Subordinate CA notifies the Issuing CA that the original certificate request was not authorized and does not retroactively grant authorization;
3. The Issuing CA obtains evidence that the Subordinate CA's Private Key corresponding to the Public Key in the Certificate suffered a Key Compromise or no longer complies with the requirements of [Section 6.1.5](#615-key-sizes) and [Section 6.1.6](#616-public-key-parameters-generation-and-quality-checking);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here. We must consider how the changes introduced in section 6.1.6 will not trigger the revocation requirement for CA certificates issued before the cut-off dates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants