diff --git a/README.md b/README.md index 6338de3..a276206 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,12 @@ It builds on a baseline that simulates the sort of device you might be adding th measures itself: see [docs/baseline.md](docs/baseline.md) for what the baseline is, how the figures are made, and how to run it. -## This stage — AES-GCM at rest +## Where it ends up -Spooled records are encrypted with AES-256-GCM rather than only sealed. Anyone who takes the -volume — a pulled card, a recovered device, a backup — learns nothing from what is on it. - -The record header is authenticated alongside the encrypted body, so the tamper-evidence of the -previous stage is kept rather than traded away. The key is the same one the seal used: its name -says what it protects, not which algorithm protects it, so strengthening the policy needs nothing -new provisioned. +The device logs one RFC 5424 record carrying four SD elements — sequence and uptime, time quality, +origin, and a private element naming the protection its own log pipeline is under. The record goes +to the collector over mutual TLS and is spooled to a local store encrypted with AES-256-GCM, so +records survive a failed send and a disk that leaves the device gives nothing away. @@ -26,8 +23,13 @@ new provisioned. -The full report for this stage — what the device did, every figure, and the self-check — is -committed as [`run-report.md`](run-report.md), and rewritten by every stage. +Most devices want less than that. The table below prices every stage, and the cheapest row that +does anything useful — a valid, timestamped record on the wire — is a fraction of it. + +**Read it as a sequence.** Start at the Baseline commit and step forward: `git show` on any stage +gives you the diff to apply to your own build, the reasoning behind it, and the measured cost of +applying it — each stage's run is committed alongside it as [`run-report.md`](run-report.md). Stop +where your device's threat model does. ## Every stage