Security

ARCP is designed with security-first principles: all API keys are hashed with SHA-256, tokens are signed with ES256 JWTs, and all write endpoints require authentication.

API key security

JWT signing

Render tokens and receipts are signed with ES256 (ECDSA P-256). Verify using the router's public JWKS:

curl https://router.arcp-protocol.com/v1/jwks

Security headers

All responses include:

Rate limiting

Rate limits are enforced per-client per-bucket. Limits are configurable per client in the clients table. Defaults:

EndpointMinute limitDaily quota
router.query605,000
router.render_opened1205,000
router.receipts_export305,000

Key rotation

Rotate client API keys by:

  1. Generate a new key: npm run arcp:keygen
  2. Insert the new key hash into the clients table
  3. Update your application to use the new key
  4. Set key_revoked_at on the old key row

WAF protection

All write routes require a non-empty User-Agent header. Requests with missing or blank User-Agent are rejected at the edge before reaching the application. IP-based rate limiting is configured at the Vercel firewall layer.

Reporting vulnerabilities

Report security issues to security@arcp-protocol.com.