为什么具有随机nonce的AES-GCM应该在Kubernetes中每200k次写入时轮换一次



本教程将在Kubernetes中实现静态加密(https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/)我们绝对不确定为什么AES-GCM加密提供商要求每200K写入一次就轮换密钥,因为我们对加密的工作原理缺乏了解。此外,确切的意思是:;200K写入";,我们如何定义我们应该旋转键?谢谢

我们绝对不确定为什么AES-GCM加密提供商需要轮换

GCM模式基本上是一种具有内置完整性验证(消息验证码(的CTR流模式。对于这种模式,防止重复使用相同的IV/密钥对非常重要。建议限制使用相同密钥加密的内容数量,限制随机数冲突的概率和密钥分析选项(这些是后面的一些数学运算,已经在评论中提到(。

是的,200k是一个任意的数字,但必须有人说明一个合理的数字,其中nonce碰撞概率仍然可以忽略不计,并且密钥可以在相当长的时间内使用。

确切的意思是:;200K写入";,

这通常很难估计,这取决于";写";。如果使用密钥加密其他随机密钥(作为包装密钥(,或者使用密钥加密大量连续内容(例如存储(,则可能会有所不同。

我们如何定义我们应该旋转密钥?

让我们务实一点,例如AWS KMS每年都提供自动密钥轮换。基于这个问题,假设密钥用于加密etcd存储(配置(,每年轮换可能是一个安全的选择。(我希望您在k8s集群中没有20万个秘密和配置映射(。

密钥轮换过程通常会创建一个新密钥(密钥版本(,并使用新密钥对新内容进行加密。现有内容仍然可以使用旧密钥进行解密。

在这方面,我有点担心文档中如何描述密钥轮换。基本上,步骤1-4看起来不错,定义了一个新的加密密钥并生效。步骤5和6是使用新密钥对所有etcd内容进行重新加密,基本上限制(如果不是违反(密钥旋转的全部目的。如果你们有时间和耐心去挖掘,也许你们可以在支持下学会这一点

根据OpenShift文档:https://docs.openshift.com/container-platform/3.11/admin_guide/encrypting_data.html

Kubernetes没有合适的nonce生成器,并使用随机IV作为AES-GCM的nonce。由于AES-GCM需要一个适当的nonce来确保安全,因此不建议使用AES-GCM。20万的写入限制只是将致命的nonce误用的可能性限制在合理的低范围内。

据我所见,这只是一个任意数字。

最新更新