Continuis Labs Research · CLR-003 · Revision 0.9 · April 2026

Zero-Trust Edge:
Hardware Identity and Secure Authentication
for Connected Physical Systems

← All Research PDP Specification
Abstract

Industrial sensing systems face a security landscape that traditional OT protocols were never designed to address: internet-connected gateways, cloud-side data processing, third-party integrations, and an expanding attack surface that now spans from hardware probes to AI inference engines. This paper describes the security architecture of the MNEMOS platform — a zero-trust design that applies cryptographic verification at every trust boundary, from probe-to-gateway authentication via ECDSA-P256 on hardware secure elements, through TLS 1.3 in transit, to SHA-256 hashed gateway bearer tokens at the platform boundary. We document the complete threat model, describe each defensive control and the attack it mitigates, and provide implementation guidance for hardware manufacturers and gateway developers building PDP-compliant systems.

§1Threat Model

The MNEMOS threat model considers adversaries with the following capabilities: physical access to deployed probes and gateways; passive interception of bus traffic between probe and gateway; active man-in-the-middle injection on the gateway-to-broker MQTT connection; access to gateway firmware images; and read access to the platform database (e.g. through a compromised ORM injection). We explicitly do not model adversaries with the capability to break ECDSA-P256 or AES-256 — these are computationally infeasible with known techniques.

ThreatActorSeverityMitigations
Counterfeit probe injecting false measurements Supply chain attacker, state actor CRITICAL ECDSA AuthCRL
EEPROM tampering to alter calibration coefficients Insider threat, physical access HIGH TEDS Sig
Replay attack: replaying captured measurement frames Network attacker MEDIUM SEQ CounterTLS
Gateway credential theft to inject data at platform level Compromised IT system, insider HIGH SHA-256 HashToken Rotation
MQTT man-in-the-middle: intercept or modify ingest payloads Network attacker, lateral movement HIGH TLS 1.3Cert Pinning
SQL injection / ORM injection via ingest payload Attacker controlling a gateway MEDIUM Parameterised SQLDRF Validation
Gateway token theft from firmware image Reverse engineer, insider MEDIUM Per-device tokensRevocation
Platform database read: exposure of historical measurements DB compromise MEDIUM No plaintext tokensOrg isolation
Denial of service via measurement flood Compromised gateway LOW 5k batch limitRate limiting

§2Zero-Trust Principles Applied to Physical Systems

Zero-trust architecture holds that no entity — whether inside or outside the network perimeter — is trusted by default. Every access request must be verified, regardless of where it originates. For digital systems, zero-trust has been operationalised through mutual TLS, JWT bearer tokens, and continuous verification of device posture. For physical sensing systems, zero-trust requires an additional layer: verification of the physical hardware itself, not just the software running on it.

The MNEMOS security architecture applies zero-trust at three distinct boundaries:

  • Probe-to-gateway: The gateway does not trust any probe, regardless of its declared identity or the physical port it is connected to. Every probe must complete ECDSA-P256 mutual authentication before any of its data is accepted.
  • Gateway-to-broker: The MQTT broker does not trust any gateway without a valid TLS certificate and MQTT credential. The broker authenticates the gateway's TLS client certificate on every connection.
  • Gateway-to-platform: The Vigil API does not trust any ingest request without a valid gateway bearer token. The token is verified by comparing its SHA-256 hash to the stored hash — the plaintext is never stored or logged.
"In a zero-trust physical system, being physically present is not a credential. Only cryptographic proof of identity is."

This contrasts sharply with traditional OT security models, which relied on network segmentation as the primary defence. Air-gapped networks and DMZ architectures assumed that anything inside the perimeter was trustworthy. Modern OT environments — with cloud connectivity, remote maintenance access, and supply chain components from dozens of vendors — cannot make that assumption. Zero-trust is not an optional enhancement for connected physical systems; it is a prerequisite for safe operation.

§3Hardware Identity — The Secure Element

The foundation of PDP security is the secure element — a tamper-resistant hardware component that generates, stores, and uses the probe's ECDSA-P256 private key without ever exposing it to the probe's main processor. The reference implementation uses the Microchip ATECC608B, which costs approximately $0.50 at volume and is available in a 3mm × 2mm UDFN package suitable for compact probe PCBs.

Key generation and provisioning

Private key generation occurs inside the secure element during probe manufacture, using its internal hardware random number generator. The key never leaves the secure element and cannot be extracted via any documented interface — the ATECC608B's hardware security architecture blocks key read-out through software and resists physical fault injection (glitching, power analysis) through built-in countermeasures.

