Skip to content

PointSav Documentation

The engineering library for the PointSav platform — operating systems and services for regulated businesses that own their data, their AI, and their record-keeping outright. Where the monorepo holds the code, this wiki holds the reasoning: architecture, services, security, and the governance commitments that bind future development.

Machine-based authorization

← All revisions

417a31fa · PointSav Digital Systems ·

security/: replace 12 articles with fresh-draft-first pilot rewrites against schema-topic.yaml

View the full record as of this revision →

@@ -1,130 +1,180 @@
---
schema: foundry-doc-v1
title: "Machine-based authorization"
slug: machine-based-auth
category: security
type: concept
type: topic
content_type: topic
quality: complete
status: active
audience: vendor-public
bcsc_class: public-disclosure-safe
bcsc_class: current-fact
language_protocol: PROSE-TOPIC
last_edited: 2026-07-28
last_edited: 2026-08-03
editor: pointsav-engineering
short_description: "Access is granted to a device's key rather than to a person's password. A short-code pairing ceremony binds an SSH key fingerprint to a user record after operator approval, with no password stored anywhere."
paired_with: machine-based-auth.es.md
short_description: "Machine-based authorization replaces username and password with cryptographic pairing of physical hardware — the pair is the permission, eliminating remote credential theft."
cites: []
references:
  - id: 1
    text: "Perrin, T. 'The Noise Protocol Framework.' noiseprotocol.org, 2016."
    url: "https://noiseprotocol.org/noise.html"
  - id: 2
    text: "Donenfeld, J. A. 'WireGuard: Next Generation Kernel Network Tunnel.' NDSS Symposium, 2017."
    url: "https://www.ndss-symposium.org/ndss2017/ndss-2017-programme/wireguard-next-generation-kernel-network-tunnel/"
---

Every password is a secret a person must remember, and therefore a secret an attacker can take. Phishing, password guessing, credential stuffing, social engineering — the entire class of remote credential theft exists because the credential is something a human knows.

Machine-based authorization removes the knowable secret. Access is a cryptographic pairing of two pieces of physical hardware — the pair is the permission. When a device requests access, both ends demonstrate possession of complementary key material; if the pair verifies, the connection forms; if it does not, the machines are mutually invisible. This model is called **Geometric Security**: access is defined by the topology of active pairings rather than the transmission of shared secrets. A machine that is not paired cannot connect, regardless of what else it knows or presents.

Because authorization binds to hardware rather than to a memorized secret, there is no users table to breach, no login form to phish, and no password to reset. Revocation is physical: the pairing is severed at the machine, and the entire class of remote credential-theft attacks is eliminated by structure rather than by policy.

For a regulated buyer the consequence is concrete. An attack class disappears, and every access event is attributable to specific hardware in the audit ledger. This article covers how pairings work, the four pairing types, the structural advantages over passwords, and the relationship to the [[diode-standard|Diode]] and audit layers.

> **Planned direction — over-the-internet host-native access.** os-console is intended to run host-native on the operator's own machine and pair to a remote Totebox Archive over the public internet. The intended transport is mutual TLS to a verified Totebox endpoint, with machine-based authorization unchanged as the access boundary — the pairing remains the permission, a model aligned with device-identity standards including OAuth 2.0 Device Authorization Grant, Tailscale's control and data-plane separation, and SPIFFE workload identity. Planned hardening includes pairing revocation and short-lived device certificates. *Honesty note:* the current over-the-internet path uses an SSH port-forward tunnel that does not yet verify the remote server's identity, so the end-to-end property — the vendor cannot read operator data in transit — is **intended but not yet delivered** over that hop; it holds once verified mutual TLS lands. See `BRIEF-os-console-rebuild-2030.md` Layer 1.

## Infrastructure and application: two independent layers

MBA operates at the application layer, above and independent of any network infrastructure. This separation is central to the architecture.

The [[ppn-mesh-architecture|PointSav Private Network]] — the WireGuard mesh that connects fleet nodes — provides the transport that `os-*` services run on. Network membership means a machine can reach other machines on the mesh. It does not confer access to what those machines host. A node on the PPN without MBA pairings can reach the network; it cannot open any archive.

Two independent security layers protect a complete `os-console` → `os-totebox` connection:

**Layer 1 — Network membership (PPN):** The connecting machine must be a registered WireGuard peer. Network traffic from unregistered peers is dropped at the network layer.

**Layer 2 — Application pairing (MBA):** The connecting `os-*` service must present a registered public-key fingerprint to `system-gateway-mba`, the application-level gateway component running on the target service. If no pairing record exists for that fingerprint, the connection is refused — even if the network layer allowed the traffic through.

A machine can be on the PPN without any MBA pairings. It can reach the network; it cannot open any doors. This is the sovereignty boundary: the party that owns the network infrastructure does not gain application-layer access to the data that runs on it.

## How a pairing works

A pairing is a cryptographic handshake between two machines. The two ends hold complementary public and private key material. When a [[console-os|Command Ledger]] connects to a [[totebox-os|Totebox]], both sides demonstrate possession of the corresponding key. If the pair verifies, the connection is established. If it does not, the machines are invisible to each other.

`service-pairing` manages these pairings using the Noise Protocol [^1] and WireGuard-style keys [^2], derived from hardware attestation where the underlying platform supports it.

**Correction (2026-07-28):** the live crate that implements this is `system-gateway-mba`
(674 lines total), not a `service-pairing` — that crate name was not found anywhere in
the monorepo. Its actual mechanism, per `pairing_db.rs`'s schema (`request_id, code,
username, tenant, fingerprint, public_key, state`) and `pairing_http.rs`, is a
request/approval workflow keyed by a short `code` and a `public_key`/`fingerprint` pair
moving through `pending`→`approved`/`denied` states — genuinely password-free and
genuinely hardware-key-bound, matching this article's core claim, but not a live Noise
Protocol handshake; no "Noise" or "WireGuard-style key exchange" reference was found
anywhere in the crate's source. `user.rs`'s role field is a plain `role: String`, not a
typed enum matching the four named tiers below — `auth.rs` is a 10-line near-stub. **Not
a whole-article mismatch** — the password-free, hardware-bound design principle holds and
the crate is real — but the specific handshake protocol and the four-tier taxonomy as
named code constructs are not found in what's built today. Flagged, not resolved; needs
project-totebox confirmation of whether the tiers exist as a design intent not yet coded,
or whether `role: String` is the actual (looser) current mechanism.

| Property | Behaviour |
|---|---|
| Authentication | The pairing key itself — no password is ever transmitted or stored |
| Authorisation | The presence of the pairing; permission is the pair |
| Revocation | The pairing is severed at one or both ends; the machines become mutually invisible |
| Hardware binding | Where possible, the private key is sealed in the host's hardware enclave |

## The four pairing types

A [[totebox-os|Totebox]] recognises four pairing types, distinguished by the relationship between the pair's endpoints and the data.

| Pairing | Endpoint | Access | Function |
|---|---|---|---|
| ADMIN | Owner's primary machine ↔ Totebox | Absolute | Master key for VM and hardware control, migration, and key management |
| INPUT | Operator's daily machine ↔ Totebox | Read / write | The default state — full agency over personal data, email, and files |
| USER | Restricted-access machine ↔ Totebox | Read-only | Consulting the data without modifying it — auditors, advisors |
| INTERFACE | Orchestration aggregator ↔ Totebox | Metadata only | Fleet visibility without record-level access |

The INPUT pairing is the default and the most powerful type: a Totebox owner has full agency by default, and restrictions are deliberate downgrades rather than default settings.

## Why this beats passwords

Three structural advantages follow from replacing passwords with pairings.

**No central database to breach.** There is no users table anywhere in the architecture. A successful breach of any one component yields no credential material useful elsewhere.

**No phishing surface.** An operator cannot be tricked into typing a pairing into a fake login form, because a pairing is never typed. It is demonstrated cryptographically by the hardware itself.

**Physical revocation.** When an operator's access should end, the pairing is severed at the machine level. A retained copy of the software binary is inert without the key material; there is no password to reset.

## The boundary discipline

Pairing alone does not grant data access. It grants the ability to attempt access. The [[diode-standard|Diode Standard]] governs what flows through an established pair; the audit ledger records every command and every response. The pair is the prerequisite; the Diode and the [[worm-ledger-design|WORM ledger]] are the gates.

The combination — pairing as access, Diode as direction, audit as record — makes the system auditable end to end, with no password-rotation policy anywhere in it.

## Architecture connections

Machine-based authorization connects to three other architectural layers.

- **[[sel4-microkernel-substrate|seL4 microkernel]]** — the kernel enforces that capability tokens cannot be forged by software running at user privilege.
- **[[capability-based-security|Capability-based security]]** — the capability manager issues and revokes hardware-bound tokens; the access-control model depends on hardware binding for its security guarantees.
- **[[worm-ledger-design|WORM ledger]]** — every authorization event is logged to the append-only ledger, an externally verifiable record of which hardware reached which resource, and when.
- **`system-gateway-mba`** — the application-level gateway crate that enforces pairing records at each `os-*` service boundary; the component that checks incoming key fingerprints against the pairing registry and refuses connections without a matching record.

## Why service-auth was rejected

Early designs considered `service-auth`, modelled on a traditional directory service, as the identity provider. The decision was reversed: a directory service is structured around users, passwords, and group hierarchies — the exact model [[pointsav-overview|PointSav]] is replacing. `service-pairing` was created as the deliberate alternative, and `service-auth` was removed from the architecture before any code was written. See [[pairing-as-permission|pairing as permission]].
**Machine-based authorization** (MBA) grants access to a specific device's cryptographic key
rather than to a person's memorised secret. There is no password to store, transmit, guess, reuse,
or phish; what a user holds is a private key that never leaves their machine, and what the system
records is the fingerprint of the corresponding public key. Access is revoked by removing that
fingerprint, not by forcing a credential reset.

Every password is a secret a person must remember, and therefore a secret an attacker can phish,
guess, stuff, or socially engineer out of them — the entire category of remote credential theft
exists because the credential is something a human knows. Key-based authorisation moves the attack
to physical or persistent access to a specific machine, which is harder to achieve at scale and
much more visible when it happens.

## The pairing ceremony

The live implementation is the `system-gateway-mba` component, and it works as a request,
approval, and binding sequence rather than a login.

A device submits a pairing request carrying a username, an organisation, its public key, and that
key's fingerprint. The server records the request with a generated identifier, a short pairing
code, an attempt counter, a creation time, and an expiry time, and places it in the `pending`
state. An operator then approves or denies it out of band, having compared the short code shown on
the device against the one shown in the approval interface — the step that prevents a request from
an unknown machine being approved by mistake.

Approval moves the request to `approved` and creates the user record binding username,
organisation, and key fingerprint. Denial moves it to `denied`. A sweep marks requests whose expiry
has passed as `expired`. Five HTTP routes cover the ceremony: request, approve, deny, a listing of
pending requests, and a per-request status lookup.

The record shape is deliberately small. The request table holds identifier, code, username,
organisation, fingerprint, public key, role, state, attempt count, creation time, and expiry. The
user table holds fingerprint, username, organisation, role, an active flag, and creation time, with
the fingerprint unique and the organisation constrained to one of two permitted values. **No
password field exists in either table** — verifiable by reading the schema.

### What the fingerprint is

The authorisation module is ten lines and does exactly one thing: it computes an OpenSSH-format
SHA-256 fingerprint of a presented public key. The component's dependencies are an SSH library used
for key parsing and fingerprinting, an embedded SQLite database, a random-number source, and
ordinary serialisation and HTTP crates. The pairing code itself is generated from a
non-cryptographic random source in a human-transcribable alphabet — appropriate for a code an
operator reads aloud or retypes, and not a secret in its own right, since it is useless without
operator approval.

## Two independent layers: network membership and application pairing

MBA operates at the application layer, deliberately independent of network infrastructure. In
deployments using the platform's [[ppn-mesh-architecture|private mesh network]], reaching a machine
at all requires being a registered peer of the encrypted mesh — that is network membership, one
layer. MBA is the other: even a machine that can reach the target over the network is refused at
the application boundary unless its key fingerprint matches an approved pairing. A party that
operates network infrastructure — even the vendor — does not thereby gain application-layer access
to the data running on it: network reachability and data access are granted by different
mechanisms, held by different parties.

A separate node-join service runs the same request-approve-deny-expire shape for admitting compute
nodes to the private network itself. Its records carry a node identifier, a mesh public key, a
declared lower layer, and an architecture; approved nodes are appended to a log file that mesh
provisioning tooling reads. A small shared library provides the short-code generation,
normalisation, and terminal-rendered scannable code used by both ceremonies. The mesh public key is
worth a precise word: it is stored and passed through as an opaque string. Neither service performs
a mesh key exchange; provisioning is carried out by external tooling invoked from shell scripts, and
the placeholder directory nominally reserved for that tooling contains only a README.

## Roles, and what they are not

The role attached to a pairing user record is a plain string, not a typed set of values, and the
approval path writes a single hardcoded default into it. The database applies no constraint on its
content. No handshake-protocol implementation of the kind sometimes associated with this design — a
Noise-style or mesh-VPN-style key exchange — exists anywhere in the component's source; a
whole-tree search found no Noise implementation and no corresponding library anywhere in canonical
source.

A typed pairing role does exist elsewhere in the platform: `PairingRole` in the orchestration
command component (`app-orchestration-command`), an enum with three values — `User` (read/write,
daily operator), `Admin` (full access), and `Interface` (metadata-only, for the orchestration
aggregator). It is not the same field, does not live in this component, and does not carry a fourth
value. Descriptions of four named authorisation tiers implemented as code constructs in this
pairing system are not supported by the source; the separate four-tier `PermissionTier` model that
does exist (`P1`–`P4`) is described in [[personnel-permissions]] and belongs to a different
component and a different data path — the two enums live in the same crate but govern unrelated
concerns and should not be conflated.

The component itself has grown since it was last measured — it now runs to roughly 870 lines across
its source files, not the smaller figure sometimes quoted for it — though its shape (request table,
user table, five HTTP routes, ten-line fingerprint module) is unchanged.

## The transport gap

One honest limitation belongs in the body rather than a footnote. Host-native access over the
public internet currently runs through an SSH port-forwarded tunnel that does **not** verify the
remote server's identity. The intended property — that the vendor cannot read operator data in
transit — is therefore not delivered over that hop today. It becomes true when verified mutual TLS
lands on that path; until then, the pairing ceremony authenticates the device to the service, but
the service is not cryptographically authenticated back to the device across that specific tunnel.

## Why pairing rather than accounts

Three properties follow from binding authority to a device rather than a person.

**Revocation is exact.** Removing a fingerprint removes one machine's access. A compromised laptop
is dealt with without disturbing the same person's other devices or forcing an organisation-wide
credential reset. A departed contractor's retained software copies are inert without approved key
material, and the approval workflow's request records double as an audit trail of who was granted
what, and when.

**Enrolment is observed.** A device becomes known through an approval decision made by a person who
compared a code, not through a self-service form. There is no path by which a device enrols itself,
and no phishing surface exists: a pairing is never typed, so an operator cannot be tricked into
entering it into a counterfeit form.

**The stored value is not a secret.** A fingerprint discloses nothing usable. A breach of the
pairing database yields a list of which keys were trusted — useful reconnaissance, but not
credentials, which is a materially different exposure from a leaked password store. A quieter,
compounding advantage follows: the model has no credential-hygiene liturgy — no rotation schedules,
no complexity policies, no expiring passwords generating helpdesk resets. What remains is a short,
inspectable list of approved machine keys per tenant, which is a security posture a reviewer can
actually audit to completion.

## What this is not

**There is no Noise Protocol handshake and no key exchange in this component.** The cryptography
present is SSH public-key fingerprinting; the mesh keys the pairing services handle are opaque
strings passed to external tooling.

**The component is not named `service-pairing`.** No component of that name exists. The live
implementation is `system-gateway-mba`, and the node-join ceremony is a separate service again.

**The role field is not an enforced tier.** It is an unconstrained string with a hardcoded default
at approval time, not a typed enumeration and not a checked authorisation level. A three-value typed
role does exist, but in a different component for a different purpose, and it is not the four-tier
taxonomy sometimes described for this one.

**MBA is not multi-factor authentication layered on passwords.** There is no password anywhere to
add factors to; the model replaces the category. Nor is it biometric: nothing about a human body is
measured or stored, and the bound entity is a machine, not a person — which also means MBA alone
does not tell you *which human* was at the keyboard of an approved machine; personnel-level
identity and tiering are the separate [[personnel-permissions|personnel and permissions]] layer.

**Pairing is not a login session.** It establishes that a device is known. What that device may
then do is governed by the permission model described elsewhere, which draws on a different data
source entirely, the [[diode-standard|Diode Standard]]'s directional rules, and the
[[worm-ledger-design|append-only audit ledger]] every access event lands in. The pair is the
prerequisite; the direction rules and the ledger are the gates.

**A pairing code is not a credential.** It is a short human-transcribable value from a
non-cryptographic random source, meaningful only during the approval window and only alongside an
operator decision.

**End-to-end transport confidentiality is not currently delivered over the remote-access tunnel.**
See the transport gap above; this is stated as intended, not achieved.

## See also

- [[diode-standard]] — the unidirectional command flow that governs what passes through an established pair
- [[worm-ledger-design]] — the append-only audit ledger that records every authorization event
- [[sel4-microkernel-substrate]] — the seL4 microkernel that enforces capability-token integrity
- [[compliance-and-continuous-disclosure]] — how hardware-bound authorization supports continuous-proof compliance
- [[deployment-patterns]] — how MBA pairing applies across the six canonical deployment configurations
- [[pair-a-new-device]] — step-by-step guide: register a device and assign a pairing tier
- [[ppn-mesh-architecture]] — the WireGuard mesh infrastructure layer the `os-*` services run on; MBA operates above and independently of the PPN
- [[pairing-as-permission]] — the principle that the pairing record is itself the authorisation
- [[pair-a-new-device]] — the operator procedure for running the ceremony
- [[personnel-permissions]] — the four-tier permission model and where it actually lives
- [[enroll-ppn-node]] — the node-join variant of the same ceremony
- [[app-console-keys]] — the device-side interface presenting the pairing code
- [[capability-based-security]] — the authority model above device authentication
- [[diode-standard]]
- [[ppn-mesh-architecture]]
Important Information

Corporate structure. PointSav Digital Systems ("PointSav") is currently a trade name of Woodfine Capital Projects Inc. ("Woodfine"), planned to become a wholly-owned Woodfine subsidiary upon incorporation. PointSav does not itself offer, sell, or solicit any security. Any securities offering associated with Woodfine's real-property direct-hold solutions is made exclusively by Woodfine, and only by means of the applicable Private Placement Memorandum.

No investment advice. This wiki's content is provided for engineering, operational, research, and development purposes. Nothing on this wiki constitutes investment advice or a solicitation to invest in any Woodfine partnership or direct-hold solution.

Intellectual property. The PointSav name, trade name, wordmark, and marks, together with all current and future PointSav- and Totebox-branded products, services, and offerings — and the software, source code, documentation, design system, and all related materials — are proprietary to Woodfine and its affiliates, except for components identified as open source. No rights are granted except as expressly set out in a written license or agreement. The full trademark notice appears in the footer of every page on this site.

Open source components. Portions of the platform are made available under permissive open-source licenses identified in the accompanying repository. Use of those components is governed by their respective license terms.

No warranty; informational use. Content on this wiki is provided for general informational purposes only and does not constitute a representation, warranty, or commitment with respect to product functionality, availability, pricing, or roadmap. Some articles describe planned or intended features, capabilities, and milestones — language such as "planned," "intended," "targeted," "may," and "expected" marks this forward-looking content, which is subject to change and does not constitute a commitment regarding future performance.

Confidentiality. Where an article describes an operational or deployment detail that is not intended for public disclosure, that article is not published on this wiki. Content here is general-purpose engineering documentation, not customer-specific configuration.

Jurisdiction. Woodfine Capital Projects Inc. is organized in British Columbia, Canada. References to the Sovereign Data Foundation on this wiki describe a planned or intended initiative only, not a current equity holder or active governance body.

Changes to this notice. PointSav may update this notice from time to time; the version posted on this page governs.

Not a filing system. This wiki is not a securities filing system, an electronic disclosure repository, or a substitute for SEDAR+ or any other regulatory filing system. Formal securities filings are made through the applicable regulatory filing system, not through this wiki.

Full disclaimer. This notice supplements, and does not replace, the full Disclaimers article. In the event of any conflict, the full Disclaimers article governs.

Read the full disclaimer →