What:密钥管理——加密不难,难的是密钥管理。AWSKMS的全称是KeyManagementService。很重要的一点,它提供的核心服务是密钥管理,帮助企业和开发者方便、安全地管理密钥。很多刚接触KMS的同学,常常对KMS是干什么的一头雾水。主要是他们没有注意KeyManagement这两个字。所以我们的第一个问题“什么”已经得到了回答。KMS是一种密钥管理服务。不是什么超级超级神奇的高超加密方式。希望本文的读者读完后能认识到一个概念:加密很容易,难的是自己管理密钥。原因:KMS可以确保您的密钥安全。再看第二个问题:为什么?为什么我需要让你管理我的密钥,我不能自己保管吗?事实上,你可以自己管理它,就像你可以建立自己的机房一样,只要你了解各种最佳实践并愿意花时间自己维护它。服务之所以叫服务,是因为服务商为你做了各种麻烦的事情(Theydealwiththoseheavylifting),让你可以把更多的时间和精力花在更有价值的事情上。那么AWSKMS为用户做了哪些麻烦的工作呢?完全托管:您不需要额外的服务器,也不需要额外的维护人员。简化加密过程:您无需关心加密过程中繁琐的细节,只需要调用相关接口即可。安全审计功能:关闭仅仅保证安全是不够的,你还需要知道谁有权限使用密钥,谁什么时候使用过密钥,谁在什么时候删除过密钥。这对于提供平台服务的大型企业和公司来说非常重要。而这些可以精确到非常细粒度的审计功能,已经被AWS通过AWSCloudTrailService完全内置到整个AWS生态系统中。(仅仅安全是不够的,你必须向某些人证明,无论是内部审计、你的老板,还是你的客户。)确保你的密钥是安全的:你不需要努力工作来弄清楚如何获得您的密钥存储在不暴露于Internet的机密位置。事实上,AWSKMS密钥(准确的说是MatserKey)是完全保存在内存中的,任何人(包括AWS本身)都无法获得密钥的原始内容。下面将介绍原因。密钥轮换过程:AWS会定期或手动刷新密钥内容,这也是密钥管理的最佳实践。How:很复杂但是他们帮你搞定了既然知道为什么要用AWSKMS,那么下一步也是本文的重点,下面我们来了解一下How:KMS的内部实现原理。先了解对称加密和非对称加密:简单来说,对称加密就是指加密和解密使用相同的密钥;非对称加密是指使用一对密钥进行加密和解密:公钥和私钥,可以使用公钥加密,私钥解密,反之亦然。例如,HTTPS使用非对称加密。接下来我们看看KMS内部是如何存储你的密钥的:假设我们有一个加密数据的密钥,叫做DataKey,对Data进行加密,得到EncryptedData。这个过程非常简单。但是问题来了,如何处理DataKey呢?如果攻击者获得了DataKey,那不就意味着数据也被破解了吗?正确的选择是用某种密钥(这里称为MatserKey)(术语称为Wrapping)对DataKey进行加密,得到EncryptedDataKey。然后我们将EncryptedData和EncryptedDataKey一起保存,如下图所示:但是问题又来了:如何加密MasterKey呢?我相信你已经注意到了。这与俄罗斯嵌套娃娃非常相似(划掉)。你没有看错。AWSKMS确实做到了这一点。他们对密钥进行逐层加密(专业术语叫KMSKeyHierarchy),到最后的Key,确实是明文,但是:完全存储在内存中,永远不会存储在物理介质中。它永远不会通过公共网络传输。以至于连AWS员工都没有办法得到原始内容。其他数据密钥呢?我实际加密的数据的数据使用的是DataKey,如果DataKey泄露了怎么办?这个问题很重要。那么KMS是如何解决的呢?KMS的DataKey是在内存中动态生成的。用于加密数据后,在内存中被删除,只剩下加密后的EncryptedDataKey。借用AWSre:Invent2019上AWS解决方案架构师PeterM.O'Donnell的话:KMS是一项非常严肃的服务,由非常认真的人为非常认真的客户构建。总结一下:数据使用数据密钥加密以获得加密数据。加密数据和加密数据密钥存储在一起。就算拿到了EncryptedData和EncryptedDataKey也没用,还得拿到上一层加密EncryptedDataKey的MatserKey,还得知道TopLevel最后的MasterKey。KMS从根本上设计是为了确保没有人可以获得顶级主密钥。所以你的数据是安全的。本文介绍什么是AWSKMS、为什么要使用KMS,以及KMS如何保护您的密钥,从而保护您的数据。在下一篇文章中,我们将从实际应用的角度来看如何将KMS应用到具体的应用中。在你的系统中。相关阅读:https://amazonaws-china.com/kms/AWSre:Invent2019:使用AWSKMS进行数据保护、访问控制和审计AWS安全基础知识-AWSKMS
