Encryption Requirements for PCI Compliance in 2025
Complete guide to implementing encryption for PCI Compliance in 2025. Understand must-haves and some practical strategies to maintain compliance.
When discussing data security, it’s easy to focus on protecting data while it's processing or in transit. However, it's just as important to consider the security of data at rest – data that's stored on a hard drive, in a database, or in a cloud provider storage bucket. Mistakes with data at rest can lead to serious data breaches, so taking steps to secure it is essential. One way to do so is with encryption.
Encryption uses cryptographic algorithms to convert data from plaintext to ciphertext, and the data can only be decrypted or returned to its original state using the right key. Cryptographic keys work similarly to physical keys, where they will lock (encrypt) data, and only the correct key will unlock (decrypt) the data.
Types of encryption include symmetric encryption, where the same key is used for encryption and decryption, and asymmetric encryption, where a pair of keys (public and private) are used for encryption and decryption. Encrypting sensitive data ensures no one can access it, even if cyberattacks or data theft occur. As Aditya Patel said, “The efficacy of a good encryption scheme depends upon the strength of the encryption algorithm (the lock) and the encryption key (the key).”
Implementing encryption at rest can be a step in the right direction for your security strategy, but it won’t be effective if it’s not configured correctly. In this post, we’ll look at common mistakes that organizations and developers make with encryption at rest and learn best practices for keeping sensitive customer data safe.
There are three states of data:
Suppose Alice wants to sign a PDF saved on her computer and share it with Bob. The document on her computer is currently data at rest. Alice opens the PDF to sign it and attaches it to an email, which now makes the data in use. She then sends the email to Bob with the PDF attached, which makes the data in transit. Once Bob downloads the file to his local machine, the data will be at rest.
You must follow any regulatory guidelines for the type of data you are storing and its geographic location. Regulatory requirements aside, storing unnecessary data that isn’t critical to your application or business can be a security risk because it creates additional attack surface for potential threats. The more data stored, the more opportunities for attackers to exploit vulnerabilities and gain access to sensitive information.
Let’s say, to safeguard against this, you decide to encrypt all the sensitive – but presumably unnecessary – data saved to your data store. Even though your data is technically safe, you’re going to rack up costs on storage and encryption, either from a vendor you’ve chosen or from your own implementation. You’re also going to risk latency and performance issues. If you don’t need to store it and won’t need it in the future, don’t store it.
Using weak encryption means choosing encryption algorithms or methods that can be easily circumvented via brute-force attacks. This could happen by:
Test your code or choose a reliable testing provider (we use Cure53 as a pen tester) to identify any areas of weakness. You must also be aware of built-in encryption methods chosen by your database or cloud provider.
When you’re developing software, designs can change quickly, requirements get miscommunicated, or misunderstandings happen while maintaining legacy code. But it’s important to plan where encryption will happen on your machine or in your stack. Mistakes or inconsistencies could lead to data leakage or worse.
There are four common approaches to encrypting data at rest:
If you plan to rely on encryption software or default solutions (for example, built-in server-side encryption with Amazon S3), find out what the provider offers, such as the strength of encryption, key management, and how it will integrate with your overall encryption scheme.
Key management is a challenging problem — even world-class engineers easily make mistakes with cryptographic keys. So if you make any of the following errors, know that you are not alone – but put practices in place to remediate them now.
Amazon has a helpful framework for approaching key management in the form of three questions:
You can use these answers to guide any fixes you need to make. Using a key vault or key management service will take care of many of the issues above — Evervault will handle key storage, rotation, and provisioning on your behalf.
Implementing CSFLE and utilizing secure enclaves to process sensitive data can ensure it stays protected throughout your system. The number one problem with only implementing encryption at rest is that it doesn’t protect data in use or in transit. Though your data will be secure at rest, as soon as it’s retrieved to run logic on it or send it from your server to the client, it will be accessible in plaintext form and can be compromised.
Encryption at rest should be one piece of a broader security strategy. See the OWASP cryptographic storage cheat sheet for more best practices and follow their guidelines. And if you have time, watch these talks:
It can be overwhelming to consider all these factors when looking at your system. One option is to use Evervault to encrypt your data and manage your keys.
Evervault is the first encryption platform to let you encrypt, process, and share sensitive information without touching it in plaintext. This is built on the Evervault Encryption Engine (E3) running on Nitro Enclaves. Using enclaves means that Evervault can never access your data.
For encryption at rest, our data structure is designed so that you don’t need to change your database configuration or models. You can store Evervault-encrypted data in your database as you would plaintext data. Check out our docs for more details on the Evervault Encryption Scheme and our approach to key management.
Register for a Free Evervault account to see how it works, with unlimited encrypts and up to 2,500 decrypts.
Developer Advocate Lead