Verifiable sensing · OP-TEE remote attestation
An open-source audio guardian. The detector runs inside a secure enclave, the raw sound is discarded there, and the only thing that leaves is a tiny signed verdict — alarm, voice, or nothing. You don't trust it. You check it.
The idea
Privacy today is a promise. open-opticon turns it into something you can verify.
A sentence in a policy document. You can't inspect the firmware, you can't tell what an update changed, and nothing technically stops it from listening. You're asked to trust.
Every result comes with a cryptographic proof that the genuine, published code ran inside a secure enclave and emitted only a minimal verdict for a fresh challenge — with the raw audio destroyed in the enclave. Anyone can check it. No trust required.
Walkthrough
Every frame is real captured output: the host test suite, an OP-TEE attestation on Arm TrustZone (QEMU), the in-enclave bound output, and the tamper fail-closed path.
Rendered from the captured stdout of the real runs — no screen recorder. walkthrough.cast replays in asciinema.
How it works
Each link is checked separately. Break any one and the verdict turns red.
The enclave emits a PSA attestation token. Veraison confirms the running code is the exact published firmware.
That same attested key signs a minimal CBOR predicate, bound to a verifier-chosen nonce and a counter that must advance.
Anyone checks the signature, the firmware identity, the freshness, and the anti-replay counter — with no audio and no trust.
Evidence
Verbatim output from an OP-TEE run on QEMU (Arm TrustZone) and the host verifier — not mockups.
$ optee_remote_attestation # PSA/COSE token → Veraison verifier ear.status : affirming ear.trustworthiness-vector: executables : 2 genuine published firmware instance-identity : 2 correct attestation key hardware : 2 runtime-opaque : 2 storage-opaque : 2 measurement-value : HqLzzpodsF4k9oSVJ3/u22Xb… signer-id : rLsRx+TaIXIFUjzkzhokWuGi…
# raw PCM never leaves the TA; only this leaves $ he_host /usr/bin/clip.pcm $NONCE { "schema": "honest-ear/bound-output/v1", "payload": "a900010158 20…ab73f9d0", "sig": "a4a30c413f…7fe799af", "pub_x": "30a0424cd2…0aafec3e", "pub_y": "e04b65e924…ce081723" } # pub_x/pub_y == the key Veraison attested
$ he-verify --nonce $NONCE bundle.json PASS bound output verified (signature + freshness + anti-replay) event: alarm_tone presence: 1 voice_active: false frames: 62 (~992 ms) $ he-verify --nonce DEADBEEF… bundle.json # stale nonce FAIL nonce mismatch (stale/replayed evidence) $ he-verify --nonce $NONCE --pin-x <x> --pin-y <y> bundle.json # cloned to another box FAIL public key does not match pinned endorsement $ he-verify --nonce $NONCE --last-counter 1 bundle.json # replay FAIL counter 1 not greater than last seen 1
Full appraisal + reproduction steps: SAMPLE_ATTESTATION.md · RUNBOOK.md
Honest scope
The whole point is honesty, so here is exactly where the guarantee starts and stops.
Full analysis: THREAT_MODEL.md
Hardness tiers
Higher tiers add hardware. Items marked proven today ran on a laptop, no special hardware.
Building it on a real board (BOM, wiring, bring-up, and why a phone is the verifier — not the sensor): HARDWARE.md
Design
For a real-time sensor that captures the physical world, a TEE is the only approach that is fast, cheap, and end-to-end today — and it composes with the others later.
| Approach | Real-time on a $5–60 board | Hides raw audio | Proves which code ran | |
|---|---|---|---|---|
| TEE + attestation | Yes, integer detector in-enclave | Yes, zeroized in the TA | Yes — that is what attestation proves | chosen |
| ZK proof of the detector | Batch only (~min / clip) | Yes | Yes, of the computation | shipped · 2nd leg |
| FHE | No, too slow to stream | Yes | No, not by itself | not viable now |
Architecture
The secure world never hands the normal world anything but a signed verdict.
mic ─▶ ┌────────────── SECURE WORLD (OP-TEE) ───────────────┐ │ Honest Ear TA │ │ • integer Goertzel + VAD over the PCM │ │ • audio buffer zeroized — never stored/exported │ │ • emit predicate {event, presence, counter} │ │ • PTA_SIGN_DATA → ECDSA P-256 over CBOR payload │ └───────────────────────┬────────────────────────────┘ │ signed bundle only ┌─────── NORMAL WORLD ───────┐ ┌──────────────┐ │ he_host (CA) → JSON bundle │ ───────▶ │ he-verify / │ │ optee_remote_attestation │ ──token▶ │ Veraison + │ └────────────────────────────┘ │ nonce/counter │ └──────────────┘
Deep dive: ARCHITECTURE.md · USE_CASES.md
Don't trust this page
Everything above is a claim. Here is how to check it on your own machine — the host pipeline needs only gcc, go, openssl, and python3, and runs offline.
$ git clone https://github.com/NubsCarson/open-opticon && cd open-opticon $ make test # C + Go units, e2e (13/13), tamper self-test — offline ALL HOST TESTS PASSED $ make repro # build twice in two trees, assert byte-identical artifacts REPRODUCIBLE all host artifacts are byte-identical $ make cross # cross-compile the verifier for Raspberry Pi (arm64 / armv7) $ make sites # launch the interactive apps + print their URLs
The interactive apps are dynamic servers (they need the Go backend, so they run locally rather than on this static site). make sites starts all three and prints the links:
Tap the mic; it shows the verified verdict and lets you try to forge it in the browser.
Mint a fresh challenge, then sign it on the device and watch it verify.
Scan the QR; the phone shows the live PASS/FAIL verdict for that challenge.
The OP-TEE/QEMU attestation (Docker, ~40 GB) is the full reference in RUNBOOK.md; reproducibility details in REPRODUCIBLE.md.
FAQ
Use cases
Deploy "tell me if an alarm or a gunshot fires" and prove the device cannot become a listening device.
"Call for help on a cry or a thud" with a cryptographic guarantee the feed is not recorded.
Public spaces, rentals, workplaces: restraint anyone can audit, not promised in a policy PDF.