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

Limit CanSignHttpExchange certificate lifetimes #378

Closed
jyasskin opened this issue Jan 18, 2019 · 7 comments
Closed

Limit CanSignHttpExchange certificate lifetimes #378

jyasskin opened this issue Jan 18, 2019 · 7 comments

Comments

@jyasskin
Copy link
Member

In the blink-dev Intent-to-Ship thread, @AGWA suggests

It may also be a good idea to limit the lifetime of certificates used in SXG, to reduce the amount of time that an illegitimate certificate can be used, in case an attacker exploits a CA vulnerability to obtain future-dated good OCSP responses.

These requirements may well wind up in the BRs instead of this repository's specs, but this issue will track getting them where they need to go.

@jyasskin
Copy link
Member Author

We talked to @grittygrease from Cloudflare about shorter lifetimes. My (fallible) notes are:

@jyasskin
Copy link
Member Author

jyasskin commented Feb 1, 2019

@clintwilson asked in #383 that we have "some very rough consensus on max validity" before we codify a particular limit.

  • Given Cloudflare's points, it seems like 7-day validities definitely won't work with the current state of the ecosystem.
  • 14-day probably has similar problems.
  • Anything longer than that still needs stapled OCSP responses, so doesn't help us simplify the format or parsing.
  • @sleevi mentioned somewhere that a 30-day max-validity was about the longest that would help mitigate future-dated OCSP responses (for CAs that don't believe they're already forbidden by the BRs).
  • A 60- or 90-day maximum still has the following benefits:
    • Improves ecosystem agility by setting the upper-bound on how long it takes to roll out changes to certificate-related things.
    • Bounds validation risks: if a validation method (e.g. BR 3.2.2.4.1) or process (e.g. lack of a CAA record) isn't secure enough, then the lifetime is the upper-bound for the 'not secure' certificates, which could let us leave SXGs up while those certs expire.
    • Bounds the length of time an undetected compromised key can be used.
  • @shigeki for Yahoo! Japan is worried about the viability of even a 90-day limit for their processes and the certificate reseller they use.

The max-validity is not intended to handle CA compromise like DigiNotar as suggested in #383 (comment), since for that browsers would revoke the affected root.

So, let's see if we can find rough agreement on a max-validity that we expect to hold until at least January 2020. This could change early if a significant issue comes up or if Mozilla or Safari demand a particular max-validity in order to support the specification, but we won't expect to change it early.

I'd like to pick 90 days because LetsEncrypt has shown it can work for lots of server operators, and I don't know of a similar proof of concept for shorter validity periods.

I'm going to run a poll by posting 30-, 60-, and 90-day limits as Github comments. Use the 👍 reaction on an option if you're pretty sure it'll work for the ecosystem, and 👎 if you're pretty sure it won't, and feel free to write a longer answer as a comment. Thanks!

@jyasskin
Copy link
Member Author

jyasskin commented Feb 1, 2019

Bound the maximum Validity Period at 30 days.

@jyasskin
Copy link
Member Author

jyasskin commented Feb 1, 2019

Bound the maximum Validity Period at 60 days.

@jyasskin
Copy link
Member Author

jyasskin commented Feb 1, 2019

Bound the maximum Validity Period at 90 days.

@jyasskin
Copy link
Member Author

jyasskin commented Feb 8, 2019

I don't see any objections to 90 days, so I'll merge that as the limit, and will resist calls to change it again until next year.

@jyasskin
Copy link
Member Author

jyasskin commented Feb 8, 2019

Fixed by #383, although folks should feel free to re-open this question in 2020.

@jyasskin jyasskin closed this as completed Feb 8, 2019
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

No branches or pull requests

1 participant