← Methodology library
Methodology · Browser extension v0.1

What the extension sees, what it doesn't, and where the line is.

The Cipherwake browser extension is a Manifest V3 add-on that surfaces the Decryption Blast Radius grade for every HTTPS site you visit. This page documents exactly what data flows the extension uses, what it explicitly refuses to read, and how badge colors are computed.

What the extension reads

One thing only:

That is the entire data flow into the extension's logic. Nothing else from the page, the browser, or the user is read.

What the extension explicitly does NOT read

How the badge is computed

On tab switch, the service worker:

  1. Extracts hostname from the active tab.
  2. Checks chrome.storage.session for a cached score. Cache lifetime: 30 minutes.
  3. If no fresh cache: calls /api/scan?domain=<host> and stores the result.
  4. Updates the toolbar icon's badge text (the grade letter A/B/C/D/F) and its background color per the table below.
GradeBadge colorDBR score band
AGreen (#16a34a)0-2
BLime (#65a30d)2-4
CAmber (#ca8a04)4-6
DOrange (#ea580c)6-8
FRed (#dc2626)8-10

Network behavior

What the badge does NOT claim

Limitations + edge cases

Supply chain change detection (v0.3.14+)

The killer ASM feature. Cipherwake's content script auto-runs on every HTTPS page you visit, reads the page's <script>, <link>, and <iframe> source attributes, and reports the third-party hostnames to the background service worker. The background:

  1. Compares this visit's third-party hosts to last visit's (per-origin baseline stored in chrome.storage.local).
  2. Flags any NEW host that appeared (could be a Polyfill.io-style supply-chain compromise; see the Polyfill.io 2024 attack writeup).
  3. Checks each <script> for an integrity="sha384-..." attribute (SRI — without it, the vendor can swap script contents silently).
  4. Fetches the HNDL grade for each unique third-party host (cached aggressively).
  5. Stores the consolidated report per-origin so the popup can render it instantly without re-running the scan.

What the content script reads: only attribute values from public DOM elements (src, href, integrity). It never reads page text content, form values, cookies, localStorage, sessionStorage, or any cross-frame data. The full source is in content-deps.js.

What the supply-chain detector does NOT claim

Source + permissions audit

The extension source is in the public repo at extension/. The manifest.json declares exactly:

You can verify this in the manifest before installation. The Chrome Web Store listing replicates the same disclosure. The content script source (content-deps.js) is 130 lines and exclusively reads public DOM attributes — see the full code for verification.

Try it