KMS 实际上使用 Envelope Encryption 作为其核心加密机制。
当加密数据时,数据被保护了, 但同时必须保护加密的key,不然这个key泄露了也很危险。一个保护key的策略是继续加密这个key。envelope encryption
就是这样的实践:使用data key
加密数据,再使用另一个key加密data key
。甚至可以层层套key,就像信封一样。但最后一定有个要保护的明文key,这个key就叫master key
:
Envelope Encryption(信封加密)是一种加密策略,遵循以下原则:
KMS就是这样的服务:可以保护master key
, 又叫CMK(customer master keys)
AWS KMS 完全基于 Envelope Encryption 模型运作:
CMK (Customer Master Key) - 存储在 KMS 中的主密钥,用于保护数据密钥
数据密钥 - 由 KMS 生成,用于直接加密用户数据
KMS 处理复杂的密钥管理,简化了 Envelope Encryption 使用。
由于CMK最多加密4KB的数据,所以通常用它来加密和解密data key
,用这个data key来加密文件。
流程如下:
当我们加密数据时:
当我们解密数据时: