/etc/psh/security

Security & scope_

The required cryptographic profile, process boundaries, and limits of the current implementation.

Experimental. Unaudited. For evaluation.

psh is a new protocol and implementation. Internal tests and reviews do not establish production readiness, an external security audit, or a formal protocol proof. Strong individual primitives do not prove the security of the whole system.

The required profile

One mandatory profile.

There is no classical-only or legacy fallback. Both endpoints must implement psh/3 and use complete paired identities.

TransportDTLS 1.3 over UDP

ALPN psh/3. Tickets, resumption, early data, and compression are disabled.

Key exchangeX25519 + ML-KEM-768

The mandatory hybrid group combines classical and post-quantum key agreement.

Host & user identityEd25519 + ML-DSA-87

Both components are required. This is a connection-bound psh construction, not a native composite TLS signature.

Record protectionChaCha20-Poly1305

The OpenSSL DTLS implementation supplies authenticated encryption and the HKDF-SHA-256 key schedule.

ImplementationPinned OpenSSL 4.1.0

Cryptographic primitives come from the vendored library. psh does not implement its own encryption primitives.

Read the complete cryptographic policy

Trust, in order

Verify the host before disclosing identity.

A possession proof identifies a key. Independently verified fingerprints or trusted provisioning establish whether that key belongs to your host.

  1. 01

    Establish transport

    Complete the mandatory hybrid DTLS exchange.

  2. 02

    Verify the host pair

    Validate the connection-bound host proof and accept the complete-pair pin.

  3. 03

    Authenticate the user

    The broker independently authorizes the pair and verifies both user signatures.

  4. 04

    Launch the session

    Run the requested shell or command as the authorized non-root account.

Exact transcripts and authentication contract

System boundaries

Process and resource boundaries.

Separate parsing and privilege

Network parsing runs in restricted, unprivileged workers. A privileged broker retains host keys and independently verifies user authorization. A worker cannot authorize itself.

Validate a changing path

A new client address is a candidate, not an immediate replacement. The worker promotes it only after an encrypted challenge and matching return-path response.

Put limits on state

Datagrams, queues, sessions, authentication attempts, and timers are bounded. The current limits include 64 total connections and 16 pending authentications.

Protect local identities

Paired private files require restrictive ownership and permissions. Interactive client keys can use a local passphrase. Unattended host keys are unencrypted and root-owned.

Compatibility & limitations

What psh does not do.

psh is its own protocol. It has no SSH wire compatibility and does not claim overall security equivalence to OpenSSH or whole-protocol NIST category 5 / CNSA compliance.

One live session
No multiplexing, detached reattachment, or server migration. A new client invocation starts a new session.
Remote shells and commands
No agent forwarding, port forwarding, file-transfer subsystem, or PAM integration.
Endpoint trust still matters
A compromised endpoint is not made trustworthy by the authentication construction. First-use pins need independent verification.
Linux runtime requirements
The daemon requires Linux 5.14+, writable cgroup v2, and the process-management capabilities described in the build guide.

Inspect the evidence.

Current test instructions, historical results, protocol details, and implementation rationale are available in the documentation. Dated results apply to their recorded revision.

Testing & validation