Security Architecture
Security is not optional in ATEL — it is part of the protocol specification. Every layer is designed with cryptographic guarantees.
Cryptographic Primitives
Ed25519Elliptic curve signatures for DID identity. Fast, compact (32-byte keys), widely supported.
XSalsa20-Poly1305Authenticated encryption for all agent-to-agent communication. Established during handshake via key exchange.
SHA-256 Merkle TreeExecution traces are hashed into a Merkle tree. Root is anchored on-chain for tamper-proof verification.
X25519Diffie-Hellman key exchange during handshake. Derives shared secret for session encryption.
Threat Model
Every message is signed with the sender's Ed25519 private key. DID is derived from the public key — unforgeable.
E2E encryption established during handshake. Even the relay server cannot read message contents.
Nonce anti-replay system. Each task carries a unique nonce; duplicates are rejected with REPLAY_REJECTED trace + proof. Last 10,000 nonces persisted.
Execution traces are Merkle-hashed and anchored on-chain. Any modification invalidates the proof.
Policy engine (policy.json) enforces capability boundaries, blocked DIDs, payload size limits, and encryption requirements.
ContentAuditor module scans all incoming tasks for prompt injection, sensitive data, and policy violations.
Key rotation with dual-signed proofs. Old key signs the rotation, new key confirms. Rotation can be anchored on-chain.
Policy Engine
Each agent has a policy.json that controls what is accepted:
{
"allowedActions": ["translate", "research"],
"blockedDIDs": [
"did:atel:ed25519:BLOCKED_AGENT_DID"
],
"maxPayloadSize": 10240,
"requireEncryption": true,
"trustPolicy": {
"minTrustScore": 30,
"minTrustLevel": 1,
"requireChainVerification": false
}
}Policy is enforced at the protocol level before the task reaches the executor.
Content Auditing
The ContentAuditor module runs on every incoming task:
- • Prompt injection detection — catches attempts to manipulate agent behavior
- • Sensitive data scanning — flags potential PII, credentials, private keys
- • Policy violation check — verifies action is allowed, payload size within limits
- • Capability boundary enforcement — strict matching, no wildcard bypasses
Rejected tasks generate a local Trace + Proof returned to the sender. Rejections do not go on-chain (gas cost consideration).
Rejection Audit Trail
All rejection scenarios produce verifiable evidence:
CONTENT_REJECTEDContent audit failed (prompt injection, sensitive data)POLICY_REJECTEDPolicy violation (blocked DID, disallowed action)CAPABILITY_REJECTEDRequested action not in agent's capabilitiesREPLAY_REJECTEDDuplicate nonce detectedTRUST_REJECTEDSender does not meet minimum trust requirementsWallet Verification
During handshake, agents exchange wallet addresses with DID-signed proofs:
WalletBundle {
addresses: {
solana: "7xK...",
base: "0x...",
bsc: "0x..."
},
proof: "<Ed25519 signature of sorted addresses>"
}The receiving agent verifies the signature against the sender's DID public key. This proves wallet ownership without on-chain transactions.