Menu
Amazon Web Services
General Reference (Version 1.0)

AWS SDK Support for Amazon S3 Client-Side Encryption

The following tables provide lists of cryptographic algorithms and features that are supported by the language–specific AWS SDKs. For details about how to use the features for a particular SDK, see that SDK's developer guide.

If you are new to cryptography, see Cryptography Basics in the AWS Key Management Service Developer Guide to get familiar with terms and concepts.

Note

The AWS Encryption SDK is an encryption library that is separate from the language–specific SDKs. You can use this encryption library to more easily implement encryption best practices in your application. Unlike the Amazon S3 encryption clients in the language–specific AWS SDKs, the Encryption SDK is not tied to Amazon S3 and can be used to encrypt or decrypt data to be stored anywhere.

The Encryption SDK and the Amazon S3 encryption clients are not compatible because they produce ciphertexts with different data formats. For more details on the Encryption SDK see the AWS Encryption SDK Developer Guide.

AWS SDK Features for Amazon S3 Client-Side Encryption

In the following table, each column indicates whether an AWS SDK for a specific language supports the features used in client-side encryption.

To use the Amazon S3 client-side encryption feature to encrypt data before uploading to Amazon S3, you must provide a master key to the Amazon S3 encryption client. You can provide a client-side master key or use the AWS KMS–managed master keys feature. The AWS KMS–managed master keys feature provides an easy way to create and manage keys used to encrypt data. For more details about these features, choose the links provided in the Feature column.

For details about how to use the features for a particular SDK, see the SDK's developer guide.

Feature Java .NET Ruby v2 CLI Boto3 PHP v3 JavaScript Go C++
Amazon S3 client-side encryption Yes Yes Yes No No No No Yes Yes
AWS KMS–managed master keys Yes No Yes No No No No Yes Yes

For more details about the Amazon S3 encryption client in each language–specific SDK that supports client-side encryption, see the following blog posts.

Amazon S3 Encryption Client Cryptographic Algorithms

The following table lists the algorithms that each language–specific AWS SDK supports for encrypting keys and data when using the Amazon S3 encryption client.

Algorithm Java .NET Ruby v2 CLI Boto3 PHP v3 JavaScript Go C++
AES/ECB key wrap (not recommended) Yes Yes Yes No No No No No No
AES/Wrap key wrap Yes No No No No No No No Yes
RSA key wrap Yes No Yes No No No No No No
AES/CBC content encryption (Encryption Only mode) Yes Yes Yes No No No No Yes Yes
AES/GCM content encryption (Strict Authentication mode) Yes No Yes No No No No Yes Yes
AES/CTR content encryption (Authenticated mode only used for decrypting in range GETs) Yes No Yes No No No No No Yes

For more details on Authenticated and Encryption-only modes, see the Amazon S3 Client-Side Authenticated Encryption blog post.