Part 13 — SecurityLink to the section Part 13 — Security
On this page
Maturity: Draft · Profiles: all
13.1 Threat model (summary)Link to the section 13.1 Threat model (summary)
Assets: live video, position history (sensitive: reveals operations and patrol patterns), control authority over an aircraft (safety-critical), device identity (impersonation enables injection of false video or telemetry), audit integrity.
Adversaries: network attacker on the path (internet or site LAN), compromised VMS operator account, compromised gateway host, malicious or buggy third-party client, rogue device presenting itself as a legitimate drone.
Design responses: no plaintext anywhere; strong mutual identity; least-privilege scopes separating view, camera and aircraft; short-lived leases; mandatory audit; schema validation of all inputs.
13.2 Transport securityLink to the section 13.2 Transport security
- TLS 1.3 (RFC 8446) is REQUIRED on every UNIVIP connection (REST, WebSocket, MQTT, RTSP). TLS 1.2 MUST NOT be negotiated. Cipher suites:
TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256. - Connections to an OAuth 2.0 token endpoint (§13.3) are not UNIVIP connections: they follow the identity provider's policy and MUST use TLS 1.2 or later. A device presents its client certificate there only when the provider requires mTLS client authentication (RFC 8705).
- WebRTC media uses DTLS-SRTP as defined by WebRTC; SRT uses AES-128/256; both are REQUIRED when those transports are used.
- Certificates: devices MUST validate server certificates against a configured trust anchor (public CA or operator CA). Certificate pinning is RECOMMENDED for the configured endpoint. Plain
rtsp://andhttp://MUST NOT be offered except on an isolated local link and flaggedinsecure: truein the descriptor (media.streams[].rtsp.insecure,transports.rest.insecure); conformance tests fail any device offering them by default.
13.3 Device authentication (device → client endpoint)Link to the section 13.3 Device authentication (device → client endpoint)
A device MUST support at least one of:
| Method | Mechanism | When |
|---|---|---|
| mTLS (RECOMMENDED for managed fleets) | Device presents an X.509 client certificate issued by the operator's CA or by the vendor and registered with the client at onboarding. Each device_id the certificate may present is a subjectAltName URI equal to that device_id (for example urn:univip:acme:SN12345); a gateway certificate carries one such URI per vehicle, or the client registers the gateway's vehicles against the certificate at onboarding. The client MUST refuse a hello for a device_id the certificate is not bound to. |
Docks, gateways, enterprise aircraft |
| OAuth 2.0 client credentials (RFC 6749 §4.4) | Device holds a client_id/secret or a private-key JWT (RFC 7523) and obtains a short-lived access token (≤ 1 h) from the client's token endpoint, presented as a Bearer token on the WebSocket upgrade and REST calls. |
Gateways, controller apps |
| Claim-code enrollment | One-time code (Part 05 §5.2) exchanged at the client's enrollment endpoint for one of the above credentials. The code MUST expire within 15 minutes and be single-use. | Field onboarding |
Static shared passwords, HTTP Basic and HTTP Digest are NOT permitted.
13.4 Client authorization (client → device resources)Link to the section 13.4 Client authorization (client → device resources)
Client-side identity (operator user, VMS service) is the client's concern, but UNIVIP scopes define what a client principal may do toward a device, and the device-side (or client-hosted endpoint) MUST enforce them:
| Scope | Grants |
|---|---|
univip.view |
Capabilities, telemetry, events, media (Profile S) |
univip.camera |
camera.* and payload.* commands and camera leases (Profile C) |
univip.vehicle |
vehicle.* commands and vehicle leases (Profile N) |
univip.config |
PATCH /config |
univip.admin |
Onboarding, credential rotation |
Scopes are carried as the scope claim of a JWT access token (RFC 7519, RFC 9068) issued by the client's authorization server, or as an attribute in the mTLS certificate for machine clients. For requests forwarded through the session proxy, the client-hosted endpoint enforces its users' credentials and states their scopes in the request envelope; the device limits them to the scopes the operator allowed for that endpoint (Part 05 §5.5.1). In every case the client_id of the principal must match the session's verified client identity for status and lease envelopes to reach it (Part 05 §5.3.1). univip.vehicle MUST NOT be granted by default to any role that has univip.camera; the two MUST be separately assignable in the client's role model (Part 04 §4.4).
13.5 Message integrity and replayLink to the section 13.5 Message integrity and replay
- Every envelope carries
msg_idandtimestamp; receivers MUST reject commands withissued_atolder than 30 s (reasonEXPIRED) or in the future by more than 5 s (clock skew allowance; reasonINVALID_PARAMETERS), and MUST reject duplicatecommand_ids. - Leases bind
client_id; a command carrying alease_idfrom a different authenticated client MUST be rejected withLEASE_SCOPE. - Where MAVLink is used behind a gateway, MAVLink 2 signing SHOULD be enabled on the native link; it does not replace UNIVIP transport security.
13.6 Input validationLink to the section 13.6 Input validation
Devices and clients MUST validate every received message against the schema named in its schema member before acting on it and MUST reject invalid messages with MALFORMED. Two kinds of schema failure do not make a message invalid (Part 01 §1.4, §1.5): a value outside an open enumeration, and a schema member naming another MINOR of the same MAJOR. Unknown non-must-understand members are ignored (Part 01 §1.4). Numeric ranges in schemas are normative.
13.7 PrivacyLink to the section 13.7 Privacy
Position history is personal and operational data. Clients MUST apply the same access control and retention policy to telemetry as to the associated video. Devices MUST NOT publish operator personal data in telemetry; operator_user appears only in lease and audit records.
13.8 Logging and auditLink to the section 13.8 Logging and audit
See Part 11 §11.7 for control audit. Authentication failures, lease events and configuration changes MUST be logged by both sides with device_id, client_id, timestamp and outcome. On the media plane, DTLS handshake and certificate-verification failures MUST be logged; unauthenticated STUN and other transport noise MAY be rate-limited or logged at a lower level so that it cannot flood the log.
13.9 Key rotation and revocationLink to the section 13.9 Key rotation and revocation
Device credentials MUST be rotatable without changing device_id. Clients MUST support revoking a device credential, after which the device's sessions are closed with UNAUTHORIZED and reconnection fails until re-enrollment.
13.10 Comparison with ONVIF security (Informative)Link to the section 13.10 Comparison with ONVIF security (Informative)
See ../docs/onvif-comparison.md for a side-by-side discussion. In short: UNIVIP mandates TLS 1.3 everywhere, forbids password-digest and HTTP Digest schemes, uses standard OAuth 2.0/mTLS identity, encrypts media by construction (DTLS-SRTP), and adds a lease-based authority model that has no ONVIF equivalent because fixed cameras do not move.