Skip to main content
This page specifies the threats the Talent License Protocol is designed against, and the security requirements each role meets in addition to those on the other pages.

Assets

The protocol protects three things: a talent’s consent, as signed licenses and a posture; the integrity of decisions, tokens and receipts; and the personal data that passes through checks.

Threat model

The protocol does not defend against a platform that lies in its checks and also runs its own model with no generation tool to verify tokens. It narrows that case: outputs carry no valid receipt, and every attestation a platform makes is on the record.

Transport and credentials

TLP-SEC-1. Every TLP endpoint MUST be served over HTTPS with TLS 1.2 or later, and every party MUST validate the server’s certificate. TLP-SEC-2. A license server MUST authenticate every platform call except receipt reads, verifications and the discovery document, which are public. A platform MUST keep its credentials for the license server on its servers and MUST NOT send them to clients or generation tools.

Tokens and keys

TLP-SEC-3. A verifier and a generation tool MUST take keys only from the JWK Set of an issuer they trust, reached through that issuer’s discovery document over HTTPS. They MUST NOT accept alg values other than ES256, including none. TLP-SEC-4. A platform MAY pass an authorization token to a generation tool and a session token to its own client, and MUST NOT pass either to anyone else. A platform that serves more than one licensee MUST give a generation tool only tokens for the request it is running. TLP-SEC-5. Every party that checks exp, iat or a webhook timestamp MUST keep its clock synchronized with a time source, and MUST NOT allow more than 60 seconds of leeway on tokens.

Events

TLP-SEC-6. A license server MUST sign every event it delivers as the Standard Webhooks specification defines: webhook-id, webhook-timestamp and webhook-signature headers, with HMAC-SHA256 under a per-endpoint secret over ${webhook-id}.${webhook-timestamp}.${body}, sent as one or more v1,<base64> entries. TLP-SEC-7. A platform MUST verify the signature of every event before acting on it, MUST reject an event whose timestamp is more than 5 minutes from its clock, and MUST compare signatures in constant time. TLP-SEC-8. A license server delivers events at least once and in no guaranteed order. A platform MUST process each event ID once, and MUST ignore an event whose sequence is lower than one it has processed for the same object. Before acting on an event that permits something, such as generation.released or check.resolved with allow, a platform SHOULD read the object from the license server.

Availability

TLP-SEC-9. A license server MUST publish availability and latency targets for its check, generation and session endpoints, and a status page. Because platforms fail closed for named talent (TLP-DEC-32), its availability bounds theirs. The Talent API’s target for checks is 99.95% per month. TLP-SEC-10. A license server MAY rate-limit requests. It MUST answer a limited request with HTTP 429 and a Retry-After header, and a platform MUST wait at least that long before retrying.

Disclosure of vulnerabilities

TLP-SEC-11. A license server MUST publish a way to report vulnerabilities and MUST state how it notifies platforms and verifiers of a key compromise.

Production security

Key handling, token verification and webhook signing in the Talent API.

Webhooks

Signing, retries, ordering and replay.

Tokens

The verification algorithm.

Privacy

Data minimization on both sides.