KMS加密有两种场景:
data key
来加密。CMK(Customer Master Key
)用户接触不到,用户只需要传递要加密的数据和要解密的数据。
这种模式与上一节讨论的信封加密(Envelope Encryption)不同,在处理更大数据时,KMS 会使用信封加密模式,生成数据密钥来加密实际数据。当数据量小时(如密码),KMS 可以直接使用 CMK 进行加密。
对大于4K的数据,需要使用Envelope encryption
加密。当提到Encryption SDK,则等同于Envelope encryption ,等同于调用GenerateDataKey API
。
首先,要对大文件进行加密,我们一定要有加密的key,这个key而且不能在本地明文存储,而是存储的密文形式
所以,调用GenerateDataKey API
时,第一步就是KMS返回plaintext data key
和encryted data key
我们对文件加密完后,要删除明文的data key
,保留密文形式的data key
:
对文件进行解密时,首先将encrypted data key
发送给KMS,KMS对其进行解密,返回明文的data key
。再对文件进行解密:
在第6节和第7节,会对这两种模式进行具体操作介绍
三种Customer Master Key(CMK):
KMS的API调用:$0.03 / 10000 calls