当我使用AES GCM解密时,如果我的身份验证标记与计算的身份验证标记不匹配(表明解密过程中提供的内容不正确),用户是否可以完全安全地查看解密输出?
或者我应该将解密输出设置为零,以便潜在的攻击者除了解密过程失败之外无法获得任何信息?
我担心一些黑客/数学家如果能够访问解密输出,就能更准确地猜测密钥值。
答案 0 :(得分:1)
无论你做什么,关键值都是安全的 - 禁止侧通道攻击或滥用关键字节。诸如AES的分组密码被设计为不提供关于密钥的任何信息。如果GCM身份验证失败,则不应使解密数据可用。失败是失败 - 如果GCM失败,你就不能信任字节的内容。
如果您想阻止攻击,请确保攻击者无法轻易更改加密的明文,并确保身份验证标记的所有字节始终经过验证。使用GCM,还可以使身份验证标记尽可能大。
返回最少量的信息通常被视为一种良好的防御。将加密的字节切换为零可能是件好事,只要你不返回任何这些字节。