Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SMCXX: Backdating revocations #217

Closed
wants to merge 5 commits into from
Closed

Conversation

XolphinMartijn
Copy link
Member

No description provided.

@XolphinMartijn XolphinMartijn requested a review from a team as a code owner October 4, 2023 14:37
@XolphinMartijn XolphinMartijn linked an issue Oct 4, 2023 that may be closed by this pull request
@@ -2360,6 +2364,10 @@ The Repository MAY include CRL entries that have a `CRLreason` of certificateHol

If a `reasonCode` CRL entry extension is present, the `CRLReason` SHALL indicate the most appropriate reason for revocation of the Certificate, as defined by the CA within its CP/CPS.

### 7.2.3 CRL entry revocationDate field

The CA SHOULD update the revocation date in a CRL entry when it is determined that the Private Key of the Certificate was compromised prior to the revocation date that is indicated in the CRL entry for that Certificate. Backdating the revocationDate field is an exception to best practice described in RFC 5280 (Section 5.3.2); however, these Requirements specify the use of the revocationDate field to support S/MIME implementations that process the revocationDate field as the date when the Certificate is first considered to be compromised.
Copy link
Member

Choose a reason for hiding this comment

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

I think we need a bit of clarity on whether or not it's acceptable to backdate revocations for reasons other than Key Compromise. For example, if it is discovered that a Subscriber violated their obligations under the Subscriber Agreement several months ago, is it appropriate or allowed for the CA to set the revocationDate several months in the past?

Choose a reason for hiding this comment

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

I think we need a bit of clarity on whether or not it's acceptable to backdate revocations for reasons other than Key Compromise. For example, if it is discovered that a Subscriber violated their obligations under the Subscriber Agreement several months ago, is it appropriate or allowed for the CA to set the revocationDate several months in the past?

For example... It was discovered that the identity validation was not done properly, could it be appropriate to backdate to the same issuance time, so any digital signature is deemed invalid for that certificate?

BTW, could it be that certificate consumers aren't currently checking the revocation date when opening an email, but just that the certificate is revoked?

Copy link
Member Author

Choose a reason for hiding this comment

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

@CBonnell and @pfuentes69 both good points, I had not even considered that scenario, thank you.

Lets discuss tomorrow during the S/MIME call

Choose a reason for hiding this comment

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

In my opinion, alignment with RFC 5280 is better. This might get S/MIME UAs to process the CRL entry to give better information to the user. I would prefer to say:

### Invalidity Date CRL Entry Extension

The CA SHOULD provide the Invalidity Date CRL entry extension when it is determined that the Private Key associated with the Certificate was compromised prior to the revocation date that is indicated in the CRL entry for that Certificate. 

@dougbeattie
Copy link

I can understand backdating for Code signing where there is a timestamp in the signed object, but I'm not clear on the value of backdating an S/MIME certificate. What value does this have to relying parties and how would certificate consumers do something different here vs. revocation time set to the date when it's revoked (not back dated)? I probably missed the background for this request.

@pfuentes69
Copy link

I can understand backdating for Code signing where there is a timestamp in the signed object, but I'm not clear on the value of backdating an S/MIME certificate. What value does this have to relying parties and how would certificate consumers do something different here vs. revocation time set to the date when it's revoked (not back dated)? I probably missed the background for this request.

The value here is to be able to discriminate if the digital signature in a mail can be trusted "at the moment the mail was sent" vs "the time the mail is opened".
But as I said in my comment above, I'm afraid (I could be wrong!) certificate consumers don't check the date the mail was sent, but the date you open the mail, and this could deem backdating not practical, for any revocation reason.

@srdavidson
Copy link
Contributor

For background, there's been quite a bit of discussion about invalidityDate in the CSWG at https://lists.cabforum.org/pipermail/cscwg-public/2021-September/000525.html or https://lists.cabforum.org/pipermail/cscwg-public/2021-August/000515.html.

This is one of those items that needs involvement from both Certificate Issuers and Certificate Consumers to improve the situation.

@romanf
Copy link

romanf commented Oct 10, 2023

I'm not in favour of backdating. Imagine you get a signed email and the signature checkous (certificate valid). You buy something based on the - at that time correct - signature. Then, maybe days or weeks later. You check that signature again and it suddenly is invalid... I think that would destroy any confidence in such signatures.

@TaaviE
Copy link

TaaviE commented Oct 16, 2023

The value here is to be able to discriminate if the digital signature in a mail can be trusted "at the moment the mail was sent" vs "the time the mail is opened". But as I said in my comment above, I'm afraid (I could be wrong!) certificate consumers don't check the date the mail was sent, but the date you open the mail, and this could deem backdating not practical, for any revocation reason.

I'm not in favour of backdating. Imagine you get a signed email and the signature checkous (certificate valid). You buy something based on the - at that time correct - signature. Then, maybe days or weeks later. You check that signature again and it suddenly is invalid... I think that would destroy any confidence in such signatures.

This is honestly the moment where S/MIME is lacking, especially compared to eIDAS containers - it's not specified how a letter could be validity-stapled. Ideally we'd have S/MIME OCSP-stapling to address the common reasons for failing checks (the certificate just expired or was superseded), it doesn't address the "it should have never been valid" and it actually shouldn't.

Allowing backdating revocations will not change much in terms of (bad) user experience with current S/MIME implementations in MUAs. But I agree with @romanf that it shouldn't be done. It causes a misalignment between the expectations people have about (physical) signatures and how these checks would make S/MIME ones function. If a thing is physically signed, even if it shouldn't have been signed or the signature was forged, the signature is not going to magically turn to say "invalid" - what's there is there and must remain so for consistency. If not for that, for being able to say "it was valid when I acted on this information."

@russhousley
Copy link

At the CMS level, there is support for including an OCSP response with a message. See RFC 5940. I do not know of any MUAs that use this capability. The OCSP response will get stale sitting in a mail folder, so some more complicated processing is needed to tell the human user the difference between the revocation state at the time the message was sent and the revocation state at the time the message is viewed.

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.

Backdating revocations
9 participants