‹ Console Consilium Belli · comms security
Comms Security & Crypto

A network they can't read and can't join — but can see.

The safe radio + crypto design for a TOC box. Two goals get confused constantly, so we separate them up front: locking outsiders out is a solved problem; staying invisible is not, with any commercial hardware. Everything here buys the first and refuses to pretend at the second — because chasing invisibility costs reliability and buys almost nothing. Civilian, observation-and-reporting only; nothing here targets, jams, or fires.

01

The principle (read first)

02

The layered stack

Four layers, each doing exactly one job. Content is encrypted above every radio, so no single node or link is ever trusted.

Layer 0 — Content crypto above every radio

Never trust the transport. Everyday traffic: ChaCha20-Poly1305 + X25519, Signal-protocol style, with forward secrecy (a stolen key can't open old messages). Add Kyber for post-quantum. The crown-jewel command channel: a one-time pad — the only provably unbreakable system — pads pre-loaded per kit, truly random, used once, destroyed.

Layer 1 — Local mesh 915 MHz ISM · encryption legal

Haven / OpenMANET on Wi-Fi HaLow (802.11ah) is the IP backbone — self-healing, carries ATAK-over-multicast, PTT and video. Meshtastic LoRa is the always-on beacon floor for text and terse status. Both on ISM, where encryption is lawful in NZ.

Layer 2 — Resilient-open HF amateur bands · plaintext only

The last-ditch PACE "E" layer. On NZ amateur spectrum you may authenticate but not encrypt — encrypting to obscure meaning is unlawful. So HF stays open: check-ins and status with agreed brevity terms, never secrets. Anything confidential rides ISM or satellite instead.

Layer 3 — Backhaul Starlink / Iridium · already-encrypted payloads

Bridges mesh islands, carrying only ciphertext, inside WireGuard. Be honest about it: the provider geolocates the dish, the account carries your name, the uplink is a loud emitter, and the VPN is a new trust point, not an eraser. Opaque — not hidden. There is no anonymous satellite terminal.

03

Gematria Primus as the "language code"

You asked whether to use Gematria Primus — read in English — as the language code. Yes, in a specific role. Here's the honest placement.

Legal edge: brevity codes for efficiency are accepted on the open HF layer; a private code designed to hide meaning is not. Keep the runes for identity, speed and authentication — put genuine secrets on ISM or satellite. And remember the Enigma lesson: a written codebook is a capture liability. Treat it like key material.
04

What actually holds

ToolWhereStrength
One-time padCommand channelprovably unbreakable if truly random, key ≥ message, used once, destroyed. Whole difficulty is delivering the pad — solved by handing it over at muster.
ChaCha20 / AES-256Everyday messagesunbreakable in practice — brute force exceeds available energy. Your weak point is the device or the operator, not the cipher.
X25519 · KyberKey exchangestrong — Kyber adds post-quantum cover.
Gematria PrimusIdentity / brevity / checksumobscurity only — great motif, weak secrecy. Vigenère it if it must hold.
Invented "secret language"weak — a substitution cipher with a dictionary; falls to frequency analysis and to anyone who gets the dictionary.
05

Key management — the actual hard part

06

Because they can see you — emission discipline

07

NZ legal band plan

LayerBandRule
Mesh + IP backbone915 MHz ISM (ANZ)General User Licence, no callsign, encryption allowed. Cap TX to the NZ GURL limit — HaLow's 27 dBm is a US figure.
Resilient-openAmateur HFAuthenticate yes, encrypt no. Stays plaintext; brevity for efficiency only.
Confidential long-haulUse licensed commercial HF or satellite, never amateur.
The rule of thumb: if it must be encrypted and legal, it stays on ISM or satellite. Amateur spectrum is the resilient-but-open layer, on purpose.
08

The safe defaults — shipped, not remembered

Every box built from the runbook ships hardened. One script applies the defaults so security doesn't depend on the operator remembering — the Enigma failure mode. Review it, then run it against each node.

comms-harden.shgenerates PSK + WireGuard keys + one-time pads, applies the Meshtastic safe configSH ↓
meshtastic-safe-defaults.txtthe config checklist in plain text — for review and manual applicationTXT ↓

What it sets on every node:

Before you transmit: cap TX power to the NZ GURL limit, and never load a private channel key onto a node you'll leave unattended. The script reminds you of both.
09

Rolling keys & where else the runes earn their keep

You asked about an automated daily / hourly / single-transmission key for the mesh, and where else Gematria could be used. Both are good ideas — done the right way, which is: rotate a key nobody ever transmits, and let the runes be the human verification on top.

The rolling key — derived, never sent

Every node holds one shared master secret (handed over in person at muster). The period key is derived from the master + the clock with a KDF (HKDF-SHA256), so every node computes the same key offline — nothing is transmitted. Rotate daily, hourly, or per-message (a ratchet that gives forward secrecy). This shrinks the record-now-decrypt-later window to a single period.

$ node keyschedule.mjs --period hour
PSK (base64)   z+OsjhUBHPbWBSP7h1g9GBICpCecqyirImDTzQ5+ifo=
KCV (hex)      cfe3ac8e        ← both ends must match
Day-sign       ᚉ ᚛   ᚇ ᚋ   (X·W·F·T·H)
prime-sum      150             ← the spoken checksum / countersign
# cron: 0 * * * *  node keyschedule.mjs --period hour --apply
Where Gematria fits — and it's a real job: the derived key produces a short rune day-sign and a prime-sum checksum (KCV). Two ends say the day-sign word and answer the number to confirm they hold the same key without ever revealing it — pure authentication, legal even on amateur HF. The KDF is the strength; the runes are verification, never entropy.

Where else to use it:

keyschedule.mjsrolling day/hour/per-message key from master + clock, with the Gematria day-sign + KCVMJS ↓
wg-backhaul.shWireGuard hub-and-spoke generator for the satellite / internet backhaul (Layer 3)SH ↓
Crypto field sheetprintable: Gematria table, day-code log, one-time-pad worksheet, brevity codebookOpen ↗
Time sync: rolling keys need agreed UTC — GPS is receive-only and safe for this. Accept the previous period for a short overlap so a clock skew never drops the net. And the master secret is the crown jewel: distribute in person, never transmit, rotate if a node is lost.
10

Verdict

Design for resilience, not concealment.

Confidentiality is yours — a network outsiders can't read and can't join. Modern crypto on the ISM layers, a one-time pad for the command channel, keyless relays, discipline on top.

Invisibility is not, and chasing it trades away reliability for almost nothing. Assume you are seen; make sure nothing seen can be read.

Gematria Primus earns its place as your identity, brevity and authentication layer — English in runes, with the prime-sum as a checksum — sitting on top of real crypto, never in place of it.

◆ All Pages