This page covers TKeeper service-level threats.
For protocol-level details in FROST, GG20, ECIES, ZK proofs, nonce handling, Paillier, and curve math, use the tss4j threat model:
Scope
In scope:
- client authentication and authorization
- authority policy
- four eye approvals
- peer authentication and Byzantine behavior
- seal and unseal
- local key share storage
- key lifecycle operations
- trusted dealer import
- audit log integrity and sink enforcement
- UI exposure through
feature-ui
Out of scope:
- compromise of at least
thresholdpeers - physical side channels
- host hardening
- kernel, container runtime, and hypervisor compromise
- bugs inside cloud KMS, HSM firmware, or external identity providers
Assumptions
TKeeper runs as a cluster of peers. Each peer has one local key share. A threshold operation needs enough peers to participate.
Compromising fewer than threshold peers must not give the attacker a usable private key. Compromising at least threshold peers breaks the threshold model.
All protected operations run only after the keeper is unsealed.
Authorities are part of the signing boundary. A key either uses arbitrary for raw signing or uses concrete authority policies. arbitrary cannot be mixed with concrete authorities on the same key.
Concrete authorities use digest-pinned OCI references. Tags are mutable and are only useful for local development.
Audit events are signed with the integrity key. When audit is enabled, at least one configured sink must accept the event.
Assets
| Asset | Confidentiality | Integrity | Availability |
|---|---|---|---|
| Local key shares | Critical | Critical | High |
| DEK | Critical | Critical | High |
| KEK or unseal material | Critical | Critical | High |
| Shamir unseal shares | Critical | Critical | High |
| HSM or cloud KMS credentials | Critical | Critical | High |
| JWT signing keys and JWKS | High | Critical | High |
| Key metadata and authorities | Low | Critical | High |
| Public keys and commitments | Public | Critical | High |
| Authority OCI artifacts | Low | Critical | High |
| Four eye approver keys | High | Critical | Medium |
| Audit records | Low | Critical | High |
| Session context | Low | Critical | High |
Trust Boundaries
Client to Keeper:
Requests are untrusted until authenticated and authorized. JWT mode validates token signature, kid, audience, and subject. Dev token mode is for controlled environments.
Keeper to Keeper:
Internal peer calls happen inside the cluster boundary. Peers still verify protocol data. Bad FROST, GG20, or ECIES contributions are rejected where the protocol can identify the sender.
Keeper to OCI registry:
Authorities are loaded from OCI. Digest-pinned references protect against tag drift. The authority id inside the artifact must match the id configured on the key.
Keeper to seal provider:
Seal providers protect the DEK. Built-in providers are Shamir and HSM. External providers are AWS and Google Cloud features.
Keeper storage:
Stored key material is encrypted. Signed records protect public metadata, key records, and integrity-sensitive state from silent tampering.
Browser to UI:
feature-ui exposes the control-plane UI. It uses the same external API permissions as direct API clients. CSP configuration controls what the browser may load or connect to.
Threats
T-1: Client Impersonation
Attack:
An attacker uses a forged or stolen token to call signing, decrypt, lifecycle, or inventory APIs.
Mitigation:
- JWT signature and
kidare checked against JWKS. - Audience and subject are checked.
- Permissions are enforced per operation.
- Key operations use key-scoped permissions such as
tkeeper.key.<keyId>.sign.
Residual risk:
A compromised IdP or long-lived token gives the attacker the permissions inside that token until it expires or is revoked.
T-2: Permission Misconfiguration
Attack:
A principal gets broad permissions and uses a key or lifecycle operation outside its intended scope.
Mitigation:
- Permissions are explicit.
- Key operations can be scoped per key.
- Deny entries can restrict broad grants.
- Destructive operations use separate permissions.
Residual risk:
An operator can still grant broad access. Review wildcard grants before production use.
T-3: Authority Downgrade
Attack:
An attacker tries to create or import a key with arbitrary authority and concrete authorities together, or tries to move a key from typed policy to raw signing.
Mitigation:
arbitrarymust be the only authority on a key.- Concrete authorities require OCI references.
- Authority ids are validated.
- Authority policy is evaluated before signing starts.
- Asset Inventory exposes key authorities for review and export.
Residual risk:
An authorized operator can create a raw-signing key on purpose. Treat arbitrary keys as high risk.
T-4: Authority Artifact Tampering
Attack:
An attacker changes the authority artifact in the registry or points a key at a different policy.
Mitigation:
- Production references use
@sha256:.... - TKeeper verifies the loaded authority id against the configured id.
- Authority metadata is part of signed key state.
- Audit logs record authority-related operations.
Residual risk:
If a bad policy is approved and pushed under its digest, TKeeper will enforce that bad policy. Review authority artifacts before attaching them to keys.
T-5: Policy or Intent Modeling Gap
Attack:
The policy sees a weak model of the requested action and allows a command whose real effect is unsafe.
Mitigation:
- Typed authorities materialize commands into policy input.
- EVM, Bitcoin, X.509, and custom authorities have separate intent builders.
arbitraryis isolated from typed authority keys.
Residual risk:
Policy can only enforce the effects it can model. Raw bytes give policy almost no semantic context.
T-6: Four Eye Replay or Bypass
Attack:
An attacker reuses approval proofs for another request or tries to submit duplicate approvers.
Mitigation:
- Approvers sign a hash of the exact operation fields.
- The hash includes nonce and timestamp.
- Duplicate approver keys are rejected.
mmust be at least2, andmcannot exceedn.
Residual risk:
Compromised approver keys can approve malicious requests. Store approver keys separately from TKeeper peers.
T-7: Byzantine Peer During Signing
Attack:
A peer sends invalid FROST or GG20 data to corrupt a signature or bias the result.
Mitigation:
- FROST verifies peer proof material and signing contributions.
- GG20 verifies the ZK proof flow used by the protocol.
- Identified bad peers are returned as
imposters. - Signing restarts with fresh session state where the protocol reports an imposter.
Residual risk:
Byzantine peers can cause availability loss by aborting sessions.
T-8: Byzantine Peer During ECIES Decrypt
Attack:
A peer returns a forged partial decrypt.
Mitigation:
- Each partial decrypt carries a DLEQ proof.
- The coordinator verifies the proof against the ciphertext point, derived peer public share, and partial decrypt.
- Bad partial decrypts are skipped and reported as imposters.
- Decrypt succeeds only if enough honest partial decrypts remain.
Residual risk:
Too many unavailable or dishonest peers can stop decryption.
T-9: Local Storage Read or Tamper
Attack:
An attacker reads RocksDB files or changes stored records.
Mitigation:
- Key shares are encrypted at rest.
- The DEK is wrapped by seal material.
- Signed records protect integrity-sensitive state.
- A sealed keeper refuses protected operations.
Residual risk:
Memory forensics against an unsealed keeper can expose runtime secrets. Use host hardening and encrypted swap.
T-10: Unseal Material Compromise
Attack:
An attacker obtains enough Shamir shares, HSM access, or cloud KMS rights to unwrap the DEK.
Mitigation:
- Shamir uses configurable
thresholdandtotal. - HSM keeps wrapping keys outside TKeeper storage.
- AWS and Google Cloud providers rely on provider IAM and KMS audit logs.
- Auto-unseal can be disabled.
Residual risk:
Seal providers move trust into operators, HSM policy, or cloud IAM. Treat that material like root recovery access.
T-11: Audit Tampering or Sink Failure
Attack:
An attacker edits audit logs or makes sinks unavailable.
Mitigation:
- Audit events are Ed25519-signed payloads.
- Verification uses the integrity public key version recorded in the event.
- If audit is enabled, protected operations require at least one available sink.
- If all configured sinks fail or time out while writing, the operation fails.
Residual risk:
Deployments without audit enabled lose this control.
T-12: Trusted Dealer Abuse
Attack:
An authorized caller imports weak or unauthorized key material through trusted dealer flow.
Mitigation:
- Trusted dealer import is separately permissioned.
- Import runs through key metadata, authorities, commitments, and audit.
- Stored key records are integrity-protected.
Residual risk:
Trusted dealer mode trusts the importer to bring valid key material. Use it only for migration or recovery flows that need it.
T-13: Key Lifecycle Abuse
Attack:
An attacker rotates, reshares, destroys, or runs consistency repair on a key to cause denial of service or move the key into an unexpected state.
Mitigation:
- Lifecycle operations use separate permissions.
- Destructive operations are audit-logged.
- Key metadata and active generations are integrity-protected.
- Reshare and rotate run through the threshold cluster.
- Consistency repair is an explicit API, not part of normal signing flow.
Residual risk:
Authorized lifecycle operators can still break availability. Keep lifecycle permissions narrower than signing permissions.
T-14: UI Exposure
Attack:
An attacker uses the UI to trigger privileged operations from a browser session.
Mitigation:
- UI calls the same authenticated external APIs.
- UI can be disabled.
- CSP limits script, connect, image, and form targets.
- Browser-originated operations still require permissions and approvals.
Residual risk:
Bad CSP or weak browser session handling can expose operators to web attacks. Keep UI access narrow.
Security Properties
| Property | Mechanism |
|---|---|
| No unilateral key use | t-of-n threshold protocols |
| No key reconstruction | FROST, GG20, and threshold ECIES use shares |
| Raw signing isolated | arbitrary cannot be mixed with concrete authorities |
| Typed signing policy | authorities materialize commands before signing |
| Authority immutability | digest-pinned OCI references |
| Four eye binding | approver signatures over operation hash |
| Byzantine detection | protocol proofs, DLEQ checks, imposter reporting |
| Sealed state | protected operations refused until unseal |
| Storage confidentiality | DEK/KEK envelope encryption |
| Storage integrity | signed key and metadata records |
| Audit integrity | Ed25519-signed events |
Operational Checklist
- Use short-lived JWTs.
- Keep dev token mode out of production.
- Avoid broad wildcard permissions.
- Treat
arbitrarykeys as raw signing keys. - Use digest-pinned OCI authorities.
- Review Asset Inventory exports.
- Distribute Shamir shares across separate operators.
- Restrict HSM, AWS KMS, and Google Cloud KMS access to TKeeper identities.
- Enable audit with more than one sink.
- Watch
impostersanddeadfields after failed threshold operations. - Put rate limiting in front of public endpoints.