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 acceptalg 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 aRetry-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.Related
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.