v0.8.38 · Self-certifying nodes. Local proof. No ambient trust.

korium.io

A Rust cryptographic network fabric where discovery, naming, routing, streams, pub-sub, tunneling, and authorization converge on the same local verifier—and every owned task has a clean end.

identity-hex 64 chars BLAKE3-derived, not raw pubkey hex
DID length ~80 chars stable under future signature swaps
grant expiry cap <= 300s enforced by the verifier
covered path 9 hops forwarded QUIC and tunnel tests
korium.io, in motion

One node. Four trust boundaries.

Follow a request through the live surface of Korium 0.8.38. The network can help a packet move; only the destination can decide what that movement means.

01 · AuthN

Authenticate the live key, locally.

The node presents a did:korium identity, its raw Ed25519 key, certificate proof, and PoW. The destination binds the DID digest to the certificate SPKI before trusting the mTLS session—without a CA, resolver, or online registry.

did:koriummTLSkey-bound PoW
02 · AuthZ

Authorize the exact stream and action.

Authentication only proves key possession. A DID-only node exposes only the handlers its application chooses. A service-authorized node additionally checks a namespace-rooted exact-service chain and source policy; protected actions still require a short-lived Biscuit matching issuer, audience, service, resource, and action.

identity-derived postureBiscuit v6≤ 300s grants
03 · Discovery

Find services without inheriting their authority.

Exact service liveness names the nodes currently claiming a service. Optional namespace membership is signed by a separate discovery root and only lists service URNs; an exact-service authority bundle and configured namespace roots still decide who may connect.

exact livenessnamespace membershipno inherited trust
04 · PQC

Harden confidentiality without overstating signatures.

QUIC and direct TCP use TLS 1.3 with only X25519 + ML-KEM-768 hybrid key exchange. No classical group is offered, so there is no downgrade path. Identity signatures remain classical Ed25519, stated explicitly, while BLAKE3-384 identifiers keep routing, grants, and logs compact if a future signature primitive becomes much larger.

ML-KEM-768X25519 hybridBLAKE3-384 IDs
Overview

Korium is an autonomous network fabric.

Korium is valuable because it refuses to let connectivity become authority. Identity, discovery, routing, streams, pub-sub, tunneling, and authorization share one local-verifier trust model instead of being glued together by every application. Version 0.8.38 adds bounded IPv4 and IPv6 mDNS for authenticated local discovery. Public DNS bootstrap is default-off and explicit: applications and the CLI may opt into bounded, best-effort TXT hints without making local mDNS depend on internet access, while identity-pinned seed files and joins remain operator-controlled alternatives. Service authority remains namespace-rooted and exact-service scoped; namespace discovery remains separate from network permission. It retains TLS 1.3 with only X25519 + ML-KEM-768, transport-drop telemetry, and fail-closed cryptographic validation.

01

One security model

Identity, discovery, transport, stream admission, and L7 authorization are not glued together by each application. They share protocol-edge checks.

02

Self-certifying identity

Every node is named by a did:korium URI derived from the public key. The pubkey travels in band, then BLAKE3-binds to the URI before signature verification.

03

No central resolver

Verification does not depend on a DID document fetch, CA, SPIRE server, key registry, or online root. The destination checks the evidence it received.

04

Exact-service admission

DID-only nodes leave handler policy to the application. Supplying exact-service authority activates fail-closed source and stream admission with configured namespace roots and an exact signed source policy; protected actions still require a scoped Biscuit.

05

Identity-routed QUIC

Quinn runs over a Korium UDP substrate that routes by identity, observes addresses, signs probes, and forwards only bounded encrypted QUIC traffic.

06

Bounded discovery

Local nodes browse and advertise through IPv4 and IPv6 mDNS by default. Wider introduction can use identity-pinned seeds or an opt-in, seven-second-bounded public DNS lookup. Bootstrap failure leaves local discovery available; every accepted route hint must still pass signed transport validation and PoW-valid mTLS.

07

Production data planes

Direct QUIC, forwarded QUIC, adjacent NAT traversal, local mDNS, DNS-facing discovery, GossipSub, raw streams, request-response, and TCP tunneling are all carried by authenticated fabric paths.

08

Direct tunnel first