At manufacture, the probe's public key is read from the secure element, combined with the probe's hardware_id and manufacturer metadata, and signed by the manufacturer's intermediate CA to produce the device certificate. This certificate is written to the probe's TEDS EEPROM (offset 0x0230). The private key never leaves the factory — only the signed certificate.

Secure element zone configuration

The ATECC608B is configured with the following zone permissions during provisioning:

  • Zone 0 (Configuration): Write-once during provisioning. Contains key slot permissions, I²C address, and device configuration.
  • Zone 1 (OTP): One-time programmable. Stores the hardware_id (16 bytes) and a flag byte indicating provisioning completion.
  • Zone 2 (Data): Key slot 0 contains the ECDSA-P256 private key (read-never, sign-always). Key slot 1 contains the device public key (read-always). Slot 2 stores a 32-byte provisioning secret for manufacturing validation.
Design principle: The secure element is configured such that a fully provisioned probe, even if physically stolen and disassembled by an expert attacker, cannot yield the private key. The only recoverable information is the public key and device certificate — both of which are already public knowledge (stored in EEPROM and the PDP certificate transparency log).

§4Probe Authentication — ECDSA-P256 Challenge-Response

PDP authentication uses a mutual challenge-response protocol. The choice of ECDSA-P256 (NIST P-256 / secp256r1) balances security — 128-bit equivalent security level — against the computational constraints of embedded microcontrollers. P-256 signature generation takes approximately 0.5ms on an ARM Cortex-M4 at 120 MHz, which is well within the sub-500ms Phase 2 budget specified in the PDP lifecycle.

Authentication message sequence

Gateway AUTH_CHALLENGE { nonce: 32B random, session: 1B }
Probe AUTH_RESPONSE { sig: ECDSA(nonce||session), cert_chain: [device_cert, mfr_cert] }
Gateway · verify: chain → PDP Root CA; verify: sig over (nonce||session)
Probe AUTH_CHALLENGE { nonce: 32B random }
Gateway AUTH_RESPONSE { sig: ECDSA(nonce), gateway_cert_chain }
Probe · verify: gateway cert chain; verify: gateway sig
Both · ECDH key agreement → session key for optional payload encryption

The session field in the first AUTH_CHALLENGE is the session address assigned in Phase 1 enumeration. Including it in the signed data prevents cross-session replay: an AUTH_RESPONSE from session 3 cannot be replayed in session 7, because the session byte in the signature would not match.

Authentication failure handling

Authentication failure results in: immediate disconnect; an AUTH_FAILED event written to the platform log (device_id if extractable from certificate, otherwise public key fingerprint); a mandatory 5-second reconnect lockout on the physical port; and an increment of the failure counter for the hardware_id. After 5 consecutive failures from the same hardware_id within 60 seconds, the gateway blacklists that ID for 10 minutes and alerts the platform. This rate-limiting prevents brute-force attacks on the authentication protocol.

§5Certificate Authority Architecture

The PDP certificate hierarchy has three levels:

  • PDP Root CA — Maintained offline by Continuis Labs. Signs only intermediate CA certificates. The Root CA private key is stored on a hardware security module (HSM) in an air-gapped environment and is never connected to any network. The Root CA certificate is embedded in gateway firmware.
  • Manufacturer Intermediate CA — Issued to each approved probe manufacturer. Signs device certificates for probes manufactured under that manufacturer's authorisation. Intermediate CAs can be revoked by the PDP Root CA if a manufacturer's security is compromised.
  • Device Certificate — Issued per probe at manufacture. Contains the probe's public key, hardware_id, manufacturer OID, probe model, and a validity period of 10 years (reflecting typical industrial asset lifetimes).

Certificate Revocation List

The PDP CRL is a signed JSON document listing revoked device certificate serial numbers, grouped by manufacturer Intermediate CA. It is distributed via the Vigil API and cached on each gateway. Gateways must refresh the CRL at every MQTT reconnect and must not accept probe connections that cannot be verified against the current CRL. A gateway that has been offline for more than 72 hours must refuse new probe connections until it refreshes the CRL, preventing stale revocation data from creating a persistent security window.

§6Gateway-to-Platform Authentication

Gateway-to-platform authentication uses a separate mechanism from probe-to-gateway authentication. The decoupling is intentional: compromise of a platform gateway token does not expose probe private keys, and vice versa. Gateway tokens use a simpler, stateless scheme based on opaque bearer tokens and one-way hashing.

Token format and storage

Component
Value
Notes
Prefix
gw_
Human-readable type indicator; allows instant visual identification
Random body
54 URL-safe base64 characters from secrets.token_urlsafe(40)
~240 bits of entropy; infeasible to brute-force
Total length
57 characters
Fits in a single config line; no wrapping issues
Stored form
SHA-256 hex digest only
Plaintext never stored; shown once at creation

