diff --git a/v2/crates/wifi-densepose-privshield/README.md b/v2/crates/wifi-densepose-privshield/README.md index 67b7680b..dbb54894 100644 --- a/v2/crates/wifi-densepose-privshield/README.md +++ b/v2/crates/wifi-densepose-privshield/README.md @@ -20,6 +20,45 @@ contributor harness lives at [`harness/wifi-densepose-privshield/`](../../../harness/wifi-densepose-privshield) (ADR-289): `npx wifi-densepose-privshield-harness guidance --topic overview`. +## How this protects you from unauthorized WiFi surveillance + +**The threat — silent, device-free identification.** Since WiFi 5, your device +tells the router how to aim its signal by sending back *beamforming feedback* — +and it goes out **unencrypted**. Anyone within radio range can passively capture +those reports and, from the tiny stable details in them, **tell individual +people apart by their radio "fingerprint"** — through walls, with no camera, no +app, and nothing you have to be carrying. Published research re-identifies +individuals, counts occupancy through walls, and even reads activity this way, +and the 2025 sensing standard (802.11bf) added the capability but **no privacy +protection**. Because the attacker only listens, you get no indication it is +happening. + +**The defense — scramble the fingerprint, keep the link.** VEIL adds a secret, +**per-session "twist"** to your own outgoing feedback, built from the same +rotation math (Givens rotations) the report already uses: + +- Your **own router shares the key** and undoes the twist instantly, so it + decodes normally — **your WiFi keeps ~98% of its speed.** +- An **outside listener sees a *different* twist every session** and cannot + average many captures back into one stable fingerprint. Its guess of *who is + in the room* **collapses to chance** — no better than a random guess among the + possible people. +- The twist only **reshapes your own, standards-legal signal** — it preserves + the signal's energy exactly (`energy in = energy out`), so it is **compliant, + never jamming.** It never floods the air or blocks anyone else. + +**What it does *not* do (kept honest).** VEIL defends against a *third-party +sniffer*, not the access point you are connected to (that party holds the key — +protecting against a malicious AP is BFLD's detection job). It targets identity +re-identification; coarse motion obfuscation is future work. And every figure in +this crate is **SYNTHETIC / evidence-level L0** — it describes the reference +model and is *not* a measured guarantee on real hardware until validated with a +captured hardware log. + +> **In one line:** it makes the room's WiFi stop leaking *who you are* to +> outside listeners, while your network keeps working and without breaking any +> radio rules. + ## The idea Identity leaks through the **fine** cross-subcarrier phase structure of a diff --git a/v2/crates/wifi-densepose-privshield/ui/veil-console.html b/v2/crates/wifi-densepose-privshield/ui/veil-console.html index 68caea77..0be24bde 100644 --- a/v2/crates/wifi-densepose-privshield/ui/veil-console.html +++ b/v2/crates/wifi-densepose-privshield/ui/veil-console.html @@ -245,6 +245,23 @@ .compliance-meter { display: flex; align-items: center; gap: 10px; font-family: var(--mono); } .cm-bar { flex: 1; height: 34px; border-radius: 8px; border: 1px dashed color-mix(in srgb, var(--good) 45%, var(--line)); background: color-mix(in srgb, var(--good) 8%, var(--surface)); display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--good); font-weight: 650; letter-spacing: .06em; } + /* ---- "how it protects you" explainer ---- */ + .how-grid { display: grid; gap: 16px; grid-template-columns: 1fr; } + @media (min-width: 680px) { .how-grid { grid-template-columns: repeat(3, 1fr); } } + .how-step { display: flex; flex-direction: column; gap: 8px; } + .how-step .ic { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; border: 1px solid var(--line); background: var(--surface-2); } + .how-step .ic svg { width: 18px; height: 18px; } + .how-step h3 { font-size: 14px; font-weight: 650; letter-spacing: -0.01em; } + .how-step .eyebrow { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; } + .how-step p { margin: 0; font-size: 13px; color: var(--muted); line-height: 1.55; } + .how-step p b { color: var(--ink); font-weight: 600; } + .how-threat .ic { border-color: color-mix(in srgb, var(--threat) 45%, var(--line)); background: var(--threat-soft); } + .how-threat .eyebrow { color: var(--threat); } + .how-shield .ic { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); background: var(--accent-soft); } + .how-shield .eyebrow { color: var(--accent-2); } + .how-honest .ic { border-color: color-mix(in srgb, var(--good) 45%, var(--line)); } + .how-honest .eyebrow { color: var(--good); } + /* ---- info buttons ---- */ .head-r { display: flex; align-items: center; gap: 9px; } .info-btn { @@ -390,6 +407,28 @@
Emission
1.000×
not jamming
+ +
+

How this protects you

plain language
+
+
+ + The threat +

Your Wi-Fi constantly sends the router fine signal details — in the clear. A stranger nearby can capture them and recognise individual people by their radio "fingerprint": through walls, with no camera, and nothing on you.

+
+
+ + The shield +

VEIL scrambles that fingerprint on every report with a secret twist only your own router can undo. An outside listener sees a different scramble each time and can't tie it to a person — their guess of "who's here" drops to pure chance.

+
+
+ + Kept honest +

It shapes only your own signal — it never jams, and your Wi-Fi speed stays ~98%. It stops outside snoops, not the router you connect to. Figures here are simulated (L0), pending real-hardware tests.

+
+
+
+

Collapse curve

re-ID vs mixing
@@ -849,6 +888,13 @@ function openWelcome(){ openModal(welcomeHTML()); markSeen(); } const EXPLAIN={ + protect:{t:"How this protects you",p:"Unauthorized Wi-Fi surveillance, and what VEIL does about it — in plain terms.",pts:[ + ["What can spy on you","Since Wi-Fi 5, your device tells the router how to aim its signal by sending back “beamforming feedback” — sent unencrypted. Anyone in range can capture it passively and, from the tiny stable details, tell people apart (published work re-identifies individuals, detects occupancy through walls, even reads activity)."], + ["Why you can't tell","There's no light, no app, no device on you, and the snoop only listens — so this happens silently. The Wi-Fi standard (802.11bf, 2025) added the sensing feature but no privacy protection."], + ["What VEIL changes","Your router already reshapes its signal legitimately. VEIL adds a secret, per-session “twist” to that feedback (built from the same math the report already uses). Your own router shares the key and undoes it instantly; an outside listener sees a fresh random twist every session and can't average it into a stable fingerprint."], + ["The result","Across sessions the snoop's identity guess collapses to chance (~1-in-N, no better than guessing), while your link keeps ~98% of its speed — because the twist preserves the signal's energy and the data beam is untouched."], + ["Not jamming","VEIL only shapes your own, standards-legal transmissions. It never floods the air or blocks anyone (that would be illegal jamming). The energy in = energy out meter proves it."], + ["Honest limits","It defends against outside snoops — not the router you're connected to (that party holds the key). It doesn't yet hide coarse motion, and every number here is simulated (evidence level L0) until validated on real hardware."]]}, kpis:{t:"Your live scorecard",p:"Four numbers that update the moment you change a setting.",pts:[ ["Re-ID · off","How often an eavesdropper picks the right person with no shield. 100% = they always win."], ["Re-ID · on","The same attacker with the shield running. You want this down at “chance” — pure guessing."],