KMS工作原理:

KMS加密有两种场景:

  • 对密码进行加密。这种情况下密码大小一般小于4K
  • 对大文本进行加密,例如上G的数据。此时需要使用data key来加密。

CMK(Customer Master Key)用户接触不到,用户只需要传递要加密的数据和要解密的数据。

对密码进行加密

img

对大文件加密 - Encryption SDK

对大于4K的数据,需要使用Envelope encryption加密。当提到Encryption SDK,则等同于Envelope encryption ,等同于调用GenerateDataKey API

GenerateDataAPI工作流程

首先,要对大文件进行加密,我们一定要有加密的key,这个key而且不能在本地明文存储,而是存储的密文形式。就像你的zip文件,解密密码不能明文存放到本地,应当存放它的加密后密文。

image-20191021094027707

所以,调用GenerateDataKey API时,第一步就是KMS返回plaintext data keyencryted data key

我们对文件加密完后,要删除明文的data key,保留密文形式的data key

img

对文件进行解密时,首先将encrypted data key发送给KMS,KMS对其进行解密,返回明文的data key。再对文件进行解密:

img

KMS价格

三种Customer Master Key(CMK):

  • AWS Managed Service Default CMK: 免费
  • User key created in KMS: 1$/month
  • User key imported: $1/month

KMS的API调用:$0.03 / 10000 calls