Every mutating request is signed with the device's private key using ECDSA P-256. Without the key, the token cannot authorize anything — regardless of where it ends up.
ECDSA P-256
Elliptic curve signatures
Industry-standard asymmetric cryptography. The private key never leaves the device; the public key is registered with the server.
SHA-256
Content digest
The request body is hashed before signing, ensuring payload integrity. Any modification invalidates the signature.
Per-request
Nonce system
Every signed request includes a unique nonce and timestamp. Replay attacks are detected and rejected automatically.
Seven steps from request construction to server verification. The private key is used once per request and never transmitted.
Build Request
Construct the HTTP method, URL, and body
SHA-256 Digest
Hash the request body for integrity verification
ECDSA Sign
Sign the digest with the device's private key
Attach Headers
Add signature, nonce, timestamp, and digest headers
Server Verify
Validate signature against the registered public key
Nonce Check
Confirm nonce uniqueness and timestamp freshness
Proceed
Request is authenticated and forwarded to business logic
Build Request
Construct the HTTP method, URL, and body
SHA-256 Digest
Hash the request body for integrity verification
ECDSA Sign
Sign the digest with the device's private key
Attach Headers
Add signature, nonce, timestamp, and digest headers
Server Verify
Validate signature against the registered public key
Nonce Check
Confirm nonce uniqueness and timestamp freshness
Proceed
Request is authenticated and forwarded to business logic
A JWT alone is a bearer credential — anyone who holds it can use it. Proof of Possession changes the trust model. The token must be accompanied by a cryptographic signature that only the original device can produce. Intercepting the token without the private key yields nothing actionable.
1X-Sig: MEUCIQD...base64-encoded-signature2X-Sig-Version: ecdsa-p256-v13X-Timestamp: 17098345214X-Nonce: a3f8c2d1-b7e4-4f9a-9c12-3d5e6f7a8b9c5X-Content-Digest: sha-256=:base64-encoded-hash:6X-App-Id: app_01HQ3V...The server holds only the public key — the counterpart to the device's private key. On every request, the server reconstructs the signed payload from the headers and verifies the ECDSA signature. The timestamp must fall within a configurable window, and the nonce must be unique across that window.