加密密钥最严重的问题之一是密钥在哪里被删除。
原文标题:Questions About Encryption Keys and the Cloud
原文来源:medium
原文作者:Prof Bill Buchanan OBE,密码学教授
编译:ChinaDeFi
不管喜欢与否,我们都正在转向公共云。为什么呢?因为这样构建信息系统的成本通常要低得多,我们就不必担心在硬件上的投资。
KMS ( 密钥管理存储 )
在 AWS 云中,我们使用 KMS( 密钥管理存储 ) 来创建密钥 ( 图 1),然后可以使用密钥来加密 / 解密数据、签名 / 验证签名、导出数据密钥和生成 / 验证 MAC( 消息身份验证码 )。
图 1:AWS KMS
总的来说,我们有 AWS 管理的密钥 ( 例如 Lambda 服务 )、客户管理的密钥 ( 这些是由客户创建和管理的 ) 和自定义密钥存储 ( 这些是客户完全控制密钥的密钥存储 )。
AWS 可以使用哪些密钥类型?
可以将密钥用于 ECS ( 计算 )、EBS 和 S3 ( 存储 ) 以及一系列其他服务。总的来说,我们使用对称密钥或 RSA 密钥对来进行加密和解密。对称密钥使用 AES 加密,而 RSA 使用 2K、3K 或 4K 密钥,并使用「RSAES_OAEP_SHA_1」或「RSAES_OAEP_SHA_256」填充。使用 RSA,我们用公钥加密,用私钥解密。对于签名,我们可以使用 RSA 或 ECC 签名。对于 RSA,我们有 2K、3K 或 4K 密钥,而 ECC 签名使用 NIST P256、NIST P384、NIST P521 和 SECG P256k1( 在比特币和以太坊中使用 )。
AWS 可以访问自己的密钥吗?
KMS 使用符合 FIPS 140-2 的硬件安全模块 (HSM), AWS 员工 ( 或任何其他客户 ) 无法访问这些模块。它们永远不会出现在任何磁盘或备份中,只存在于 HSM 的内存中,并且只在使用时加载。此外,密钥可以被限制在世界的一个区域 ( 除非由用户定义 )。
对于对称密钥,密钥永远不会出现在 HSM 之外,对于非对称密钥 ( 公钥加密 ),私钥在 HSM 内部阶段,只有公钥被导出到外部。
如何审计加密密钥的使用情况?
从安全性和成本的角度来看,审计加密密钥的使用方式非常重要。如图 1 所示,我们可以启用 CloudWatch,它将显示如何以及何时使用加密密钥。
如果我们误删了密钥 ( 或被黑客入侵 ) 会发生什么?
加密密钥最严重的问题之一是密钥在哪里被删除。恶意行为者(内部人员或已经获得访问云基础设施权限的人)都可以删除密钥。可设置的密钥删除时间最短为 7 天 ( 最多为 30 天 ):
这种删除的延迟意味着日志将标识一个密钥将被删除,如果删除错误,则很有可能被捕获。必须记住,我们将无法解密由已删除的密钥加密的数据。
我不信任 AWS,我能有自己的 HSM 吗?
虽然 KMS 使用 HSM,但组织也可以使用 CloudHSM 集群创建自己的 HSM。在 KMS 中创建一个密钥,然后将其存储在集群中:
我们是否限制了对管理和使用的访问?
加密密钥是皇冠上的宝石,访问云中的密钥可以访问敏感数据,或签署有效的交易。一个用例是分离密钥管理者和密钥用户。在本例中,我们可以定义密钥管理 (KEY_ADMINISTRATOR) 角色并限制对密钥使用的访问。这些密钥管理者可以执行创建、撤销、放置、获取、列出和禁用密钥的操作,例如:
然后,我们可以定义密钥的使用权限,例如使用 KEY_WORKER 角色。对该角色的操作可以是:
WORKER 不能创建或删除密钥,而 ADMINISTRATOR 不能加密或解密数据。
总的来说,最小访问权限规则是其核心,其通过定义密钥管理和使用角色来简化用户访问。然后将用户添加到这些角色中。
我可以进行密钥轮换吗?
手动更新密钥并不是一件很好的事情,而且有些人可能可以访问以前的密钥。解决这个问题的一种方法是实现密钥轮换,即密钥每年自动更换。但是,如果我们使用以前使用的密钥进行了加密呢?KMS 保留所有以前的密钥,并会根据需要使用它们。密钥轮换的使用记录在 CloudWatch 和 CloudTrail 上。
密钥管理基础设施是否符合 PCI DSS Level 1、FIPS 140-2 和 HIPAA?
许多系统的一个密钥元素是遵从合规标准。KMS 符合 PCI DSS Level 1、FIPS 140-2、FedRAMP、HIPAA 和其他定义。AWS KMS( 密钥管理系统 ) 加密模块与 FIPS 140-2 Level 2 匹配,其中一些元素与 Level 3 匹配——包括物理安全方面。
结论
规则很简单,而且是不需要信任的。