AWS KMS比传统的密钥存储方法如何安全?

qai*_*pak 1 security encryption cryptography amazon-s3 amazon-web-services

所以我读了这个

Traditionally, keys have been managed in haphazard ways, from SCP-ing 
keys around your instances to baking them into machine images. The safe 
way to manage high-value keys has been to employ dedicated Hardware 
Security Modules (HSMs), either on-premise or with the AWS CloudHSM 
service. In either case, HSMs are expensive and hard to use.
Run Code Online (Sandbox Code Playgroud)

我相信KMS与使用HSM的概念相同。据我了解,不是使用隐藏/保护密钥,而是使用KSM“库”并将数据发送到其中以进行加密,解密器也是如此。

难道不是全部归结为这一点:不是保护密钥,而是现在我们必须保护对KSM存储的访问?我不知道那会更好。别人可以像访问我的密钥一样容易地访问我的KMS,不是吗?

我只是想以最简单的形式了解该系统(和hsm)的好处(暂时不考虑信封加密)

Gab*_*yel 5

对HSM的访问是有时间限制的。如果您丢失了密钥,则拥有密钥的任何人都可以根据需要加密/解密数据,产生签名或执行任何其他加密。当然,您可以撤消证书,但是在许多情况下,这不会影响密钥(例如,证书撤消后仍可用于解密)。

如果使用HSM,则在发现访问威胁时,可以非常迅速地禁用攻击者对HSM的访问,并且不会破坏其他数据。当然,只要攻击者可以访问HSM,攻击者就可以充分利用您的密钥,但之后不能使用。

同样安全且同样重要的是,审核对HSM的访问比对存储在其他位置的密钥的访问要容易得多。由于密钥永远不会离开HSM,因此您不必担心审核复制的密钥用法之类的事情(实际上是不可能的)-您可以获得有关谁究竟出于什么目的访问了什么密钥的信息。您可以随意授予和撤销这种访问权限。

HSM通常还提供密钥管理的其他方面,例如,密钥分发可能变得更加容易。

所以是的,当然,您仍然需要保护对HSM和包含密钥的访问。但是由于上述原因,如果使用得当,它仍然可以使密钥管理更加安全。

  • @JamesKPolk我在回答之前就已经考虑过这一点,并且我认为您是对的-从技术上讲,它可能是题外话。但是我确实认为这个问题与编程非常相关。从本质上来说,这不是直接的源代码问题,但我认为从软件方面来看,这类编程决策(存储密钥的位置)确实非常重要,因此值得回答此类问题并传播安全知识,以便人们产生更安全的代码。但是再次,我不想争论-只是我的观点。 (3认同)
  • @JamesKPolk我问过KMS而不是HSM。换句话说,是实现HSM的“主要用于编程的工具”。 (2认同)