SQL Server 加密 - 轮换密钥以符合 PCI 合规性

SQL Server 加密 - 轮换密钥以符合 PCI 合规性

PCI 合规性要求每年轮换密钥。我经常遇到的“密钥轮换”的定义是解密数据,然后使用新密钥重新加密。真的吗?每个人每年都会解密/加密所有加密数据吗?

目前,我在 3 台服务器上有 16 个数据库,每个数据库中都有多个表 - 而且这个数字还会继续增长。手动执行此操作很容易出错,导致我的数据无法读取。是的,我可以编写一些东西来做到这一点......但这真的是每个人都在做的事情吗?

所以问题是您是手动处理这个问题还是可以推荐一个负担得起的(主观的,我知道)第三方工具?

我看到有人建议“更改”层次结构中较高级别的密钥。我们使用经常推荐的层次结构,即数据库主密钥加密证书,然后证书再加密对称密钥,对称密钥再加密数据。

首先,这似乎不符合“轮换密钥”的定义。其次,即使我更改了 DMK 或证书,也无法阻止使用可能被坏人窃取/破解的相同对称密钥解密数据。

答案1

您对“轮换密钥”的定义是正确的。您需要使用“旧”密钥解密数据,然后使用“新”密钥重新加密。很多商店每年都会这样做,是的 - 这是一项繁重的工作,最好由自动化程序来完成(您可能可以编写自己的工具 - 我不知道有任何第三方工具,但我确信它们存在)。


<咆哮>

将 PCI-DSS 2.0 要求 3.6.4“对于已到达其加密期末尾的密钥的加密密钥更改(例如,在经过一段定义的时间之后...”)解释为“您必须每年轮换密钥,否则世界将会终结”是短视的,并且在我/我的审计员​​看来是不正确的:如果您使用的算法足够强(例如 AES-256)并且没有已知的密钥泄露,那么轮换密钥并不能为您提供更好的安全性 - 事实上,它会产生新的暴露(旧密钥需要提供给程序,只要程序需要解密/重新加密您的数据 - 即使执行该工作的机器是安全的,它仍然需要将密钥放在多个地方)。

请注意,如果你想成功提出这个论点,你需要两件事:一个对密码学有基本了解的审计员,以及一个可以辩护的政策,与NIST 出版物 800-57(特别是“推荐的加密周期”表)。例如,我们的策略需要 AES-256(它不受实际攻击,并且暴力破解需要很长时间),并且当直接访问密钥的人(密钥系统管理员、某些 C 级官员)被终止时,强制进行密钥轮换。

</咆哮>

相关内容