Stephen, Great work here. It's clear you've taken a lot of time and care to go through the documents with a fine-toothed comb. I have some answers/comments below:
> The CABF Guidelines establish a lot of requirements that are purely syntactic > and thus > could be checked by a log operator, before agreeing to issue an SCT. I want > to suggest > we consider that as a possible change to the current design. I think this idea has merit. In a separate thread, I asked Google to remove some of Symantec's roots from their log servers' trust store, because we have never and don't ever expect to issue EV certs from those roots (the current implementation of CT is required for EV only). I pointed out that by removing those roots, the log server could _prevent_ an unintended mis-isuance rather than just record it. Google didn't agree with me. https://groups.google.com/a/chromium.org/forum/#!topic/ct-policy/DHf74DdO2rs Also, although I like the idea of log servers rejecting syntactically-invalid certificates, that may create problems for CAs because the CABF requirements have changed over time and will likely change in the future. Any changes would have to be rolled out to log servers and browsers in time to prevent rejection of a valid certificate. A.1 Syntactic Verification of a Domain Validation Certificate (Is there a better reference for EV certificate policy OIDs?) I might suggest Chrome's source code itself: https://code.google.com/p/chromium/codesearch#chromium/src/net/cert/ev_root_ca_metadata.cc&sq=package:chromium 2. serialNumber: No requirements beyond those imposed by [RFC5280] are mandated by [CABF-Baseline]. ([CABF-Baseline] requires that a serial number contan at least 20 bits of entropy (see Section 9.6, but it not clear how this can be verified through syntactic examination of a certificate.) [CABF-Baseline] says it's a SHOULD, not a must, although I agree that it can't clearly be verified, except at the extreme where the serial number is less than 20 bits long. 6. subject: A certificate MAY contain a NULL Subject name If it contains a non-null Subject name: There's a period missing before "If". 2. A certificate issued to a CA MUST include the certificatePolcies extension. It may r MAY NOT be Typo: "r" -> "or" C. localityName, stateOrProvinceName (if applicable), and countryName attributes. This requirement is derived from section 9.3.1 of [CABF-Baseline]. (How does one know whether the stateOrProvinceName is applicable?) I think bullet point C is a copy and paste error, and should be removed. Your question, though, is relevant. This is an open question. At the last CA/Browser Forum face-to-face meeting, some CA attendees indicated that they had difficulty as there are many countries with no states/provinces, like "Bouvet Island", "British Virgin Islands", "Christmas Island", "Falkland Islands", "Faroe Islands", "French Guiana", "Gibraltar", "Guadeloupe", "Guam", "Guernsey", "Isle of Man", "Jersey", "Lebanon", "Macedonia", "Martinique", "Mayotte", "Montenegro", "Netherlands Antilles", "Niue", "Norfolk Island", "Palestinian Territory", "Pitcairn", "Reunion", "Serbia", "Singapore", "Slovenia", "South Georgia and the South Sandwich Islands", "Svalbard and Jan Mayen", "Western Sahara", "Vatican", Taiwan, etc. I expect we'll debate this further in the Forum and perhaps change [CABF-Baseline]. 4. The cRLDistributinPoints extension MUST be present in a CA certificate. It MUST NOT be marked Typo: "cRLDistributinPoints" -> "cRLDistributionPoints" 6. The authorityInformatinAccess extension MAY be present and, if present, MUST NOT be marked Typo: "authorityInformatinAccess" -> "authorityInformationAccess" A.2 Semantic Verification of a Certificate Nonetheless, a Monitor can "protect" specific Subjects, based on reference data provided by these Subjects. A Monitor trying to determine that a certificate has been issued to the "right" Subject can do so using the certificate(s) issued to the Subject, as a reference. For example, if a Monitor is providing "protection" for a Subject, it requires the name of the Subject (as it appears in the Subject field or subjectAltName extension) and the public key associated with that Subject. Armed with this information, a Monitor can examine every log entry to determine if it contains the same Subject or SubjectAltName. If a log entry matches either of these names, and if it contain a different public key, this is evidence of mis-issuance. There's no requirement that a Subject be associated with a single public key. In some cases, web site owners generate a different key pair on each machine behind a load balancer, and apply for certificates with the same Subject name but different key. I'm not sure if you've captured the type of mis-issuance that CT was originally intended to detect: when a hacked, faulty or rogue CA issues a certificate to a Subject without the Subject's knowledge. The Monitor alone cannot detect that. It can report to the Subject that a certificate was logged for the Subject, but only the Subject can tell if that was a valid issuance or mis-issuance. -Rick
_______________________________________________ Trans mailing list [email protected] https://www.ietf.org/mailman/listinfo/trans
