Overview
Every DFNS API request passes through multiple security layers before a blockchain transaction is signed:Layer 1: Authentication
Every API request must prove identity through two mechanisms:API Token
TheAuthorization: Bearer <token> header identifies who is making the request:
- User tokens: Short-lived, obtained through login flow
- Service account tokens: Long-lived, for server-to-server communication
- Personal access tokens: Long-lived user tokens for development
User Action Signature
For state-changing operations (POST, PUT, DELETE), theX-DFNS-USERACTION header proves the caller controls a registered credential:
- Client requests a challenge from DFNS
- Client signs the challenge with their credential (passkey or asymmetric key)
- DFNS verifies the signature matches a registered credential
Layer 2: Authorization (Permissions)
After authentication, DFNS checks if the user has permission to perform the requested action. Permissions follow a whitelist model - users can only perform actions explicitly granted: Example: A user withWallets:Read can view wallets but cannot transfer assets (requires Wallets:Sign).
See Permissions for the full list.
Layer 3: Policy Engine
Even with valid authentication and permissions, the Policy Engine can add additional controls:
Policies evaluate rules like:
- Transaction amount limits
- Velocity limits (amount or count over time)
- Recipient whitelisting
- Chainalysis screening
- Any
Blockresult immediately blocks the activity - Multiple
RequestApprovalresults require approvals from all triggered policies - Policies cannot bypass or override each other
Layer 4: MPC Signing
Once a transaction passes all checks, the MPC signing ceremony begins: Key properties:- No complete key: The private key never exists in one place
- Threshold security: Requires k-of-n shares to sign (not all shares needed)
- Geographic distribution: Nodes are in different data centers/regions
- Audit trail: Every signing ceremony is logged
Layer 5: Broadcast
The signed transaction is broadcast to the blockchain network. DFNS monitors for confirmation and updates transaction status.Security model summary
Separation of concerns
A critical security property: credentials and keys are completely separate.
Even if an attacker steals credentials, they still face:
- User action signing requirements
- Permission checks
- Policy enforcement
- MPC threshold requirements
Trust boundaries
The layers above describe how a single request is authorized. This section describes who you have to trust, and how to verify operations independently of that trust. DFNS operates as the maker: it builds the transaction from your request and submits it to the signers. You can operate as the checker: you independently verify what is about to be signed, and approve or reject it. A checker step lets you detect a tampered transaction in both directions:- If DFNS were compromised, your checker sees a transaction that does not match the intent you authorized, and rejects it.
- If your initiating workstation were compromised, the transaction is checked again before signing, so tampering is caught even though it originated on your own machine.
Threat model
Each row assumes the worst case at one location and shows which checker catches a tampered transaction.
No single party, whether DFNS, your workstation, or your checker, can unilaterally produce a malicious signed transaction without another layer detecting it.
Trusted display (WYSIWYS)
The human-readable summary bound into the user action signature is what makes “what you see is what you sign” (WYSIWYS) possible: the operator signs a description of the action, not an opaque blob. For this to defend against a compromised client, the summary must be shown to the operator on a surface that the client’s own code cannot alter. The standards for this in the browser, such as Secure Payment Confirmation, are still emerging and support is currently limited.Related
How MPC works
Deep dive into MPC technology
Policies
Configuring transaction policies
Permissions
Understanding permission model
Authentication
Authentication flows