Skip to content

Commit cf67dfa

Browse files
hyperpolymathclaude
andcommitted
docs: polish arXiv paper appendices, fix IETF draft technical issues
arXiv paper: fill in all missing module counts in Appendix A and B (exports, globals, tests for all 13 FFI modules). IETF draft: - Fix misleading "QUIC" terminology — clarify it's AEAD-encrypted UDP, not full QUIC (RFC 9000) - Fix port 9999 claim — already assigned to "distinct" service - Add HKDF key derivation recommendation (RFC 5869) - Add forward secrecy limitation disclosure - Add nonce tracking requirement for replay prevention - Add RFC 5869 to normative references Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent a61e775 commit cf67dfa

2 files changed

Lines changed: 49 additions & 27 deletions

File tree

docs/papers/boj-architecture-paper.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -704,26 +704,26 @@ https://github.com/hyperpolymath/panic-attacker
704704
| `Boj.Catalogue` | Cartridge registry, IsUnbreakable proof, matrix queries | 221 |
705705
| `Boj.Federation` | Umoja node identity, hash attestation, gossip | 165 |
706706
| `Boj.Guardian` | Resource monitoring, circuit breaker, self-diagnostics | 299 |
707-
| `Boj.Menu` | Teranga menu discovery protocol | --- |
708-
| 18 cartridge ABIs | Per-cartridge safety proofs (`SafeX.idr`) | --- |
707+
| `Boj.Menu` | Teranga menu discovery protocol | ~85 |
708+
| 18 cartridge ABIs | Per-cartridge safety proofs (`SafeX.idr`) | ~720 (~40 each) |
709709

710710
## Appendix B: Zig FFI Module Listing
711711

712712
| Module | C-ABI Exports | Mutex-Protected Globals | Tests |
713713
|--------|---------------|------------------------|-------|
714-
| `catalogue.zig` | 20 | 3 | 13 |
715-
| `loader.zig` | --- | --- | 14 |
716-
| `federation.zig` | 30+ | 8 | 40 |
717-
| `guardian.zig` | --- | --- | 12 |
718-
| `readiness.zig` | --- | --- | 28 |
719-
| `verisimdb.zig` | --- | --- | 7 |
720-
| `coprocessor.zig` | --- | --- | 14 |
721-
| `sla.zig` | --- | --- | 11 |
722-
| `community.zig` | --- | --- | 11 |
723-
| `sdp.zig` | --- | --- | 10 |
724-
| `seams.zig` | --- | --- | 15 |
725-
| `e2e_order.zig` | --- | --- | 3 |
726-
| `bench.zig` | --- | --- | --- |
714+
| `catalogue.zig` | 26 | 6 | 13 |
715+
| `loader.zig` | 11 | 2 | 14 |
716+
| `federation.zig` | 44 | 21 | 40 |
717+
| `guardian.zig` | 29 | 9 | 12 |
718+
| `readiness.zig` | 8 | 3 | 28 |
719+
| `verisimdb.zig` | 10 | 8 | 7 |
720+
| `coprocessor.zig` | 12 | 5 | 14 |
721+
| `sla.zig` | 15 | 4 | 11 |
722+
| `community.zig` | 9 | 3 | 11 |
723+
| `sdp.zig` | 10 | 6 | 10 |
724+
| `seams.zig` | 0 | 0 | 15 |
725+
| `e2e_order.zig` | 0 | 0 | 3 |
726+
| `bench.zig` | 0 | 0 | 0 (benchmark only) |
727727
| 18 cartridge FFIs | 4 each | 1 each | 118 total |
728728

729729
## Appendix C: Reproducibility

docs/papers/umoja-federation-draft.md

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,15 @@ Bootstrap → Discovery → Handshake → Active → Suspected → Dead
219219

220220
### 3.2. Transport
221221

222-
#### 3.2.1. QUIC-First Transport (Default)
222+
#### 3.2.1. Encrypted Transport (Default)
223223

224-
The protocol's primary transport uses QUIC [RFC 9000] semantics with
225-
the following cryptographic primitives:
224+
The protocol's primary transport uses AEAD-encrypted UDP datagrams with
225+
the following cryptographic primitives. Note: while internally referred
226+
to as "QUIC mode" in the reference implementation, this transport does
227+
not implement the full QUIC protocol [RFC 9000] (no connection IDs,
228+
streams, flow control, or congestion control). It uses QUIC's
229+
cryptographic choices (X25519 + ChaCha20-Poly1305) applied directly to
230+
UDP datagrams:
226231

