When using cloud HSM (eg: AWS CloudHSM, Google Cloud HSM etc) for client-side encryption, they always refer to Envelope encryption. In this encryption approach, the data encryption key (DEK) is created locally and will be wrapped with a key encryption key (KEK) managed in cloud HSM. However, every time the client application needs to decrypt the data, the client application needs to send the wrapped DEK to cloud HSM to get a Plaintext DEK back.

From my understanding, the encryption key should be securely protected during transmission. In Envelope-based encryption, the plaintext DEK is transmitted over the wire. Although the communication is protected with HTTPS, it cannot guarantee end-to-end security especially if a client application needs to cross the Internet to access a cloud HSM. The HTTPS communication will be terminated at some points in the middle such as: gateway, load balancer etc. If the plaintext data encryption key is leaked, it can be directly used to decrypt the data it protects.

I try to find if any of the vendors provide some ways to protect DEK during transmission, for example, by allowing the client application to get DEK wrapped with a public key provided by the client application. I am not able to find any such example. Did I miss anything? Or my concern is totally invalid and the Data Encryption Key is totally fine to be transmitted as plaintext?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.