I am trying to understand Certificate Transparency.
Let's say I want to snoop on somebody's email. So I go hack or bribe a CA, have them issue a certificate for google.com, and then I present it when I MitM the users connection to Gmail. This is the situation that CT is trying to detect, and allow Google find out about the false certificate.
With Certificate Transparency, the users browser will require that I attach a signed certificate timestamp (SCT) proving the the certificate has been added to a log.
- First, what stops me from setting up my own log, make the SCT, and never tell Google or anyone else about it?
- Can the browser tell if a log is legitimate?
- Does the browser or its Auditor component send the SCT to Monitors?
Alternatively I could hack/bribe a log operator to issue an SCT with the tree hashes of it together will all the previous certificates. Then when Google and others query the log for its certificate chain it could pretend that the bad SCT never existed. This would be a fork in the log. Again Google would only find out if the browser (Auditor) sends the SCT to Google or other Monitors.
The CT website mentions that "auditors and monitors exchange information about logs through a gossip protocol", but never goes into any details about how or when.
- Specifically, how does the browser (Auditor) know which Monitors to talk to?