AWS 中 S3 的 server-side encryption 解释与说明

Amazon S3 的服务器端加密(Server-Side Encryption, SSE) 是 AWS 提供的一项核心安全机制,用于自动加密对象在持久化存储时的数据(即"静态数据加密")。启用 SSE 后,S3 会在将对象写入磁盘前对其进行加密,并在授权用户或应用程序请求访问时自动解密,整个过程对用户透明。

Amazon S3 支持三种主要的 SSE 加密方式:

  • SSE-S3:Amazon S3 全权管理加密密钥,管理所有的加密和解密过程
  • SSE-KMS:AWS Key Management Service (KMS) 管理加密密钥,可以设置使用权限,审计密钥使用情况
  • SSE-C:客户自己提供并管理加密密钥,每次请求必须提供密钥(通过 HTTPS 头部),S3 仅用于加密/解密操作

S3 的服务器端加密(SSE)过程:

  • 上传时(加密):当上传的数据到达 AWS S3 服务器后,S3 会在数据写入磁盘存储之前使用相应的密钥对其进行加密,数据以加密形式存储在 S3 的物理存储设备上
  • 下载时(解密): S3 从存储中读取加密数据后,会使用相应的密钥在服务器端即时解密,然后将解密后的明文数据通过 HTTPS/TLS 传输回客户端

结论: S3 保证的是数据在 AWS 存储介质上是加密的,但它在传输给授权用户时会自动解密。

DEK (Data Encryption Key) :DEK 是实际用于加密和解密对象数据(即上传的文件内容)的密钥

上传 (加密) 过程:

  1. AWS KMS 随机生成一个一次性的对称 DEK
  2. S3 使用这个 DEK 快速地对上传的对象明文数据进行加密,生成密文
  3. S3 再使用 KMS Key (CMK) 对这个 DEK 本身进行加密,生成一个加密的 DEK
  4. S3 将对象密文和加密的 DEK 一起存储在 S3 上

下载 (解密) 过程:

  1. 用户请求下载对象
  2. S3 提取加密的 DEK,并发送给 KMS
  3. KMS 使用 KMS Key (CMK) 对加密的 DEK 进行解密,将明文 DEK 返回给 S3
  4. S3 使用这个明文 DEK 快速解密对象密文,并将明文数据通过 HTTPS 发送给用户
相关推荐
爱喝矿泉水的猛男4 小时前
单周期Risc-V指令拆分与datapath绘制
运维·服务器·risc-v
hakukun4 小时前
docker避免每次sudo方法
运维·docker·容器
杨凯凡4 小时前
Docker Compose:多容器应用编排入门与实战
运维·docker·容器
jason.zeng@15022075 小时前
my.cnf详解
运维·数据库·adb
灵神翁5 小时前
自建node云函数服务器
运维·服务器
TangDuoduo00056 小时前
【IO模型与并发服务器】
运维·服务器·网络·tcp/ip
FOREVER-Q6 小时前
Windows 下 Docker Desktop 快速入门与镜像管理
运维·服务器·windows·docker·容器
地球没有花6 小时前
gitlab cicd首次操作
运维·git·ci/cd·gitlab
adnyting6 小时前
【Linux日新月异(五)】CentOS 7防火墙深度解析:firewalld全面指南
linux·运维·centos