Encryption as a DPDPA Requirement
The Digital Personal Data Protection Act requires organizations to implement "reasonable security safeguards" to protect personal data. While the Act does not prescribe specific technical measures, encryption is universally recognized as a baseline safeguard -- and the 2025 implementation rules make clear that organizations will be judged on the adequacy of their technical protections.
This guide covers practical encryption strategies for cloud environments that satisfy DPDPA requirements.
Encryption at Rest
Database Encryption
All databases storing personal data must be encrypted:
Managed database services (RDS, Azure SQL, Cloud SQL): Enable encryption at the instance level. This is typically a one-click setting that uses cloud-native KMS keys. Every new database should have encryption enabled by default.
Self-managed databases: Use Transparent Data Encryption (TDE) for SQL Server and Oracle, or filesystem-level encryption for PostgreSQL and MySQL. Mount encrypted EBS volumes or managed disks.
Key consideration: Database encryption protects against physical disk theft and unauthorized snapshot access. It does NOT protect against authorized database users accessing data they should not see. You need application-level controls for that.
Object Storage Encryption
S3 buckets, Azure Blob containers, and GCS buckets storing personal data: - Enable server-side encryption with KMS-managed keys (SSE-KMS) - Use bucket policies to deny unencrypted uploads - For highly sensitive data, use client-side encryption before upload - Enable versioning with encryption to protect historical data
Block Storage and Volumes
EBS volumes, Azure Managed Disks, and Persistent Disks: - Enable encryption by default for all new volumes (set this as an organizational policy) - Encrypt existing unencrypted volumes by creating encrypted snapshots and restoring from them - Use KMS keys with automatic rotation enabled
Encryption in Transit
TLS Configuration
All network communication carrying personal data must use TLS: - Minimum version: TLS 1.2 (TLS 1.3 preferred where supported) - Certificate management: Use ACM (AWS), Azure Key Vault, or cert-manager for automated certificate provisioning and rotation - Internal traffic: Do not assume internal network traffic is safe. Encrypt service-to-service communication using mTLS or service mesh encryption
API Encryption
- Enforce HTTPS-only for all API endpoints (redirect or reject HTTP requests)
- Use HSTS headers to prevent protocol downgrade attacks
- Configure strong cipher suites (disable RC4, 3DES, and other weak ciphers)
- Implement certificate pinning for mobile applications accessing your APIs
Database Connection Encryption
- Require SSL/TLS for all database connections (reject unencrypted connections)
- Use IAM-based authentication where supported (eliminates password transmission)
- Rotate database credentials regularly using automated secret rotation
Application-Level Encryption
Field-Level Encryption
For highly sensitive personal data (Aadhaar numbers, financial account numbers, health records), encrypt individual fields before storing them in the database:
Benefits: - Protection even if the database is compromised - Granular access control (different keys for different sensitivity levels) - Compliance with data minimization (encrypted fields cannot be queried or analyzed without decryption)
Implementation: - Use envelope encryption: generate a data encryption key (DEK) per record, encrypt the DEK with a KMS master key - Store the encrypted DEK alongside the encrypted data - Decrypt only when explicitly needed, and only for authorized users
Tokenization
For data that needs to be referenced but not read (payment card numbers, Aadhaar): - Replace sensitive values with non-reversible tokens - Store the mapping in a secure token vault - Use format-preserving tokenization to maintain data format for downstream systems
Key Management
Cloud KMS Best Practices
- Use cloud-native KMS (AWS KMS, Azure Key Vault, GCP Cloud KMS) for key management
- Enable automatic key rotation (annual rotation at minimum)
- Use separate keys for different data classifications
- Restrict key access using IAM policies (principle of least privilege)
- Enable KMS audit logging to track key usage
Key Hierarchy
Implement a key hierarchy for scalable encryption: 1. Master key (CMK): Stored in KMS, never leaves the service, used to encrypt data keys 2. Data encryption key (DEK): Generated per object/record, encrypted by the master key 3. Key encryption key (KEK): Optional intermediate layer for multi-tenant isolation
Multi-Region Key Replication
If your data is replicated across regions for disaster recovery: - Use multi-region KMS keys or replicate keys across regions - Ensure DR procedures include key availability verification - Test that encrypted data in the DR region can be decrypted using replicated keys
Compliance Monitoring
Automated Encryption Checks
Continuously verify encryption compliance: - AWS Config rules checking for unencrypted RDS instances, S3 buckets, and EBS volumes - Azure Policy checking for encryption at rest and in transit - Custom checks for application-level encryption compliance
Audit Trail
Maintain an audit trail for all encryption-related operations: - KMS key creation, rotation, and deletion events - Encryption and decryption API calls (CloudTrail, Azure Activity Log) - Access to encrypted data by user and role - Exceptions or failures in encryption operations
Getting Started Checklist
- Inventory personal data: Identify all storage locations containing personal data
- Enable encryption at rest: Turn on encryption for all databases, object stores, and volumes
- Enforce TLS: Require encrypted connections for all APIs and database connections
- Implement field-level encryption: For highly sensitive personal data (Aadhaar, financial data)
- Configure KMS: Set up key hierarchy with automatic rotation
- Automate compliance checks: Deploy Config rules or Policy definitions
- Audit regularly: Review encryption coverage and key access patterns quarterly
Encryption for Cross-Border Data Transfers
DPDPA and International Data Flows
The DPDPA permits cross-border data transfers to most jurisdictions but grants the Indian government the power to restrict transfers to specific countries. Organizations operating across India, Europe, and the Middle East must prepare for a future where transfer restrictions could be imposed with limited notice.
Encryption provides a critical safeguard for cross-border data flows:
- End-to-end encryption for data in transit between regions: Ensure that personal data transferred between India and overseas locations is encrypted using TLS 1.2 or higher throughout the entire transfer path, including any intermediate storage or processing hops
- Bring Your Own Key (BYOK) for overseas deployments: Maintain key control in India even when data is processed in foreign cloud regions. Cloud providers support BYOK configurations that allow you to manage the master key from an Indian KMS instance while data is encrypted abroad
- Data minimization before transfer: Encrypt or tokenize sensitive fields before transferring data across borders. If a downstream system in Europe only needs a customer ID and transaction amount, there is no reason to send the full personal data record
Aligning with GDPR and Gulf Region Requirements
Organizations processing data of European residents must also satisfy GDPR encryption expectations, which are generally more prescriptive than DPDPA. The practical approach is to implement the stricter standard universally rather than maintaining region-specific encryption configurations. Similarly, regulations in the UAE (PDPL) and Saudi Arabia (PDPL) require "appropriate technical measures" that encryption directly satisfies.
Encryption in Containerized and Kubernetes Environments
Challenges with Ephemeral Infrastructure
Modern cloud architectures using Kubernetes and containers introduce unique encryption challenges. Containers are ephemeral -- they start, process data, and terminate within minutes. Traditional encryption approaches designed for long-lived servers need adaptation.
Key considerations for containerized workloads:
- Secrets management in Kubernetes: Never store encryption keys or database credentials as Kubernetes ConfigMaps or environment variables in plain text. Use a secrets management solution like HashiCorp Vault, AWS Secrets Manager with CSI driver, or Kubernetes External Secrets Operator
- Encrypted persistent volumes: Enable encryption for all PersistentVolumes using the storage class default encryption settings. On AWS EKS, configure the gp3 StorageClass to use encrypted EBS volumes by default
- Service mesh encryption: Deploy a service mesh (Istio, Linkerd) to enforce mTLS between all pods automatically. This eliminates the risk of unencrypted service-to-service communication within the cluster
- Image encryption: For highly sensitive workloads, consider encrypting container images at rest in your registry to prevent unauthorized access to application code and embedded configurations
Handling Encryption in CI/CD Pipelines
Your CI/CD pipeline touches sensitive data at multiple stages -- pulling secrets for integration tests, building artifacts with embedded configurations, and deploying to production. Ensure that:
- Build agents never have access to production encryption keys
- Test environments use separate KMS keys from production
- Pipeline secrets are injected at runtime, not baked into artifacts
- Deployment credentials are short-lived and automatically rotated
Performance Considerations for Encryption at Scale
Balancing Security and Latency
Encryption adds computational overhead. For high-throughput applications processing millions of transactions per day, this overhead can measurably impact latency and cost. Practical strategies to minimize the performance impact:
- Use hardware-accelerated encryption: Modern cloud instances include AES-NI hardware acceleration. Ensure your encryption libraries use these instructions (OpenSSL does this by default on supported instance types)
- Optimize key caching: Do not call KMS for every encryption or decryption operation. Use envelope encryption with locally cached data keys. Refresh cached keys on a schedule (every 5 minutes is a reasonable default) rather than per-request
- Choose the right cipher and key size: AES-256 is the standard for data at rest. For TLS, AES-256-GCM provides authenticated encryption with hardware acceleration support. Avoid CBC mode where GCM is available
- Benchmark before and after: Measure API response times and database query latency before enabling encryption and after. For most workloads, the overhead is under 5%. If you see more, investigate whether your instance type supports hardware acceleration
Cost Implications of KMS Operations
KMS API calls are not free. At scale, encryption and decryption operations can generate significant KMS costs. On AWS, each KMS API call costs $0.03 per 10,000 requests. An application performing field-level encryption on every database write at high volume should implement local key caching and batch operations to keep KMS costs manageable. Factor these costs into your cloud budget planning for the fiscal year.
At Optivulnix, encryption architecture is a core component of our DPDPA compliance practice. We help organizations implement comprehensive encryption strategies that meet regulatory requirements without adding operational complexity. Contact us for a free encryption posture assessment.


