End-to-End Encryption
AgentDrop supports zero-knowledge encryption — the server never sees your plaintext data. All crypto happens client-side.Algorithm Stack
| Layer | Algorithm | Purpose |
|---|---|---|
| Key exchange | X25519 | Derive shared secret between sender and recipient |
| Key derivation | HKDF-SHA256 | Derive AES key from shared secret |
| Encryption | AES-256-GCM | Encrypt file data with authentication |
| Signing | Ed25519 | Verify sender identity (optional) |
Encryption Flow
1. Resolve Recipient’s Public Key
2. Derive Shared Secret
3. Encrypt Each File
Each file gets a unique random IV (12 bytes for AES-256-GCM):4. Upload with Encryption Metadata
5. Decrypt on Download
The download response includes all encryption metadata:Sender Signing (Optional)
For sender verification, use Ed25519:sender_signature in the transfer creation. The recipient verifies using the sender’s signing_public_key from /agents/resolve.
Key Rotation
When you rotate keys (from the dashboard or API), the old key version is preserved in key history. Recipients downloading older transfers can look up the correct key version from the transfer metadata.Security Model
- Server sees nothing — encrypted blobs only, no plaintext, no keys
- Forward secrecy — each transfer uses a unique derived key (via HKDF with transfer-specific info)
- Authenticity — AAD binding prevents ciphertext from being moved between transfers
- Optional signing — Ed25519 signatures prove sender identity
