New issue
Advanced search Search tips

Issue 605510 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Chromium does not implement the EV/CT Plan as documented

Project Member Reported by rsleevi@chromium.org, Apr 21 2016

Issue description

As documented in the EV/CT Plan, certificates defined to meet the CT policy must meet one of the following:

1) At least the number of certificates in Table 1 (varies based on cert validity period), all of which must be qualified or pending qualification at time of issuance, all of which must have been accepted prior to the TLS handshake, with at least one Google log and at least one non-Google log
2) Two or more SCTs from logs that are qualified at the time of TLS handshake, embedded within a stapled OCSP response, with at least one Google log and at least one non-Google log. All SCTs delivered via this mechanism must be qualified at the time of TLS handshake.
3) Two or more SCTs from logs that are qualified at the time of TLS handshake, embedded within the TLS extension, with at least one Google log and at least one non-Google log. All SCTs delivered via this mechanism must be qualified at the time of TLS handshake.

In addition to the above, at least one SCT must be from a log qualified at the time of TLS handshake.


Chromium currently diverges from this in several ways:
* It will accept 1 qualified SCT delivered via OCSP, and 1 qualified SCT delivered via TLS extension
* It will accept 2 qualified SCTs delivered via OCSP (from a non-Google log), with 1 qualified SCT delivered by embedded in the certificate (from a Google log)
* It does not require all SCTs delivered via TLS or OCSP Stapling to be qualified at time of check

By separating out the "Google/non-Google" compliance check and the "minimum number of qualified SCTs", it effectively allows a mix/match.

Unfortunately, the above logic makes it significantly more confusing to handle the "accepted at time of issuance (but no longer qualified)" logic necessary to handle distrusting logs. We should update the policy or implementation.
 
Project Member

Comment 1 by bugdroid1@chromium.org, May 4 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a66cf3e7e727b4b613828e71931f8e91be070509

commit a66cf3e7e727b4b613828e71931f8e91be070509
Author: rsleevi <rsleevi@chromium.org>
Date: Wed May 04 22:55:50 2016

Align the CT implementation with the actual policy.

This resolves several bugs that were revealed inherent in the implementation and implements the new policy designed to avoid ambiguities with the old policy.

- Unique SCTs from the same log no longer count towards quorum, as it fails to ensure the ecosystem diversity that is intended by the quorum requirement
- Officially supports "method pooling" when using non-embedded SCTs (so long as at least one valid, qualified non-embedded SCT is present, only require 1 Google + 1 non-Google log, from any source)
- Fixes the bug where method pooling worked for embedded certificates
- Simplifies the implementation to make it easier to ensure that all SCTs delivered via TLS extension/OCSP stapling are qualified at time of check

BUG= 605510 ,  607023 

Review-Url: https://codereview.chromium.org/1941973002
Cr-Commit-Position: refs/heads/master@{#391674}

[modify] https://crrev.com/a66cf3e7e727b4b613828e71931f8e91be070509/net/cert/ct_policy_enforcer.cc
[modify] https://crrev.com/a66cf3e7e727b4b613828e71931f8e91be070509/net/cert/ct_policy_enforcer.h
[modify] https://crrev.com/a66cf3e7e727b4b613828e71931f8e91be070509/net/cert/ct_policy_enforcer_unittest.cc

Labels: M-52
Status: Verified (was: Assigned)

Sign in to add a comment