Files
ZIPs/ZIPs/zip-0816-session-kem.md
zeekay 29a22c6239 One source of truth for a ZIP's status, and a status each ZIP earns
The same fact lived in five hand-kept places and they all disagreed. The ZIP
frontmatter held 156 rows; README's table held 18; INDEX.md held 144;
docs/zip-index.json and docs/site/zip-index.json held 16 each. Both generators
were last run when the corpus had 16 ZIPs and went on reporting success against
156, because neither could tell a truncated read from a small repo.

scripts/index.py replaces both. It reads the frontmatter, writes README's table,
and refuses when a ZIP has no frontmatter, carries a status outside the
vocabulary, disagrees with its own filename, shares a number, requires a ZIP
that does not exist, or when the corpus has shrunk below a recorded floor. CI
runs it with --check. INDEX.md, both zip-index.json files, docs/site/ and the
root index.html that redirected into it are gone; the site already reads
ZIPs/*.md directly through docs/lib/source.ts.

Eight status values collapse to three. Draft: proposed, no implementation, or an
experiment — an ordinary resting place for a research network. Final: the thing
exists in code. Living: never finalises. Active on a registry became Living;
Active on a completed adoption became Final.

Status now follows the code. 22 are Final because a repository holds the work:
the chain (0015), KMS (0014), teleport (0802), replication (0803), PQ (0005),
genesis (0002), brand adoption (0031), and the AI surfaces that exist —
chat, memory, aci, jin, search, mcp, operative, bitdelta, distillation, and the
published Zen VL/Live/Guard/Translator/Coder models. 113 are Draft, and that is
the honest number: 19 of 28 repository: fields named repos that do not exist,
and the conservation-DeFi, NFT, gaming and DeSci families have Lean proofs and
papers but no contracts or services behind them.

Deleted, with reasons:
  0001, 0003  HLLM and Eco-1/z-JEPA. ZIP-0010 supersedes both and ZIP-0418
              already carries HLLM in full.
  0009        restates ZIP-0427 with no new mechanism.
  0013        asserts Zoo is chain 122, Lux 120, Hanzo 121. They are 200200,
              96369 and 36963. Correcting the map leaves nothing, and its
              supersedes: ZIP-2, ZIP-5 pointed at unrelated proposals.
  0038, 0039  a BSC token-history record and the re-mint migration it feeds.
              A migration path is not a specification of what Zoo is.
  0200        a second ZRC-721 beside ZIP-0701. One standard, one number; 0701
              keeps its place beside ZRC-20 and ZRC-1155.
  0407        calls itself the precursor to Zoo Gym, which is ZIP-0434.
  0433        a summary of ZIP-0011, which is the specification.
  0900        a version chronology, and the only file with no frontmatter.

The 120/121/122 chain-id map appeared in ZIPs 0007 through 0014 and is now the
real one everywhere. requires: had four spellings and now holds ZIP numbers
only; HIP and LP references moved to related-hips and related-lps.

The site builds 148 pages. @hanzo/design moves 0.5.21 to 0.5.25: the older
package shipped files named Zen-Variable.woff2 whose name table said Geist,
vendor VRCL, so the page asked for Zen and painted Geist. The faces the build
now emits name themselves Zen and carry both copyright lines.

pages.yml is removed. GitHub Pages is disabled on this repository, so every run
since May either failed at configure-pages or hung until cancelled. The
Dockerfile served the repository verbatim and relied on the docs/site/ explorer
that is now gone; it builds and serves docs/out instead.
2026-08-28 18:22:02 -07:00

2.8 KiB

zip, title, description, author, status, type, category, network, mirrors, created, tags, requires, related-lps, related-hips
zip title description author status type category network mirrors created tags requires related-lps related-hips
0816 Session KEM — Zoo mirror of HIP-0088 Zoo-side mirror of Hanzo HIP-0088. Locks ML-KEM-768 (default) and ML-KEM-1024 (high-value) as the PQ session KEM under ZOO_STRICT_PQ. Classical X25519 refused. KMAC256 KDF over TupleHash256 transcript. Heavy spec lives in HIP-0088. Zoo Labs Foundation Draft Standards Track Core Zoo Network HIP-0088 2026-05-11
pq
ml-kem
kem
session
handshake
zap
mirror
hip-0088
14
809
LP-022
LP-072
LP-175
HIP-0077
HIP-0088

ZIP-0816: Session KEM

Abstract

ZIP-0816 mirrors HIP-0088 into Zoo Network. The Zoo ZAP handshake under ZOO_STRICT_PQ performs an ML-KEM-768 (FIPS 203 NIST PQ Cat 3, default) or ML-KEM-1024 (Cat 5, high-value) encapsulation, with mutual ML-DSA-65 signatures over the handshake transcript. The derived shared secret is run through KMAC256 (SP 800-185) to produce a 256-bit AEAD key.

Mirrored profile

ProfileID:           0x04  (ProfileZooStrictPQ)
ProfileName:         ZOO_STRICT_PQ
HashSuiteID:         SHA3_NIST                (0x01)
IdentitySchemeID:    ML_DSA_65                (0x42)
KEMSchemeIDDefault:  ML_KEM_768               (0x01)
KEMSchemeIDHighValue: ML_KEM_1024             (0x02)
MinSoundnessBits:    128
MinHashOutputBits:   384
RequireTransparent:  true
ForbidPairings:      true
ForbidKZG:           true
ForbidTrustedSetup:  true
ForbidClassicalSNARKs: true
ForbidDevProofs:     true
ForbidFallbacks:     true

Zoo-specific bindings

  • Canonical KEM ID registry: luxfi/consensus/config/pq_mode.go (KeyExchangeID). Re-exported by luxfi/consensus/protocol/auth/scheme_ids.go via type alias.
  • KEM session primitives: luxfi/node/network/kem/scheme.go. Handshake state machine: luxfi/node/network/peer/handshake.go.
  • Zoo validator-to-validator gossip on ZOO_STRICT_PQ MUST use ML-KEM-768 minimum; conservation-oracle MPC, treasury, and cross-ecosystem bridge sessions use ML-KEM-1024.
  • Session key rotation: 1 hour or 2^28 records.
  • Classical X25519 is refused under ZOO_STRICT_PQ.

Compliance

A Zoo node on ZOO_STRICT_PQ MUST NOT negotiate X25519 or ECDH. The KEM scheme byte is bound into the handshake transcript and into the AEAD-key derivation; substitution is detected at the TupleHash256 binding step.

Governance

Zoo Labs Foundation owns this ZIP via the canonical zips.zoo.ngo process.

References

  • HIP-0088 — canonical source of truth.
  • LP-175 — Lux-side mirror.
  • LP-022 — ZAP wire baseline.
  • LP-072 — ML-KEM primitive.
  • ZIP-0014 — Zoo KMS Integration via Lux KMS.
  • NIST FIPS 203, FIPS 204, FIPS 202, SP 800-185, SP 800-57.
  • luxfi/consensus/config/pq_mode.go — canonical KeyExchangeID.
  • luxfi/node/network/kem/, luxfi/node/network/peer/handshake.go.