mirror of
https://github.com/luxfi/pqrns.git
synced 2026-10-30 15:21:45 +00:00
PQ-RNS extends the Reticulum Network Stack (markqvist/Reticulum) with
a hybrid PQ identity and key-exchange layer without forking the
reference protocol. Capability-negotiated; mixed networks coexist
with native classical RNS peers.
Initial drop:
- cmd/pqrnsd daemon: serve / announce / dial / identity / version
- pkg/identity hybrid identity wire layout (PublicIdentitySize = 3200 bytes)
Ed25519 || X25519 || ML-DSA-65 || ML-KEM-768
16-byte SHA-256 fingerprint (matches native RNS shape)
- pkg/link (skeleton; hybrid link establishment + session KDF)
- pkg/announce (skeleton; capability-bearing announce frames)
- pkg/cap (skeleton; capability negotiation:
require / hybrid_full / hybrid_psk modes)
- .github/workflows CI (build / vet / test / gofmt)
- LICENSE Apache-2.0
- README crypto stack, layout, config, composition, status
Primitives:
identity sig Ed25519 + ML-DSA-65 (FIPS 204)
KEX X25519 + ML-KEM-768 (FIPS 203)
session enc AES-256-CBC + HMAC-SHA-256 (unchanged from native RNS)
KDF HKDF-SHA-256 with explicit per-layer context strings:
PQRNS-LINK-v1
PQRNS-IDENTITY-SIG-v1
PQRNS-ANNOUNCE-SIG-v1
PQRNS-LINK-REKEY-v1
The paper at luxfi/papers/pq-rns/pq-rns.tex is the authoritative spec.
Implementation tracks the paper.
Composition: pairs with luxfi/zwing (TCP/IP transport) and luxfi/pqsafe
(file envelope). Carrier-agnostic; the PQSAFE envelope rides either
Z-Wing on TCP/IP or PQ-RNS on mesh / LoRa / packet radio / optical.