227232
- **Key exchange**: X25519 Elliptic Curve Diffie-Hellman [RFC 7748].
228233
Each node generates a long-lived identity keypair at bind time. A
@@ -261,8 +266,8 @@ via the `BOJ_FEDERATION_PORT` environment variable.
261266

262267
### 3.3. Packet Types
263268

264-
| Tag (cleartext) | Tag (QUIC) | Name | Direction |
265-
|:---------------:|:----------:|---------------------|-----------------|
269+
| Tag (cleartext) | Tag (encrypted) | Name | Direction |
270+
|:---------------:|:---------------:|---------------------|-----------------|
266271
| 0x01 | 0x81 | DISCOVER | Multicast / Unicast |
267272
| 0x02 | 0x82 | DISCOVER_REPLY | Unicast |
268273
| 0x03 | 0x83 | GOSSIP_DIGEST | Unicast |
@@ -546,11 +551,22 @@ layer that enforces zero-trust principles at the transport level:
546551

547552
### 8.5. Transport Security
548553

549-
- QUIC-mode (X25519 + ChaCha20-Poly1305) provides confidentiality,
550-
integrity, and replay protection for all gossip traffic.
554+
- Encrypted mode (X25519 + ChaCha20-Poly1305) provides confidentiality
555+
and integrity for all gossip traffic. Note that the current design
556+
uses long-lived identity keypairs without ephemeral key exchange,
557+
which does not provide forward secrecy. Future revisions of this
558+
protocol SHOULD incorporate ephemeral ECDH or a full QUIC handshake
559+
to achieve forward secrecy.
560+
- The shared secret derived from X25519 SHOULD be processed through
561+
HKDF [RFC 5869] before use as a ChaCha20-Poly1305 key, rather than
562+
used directly. The reference implementation currently uses the raw
563+
shared secret; this is a known limitation.
564+
- Implementations MUST track received nonces per peer to prevent replay
565+
attacks. Nonces SHOULD be counter-based (monotonically increasing)
566+
rather than random to enable efficient duplicate detection.
551567
- UDP fallback mode provides none of these properties and MUST NOT be
552568
used in production.
553-
- Implementations SHOULD default to QUIC mode and require explicit
569+
- Implementations SHOULD default to encrypted mode and require explicit
554570
configuration to enable UDP fallback.
555571

556572
### 8.6. No Code Execution
@@ -573,10 +589,12 @@ This document requests registration of the following port number:
573589
|-------------|-------------|-------------------|-------------|
574590
| umoja-fed | 9999 | UDP | Umoja Federation Protocol |
575591

576-
**Note:** Port 9999 is currently unassigned in the IANA Service Name
577-
and Transport Protocol Port Number Registry. If 9999 is assigned before
578-
this document is published, an alternative port in the dynamic/private
579-
range will be requested.
592+
**Note:** Port 9999 is currently assigned to the "distinct" service in
593+
the IANA Service Name and Transport Protocol Port Number Registry. The
594+
reference implementation uses 9999 as a configurable default. A formal
595+
port allocation from the User Ports range (1024-49151) will be
596+
requested if this protocol progresses beyond Experimental status.
597+
Implementations MUST support configurable port assignment.
580598

581599
### 9.2. IPv6 Multicast Address
582600

@@ -611,6 +629,10 @@ address from the Link-Local Scope Multicast Addresses registry:
611629
- **[RFC 8439]** Nir, Y. and A. Langley, "ChaCha20 and Poly1305 for
612630
IETF Protocols", RFC 8439, DOI 10.17487/RFC8439, June 2018.
613631

632+
- **[RFC 5869]** Krawczyk, H. and P. Eronen, "HMAC-based
633+
Extract-and-Expand Key Derivation Function (HKDF)", RFC 5869,
634+
DOI 10.17487/RFC5869, May 2010.
635+
614636
### 10.2. Informative References
615637

616638
- **[draft-cui-ai-agent-discovery-invocation-00]** Cui, Y., et al.,

0 commit comments

Comments
 (0)