Envelope Encryption

KMS 实际上使用 Envelope Encryption 作为其核心加密机制。

Envelope Encryption的原理

当加密数据时,数据被保护了, 但同时必须保护加密的key,不然这个key泄露了也很危险。一个保护key的策略是继续加密这个key。envelope encryption就是这样的实践:使用data key加密数据,再使用另一个key加密data key。甚至可以层层套key,就像信封一样。但最后一定有个要保护的明文key,这个key就叫master key:

image-20191009220253795

Envelope Encryption(信封加密)是一种加密策略,遵循以下原则:

  • 使用数据密钥加密实际数据
  • 使用主密钥加密数据密钥
  • 将加密后的数据与加密后的数据密钥一起存储

KMS如何实现信封加密

KMS就是这样的服务:可以保护master key, 又叫CMK(customer master keys)

AWS KMS 完全基于 Envelope Encryption 模型运作:

  1. CMK (Customer Master Key) - 存储在 KMS 中的主密钥,用于保护数据密钥

  2. 数据密钥 - 由 KMS 生成,用于直接加密用户数据

img

KMS 处理复杂的密钥管理,简化了 Envelope Encryption 使用。


由于CMK最多加密4KB的数据,所以通常用它来加密和解密data key,用这个data key来加密文件。

流程如下:

img

当我们加密数据时:

img

当我们解密数据时:

img