需要双重控制/密钥加密密钥?

信息安全 pci-dss
2021-09-04 08:09:48

我试图在 PCI-DSS 标准、安全加密密钥存储和分发中了解 3.6.3 和 3.6.2。

是否会将两个 256 位密钥半部分存储在单独的、隔离的位置,然后将它们异或在一起以创建数据加密密钥计数?是否严格要求密钥加密密钥?

加密服务将能够读取两半并组装数据加密密钥。对给定密钥一半的所有管理访问都将受到 RBAC 和审计的限制。假设密钥来自具有密钥半部分之一的适用性随机数据源,则不会提供有关密钥实际内容的一点(是的,双关语)信息。

2个回答

PCI DSS 的问题之一是要求要么到位,要么不到位,因此它不是基于风险的方法。双重控制意味着没有一个用户拥有“王国的钥匙”,可以说,密钥加密密钥 (KEK) 可以防止用于数据加密的密钥(我们称之为数据加密密钥或 DEK)出现在清除。

KEK 应始终与 DEK 具有相同或更大的强度 - 我不确定要求是否明确,尽管他们确实建议您符合 NIST 标准(例如 800-57)。我不认为使用 XOR 作为 DEK 的 KEK 会提供这个。

实施双重控制可能很困难——尽管服务可以访问具有单独 RBAC 的分布式关键部分是一个好主意。另一个是在应用程序中使用 KEK,在数据库中使用 KEK 加密 DEK,在应用程序和数据库系统上使用 RBAC。MS SQL 有一个内置的密钥管理系统,使用主加密密钥、数据加密密钥和证书来保护密钥。StrongAuth 也有一个 Lite 加密库来执行此操作。如果您有 QSA,您可以询问他们过去是如何实现这一点的。

很难对 PCI 相关问题给出明确的是/否答案,因为涉及到人工审核员,并且没有统一的标准来做出合规/不合规判断。一位审核员可能会批准您的方法,而另一位可能不会。

3.6.2 安全加密密钥分发

3.6.3 安全加密密钥存储

将您的密钥分成两部分并重新组装它们只会传播问题并产生复杂性。现在您有两个“密钥”,一个已加密,另一个用于解锁第一个密钥的加密。如何保护第二把钥匙?要使系统正常工作,您必须在某处拥有未加密的密钥,或者需要有人 24/7 全天候输入密码。

我将 3.6.2 解释为通过安全方式将您的密钥传输到需要它的地方,而 3.6.3 将您的密钥存储在具有适当访问控制和审核的正确位置。