I am trying to understand how AWS KMS works, and there is one thing I am still not completely sure of: when using CMKs, so no Data Keys, no envelop encryption, does the encryption take place in the cloud? Maybe because it's so obvious that it happens in the cloud, but I haven't been able to find a clear answer anywhere in the documentation or in related sites. They keep saying that KMS manages the keys for you, but not that it always perform encryption/decryption when using CMKs, as I would expect. For instance here:

AWS Key Management Service (AWS KMS) is a managed service that makes it easy for you to create and control the encryption keys used to encrypt your data. The customer master keys that you create in AWS KMS are protected by hardware security modules (HSMs).

In Wikipedia:

A key management system (KMS), also known as a cryptographic key management system (CKMS), is an integrated approach for generating, distributing and managing cryptographic keys for devices and applications. They may cover all aspects of security - from the secure generation of keys over the secure exchange of keys up to secure key handling and storage on the client. Thus, a KMS includes the backend functionality for key generation, distribution, and replacement as well as the client functionality for injecting keys, storing and managing keys on devices.

Only in this other site is mentioned that

They [CMKs] never leave AWS KMS FIPS validated hardware security modules.

Can someone confirm that encryption/decryption happens in the cloud, not locally? If so, is that (one of the main reasons) why symmetric keys are used in KMS?

1 Answer 1


Yes, that is a basic function of AWS KMS to encrypt/decrypt an object under a CMK. When you encrypt data directly with KMS, it must be transferred over the network as all the cryptographic operations are performed in the backing HSM keystore.

AWS KMS provides low latency cryptographic operations on HSMs by design. Thus there is a limit of 4 KB on the amount of plaintext that can be encrypted in a direct call to the encrypt function. The KMS Encryption SDK can be used to encrypt larger messages.

KMS uses symmetric encryption as asymmetric encryption is computationally more expensive.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .