Encryption: seekable ranged reads over encrypted objects #15

Closed
opened 2026-07-25 16:25:27 +00:00 by Cordy · 1 comment
Owner

age STREAM is not seekable, so the encrypt decorator currently reads the full object to serve an HTTP Range (fine for the web UI / typical WebDAV, wasteful for large-file random access).

  • Chunked framing: fixed-size independently-encrypted chunks so a Range maps to a bounded set of chunks.
  • Preserve the transparent OpenReadSeekCloser contract http.ServeContent expects.
  • Decision record: ENCRYPTION-COMPARISON.md.

Encryption hardening; completes the v0.3 encryption story.

age STREAM is not seekable, so the encrypt decorator currently reads the **full object** to serve an HTTP Range (fine for the web UI / typical WebDAV, wasteful for large-file random access). - Chunked framing: fixed-size independently-encrypted chunks so a Range maps to a bounded set of chunks. - Preserve the transparent `Open`→`ReadSeekCloser` contract `http.ServeContent` expects. - Decision record: `ENCRYPTION-COMPARISON.md`. Encryption hardening; completes the v0.3 encryption story.
Author
Owner

Decision — rejected (Manuel's review, relayed by Nikola 2026-07-31):

"No, because we orient ourselves towards the file names and not encrypted file metadata. So no seekable reads. Chunked streams is regarding file transfer and not seekable metadata. It is only a form of transmission."

Closing as won't-do. The shipped behaviour — HTTP Range over encrypted objects reads the full object and serves the requested span — is now the accepted design, not a stopgap. ARCHITECTURE.md §4.3 already states this as current behaviour (corrected in the #80 docs pass); the "revisit with chunked framing" framing there and in the v0.3 milestone note should be read as settled by this decision. If large-file random access over encrypted storage ever becomes a real customer complaint, this can be reopened with that evidence.

**Decision — rejected (Manuel's review, relayed by Nikola 2026-07-31):** > "No, because we orient ourselves towards the file names and not encrypted file metadata. So no seekable reads. Chunked streams is regarding file transfer and not seekable metadata. It is only a form of transmission." Closing as won't-do. The shipped behaviour — HTTP Range over encrypted objects reads the full object and serves the requested span — is now the *accepted design*, not a stopgap. ARCHITECTURE.md §4.3 already states this as current behaviour (corrected in the #80 docs pass); the "revisit with chunked framing" framing there and in the v0.3 milestone note should be read as settled by this decision. If large-file random access over encrypted storage ever becomes a real customer complaint, this can be reopened with that evidence.
Cordy closed this issue 2026-08-03 19:03:12 +00:00
Sign in to join this conversation.
No labels
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#15
No description provided.