服务器端加密是为了保护静态数据。使用客户提供的加密密钥的服务器端加密 (SSE-C) 允许您设置自己的加密密钥。使用您作为请求的一部分提供的加密密钥,Amazon S3 在写入磁盘时管理加密并在您访问对象时管理解密。因此,您不需要维护任何代码来执行数据加密和解密。您只需管理您提供的加密密钥。
在您上传对象时,Amazon S3 将使用您提供的加密密钥对您的数据应用 AES-256 加密并从内存中移除加密密钥。
Amazon S3 不存储您提供的加密密钥,而是存储加密密钥添加了随机数据的 HMAC 值来验证未来的请求。无法使用添加了随机数据的 HMAC 值来推导出加密密钥的值或解密加密对象的内容。这意味着,如果您丢失加密密钥,则会失去该对象。
在使用具有客户提供的加密密钥的服务器端加密 (SSE-C) 时,您必须使用以下请求标头提供加密密钥信息。
名称 | 描述 |
---|---|
x-amz-server-side-encryption-customer-algorithm |
使用此标头来指定加密算法。标头值必须为“AES256”。 |
x-amz-server-side-encryption-customer-key |
使用此标头来提供 256 位的 base64 编码的加密密钥以供 Amazon S3 用于加密或解密您的数据。 |
x-amz-server-side-encryption-customer-key-MD5 |
使用此标头根据 RFC 1321 提供加密密钥的 base64 编码的 128 位 MD5 摘要。Amazon S3 使用此标头进行消息完整性检查以确保加密密钥的传输无误。 |
您可以使用 AWS 开发工具包包装库将这些标头添加到您的请求中。