Security

Security.

Threat model and key management.

§1 · Threat model

Threat model.

What's in scope, what's out, and where trust boundaries sit.

In scope

Credential-issuance integrity (BBS+ signing)
did:solidus resolution + document integrity
ERC-8004 anchor correctness (Identity + Validation Registry)
Public verification API abuse / rate-limiting
Operator-token handling

Out of scope

Operator's own key custody (we never hold it)
The ERC-8004 standard itself (open EIP, not ours)
Ethereum's base-layer (L1) security
Third-party agent-framework runtimes (AgentKit / Crossmint / Olas)
verify.solidus.network KYC internals (separate product, separate trust boundary)

Solidus Agents sits at a specific point in the trust chain: the operator proves who they are once, at verify.solidus.network; Solidus signs and anchors the resulting agent credential; the relying party verifies it independently against the public registries. Each boundary is deliberately narrow — Solidus never holds operator keys, and a relying party never needs a Solidus account to check a credential.

§2 · Key management

Key management.

Who holds what, and what a compromise of each one actually exposes.

Operator keys

The operator's did:solidus signing key stays with the operator. Solidus Agents never holds or escrows it — a compromise of Solidus does not expose operator keys.

Agent keys (managed custody)

This is the key we do hold. On the default path the backend generates the agent's Ed25519 signing key and stores it encrypted with AES-256-GCM under one escrow key, so a compromise of Solidus exposes every managed agent key at once, and those are the keys that sign as your agent. You can export a key and take custody yourself; the export is recorded and audited.

Issuer key

The BBS+ issuer key signs every credential we issue. Today: environment-isolated, access-controlled. Planned: HSM-backed signing.

Anchor wallet

A dedicated wallet submits Identity and Validation Registry anchors on Ethereum. Funds are scoped and spend is monitored; anchor costs are ETH gas, billed at cost.

§3 · Selective disclosure

Data minimization by design.

A security property, not a marketing feature — the agent proves only what a relying party needs.

Every credential Solidus issues is signed with BBS+, a signature scheme built for selective disclosure. An agent can prove a specific claim — operator KYC verified, running on a regulated network, a capability still active — without revealing the credential's full payload to the relying party asking. The unrequested claims never leave the agent's side.

That is the property a wallet address or an on-chain credential cannot offer: a wallet address discloses everything or nothing, and an on-chain claim is public by construction. BBS+ makes partial, provable disclosure possible — which is what a data-minimization requirement in a regulated integration actually asks for.

See it end to end

Issued to the agent

operatoroperatorKycnetworkscopeexpiry

Disclosed to a relying party

operatorKycnetwork
§5 · Responsible disclosure

Report a vulnerability.

Found a security issue in the SDK, verification API, issuer, or anchoring path? Tell us. Good-faith research is welcome — no legal action for responsible disclosure. We aim to acknowledge within 24 hours.

security@solidus.network

PGP key available on request.

Security · Solidus Agents