Encryption Overview
Rubric implements defense-in-depth encryption to protect sensitive healthcare data throughout its lifecycle. Our encryption architecture meets or exceeds requirements for HIPAA, HITRUST, and SOC 2 compliance.At-Rest Encryption
AES-256-GCM encryption for all stored data including databases, files, and backups.
In-Transit Encryption
TLS 1.3 for all network communications with certificate pinning support.
Key Management
AWS KMS integration with customer-managed key (CMK) options available.
Key Rotation
Automatic annual key rotation with on-demand rotation capabilities.
Encryption at Rest
All data stored in Rubric is encrypted at rest using AES-256-GCM, the gold standard for symmetric encryption. This includes primary databases, file storage, caches, and backup systems.Data Storage Encryption
| Storage Type | Encryption | Key Management | Notes |
|---|---|---|---|
| Primary Database (PostgreSQL) | AES-256-GCM | AWS KMS | Transparent data encryption (TDE) |
| Document Storage (S3) | AES-256-GCM | AWS KMS / SSE-S3 | Server-side encryption with CMK option |
| Audio Files | AES-256-GCM | AWS KMS | Encrypted before upload, double-encrypted at rest |
| DICOM Studies | AES-256-GCM | AWS KMS | Per-study encryption keys |
| Search Index (OpenSearch) | AES-256 | AWS KMS | Encrypted index and logs |
| Cache (Redis) | AES-256-GCM | AWS KMS | Encrypted in-memory and persistence |
| Backups | AES-256-GCM | AWS KMS | Cross-region encrypted backups |
Database Encryption Configuration
encryption_config.py
Envelope Encryption: Rubric uses envelope encryption where data encryption keys (DEKs) are encrypted by a master key (KEK) stored in AWS KMS. This allows efficient key rotation without re-encrypting all data.
Encryption in Transit
All data transmitted to and from Rubric is protected using TLS 1.3 encryption. We enforce strong cipher suites and support certificate pinning for additional security.TLS Configuration
| Parameter | Value | Notes |
|---|---|---|
| Protocol Version | TLS 1.3 (TLS 1.2 minimum) | TLS 1.0/1.1 disabled |
| Cipher Suites | TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256 | AEAD ciphers only |
| Key Exchange | X25519, secp384r1 | Perfect forward secrecy |
| Certificate | RSA 4096-bit / ECDSA P-384 | Extended validation (EV) |
| HSTS | Enabled | max-age=31536000; includeSubDomains |
| Certificate Transparency | Required | All certificates logged to CT |
Certificate Pinning
Enterprise customers can configure certificate pinning to prevent man-in-the-middle attacks:tls_pinning.py
Key Management
Rubric uses AWS Key Management Service (KMS) as the foundation for cryptographic key management. Enterprise customers can bring their own keys (BYOK) or use customer-managed keys (CMK).Customer-Managed Keys (CMK)
cmk_setup.py
Key Rotation
Encryption keys are automatically rotated annually. You can also trigger on-demand rotation:key_rotation.py
Best Practices
| Practice | Description |
|---|---|
| Use Customer-Managed Keys | For maximum control, configure CMK through AWS KMS to maintain key custody. |
| Enable Field-Level Encryption | Apply additional encryption to highly sensitive fields like SSN and MRN. |
| Implement Certificate Pinning | Prevent MITM attacks by pinning to Rubric’s certificates in production. |
| Regular Key Rotation | Enable automatic key rotation and review rotation logs quarterly. |
| Audit Encryption Status | Run encryption audits monthly and before compliance reviews. |
| Monitor TLS Versions | Ensure all clients connect using TLS 1.3; sunset TLS 1.2 when possible. |
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| Key access denied | KMS key policy missing Rubric role | Update KMS key policy to grant rubric-service-role permissions |
| TLS handshake failed | Client using outdated TLS version | Update client to support TLS 1.2+ (preferably TLS 1.3) |
| Certificate pin mismatch | Certificate rotated without pin update | Update pinned certificate hashes in client configuration |
| Decryption failed | Key rotation in progress | Wait for rotation to complete or use previous key version |
