New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 613495 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Feature

Blocking:
issue 506227
issue 480867
issue 624894



Sign in to add a comment

Certificate Transparency: Use the Merkle tree leaf

Project Member Reported by eranm@chromium.org, May 20 2016

Issue description

Once a certificate accompanied by SCTs is observed, the way to audit each SCT is to reconstruct the MerkleTreeLeaf (https://tools.ietf.org/html/rfc6962#section-3.4), hash it, and request an inclusion proof from the log, providing the leaf hash.

Right now the SingleTreeTracker only stores the timestamp from the SCT. It should:
* Store the entire MerkleTreeLeaf, as that's what should be reported in case of audit failure.
* Hash it for requesting inclusion proofs.
* Persist it so that upon Chrome re-start, the process of auditing previously-observed certs+SCTs could be continued.

 

Comment 1 by eranm@chromium.org, May 20 2016

Cc: robpercival@chromium.org
Labels: -Type-Bug Type-Feature

Comment 2 by eranm@chromium.org, May 20 2016

Blocking: -506277 506227
Before adding any persistence, please make sure to include me in the review. As presently implemented, it may represent privacy concerns, so we should resolve those first.

Comment 4 by eranm@chromium.org, Jun 29 2016

Blocking: 480867

Comment 5 by eranm@chromium.org, Jun 30 2016

Blocking: 624894
Project Member

Comment 6 by bugdroid1@chromium.org, Jul 8 2016

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

commit b38ec0a4aaf590b21c1344a5962bcfeb65f3e3d6
Author: eranm <eranm@chromium.org>
Date: Fri Jul 08 14:10:44 2016

Certificate Transparency: MerkleTreeLeaf, MerkleAuditProof improvements.

Per comments on another code review, I've documented MerkleTreeLeaf and
changed the Hash function name.

This change also adds the tree size to the MerkleAuditProof, as each
proof ties to a particular tree size (and it can't directly be
deduced from the number of nodes in the proof).

BUG= 613495 

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

[modify] https://crrev.com/b38ec0a4aaf590b21c1344a5962bcfeb65f3e3d6/net/cert/merkle_audit_proof.cc
[modify] https://crrev.com/b38ec0a4aaf590b21c1344a5962bcfeb65f3e3d6/net/cert/merkle_audit_proof.h
[modify] https://crrev.com/b38ec0a4aaf590b21c1344a5962bcfeb65f3e3d6/net/cert/merkle_tree_leaf.cc
[modify] https://crrev.com/b38ec0a4aaf590b21c1344a5962bcfeb65f3e3d6/net/cert/merkle_tree_leaf.h
[modify] https://crrev.com/b38ec0a4aaf590b21c1344a5962bcfeb65f3e3d6/net/cert/merkle_tree_leaf_unittest.cc
[modify] https://crrev.com/b38ec0a4aaf590b21c1344a5962bcfeb65f3e3d6/net/test/ct_test_util.cc

Comment 7 by eranm@chromium.org, Jul 21 2016

Summary: Certificate Transparency: Use the Merkle tree leaf (was: Certificate Transparency: Use (and persist) the entire Merkle tree leaf)
Project Member

Comment 8 by bugdroid1@chromium.org, Jul 25 2016

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

commit b03a8a77ead185c85a6c55303ac20176eaa20a56
Author: eranm <eranm@chromium.org>
Date: Mon Jul 25 14:20:31 2016

Measure how often SCTs can't be checked because they're too new

Signed Certificate Timestamps (SCTs) designate Merkle tree leaves that can
be checked for inclusion with a CT Log's Signed Tree Head (STH).
However, inclusion should only be checked against an STH that is newer
than the SCTs timestamp by at least 24 hours - this is because Logs'
have a Maximum Merge Delay of 24 hours, which is the time they have
to produce a new STH that incorporates a given SCT.

STHs are delivered periodically out of band. If there isn't a new enough
STH, then SCTs will need to be marked as pending inclusion check,
waiting for a new STH to be delivered.

To determine how frequently an STH should be delivered (currently,
daily) and how big the SCT queue list should be (that is, how frequently
clients encounter a brand new SCT that is newer than any STH),
measure how often an SCT can't be checked for inclusion immediately
after it's been seen.

BUG= 613495 

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

[modify] https://crrev.com/b03a8a77ead185c85a6c55303ac20176eaa20a56/components/certificate_transparency/single_tree_tracker.cc
[modify] https://crrev.com/b03a8a77ead185c85a6c55303ac20176eaa20a56/components/certificate_transparency/single_tree_tracker_unittest.cc
[modify] https://crrev.com/b03a8a77ead185c85a6c55303ac20176eaa20a56/tools/metrics/histograms/histograms.xml

Project Member

Comment 9 by bugdroid1@chromium.org, Jan 23 2017

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

commit 1b5a833bca72a9f89e8c6e8c592037540eaf1411
Author: eranm <eranm@chromium.org>
Date: Mon Jan 23 22:21:52 2017

Audit CT logs by requesting inclusion proofs for
observed Signed Certificate Timestamps from the
CT log that issued them.

To verify that a CT log behaves correctly and indeed
publishes all the certificates it committed to publishing,
it is necessary to verify that each observed log entry
(as denoted by an SCT and the corresponding
certificate) is included in the log.

Check for inclusion of observed SCTs by finding out
the leaf index of each observed SCT and requesting
an inclusion proof from the CT log for it over DNS
(using the LogDnsClient).

Note that no action is taken based on the inclusion
check results in this change. Follow-up changes
will add telemetry.

BUG= 613495 

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

[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/components/certificate_transparency/BUILD.gn
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/components/certificate_transparency/single_tree_tracker.cc
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/components/certificate_transparency/single_tree_tracker.h
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/components/certificate_transparency/single_tree_tracker_unittest.cc
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/components/certificate_transparency/tree_state_tracker.cc
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/components/certificate_transparency/tree_state_tracker.h
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/net/cert/merkle_audit_proof.cc
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/net/cert/merkle_audit_proof.h
[modify] https://crrev.com/1b5a833bca72a9f89e8c6e8c592037540eaf1411/tools/metrics/histograms/histograms.xml

Project Member

Comment 10 by bugdroid1@chromium.org, Feb 2 2017

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

commit bbf5af70f469a5f7807ec4573a65c3710cfbb29a
Author: eranm <eranm@chromium.org>
Date: Thu Feb 02 16:06:18 2017

Wire NetLog into the TreeStateTracker

Pass a NetLog instance from the IOThread/ProfileIOData into the
TreeStateTracker instance created in each, so that CT log auditing
events can be logged into the NetLog and DNS queries related to log
auditing are also logged.

A new NetLog source was created to track NetLog events related to
CT log auditing, since they happen independently of the SSL
connections in which the  certificates and SCTs were observed.

BUG= 613495 

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

[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/chrome/browser/io_thread.cc
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/chrome/browser/profiles/profile_io_data.cc
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/components/certificate_transparency/BUILD.gn
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/components/certificate_transparency/single_tree_tracker.cc
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/components/certificate_transparency/single_tree_tracker.h
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/components/certificate_transparency/single_tree_tracker_unittest.cc
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/components/certificate_transparency/tree_state_tracker.cc
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/components/certificate_transparency/tree_state_tracker.h
[add] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/components/certificate_transparency/tree_state_tracker_unittest.cc
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/net/log/net_log_event_type_list.h
[modify] https://crrev.com/bbf5af70f469a5f7807ec4573a65c3710cfbb29a/net/log/net_log_source_type_list.h

Comment 11 by eranm@chromium.org, Jun 19 2017

Cc: eranm@chromium.org
Owner: robpercival@chromium.org
Re-assigning to Rob since he's taken over that code.
Status: Fixed (was: Assigned)
This has been done, bar the persistence of Merkle tree leaves. I don't think we actually want to persist them though. The DNS inclusion checking privacy changes require that we know whether the network has changed, and this information would not be available between Chrome restarts.

Sign in to add a comment