我有一些使用Aes-Gcm加密的数据。每次我必须对数据进行加密时,我都会为标记数据生成一个大小适当的随机值,以及一个空数组。
在Aes-Gcm中,有一个选项可以提供AAD或其他经过身份验证的数据。据我所知,AAD基本上是一些在使用Gcm解密时经过身份验证的纯文本数据。
一般情况下,我相信你只是在纯文本中抢占了现在的位置。但是,由于nonce是在调用加密之前生成的,所以我想知道您是否可以以AAD的形式传递nonce。
这会是安全风险吗?会有帮助吗?还是根本不重要?
发布于 2021-05-21 12:56:59
这不会是一个安全风险,也不会有帮助。
关于其他身份验证数据的任何内容都无法阻止在传输中对其进行修改。您只需在身份验证之后知道,当它不进行身份验证时,它已经被修改。但是,为了执行身份验证,您还需要正确的现在。
因此,不管是以明文形式还是在AAD中,如果它在传输中被破坏(恶意地或对错误进行处理),您将无法进行身份验证或解密。
发布于 2021-05-21 11:37:05
我不知道通过AAD是否会带来安全风险,我对Galois认证背后的数学知识不太了解,其他在加密SE中的人也许能够回答。但你其实不需要这么做。GCM所需的只是使用加密期间使用的相同的AAD,如果您想通过身份验证,则在解密期间使用相同的AAD。AAD可以是一些明文,并与密码保持不变,就像现在一样,你为什么要这么做呢?您可以使用任何通用标记作为AAD。它只节省了几个字节/千字节的存储空间,同时也可能存在风险。而且AAD也是可选的,您可以使用GCM而不使用AAD。但是,您不应该做的是对相同的密钥重复NO一次性,它破坏了所提供的机密性和身份验证。GCM是流模式密码,现在的重用比CBC这样的模式具有更大的破坏性。我还建议您使用GCM模式,这有助于防止由于随机数生成器使用的熵源不足而导致的IV重用。有关于在GCM中使用识别信息以防止重放攻击的建议。
编辑:另一个选项,如果您不需要担心重放攻击:您也可以使用常量AAD的一个用例。这不是一种安全风险,不需要转移AAD。它还防止在另一个上下文中使用一段加密数据,以防格式匹配。
https://security.stackexchange.com/questions/249557
复制相似问题