Fix the four findings of the second review
check / check (push) Successful in 12m30s

README.md: the opening no longer says the private key is needed only to
restore; a backup never needs it, a deep verify does.

ARCHITECTURE.md: the concurrency note says each open database uses one
connection, since the metadata export opens a second one.

docs/REPOSTRUCTURE.md: the size leak is about a secret near the
outsider's data in the same blob, not the same chunk, because all new
chunks of a blob share one zstd stream.

Every path used as link text in the four documents is in backticks.

Model: fable-5-1
This commit is contained in:
sneak committed 2026-11-08 23:29:37 +00:00
1 parent 1ecfe12e78
commit 34d7d13d3e
4 files changed
+17 -17

No files matched your search

+1 -1
View File
@@ -135,7 +135,7 @@ One row for each blob.
- `uploaded_ts`: when the upload finished. It is `NULL` before that.
`blob_hash` is `hex(SHA256(SHA256(uncompressed contents)))`. See
[REPOSTRUCTURE.md](REPOSTRUCTURE.md#blobs).
[`REPOSTRUCTURE.md`](REPOSTRUCTURE.md#blobs).
Once a blob is uploaded, `compressed_size` is the size of the object at the
destination. A blob that was already there can have a different size from the
+5 -4
View File
@@ -149,7 +149,7 @@ The snapshot's database. A restore needs it.
age.
It is encrypted because it holds file paths, permissions and owners.
[DATAMODEL.md](DATAMODEL.md) describes its tables.
[`DATAMODEL.md`](DATAMODEL.md) describes its tables.
### `manifest.json.zst`
@@ -261,15 +261,16 @@ MiB, or 4 MiB at compression levels 1 and 2. A blob is closed at
`blob_size_limit` and at the end of each configured path. A chunk that is
already stored is never packed again.
Data that an outsider writes compresses smaller when it matches a secret in the
same chunk, so the blob gets smaller. The blob's size therefore shows the
Data that an outsider writes compresses smaller when it matches a secret near it
in the same blob, so the blob gets smaller. The blob's size therefore shows the
outsider whether their data matched the secret.
This works only when all of these hold:
- The outsider can write into a backed-up file.
- The outsider can see the blob sizes at the destination.
- The outsider's data and the secret land in the same chunk.
- The outsider's data and the secret are in the same blob, no further apart than
the stream looks back.
- The file keeps changing.
Back up a directory that outsiders can write to as a snapshot of its own.