On 16/09/2019 19:08, Andrew Ayer wrote:
> On Fri, 13 Sep 2019 08:22:21 +0000
> Rob Stradling via dev-security-policy
> <dev-security-policy@lists.mozilla.org> wrote:
> 
>> Thinking aloud...
>> Does anything need to be clarified in 6962-bis though?
> 
> Yes, it's long past time that we clarified what this means:
> 
> "This signature indicates the CA's intent to issue the certificate.  This
> intent is considered binding (i.e., misissuance of the precertificate is
> considered equivalent to misissuance of the corresponding certificate)."
> 
> The goal is that a precertificate signature creates an unrebuttable
> presumption that the CA has issued the corresponding certificate. If a
> CA issues a precertificate, outside observers will treat the CA as if
> it had issued the corresponding certificate - whether or not the CA
> really did - so the CA should behave accordingly.
> 
> It's worth explicitly mentioning the implications of this:
> 
> * The CA needs to operate revocation services for the corresponding
> certificate as if the certificate had been issued.
> 
> * If the corresponding certificate would be misissued, the CA will be
> treated as if it had really issued that certificate.
> 
> Are there any other implications that 6962-bis should call out
> explicitly?
> 
> Regards,
> Andrew
> 

How about the following (Mozilla) policy rules:

If a CA submits a preCertificate to CT, then it MUST ensure that one of 
the following is true no more than 96 hours after submitting the 
preCertificate and no more than 24 hours after signing the corresponding 
actual certificate:

 - The corresponding actual certificate has been signed and submitted to 
  CT (regardless if said submission was accepted), and all CA provided 
  revocation mechanisms and servers report that the actual certificate 
  is valid and not revoked.

 - The corresponding actual certificate has been signed, SHOULD have 
  been submitted to CT (regardless if said submission was accepted) and 
  was later revoked.  All CA provided revocation mechanisms and servers 
  MUST report that the actual certificate exists and SHOULD report that 
  it has been revoked at a time no earlier than 1 second before the 
  notBefore time in the preCertificate (other policy requirements or BRs 
  state that they MUST so report before a different deadline).

 - The corresponding actual certificate has not been signed and MUST not 
  be subsequently signed.  All CA provided revocation mechanisms and 
  servers must report that the certificate serial number was revoked at 
  least 60 seconds before the time specified as "notBefore" in the 
  preCertificate.

Rationale:
 - Requirements explicitly refer to revocation of the corresponding 
  actual certificate, not the (perhaps differently signed) 
  preCertificate.

 - 96 hours is the existing BR deadline for updating revocation servers.

 - 24 hours is reasonable time for rolling out the "certificate good" 
  status throughout a CA infrastructure, before taking actions such 
  as submitting the actual certificate to CT.  In practice, a CA will 
  need to do this faster if it wants to provide the actual certificate 
  to subscribers faster than this.

 - If a CA wishes to make an actually/possibly signed certificate never 
  valid, it can report it as revoked 1 or 0 seconds before the notBefore 
  time.  This is appropriate where a problem report indicates that the 
  certificate should never have been issued, or if signing the actual 
  certificate was initiated but the result was not successfully stored.

 - Revocation times of 2 to 59 seconds before notBefore are reserved for 
  use in future policies.

 - A CA system can be compliant while having only transaction-level 
  reliability.

 - This caters to fast online CAs that complete the entire process in a 
  few minutes or seconds.

 - This also caters to CAs that keep the private CA key offline and 
  require human confirmation of signing actions.  Such a CA may perform 
  human confirmation of PreCertificate signing on a Friday, only accept 
  problem report revocations during the weekend, then manually confirm 
  signing of actual certificate, CRL and canned OCSP responses on 
  Monday.  Root CAs with signing ceremonies would be a typical case.  
  Dedicated high security issuing SubCAs would be another case.

 - This also caters to the scenario where a usually fast online CA
  experiences a technical glitch that prevents completion of issuance,
  followed by a few days to detect the situation and revoke the non-
  issued certificates.

 - It also caters to the scenario of a CT log failing to issue the
  expected CT proofs, and the CA timing out the wait for that CT log
  after 24 to 72 hours.

 - It also caters to the scenario where a CT log fails to accept
  submission of the signed actual certificate.

 - Issuing a CT logged certificate but keeping it locked up in the CA
  building explicitly becomes a policy violation after just a few days,
  because it is then explicitly required to be published in CT and/or
  revoked.


Practicalities:
 - CA systems (in-house of standard) will need to implement error
  handling logic to handle the various scenarios that can trigger
  the "revoke without issuing" case and the "issued-but-retroactively-
  revoked" case.  Implementations need to be robustly tested in
  simulated environments with simulated failures and timeouts, thus
  final testing would probably take weeks or months just triggering
  the real timeouts, then requesting a bug fix.

 - If a CA revokes a PreCertificate serial with a revocation time
  indicating the never-issued case, it is a policy violation incident
  for that CA to have actually signed the certificate, even if the
  certificate never left the building.

 - If a CA revokes a serial with a revocation time indicating the
  issued-then-revoked case, it can be expected to have the actual
  certificate available in all but a few cases, and to submit that
  actual certificate to CT in all but a few of the remaining cases.

 - If a CA signs a certificate, but then immediately looses it (perhaps
  a disk or server failed when trying to save it), it would be one of
  the issued-then-revoked cases that cannot submit the signed actual
  certificate to CT.

 - In practice the never-signed revocation case can use a larger
  time delta (such as 2 hours) while remaining compliant.

 - CT log watching systems can distinguish the two revocation cases,
  and report them differently.

 - The required transactional integrity may or may not use a database
  engine as an implementation technique.  The important thing is to
  securely store the fact (and data) of passing certain crucial moments
  in the issuance process such that they are not lost if a consumable
  component (such as a COTS disk system or COTS server) fails.

 - A system failure during actual certificate signing needs to be
  detected and handled within the 24 hour deadline.  But such failures
  are typically detected within the hour, thus during any business hours
  signing ceremony.  Also quickly enough for other servers in a fast CA
  cluster to automatically do the needed revocations or alert a 24/7
  operator team.



Enjoy

Jakob
-- 
Jakob Bohm, CIO, Partner, WiseMo A/S.  https://www.wisemo.com
Transformervej 29, 2860 Søborg, Denmark.  Direct +45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded 
_______________________________________________
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy

Reply via email to