TCP tunnel entry tries native TLS 1.3 mTLS/TCP to the destination before falling back to encrypted QUIC TUNNEL streams over the mesh.

09

Wire bounds, not wishes

DHT values, liveness records, RPC bodies, GossipSub messages, grants, lookup expansion, tunnel concurrency, and caches all have explicit caps.

10

Observable decisions

Verified grants return issuer, audience, service URN, action, resource, expiry, token digest, and bounded app claims. Complete, durable, or tamper-evident audit collection remains a deployment responsibility.

11

PQ-aware identifier surface

The did:korium URI carries a 48-byte BLAKE3-384 digest; the routing identity uses its first 32 bytes. Neither embeds the raw public key, keeping identity fields compact.

12

Owned lifecycle boundaries

Identity, authority, authz, naming, DHT, transport, fabric, GossipSub, tunnel, and node composition own distinct invariants. Actor loops and sessions are cancelled and drained by their runtime owner.

Identity

Self-certifying identity with explicit cryptographic boundaries.

A Korium node is named by a compact did:korium URI, but the verifier never treats the URI as the key. The raw public key is carried as evidence, BLAKE3-bound to the DID, then checked before any signature or transport claim is trusted.

01 DID names the node

did:korium gives routing, grants, logs, and audits a stable node name.

02 Pubkey proves the DID

The certificate carries the public key; the verifier hashes and compares it locally.

03 Crypto is scoped

Ed25519 authenticates current identities while BLAKE3-384 keeps the DID compact.

04 PQC posture is enforced

TLS 1.3 offers only X25519 + ML-KEM-768, while identity signatures remain classical and explicit.

Encryption

Encrypted paths stay bound to identity.

Korium uses QUIC and TLS 1.3 mTLS for encrypted node sessions, then carries those sessions over an identity-aware UDP substrate. Direct traffic, forwarded traffic, raw streams, pub-sub, and TCP tunnels all keep encryption separate from authority.

Session crypto TLS 1.3 mTLS over QUIC Nodes authenticate live keys before encrypted streams are accepted.
PQC-only confidentiality X25519 + ML-KEM-768 over TLS 1.3 The only offered key-exchange group removes classical downgrade paths; identity signatures remain Ed25519.
Encrypted overlay Direct QUIC and forwarded QUIC Transit nodes can forward ciphertext after bounded relay checks, not read it.
Tunnel fallback Native mTLS/TCP, then QUIC TUNNEL Local TCP access can fall back to authenticated encrypted mesh paths.

Direct QUIC

Node-to-node encrypted sessions with mTLS identity and service-scoped admission.

Forwarded QUIC

Relay paths forward bounded ciphertext after adjacent-hop token, TTL, and route checks.

TCP tunnel

Direct mTLS/TCP is tried first, then encrypted QUIC TUNNEL streams over the fabric.

Signed data planes

GossipSub, raw streams, and request-response keep signatures, replay windows, and size caps.

Authority

L4 admission and L7 rights are separate decisions.

A DID-only node authenticates callers but deliberately leaves handler policy to its application. Supplying exact-service authority activates fail-closed L4 source and stream admission. Namespace discovery can list a service, but never grants network permission. L7 AuthZ then independently decides whether the caller may perform an action on a resource.

L4 node proof mTLS DID binding

The node proves key possession and the destination binds the key to the caller DID.

L4 service authority urn:korium:<ns>/<service>

A namespace-rooted exact-service chain and terminal binding prove which instance may serve the URN.

L4 stream admission Caller, service, stream type

The fabric checks whether this node can open this kind of stream to this service.

L7 invocation grant Biscuit right(resource, action)

The application request still needs an issuer-approved, audience-bound grant.

L4 caller

The authenticated caller DID must match the node that opened the transport stream.

L4 service

The destination service URN must be backed by current exact-service binding evidence.

L4 stream

Stream type, route, relay token, TTL, and bounds are checked before the payload is useful.

L7 issuer + audience

principal() identifies a service-approved grant issuer; audience() must match the caller DID seen at mTLS.

L7 scope

The grant must match service URN, issuer policy, resource, and action exactly.

L7 freshness

exp() is mandatory, must be live, and is verifier-capped at 300 seconds.