I’m looking for feedback on age-rt, an experimental streaming format based on age v1.

The motivation is to use age-style encryption for data that is produced continuously and should be forwarded immediately, such as live audio/video, terminal output, telemetry, logs, event feeds, and long-running network connections.

Age’s fixed-size payload chunks work well for files, but can introduce latency when data arrives slowly or in small pieces. age-rt aims to retain age’s encryption and key-management model while allowing available data to be encrypted and transmitted immediately. The proposal is intentionally a minimal diff to the original spec with conservative settings, so that security analysis is straightforward and existing age implementations can be reused.

The main differences from age v1 are:

  • variable-sized chunks, from 0 to 65,536 bytes (no padding required to fill a fixed-size chunk)
  • an explicit 4-byte ciphertext length before each chunk
  • custom header string (same format)

The specification is separate from the implementation. It documents the resulting metadata leakage, including chunk sizes and timing. The design is experimental and has not been independently audited.

I’d welcome general discussion, criticism, and concrete attack scenarios, particularly regarding the framing, security properties, and practical usefulness for real-time streams.

you are viewing a single comment's thread
view the rest of the comments
[–] 2 points 2 weeks ago (1 child)

Have you looked at Rogaway's stream/chain constructions? They use chained AEAD blocks to do something similar

  • source
  • hideshow 1 child comment
  • [–] [S] 1 point 2 weeks ago

    Rogaway’s stream/chain constructions

    No, that's interesting. There is also TLS 1.3 and NOISE/WireGuard channel messaging doing similar at the AEAD level (and original age, of course). If you just look at the diff between the original age spec and this proposal, you don't really have to argue at the ground level. But since it's cryptography, one ought to be suspicious.

    There are plenty of libraries with age support out there, which can be made compatible in a breeze, and we inherit all the nice header unlock features like SSH pubkey or Yubikey, without changes. Simplicity is key.

  • source
  • parent