I was reading this article by Credit Karma (An American fintech). They mention that this system of "identity-aware encryption" helps them better protect the data of their users and to keep it private.
This block diagram tries to explain how the process works:
- A user makes a request to the application to get some data
- Since the data is encrypted, the application needs to make a request to HSM/KMS to fetch the key. So, the application forwards the user's auth token to HSM/KMS system.
- After verifying the auth token, the HSM/KMS returns the key to the application
- Application then uses the key to decrypt the data that it gets from the database.
My question is, how does this system become more secure than a simple authorization check done using the auth tokens and user's identity?
When a user makes a request to the application, the application can check if the request came from an authorized user and then go look for the key that user.
This particular paragraph makes me doubt the system's efficiency even more:
What About Background Processing?
At a certain point, we need some of the data to be available for offline processing. This means that data needs to be decrypted without the user being present. To do this right, we’ll perform it in a more secure and isolated zone that is not accessible by our users and give this ability only to specific services.
Clearly there is a way for the system to access the data by itself when it needs to. So essentially, all it is doing is verifying whether the requesting user has access to the key or not.