wai.live.e2ee: end-to-end encrypted rooms on MoQ secure objects and MLS keying (L10) #345

Merged
dcharlot merged 13 commits from wai/e2ee into main 2026-10-20 03:13:01 -04:00

2026-10-19

Transaction Science
joule-moq-mls: clippy's notes on the model and the corpus generator
All checks were successful
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m37s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m49s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 5s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 5s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 5s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 2m32s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m15s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 27s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 6m6s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 8m38s
wai-pack / wai-pack · linux (pull_request) Successful in 1m34s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m17s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 18m33s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m43s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 31m58s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 15m58s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m17s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m17s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 30s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m35s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 5m37s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 35m59s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m27s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 23m26s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 24s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 54s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 8m8s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 4m20s
wai-pack / wai-pack · macos (pull_request) Successful in 1m6s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 4m3s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 21:27:41 -04:00
Transaction Science
live-conformance/e2ee: every epoch's keys used; e2ee_verify.py, the corpus's second implementation
Standard library only: AES, AES-GCM and RFC 9605's counter mode written from
their specifications for vectors only; HKDF and HMAC from the standard
library; BLAKE3 and strict Ed25519 from claim-conformance. It checks RFC
9605's and secure objects' published vectors, every record, key schedule,
sealed object and room of vectors.json, and requires every mutated copy to
fail.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 20:53:06 -04:00
Transaction Science
2026-10-19 20:46:35 -04:00
Transaction Science
joule-moq-mls builds; live-conformance/e2ee/vectors.json generated from fixed seeds
Records, key schedule, sealed objects with every derived value, the room
transcript with a removal, a late joiner and a change of committer, and a
control for each reason of confidentiality §13.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 20:44:00 -04:00
Transaction Science
2026-10-19 20:26:47 -04:00
Transaction Science
joule-moq: secure_objects (WIP): seal and open per draft-ietf-moq-secure-objects-01 on -22 objects
Feature secure-objects: the AEADs of the SFrame suites, RFC 9605 SFrame for
its vectors, the Key ID property, the plaintext and its Encrypted Properties
List, key/salt/nonce/AAD, and a room member's keyring with the receiving
checks of WAI confidentiality §6. The published vectors of RFC 9605 and of
the draft's Appendix B are in wai/live-conformance/e2ee/.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 20:26:20 -04:00
Transaction Science
confidentiality.md: end-to-end encrypted rooms on MoQ secure objects and MLS keying
Rewrites the extension onto draft-ietf-moq-secure-objects-01 and
draft-jennings-moq-mocha-mls-keying-00, over draft-ietf-moq-transport-22:
the room's confidentiality record (WRE1, wai.live.e2ee), object sealing,
one MLS group per room driven by the room's lifecycle with the clock as
external sender and a committer rule every member computes, per-epoch
per-sender keys from the exporter, the receiver's checks and reasons,
receipts and metering over ciphertext, and recording refused.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 11:20:30 -04:00