Authentication flow

On each API call, the gateway includes the raw token in the Authorization: Bearer gw_... header. The platform computes SHA-256(raw_key) and performs a single indexed database lookup against the key_hash column. There is no timing-sensitive comparison: since the hash lookup is indexed and returns at most one row, timing side-channels are not a meaningful attack vector.

Token lifecycle

  • Creation: Via python manage.py issue_gateway_token. Plaintext shown once to the operator, stored in firmware/config manager, never logged or stored on the platform.
  • Rotation: Issue a new token, flash to gateway, verify function, then deactivate the old token. Zero-downtime rotation is possible because old and new tokens coexist until the operator deactivates the old one.
  • Revocation: Set is_active=False on the GatewayToken record. Takes effect on the next API call — no restart required. The gateway token is checked on every ingest call, so revocation propagates within seconds.
  • Expiry: Optional. Set expires_at on the token for temporary deployment access or contractor credentials. The platform checks expires_at on every authentication and returns 401 for expired tokens.
Security note: Gateway tokens are per-device credentials, not per-user. If a gateway is stolen or decommissioned, its token should be immediately revoked. Do not share tokens between gateway devices. Per-device tokens ensure that a compromised token affects only the single gateway it was issued to, not the entire organisation's ingest pipeline.

§7Transport Security — TLS 1.3

All communication between the gateway and the Vigil platform (both MQTT and HTTPS) uses TLS 1.3 with mutual authentication. TLS 1.3 eliminates the negotiation vulnerabilities present in TLS 1.2 (BEAST, POODLE, CRIME, Lucky-13) and removes all deprecated cipher suites from the handshake, accepting only AEAD cipher suites: TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, and TLS_AES_128_GCM_SHA256.

MQTT-TLS configuration

The reference Mosquitto broker configuration enables:

  • TLS 1.3 minimum version (no fallback to TLS 1.2 in production)
  • Client certificate required (require_certificate true) — gateways present a TLS client certificate in addition to MQTT credentials
  • Certificate pinning in gateway firmware: gateways verify the broker's certificate fingerprint before accepting the connection, preventing MITM with rogue certificates
  • OCSP stapling on the broker: allows clients to verify broker certificate validity without a separate OCSP request

The two-credential model

