Idea 1: Certificate Transparency Browser Extension
Problem
Certificate transparency (CT) was designed to allow users to directly verify TLS certificates and ensure secure connections. However, the current system relies heavily on the honesty of log operators, introducing vulnerabilities and a lack of trust in end-to-end encryption.
The hackathon track addresses this gap by building a browser extension that restores user trust in TLS verification and enhances online security.
This twitter thread highlights the current problems with certificate transparency that your project will aim to solve.
We have already built this internally as a prototype, so please reach out with any questions that come up. This document intends to only be a rough outline of the architecture and flow of the project.
Solution
The browser extension consists of two parts:
- A prism service that monitors the CT logs for new roots and stores them in prism accounts corresponding to each log
- A browser extension that retrieves the logs' accounts depending on the certificates of the websites visited by the user
Prism Service
sequenceDiagram participant CTS as ct-service participant Prism participant X2024 as Xenon2024 CTS->>Prism: RegisterService(xenon2024, pubkey) loop CTS->>X2024: Poll for new root X2024-->>CTS: New root CTS->>Prism: SetData(xenon2024, SignedTreeHead) end
Browser Extension
sequenceDiagram actor Bob participant Google as google.com participant WLN as Wasm Light Node participant CTS as Prism Full Node participant X2024 as Xenon2024 Bob->>Google: HTTPS Request activate Bob Google-->>Bob: TLS Certificate deactivate Bob Note left of Bob: contains SignedCertificateTimestamp<br/>from multiple logs Bob->>CTS: Request latest account of Xenon2024 activate Bob CTS-->>Bob: AccountResponse for Xenon2024 deactivate Bob Note left of Bob: Contains latest Xenon2024 root as SignedData,<br/>and merkle proof of Account under Prism root Bob->>WLN: Request latest verified Prism root activate Bob WLN-->>Bob: Prism root Bob->>Bob: Verify merkle proof against <br/> AccountResponse and Prism root deactivate Bob Bob->>X2024: Request merkle proof of TLS certificate under root activate Bob X2024-->>Bob: Merkle proof of TLS certificate under root Bob->>Bob: Verify Log merkle proof against <br/>Xenon2024 root from AccountResponse deactivate Bob