Data Protection¶
Circuit KYC implements multiple layers of data protection to ensure identity information remains secure and private.
Encryption¶
Data at Rest¶
All stored data is encrypted using AES-256-GCM:
- Identity records
- Audit logs
- API keys (hashed, not encrypted)
- Credentials
┌─────────────────────────────────────────┐
│ Application Layer │
├─────────────────────────────────────────┤
│ Encryption Service │
│ ┌─────────────────────────────────┐ │
│ │ AES-256-GCM + AWS KMS Keys │ │
│ └─────────────────────────────────┘ │
├─────────────────────────────────────────┤
│ Database (Encrypted) │
└─────────────────────────────────────────┘
Data in Transit¶
All data in transit uses TLS 1.3:
- API requests/responses
- Internal service communication
- Database connections
- Message queue traffic
Key Management¶
Keys are managed through AWS KMS:
- Automatic key rotation (annual)
- Hardware Security Modules (HSMs)
- Separate keys per environment
- Audit logging of key usage
Blind Indexing¶
We use blind indexing to enable searching encrypted data without exposing plaintext:
# How blind indexing works
blind_index = HMAC-SHA256(secret_key, plaintext)
# The index can be searched, but the plaintext cannot be recovered
This allows:
- ✅ Looking up identities by phone/email
- ✅ Checking for duplicates
- ❌ Cannot reverse the index to get plaintext
- ❌ Cannot search partial matches
Data Isolation¶
Multi-Tenancy¶
Each tenant's data is logically isolated:
- Separate encryption keys per tenant
- Row-level security in database
- Tenant ID required for all queries
- Cross-tenant access impossible
Network Isolation¶
┌─────────────────────────────────────┐
│ Public Internet │
└──────────────┬──────────────────────┘
│
┌──────┴──────┐
│ WAF + ALB │
└──────┬──────┘
│
┌──────────────┴──────────────────────┐
│ Private VPC │
│ ┌─────────┐ ┌─────────┐ │
│ │ API │ │ Worker │ │
│ │ Pods │ │ Pods │ │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ┌────┴────────────┴────┐ │
│ │ Private Subnets │ │
│ │ (No Internet Access)│ │
│ │ ┌────────────────┐ │ │
│ │ │ Database │ │ │
│ │ └────────────────┘ │ │
│ └──────────────────────┘ │
└─────────────────────────────────────┘
Sensitive Data Handling¶
PII Classification¶
| Data Type | Classification | Protection |
|---|---|---|
| Full Name | PII | Encrypted |
| PII | Encrypted + Blind Index | |
| Phone | PII | Encrypted + Blind Index |
| Date of Birth | Sensitive PII | Encrypted |
| National ID | Highly Sensitive | Encrypted, limited access |
| Address | PII | Encrypted |
Data Minimization¶
We only store data necessary for KYC operations:
- ✅ Required for verification
- ✅ Required for audit compliance
- ❌ Marketing data
- ❌ Behavioral tracking
- ❌ Third-party sharing (without consent)
Access Controls¶
Role-Based Access¶
| Role | Permissions |
|---|---|
| API User | Read/write via API only |
| Support | Read-only, no PII access |
| Admin | Full access with audit log |
| Security | Audit logs, no data access |
Audit Logging¶
Every data access is logged:
{
"timestamp": "2024-01-15T10:30:00Z",
"actor": "api_key_hash",
"action": "read",
"resource": "identity",
"resource_id": "hash_only",
"ip_address": "192.168.1.1",
"user_agent": "CircuitKYC-Python/1.0"
}
Data Deletion¶
User-Initiated Deletion¶
Users can request deletion via:
- API:
DELETE /api/v1/identity/{id} - Dashboard: Settings → Delete Data
- Email: privacy@circuitkyc.com
Deletion Process¶
- Soft delete - Data marked for deletion
- Grace period - 30 days to recover
- Hard delete - Data permanently removed
- Backup purge - Removed from backups within 90 days
Right to Erasure (GDPR)¶
We comply with GDPR Article 17:
- Process deletion requests within 30 days
- Delete from all systems including backups
- Notify third parties of deletion
- Provide deletion confirmation
Incident Response¶
Data Breach Protocol¶
- Detection - Automated monitoring + manual review
- Containment - Isolate affected systems
- Assessment - Determine scope and impact
- Notification - Within 72 hours (GDPR)
- Remediation - Fix vulnerability
- Post-mortem - Prevent recurrence
Breach Notification¶
If a breach affects your data:
- Email notification within 72 hours
- Description of data affected
- Steps we're taking
- Recommended actions for you
Data Export¶
Export your data anytime:
curl -X POST https://api.circuitkyc.com/api/v1/data-export \
-H "X-API-Key: sk_live_your_key" \
-d '{"format": "json"}'
Exports include:
- All identity records
- Audit logs
- Credentials issued
- Billing history
Questions?¶
- Data Protection Officer: dpo@circuitkyc.com
- Privacy Policy: circuitkyc.com/privacy
- GDPR Requests: privacy@circuitkyc.com