Gateways authenticate to the platform with two credentials: a TLS client certificate (proving they are a known hardware device) and a gateway bearer token in the HTTP header (proving they have been authorised by a platform administrator to ingest data for a specific organisation). This two-factor approach means that even if an attacker obtains a valid bearer token (e.g. by reading a gateway's config file), they cannot use it without also having a valid TLS client certificate — which requires access to the gateway's certificate private key.

§8TEDS Integrity and Anti-Tamper

The TEDS EEPROM is the ground truth for a probe's identity, calibration, and channel configuration. Tampering with it — by modifying calibration coefficients, injecting a different certificate, or altering channel quantity codes — could cause the platform to silently accept false measurements. The TEDS security design prevents this through a combination of hardware access control and cryptographic signing.

Hardware write protection

After provisioning, the TEDS EEPROM's write-protect pin is tied permanently high via a solder jumper on the probe PCB. This is a one-way, non-reversible operation that prevents any write to the EEPROM in the field — including by the probe's own microcontroller. The only way to alter the EEPROM after write-protect is set is physical de-soldering of the component, which is clearly destructive and visible on inspection.

Cryptographic integrity

Even if an attacker overcomes the hardware write protection (e.g. by replacing the EEPROM with a modified one), the ECDSA-P256 signature over the entire TEDS data region (bytes 0x0000–0x042F) will fail verification because the attacker does not have the probe's private key (held in the secure element). Any modification to calibration coefficients, channel tables, or the certificate region invalidates the signature, and the gateway rejects the probe with a TEDS_INTEGRITY_FAILURE event.

Attack scenario: An attacker replaces a legitimate probe's EEPROM with a modified one containing altered calibration coefficients designed to cause systematic measurement bias. The gateway reads the modified EEPROM, computes the SHA-256 digest of the data region, and attempts to verify the ECDSA-P256 signature using the device public key (extracted from the certificate in the EEPROM). The signature fails because the data was changed without re-signing with the device private key (which the attacker does not have). The probe is rejected. The attack fails.

§9Audit, Logging, and Incident Response

The MNEMOS platform maintains a comprehensive audit trail covering all security-relevant events. Logs are structured JSON, written to stdout (captured by the container runtime) and optionally streamed to an external SIEM.

Security events logged

  • AUTH_FAILED: Probe authentication failure — hardware_id (if extractable), public key fingerprint, failure reason (signature, CRL, expired cert), timestamp, gateway_id.
  • TEDS_INTEGRITY_FAILURE: EEPROM signature verification failure — hardware_id, EEPROM hash, gateway_id, timestamp.
  • TOKEN_AUTH_FAILED: Invalid or expired gateway bearer token — key prefix (first 12 chars), source IP, timestamp.
  • TOKEN_REVOKED: Ingest attempt with a deactivated token — key prefix, organisation, timestamp.
  • INGEST_REJECTED: Measurement batch containing unknown binding IDs — hardware_id, rejected binding count, timestamp.
  • RATE_LIMIT_EXCEEDED: Gateway exceeding ingest rate limits — hardware_id, rate, timestamp.

Incident response procedures

In the event of a suspected security incident — compromised gateway token, rogue probe, or unusual measurement patterns — the recommended response procedure is:

  • Immediately set is_active=False on the suspected gateway token to halt further data ingestion from that gateway.
  • Review the AlertNotification and authentication failure logs for the affected gateway and time window.
  • If a probe is suspected of generating false data, review its measurement history against expected ranges and flag the affected binding IDs for manual review.
  • For compromised manufacturer intermediate CA: submit a CRL update to revoke all device certificates issued by that CA. Distribute the updated CRL to all gateways via the next MQTT reconnect.
  • Issue a replacement gateway token, flash it to the gateway, and re-enable the gateway with a new token after the investigation is complete.

§10Compliance Posture

The MNEMOS security architecture is designed to support compliance with major industrial cybersecurity frameworks. The following mapping is indicative; formal compliance assessments require engagement with a qualified third-party auditor.

IEC 62443 alignment

IEC 62443 (Industrial Automation and Control Systems Security) defines Security Levels (SL) 1–4. The MNEMOS PDP authentication and TEDS integrity controls align with SL-2 (protection against intentional violation using simple means) and partially with SL-3 (protection against sophisticated attacks). Achieving full SL-3 compliance requires additional controls including physical tamper detection on gateway enclosures and hardware security modules for gateway private key storage — outside the scope of the current PDP specification but noted for future revision.

NIST Cybersecurity Framework

PDP security controls map to the following NIST CSF functions: Identify (hardware inventory via automatic probe registration), Protect (ECDSA authentication, TLS, write-protect EEPROM), Detect (authentication failure logging, anomaly alerts), Respond (token revocation, CRL update), and Recover (token rotation, re-provisioning procedure).

SOC 2 Type II (platform layer)

The Vigil platform layer is designed for SOC 2 Type II readiness: all authentication events are logged with timestamps and actor identity; no plaintext credentials are stored; access controls are role-based (organisation-scoped) with audit trails; data retention and deletion are configurable per organisation.

§11Conclusion

The security architecture described in this paper reflects a single design conviction: in connected physical systems, security cannot be retrofitted. It must be designed in from the hardware layer upward. ECDSA-P256 on secure elements ensures that probe identity is hardware-bound and cannot be cloned. TEDS EEPROM signatures ensure that calibration data cannot be altered. SHA-256 hashed gateway tokens ensure that platform credentials are never stored in recoverable form. TLS 1.3 ensures that none of this is visible to a network attacker.

The result is a stack where every trust boundary is explicitly verified, every security event is logged, and every credential can be revoked without service interruption. This is zero-trust applied to the physical world — and it is the only architecture appropriate for sensing infrastructure that is expected to operate safely for decades, in environments where physical access cannot be fully controlled and where the consequences of false measurements include equipment damage, production loss, and potential safety incidents.

We invite security researchers to review this architecture and the accompanying PDP specification. Responsible disclosure can be submitted to security@continuislabs.io. We maintain a public security advisory page and commit to patching critical vulnerabilities within 72 hours of confirmed disclosure.

References

  • NIST SP 800-207 — Zero Trust Architecture. National Institute of Standards and Technology, 2020.
  • NIST FIPS 186-5 — Digital Signature Standard (ECDSA). NIST, 2023.
  • RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3. IETF, 2018.
  • IEC 62443-3-3 — Industrial communication networks – System security requirements and security levels. IEC, 2013.
  • Microchip Technology — ATECC608B Security Checklist. Application Note AN2695, 2021.
  • CISA — Cross-Sector Cybersecurity Performance Goals. CISA, 2022.
  • ISA/IEC 62443-4-2 — Security for Industrial Automation and Control Systems: Technical Security Requirements for IACS Components. ISA, 2019.
  • Eclipse Foundation — Mosquitto MQTT Broker TLS Documentation. Eclipse, 2024.