SENTRADOCUMENTATIONThe trust model behind the SENTRA platform: an offline root key, an encrypted licensing vault, signed licences and signing authorities, signed software releases, two-factor sign-in everywhere, least-privilege roles, tamper-evident audit ledgers, what data leaves a box, fail-open design and service hardening.
The SENTRA security architecture on one page.
SENTRA is a family of security products — SENTRA AI Threat Shield (ATS) for websites and APIs, SENTRA Network
Threat Shield (NTS) for internet lines, SENTRA GUARD to run them for many customers and SENTRA VIEW to command a
fleet of GUARDs — backed by two SENTRA services: the Licensing Authority (licensing.sentra-ai.com) and the
release server (updates.sentra-ai.com).
The platform is built on five principles:
| Principle | In practice |
|---|---|
| One root of trust, kept offline | A single Ed25519 root key. Its private half lives only in an encrypted, sealed vault (plus one offline recovery copy). Every product carries only the public half. |
| Everything that matters is signed | Licences, signing-authority certificates, release keys, release lists, packages and every file in them chain back to the root key. Products verify signatures themselves; they never trust a server just because they reached it. |
| Least privilege and two people | Roles and per-user limits everywhere; two-factor sign-in; a fresh 2FA code for sensitive actions; four-eyes approval for licences and releases. |
| Tamper-evident records | Administrative actions are written to hash-chained audit ledgers that reveal any edit, deletion or reordering. |
| Protection never stops | Licensing and update problems never switch protection off; inspection components fail open rather than cutting a customer's traffic. |
This document describes mechanisms, not operational secrets. It applies to ATS 2.26, NTS 0.18, GUARD & VIEW 1.25 and Licensing Authority 1.2.
The SENTRA root key, the encrypted licensing vault, and the keys derived from it.
SENTRA has one root key (Ed25519). Its public half is built into every ATS, NTS, GUARD and VIEW. Its private half:
The root key signs: stand-alone and GUARD licences, signing-authority certificates for VIEWs and GUARDs, and the certificate of the release key. A root-key rotation is prepared in advance: products are first updated to trust the new public key alongside the old one; only then does the new key start signing.
| Layer | Mechanism |
|---|---|
| Master key | 256 random bits, created once, held only in memory while the vault is unsealed |
| Wrapping | AES-256-GCM under a key derived from the vault passphrase with scrypt (N = 2^17, r = 8, p = 1: about 128 MiB of memory per guess) |
| Records | Every record (users, customers, licences, keys, authorities, settings) encrypted with AES-256-GCM; the record's type and ID are bound in as associated data |
| Sub-keys | Derived with HKDF-SHA256: separate keys for records, the blind index, the audit trail and its MACs |
| Look-ups | An HMAC-SHA256 blind index: names and IDs are never stored readably, not even a customer's name |
| Sealing | After any restart the vault is sealed; nothing can be read or signed until an authorised person enters the passphrase |
Backups are copies of the encrypted files: useless without the passphrase. The passphrase is not stored anywhere on the server and cannot be recovered.
| Key | Held by | Certified by | Signs |
|---|---|---|---|
| Root key | The vault (+ offline copy) | — | OTG1 licences, OTGA1 authority certificates, the release-key certificate |
| Authority key | A customer's VIEW or GUARD (generated there, never leaves it) | The root key, with limits | OTG2 licences for that customer's fleet |
| Release key | The vault | The root key (5-year certificate, limited to SENTRA's products) | Each product's release list |
A compromise of one VIEW's authority key lets an attacker issue keys only within that authority's limits (products, modules, counts, latest expiry), and only until the certificate ends. A compromise of the release key can be answered by rotating it: products trust the root, not the release key, so a new certified release key replaces it at once.
Root-signed licences, signing authorities with limits, how products verify a licence, online check-in and revocation.
| Format | Signed by | Carries |
|---|---|---|
OTG1 |
Root key | Product, Installation ID (or any), customer, modules, start, expiry; seats and tier for a GUARD |
OTGA1 |
Root key | An authority's own public key and its limits: products, modules, counts, latest expiry, validity |
OTG2 |
An authority's key | The same as OTG1, plus the authority's certificate and ID |
Every part is compact JSON with sorted keys; signatures are Ed25519 over the exact bytes. A key can be pasted anywhere and verified offline.
Customers with a VIEW fleet, or a stand-alone GUARD, receive a signing authority: their own VIEW or GUARD generates a key pair and the Licensing Authority certifies the public key with limits. The authority then licenses the systems in its fleet by itself, even when disconnected, and reports every key it issues back to the Licensing Authority — online, signed with its own key, or as a signed ledger file.
For an authority-issued (OTG2) licence a product checks, offline:
A key that fails any check is rejected with the reason in plain words.
ATS and NTS with internet access check in with the Licensing Authority about two minutes after start and every six hours. They send only: the product, the Installation ID, the host name, the software version and the IDs of the licences they hold (not the keys). The answer gives each licence's status and any renewed keys for that installation.
A revoked licence is marked revoked on the box at its next check-in and stays revoked across restarts. Check-in can be switched off on a box that must never contact the internet; that box then relies on its keys' expiry dates.
Licensing never stops protection. A module without a valid licence has a 30-day grace period and then becomes restricted: protection keeps running as configured; only configuration changes for that module are blocked.
How SENTRA builds, approves, signs and distributes updates, and what every system checks before installing one.
root key (built in)
└─ release-key certificate (signed by the root; valid dates; allowed products)
└─ release list (index.json, signed by the release key, checked over its exact bytes)
└─ the package's SHA-256 and the file list's SHA-256
└─ every file's SHA-256
Nothing is installed unless every link checks out. SENTRA VIEW passes the signed proof down to each GUARD, which checks every file again, and each GUARD to its ATS and NTS boxes, which check again: no layer has to trust the one above it.
updates.sentra-ai.com only serves signed files. Someone who controlled it, or the network path to it, could at most
delay updates; they could not make any SENTRA system install code SENTRA did not approve. A second release server can
therefore be added for availability without adding any trust.
Customer administrators decide when an offered update is installed (now, scheduled, or skipped), unless they choose automatic updates. Fleet operators can lock GUARDs and nodes to signed releases only.
Two-factor sign-in, step-up confirmation, roles and least privilege, sessions and lockouts across the SENTRA consoles.
| Console | Two-factor (TOTP) |
|---|---|
| Licensing Authority | Always required: set up at the first sign-in, can't be skipped; eight one-time recovery codes |
| SENTRA VIEW, SENTRA GUARD | Available to every user; the security policy can require it for all staff |
| ATS and NTS | Available to every user; a GUARD's policy can require it for the users it manages on its boxes |
Codes follow RFC 6238 (30-second steps) and each code is accepted once.
In the Licensing Authority, revealing keys, downloading key bundles, approving licences and releases, managing keys, users and policy need a fresh two-factor code, valid for a few minutes, even inside a signed-in session.
HttpOnly and SameSite=Strict, and Secure
over HTTPS. In the Licensing Authority every change also needs a per-session CSRF token, cross-site requests are
refused, and idle and absolute session time-outs apply.How SENTRA records administrative actions so that any later change to the record is visible.
| Where | What is recorded | Protection |
|---|---|---|
| Licensing Authority | Every sign-in (and refused attempt), key reveal, bundle download, approval, issue, revocation, authority enrolment and sync, import, key and user change, policy change, seal/unseal, release approval, publication and withdrawal | Each entry AES-256-GCM encrypted and hash-chained to the previous one (SHA-256), each chain value sealed with an HMAC under a vault key; one-click verification of the whole chain |
| SENTRA AI Threat Shield | Security decisions and administrative changes | A tamper-evident ledger that can be verified and exported |
| SENTRA Network Threat Shield | Every administrative change from the console and the command line | One JSON line per entry holding the SHA-256 of the previous entry; sentra-nts audit verify checks it; secrets are never written |
| SENTRA VIEW | Staff actions across the fleet | Entries chained by hash |
In a hash chain each entry includes a fingerprint of the one before it. Editing, deleting or reordering any past entry changes every fingerprint after it, so verification shows exactly where the record was altered.
The Licensing Authority's trail names what was done (for example "revealed licence OTG-…"), by whom, from where and when; it never holds passwords, 2FA codes, recovery codes, licence keys or private keys. The NTS ledger likewise never writes passwords, tokens, 2FA codes or mail passwords.
What leaves a SENTRA box, where it goes, and what stays on the customer's systems.
SENTRA products run on the customer's own servers or appliances. Traffic is inspected there; it is not sent to SENTRA.
| To | When | What | Can be switched off |
|---|---|---|---|
licensing.sentra-ai.com (licence check-in, ATS and NTS) |
~2 minutes after start, then every 6 hours | Product, Installation ID, host name, software version, the IDs of the licences it holds | Yes: SENTRA_LICENSING_CHECK=0 or "licensing_check": false |
updates.sentra-ai.com (stand-alone ATS and NTS, SENTRA VIEW) |
Every 30 minutes (VIEW: every 15 minutes when automatic, or on demand) | Downloads only: the signed release list and, when an update is installed, the package | Updates are installed only when an administrator decides (or chooses automatic) |
licensing.sentra-ai.com (VIEW or GUARD signing authority) |
Enrolment, and syncs | The authority's public key at enrolment; signed records of the licences it issued (licence keys, target system names, status) | An offline authority uses a signed ledger file instead |
No traffic content, request logs, visitor addresses, customer user accounts, passwords or configuration are sent to SENTRA by these mechanisms.
Within a customer's or operator's own fleet, data flows only between their own systems:
Some features contact outside services only when an administrator switches them on, for example public threat feeds or an AI provider for the AI analyst. The ATS console states this on every page: it only contacts outside services you switch on.
Why licensing, updates and component failures never cut a customer's traffic.
A security product that stops traffic when it has a problem becomes the outage. SENTRA is designed so that its own failures degrade inspection, not connectivity.
sentra-shield-setup bypass on) does the same on purpose, within about 5 seconds, and
is undone with bypass off.How SENTRA's own services run with the least privilege and the smallest network exposure.
| Service | Hardening |
|---|---|
| Licensing Authority | Own system user without a login shell; code owned by root and read-only to the service; data folder readable only by the service; listens on 127.0.0.1 only; systemd sandbox: no capabilities, NoNewPrivileges, read-only system (ProtectSystem=strict), private /tmp and devices, kernel and control-group protection, restricted address families and namespaces, a system-call filter that forbids privileged calls, private umask, no core dumps |
| Release builder | Its own unprivileged user; can write only its work folder; can't read the vault; runs product tests with a temporary home folder and a minimal environment; never signs |
| Release server | Static files only, on 127.0.0.1, behind SENTRA AI Threat Shield; only the release paths answer, everything else is 404 |
| SENTRA AI Threat Shield | Runs as its own service user under systemd with NoNewPrivileges and ProtectSystem=strict, holding only the capability it needs to bind web ports |
X-Frame-Options: DENY,
nosniff, no referrer, cross-origin isolation headers, a restrictive permissions policy, noindex.| Public name | Served by | Behind |
|---|---|---|
licensing.sentra-ai.com |
Licensing Authority on 127.0.0.1:8640 |
SENTRA AI Threat Shield (TLS, inspection, automatic bans) |
updates.sentra-ai.com |
Release server on 127.0.0.1:8641 |
SENTRA AI Threat Shield |
Neither service is reachable directly from the internet. SENTRA's own public services are protected by the same product SENTRA sells.
The practical steps that keep a SENTRA deployment as secure as it is designed to be.
licensing.sentra-ai.com so revocations and renewals reach your boxes, unless your policy
forbids any outside contact.updates.sentra-ai.com from the systems that update directly.Write to demo@sentra-ai.com. Please include the product, version and what you observed, and don't include passwords,
keys or personal data.